[SCM] supercollider/upstream: Imported Upstream version 3.6.1~repack

danstowell-guest at users.alioth.debian.org danstowell-guest at users.alioth.debian.org
Thu Dec 20 20:13:00 UTC 2012


The following commit has been merged in the upstream branch:
commit 3e296dce3bcbffc37324994ca6bb11db9b045d6d
Author: Dan Stowell <danstowell at users.sourceforge.net>
Date:   Thu Dec 20 19:29:29 2012 +0000

    Imported Upstream version 3.6.1~repack

diff --git a/CMakeLists.txt b/CMakeLists.txt
index cf6b131..14244d0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,7 +107,6 @@ if(APPLE)
 		APPEND
 		PROPERTY COMPILE_DEFINITIONS SC_DARWIN)
 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
-	add_definitions("-DSC_LINUX")
 	add_definitions(-DSC_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/SuperCollider")
 elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
 	add_definitions("-DSC_FREEBSD")
@@ -130,6 +129,8 @@ if(WIN32)
     add_definitions(-DBOOST_THREAD_USE_LIB)
 	#avoid unnecesary autolink
 	add_definitions(-DBOOST_DATE_TIME_NO_LIB)
+
+    add_definitions(-DBOOST_CHRONO_HEADER_ONLY)
 endif()
 
 
@@ -146,10 +147,14 @@ option(SSE "Compile with support for SSE instructions.")
 option(SSE41 "Compile with support for SSE4.1 instructions.")
 option(SSE42 "Compile with support for SSE4.2 instructions.")
 
+set(AUDIOAPI "default" CACHE STRING "Audio API to use (one of {default,coreaudio,jack,portaudio})")
+option(LIBSCSYNTH "Compile libscsynth as shared library" OFF)
 
 option(INSTALL_HELP "Install help docs and examples along with the software" ON)
-option(INSTALL_OLD_HELP "Install old and deprecated help files" ON)
 option(SC_DOC_RENDER "Pre-render SCDoc documentation. (For putting online, etc)" OFF)
+option(SC_IDE "Build Qt IDE." ON)
+
+option(ENABLE_TESTSUITE "Compile testsuite." ON)
 
 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
     option(SUPERNOVA "Build with supernova as optional audio synthesis server" ON)
@@ -177,12 +182,6 @@ if (SC_QT)
 endif (SC_QT)
 
 if(WIN32)
-	option(SC_PSYCOLLIDER "Build PsyCollider" ON)
-else()
-	option(SC_PSYCOLLIDER "Build PsyCollider" OFF)
-endif()
-
-if(WIN32)
     option(SC_WIN_DEP_DIRS
         "A list of directories where dependencies will be searched for when packaging.")
 endif()
@@ -195,6 +194,9 @@ endif()
 option(SC_SYMLINK_CLASSLIB "Place a symlink of SCCLassLibrary instead of copying" OFF)
 option(SC_OX "Try to compile with support for C++0x (experimental, mainly related to supernova)" OFF)
 
+option(SYSTEM_BOOST   "Use boost libraries from system" OFF)
+option(SYSTEM_YAMLCPP "Use yaml-cpp library from system" ON)
+
 #############################################
 # some default libraries
 
@@ -205,7 +207,7 @@ if (NOT PTHREADS_FOUND)
 endif()
 include_directories(${PTHREADS_INCLUDE_DIR})
 
-if (MSVC OR MINGW)
+if(MSVC OR MINGW)
     set(MATH_LIBRARY "")
 else()
     find_library(MATH_LIBRARY m)
@@ -219,20 +221,22 @@ if(CURL)
 	endif()
 endif()
 
-set(Boost_USE_MULTITHREADED      ON)
-find_package( Boost 1.48.0 COMPONENTS thread system filesystem program_options regex )
-
-if (SC_OX)
-	set(Boost_FOUND OFF) # boost 1.48 does not like c++11
+if(SYSTEM_BOOST)
+  set(Boost_USE_MULTITHREADED      ON)
+  find_package( Boost 1.50.0 COMPONENTS  thread system filesystem program_options regex test_exec_monitor )
 endif()
 
 if (Boost_FOUND)
 	link_directories(${Boost_LIBRARY_DIRS})
 else()
-	message("building boost libraries manually")
+	message(STATUS "building boost libraries manually")
 endif()
 
-
+if(SYSTEM_YAMLCPP)
+  find_package(YamlCpp)
+else()
+  set(YAMLCPP_FOUND OFF)
+endif()
 
 #############################################
 # some preprocessor flags
@@ -284,9 +288,14 @@ endif()
 #############################################
 # subdirectories
 add_subdirectory(external_libraries)
+
+if(NOT YAMLCPP_FOUND)
+  set(YAMLCPP_LIBRARY yaml)
+  set(YAMLCPP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.3.0/include)
+endif()
+
 add_subdirectory(server)
 add_subdirectory(lang)
-add_subdirectory(bindings)
 add_subdirectory(editors)
 add_subdirectory(platform)
 
@@ -320,7 +329,7 @@ if(NOT SC_QT)
 endif()
 
 if(WIN32)
-	set(SCCLASSLIB_EXCLUDE_REGEX "${SCCLASSLIB_EXCLUDE_REGEX}|PsycolliderDocument")
+	set(SCCLASSLIB_EXCLUDE_REGEX "${SCCLASSLIB_EXCLUDE_REGEX}")
 endif()
 
 
@@ -396,12 +405,6 @@ install(DIRECTORY examples
 	PATTERN "*#" EXCLUDE
 )
 
-if(INSTALL_OLD_HELP)
-	install(DIRECTORY Help
-		DESTINATION ${auxresourcesdir}
-	)
-endif()
-
 if(INSTALL_HELP)
 	if(SC_SYMLINK_CLASSLIB AND APPLE)
 		message(STATUS "Will create symlink of HelpSource to ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HelpSource")
@@ -469,7 +472,9 @@ set_directory_properties(
 #
 # testsuite
 #
-add_subdirectory(testsuite)
+if(ENABLE_TESTSUITE)
+  add_subdirectory(testsuite)
+endif()
 
 #############################################
 # CPack support
@@ -503,4 +508,3 @@ mark_as_advanced(JACK JACK_INCLUDE_DIR JACK_LIBRARY)
 mark_as_advanced(MATH_LIBRARY)
 mark_as_advanced(QT_QMAKE_EXECUTABLE)
 mark_as_advanced(SNDFILE)
-
diff --git a/ChangeLog b/ChangeLog
index 8592ce0..f82762d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,7 @@ User-visible changes (started after 3.4)
 * only warn about FunctionDef not being inlined if a compiler flag is set - ds
 * new help system (SCDoc) - jli
 * new help browser (HelpBrowser) - jle/jli
+* on OS X, standalone apps look use appSupportDir with the app's name = jp
 * bitwise ops (<< >> & | ^) on ugens - jli
 * new VarLag ugen - rk/jli
 * new method: Node-onFree, run function when node finishes - jli
diff --git a/Help/3vs2/Backwards-Compatibility.html b/Help/3vs2/Backwards-Compatibility.html
deleted file mode 100644
index 4417271..0000000
--- a/Help/3vs2/Backwards-Compatibility.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0019b7}
-span.s3 {color: #326f17}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Backwards Compatibility</b></p>
-<p class="p2"><br></p>
-<p class="p3">There are a number of classes and methods that have been added to allow for backwards compatibility with SC2 code. The most notable of these is Synth.play, which is basically a wrapper for Function.play.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">{ </span><span class="s2">SinOsc</span><span class="s1">.ar(440, 0, 0.5) }.play; </span>// creates an arbitrarily named SynthDef and a Synth to play it</p>
-<p class="p4"><span class="s2">Synth</span><span class="s1">.play({ </span><span class="s2">SinOsc</span><span class="s1">.ar(440, 0, 0.5) }); </span>// in SC3 just a wrapper for Function.play with fewer args</p>
-<p class="p2"><br></p>
-<p class="p3">Both of these will create synth nodes on the default server. Note that neither requires the use of an Out.ar ugen; they simply output to the first audio bus. One can however add an Out to Function.play in order to specify.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Synth</span>.play({ <span class="s2">Out</span>.ar(1, <span class="s2">SinOsc</span>.ar(440, 0, 0.5)) });</p>
-<p class="p2"><br></p>
-<p class="p3">In general, one should be aware of this distinction when using this code. When copying such code for reuse with other SC3 classes (for example in a reusable SynthDef), it will usually be necessary to add an Out.ar. Although useful for quick testing these methods are generally inferior to SynthDef.play, as the latter is more direct, requires no modifications for general reuse, has greater general flexibility and has slightly less overhead. (Although this is insignificant in most cases, it could be relevant when large numbers of defs or nodes are being created.)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Like SynthDef.play, Function.play returns a Synth object which can then be messaged, etc. However, since Function.play creates an arbitrarily named SynthDef, one cannot reuse the resulting def, at least not without reading its name from the post window, or getting it from the Synth object.</p>
-<p class="p2"><br></p>
-<p class="p4">//The following examples are functionally equivalent</p>
-<p class="p5">x = { <span class="s2">arg</span> freq = 440; <span class="s2">Out</span>.ar(1, <span class="s2">SinOsc</span>.ar(freq, 0, 0.5)) }.play(fadeTime: 0);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1">x.set(</span><span class="s3">\freq</span><span class="s1">, 880); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you can set arguments</p>
-<p class="p4"><span class="s1">y = </span><span class="s2">Synth</span><span class="s1">.new(x.defName); <span class="Apple-tab-span">	</span></span>// get the arbitrary defname from x</p>
-<p class="p5">x.free;</p>
-<p class="p5">y.free;</p>
-<p class="p6"><br></p>
-<p class="p5">x = <span class="s2">SynthDef</span>(<span class="s4">"backcompat-sine"</span>, { <span class="s2">arg</span> freq = 440; <span class="s2">Out</span>.ar(1, <span class="s2">SinOsc</span>.ar(freq, 0, 0.5)) }).play;<span class="Apple-converted-space"> </span></p>
-<p class="p5">x.set(<span class="s3">\freq</span>, 880);</p>
-<p class="p7"><span class="s1">y = </span><span class="s2">Synth</span><span class="s1">.new(</span>"backcompat-sine"<span class="s1">);</span></p>
-<p class="p5">x.free;</p>
-<p class="p5">y.free;</p>
-<p class="p8"><br></p>
-<p class="p3">Function.play is in general superior to both its SC2 equivalent and Synth.play. It has a number of significant features such as the ability to specify the output bus and fade times as arguments. See the <b>Function</b> helpfile for a more in-depth discussion.</p>
-<p class="p2"><br></p>
-<p class="p3">A number of other classes and methods have also been added to improve compatibility. These are listed below. In general there are equivalent or better ways of doing the same things in SC3.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Synth *play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>use Function.play or SynthDef.play</p>
-<p class="p3"><b>GetFileDialog</b><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>use CocoaDialog</p>
-<p class="p3"><b>GetStringDialog</b></p>
-<p class="p3"><b>Synth *stop</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>use Server.freeAll</p>
-<p class="p3"><b>Synth *isPlaying</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Server.numSynths (this will include non-running nodes)</p>
-<p class="p3"><b>Mix *ar *arFill<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>use Mix *new and *fill</p>
-<p class="p3"><b>SimpleNumber.rgb</b></p>
-<p class="p3"><b>Rawarray.write</b></p>
-</body>
-</html>
diff --git a/Help/3vs2/SC3vsSC2.html b/Help/3vs2/SC3vsSC2.html
deleted file mode 100644
index df10c6b..0000000
--- a/Help/3vs2/SC3vsSC2.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-</style>
-</head>
-<body>
-<p class="p1"><b>SuperCollider 3 versus SuperCollider 2</b></p>
-<p class="p2"><br></p>
-<p class="p3">There are a number of ways in which SuperCollider 3 (or SCServer) is very different from SC2.</p>
-<p class="p2"><br></p>
-<p class="p3">A discussion of this is organised in the following documents:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ClientVsServer </b>- Separate language and synthesis apps.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>SynthDefsVsSynths </b>- The use of precompiled SynthDefs as opposed to always compiling on the fly.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Spawning </b>- The lack of the Spawn and TSpawn ugens and their various convienence classes.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Sync-Async</b> - The problem of simultaneous synchronous and asynchronous execution.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Backwards-Compatibility</b> - A discussion some classes and methods which have been added to improve compatibility with SC2 code, and their limitations.</p>
-<p class="p2"><br></p>
-<p class="p3">(Select the bold text and type Cmd-d to open the corresponding file.)</p>
-<p class="p2"><br></p>
-<p class="p3">Note that these documents are not intended to be exhaustive tutorials, just an introduction to some of the differences. Close examination of the helpfiles of relevant classes should help to fill in the details. These files may be of some use to beginners as well.</p>
-</body>
-</html>
diff --git a/Help/3vs2/Spawning.html b/Help/3vs2/Spawning.html
deleted file mode 100644
index f734b31..0000000
--- a/Help/3vs2/Spawning.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 10.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {font: 12.0px Helvetica; color: #000000}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #bf0000}
-span.s6 {color: #0000bf}
-span.s7 {font: 12.0px Helvetica}
-span.s8 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>"Spawning" and "TSpawning"</b></p>
-<p class="p2"><br></p>
-<p class="p3">In SC2, Spawn and TSpawn were two of the most powerful and commonly used UGens. In SC3 the idea of a top level Synth in which everything is spawned is no longer valid. Synthesis is always running (at least as long as a server is) and new Synths can be created on the fly. This arrangement results in even greater flexibility than in SC2, but requires a slightly different approach.</p>
-<p class="p2"><br></p>
-<p class="p3">In SC3 one can create Synths at any time simply by executing blocks of code.</p>
-<p class="p2"><br></p>
-<p class="p4">// do this</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">x = </span><span class="s3">SynthDef</span><span class="s2">(</span>"Help-SynthDef"<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">PinkNoise</span>.ar(0.1))</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play; </span>// SynthDef-play returns a Synth object.</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p4">// then do this</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"help-Rand"</span>, { <span class="s3">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">FSinOsc</span>.ar(</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Rand</span><span class="s2">(200.0, 400.0), <span class="Apple-tab-span">	</span></span>// frequency between 200 and 400 Hz</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="s3">Line</span>.kr(0.2, 0, 1,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction:2)) <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// frees itself</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).play(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p2"><br></p>
-<p class="p3">Clocks, such as <b>SystemClock</b>, provide a way to schedule things at arbitrary points in the future. This is similar to Synth.sched in SC2.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">SystemClock</span>.sched(2.0,{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">"2.0 seconds later"</span><span class="s2">.postln; </span>// this could be any code, including Synth creation</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil </span>// this means don't repeat<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">In SC3 time-based sequences of events can be implemented using Routines. A <b>Routine</b> which yields a number can be scheduled using a clock:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s6">var</span> w, r;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new(<span class="s4">"trem"</span>, <span class="s6">Rect</span>(512, 256, 360, 130));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>r = <span class="s6">Routine</span>({ <span class="s6">arg</span> time;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>60.do({ <span class="s6">arg</span> i;</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.yield; </span>// wait for 0.05 seconds</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds = w.bounds.moveBy(10.rand2, 10.rand2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.alpha = cos(i*0.1pi)*0.5+0.5;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.defer;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.yield; </span>// wait for 1 second before closing w</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span></span>SystemClock<span class="s2">.play(r);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">Note that this implementation avoids one of the stranger aspects of the SC2 approach: The need to start a Synth to schedule time-based behavior, even if no audio is involved.</p>
-<p class="p2"><br></p>
-<p class="p3">Both <b>SystemClock</b> and <b>AppClock</b> (a less accurate version which can call Cocoa primitives) have only class methods. Thus one does not create instances of them. If you need to have an individual clock to manipulate (for instance to manipulate the tempi of different sequences of events) you can use <b>TempoClock</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">A simple SC2 Spawn example is shown below, followed by its translation into SC3 style code.</p>
-<p class="p2"><br></p>
-<p class="p4">// This will not execute in SC3</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Synth</span>.play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Spawn</span>.ar({<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">EnvGen</span>.ar(Env.perc) * <span class="s3">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, </span>// one channels</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1) </span>// new event every second</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}))</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// The same example in SC3 (will execute)</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s = <span class="s3">Server</span>.default;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">SynthDef</span><span class="s2">(</span>"help-EnvGen"<span class="s2">,{ </span><span class="s3">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc,1.0,doneAction: 2)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s3">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>r = <span class="s3">Routine</span>.new({ { <span class="s3">Synth</span>.new(<span class="s4">"help-EnvGen"</span>); 1.yield; }.loop }); <span class="s5">// loop every one second</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>SystemClock<span class="s2">.play(r);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Note that the above example uses a precompiled <b>SynthDef</b>. This results in a lower CPU spike when Synths are created than SC2-style Spawning. It is possible to create SynthDefs on the fly, if this is necessary, but a great deal of variation can be achieved with arguments, or with ugens such as <b>Rand</b> and <b>TRand</b>. See the helpfile <b>SynthDefsVsSynths </b>for more detail.</p>
-<p class="p2"><br></p>
-<p class="p4">// SynthDefs on the fly</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s = <span class="s3">Server</span>.default;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>t = <span class="s3">TempoClock</span>.new;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>r = <span class="s3">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// could be done with an argument instead of a new def, but proves the point</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"help-EnvGen"</span> ++ i,{ <span class="s3">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc,1.0,doneAction: 2)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s3">SinOsc</span>.ar(100 + (100 * t.elapsedBeats),0,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>}).play(t); </span>// Note the alternative syntax: Routine.play(aClock)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Note the alternative syntax for playing a Routine. aClock.play(aRoutine) and aRoutine.play(aClock) are functionally equivalent. The two make different things more or less convienent, like sending messages to the <b>Routine</b> or <b>Clock</b>. (See the <b>play</b> helpfile for a more detailed discussion.) For instance:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// this, that and the other</p>
-<p class="p5"><span class="Apple-tab-span">	</span>r = <span class="s3">Routine</span>.new({<span class="s3">var</span> i = 0; { (<span class="s4">"this: "</span> ++ i).postln; i = i + 1; 1.yield; }.loop });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>q = <span class="s3">Routine</span>.new({<span class="s3">var</span> i = 0; { (<span class="s4">"that: "</span> ++ i).postln; i = i + 1; 1.yield; }.loop });<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>t = <span class="s3">Routine</span>.new({<span class="s3">var</span> i = 0; { (<span class="s4">"the other: "</span> ++ i).postln; i = i + 1; 1.yield; }.loop });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">SystemClock</span><span class="s2">.play(r); <span class="Apple-tab-span">	</span></span>// start this</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">SystemClock</span><span class="s2">.play(q); <span class="Apple-tab-span">	</span></span>// start that</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">SystemClock</span><span class="s2">.play(t); <span class="Apple-tab-span">	</span></span>// start the other</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>r.stop; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// stop this but not that or the other</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>q.reset;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reset that while playing</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>c = </span><span class="s3">TempoClock</span><span class="s2">.new;<span class="Apple-tab-span">	</span></span>// make a TempoClock</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>r.reset;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// have to reset this because it's stopped</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>c.play(r);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// play this in the new clock; starts from the beginning</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>c.tempo = 16;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// increase the tempo of this</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">SystemClock</span><span class="s2">.clear; <span class="Apple-tab-span">	</span></span>// clear EVERYTHING scheduled in the SystemClock; so that and the other<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// but not this</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>c.clear;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// clear everything scheduled in c, i.e. this</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>c.play(r);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// since it wasn't stopped, we don't have to reset this</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// and it picks up where it left off</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>c.stop<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// stop c, destroy its scheduler, and release its OS thread</p>
-<p class="p2"><br></p>
-<p class="p3">For convenience pauseable scheduling can be implemented with a <b>Task</b>. Task.new takes two arguments, a function and a clock, and creates it's own <b>Routine</b>. If you don't specify a clock, it will create a <b>TempoClock</b> for you. Since you don't have to explicitly create a Clock or Routine, use of Task can result in code that is a little more compact.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>t = <span class="s3">Task.</span>new({<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">inf</span>.do({ <span class="s3">arg</span> i;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>t.start; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// Start it</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>t.stop;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// Stop it</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>t.start;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Start again from the beginning</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>t.reset;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Reset on the fly</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>t.stop;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Stop again</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>t.resume;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Restart from where you left off</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">t.clock.tempo = 0.25;</span><span class="Apple-tab-span">	</span>// Get the Task's clock and change the tempo. This works since the</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// default is a TempoClock.</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>t.pause;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Same as t.stop</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">TSpawn's functionality can be replicated with <b>SendTrig</b> and <b>OSCresponder</b> or <b>OSCresponderNode</b>. See their individual helpfiles for details on their arguments and functionality.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span>s = <span class="s3">Server</span>.default;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// this Synth will send a trigger to the client app</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">SynthDef</span><span class="s2">(</span>"help-SendTrig"<span class="s2">,{</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SendTrig<span class="s2">.kr(</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Dust</span><span class="s2">.kr(1.0), </span>// trigger could be anything, e.g. Amplitude.kr(SoundIn.ar(0) > 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,0.9</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// this recieves the trigger on the client side and 'Spawns' a new Synth on the server</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">OSCresponder</span>(s.addr,<span class="s8">'/tr'</span>,{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"help-EnvGen"</span>,{ <span class="s3">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc,1.0,doneAction: 2)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s3">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// Start 'spawning'</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">Synth</span><span class="s2">(</span>"help-SendTrig"<span class="s2">);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-</body>
-</html>
diff --git a/Help/3vs2/Sync-Async.html b/Help/3vs2/Sync-Async.html
deleted file mode 100644
index ff9076b..0000000
--- a/Help/3vs2/Sync-Async.html
+++ /dev/null
@@ -1,234 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #091fb1}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.s5 {font: 9.0px Monaco; color: #091fb1}
-span.s6 {font: 9.0px Monaco}
-span.s7 {color: #456c20}
-span.s8 {color: #902a19}
-span.s9 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Synchronous and Asynchronous Execution</b></p>
-<p class="p2"><br></p>
-<p class="p3">Using a program such as SuperCollider introduces a number of issues regarding timing and order of execution. Realtime audio synthesis requires that samples are calculated and played back at a certain rate and on a certain schedule, in order to avoid dropouts, glitches, etc. Other tasks, such as loading a sample into memory, might take arbitrary amounts of time, and may not be needed within a definite timeframe. This is the difference between synchronous and asynchronous tasks.</p>
-<p class="p2"><br></p>
-<p class="p3">Problems can arise when synchronous tasks are dependent upon the completion of asynchronous ones. For instance trying to play a sample that may or may not have been completely loaded yet.</p>
-<p class="p2"><br></p>
-<p class="p3">In SC2 this was relatively simple to handle. One scheduled synchronous tasks during synthesis, i.e. within the scope of a Synth.play. Asynchronous tasks were executed in order, outside of synthesis. Thus one would first create buffers, load samples into them, and then start synthesis and play them back. The interpreter made sure that each step was only done when the necessary previous step had been completed.</p>
-<p class="p2"><br></p>
-<p class="p3">In SC3 the separation of language and synth apps creates a problem: How does one side know that the other has completed necessary tasks, or in other words, how does the left hand know if the right is finished? The flexibility gained by the new architecture introduces another layer of complexity, and an additional demand on the user.</p>
-<p class="p2"><br></p>
-<p class="p3">A simple way to deal with this is to execute code in blocks. In the following code, for instance, each block or line of code is dependent upon the previous one being completed.</p>
-<p class="p2"><br></p>
-<p class="p4">// Execute these one at a time</p>
-<p class="p5"><br></p>
-<p class="p4">// Boot the local Server</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s = <span class="s2">Server</span>.local;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p4">// Compile a SynthDef and write it to disk</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).writeDefFile;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p4">// Load it into the server</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.loadSynthDef(<span class="s4">"Help-SynthDef"</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// Create a Synth with it</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s2">Synth</span>.new(<span class="s4">"Help-SynthDef"</span>, s);</p>
-<p class="p7"><br></p>
-<p class="p4">// Free the node on the server</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p7"><br></p>
-<p class="p4">// Allow the client-side Synth object to be garbage collected</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s2">nil</span>; <span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p3">In the previous example it was necessary to use interpreter variables (the variables a-z, which are declared at compile time) in order to refer to previously created objects in later blocks or lines of code. If one had declared a variable within a block of code (i.e.<span class="s2"> </span><span class="s5">va</span><span class="s6">r mySynth;</span>) than it would have only persisted within that scope. (See the helpfile <b>Scope</b> for more detail.)</p>
-<p class="p2"><br></p>
-<p class="p3">This style of working, executing lines or blocks of code one at a time, can be very dynamic and flexible, and can be quite useful in a performance situation, especially when improvising. But it does raise the issues of scope and persistence. Another way around this that allows for more descriptive variable names is to use environment variables (i.e. names that begin with ~, so ~mysynth; see the <b>Environment</b> helpfile for details). However, in both methods you become responsible for making sure that objects and nodes do not persist when you no longer need them.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// make a Synth and assign it to an environment variable</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~mysynth = <span class="s2">Synth</span>.new(<span class="s4">"Help-SynthDef"</span>, s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// free the synth</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~mysynth.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// but you've still got a Synth object</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~mysynth.postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// so remove it from the Environment so that the Synth will be garbage collected</p>
-<p class="p6"><span class="Apple-tab-span">	</span>currentEnvironment.removeAt(<span class="s7">\mysynth</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">But what if you want to have one block of code which contains a number of synchronous and asynchronous tasks. The following will cause an error, as the SynthDef that the server needs has not yet been received.</p>
-<p class="p2"><br></p>
-<p class="p4">// Doing this all at once produces the error "FAILURE /s_new SynthDef not found"</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> name;</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>name = </span><span class="s4">"Rand-SynthDef"</span><span class="s3"> ++ 400.0.rand; </span>// use a random name to ensure it's not already loaded</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(name,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>.new(name, s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">A crude solution would be to schedule the dependant code for execution after a seemingly sufficient delay using a clock.</p>
-<p class="p2"><br></p>
-<p class="p4">// This one works since the def gets to the server app first</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> name;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>name = <span class="s4">"Rand-SynthDef"</span> ++ 400.0.rand;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(name,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>SystemClock.sched(0.05, {<span class="s2">Synth</span>.new(name, s);}); // create a Synth after 0.05 seconds</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">Although this works, it's not very elegant or efficient. What would be better would be to have the next thing execute immediately upon the previous thing's completion. To explore this, we'll look at an example which is already implemented.</p>
-<p class="p2"><br></p>
-<p class="p3">You may have realized that first example above was needlessly complex. SynthDef-play will do all of this compilation, sending, and Synth creation in one stroke of the enter key.</p>
-<p class="p2"><br></p>
-<p class="p4">// All at once</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Let's take a look at the method definition for SynthDef-play and see what it does.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>play { <span class="s2">arg</span> target,args,addAction=<span class="s7">\addToTail</span>;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> synth, msg;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>target = target.asTarget;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth = <span class="s2">Synth</span>.basicNew(name,target.server); <span class="s8">// create a Synth, but not a synth node<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>msg = synth.newMsg(target, addAction, args);<span class="s8">// make a message that will add a synth node<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">this</span><span class="s3">.send(target.server, msg); </span>// ** send the def, and the message as a completion message</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^synth </span>// return the Synth object</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><br></p>
-<p class="p3">This might seem a little complicated if you're not used to mucking about in class definitions, but the important part is the second argument to <span class="s5">this</span><span class="s6">.send(target.server, msg);</span>. This argument is a completion message, it is a message that the server will execute when the send action is complete. In this case it says create a synth node on the server which corresponds to the <b>Synth</b> object I've already created, when and only when the def has been sent to the server app.<span class="Apple-converted-space">  </span>(See the helpfile <b>Server-Command-Reference </b>for details on messaging.)</p>
-<p class="p2"><br></p>
-<p class="p3">Many methods in SC have the option to include completion messages. Here we can use SynthDef-send to accomplish the same thing as SynthDef-play:</p>
-<p class="p2"><br></p>
-<p class="p4">// Compile, send, and start playing</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s, [<span class="s4">"s_new"</span>, <span class="s4">"Help-SynthDef"</span>, x = s.nextNodeID]);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this is 'messaging' style, see below</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">"n_free"</span>, x);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The completion message needs to be an OSC message, but it can also be some code which when evaluated<span class="Apple-converted-space">  </span>returns one:</p>
-<p class="p2"><br></p>
-<p class="p4">// Interpret some code to return a completion message. The .value is needed.</p>
-<p class="p4">// This and the preceding example are essentially the same as SynthDef.play</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s, {x = <span class="s2">Synth</span>.basicNew(<span class="s4">"Help-SynthDef"</span>); x.newMsg; }.value); <span class="s8">// 'object' style</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">If you prefer to work in 'messaging' style, this is pretty simple. If you prefer to work in 'object' style, you can use the commands like newMsg, setMsg, etc. with objects to create appropriate server messages. The two proceeding examples show the difference. See the <b>NodeMessaging</b> helpfile for more detail.</p>
-<p class="p2"><br></p>
-<p class="p3">In the case of <b>Buffer</b> objects a function can be used as a completion message. It will be evaluated and passed the <b>Buffer</b> object as an argument. This will happen after the Buffer object is created, but before the message is sent to the server. It can also return a valid OSC message for the server to execute upon completion.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s4">"help-Buffer"</span>,{ <span class="s2">arg</span> out=0,bufnum;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar( out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">PlayBuf</span>.ar(1,bufnum,<span class="s2">BufRateScale</span>.kr(bufnum))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).load(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>y = <span class="s2">Synth</span>.basicNew(<span class="s4">"help-Buffer"</span>); <span class="s8">// not sent yet</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s3">.read(s,</span>"sounds/a11wlk01.wav"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>completionMessage: { <span class="s2">arg</span> buffer;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// synth add its s_new msg to follow<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// after the buffer read completes</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y.newMsg(s,<span class="s7">\addToTail</span>,[<span class="s7">\bufnum</span>,buffer])</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}); </span>// .value NOT needed, unlike in the previous example</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// when done...</p>
-<p class="p6"><span class="Apple-tab-span">	</span>y.free;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The main purpose of completion messages is to provide OSC messages for the server to execute immediately upon completion. In the case of Buffer there is essentially no difference between the following:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 44100,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>completionMessage: { <span class="s2">arg</span> buffer; (<span class="s4">"bufnum:"</span> + buffer).postln; });</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// this is equivalent to the above</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(<span class="s4">"bufnum:"</span> + b).postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">One can also evaluate a function in response to a 'done' message, or indeed any other one, using an <b>OSCresponder</b> or an <b>OSCresponderNode</b>. The main difference between the two is that the former allows only a single responder per command, where as the latter allows multiple responders. See their respective helpfiles for details.</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="s2">SynthDef</span><span class="s3">(</span>"help-SendTrig"<span class="s3">,{</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SendTrig</span>.kr(<span class="s2">Dust</span>.kr(1.0), 0, 0.9);</p>
-<p class="p6">}).send(s);</p>
-<p class="p7"><br></p>
-<p class="p4">// register to receive this message</p>
-<p class="p6"><span class="s2">a = OSCresponderNode</span>(s.addr, <span class="s7">'/done'</span>, { <span class="s2">arg</span> time, responder, msg;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>("This is the done message for the SynthDef.send:" + [time, responder, msg]).postln;</p>
-<p class="p4"><span class="s3">}).add.removeWhenDone; </span>// remove me automatically when done</p>
-<p class="p6"><span class="s2">b = OSCresponderNode</span>(s.addr, <span class="s7">'/tr'</span>, { <span class="s2">arg</span> time, responder, msg;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>[time, responder, msg].postln;</p>
-<p class="p6">}).add;</p>
-<p class="p6"><span class="s2">c = OSCresponderNode</span>(s.addr, <span class="s7">'/tr'</span>, { <span class="s2">arg</span> time, responder, msg;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>"this is another call".postln;</p>
-<p class="p6">}).add;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">x = Synth</span><span class="s3">.new(</span>"help-SendTrig"<span class="s3">);</span></p>
-<p class="p6">b.remove;</p>
-<p class="p6">c.remove;</p>
-<p class="p6">x.free;</p>
-</body>
-</html>
diff --git a/Help/3vs2/SynthDefsVsSynths.html b/Help/3vs2/SynthDefsVsSynths.html
deleted file mode 100644
index 3e8efda..0000000
--- a/Help/3vs2/SynthDefsVsSynths.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {text-decoration: underline}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.s5 {font: 12.0px Helvetica; color: #000000}
-span.s6 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SynthDefs versus Synths</b></p>
-<p class="p2"><br></p>
-<p class="p3">In SC2 Synth.play was the standard way to compile a ugenGraphFunc and play it. Each time you executed Synth.play, or Spawned a new event, that function was compiled anew. SC3 on the other hand, makes use of what are called SynthDefs. A <b>SynthDef</b> takes a ugenGraphFunc and compiles it to a kind of bytecode (sort of like Java bytecode) which can be understood by the server app. The server reads the SynthDef and creates a synth node based upon it.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">SynthDefs can be precompiled and saved to disk. Any def saved in the synthdefs/ directory (or in any directory set in the environment variable SC_SYNTHDEF_PATH) will be loaded into memory by a local <b>Server</b> when it is booted. If the def being used in a new <b>Synth</b> is already compiled and loaded, there is much less of a CPU spike when creating a new <b>Synth</b> than there was in SC2.</p>
-<p class="p2"><br></p>
-<p class="p3">SynthDefs can also be compiled and loaded into the Server without writing them to disk. This can be done while performing.</p>
-<p class="p2"><br></p>
-<p class="p3">The downside of this is that precompiled SynthDefs lack some of the programmatic flexibility that was one of SC2's great strengths. Much of this flexibility is gained back however, through the ability to set and change arguments (which you build into your ugenGraphFunc), and through new ugens such as <b>Rand</b> and <b>TRand</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">When maximum flexibility is required, it is still possible to compile and send SynthDefs 'on the fly', albeit with SC2-like CPU spikes and a small amount of messaging latency.</p>
-<p class="p2"><br></p>
-<p class="p3">It is important to understand that creating and sending SynthDefs is <i>asynchronous. </i>This means that it is impossible to determine precisely how long it will take to compile and send a <b>SynthDef</b>, and thus when it will be available for creating new Synths. A simple way around this is to execute code in blocks, selecting them one at a time. More complicated is to use completion messages. SynthDef.play takes care of this for you, and returns a Synth object which you can then manipulate. See the example below.</p>
-<p class="p2"><br></p>
-<p class="p3">Another important distinction is between Synth in SC2 and <b>Synth</b> in SC3. The latter is a client-side object which <i>represents </i>a synth node on the server. Although it has some of the same methods, it does not function in the same way. There is no top level Synth in SC3, within which all scheduling and creation of other Synths occurs. There are only Synth objects which represent synth nodes on the server. These can be created at any time, within any scope.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Examples</span></b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">s = <span class="s2">Server</span>.local;</p>
-<p class="p5">s.boot;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// Compile a SynthDef and write it to disk</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).writeDefFile;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p7">// Compile, write, and load it to the server</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).load(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">// Load it to the server without writing to disk</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">// Create a Synth with it</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s2">Synth</span>.new(<span class="s4">"Help-SynthDef"</span>, s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7">// Shorthand method to compile and write a SynthDef, and then play it in a Synth when done.<span class="Apple-converted-space"> </span></p>
-<p class="p7">// Look familiar?</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s3">x = </span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SynthDef"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// The above only starts the new Synth after the def has been sent to the server.</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// Note that SynthDef.play returns a Synth object<span class="s3">!</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>x.set(</span><span class="s6">\out</span><span class="s3">, 1); </span>// change one of the arguments</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">// SynthDef with a parameter that will be randomly determined each time a new Synth is created</p>
-<p class="p7">// (try it several times to hear the differences)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"help-RandFreq"<span class="s3">, { </span><span class="s2">arg</span><span class="s3"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">FSinOsc</span>.ar(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Rand</span><span class="s3">(200.0, 400.0), </span>// frequency between 200 and 400 Hz</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="s2">Line</span>.kr(0.2, 0, 1, doneAction:2))</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).play(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/absdif.html b/Help/BinaryOps/absdif.html
deleted file mode 100644
index 1654a66..0000000
--- a/Help/BinaryOps/absdif.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>absdif<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>absolute value of the difference</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>absdif(a, b)</b></p>
-<p class="p3"><b>a absdif: b</b></p>
-<p class="p3"><b>a.absdif(b)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>abs(a - b). Finding the magnitude of the difference of two</p>
-<p class="p3">values is a common operation.</p>
-<p class="p4"><br></p>
-<p class="p5">// creates a rhythm</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s1">var</span> mul;</p>
-<p class="p6">mul = 0.2 absdif: <span class="s1">FSinOsc</span>.ar(2, 0, 0.5);</p>
-<p class="p6"><span class="s1">FSinOsc</span>.ar(440, 0, mul);</p>
-<p class="p6">}.play;)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/addition.html b/Help/BinaryOps/addition.html
deleted file mode 100644
index d890577..0000000
--- a/Help/BinaryOps/addition.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>+<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>addition</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a + b</b></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s1">FSinOsc</span>.ar(800, 0, 0.1) + <span class="s1">PinkNoise</span>.ar(0.1) }.play;</p>
-<p class="p4"><br></p>
-<p class="p6">// DC offset; add: 0.1 would be more efficient</p>
-<p class="p5">{ <span class="s1">FSinOsc</span>.ar + 0.1 }.play<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/amclip.html b/Help/BinaryOps/amclip.html
deleted file mode 100644
index a38c516..0000000
--- a/Help/BinaryOps/amclip.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.s2 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>amclip<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two quadrant multiply</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>amclip(a, b)</b></p>
-<p class="p3"><b>a amclip: b</b></p>
-<p class="p3"><b>a.amclip(b)</b></p>
-<p class="p4"><br></p>
-<p class="p3">0<span class="Apple-converted-space">  </span>when<span class="Apple-converted-space">  </span>b <= 0,<span class="Apple-converted-space">  </span>a*b<span class="Apple-converted-space">  </span>when<span class="Apple-converted-space">  </span>b > 0</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s1">WhiteNoise</span>.ar.amclip(<span class="s1">FSinOsc</span>.kr(1,0.2)) }.play; <span class="s2">// makes a sine envelope</span></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/atan2.html b/Help/BinaryOps/atan2.html
deleted file mode 100644
index 29cdaac..0000000
--- a/Help/BinaryOps/atan2.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>atan2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arctangent</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>atan2(y, x)</b></p>
-<p class="p3"><b>y atan2: x</b></p>
-<p class="p3"><b>y.atan2(x)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns the arctangent of y/x.</p>
-<p class="p2"><br></p>
-<p class="p3">See also <b>hypot</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">OK, now we can add a pan to the <b>hypot</b> doppler examples by using atan2 to find the azimuth,<span class="Apple-converted-space"> </span></p>
-<p class="p3">or direction angle, of the sound source.</p>
-<p class="p3">Assume speakers at +/- 45 degrees and clip the direction to between those.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> x, y, distance, velocity, pitchRatio, amplitude, azimuth, panValue;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// object travels 200 meters in 6 secs (=120kph) passing 10 meters<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// from the listener</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = 10;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>y = <span class="s1">LFSaw</span>.kr(1/6, 0, 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>distance = hypot(x, y);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>velocity = <span class="s1">Slope</span>.kr(distance);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pitchRatio = (344 - velocity) / 344;<span class="Apple-converted-space">  </span><span class="s3">// speed of sound is 344 meters/sec</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>amplitude = 10 / distance.squared;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>azimuth = atan2(y, x); <span class="s3">// azimuth in radians</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>panValue = (azimuth / 0.5pi).clip2(1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(<span class="s1">FSinOsc</span>.ar(1000 * pitchRatio), panValue, amplitude)</p>
-<p class="p5">}.play)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> x, y, distance, velocity, pitchRatio, amplitude, motorSound,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>azimuth, panValue;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// object travels 200 meters in 6 secs (=120kph) passing 10 meters<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// from the listener</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = 10;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>y = <span class="s1">LFSaw</span>.kr(1/6, 0, 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>distance = hypot(x, y);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>amplitude = 40 / distance.squared;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>motorSound = <span class="s1">RLPF</span>.ar(<span class="s1">FSinOsc</span>.ar(200, 0, <span class="s1">LFPulse</span>.ar(31.3, 0, 0.4)), 400, 0.3);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>azimuth = atan2(y, x); <span class="s3">// azimuth in radians</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>panValue = (azimuth / 0.5pi).clip2(1); <span class="s3">// make a value for Pan2 from azimuth</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(<span class="s1">DelayL</span>.ar(motorSound, 110/344, distance/344), panValue, amplitude)</p>
-<p class="p5">}.play)</p>
-</body>
-</html>
diff --git a/Help/BinaryOps/clip2.html b/Help/BinaryOps/clip2.html
deleted file mode 100644
index 7bffa4c..0000000
--- a/Help/BinaryOps/clip2.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>clip2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bilateral clipping</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>clip2(a, b)</b></p>
-<p class="p3"><b>a clip2: b</b></p>
-<p class="p3"><b>a.clip2(b)</b></p>
-<p class="p2"><br></p>
-<p class="p3">clips input wave a to +/- b</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s1">FSinOsc</span>.ar(400).clip2(0.2) }.scope; <span class="s2">// clipping distortion</span></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s1">FSinOsc</span>.ar(1000).clip2(<span class="s1">Line</span>.kr(0,1,8)) }.scope;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/difsqr.html b/Help/BinaryOps/difsqr.html
deleted file mode 100644
index d69d8e9..0000000
--- a/Help/BinaryOps/difsqr.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>difsqr<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>difference of squares</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>difsqr(a, b)</b></p>
-<p class="p3"><b>a difsqr: b</b></p>
-<p class="p3"><b>a.difsqr(b)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>(a*a) - (b*b). This is more efficient than using</p>
-<p class="p3">separate unit generators for each operation.</p>
-<p class="p2"><br></p>
-<p class="p4">{ (<span class="s1">FSinOsc</span>.ar(800) difsqr: <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5))) * 0.125 }.play;</p>
-<p class="p5"><br></p>
-<p class="p3">same as :</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>((a * a) - (b * b)) * 0.125</p>
-<p class="p4">}.play)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/division.html b/Help/BinaryOps/division.html
deleted file mode 100644
index 84ab6d9..0000000
--- a/Help/BinaryOps/division.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>/<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>division</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a / b</b></p>
-<p class="p2"><br></p>
-<p class="p3">Division can be tricky with signals because of division by zero.</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s1">PinkNoise</span>.ar(0.1) / <span class="s1">FSinOsc</span>.kr(10, 0, 0.5, 0.75) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s1">PinkNoise</span>.ar(0.1) / <span class="s1">FSinOsc</span>.kr(10, 0, 0.5) }.play;<span class="Apple-tab-span">	</span><span class="s2">//note: div by zero</span></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/excess.html b/Help/BinaryOps/excess.html
deleted file mode 100644
index cb171dd..0000000
--- a/Help/BinaryOps/excess.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>excess<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clipping residual</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>excess(a, b)</b></p>
-<p class="p3"><b>a excess: b</b></p>
-<p class="p3"><b>a.excess(b)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns the difference of the original signal and its clipped form: (a - clip2(a,b)).</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s1">FSinOsc</span>.ar(1000).excess(<span class="s1">Line</span>.kr(0,1,8)) }.play;</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/exponentiation.html b/Help/BinaryOps/exponentiation.html
deleted file mode 100644
index 577853a..0000000
--- a/Help/BinaryOps/exponentiation.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>**<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponentiation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a ** b</b></p>
-<p class="p2"><br></p>
-<p class="p3">When the signal is negative this function extends the usual definition of</p>
-<p class="p3">exponentiation and returns neg(neg(a) ** b). This allows exponentiation of</p>
-<p class="p3">negative signal values by noninteger exponents.</p>
-<p class="p2"><br></p>
-<p class="p3">redirects to <b>pow(a, b)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="s1">var</span> a;</p>
-<p class="p4">a = <span class="s1">FSinOsc</span>.ar(100);</p>
-<p class="p4">[a, a ** 10]</p>
-<p class="p4">}.play</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// using exponentiation for compression or expansion</p>
-<p class="p7"><span class="s2">s.sendMsg(</span>"/b_allocRead"<span class="s2">, 0, </span>"sounds/a11wlk01.wav"<span class="s2">); </span><span class="s3">// load a soundfile</span></p>
-<p class="p8"><br></p>
-<p class="p6">// compression</p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="s1">var</span> in = <span class="s1">PlayBuf</span>.ar(1, 0, 1, loop: 1);</p>
-<p class="p4">in ** 0.7<span class="Apple-converted-space"> </span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p6">// expansion</p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="s1">var</span> in = <span class="s1">PlayBuf</span>.ar(1, 0, 1, loop: 1);</p>
-<p class="p4">in ** 2</p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/fold2.html b/Help/BinaryOps/fold2.html
deleted file mode 100644
index 81fc60a..0000000
--- a/Help/BinaryOps/fold2.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>fold2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bilateral folding</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>fold2(a, b)</b></p>
-<p class="p3"><b>a fold2: b</b></p>
-<p class="p3"><b>a.fold2(b)</b></p>
-<p class="p2"><br></p>
-<p class="p3">folds input wave a to +/- b</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s1">FSinOsc</span>.ar(1000).fold2(<span class="s1">Line</span>.kr(0,1,8)) }.scope;</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/greaterorequalthan.html b/Help/BinaryOps/greaterorequalthan.html
deleted file mode 100644
index dc6f5ef..0000000
--- a/Help/BinaryOps/greaterorequalthan.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>>=<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>greater than or equal</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>BinaryOperator</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>a >= b</b></p>
-<p class="p3"><br></p>
-<p class="p4">Result is 1 if a >= b, otherwise it is 0. This can be useful for triggering purposes, among other things:</p>
-<p class="p5"><br></p>
-<p class="p6">s = <span class="s1">Server</span>.local;</p>
-<p class="p6">s.boot;</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">( </span>// trigger an envelope</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> trig;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>trig = <span class="s1">SinOsc</span>.ar(1) >= 0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc, trig, doneAction: 0)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}.play(s);)</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">( </span>// trigger a synth</p>
-<p class="p9"><span class="s1">SynthDef</span><span class="s2">(</span>"help-EnvGen"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc,1.0,doneAction: 2)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).send(s);</p>
-<p class="p7"><br></p>
-<p class="p8">// This synth has no output. It only checks amplitude of input and looks for a transition from < 0.2</p>
-<p class="p8">// to > 0.2</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s1">SynthDef</span><span class="s2">(</span>"help->= trig"<span class="s2">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(<span class="s1">Amplitude</span>.kr(<span class="s1">SoundIn</span>.ar(0)) >= 0.2);</p>
-<p class="p6">}).play(s);</p>
-<p class="p10"><br></p>
-<p class="p8">// responder to trigger synth</p>
-<p class="p6"><span class="s1">OSCresponderNode</span>(s.addr,<span class="s3">'/tr'</span>,{ <span class="s4">"triggered"</span>.postln; <span class="s1">Synth</span>.new(<span class="s4">"help-EnvGen"</span>) }).add;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/BinaryOps/greaterthan.html b/Help/BinaryOps/greaterthan.html
deleted file mode 100644
index b01e0a8..0000000
--- a/Help/BinaryOps/greaterthan.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>greater than</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a > b</b></p>
-<p class="p2"><br></p>
-<p class="p3">Result is 1 if a > b, otherwise it is 0. This can be useful for triggering purposes, among other things:</p>
-<p class="p4"><br></p>
-<p class="p5">s = <span class="s1">Server</span>.local;</p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">( </span>// trigger an envelope</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s1">SinOsc</span>.ar(1) > 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc, trig, doneAction: 0)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}.play(s);)</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">( </span>// trigger a synth</p>
-<p class="p8"><span class="s1">SynthDef</span><span class="s2">(</span>"help-EnvGen"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc,1.0,doneAction: 2)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).send(s);</p>
-<p class="p6"><br></p>
-<p class="p7">// This synth has no output. It only checks amplitude of input and looks for a transition from < 0.2</p>
-<p class="p7">// to > 0.2</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s1">SynthDef</span><span class="s2">(</span>"help-> trig"<span class="s2">, {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(<span class="s1">Amplitude</span>.kr(<span class="s1">SoundIn</span>.ar(0)) > 0.2);</p>
-<p class="p5">}).play(s);</p>
-<p class="p9"><br></p>
-<p class="p7">// responder to trigger synth</p>
-<p class="p5"><span class="s1">OSCresponderNode</span>(s.addr,<span class="s3">'/tr'</span>,{ <span class="s4">"triggered"</span>.postln; <span class="s1">Synth</span>.new(<span class="s4">"help-EnvGen"</span>) }).add;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/BinaryOps/hypot.html b/Help/BinaryOps/hypot.html
deleted file mode 100644
index 8f285c8..0000000
--- a/Help/BinaryOps/hypot.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>hypot<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hypotenuse</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>hypot(x, y)</b></p>
-<p class="p3"><b>x hypot: y</b></p>
-<p class="p3"><b>x.hypot(y)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns the square root of the sum of the squares of a and b. Or equivalently, the distance from the origin</p>
-<p class="p3">to the point (x, y).<span class="Apple-converted-space"> </span></p>
-<p class="p3">See also <b>atan2</b>.</p>
-<p class="p4"><br></p>
-<p class="p3">In this example, hypot is used to calculate a doppler shift pitch and amplitude based on distance.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> x, y, distance, velocity, pitchRatio, amplitude;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// object travels 200 meters in 6 secs (=120kph) passing 10 meters<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// from the listener</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = 10;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>y = <span class="s1">LFSaw</span>.kr(1/6, 0, 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>distance = hypot(x, y);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>velocity = <span class="s1">Slope</span>.kr(distance);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pitchRatio = (344 - velocity) / 344;<span class="Apple-converted-space">  </span><span class="s3">// speed of sound is 344 meters/sec</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>amplitude = 10 / distance.squared;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">FSinOsc</span>.ar(1000 * pitchRatio, 0, amplitude)</p>
-<p class="p5">}.play)</p>
-<p class="p4"><br></p>
-<p class="p3">The next example uses the distance to modulate a delay line.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> x, y, distance, velocity, pitchRatio, amplitude, motorSound;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// object travels 200 meters in 6 secs (=120kph) passing 10 meters<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// from the listener</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = 10;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>y = <span class="s1">LFSaw</span>.kr(1/6, 0, 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>distance = hypot(x, y);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>amplitude = 40 / distance.squared;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>motorSound = <span class="s1">RLPF</span>.ar(<span class="s1">FSinOsc</span>.ar(200, 0, <span class="s1">LFPulse</span>.ar(31.3, 0, 0.4)), 400, 0.3);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">DelayL</span>.ar(motorSound, 110/344, distance/344, amplitude)</p>
-<p class="p5">}.play)</p>
-</body>
-</html>
diff --git a/Help/BinaryOps/hypotApx.html b/Help/BinaryOps/hypotApx.html
deleted file mode 100644
index 4fff478..0000000
--- a/Help/BinaryOps/hypotApx.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>hypotApx<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hypotenuse approximation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>hypotApx(x, y)</b></p>
-<p class="p3"><b>x hypotApx: y</b></p>
-<p class="p3"><b>x.hypotApx(y)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns an approximation of the square root of the sum of the squares of x and y.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The formula used is :</p>
-<p class="p2"><br></p>
-<p class="p3">abs(x) + abs(y) - ((sqrt(2) - 1) * min(abs(x), abs(y)))</p>
-<p class="p2"><br></p>
-<p class="p3">hypotApx is used to implement Complex method magnitudeApx.</p>
-<p class="p3">This should not be used for simulating a doppler shift because it is discontinuous. Use hypot.</p>
-<p class="p2"><br></p>
-<p class="p3">See also <b>hypot</b>, <b>atan2</b>.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/lessorequalthan.html b/Help/BinaryOps/lessorequalthan.html
deleted file mode 100644
index 4012123..0000000
--- a/Help/BinaryOps/lessorequalthan.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b><=<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>less than or equal</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a <= b</b></p>
-<p class="p2"><br></p>
-<p class="p3">Result is 1 if a <= b, otherwise it is 0. This can be useful for triggering purposes, among other things:</p>
-<p class="p4"><br></p>
-<p class="p5">s = <span class="s1">Server</span>.local;</p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">( </span>// trigger an envelope</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s1">SinOsc</span>.ar(1) <= 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc, trig, doneAction: 0)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}.play(s);)</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">( </span>// trigger a synth<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"help-EnvGen"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc,1.0,doneAction: 2)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).send(s);</p>
-<p class="p4"><br></p>
-<p class="p6">// This synth has no output. It only checks amplitude of input and looks for a transition from > 0.2</p>
-<p class="p6">// to < 0.2</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"help-<= trig"<span class="s2">, {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(<span class="s1">Amplitude</span>.kr(<span class="s1">SoundIn</span>.ar(0)) <= 0.2);</p>
-<p class="p5">}).play(s);</p>
-<p class="p8"><br></p>
-<p class="p6">// responder to trigger synth</p>
-<p class="p5"><span class="s1">OSCresponderNode</span>(s.addr,<span class="s3">'/tr'</span>,{ <span class="s4">"triggered"</span>.postln; <span class="s1">Synth</span>.new(<span class="s4">"help-EnvGen"</span>) }).add;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/BinaryOps/lessthan.html b/Help/BinaryOps/lessthan.html
deleted file mode 100644
index 307f1a1..0000000
--- a/Help/BinaryOps/lessthan.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b><<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>less than</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>BinaryOperator</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>a < b</b></p>
-<p class="p3"><br></p>
-<p class="p4">Result is 1 if a < b, otherwise it is 0. This can be useful for triggering purposes, among other things:</p>
-<p class="p5"><br></p>
-<p class="p6">s = <span class="s1">Server</span>.local;</p>
-<p class="p6">s.boot;</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">( </span>// trigger an envelope</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> trig;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>trig = <span class="s1">SinOsc</span>.ar(1) < 0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc, trig, doneAction: 0)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}.play(s);)</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">( </span>// trigger a synth</p>
-<p class="p9"><span class="s1">SynthDef</span><span class="s2">(</span>"help-EnvGen"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc,1.0,doneAction: 2)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).send(s);</p>
-<p class="p7"><br></p>
-<p class="p8">// This synth has no output. It only checks amplitude of input and looks for a transition from > 0.2</p>
-<p class="p8">// to < 0.2</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s1">SynthDef</span><span class="s2">(</span>"help-< trig"<span class="s2">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(<span class="s1">Amplitude</span>.kr(<span class="s1">SoundIn</span>.ar(0)) <= 0.2);</p>
-<p class="p6">}).play(s);</p>
-<p class="p10"><br></p>
-<p class="p8">// responder to trigger synth</p>
-<p class="p6"><span class="s1">OSCresponderNode</span>(s.addr,<span class="s3">'/tr'</span>,{ <span class="s4">"triggered"</span>.postln; <span class="s1">Synth</span>.new(<span class="s4">"help-EnvGen"</span>) }).add;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/BinaryOps/max.html b/Help/BinaryOps/max.html
deleted file mode 100644
index 37af90b..0000000
--- a/Help/BinaryOps/max.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>max<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>max(a, b)</b></p>
-<p class="p3"><b>a max: b</b></p>
-<p class="p3"><b>a.max(b)</b></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="s1">var</span> z;</p>
-<p class="p5">z = <span class="s1">FSinOsc</span>.ar(500);</p>
-<p class="p5">z max: <span class="s1">FSinOsc</span>.ar(0.1);</p>
-<p class="p6"><span class="s2">}.play) </span>// modulates and envelopes z</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/min.html b/Help/BinaryOps/min.html
deleted file mode 100644
index e32b00a..0000000
--- a/Help/BinaryOps/min.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>min<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>minimum</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>min(a, b)</b></p>
-<p class="p3"><b>a min: b</b></p>
-<p class="p3"><b>a.min(b)</b></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="s1">var</span> z;</p>
-<p class="p5">z = <span class="s1">FSinOsc</span>.ar(500);</p>
-<p class="p5">z min: <span class="s1">FSinOsc</span>.ar(0.1);</p>
-<p class="p6"><span class="s2">}.play) </span>// distorts and envelopes z</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/modulo.html b/Help/BinaryOps/modulo.html
deleted file mode 100644
index c207092..0000000
--- a/Help/BinaryOps/modulo.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>%<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>modulo</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a % b</b></p>
-<p class="p2"><br></p>
-<p class="p3">Outputs a modulo b. The modulo is the remainder after dividing a by b.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">5%3<span class="Apple-converted-space">  </span></span>//should post 2</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s1">19.1%6.4 </span>//also works on floats</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">{ </span><span class="s2">FSinOsc</span><span class="s1">.ar(100, 4) % 1 }.play </span>// results in a sawtooth wave</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/multiplication.html b/Help/BinaryOps/multiplication.html
deleted file mode 100644
index cdfdf66..0000000
--- a/Help/BinaryOps/multiplication.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>*<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>multiplication</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a * b</b></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// Same as mul: 0.5</p>
-<p class="p7">{ <span class="s1">SinOsc</span>.ar(440) * 0.5 }.play;</p>
-<p class="p8"><br></p>
-<p class="p6">// This creates a beating effect (subaudio rate).</p>
-<p class="p7">{ <span class="s1">FSinOsc</span>.kr(10) * <span class="s1">PinkNoise</span>.ar(0.5) }.play;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">// This is ring modulation.</p>
-<p class="p7">{ <span class="s1">SinOsc</span>.ar(XLine.kr(100, 1001, 10), 0, 0.5) * <span class="s1">SyncSaw</span>.ar(100, 200, 0.5) }.play;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/pow.html b/Help/BinaryOps/pow.html
deleted file mode 100644
index bee4034..0000000
--- a/Help/BinaryOps/pow.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>pow<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponentiation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>see </b><a href="exponentiation.html"><span class="s1"><b>**</b></span></a></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/ring1.html b/Help/BinaryOps/ring1.html
deleted file mode 100644
index fbe70b8..0000000
--- a/Help/BinaryOps/ring1.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ring1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ring modulation plus first source</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>((a*b) + a). This is more efficient than using</p>
-<p class="p3">separate unit generators for the multiply and add.</p>
-<p class="p2"><br></p>
-<p class="p3">See also <b>*</b>, <b>ring1</b>, <b>ring2</b>, <b>ring3</b>, <b>ring4</b>.</p>
-<p class="p2"><br></p>
-<p class="p4">{ (<span class="s1">FSinOsc</span>.ar(800) ring1: <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5))) * 0.125 }.play;</p>
-<p class="p5"><br></p>
-<p class="p3">same as :</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>((a * b) + a) * 0.125</p>
-<p class="p4">}.play)</p>
-<p class="p5"><br></p>
-<p class="p3">normal ring modulation:</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(a * b) * 0.125</p>
-<p class="p4">}.play)</p>
-</body>
-</html>
diff --git a/Help/BinaryOps/ring2.html b/Help/BinaryOps/ring2.html
deleted file mode 100644
index e682907..0000000
--- a/Help/BinaryOps/ring2.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ring2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ring modulation plus both sources</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>((a*b) + a + b). This is more efficient than using</p>
-<p class="p3">separate unit generators for the multiply and adds.</p>
-<p class="p2"><br></p>
-<p class="p3">See also <b>*</b>, <b>ring1</b>, <b>ring2</b>, <b>ring3</b>, <b>ring4</b>.</p>
-<p class="p2"><br></p>
-<p class="p4">{ (<span class="s1">FSinOsc</span>.ar(800) ring2: <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5))) * 0.125 }.play;</p>
-<p class="p5"><br></p>
-<p class="p3">same as :</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>((a * b) + a + b) * 0.125</p>
-<p class="p4">}.play)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/ring3.html b/Help/BinaryOps/ring3.html
deleted file mode 100644
index 5397cf3..0000000
--- a/Help/BinaryOps/ring3.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.s2 {font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ring3<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ring modulation variant</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>(a*a *b). This is more efficient than using</p>
-<p class="p3">separate unit generators for each multiply.</p>
-<p class="p2"><br></p>
-<p class="p3">See also <b>*</b>, <b>ring1</b>, <b>ring2</b>, <b>ring3</b>, <b>ring4</b>.</p>
-<p class="p2"><br></p>
-<p class="p4">{ (<span class="s1">FSinOsc</span>.ar(800) ring3: <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5))) * 0.125 }.pl<span class="s2">ay;</span></p>
-<p class="p5"><br></p>
-<p class="p3">same as :</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(a * a * b) * 0.125;</p>
-<p class="p4">}.play)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/ring4.html b/Help/BinaryOps/ring4.html
deleted file mode 100644
index cedbf65..0000000
--- a/Help/BinaryOps/ring4.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ring4<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ring modulation variant</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>((a*a *b) - (a*b*b)). This is more efficient than using</p>
-<p class="p3">separate unit generators for each operation.</p>
-<p class="p2"><br></p>
-<p class="p3">See also <b>*</b>, <b>ring1</b>, <b>ring2</b>, <b>ring3</b>, <b>ring4</b>.</p>
-<p class="p2"><br></p>
-<p class="p4">{ (<span class="s1">FSinOsc</span>.ar(800) ring4: <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5))) * 0.125 }.play;</p>
-<p class="p5"><br></p>
-<p class="p3">same as :</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>((a * a * b) - (a * b * b)) * 0.125</p>
-<p class="p4">}.play)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/round.html b/Help/BinaryOps/round.html
deleted file mode 100644
index 21e1837..0000000
--- a/Help/BinaryOps/round.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>round<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rounding</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>round(a, b)</b></p>
-<p class="p3"><b>a round: b</b></p>
-<p class="p3"><b>a.round(b)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Rounds a to the nearest multiple of b.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/scaleneg.html b/Help/BinaryOps/scaleneg.html
deleted file mode 100644
index 9194a8b..0000000
--- a/Help/BinaryOps/scaleneg.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>scaleneg<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scale negative part of input wave</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>scaleneg(a, b)</b></p>
-<p class="p3"><b>a scaleneg: b</b></p>
-<p class="p3"><b>a.scaleneg(b)</b></p>
-<p class="p4"><br></p>
-<p class="p3">a*b when a < 0, otherwise a.</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s1">FSinOsc</span>.ar(500).scaleneg(<span class="s1">Line</span>.ar(1,-1,4)) }.play;</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/sqrdif.html b/Help/BinaryOps/sqrdif.html
deleted file mode 100644
index e83e916..0000000
--- a/Help/BinaryOps/sqrdif.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>sqrdif<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>square of the difference</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>(a - b)**2. This is more efficient than using</p>
-<p class="p3">separate unit generators for each operation.</p>
-<p class="p2"><br></p>
-<p class="p4">{ (<span class="s1">FSinOsc</span>.ar(800) sqrdif: <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5))) * 0.125 }.play;</p>
-<p class="p5"><br></p>
-<p class="p3">same as :</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b, c;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>c = a - b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(c * c) * 0.125</p>
-<p class="p4">}.play)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/sqrsum.html b/Help/BinaryOps/sqrsum.html
deleted file mode 100644
index e96f3fc..0000000
--- a/Help/BinaryOps/sqrsum.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.s2 {font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>sqrsum<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>square of the sum</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>(a + b)**2. This is more efficient than using</p>
-<p class="p3">separate unit generators for each operation.</p>
-<p class="p2"><br></p>
-<p class="p4">{ (<span class="s1">FSinOsc</span>.ar(800) sqrsum: <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5))) * 0.125 }.play<span class="s2">;</span></p>
-<p class="p5"><br></p>
-<p class="p3">same as :</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b, c;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>c = a + b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(c * c) * 0.125</p>
-<p class="p4">}.play)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/subtraction.html b/Help/BinaryOps/subtraction.html
deleted file mode 100644
index 7505f79..0000000
--- a/Help/BinaryOps/subtraction.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>-<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>subtraction</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOp</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a - b</b></p>
-<p class="p4"><br></p>
-<p class="p3">Subtracts the output of a ugen from something else.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="s1">var</span> z;</p>
-<p class="p5">z = <span class="s1">FSinOsc</span>.ar(800,0.25);</p>
-<p class="p6"><span class="s2">z - z<span class="Apple-tab-span">	</span></span>// results in silence</p>
-<p class="p5">}.play)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/sumsqr.html b/Help/BinaryOps/sumsqr.html
deleted file mode 100644
index d359026..0000000
--- a/Help/BinaryOps/sumsqr.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>sumsqr<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sum of squares</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the value of<span class="Apple-converted-space">  </span>(a*a) + (b*b). This is more efficient than using</p>
-<p class="p3">separate unit generators for each operation.</p>
-<p class="p2"><br></p>
-<p class="p4">{ (<span class="s1">FSinOsc</span>.ar(800) sumsqr: <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5))) * 0.125 }.play;</p>
-<p class="p5"><br></p>
-<p class="p3">same as :</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s1">FSinOsc</span>.ar(800);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s1">FSinOsc</span>.ar(<span class="s1">XLine</span>.kr(200,500,5));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>((a * a) + (b * b)) * 0.125</p>
-<p class="p4">}.play)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/thresh.html b/Help/BinaryOps/thresh.html
deleted file mode 100644
index b1602ba..0000000
--- a/Help/BinaryOps/thresh.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>thresh<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>signal thresholding</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>thresh(a, b)</b></p>
-<p class="p3"><b>a thresh: b</b></p>
-<p class="p3"><b>a.thresh(b)</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">0 when a < b, otherwise a.</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s1">LFNoise0</span>.ar(50, 0.5) thresh: 0.45 }.play <span class="s2">// a low-rent gate</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/BinaryOps/trunc.html b/Help/BinaryOps/trunc.html
deleted file mode 100644
index 9f3bda5..0000000
--- a/Help/BinaryOps/trunc.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>trunc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>truncation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>trunc(a, b)</b></p>
-<p class="p3"><b>a trunc: b</b></p>
-<p class="p3"><b>a.trunc(b)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Truncate a to a multiple of b.</p>
-</body>
-</html>
diff --git a/Help/BinaryOps/wrap2.html b/Help/BinaryOps/wrap2.html
deleted file mode 100644
index 7671ef3..0000000
--- a/Help/BinaryOps/wrap2.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>wrap2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bilateral wrapping</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BinaryOperator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>wrap2(a, b)</b></p>
-<p class="p3"><b>a wrap2: b</b></p>
-<p class="p3"><b>a.wrap2(b)</b></p>
-<p class="p2"><br></p>
-<p class="p3">wraps input wave to +/- b</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s1">FSinOsc</span>.ar(1000).wrap2(<span class="s1">Line</span>.kr(0,1.01,8)) }.scope;</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Archive.html b/Help/Collections/Archive.html
deleted file mode 100644
index 43e7b7e..0000000
--- a/Help/Collections/Archive.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0024f8}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8f2116}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #486b24}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #002eaf}
-span.s4 {color: #0024f8}
-span.s5 {color: #0033f1}
-span.s6 {color: #0000ff}
-span.s7 {color: #8f2116}
-span.s8 {color: #486b24}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Archive<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>storing objects to file</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s3"><b>Object</b></span></a><b> : </b><a href="Collection.html"><b>Collection</b></a><b> : </b><a href="MultiLevelIdentityDictionary.html"><b>MultiLevelIdentityDictionary</b></a><b> : </b><a href="LibraryBase.html"><span class="s4"><b>LibraryBase</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">Archives can write any object to disk and read from file again. Compex structures of objects can thus be restored. Writing an object to file as a<b> compile string</b> is usually more readable, but does not account for the internal structure of the object.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2"><b>See also:</b> <a href="Library.html"><span class="s3">Library</span></a></span><span class="s3">, <a href="../Core/Object.html"><span class="s5">Object</span></a></span><span class="s5">, <a href="LibraryBase.html"><span class="s4">LibraryBase</span></a></span>, <a href="../OSX/writeAsPlist.html"><span class="s6">writeAsPlist</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">There is only one global instance: Archive.global, which is initialized automatically.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Class Methods (see superclass for more)</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*global</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*global_(obj)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return / set the global archive instance</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>*archiveDir</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*archiveDir_(string)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set or get the directory that the archive is written to.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default: <a href="../Platform/Platform.html"><span class="s3">Platform</span></a>.userAppSupportDir.</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*write(filename)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>write the global archive now. This is called automatically when SuperCollider quits.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The default filename is "/archive.sctxar"</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>*read(filename)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>read the global archive now. This is called automatically when SuperCollider recompiles or starts.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The default filename is "/archive.sctxar"</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p4"><br></p>
-<p class="p11">// make a storage place for various objects:</p>
-<p class="p12">q = (); <span class="s7">// Event</span></p>
-<p class="p4"><br></p>
-<p class="p12">q[<span class="s8">\a_long_array</span>] = <span class="s3">Array</span>.rand(128, 0.0, 1.0);</p>
-<p class="p12">q[<span class="s8">\pi_squared</span>] = pi * pi;</p>
-<p class="p12">q[<span class="s8">\favourite_sound</span>] = { { <span class="s3">SinOsc</span>.ar([300, 330]).sum * <span class="s3">LFPulse</span>.kr(2 + [0, 0.01]) * 0.1 }.play };</p>
-<p class="p11"><span class="s2">q[</span><span class="s8">\same_long_array</span><span class="s2">] = q[</span><span class="s8">\a_long_array</span><span class="s2">]; </span>// same objects may appear several times</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="s3">Archive</span>.global.put(<span class="s8">\myData</span>, q);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p12"><span class="s3">Archive</span>.global.at(<span class="s8">\myData</span>).postcs;</p>
-<p class="p4"><br></p>
-<p class="p11">// after a recompile:</p>
-<p class="p12">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p12">q = <span class="s3">Archive</span>.global.at(<span class="s8">\myData</span>);</p>
-<p class="p12">q.postcs;</p>
-<p class="p13"><span class="s2">q[</span>\favourite_sound<span class="s2">].value;</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Array.html b/Help/Collections/Array.html
deleted file mode 100644
index 5e6e1e0..0000000
--- a/Help/Collections/Array.html
+++ /dev/null
@@ -1,373 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #ad140d}
-p.p14 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #2c7014}
-p.p15 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p16 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #001bb9}
-p.p18 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {color: #001bb9}
-span.s3 {color: #ad140d}
-span.s4 {color: #2c7014}
-span.s5 {color: #606060}
-span.s6 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Array</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s2"><b> :</b></span><span class="s1"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><span class="s2"><b> </b></span><span class="s1"><b>: </b><a href="ArrayedCollection.html"><b>ArrayedCollection</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">Arrays are ArrayedCollections whose slots may contain any object. Arrays have a fixed maximum size beyond which they cannot grow. For expandable arrays, use the <a href="List.html"><span class="s2">List</span></a> class.</p>
-<p class="p2"><br></p>
-<p class="p4">An array can be created with a fixed maximum capacity:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s2">Array</span>.new(size);</p>
-<p class="p2"><br></p>
-<p class="p4">Which will return an array of size 0, but the capability to add up to 32</p>
-<p class="p4">objects.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = z.add(obj);</p>
-<p class="p2"><br></p>
-<p class="p4">z now has a size of 1.</p>
-<p class="p2"><br></p>
-<p class="p4">For Arrays, the 'add' method may or may not return the same Array object. It will add the argument to the receiver if there is space, otherwise it returns a new Array object with the argument added. Thus the proper usage of 'add' with an Array is to always assign the result as follows:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = z.add(obj);</p>
-<p class="p2"><br></p>
-<p class="p4">This allows an efficient use of resources, only growing the array when it needs to.<span class="Apple-converted-space">  </span>The <a href="List.html"><span class="s2">List</span></a><span class="s3"> </span>class manages the Array for you, and in many cases in more suitable.</p>
-<p class="p2"><br></p>
-<p class="p4">An array can be created with all slots filled with nils:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s2">Array</span>.newClear(size);</p>
-<p class="p2"><br></p>
-<p class="p4">Elements can be put into an existing slot:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.put(2,obj);</p>
-<p class="p2"><br></p>
-<p class="p4">And accessed :</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>a.at(2); </span>// these are equivalent</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a[2];</p>
-<p class="p2"><br></p>
-<p class="p4">See <a href="ArrayedCollection.html"><span class="s2">ArrayedCollection</span></a> for the principal methods:</p>
-<p class="p4"><span class="Apple-tab-span">	</span>at</p>
-<p class="p4"><span class="Apple-tab-span">	</span>put</p>
-<p class="p4"><span class="Apple-tab-span">	</span>clipAt, wrapAt etc.</p>
-<p class="p2"><br></p>
-<p class="p4">Literal Arrays can be created at compile time, and are very efficient. See <a href="../Language/Literals.html"><span class="s2">Literals</span></a> for information.</p>
-<p class="p2"><br></p>
-<p class="p7"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*with(... args)</b></p>
-<p class="p8">Create a new Array whose slots are filled with the given arguments.<span class="Apple-converted-space"> </span></p>
-<p class="p8">This is the same as the method in <a href="ArrayedCollection.html"><span class="s2">ArrayedCollection</span></a>, but is reimplemented here to be more efficient.</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s2">Array</span>.with(7, <span class="s4">'eight'</span>,<span class="Apple-converted-space">  </span>9).postln;</p>
-<p class="p11"><br></p>
-<p class="p7"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>reverse</b></p>
-<p class="p8">Returns a new Array whose elements are reversed. The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3].reverse.postln;</p>
-<p class="p11"><br></p>
-<p class="p10">(</p>
-<p class="p10">x = [1, 2, 3];</p>
-<p class="p10">z = x.reverse;</p>
-<p class="p10">x.postln;</p>
-<p class="p10">z.postln;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>scramble</b></p>
-<p class="p8">Returns a new Array whose elements have been scrambled. The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4, 5, 6].scramble.postln;</p>
-<p class="p11"><br></p>
-<p class="p4"><b>mirror</b></p>
-<p class="p8">Return a new Array which is the receiver made into a palindrome.<span class="Apple-converted-space"> </span></p>
-<p class="p8">The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4].mirror.postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>mirror1</b></p>
-<p class="p8">Return a new Array which is the receiver made into a palindrome with the last element removed.<span class="Apple-converted-space"> </span></p>
-<p class="p8">This is useful if the list will be repeated cyclically, the first element will not get played twice.</p>
-<p class="p8">The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4].mirror1.postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>mirror2</b></p>
-<p class="p8">Return a new Array which is the receiver concatenated with a reversal of itself.<span class="Apple-converted-space"> </span></p>
-<p class="p8">The center element is duplicated. The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4].mirror2.postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>stutter(n)</b></p>
-<p class="p8">Return a new Array whose elements are repeated <b>n</b> times. The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3].stutter(2).postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>rotate(n)</b></p>
-<p class="p8">Return a new Array whose elements are in rotated order. Negative n values rotate left, postive n values</p>
-<p class="p8">rotate right. The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4, 5].rotate(1).postln;</p>
-<p class="p12"><br></p>
-<p class="p10">[1, 2, 3, 4, 5].rotate(-1).postln;</p>
-<p class="p12"><br></p>
-<p class="p10">[1, 2, 3, 4, 5].rotate(3).postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>pyramid</b></p>
-<p class="p8">Return a new Array whose elements have been reordered via one of 10 "counting" algorithms.</p>
-<p class="p8">The algorithms are numbered 1 through 10. Run the examples to see the algorithms.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4].pyramid(1).postln;</p>
-<p class="p11"><br></p>
-<p class="p10">(</p>
-<p class="p10">10.do({ <span class="s2">arg</span> i;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>[1, 2, 3, 4].pyramid(i + 1).postcs;</p>
-<p class="p10">});</p>
-<p class="p10">)</p>
-<p class="p12"><br></p>
-<p class="p4"><b>pyramidg</b></p>
-<p class="p8">Like pyramid, but keep the resulting values grouped in subarrays.</p>
-<p class="p9"><br></p>
-<p class="p13">// compare:</p>
-<p class="p10">[1, 2, 3, 4].pyramid(1).postln;</p>
-<p class="p10">[1, 2, 3, 4].pyramidg(1).postln;</p>
-<p class="p11"><br></p>
-<p class="p10">(</p>
-<p class="p10">10.do({ <span class="s2">arg</span> i;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>[1, 2, 3, 4].pyramid(i + 1).postcs;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>[1, 2, 3, 4].pyramidg(i + 1).postcs;</p>
-<p class="p10">});</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>sputter(probability, maxlen)</b></p>
-<p class="p8">Return a new Array of length <b>maxlen</b> with the items partly repeated (random choice of given <b>probability</b>).</p>
-<p class="p9"><br></p>
-<p class="p13">// compare:</p>
-<p class="p10">[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].sputter(0.5, 16).postln;</p>
-<p class="p10">[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].sputter(0.8, 8).postln;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p4"><b>lace(length)</b></p>
-<p class="p8">Returns a new Array whose elements are interlaced sequences of the elements of the receiver's subcollections, up to size <b>length</b>. The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">x = [ [1, 2, 3], 6, <span class="s2">List</span>[<span class="s5">"foo"</span>, <span class="s4">'bar'</span>]];</p>
-<p class="p10">y = x.lace(12);</p>
-<p class="p10">x.postln;</p>
-<p class="p10">y.postln;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>permute(nthPermutation)</b></p>
-<p class="p8">Returns a new Array whose elements are the <b>nthPermutation</b> of the elements of the receiver. The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">x = [ 1, 2, 3];</p>
-<p class="p10">6.do({|i| x.permute(i).postln;});</p>
-<p class="p10">)</p>
-<p class="p12"><br></p>
-<p class="p4"><b>allTuples(maxTuples)</b></p>
-<p class="p8">Returns a new Array whose elements contain all possible combinations of the receiver's subcollections.</p>
-<p class="p12"><br></p>
-<p class="p10">[[1, 2, 3, 4, 5], [10, 20, 30]].allTuples;</p>
-<p class="p10">[[1, 2, 3, 4, 5], [10, 20, 30], [5, 6]].allTuples;</p>
-<p class="p12"><br></p>
-<p class="p9"><br></p>
-<p class="p4"><b>wrapExtend(length)</b></p>
-<p class="p8">Returns a new Array whose elements are repeated sequences of the receiver, up to size <b>length</b>. The receiver is unchanged.</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">x = [ 1, 2, 3, <span class="s5">"foo"</span>, <span class="s4">'bar'</span> ];</p>
-<p class="p10">y = x.wrapExtend(9);</p>
-<p class="p10">x.postln;</p>
-<p class="p10">y.postln;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>foldExtend(length)</b></p>
-<p class="p8">Same as <b>wrapExtend</b> but the sequences fold back on the list elements.</p>
-<p class="p12"><br></p>
-<p class="p10">(</p>
-<p class="p10">x = [ 1, 2, <span class="s5">"foo"</span>];</p>
-<p class="p10">y = x.foldExtend(9);</p>
-<p class="p10">x.postln;</p>
-<p class="p10">y.postln;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>clipExtend(length)</b></p>
-<p class="p8">Same as <b>wrapExtend</b> but the sequences "clip" (return their last element) rather than wrapping.</p>
-<p class="p12"><br></p>
-<p class="p10">(</p>
-<p class="p10">x = [ 1, 2, <span class="s5">"foo"</span>];</p>
-<p class="p10">y = x.clipExtend(9);</p>
-<p class="p10">x.postln;</p>
-<p class="p10">y.postln;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>slide(windowLength, stepSize)</b></p>
-<p class="p8">Return a new Array whose elements are repeated subsequences from the receiver.<span class="Apple-converted-space"> </span></p>
-<p class="p8">Easier to demonstrate than explain.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4, 5, 6].slide(3, 1).postcs;</p>
-<p class="p10">[1, 2, 3, 4, 5, 6].slide(3, 2).postcs;</p>
-<p class="p10">[1, 2, 3, 4, 5, 6].slide(4, 1).postcs;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>shift(n)</b></p>
-<p class="p8">Shift the values of the array <b>n</b> steps to the right (n positive) or to the left(n negative),<span class="Apple-converted-space"> </span></p>
-<p class="p8">dropping the excess and filling empty space with zero.</p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4, 5, 6].shift(3).postln;</p>
-<p class="p10">[1, 2, 3, 4, 5, 6].shift(-3).postln;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p4"><b>containsSeqColl</b></p>
-<p class="p8">Returns true if the receiver Array contains any instance of <a href="SequenceableCollection.html"><span class="s2">SequenceableCollection</span></a></p>
-<p class="p9"><br></p>
-<p class="p10">[1, 2, 3, 4].containsSeqColl.postln</p>
-<p class="p10">[1, 2, [3], 4].containsSeqColl.postln</p>
-<p class="p12"><br></p>
-<p class="p4"><b>powerset</b></p>
-<p class="p8">Returns all possible combinations of the array's elements.</p>
-<p class="p12"><br></p>
-<p class="p10">[1, 2, 3].powerset.postln</p>
-<p class="p10">[1, 2, 3].powerset.sort({ |a, b| a.size > b.size }); // sort by size, big first</p>
-<p class="p10">[1, 2, 3].powerset.sort({ |a, b| a.size > b.size }).reverse; // by size, small first</p>
-<p class="p12"><br></p>
-<p class="p8">powerset is also supported in <a href="Collection.html"><span class="s2">Collection</span></a>:</p>
-<p class="p9"><br></p>
-<p class="p10">Set[1, 2, 3].powerset;</p>
-<p class="p10">List[1, 2, 3].powerset</p>
-<p class="p10">(a: 1, b: 2, c: 3).powerset;</p>
-<p class="p12"><br></p>
-<p class="p4"><b>envirPairs</b></p>
-<p class="p8">Given an array of symbols, this returns an array of pairs of (symbol, value) from the current environment.</p>
-<p class="p8">This can then be used as arguments for a <a href="../ServerArchitecture/Synth.html"><span class="s2">Synth</span></a>, or in an OSC message.</p>
-<p class="p12"><br></p>
-<p class="p10">(</p>
-<p class="p10">e = (freq: 340, amp: 0.001, strangeness: 0.85);</p>
-<p class="p10">e.use {</p>
-<p class="p14"><span class="s1"><span class="Apple-tab-span">	</span>[</span>\amp<span class="s1">, </span>\taste<span class="s1">, </span>\strangeness<span class="s1">].envirPairs;</span></p>
-<p class="p10">}</p>
-<p class="p10">);</p>
-<p class="p12"><br></p>
-<p class="p4"><b>flop</b></p>
-<p class="p8">Invert rows and colums in a two dimensional Array (turn inside out).</p>
-<p class="p15"><span class="s1">See also: <a href="../Core/Kernel/Function.html"><span class="s6">Function</span></a>, <a href="SequenceableCollection.html"><span class="s6">SequenceableCollection</span></a>.</span></p>
-<p class="p12"><br></p>
-<p class="p10">[[1, 2, 3], [4, 5, 6]].flop;</p>
-<p class="p10">[[1, 2, 3], [4, 5, 6], [7, 8]].flop; <span class="s3">// shorter array wraps</span></p>
-<p class="p13"><span class="s1">[].flop; </span>// result is always 2-d.</p>
-<p class="p9"><br></p>
-<p class="p4"><b>multiChannelExpand</b></p>
-<p class="p8">Used by UGens to perform multi channel expansion. Same as flop.</p>
-<p class="p9"><br></p>
-<p class="p4"><b>source</b></p>
-<p class="p8">Some UGens return Arrays of <a href="../UGens/Multichannel/OutputProxy.html"><span class="s2">OutputProxy</span></a> when instantiated. This method allows you to</p>
-<p class="p8">get at the source UGen.</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">z = <span class="s2">Pan2</span>.ar;</p>
-<p class="p10">z.postln;</p>
-<p class="p10">z.source.postln;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>fork(join, clock, quant, stackSize)</b></p>
-<p class="p8">Used within <a href="../Core/Kernel/Routine.html"><span class="s2">Routine</span></a>s and assumes an array of functions, from which subroutines are created. The subroutines are played while the outer Routine carries on. The <b>join</b> parameter expresses after how many subroutines complete the outer Routine is allowed to go on. By default this happens after all subroutines have completed.</p>
-<p class="p9"><br></p>
-<p class="p16"><br></p>
-<p class="p13">// an array of routine functions:</p>
-<p class="p10">(</p>
-<p class="p10">a = [</p>
-<p class="p10"><span class="Apple-tab-span">	</span>{ 1.wait; <span class="s4">\done_one</span>.postln },</p>
-<p class="p10"><span class="Apple-tab-span">	</span>{ 0.5.wait; <span class="s4">\done_two</span>.postln },</p>
-<p class="p10"><span class="Apple-tab-span">	</span>{ 0.2.wait; <span class="s4">\done_three</span>.postln }</p>
-<p class="p10">];</p>
-<p class="p10">)</p>
-<p class="p12"><br></p>
-<p class="p13">// join after 0</p>
-<p class="p10">(</p>
-<p class="p17">Routine<span class="s1"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p18"><span class="s1"><span class="Apple-tab-span">	</span></span>"join = 0."<span class="s1">.postcln;</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>a.fork(0); <span class="s4">\doneAll</span>.postln;</p>
-<p class="p10">}.play;</p>
-<p class="p10">)</p>
-<p class="p13">// join after 1</p>
-<p class="p10">(</p>
-<p class="p17">Routine<span class="s1"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p18"><span class="s1"><span class="Apple-tab-span">	</span></span>"join = 1."<span class="s1">.postcln;</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>a.fork(1); <span class="s4">\doneAll</span>.postln;</p>
-<p class="p10">}.play;</p>
-<p class="p10">)</p>
-<p class="p13">// join after all</p>
-<p class="p10">(</p>
-<p class="p17">Routine<span class="s1"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p18"><span class="s1"><span class="Apple-tab-span">	</span></span>"join = a.size (default)."<span class="s1">.postcln;</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>a.fork; <span class="s4">\doneAll</span>.postln;</p>
-<p class="p10">}.play;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>poll(trig, label, trigid)</b></p>
-<p class="p8">apply an array of <a href="../UGens/Triggers/Poll.html"><span class="s2">Poll</span></a> units to an array of <a href="../UGens/UGen.html"><span class="s2">UGen</span></a>s (see those helpfiles for more details).</p>
-<p class="p9"><br></p>
-<p class="p10">s.boot;</p>
-<p class="p10">(</p>
-<p class="p10">x = {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar([0.1, 0.2], 0).poll * 0.1</p>
-<p class="p10">}.play;</p>
-<p class="p10">)</p>
-<p class="p13"><span class="s1">x.trace; </span>// By tracing the Synth you can see the two Poll units we created</p>
-<p class="p10">x.free</p>
-<p class="p9"><br></p>
-<p class="p4"><b>dpoll(trig, label, trigid)</b></p>
-<p class="p8">apply an array of <a href="../UGens/Synth control/Demand Rate/Dpoll.html"><span class="s2">Dpoll</span></a> units to an array of <a href="../UGens/UGen.html"><span class="s2">UGen</span></a>s (see those helpfiles for more details).</p>
-<p class="p9"><br></p>
-<p class="p4"><b>atIdentityHash(argKey)</b></p>
-<p class="p8">This method is used by IdentitySet to search for a key among its members.</p>
-<p class="p9"><br></p>
-<p class="p4"><b>atIdentityHashInPairs(argKey)</b></p>
-<p class="p8">This method is used by IdentityDictionary to search for a key among its members.</p>
-<p class="p9"><br></p>
-<p class="p4"><b>asShortString</b></p>
-<p class="p8">Returns a short string representing the Array that only shows how many elements it contains</p>
-<p class="p9"><br></p>
-<p class="p4"><b>asString</b></p>
-<p class="p8">Returns a string representing the Array. May not be compileable due to ellision (...) of excessive arguments.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p4"><b>asCompileString</b></p>
-<p class="p8">Returns a string that will compile to return an Array equal to the receiver.</p>
-<p class="p9"><br></p>
-<p class="p4"><b>isValidUGenInput</b></p>
-<p class="p8">Returns true. Arrays are valid UGen inputs.</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p4"><b>asRawOSC</b></p>
-<p class="p8">Returns the OSC measse as an Int8Array. Receiver must be a bundle.</p>
-<p class="p9"><br></p>
-<p class="p10">[0.1, [<span class="s4">\s_new</span>, <span class="s4">\default</span>, -1, 1, 1, <span class="s4">\freq</span>, 1961]].asRawOSC;</p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Array2D.html b/Help/Collections/Array2D.html
deleted file mode 100644
index c0b5e6a..0000000
--- a/Help/Collections/Array2D.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial; min-height: 15.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 13.0px Arial}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Array2D</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>two-dimensional array</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="Collection.html"><span class="s2"><b>Collection</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Represents a two-dimensional array of data. The number of rows and columns is fixed.</p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="Array.html"><span class="s2">Array</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Note:</b> It is possible to implement a similar behaviour using an "array-of-arrays" - see the examples towards the bottom of this page for comparison.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>*new(rows, cols)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create an array of the specified size.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Array2D</span>.new(3,4);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[2,2] = 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.postln</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*fromArray(rows, cols, array)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Build an Array2D from the supplied array.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Array2D</span>.fromArray(3,4, [9,8,7,6,5,4,3,2,1,2,3,4]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[2,2] = 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.postln</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b>Instance Methods</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>at(row, col)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Get a value from the array.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.at(2,3);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[2,3];</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>put(row, col, val)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Put a value into the array.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.put(2,3, 72);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[2,3];</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>colsDo(function)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>rowsDo(function)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Iterate over the columns, or the rows. Each row or column will be passed to <b>function</b> in turn.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.colsDo(<span class="s4">_</span>.postln);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.rowsDo(<span class="s4">_</span>.postln);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>colAt(index)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>rowAt(index)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Retrieve a single row, or column.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.colAt(2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.rowAt(2)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>asArray</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return a flat array containing the elements.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.postln</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.asArray.postln;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p9">// "a" is an array-of-arrays</p>
-<p class="p7">a = { { 100.0.rand }.dup(100) }.dup(100);</p>
-<p class="p9">// "b" is an equivalent Array2D, made using the "fromArray" class method</p>
-<p class="p7">b = <span class="s4">Array2D</span>.fromArray(100,100, a.flat);</p>
-<p class="p10"><br></p>
-<p class="p9">// Accessing</p>
-<p class="p7">a[15][22]</p>
-<p class="p7">b[15, 22]</p>
-<p class="p10"><br></p>
-<p class="p9">// Speed comparison 1: random access</p>
-<p class="p7">bench { 100.do(a[100.rand][100.rand]) }</p>
-<p class="p7">bench { 100.do(b[100.rand, 100.rand]) }</p>
-<p class="p10"><br></p>
-<p class="p9">// Speed comparison 2: iteration</p>
-<p class="p7">bench { 100.do(a.do { <span class="s4">|row|</span> row.do { <span class="s4">|item|</span> item * 2 } }) }</p>
-<p class="p7">bench { 100.do(b.do { <span class="s4">|item|</span> item * 2 }) }</p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/ArrayedCollection.html b/Help/Collections/ArrayedCollection.html
deleted file mode 100644
index ac80718..0000000
--- a/Help/Collections/ArrayedCollection.html
+++ /dev/null
@@ -1,492 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #ad140d}
-p.p13 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #2c7014}
-p.p14 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.s4 {color: #ad140d}
-span.s5 {color: #606060}
-span.s6 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ArrayedCollection</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s2"><b> :</b></span><span class="s1"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">ArrayedCollection is an abstract class, a subclass of SequenceableCollections whose elements are held in a vector of slots. Instances of ArrayedCollection have a fixed maximum size beyond which they may not grow.</p>
-<p class="p2"><br></p>
-<p class="p4">Its principal subclasses are <a href="Array.html"><span class="s2">Array</span></a> (for holding objects), and <a href="RawArray.html"><span class="s2">RawArray</span></a>, from which <a href="Int8Array.html"><span class="s2">Int8Array</span></a>, <a href="FloatArray.html"><span class="s2">FloatArray</span></a>, <a href="Signal.html"><span class="s2">Signal</span></a> etc. inherit.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b><i>Class Methods</i></b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*with(... args)</b></p>
-<p class="p6">Create a new ArrayedCollection whose slots are filled with the given arguments.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">Array</span>.with(7, <span class="s3">'eight'</span>,<span class="Apple-converted-space">  </span>9).postln;</p>
-<p class="p7"><br></p>
-<p class="p4"><b>*series(size, start, step)</b></p>
-<p class="p6">Fill an ArrayedCollection with an arithmetic series.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">Array</span>.series(5, 10, 2).postln;</p>
-<p class="p7"><br></p>
-<p class="p4"><b>*geom(size, start, grow)</b></p>
-<p class="p6">Fill an ArrayedCollection with a geometric series.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">Array</span>.geom(5, 1, 3).postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>*iota(...sizes)</b></p>
-<p class="p6">Fills an ArrayedCollection with a counter. See <a href="../Language/J_concepts_in_SC.html"><span class="s2">J_concepts_in_SC</span></a> for more examples.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">Array</span>.iota(2, 3);</p>
-<p class="p8"><span class="s2">Array</span>.iota(2, 3, 4);</p>
-<p class="p9"><br></p>
-<p class="p4"><b>*fill2D(rows, cols, function)</b></p>
-<p class="p6">Creates a 2 dimensional ArrayedCollection of the given sizes. The items are determined by evaluation of the supplied function. The function is passed row and column indexes as arguments. See <a href="../Language/J_concepts_in_SC.html"><span class="s2">J_concepts_in_SC</span></a></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">Array</span>.fill2D(2, 4, 0);</p>
-<p class="p8"><span class="s2">Array</span>.fill2D(3, 4, { <span class="s2">arg</span> r, c; r*c+c; });</p>
-<p class="p9"><br></p>
-<p class="p4"><b>*fill3D(planes, rows, cols, function)</b></p>
-<p class="p6">Creates a 3 dimensional ArrayedCollection of the given sizes. The items are determined by evaluation of the supplied function. The function is passed plane, row and column indexes as arguments. See <a href="../Language/J_concepts_in_SC.html"><span class="s2">J_concepts_in_SC</span></a></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">Array</span>.fill3D(2, 3, 4, { <span class="s2">arg</span> p, r, c; p; });</p>
-<p class="p10"><br></p>
-<p class="p4"><b>*fillND(dimensions, function)</b></p>
-<p class="p6">Creates a N dimensional ArrayedCollection where N is the size of the array <b>dimensions</b>. The items are determined by evaluation of the supplied function. The function is passed N number of indexes as arguments.</p>
-<p class="p10"><br></p>
-<p class="p8"><span class="s2">Array</span>.fillND([4, 4], { <span class="s2">arg</span> a, b; a+b; });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">//2d</span></p>
-<p class="p8"><span class="s2">Array</span>.fillND([4, 4, 4], { <span class="s2">arg</span> a, b, c; a+b*c; });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">//3d</span></p>
-<p class="p8"><span class="s2">Array</span>.fillND([1, 2, 3, 4], { <span class="s2">arg</span> a, b, c, d; b+d; });<span class="Apple-tab-span">	</span><span class="s4">//4d</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b><i>Instance Methods</i></b></p>
-<p class="p11"><br></p>
-<p class="p4"><b>size</b></p>
-<p class="p6">Return the number of elements the ArrayedCollection.</p>
-<p class="p7"><br></p>
-<p class="p4"><b>maxSize</b></p>
-<p class="p6">Return the maximum number of elements the ArrayedCollection can hold. For example, <a href="Array.html"><span class="s2">Array</span></a>s may initialise themselves with a larger capacity than the number of elements added.</p>
-<p class="p7"><br></p>
-<p class="p8">[4, 5, 6].maxSize; <span class="s4">// gosh</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>at(index)</b></p>
-<p class="p6">Return the <b>item</b> at <b>index</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>clipAt(index)</b></p>
-<p class="p6">Same as <b>at</b>, but values for <b>index</b> greater than the size of the ArrayedCollection will be clipped to the last index.</p>
-<p class="p7"><br></p>
-<p class="p8">y = [ 1, 2, 3 ];</p>
-<p class="p8">y.clipAt(13).postln;</p>
-<p class="p7"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>wrapAt(index)</b></p>
-<p class="p6">Same as <b>at</b>, but values for <b>index</b> greater than the size of the ArrayedCollection will be wrapped around to 0.</p>
-<p class="p7"><br></p>
-<p class="p8">y = [ 1, 2, 3 ];</p>
-<p class="p12"><span class="s1">y.wrapAt(3).postln; </span>// this returns the value at index 0</p>
-<p class="p12"><span class="s1">y.wrapAt(4).postln; </span>// this returns the value at index 1</p>
-<p class="p7"><br></p>
-<p class="p4"><b>foldAt(index)</b></p>
-<p class="p6">Same as <b>at</b>, but values for <b>index</b> greater than the size of the ArrayedCollection will be folded back.</p>
-<p class="p7"><br></p>
-<p class="p8">y = [ 1, 2, 3 ];</p>
-<p class="p12"><span class="s1">y.foldAt(3).postln; </span>// this returns the value at index 1</p>
-<p class="p12"><span class="s1">y.foldAt(4).postln; </span>// this returns the value at index 0</p>
-<p class="p12"><span class="s1">y.foldAt(5).postln; </span>// this returns the value at index 1</p>
-<p class="p7"><br></p>
-<p class="p4"><b>plot</b></p>
-<p class="p6">Plot data in a GUI window. See <a href="../GUI/GUI-Tools/plot.html"><span class="s2">plot</span></a> for more details.</p>
-<p class="p7"><br></p>
-<p class="p4"><b>swap(i, j)</b></p>
-<p class="p6">Swap the values at indices i and j.</p>
-<p class="p7"><br></p>
-<p class="p8">[ 1, 2, 3 ].swap(0, 2).postln;</p>
-<p class="p7"><br></p>
-<p class="p4"><b>put(index, item)</b></p>
-<p class="p6">Put <b>item</b> at <b>index</b>, replacing what is there.</p>
-<p class="p7"><br></p>
-<p class="p4"><b>clipPut(index, item)</b></p>
-<p class="p6">Same as <b>put</b>, but values for <b>index</b> greater than the size of the ArrayedCollection will be clipped to the last index.</p>
-<p class="p7"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>wrapPut(index, item)</b></p>
-<p class="p6">Same as <b>put</b>, but values for <b>index</b> greater than the size of the ArrayedCollection will be wrapped around to 0.</p>
-<p class="p7"><br></p>
-<p class="p4"><b>foldPut(index)</b></p>
-<p class="p6">Same as <b>put</b>, but values for <b>index</b> greater than the size of the ArrayedCollection will be folded back.</p>
-<p class="p7"><br></p>
-<p class="p4"><b>putEach(keys, values)</b></p>
-<p class="p6">Put the <b>values</b> in the corresponding indices given by <b>keys</b>. If one of the two argument arrays is longer then it will wrap.</p>
-<p class="p7"><br></p>
-<p class="p8">y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];</p>
-<p class="p8">y.putEach([4, 7], [<span class="s3">\smelly</span>, <span class="s3">\head</span>])</p>
-<p class="p8">y.putEach([2, 3, 5, 6], <span class="s3">\wotsits</span>);</p>
-<p class="p7"><br></p>
-<p class="p4"><b>indexOf(item)</b></p>
-<p class="p6">Return the first index containing an item which matches <b>item</b>.</p>
-<p class="p7"><br></p>
-<p class="p13"><span class="s1">y = [ </span>\the<span class="s1">, </span>\symbol<span class="s1">, </span>\collection<span class="s1">, </span>\contains<span class="s1">, </span>\my<span class="s1">, </span>\symbol<span class="s1"> ];<span class="Apple-converted-space"> </span></span></p>
-<p class="p8">y.indexOf(<span class="s3">\symbol</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p4"><b>includes(item)</b></p>
-<p class="p6">Return a boolean indicating whether the collection contains anything matching <b>item</b>.</p>
-<p class="p7"><br></p>
-<p class="p13"><span class="s1">y = [ </span>\the<span class="s1">, </span>\symbol<span class="s1">, </span>\collection<span class="s1">, </span>\contains<span class="s1">, </span>\my<span class="s1">, </span>\symbol<span class="s1"> ];<span class="Apple-converted-space"> </span></span></p>
-<p class="p8">y.includes(<span class="s3">\symbol</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p8">y.includes(<span class="s3">\solipsism</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p4"><b>indexOfGreaterThan(item)</b></p>
-<p class="p6">Return the first index containing an item which is greater than <b>item</b>.</p>
-<p class="p7"><br></p>
-<p class="p8">y = <span class="s2">List</span>[ 10, 5, 77, 55, 12, 123];<span class="Apple-converted-space"> </span></p>
-<p class="p8">y.indexOfGreaterThan(70);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p4"><b>removeAt(index)</b></p>
-<p class="p6">Remove and return the element at <b>index</b>, shrinking the size of the ArrayedCollection.</p>
-<p class="p7"><br></p>
-<p class="p8">y = [ 1, 2, 3 ];<span class="Apple-converted-space"> </span></p>
-<p class="p8">y.removeAt(1);<span class="Apple-converted-space"> </span></p>
-<p class="p8">y.postln;</p>
-<p class="p7"><br></p>
-<p class="p4"><b>takeAt(index)</b></p>
-<p class="p6">Similar to <b>removeAt</b>, but does not maintain the order of the items following the one that was removed. Instead, the last item is placed into the position of the removed item and the array's size decreases by one.</p>
-<p class="p9"><br></p>
-<p class="p8">y = [ 1, 2, 3, 4, 5 ];<span class="Apple-converted-space"> </span></p>
-<p class="p8">y.takeAt(1);<span class="Apple-converted-space"> </span></p>
-<p class="p8">y.postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>takeThese(function)</b></p>
-<p class="p6">Removes all items in the receiver for which the <b>function</b> answers true. The function is passed two arguments, the item and an integer index. Note that order is not preserved. See <b>takeAt</b>.</p>
-<p class="p9"><br></p>
-<p class="p8">y = [ 1, 2, 3, 4 ];</p>
-<p class="p8">y.takeThese({ <span class="s2">arg</span> item, index; item.odd; });<span class="Apple-tab-span">	</span><span class="s4">//remove odd items</span></p>
-<p class="p8">y.postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>add(item)</b></p>
-<p class="p6">Adds an item to an ArrayedCollection if there is space. If there is not any space left in the object then this method returns a new ArrayedCollection. For this reason, you should always assign the result of add to a variable - never depend on add changing the receiver.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p12">// z and y are the same object</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3];</p>
-<p class="p8">y = z.add(4);</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p12">// in this case a new object is returned</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4];</p>
-<p class="p8">y = z.add(5);</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>addAll(aCollection)</b></p>
-<p class="p6">Adds all the elements of aCollection to the contents of the receiver, possibly returning a new collection.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p12">// in this case a new object is returned</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4];</p>
-<p class="p8">y = z.addAll([7, 8, 9]);</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p4"><b>extend(size, item)</b></p>
-<p class="p6">Extends the receiver to match <b>size</b> by adding a number of <b>item</b>s. If <b>size</b> is less than receiver size then truncate.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4];</p>
-<p class="p12"><span class="s1">y = z.extend(10, 9);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//fill up with 9 until the size equals 10</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p4"><b>fill(value)</b></p>
-<p class="p6">Inserts the item into the contents of the receiver, possibly returning a new collection. Note the difference between this and Collection's *fill.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> z;</p>
-<p class="p8">z = <span class="s2">List</span>[1, 2, 3, 4];</p>
-<p class="p8">z.fill(4).postln;</p>
-<p class="p8">z.fill([1,2,3,4]).postln;</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p4"><b>insert(index, item)</b></p>
-<p class="p6">Inserts the item into the contents of the receiver, possibly returning a new collection.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p12">// in this case a new object is returned</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4];</p>
-<p class="p8">y = z.insert(1, 999);</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>addFirst(item)</b></p>
-<p class="p6">Inserts the item before the contents of the receiver, possibly returning a new collection.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p12">// in this case a new object is returned</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4];</p>
-<p class="p8">y = z.addFirst(999);</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>pop</b></p>
-<p class="p6">Remove and return the last element of the ArrayedCollection.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> z;</p>
-<p class="p8">z = [1, 2, 3, 4];</p>
-<p class="p8">z.pop.postln;</p>
-<p class="p8">z.postln;</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p4"><b>grow(sizeIncrease)</b></p>
-<p class="p6">Increase the size of the ArrayedCollection by <b>sizeIncrease </b>number of slots,<span class="Apple-converted-space">  </span>possibly returning a new collection.</p>
-<p class="p7"><br></p>
-<p class="p4"><b>growClear(sizeIncrease)</b></p>
-<p class="p6">Increase the size of the ArrayedCollection by <b>sizeIncrease </b>number of slots,<span class="Apple-converted-space">  </span>returning a new collection with <a href="../Core/Nil.html"><span class="s2">nil</span></a>s in the added slots.</p>
-<p class="p7"><br></p>
-<p class="p12">// Compare:</p>
-<p class="p8">[4,5,6].grow(5)</p>
-<p class="p8">[4,5,6].growClear(5)</p>
-<p class="p7"><br></p>
-<p class="p4"><b>copyRange(start, end)</b></p>
-<p class="p6">Return a new ArrayedCollection which is a copy of the indexed slots of the receiver from <b>start</b> to <b>end</b>.</p>
-<p class="p6">x.copyRange(a, b) can also be written as <b>x[a..b]</b></p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4, 5];</p>
-<p class="p8">y = z.copyRange(1,3);</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p4"><b>copySeries(first, second, last)</b></p>
-<p class="p6">Return a new ArrayedCollection consisting of the values starting at <b>first</b>, then every step of the distance between <b>first</b> and <b>second</b>, up until <b>last</b>.</p>
-<p class="p6">x.copySeries(a, b, c) can also be written as <b>x[a, b..c]</b></p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4, 5, 6];</p>
-<p class="p8">y = z.copySeries(0, 2, 5);</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p4"><b>seriesFill(start, step)</b></p>
-<p class="p6">Fill the receiver with an arithmetic progression. The first element will be <b>start</b>, the second <b>start + step</b>, the third <b>start + step + step</b> ...</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> y;</p>
-<p class="p8">y = <span class="s2">Array</span>.newClear(15);</p>
-<p class="p8">y.seriesFill(5, 3);</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>putSeries(first, second, last, value)</b></p>
-<p class="p6">Put <b>value</b> at every index starting at <b>first</b>, then every step of the distance between <b>first</b> and <b>second</b>, up until <b>last</b>.</p>
-<p class="p6">x.putSeries(a, b, c, val) can also be written as <b>x[a, b..c] = val</b></p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4, 5, 6];</p>
-<p class="p8">y = z.putSeries(0, 2, 5, <span class="s5">"foo"</span>);</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>++ aCollection</b></p>
-<p class="p6">Concatenate the contents of the two collections into a new ArrayedCollection.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4];</p>
-<p class="p8">y = z ++ [7, 8, 9];</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>reverse</b></p>
-<p class="p6">Return a new ArrayedCollection whose elements are reversed.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [1, 2, 3, 4];</p>
-<p class="p8">y = z.reverse;</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>do(function)</b></p>
-<p class="p6">Iterate over the elements in order, calling the function for each element. The function is passed two arguments, the element and an index.</p>
-<p class="p7"><br></p>
-<p class="p8">[<span class="s3">'a'</span>, <span class="s3">'b'</span>, <span class="s3">'c'</span>].do({ <span class="s2">arg</span> item, i; [i, item].postln; });</p>
-<p class="p9"><br></p>
-<p class="p4"><b>reverseDo(function)</b></p>
-<p class="p6">Iterate over the elements in reverse order, calling the function for each element. The function is passed two arguments, the element and an index.</p>
-<p class="p7"><br></p>
-<p class="p8">[<span class="s3">'a'</span>, <span class="s3">'b'</span>, <span class="s3">'c'</span>].reverseDo({ <span class="s2">arg</span> item, i; [i, item].postln; });</p>
-<p class="p9"><br></p>
-<p class="p4"><b>collect(function)</b></p>
-<p class="p6">Answer a new collection which consists of the results of function evaluated for each item in the collection. The function is passed two arguments, the item and an integer index. See <a href="Collection.html"><span class="s2">Collection</span></a> helpfile for examples.</p>
-<p class="p7"><br></p>
-<p class="p4"><b>deepCollect(depth, function)</b></p>
-<p class="p6">The same as <b>collect</b>, but can look inside sub-arrays up to the specified <b>depth</b>.</p>
-<p class="p7"><br></p>
-<p class="p8">a = [99, [4,6,5], [[32]]];</p>
-<p class="p8">a.deepCollect(1, {<span class="s2">|item|</span> item.isArray}).postln;</p>
-<p class="p8">a.deepCollect(2, {<span class="s2">|item|</span> item.isArray}).postln;</p>
-<p class="p8">a.deepCollect(3, {<span class="s2">|item|</span> item.isArray}).postln;</p>
-<p class="p7"><br></p>
-<p class="p4"><b>windex</b></p>
-<p class="p6">Interprets the array as a list of probabilities which should sum to 1.0 and returns a random index value based on those probabilities.</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">Array</span>.fill(10, {</p>
-<p class="p8"><span class="Apple-tab-span">	</span>[0.1, 0.6, 0.3].windex;</p>
-<p class="p8">}).postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>normalizeSum</b></p>
-<p class="p6">Returns the Array resulting from :<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p8">(<span class="s2">this</span> / <span class="s2">this</span>.sum)</p>
-<p class="p9"><br></p>
-<p class="p6">so that the array will sum to 1.0.</p>
-<p class="p7"><br></p>
-<p class="p6">This is useful for using with windex or wchoose.</p>
-<p class="p9"><br></p>
-<p class="p8">[1, 2, 3].normalizeSum.postln;</p>
-<p class="p9"><br></p>
-<p class="p4"><b>normalize(min, max)</b></p>
-<p class="p6">Returns a new Array with the receiver items normalized between <b>min</b> and <b>max</b>.</p>
-<p class="p9"><br></p>
-<p class="p8">[1, 2, 3].normalize;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">//default min=0, max= 1</span></p>
-<p class="p8">[1, 2, 3].normalize(-20, 10);</p>
-<p class="p9"><br></p>
-<p class="p4"><b>perfectShuffle</b></p>
-<p class="p6">Returns a copy of the receiver with its items split into two equal halves, then reconstructed by interleaving the two halves. Note: use an even number of item pairs in order to not loose any items in the shuffle.</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> y, z;</p>
-<p class="p8">z = [ 1, 2, 3, 4, 5, 6 ];</p>
-<p class="p8">y = z.perfectShuffle;</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p4"><b>performInPlace(selector, from, to, argList)</b></p>
-<p class="p6">performs a method in place, within a certain region [from..to], returning the same array.</p>
-<p class="p7"><br></p>
-<p class="p8">a = (0..10);</p>
-<p class="p8">a.performInPlace(<span class="s3">\normalizeSum</span>, 3, 6);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p4"><b>rank</b></p>
-<p class="p6">Rank is the number of dimensions in a multidimensional array.</p>
-<p class="p7"><br></p>
-<p class="p8">a = [4,7,6,8];</p>
-<p class="p8">a.rank;</p>
-<p class="p8">a = [[4,7],[6,8]];</p>
-<p class="p8">a.rank;</p>
-<p class="p10"><br></p>
-<p class="p4"><b>shape</b></p>
-<p class="p6">For a multidimensional array, returns the number of elements along each dimension.</p>
-<p class="p7"><br></p>
-<p class="p8">a = [4,7,6,8];</p>
-<p class="p8">a.shape;</p>
-<p class="p8">a = [[4,7],[6,8]];</p>
-<p class="p8">a.shape;</p>
-<p class="p10"><br></p>
-<p class="p4"><b>reshape( ... shape)</b></p>
-<p class="p6">For a multidimensional array, rearranges the data using the desired number of elements along each dimension. The data may be extended using wrapExtend if needed.</p>
-<p class="p7"><br></p>
-<p class="p8">a = [4,7,6,8];</p>
-<p class="p8">a.reshape(2,2);</p>
-<p class="p8">a.reshape(2,3);</p>
-<p class="p10"><br></p>
-<p class="p4"><b>find(anotherArray)</b></p>
-<p class="p6">finds the starting index of a number of elements contained in the array.</p>
-<p class="p7"><br></p>
-<p class="p8">a = (0..10);</p>
-<p class="p8">a.find([4, 5, 6]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p4"><b>replace(anotherArray)</b></p>
-<p class="p6">return a new array in which a number of elements have been replaced by another<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p8">a = (0..10) ++ (0..10);</p>
-<p class="p8">a.replace([4, 5, 6], 100);<span class="Apple-converted-space"> </span></p>
-<p class="p8">a.replace([4, 5, 6], [1734, 1985, 1860]);</p>
-<p class="p10"><br></p>
-<p class="p6">this method is inherited by <a href="String.html"><span class="s2">String</span></a>:</p>
-<p class="p10"><br></p>
-<p class="p14"><span class="s1">a = </span>"hello world"<span class="s1">;</span></p>
-<p class="p8">a.replace(<span class="s5">"world"</span>, <span class="s5">"word"</span>);</p>
-<p class="p10"><br></p>
-<p class="p4"><b>asRandomTable</b></p>
-<p class="p6">return an integral table that can be used to generate random numbers with a specified distribution.</p>
-<p class="p6">(see<span class="s6"> [Randomness] </span>helpfile for a more detailed example)</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">a = (0..100) ++ (100..50) / 100; <span class="s4">// distribution</span></p>
-<p class="p8">a = a.asRandomTable;</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p4"><b>tableRand</b></p>
-<p class="p6">returns a new random number from a random table.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">a = (0..100) ++ (100..50) / 100; <span class="s4">// distribution</span></p>
-<p class="p8">a = a.asRandomTable;</p>
-<p class="p8">20.do { a.tableRand.postln };</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p4"><b>msgSize</b></p>
-<p class="p6">return the size of an osc message in bytes</p>
-<p class="p7"><br></p>
-<p class="p14"><span class="s1">a = [</span>"/s_new"<span class="s1">, </span>"default"<span class="s1">, -1, </span>"freq"<span class="s1">, 440];</span></p>
-<p class="p8">a.msgSize;</p>
-<p class="p7"><br></p>
-<p class="p4"><b>bundleSize</b></p>
-<p class="p6">return the size of an osc bundle in bytes</p>
-<p class="p7"><br></p>
-<p class="p14"><span class="s1">a = [[</span>"/s_new"<span class="s1">, </span>"default"<span class="s1">, -1, </span>"freq"<span class="s1">, 440], [</span>"/s_new"<span class="s1">, </span>"default"<span class="s1">, -1, </span>"freq"<span class="s1">, 220]];</span></p>
-<p class="p8">a.bundleSize;</p>
-<p class="p7"><br></p>
-<p class="p4"><b>asciiPlot</b></p>
-<p class="p6">For an ArrayedCollection containing numbers (e.g. audio data) this renders a plot in the post window using asterisks and spaces (works best if you use a monospace font in your post window).</p>
-<p class="p7"><br></p>
-<p class="p8">a = (0, pi/10 .. 5pi).collect{|val| val.sin}</p>
-<p class="p8">a.asciiPlot;</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Association.html b/Help/Collections/Association.html
deleted file mode 100644
index 58c92d5..0000000
--- a/Help/Collections/Association.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #0000ff}
-span.s4 {color: #007300}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Association<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>relate two objects<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../Math/Magnitude.html"><span class="s3"><b>Magnitude</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Associates a key with a value.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Associations can be created via the -> operator which is defined in class <a href="../Core/Object.html"><span class="s3">Object</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">Associations are used internally in <a href="Dictionary.html"><span class="s3">Dictionary</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">x = <span class="s4">'name'</span> -> 100;</p>
-<p class="p3">x.postln;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Accessing</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b><>key</b></p>
-<p class="p2"><br></p>
-<p class="p1">the key object.</p>
-<p class="p2"><br></p>
-<p class="p1"><b><>value</b></p>
-<p class="p2"><br></p>
-<p class="p1">the value object.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(key, value)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Create an Association between two objects.</p>
-<p class="p1"><b>key</b> - any object.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>value</b> - any object.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Testing</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>== anAssociation</b></p>
-<p class="p2"><br></p>
-<p class="p1">Compare the keys of two Associations.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>< anAssociation</b></p>
-<p class="p2"><br></p>
-<p class="p1">Compare the keys of two Associations.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>hash</b></p>
-<p class="p2"><br></p>
-<p class="p1">Compute the hash value of the Association.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Writing to streams</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>printOn(stream)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Write a string representation to the stream.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>storeOn(stream)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Write a compileable string representation to the stream.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Examples</b></p>
-<p class="p6"><br></p>
-<p class="p7">// associations can be a good way to store named data in order:</p>
-<p class="p3">(</p>
-<p class="p3">a = [<span class="s4">\x</span> -> 700, <span class="s4">\y</span> -> 200, <span class="s4">\z</span> -> 900];</p>
-<p class="p8"><br></p>
-<p class="p3">fork {</p>
-<p class="p3"><span class="Apple-tab-span">	</span>a.do { <span class="s5">|assoc|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>assoc.key.postln;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>assoc.value.postln;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq: assoc.value).play;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}</p>
-<p class="p3">};</p>
-<p class="p3">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Bag.html b/Help/Collections/Bag.html
deleted file mode 100644
index 3dc0cb6..0000000
--- a/Help/Collections/Bag.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #606060}
-span.s5 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Bag<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>counted set</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="Collection.html"><b>Collection</b></a></p>
-<p class="p2"><br></p>
-<p class="p1">A Bag is an unordered collection of objects.<span class="Apple-converted-space">  </span>In some languages it is referred to as a counted set.<span class="Apple-converted-space">  </span>A Bag keeps track of the number of times objects are inserted and requires that objects be removed the same number of times.<span class="Apple-converted-space">  </span>There is only one instance of an object in a Bag even if the object has been added to the Bag multiple times (test is for <b>equality</b>)</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p1">Most of Bag's methods are inherited from Collection.</p>
-<p class="p1">The contents of a Bag are unordered. You must not depend on the order of items in a set.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">See also: <a href="IdentityBag.html">IdentityBag</a>, <a href="Set.html">Set</a></span></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Adding and Removing:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>add(anObject)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Add anObject to the Bag. A Bag may contain multiple entries of the same object.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">Bag</span>[1, 2, 3].add(4).postln;</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="s3">Bag</span>[1, 2, 3].add(3).postln;</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="s3">Bag</span>[<span class="s4">"abc"</span>, <span class="s4">"def"</span>, <span class="s4">"ghi"</span>].add(<span class="s4">"jkl"</span>).postln;</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s3">Bag</span><span class="s2">[</span>"abc"<span class="s2">, </span>"def"<span class="s2">, </span>"ghi"<span class="s2">].add(</span>"def"<span class="s2">).postln;</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>remove(anObject)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Remove anObject from the Bag.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">Bag</span>[1, 2, 3].remove(3).postln;</p>
-<p class="p7"><br></p>
-<p class="p1"><b>contents</b></p>
-<p class="p7"><br></p>
-<p class="p1">Returns the dictionary that stores the objects in pairs (obj -> numberOfObjects)</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">Bag</span>[<span class="s4">"a"</span>, <span class="s4">"b"</span>, <span class="s4">"c"</span>, <span class="s4">"c"</span>].contents;</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p6"><b>Iteration:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Evaluates function for each item in the Bag.</p>
-<p class="p1">The function is passed two arguments, the item and an integer index.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">Bag</span>[1, 2, 3, 300].do({ <span class="s3">arg</span> item, i; item.postln });</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">Bag</span>[1, 2, 2, 3, 300].do({ <span class="s3">arg</span> item, i; item.postln });</p>
-<p class="p2"><br></p>
-<p class="p1"><b>countsDo(function)</b></p>
-<p class="p1">args to function: item, count, i</p>
-<p class="p2"><br></p>
-<p class="p1">Evaluates function for each unique item in the Bag along with that item's count.</p>
-<p class="p1">The function is passed two arguments, the item, the quantity of that item in the Bag and an integer index.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">Bag</span>[1, 2, 3, 300].countsDo({ <span class="s3">arg</span> item, count, i; [item,count].postln });</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">Bag</span>[1, 2, 2, 3, 300].countsDo({ <span class="s3">arg</span> item, count, i; [item,count].postln });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Difference between Bag and IdentityBag:</b></p>
-<p class="p7"><br></p>
-<p class="p12">// the two strings are equal, but not identical</p>
-<p class="p10">"something"<span class="s2"> == </span>"something"<span class="s2">; </span><span class="s5">// true</span></p>
-<p class="p10">"something"<span class="s2"> === </span>"something"<span class="s2"> </span><span class="s5">// false</span></p>
-<p class="p9"><br></p>
-<p class="p8">a = <span class="s3">Bag</span>.new;</p>
-<p class="p10"><span class="s2">a.add(</span>"something"<span class="s2">);</span></p>
-<p class="p10"><span class="s2">a.add(</span>"something"<span class="s2">);</span></p>
-<p class="p12"><span class="s2">a.contents; </span>// only one object in the bag really</p>
-<p class="p9"><br></p>
-<p class="p13"><span class="s2">a = </span>IdentityBag<span class="s2">.new;</span></p>
-<p class="p10"><span class="s2">a.add(</span>"something"<span class="s2">);</span></p>
-<p class="p10"><span class="s2">a.add(</span>"something"<span class="s2">);</span></p>
-<p class="p12"><span class="s2">a.contents; </span>// two objects in the bag</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Collection.html b/Help/Collections/Collection.html
deleted file mode 100644
index 4e5fe7b..0000000
--- a/Help/Collections/Collection.html
+++ /dev/null
@@ -1,401 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; font: 9.0px Monaco; color: #2c7014}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; font: 9.0px Monaco; color: #ad140d}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; font: 9.0px Monaco; color: #000000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0021e7}
-span.s3 {color: #001bb9}
-span.s4 {color: #000000}
-span.s5 {color: #0000bf}
-span.s6 {color: #2c7014}
-span.s7 {color: #007300}
-span.s8 {color: #0000ff}
-span.s9 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Collection<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>group of objects</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Collections are groups of objects. See the <a href="Collections.html"><span class="s3">Collections</span></a> overview for a complete listing of all subclasses.</p>
-<p class="p2"><br></p>
-<p class="p1">Collection is an abstract class. You do not create direct instances of Collection.<span class="Apple-converted-space"> </span></p>
-<p class="p1">There are many types of Collections including <a href="List.html"><span class="s3">List</span></a>, <a href="Array.html"><span class="s3">Array</span></a>, <a href="Dictionary.html"><span class="s3">Dictionary</span></a>, <a href="Bag.html"><span class="s3">Bag</span></a>, <a href="Set.html"><span class="s3">Set</span></a>, <a href="SortedList.html"><span class="s3">SortedList</span></a>, etc.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Class Methods:</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*newFrom(collection)</b></p>
-<p class="p5">Creates a new Collection from another collection. This supports the interface for the mathod "as"</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Array</span>.newFrom(<span class="s3">Set</span>[4, 2, 1]);</p>
-<p class="p7"><span class="s3">Set</span>.newFrom(<span class="s3">Array</span>[4, 2, 1]);</p>
-<p class="p8"><span class="s4">[1, 2, 3, 4, 3, 2].as(</span><span class="s5">Set</span><span class="s4">); </span>// as(someClass) calls someClass.newFrom(this)</p>
-<p class="p9"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*with(collection)</b></p>
-<p class="p5">Creates a new Collection from the args.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Array</span>.with(4, 2, 1);</p>
-<p class="p3"><br></p>
-<p class="p1"><b>*fill(size, function)</b></p>
-<p class="p5">Creates a Collection of the given size, the elements of which are determined by evaluation the given function. The function is passed the index as an argument.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Array</span>.fill(4, { <span class="s3">arg</span> i; i * 2 });</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Accessing:</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>size</b></p>
-<p class="p5">Answers the number of objects contained in the Collection.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].size;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isEmpty</b></p>
-<p class="p5">Answer whether the receiver contains no objects.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[].isEmpty;</p>
-<p class="p11"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Adding and Removing:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>add(anObject)</b></p>
-<p class="p5">Add anObject to the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2].add(3);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>addAll(aCollection)</b></p>
-<p class="p5">Add all items in aCollection to the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2].addAll(<span class="s3">List</span>[3, 4]);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>remove(anObject)</b></p>
-<p class="p5">Remove anObject from the receiver. Answers the removed object.</p>
-<p class="p10"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> a;</p>
-<p class="p7">a = <span class="s3">List</span>[1, 2, 3, 4];</p>
-<p class="p7">a.remove(3);</p>
-<p class="p7">a;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>removeAll(aCollection)</b></p>
-<p class="p5">Remove all items in aCollection from the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].removeAll(<span class="s3">List</span>[2, 3]);</p>
-<p class="p10"><br></p>
-<p class="p5">Note that multiple items in the receiver will not necessarily be removed:</p>
-<p class="p10"><br></p>
-<p class="p12"><span class="s4">~closet = [</span>\hat<span class="s4">, </span>\hat<span class="s4">, </span>\hat<span class="s4">, </span>\coat<span class="s4">, </span>\coat<span class="s4">, </span>\shoe<span class="s4">, </span>\shoe<span class="s4">];</span></p>
-<p class="p13"><span class="s4">~closet.removeAll([</span><span class="s6">\hat</span><span class="s4">, </span><span class="s6">\coat</span><span class="s4">, </span><span class="s6">\shoe</span><span class="s4">, </span><span class="s6">\shoe</span><span class="s4">]); </span>// Doesn't empty the closet, just removes what we wanted to</p>
-<p class="p10"><br></p>
-<p class="p5">See removeEvery (below) for a related method that removes <i>all</i> occurrences.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>removeEvery(aCollection)</b></p>
-<p class="p5">Remove <b><i>all occurrences</i></b> of the items in aCollection from the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 2, 3, 2, 3, 4].removeEvery(<span class="s3">List</span>[2, 3]);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>removeAllSuchThat(function)</b></p>
-<p class="p5">Remove all items in the receiver for which function answers true. The function is passed two arguments, the item and an integer index. Answers the objects which have been removed.</p>
-<p class="p10"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> a;</p>
-<p class="p7">a = <span class="s3">List</span>[1, 2, 3, 4];</p>
-<p class="p7">a.removeAllSuchThat({ <span class="s3">arg</span> item, i; item < 3 });</p>
-<p class="p7">a;</p>
-<p class="p7">)</p>
-<p class="p1"><b>putEach(keys, values)</b></p>
-<p class="p5">Put the <b>values</b> in the corresponding indices given by <b>keys</b>. If one of the two argument arrays is longer then it will wrap.</p>
-<p class="p10"><br></p>
-<p class="p7">y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];</p>
-<p class="p7">y.putEach([4, 7], [<span class="s6">\smelly</span>, <span class="s6">\head</span>])</p>
-<p class="p7">y.putEach([2, 3, 5, 6], <span class="s6">\wotsits</span>);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>atAll(keys)</b></p>
-<p class="p5">return a collection of all the items for the keys.</p>
-<p class="p10"><br></p>
-<p class="p14">y = [<span class="s7">\a</span>, <span class="s7">\b</span>, <span class="s7">\c</span>];</p>
-<p class="p7">y.atAll([0, 2])</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Testing:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>includes(anObject)</b></p>
-<p class="p5">Answer whether anObject is contained in the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].includes(3);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>includesAny(aCollection)</b></p>
-<p class="p5">Answer whether any item in aCollection is contained in the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].includesAny(<span class="s3">List</span>[4, 5]);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>includesAll(aCollection)</b></p>
-<p class="p5">Answer whether all items in aCollection are contained in the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].includesAll(<span class="s3">List</span>[4, 5]);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>matchItem(item)<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns true if <b>this</b> inclueds the item.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>See also: <a href="../interfaces/matchItem.html"><span class="s8">matchItem</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Iteration:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p5">Evaluates function for each item in the collection. The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].do({ <span class="s3">arg</span> item, i; item.postln });</p>
-<p class="p2"><br></p>
-<p class="p1"><b>collect(function)</b></p>
-<p class="p5">Answer a new collection which consists of the results of function evaluated for each item in the collection. The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].collect({ <span class="s3">arg</span> item, i; item + 10 });</p>
-<p class="p10"><br></p>
-<p class="p5">If you want to control what type of collection is returned, use <b>collectAs(function, class)</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>select(function)</b></p>
-<p class="p5">Answer a new collection which consists of all items in the receiver for which function answers true. The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].select({ <span class="s3">arg</span> item, i; item.even });</p>
-<p class="p10"><br></p>
-<p class="p5">If you want to control what type of collection is returned, use <b>selectAs(function, class)</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>reject(function)</b></p>
-<p class="p5">Answer a new collection which consists of all items in the receiver for which function answers false. The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].reject({ <span class="s3">arg</span> item, i; item.even });</p>
-<p class="p10"><br></p>
-<p class="p5">If you want to control what type of collection is returned, use <b>rejectAs(function, class)</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>detect(function)</b></p>
-<p class="p5">Answer the first item in the receiver for which function answers true.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].detect({ <span class="s3">arg</span> item, i; item.even });</p>
-<p class="p10"><br></p>
-<p class="p1"><b>detectIndex(function)</b></p>
-<p class="p5">Similar to detect but returns the index instead of the item itself.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].detectIndex({ <span class="s3">arg</span> item, i; item.even });</p>
-<p class="p2"><br></p>
-<p class="p1"><b>inject(initialValue, function)</b></p>
-<p class="p5">In functional programming, the operation known as a fold.</p>
-<p class="p5">inject takes an initial value and a function and combines the elements of the collection by applying the function to the accumulated value and an element from the collection. The function takes two arguments and returns the new value. The accumulated value is initialzed to initialValue.</p>
-<p class="p10"><br></p>
-<p class="p7">[1,2,3,4,5].inject(0, <span class="s3">_</span>+<span class="s3">_</span>); <span class="s9">// 15</span></p>
-<p class="p9"><br></p>
-<p class="p7">[1,2,3,4,5].inject(1, <span class="s3">_</span>*<span class="s3">_</span>); <span class="s9">// 120</span></p>
-<p class="p9"><br></p>
-<p class="p13">// same as .collect(_.squared)</p>
-<p class="p7">[1,2,3,4,5].inject([], {<span class="s3">|a,b|</span> a ++ b.squared }); <span class="s9">// [ 1, 4, 9, 16, 25 ]</span></p>
-<p class="p7">[1,2,3,4,5].inject([], {<span class="s3">|a,b|</span> [b] ++ a ++ [b]}); <span class="s9">// [ 5, 4, 3, 2, 1, 1, 2, 3, 4, 5 ]</span></p>
-<p class="p7">[1,2,3,4,5].inject([], {<span class="s3">|a,b|</span> a ++ b ++ a});</p>
-<p class="p7">[1,2,3,4,5].inject([], {<span class="s3">|a,b|</span> a ++ a ++ b});</p>
-<p class="p15"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>any(function)</b></p>
-<p class="p5">Answer whether function answers true for any item in the receiver.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].any({ <span class="s3">arg</span> item, i; item.even });</p>
-<p class="p2"><br></p>
-<p class="p1"><b>every(function)</b></p>
-<p class="p5">Answer whether function answers true for every item in the receiver.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].every({ <span class="s3">arg</span> item, i; item.even });</p>
-<p class="p2"><br></p>
-<p class="p1"><b>count(function)</b></p>
-<p class="p5">Answer the number of items for which function answers true.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].count({ <span class="s3">arg</span> item, i; item.even });</p>
-<p class="p2"><br></p>
-<p class="p1"><b>occurrencesOf(anObject)</b></p>
-<p class="p5">Answer the number of items in the receiver which are equal to anObject.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 3, 4, 3, 4, 3].occurrencesOf(3);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sum(function)</b></p>
-<p class="p5">Answer the sum of the results of function evaluated for each item in the receiver.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].sum;</p>
-<p class="p9"><br></p>
-<p class="p7">(0..8).sum { <span class="s3">|i|</span> 1 / (2 ** i) };</p>
-<p class="p2"><br></p>
-<p class="p1"><b>maxItem(function)</b></p>
-<p class="p5">Answer the maximum of the results of function evaluated for each item in the receiver.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p5">If function is nil, then answer the maximum of all items in the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].maxItem({ <span class="s3">arg</span> item, i; item + 10 });</p>
-<p class="p2"><br></p>
-<p class="p1"><b>minItem(function)</b></p>
-<p class="p5">Answer the minimum of the results of function evaluated for each item in the receiver.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p5">If function is nil, then answer the minimum of all items in the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].minItem({ <span class="s3">arg</span> item, i; item + 10 });</p>
-<p class="p2"><br></p>
-<p class="p1"><b>maxIndex(function)</b></p>
-<p class="p5">Answer the index of the maximum of the results of function evaluated for each item in the receiver.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p5">If function is nil, then answer the maximum of all items in the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].maxIndex({ <span class="s3">arg</span> item, i; item + 10 });</p>
-<p class="p7">[3.2, 12.2, 13, 0.4].maxIndex</p>
-<p class="p2"><br></p>
-<p class="p1"><b>minIndex(function)</b></p>
-<p class="p5">Answer the index of the minimum of the results of function evaluated for each item in the receiver.</p>
-<p class="p5">The function is passed two arguments, the item and an integer index.</p>
-<p class="p5">If function is nil, then answer the minimum of all items in the receiver.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].minIndex({ <span class="s3">arg</span> item, i; item + 10 });</p>
-<p class="p7"><span class="s3">List</span>[3.2, 12.2, 13, 0.4].minIndex</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>iter</b></p>
-<p class="p5">returns a <a href="../Core/Kernel/Routine.html"><span class="s3">Routine</span></a> that returns the elements one by one.</p>
-<p class="p10"><br></p>
-<p class="p7">r = <span class="s3">Set</span>[10, 2, -3, -4].iter;</p>
-<p class="p7">r.next;</p>
-<p class="p7">r.next;</p>
-<p class="p7">r.next;</p>
-<p class="p7">r.next; <span class="s9">// nil.</span></p>
-<p class="p15"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Conversion:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>asBag</b></p>
-<p class="p5">Answer a Bag to which all items in the receiver have been added.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].asBag;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asList</b></p>
-<p class="p5">Answer a List to which all items in the receiver have been added.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">Set</span>[1, 2, 3, 4].asList;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asSet</b></p>
-<p class="p5">Answer a Set to which all items in the receiver have been added.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[1, 2, 3, 4].asSet;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asSortedList</b></p>
-<p class="p5">Answer a SortedList to which all items in the receiver have been added.</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3">List</span>[2, 1, 4, 3].asSortedList;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>powerset</b></p>
-<p class="p5">Returns all possible combinations of the collection's elements.</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s3">Set</span>[1, 2, 3].powerset;</p>
-<p class="p9"><br></p>
-<p class="p13">// generate the von neumann ordinals. (warning: only count to four at maximum!)</p>
-<p class="p7">a = <span class="s3">Set</span>[];</p>
-<p class="p7">a = a.powerset;</p>
-<p class="p7">a = a.powerset;</p>
-<p class="p7">a = a.powerset;</p>
-<p class="p9"><br></p>
-<p class="p13"><span class="s4">u = { </span><span class="s3">|set|</span><span class="s4"> set.unify }; </span>// union (count down)</p>
-<p class="p7">n = { <span class="s3">|set|</span> set.powerset }; <span class="s9">// powerset (count up)</span></p>
-<p class="p13"><span class="s4">a = </span><span class="s3">Set</span><span class="s4">[]; </span>// empty set (zero)</p>
-<p class="p7">n.(n.(a)); <span class="s9">// two</span></p>
-<p class="p7">u.(n.(n.(a))) == n.(a); <span class="s9">// two - one == one</span></p>
-<p class="p7">u.(u.(n.(n.(a)))) == u.(n.(a)); <span class="s9">// two - two == one - one<span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>flopDict(unbubble)</b></p>
-<p class="p5">Takes a collection of dictionaries and returns a single dictionary with arrays of all dictionaries' elements.</p>
-<p class="p5">If unbubble is true (default), and if one element is singular, the array is replaced by this element.</p>
-<p class="p9"><br></p>
-<p class="p7">[(degree: 7, x: 4), (degree: 8, x: 5), (degree: -2, dur: 2.5)].flopDict;</p>
-<p class="p7">[(degree: 7, x: 4), (degree: 8, x: 5), (degree: -2, dur: 2.5)].flopDict(<span class="s3">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>histo(steps, min, max)</b></p>
-<p class="p5">Returns a histogram of the collection by counting the number of values that fall into each slot of <b>size (default: 100)</b> subdivisions between <b>min</b> and <b>max</b>. If there are any values outside this range, it posts a note. If min or max is not given, the smallest (or largest value respectively) is used.</p>
-<p class="p9"><br></p>
-<p class="p7">{ 1.0.linrand }.dup(10000).histo(1000).plot;</p>
-<p class="p7">{ 8.rand }.dup(10000).histo(8).plot(discrete: <span class="s3">true</span>);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>printOn(stream)</b></p>
-<p class="p5">Print a representation of the collection to a stream.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>storeOn(stream)</b></p>
-<p class="p5">Write a compileable representation of the collection to a stream.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>printItemsOn(stream)</b></p>
-<p class="p5">Print a comma separated compileable representation of the items in the collection to a stream.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>storeItemsOn(stream)</b></p>
-<p class="p5">Write a comma separated compileable representation of the items in the collection to a stream.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p16"><b>Set specific operations:</b></p>
-<p class="p17"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>sect(that)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the set theoretical intersection of <b>this</b> and <b>that</b></p>
-<p class="p15"><br></p>
-<p class="p18">a = [1, 2, 3]; b = [2, 3, 4, 5];</p>
-<p class="p18">sect(a, b);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>union(that)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the set theoretical union of <b>this</b> and <b>that</b></p>
-<p class="p15"><br></p>
-<p class="p18">a = [1, 2, 3]; b = [2, 3, 4, 5];</p>
-<p class="p18">union(a, b);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>difference(that)<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>return the set of all items which are elements of <b>this</b>, but not of <b>that</b></p>
-<p class="p15"><br></p>
-<p class="p18">a = [1, 2, 3]; b = [2, 3, 4, 5];</p>
-<p class="p18">difference(a, b);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>symmetricDifference(that)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the set of all items which are not elements of both<span class="Apple-converted-space">  </span><b>this</b> and <b>that</b></p>
-<p class="p1"><b>this -- that</b></p>
-<p class="p15"><br></p>
-<p class="p18">a = [1, 2, 3]; b = [2, 3, 4, 5];</p>
-<p class="p18">symmetricDifference(a, b);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isSubsetOf(that)</b><span class="Apple-tab-span">	</span>returns true if all elements of <b>this</b> are also elements of <b>that</b><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p18">a = <span class="s3">Set</span>[1, 2, 3, 4];</p>
-<p class="p18"><span class="s3">Set</span>[1, 2].isSubsetOf(a); <span class="s9">// true</span></p>
-<p class="p18"><span class="s3">Set</span>[1, 5].isSubsetOf(a); <span class="s9">// false</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Collections.html b/Help/Collections/Collections.html
deleted file mode 100644
index 0b29c44..0000000
--- a/Help/Collections/Collections.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0021e7}
-span.s2 {color: #0000ff}
-ul.ul1 {list-style-type: disc}
-ul.ul2 {list-style-type: circle}
-ul.ul3 {list-style-type: square}
-</style>
-</head>
-<body>
-<p class="p1"><b>Collections</b></p>
-<p class="p2"><br></p>
-<p class="p3">SuperCollider has a rich hierarchy of Collection subclasses, detailed below. Subclasses of a given class are indented (sub-lists) relative to the class. Most of these subclasses have their own helpfiles. Classes labelled "abstract" are not for direct use, but classes lower down the tree may inherit methods from them. For this reason it is important to consult the helpfiles of classes farther up the tree in order to get a complete list of available methods.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><a href="Collection.html"><b>Collection</b></a></span> - abstract superclass of all Collection subclasses; many methods are inherited from this class</p>
-<ul class="ul1">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="SequenceableCollection.html"><span class="s1"><b>SequenceableCollection</b></span></a> - abstract superclass of collections whose objects can be indexed by integer</li>
-<ul class="ul2">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="ArrayedCollection.html"><span class="s1"><b>ArrayedCollection</b></span></a> - abstract superclass of Collections of fixed maximum size whose elements are held in a vector of slots</li>
-<ul class="ul3">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Array.html"><span class="s1"><b>Array</b></span></a> - an ArrayedCollection whose slots may contain any object; more efficient than List</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="RawArray.html"><span class="s1"><b>RawArray</b></span></a> - abstract superclass of array classes that hold raw data values</li>
-<ul class="ul3">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="FloatArray.html"><span class="s1"><b>FloatArray</b></span></a> - a RawArray of floats</li>
-<ul class="ul3">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Wavetable.html"><span class="s1"><b>Wavetable</b></span></a> - a special format FloatArray</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Signal.html"><span class="s1"><b>Signal</b></span></a> - a FloatArray that represents a sampled function of time buffer</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="DoubleArray.html"><span class="s1"><b>DoubleArray</b></span></a> - a RawArray of double precision floats</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="String.html"><span class="s1"><b>String</b></span></a> - an array of characters</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="SymbolArray.html"><span class="s1"><b>SymbolArray</b></span></a> - a RawArray of symbols</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Int32Array.html"><span class="s1"><b>Int32Array</b></span></a> - a RawArray of 32 bit Integers</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Int16Array.html"><span class="s1"><b>Int16Array</b></span></a> - a RawArray of 16 bit Integers</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Int8Array.html"><span class="s1"><b>Int8Array</b></span></a> - a RawArray of 8 bit Integers</li>
-</ul>
-</ul>
-</ul>
-</ul>
-<ul class="ul2">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Order.html"><span class="s1"><b>Order</b></span></a> - order of elements with a numerical index</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="SparseArray.html"><span class="s2"><b>SparseArray</b></span></a> - array of elements optimized for huge gaps between them</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="LinkedList.html"><span class="s1"><b>LinkedList</b></span></a> - a doubly linked list</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="List.html"><span class="s1"><b>List</b></span></a> - an expandable SequenceableCollection (compare to ArrayedCollection and Array)</li>
-<ul class="ul3">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="SortedList.html"><span class="s1"><b>SortedList</b></span></a><b> - </b>a List whose items are kept in a sorted order</li>
-</ul>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Set.html"><span class="s1"><b>Set</b></span></a> - an unordered collection of unequal objects</li>
-<ul class="ul2">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Dictionary.html"><span class="s1"><b>Dictionary</b></span></a> - an unordered associative collection mapping keys to values</li>
-<ul class="ul3">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="IdentityDictionary.html"><span class="s1"><b>IdentityDictionary</b></span></a> - a Dictionary wherein keys match only if identical (rather than if simply equal)</li>
-<ul class="ul3">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Environment.html"><span class="s1"><b>Environment</b></span></a> - an IdentityDictionary, one of which is always current; useful for creating sets of persistent variables</li>
-<ul class="ul3">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Event.html"><span class="s1"><b>Event</b></span></a> - a Dictionary mapping names of musical parameters to their values</li>
-</ul>
-</ul>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="IdentitySet.html"><span class="s1"><b>IdentitySet</b></span></a> - an unordered collection of unidentical objects (compare to Set)</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Array2D.html"><span class="s1"><b>Array2D</b></span></a> - a two dimensional array</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <b>Range</b> - ranges of values</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Interval.html"><span class="s1"><b>Interval</b></span></a> - ranges of Integers with a fixed Interval between them</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="MultiLevelIdentityDictionary.html"><span class="s1"><b>MultiLevelIdentityDictionary</b></span></a> - a tree of IdentityDictionaries</li>
-<ul class="ul2">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Library.html"><span class="s1"><b>Library</b></span></a> - a unique global MultiLevelIdentityDictionary</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Bag.html"><span class="s1"><b>Bag</b></span></a> - an unordered collection of objects</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="Pair.html"><span class="s2"><b>Pair</b></span></a> - Lisp-like two element cells</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="TwoWayIdentityDictionary.html"><span class="s2"><b>TwoWayIdentityDictionary</b></span></a> - an IdentityDictionary which allows easy searching by both key and value; faster than IdentityDictionary on reverse lookup, but with more memory overhead</li>
-<ul class="ul2">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="ObjectTable.html"><span class="s1"><b>ObjectTable</b></span></a> - associates Integer ids with objects</li>
-</ul>
-</ul>
-</body>
-</html>
diff --git a/Help/Collections/Dictionary.html b/Help/Collections/Dictionary.html
deleted file mode 100644
index 8aaa58d..0000000
--- a/Help/Collections/Dictionary.html
+++ /dev/null
@@ -1,378 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-p.p20 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300; min-height: 12.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p22 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p23 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p24 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p25 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #bf0000}
-span.s6 {color: #007300}
-span.s7 {color: #737373}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {font: 9.0px Monaco}
-span.s10 {font: 9.0px Monaco; color: #007300}
-span.s11 {font: 12.0px Monaco}
-span.s12 {color: #1135f9}
-span.s13 {font: 14.0px Helvetica}
-span.s14 {font: 12.0px Helvetica; color: #000000}
-span.s15 {color: #102ac3}
-span.s16 {font: 9.0px Monaco; color: #000000}
-span.s17 {color: #1738f5}
-span.s18 {color: #008225}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dictionary</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>associative collection mapping keys to values</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Collection.html"><span class="s2"><b>Collection</b></span></a><b> : </b><a href="Set.html"><span class="s2"><b>Set</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">A Dictionary is an associative collection mapping keys to values.</p>
-<p class="p1">Two keys match if they are <b>equal</b>. (i.e. == returns true.)</p>
-<p class="p2"><br></p>
-<p class="p1">The contents of a Dictionary are <b>unordered</b>. You must not depend on the order of items in a Dictionary.</p>
-<p class="p1">You must only rely on equality for the keys (e.g. symbols are ok, strings not). For identity matching see: <a href="IdentityDictionary.html"><span class="s2">IdentityDictionary</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also</b>: <a href="Environment.html"><span class="s4">Envirownment</span></a>, <a href="Event.html"><span class="s4">Event</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>The Difference between Dictionary, IdentityDictionary, Environment, and Event</b></p>
-<p class="p2"><br></p>
-<p class="p1">Often, the subclass <a href="Event.html"><span class="s2">Event</span></a> is used as an IdentityDictionary, because there is a syntactical shortcut:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = (foo: 7); </span>// return a new Event.</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a.put(<span class="s6">\foo</span>, 2.718);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.at(<span class="s6">\foo</span>);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[</span><span class="s6">\foo</span><span class="s3">] = 3.5; </span>// different syntax for put</p>
-<p class="p2"><br></p>
-<p class="p1">Event, Environment and IdentityDictionary differ mainly insofar from Dictionary as the <b>keys</b> are taken to be identical (===) objects (see <a href="IdentityDictionary.html"><span class="s2">IdentityDictionary</span></a>), instead of equal (==) objects. By consequence, the subclasses are also faster for indexing. Apart from this, the subclasses add specific functionality only. Because of its very common usage, the examples often use the shortcut for the subclass Event.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3"><span class="Apple-tab-span">	</span></span>// preliminary identity and equality of strings and symbols</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"hello"<span class="s3"> == </span>"hello"<span class="s3"> </span><span class="s5">// true, but</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">"hello"</span><span class="s3"> === </span><span class="s7">"hello"</span><span class="s3"> </span>// false. However:</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\hello<span class="s3"> === </span>\hello<span class="s3"> </span><span class="s5">// true</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// compare</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Dictionary</span><span class="s3">[</span><span class="s7">"hello"</span><span class="s3"> -> 0, </span><span class="s7">"hello"</span><span class="s3"> -> 1]; </span>// Dictionary[ (hello -> 1) ]</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</span><span class="s7">"hello"</span><span class="s3">: 0, </span><span class="s7">"hello"</span><span class="s3">: 1); </span>// ( "hello": 1, "hello": 0 )</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// for symbols as keys, the behaviour is identical:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dictionary</span>[<span class="s6">\hello</span> -> 1, <span class="s6">\hello</span> -> 0];</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>( <span class="s6">\hello</span>: 1, <span class="s6">\hello</span>: 0 )</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p13"><b>Creation / Class Methods</b></p>
-<p class="p12"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>*new(n)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a Dictionary with an initial capacity for n key value mappings.</p>
-<p class="p12"><br></p>
-<p class="p14"><br></p>
-<p class="p13"><b>Adding and Removing</b><span class="s8"><span class="Apple-tab-span">	</span></span></p>
-<p class="p15"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>add(anAssociation)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Add anAssociation to the Dictionary.<span class="Apple-converted-space">  </span>If the key value pair already exists in the Dictionary, the key's value will be replaced.</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s2">Dictionary</span>.new;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.add(<span class="s6">\monkey</span> -> 0).postln;</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Add robot as a key with a value of 1</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.add(<span class="s6">\robot</span> -> 1).postln;</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Replaces the value for the key monkey with 2</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.add(<span class="s6">\monkey</span> -> 2).postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>put(key, obj)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Associate two objects and add them to the Dictionary.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b> - key to associate with object. THis can be any objects, but is often a <a href="../Core/Symbol.html"><span class="s2">Symbol</span></a>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>obj</b><span class="Apple-converted-space">  </span>- an object</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s2">Dictionary</span>.new;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.put(<span class="s7">"abc"</span>, 10);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// using an event:</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = ();</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.put(<span class="s7">"abc"</span>, 10);</p>
-<p class="p15"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>removeAt(key)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove the key and the value associated with it from the Dictionary.</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (monkey: 99);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.removeAt(<span class="s6">\monkey</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>putAll(... dictionaries)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Add all items of each argument to the dictionary.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>dictionaries</b> - any Object that responds to keysValuesDo (usually a Dictionary).</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = ();</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.putAll(<span class="s2">Dictionary</span>[<span class="s6">\hello</span> -> 9, <span class="s6">\whello</span> -> <span class="s7">"world"</span>], <span class="s2">Dictionary</span>[<span class="s7">"abd"</span> -> 6]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>putPairs(pairs)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Add all items to the dictionary, using them as key and value pairwise</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = ();</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.putPairs(<span class="s6">\hello</span>, 10, <span class="s6">\whello</span>, <span class="s7">"lord"</span>, <span class="s7">"abc"</span>, 7);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><b>Accessing:</b></p>
-<p class="p18"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>at(key)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Access the value associated with the key.</p>
-<p class="p18"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (robot: 99);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Get the value associated with key</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d.at(<span class="s6">\robot</span>);</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d[</span><span class="s6">\robot</span><span class="s3">]; </span>// different syntax, same behaviour</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Key doesn't exist: return <a href="../Core/Nil.html"><span class="s2">Nil</span></a></p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d.at(<span class="s6">\monkey</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s10"><span class="Apple-tab-span">	</span></span><b>keys</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return a <a href="Set.html"><span class="s2">Set</span></a> of all keys.</p>
-<p class="p18"><br></p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (hello: 9, whello: <span class="s7">"world"</span>);</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d.keys;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>values</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return a <a href="List.html"><span class="s2">List</span></a> of all values.</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (hello: 9, whello: <span class="s7">"world"</span>);</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d.values;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>atAll(... keys)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return an array of all values for the given keys.</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (hello: 9, whello: <span class="s7">"world"</span>, z: 99, c: 0.33);</p>
-<p class="p19"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.atAll([</span>\hello<span class="s3">, </span>\z<span class="s3">, </span>\hello<span class="s3">, </span>\c, \whello<span class="s3">]);</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>getPairs</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return an array with all keys and values pairwise.</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (hello: 9, whello: 77, z: 99);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.getPairs;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>associationAt(key)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Access the <a href="Association.html"><span class="s2">Association</span></a> that has the given key.</p>
-<p class="p18"><br></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Get the value associated with key</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (robot: 99);</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d.associationAt(<span class="s6">\robot</span>);</p>
-<p class="p20"><br></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>findKeyForValue(argValue)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Try to find a given value and return its key.</p>
-<p class="p18"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (hello: 1, whello: 1976);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.findKeyForValue(1);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>matchAt(item)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The dictionary's keys are used as conditions against which the arbitrary item is matched.</p>
-<p class="p21"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>see: </b><a href="../interfaces/matchItem.html"><b>matchItem</b></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p15"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Note</b>: if an item matches multiple criteria, the value returned is arbitrary. This is because a dictionary is an unordered collection. It's the user's responsibility to make sure that criteria are mutually exclusive.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the key is an object, the item will be matched by identity (if key === item, the value will be returned).<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the key is a collection, the item is matched if it's contained in the collection.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the key is a function, the function is evaluated with the item as an argument and the item is matched if the function returns true.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s2">(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0: <span class="s6">\zero</span>,</p>
-<p class="p19"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\abc<span class="s3">: </span>\alpha<span class="s3">,</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 2, 3, 5, 8, 13, 21]: <span class="s6">\fibonacci</span>,</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ </span><span class="s2">|x|</span><span class="s3"> try { x.even } }: </span><span class="s6">\even </span>// try is needed because argument might not be a number</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.matchAt(0)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.matchAt(1)</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.matchAt(2)<span class="Apple-converted-space">  </span></span>// matches both 'fibonacci' and 'even', either may be returned</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d.matchAt(4)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.matchAt(<span class="s6">\abc</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>trueAt(key)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns true if the item at the key is true, otherwise false.This method is also valid in <a href="../Core/Object.html"><span class="s12">Object</span></a><span class="s12">.</span></p>
-<p class="p12"><br></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>falseAt(key)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns false if the item at the key is not true, otherwise true. This method is inherited from <a href="../Core/Object.html"><span class="s12">Object</span></a>.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p17"><b>Iteration/Enumeration</b></p>
-<p class="p22"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><span class="s13"><b><span class="Apple-tab-span">	</span></b></span>Most methods for iteration work analogously to Dictionary's superclasses, see e.g. <a href="Collection.html"><span class="s2">Collection</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>do(func)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>collect(func)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>reject(func)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>select(func)</b></p>
-<p class="p15"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// do, collect, reject, select</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s2">Dictionary</span>[<span class="s6">\a</span> -> <span class="s7">"hello"</span>, <span class="s6">\b</span> -> <span class="s7">"robot"</span>, <span class="s6">\c</span> -> [1, 2, 3]];</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (a: <span class="s7">"hello"</span>, b: <span class="s7">"robot"</span>, c: [1, 2, 3]); <span class="s5">// equivalent</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.do { <span class="s2">|item, i|</span> [item, i].postln };<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.collect { <span class="s2">|item|</span> item + 100 };<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.reject { <span class="s2">|item|</span> item.size > 4 };</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.select { <span class="s2">|item|</span> item.size > 4 };<span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>keysValuesDo(function)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Iterate over the associations, and evaluate the function for each, passing key and value as argument.</p>
-<p class="p15"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (a: <span class="s7">"hello"</span>, b: <span class="s7">"robot"</span>, c: [1, 2, 3]);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.keysValuesDo { <span class="s2">|key, value|</span> postln(<span class="s7">"the key: "</span> ++ key ++ <span class="s7">" the value: "</span> ++ value) };</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>keysValuesChange(function)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Iterate over the associations, and evaluate the function for each, passing key and value as argument. Replace the value with the return value from the function (similar to <b>collect</b>, but modifies the dictionary i<b>n place</b>)</p>
-<p class="p15"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (a: <span class="s7">"hello"</span>, b: <span class="s7">"robot"</span>, c: [1, 2, 3]);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.keysValuesChange { <span class="s2">|key, value|</span> <span class="s7">"the key: "</span> ++ key ++ <span class="s7">" the value: "</span> ++ value };</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>keysDo(function)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Iterate over the associations, and evaluate the function for each, passing key as argument.</p>
-<p class="p15"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (a: <span class="s7">"hello"</span>, b: <span class="s7">"robot"</span>, c: [1, 2, 3]);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.keysDo { <span class="s2">|key|</span> postln(<span class="s7">"the key: "</span> ++ key) };</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>associationsDo(function)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Iterate over the associations, and evaluate the function for each.</p>
-<p class="p15"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (a: <span class="s7">"hello"</span>, b: <span class="s7">"robot"</span>, c: [1, 2, 3]);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.associationsDo { <span class="s2">|assoc|</span> postln(<span class="s7">"the association: "</span> ++ assoc) };</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>pairsDo(function)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Iterate over the associations, and evaluate the function for each, passing key and value as argument.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Identical to <b>keysValuesDo</b></p>
-<p class="p15"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>invert</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return a new dictionary with all the values as keys and vice versa.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (a: <span class="s7">"hello"</span>, b: <span class="s7">"robot"</span>, c: [1, 2, 3]);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.invert;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><b>Other instance methods:</b></p>
-<p class="p12"><br></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>order(func)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return an array of keys which corresponds to the order of the values of the dictionary.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (a: <span class="s7">5</span>, b: <span class="s7">7</span>, c: 1, d: 0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.order;</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.atAll(d.order) </span>// returns items in order<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>powerset</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the set of all subsets: here an array of all sub-dictionaries.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (a: 5, b: 7, c: 1, d: 0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.powerset;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>merge(that, func, fill)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Combine two dictionaries into a new one by applying a function to each value. If <b>fill</b> is true (default: true), values missing from one of them are kept as they are.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="s14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (a: 5, b: 7, d: 0);</p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e = (a: 3, b: -3, c: 1);</p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">merge</span>(d, e, { <span class="s15">|a, b|</span> a + b });</p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">merge</span>(d, e, { <span class="s15">|a, b|</span> a + b }, <span class="s15">false</span>);</p>
-<p class="p24"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p24"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s16"><span class="Apple-tab-span">	</span></span><b>blend(that, blend, fill, specs)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Blend two dictionaries into a new one by interpolating each value - <b>blend</b> is the blend ratio. If <b>fill</b> is true (default: true), values missing from one of them are kept as they are, <b>specs</b> is a dictionary of <a href="../Control/Spec.html"><span class="s17">Spec</span></a><span class="s17">s</span> that are apples dto each before blending.<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="s14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (a: 5, b: 7, d: 0);</p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e = (a: 3, b: -3, c: 1);</p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blend(d, e, 0.3);</p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blend(d, e, 0.3, <span class="s15">false</span>);</p>
-<p class="p24"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (a: 500, b: 0.001);</p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e = (a: 300, b: 0.1);</p>
-<p class="p23"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blend(d, e, 0.3, specs: (a: <span class="s18">\freq</span>, b: <span class="s18">\rq</span>));</p>
-<p class="p12"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>asSortedArray</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the values in a sorted array of key value pairs</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (a: 5, b: 7, c: 1, d: 0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.asSortedArray;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>asKeyValuePairs</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the values in an array of alternating key value pairs</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>d = (a: 5, b: 7, c: 1, d: 0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.asKeyValuePairs;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><b>embedInStream(event)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the event is not nil, yields a copy, with all the elements of the receiver.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>See also <a href="Event.html"><span class="s2">Event</span></a>.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write a generator for dictionaries</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a: 5, b: 7, c: 1,</p>
-<p class="p25"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rout: </span>Routine<span class="s3"> { </span>|inval|</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inf.do { |i|</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var event = d.copy.put(\count, i);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = event.embedInStream(inval)<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// draw new values</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.rout.((z:999));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.rout.((z:1, a:0));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.rout.(());</p>
-<p class="p12"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sound example</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this also allows to use events or dictionaries in patterns directly:</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = (freq: 402, dur: 0.3);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pseq</span>([</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq: 300, dur: 0.3),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq: [400, 770, 800], dur: 1),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq: 451, dur: 0.33)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s2">inf</span>).play;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d[<span class="s6">\freq</span>] = [900, 1002, 1102];</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d[<span class="s6">\freq</span>] = [200, 101, 1102];</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Collections/DoubleArray.html b/Help/Collections/DoubleArray.html
deleted file mode 100644
index e590ca6..0000000
--- a/Help/Collections/DoubleArray.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #000000}
-span.s2 {color: #002eaf}
-span.s3 {color: #002fe0}
-span.s4 {color: #0024f8}
-</style>
-</head>
-<body>
-<p class="p1"><b>Int8Array, Int16Array, Int32Array, FloatArray, DoubleArray, SymbolArray</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherit from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s2"><b> :</b></span><span class="s1"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><span class="s3"><b> : </b><a href="ArrayedCollection.html"><span class="s4"><b>ArrayedCollection</b></span></a><b> :</b></span><span class="s1"><b> </b><a href="RawArray.html"><span class="s4"><b>RawArray</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p5">These classes implement arrays whose indexed slots are all of the same type.</p>
-<p class="p4"><br></p>
-<p class="p5">Int8Array - 8 bit integer</p>
-<p class="p5">Int16Array - 16 bit integer</p>
-<p class="p5">Int32Array - 32 bit integer</p>
-<p class="p5">FloatArray - 32 bit floating point</p>
-<p class="p5">DoubleArray - 64 bit floating point</p>
-<p class="p5">SymbolArray - symbols</p>
-<p class="p4"><br></p>
-<p class="p5">These classes implement only one method.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>*readNew(file)</b></p>
-<p class="p4"><br></p>
-<p class="p5">Called by *read to read<span class="Apple-converted-space">  </span>the entire file as an array of this class' type and return a new instance.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Environment.html b/Help/Collections/Environment.html
deleted file mode 100644
index f18b28d..0000000
--- a/Help/Collections/Environment.html
+++ /dev/null
@@ -1,268 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #c40000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0010c4}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007200}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #007200}
-span.s3 {color: #0010c4}
-span.s4 {color: #000000}
-span.s5 {color: #c40000}
-span.s6 {color: #606060}
-span.s7 {color: #0016ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Environment</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: IdentityDictionary</b></p>
-<p class="p3"><b>related classes: Event, IdentityDictionary</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Environment is an IdentityDictionary with additional features that allow it to serve as a 'name space' within</p>
-<p class="p3">which functions can be defined and/or evaluated.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>PseudoVariables (global variables)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>currentEnvironment<span class="Apple-tab-span">	</span></b>determines environment used by "~" syntax, valueEnvir, and valueArrayEnvir</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>topEnvironment<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>initial value of currentEnvironment, can be used for 'global variables'</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Class variables</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>stack</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Maintains a stack of Environments accessed by <b>push </b>and <b>pop</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Class methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*make(function)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>creates a new Environment and sends make message</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*use(function)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>creates a new Environment and sends use message</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*push<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>saves currentEnvironment on the stack<span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*pop<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>restores currentEnvironment from the stack</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>make(function)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>evaluates the function within the environment, returns the environment.<span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>use(function)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>evaluates the function within the environment, returns the return valus of the function.<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>push<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>saves the receiver on the stack</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>pop<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>restores currentEnvironment from the stack</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Related Messages</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>valueEnvir (arg1, arg2...)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>evaluates a function, looking up unspecified arguments in <b>currentEnvironment</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>valueArrayEnvir (argArray)<span class="Apple-tab-span">	</span></b>same as valueEnvir, but with arguments in an array</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Overview: topEnvironment, currentEnvironment, make and use</b></p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p3">When SuperCollider starts, it creates an Environment that it stores in the pseudovariables<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>topEnvironment </b>and <b>currentEnvironment</b>.<span class="Apple-converted-space">  </span>The <b>topEnvironment </b>provides a universally</p>
-<p class="p3">accessible collection of named values<span class="Apple-converted-space">  </span>similar to the <b>Interpreter </b>variables a, b, c, ....</p>
-<p class="p2"><br></p>
-<p class="p3">The compiler provides a shortcut syntax where ~ is a placeholder for <b>currentEnvironment</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p3">This makes the expression</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~myvariable;<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">equivalent to <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>currentEnvironment.at(<span class="s2">\myvariable</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">and the expression</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>~myvariable = 888;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">equivalent to<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>currentEnvironment.put(<span class="s2">\myvariable</span>, 888);</p>
-<p class="p2"><br></p>
-<p class="p3">The messages <b>make(function) </b>and <b>use(function) </b>replace currentEnvironment with the receiver. evaluate</p>
-<p class="p3">the function and then restore currentEnvironment's original value.<span class="Apple-converted-space">  </span>The message <b>make</b> is intended</p>
-<p class="p3">to be used when initializing an Environment, so it returns the Environment.<span class="Apple-converted-space">  </span>The message <b>use </b>is for</p>
-<p class="p3">evaluating a functions within an Environment, so it returns the return value of the function.</p>
-<p class="p2"><br></p>
-<p class="p3">For example</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s3">Environment</span>.make({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~a = 100;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~b = 200;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~c = 300;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">creates an environment, while</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.use({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~a + ~b + ~c</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">evaluates the function within that environment.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>valueEnvir and valueArrayEnvir</b></p>
-<p class="p2"><br></p>
-<p class="p3">When Functions are evaluated with <b>valueEnvir</b> and <b>valueArrayEnvir</b> unspecified arguments are looked up in the current Environment.</p>
-<p class="p3">If the argument is not found in the Environment its default value is used.</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s3">var</span> f;</p>
-<p class="p7"><br></p>
-<p class="p8">// define a function</p>
-<p class="p6">f = { <span class="s3">arg</span> x, y, z; [x, y, z].postln; };</p>
-<p class="p7"><br></p>
-<p class="p9">Environment<span class="s4">.use({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~x = 7;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~y = 8;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~z = 9;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.valueEnvir(1, 2, 3);<span class="Apple-tab-span">	</span><span class="s5">// all values supplied</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span>f.valueEnvir(1, 2);<span class="Apple-tab-span">	</span></span>// z is looked up in the current Environment</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span>f.valueEnvir(1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// y and z are looked up in the current Environment<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span>f.valueEnvir;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all arguments are looked up in the current Environment</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span>f.valueEnvir(z: 1);<span class="Apple-tab-span">	</span></span>// x and y are looked up in the current Environment</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p3">Now here is how this can be used with an instrument function. Environments allow you to define instruments without having to worry about argument ordering conflicts. Even though the three functions below have the freq, amp and pan args declared in different orders it does not matter, because valueEnvir looks them up in the</p>
-<p class="p3">environment.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s3">var</span> orc;</p>
-<p class="p6">orc = <span class="s3">Environment</span>.make {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~a = { <span class="s3">arg</span> freq, amp, pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pan2</span>.ar(<span class="s3">SinOsc</span>.ar(freq), pan, amp);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~b =<span class="Apple-converted-space">  </span>{ <span class="s3">arg</span> amp, pan, freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pan2</span>.ar(<span class="s3">RLPF</span>.ar(<span class="s3">Saw</span>.ar(freq), freq * 6, 0.1), pan, amp);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~c =<span class="Apple-converted-space">  </span>{ <span class="s3">arg</span> pan, freq, amp;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pan2</span>.ar(<span class="s3">Resonz</span>.ar(<span class="s3">GrayNoise</span>.ar, freq * 2, 0.1), pan, amp * 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~orc = [~a, ~b, ~c];</p>
-<p class="p6">};</p>
-<p class="p8">// 'reverb'</p>
-<p class="p6">{ <span class="s3">var</span> in; in = <span class="s3">In</span>.ar(0, 2); <span class="s3">CombN</span>.ar(in, 0.2, 0.2, 3, 1, in); }.play(addAction: <span class="s2">\addToTail</span>);</p>
-<p class="p7"><br></p>
-<p class="p6">{ loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>orc.use({</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set values in the environment</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~freq = exprand(80, 600);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp = 0.1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~pan = 1.0.rand2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// call a randomly chosen instrument function<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// with values from the environment</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> x = { ~orc.choose.valueEnvir; }.play(fadeTime: 0.2, addAction: <span class="s2">\addToHead</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> 0.2.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> x.release(0.2);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}) }.fork;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Environments and asynchronous functions</b></p>
-<p class="p2"><br></p>
-<p class="p3">Local variables declared in functions, and class and instance variables, use lexical scope. That is, the context in which they are understood depends on where the declaration is read during compilation. Asynchronous functions -- any function that will execute outside (later than) the current execution flow -- carry their lexically scoped variables with them.</p>
-<p class="p2"><br></p>
-<p class="p6">f = { <span class="s3">var</span> a = <span class="s6">"got it"</span>; { a.postln }.defer(0.5) };</p>
-<p class="p6">f.value;</p>
-<p class="p2"><br></p>
-<p class="p3">Asynchronous functions include any scheduled function, responder function associated with OSCresponder, MIDIResponder, HID or GUI action functions, or actions used in server messaging (such as Buffer.read, Buffer or Bus .get, and so on).</p>
-<p class="p2"><br></p>
-<p class="p3">Environment variables have dynamic scope; they are read from whichever environment is current, whether or not it was the current environment when the function was declared. For instance, the following fails because e is no longer the current environment when the deferred function wakes up.</p>
-<p class="p2"><br></p>
-<p class="p6">e = (a: <span class="s6">"got it"</span>, f: { { ~a.postln }.defer(0.5) });</p>
-<p class="p6">e.use { e.f };</p>
-<p class="p2"><br></p>
-<p class="p3">Function's inEnvir method attaches a function to a specific environment. If no environment is given, the current environment at the time of executing inEnvir is the default.</p>
-<p class="p2"><br></p>
-<p class="p6">e = (a: <span class="s6">"got it"</span>, f: { { ~a.postln }.inEnvir.defer(0.5) });</p>
-<p class="p6">e.use { e.f };</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Using Environments as object prototypes</b></p>
-<p class="p2"><br></p>
-<p class="p3">Environment's <b>know</b> variable holds a Boolean value controlling whether the Environment may be used as an object prototype or not. If <b>know</b> is true, any messages sent to the Environment that it does not already understand will be relayed into items in the Environment. (If false, not-understood messages will produce a standard "does not understand" error message.)</p>
-<p class="p2"><br></p>
-<p class="p3">The default for <b>know</b> is false for Environment, and true for <a href="Event.html"><span class="s7">Event</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s4">e = </span>Environment<span class="s4">[</span></p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span></span>'someVariable'<span class="s4"> -> 5,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">'printMe'</span> -> { <span class="s3">|self, string|</span> string.postln }</p>
-<p class="p6">];</p>
-<p class="p7"><br></p>
-<p class="p6">e.know = <span class="s3">true</span>;</p>
-<p class="p2"><br></p>
-<p class="p3">More typically, Events are used to define such prototypes because the syntax is simpler.</p>
-<p class="p2"><br></p>
-<p class="p6">e = (someVariable: 5, printMe: { <span class="s3">|self, string|</span> string.postln });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">An object prototype looks up the method selector in the Environment to decide what to do.</p>
-<p class="p2"><br></p>
-<p class="p3">Most objects are simply returned -- the method call behaves like a getter for any other object.</p>
-<p class="p2"><br></p>
-<p class="p6">e.someVariable;</p>
-<p class="p8">// same as</p>
-<p class="p11"><span class="s4">e.at(</span>'someVariable'<span class="s4">);</span></p>
-<p class="p11"><span class="s4">e[</span>'someVariable'<span class="s4">];</span></p>
-<p class="p2"><br></p>
-<p class="p3">If the selector is a setter, e.g. <b>someVariable_(value)</b> or <b>e.someVariable = value</b>, the new value is put into the Environment.</p>
-<p class="p2"><br></p>
-<p class="p6">e.someVariable = 10;</p>
-<p class="p8">// same as</p>
-<p class="p11"><span class="s4">e.put(</span>'someVariable'<span class="s4">, 10);</span></p>
-<p class="p2"><br></p>
-<p class="p3">If the Environment item is a function, it is evaluated as if it were a method definition. The first argument passed into the function is the Environment that holds the function; arguments to the method call follow as the second, third etc. arguments passed into the function.</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s4">e.printMe(</span>"Oh hai wrldz"<span class="s4">);</span></p>
-<p class="p8">// same as</p>
-<p class="p6">e[<span class="s2">'printMe'</span>].value(e, <span class="s6">"Oh hai wrldz"</span>);</p>
-<p class="p2"><br></p>
-<p class="p3">The function may access objects in the Environment using the first function argument.</p>
-<p class="p2"><br></p>
-<p class="p6">e.mul2 = { <span class="s3">|z|</span> z.someVariable * 2 };</p>
-<p class="p6">e.mul2;</p>
-<p class="p2"><br></p>
-<p class="p3">Environment variables inside a function will refer to the currently active environment -- not to the Environment being addressed. This is to allow the object prototype to interact with the currentEnvironment.</p>
-<p class="p2"><br></p>
-<p class="p6">e.mul2 = { <span class="s3">|z|</span> ~someVariable * 2 };</p>
-<p class="p8">// this will throw an error because ~someVariable is nil in the currentEnvironment</p>
-<p class="p6">e.mul2;</p>
-<p class="p2"><br></p>
-<p class="p3">If you wish to access objects in the environment using environment variable syntax, 'use' the environment within the function.</p>
-<p class="p2"><br></p>
-<p class="p6">e.mul2 = { <span class="s3">|z|</span> z.use { ~someVariable * 2 } };</p>
-<p class="p6">e.mul2;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>IMPORTANT:</b> Be careful to avoid method names that are defined in any of the superclasses of environment (or event). Object prototyping works by trapping method selectors that are not already defined as class library methods. Using a generic method selector such as 'stop' or 'reset' will cause the corresponding class library method to respond, and the items in the environment will never be checked.</p>
-<p class="p2"><br></p>
-<p class="p3">Assigning a value into an environment using a setter -- <b>name_()</b> or <b>.name = ...</b> -- posts a warning message if the name is already defined in the class library.</p>
-<p class="p2"><br></p>
-<p class="p6">e.reset = { <span class="s6">"My reset function"</span>.postln };</p>
-<p class="p7"><br></p>
-<p class="p8">// prints:</p>
-<p class="p6">WARNING:</p>
-<p class="p6">'reset' exists a method name, so you can't use it as pseudo-method.</p>
-<p class="p7"><br></p>
-<p class="p8">// this does NOT execute the reset function above</p>
-<p class="p8">// because Object:reset responds</p>
-<p class="p6">e.reset;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Event.html b/Help/Collections/Event.html
deleted file mode 100644
index b924909..0000000
--- a/Help/Collections/Event.html
+++ /dev/null
@@ -1,414 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf; min-height: 14.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {font: 12.0px Monaco}
-span.s6 {color: #bf0000}
-span.s7 {color: #606060}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {font: 9.0px Monaco}
-span.s10 {text-decoration: underline ; color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Event</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an environment that represents an action</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a><b> : </b><a href="Set.html"><b>Set</b></a><b> : </b><a href="Dictionary.html"><b>Dictionary</b></a><b> : </b><a href="IdentityDictionary.html"><b>IdentityDictionary</b></a><b> : </b><a href="Environment.html"><b>Environment</b></a></span></p>
-<p class="p1"><b>Related classes: </b><a href="../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s3"><b>Pattern</b></span></a></p>
-<p class="p4"><br></p>
-<p class="p1">An Event is an Environment that specifies an action to be taken in response to a <b>play </b>message. The key/value pairs within the Event specify the parameters of that action. Most methods, Event inherits from its superclasses, especially from <a href="Dictionary.html"><span class="s3">Dictionary</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Basic Usage:</b></p>
-<p class="p2"><br></p>
-<p class="p1">Events can be written as a series of key value pairs enclosed in parentheses.<span class="Apple-converted-space">  </span>Empty parentheses will create an empty event. They may be also used for object prototyping – <a href="Environment.html"><span class="s3">Environment</span></a> for more details.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Event as a name space for keeping objects:</b></p>
-<p class="p2"><br></p>
-<p class="p1">Because of this simple syntax, Events are often used as name space for keeping objects:</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// using an event to store values</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q = (n: 10, x: [1, 2, 3]);</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q[</span><span class="s4">\y</span><span class="s2">] = q[</span><span class="s4">\x</span><span class="s2">] * q[</span><span class="s4">\n</span><span class="s2">]; </span>// similar to ~y = ~x * ~n, but in a separate name space</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.y = q.x * q.n;<span class="Apple-converted-space">  </span></span>// shorter way to do the same (pseudo-methods)</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.y; </span>// [ 100, 200, 300 ]</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Event for specifying different things to happen:</b></p>
-<p class="p2"><br></p>
-<p class="p1">Event provides a <b>defaultParentEvent</b> that defines a variety of different event types and provides a complete set of default key/value pairs for each type. The type is determined by the value of the <span class="s5">key</span><b> \type</b><span class="s5"> </span>which defaults to <b>\note</b>. Note events create synths on the server.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>( ).play;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the default note</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq: 500, pan: -1) .play;<span class="Apple-tab-span">	</span><span class="s6">// 500 Hz, panned left</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(play: { ~what.postln }, what: <span class="s7">"hello happening"</span>).play; <span class="s6">// something else</span></p>
-<p class="p10"><br></p>
-<p class="p1">Per default, the play message derives its behaviour from the defaultParentEvent, which provides many default values, such as default instrument (\default), note (0), legato (0.8) and so on. Depending on the event type, these may differ completely and need not even represent a sound.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Class variables</b></p>
-<p class="p2"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>defaultParentEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the default event used in most cases</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>parentEvents<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>an IdentityDictionary of useful parent events</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>partialEvents<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>an IdentityDictionary of Events that define the default values and functions</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for different aspects of note generation (timing, volume, pitch, server to use, etc)</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>*new(n, proto, parent, know = true)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>create an event with initial size <b>n</b>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>proto</b> may be provided as another event which is used to <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><i>override</i> keys in the event.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent</b> may be provided as another event which is used to <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><i>provide default</i> keys for the event without modifying it.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>know</b> is set to true, the event will respond to appropriate message calls. See <a href="Environment.html"><span class="s3">Environment</span></a> for more details.</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>*default<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an empty event with defaultParentEvent as parent</p>
-<p class="p13"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>*silent (dur)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an event that describes a pause of <b>dur</b> duration.</p>
-<p class="p13"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>*addEventType(type, func)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Event types define alternate play functions that are selected by the value of <b>~type</b></p>
-<p class="p2"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b>Methods</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>play the event. This evaluates the function at \play (see example above).</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>delta<span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the inter onset time – the time delay until the next event in a sequence. This usually depends on \dur and \stretch, but may be overridden by specifying \delta directly.</p>
-<p class="p14"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Pn</span>((dur: 2, freq:8000)).play;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>next(inval)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Combines an event given in the argument with the current event. This is used to enable events to be composed.</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(a: 6, b: 7).next((c: 100));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>playAndDelta(cleanup, mute)<span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>used by <a href="../Streams-Patterns-Events/EventStreamPlayer.html"><span class="s3">EventStreamPlayer</span></a> to play Events and obtain a time increment</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>asUGenInput</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>calls asControlInput.</p>
-<p class="p13"><br></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>asControlInput</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Enables events to represent the server resources they created in an Event</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b>Methods that allow Events to provide user control for </b><a href="../ServerArchitecture/Synth.html"><span class="s3"><b>Synth</b></span></a><span class="s3"><b>s</b></span><b> on </b><a href="../ServerArchitecture/Group.html"><span class="s3"><b>Group</b></span></a><span class="s3"><b>s</b></span></p>
-<p class="p13"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>synth<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>makes the event a control interface to the resultant synth when played</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>group<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>makes the event a control interface to the resultant group when played.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This is experimental, does not work consistently yet.</p>
-<p class="p13"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>stop<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>free the synth or group</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>pause<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>pause the synth or group</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>resume<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>resume the synth or group</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>release<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>release the synth or group</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>set(key1, val1, ....)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set a control value in the synth or group</p>
-<p class="p15"><br></p>
-<p class="p16"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span>a = (note: 2).play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.set(<span class="s4">\freq</span>, 700);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.release;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Events and SynthDefs</b></p>
-<p class="p17"><br></p>
-<p class="p1">The key used to select what synthdef is to be played is <b>\instrument</b>.<span class="Apple-converted-space">  </span>In order to use a <a href="../ServerArchitecture/SynthDef.html"><span class="s3">SynthDef</span></a> with an Event, send it an <b>add</b> message. This creates a description of the SynthDef that the event can consult to determine its control names. The values of these names in the event are used when the event is played. (See <a href="../ServerArchitecture/SynthDesc.html"><span class="s3">SynthDesc</span></a><b> </b>for details.)</p>
-<p class="p2"><br></p>
-<p class="p18">(</p>
-<p class="p19">SynthDef<span class="s2">(</span><span class="s4">\pm</span><span class="s2">, { </span>|out=0, freq=440, amp=0.1, pan=0, gate=1, ratio = 1, index = 1, ar = 0.1, dr = 0.1|</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> z;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = <span class="s3">LPF</span>.ar(</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">PMOsc</span>.ar(freq, freq * ratio, <span class="s3">Linen</span>.kr(gate, ar,index, dr), 0, 0.3),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">XLine</span>.kr(<span class="s3">Rand</span>(4000, 5000), <span class="s3">Rand</span>(2500, 3200), 1)</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s3">Linen</span>.kr(gate, 0.01, 0.7, dr, 2);</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">OffsetOut</span>.ar(out, <span class="s3">Pan2</span>.ar(z, pan, amp));</p>
-<p class="p18">}).add</p>
-<p class="p18">);</p>
-<p class="p20"><br></p>
-<p class="p18">(instrument: <span class="s4">\pm</span>).play;</p>
-<p class="p20"><br></p>
-<p class="p18">(instrument: <span class="s4">\pm</span>, ratio: 3.42, index: 12, freq: 150, ar: 8, dr: 3, sustain: 10).play;</p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>note</b>: The use of <a href="../UGens/InOut/OffsetOut.html"><span class="s3">OffsetOut</span></a> in the SynthDef prevents irregularities that can result from the interaction of the timing of a sequence of notes and the control rate of the Server.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Multi-channel Expansion</b><span class="s9"><span class="Apple-tab-span">	</span></span></p>
-<p class="p20"><br></p>
-<p class="p1">If a key relevant to the action is assigned an <a href="Array.html"><span class="s3">Array</span></a>, the action is repeated on each element of the array:</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p18">(degree: (0..12)).play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// a diatonic cluster</span></p>
-<p class="p2"><br></p>
-<p class="p1">If several keys are assigned arrays, the action is repeated for each element of the largest array.</p>
-<p class="p1">Smaller arrays are rotated through repeatedly.<span class="Apple-converted-space">  </span>Here are some examples:</p>
-<p class="p2"><br></p>
-<p class="p21">// every other note of the diatonic cluster: stacked thirds</p>
-<p class="p18">(degree: (0..12), amp: [0, 0.1]).play</p>
-<p class="p2"><br></p>
-<p class="p21">// every other note of the semitone cluster: a wholetone cluster again</p>
-<p class="p18">(note: (0..12), amp: [0, 0.1]).play</p>
-<p class="p2"><br></p>
-<p class="p21">// every third note of the semitone cluster: a diminished chord</p>
-<p class="p18">(note: (0..12), amp: [0, 0, 0.1]).play</p>
-<p class="p20"><br></p>
-<p class="p21">// the same with different sustain times</p>
-<p class="p18">(note: (0..12), amp: [0, 0, 0.1], sustain:[0.1, 0.3, 1.3, 2.5]).play</p>
-<p class="p20"><br></p>
-<p class="p21">// timingOffset gives a tempo-relative offset time to each synth</p>
-<p class="p18">(instrument: <span class="s4">\pm</span>, ratio: [2.3, 4.5, 1.7], timingOffset: [0, 1.2, 3], sustain: [0.2, 2, 1]).play;</p>
-<p class="p20"><br></p>
-<p class="p20"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Arrayed Arguments</b><span class="s9"><span class="Apple-tab-span">	</span></span></p>
-<p class="p20"><br></p>
-<p class="p1">It is possible to assign an array to one of a <a href="../ServerArchitecture/SynthDef.html"><span class="s3">SynthDef</span></a>'s control names. For example:</p>
-<p class="p2"><br></p>
-<p class="p19">(</p>
-<p class="p19">SynthDef<span class="s2">(</span><span class="s4">\test</span><span class="s2">, { </span>| out = 0, amp = 0.01, freq = #[300,400,400], pan, gate = 1 |</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s3">var</span> audio, env;</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>audio = </span><span class="s3">Mix</span><span class="s2">.ar(</span><span class="s3">Pulse</span><span class="s2">.ar(freq, 0.5));<span class="Apple-tab-span">	</span></span>// this is a mixture of three oscillators</p>
-<p class="p18"><span class="Apple-tab-span">	</span>env = <span class="s3">Linen</span>.kr(gate, susLevel: amp , doneAction: 2);<span class="Apple-converted-space">  </span><span class="s6">// envelope deletes the synt when done</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>audio = audio * env;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s3">OffsetOut</span>.ar(0, audio );</p>
-<p class="p18">}).add</p>
-<p class="p18">);</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p1">Within an event, arrayed arguments of this sort must be enclosed within an additional array to distinguish them from arguments intended for multi-channel expansion.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p21">// one synth, use enclosing array to prevent multi-channel expansion</p>
-<p class="p18">(instrument: <span class="s4">\test</span>, note: [[0, 2, 4]]).play</p>
-<p class="p20"><br></p>
-<p class="p21">// two synths</p>
-<p class="p18">(instrument: <span class="s4">\test</span>, note: [[0, 2, 4], [6, 8, 10]]).play</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Events and Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p1">Events are closely integrated with the Patterns library.<span class="Apple-converted-space">  </span>Different patterns can be bound to different keys (or collections of keys) to specify the resultant music.<span class="Apple-converted-space">  </span>See the help<span class="Apple-converted-space">  </span>files <a href="../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s10">Pattern</span></a> and <a href="../Streams-Patterns-Events/Patterns/Pbind.html"><span class="s10">Pbind</span></a> and the tutorials<span class="Apple-converted-space">  </span><a href="../Streams-Patterns-Events/Streams-Patterns-Events4.html"><span class="s10">Streams-Patterns-Events4</span></a> and <a href="../Streams-Patterns-Events/Streams-Patterns-Events5.html"><span class="s10">Streams-Patterns-Events5</span></a> for more details on Patterns.</p>
-<p class="p2"><br></p>
-<p class="p1">Patterns that return events may be played on a clock: dur specifies the time between two subsequent events.</p>
-<p class="p2"><br></p>
-<p class="p21">// Pseq returns one item in the list after the other</p>
-<p class="p18">(</p>
-<p class="p19">Pseq<span class="s2">([</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>(note: 2, sustain: 1, dur: 1.5),<span class="Apple-converted-space"> </span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>(note: [5, 7], sustain: 0.5, dur: 0.8),<span class="Apple-converted-space"> </span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>(note: [2, 6], sustain: 1, dur: 0.8)</p>
-<p class="p18">]).play</p>
-<p class="p18">);</p>
-<p class="p20"><br></p>
-<p class="p21">// Pbind binds parameters to events:</p>
-<p class="p18">(</p>
-<p class="p19">Pbind<span class="s2">(</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s4">\note</span>, <span class="s3">Pseq</span>([2, [5, 7], [2, 6]]),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s4">\sustain</span>, <span class="s3">Pseq</span>([1, 0.5, 1]),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s3">Pseq</span>([1.5, 0.8, 0.8])</p>
-<p class="p18">).play</p>
-<p class="p18">)</p>
-<p class="p20"><br></p>
-<p class="p21">// per-event timing may be specified:</p>
-<p class="p18">(</p>
-<p class="p19">Pbind<span class="s2">(</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s4">\note</span>, <span class="s3">Pseq</span>([[0, 9], [5, 7], [2, 6]], <span class="s3">inf</span>),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s4">\sustain</span>, <span class="s3">Pseq</span>([1, 0.5, 1], <span class="s3">inf</span>),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s3">Pseq</span>([1.5, 0.8, 0.8], <span class="s3">inf</span>),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s4">\timingOffset</span>, <span class="s3">Pseq</span>([[0, 0.3], [0, 0.01]], <span class="s3">inf</span>)</p>
-<p class="p18">).play</p>
-<p class="p18">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Here is an example that illustrates some more of the keys defined by the defaultParentEvent.</p>
-<p class="p1">Note that it is equivalent to write Pbind(\key, val, ...) and Pbind(*[key: val, ...]).</p>
-<p class="p2"><br></p>
-<p class="p18">(</p>
-<p class="p19">Pbind<span class="s2">(*[</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stepsPerOctave:<span class="Apple-tab-span">	</span><span class="s3">Pstep</span>(<span class="s3">Pseq</span>((2..12).mirror, <span class="s3">inf</span>),12), <span class="s6">// 3 - 12 tone e.t. scales</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>note:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>((0..12).mirror, <span class="s3">inf</span>),<span class="Apple-tab-span">	</span><span class="s6">// play full notes up and down</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ctranspose:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pwhite</span>(-0.2, 0.2),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// detune up to +-20 cents</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>detune:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pwhite</span>(-1.0, 1.0),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// detune up to 1 Hz<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sustain:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Prand</span>([0.2, 0.2, 0.2, 4], <span class="s3">inf</span>), <span class="Apple-tab-span">	</span><span class="s6">// notes last 0.2 or 4 seconds</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 1 in 6 chance waits 0.8 seconds:</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Prand</span>([0.2, 0.2, 0.2, 0.2, 0.2, 0.8], <span class="s3">inf</span>),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>db:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pstep</span>(<span class="s3">Pseq</span>([-15, -25, -20, -25], <span class="s3">inf</span>), 0.8)<span class="s6">// 4 beat accent structure</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>]).play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18">)</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Event's play method</b></p>
-<p class="p2"><br></p>
-<p class="p1">When an Event<span class="Apple-converted-space">  </span>(or any other <a href="Environment.html"><span class="s3">Environment</span></a>) receives a <span class="s5">use(function)</span> message, it sets itself to be currentEnvironment, evaluates the function, and restores the original value of currentEnvironment. This allows the function to access and alter the contents of the event using the following shortcuts:</p>
-<p class="p2"><br></p>
-<p class="p18"><span class="s8"><span class="Apple-tab-span">	</span></span>~keyName<span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">which is equivalent to<span class="Apple-tab-span">	</span></span>currentEnvironment.at(keyName)</p>
-<p class="p1">and</p>
-<p class="p18"><span class="s8"><span class="Apple-tab-span">	</span></span>~keyName = value<span class="s5"><span class="Apple-tab-span">	</span></span><span class="s8">which is equivalent to<span class="Apple-tab-span">	</span></span>currentEnvironment.put(keyName, value)</p>
-<p class="p6"><br></p>
-<p class="p1">We will write ~keyName whenever referring to the value stored at the key keyName in the event. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">Here is the definition of Event's play method:</p>
-<p class="p2"><br></p>
-<p class="p18"><span class="Apple-tab-span">	</span>play {</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (parent.isNil) { parent = defaultParentEvent };</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">this</span>.use { ~play.value };</p>
-<p class="p18"><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><br></p>
-<p class="p1">Thus we can see that the defaultParentEvent is used unless otherwise specified and the function stored in <span class="s5">~play </span>is executed in the context of the Event. It can be replaced in a given event for different behavior:</p>
-<p class="p4"><br></p>
-<p class="p18">(a: 6, b: 7, play: { (~a * ~b).postln }).play;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Timing control with Event's delta method</b></p>
-<p class="p2"><br></p>
-<p class="p1">Events also specify timing within a <a href="../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s3">Pattern</span></a>.<span class="Apple-converted-space">  </span>Event's <span class="s5">delta </span>method returns the<span class="Apple-converted-space">  </span>value of <span class="s5">~delta </span>or, if that is nil,<span class="Apple-converted-space">  </span><span class="s5">~dur * ~stretch.<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p1">Patterns are played by<b> </b><a href="../Scheduling/TempoClock.html"><span class="s3">TempoClock</span></a>s, which have their own tempo controls.<span class="Apple-converted-space">  </span>This tempo which can be controlled through <span class="s5">~tempo </span>in the event. Changes to the tempo affect everything else scheduled by the TempoClock, so <span class="s5">tempo </span>provides a global tempo control while <span class="s5">stretch </span>provides a control limited to the one pattern.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>The structure of defaultParentEvent</b></p>
-<p class="p4"><br></p>
-<p class="p1">The default parent event provides the collection of default values and functions needed for the different uses of an Event. These<span class="Apple-converted-space">  </span>defaults are defined in partialEvents that specify distinct aspects of default parent Event:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>playerEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// defines ~play, ~type and ~eventTypes</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>serverEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// server, group, addAction</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>durEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// duration, tempo and articulation</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>ampEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// volume, pan, MIDI velocity</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>pitchEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pitch specified in many different ways</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>bufferEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// buffers on the server</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>midiEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// defines the sending of midi messages</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Useful keys for notes</b></p>
-<p class="p2"><br></p>
-<p class="p1">Using Events is largely a matter of overwriting keys.<span class="Apple-converted-space">  </span>Here is a list of keys useful for defining notes with their default values, grouped by the partialEvent within which they are defined.</p>
-<p class="p2"><br></p>
-<p class="p1">The keys in serverEvent provide the values needed to identify the server to be used and where in the tree</p>
-<p class="p1">of nodes to place the group. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>serverEvent keys</b>:</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>server: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if nil, Server.default is used</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>instrument: <span class="Apple-tab-span">	</span></span><span class="s4">\default</span><span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this is the name of a SynthDef</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>group: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// nodeID of group on the server</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// whening adding before or after a node</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this could be the nodeID of a synth instead of a group</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>addAction:<span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 0, 1, 2, 3 or \addToHead, \addToTail, \addBefore, \addAfter</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>out: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// usually an output bus number, but depends on the SynthDef<span class="Apple-tab-span">	</span></p>
-<p class="p20"><br></p>
-<p class="p20"><br></p>
-<p class="p1">The ampEvent determines volume.<span class="Apple-converted-space">  </span>Notice that <span class="s5">~amp</span> is a function that determines its value from <span class="s5">~db</span>. The user can choose to specify the amplitude directly by overwriting ~amp or to use a decibel specification by overwriting <span class="s5">~db</span>.</p>
-<p class="p2"><br></p>
-<p class="p20"><br></p>
-<p class="p1"><b>ampEvent keys</b>:</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>amp: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#{ ~db.dbamp },<span class="Apple-tab-span">	</span><span class="s6">// the amplitude</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>db: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-20.0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the above described in decibel</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>pan: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.0, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pan position: -1 left 1 right</p>
-<p class="p18"><span class="Apple-tab-span">	</span>velocity: <span class="Apple-tab-span">	</span>64<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// midi velocity</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>trig:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// trigger value</p>
-<p class="p2"><br></p>
-<p class="p1">The durEvent has keys that determine the timing of a note. Notice that <span class="s5">~sustain </span>is a function that uses ~legato to determine the sustain. Like <span class="s5">~amp </span>this can be overwritten to set the sustain directly.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>durEvent keys</b>:</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>tempo:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// changes tempo of a TempoClock</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>dur: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// time until next note (inter-onset time)</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>stretch: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// inverse of tempo control, specific to the Event's stream</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>legato: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.8,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ratio of sustain to duration</p>
-<p class="p18"><span class="Apple-tab-span">	</span>sustain: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#{ ~dur * ~legato * ~stretch },<span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>lag: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// delay (in seconds) relative to current time position of Stream</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="s2">timingOffset: 0.0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// delay (in beats) relative to current time position of Stream</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>strum: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// "breaks" a chord. May be negative, playing the chord backward</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>strumEndsTogether: </span><span class="s3">false</span><span class="s2"><span class="Apple-tab-span">	</span></span>// if true, the strummed notes end together (with gated synths)</p>
-<p class="p10"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>pitchEvent keys:</b></p>
-<p class="p2"><br></p>
-<p class="p1">The pitchEvent has the most complex system of functions that provide a variety of useful ways to determine</p>
-<p class="p1">pitch:</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>freq (->440)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// determines the pitch directly as a frequency in Hertz</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>midinote<span class="Apple-tab-span">	</span>(-> 60)<span class="Apple-tab-span">	</span></span>// determines pitch as a fractional MIDI note (69 -> 440)</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>note<span class="Apple-tab-span">	</span>(-> 0)<span class="Apple-tab-span">	</span></span>// determines pitch as a scale degree in an ~stepsPerOctave equal tempered scale</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>degree: 0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// determines pitch as a scale degree within the scale ~scale</p>
-<p class="p2"><br></p>
-<p class="p1">The event also provides a set of transposition keys:</p>
-<p class="p20"><br></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>mtranspose: 0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// modal transposition of degree within a scale</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>root: 0.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// transposes root of the scale<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>gtranspose: 0.0<span class="Apple-tab-span">	</span></span>// gamut transposition within the ~stepsPerOctave equal tempered scale</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>ctranspose: 0.0<span class="Apple-tab-span">	</span></span>// chromatic transposition within the 12 tone equal tempered scale</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>harmonic: 1.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// multiplies the frequency determined by ~midinote, typically to an overtone</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>detune: 0.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// directly offsets frequency by adding this value</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>midiToCps<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// a function taking a MIDI note number and turning it into frequency</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Normally this is _.midicps, but you can override it for non-ET tunings</p>
-<p class="p2"><br></p>
-<p class="p20"><br></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>mtranspose: <span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// modal transposition of degree</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>gtranspose: <span class="Apple-tab-span">	</span>0.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// gamut transposition of note within a ~stepsPerOctave e.t. scale</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>ctranspose: <span class="Apple-tab-span">	</span>0.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// chromatic transposition of midinote within 12 tone e.t. scale</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>octave: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// octave offest of note</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>root: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// root of the scale</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>degree: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// degree in scale</p>
-<p class="p18"><span class="Apple-tab-span">	</span>scale: #[0, 2, 4, 5, 7, 9, 11] <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// diatonic major scale</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>stepsPerOctave: 12.0</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>detune: 0.0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// detune in Hertz</p>
-<p class="p18"><span class="Apple-tab-span">	</span>harmonic: 1.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// harmonic ratio</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>octaveRatio: 2.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// size of the octave (can be used with the <a href="Scale.html"><span class="s3">Scale</span></a> class)</p>
-<p class="p20"><br></p>
-<p class="p20"><br></p>
-<p class="p1">The event calculates with these keys to derive parameters needed for the synth:</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>note: #{<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// note is the note in halftone steps from the root</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(~degree + ~mtranspose).degreeToKey(~scale, ~stepsPerOctave);</p>
-<p class="p18"><span class="Apple-tab-span">	</span>}</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>midinote: #{<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// midinote is the midinote (continuous intermediate values)</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>((~note.value + ~gtranspose + ~root) / ~stepsPerOctave + ~octave) * 12.0;<span class="Apple-converted-space"> </span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>}</p>
-<p class="p18"><span class="Apple-tab-span">	</span>freq: #{<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(~midinote.value + ~ctranspose).midicps * ~harmonic;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>}</p>
-<p class="p21"><span class="s2"><span class="Apple-tab-span">	</span>detunedFreq: #{<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// finally sent as "freq" to the synth as a parameter, if given</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~freq.value + ~detune</p>
-<p class="p18"><span class="Apple-tab-span">	</span>}</p>
-<p class="p20"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Event types</b></p>
-<p class="p2"><br></p>
-<p class="p1">An Event responds to a play message by evaluating ~play in the event, which by default uses the event's type to define the action to be performed. See <a href="Event_types.html"><span class="s3">Event_types</span></a>.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Event_types.html b/Help/Collections/Event_types.html
deleted file mode 100644
index 1ef8524..0000000
--- a/Help/Collections/Event_types.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 46.0px; text-indent: -46.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 152.0px; text-indent: -152.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 13.0px Helvetica}
-span.s3 {color: #001bb9}
-span.s4 {color: #2c7014}
-span.s5 {text-decoration: underline ; color: #001bb9}
-span.s6 {font: 12.0px Monaco}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #000000}
-span.s9 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Event types<span class="Apple-tab-span">	</span></b></span><span class="s2"><b><span class="Apple-tab-span">	</span></b></span><b>Different ways that an Event can "play"</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Note: this helpfile is incomplete.</b></p>
-<p class="p2"><br></p>
-<p class="p1">An <a href="Event.html"><span class="s3">Event</span></a> responds to a play message by evaluating ~play in the event, and the default behaviour of ~play is determined by the value of ~type. Commonly-used event types include:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>\note</b> - used to instantiate a synth on the server, with specified arguments, and later to free it. The choice of <a href="../ServerArchitecture/SynthDef.html"><span class="s3">SynthDef</span></a> is specified using the <span class="s4">\instrument</span> key. This event type is commonly implicit in much <a href="../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s3">Pattern</span></a> usage.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>\set</b> - used to set parameters of some already-running node(s). (See also: note in <a href="../Streams-Patterns-Events/Patterns/Pmono.html"><span class="s5">Pmono</span></a> helpfile)</p>
-<p class="p2"><br></p>
-<p class="p1">A more complete list of event types is given further down this document. To see how event types are normally invoked, here is a slightly simplified version of the default definition of<span class="Apple-converted-space">  </span><span class="s6">~play</span> as defined in the Event class:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="Apple-tab-span">	</span>~eventTypes[~type].value(server); },</p>
-<p class="p5"><br></p>
-<p class="p1">The function uses the value of <span class="s7">~</span><span class="s6">type</span><span class="s7"> </span>to select a function from the <a href="Dictionary.html"><span class="s3">Dictionary</span></a> held in <span class="s7">~</span><span class="s6">eventTypes</span><span class="s7">.</span> The collection of eventTypes can be readily extended using <b>*addEventType(key, function)</b>. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">Here is an example the uses the event types<span class="Apple-converted-space">  </span><span class="s6">\group </span>and<span class="s6"> \note</span>:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span>(type: </span><span class="s4">\group</span><span class="s8">, id: 2).play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create a group with nodeID 2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(type: <span class="s4">\note</span>, freq: 500, group: 2).play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// play a synth in that group</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Here is a listing of currently existing event types:</p>
-<p class="p7"><br></p>
-<p class="p4"><span class="Apple-converted-space"> </span>group<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>creates group, ~id must be specified</p>
-<p class="p4"><span class="Apple-converted-space"> </span>note<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~instrument specifies synthdef</p>
-<p class="p4"><span class="Apple-converted-space"> </span>note_score<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>midi</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>monoNote<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>used by Pmono</p>
-<p class="p4"><span class="Apple-converted-space"> </span>monoSet<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>used by Pmono</p>
-<p class="p4"><span class="Apple-converted-space"> </span>monoOff<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>on<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>play synth, ~id must be specified</p>
-<p class="p4"><span class="Apple-converted-space"> </span>off <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>release synth (or free if no gate)</p>
-<p class="p4"><span class="Apple-converted-space"> </span>kill<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>free synth</p>
-<p class="p4"><span class="Apple-converted-space"> </span>set<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set parameter of synth</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>rest<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>do nothing</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>bus<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>write ~array to control buses starting at ~out</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>alloc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>allocate ~bufnum with ~numframes and ~numchannels</p>
-<p class="p4"><span class="Apple-converted-space"> </span>free<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>free ~bufnum</p>
-<p class="p4"><span class="Apple-converted-space"> </span>gen<span class="Apple-tab-span">	</span><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>send ~gencmd to ~bufnum</p>
-<p class="p4"><span class="Apple-converted-space"> </span>load<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>load ~filename starting at ~frame into ~bufnum</p>
-<p class="p4"><span class="Apple-converted-space"> </span>read</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>setProperties<span class="Apple-converted-space">  </span>~receiver, ~args<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>sends setter messages to ~receiver for each key in ~args that has a nonNil value in the Event.</p>
-<p class="p9"><span class="Apple-converted-space"> </span>tree<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>creates a tree of groups. ~tree can be an array of nodeIDs, and may contain associations to further nested arrays.</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-converted-space"> </span>phrase<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instead of playing a single synth from a SynthDef with ~instrument, it looks up a <a href="../Libraries/JITLib/Patterns/Pdef.html"><span class="s3">Pdef</span></a> and plays a cluster of sounds.</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/Collections/FloatArray.html b/Help/Collections/FloatArray.html
deleted file mode 100644
index 63a1ef7..0000000
--- a/Help/Collections/FloatArray.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #000000}
-span.s2 {color: #0026b4}
-span.s3 {color: #002fe0}
-span.s4 {color: #0033f1}
-</style>
-</head>
-<body>
-<p class="p1"><b>Int8Array, Int16Array, Int32Array, FloatArray,</b> <b>DoubleArray, SymbolArray</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s2"><b> :</b></span><span class="s1"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><b> : </b><a href="ArrayedCollection.html"><b>ArrayedCollection</b></a><span class="s3"> : <a href="RawArray.html"><span class="s4"><b>RawArray</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p5">These classes implement arrays whose indexed slots are all of the same type.</p>
-<p class="p4"><br></p>
-<p class="p5">Int8Array - 8 bit integer</p>
-<p class="p5">Int16Array - 16 bit integer</p>
-<p class="p5">Int32Array - 32 bit integer</p>
-<p class="p5">FloatArray - 32 bit floating point</p>
-<p class="p5">DoubleArray - 64 bit floating point</p>
-<p class="p5">SymbolArray - symbols</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Harmonics.html b/Help/Collections/Harmonics.html
deleted file mode 100644
index 2af2976..0000000
--- a/Help/Collections/Harmonics.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Harmonics</b></p>
-<p class="p2"><br></p>
-<p class="p3">Harmonics objects are convenient factories for creating Arrays that are used to fill buffers using the b_gen sine fill commands on the server.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(size)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Create a new Harmonics array of size. Nothing is filled in for you, until instance methods are applied.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">a = </span><span class="s2">Harmonics</span><span class="s1">.new(16); </span>// just returns an instance of Harmonics with size</p>
-<p class="p6"><br></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ramp(start, step)</b></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">a.ramp(1.0, 1.0); </span>// returns a harmonic series</p>
-<p class="p7"><br></p>
-<p class="p8">b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p5">// harmonic series for freqs, ramp down for amps</p>
-<p class="p8">b.sine2(a.ramp(1.0, 1.0).postln, a.ramp(0.5, -0.025).postln, <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p7"><br></p>
-<p class="p8">z = <span class="s2">SynthDef</span>(<span class="s3">"help-Osc"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Osc</span>.ar(bufnum, 200, 0, 0.5)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">});</p>
-<p class="p7"><br></p>
-<p class="p8">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p8">y.free;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>decay(k) - 1 / ((i+1 ** k)</b></p>
-<p class="p2"><br></p>
-<p class="p9">a.decay(1.0);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0).postln, a.decay(1.0).postln, <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">y.free;</p>
-<p class="p10"><br></p>
-<p class="p3"><b>geom(k) - 1 / (i ** k)</b></p>
-<p class="p2"><br></p>
-<p class="p9">a.geom(1.2);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0).postln, a.geom(1.2).postln, <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">y.free;</p>
-<p class="p10"><br></p>
-<p class="p3"><b>formant(center, width) - create a formant like structure</b></p>
-<p class="p2"><br></p>
-<p class="p9">a.formant(6, 3);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.formant(12, 3).postln, a.geom(1.2), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">y.free;</p>
-<p class="p10"><br></p>
-<p class="p3"><b>teeth(spacing, start)</b></p>
-<p class="p2"><br></p>
-<p class="p9">a.teeth(6, 3);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.teeth(2, 3).postln, a.geom(1.2), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.teeth(4, 1).postln, a.geom(1.2), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.teeth(1, 3).postln, a.geom(1.2), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.teeth(2, 3).postln, a.geom(1.2), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y.free;</p>
-<p class="p10"><br></p>
-<p class="p3"><b>cutoff(n) - </b>returns 1.0 to the nth place, fills the rest with 0.0</p>
-<p class="p2"><br></p>
-<p class="p9">a.cutoff(3);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.cutoff(3), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.cutoff(3), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.cutoff(5), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.cutoff(1), <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y.free;</p>
-<p class="p10"><br></p>
-<p class="p3"><b>shelf(start, end, startLevel, endLevel)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p9">a.shelf(0, 6, 1, 0);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.shelf(0, 6, 1, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.shelf(0, 11, 1, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.shelf(2, 6, 1, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.shelf(6, 8, 1, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y.free;</p>
-<p class="p10"><br></p>
-<p class="p3"><b>sine(wavelength, iphase, mul, add)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p9">a.sine(8, 0, 1, 0);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.sine(8, 0, 1, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.sine(4, 0, 1, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.sine(2.2, 0.5pi, 0.4, 0.2).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.sine(pi, 0.25pi, 0.5, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y.free;</p>
-<p class="p10"><br></p>
-<p class="p3"><b>pulse(wavelength, iphase, duty, mul, add)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p9">a.pulse(8, 0, 2, 1, 0);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.pulse(8, 0, 2, 1, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y = z.play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.pulse(8, 0, 2, 1, 0).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.pulse(4, 0, 2, 0.4, 0.2).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p9">b.sine2(a.ramp(1.0, 1.0), a.pulse(7, 0.5pi, 3, 0.5, 0.1).postln , <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p10"><br></p>
-<p class="p9">y.free;</p>
-<p class="p10"><br></p>
-<p class="p3"><b>random methods:</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>rand(lo, hi)</b></p>
-<p class="p3"><b>exprand(lo, hi)</b></p>
-<p class="p3"><b>linrand(lo, hi)</b></p>
-<p class="p3"><b>rand2(val)</b></p>
-<p class="p3"><b>coin(prob)</b></p>
-</body>
-</html>
diff --git a/Help/Collections/IdentityBag.html b/Help/Collections/IdentityBag.html
deleted file mode 100644
index b2abdc2..0000000
--- a/Help/Collections/IdentityBag.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #0000bf}
-span.s5 {color: #0025b2}
-span.s6 {color: #007300}
-span.s7 {color: #982316}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>IdentityBag<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>counted set</b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="Collection.html"><b>Collection</b></a><b> </b><span class="s2"><b>: </b><a href="Bag.html"><span class="s3"><b>Bag</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">An IdentityBag is an unordered collection of objects.<span class="Apple-converted-space">  </span>In some languages it is referred to as a counted set.<span class="Apple-converted-space">  </span>A Bag keeps track of the number of times objects are inserted and requires that objects be removed the same number of times. There is only one instance of an object in a Bag even if the object has been added to the Bag multiple times (test is for <b>identity</b>).</p>
-<p class="p2"><br></p>
-<p class="p4">The contents of a IdentityBag are unordered. You must not depend on the order of items in a set.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Adding and Removing:</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>add(anObject)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Add anObject to the Bag. A Bag may contain multiple entries of the same object.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s4">IdentityBag</span>[1, 2, 3].add(4);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s4">IdentityBag</span>[1, 2, 3].add(3);</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s4">IdentityBag</span><span class="s2">[</span>"abc"<span class="s2">, </span>"def"<span class="s2">, </span>"ghi"<span class="s2">].add(</span>"jkl"<span class="s2">);</span></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s4">IdentityBag</span><span class="s2">[</span>"abc"<span class="s2">, </span>"def"<span class="s2">, </span>"ghi"<span class="s2">].add(</span>"def"<span class="s2">);</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>remove(anObject)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Remove anObject from the IdentityBag.</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s5">IdentityBag</span>[1, 2, 3].remove(3);</p>
-<p class="p6"><br></p>
-<p class="p4"><b>contents</b></p>
-<p class="p6"><br></p>
-<p class="p4">Returns the dictionary that stores the objects in pairs (obj -> numberOfObjects)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s4">IdentityBag</span>[<span class="s6">\a</span>, <span class="s6">\b</span>, <span class="s6">\c</span>, <span class="s6">\c</span>].contents;</p>
-<p class="p6"><br></p>
-<p class="p11"><br></p>
-<p class="p5"><b>Iteration:</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>do(function)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Evaluates function for each item in the IdentityBag.</p>
-<p class="p4">The function is passed two arguments, the item and an integer index.</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s5">IdentityBag</span>[1, 2, 3, 300].do({ <span class="s5">arg</span> item, i; item.postln });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11"><br></p>
-<p class="p5"><b>Difference between Bag and IdentityBag:</b></p>
-<p class="p6"><br></p>
-<p class="p12">// the two strings are equal, but not identical</p>
-<p class="p9">"something"<span class="s2"> == </span>"something"<span class="s2">; </span><span class="s7">// true</span></p>
-<p class="p9">"something"<span class="s2"> === </span>"something"<span class="s2"> </span><span class="s7">// false</span></p>
-<p class="p13"><br></p>
-<p class="p10">a = <span class="s5">Bag</span>.new;</p>
-<p class="p9"><span class="s2">a.add(</span>"something"<span class="s2">);</span></p>
-<p class="p9"><span class="s2">a.add(</span>"something"<span class="s2">);</span></p>
-<p class="p12"><span class="s2">a.contents; </span>// only one object in the bag really</p>
-<p class="p13"><br></p>
-<p class="p14"><span class="s2">a = </span>IdentityBag<span class="s2">.new;</span></p>
-<p class="p9"><span class="s2">a.add(</span>"something"<span class="s2">);</span></p>
-<p class="p9"><span class="s2">a.add(</span>"something"<span class="s2">);</span></p>
-<p class="p12"><span class="s2">a.contents; </span>// two objects in the bag</p>
-<p class="p15"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/IdentityDictionary.html b/Help/Collections/IdentityDictionary.html
deleted file mode 100644
index e12e0d2..0000000
--- a/Help/Collections/IdentityDictionary.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #0000bf}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>IdentityDictionary<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>associative collection mapping keys to values</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a><b> : </b><a href="Set.html"><b>Set</b></a><b> : </b><a href="Dictionary.html"><b>Dictionary</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">An IdentityDictionary is an associative collection mapping keys to values.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Keys match only if they are<b> identical objects</b>. (i.e. === returns true.)</p>
-<p class="p1">(In Dictionary, keys match if they are equal valued. This makes IdentityDictionary faster than <a href="Dictionary.html"><span class="s3">Dictionary</span></a>)</p>
-<p class="p1">The contents of a Dictionary are <b>unordered</b>.<span class="Apple-converted-space">  </span>You must not depend on the order of items in a Dictionary.</p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="Environment.html"><span class="s3">Environment</span></a>, <a href="Event.html"><span class="s3">Event</span></a> (more method documentation in superclasses)</p>
-<p class="p2"><br></p>
-<p class="p1">Often, the subclass Event is used as an IdentityDictionary, because there is a syntactical shortcut:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">a = (); </span>// return a new Event.</p>
-<p class="p5">a.put(<span class="s4">\foo</span>, 2.718);</p>
-<p class="p5">a.at(<span class="s4">\foo</span>);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (n, proto, parent, know)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The <b>parent</b> and <b>proto</b> instance variables allow additional IdentityDictionary's to provide<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default values. The precedence order for determining the value of a key is the IdentityDictionary,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>its prototype, its parent.</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>When the instance variable <b>know </b>is <b>true</b>, the IdentityDictionary responds to unknown messages<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>by looking up the selector and evaluating the result with the dictionary as an argument.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>For example:</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = </span>IdentityDictionary<span class="s2">(know: </span>true<span class="s2">);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.put(<span class="s4">\foo</span>, { <span class="s5">| x |</span> (<span class="s6">"the argument is:"</span> + x).postln });</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.foo;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p11"><b>Accessing Instance Variables</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>proto_(IdentityDictionary)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>proto</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>parent_(IdentityDictionary)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>parent</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>know_(flag)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>know</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b>Methods</b></p>
-<p class="p12"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>IdentityDictionary reimplements the following methods of <a href="Dictionary.html"><span class="s3">Dictionary</span></a>:</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>at (key)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>put (key, value)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>includesKey (key)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>findKeyForValue (argValue)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>scanFor (argKey)</b></p>
-<p class="p9"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>putGet (key, newValue)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>sets key to newValue, returns the previous value of key</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.cleanUpMethod;</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>The following three methods provide support for <a href="../Scheduling/Quant.html"><span class="s3">Quant</span></a></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>nextTimeOnGrid (clock)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>asQuant</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>timingOffset</b></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p11"><b>Examples</b></p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>IdentityDictionary is often used to assign names to instances of a particular class.<span class="Apple-converted-space">  </span>For example,</p>
-<p class="p8"><span class="Apple-tab-span">	</span>the proxy classes (<a href="../Libraries/JITLib/Patterns/Pdef.html"><span class="s3">Pdef</span></a>, <a href="../Libraries/JITLib/Patterns/Pdefn.html"><span class="s3">Pdefn</span></a>, <a href="../Libraries/JITLib/Patterns/Tdef.html"><span class="s3">Tdef</span></a>, <a href="../Libraries/JITLib/nodeproxy/Ndef.html"><span class="s3">Ndef</span></a>, <a href="../Libraries/JITLib/Patterns/Fdef.html"><span class="s3">Fdef</span></a>), SynthDefLib, and <a href="../Control/NodeWatcher.html"><span class="s3">NodeWatcher</span></a> all have class</p>
-<p class="p8"><span class="Apple-tab-span">	</span>variables named <b>all </b>implemented as IdentityDictionary's.</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/IdentitySet.html b/Help/Collections/IdentitySet.html
deleted file mode 100644
index 19fe285..0000000
--- a/Help/Collections/IdentitySet.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0021e7}
-span.s3 {color: #001bb9}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>IdentitySet<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a set according to identity</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Collection.html"><span class="s2"><b>Collection</b></span></a><span class="s3"><b> : </b><a href="Set.html"><b>Set</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">An IdentitySet is a collection of objects, no two of which are the same object (aka. "identical").</p>
-<p class="p1">Most of its methods are inherited (see <a href="Collection.html"><span class="s3">Collection</span></a> and <a href="Set.html"><span class="s3">Set</span></a> classes).</p>
-<p class="p1">The contents of an IdentitySet are <b>unordered</b>. You must not depend on the order of items in an IdentitySet.</p>
-<p class="p1">For an ordered set, see <a href="OrderedIdentitySet.html"><span class="s3">OrderedIdentitySet</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">IdentitySets are faster than Sets because testing for identity is much faster than testing for</p>
-<p class="p1">equality. Different classes may implement equality in different ways, but identity can be determined</p>
-<p class="p1">just by comparing the object addresses. This allows some methods of IdentitySet to be implemented</p>
-<p class="p1">by fast primitives.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4">See also: <a href="IdentitySet.html"><span class="s5">IdentitySet</span></a>, <a href="List.html"><span class="s5">List</span></a>, <a href="Dictionary.html"><span class="s5">Dictionary</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Adding and Removing:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>add(anObject)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Add anObject to the IdentitySet.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>An object which is equal to an object already in the IdentitySet will not be added.</p>
-<p class="p6"><br></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>IdentitySet</span>[1, 2, 3].add(4);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">IdentitySet</span>[1, 2, 3].add(3);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// the two strings are equal but not identical</p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">IdentitySet</span><span class="s4">[</span>"abc"<span class="s4">, </span>"def"<span class="s4">, </span>"ghi"<span class="s4">].add(</span>"def"<span class="s4">); <span class="Apple-converted-space"> </span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// symbols are guaranteed to be identical if they are equal</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">IdentitySet</span><span class="s4">[</span>'abc'<span class="s4">, </span>'def'<span class="s4">, </span>'ghi'<span class="s4">].add(</span>'def'<span class="s4">); <span class="Apple-converted-space"> </span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">IdentitySet</span><span class="s4">[</span>'abc'<span class="s4">, </span>'def'<span class="s4">, </span>'ghi'<span class="s4">].add(</span>'jkl'<span class="s4">);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>remove(anObject)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Remove anObject from the IdentitySet.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">IdentitySet</span>[1, 2, 3].remove(3);</p>
-<p class="p6"><br></p>
-<p class="p13"><br></p>
-<p class="p5"><b>Iteration:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Evaluates function for each item in the IdentitySet.<span class="Apple-converted-space">  </span>You must not depend on the order of items.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The function is passed two arguments, the item and an integer index.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">IdentitySet</span>[1, 2, 3, 300].do { <span class="s3">|item, i|</span> item.postln };</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Finding an element:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>findMatch(item)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Returns item if it is in the collection, otherwise returns nil.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span>a = <span class="s3">IdentitySet</span>[1, 2, 3, 300];</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.findMatch(1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.findMatch(1.5);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">This is fairly efficient. compare the following benchmarks:</p>
-<p class="p2"><br></p>
-<p class="p10">// comparison of array indexing and identity set lookup</p>
-<p class="p8">(</p>
-<p class="p14">f = { <span class="s7">|n=4|</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s7">var</span> x, y, i;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>x = (0..n);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>y = x.as(<span class="s7">IdentitySet</span>);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>i = x.choose;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>bench { 100.do { x[i] } };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>bench { 100.do { y.scanFor(i) } };</p>
-<p class="p14">}</p>
-<p class="p8">);</p>
-<p class="p9"><br></p>
-<p class="p8">f.(4)</p>
-<p class="p8">f.(8)</p>
-<p class="p8">f.(100)</p>
-<p class="p8">f.(10000)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10">// you can use IdentitySet to efficiently remove identical duplicates from an array:</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> e, f, g, h;</p>
-<p class="p11"><span class="s4">e = </span>"such"<span class="s4">; f = </span>"fallacy"<span class="s4">; g = </span>"is"<span class="s4">; h = </span>"common"<span class="s4">;</span></p>
-<p class="p8">a = [e, e, f, g, e, h, e];</p>
-<p class="p8">);</p>
-<p class="p10"><span class="s4">a.as(</span><span class="s3">IdentitySet</span><span class="s4">);<span class="Apple-tab-span">	</span></span>// convert to set</p>
-<p class="p10"><span class="s4">a.as(</span><span class="s3">Set</span><span class="s4">).as(</span><span class="s3">Array</span><span class="s4">); </span>// and convert back</p>
-<p class="p2"><br></p>
-<p class="p10">// note that the following behaves differently:</p>
-<p class="p11"><span class="s4">a = [ </span>"such"<span class="s4">, </span>"such"<span class="s4">, </span>"fallacy"<span class="s4">, </span>"is"<span class="s4">, </span>"such"<span class="s4">, </span>"common"<span class="s4">, </span>"such"<span class="s4"> ]</span></p>
-<p class="p10"><span class="s4">a.as(</span><span class="s3">IdentitySet</span><span class="s4">);<span class="Apple-tab-span">	</span></span>// convert to set. All elements are still here.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Different strings may look the same, but be different objects.<span class="Apple-converted-space"> </span></p>
-<p class="p15"><br></p>
-<p class="p10">// To remove equals in stead of identicals, use Set:</p>
-<p class="p8">a.as(<span class="s3">Set</span>);</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Int16Array.html b/Help/Collections/Int16Array.html
deleted file mode 100644
index 095f80d..0000000
--- a/Help/Collections/Int16Array.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-</style>
-</head>
-<body>
-<p class="p1"><b>Int8Array, Int16Array, Int32Array, FloatArray,</b> <b>DoubleArray, SymbolArray</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: RawArray</b></p>
-<p class="p4"><br></p>
-<p class="p3">These classes implement arrays whose indexed slots are all of the same type.</p>
-<p class="p4"><br></p>
-<p class="p3">Int8Array - 8 bit integer</p>
-<p class="p3">Int16Array - 16 bit integer</p>
-<p class="p3">Int32Array - 32 bit integer</p>
-<p class="p3">FloatArray - 32 bit floating point</p>
-<p class="p3">DoubleArray - 64 bit floating point</p>
-<p class="p3">SymbolArray - symbols</p>
-<p class="p4"><br></p>
-<p class="p3">These classes implement only one method.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*readNew(file)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Called by *read to read<span class="Apple-converted-space">  </span>the entire file as an array of this class' type and return a new instance.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Int32Array.html b/Help/Collections/Int32Array.html
deleted file mode 100644
index 095f80d..0000000
--- a/Help/Collections/Int32Array.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-</style>
-</head>
-<body>
-<p class="p1"><b>Int8Array, Int16Array, Int32Array, FloatArray,</b> <b>DoubleArray, SymbolArray</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: RawArray</b></p>
-<p class="p4"><br></p>
-<p class="p3">These classes implement arrays whose indexed slots are all of the same type.</p>
-<p class="p4"><br></p>
-<p class="p3">Int8Array - 8 bit integer</p>
-<p class="p3">Int16Array - 16 bit integer</p>
-<p class="p3">Int32Array - 32 bit integer</p>
-<p class="p3">FloatArray - 32 bit floating point</p>
-<p class="p3">DoubleArray - 64 bit floating point</p>
-<p class="p3">SymbolArray - symbols</p>
-<p class="p4"><br></p>
-<p class="p3">These classes implement only one method.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*readNew(file)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Called by *read to read<span class="Apple-converted-space">  </span>the entire file as an array of this class' type and return a new instance.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Int8Array.html b/Help/Collections/Int8Array.html
deleted file mode 100644
index 095f80d..0000000
--- a/Help/Collections/Int8Array.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-</style>
-</head>
-<body>
-<p class="p1"><b>Int8Array, Int16Array, Int32Array, FloatArray,</b> <b>DoubleArray, SymbolArray</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: RawArray</b></p>
-<p class="p4"><br></p>
-<p class="p3">These classes implement arrays whose indexed slots are all of the same type.</p>
-<p class="p4"><br></p>
-<p class="p3">Int8Array - 8 bit integer</p>
-<p class="p3">Int16Array - 16 bit integer</p>
-<p class="p3">Int32Array - 32 bit integer</p>
-<p class="p3">FloatArray - 32 bit floating point</p>
-<p class="p3">DoubleArray - 64 bit floating point</p>
-<p class="p3">SymbolArray - symbols</p>
-<p class="p4"><br></p>
-<p class="p3">These classes implement only one method.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*readNew(file)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Called by *read to read<span class="Apple-converted-space">  </span>the entire file as an array of this class' type and return a new instance.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Interval.html b/Help/Collections/Interval.html
deleted file mode 100644
index b1e45f9..0000000
--- a/Help/Collections/Interval.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Interval<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>range of integers<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Collection</b></p>
-<p class="p2"><br></p>
-<p class="p1">An Interval is a range of integers from a starting value to an ending value by some step value.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Creation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(start, end, step)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Create a new Interval.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">Interval</span>(10, 30, 4);</p>
-<p class="p5"><span class="s3">10 to: 30; </span>// the message to creates an interval with step 1</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Instance Variables</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b><>start<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">The starting value of the interval.</p>
-<p class="p2"><br></p>
-<p class="p1"><b><>end<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">The ending value of the interval.</p>
-<p class="p2"><br></p>
-<p class="p1"><b><>step<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">The step value of the interval.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>size</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return the number of items in the interval.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">Interval</span>(10, 30, 4).size.postln;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>at(index)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return the indexed item in the interval.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">Interval</span>(10, 30, 4).at(3).postln;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Evaluates function for each item in the interval.</p>
-<p class="p1">The function is passed two arguments, the item and an integer index.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">Interval</span>(10, 30, 4).do({ <span class="s2">arg</span> item, i; item.postln });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Library.html b/Help/Collections/Library.html
deleted file mode 100644
index 828ed93..0000000
--- a/Help/Collections/Library.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {text-decoration: underline}
-span.s5 {text-decoration: underline ; color: #0021e7}
-span.s6 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Library<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>keeping objects in a central place</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s3"><b>Object</b></span></a><b> : </b><a href="Collection.html"><b>Collection</b></a><b> : </b><a href="MultiLevelIdentityDictionary.html"><b>MultiLevelIdentityDictionary</b></a><b> : </b><a href="LibraryBase.html"><span class="s3"><b>LibraryBase</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">Library is a global MultiLevelIdentityDictionary.</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2">see also: <a href="Archive.html"><span class="s4">Archive</span></a></span><span class="s3">, <a href="LibraryBase.html"><span class="s5">LibraryBase</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Methods: see superclass.</b></p>
-<p class="p4"><br></p>
-<p class="p1">The last argument to put is the object being inserted:</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Library</span><span class="s2">.put(</span><span class="s6">\multi</span><span class="s2">, </span><span class="s6">\level</span><span class="s2">, </span><span class="s6">\addressing</span><span class="s2">, </span><span class="s6">\system</span><span class="s2">, </span>"i'm the thing you are putting in here"<span class="s2">);</span></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">Library</span><span class="s2">.at(</span>\multi<span class="s2">, </span>\level<span class="s2">, </span>\addressing<span class="s2">, </span>\system<span class="s2">).postln;</span></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">Library</span><span class="s2">.atList([</span>\multi<span class="s2">, </span>\level<span class="s2">, </span>\addressing<span class="s2">, </span>\system<span class="s2">]).postln;</span></p>
-<p class="p2"><br></p>
-<p class="p1">The Library can be used as a place to store data that you want globally accesible.<span class="Apple-converted-space">  </span>Its an alternative to using class variables.<span class="Apple-converted-space">  </span>Its a nice place to store menus, annotations, and commonly reusable functions.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>postTree</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>post a formatted description of the entire library</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s3">Library</span>.postTree;</p>
-</body>
-</html>
diff --git a/Help/Collections/LibraryBase.html b/Help/Collections/LibraryBase.html
deleted file mode 100644
index 7e66180..0000000
--- a/Help/Collections/LibraryBase.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LibraryBase<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>global storage base class</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s3"><b>Object</b></span></a><b> : </b><a href="Collection.html"><b>Collection</b></a><b> : </b><a href="MultiLevelIdentityDictionary.html"><b>MultiLevelIdentityDictionary</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">Base class for <a href="Library.html"><span class="s4">Library</span></a> and <a href="Archive.html"><span class="s4">Archive</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">There is only one global instance: Archive.global, or Library.global, which is initialized automatically in the subclasses.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*global</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*global_(obj)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>subclass responsibility</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*clear</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>clear the dictionary</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*at(key1, key2, ...)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>access the dictionary at a path with keys. The keys may be any object, but are usually <a href="../Core/Symbol.html"><span class="s4">Symbol</span></a>s</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*put(key1, key2, ... obj)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>store an object in the dictionary at a path, given as a list of keys and the object to be stored as last argument. The keys may be any object, but are usually Symbols.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*atList(args)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>access the dictionary at a path, given as a list of keys. The keys may be any object, but are usually Symbols.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*putList(args)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>store an object in the dictionary at a path, given as a list of keys and the object to be stored as last argument. The keys may be any object, but are usually Symbols.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Examples</b></p>
-<p class="p4"><br></p>
-<p class="p10">// an example from the subclass Library:</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s5">Library</span><span class="s2">.put(</span><span class="s6">\multi</span><span class="s2">, </span><span class="s6">\level</span><span class="s2">, </span><span class="s6">\addressing</span><span class="s2">, </span><span class="s6">\system</span><span class="s2">, </span>"i'm the thing you are putting in here"<span class="s2">);</span></p>
-<p class="p11"><br></p>
-<p class="p13"><span class="s5">Library</span><span class="s2">.at(</span>\multi<span class="s2">, </span>\level<span class="s2">, </span>\addressing<span class="s2">, </span>\system<span class="s2">).postln;</span></p>
-<p class="p11"><br></p>
-<p class="p13"><span class="s5">Library</span><span class="s2">.atList([</span>\multi<span class="s2">, </span>\level<span class="s2">, </span>\addressing<span class="s2">, </span>\system<span class="s2">]).postln;</span></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/LinkedList.html b/Help/Collections/LinkedList.html
deleted file mode 100644
index af8c7fe..0000000
--- a/Help/Collections/LinkedList.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #002eaf}
-span.s4 {color: #002fe0}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LinkedList<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>doubly linked list</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s3"><b> :</b></span><span class="s2"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><span class="s4"><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1">LinkedList implements a doubly linked list.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1">Most methods are inherited from the superclasses.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>addFirst(obj)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Add an item to the head of the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>add(obj)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Add an item to the tail of the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>remove(obj)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Remove an item from the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>pop</b></p>
-<p class="p2"><br></p>
-<p class="p1">Remove and return the last item in the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>popFirst</b></p>
-<p class="p2"><br></p>
-<p class="p1">Remove and return the first item in the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>first</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return the first item in the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>last</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return the last item in the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>at(index)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return the item at the given index in the list.<span class="Apple-converted-space"> </span></p>
-<p class="p1">This requires a scan of the list and so is O(n).</p>
-<p class="p2"><br></p>
-<p class="p1"><b>put(index, obj)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Put the item at the given index in the list.<span class="Apple-converted-space"> </span></p>
-<p class="p1">This requires a scan of the list and so is O(n).</p>
-<p class="p2"><br></p>
-<p class="p1"><b>removeAt(index)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Remove and return the item at the given index in the list.</p>
-<p class="p1">This requires a scan of the list and so is O(n).</p>
-</body>
-</html>
diff --git a/Help/Collections/LinkedListNode.html b/Help/Collections/LinkedListNode.html
deleted file mode 100644
index 49283a7..0000000
--- a/Help/Collections/LinkedListNode.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0000ff}
-</style>
-</head>
-<body>
-<p class="p1"><b>LinkedListNode</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: </b><a href="../Core/Object.html"><span class="s1"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p3">LinkedListNode is used to implement the internal nodes of the <a href="LinkedList.html"><span class="s1">LinkedList</span></a> class.</p>
-<p class="p3">You should not need to deal with a LinkedListNode directly.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/List.html b/Help/Collections/List.html
deleted file mode 100644
index 11e2086..0000000
--- a/Help/Collections/List.html
+++ /dev/null
@@ -1,314 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; color: #ad140d}
-p.p10 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 42.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 42.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica; color: #001bb9; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #606060}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>List<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>list of items of variable size</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s3"><b> :</b></span><span class="s2"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">List is a subclass of SequenceableCollection with unlimited growth in size. Although not a subclass of <a href="Array.html"><span class="s3">Array</span></a> or its superclass <a href="ArrayedCollection.html"><span class="s3">ArrayedCollection</span></a> it uses an Array in its implementation and is in many cases interchangeable with one. (List implements many of the same methods as Array.)</p>
-<p class="p2"><br></p>
-<p class="p1">Arrays have a fixed maximum size. If you add beyond that size a new Array is created and returned, but you must use an assignment statement or the new array will be lost. (See the <b>Array </b>helpfile.) List has no size limitation and is thus more flexible, but has slightly more overhead.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">x = <span class="s3">Array</span>.new(3);<span class="Apple-converted-space"> </span></p>
-<p class="p4">y = <span class="s3">List</span>.new(3);<span class="Apple-converted-space"> </span></p>
-<p class="p4">5.do({ <span class="s3">arg</span> i; z = x.add(i); y.add(i); });<span class="Apple-converted-space"> </span></p>
-<p class="p4">x.postln; z.postln; y.postln;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p1">Many of List's methods are inherited from <a href="SequenceableCollection.html"><span class="s3"><b>SequenceableCollection</b></span></a><b> </b>or <a href="Collection.html"><span class="s3"><b>Collection</b></span></a><b> </b>and are documented in those helpfiles.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(size)</b></p>
-<p class="p6">Creates a List with the initial capacity given by <b>size</b>.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>*newClear(size)</b></p>
-<p class="p6">Creates a List with the initial capacity given by <b>size</b> and slots filled with nil.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>*copyInstance(aList)</b></p>
-<p class="p6">Creates a List by copying <b>aList's</b> array variable.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>*newUsing(anArray)</b></p>
-<p class="p6">Creates a List using <b>anArray</b>.</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>asArray</b></p>
-<p class="p6">Returns a new <b>Array</b> based upon this List.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>array</b></p>
-<p class="p6">Returns the List's Array, allowing it to be manipulated directly. This should only be necessary for exotic manipulations not implemented in List or its superclasses.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">x = <span class="s3">List</span>[1, 2, 3];</p>
-<p class="p8">x.array.add(<span class="s4">"foo"</span>);</p>
-<p class="p8">x.postln;</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p1"><b>array_(anArray)</b></p>
-<p class="p6">Sets the List's Array.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>at(index)</b></p>
-<p class="p6">Return the <b>item</b> at <b>index</b>.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">List</span>[ 1, 2, 3 ].at(0).postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>clipAt(index)</b></p>
-<p class="p6">Same as <b>at</b>, but values for <b>index</b> greater than the size of the List will be clipped to the last index.</p>
-<p class="p7"><br></p>
-<p class="p8">y = <span class="s3">List</span>[ 1, 2, 3 ];</p>
-<p class="p8">y.clipAt(13).postln;</p>
-<p class="p7"><span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>wrapAt(index)</b></p>
-<p class="p6">Same as <b>at</b>, but values for <b>index</b> greater than the size of the List will be wrapped around to 0.</p>
-<p class="p7"><br></p>
-<p class="p8">y = <span class="s3">List</span>[ 1, 2, 3 ];</p>
-<p class="p9"><span class="s2">y.wrapAt(3).postln; </span>// this returns the value at index 0</p>
-<p class="p9"><span class="s2">y.wrapAt(4).postln; </span>// this returns the value at index 1</p>
-<p class="p7"><br></p>
-<p class="p1"><b>foldAt(index)</b></p>
-<p class="p6">Same as <b>at</b>, but values for <b>index</b> greater than the size of the List will be folded back.</p>
-<p class="p7"><br></p>
-<p class="p8">y = <span class="s3">List</span>[ 1, 2, 3 ];</p>
-<p class="p9"><span class="s2">y.foldAt(3).postln; </span>// this returns the value at index 1</p>
-<p class="p9"><span class="s2">y.foldAt(4).postln; </span>// this returns the value at index 0</p>
-<p class="p9"><span class="s2">y.foldAt(5).postln; </span>// this returns the value at index 1</p>
-<p class="p7"><br></p>
-<p class="p1"><b>put(index, item)</b></p>
-<p class="p6">Put <b>item</b> at <b>index</b>, replacing what is there.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>clipPut(index, item)</b></p>
-<p class="p6">Same as <b>put</b>, but values for <b>index</b> greater than the size of the List will be clipped to the last index.</p>
-<p class="p7"><span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>wrapPut(index, item)</b></p>
-<p class="p6">Same as <b>put</b>, but values for <b>index</b> greater than the size of the List will be wrapped around to 0.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>foldPut(index)</b></p>
-<p class="p6">Same as <b>put</b>, but values for <b>index</b> greater than the size of the List will be folded back.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>add(item)</b></p>
-<p class="p6">Adds an <b>item</b> to the end of the List.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>addFirst(item)</b></p>
-<p class="p6">Inserts the <b>item</b> at the beginning of the List.</p>
-<p class="p10"><br></p>
-<p class="p1"><b>insert(index, item)</b></p>
-<p class="p6">Inserts the <b>item</b> into the contents of the List at the indicated <b>index</b>.</p>
-<p class="p10"><br></p>
-<p class="p1"><b>pop</b></p>
-<p class="p6">Remove and return the last element of the List.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>grow(sizeIncrease)</b></p>
-<p class="p6">Increase the size of the List by <b>sizeIncrease </b>number of slots.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>removeAt(index)</b></p>
-<p class="p6">Remove and return the element at <b>index</b>, shrinking the size of the List.</p>
-<p class="p7"><br></p>
-<p class="p8">y = <span class="s3">List</span>[ 1, 2, 3 ];<span class="Apple-converted-space"> </span></p>
-<p class="p8">y.removeAt(1);<span class="Apple-converted-space"> </span></p>
-<p class="p8">y.postln;</p>
-<p class="p7"><br></p>
-<p class="p1"><b>fill(value)</b></p>
-<p class="p6">Inserts the item into the contents of the receiver, possibly returning a new collection. Note the difference between this and Collection's *fill.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> z;</p>
-<p class="p8">z = <span class="s3">List</span>[1, 2, 3, 4];</p>
-<p class="p8">z.fill(4).postln;</p>
-<p class="p8">z.fill([1,2,3,4]).postln;</p>
-<p class="p8">)</p>
-<p class="p11"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p6">Iterate over the elements in order, calling the function for each element. The function is passed two arguments, the element and an index.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">List</span>[<span class="s5">'a'</span>, <span class="s5">'b'</span>, <span class="s5">'c'</span>].do({ <span class="s3">arg</span> item, i; [i, item].postln; });</p>
-<p class="p12"><br></p>
-<p class="p1"><b>reverseDo(function)</b></p>
-<p class="p6">Iterate over the elements in reverse order, calling the function for each element. The function is passed two arguments, the element and an index.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">List</span>[<span class="s5">'a'</span>, <span class="s5">'b'</span>, <span class="s5">'c'</span>].reverseDo({ <span class="s3">arg</span> item, i; [i, item].postln; });</p>
-<p class="p12"><br></p>
-<p class="p1"><b>pairsDo(function)</b></p>
-<p class="p6">Calls function for each subsequent pair of elements in the SequentialCollection.</p>
-<p class="p6">The function is passed the two elements and an index.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">List</span>[1, 2, 3, 4, 5, 6].pairsDo({ <span class="s3">arg</span> a, b; [a, b].postln; });</p>
-<p class="p7"><br></p>
-<p class="p1"><b>copyRange(start, end)</b></p>
-<p class="p6">Return a new List which is a copy of the indexed slots of the receiver from start to end.</p>
-<p class="p10"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> y, z;</p>
-<p class="p8">z = <span class="s3">List</span>[1, 2, 3, 4, 5];</p>
-<p class="p8">y = z.copyRange(1,3);</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p12"><br></p>
-<p class="p1"><b>copySeries(first, second, last)</b></p>
-<p class="p6">Return a new List consisting of the values starting at <b>first</b>, then every step of the distance between <b>first</b> and <b>second</b>, up until <b>last</b>.</p>
-<p class="p10"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> y, z;</p>
-<p class="p8">z = <span class="s3">List</span>[1, 2, 3, 4, 5, 6];</p>
-<p class="p8">y = z.copySeries(0, 2, 5);</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p12"><br></p>
-<p class="p1"><b>putSeries(first, second, last, value)</b></p>
-<p class="p6">Put <b>value</b> at every index starting at <b>first</b>, then every step of the distance between <b>first</b> and <b>second</b>, up until <b>last</b>.</p>
-<p class="p10"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> y, z;</p>
-<p class="p8">z = <span class="s3">List</span>[1, 2, 3, 4, 5, 6];</p>
-<p class="p8">y = z.putSeries(0, 2, 5, <span class="s4">"foo"</span>);</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p12"><br></p>
-<p class="p1"><b>reverse</b></p>
-<p class="p6">Return a new List whose elements are reversed.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> y, z;</p>
-<p class="p8">z = <span class="s3">List</span>[1, 2, 3, 4];</p>
-<p class="p8">y = z.reverse;</p>
-<p class="p8">z.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p12"><br></p>
-<p class="p1"><b>scramble</b></p>
-<p class="p6">Returns a new List whose elements have been scrambled. The receiver is unchanged.</p>
-<p class="p13"><br></p>
-<p class="p8"><span class="s3">List</span>[1, 2, 3, 4, 5, 6].scramble.postln;</p>
-<p class="p10"><br></p>
-<p class="p1"><b>mirror</b></p>
-<p class="p6">Return a new List which is the receiver made into a palindrome.<span class="Apple-converted-space"> </span></p>
-<p class="p6">The receiver is unchanged.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">List</span>[1, 2, 3, 4].mirror.postln;</p>
-<p class="p7"><br></p>
-<p class="p1"><b>mirror1</b></p>
-<p class="p6">Return a new List which is the receiver made into a palindrome with the last element removed.<span class="Apple-converted-space"> </span></p>
-<p class="p6">This is useful if the list will be repeated cyclically, the first element will not get played twice.</p>
-<p class="p6">The receiver is unchanged.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4].mirror1.postln;</p>
-<p class="p7"><br></p>
-<p class="p1"><b>mirror2</b></p>
-<p class="p6">Return a new List which is the receiver concatenated with a reversal of itself. The center element is duplicated. The receiver is unchanged.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4].mirror2.postln;</p>
-<p class="p7"><br></p>
-<p class="p1"><b>stutter(n)</b></p>
-<p class="p6">Return a new List whose elements are repeated n times. The receiver is unchanged.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3].stutter(2).postln;</p>
-<p class="p7"><br></p>
-<p class="p1"><b>rotate(n)</b></p>
-<p class="p6">Return a new List whose elements are in rotated order. Negative n values rotate left, postive n values rotate right. The receiver is unchanged.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4, 5].rotate(1).postln;</p>
-<p class="p12"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4, 5].rotate(-1).postln;</p>
-<p class="p12"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4, 5].rotate(3).postln;</p>
-<p class="p7"><br></p>
-<p class="p1"><b>pyramid</b></p>
-<p class="p6">Return a new List whose elements have been reordered via one of 10 "counting" algorithms.</p>
-<p class="p6">The algorithms are numbered 1 through 10. Run the examples to see the algorithms.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4].pyramid(1).postln;</p>
-<p class="p10"><br></p>
-<p class="p8">(</p>
-<p class="p8">10.do({ <span class="s3">arg</span> i;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Lis</span>t[1, 2, 3, 4].pyramid(i + 1).postcs;</p>
-<p class="p8">});</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>lace(length)</b></p>
-<p class="p6">Returns a new List whose elements are interlaced sequences of the elements of the receiver's subcollections, up to size <b>length</b>. The receiver is unchanged.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">x = <span class="s3">List</span>[ [1, 2, 3], 6, <span class="s3">List</span>[<span class="s4">"foo"</span>, <span class="s5">'bar'</span>]];</p>
-<p class="p8">y = x.lace(12);</p>
-<p class="p8">x.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p1"><b>permute(nthPermutation)</b></p>
-<p class="p6">Returns a new List whose elements are the <b>nthPermutation</b> of the elements of the receiver. The receiver is unchanged.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">x = <span class="s3">List</span>[ 1, 2, 3];</p>
-<p class="p8">6.do({|i| x.permute(i).postln;});</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p1"><b>wrapExtend(length)</b></p>
-<p class="p6">Returns a new List whose elements are repeated sequences of the receiver, up to size <b>length</b>. The receiver is unchanged.</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">x = <span class="s3">List</span>[ 1, 2, 3, <span class="s4">"foo"</span>, <span class="s5">'bar'</span> ];</p>
-<p class="p8">y = x.wrapExtend(9);</p>
-<p class="p8">x.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p1"><b>foldExtend(length)</b></p>
-<p class="p6">Same as <b>lace</b> but the sequences fold back on the list elements.</p>
-<p class="p12"><br></p>
-<p class="p8">(</p>
-<p class="p8">x = <span class="s3">List</span>[ 1, 2, <span class="s4">"foo"</span>];</p>
-<p class="p8">y = x.foldExtend(9);</p>
-<p class="p8">x.postln;</p>
-<p class="p8">y.postln;</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p1"><b>slide(windowLength, stepSize)</b></p>
-<p class="p6">Return a new List whose elements are repeated subsequences from the receiver.<span class="Apple-converted-space"> </span></p>
-<p class="p6">Easier to demonstrate than explain.</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4, 5, 6].slide(3, 1).postcs;</p>
-<p class="p12"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4, 5, 6].slide(3, 2).postcs;</p>
-<p class="p12"><br></p>
-<p class="p8"><span class="s3">Lis</span>t[1, 2, 3, 4, 5, 6].slide(4, 1).postcs;</p>
-<p class="p12"><br></p>
-<p class="p1"><b>dump</b></p>
-<p class="p6">Dump the List's Array.</p>
-<p class="p7"><br></p>
-<p class="p1"><b>clear</b></p>
-<p class="p6">Replace the List's Array with a new empty one.</p>
-</body>
-</html>
diff --git a/Help/Collections/MultiLevelIdentityDictionary.html b/Help/Collections/MultiLevelIdentityDictionary.html
deleted file mode 100644
index e66f885..0000000
--- a/Help/Collections/MultiLevelIdentityDictionary.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 29.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>MultiLevelIdentityDictionary<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>tree of dictionaries</b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Collection.html"><span class="s2"><b>Collection</b></span></a></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p3">A tree of IdentityDictionaries.<span class="Apple-converted-space">  </span>Addresses within the tree are specified with a series of keys.<span class="Apple-converted-space">  </span><a href="Library.html"><span class="s2">Library</span></a> is its most useful subclass.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">see also: <a href="IdentityDictionary.html"><span class="s4">IdentityDictionary</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>at(key1,key2 ... keyN)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>retrieves a leaf node or nil if not found.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>put(key1,key2 ... keyN, item)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>puts the item as a leaf node, internally creating new branches as needed to accommodate the list of keys.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>choose</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>choose a branch at each level, descend the tree until a leaf is chosen.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>choose(key1,key2 ... keyN)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>starting at an address within the tree, descend the tree until a leaf is chosen.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>putTree</b>(key1,[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>key2a, item1-2a,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>key2b, item1-2b,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>key3, item1-3</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] </span>// etc...</p>
-<p class="p3"><span class="Apple-tab-span">	</span>]);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>A way to insert objects into the tree with a syntax similar to the organization of the tree</p>
-<p class="p3"><span class="Apple-tab-span">	</span>itself.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>removeAt(key1,key2 ... keyN)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Remove only the item located by the path.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>removeEmptyAt(key1,key2 ... keyN)</b></p>
-<p class="p7">Remove the item located by the path. This might make the item's parent dictionary empty. In that case, it will remove the parent and continue up the chain, removing empty dictionaries as it goes. This is slower but cleaner.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">// Example of the difference between removeAt and removeEmptyAt</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s3">m = </span>MultiLevelIdentityDictionary<span class="s3">.new;</span></p>
-<p class="p11">m.put(<span class="s5">\a</span>, <span class="s5">\b</span>, <span class="s5">\c</span>, 1);</p>
-<p class="p9"><br></p>
-<p class="p11">m.removeAt(<span class="s5">\a</span>, <span class="s5">\b</span>, <span class="s5">\c</span>);</p>
-<p class="p8"><span class="s3">m<span class="Apple-tab-span">	</span></span>// note, \a and \b dictionaries remain</p>
-<p class="p9"><br></p>
-<p class="p11">m.put(<span class="s5">\a</span>, <span class="s5">\b</span>, <span class="s5">\c</span>, 2);</p>
-<p class="p11">m.removeEmptyAt(<span class="s5">\a</span>, <span class="s5">\b</span>, <span class="s5">\c</span>);</p>
-<p class="p8"><span class="s3">m<span class="Apple-tab-span">	</span></span>// now the entire MultiLevelIdentityDictionary is empty</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/ObjectTable.html b/Help/Collections/ObjectTable.html
deleted file mode 100644
index 96262f8..0000000
--- a/Help/Collections/ObjectTable.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0039da}
-span.s4 {color: #0024f8}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ObjectTable<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>associate objects with IDs</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s3"><b>Object</b></span></a> : <a href="Collection.html"><span class="s4"><b>Collection</b></span></a> : <a href="TwoWayIdentityDictionary.html"><b>TwoWayIdentityDictionary</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">An ObjectTable is used to associate an id with an object. This is useful</p>
-<p class="p4">for enabling references to objects on remote systems via Open Sound Control.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*init</b></p>
-<p class="p2"><br></p>
-<p class="p4">Create the main ObjectTable. This is called in Main::startUp.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*add(obj)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Put an object in the main ObjectTable and generate an Integer id.</p>
-<p class="p4"><b>obj</b> - the object to put in the table.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>add(obj)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Put an object in an ObjectTable and generate an Integer id.</p>
-<p class="p4"><b>obj</b> - the object to put in the table.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*put(key, obj)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Put an object in the main ObjectTable under a specific key.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>key</b> - a Symbol.</p>
-<p class="p4"><b>obj</b> - the object to put in the table.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*at(id)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Get an object in the main ObjectTable.</p>
-<p class="p4"><b>id</b> - an Integer or Symbol.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*getID(obj)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Get the ID of an object in the table.</p>
-<p class="p4"><b>obj</b> - an object in the table.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Order.html b/Help/Collections/Order.html
deleted file mode 100644
index 4a9833c..0000000
--- a/Help/Collections/Order.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {text-decoration: underline}
-span.s5 {color: #9d1c12}
-span.s6 {color: #3d6d1d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Order</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>an order of elements with a numerical index</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s3"><b>Object</b></span></a><b> : </b><a href="Collection.html"><b>Collection</b></a><b> : </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Keeps elements in an order and allows to put them at arbitrary slots<span class="Apple-converted-space"> </span></p>
-<p class="p1">without having to allocate a large array.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">see also: <a href="SparseArray.html"><span class="s4">SparseArray</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">Note: <b>put</b> and <b>at</b> are slower than in IdentityDictionary / PriorityQueue, <b>do</b> is faster.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*new(size)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>create a new order.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>example</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s3">Order</span>.new;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.put(7, 100); </span>// put a value (100) at index 7</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.clear; <span class="s5">// empty</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>*newFromIndices(array, indices)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>create a new order from given items and indices</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p4"><b>*doRange(function, from to)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>iterate over a range of the order's items.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p9">// example</p>
-<p class="p10"><br></p>
-<p class="p11">a = <span class="s3">Order</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">a[0] = <span class="s6">\z</span>;</p>
-<p class="p11">a[0] = <span class="s6">\y</span>;</p>
-<p class="p11">a[5] = <span class="s6">\five</span>;</p>
-<p class="p11">a[4] = <span class="s6">\four</span>;</p>
-<p class="p10"><br></p>
-<p class="p11">a[0] = <span class="s6">\z</span>;</p>
-<p class="p11">a[5] = <span class="s6">\five</span>;</p>
-<p class="p11">a[4] = <span class="s6">\four</span>;</p>
-<p class="p10"><br></p>
-<p class="p11">a.indices;</p>
-<p class="p10"><br></p>
-<p class="p11">a[9] = 100;</p>
-<p class="p11">a.indices;</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/OrderedIdentitySet.html b/Help/Collections/OrderedIdentitySet.html
deleted file mode 100644
index 1f47f75..0000000
--- a/Help/Collections/OrderedIdentitySet.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #0026b4}
-span.s5 {color: #0024f8}
-span.s6 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>OrderedIdentitySet<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a set according to identity</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><b> : </b><a href="Set.html"><b>Set</b></a><b> : </b><a href="IdentitySet.html"><span class="s3"><b>IdentitySet</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">An OrderedIdentitySet is a collection of objects, no two of which are the same object (aka. "identical").</p>
-<p class="p1">Most of its methods are inherited. (see <a href="Collection.html"><span class="s4">Collection</span></a> and <a href="Set.html"><span class="s5">Set</span></a> classes).</p>
-<p class="p1">Unlike <a href="IdentitySet.html"><span class="s3">IdentitySet</span></a>, contents of an OrderedIdentitySet are <b>ordered</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also: <a href="IdentitySet.html">IdentitySet</a>, <a href="List.html">List</a>, <a href="Dictionary.html">Dictionary</a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b>Iteration:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Evaluates function for each item in the OrderedIdentitySet.<span class="Apple-converted-space">  </span>You may depend on the order of items.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The function is passed two arguments, the item and an integer index.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">OrderedIdentitySet</span>[1, 2, 3, 300].do { <span class="s6">|item, i|</span> item.postln };</p>
-</body>
-</html>
diff --git a/Help/Collections/Pair.html b/Help/Collections/Pair.html
deleted file mode 100644
index 6c90522..0000000
--- a/Help/Collections/Pair.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002fe0}
-span.s3 {color: #0000ff}
-span.s4 {text-decoration: underline ; color: #002fe0}
-span.s5 {text-decoration: underline ; color: #0039da}
-span.s6 {color: #001bb9}
-span.s7 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pair</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>LISP-like two element cells</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><span class="s2"><b> : </b><a href="Collection.html"><span class="s3"><b>Collection</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">(implementation incomplete. See<b> </b><a href="../Language/J_concepts_in_SC.html"><span class="s4">J Concepts In SC</span></a><span class="s5"> </span>for similar functionality)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(linkDown, linkAcross) <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return new instance</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*newFrom(collection)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert collection (e.g. arrays of arrays) to pairs.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1">Most methods are inherited from the superclasses.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>size</b></p>
-<p class="p2"><br></p>
-<p class="p1">return the size when linking across</p>
-<p class="p2"><br></p>
-<p class="p1"><b>depth</b></p>
-<p class="p2"><br></p>
-<p class="p1">return the size when linking down</p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">iterate over the two elements</p>
-<p class="p2"><br></p>
-<p class="p1"><b>traverse(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">same like: depthFirstPreOrderTraversal</p>
-<p class="p2"><br></p>
-<p class="p1"><b>depthFirstPreOrderTraversal(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">traverse the data structure first link down, then across (see example).</p>
-<p class="p2"><br></p>
-<p class="p1"><b>depthFirstPostOrderTraversal(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">traverse the data structure from bottom up (see example)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s6">Pair</span>(<span class="s6">Pair</span>(<span class="s6">Pair</span>(1, 2), 4), <span class="s6">Pair</span>(5, 6));</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">a.size;</p>
-<p class="p7">a.depth;</p>
-<p class="p7">a.do { <span class="s6">|x|</span> x.postln };</p>
-<p class="p7">a.traverse { <span class="s6">|x|</span> x.postln };</p>
-<p class="p7">a.depthFirstPreOrderTraversal { <span class="s6">|x|</span> x.postln };</p>
-<p class="p7">a.depthFirstPostOrderTraversal { <span class="s6">|x|</span> x.postln };</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">// alternative instantiations:</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s6">Pair</span>.newFrom([1, [2, [[4, 5], 6]]]);</p>
-<p class="p6"><br></p>
-<p class="p7">[1, [2, [[4, 5], 6]]].as(<span class="s6">Pair</span>); <span class="s7">// equivalent.</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Post.html b/Help/Collections/Post.html
deleted file mode 100644
index 1284c1a..0000000
--- a/Help/Collections/Post.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #406c1b}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #992714}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021b6}
-span.s4 {color: #606060}
-span.s5 {color: #0027b6}
-span.s6 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Post<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>posts text to the post window</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object</b></p>
-<p class="p3"><br></p>
-<p class="p1">The class Post is a stream destination.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">a = </span>"a string"<span class="s2">;</span></p>
-<p class="p5"><span class="s2">b = </span>'a symbol'<span class="s2">;</span></p>
-<p class="p6">c = 4;</p>
-<p class="p6">d = [1,2,3,4,a,b];</p>
-<p class="p3"><br></p>
-<p class="p7">// post as string</p>
-<p class="p6"><span class="s3">Post</span> << a << <span class="s3">Char</span>.nl;</p>
-<p class="p7">// post as compile string</p>
-<p class="p6"><span class="s3">Post</span> <<< a << <span class="s3">Char</span>.nl;</p>
-<p class="p3"><br></p>
-<p class="p7">// post as string</p>
-<p class="p6"><span class="s3">Post</span> << d << <span class="s3">Char</span>.nl;</p>
-<p class="p7">// post as compile string</p>
-<p class="p6"><span class="s3">Post</span> <<< d << <span class="s3">Char</span>.nl;</p>
-<p class="p3"><br></p>
-<p class="p1">This is the equivalent of :</p>
-<p class="p6">d.postln;</p>
-<p class="p1">or</p>
-<p class="p6">d.asCompileString.postln;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">Its main use is that it can sometimes make code more readable and execution slightly more efficient.</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s3">Post</span> <<< a << <span class="s4">" "</span> <<< b << <span class="s4">" "</span> <<< c << <span class="s4">" "</span> <<< d << <span class="s3">Char</span>.nl;</p>
-<p class="p1">vs.</p>
-<p class="p6">(a.asCompileString + b.asCompileString + c.asCompileString + d.asCompileString).postln;</p>
-<p class="p3"><br></p>
-<p class="p1">Warning:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><< also means object left shift</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b>Class Methods</b></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>Post << item</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Post as string</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Post</span> << "string";</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>Post <<< item</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Post as compile string</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Post</span> <<< "string";</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*comma</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Prints a comma</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Post</span>.comma;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*space</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Prints a space</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Post</span>.space;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*nl</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Prints a newline</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Post</span>.nl;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*ff</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Prints the char <span class="s6">$\f</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Post</span>.ff;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*tab</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Prints a tab</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Post</span>.tab;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/PriorityQueue.html b/Help/Collections/PriorityQueue.html
deleted file mode 100644
index 35c7972..0000000
--- a/Help/Collections/PriorityQueue.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #0019b7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {text-decoration: underline}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.s4 {color: #316c17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PriorityQueue</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">PriorityQueue implements a priority queue data structure, which is</p>
-<p class="p3">used to build schedulers.</p>
-<p class="p3">It allows you to put in items at some arbitrary time and pop them in<span class="Apple-converted-space"> </span></p>
-<p class="p3">time order.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Instance Methods:</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>put(time, item)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Puts the item in the queue at the given time.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>topPriority</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns the time of the earliest item in the queue.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>pop</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns the earliest item in the queue.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>clear</b></p>
-<p class="p2"><br></p>
-<p class="p3">Empty the queue.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>isEmpty</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return a Boolean whether the queue is empty.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>notEmpty</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return a Boolean whether the queue is not empty.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Example:</span></b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> p;</p>
-<p class="p6"><span class="s3">p = </span>PriorityQueue<span class="s3">.new;</span></p>
-<p class="p7"><br></p>
-<p class="p5">p.put(0.1, <span class="s4">\a</span>);</p>
-<p class="p5">p.put(2.0, <span class="s4">\b</span>);</p>
-<p class="p5">p.put(0.5, <span class="s4">\c</span>);</p>
-<p class="p5">p.put(0.2, <span class="s4">\d</span>);</p>
-<p class="p5">p.put(1.0, <span class="s4">\e</span>);</p>
-<p class="p7"><br></p>
-<p class="p5">while ({ p.notEmpty },{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[p.topPriority, p.pop].postln;</p>
-<p class="p5">});</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">p.pop.postln;</p>
-<p class="p5">p.pop.postln;</p>
-<p class="p5">p.pop.postln;</p>
-<p class="p7"><br></p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">[ 0.1, a ]</p>
-<p class="p5">[ 0.2, d ]</p>
-<p class="p5">[ 0.5, c ]</p>
-<p class="p5">[ 1, e ]</p>
-<p class="p5">[ 2, b ]</p>
-<p class="p5">nil</p>
-<p class="p5">nil</p>
-<p class="p5">nil</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/RawArray.html b/Help/Collections/RawArray.html
deleted file mode 100644
index f6afec5..0000000
--- a/Help/Collections/RawArray.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {color: #000000}
-span.s2 {color: #002eaf}
-span.s3 {color: #002fe0}
-span.s4 {color: #0021e7}
-</style>
-</head>
-<body>
-<p class="p1"><b>RawArray</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s2"><b> :</b></span><span class="s1"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><span class="s3"><b> : </b><a href="ArrayedCollection.html"><span class="s4"><b>ArrayedCollection</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p5">RawArray is the abstract superclass of a group of array classes that hold raw data values.</p>
-<p class="p4"><br></p>
-<p class="p6"><b>Instance Methods</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b>write(path)</b></p>
-<p class="p4"><br></p>
-<p class="p5">Writes the array as a file.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Scale.html b/Help/Collections/Scale.html
deleted file mode 100644
index 2a8bd99..0000000
--- a/Help/Collections/Scale.html
+++ /dev/null
@@ -1,274 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2b6f11}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019ba}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #7a3827; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019ba; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0f3ed7}
-span.s2 {color: #0019ba}
-span.s3 {color: #000000}
-span.s4 {color: #2b6f11}
-span.s5 {text-decoration: underline}
-span.s6 {color: #606060}
-span.s7 {color: #ad1d13}
-span.s8 {color: #007300}
-span.s9 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Scale</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s1"><b>Object</b></span></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">Represents a musical scale. It supports arbitrary octave divisions and ratios, and (in conjunction with <a href="Tuning.html"><span class="s1"><b>Tuning</b></span></a><b> </b>) can generate pitch information in various ways, including as input to Patterns.</p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p5">a = <span class="s2">Scale</span>.major;</p>
-<p class="p6"><span class="s3">a.degrees; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// [ 0, 2, 4, 5, 7, 9, 11 ]</p>
-<p class="p6"><span class="s3">a.semitones;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// [ 0, 2, 4, 5, 7, 9, 11 ]</p>
-<p class="p6"><span class="s3">a.cents;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// [ 0, 200, 300, 500, 700, 900, 1100 ]</p>
-<p class="p6"><span class="s3">a.ratios;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// [ 1, 1.1224620483089, 1.2599210498937, 1.3348398541685, etc. ]</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Pbind</span>(<span class="s4">\scale</span>, a, <span class="s4">\degree</span>, <span class="s2">Pseq</span>((0..7) ++ (6..0) ++ [<span class="s4">\rest</span>], 1), <span class="s4">\dur</span>, 0.25).play;</p>
-<p class="p2"><br></p>
-<p class="p6">// use non-standard tuning</p>
-<p class="p5">a.tuning_(<span class="s4">\just</span>);</p>
-<p class="p6"><span class="s3">a.degrees;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no change; degrees are independent of tuning</p>
-<p class="p6"><span class="s3">a.semitones;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// [ 0, 2.0391000173077, 3.1564128700055, 4.9804499913461, etc. ]</p>
-<p class="p6"><span class="s3">a.ratios.collect(</span><span class="s2">_</span><span class="s3">.round(0.001));<span class="Apple-tab-span">	</span></span>// [ 1, 1.125, 1.2, 1.333, 1.5, 1.667, 1.875 ]</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Pbind</span>(<span class="s4">\scale</span>, a, <span class="s4">\degree</span>, <span class="s2">Pseq</span>((0..7) ++ (6..0) ++ [<span class="s4">\rest</span>], 1), <span class="s4">\dur</span>, 0.25).play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="s5">Creation</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*major, *minor, *dorian, *chromatic, *todi, *hijaz, *partch_o1, etc.</b></p>
-<p class="p4"><br></p>
-<p class="p3">Creates a scale from the library stored in <b>ScaleInfo</b>. Each scale comes with an appropriate default <b>Tuning</b>, but alternate tunings can be specified at creation time:</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">Scale</span><span class="s3">.phrygian(</span>\pythagorean<span class="s3">)</span></p>
-<p class="p4"><br></p>
-<p class="p3">If the tuning size does not match the scale's <b>pitchesPerOctave</b>, a warning will be thrown, and the scale will use its default tuning.</p>
-<p class="p4"><br></p>
-<p class="p3">For a complete list of available scales, execute</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Scale</span>.directory</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*choose(size, pitchesPerOctave)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Creates a random scale from the library, constrained by size and pitchsPerOctave if desired.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">Scale</span><span class="s3">.choose;<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span>   </span></span>// could be anything</p>
-<p class="p6"><span class="s2">Scale</span><span class="s3">.choose(7); <span class="Apple-converted-space">    </span></span>// will be a seven-note scale in its default tuning (could be any)</p>
-<p class="p6"><span class="s2">Scale</span><span class="s3">.choose(7, 12); </span>// will be a seven-note scale in a twelve-tone tuning (usually ET!2)</p>
-<p class="p2"><br></p>
-<p class="p6">// Random seven-note scale in random twelve-tone tuning</p>
-<p class="p5">a = <span class="s2">Scale</span>.choose(7, 12).tuning_(<span class="s2">Tuning</span>.choose(12));<span class="Apple-tab-span">	</span></p>
-<p class="p5">a.tuning.name;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(degrees, pitchesPerOctave, descDegrees, tuning, name)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Creates a <b>Scale</b> from scratch. <b>degrees</b> should be an array of Integers or scale name. If <b>pitchesPerOctave</b> is nil, will guess the most appropriate number based on degrees. <b>tuning</b> can be an instance of <b>Tuning</b> or a symbol; if nil, will be equal temperament of pitchesPerOctave. Specify <b>descDegrees</b> if the Scale should play differently when descending than when ascending; otherwise it should be nil.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Scale</span>.new(#[0, 1, 3, 6, 8, 10, 11], name: <span class="s6">"My ET12"</span>);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">// will be in ET12</span></p>
-<p class="p5"><span class="s2">Scale</span>.new(#[0, 3, 7, 10, 15, 19, 22], name: <span class="s6">"My Quarter-Tone"</span>);<span class="Apple-converted-space">  </span><span class="s7">// will be in ET24</span></p>
-<p class="p5"><span class="s2">Scale</span>.new(#[0, 6, 17, 21, 30, 39], 43, <span class="s4">\partch</span>, <span class="s6">"My Partch"</span>);</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="s5">Instance Methods</span></b></p>
-<p class="p9"><br></p>
-<p class="p3"><b>tuning_(tuning)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Sets the tuning of the Scale. <b>tuning</b> argument can be either an instance of <b>Tuning</b> or a symbol matching a library tuning.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>semitones</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns a tuned array of semitone values. <b>as(Array)</b> is equivalent; <b>as(List)</b> returns it as a list, etc.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>cents</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns a tuned array of cent values.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>ratios</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns a tuned array of ratios.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>as(LocalBuf)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Useful for server-side work.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">r = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> scale = <span class="s2">Scale</span>.choose.postln;</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DegreeToKey<span class="s3">.kr(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scale.as(<span class="s2">LocalBuf</span>),</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">MouseX</span><span class="s3">.kr(0,15), </span>// mouse indexes into scale</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scale.stepsPerOctave,</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, </span>// mul = 1</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>60 </span>// offset by 72 notes</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ </span><span class="s2">LFNoise1</span><span class="s3">.kr([3,3], 0.04) </span>// add some low freq stereo detuning</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).midicps, </span>// convert midi notes to hertz</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">r.free;</p>
-<p class="p4"><br></p>
-<p class="p3"><b>size</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns the length of the scale.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Scale</span>.ionian.size; <span class="s7">// 7</span></p>
-<p class="p5"><span class="s2">Scale</span>.minorPentatonic.size; <span class="s7">// 5</span></p>
-<p class="p5"><span class="s2">Scale</span>.ajam.size; <span class="s7">// 7</span></p>
-<p class="p5"><span class="s2">Scale</span>.partch_o1.size; <span class="s7">// 6</span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>pitchesPerOctave</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns the size of the pitch class set from which the tuning is drawn.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Scale</span>.ionian.pitchesPerOctave; <span class="s7">// 12</span></p>
-<p class="p5"><span class="s2">Scale</span>.minorPentatonic.pitchesPerOctave; <span class="s7">// 12</span></p>
-<p class="p6"><span class="s2">Scale</span><span class="s3">.ajam.pitchesPerOctave; </span>// 24--this is a quarter-tone scale</p>
-<p class="p5"><span class="s2">Scale</span>.partch_o1.pitchesPerOctave; <span class="s7">// 43</span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>stepsPerOctave</b></p>
-<p class="p4"><br></p>
-<p class="p3">Usually 12, but may be different if the current tuning has a stretched or compressed octave. Needed for degreeToKey.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Scale</span>.new((0..14), 15, tuning: <span class="s4">\wcAlpha</span>).stepsPerOctave;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">// ~ 11.7</span></p>
-<p class="p5"><span class="s2">Scale</span>.new(#[0, 3, 6, 9, 12], 13, tuning: <span class="s4">\bp</span>).stepsPerOctave;<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s7">// ~ 19.02</span></p>
-<p class="p4"><br></p>
-<p class="p3">but note:</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">Scale</span><span class="s3">.ajam.stepsPerOctave; <span class="Apple-tab-span">	</span></span>// 12 -- quarter-tone scales have normal octaves</p>
-<p class="p4"><br></p>
-<p class="p3"><b>at, wrapAt</b></p>
-<p class="p4"><br></p>
-<p class="p3">These access the array generated by <b>semitones</b>.</p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s2">Scale</span>.major;</p>
-<p class="p5">a.wrapAt(4);<span class="Apple-converted-space">  </span><span class="s7">// 7</span></p>
-<p class="p5">a.wrapAt(5);<span class="Apple-converted-space">  </span><span class="s7">// 9</span></p>
-<p class="p5">a.wrapAt(6);<span class="Apple-converted-space">  </span><span class="s7">// 11</span></p>
-<p class="p5">a.wrapAt(7);<span class="Apple-converted-space">  </span><span class="s7">// 0</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>degreeToFreq(degree, rootFreq, octave)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns a frequency based on current tuning and <b>rootFreq</b> argument.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Scale</span>.major.degreeToFreq(2, 60.midicps, 1);<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">// 659.25511...</span></p>
-<p class="p5"><span class="s2">Scale</span>.major(<span class="s4">\just</span>).degreeToFreq(2, 60.midicps, 1); <span class="Apple-tab-span">	</span><span class="s7">// 654.06391...</span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>degreeToRatio(degree, octave)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns a ratio based on current tuning.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Scale</span>.major.degreeToRatio(2, 1).round(0.001);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">// 2.52</span></p>
-<p class="p5"><span class="s2">Scale</span>.major(<span class="s4">\just</span>).degreeToRatio(2, 1).round(0.001);<span class="Apple-tab-span">	</span><span class="s7">// 2.5</span></p>
-<p class="p11"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="s5">Examples</span></b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">s.waitForBoot({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s2">Scale</span>.ionian;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>p = <span class="s2">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s2">Pseq</span>([0, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0, <span class="s4">\rest</span>], <span class="s2">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\scale</span>, <span class="s2">Pfunc</span>({ a }, <span class="s2">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.25</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>q = p.play;</p>
-<p class="p5">})</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p6">// change scale</p>
-<p class="p5">a = <span class="s2">Scale</span>.phrygian;</p>
-<p class="p2"><br></p>
-<p class="p6">// change tuning</p>
-<p class="p5">a.tuning_(<span class="s4">\just</span>);</p>
-<p class="p2"><br></p>
-<p class="p6">// can also set tuning at creation time</p>
-<p class="p5">a = <span class="s2">Scale</span>.ionian(<span class="s4">\pythagorean</span>);</p>
-<p class="p2"><br></p>
-<p class="p6">// if you use a tuning with the wrong number of pitches per octave,</p>
-<p class="p6">// you get a warning and the scale reverts to default tuning</p>
-<p class="p5">a.tuning_(<span class="s4">\partch</span>);</p>
-<p class="p2"><br></p>
-<p class="p6">// random scale</p>
-<p class="p5">(</p>
-<p class="p5">a = <span class="s2">Scale</span>.choose(7, 12);</p>
-<p class="p5">[a.name, a.tuning.name].postln;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">// or make up your own arbitrary scales and tunings</p>
-<p class="p5">a = <span class="s2">Scale</span>.new(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#[0, 2, 4, 5, 7, 9, 10],</p>
-<p class="p5"><span class="Apple-tab-span">	</span>12,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Tuning</span>.new([0, 0.8, 2.1, 3, 4.05, 5.2, 6, 6.75, 8.3, 9, 10.08, 11.5]),</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span>"Custom"<span class="s3"><span class="Apple-converted-space"> </span></span></p>
-<p class="p5">);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p6">// tuning has its own class</p>
-<p class="p5">t = <span class="s2">Tuning</span>.werckmeister;</p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s2">Scale</span>.lydian(t);</p>
-<p class="p2"><br></p>
-<p class="p5">q.stop;</p>
-<p class="p2"><br></p>
-<p class="p6">// getting info</p>
-<p class="p5">a.name;</p>
-<p class="p5">a.degrees;</p>
-<p class="p5">a.semitones;</p>
-<p class="p5">a.ratios;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">a.tuning.name;</p>
-<p class="p5">a.tuning.semitones;</p>
-<p class="p5">a.tuning.ratios;</p>
-<p class="p2"><br></p>
-<p class="p6">// cmd-J to see scale and tuning dictionaries in full</p>
-<p class="p10">ScaleInfo</p>
-<p class="p10">TuningInfo</p>
-<p class="p13"><br></p>
-<p class="p14">// for ascending/descending scales, use Pavaroh</p>
-<p class="p15">(</p>
-<p class="p16">Pbind<span class="s3">(</span><span class="s8">\note</span><span class="s3">, </span>Pavaroh<span class="s3">(</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s9">Pseq</span>([0, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0, <span class="s8">\rest</span>], 2),</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">Scale</span>.melodicMinor,</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">Scale</span>.melodicMinorDesc</p>
-<p class="p15"><span class="Apple-tab-span">	</span>),</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, 0.25</p>
-<p class="p15">).play;</p>
-<p class="p15">)</p>
-</body>
-</html>
diff --git a/Help/Collections/SequenceableCollection.html b/Help/Collections/SequenceableCollection.html
deleted file mode 100644
index 748aef2..0000000
--- a/Help/Collections/SequenceableCollection.html
+++ /dev/null
@@ -1,445 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 6.0px Monaco; min-height: 9.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p19 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {font: 9.0px Monaco}
-span.s4 {font: 12.0px Helvetica}
-span.s5 {font: 12.0px Monaco}
-span.s6 {color: #000000}
-span.s7 {color: #00831b}
-span.s8 {font: 12.0px Helvetica; color: #000000}
-span.s9 {color: #737373}
-span.s10 {color: #bf0000}
-span.s11 {font: 9.0px Monaco; color: #bf0000}
-span.s12 {color: #606060}
-span.s13 {color: #007300}
-span.s14 {font: 9.0px Helvetica}
-span.s15 {font: 6.0px Monaco}
-span.s16 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SequenceableCollection<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>integer indexable collection</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Collection.html"><span class="s2"><b>Collection</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">SequenceableCollection is a subclass of Collection whose elements can be indexed by an Integer. It has many useful subclasses; <a href="Array.html"><span class="s2"><b>Array</b></span></a> and <a href="List.html"><span class="s2"><b>List</b></span></a> are amongst the most commonly used.</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*series(size, start, step)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Fill a SequenceableCollection with an arithmetic series.</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>Array</span>.series(5, 10, 2);</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*geom(size, start, grow)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Fill a SequenceableCollection with a geometric series.</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>Array</span>.geom(5, 1, 3);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>*fib(size, a, b)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Fill a SequenceableCollection with a fibonacci series.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>b is the starting value (default: 1), a is the starting step value (default: 0)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">Array</span>.fib(5);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Array</span>.fib(5, 2, 32); // start from 32 with step 2.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*rand(size, minVal, maxVal)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Fill a SequenceableCollection with random values in the range minVal to maxVal.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">Array</span>.rand(8, 1, 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*rand2(size, val)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Fill a SequenceableCollection with random values in the range -val to +val.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">Array</span>.rand2(8, 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*linrand(size, minVal, maxVal)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Fill a SequenceableCollection with random values in the range minVal to maxVal with a linear distribution.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">Array</span>.linrand(8, 1, 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>*exprand(size, minVal, maxVal)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Fill a SequenceableCollection with random values in the range minVal to maxVal with exponential</p>
-<p class="p6"><span class="Apple-tab-span">	</span>distribution.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">Array</span>.exprand(8, 1, 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*interpolation(size, start, end)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Fill a SequenceableCollection with the interpolated values between the start and end values.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">Array</span>.interpolation(5, 3.2, 20.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>first</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Return the first element of the collection.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[3, 4, 5].first;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>last</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Return the last element of the collection.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[3, 4, 5].last;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>putFirst(item)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>putLast(item)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Place <b>item</b> at the first / last index in the collection. Note that if the collection is empty (and therefore has no indexed slots) the item will not be added.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[3, 4, 5].putFirst(100);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[3, 4, 5].putLast(100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>indexOf(item)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the index of an item in the collection, or nil if not found.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>[3, 4, 100, 5].indexOf(100);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[3, 4, <span class="s7">\foo</span>, <span class="s7">\bar</span>].indexOf(<span class="s7">\foo</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>indexOfEqual(item)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the index of something in the collection that equals the item, or nil if not found.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s4"><span class="Apple-tab-span">	</span></span>[3, 4, <span class="s9">"foo"</span>, <span class="s9">"bar"</span>].indexOfEqual(<span class="s9">"foo"</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>indicesOfEqual(item)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return an array of indices of things in the collection that equal the item, or nil if not found.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = [7, 8, 7, 6, 5, 6, 7, 6, 7, 8, 9]</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y.indicesOfEqual(7);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y.indicesOfEqual(5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>indexOfGreaterThan(item)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the first index containing an item which is greater than <b>item</b>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>y = <span class="s2">List</span>[ 10, 5, 77, 55, 12, 123];<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y.indexOfGreaterThan(70);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>find(sublist, offset)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the <b>sublist</b> exists in the receiver (in the specified order), at an offset greater than or equal to the initial <b>offset</b>, then return the starting index.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = [7, 8, 7, 6, 5, 6, 7, 6, 7, 8, 9]</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y.find([7, 6, 5]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>findAll(arr, offset)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Similar to <b>find()</b> but returns an array of all the indices at which the sequence is found.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = [7, 8, 7, 6, 5, 6, 7, 6, 7, 8, 9]</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y.findAll([7, 6]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>indexIn(val)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns the closest index of the value in the collection (collection must be sorted)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>[2, 3, 5, 6].indexIn(5.2)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>indexInBetween(val)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a linearly interpolated float index for the value (collection must be sorted)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inverse operation is <b>blendAt</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>x = [2, 3, 5, 6].indexInBetween(5.2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[2, 3, 5, 6].blendAt(x)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>blendAt(floatIndex)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a linearly interpolated value between the two closest indices</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inverse operation is <b>indexInBetween</b></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b></span>x = [2, 5, 6].blendAt(0.4)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>copyRange(start, end)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Return a new SequenceableCollection which is a copy of the indexed slots of the receiver from <b>start</b> to <b>end</b>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.copyRange(a, b) can also be written as <b>x[a..b]</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> y, z;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z = [1, 2, 3, 4, 5];</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y = z.copyRange(1, 3);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z.postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y.postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>copyToEnd(start)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Return a new SequenceableCollection which is a copy of the indexed slots of the receiver from <b>start</b> to the end of the collection. x.copyToEnd(a) can also be written as <b>x[a..]</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>copyFromStart(end)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Return a new SequenceableCollection which is a copy of the indexed slots of the receiver from the start of the collection to <b>end</b>. x.copyFromStart(a) can also be written as <b>x[..a]</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>remove(item)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Remove <b>item</b> from collection.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>take(item)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Remove and return <b>item</b> from collection. The last item in the collection will move to occupy the vacated slot (and the collection size decreases by one). See also takeAt, defined for <a href="ArrayedCollection.html"><span class="s2">ArrayedCollection</span></a>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>a = [11, 12, 13, 14, 15];</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.take(12);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>keep(n)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Keep the first <b>n</b> items of the array. If <b>n</b> is negative, keep the last –<b>n</b> items.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>a = [1, 2, 3, 4, 5];</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.keep(3);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.keep(-3);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>drop(n)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Drop the first <b>n</b> items of the array. If <b>n</b> is negative, drop the last –<b>n</b> items.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>a = [1, 2, 3, 4, 5];</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.drop(3);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.drop(-3);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>join(joiner)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns a <a href="String.html"><span class="s2">String</span></a> formed by connecting all the elements of the receiver, with <b>joiner</b> imbetween.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s6">[</span>"m"<span class="s6">, </span>"ss"<span class="s6">, </span>"ss"<span class="s6">, </span>"pp"<span class="s6">, </span>""<span class="s6">].join(</span>"i"<span class="s6">)</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>flat</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns a collection from which all nesting has been flattened.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[[1, 2, 3], [[4, 5], [[6]]]].flat;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>flatten(numLevels)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns a collection from which numLevels of nesting has been flattened.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[[1, 2, 3], [[4, 5], [[6]]]].flatten(1).postcs;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[[1, 2, 3], [[4, 5], [[6]]]].flatten(2).postcs;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>flop</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Invert rows and colums in a two dimensional Collection (turn inside out).</p>
-<p class="p6"><span class="Apple-tab-span">	</span>See also: <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[[1, 2, 3], [4, 5, 6]].flop;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[[1, 2, 3], [4, 5, 6], [7, 8]].flop; <span class="s10">// shorter array wraps</span></p>
-<p class="p14"><span class="s6"><span class="Apple-tab-span">	</span>[].flop; </span>// result is always 2-d.</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><b>flopTogether(...moreArrays)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Invert rows and colums in a an array of dimensional Collections (turn inside out), so that they<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>all match up in size, but remain separated.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a = flopTogether(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[[1, 2, 3], [4, 5, 6, 7, 8]] * 100,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[[1, 2, 3], [4, 5, 6], [7, 8]],</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1000]</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s6"><span class="Apple-tab-span">	</span>a.collect(</span><span class="s2">_</span><span class="s6">.size); </span>// sizes are the same</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s6">a.collect(</span><span class="s2">_</span><span class="s6">.shape) </span>// shapes can be different</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>lace(length)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns a new Collection whose elements are interlaced sequences of the elements of the receiver's subcollections, up to size <b>length</b>. The receiver is unchanged.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x = [ [1, 2, 3], 6, <span class="s2">List</span>[<span class="s12">"foo"</span>, <span class="s13">'bar'</span>]];</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y = x.lace(12);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x.postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y.postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>resamp0(newSize)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns a new Collection of the desired length, with values resampled evenly-spaced from the receiver without interpolation.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4].resamp0(12);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[1, 2, 3, 4].resamp0(2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>resamp1(newSize)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns a new Collection of the desired length, with values resampled evenly-spaced from the receiver with linear interpolation.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4].resamp1(12);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[1, 2, 3, 4].resamp1(3);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>choose</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Choose an element from the collection at random.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4].choose;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>wchoose</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Choose an element from the collection at random using a list of probabilities or weights.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The weights must sum to 1.0.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4].wchoose([0.1, 0.2, 0.3, 0.4]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>sort(function)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Sort the contents of the collection using the comparison function argument.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The function should take two elements as arguments and return true if the first</p>
-<p class="p6"><span class="Apple-tab-span">	</span>argument should be sorted before the second argument.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>If the function is nil, the following default function is used.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>{ <span class="s2">arg</span> a, b; a < b }</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s14"><span class="Apple-tab-span">	</span></span>[6, 2, 1, 7, 5].sort;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[6, 2, 1, 7, 5].sort({ <span class="s2">arg</span> a, b; a > b }); <span class="s10">// reverse sort</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>sortBy(key)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Sort the contents of the collection using the key <b>key</b>, which is assumed to be found inside each element of the receiver.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s15"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a = [</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dictionary</span>[<span class="s13">\a</span>->5, <span class="s13">\b</span>->1, <span class="s13">\c</span>->62],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dictionary</span>[<span class="s13">\a</span>->2, <span class="s13">\b</span>->9, <span class="s13">\c</span>->65],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dictionary</span>[<span class="s13">\a</span>->8, <span class="s13">\b</span>->5, <span class="s13">\c</span>->68],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dictionary</span>[<span class="s13">\a</span>->1, <span class="s13">\b</span>->3, <span class="s13">\c</span>->61],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dictionary</span>[<span class="s13">\a</span>->6, <span class="s13">\b</span>->7, <span class="s13">\c</span>->63],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>]</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.sortBy(<span class="s13">\b</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.sortBy(<span class="s13">\c</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>order(function)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Return an array of indices that would sort the collection into order. <b>function</b> is treated the same way as for the <b>sort</b> method.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s14"><span class="Apple-tab-span">	</span></span>[6, 2, 1, 7, 5].order;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>swap(i, j)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Swap two elements in the collection at indices i and j.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>pairsDo(function)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Calls function for each subsequent pair of elements in the SequentialCollection.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The function is passed the two elements and an index.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4, 5].pairsDo({ <span class="s2">arg</span> a, b; [a, b].postln; });</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>doAdjacentPairs(function)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Calls function for every adjacent pair of elements in the SequentialCollection.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The function is passed the two adjacent elements and an index.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4, 5].doAdjacentPairs({ <span class="s2">arg</span> a, b; [a, b].postln; });</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>separate(function)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Separates the collection into sub-collections by calling the function for each adjacent pair of elements.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>If the function returns true, then a separation is made between the elements.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span> [1, 2, 3, 5, 6, 8, 10].separate({ <span class="s2">arg</span> a, b; (b - a) > 1 }).postcs;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>clump(groupSize)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Separates the collection into sub-collections by separating every groupSize elements.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4, 5, 6, 7, 8].clump(3).postcs;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>clumps(groupSizeList)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Separates the collection into sub-collections by separating elements into groupings whose size</p>
-<p class="p6"><span class="Apple-tab-span">	</span>is given by integers in the groupSizeList.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4, 5, 6, 7, 8].clumps([1, 2]).postcs;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>curdle(probability)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Separates the collection into sub-collections by separating elements according to the</p>
-<p class="p6"><span class="Apple-tab-span">	</span>given probability.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>[1, 2, 3, 4, 5, 6, 7, 8].curdle(0.3).postcs;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>integrate</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns a collection with the incremental sums of all elements</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[3, 4, 1, 1].integrate;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>differentiate</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns a collection with the pairwise difference between all elements</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>[3, 4, 1, 1].differentiate;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>reduce(operator)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Applies the method named by operator to the first and second elements of the collection - then applies the method to the result and to the third element of the collection - then applies the method to the result and to the fourth element of the collection - and so on, until the end of the array. operator may be a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> or a <a href="../Core/Symbol.html"><span class="s2">Symbol</span></a>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s6">[3, 4, 5, 6].reduce(</span><span class="s13">'*'</span><span class="s6">); </span>// this is the same as [3, 4, 5, 6].product</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s6">[3, 4, 5, 6].reduce(</span><span class="s13">\lcm</span><span class="s6">); </span>// Lowest common multiple of the whole set of numbers</p>
-<p class="p7"><span class="s10"><span class="Apple-tab-span">	</span></span>[<span class="s12">"d"</span>, <span class="s12">"e"</span>, (0..9), <span class="s12">"h"</span>].reduce(<span class="s13">'++'</span>); <span class="s10">// concatenation</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[3, 4, 5, 6].reduce({ <span class="s2">|a, b|</span> sin(a) * sin(b) }); <span class="s10">// product of sines</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>convertDigits(base)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns an integer resulting from interpreting the elements as digits to a given base (default 10).</p>
-<p class="p6"><span class="Apple-tab-span">	</span>See also <b>asDigits</b> in <a href="../Math/Integer.html"><span class="s2">Integer</span></a> for the complementary method.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[1, 0, 0, 0].convertDigits;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[1, 0, 0, 0].convertDigits(2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[1, 0, 0, 0].convertDigits(3);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><b>hammingDistance(that)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Returns the count of array elements that are not equal in identical positions. <span class="s16">http://en.wikipedia.org/wiki/Hamming_distance</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The collections are not wrapped - if one array is shorter than the other, the difference in size should be included in the count.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>[0, 0, 0, 1, 1, 1, 0, 1, 0, 0].hammingDistance([0, 0, 1, 1, 0, 0, 0, 0, 1, 1])</p>
-<p class="p12"><span class="s6"><span class="Apple-tab-span">	</span></span>"SuperMan"<span class="s6">.hammingDistance(</span>"SuperCollider"<span class="s6">);</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p18"><b>Math Support</b></p>
-<p class="p2"><br></p>
-<p class="p18"><b>Unary Messages:</b></p>
-<p class="p2"><br></p>
-<p class="p1">All of the following messages send the message performUnaryOp to the receiver with the</p>
-<p class="p1">unary message selector as an argument.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>neg, reciprocal, bitNot, abs, asFloat, asInt, ceil, floor, frac, sign, squared, cubed, sqrt</b></p>
-<p class="p1"><b>exp, midicps, cpsmidi, midiratio, ratiomidi, ampdb, dbamp, octcps, cpsoct, log, log2,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>log10, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, rand, rand2, linrand, bilinrand,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>sum3rand, distort, softclip, nyqring, coin, even, odd, isPositive, isNegative,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>isStrictlyPositive, real, imag, magnitude, magnitudeApx, phase, angle, rho, theta,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>asFloat, asInteger</b></p>
-<p class="p2"><br></p>
-<p class="p6"><b>performUnaryOp(aSelector)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Creates a new collection of the results of applying the selector to all elements in the receiver.</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[1, 2, 3, 4].neg;</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[1, 2, 3, 4].reciprocal;</p>
-<p class="p19"><br></p>
-<p class="p18"><b>Binary Messages:</b></p>
-<p class="p20"><br></p>
-<p class="p1">All of the following messages send the message performBinaryOp to the receiver with the</p>
-<p class="p1">binary message selector and the second operand as arguments.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>+, -, *, /, div, %, **, min, max, <, <=, >, >=, &, |, bitXor, lcm, gcd, round, trunc, atan2,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>hypot, >>, +>>, fill, ring1, ring2, ring3, ring4, difsqr, sumsqr, sqrdif, absdif, amclip,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>scaleneg, clip2, excess, <!, rrand, exprand</b></p>
-<p class="p2"><br></p>
-<p class="p6"><b>performBinaryOp(aSelector, theOperand)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Creates a new collection of the results of applying the selector with the operand to all elements in the receiver. If the operand is a collection then elements of that collection are paired with elements of the receiver.</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>([1, 2, 3, 4] * 10);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>([1, 2, 3, 4] * [4, 5, 6, 7]);</p>
-<p class="p9"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Set.html b/Help/Collections/Set.html
deleted file mode 100644
index 3177c04..0000000
--- a/Help/Collections/Set.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #0000ff}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {color: #606060}
-span.s7 {color: #0000bf}
-span.s8 {color: #bf0000}
-span.s9 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Set<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a set according to equality</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Collection.html"><span class="s2"><b>Collection</b></span></a><span class="s2"><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1">A Set is s collection of objects, no two of which are equal.</p>
-<p class="p1">Most of its methods are inherited from Collection.</p>
-<p class="p1">The contents of a Set are unordered. You must not depend on the order of items in a set.</p>
-<p class="p1">For an ordered set, see <a href="OrderedIdentitySet.html"><span class="s3">OrderedIdentitySet</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4">See also: <a href="IdentitySet.html"><span class="s5">IdentitySet</span></a>, <a href="List.html"><span class="s5">List</span></a>, <a href="Dictionary.html"><span class="s5">Dictionary</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b></b><br></p>
-<p class="p5"><b>Adding and Removing:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>add(anObject)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Add anObject to the Set. An object which is equal to an object already in the Set will not be added.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">Set</span>[1, 2, 3].add(4).postln;</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Set</span>[1, 2, 3].add(3).postln;</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Set</span>[<span class="s6">"abc"</span>, <span class="s6">"def"</span>, <span class="s6">"ghi"</span>].add(<span class="s6">"jkl"</span>).postln;</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s2">Set</span><span class="s4">[</span>"abc"<span class="s4">, </span>"def"<span class="s4">, </span>"ghi"<span class="s4">].add(</span>"def"<span class="s4">).postln;</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>remove(anObject)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Remove anObject from the Set.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">Set</span>[1, 2, 3].remove(3).postln;</p>
-<p class="p6"><br></p>
-<p class="p10"><br></p>
-<p class="p5"><b>Iteration:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Evaluates function for each item in the Set.</p>
-<p class="p1">The function is passed two arguments, the item and an integer index.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">Set</span>[1, 2, 3, 300].do({ <span class="s2">arg</span> item, i; item.postln });</p>
-<p class="p8"><br></p>
-<p class="p1"><b>keyAt(index)</b></p>
-<p class="p2"><br></p>
-<p class="p1">returns the object at the internal <b>index</b>. This index is not deterministic.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Set specific operations:</b></p>
-<p class="p4"><b></b><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>sect(that)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the set theoretical intersection of <b>this</b> and <b>that</b></p>
-<p class="p1"><b>this & that</b></p>
-<p class="p8"><br></p>
-<p class="p7">a = <span class="s7">Set</span>[1, 2, 3]; b = <span class="s7">Set</span>[2, 3, 4, 5];</p>
-<p class="p7">sect(a, b);</p>
-<p class="p11"><span class="s4">a & b </span>// shorter syntax</p>
-<p class="p2"><br></p>
-<p class="p1"><b>union(that)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the set theoretical union of <b>this</b> and <b>that</b></p>
-<p class="p1"><b>this | that</b></p>
-<p class="p12"><br></p>
-<p class="p13">a = <span class="s7">Set</span>[1, 2, 3]; b = <span class="s7">Set</span>[2, 3, 4, 5];</p>
-<p class="p13">union(a, b);</p>
-<p class="p11"><span class="s4">a | b </span>// shorter syntax</p>
-<p class="p2"><br></p>
-<p class="p1"><b>difference(that)<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>return the set of all items which are elements of <b>this</b>, but not of <b>that</b></p>
-<p class="p1"><b>this - that</b></p>
-<p class="p8"><br></p>
-<p class="p7">a = <span class="s7">Set</span>[1, 2, 3]; b = <span class="s7">Set</span>[2, 3, 4, 5];</p>
-<p class="p7">difference(a, b);</p>
-<p class="p11"><span class="s4">a - b </span>// shorter syntax</p>
-<p class="p2"><br></p>
-<p class="p1"><b>symmetricDifference(that)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the set of all items which are not elements of both<span class="Apple-converted-space">  </span><b>this</b> and <b>that</b></p>
-<p class="p1"><b>this -- that</b></p>
-<p class="p8"><br></p>
-<p class="p7">a = <span class="s7">Set</span>[1, 2, 3]; b = <span class="s7">Set</span>[2, 3, 4, 5];</p>
-<p class="p7">symmetricDifference(a, b);</p>
-<p class="p11"><span class="s4">a -- b </span>// shorter syntax</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isSubsetOf(that)</b><span class="Apple-tab-span">	</span>returns true if all elements of <b>this</b> are also elements of <b>that</b><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p13">a = <span class="s7">Set</span>[1, 2, 3, 4];</p>
-<p class="p13"><span class="s7">Set</span>[1, 2].isSubsetOf(a); <span class="s8">// true</span></p>
-<p class="p13"><span class="s7">Set</span>[1, 5].isSubsetOf(a); <span class="s8">// false</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p14"><br></p>
-<p class="p11">// example:</p>
-<p class="p12"><br></p>
-<p class="p13">a = <span class="s7">Set</span>[1, 2, 3, 4];</p>
-<p class="p11"><span class="s4">b = a.powerset; </span>// set of all parts</p>
-<p class="p11"><span class="s4">a.isSubsetOf(b); </span>// false: no set is ever part of itself.</p>
-<p class="p11"><span class="s4">b.asArray.reduce(</span><span class="s9">\union</span><span class="s4">) == a; </span>// true parts may not contain other elements that original</p>
-<p class="p13">b.asArray.reduce(<span class="s9">\difference</span>).isEmpty; <span class="s8">// true.</span></p>
-<p class="p12"><br></p>
-<p class="p11">// you can use Set to efficiently remove duplicates from an array:</p>
-<p class="p12"><br></p>
-<p class="p13">a = [1, 2, 3, 4, 3, 5, 5, 2, 2, 1];</p>
-<p class="p11"><span class="s4">a.as(</span><span class="s7">Set</span><span class="s4">);<span class="Apple-tab-span">	</span></span>// convert to set</p>
-<p class="p11"><span class="s4">a.as(</span><span class="s7">Set</span><span class="s4">).as(</span><span class="s7">Array</span><span class="s4">); </span>// and convert back</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Signal.html b/Help/Collections/Signal.html
deleted file mode 100644
index cd8e52a..0000000
--- a/Help/Collections/Signal.html
+++ /dev/null
@@ -1,395 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #002fe0}
-span.s5 {color: #0021e7}
-span.s6 {color: #606060}
-span.s7 {color: #9d1c12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Signal<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>sampled audio buffer</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s3"><b> :</b></span><span class="s2"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><span class="s3"><b> : </b><a href="ArrayedCollection.html"><span class="s4"><b>ArrayedCollection</b></span></a> : <a href="RawArray.html"><span class="s5"><b>RawArray</b></span></a></span><span class="s2"> : <a href="FloatArray.html"><span class="s3"><b>FloatArray</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">A Signal is a FloatArray that represents a sampled function of time buffer.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Signals support math operations.</p>
-<p class="p4"><br></p>
-<p class="p1">See also: <a href="Wavetable.html"><span class="s3">Wavetable</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b><i>Creation</i></b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>*sineFill(size, amplitudes, phases)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Signal of the given size with a sum of sines at the given amplitudes and phases.</p>
-<p class="p1">The Signal will be normalized.</p>
-<p class="p1"><b>size</b> - the number of samples in the Signal.</p>
-<p class="p1"><b>amplitudes</b> - an Array of amplitudes for each harmonic beginning with the fundamental.</p>
-<p class="p1"><b>phases</b> - an Array of phases in radians for each harmonic beginning with the fundamental.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.sineFill(1000, 1.0/[1, 2, 3, 4, 5, 6]).plot;</p>
-<p class="p8"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>*chebyFill(size, amplitudes, phases)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Signal of the given size with a sum of Chebyshev polynomials at the given amplitudes.</p>
-<p class="p1">For eventual use in waveshaping by the Shaper ugen; see Shaper helpfile and Buffer:cheby too.</p>
-<p class="p1"><b>size</b> - the number of samples in the Signal.</p>
-<p class="p1"><b>amplitudes</b> - an Array of amplitudes for each Chebyshev polynomial beginning with order 1.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.chebyFill(1000, [1]).plot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.chebyFill(1000, [0, 1]).plot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.chebyFill(1000, [0, 0, 1]).plot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.chebyFill(1000, [0.3, -0.8, 1.1]).plot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>*hanningWindow(size, pad)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Signal of the given size with a Hanning window.</p>
-<p class="p1"><b>size</b> - the number of samples in the Signal.</p>
-<p class="p1"><b>pad</b> - the number of samples of the size that is zero padding.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.hanningWindow(1024).plot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.hanningWindow(1024, 512).plot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>*hammingWindow(size)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Signal of the given size with a Hamming window.</p>
-<p class="p1"><b>size</b> - the number of samples in the Signal.</p>
-<p class="p1"><b>pad</b> - the number of samples of the size that is zero padding.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.hammingWindow(1024).plot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.hammingWindow(1024, 512).plot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>*welchWindow(size)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Signal of the given size with a Welch window.</p>
-<p class="p1"><b>size</b> - the number of samples in the Signal.</p>
-<p class="p1"><b>pad</b> - the number of samples of the size that is zero padding.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.welchWindow(1024).plot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.welchWindow(1024, 512).plot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>*rectWindow(size)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Signal of the given size with a rectangular window.</p>
-<p class="p1"><b>size</b> - the number of samples in the Signal.</p>
-<p class="p1"><b>pad</b> - the number of samples of the size that is zero padding.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.rectWindow(1024).plot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.rectWindow(1024, 512).plot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b><i>Instance Methods</i></b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>plot(name, bounds)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Plot the Signal in a window. The arguments are not required and if not given defaults will be used.</p>
-<p class="p1"><b>name</b> - a String, the name of the window.</p>
-<p class="p1"><b>bounds</b> - a Rect giving the bounds of the window.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.sineFill(512, [1]).plot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.sineFill(512, [1]).plot(<span class="s6">"Signal 1"</span>, <span class="s3">Rect</span>(50, 50, 150, 450));</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>play(loop, mul, numChannels, server)</b></p>
-<p class="p4"><br></p>
-<p class="p1">loads the signal into a buffer on the server and plays it.<span class="Apple-converted-space"> </span></p>
-<p class="p1">returns the buffer so you can free it again.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>loop</b> - A Boolean whether to loop the entire signal or play it once. Default is to loop.</p>
-<p class="p1"><b>mul</b> - volume at which to play it, 0.2 by default.</p>
-<p class="p1"><b>numChannels</b> - if the signal is an interleaved multichannel file, number of channels, default is 1.</p>
-<p class="p1"><b>server</b> - the server on which to load the signal into a buffer.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7">b = <span class="s3">Signal</span>.sineFill(512, [1]).play(<span class="s3">true</span>, 0.2);</p>
-<p class="p9"><span class="s2">b.free; <span class="Apple-tab-span">	</span></span>// free the buffer again.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>waveFill(function, start, end)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill the Signal with a function evaluated over an interval.</p>
-<p class="p1"><b>function</b> - a function that should calculate the value of a sample.</p>
-<p class="p1">The function is called with two arguments.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>x</b> - the value along the interval.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>i</b> - the sample index.</p>
-<p class="p1"><b>start</b> - the starting value of the interval</p>
-<p class="p1"><b>end</b> - the ending value of the interval.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">(</p>
-<p class="p7">s = <span class="s3">Signal</span>.newClear(512);</p>
-<p class="p7">s.waveFill({ <span class="s3">arg</span> x, i; sin(x).max(0) }, 0, 3pi);</p>
-<p class="p7">s.plot;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p1"><b>asWavetable</b></p>
-<p class="p4"><br></p>
-<p class="p1">Convert the Signal into a Wavetable.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.sineFill(512, [1]).asWavetable.plot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>fill(val)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill the Signal with a value.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>.newClear(512).fill(0.2).plot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>scale(scale)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Scale the Signal by a factor <b>in place</b>.</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>[1, 2, 3, 4];</p>
-<p class="p7">a.scale(0.5); a;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>offset(offset)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Offset the Signal by a value <b>in place</b>.</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>[1, 2, 3, 4];</p>
-<p class="p7">a.offset(0.5); a;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>peak</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return the peak absolute value of a Signal.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, -3, 2.5].peak;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>normalize</b></p>
-<p class="p4"><br></p>
-<p class="p1">Normalize the Signal <b>in place</b> such that the maximum absolute peak value is 1.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, -4, 2.5].normalize;</p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, -4, 2.5].normalize(0, 1);<span class="Apple-tab-span">	</span><span class="s7">// normalize only a range</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>normalizeTransfer</b></p>
-<p class="p4"><br></p>
-<p class="p1">Normalizes a transfer function so that the center value of the table is offset to zero</p>
-<p class="p1">and the absolute peak value is 1. Transfer functions are meant to be used in the<span class="Apple-converted-space"> </span></p>
-<p class="p1">Shaper ugen.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, 3, 2.5, 1].normalizeTransfer;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>invert</b></p>
-<p class="p4"><br></p>
-<p class="p1">Invert the Signal <b>in place</b>.</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>[1, 2, 3, 4];</p>
-<p class="p7">a.invert(0.5); a;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>reverse(beginSamp, endSamp)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Reverse a subrange of the Signal <b>in place</b>.</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>[1, 2, 3, 4];</p>
-<p class="p7">a.reverse(1, 2); a;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>fade(beginSamp, endSamp, beginLevel, endLevel)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fade a subrange of the Signal <b>in place</b>.</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 1);</p>
-<p class="p7">a.fade(0, 3);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">// fade in</span></p>
-<p class="p7">a.fade(6, 9, 1, 0);<span class="Apple-tab-span">	</span><span class="s7">// fade out</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>integral</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return the integral of a signal.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, 3, 4].integral;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>overDub(aSignal, index)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Add a signal to myself starting at the index.</p>
-<p class="p1">If the other signal is too long only the first part is overdubbed.</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overDub(<span class="s3">Signal</span>[1, 2, 3, 4], 3);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// run out of range</p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overDub(<span class="s3">Signal</span>[1, 2, 3, 4], 8);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overDub(<span class="s3">Signal</span>[1, 2, 3, 4], -4);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overDub(<span class="s3">Signal</span>[1, 2, 3, 4], -1);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overDub(<span class="s3">Signal</span>[1, 2, 3, 4], -2);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(4, 100);</p>
-<p class="p7">a.overDub(<span class="s3">Signal</span>[1, 2, 3, 4, 5, 6, 7, 8], -2);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>overWrite(aSignal, index)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Write a signal to myself starting at the index.</p>
-<p class="p1">If the other signal is too long only the first part is overdubbed.</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overWrite(<span class="s3">Signal</span>[1, 2, 3, 4], 3);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// run out of range</p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overWrite(<span class="s3">Signal</span>[1, 2, 3, 4], 8);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overWrite(<span class="s3">Signal</span>[1, 2, 3, 4], -4);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overWrite(<span class="s3">Signal</span>[1, 2, 3, 4], -1);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(10, 100);</p>
-<p class="p7">a.overWrite(<span class="s3">Signal</span>[1, 2, 3, 4], -2);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s3">Signal</span>.fill(4, 100);</p>
-<p class="p7">a.overWrite(<span class="s3">Signal</span>[1, 2, 3, 4, 5, 6, 7, 8], -2);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>blend(aSignal, blend)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Blend two signals by some proportion.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, 3, 4].blend(<span class="s3">Signal</span>[5, 5, 5, 0], 0);</p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, 3, 4].blend(<span class="s3">Signal</span>[5, 5, 5, 0], 0.2);</p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, 3, 4].blend(<span class="s3">Signal</span>[5, 5, 5, 0], 0.4);</p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, 3, 4].blend(<span class="s3">Signal</span>[5, 5, 5, 0], 1);</p>
-<p class="p7"><span class="s3">Signal</span>[1, 2, 3, 4].blend(<span class="s3">Signal</span>[5, 5, 5, 0], 2);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b><i>Fourier Transform:</i></b></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p1"><b>*fftCosTable(size)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Signal with the cosine table needed by the FFT methods.</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s3">Signal</span>.fftCosTable(512).plot;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>fft(imag, cosTable)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Perform an FFT on a real and imaginary signal <b>in place</b>.</p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> size = 512, real, imag, cosTable, complex;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7">real = <span class="s3">Signal</span>.newClear(size);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// some harmonics</p>
-<p class="p7">real.sineFill2([[8], [13, 0.5], [21, 0.25], [55, 0.125, 0.5pi]]);</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// add a little noise</p>
-<p class="p7">real.overDub(<span class="s3">Signal</span>.fill(size, { 0.2.bilinrand }));</p>
-<p class="p6"><br></p>
-<p class="p7">imag = <span class="s3">Signal</span>.newClear(size);</p>
-<p class="p7">cosTable = <span class="s3">Signal</span>.fftCosTable(size);</p>
-<p class="p6"><br></p>
-<p class="p7">complex = fft(real, imag, cosTable);<span class="Apple-converted-space"> </span></p>
-<p class="p7">[real, imag, (complex.magnitude) / 100 ].flop.flat</p>
-<p class="p7"><span class="Apple-tab-span">	</span>.plot(<span class="s6">"fft"</span>, <span class="s3">Rect</span>(0, 0, 512 + 8, 500), numChannels: 3);</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p1"><b>ifft(imag, cosTable)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Perform an inverse FFT on a real and imaginary signal <b>in place</b>.</p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> size = 512, real, imag, cosTable, complex, ifft;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7">real = <span class="s3">Signal</span>.newClear(size);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// some harmonics</p>
-<p class="p7">real.sineFill2([[8], [13, 0.5], [21, 0.25], [55, 0.125, 0.5pi]]);</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// add a little noise</p>
-<p class="p7">real.overDub(<span class="s3">Signal</span>.fill(size, { 0.2.bilinrand }));</p>
-<p class="p6"><br></p>
-<p class="p7">imag = <span class="s3">Signal</span>.newClear(size);</p>
-<p class="p7">cosTable = <span class="s3">Signal</span>.fftCosTable(size);</p>
-<p class="p6"><br></p>
-<p class="p7">complex = fft(real, imag, cosTable).postln;</p>
-<p class="p7">ifft = complex.real.ifft(complex.imag, cosTable);</p>
-<p class="p6"><br></p>
-<p class="p7">[real, ifft.real].flop.flat.plot(<span class="s6">"fft and back"</span>, <span class="s3">Rect</span>(0, 0, 512 + 8, 500), numChannels: 2);</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b><i>Unary Messages:</i></b></p>
-<p class="p4"><br></p>
-<p class="p1">Signal will respond to unary operators by returning a new Signal.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>neg, abs, sign, squared, cubed, sqrt</b></p>
-<p class="p1"><b>exp, log, log2, log10, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>distort, softclip, nyqring, isPositive, isNegative,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>isStrictlyPositive</b></p>
-<p class="p4"><br></p>
-<p class="p7">x = <span class="s3">Signal</span>.sineFill(512, [0, 0, 0, 1]);</p>
-<p class="p7">[x, x.neg, x.abs, x.sign, x.squared, x.cubed,<span class="Apple-converted-space"> </span></p>
-<p class="p7">x.asin.normalize, x.exp.normalize, x.distort].flop.flat.plot(numChannels: 9);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b><i>Binary Messages:</i></b></p>
-<p class="p10"><br></p>
-<p class="p1">Signal will respond to binary operators by returning a new Signal.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>+, -, *, /, div, %, **, min, max, ring1, ring2, ring3, ring4,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>difsqr, sumsqr, sqrdif, absdif, amclip,<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>scaleneg, clip2, excess, <!</b></p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p7">x = Signal.fill(512, { rrand(0.0, 1.0) });</p>
-<p class="p7">y = Signal.fill(512, { |i| (i * pi / 64).sin });</p>
-<p class="p7">[x, y, (x + y) * 0.5, x * y, min(x, y), max(x, y) ].flop.flat.plot(numChannels: 6);</p>
-<p class="p7">)<span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/Collections/SortedList.html b/Help/Collections/SortedList.html
deleted file mode 100644
index 3f9311a..0000000
--- a/Help/Collections/SortedList.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {text-decoration: underline}
-</style>
-</head>
-<body>
-<p class="p1"><b>SortedList</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: List</b></p>
-<p class="p2"><br></p>
-<p class="p3">SortedList is a Collection whose items are kept in a sorted order.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Creation</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(size, function)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Creates a SortedList with the initial capacity given by <b>size</b> and a comparison <b>function</b>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Instance Methods</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>add(item)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Adds an item in the SortedList at the correct position.</p>
-<p class="p2"><br></p>
-<p class="p5">SortedList[1, 2, 5, 6].add(4).postln;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>addAll(aCollection)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Adds all the items in the collection into the SortedList.</p>
-<p class="p2"><br></p>
-<p class="p5">SortedList[1, 2, 5, 6].addAll([0, 3, 4, 7]).postln;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/SparseArray.html b/Help/Collections/SparseArray.html
deleted file mode 100644
index a5feda0..0000000
--- a/Help/Collections/SparseArray.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {color: #001bb9}
-span.s3 {text-decoration: underline}
-span.s4 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SparseArray</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Collection.html"><b>Collection</b></a><b> : </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a><b> : </b><a href="Order.html"><b>Order</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">A sparse array is a data structure that acts in exactly the same manner as an Array. However, data is represented differently in memory, in a way that makes it much more efficient to store very large arrays in which many values are the same.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Take for example an array consisting of a million zeroes, with a 1 appended to the end; SparseArray would compress this array by storing zero as a default value, and only explicitly storing the single value that differs, therefore offering a much more economical use of memory.</p>
-<p class="p2"><br></p>
-<p class="p4">The benefits of using SparseArray typically arise when creating collections containing many millions of slots.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*newClear(size, default)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a new SparseArray of the specified size, with each slot's value being <b>default.</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>size </b>- Number of slots in the desired array. Note that slots are not explicitly created, so the speed of creation is not related to the array size.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>default<span class="Apple-converted-space"> </span></b> - The default value, i.e. the value that all slots should take at first.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">SparseArray</span>.newClear(20, 3);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.postcs;</p>
-<p class="p2"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*reduceArray(array, default)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a new SparseArray holding the same data as <b>array</b>.</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array </b>- Any <a href="ArrayedCollection.html"><span class="s3">ArrayedCollection</span></a>.</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>default<span class="Apple-converted-space"> </span></b> - The default value, i.e. the value that all slots should take at first. For best memory efficiency, you should supply the most common value found in the collection.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = [4, 7, 4, 4, 4, 4, 4, 4, 9, 9, 8];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">SparseArray</span>.reduceArray(a, 4);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.postcs;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>put(index, value)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Put a value at the desired index. This works just like all ArrayedCollection types. Behind the scenes the class will ensure the compact representation (deciding whether to store the value explicitly or implicitly).</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">SparseArray</span>.newClear(10, 3);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.put(4, <span class="s4">\horse</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.put(6, [4,5,6]);</p>
-<p class="p11"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g[1] = </span><span class="s4">\hello</span><span class="s1">; </span>// Common compact notation</p>
-<p class="p2"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>at(index)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Retrieve the value at <b>index</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">SparseArray</span>.newClear(20, 3);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.put(4, <span class="s4">\horse</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.at(4);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g[4];</p>
-<p class="p2"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>asArray</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Convert to an ordinary <a href="Array.html"><span class="s2">Array</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">SparseArray</span>.newClear(20, 3);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.postcs;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.asArray;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p4">Here we compare speed of Array vs SparseArray.</p>
-<p class="p2"><br></p>
-<p class="p12">// Let's create a standard array, big but with only a couple of unusual values hidden in there</p>
-<p class="p13">(</p>
-<p class="p13">{</p>
-<p class="p13"><span class="Apple-tab-span">	</span>a = {10}.dup(1000000);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>a[551] = 77;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>a[8722] = <span class="s4">\foo</span>;</p>
-<p class="p13">}.bench</p>
-<p class="p13">)</p>
-<p class="p12">// Now a SparseArray made out of exactly the same data</p>
-<p class="p13">(</p>
-<p class="p13">{</p>
-<p class="p13"><span class="Apple-tab-span">	</span>b = <span class="s2">SparseArray</span>.newClear(a.size, 10);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>b[551] = 77;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>b[8722] = <span class="s4">\foo</span>;</p>
-<p class="p13">}.bench</p>
-<p class="p13">)</p>
-<p class="p14"><br></p>
-<p class="p12">// Alternatively you could make the SparseArray out of the existing array, although this is typically not as efficient as starting from scratch since the Array needs to be scanned directly.</p>
-<p class="p13">(</p>
-<p class="p13">{</p>
-<p class="p13"><span class="Apple-tab-span">	</span>b = <span class="s2">SparseArray</span>.reduceArray(a, 10);</p>
-<p class="p13">}.bench</p>
-<p class="p13">)</p>
-<p class="p14"><br></p>
-<p class="p12">// accessing:</p>
-<p class="p13">{1000.do{ a[a.size.rand] == 60.rand }}.bench</p>
-<p class="p13">{1000.do{ b[b.size.rand] == 60.rand }}.bench</p>
-<p class="p12">// setting:</p>
-<p class="p13">{1000.do{ a[a.size.rand] = 60.rand }}.bench</p>
-<p class="p13">{1000.do{ b[b.size.rand] = 60.rand }}.bench</p>
-<p class="p14"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/String.html b/Help/Collections/String.html
deleted file mode 100644
index 4f58a72..0000000
--- a/Help/Collections/String.html
+++ /dev/null
@@ -1,641 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #000000; min-height: 11.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf; min-height: 14.0px}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #bf0000}
-span.s6 {color: #737373}
-span.s7 {text-decoration: underline}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {font: 9.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>String<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>array of characters</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s3"><b> :</b></span><span class="s2"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><span class="s3"><b> : </b><a href="ArrayedCollection.html"><b>ArrayedCollection</b></a><b> :</b></span><span class="s2"><b> </b><a href="RawArray.html"><span class="s3"><b>RawArray</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">String represents an array of characters.</p>
-<p class="p1">Strings can be written literally using double quotes:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"my string"</span>.class.postln;</p>
-<p class="p6"><br></p>
-<p class="p7"><b>Class Methods</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>*readNew(file)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Read the entire contents of a <b>File</b> and return them as a new String.</p>
-<p class="p4"><br></p>
-<p class="p7"><b>Instance Methods</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>at(index)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Strings respond to .at in a manner similar to other indexed collections. Each element is a <b>Char</b>.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"ABCDEFG"</span>.at(2).postln;</p>
-<p class="p4"><br></p>
-<p class="p1"><b>compare(aString)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns a -1, 0, or 1 depending on whether the receiver should be sorted before the argument,</p>
-<p class="p1">is equal to the argument or should be sorted after the argument. This is a case sensitive compare.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>< aString</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns a Boolean whether the receiver should be sorted before the argument.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>== aString</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns a Boolean whether the two Strings are equal.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>post</b></p>
-<p class="p4"><br></p>
-<p class="p1">Prints the string to the current post window.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>postln</b></p>
-<p class="p4"><br></p>
-<p class="p1">Prints the string and a carriage return to the current post window.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>postc <span class="Apple-tab-span">	</span>postcln</b></p>
-<p class="p4"><br></p>
-<p class="p1">As post and postln above, but formatted as a comment.</p>
-<p class="p4"><br></p>
-<p class="p8">"This is a comment.".postcln;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p1"><b>postf</b></p>
-<p class="p4"><br></p>
-<p class="p1">Prints a formatted string with arguments to the current post window. The % character in the format string is replaced by a string representation of an argument. To print a % character use \\% .</p>
-<p class="p9"><br></p>
-<p class="p5">postf("this % a %. pi = %, list = %\n", "is", "test", pi.round(1e-4), (1..4))</p>
-<p class="p9"><br></p>
-<p class="p5">this is a test. pi = 3.1416, list = [ 1, 2, 3, 4 ]</p>
-<p class="p9"><br></p>
-<p class="p1"><b>format</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns a formatted string with arguments. The % character in the format string is replaced by a string representation of an argument. To print a % character use \\% .</p>
-<p class="p9"><br></p>
-<p class="p5">format("this % a %. pi = %, list = %\n", "is", "test", pi.round(1e-4), (1..4))</p>
-<p class="p4"><br></p>
-<p class="p5">this is a test. pi = 3.1416, list = [ 1, 2, 3, 4 ]</p>
-<p class="p9"><br></p>
-<p class="p1"><b>matchRegexp(string, start, end)</b></p>
-<p class="p9"><br></p>
-<p class="p1">POSIX regular expression matching.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Returns true if the receiver (a regular expression pattern) matches the string passed to it.</p>
-<p class="p1">The <b>start</b> is an offset where to start searching in the string (default: 0), <b>end</b> where to stop.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"c"</span>.matchRegexp(<span class="s4">"abcdefg"</span>, 2, 5); <span class="s5">// true</span></p>
-<p class="p5"><span class="s4">"c"</span>.matchRegexp(<span class="s4">"abcdefg"</span>, 4, 5); <span class="s5">// false</span></p>
-<p class="p9"><br></p>
-<p class="p8">"behaviou?r".matchRegexp("behavior"); <span class="s5">// true</span></p>
-<p class="p8">"behaviou?r".matchRegexp("behaviour"); <span class="s5">// true</span></p>
-<p class="p8">"behaviou?r".matchRegexp("behavir"); <span class="s5">// false</span></p>
-<p class="p8">"b.h.v.r".matchRegexp("behavor"); <span class="s5">// true</span></p>
-<p class="p8">"b.h.vi*r".matchRegexp("behaviiiiir"); <span class="s5">// true</span></p>
-<p class="p5"><span class="s4">"(a|u)nd"</span>.matchRegexp(<span class="s4">"und"</span>); <span class="s5">// true</span></p>
-<p class="p5"><span class="s4">"(a|u)nd"</span>.matchRegexp(<span class="s4">"and"</span>); <span class="s5">// true</span></p>
-<p class="p5"><span class="s4">"[a-c]nd"</span>.matchRegexp(<span class="s4">"ind"</span>); <span class="s5">// false</span></p>
-<p class="p5"><span class="s4">"[a-c]nd"</span>.matchRegexp(<span class="s4">"bnd"</span>); <span class="s5">// true</span></p>
-<p class="p10"><br></p>
-<p class="p1"><b>findRegexp(string)</b></p>
-<p class="p10"><br></p>
-<p class="p1">POSIX regular expression search.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p5">"foobar".findRegexp("o*bar");</p>
-<p class="p9"><br></p>
-<p class="p5">"32424 334 /**aaaaaa*/".findRegexp("/\\*\\*a*\\*/");</p>
-<p class="p9"><br></p>
-<p class="p5">"foobar".findRegexp("(o*)(bar)");</p>
-<p class="p9"><br></p>
-<p class="p5">"aaaabaaa".findAllRegexp("a+");</p>
-<p class="p10"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>error</b></p>
-<p class="p4"><br></p>
-<p class="p1">Prepends an error banner and posts the string</p>
-<p class="p4"><br></p>
-<p class="p1"><b>warn</b></p>
-<p class="p4"><br></p>
-<p class="p1">Prepends a warning banner and posts the string.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>inform</b></p>
-<p class="p4"><br></p>
-<p class="p1">Posts the string.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>++ aString</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return a concatenation of the two strings.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>+ aString</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return a concatenation of the two strings with a space between them.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>compile</b></p>
-<p class="p4"><br></p>
-<p class="p1">Compiles a String containing legal SuperCollider code and returns a Function.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> f;</p>
-<p class="p5">f = <span class="s4">"2 + 1"</span>.compile.postln;</p>
-<p class="p5">f.value.postln;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p1"><b>asCompileString</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns a String formatted for compiling.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> f;</p>
-<p class="p5">f = "myString";</p>
-<p class="p5">f.postln;</p>
-<p class="p5">f.asCompileString.postln;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p1"><b>postcs</b></p>
-<p class="p4"><br></p>
-<p class="p1">As postln, but posts the compileString of the reciever</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s3">List</span>[1, 2, [<span class="s4">"comment"</span>, [3, 2]], { 1.0.rand }].postcs;</p>
-<p class="p4"><br></p>
-<p class="p1"><b>interpret</b></p>
-<p class="p4"><br></p>
-<p class="p1">Compile and execute a String containing legal SuperCollider code, returning the result.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"2 + 1"</span>.interpret.postln;</p>
-<p class="p4"><br></p>
-<p class="p1"><b>interpretPrint</b></p>
-<p class="p4"><br></p>
-<p class="p1">Compile, execute and print the result of a String containing legal SuperCollider code.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"2 + 1"</span>.interpretPrint;</p>
-<p class="p4"><br></p>
-<p class="p1"><b>asSymbol</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return a Symbol derived from the String.</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> z;</p>
-<p class="p5">z = <span class="s4">"myString"</span>.asSymbol.postln;</p>
-<p class="p5">z.class.postln;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p1"><b>asInteger</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return an Integer derived from the String. Strings beginning with non-numeric characters return 0.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"4"</span>.asInteger.postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>asFloat</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return a Float derived from the String. Strings beginning with non-numeric characters return 0.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"4.3"</span>.asFloat.postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>asSecs</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return a Float based on converting a time string in format (dd):hh:mm:ss.s.</p>
-<p class="p1">This is the inverse method to SimpleNumber:asTimeString.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-converted-space"> </span></p>
-<p class="p11">(45296.asTimeString).asSecs;</p>
-<p class="p11">"32.1".asSecs;</p>
-<p class="p11">"62.1".asSecs;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// warns</p>
-<p class="p11">"0:0:59.9".asSecs;</p>
-<p class="p11">"1:1:1.1".asSecs;</p>
-<p class="p11">"-1".asSecs;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// neg sign supported</p>
-<p class="p11">"-12:34:56".asSecs;</p>
-<p class="p11">"12:-34:56".asSecs;<span class="Apple-tab-span">	</span>// warns</p>
-<p class="p11">"-23:12.3456".asSecs;<span class="Apple-tab-span">	</span>//</p>
-<p class="p11">"-1:00:00:00".asSecs;<span class="Apple-tab-span">	</span>// days too.</p>
-<p class="p6"><br></p>
-<p class="p1"><b>catArgs(... args)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Concatenate this string with the following args.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"These are some args: "</span>.catArgs(<span class="s5">\fish</span>, <span class="s3">SinOsc</span>.ar, {4 + 3}).postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>scatArgs(... args)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Same as catArgs, but with spaces in between.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"These are some args: "</span>.scatArgs(<span class="s5">\fish</span>, <span class="s3">SinOsc</span>.ar, {4 + 3}).postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>ccatArgs(... args)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Same as catArgs, but with commas in between.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"a String"</span>.ccatArgs(<span class="s5">\fish</span>, <span class="s3">SinOsc</span>.ar, {4 + 3}).postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>catList(list)<span class="Apple-tab-span">	</span>scatList(list)<span class="Apple-tab-span">	</span>ccatList(list)</b></p>
-<p class="p4"><br></p>
-<p class="p1">As catArgs, scatArgs and ccatArgs above, but takes a Collection (usually a List or an Array) as an argument.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"a String"</span>.ccatList([<span class="s5">\fish</span>, <span class="s3">SinOsc</span>.ar, {4 + 3}]).postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>split(separator)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns an Array of Strings split at the separator. The separator is a <b>Char</b>, and is not included in the output array. The default separator is $/, handy for Unix paths.</p>
-<p class="p6"><br></p>
-<p class="p8">"This/could/be/a/Unix/path".split.postln;</p>
-<p class="p8">"These are several words".split($ ).postln;</p>
-<p class="p9"><br></p>
-<p class="p1"><b>ascii</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns an Array of asci numbers of the Strings's characters.</p>
-<p class="p6"><br></p>
-<p class="p8">"wertvoll".ascii;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>find(string, ignoreCase, offset)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns the index of the string in the receiver, or nil if not found. If <b>ignoreCase</b> is true, find makes no difference between uppercase and lowercase letters. The <b>offset</b> is the point in the string where the search begins.</p>
-<p class="p6"><br></p>
-<p class="p8">"These are several words".find("are").postln;</p>
-<p class="p8">"These are several words".find("fish").postln;</p>
-<p class="p9"><br></p>
-<p class="p1"><b>findBackwards(string, ignoreCase, offset)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Same like find, but starts at the end of the string.</p>
-<p class="p6"><br></p>
-<p class="p11">// compare:</p>
-<p class="p8">"These words are several words".find("words"); <span class="s5">// 6</span></p>
-<p class="p8">"These words are several words".findBackwards("words"); <span class="s5">// 24</span></p>
-<p class="p9"><br></p>
-<p class="p1"><b>findAll(string,<span class="Apple-converted-space">  </span>ignoreCase, offset)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns the indices of the string in the receiver, or nil if not found.</p>
-<p class="p6"><br></p>
-<p class="p8">"These are several words which are fish".findAll("are").postln;</p>
-<p class="p8">"These are several words which are fish".findAll("fish").postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>contains(string)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns a <b>Boolean</b> indicating if the String contains string.</p>
-<p class="p6"><br></p>
-<p class="p8">"These are several words".contains("are").postln;</p>
-<p class="p8">"These are several words".contains("fish").postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>containsi(string)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Same as contains, but case insensitive.</p>
-<p class="p6"><br></p>
-<p class="p8">"These are several words".containsi("ArE").postln;</p>
-<p class="p4"><br></p>
-<p class="p1"><b>containsStringAt(index, string)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns a <b>Boolean </b>indicating if the String contains string beginning at the specified index.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">"These are several words"</span>.containsStringAt(6, <span class="s4">"are"</span>).postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>icontainsStringAt(index, string)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Same as containsStringAt, but case insensitive.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>escapeChar(charToEscape)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Add the escape character (\) at the location of your choice.</p>
-<p class="p4"><br></p>
-<p class="p8">"This will become a Unix friendly string".escapeChar($ ).postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>tr(from, to)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Transliteration. Replace all instances of from with to.</p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s4">":-(:-(:-("</span>.tr($(, $)); //turn the frowns upside down</p>
-<p class="p10"><br></p>
-<p class="p1"><b>replace(find, replace)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Like <b>tr</b>, but with strings as arguments.</p>
-<p class="p12"><br></p>
-<p class="p8">"Here are several words which are fish".replace("are", "were");</p>
-<p class="p6"><br></p>
-<p class="p1"><b>printOn(stream)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Print the String on stream.</p>
-<p class="p4"><br></p>
-<p class="p8">"Print this on Post".printOn(<span class="s3">Post</span>);</p>
-<p class="p9"><br></p>
-<p class="p11">// equivalent to:</p>
-<p class="p8"><span class="s3">Post</span> << "Print this on Post";</p>
-<p class="p6"><br></p>
-<p class="p1"><b>storeOn(stream)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Same as printOn, but formatted asCompileString.</p>
-<p class="p4"><br></p>
-<p class="p8">"Store this on Post".storeOn(<span class="s3">Post</span>);</p>
-<p class="p9"><br></p>
-<p class="p11">// equivalent to:</p>
-<p class="p8"><span class="s3">Post</span> <<< "Store this on Post";</p>
-<p class="p6"><br></p>
-<p class="p1"><b>inspectorClass</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns class StringInspector.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>stripRTF</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns a new String with all RTF formatting removed.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p11">// same as File-readAllStringRTF</p>
-<p class="p5">g = <span class="s3">File</span>("/code/SuperCollider3/build/Help/UGens/Chaos/HenonC.help.rtf","r");</p>
-<p class="p5">g.readAllString.stripRTF.postln;</p>
-<p class="p5">g.close;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p13"><b>Unix Support</b></p>
-<p class="p4"><br></p>
-<p class="p1">Where relevant, the current working directory is the same as the location of the SuperCollider app and the shell is the Bourne shell (sh). Note that the cwd, and indeed the shell itself, does not persist:</p>
-<p class="p4"><br></p>
-<p class="p14"><span class="s6">"echo $0"</span><span class="s2">.unixCmd; </span>// print the shell (sh)</p>
-<p class="p15"><span class="s6">"pwd"</span>.unixCmd;</p>
-<p class="p16">"cd Help/"<span class="s2">.unixCmd;</span></p>
-<p class="p15"><span class="s6">"pwd"</span>.unixCmd;</p>
-<p class="p17"><br></p>
-<p class="p16">"export FISH=mackerel"<span class="s2">.unixCmd;</span></p>
-<p class="p16">"echo $FISH"<span class="s2">.unixCmd;</span></p>
-<p class="p4"><br></p>
-<p class="p1">It is however possible to execute complex commands:</p>
-<p class="p4"><br></p>
-<p class="p16">"pwd; cd Help/; pwd"<span class="s2">.unixCmd;</span></p>
-<p class="p16">"export FISH=mackerel; echo $FISH"<span class="s2">.unixCmd;</span></p>
-<p class="p12"><br></p>
-<p class="p1">Also on os x applescript can be called via osascript:</p>
-<p class="p4"><br></p>
-<p class="p16">"osascript -e 'tell application \"Safari\" to activate'"<span class="s2">.unixCmd;</span></p>
-<p class="p6"><br></p>
-<p class="p1">Should you need an environment variable to persist you can use <b>setenv</b> (see below).</p>
-<p class="p4"><br></p>
-<p class="p1"><b>NOTE:</b> Despite the fact that the method is called 'unixCmd', <b>it does work in Windows</b>. The string must be a DOS command, however: "dir" rather than "ls" for instance.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>unixCmd(action, postOutput)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Execute the String on the command line using the Bourne shell (sh). Returns the pid of the newly created process (use Integer.pidRunning to test if a pid is alive). action is a Function that is called when the process has exited. It is passed two arguments: the exit code and pid of the exited process. postOutput is a Boolean that controls whether or not the output of the process is displayed in the post window.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"ls Help"</span>.unixCmd;</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"echo one; sleep 1; echo two; sleep 1"</span>.unixCmd { <span class="s3">|res, pid|</span> [\done, res, pid].postln };</p>
-<p class="p4"><br></p>
-<p class="p1"><b>unixCmdGetStdOut</b></p>
-<p class="p4"><br></p>
-<p class="p1">Similar to unixCmd except that the stdout of the process is returned (synchronously) rather than sent to the post window.</p>
-<p class="p4"><br></p>
-<p class="p5">~listing = <span class="s4">"ls Help"</span>.unixCmdGetStdOut; <span class="s5">// Grab</span></p>
-<p class="p5">~listing.reverse.as(<span class="s3">Array</span>).stutter.join.postln; <span class="s5">// Mangle</span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>runInTerminal</b></p>
-<p class="p4"><br></p>
-<p class="p1">Execute the String in a new terminal window. (The string is incorporated into a temporary script file and executed using a shell. "/usr/bash" is the default shell used but you can optionally specify which shell to use as an argument.)</p>
-<p class="p4"><br></p>
-<p class="p8">"echo ---------Hello delightful SuperCollider user----------".runInTerminal;</p>
-<p class="p4"><br></p>
-<p class="p1"><b>setenv(value)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Set the environment variable indicated in the string to equal the String <b>value</b>. This value will persist until it is changed or SC is quit. Note that if <b>value</b> is a path you may need to call standardizePath on it (see below).</p>
-<p class="p4"><br></p>
-<p class="p11">// all defs in this directory will be loaded when a local server boots</p>
-<p class="p8">"SC_SYNTHDEF_PATH".setenv("~/scwork/".standardizePath);<span class="Apple-converted-space"> </span></p>
-<p class="p8">"echo $SC_SYNTHDEF_PATH".unixCmd;</p>
-<p class="p4"><br></p>
-<p class="p1"><b>getenv</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns the value contained in the environment variable indicated by the String.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"USER"</span>.getenv;</p>
-<p class="p4"><br></p>
-<p class="p1"><b>pathMatch</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns an <b>Array</b> containing all paths matching this String. Wildcards apply, non-recursive.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s3">Post</span> << <span class="s4">"Help/*"</span>.pathMatch;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>loadPaths</b></p>
-<p class="p4"><br></p>
-<p class="p1">Perform pathMatch (see above) on this String, then load and execute all paths in the resultant <b>Array</b>.</p>
-<p class="p4"><br></p>
-<p class="p8">"Help/Collections/loadPaths example.scd".loadPaths; <span class="s5">//This file posts some text</span></p>
-<p class="p6"><br></p>
-<p class="p1"><b>load</b></p>
-<p class="p4"><br></p>
-<p class="p1">Load and execute the file at the path represented by the receiver.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>loadRelative</b></p>
-<p class="p4"><br></p>
-<p class="p1">Load and execute the file at the path represented by the receiver, interpreting the path as relative to the current document or text file. Requires that the file has been saved.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>resolveRelative</b></p>
-<p class="p4"><br></p>
-<p class="p1">Convert the receiver from a relative path to an absolute path, relative to the current document or text file. Requires that the current text file has been saved. Absolute paths are left untransformed.</p>
-<p class="p6"><br></p>
-<p class="p1"><b>standardizePath</b></p>
-<p class="p4"><br></p>
-<p class="p1">Expand ~ to your home directory, and resolve symbolic links. See <b>PathName </b>for more complex needs.</p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s4">"~/"</span>.standardizePath; //This will print your home directory</p>
-<p class="p6"><br></p>
-<p class="p1"><b>basename</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return the filename from a Unix path.</p>
-<p class="p4"><br></p>
-<p class="p8">"Imaginary/Directory/fish.rtf".basename;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>dirname</b></p>
-<p class="p4"><br></p>
-<p class="p1">Return the directory name from a Unix path.</p>
-<p class="p4"><br></p>
-<p class="p8">"Imaginary/Directory/fish.rtf".dirname;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>splitext</b></p>
-<p class="p4"><br></p>
-<p class="p1">Split off the extension from a filename or path and return both in an <b>Array </b>as [path or filename, extension].</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"fish.rtf"</span>.splitext;</p>
-<p class="p8">"Imaginary/Directory/fish.rtf".splitext;</p>
-<p class="p6"><br></p>
-<p class="p13"><b>Document Support</b></p>
-<p class="p18"><br></p>
-<p class="p1"><b>newTextWindow(title, makeListener)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Create a new <b>Document</b> with this.</p>
-<p class="p4"><br></p>
-<p class="p8">"Here is a new Document".newTextWindow;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>openDocument</b></p>
-<p class="p4"><br></p>
-<p class="p1">Create a new <b>Document</b> from the path corresponding to this. Returns the Document.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">d = <span class="s4">"Help/Help.html"</span>.openDocument;</p>
-<p class="p5">d.class;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p1"><b>openTextFile(selectionStart, selectionLength)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Create a new <b>Document</b> from the path corresponding to this. The selection arguments will preselect the indicated range in the new window. Returns this.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">d = <span class="s4">"Help/Help.html"</span>.openTextFile(20, 210);</p>
-<p class="p5">d.class;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p1"><b>findHelpFile</b></p>
-<p class="p4"><br></p>
-<p class="p1">Returns the path for the helpfile named this, if it exists, else returns nil.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"Document"</span>.findHelpFile;</p>
-<p class="p5"><span class="s4">"foobar"</span>.findHelpFile;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>openHelpFile</b></p>
-<p class="p4"><br></p>
-<p class="p1">Performs foundHelpFile(above) on this, and opens the file it if it exists, otherwise opens the main helpfile.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">"Document"</span>.openHelpFile;</p>
-<p class="p5"><span class="s4">"foobar"</span>.openHelpFile;</p>
-<p class="p9"><br></p>
-<p class="p1"><b>speak(channel, force)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Sends string to the speech synthesisier of the OS. (OS X only.) see: <a href="../OSX/Speech.html"><span class="s3">Speech</span></a></p>
-<p class="p19"><br></p>
-<p class="p8">"hi i'm talking with the default voice now, i guess"<span class="s2">.speak;</span></p>
-<p class="p19"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p13"><b>Drawing Support</b></p>
-<p class="p4"><br></p>
-<p class="p1">The following methods must be called within an Window-drawHook or a SCUserView-drawFunc function, and will only be visible once the window or the view is refreshed. Each call to Window-refresh SCUserView-refresh will 'overwrite' all previous drawing by executing the currently defined function.</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2">See also: <a href="../GUI/Cocoa-GUI/SCWindow.html"><span class="s7">Window</span></a>, <a href="../GUI/Cocoa-GUI/SCUserView.html"><span class="s7">SCUserView</span></a>, <a href="../GUI/GUI-Tools/Color.html"><span class="s7">Color</span></a>, and <a href="../GUI/Main-GUI/Pen.html"><span class="s7">Pen</span></a>.</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p20"><span class="s8"><b>Note:</b> for cross-platform GUIs, use </span><span class="s3">Pen</span>.stringAtPoint,<span class="s8"> </span><span class="s3">Pen</span>.stringInRect<span class="s8">, </span><span class="s3">Pen</span>.stringCenteredIn<span class="s8">, </span><span class="s3">Pen</span>.stringLeftJustIn<span class="s8">, </span><span class="s3">Pen</span>.stringRightJustIn<span class="s8"> instead.</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>draw</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1">Draws the String at the current 0 at 0 <a href="../Geometry/Point.html"><span class="s3">Point</span></a>. If not transformations of the graphics state have taken place this will be the upper left corner of the window. See also <a href="../GUI/Main-GUI/Pen.html"><span class="s3">Pen</span></a>.</p>
-<p class="p9"><br></p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s3">Window</span>.new.front;</p>
-<p class="p5">w.view.background_(<span class="s3">Color</span>.white);</p>
-<p class="p5">w.drawHook = {</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>"abababababa\n\n\n"<span class="s2">.scramble.draw</span></p>
-<p class="p5">};</p>
-<p class="p5">w.refresh</p>
-<p class="p5">)</p>
-<p class="p9"><br></p>
-<p class="p1"><b>drawAtPoint(point, font, color)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Draws the String at the given <a href="../Geometry/Point.html"><span class="s3">Point</span></a><b> </b>using the <a href="../GUI/Main-GUI/Font.html"><span class="s3">Font</span></a> and <a href="../GUI/GUI-Tools/Color.html"><span class="s3">Color</span></a> specified.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s3">Window</span>.new.front;</p>
-<p class="p5">w.view.background_(<span class="s3">Color</span>.white);</p>
-<p class="p5">w.drawHook = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">"abababababa\n\n\n"</span>.scramble.drawAtPoint(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100 at 100,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Font</span>(<span class="s4">"Courier"</span>, 30),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Color</span>.blue(0.3, 0.5))</p>
-<p class="p5">};</p>
-<p class="p5">w.refresh</p>
-<p class="p5">)</p>
-<p class="p9"><br></p>
-<p class="p1"><b>drawInRect(rect, font, color)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Draws the String into the given <a href="../Geometry/Rect.html"><span class="s3">Rect</span></a> using the <a href="../GUI/Main-GUI/Font.html"><span class="s3">Font</span></a> and <a href="../GUI/GUI-Tools/Color.html"><span class="s3">Color</span></a> specified.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s3">Window</span>.new.front;</p>
-<p class="p5">r = <span class="s3">Rect</span>(100, 100, 100, 100);</p>
-<p class="p5">w.view.background_(<span class="s3">Color</span>.white);</p>
-<p class="p5">w.drawHook = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">"abababababa\n\n\n"</span>.scramble.drawInRect(<span class="s3">r</span>, <span class="s3">Font</span>(<span class="s4">"Courier"</span>, 12), <span class="s3">Color</span>.blue(0.3, 0.5));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>Pen.strokeRect(r);</p>
-<p class="p5">};</p>
-<p class="p5">w.refresh</p>
-<p class="p5">)</p>
-<p class="p9"><br></p>
-<p class="p1"><b>drawCenteredIn(rect, font, color)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Draws the String into the given <a href="../Geometry/Rect.html"><span class="s3">Rect</span></a> using the <a href="../GUI/Main-GUI/Font.html"><span class="s3">Font</span></a> and <a href="../GUI/GUI-Tools/Color.html"><span class="s3">Color</span></a> specified.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s3">Window</span>.new.front;</p>
-<p class="p5">w.view.background_(<span class="s3">Color</span>.white);</p>
-<p class="p5">r = <span class="s3">Rect</span>(100, 100, 100, 100);</p>
-<p class="p5">w.drawHook = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">"abababababa\n\n\n"</span>.scramble.drawCenteredIn(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Font</span>(<span class="s4">"Courier"</span>, 12),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Color</span>.blue(0.3, 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.strokeRect(r);</p>
-<p class="p5">};</p>
-<p class="p5">w.refresh</p>
-<p class="p5">)</p>
-<p class="p9"><br></p>
-<p class="p1"><b>drawLeftJustIn(rect, font, color)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Draws the String into the given <a href="../Geometry/Rect.html"><span class="s3">Rect</span></a> using the <a href="../GUI/Main-GUI/Font.html"><span class="s3">Font</span></a> and <a href="../GUI/GUI-Tools/Color.html"><span class="s3">Color</span></a> specified.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s3">Window</span>.new.front;</p>
-<p class="p5">w.view.background_(<span class="s3">Color</span>.white);</p>
-<p class="p5">r = <span class="s3">Rect</span>(100, 100, 100, 100);</p>
-<p class="p5">w.drawHook = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">"abababababa\n\n\n"</span>.scramble.drawLeftJustIn(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Font</span>(<span class="s4">"Courier"</span>, 12),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Color</span>.blue(0.3, 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.strokeRect(r);</p>
-<p class="p5">};</p>
-<p class="p5">w.refresh</p>
-<p class="p5">)</p>
-<p class="p9"><br></p>
-<p class="p1"><b>drawRightJustIn(rect, font, color)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Draws the String into the given <a href="../Geometry/Rect.html"><span class="s3">Rect</span></a> using the <a href="../GUI/Main-GUI/Font.html"><span class="s3">Font</span></a> and <a href="../GUI/GUI-Tools/Color.html"><span class="s3">Color</span></a> specified.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s3">Window</span>.new.front;</p>
-<p class="p5">w.view.background_(<span class="s3">Color</span>.white);</p>
-<p class="p5">r = <span class="s3">Rect</span>(100, 100, 100, 100);</p>
-<p class="p5">w.drawHook = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">"abababababa\n\n\n"</span>.scramble.drawRightJustIn(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Font</span>(<span class="s4">"Courier"</span>,<span class="s9"> </span>12),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Color</span>.blue(0.3, 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.strokeRect(r);</p>
-<p class="p5">};</p>
-<p class="p5">w.refresh</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/Collections/SymbolArray.html b/Help/Collections/SymbolArray.html
deleted file mode 100644
index b909739..0000000
--- a/Help/Collections/SymbolArray.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #000000}
-span.s2 {color: #002eaf}
-span.s3 {color: #002fe0}
-span.s4 {color: #0021e7}
-span.s5 {color: #0000ff}
-</style>
-</head>
-<body>
-<p class="p1"><b>Int8Array, Int16Array, Int32Array, FloatArray,</b> <b>DoubleArray, SymbolArray</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s2"><b> :</b></span><span class="s1"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><span class="s3"><b> : </b><a href="ArrayedCollection.html"><span class="s4"><b>ArrayedCollection</b></span></a> : <a href="RawArray.html"><span class="s5"><b>RawArray</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p5">These classes implement arrays whose indexed slots are all of the same type.</p>
-<p class="p4"><br></p>
-<p class="p5">Int8Array - 8 bit integer</p>
-<p class="p5">Int16Array - 16 bit integer</p>
-<p class="p5">Int32Array - 32 bit integer</p>
-<p class="p5">FloatArray - 32 bit floating point</p>
-<p class="p5">DoubleArray - 64 bit floating point</p>
-<p class="p5">SymbolArray - symbols</p>
-<p class="p4"><br></p>
-<p class="p5">These classes implement only one method.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>*readNew(file)</b></p>
-<p class="p4"><br></p>
-<p class="p5">Called by *read to read<span class="Apple-converted-space">  </span>the entire file as an array of this class' type and return a new instance.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/Tuning.html b/Help/Collections/Tuning.html
deleted file mode 100644
index c711674..0000000
--- a/Help/Collections/Tuning.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #002ce2}
-span.s2 {color: #0019ba}
-span.s3 {color: #000000}
-span.s4 {color: #2b6f11}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Tuning</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s1"><b>Object</b></span></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">Represents a musical tuning (e.g. equal temperament, just intonation, etc.). Used in conjunction with <a href="Scale.html"><span class="s1"><b>Scale</b></span></a> to generate pitch information.</p>
-<p class="p4"><br></p>
-<p class="p5">t = <span class="s2">Tuning</span>.et12;</p>
-<p class="p6"><span class="s3">t.semitones;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]</p>
-<p class="p6"><span class="s3">t.ratios;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// [ 1, 1.0594630943591, 1.1224620483089, 1.1892071150019, etc. ]</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Pbind</span>(<span class="s4">\scale</span>, <span class="s2">Scale</span>.major(t), <span class="s4">\degree</span>, <span class="s2">Pseq</span>((0..7) ++ (6..0) ++ [<span class="s4">\rest</span>], 1), <span class="s4">\dur</span>, 0.25).play;</p>
-<p class="p2"><br></p>
-<p class="p6">// use non-standard tuning</p>
-<p class="p5">t = <span class="s2">Tuning</span>.just;</p>
-<p class="p6"><span class="s3">t.semitones;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// [ 0, 1.1173128526978, 2.0391000173077, 3.1564128700055, etc. ]</p>
-<p class="p6"><span class="s3">t.ratios.collect(</span><span class="s2">_</span><span class="s3">.round(0.001));<span class="Apple-tab-span">	</span></span>// [ 1, 1.067, 1.125, 1.2, 1.25, 1.333, 1.406, 1.5, etc. ]</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Pbind</span>(<span class="s4">\scale</span>, <span class="s2">Scale</span>.major(t), <span class="s4">\degree</span>, <span class="s2">Pseq</span>((0..7) ++ (6..0) ++ [<span class="s4">\rest</span>], 1), <span class="s4">\dur</span>, 0.25).play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="s5">Creation</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*et(pitchesPerOctave)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Creates an equal-tempered scale based on <b>pitchesPerOctave</b>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*just, *pythagorean, *werckmeister, *johnston, *partch, *wcAlpha, *bp, etc.</b></p>
-<p class="p4"><br></p>
-<p class="p3">Creates a tuning from the library stored in <b>TuningInfo</b>. For a complete list of available tunings, execute</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s6">Tuning</span>.directory</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*choose(size)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Creates a random tuning from the library, constrained by size (which defaults to 12).</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Scale</span>.major(<span class="s2">Tuning</span>.choose).tuning.name;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(tuning, octaveRatio, name)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Creates a <b>Tuning</b> using some or all of the parameters as follows: <b>tuning</b> can be the name of a library tuning (in which case that tuning is returned); an array of floats representing the semitone values of the tuning (in which case pitchesPerOctave will be set to the size of the array regardless of the second parameter); or nil (in which case the default tuning for <b>pitchesPerOctave</b> will be returned). <b>octaveRatio</b> defaults to 2.0, but can be set differently for stretched or compressed tunings.</p>
-<p class="p4"><br></p>
-<p class="p3">Examples:</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">Tuning</span><span class="s3">.new(</span><span class="s4">\et12</span><span class="s3">);<span class="Apple-tab-span">	</span></span>// standard equal temperament</p>
-<p class="p6">// custom tuning</p>
-<p class="p5"><span class="s2">Tuning</span>.new(#[ 0, 0.795, 2.251, 3.251, 4.036, 4.680, 5.915, 7.221, 8.013, 9.29, 9.930, 11.032 ]);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2">Tuning</span>.new((0..11).collect(<span class="s2">_</span> * (2.08 ** (1/12))), 2.08, "Stretched ET12");</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><b><span class="s5">Instance Methods</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>semitones</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns an array of semitone values for the pitch set. <b>as(Array)</b> is equivalent; <b>as(List)</b> returns it as a list, etc.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>cents</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns a array of cent values for the pitch set.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>ratios</b></p>
-<p class="p4"><br></p>
-<p class="p3">Returns a tuned array of ratios for the pitch set.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><b><span class="s5">Examples</span></b></p>
-<p class="p2"><br></p>
-<p class="p3">For examples of use, see the <a href="Scale.html"><span class="s1"><b>Scale</b></span></a> help file.</p>
-</body>
-</html>
diff --git a/Help/Collections/TwoWayIdentityDictionary.html b/Help/Collections/TwoWayIdentityDictionary.html
deleted file mode 100644
index f14316e..0000000
--- a/Help/Collections/TwoWayIdentityDictionary.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 57.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002fe0}
-span.s3 {color: #0024f8}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.s6 {color: #606060}
-span.s7 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TwoWayIdentityDictionary<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>associative collection mapping keys to values and back</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Collection.html"><span class="s2"><b>Collection</b></span></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">Similar to <a href="IdentityDictionary.html"><span class="s3">IdentityDictionary</span></a>, but allows to go efficiently from element to key and back.</p>
-<p class="p1">The contents of a TwoWayIdentityDictionary are <b>unordered</b>.<span class="Apple-converted-space">  </span>You must not depend on the order of items.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*getID(obj)</b></p>
-<p class="p3">find the key for a given object. If object is not element of the dictionary, it returns nil.</p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s4">a = </span>TwoWayIdentityDictionary<span class="s4">.new;</span></p>
-<p class="p8">a.put(<span class="s5">\test</span>, 999);</p>
-<p class="p8">a.put([<span class="s6">"some"</span>, <span class="s6">"strings"</span>], 1200);</p>
-<p class="p8">a.at(<span class="s5">\test</span>);</p>
-<p class="p8">a.getID(999);</p>
-<p class="p8">a.getID(1200);</p>
-<p class="p8">a.getID(888); <span class="s7">// nil</span></p>
-</body>
-</html>
diff --git a/Help/Collections/Wavetable.html b/Help/Collections/Wavetable.html
deleted file mode 100644
index 7babaf1..0000000
--- a/Help/Collections/Wavetable.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #002eaf}
-span.s4 {color: #002fe0}
-span.s5 {color: #0021e7}
-span.s6 {color: #0039da}
-span.s7 {color: #003eea}
-span.s8 {color: #0024f8}
-span.s9 {color: #001bb9}
-span.s10 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Wavetable<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>sampled audio buffer in wavetable format</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a><b> : </b><a href="Collection.html"><b>Collection</b></a></span><span class="s3"><b> :</b></span><span class="s2"><b> </b><a href="SequenceableCollection.html"><b>SequenceableCollection</b></a></span><span class="s4"><b> : </b><a href="ArrayedCollection.html"><span class="s5"><b>ArrayedCollection</b></span></a></span><span class="s6"> : <a href="RawArray.html"><span class="s7"><b>RawArray</b></span></a></span><span class="s2"> : <a href="FloatArray.html"><span class="s8"><b>FloatArray</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">A Wavetable is a FloatArray in a special format used by SuperCollider's interpolating</p>
-<p class="p1">oscillators. Wavetables cannot be created by <b>new</b>.</p>
-<p class="p4"><br></p>
-<p class="p1">see also: <a href="Signal.html"><span class="s8">Signal</span></a></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Creation</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>*sineFill(size, amplitudes, phases)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Wavetable of the given size with a sum of sines at the given amplitudes and phases.</p>
-<p class="p1">The Wavetable will be normalized.</p>
-<p class="p1"><b>size</b> - must be a power of 2.</p>
-<p class="p1"><b>amplitudes</b> - an Array of amplitudes for each harmonic beginning with the fundamental.</p>
-<p class="p1"><b>phases</b> - an Array of phases in radians for each harmonic beginning with the fundamental.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s9">Wavetable</span>.sineFill(512, 1.0/[1, 2, 3, 4, 5, 6]).plot;</p>
-<p class="p7"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>*chebyFill(size, amplitudes, phases)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Fill a Wavetable of the given size with a sum of Chebyshev polynomials at the given amplitudes</p>
-<p class="p1">for use in waveshaping by the Shaper ugen.</p>
-<p class="p1">The Wavetable will be normalized.</p>
-<p class="p1"><b>size</b> - must be a power of 2 plus 1, eventual wavetable is next power of two size up.</p>
-<p class="p1"><b>amplitudes</b> - an Array of amplitudes for each Chebyshev polynomial beginning with order 1.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s9">Wavetable</span>.chebyFill(513, [1]).plot;</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s9">Wavetable</span>.chebyFill(513, [0, 1]).plot;</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s9">Wavetable</span>.chebyFill(513, [0, 0, 1]).plot;</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s9">Wavetable</span>.chebyFill(513, [0.3, -0.8, 1.1]).plot;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5"><b>Instance Methods</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>plot(name, bounds, minval, maxval, parent)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Plot the Wavetable in a window. The arguments are not required and if not given defaults will be used.</p>
-<p class="p1"><b>name</b> - a String, the name of the window.</p>
-<p class="p1"><b>bounds</b> - a Rect giving the bounds of the window.</p>
-<p class="p9"><b>minval</b> - the minimum value in the plot. Defaults to the highest value in the data.</p>
-<p class="p9"><b>maxval</b> - the maximum value in the plot. Defaults to the lowest value in the data.</p>
-<p class="p9"><b>parent</b> - a window to place the plot in. If nil, one will be created for you</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s9">Wavetable</span>.sineFill(512, [0.5]).plot;</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s9">Wavetable</span>.sineFill(512, [1]).plot(<span class="s10">"Table 1"</span>, <span class="s9">Rect</span>(50, 50, 150, 450));</p>
-<p class="p8"><br></p>
-<p class="p7"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>asSignal</b></p>
-<p class="p4"><br></p>
-<p class="p1">Convert the Wavetable into a Signal.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s9">Wavetable</span>.sineFill(512, [1]).asSignal.plot;</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Collections/loadPaths example.scd b/Help/Collections/loadPaths example.scd
deleted file mode 100644
index 47f1af6..0000000
--- a/Help/Collections/loadPaths example.scd	
+++ /dev/null
@@ -1 +0,0 @@
-"This text is the result of a postln command which was loaded and executed by loadPaths".postln;
diff --git a/Help/Control/AbstractServerAction.html b/Help/Control/AbstractServerAction.html
deleted file mode 100644
index 3d9c999..0000000
--- a/Help/Control/AbstractServerAction.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #001bb9; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {font: 9.0px Monaco}
-span.s6 {color: #2c7014}
-span.s7 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>AbstractServerAction<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>register actions to be taken for a server</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : AbstractSystemAction<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p1">This is an <b>abstract superclass</b> for singletons like ServerQuit, which provides a place for registering functions and objects for events that should happen when something happens in the server.<span class="Apple-converted-space"> </span></p>
-<p class="p1">No direct call to AbstractServerAction is required.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../ServerArchitecture/Server.html"><span class="s2">Server</span></a>, <a href="ServerBoot.html"><span class="s4">ServerBoot</span></a>, <a href="ServerTree.html"><span class="s4">ServerTree</span></a>, <a href="ServerQuit.html"><span class="s4">ServerQuit</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Note: not fully working on linux and windows.</b></p>
-<p class="p2"><br></p>
-<p class="p1">Setting the computer to sleep on these systems causes the actions to be called.</p>
-<p class="p1">As to date in linux, JACK does not survive a sleep, it nevertheless behaves correctly for the time being.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*functionSelector</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>subclasses return specific function selectors for objects that implement this as interface.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>selectors are:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>doOnServerBoot</b> - <span class="Apple-tab-span">	</span><a href="ServerBoot.html"><span class="s2">ServerBoot</span></a></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>doOnServerQuit</b> -<span class="Apple-tab-span">	</span><a href="ServerQuit.html"><span class="s2">ServerQuit</span></a></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>doOnServerTree</b> - <span class="Apple-tab-span">	</span><a href="ServerTree.html"><span class="s2">ServerTree</span></a></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>not for registry with a server, but analogous are:<span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3"><b>doOnCmdPeriod</b></span> - <span class="Apple-tab-span">	</span><a href="CmdPeriod.html"><span class="s4">CmdPeriod</span></a></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3"><b>doOnStartUp</b></span> - <span class="Apple-tab-span">	</span><a href="StartUp.html"><span class="s4">StartUp</span></a></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*add(object, server)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Add an action or object for registry</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- Can either be a <b>function</b> to be evaluated (as first arg the server is passed in),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or an Object that implements the message returned by <b>functionSelector.</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>One object is only registered once</b>, so that multiple additions don't cause multiple calls.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - Server for which to register.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the symbol <b>\default </b>is passed in, the action is called for the current default server.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the symbol <b>\all</b> is passed in, the action is called for all current servers.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if server is nil, it is added to \default.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*remove(object, server)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove an item or object from registry. If server is nil, remove from <b>default</b> key.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*removeServer(server)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove all items that are registered for a given server</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*removeAll</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove all items from registry<span class="s5"><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// examples</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s3"><span class="Apple-tab-span">	</span></span>// ServerBoot</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = { </span><span class="s2">|server|</span><span class="s3"> </span>"------------The server '%' has booted.------------\n"<span class="s3">.postf(server) };</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerBoot</span>.add(f, <span class="s6">\default</span>);</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.quit; </span>// quit the server and observe the post</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">ServerBoot</span><span class="s3">.remove(f, </span><span class="s6">\default</span><span class="s3">); </span>// remove it again</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.quit;<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</span>// no post.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerBoot</span>.add(f, <span class="s2">Server</span>.internal);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Server</span>.internal.quit;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Server</span>.internal.boot;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerBoot</span>.removeAll; <span class="s7">// clear all</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// ServerQuit</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = { |server| </span>"------------The server '%' has quit.------------\n"<span class="s3">.postf(server) };</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerQuit</span>.add(f, <span class="s6">\default</span>);</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.quit; </span>// quit the server and observe the post</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">ServerQuit</span><span class="s3">.remove(f, </span><span class="s6">\default</span><span class="s3">); </span>// remove it again</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.quit; </span>// no post.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerQuit</span>.add(f, <span class="s2">Server</span>.internal);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Server</span>.internal.boot;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Server</span>.internal.quit;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerQuit</span>.removeAll; <span class="s7">// clear all</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ServerTree</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.quit;</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = { </span><span class="s2">|server|</span><span class="s3"> </span>"-------The server '%' has initialised tree.-------\n"<span class="s3">.postf(server) };</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = { <span class="s2">|server|</span> 10.do { <span class="s2">Group</span>(server).postln } };</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerBoot</span>.add(f, <span class="s6">\default</span>);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerTree</span>.add(g, <span class="s6">\default</span>);</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot; </span>// boot and see how the actions are evaluated in order</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// "cmd-period" (or equivalent) resends the grous.</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerBoot</span>.removeAll; <span class="s7">// clear all</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ServerTree</span>.removeAll; <span class="s7">// clear all</span></p>
-<p class="p6"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-</body>
-</html>
diff --git a/Help/Control/CCResponder.html b/Help/Control/CCResponder.html
deleted file mode 100644
index 8f441ca..0000000
--- a/Help/Control/CCResponder.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0018e8}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 29.0px; text-indent: -29.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1a32a0}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>CCResponder</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">see also <a href="SC://MIDIResponder"><span class="s2">MIDIResponder</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>CCResponder(function, src, chan, num, value, install = true,swallowEvent = false)</b></p>
-<p class="p5"><br></p>
-<p class="p4"><b>src</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The src number may be the system UID (obtained from MIDIClient.sources[index].uid)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>or the index of the source in the MIDIClient.sources array.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>nil matches all</p>
-<p class="p4"><b>chan</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>0 .. 15</p>
-<p class="p4"><span class="Apple-tab-span">	</span>nil matches all</p>
-<p class="p4"><b>num</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>0 .. 127</p>
-<p class="p4"><span class="Apple-tab-span">	</span>nil matches all</p>
-<p class="p4"><b>value</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>0 .. 127</p>
-<p class="p4"><span class="Apple-tab-span">	</span>nil matches all</p>
-<p class="p5"><br></p>
-<p class="p4">any of these may also be a function which will be evaluated to determine the match:</p>
-<p class="p4"><span class="Apple-tab-span">	</span>eg: { |val| val < 50 }</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7">(</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>c = CCResponder({ |src,chan,num,value|</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[src,chan,num,value].postln;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">nil</span>, // any source</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">nil</span>, // any channel</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">nil</span>, // any CC number</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">nil</span> // any value</p>
-<p class="p9"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p7">c.remove</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>c = CCResponder({ |src,chan,num,value|</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[src,chan,num,value].postln;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">nil</span>, // any source</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">nil</span>, // any channel</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>80, // CC number 80</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s3">|val|</span> val < 50 } // any value less than 50</p>
-<p class="p9"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p7">c.remove</p>
-<p class="p2"><br></p>
-<p class="p11"><b></b><br></p>
-<p class="p12"><b>learn</b></p>
-<p class="p2"><br></p>
-<p class="p12">wait for the next CC message, reset to match src,chan, cc num</p>
-<p class="p7">(</p>
-<p class="p13"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>c = CCResponder({ |src,chan,num,value|</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[src,chan,num,value].postln;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span>c.learn; // wait for the first controller</p>
-<p class="p7">)</p>
-<p class="p14">CCResponder.removeAll</p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Control/CmdPeriod.html b/Help/Control/CmdPeriod.html
deleted file mode 100644
index d952279..0000000
--- a/Help/Control/CmdPeriod.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0023b7}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9e201b}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0023b7}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #3c6d12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>CmdPeriod<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>register objects to be cleared when Cmd-. is pressed</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">CmdPeriod allows you to register objects to perform an action when the user presses Cmd-. These objects must implement a method called -cmdPeriod which performs the necessary tasks. (You can add such a method in your custom classes.) Note that since <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a><b> </b>implements -cmdPeriod as a synonym for -value, it is possible to register any function (and thus any arbitrary code) for evaluation when Cmd-. is pressed.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*add(object)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Registers an object to be cleared when Cmd-. is pressed. This object will stay registered until it is explicitly removed, and will thus respond to additional presses of Cmd-.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*remove(object)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Removes an object that was previously registered.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*removeAll</b></p>
-<p class="p2"><br></p>
-<p class="p3">Removes all objects that have been registered.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*doOnce(object)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Registers an Object o be evaluated once, and then unregistered.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*objects</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the list of objects that are called when CmdPeriod is evaluated.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*objects_(array)</b><span class="Apple-tab-span">	</span>set the list of objects that are called when CmdPeriod is evaluated.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*era</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of times CmdPeriod has been called since startup.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Examples</b></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">f = {<span class="s3">"foo"</span>.postln };</p>
-<p class="p7">g = {<span class="s3">"bar"</span>.postln };</p>
-<p class="p8">CmdPeriod<span class="s4">.add(f);</span></p>
-<p class="p8">CmdPeriod<span class="s4">.add(g);</span></p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p10">// Now press Cmd-.</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s2">CmdPeriod</span>.remove(g);</p>
-<p class="p9"><br></p>
-<p class="p10">// Now press Cmd-. Only f executes</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s2">CmdPeriod</span><span class="s4">.remove(f); </span>// must explicitly cleanup</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">// Now press Cmd-.</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s2">CmdPeriod</span><span class="s4">.add(g); </span>// one object is added only once.</p>
-<p class="p10"><span class="s2">CmdPeriod</span><span class="s4">.add(g); </span>// one object is added only once.</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">// Now press Cmd-.</p>
-<p class="p9"><br></p>
-<p class="p10">// remove it again.</p>
-<p class="p7"><span class="s2">CmdPeriod</span>.remove(g);</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">// note that often you want to automatically remove the function once it is evaluated</p>
-<p class="p10">// instead of</p>
-<p class="p9"><br></p>
-<p class="p7">f = { <span class="s3">"foo"</span>.postln; <span class="s2">CmdPeriod</span>.remove(f) };</p>
-<p class="p8">CmdPeriod<span class="s4">.add(f);</span></p>
-<p class="p9"><br></p>
-<p class="p10">// you can write:</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s2">CmdPeriod</span>.doOnce { <span class="s3">"foo"</span>.postln }</p>
-<p class="p9"><br></p>
-<p class="p10">// a typical example:</p>
-<p class="p7">(</p>
-<p class="p7">w = <span class="s2">Window</span>.new(<span class="s3">"close on cmd-."</span>).front;</p>
-<p class="p7"><span class="s2">CmdPeriod</span>.doOnce { w.close };</p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">// in some cases you might need to defer the function by a short amount of time</p>
-<p class="p7">a = { <span class="s2">Synth</span>(<span class="s5">\default</span>)};</p>
-<p class="p7">a.value;</p>
-<p class="p7"><span class="s2">CmdPeriod</span>.add({{a.value}.defer(0.01)});</p>
-<p class="p9"><br></p>
-<p class="p10">// remove all<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2">CmdPeriod</span>.removeAll</p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Control/ContiguousBlockAllocator.html b/Help/Control/ContiguousBlockAllocator.html
deleted file mode 100644
index 9619ecd..0000000
--- a/Help/Control/ContiguousBlockAllocator.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-</style>
-</head>
-<body>
-<p class="p1"><b>ContiguousBlockAllocator</b></p>
-<p class="p2"><br></p>
-<p class="p3">A more robust replacement for the default server block allocator, PowerOfTwoAllocator. May be used in the Server class to allocate audio/control bus numbers and buffer numbers.</p>
-<p class="p2"><br></p>
-<p class="p3">To configure a server to use ContiguousBlockAllocator, execute the following:</p>
-<p class="p2"><br></p>
-<p class="p4">aServer.options.blockAllocClass = <span class="s1">ContiguousBlockAllocator</span>;</p>
-<p class="p2"><br></p>
-<p class="p3">Normally you will not need to address the allocators directly. However, ContiguousBlockAllocator adds one feature not present in PowerOfTwoAllocator, namely the <i>reserve</i> method.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(size, pos = 0)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Create a new allocator with <i>size</i> slots. You may block off the first <i>pos</i> slots (the server's audioBusAllocator does this to reserve the hardware input and output buses).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>alloc(n = 1)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the starting index of a free block that is <i>n</i> slots wide. The default is 1 slot.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>free(address)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Free a previously allocated block starting at <i>address</i>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>reserve(address, size = 1)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Mark a specific range of addresses as used so that the alloc method will not return any addresses within that range.</p>
-</body>
-</html>
diff --git a/Help/Control/ControlSpec.html b/Help/Control/ControlSpec.html
deleted file mode 100644
index 616851a..0000000
--- a/Help/Control/ControlSpec.html
+++ /dev/null
@@ -1,270 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd1612}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 11.0px Monaco}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #00831b}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0b28c6}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1135f9}
-span.s3 {color: #0018b8}
-span.s4 {color: #000000}
-span.s5 {color: #0b28c6}
-span.s6 {color: #00831b}
-span.s7 {color: #737373}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {color: #0b28c5}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ControlSpec</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numerical input specification</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Spec.html"><span class="s3"><b>Spec</b></span></a></p>
-<p class="p4"><br></p>
-<p class="p3">The original, and most common spec (see <a href="Spec.html"><span class="s3">Spec</span></a> ). A ControlSpec is used by GUI sliders and knobs to specify the range and curve of the controls.<span class="Apple-converted-space">  </span>ControlSpec may be used in many ways to map from linear 0..1 range to your desired range and back.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>See also:</b> <a href="Warp.html"><span class="s2">Warp</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>The most common way to create a ControlSpec is by<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>anObject.asSpec </span>// the object may be an array or a symbol</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*new (minval, maxval, warp, step, default, units)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>minval </b>- The minimum vlue of the range.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>maxval </b>- The maximium value of the range.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>warp </b>- a <a href="Warp.html"><span class="s2">Warp</span></a>, a symbol (e.g. \lin or \exponential: Default value is \lin), or something else<span class="Apple-converted-space">  </span>that returns a Warp when sent the message .asWarp. A CurveWarp is defined by a number.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>step </b>- The smallest possible increment</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>default </b>- The default value</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>units </b>- The units, e.g. "hz". Used by some gui's as a unit label.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s5">ControlSpec</span>(0.01, 2000, <span class="s6">\exp</span>, 0.1, 220, <span class="s7">"Hz"</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or alternatively</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.001, 2000, <span class="s6">\exp</span>, 0.1, 220, <span class="s7">"hz"</span>].asSpec;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or add it to the ControlSpec.specs IdentityDictionary:</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">ControlSpec</span>.specs[<span class="s6">\myFreq</span>] = <span class="s5">ControlSpec</span>(0.01, 2000, <span class="s6">\exp</span>, 0.01, 440, units: <span class="s7">"Hz"</span>);</p>
-<p class="p9"><br></p>
-<p class="p15"><br></p>
-<p class="p16"><b>Accessing Instance and Class Variables</b></p>
-<p class="p15"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>map (value)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Maps and constrains a <b>value</b> between 0 and 1 to the range between minval and maxval.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>unmap (value)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Maps and constrains a <b>value</b> between minval and maxval to the range between 0 and 1.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>g = <span class="s5">ControlSpec</span>(0.01, 2000, <span class="s6">\exp</span>, 0.1, 220, <span class="s7">"Hz"</span>);</p>
-<p class="p14"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.map(0.5); </span>// convert from [0..1] to [0.01..2000]</p>
-<p class="p14"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.unmap(1000); </span>// convert from [0.01..2000] to [0..1]<span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fore and back translation should be close to identical:</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.unmap(g.map(0.5));</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>minval</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>minval_ (v)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>maxval</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>maxval_ (v)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>warp_(arg1)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>warp</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>step_(arg1)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>step</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>default_(arg1)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>default</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>units_(arg1)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>units</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>clipLo</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The lower of maxval and minval.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>clipHi</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The higher of maxval and minval</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>constrain (value)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p17"><span class="s8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns<span class="Apple-converted-space"> </span></span> value.asFloat.clip(clipLo, clipHi).round(step)<span class="s8">.</span></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>range</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p17"><span class="s8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns <span class="Apple-tab-span">	</span></span>maxval - minval<span class="s8">.</span></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>ratio</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p17"><span class="s8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns <span class="Apple-tab-span">	</span></span>maxval / minval<span class="s8">.</span></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>guessNumberStep</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Used for EZ GUI classes for guessing a sensible <b>step</b> if none is specified.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p7">// array is used as arguments to ControlSpec.new( minval, maxval, warp, step, default)</p>
-<p class="p18">[300,3000,<span class="s6">\exponential</span>,100].asSpec.dump</p>
-<p class="p18"><span class="s5">Instance</span> of <span class="s5">ControlSpec</span> {<span class="Apple-converted-space">    </span>(0313F<span class="s5">C08</span>, gc=00, fmt=00, flg=00, set=03)</p>
-<p class="p18"><span class="Apple-converted-space">  </span>instance variables [6]</p>
-<p class="p18"><span class="Apple-converted-space">    </span>minval : <span class="s5">Integer</span> 300</p>
-<p class="p18"><span class="Apple-converted-space">    </span>maxval : <span class="s5">Integer</span> 3000</p>
-<p class="p19"><span class="s4"><span class="Apple-converted-space">    </span>warp : </span><span class="s5">Symbol</span><span class="s4"> </span>'exponential'</p>
-<p class="p18"><span class="Apple-converted-space">    </span>step : <span class="s5">Integer</span> 100</p>
-<p class="p18"><span class="Apple-converted-space">    </span>default : <span class="s5">Integer</span> 300</p>
-<p class="p18">}</p>
-<p class="p4"><br></p>
-<p class="p7">// partially specified ...</p>
-<p class="p18">[-48,48].asSpec.dump</p>
-<p class="p18"><span class="s5">Instance</span> of <span class="s5">ControlSpec</span> {<span class="Apple-converted-space">    </span>(0313F<span class="s5">F18</span>, gc=00, fmt=00, flg=00, set=03)</p>
-<p class="p18"><span class="Apple-converted-space">  </span>instance variables [6]</p>
-<p class="p18"><span class="Apple-converted-space">    </span>minval : <span class="s5">Integer</span> -48</p>
-<p class="p18"><span class="Apple-converted-space">    </span>maxval : <span class="s5">Integer</span> 48</p>
-<p class="p18"><span class="Apple-converted-space">    </span>warp : <span class="s5">Symbol</span> <span class="s6">'linear'</span></p>
-<p class="p18"><span class="Apple-converted-space">    </span>step : <span class="s5">Float</span> 0</p>
-<p class="p18"><span class="Apple-converted-space">    </span>default : <span class="s5">Integer</span> -48</p>
-<p class="p18">}</p>
-<p class="p4"><br></p>
-<p class="p7">// a Symbol</p>
-<p class="p18"><span class="s6">\freq</span>.asSpec.dump</p>
-<p class="p18"><span class="s5">Instance</span> of <span class="s5">ControlSpec</span> {<span class="Apple-converted-space">    </span>(180F4910, gc=3C, fmt=00, flg=00, set=03)</p>
-<p class="p18"><span class="Apple-converted-space">  </span>instance variables [8]</p>
-<p class="p18"><span class="Apple-converted-space">    </span>minval : <span class="s5">Integer</span> 20</p>
-<p class="p18"><span class="Apple-converted-space">    </span>maxval : <span class="s5">Integer</span> 20000</p>
-<p class="p18"><span class="Apple-converted-space">    </span>warp : instance of <span class="s5">ExponentialWarp</span> (17F<span class="s5">EDB30</span>, size=1, set=1)</p>
-<p class="p18"><span class="Apple-converted-space">    </span>step : <span class="s5">Integer</span> 0</p>
-<p class="p18"><span class="Apple-converted-space">    </span>default : <span class="s5">Integer</span> 440</p>
-<p class="p18"><span class="Apple-converted-space">    </span>units : <span class="s7">" Hz"</span></p>
-<p class="p18"><span class="Apple-converted-space">    </span>clipLo : <span class="s5">Integer</span> 20</p>
-<p class="p18"><span class="Apple-converted-space">    </span>clipHi : <span class="s5">Integer</span> 20000</p>
-<p class="p18">}</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// nil becomes a default ControlSpec</p>
-<p class="p18"><span class="s5">nil</span>.asSpec.dump</p>
-<p class="p18"><span class="s5">Instance</span> of <span class="s5">ControlSpec</span> {<span class="Apple-converted-space">    </span>(0313F<span class="s5">F18</span>, gc=00, fmt=00, flg=00, set=03)</p>
-<p class="p18"><span class="Apple-converted-space">  </span>instance variables [6]</p>
-<p class="p18"><span class="Apple-converted-space">    </span>minval : <span class="s5">Float</span> 0</p>
-<p class="p18"><span class="Apple-converted-space">    </span>maxval : <span class="s5">Float</span> 1</p>
-<p class="p18"><span class="Apple-converted-space">    </span>warp : <span class="s5">Symbol</span> <span class="s6">'linear'</span></p>
-<p class="p18"><span class="Apple-converted-space">    </span>step : <span class="s5">Float</span> 0</p>
-<p class="p18"><span class="Apple-converted-space">    </span>default : <span class="s5">Float</span> 0</p>
-<p class="p18">}</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// make a frequency spec with an exponential range from 20 to 20000,<span class="Apple-converted-space"> </span></p>
-<p class="p7">// give it a rounding of 30 (Hz)</p>
-<p class="p18">a = <span class="s6">\freq</span>.asSpec;</p>
-<p class="p18">a.step = 100;</p>
-<p class="p4"><br></p>
-<p class="p7">// equivalent:</p>
-<p class="p18">a = [20, 20000, <span class="s6">'exp'</span>, 100, 440].asSpec;</p>
-<p class="p18">a.dump;</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">a.constrain(800); </span>// make sure it is in range and round it.</p>
-<p class="p7"><span class="s4">a.constrain(803); </span>// make sure it is in range and round it.<span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p18">a.map(0.5);</p>
-<p class="p7"><span class="s4">a.map(0.0); </span>// returns min</p>
-<p class="p7"><span class="s4">a.map(1.5); </span>// exceeds the area: clip, returns max</p>
-<p class="p4"><br></p>
-<p class="p18">a.unmap(4000);</p>
-<p class="p18">a.unmap(22.0);</p>
-<p class="p4"><br></p>
-<p class="p7">// like in envelopes, a CurveWarp is created by a number:<span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p18">a = [0, 1, -4].asSpec;</p>
-<p class="p18">a.map(0.5);</p>
-<p class="p18">a.unmap(0.99);</p>
-<p class="p18">a.map((0..10).normalize).plot;</p>
-<p class="p4"><br></p>
-<p class="p7">// look at different distributions:</p>
-<p class="p18">(</p>
-<p class="p18"><span class="s9">var</span> invals = (0..10).normalize;</p>
-<p class="p18">(-4..4).do { <span class="s9">|curve|</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s9">var</span> a = [0, 1, curve].asSpec;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>a.map(invals).plot;</p>
-<p class="p18">}</p>
-<p class="p18">);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7">// using spec for sliders:</p>
-<p class="p18">(</p>
-<p class="p18"><span class="s5">var</span> w, c, d;</p>
-<p class="p18">w = <span class="s5">Window</span>.new(<span class="s7">"control"</span>, <span class="s5">Rect</span>(128, 64, 340, 160));</p>
-<p class="p18">w.front;</p>
-<p class="p18">c = <span class="s5">Slider</span>.new(w, <span class="s5">Rect</span>(10, 10, 300, 30));</p>
-<p class="p18">d = <span class="s5">StaticText</span>.new(w, <span class="s5">Rect</span>(10, 40, 300, 30));</p>
-<p class="p18">c.action = { </p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span>d.string = </span>"unmapped value"</p>
-<p class="p18"><span class="Apple-tab-span">	</span>+ c.value.round(0.01)<span class="Apple-converted-space"> </span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span>+ </span>"......"<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span>+ </span>"mapped value"<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>+ a.map(c.value)</p>
-<p class="p18">};</p>
-<p class="p18">)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p7">// ControlSpec-map can also be used to map ugens<span class="Apple-converted-space"> </span></p>
-<p class="p18">(</p>
-<p class="p18"><span class="s5">var</span> spec;</p>
-<p class="p18">spec = [ 100, 18000, <span class="s6">\exp</span>].asSpec;</p>
-<p class="p18">{</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s5">var</span> freq,osc;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>osc = <span class="s5">SinOsc</span>.kr(0.1).range(0,1);</p>
-<p class="p18"><span class="Apple-tab-span">	</span>freq = spec.map(<span class="Apple-converted-space">  </span>osc );</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>freq.dump;</span>// BinaryOpUGen</p>
-<p class="p4"><br></p>
-<p class="p21"><span class="s4"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s4">.ar(</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>freq.poll</p>
-<p class="p18"><span class="Apple-tab-span">	</span>)</p>
-<p class="p18">}.play</p>
-<p class="p18">)<span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Control/Date.html b/Help/Control/Date.html
deleted file mode 100644
index 077d866..0000000
--- a/Help/Control/Date.html
+++ /dev/null
@@ -1,221 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.3px Arial; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.3px Arial}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 11.3px Arial}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #0025b2}
-span.s5 {color: #0024f8}
-span.s6 {color: #606060}
-span.s7 {font: 12.0px Helvetica}
-span.s8 {font: 11.3px Arial; color: #000000}
-span.s9 {color: #000000}
-span.s10 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Date</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>an object describing a point in time</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b><i>Class Methods</i></b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*new(year, month, day, hour, minute, second, dayOfWeek, rawSeconds, bootSeconds)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create a new date with the given properties (all numerical values).</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>These arguments are also the names of instance variables of the date object.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*getDate</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get current date from system and create a date object from it.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a = <span class="s4">Date</span>.getDate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.bootSeconds.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.dayOfWeek.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*localtime<span class="Apple-tab-span">	</span></b>get current localized time from system and create a date object from it.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*gmtime</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get current <b>Greenwich Mean Time (GMT)</b> from system and create a date object from it.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*seed</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get current date and return a value suitable for seeding a random number generator.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see also <a href="../Core/Kernel/randomSeed.html"><span class="s5">randomSeed</span></a></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a = <span class="s4">Date</span>.seed;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">thisThread</span>.randSeed = a;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>20.do { [1,0].choose.post }; <span class="s6">""</span>.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">thisThread</span>.randSeed = a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>25.do { [1,0].choose.post }; <span class="s6">""</span>.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><i>Instance Methods</i></b></p>
-<p class="p3"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>localtime</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the receiver's time to current localtime.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>gmtime</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the receiver's time to current <b>Greenwich Mean Time</b> (GMT).</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>dayStamp</b><span class="Apple-tab-span">	</span>obtain a string with the year, month and day in the format <b>YYMMDD</b>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>hourStamp</b><span class="Apple-tab-span">	</span>obtain a string in the format <b>H:M:S</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>secStamp</b><span class="Apple-tab-span">	</span>obtain a string with the seconds</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>stamp</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>obtain a string in the format <b>YYMMDD_HHMMSS</b>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>asSortableString</b><span class="Apple-tab-span">	</span>obtain a string in an alphabetically sortable standard database format</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>asctime</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>obtain a string in the format WeekdayName MonthName Time Year</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>asString</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns asctime.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>format(formatstring)</b><span class="Apple-tab-span">	</span>obtain a date string with a given format.<span class="Apple-converted-space">  </span>The character % is replaced by the<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>appropriate value, which is derived from the letter that follows.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="s7"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s4">Date</span><span class="s9">.getDate.format(</span>"Today is %A. It is around %I o'clock (%p), in %B."<span class="s9">);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Date</span>.getDate.format(<span class="s6">"%Y-%d-%e-%Hh%m"</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9">A list of formats can be found here: <span class="s10">http://www.opengroup.org/onlinepubs/009695399/functions/strftime.html</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Supported conversion specifications:</b></p>
-<p class="p2"><br></p>
-<p class="p9">%a</p>
-<p class="p9">Replaced by the locale's abbreviated weekday name. [ tm_wday]</p>
-<p class="p2"><br></p>
-<p class="p9">%A</p>
-<p class="p9">Replaced by the locale's full weekday name. [ tm_wday]</p>
-<p class="p2"><br></p>
-<p class="p9">%b</p>
-<p class="p9">Replaced by the locale's abbreviated month name. [ tm_mon]</p>
-<p class="p2"><br></p>
-<p class="p9">%B</p>
-<p class="p9">Replaced by the locale's full month name. [ tm_mon]</p>
-<p class="p2"><br></p>
-<p class="p9">%c</p>
-<p class="p9">Replaced by the locale's appropriate date and time representation.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p9">%C</p>
-<p class="p9">Replaced by the year divided by 100 and truncated to an integer, as a decimal number [00,99]. [ tm_year]</p>
-<p class="p2"><br></p>
-<p class="p9">%d</p>
-<p class="p9">Replaced by the day of the month as a decimal number [01,31]. [ tm_mday]</p>
-<p class="p2"><br></p>
-<p class="p9">%D</p>
-<p class="p9">Equivalent to %m / %d / %y. [ tm_mon, tm_mday, tm_year]</p>
-<p class="p2"><br></p>
-<p class="p9">%e</p>
-<p class="p9">Replaced by the day of the month as a decimal number [1,31]; a single digit is preceded by a space. [ tm_mday]</p>
-<p class="p2"><br></p>
-<p class="p9">%F</p>
-<p class="p9">Equivalent to %Y - %m - %d (the ISO 8601:2000 standard date format). [ tm_year, tm_mon, tm_mday]</p>
-<p class="p2"><br></p>
-<p class="p9">%g</p>
-<p class="p9">Replaced by the last 2 digits of the week-based year (see below) as a decimal number [00,99]. [ tm_year, tm_wday, tm_yday]</p>
-<p class="p2"><br></p>
-<p class="p9">%G</p>
-<p class="p9">Replaced by the week-based year (see below) as a decimal number (for example, 1977). [ tm_year, tm_wday, tm_yday]</p>
-<p class="p2"><br></p>
-<p class="p9">%h</p>
-<p class="p9">Equivalent to %b. [ tm_mon]</p>
-<p class="p2"><br></p>
-<p class="p9">%H</p>
-<p class="p9">Replaced by the hour (24-hour clock) as a decimal number [00,23]. [ tm_hour]</p>
-<p class="p2"><br></p>
-<p class="p9">%I</p>
-<p class="p9">Replaced by the hour (12-hour clock) as a decimal number [01,12]. [ tm_hour]</p>
-<p class="p2"><br></p>
-<p class="p9">%j</p>
-<p class="p9">Replaced by the day of the year as a decimal number [001,366]. [ tm_yday]</p>
-<p class="p2"><br></p>
-<p class="p9">%m</p>
-<p class="p9">Replaced by the month as a decimal number [01,12]. [ tm_mon]</p>
-<p class="p2"><br></p>
-<p class="p9">%M</p>
-<p class="p9">Replaced by the minute as a decimal number [00,59]. [ tm_min]</p>
-<p class="p2"><br></p>
-<p class="p9">%n</p>
-<p class="p9">Replaced by a <newline>.</p>
-<p class="p2"><br></p>
-<p class="p9">%p</p>
-<p class="p9">Replaced by the locale's equivalent of either a.m. or p.m. [ tm_hour]</p>
-<p class="p2"><br></p>
-<p class="p9">%r</p>
-<p class="p9">Replaced by the time in a.m. and p.m. notation;  in the POSIX locale this shall be equivalent to %I :%M :%S%p. [ tm_hour, tm_min, tm_sec]</p>
-<p class="p2"><br></p>
-<p class="p9">%R</p>
-<p class="p9">Replaced by the time in 24-hour notation (%H : %M ). [ tm_hour, tm_min]</p>
-<p class="p2"><br></p>
-<p class="p9">%S</p>
-<p class="p9">Replaced by the second as a decimal number [00,60]. [ tm_sec]</p>
-<p class="p2"><br></p>
-<p class="p9">%t</p>
-<p class="p9">Replaced by a <tab>.</p>
-<p class="p2"><br></p>
-<p class="p9">%T</p>
-<p class="p9">Replaced by the time ( %H : %M : %S ). [ tm_hour, tm_min, tm_sec]</p>
-<p class="p2"><br></p>
-<p class="p9">%u</p>
-<p class="p9">Replaced by the weekday as a decimal number [1,7], with 1 representing Monday. [ tm_wday]</p>
-<p class="p2"><br></p>
-<p class="p9">%U</p>
-<p class="p9">Replaced by the week number of the year as a decimal number [00,53]. The first Sunday of January is the first day of week 1; days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday]</p>
-<p class="p2"><br></p>
-<p class="p9">%V</p>
-<p class="p9">Replaced by the week number of the year (Monday as the first day of the week) as a decimal number [01,53]. If the week containing 1 January has four or more days in the new year, then it is considered week 1. Otherwise, it is the last week of the previous year, and the next week is week 1. Both January 4th and the first Thursday of January are always in week 1. [ tm_year, tm_wday, tm_yday]</p>
-<p class="p2"><br></p>
-<p class="p9">%w</p>
-<p class="p9">Replaced by the weekday as a decimal number [0,6], with 0 representing Sunday. [ tm_wday]</p>
-<p class="p2"><br></p>
-<p class="p9">%W</p>
-<p class="p9">Replaced by the week number of the year as a decimal number [00,53]. The first Monday of January is the first day of week 1; days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday]</p>
-<p class="p2"><br></p>
-<p class="p9">%x</p>
-<p class="p9">Replaced by the locale's appropriate date representation.</p>
-<p class="p2"><br></p>
-<p class="p9">%X</p>
-<p class="p9">Replaced by the locale's appropriate time representation.</p>
-<p class="p2"><br></p>
-<p class="p9">%y</p>
-<p class="p9">Replaced by the last two digits of the year as a decimal number [00,99]. [ tm_year]</p>
-<p class="p2"><br></p>
-<p class="p9">%Y</p>
-<p class="p9">Replaced by the year as a decimal number (for example, 1997). [ tm_year]</p>
-<p class="p2"><br></p>
-<p class="p9">%z</p>
-<p class="p9">Replaced by the offset from UTC in the ISO 8601:2000 standard format ( +hhmm or -hhmm ), or by no characters if no timezone is determinable. For example, "-0430" means 4 hours 30 minutes behind UTC (west of Greenwich). If tm_isdst is zero, the standard time offset is used. If tm_isdst is greater than zero, the daylight savings time offset is used. If tm_isdst is negative, no characters are returned. [ tm_isdst]</p>
-<p class="p2"><br></p>
-<p class="p9">%Z</p>
-<p class="p9">Replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists. [ tm_isdst]</p>
-<p class="p2"><br></p>
-<p class="p9">%%</p>
-<p class="p9">Replaced by %.</p>
-<p class="p2"><br></p>
-<p class="p9">If a conversion specification does not correspond to any of the above, the behavior is undefined.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Control/DebugNodeWatcher.html b/Help/Control/DebugNodeWatcher.html
deleted file mode 100644
index e45a2c7..0000000
--- a/Help/Control/DebugNodeWatcher.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-</style>
-</head>
-<body>
-<p class="p1"><b>DebugNodeWatcher</b></p>
-<p class="p2"><br></p>
-<p class="p3">Posts when these messages are received from the server:</p>
-<p class="p3">n_go n_end n_off n_on</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">s = <span class="s1">Server</span>.default;</p>
-<p class="p3">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">d = </span>DebugNodeWatcher<span class="s2">(s);</span></p>
-<p class="p3">d.start;</p>
-<p class="p2"><br></p>
-<p class="p3">y = <span class="s1">Group</span>.new;</p>
-<p class="p2"><br></p>
-<p class="p3">y.free;</p>
-<p class="p2"><br></p>
-<p class="p3">d.stop;</p>
-</body>
-</html>
diff --git a/Help/Control/Env.html b/Help/Control/Env.html
deleted file mode 100644
index 790973c..0000000
--- a/Help/Control/Env.html
+++ /dev/null
@@ -1,406 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0016bd}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2b7000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p18 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 9.0px Monaco}
-p.p19 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p20 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p22 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0016bd}
-span.s3 {color: #000000}
-span.s4 {font: 12.0px Monaco; color: #000000}
-span.s5 {color: #2b7000}
-span.s6 {font: 12.0px Helvetica; color: #000000}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #ae1a19}
-span.s9 {font: 12.0px Monaco}
-span.s10 {font: 12.0px Monaco; color: #ae1a19}
-span.s11 {font: 9.0px Monaco; color: #0016bd}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Env<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>envelope</b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Env is a specification for a segmented envelope. Envs can be used both server-side, by an <a href="../UGens/Synth control/Envelopes/EnvGen.html"><span class="s2">EnvGen</span></a><b> </b>within a SynthDef, and clientside, with methods such as <b>at</b> and <b>asStream</b>, below. An Env can have any number of segments which can stop at a particular value or loop several segments when sustaining. It can have several shapes for its segments.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2">Env</span>.new([0,1,0.9,0], [0.1,0.5, 1],[-5,0,-5]).plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span></span></p>
-<p class="p3">The envelope is conceived as a sequence of <i>nodes</i> (not to be confused with a synthesis-<a href="../ServerArchitecture/Node.html"><span class="s2">Node</span></a>) each of which has two parameters: a target level and a time duration from the previous node. The two parameters for each node are kept in separate arrays as explained below.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">NOTE: In some other computer music systems and situations we deal with control points or breakpoints. If these control points have associated x positions (say in an envelope GUI, see <a href="../GUI/Cocoa-GUI/SCEnvelopeView.html"><span class="s2">SCEnvelopeView</span></a>) they must be converted to time differences between points to be used as nodes in a Env object.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">*<b>new(levels, times, curves, releaseNode, loopNode)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Create a new envelope specification.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>levels</b> - an array of levels. The first level is the initial value of the envelope.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>times</b> - an array of durations of segments in seconds. There should be one fewer duration than there are levels.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>curve</b> - this parameter determines the shape of the envelope segments.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>The possible values are:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'step' - flat segments</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'linear' - linear segments, the default</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'exponential' - natural exponential growth and decay. In this case, the levels must all be nonzero</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and the have the same sign.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'sine' - sinusoidal S shaped segments.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'welch' - sinusoidal segments shaped like the sides of a Welch window.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a Float - a curvature value for all segments.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An Array of Floats - curvature values for each segments.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>releaseNode</b> - an Integer or nil. The envelope will sustain at the release node until released.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>loopNode</b> - an Integer or nil. If not nil the output will loop through those nodes startign at the loop node to the node immediately preceeding the release node, before back to the loop node, and so on. Note that the envelope only transitions to the release node when released. Examples are below. The loop is escaped when a gate signal is sent, when the output transitions to the release node, as described below.</p>
-<p class="p2"><br></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot; <span class="Apple-tab-span">	</span></span>//.test below will run a synthesis example<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// to demonstrate the envelope, so the Server must be on</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// different shaped segments: .plot graphs the Env <span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0,1, 0.3, 0.8, 0], [2, 3, 1, 4],<span class="s5">'linear'</span>).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0.001, 1, 0.3, 0.8, 0.001], [2, 3, 1, 4],<span class="s5">'exponential'</span>).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4],<span class="s5">'sine'</span>).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0.001, 1, 0.3, 0.8, 0.001],[2,3,1,4],<span class="s5">'welch'</span>).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4],<span class="s5">'step'</span>).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4], -2).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4], 2).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4], [0, 3, -3, -1]).test.plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">If a release node is given, and the gate input of the EnvGen is set to zero, it outputs the nodes after the release node:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// release node is node 1; takes 0.5 seconds to go from 0 to 1,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// sustains at level of 1, then released after three seconds<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// (test causes the release after three seconds, given the argument 3),<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// taking 2 seconds to finish</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0,1,0],[0.5,2],<span class="s5">'linear'</span>,1).test(3).plot</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// more complex examples</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// release node is node 2; releases after 5 sec</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Env</span>.new([0.001,1,0.3,0.8,0.001],[2,3,1,4] * 0.2, 2, 2).test(5).plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0.001,1,0.3,0.8,0.5,0.8,0],[2,3,1,2,2,1] * 0.2, 2, 2).test(5).plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// early release: goes straight onto the release node after 0.1 seconds<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.new([0.001,1,0.3,0.8,0.5,0.8,0],[2,3,1,2,2,1] * 0.2, 2, 2).test(0.1).plot;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">If a loop node is given, the EnvGen outputs the nodes between the loop node and the release node (not including the release node itself) until it is released:</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// release node is node 2, loop node is node 0: so loops around nodes 0 (lvl 1, dur 0.5)<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// and 1 (lvl 0.1, dur 0.5) <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//until released after 3.5 seconds</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Env</span>.new([0,1,0.1,0],[0.5,0.5,2], <span class="s5">'lin'</span>, 2, 0).test(3.5).plot;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this just sustains at node 0, because there is no other node to loop around!</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Env</span>.new([0,1,0],[0.5,2], <span class="s5">'lin'</span>, 1, 0).test(3.5).plot;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// more complex example: release node is node 3, loop node is node 1</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Env</span>.new([0.001,1,0.3,0.8,0.5,0.8,0],[2,1,1,2,3,1] * 0.1, <span class="s5">'lin'</span>, 3, 1).test(3).plot;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Note:</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The starting level for an envelope segment is always the level you are at right now. For example when the gate is released and you jump to the release segment, the level does not jump to the level at the beginning of the release segment, it changes from<span class="Apple-converted-space">  </span>whatever the current level is to the goal level of the release segment over the specified duration of the release segment.</p>
-<p class="p2"><br></p>
-<p class="p3">There is an extra level at the beginning of the envelope to set the initial level. After that each node is a goal level and a duration, so node zero has duration equal to times[0] and goal level equal to levels[1].</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The loop jumps back to the loop node. The endpoint of that segment is the goal level for that segment and the duration of<span class="Apple-converted-space">  </span>that segment will be the time over which the level changed from the current level to the goal level.</p>
-<p class="p8"><br></p>
-<p class="p3">*<b>newClear(numSegments)</b></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>Creates a new envelope specification with <b>numSegments</b> for filling in later. This can be useful when passing Env parameters as args to a <a href="../ServerArchitecture/Synth.html"><span class="s2">Synth</span></a>. Note that the maximum number of segments is fixed and cannot be changed once embedded in a <a href="../ServerArchitecture/SynthDef.html"><span class="s2">SynthDef</span></a>. Trying to set an Env with more segments than then this may result in other args being unexpectedly set.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">(</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SynthDef<span class="s3">(</span><span class="s5">\help_Env_newClear</span><span class="s3">, { </span>|i_outbus=0, t_gate|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env, envctl;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// make an empty 4 segment envelope</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">Env</span>.newClear(4);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create a control argument array</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>envctl = <span class="s2">Control</span>.names([<span class="s5">\env</span>]).kr( env.asArray );</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(i_outbus, <span class="s2">SinOsc</span>.ar(<span class="s2">EnvGen</span>.kr(envctl, t_gate), 0, 0.3));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.bind {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// must not have more segments than the env above</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e = <span class="s2">Env</span>([700,900,900,800], [1,1,1], <span class="s5">\exp</span>); <span class="s8">// 3 segments</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s3">(</span>\help_Env_newClear<span class="s3">, [</span>\t_gate<span class="s3">, 1]);</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.setn(<span class="s5">\env</span>, e.asArray);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reset then play again</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e = <span class="s2">Env</span>([800,300,400,500,200], [1,1,1,1], <span class="s5">\exp</span>); <span class="s8">// 4 segments</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.setn(<span class="s5">\env</span>, e.asArray);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s5">\t_gate</span>, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p14"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Standard Shape Envelope Creation Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">The following class methods create some frequently used envelope shapes based on supplied durations.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">*<b>linen(attackTime, sustainTime, releaseTime, level, curve)</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Creates a new envelope specification which has a trapezoidal shape.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>attackTime</b> - the duration of the attack portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>sustainTime</b> - the duration of the sustain portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>releaseTime</b> - the duration of the release portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>level</b> - the level of the sustain portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>curve</b> - the curvature of the envelope.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.linen(1, 2, 3, 0.6).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.linen(0.1, 0.2, 0.1, 0.6).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.linen(1, 2, 3, 0.6, <span class="s5">'sine'</span>).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.linen(1, 2, 3, 0.6, <span class="s5">'welch'</span>).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.linen(1, 2, 3, 0.6, -3).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.linen(1, 2, 3, 0.6, -3).test.plot;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3">*<b>triangle(duration, level)</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Creates a new envelope specification which has a triangle shape.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>duration</b> - the duration of the envelope.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>level</b> - the peak level of the envelope.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.triangle(1, 1).test.plot;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">*<b>sine(duration, level)</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Creates a new envelope specification which has a hanning window shape.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>duration</b> - the duration of the envelope.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>level</b> - the peak level of the envelope.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Env</span>.sine(1,1).test.plot;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p3">*<b>perc(attackTime, releaseTime, peakLevel, curve)</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Creates a new envelope specification which (usually) has a percussive shape.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>attackTime</b> - the duration of the attack portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>releaseTime</b> - the duration of the release portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>peakLevel</b> - the peak level of the envelope.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>curve</b> - the curvature of the envelope.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Env</span>.perc(0.05, 1, 1, -4).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.perc(0.001, 1, 1, -4).test.plot;<span class="Apple-tab-span">	</span><span class="s8">// sharper attack</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.perc(0.001, 1, 1, -8).test.plot;<span class="Apple-tab-span">	</span><span class="s8">// change curvature</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.perc(1, 0.01, 1, 4).test.plot;<span class="Apple-tab-span">	</span><span class="s8">// reverse envelope</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Sustained Envelope Creation Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">The following methods create some frequently used envelope shapes which have a sustain segment.</p>
-<p class="p2"><br></p>
-<p class="p3">*<b>adsr(attackTime, decayTime, sustainLevel,<span class="Apple-converted-space">  </span>releaseTime, peakLevel, curve)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b><span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>Creates a new envelope specification which is shaped like traditional analog attack-decay-sustain-release (adsr) envelopes.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>attackTime</b> - the duration of the attack portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>decayTime</b> - the duration of the decay portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>sustainLevel</b> - the level of the sustain portion as a ratio of the peak level.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>releaseTime</b> - the duration of the release portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>peakLevel</b> - the peak level of the envelope.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>curve</b> - the curvature of the envelope.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.adsr(0.02, 0.2, 0.25, 1, 1, -4).test(2).plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.adsr(0.001, 0.2, 0.25, 1, 1, -4).test(2).plot;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//release after 0.45 sec</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.adsr(0.001, 0.2, 0.25, 1, 1, -4).test(0.45).plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10"><span class="Apple-tab-span">	</span></span></p>
-<p class="p3">*<b>dadsr(delayTime, attackTime, decayTime, sustainLevel,<span class="Apple-converted-space">  </span>releaseTime, peakLevel, curve)</b></p>
-<p class="p2"><br></p>
-<p class="p15"><span class="Apple-tab-span">	</span>As <b>*adsr</b> above, but with it's onset delayed by <b>delayTime</b> in seconds. The default delay is 0.1.</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p3">*<b>asr(attackTime, sustainLevel,<span class="Apple-converted-space">  </span>releaseTime, curve)</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>Creates a new envelope specification which is shaped like traditional analog attack-sustain-release (asr) envelopes.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>attackTime</b> - the duration of the attack portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>sustainLevel</b> - the level of the sustain portion as a ratio of the peak level.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>releaseTime</b> - the duration of the release portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>curve</b> - the curvature of the envelope.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.asr(0.02, 0.5, 1, -4).test(2).plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.asr(0.001, 0.5, 1, -4).test(2).plot; <span class="s8">// sharper attack</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.asr(0.02, 0.5, 1, <span class="s5">'linear'</span>).test(2).plot; <span class="s8">// linear segments</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">*<b>cutoff(releaseTime, level, curve)</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>Creates a new envelope specification which has no attack segment. It simply sustains at the peak level until released. Useful if you only need a fadeout, and more versatile than <a href="../UGens/Synth control/Envelopes/Line.html"><span class="s2">Line</span></a>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>releaseTime</b> - the duration of the release portion.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>level</b> - the peak level of the envelope.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>curve</b> - the curvature of the envelope.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.cutoff(1, 1).test(2).plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.cutoff(1, 1, 4).test(2).plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.cutoff(1, 1, <span class="s5">'sine'</span>).test(2).plot;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Instance Methods</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>blend(anotherEnv, blendFraction)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Blend two envelopes. Returns a new Env.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>anotherEnv</b> - an Env.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>blendFraction</b> - a number from zero to one.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s2">Env</span>([0, 0.2, 1, 0.2, 0.2, 0], [0.5, 0.01, 0.01, 0.3, 0.2]).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Env</span>([0, 0.4, 1, 0.2, 0.5, 0], [0.05, 0.4, 0.01, 0.1, 0.4]).test.plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Task</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = (0, 0.2 .. 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.do { <span class="s2">|u|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blend(a, b, u).test.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Window</span>.allWindows.pop.close; <span class="s8">// close last opened window</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(<span class="s2">AppClock</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// in a SynthDef</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SynthDef<span class="s3">(</span><span class="s5">\help_EnvBlend</span><span class="s3">, { </span>| fact = 0 |<span class="s3"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Out</span>.ar(0, <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc.blend(<span class="s2">Env</span>.sine, fact), 1.0, doneAction: 2) </p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>* <span class="s2">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">) </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>}).send(s));</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>f = (0, 0.1..1);</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>f.do({<span class="s2">|fact|</span> <span class="s2">Synth</span>(<span class="s5">\help_EnvBlend</span>, [<span class="s5">\fact</span>, fact.postln]); 1.wait;});</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.fork;)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>delay(delay)</b></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>Returns a new Env based on the receiver in which the start value will be held for <b>delay</b> number of seconds.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><b>delay</b> - The amount of time to delay the start of the envelope.</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s2">Env</span>.perc(0.05, 1, 1, -4);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = a.delay(2);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.test.plot;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.test.plot;</p>
-<p class="p16"><br></p>
-<p class="p18"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s2">Env</span>([0.5, 1, 0], [1, 1]).plot;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.delay(1).plot;</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b>circle(timeFromLastToFirst, curve)</b></p>
-<p class="p20"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b>circle from end to beginning over the time specified, with the curve specified.<span class="Apple-converted-space"> </span></p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">SinOsc</span>.ar(</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EnvGen</span>.kr(</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>([6000, 700, 100], [1, 1], [<span class="s5">'exp'</span>, <span class="s5">'lin'</span>]).circle.postcs)</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ <span class="s2">Impulse</span>.ar(1)<span class="Apple-converted-space"> </span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p19"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">SinOsc</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EnvGen</span>.kr(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>([6000, 700, 100], [1, 1], [<span class="s5">'exp'</span>, <span class="s5">'lin'</span>]).circle(1).postcs,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">MouseX</span>.kr > 0.5)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ <span class="s2">Impulse</span>.ar(1) }.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p21"><br></p>
-<p class="p3"><b>test(releaseTime)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Test the envelope on the default <a href="../ServerArchitecture/Server.html"><span class="s2">Server</span></a> with a <a href="../UGens/Oscillators/SinOsc.html"><span class="s2">SinOsc</span></a>.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><b>releaseTime</b> - If this is a sustaining envelope, it will be released after this much time in seconds. The default is 3 seconds.</p>
-<p class="p21"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>plot(size, bounds, minval, maxval, parent)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Plot this envelope's shape in a window.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><b>size</b> - The size of the plot. The default is 400.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><b>bounds </b>- the size of the plot window.</p>
-<p class="p22"><span class="Apple-tab-span">	</span><b>minval</b> - the minimum value in the plot. Defaults to the lowest value in the data.</p>
-<p class="p22"><span class="Apple-tab-span">	</span><b>maxval</b> - the maximum value in the plot. Defaults to the highest value in the data.</p>
-<p class="p22"><span class="Apple-tab-span">	</span><b>parent</b> - a window to place the plot in. If nil, one will be created for you</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>asSignal(length)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Returns a Signal of size <b>length</b> created by sampling this Env at <b>length</b> number of intervals.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>asArray</b></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>Converts the Env to an Array in a specially ordered format. This allows for Env parameters to be settable arguments in a <a href="../ServerArchitecture/SynthDef.html"><span class="s2">SynthDef</span></a>. See example above under *<b>newClear</b>.</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>isSustained</b></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>Returns true if this is a sustaining envelope, false otherwise.</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>range(lo, hi)</b></p>
-<p class="p3"><b>exprange(lo, hi)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Returns a copy of the Env whose levels have been mapped onto the given linear or exponential range.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s2">Env</span>.adsr;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.levels;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.range(42, 45).levels;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.exprange(42, 45).levels;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Mapping an Env to an exponential frequency range:</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(<span class="s2">EnvGen</span>.ar(<span class="s2">Env</span>.perc(0.01, 0.2).exprange(40, 10000), doneAction: 2)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>, 0, 0.1).dup;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play(s)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Client-side Access and Stream Support</b></p>
-<p class="p8"><br></p>
-<p class="p3">Sustain and loop settings have no effect in the methods below.</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>at(time)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Returns the value of the Env at <b>time</b>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Env</span>.triangle(1, 1).at(0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>embedInStream</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Embeds this Env within an enclosing <a href="../Streams-Patterns-Events/Stream.html"><span class="s2">Stream</span></a>. Timing is derived from <span class="s11">thisThread</span><span class="s7">.beats</span>.</p>
-<p class="p8"><br></p>
-<p class="p3"><b>asStream</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Creates a Routine and embeds the Env in it. This allows the Env to function as a <a href="../Streams-Patterns-Events/Stream.html"><span class="s2">Stream</span></a>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e = <span class="s2">Env</span>.sine.asStream;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5.do({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e.next.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})}.fork</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-</body>
-</html>
diff --git a/Help/Control/GeneralHID.html b/Help/Control/GeneralHID.html
deleted file mode 100644
index c969224..0000000
--- a/Help/Control/GeneralHID.html
+++ /dev/null
@@ -1,209 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {text-decoration: underline ; color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>GeneralHID<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>A uniform class to access HID devices<span class="Apple-converted-space"> </span></b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">GeneralHID is a cross platform wrapper for accessing HID devices. Currently the MacOSX and Linux HID support has been wrapped. Some of the code is inspired by the GUI wrapper.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>It is advised to use this class instead of the platform specific classes:</b> <a href="HIDDeviceService.html"><span class="s2">HIDDeviceService</span><span class="s3"> (on MacOSX)</span></a> and <a href="../Linux/LID.html"><span class="s2">LID</span><span class="s3"> (on Linux)</span></a></p>
-<p class="p1">There are intermediate "bridge" classes <span class="s2">MXHID</span> (on MacOSX) and <span class="s2">GLID</span> (on Linux), which should not be used directly, but their names will show up in the output of some of the methods of <span class="s2">GeneralHID</span>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some outstanding issues</b></p>
-<p class="p2"><br></p>
-<p class="p1">This class is not completely finished yet. Common slot numbers across platforms are not yet guaranteed. On Windows there is not yet a proper implementation available, but you can use HID Server from <a href="http://ixi-software.net/content/backyard.html">Ixi's backyard</a>, which comes with classes which are compatible with GeneralHID.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*scheme , *current</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get the current scheme</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*scheme.id , *current.id</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get the current scheme ID</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*buildDeviceList</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Look for all connected devices and build a device list. This returns the devicelist as an Array.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*deviceList</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the device list if it has already been built before.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*postDevices</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Posts a readable list of devices.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*postDevicesAndProperties</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Posts a readable list of devices and their properties.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*startEventLoop( arg rate=0.005 )</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Start the eventloop with a update rate (or rather update time in seconds). (Note: this is only really needed on MacOSX, but for crossplatform code you should include it in your code).</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*stopEventLoop</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Stop the eventloop.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*eventLoopIsRunning</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Check status of eventloop.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*findBy( vendorID, productID, locID, versionID )</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Find a device by its vendorID (manufacturer), productID (product identifier as given by manufacturer), locID (identifier for the physical connection to your computer, and versionID (a version of the product, as given by the manufacturer).</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b></b><br></p>
-<p class="p8"><b>Further information:</b></p>
-<p class="p1"><b>See </b><a href="GeneralHIDDevice.html"><span class="s2">GeneralHIDDevice</span></a> for a documentation of the methods to access an HID device.</p>
-<p class="p1"><b>See </b><a href="GeneralHIDSpec.html"><span class="s4">GeneralHIDSpec</span></a> for a documentation of how to access slots by name, instead of numbers.</p>
-<p class="p8"><b>Example</b></p>
-<p class="p3"><br></p>
-<p class="p9">// General structure to access a device</p>
-<p class="p9">// Look for the devices that are attached:</p>
-<p class="p10"><span class="s5">GeneralHID</span>.buildDeviceList;</p>
-<p class="p9">// Get the list of devices:</p>
-<p class="p10">d = <span class="s5">GeneralHID</span>.deviceList;</p>
-<p class="p9">// Check which devices have been found:</p>
-<p class="p10"><span class="s5">GeneralHID</span>.postDevices;</p>
-<p class="p9">// Pick the 6th device and open it and create an instance of it:</p>
-<p class="p10">a = <span class="s5">GeneralHID</span>.open( d[5] )</p>
-<p class="p9">// Get info on the device:</p>
-<p class="p10">a.info;</p>
-<p class="p9">// if you want to automatically find the device when you restart you can use the GeneralHID.findBy method. To get the arguments you should use for this function, you can use:</p>
-<p class="p10">a.info.findArgs;</p>
-<p class="p9">// this outputs for my Impact gamepad:</p>
-<p class="p10">[ 1973, 786, usb-0000:00:1d.0-1/input0, 272 ]</p>
-<p class="p9">// close the device, as we will reopen it in the next lines</p>
-<p class="p10">a.close;</p>
-<p class="p9">// if we know which device we want, we can find it:</p>
-<p class="p10">b = GeneralHID.findBy( 1973, 786, "usb-0000:00:1d.0-1/input0", 272 );</p>
-<p class="p9">// if you do not care about the version or the location, you can also do:</p>
-<p class="p10">b = GeneralHID.findBy( 1973, 786 );</p>
-<p class="p9">// or if you do not even care about the productID</p>
-<p class="p10">b = GeneralHID.findBy( 1973 );</p>
-<p class="p9">// you can then open it by:</p>
-<p class="p10">a = GeneralHID.open( b )</p>
-<p class="p9">// Start eventloop:</p>
-<p class="p10"><span class="s5">GeneralHID</span>.startEventLoop</p>
-<p class="p9">// Get the capabilities of the device in a readable format:</p>
-<p class="p10">a.caps;</p>
-<p class="p9">// there are different types of slots:<br>
-// button (type 1), has only on/off (1/0) states<br>
-// relative (type 2), counts up or down (scrollwheel for example)<br>
-// absolute (type 3), continuous value between 0 and 1<br>
-// some other may show up on Linux ( Syn (type 0) and Miscellaneous (type 4), but these are generally not very useful).</p>
-<p class="p9">// See if data is coming in:</p>
-<p class="p10">a.debug_( true );</p>
-<p class="p9">// Stop it:</p>
-<p class="p10">a.debug_( false );</p>
-<p class="p9">// Debugging can be turned on for each slot individually, if necessary:<br>
-//(IBM trackpoint)</p>
-<p class="p10">a.slots[1].at( 272 ).debug_( true );</p>
-<p class="p9">// (external mouse on macbook pro)</p>
-<p class="p10">a.slots[3][1].debug_(true);</p>
-<p class="p9">(external mouse on ibm thinkpad)</p>
-<p class="p10">a.slots[2][1].debug_(true);</p>
-<p class="p9">// Turn it off again: // (IBM trackpoint)</p>
-<p class="p10">a.slots[1].at( 272 ).debug_( false );</p>
-<p class="p9">//(external mouse on macbook pro)</p>
-<p class="p10">a.slots[3][48].debug_(false);</p>
-<p class="p9">//(external mouse on ibm thinkpad)</p>
-<p class="p10">a.slots[3][1].debug_(false);</p>
-<p class="p3"><br></p>
-<p class="p9">// You can also create a generic gui to see what is coming in:</p>
-<p class="p10">a.makeGui;</p>
-<p class="p3"><br></p>
-<p class="p9">// The current value of a slot can be checked:</p>
-<p class="p10">a.slots[1].at( 272 ).value;<br>
-a.slots[2].at( 1 ).value;<br>
-a.slots[3][1].value</p>
-<p class="p9">//If the slot is an LED, you can set the value:</p>
-<p class="p10">a.slots[11][0].value = 1;<br>
-a.slots[11][0].value = 0;</p>
-<p class="p3"><br></p>
-<p class="p9">// Actions can be mapped to each slot individually.</p>
-<p class="p10">a.slots[1].at( 272 ).action_( { "hello".postln; } );<br>
-a.slots[1].at( 273 ).action_( { "hi".postln; } );<br>
-a.slots[3].at( 1 ).action_( { "hi".postln; } );</p>
-<p class="p9">with an input to the function</p>
-<p class="p10">a.slots[3].at( 1 ).action_( { |v| "hi, my value is ".post; v.value.postln; } );<br>
-a.slots[1].at( 272 ).action_( { |v| "hi, my value is ".post; v.value.postln; } );</p>
-<p class="p3"><br></p>
-<p class="p9">To stop the action, assign it to an empty function.</p>
-<p class="p10">a.slots[1].at( 272 ).action_( {} );<br>
-a.slots[1].at( 273 ).action_( {} );<br>
-a.slots[3].at( 1 ).action_( {} );</p>
-<p class="p3"><br></p>
-<p class="p9">// you can access slots, by giving them a key:</p>
-<p class="p10">a.add( \lx, [3,0] );</p>
-<p class="p10">a[\lx].debug_( true );</p>
-<p class="p9">// the last item in the output array, now shows the key</p>
-<p class="p10">a[\lx].debug_( false );</p>
-<p class="p9">// save the spec for future use:</p>
-<p class="p10">a.spec.save( "Impact_help" );</p>
-<p class="p9">// find a spec defined previously for this device:</p>
-<p class="p10">c = a.findSpec;</p>
-<p class="p9">// set it:</p>
-<p class="p10">a.setSpec( c[0] );</p>
-<p class="p9">// more info on this in the [GeneralHIDSpec] helpfile</p>
-<p class="p9">// If the server is running you can create a control bus for the HID data to go to, so that a synth can immediately read the data:</p>
-<p class="p10">s = Server.local.boot;</p>
-<p class="p9">// To create the bus:</p>
-<p class="p10">a.slots[1].at( 272 ).createBus( s ); a.slots[2].at( 8 ).createBus( s );</p>
-<p class="p3"><br></p>
-<p class="p10">SynthDef( \hidbus_help, { |out=0,amp=0|<br>
-Out.ar( out, SinOsc.ar( 300, 0, 0.01*amp.abs ) );<br>
-}).load( s );<br>
-)</p>
-<p class="p10">x = Synth.new( \hidbus_help );<br>
-x.map( \amp, a.slots[2].at( 8 ).bus );<br>
-x.free;</p>
-<p class="p3"><br></p>
-<p class="p10">( // a nicer version:<br>
-SynthDef( \hidbus_help, { |out=0,amp=0,amp2=0|<br>
-Out.ar( out, SinOsc.ar( 300, 0, 0.01*amp.abs.lag( 0.1 ) * amp2.lag(0.01,0.99) ) );<br>
-}).load( s );<br>
-)</p>
-<p class="p10">x = Synth.new( \hidbus_help );<br>
-x.map( \amp, a.slots[2].at( 8 ).bus );<br>
-x.map( \amp2, a.slots[1].at( 272 ).bus );<br>
-x.free;</p>
-<p class="p3"><br></p>
-<p class="p10">( // an even nicer version:<br>
-SynthDef( \hidbus_help, { |out=0,freqadd=0,amp=0|<br>
-Out.ar( out, SinOsc.ar( 300 + (freqadd.lag(0.2,1)*40), 0, 0.2*amp.lag(0.01,0.99) ) );<br>
-}).load( s );<br>
-)</p>
-<p class="p10">x = Synth.new( \hidbus_help );<br>
-x.map( \freqadd, a.slots[2].at( 8 ).bus );<br>
-x.map( \amp, a.slots[1].at( 272 ).bus );<br>
-x.free;</p>
-<p class="p3"><br></p>
-<p class="p9">// To free the bus:</p>
-<p class="p10">a.slots[1].at( 272 ).freeBus;<br>
-a.slots[2].at( 8 ).freeBus;<span class="Apple-converted-space"> </span></p>
-<p class="p9">// Close the device after use:</p>
-<p class="p10">a.close;</p>
-<p class="p10"><span class="s5">GeneralHID</span>.stopEventLoop</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Control/GeneralHIDDevice.html b/Help/Control/GeneralHIDDevice.html
deleted file mode 100644
index bd86b15..0000000
--- a/Help/Control/GeneralHIDDevice.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-  <meta http-equiv="Content-Style-Type" content="text/css">
-  <title>SuperCollider Help - GeneralHIDDevice</title>
-
-
-  <meta name="Generator" content="Cocoa HTML Writer">
-
-  <meta name="CocoaVersion" content="824.42">
-
-  <style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #623924}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #623924}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1b34d9}
-span.s3 {color: #142fe0}
-span.s4 {color: #000000}
-span.s5 {color: #303b89}
-span.s6 {color: #623924}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {color: #1427a2}
-span.Apple-tab-span {white-space:pre}
-  </style>
-</head>
-
-
-<body>
-
-<p class="p1"><span class="s1"><b>GeneralHIDDevice<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b></span><b>
-A uniform class to an HID device.
-</b><span class="s1"><b><span class="Apple-tab-span"> </span></b></span></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-
-<p class="p3"><br>
-
-</p>
-
-<p class="p1">GeneralHID is a cross platform wrapper for
-accessing HID devices. Currently the MacOSX and Linux HID support has
-been wrapped. Some of the code is inspired by the GUI wrapper.</p>
-
-<p class="p1">A GeneralHIDDevice accesses one HID device,
-such as a mouse, joystick or gamepad. Devices are automatically created
-when a building the device list with <span class="s2">GeneralHID</span>,
-so it is not necessary for a user to create a new device.</p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p1"><b>See </b> <a href="GeneralHID.html"><span class="s2">GeneralHID</span></a>
-for a complete explanation and an example of how to access an HID
-device.</p>
-
-<p class="p1"><b>It is advised to use this class
-instead of the platform specific classes:</b> <a href="HIDDeviceService.html"><span class="s2">HIDDeviceService</span>
-(on MacOSX)</a> and <a href="../Linux/LID.html"><span class="s2">LID</span> (on Linux)</a></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p4"><b>Some outstanding issues</b></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p1">This class is not completely finished yet.
-Common slot numbers across platforms are not yet guaranteed. On Windows
-there is not yet a proper implementation available.
-</p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p11"><b>Accessing Instance and Class
-Variables</b></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>open( arg device )</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Opens the device; the
-device should be an item got from the device list.</p>
-
-<p class="p7"><span class="Apple-tab-span"> </span></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>isOpen</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Checks whether the
-device is open.</p>
-
-<p class="p7"><span class="Apple-tab-span"> </span></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>info</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Display information
-about the device, such as the name and vendor.</p>
-
-<p class="p7"><span class="Apple-tab-span"> </span></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>caps</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Display information
-about the capabilities of the device in a readable format.</p>
-
-<p class="p7"><span class="Apple-tab-span"> </span></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>slots</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Access to the slots of
-the device. See <a href="GeneralHIDSlot.html"><span class="s2">GeneralHIDSlot</span>.</a></p>
-
-<p class="p7"><span class="Apple-tab-span"> </span></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>makeGui</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Make a generic gui to see the data coming in on the slots.</p>
-
-<p class="p7"><span class="Apple-tab-span"> </span></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>close</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>Closes the device.</p>
-
-<p class="p6"><b><span class="Apple-tab-span"></span></b></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>grab</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> Get exclusive access to the device (linux only). Be careful with this when it is the only keyboard, as you will have no way to get back control</span></p>
-
-<p class="p7"><span class="Apple-tab-span"> </span></p>
-
-<p class="p6"><b><span class="Apple-tab-span"><br>
-</span>ungrab</b></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> Give up exclusive access to the device (linux only).</span></p>
-
-<p class="p6"><br></p>
-
-<p class="p7"><span class="Apple-tab-span"> </span></p>
-
-<p class="p11"><b>Example</b></p>
-
-<p class="p1"><b>See </b> <a href="GeneralHID.html"><span class="s2">GeneralHID</span></a>
-for a complete example of using an HID device.</p>
-
-</body>
-</html>
diff --git a/Help/Control/GeneralHIDSlot.html b/Help/Control/GeneralHIDSlot.html
deleted file mode 100644
index 380deee..0000000
--- a/Help/Control/GeneralHIDSlot.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #623924}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #623924}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1b34d9}
-span.s3 {color: #142fe0}
-span.s4 {color: #000000}
-span.s5 {color: #303b89}
-span.s6 {color: #623924}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {color: #1427a2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>GeneralHIDSlot<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>
-A uniform class to a slot of an HID device.
-</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">GeneralHID is a cross platform wrapper for accessing HID devices. Currently the MacOSX and Linux HID support has been wrapped. Some of the code is inspired by the GUI wrapper.</p>
-<p class="p1">A GeneralHIDSlot accesses one specific capability of a device, such as a button, an axis or an LED. Its value can be retrieved, an action can be set to be performed when data comes in, and the slot can be mapped to a control bus to use the value directly on the server. Slots are automatically created when a device is opened, so it is not necessary for a user to create a new slot.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See </b> <a href="GeneralHID.html"><span class="s2">GeneralHID</span></a> for a complete explanation and an example of how to access an HID device.</p>
-
-<p class="p1"><b>It is advised to use this class instead of the platform specific classes:</b> <a href="HIDDeviceService.html"><span class="s2">HIDDeviceService</span> (on MacOSX)</a> and <a href="../Linux/LID.html"><span class="s2">LID</span> (on Linux)</a></p>
-
-<p class="p2"><br></p>
-<p class="p4"><b>Some outstanding issues</b></p>
-<p class="p2"><br></p>
-<p class="p1">This class is not completely finished yet. Common slot numbers across platforms are not yet guaranteed. On Windows there is not yet a proper implementation available.
-</p>
-<p class="p2"><br></p>
-<p class="p11"><b>Accessing Instance and Class Variables</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>debug_( arg onoff )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Turns on debugging for the slot.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Get the current value of the slot.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p6"><b><span class="Apple-tab-span">	</span>value_(arg val)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the current value of the slot to val. This is only sensible when the slot represents an LED on the device.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p6"><b><span class="Apple-tab-span">	</span>rawValue</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the unscaled value of the slot.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p6"><b><span class="Apple-tab-span">	</span>action_(arg function)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Assign a function to the slot. The function has as an argument the slot.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p6"><b><span class="Apple-tab-span">	</span>createBus( arg server )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create a control bus on the specified server, and map the incoming values to this bus.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p6"><b><span class="Apple-tab-span">	</span>bus</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the bus to which this slot is mapped, if a bus has been created.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p6"><b><span class="Apple-tab-span">	</span>freeBus</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Free the bus on the server.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p6"><b><span class="Apple-tab-span">	</span>kr</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>JITLib support. This calls .createBus, and returns an In.kr on the bus for you.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-
-<p class="p11"><b>Example</b></p>
-<p class="p1"><b>See </b> <a href="GeneralHID.html"><span class="s2">GeneralHID</span></a> for a complete example of using an HID device.</p>
-
-</body>
-</html>
-
-
diff --git a/Help/Control/GeneralHIDSpec.html b/Help/Control/GeneralHIDSpec.html
deleted file mode 100644
index 659658f..0000000
--- a/Help/Control/GeneralHIDSpec.html
+++ /dev/null
@@ -1,209 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #606060}
-span.s5 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">// =====================================================================</p>
-<p class="p1">// GeneralHIDSpec</p>
-<p class="p1">// =====================================================================</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">GeneralHIDSpec</span> is a class to create access by names to slots of a <span class="s1">GeneralHIDDevice</span>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">// Look for the devices that are attached:</p>
-<p class="p3"><span class="s1">GeneralHID</span>.buildDeviceList;</p>
-<p class="p2"><br></p>
-<p class="p1">// Get the list of devices:</p>
-<p class="p3">d = <span class="s1">GeneralHID</span>.deviceList;</p>
-<p class="p2"><br></p>
-<p class="p1">// Check which devices have been found:</p>
-<p class="p3"><span class="s1">GeneralHID</span>.postDevices;</p>
-<p class="p2"><br></p>
-<p class="p1">// Pick the 6th device and open it and create an instance of it:</p>
-<p class="p3">a = <span class="s1">GeneralHID</span>.open( d[5] )</p>
-<p class="p2"><br></p>
-<p class="p1">// Get info on the device to see if it is the right one:</p>
-<p class="p3">a.info;</p>
-<p class="p2"><br></p>
-<p class="p1">// Start eventloop:</p>
-<p class="p3"><span class="s1">GeneralHID</span>.startEventLoop</p>
-<p class="p2"><br></p>
-<p class="p1">// Get the capabilities of the device in a readable format:</p>
-<p class="p3">a.caps;</p>
-<p class="p2"><br></p>
-<p class="p1">// See if data is coming in:</p>
-<p class="p3">a.debug_( <span class="s1">true</span> );</p>
-<p class="p2"><br></p>
-<p class="p1">// make an instance of a spec:</p>
-<p class="p3">b = <span class="s1">GeneralHIDSpec</span>.new( a );</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s2">( </span>// defining the spec.</p>
-<p class="p1">// trick: look at the debug output, by using each input thing on the gamepad and use the first two numbers posted as indexes</p>
-<p class="p1">// example output of debug: [ 3, 2, 0.49803921568627, nil ]</p>
-<p class="p1">// as a result of moving the y-axis of the right joystick.</p>
-<p class="p1">// so we create this slot:</p>
-<p class="p3">b.add( <span class="s3">\ry</span>, [3,2] );</p>
-<p class="p2"><br></p>
-<p class="p1">// and so on...</p>
-<p class="p3">b.add( <span class="s3">\lx</span>, [3,0] );</p>
-<p class="p3">b.add( <span class="s3">\ly</span>, [3,1] );</p>
-<p class="p3">b.add( <span class="s3">\rx</span>, [3,5] );</p>
-<p class="p2"><br></p>
-<p class="p3">b.add( <span class="s3">\b1</span>, [1,288] );</p>
-<p class="p3">b.add( <span class="s3">\b2</span>, [1,289] );</p>
-<p class="p3">b.add( <span class="s3">\b3</span>, [1,290] );</p>
-<p class="p3">b.add( <span class="s3">\b4</span>, [1,291] );</p>
-<p class="p3">b.add( <span class="s3">\b5</span>, [1,292] );</p>
-<p class="p3">b.add( <span class="s3">\b6</span>, [1,293] );</p>
-<p class="p3">b.add( <span class="s3">\b7</span>, [1,294] );</p>
-<p class="p3">b.add( <span class="s3">\b8</span>, [1,295] );</p>
-<p class="p2"><br></p>
-<p class="p3">b.add( <span class="s3">\b5</span>, [1,292] );</p>
-<p class="p3">b.add( <span class="s3">\b6</span>, [1,293] );</p>
-<p class="p3">b.add( <span class="s3">\b7</span>, [1,294] );</p>
-<p class="p3">b.add( <span class="s3">\b8</span>, [1,295] );</p>
-<p class="p2"><br></p>
-<p class="p3">b.add( <span class="s3">\cx</span>, [3,16] );</p>
-<p class="p3">b.add( <span class="s3">\cy</span>, [3,17] );</p>
-<p class="p2"><br></p>
-<p class="p3">b.add( <span class="s3">\bl</span>, [1,296] );</p>
-<p class="p3">b.add( <span class="s3">\br</span>, [1,297] );</p>
-<p class="p2"><br></p>
-<p class="p3">b.add( <span class="s3">\bj1</span>, [1,298] );</p>
-<p class="p3">b.add( <span class="s3">\bj2</span>, [1,299] );</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">// Stop it:</p>
-<p class="p3">a.debug_( <span class="s1">false</span> );</p>
-<p class="p2"><br></p>
-<p class="p1">// look at the map</p>
-<p class="p3">b.map.postcs;</p>
-<p class="p2"><br></p>
-<p class="p1">// store it with a name:</p>
-<p class="p3">b.save( <span class="s4">"Impact"</span> );</p>
-<p class="p2"><br></p>
-<p class="p1">// find matching, previously stored specs:</p>
-<p class="p3">c = b.find;</p>
-<p class="p2"><br></p>
-<p class="p1">// load from file:</p>
-<p class="p3">b.fromFile( <span class="s4">"Impact"</span> );</p>
-<p class="p2"><br></p>
-<p class="p1">// the loading and storing mechanism works across SC sessions, as they are stored to file, and GeneralHIDSpec loads the device info of all stored specs at startup of the language.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">/// A GeneralHIDDevice automatically has a spec, so we can access it even faster:</p>
-<p class="p2"><br></p>
-<p class="p3">a.spec;</p>
-<p class="p2"><br></p>
-<p class="p1">// there are shortcuts for the methods:</p>
-<p class="p1"><span class="s2">add( key, slotids ) </span>// define a key to a slot</p>
-<p class="p1"><span class="s2">at( key ) </span>// get the slot</p>
-<p class="p1"><span class="s2">value( key ) </span>// get the value</p>
-<p class="p3">value_( key, value ) <span class="s5">// set the value<span class="Apple-converted-space"> </span></span></p>
-<p class="p3">action_( key, action ) <span class="s5">// set the action</span></p>
-<p class="p1"><span class="s2">bus( key ) </span>// get the bus</p>
-<p class="p3">createBus( key, server ) <span class="s5">// create the bus</span></p>
-<p class="p3">freeBus( key ) <span class="s5">// free the bus</span></p>
-<p class="p1"><span class="s2">createAllBuses( server ) </span>// create buses for all defined slots</p>
-<p class="p1"><span class="s2">freeAllBuses </span>// free all buses</p>
-<p class="p2"><br></p>
-<p class="p1">// to find and set a spec:</p>
-<p class="p3">a.findSpec;</p>
-<p class="p3">a.setSpec( <span class="s4">"Impact"</span> );</p>
-<p class="p2"><br></p>
-<p class="p1">// post the mapping</p>
-<p class="p3">a.spec.map</p>
-<p class="p2"><br></p>
-<p class="p1">// examples of use:</p>
-<p class="p3">s = <span class="s1">Server</span>.local.boot;</p>
-<p class="p2"><br></p>
-<p class="p1">// create a bus</p>
-<p class="p3">b.createBus( <span class="s3">\rx</span>, s );</p>
-<p class="p3">b.createBus( <span class="s3">\b1</span>, s );</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">// simple example:</p>
-<p class="p3">(</p>
-<p class="p4">SynthDef<span class="s2">( </span><span class="s3">\hidbus_help</span><span class="s2">, { </span>|out=0,amp=0.5|</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar( out, <span class="s1">SinOsc</span>.ar( 300, 0, 0.2*(amp-0.5) ) );</p>
-<p class="p3">}).load( s );</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">x = <span class="s1">Synth</span>.new( <span class="s3">\hidbus_help</span> );</p>
-<p class="p3">x.map( <span class="s3">\amp</span>, b.at( <span class="s3">\rx</span> ).bus );</p>
-<p class="p3">x.free;</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s2">( </span>// a nicer version:</p>
-<p class="p4">SynthDef<span class="s2">( </span><span class="s3">\hidbus_help</span><span class="s2">, { </span>|out=0,amp=0.5,amp2=0|</p>
-<p class="p3"><span class="s1">Out</span>.ar( out, <span class="s1">SinOsc</span>.ar( 300, 0, 0.2*(amp-0.5).lag( 0.1 ) * amp2.lag(0.01,0.99)</p>
-<p class="p3">) );</p>
-<p class="p3">}).load( s );</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">x = <span class="s1">Synth</span>.new( <span class="s3">\hidbus_help</span> );</p>
-<p class="p3">x.map( <span class="s3">\amp</span>, b.at( <span class="s3">\rx</span> ).bus );</p>
-<p class="p3">x.map( <span class="s3">\amp2</span>, b.at( <span class="s3">\b1</span> ).bus );</p>
-<p class="p3">x.free;</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s2">( </span>// an even nicer version:</p>
-<p class="p4">SynthDef<span class="s2">( </span><span class="s3">\hidbus_help</span><span class="s2">, { </span>|out=0,freqadd=0,amp=0,fmmul=200|</p>
-<p class="p3"><span class="s1">Out</span>.ar( out, <span class="s1">SinOsc</span>.ar( 300 + (freqadd.lag(0.2,1)*fmmul), 0, 0.2*amp.lag</p>
-<p class="p3">(0.01,0.99) ) );</p>
-<p class="p3">}).load( s );</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">// if you want to have buses for all the things defined in the spec, you can use:</p>
-<p class="p3">b.createAllBuses( s );</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">x = [ <span class="s1">Synth</span>.new( <span class="s3">\hidbus_help</span> ), <span class="s1">Synth</span>.new( <span class="s3">\hidbus_help</span> ) ];</p>
-<p class="p3">x[0].map( <span class="s3">\freqadd</span>, b.bus( <span class="s3">\ly</span> ) );</p>
-<p class="p3">x[0].map( <span class="s3">\amp</span>, b.bus( <span class="s3">\b6</span> ) );</p>
-<p class="p2"><br></p>
-<p class="p3">x[1].map( <span class="s3">\freqadd</span>, b.bus( <span class="s3">\lx</span> ) );</p>
-<p class="p3">x[1].map( <span class="s3">\amp</span>, b.bus( <span class="s3">\b7</span> ) );</p>
-<p class="p2"><br></p>
-<p class="p3">y = [ <span class="s1">Synth</span>.new( <span class="s3">\hidbus_help</span>, [<span class="s3">\fmmul</span>,400] ), <span class="s1">Synth</span>.new( <span class="s3">\hidbus_help</span>, [<span class="s3">\fmmul</span>,400] ) ];</p>
-<p class="p3">y[0].map( <span class="s3">\freqadd</span>, b.bus( <span class="s3">\ry</span> ) );</p>
-<p class="p3">y[0].map( <span class="s3">\amp</span>, b.bus( <span class="s3">\b5</span> ) );</p>
-<p class="p2"><br></p>
-<p class="p3">y[1].map( <span class="s3">\freqadd</span>, b.bus( <span class="s3">\rx</span> ) );</p>
-<p class="p3">y[1].map( <span class="s3">\amp</span>, b.bus( <span class="s3">\b6</span> ) );</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">// see what's going on on the server</p>
-<p class="p3">s.queryAllNodes( <span class="s1">true</span> );</p>
-<p class="p2"><br></p>
-<p class="p1">// free the synths</p>
-<p class="p3">y.do{ <span class="s1">|it|</span> it.free; }; x.do{ <span class="s1">|it|</span> it.free; };<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">// To free all buses</p>
-<p class="p3">b.freeAllBuses;</p>
-<p class="p2"><br></p>
-<p class="p1">// Close the device after use:</p>
-<p class="p2"><br></p>
-<p class="p3">a.close;</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">GeneralHID</span>.stopEventLoop</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Control/HIDDeviceService.html b/Help/Control/HIDDeviceService.html
deleted file mode 100644
index 0aabd61..0000000
--- a/Help/Control/HIDDeviceService.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #326f17}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {font: 9.0px Monaco}
-span.s4 {font: 9.0px Monaco; color: #0019b7}
-span.s5 {font: 12.0px Helvetica; color: #000000}
-span.s6 {color: #000000}
-span.s7 {color: #326f17}
-span.s8 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>HIDDeviceService</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>A Service that provides access to Human Interface Devices like joysticks and gamepads.</b></p>
-<p class="p2"><br></p>
-<p class="p3">It is advised to use <a href="GeneralHID.html"><span class="s2">GeneralHID</span></a> instead, which wraps the HIDDeviceService functionality, and produces crossplatform compatible code.</p>
-
-<p class="p2"><br></p>
-<p class="p3">This service was mainly designed to use gamepads as control input. The name is derived from the mac osx specifications.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The HIDDeviceService handles all the primitive calls. HIDDevice only stores information about a device and holds an array of HIDElements, which store information about the controllers of the device.</p>
-<p class="p3">A HIDDevice's information consists out of:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>the manufacturer, the product, the usage, the vendorID, the productID and the locID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>The last three are used to identify the device. The vendorID and the productID are static for each device, the locID depends on the (usb) port the device is connected to.</p>
-<p class="p3">A HIDDeviceElement's information consists out of:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>the type, the usage, the cookie, the minimum and the maximum value.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>the cookie is a number that can be used to identify an element of a device.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">There are two ways of getting values from the device: One is to poll a value, the other one is to start an eventloop that pushes every new value into the language and calls an action (like MIDIIn).</p>
-<p class="p3">To set up an eventloop follow these steps:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>1. initialize the service by calling:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">HIDDeviceService.</span>buildDeviceList;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>2. now the information about the devices can be found:</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">HIDDeviceService</span>.devices.do({<span class="s2">arg</span> dev;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[dev.manufacturer, dev.product, dev.vendorID, dev.productID, dev.locID].postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dev.elements.do({<span class="s2">arg</span> ele;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ele.type, ele.usage, ele.cookie, ele.min, ele.max].postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">)</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>3. the device needs to be queued, that means that the eventloop actually uses this device to push values.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">HIDDeviceService</span>.devices.at(0).queueDevice;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>4. set an action that is called by the incoming events. In addition to the value the events also deliver the productID, the vendorID and the locID of the device and the cookie of the element.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">HIDDeviceService</span>.action_({<span class="s2">arg</span> productID, vendorID, locID, cookie, val;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[productID, vendorID, locID, cookie, val].postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>5. start the eventloop:</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>HIDDeviceService.<span class="s6">runEventLoop;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>6. stop the eventloop:</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>HIDDeviceService.<span class="s6">stopEventLoop;</span></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>buildDeviceList(usagePage, usage)</b></p>
-<p class="p2"><br></p>
-<p class="p3">It is also possible to search for devices in other usage pages. (look in the class file)</p>
-<p class="p3">the default is: page: GenericDesktop usage: Joystick. if a nil is passed in all devices are listed.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">//HIDDeviceServis by jan trutzschler v. falkenstein</p>
-<p class="p2"><br></p>
-<p class="p3"><b>deviceSpecs</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>you can add to the classvar deviceSpecs the specs of your device.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>the key used has to be the <b>product name</b> derived from the device info.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3">here is a collection of specs:</p>
-<p class="p7"><br></p>
-<p class="p8">//wingman</p>
-<p class="p4">(</p>
-<p class="p9"><span class="s2">HIDDeviceService</span><span class="s6">.deviceSpecs.put(</span>'WingMan Action Pad'<span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>IdentityDictionary<span class="s6">[</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\a</span> -> 0, <span class="s7">\b</span>-> 1, <span class="s7">\c</span>-> 2,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\x</span>-> 3, <span class="s7">\y</span>-> 4, <span class="s7">\z</span>-> 5,</p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">\l</span><span class="s6">-> 6, </span>//front left</p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">\r</span><span class="s6">-> 7, </span>//front right</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\s</span>-> 8,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\mode</span>-> 9,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\xx</span>-> 10,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\yy</span>-> 11,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\slider</span>-> 12,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\hat</span>-> 13</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p4">)</p>
-<p class="p8">//cyborg</p>
-<p class="p4">(</p>
-<p class="p8"><span class="s2">HIDDeviceService</span><span class="s6">.deviceSpecs.put(</span><span class="s7">\cyborg</span><span class="s6">,<span class="Apple-converted-space">  </span></span>//not the right product name yet, so this doesn't work.</p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>IdentityDictionary<span class="s6">[</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\trig</span> -> 0, <span class="s7">\a</span>-> 1, <span class="s7">\b</span> -> 2, <span class="s7">\c</span> -> 3,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\f1</span>-> 4, <span class="s7">\f2</span>-> 5, <span class="s7">\f3</span>-> 6, <span class="s7">\f4</span> -> 7,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\l</span> -> 8, <span class="s7">\r</span> -> 9, <span class="s8">// arrow buttons</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\hu</span> -> 10, <span class="s7">\hl</span> -> 11, <span class="s7">\hr</span> -> 12, <span class="s7">\hd</span> -> 13, <span class="s8">// hat positions</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\x</span> -> 14, <span class="s7">\y</span> -> 15, <span class="s7">\z</span> -> 16, <span class="s8">// axes</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\slider</span>-> 17,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\hat</span>-> 18</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]);</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Control/IEnvGen.htm b/Help/Control/IEnvGen.htm
deleted file mode 100644
index 412c80f..0000000
--- a/Help/Control/IEnvGen.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; color: #000000}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>IEnvGen</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>envelope generator for polling values from an InterplEnv</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: UGen</b></p>
-<p class="p4"><b></b><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*ar(ienvelope, index, mul, add)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*kr(ienvelope, index, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Plays back break point envelopes from the index point. The envelopes are instances of the InterplEnv <span class="Apple-tab-span">	</span>class. See the <b>InterplEnv</b> help file for more info.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span><b>ienvelope</b> <span class="Apple-tab-span">	</span>an instance of InterplEnv (this is static for the life of the UGen)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a point to access within the InterplEnv</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// example</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s3">SynthDef</span>(<span class="s4">\test</span>, {<span class="s3">arg</span> gate = 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> env, sin;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>sin = <span class="s3">SinOsc</span>.ar(440, 0, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>env = <span class="s3">InterplEnv</span>([0, 0.6, 0.3, 1.0, 0], [0.1, 0.02, 0.4, 1.1], [<span class="s4">\lin</span>, <span class="s4">\exp</span>, -6, <span class="s4">\sin</span>]).plot;<span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, sin *<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// use MouseX to index into the InterplEnv to control amps</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">IEnvGen</span>.kr(env, <span class="s3">MouseX</span>.kr(0, env.times.sum)) *</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.asr(0.01, 1, 0.01), gate, doneAction: 2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).load(s);</p>
-<p class="p5"><br></p>
-<p class="p7">s = <span class="s3">Server</span>.internal.boot;</p>
-<p class="p7">s.scope;</p>
-<p class="p5"><br></p>
-<p class="p7">s.sendMsg(<span class="s4">\s_new</span>, <span class="s4">\test</span>, a = s.nextNodeID, 0, 1);</p>
-<p class="p7">s.sendMsg(<span class="s4">\n_set</span>, a, <span class="s4">\gate</span>, 0);</p>
-<p class="p5"><br></p>
-<p class="p6">// index with an SinOsc ... mouse controls amplitude of SinOsc</p>
-<p class="p8">SynthDef<span class="s5">(</span><span class="s4">\test</span><span class="s5">, {</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> env, sin;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>sin = <span class="s3">SinOsc</span>.ar(440, 0, <span class="s3">MouseX</span>.kr(0, 1));</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// use offset so negative values of SinOsc will map into the InterplEnv</p>
-<p class="p7"><span class="Apple-tab-span">	</span>env = <span class="s3">InterplEnv</span>([-1, -0.7, 0.7, 1], [ 0.8666, 0.2666, 0.8668 ], <span class="s4">\lin</span>, -1.0);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, <span class="s3">IEnvGen</span>.ar(env, sin))<span class="Apple-converted-space"> </span></p>
-<p class="p7">}).load(s);</p>
-<p class="p5"><br></p>
-<p class="p7">s.sendMsg(<span class="s4">\s_new</span>, <span class="s4">\test</span>, a = s.nextNodeID, 0, 1);</p>
-<p class="p7">s.sendMsg(<span class="s4">\n_free</span>, a);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// index with Amplitude of input, control freq of SinOsc</p>
-<p class="p7"><span class="s3">SynthDef</span>(<span class="s4">\test</span>, {<span class="s3">arg</span> inbus;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> env, point;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>point = <span class="s3">Amplitude</span>.ar(<span class="s3">In</span>.ar(inbus), 0.01, 0.2);</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// use offset so negative values of SinOsc will map into the InterplEnv</p>
-<p class="p7"><span class="Apple-tab-span">	</span>env = <span class="s3">InterplXYC</span>([[0, 330, <span class="s4">\exp</span>], [0.5, 440, <span class="s4">\exp</span>], [1.0, 1760]]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(1, <span class="s3">SinOsc</span>.ar(<span class="s3">IEnvGen</span>.kr(env, point), 0, 0.2))<span class="Apple-converted-space"> </span></p>
-<p class="p7">}).load(s);</p>
-<p class="p5"><br></p>
-<p class="p7">s.sendMsg(<span class="s4">\s_new</span>, <span class="s4">\test</span>, a = s.nextNodeID, 0, 1, <span class="s4">\inbus</span>, s.options.numOutputBusChannels);</p>
-<p class="p7">s.sendMsg(<span class="s4">\n_free</span>, a);</p>
-</body>
-</html>
diff --git a/Help/Control/InterplEnv.htm b/Help/Control/InterplEnv.htm
deleted file mode 100644
index 18120c6..0000000
--- a/Help/Control/InterplEnv.htm
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica}
-span.s4 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>InterplEnv<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>envelope specification</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">An InterplEnv is a specification for a segmented envelope. InterplEnvs can be used both server-side, by an <b>IEnvGen </b>within a SynthDef, and clientside, with methods such as <b>at</b>. An InterplEnv can have any number of segments. An InterplEnv can have several shapes for its segments.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Differences between InterplEnv and </b><a href="Env.html"><span class="s2">Env</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">InterplEnvs do not have release or loop nodes.<span class="Apple-converted-space">  </span>They are of a fixed duration. Mostly, it is meant to be used with IEnvGen, where 'times' are actually an <b>index into the envelope</b> shape.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Basic Creation</b></p>
-<p class="p2"><br></p>
-<p class="p1">*<b>new(levels, times, curves, offset = 0.0)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Create a new envelope specification.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>levels</b> - an array of levels. The first level is the initial value of the envelope.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>times</b> - an array of durations of segments in seconds. There should be one fewer duration than there are levels.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>curve</b> - this parameter determines the shape of the envelope segments.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The possible values are:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'step' - flat segments</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'linear' - linear segments, the default</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'exponential' - natural exponential growth and decay. In this case, the levels must all be nonzero</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and the have the same sign.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'sine' - sinusoidal S shaped segments.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'welch' - sinusoidal segments shaped like the sides of a Welch window.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a Float - a curvature value for all segments.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An Array of Floats - curvature values for each segments.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>offset</b> - used to offset an envelope into negative starttimes.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Instance Methods</b></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>plot(size)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Plot this envelope's shape in a window.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>size</b> - The size of the plot. The default is 400.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>asArray</b></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>Converts the Env to an Array in a specially ordered format. This allows for Env parameters to be settable arguments in a <a href="../ServerArchitecture/SynthDef.html"><span class="s2">SynthDef</span></a>. See example above under *<b>newClear</b>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Client-side Access and Stream Support</b></p>
-<p class="p6"><br></p>
-<p class="p1"><b>at(time)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Returns the value of the InterplEnv at <b>time</b>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">InterplEnv</span>([0, 1, 0.707], [0.2, 1.3], [\lin, \sin]).at(0.5);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Control/InterplPairs.htm b/Help/Control/InterplPairs.htm
deleted file mode 100644
index d72a75c..0000000
--- a/Help/Control/InterplPairs.htm
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>InterplPairs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>envelope specification</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: InterplEnv</b></p>
-<p class="p2"><br></p>
-<p class="p1">See InterplEnv Help for more info</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Basic Creation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>takes an array of [x, y] pairs and a curve value for all break points</b></p>
-<p class="p1"><b>x values can be negative (for use in indexing with negartive values or signals).</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p2"><br></p>
-<p class="p1">*<b>new([[x0, y0], [x1, y1] ... [xn, yn]], curve)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>a = InterplPairs([[0, 1], [1, 2], [2, 0]], \sin);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = InterplPairs([[-1, 1], [0, 2], [1, 0]], \sin);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.plot;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.at(-0.5);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.at(0.2);</p>
-</body>
-</html>
diff --git a/Help/Control/InterplXYC.htm b/Help/Control/InterplXYC.htm
deleted file mode 100644
index 50e9fce..0000000
--- a/Help/Control/InterplXYC.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {color: #001ab6}
-span.s4 {color: #347019}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>InterplXYC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>envelope specification</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: InterplEnv</b></p>
-<p class="p2"><br></p>
-<p class="p1">See InterplEnv Help for more info</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Basic Creation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>takes sets of x, y and curve values and returns a new instance of InterplEnv.</b></p>
-<p class="p1"><b>x values can be negative (for use in indexing with negartive values or signals).</b></p>
-<p class="p2"><br></p>
-<p class="p1">*<b>new([x0, y0, c0], [x1, y1, c1]...[xn, yn])</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>a = <span class="s3">InterplXYC</span>([0, 0, <span class="s4">\lin</span>], [1, 2, <span class="s4">\sin</span>], [2, 0]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = InterplXYC([[-1, 1, \sin], [0, 2, \lin], [1, 0]]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.plot;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.at(-0.5);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.at(0.2);</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Control/MIDI.html b/Help/Control/MIDI.html
deleted file mode 100644
index f55a558..0000000
--- a/Help/Control/MIDI.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>MIDI</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>MIDIClient</b></p>
-<p class="p3"><b>MIDIEndpoint</b></p>
-<p class="p3"><b>MIDIIn</b></p>
-<p class="p3"><b>MIDIOut</b></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">See the <b>[UsingMIDI]</b> helpfile for practical considerations and techniques for using MIDI in SC.</p>
-<p class="p2"><br></p>
-<p class="p3">MIDIClient is a static class that starts up the MIDI service:</p>
-<p class="p3">It initializes with a number of virtual inports and outports.</p>
-<p class="p3">The default is 1. and usually not more a needed.</p>
-<p class="p3">The information about the hardware is stored in MIDIClient.sources and MIDIClient.destinations as MIDIEndpoints.</p>
-<p class="p2"><br></p>
-<p class="p3">MIDIIn represents a connection between a inport and a source of the MIDIClient.</p>
-<p class="p3">There are three possibilities to connect them:</p>
-<p class="p3">To do something with the incoming MIDI data set the actions.</p>
-<p class="p2"><br></p>
-<p class="p3">example:</p>
-<p class="p3">(</p>
-<p class="p3">MIDIClient.init;</p>
-<p class="p3">//There are three possibilities to connect for example to the first device:</p>
-<p class="p3"><b>//</b>MIDIIn.connect(0, MIDIClient.sources.at(0));</p>
-<p class="p3"><b>//</b>MIDIIn.connect(0, MIDIClient.sources.at(0).uid);</p>
-<p class="p3">MIDIIn.connect(0, 0);</p>
-<p class="p3">//set the action:</p>
-<p class="p3">MIDIIn.control = {arg src, chan, num, val;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>val.postln;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">MIDIOut</p>
-<p class="p2"><br></p>
-<p class="p3">example:</p>
-<p class="p3">(</p>
-<p class="p3">MIDIClient.init;</p>
-<p class="p3">m = MIDIOut(0, MIDIClient.destinations.at(0).uid);</p>
-<p class="p3">m.noteOn(0, 60, 60);</p>
-<p class="p3">)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">)</p>
-</body>
-</html>
diff --git a/Help/Control/MIDIIn.html b/Help/Control/MIDIIn.html
deleted file mode 100644
index 2f41da0..0000000
--- a/Help/Control/MIDIIn.html
+++ /dev/null
@@ -1,365 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.47">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #76371b}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #002bad}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #76371b}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica; min-height: 12.0px}
-span.s1 {color: #0016ff}
-span.s2 {color: #0031f2}
-span.s3 {color: #000000}
-span.s4 {color: #002bad}
-span.s5 {text-decoration: underline}
-span.s6 {color: #001ac0}
-span.s7 {color: #606060}
-span.s8 {color: #576725}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>MIDIIn</b></p>
-<p class="p2"><br></p>
-<p class="p3">This document explains technical details of the MIDI hardware interface class, MIDIIn.</p>
-<p class="p4"><br></p>
-<p class="p3">MIDIIn is a simple and direct interface.<span class="Apple-converted-space">  </span>When MIDI events come into Super Collider, MIDIIn evaluates simple handler functions.</p>
-<p class="p4"><br></p>
-<p class="p3">For general programming, <b>users should not use the MIDIIn class directly</b>.<span class="Apple-converted-space">  </span>See the <a href="MIDIResponder.html"><span class="s1">MIDIResponder</span></a> classes for higher level event matching and more flexible handling of event handlers.</p>
-<p class="p4"><br></p>
-<p class="p3">Certain MIDI messages are supported only through MIDIIn. These are: polytouch, program, sysex, sysrt, smpte.</p>
-<p class="p4"><br></p>
-<p class="p3">See the <a href="UsingMIDI.html"><span class="s2">UsingMIDI</span></a> helpfile for practical considerations and techniques for using MIDI in SC.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>The MIDIIn class</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>MIDIIn </b>links MIDI input received from the operating system to a set of user defined functions.</p>
-<p class="p3">Only one set of MIDI input handling functions can be active at a time, they are stored in the</p>
-<p class="p3">following class variables:</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>noteOff, noteOn, polytouch, control, program, touch, bend, sysex, sysrt, smpte</p>
-<p class="p4"><br></p>
-<p class="p3">The first argument these functions receive is an unique identifier that specifies the source of the data.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Quick start for 1 port:</b></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">MIDIIn</span><span class="s3">.connect; <span class="Apple-tab-span">	</span></span>// init for one port midi interface</p>
-<p class="p7">// register functions:<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.noteOff = { <span class="s4">arg</span> src, chan, num, vel; <span class="Apple-tab-span">	</span>[chan,num,vel / 127].postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.noteOn = { <span class="s4">arg</span> src, chan, num, vel; <span class="Apple-tab-span">	</span>[chan,num,vel / 127].postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.polytouch = { <span class="s4">arg</span> src, chan, num, vel; <span class="Apple-tab-span">	</span>[chan,num,vel / 127].postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.control = { <span class="s4">arg</span> src, chan, num, val; <span class="Apple-tab-span">	</span>[chan,num,val].postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.program = { <span class="s4">arg</span> src, chan, prog; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[chan,prog].postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.touch = { <span class="s4">arg</span> src, chan, pressure; <span class="Apple-tab-span">	</span>[chan,pressure].postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.bend = { <span class="s4">arg</span> src, chan, bend; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[chan,bend - 8192].postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.sysex = { <span class="s4">arg</span> src, sysex; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sysex.postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.sysrt = { <span class="s4">arg</span> src, chan, val; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[chan,val].postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MIDIIn</span>.smpte = { <span class="s4">arg</span> src, chan, val; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[chan,val].postln; };</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Quick start for 2 or more ports:</b></p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> inPorts = 2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> outPorts = 2;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">MIDIClient</span><span class="s3">.init(inPorts,outPorts);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// explicitly intialize the client</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inPorts.do({ arg i;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4"><span class="Apple-tab-span">	</span>MIDIIn</span>.connect(i, <span class="s4">MIDIClient</span>.sources.at(i));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="s5">class methods:</span></b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>*findPort(deviceName,portName)</b></p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span>searches for a connected MIDIEndPoint by name</p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span>list connected ins:</p>
-<p class="p6"><span class="Apple-tab-span">	</span> <span class="Apple-tab-span">	</span><span class="s6">MIDIClient</span>.sources</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*noteOn_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>function </b>is evaluated whenever a MIDI noteOn message is received, it is passed the following arguments:</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MIDIchannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 15<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>keyNumber<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p3"><span class="Apple-tab-span">	</span>velocity<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127<span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>*noteOff_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MIDIchannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 15<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>keyNumber<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p3"><span class="Apple-tab-span">	</span>velocity<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127,<span class="Apple-tab-span">	</span>typically 64 unless noteOff velocity is supported</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>*polytouch_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MIDIchannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 15<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>keyNumber<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p3"><span class="Apple-tab-span">	</span>pressure<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p3"><b>*control_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MIDIchannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 15<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>controllerNumber<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p3"><span class="Apple-tab-span">	</span>value<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p3"><b>*program_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MIDIchannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 15<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>programNumber<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p3"><b>*touch_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MIDIchannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 15<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>pressure<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p3"><b>*bend_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MIDIchannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 15<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>bend<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>0..16384, <span class="Apple-converted-space">  </span>the<span class="Apple-converted-space">  </span>midpoint is 8192</p>
-<p class="p3"><b>*sysex_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>system exclusive data<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an Int8Array (includes f0 and f7)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see manufacturer references for details</p>
-<p class="p3"><span class="Apple-tab-span">	</span>note: The current implementation<span class="Apple-converted-space">  </span>assembles a complete system exclusive packet</p>
-<p class="p3"><span class="Apple-converted-space"> </span>before evaluating the function.</p>
-<p class="p3"><b>*sysrt_(function)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 15<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>data<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - 127</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>data<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>message</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>14bits<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>song pointer<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>3 <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7bits<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>song select</p>
-<p class="p3"><span class="Apple-tab-span">	</span>8<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>midiclock</p>
-<p class="p3"><span class="Apple-tab-span">	</span>10<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>start</p>
-<p class="p3"><span class="Apple-tab-span">	</span>11<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>continue</p>
-<p class="p3"><span class="Apple-tab-span">	</span>12<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stop</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*smpte</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>uid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique identifier of the MIDI port</p>
-<p class="p3"><span class="Apple-tab-span">	</span>index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranges from 0 to 7<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>data<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 bits</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Over MIDI, SMPTE is transmitted at 1/4 frame intervals four times faster than the frame rate.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>data</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>frames low nibble</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>frames hi nibble</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>seconds low nibble</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>seconds hi nibble</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>minutes low nibble</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>minutes hi nibble</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hours low nibble</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hours hi <b>bit</b> OR'ed with frameRate</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 -> 24fps</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 -> 25 fps</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 -> 30 fps drop frame</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6 -> 30 fps</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Nibbles are sent in ascending order,<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">MIDIIn</span>.connect;</p>
-<p class="p6">s = <span class="s4">Server</span>.local;</p>
-<p class="p6">s.boot;</p>
-<p class="p6">s.latency = 0;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">SynthDef</span>(<span class="s7">"sik-goo"</span>, { <span class="s4">arg</span> freq=440,formfreq=100,gate=0.0,bwfreq=800;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">Formant</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.kr(0.02, 0, 10, freq),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>formfreq,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bwfreq</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.adsr, gate,<span class="s4">Latch</span>.kr(gate,gate)) * x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, x);</p>
-<p class="p6">}).send(s);</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">x = </span><span class="s4">Synth</span><span class="s3">(</span>"sik-goo"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p7">//set the action:</p>
-<p class="p6"><span class="s4">MIDIIn</span>.noteOn = {<span class="s4">arg</span> src, chan, num, vel;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s8">\freq</span>, num.midicps / 4.0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s8">\gate</span>, vel / 200 );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s8">\formfreq</span>, vel / 127 * 1000);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="s4">MIDIIn</span>.noteOff = { <span class="s4">arg</span> src,chan,num,vel;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s8">\gate</span>, 0.0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="s4">MIDIIn</span>.bend = { <span class="s4">arg</span> src,chan,val;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//(val * 0.048828125).postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s8">\bwfreq</span>, val * 0.048828125 );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10">//i used this and got acceptable latency for triggering synths live.</p>
-<p class="p10">//The latency might actually be less than sc2, but i haven't used it enough</p>
-<p class="p10">//to tell for sure yet.</p>
-<p class="p10">//Powerbook G4, 512mb ram.</p>
-<p class="p3">- matrix6k at somahq.com</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">writing to the bus rather than directly to the synth</p>
-<p class="p2"><br></p>
-<p class="p6">s = <span class="s4">Server</span>.local;</p>
-<p class="p6">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6">s.latency = 0;</p>
-<p class="p6"><span class="s4">SynthDef</span>(<span class="s7">"moto-rev"</span>, { <span class="s4">arg</span> ffreq=100;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">RLPF</span>.ar(<span class="s4">LFPulse</span>.ar(<span class="s4">SinOsc</span>.kr(0.2, 0, 10, 21), [0,0.1], 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> ffreq, 0.1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> .clip2(0.4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, x);</p>
-<p class="p6">}).send(s);</p>
-<p class="p2"><br></p>
-<p class="p6">b = <span class="s4">Bus</span>.control(s);</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">x = </span><span class="s4">Synth</span><span class="s3">(</span>"moto-rev"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p7">// map the synth's first input (ffreq) to read</p>
-<p class="p7">// from the bus' output index</p>
-<p class="p6">x.map(0, b);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">MIDIIn</span>.connect;</p>
-<p class="p7">//set the action:</p>
-<p class="p6"><span class="s4">MIDIIn</span>.noteOn = {<span class="s4">arg</span> src, chan, num, vel;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value = num.midicps.postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">MIDIIn</span>.control = {<span class="s4">arg</span> src, chan, num, val;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[chan,num,val].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="s4">MIDIIn</span>.bend = {<span class="s4">arg</span> src, chan, val;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>val.postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p7">// cleanup</p>
-<p class="p6">x.free;</p>
-<p class="p6">b.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Keyboard Split for two voices</b></p>
-<p class="p3"><b>pbend to cutoff, mod to rez, 7 to amp</b></p>
-<p class="p10">// - matrix6k at somahq.com</p>
-<p class="p11"><b>prepare</b></p>
-<p class="p12"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">SynthDef</span>(<span class="s7">"funk"</span>,{ <span class="s4">arg</span> freq = 700, amp = 0.2, gate = 1, cutoff = 20000, rez = 1, lfospeed=0;</p>
-<p class="p6"><span class="Apple-converted-space">     </span><span class="s4">var</span> e,x,env,range,filterfreq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>e = <span class="s4">Env</span>.new([0, 0.1, 0.1, 0], [0, 0.1, 0.1], <span class="s8">'linear'</span>, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env=<span class="s4">Env</span>.adsr(0.3,1,1,1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>range = cutoff -1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>filterfreq = <span class="s4">SinOsc</span>.kr(lfospeed,0, range, cutoff).abs;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">RLPF</span>.ar(<span class="s4">Mix</span>.ar([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Mix</span>.arFill(2, {<span class="s4">Saw</span>.ar(freq *2 + 0.2.rand2, amp)}),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Mix</span>.arFill(2, {<span class="s4">Saw</span>.ar(freq *4+ 0.2.rand2, amp)})</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">EnvGen</span>.kr(env,gate)*filterfreq,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rez);</p>
-<p class="p6"><span class="Apple-converted-space">     </span><span class="s4">Out</span>.ar([0,1],x * <span class="s4">EnvGen</span>.kr(e, gate, doneAction: 2))</p>
-<p class="p2"><br></p>
-<p class="p6">}).send(s);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">SynthDef</span>(<span class="s7">"strings"</span>,{ <span class="s4">arg</span> freq = 700, amp = 0.2, gate = 1;</p>
-<p class="p6"><span class="Apple-converted-space">     </span><span class="s4">var</span> x,enve;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>enve = <span class="s4">Env</span>.new([0, 0.1, 0.1, 0], [2, 0.1, 1], <span class="s8">'linear'</span>, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">RLPF</span>.ar(<span class="s4">Mix</span>.ar([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Mix</span>.arFill(2, {<span class="s4">Saw</span>.ar(freq +2.rand2,0.6)}),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Mix</span>.arFill(2, {<span class="s4">Saw</span>.ar(freq *0.5 + 2.rand2,0.6)})</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6000,1);</p>
-<p class="p6"><span class="Apple-converted-space">     </span><span class="s4">Out</span>.ar([0,1],x * <span class="s4">EnvGen</span>.kr(enve, gate, doneAction: 2))</p>
-<p class="p2"><br></p>
-<p class="p6">}).send(s);</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p11"><b>then...</b></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> keys, cutspec, cutbus, rezspec, rezbus, lfospec, lfobus;</p>
-<p class="p6">keys = <span class="s4">Array</span>.newClear(128);</p>
-<p class="p2"><br></p>
-<p class="p8">MIDIClient<span class="s3">.init;</span></p>
-<p class="p6"><span class="s4">MIDIIn</span>.connect(0, <span class="s4">MIDIClient</span>.sources.at(0));</p>
-<p class="p2"><br></p>
-<p class="p6">g = <span class="s4">Group</span>.new;</p>
-<p class="p2"><br></p>
-<p class="p6">cutspec = <span class="s4">ControlSpec</span>(100,10000,<span class="s8">\linear</span>,0.001);</p>
-<p class="p6">cutbus = <span class="s4">Bus</span>.new(<span class="s8">\control</span>,1,1,s);</p>
-<p class="p6">cutbus.value = 10000;</p>
-<p class="p2"><br></p>
-<p class="p6">rezspec = <span class="s4">ControlSpec</span>(1,0,<span class="s8">\linear</span>,0.001);</p>
-<p class="p6">rezbus = <span class="s4">Bus</span>.new(<span class="s8">\control</span>,2,1,s);</p>
-<p class="p6">rezbus.value = 1.0;</p>
-<p class="p2"><br></p>
-<p class="p6">lfospec = <span class="s4">ControlSpec</span>(0,50,<span class="s8">\linear</span>,0.001);</p>
-<p class="p6">lfobus = <span class="s4">Bus</span>.new(<span class="s8">\control</span>,3,1,s);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">MIDIIn</span>.control = {<span class="s4">arg</span> src, chan, num, val;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(num == 1,{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rezbus.value = rezspec.map(val/127.0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(num == 7,{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lfobus.value = lfospec.map(val/127.0).postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="s4">MIDIIn</span>.bend = {<span class="s4">arg</span> src, chan, val;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cutbus.value = cutspec.map(val/16383.0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">MIDIIn</span>.noteOn = {<span class="s4">arg</span> src, chan, num, vel;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> node;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>if(num < 60, {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node = <span class="s4">Synth</span>.tail(g, <span class="s7">"funk"</span>, [<span class="s8">\freq</span>, num.midicps, <span class="s8">\amp</span>, vel/255]);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.map(</span>"cutoff"<span class="s3">,1,</span>"rez"<span class="s3">,2,</span>"lfospeed"<span class="s3">,3);</span></p>
-<p class="p7">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node = Synth.basicNew("funk",s);</p>
-<p class="p7">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(nil,</p>
-<p class="p7">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.addToTailMsg(g,[\freq, num.midicps, \amp, vel/255]),</p>
-<p class="p7">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.mapMsg("cutoff",1,"rez",2,"lfospeed",3)</p>
-<p class="p7">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>keys.put(num, node)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>},{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node = <span class="s4">Synth</span>.tail(g, <span class="s7">"strings"</span>, [<span class="s8">\freq</span>, num.midicps, <span class="s8">\amp</span>, vel/255]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>keys.put(num, node)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">};</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">MIDIIn</span>.noteOff = {<span class="s4">arg</span> src, chan, num, vel;</p>
-<p class="p6"><span class="Apple-converted-space">    </span><span class="s4">var</span> node;</p>
-<p class="p6"><span class="Apple-converted-space">    </span>node = keys.at(num);</p>
-<p class="p6"><span class="Apple-converted-space">    </span>if (node.notNil, {</p>
-<p class="p6"><span class="Apple-converted-space">        </span>keys.put(num, <span class="s4">nil</span>);</p>
-<p class="p6"><span class="Apple-converted-space">        </span>s.sendMsg(<span class="s7">"/n_set"</span>, node.nodeID, <span class="s7">"gate"</span>, 0);</p>
-<p class="p7"><span class="s3"><span class="Apple-converted-space">        </span></span>// or node.release</p>
-<p class="p7"><span class="s3"><span class="Apple-converted-space">        </span></span>// then free it ... or get the NodeWatcher to do it</p>
-<p class="p6"><span class="Apple-converted-space">    </span>});</p>
-<p class="p6">};</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Control/MIDIOut.html b/Help/Control/MIDIOut.html
deleted file mode 100644
index 6d0fc1e..0000000
--- a/Help/Control/MIDIOut.html
+++ /dev/null
@@ -1,191 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #c40000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0010c4}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007200; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007200}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0010c4; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0010c4}
-span.s2 {color: #000000}
-span.s3 {color: #007200}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>MIDIOut</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>send midi messages</b></p>
-<p class="p4"><br></p>
-<p class="p3">a MIDIOut is bound to a specific MIDIEndPoint as defined by the operating system</p>
-<p class="p4"><br></p>
-<p class="p3">list out ports:<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><span class="s1">MIDIClient</span>.destinations</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>*new(port, uid)</b></p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span>port is the index of the MIDIEndPoint in the MIDIClient.destinations array.</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span>Mac OSX / Windows: uid is optional; if specified, it should be the uid of that port</p>
-<p class="p3"><span class="Apple-tab-span">	</span> <span class="Apple-tab-span">	</span>ie. MIDIClient.destinations[port].uid</p>
-<p class="p3"><span class="Apple-tab-span">	</span> <span class="Apple-tab-span">	</span>If you don't provide a uid, the correct uid will be filled in for you (easier)</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span> Linux: using the uid is optional as described below</p>
-<p class="p4"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>*newByName(deviceName,portName)</b></p>
-<p class="p3"><b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></b>Searches for the device by name. This is safer then depending on the index which will change</p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span>if your studio setup changes.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>list connected out ports with names:<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span> <span class="Apple-tab-span">	</span><span class="s1">MIDIClient</span>.destinations</p>
-<p class="p2"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>*findPort(deviceName,portName)</b></p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span>searches for a connected MIDIEndPoint by name</p>
-<p class="p3"><span class="Apple-tab-span">	</span>list connected out ports with names:<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">MIDIClient</span>.destinations</p>
-<p class="p4"><br></p>
-<p class="p3"><b>  *connect(port, uid)</b> (Linux only)</p>
-<p class="p3">  <b>*disconnect(port, uid)</b> (Linux only)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>OS X does not need to connect. On Linux it is an optional feature (see below).</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>latency_( time )</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>This sets the latency with which a midi event is sent out. Per default this is set to 0.2, in order to be equal to the Server.latency.<br>
-NOTE: on Linux there seems to be an ALSA or kernel bug if the latency is larger than 0, for some Linux kernels. If MIDIOut does not seem to work, set the latency to 0.</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>noteOn</b> ( chan, note, veloc )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>noteOff</b> ( chan, note, veloc )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>polyTouch</b> ( chan, note, val )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>control</b> ( chan, ctlNum, val )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>program</b> ( chan, num )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>touch</b> ( chan, val )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>bend</b> ( chan, val )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>allNotesOff</b> ( chan )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>smpte</b> ( frames, seconds, minutes, hours, frameRate )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>songPtr</b> ( songPtr )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>songSelect</b> ( song )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>midiClock</b> (<span class="Apple-converted-space">  </span>)</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>startClock</b> (<span class="Apple-converted-space">  </span>)</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>continueClock</b> (<span class="Apple-converted-space">  </span>)</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>stopClock</b> (<span class="Apple-converted-space">  </span>)</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>reset</b> (<span class="Apple-converted-space">  </span>)</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>sysex</b> ( Int8Array )</p>
-<p class="p3"><b> connect(uid)</b> (Linux only)</p>
-<p class="p3"> <b>disconnect(uid)</b> (Linux only)</p>
-<p class="p4"><br></p>
-<p class="p3"> private methods:</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>send</b> ( outport, uid, len, hiStatus, loStatus, a, b, latency )</p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>prSysex</b> ( uid, Int8Array )</p>
-<p class="p3"><b> *connectByUID(port, uid)</b> (Linux only)</p>
-<p class="p3"> <b>*disconnectByUID(port, uid)</b> (Linux only)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// examples:</p>
-<p class="p2"><br></p>
-<p class="p7">MIDIClient<span class="s2">.init;</span></p>
-<p class="p2"><br></p>
-<p class="p5">m = <span class="s1">MIDIOut</span>(0);</p>
-<p class="p5">m.noteOn(16, 60, 60);</p>
-<p class="p5">m.noteOn(16, 61, 60);</p>
-<p class="p5">m.noteOff(16, 61, 60);</p>
-<p class="p5">m.allNotesOff(16);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">MIDIIn</span><span class="s2">.connect; </span>// 1 port midi interface</p>
-<p class="p5"><span class="s1">MIDIIn</span>.sysex = { <span class="s1">arg</span> uid, packet; [uid,packet].postln };</p>
-<p class="p5"><span class="s1">MIDIIn</span>.sysrt = { <span class="s1">arg</span> src, chan, val;<span class="Apple-converted-space">  </span>[src, chan, val].postln; };</p>
-<p class="p5"><span class="s1">MIDIIn</span>.smpte = { <span class="s1">arg</span> src, chan, val;<span class="Apple-converted-space">  </span>[src, chan, val].postln; };</p>
-<p class="p2"><br></p>
-<p class="p5">m.sysex(<span class="s1">Int8Array</span>[ 16rf0, 0, 0, 27, 11, 0,16rf7])</p>
-<p class="p2"><br></p>
-<p class="p5">m.smpte(24,16)<span class="Apple-converted-space"> </span></p>
-<p class="p5">m.midiClock<span class="Apple-converted-space"> </span></p>
-<p class="p5">m.start<span class="Apple-converted-space"> </span></p>
-<p class="p5">m.continue<span class="Apple-converted-space"> </span></p>
-<p class="p5">m.stop<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Using patterns for sending midi events</b></p>
-<p class="p2"><br></p>
-<p class="p7">MIDIClient<span class="s2">.init;</span></p>
-<p class="p5">m = <span class="s1">MIDIOut</span>(0);</p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s1">Pbind</span>(<span class="s3">\degree</span>, <span class="s1">Prand</span>([1, 2, 3, [0, 5]], <span class="s1">inf</span>), <span class="s3">\bend</span>, <span class="s1">Pwhite</span>(0, 76, <span class="s1">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// chain a midi event into the pattern and play it (see <a href="../Streams-Patterns-Events/Patterns/Pchain.html"><span class="s1">Pchain</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p5">(a <> (type: <span class="s3">\midi</span>, midiout: m)).play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">The following keys are supported by midi event:</p>
-<p class="p8"><br></p>
-<p class="p9">\noteOn</p>
-<p class="p9">\noteOff</p>
-<p class="p9">\polyTouch</p>
-<p class="p9">\control</p>
-<p class="p9">\program</p>
-<p class="p9">\touch</p>
-<p class="p9">\bend</p>
-<p class="p9">\allNotesOff</p>
-<p class="p9">\smpt</p>
-<p class="p9">\songPtr</p>
-<p class="p9">\sysex</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Linux specific: Connecting and disconnecting ports.</b></p>
-<p class="p4"><br></p>
-<p class="p3">On Linux, a MIDIOut can be created without setting the destination:</p>
-<p class="p2"><br></p>
-<p class="p5">m = <span class="s1">MIDIOut</span>(0);</p>
-<p class="p4"><br></p>
-<p class="p3">in this case each message will be sent to all ports connected to SuperCollider's first MIDI output.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">A connection can be made through:</p>
-<p class="p2"><br></p>
-<p class="p5">m.connect( 2 );</p>
-<p class="p4"><br></p>
-<p class="p3">Note that by connecting in this way, you can connect more than one destination to the MIDI output.</p>
-<p class="p3">You can also use other tools to connect to a MIDIOut port of SC, e.g. through aconnect or QJackCtl (on the ALSA tab).</p>
-<p class="p4"><br></p>
-<p class="p3">If you set the uid in MIDIOut, a direct connection is established and data will only be sent to that MIDI input port, and not to any other connections made to SC's MIDI output port (through the connect message or external tools).</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>OS X specific: Sending MIDI to other applications</b></p>
-<p class="p2"><br></p>
-<p class="p3">Open the Audio MIDI Setup application.<span class="Apple-converted-space">  </span>Double-click on IAC Driver and check "device is online". <span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p3">reinitialize:</p>
-<p class="p10"><br></p>
-<p class="p5"><span class="s1">MIDIClient</span>.init(numIns,numOuts)</p>
-<p class="p2"><br></p>
-<p class="p3">The IAC Bus will now appear in MIDIClient.destinations.<span class="Apple-converted-space">  </span>It will appear first, which means that any code that you have written that addresses the first physical bus as 0 will now have to be changed.</p>
-<p class="p4"><br></p>
-<p class="p3">For this reason it is always safer to find the port by name :</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">MIDIOut</span><span class="s2">.newByName(</span>"RemoteSL IN"<span class="s2">,</span>"Port 1"<span class="s2">)</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The IAC Bus will now also appear to other applications.</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p3">MIDIMonitor (freeware) can be very useful for troubleshooting:</p>
-<p class="p2"><br></p>
-<p class="p5">http://www.snoize.com/MIDIMonitor/</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Control/MIDIResponder.html b/Help/Control/MIDIResponder.html
deleted file mode 100644
index e0da2ce..0000000
--- a/Help/Control/MIDIResponder.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 29.0px; text-indent: -29.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 29.0px; text-indent: -29.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a8220e}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0013bb}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #84331b; min-height: 12.0px}
-span.s1 {color: #0013bb}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>MIDIResponder</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Register multiple functions to be evaluated when MIDI events occur.</b></p>
-<p class="p4"><br></p>
-<p class="p3">MIDIResponder is an abstract class. Its subclasses allow functions to be registered to respond to midi events.</p>
-<p class="p4"><br></p>
-<p class="p3">Read the general help file here and then see the individual help files.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>CCResponder<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Respond to control messages</p>
-<p class="p3"><b>NoteOnResponder<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Respond to note-on messages</p>
-<p class="p3"><b>NoteOffResponder<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Respond to note-off messages</p>
-<p class="p3"><b>BendResponder<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Respond to pitch bend messages</p>
-<p class="p3"><b>TouchResponder<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Respond to aftertouch messages</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Creation and initialization:</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>CCResponder(function, src, chan, num, value, install = true,swallowEvent = false)</b></p>
-<p class="p3"><b>NoteOnResponder(function, src, chan, num, veloc, install = true,swallowEvent = false)</b></p>
-<p class="p3"><b>NoteOffResponder(function, src, chan, num, veloc, install = true,swallowEvent = false)</b></p>
-<p class="p3"><b>BendResponder(function, src, chan, value, install = true,swallowEvent = false)</b></p>
-<p class="p3"><b>TouchResponder(function, src, chan, value, install = true,swallowEvent = false)</b></p>
-<p class="p4"><br></p>
-<p class="p6"><b>function</b>: The function to execute when the incoming MIDI event matches the responder. The function takes the arguments src, chan, A, B (or for Bend and Touch, src, chan, value).</p>
-<p class="p6"><b>src</b>: If a number is given, the responder will fire only for messages coming in from this port. The number may be the system UID (obtained from MIDIClient.sources[index].uid) or the index itself. If nil, the responder will match any port.</p>
-<p class="p6"><b>chan</b>: The MIDI channel(s) to match.</p>
-<p class="p6"><b>num</b>: The control or note number(s) to match.</p>
-<p class="p6"><b>value</b>: The value(s) to match.</p>
-<p class="p6"><b>veloc</b>: The velocities to match.</p>
-<p class="p6"><b>install</b>: If true, install the responder automatically so it is active and ready to respond.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>If false, then it will be inactive.</p>
-<p class="p6"><b>swallowEvent</b>: if true, then if the midi event is matched, cease testing any further responders.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>eg. if a CCResponder matches port, chan and num, and swallowEvent is set to true,</p>
-<p class="p6"><span class="Apple-tab-span">	</span>then no further CCResponders will be offered the chance to respond to the event.<span class="Apple-converted-space">  </span>The event is<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>"swallowed".</p>
-<p class="p6"><span class="Apple-tab-span">	</span>by default this is false.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Any of the matching values may be one of the following:</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Nil</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Match anything.<span class="Apple-converted-space">  </span>eg. If chan is nil, then respond to any midi channel.</p>
-<p class="p3"><b>Integer</b>:<span class="Apple-tab-span">	</span>Match only this specific number.</p>
-<p class="p3"><b>Array</b>:<span class="Apple-tab-span">	</span>Match any item in the array. Any kind of Collection will work here.</p>
-<p class="p3"><b>Function</b>:<span class="Apple-tab-span">	</span>Evaluate the function with the incoming value as the argument. The function should return true or false.</p>
-<p class="p4"><br></p>
-<p class="p3">For instance, the following example would respond to note on messages from any port, channels 2 and 7 only, even numbered note numbers only, and only velocity values greater than 50.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s1">NoteOnResponder</span>({ <span class="s1">|src, chan, num, vel|</span> [src, chan, num, vel].postln },<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">nil</span><span class="s2">, </span>// any port</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>[2, 7], </span>// midi channels 2 or 7 only</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>(0, 2..126),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this is an array of even numbers.<span class="Apple-converted-space">  </span>could also be specified as { |num| num.even } or _.even</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>{ </span><span class="s1">|vel|</span><span class="s2"> vel > 50 }); </span>// velocities greater than 50</p>
-<p class="p4"><br></p>
-<p class="p3">MIDIResponders automatically initialize the MIDIClient with 1 standard device.<span class="Apple-converted-space">  </span>This means the first time you install any MIDIResponder, it will make sure that MIDI has been initialized.<span class="Apple-converted-space">  </span>If you have more devices or a specific setup, simply initialize the MIDIClient yourself before using any MIDIResponders.</p>
-<p class="p4"><br></p>
-<p class="p10"><b>learn</b></p>
-<p class="p4"><br></p>
-<p class="p3">CCResponder, NoteOnResponder, NoteOffResponder, BendResponder and TouchResponder can be set to learn mode and will wait for the next event.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Removal:</b></p>
-<p class="p4"><br></p>
-<p class="p3">Just call .remove on the responder.</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s2">c = </span><span class="s1">CCResponder</span><span class="s2">({ ... }, num: 1);<span class="Apple-tab-span">	</span></span>// respond to any modwheel</p>
-<p class="p11"><br></p>
-<p class="p9"><span class="s2">c.remove;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// stop this responder</p>
-<p class="p11"><br></p>
-<p class="p3">Or remove all of a specific class:</p>
-<p class="p11"><br></p>
-<p class="p12">CCResponder<span class="s2">.removeAll</span></p>
-<p class="p12">NoteOnResponder<span class="s2">.removeAll</span></p>
-<p class="p12">NoteOffResponder<span class="s2">.removeAll</span></p>
-<p class="p12">BendResponder<span class="s2">.removeAll</span></p>
-<p class="p12">TouchResponder<span class="s2">.removeAll</span></p>
-<p class="p11"><br></p>
-<p class="p3">or remove all midi responders in all classes:</p>
-<p class="p11"><br></p>
-<p class="p12">MIDIResponder<span class="s2">.removeAll</span></p>
-<p class="p11"><br></p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-</body>
-</html>
diff --git a/Help/Control/NetAddr.html b/Help/Control/NetAddr.html
deleted file mode 100644
index 05fb367..0000000
--- a/Help/Control/NetAddr.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 12.0px Helvetica}
-span.s4 {color: #000000}
-span.s5 {color: #0000bf}
-span.s6 {color: #606060}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NetAddr</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>network address</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(hostname, port)</b><span class="Apple-tab-span">	</span>create new net address.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Hostname is a string, either an ip number (e.g. <i>"192.168.34.56"</i>) or a hostname such as <i>"otherHost.local"</i>.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Port is a port number, like <i>57110</i>.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Note: to send messages internally, loopback ip is used: <i>"127.0.0.1"</i></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*fromIP(ip, port)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">create new net address using an integer ip number.</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*langPort</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Get the port sclang is currently listening on (may change after a recompile).</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*localAddr</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Get a NetAddr which corresponds to localhost and the port sclang is listening on.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>sendMsg(args...)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>send a message without timestamp to the addr.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>sendBundle(timestamp, args...)</b><span class="Apple-tab-span">	</span>send a bundle with timestamp to the addr.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>sendRaw(rawArray)</b><span class="Apple-tab-span">	</span>send a raw message without timestamp to the addr.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>connect(disconnectHandler)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>open TCP connection. <b>disconnectHandler</b> is called when</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the connection is closed (either by the client or by the server)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>disconnect</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>close TCP connection</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>ip </b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns the ip number (as string)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>example:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>n = NetAddr("localhost", 57110);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.ip;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*disconnectAll<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>close all TCP connections</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*broadcastFlag<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>check broadcast flag</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*broadcastFlag_( flag )<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the broadcast flag (whether or not broadcast messages can be sent)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*useDoubles_( flag )<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">n = </span><span class="s5">NetAddr</span><span class="s4">(</span><span class="s6">"127.0.0.1"</span><span class="s4">, 57120); </span>// 57120 is sclang default port</p>
-<p class="p7">r = <span class="s5">OSCresponder</span>(n, <span class="s7">'/good/news'</span>, { <span class="s5">arg</span> time, resp, msg; [time, msg].postln }).add;</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s4">n.sendMsg(</span>"/good/news"<span class="s4">, </span>"you"<span class="s4">, </span>"not you"<span class="s4">);</span></p>
-<p class="p7">n.sendMsg(<span class="s6">"/good/news"</span>, 1, 1.3, 77);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">n.sendBundle(0.2, [<span class="s6">"/good/news"</span>, 1, 1.3, 77]);</p>
-<p class="p6"><br></p>
-<p class="p7">r.remove;</p>
-<p class="p7">n.disconnect;</p>
-<p class="p6"><br></p>
-<p class="p5">// note that different NetAddr objects with the same port and ip are independent.</p>
-<p class="p6"><br></p>
-<p class="p7">r = <span class="s5">OSCresponder</span>(<span class="s5">nil</span>, <span class="s7">'/x'</span>, { <span class="s6">"message arrived"</span>.postln }).add;</p>
-<p class="p6"><br></p>
-<p class="p7">n = <span class="s5">NetAddr</span>(<span class="s6">"127.0.0.1"</span>, 57120);</p>
-<p class="p7">n.sendMsg(<span class="s6">"/x"</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">u = <span class="s5">NetAddr</span>(<span class="s6">"127.0.0.1"</span>, 57120);</p>
-<p class="p7">u.sendMsg(<span class="s6">"/x"</span>);</p>
-<p class="p6"><br></p>
-<p class="p7">n.disconnect</p>
-<p class="p6"><br></p>
-<p class="p7">u.sendMsg(<span class="s6">"/x"</span>);</p>
-<p class="p6"><br></p>
-<p class="p7">r.remove;</p>
-<p class="p7">u.disconnect;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Control/NodeWatcher.html b/Help/Control/NodeWatcher.html
deleted file mode 100644
index d19ec7a..0000000
--- a/Help/Control/NodeWatcher.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 13.0px Helvetica}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #0019b7}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NodeWatcher<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>notify sc-lang side node objects of their server sided state</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1">Node instances (Synths and Groups) can be registered with the NodeWatcher. <span class="Apple-converted-space"> </span></p>
-<p class="p1">It watches for server node status messages:</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n_go<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n_end</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n_off</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n_on</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p1">and sets the isPlaying and isRunning variables on the Node instance accordingly.<span class="Apple-converted-space">  </span>A Node that ends is unregistered at that time.</p>
-<p class="p3"><br></p>
-<p class="p1">In some cases this can be an invaluable service.<span class="Apple-converted-space">  </span>The use of an independant object to maintain the state keeps the implementation of the Node classes simple.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Note that server notification should be on. (this is default. see: aServer.notify)</p>
-<p class="p4"><br></p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span></span><b>the most common use:<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>NodeWatcher.register(aNode);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new(server)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a new instance listening to the server's address</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*newFrom(server)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> create a new instance listening to the server's address</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> if there is one present already return that one</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*register(aNode, assumePlaying)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>aNode can be a Group or a Synth.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the NodeWatcher is created internally</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>assumePlaying: </b>if true, the node's <b>isPlaying</b> field is set to true</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*unregister(aNode)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove the node from the list of nodes.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this happens also when a node is freed.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><b>start</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add the OSCresponderNode to listen to the address</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>stop</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove the OSCresponderNode to stop listen to the address<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p8">// example:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>b = s.makeBundle(<span class="s4">false</span>, {</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = </span><span class="s4">Group</span><span class="s5">.new(s); </span>//create a node object</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">NodeWatcher</span><span class="s5">.register(a); </span>// register before creating on the server</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.isPlaying;</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span>s.listSendBundle(nil, b); </span>//start the node on the server</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.isPlaying;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.isRunning;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.run(<span class="s4">false</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.isRunning;</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span>s.freeAll; </span>//free all nodes</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.isPlaying;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.isRunning;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p9"><b>DebugNodeWatcher</b></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>for debugging, it can be useful to see every node start and end</p>
-<p class="p7"><span class="Apple-tab-span">	</span>it doesn't require registration, reacts to each message.</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p8">// example:</p>
-<p class="p10"><span class="s5"><span class="Apple-tab-span">	</span>n = </span>DebugNodeWatcher<span class="s5">(s);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>n.start;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s4">Group</span>(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.run(<span class="s4">false</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>n.stop;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Control/NoteOnResponder.html b/Help/Control/NoteOnResponder.html
deleted file mode 100644
index ff0086f..0000000
--- a/Help/Control/NoteOnResponder.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001fe8}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>NoteOnResponder</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">see also <a href="SC://MIDIResponder"><span class="s2">MIDIResponder</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>NoteOnResponder(function, src, chan, num, value, install = true,swallowEvent = false)</b></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>c = </span>NoteOnResponder<span class="s1">({ </span>|src,chan,note,vel|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[src,chan,note,vel].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s1">, </span>// any source</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s1">, </span>// any channel</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s1">, </span>// any note</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s1"> </span>// any vel</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">)</p>
-<p class="p9"><br></p>
-<p class="p6">c.remove</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>c = </span>NoteOnResponder<span class="s1">({ </span>|src,chan,num,value|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[src,chan,num,value].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s1">, </span>// any source</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s1">, </span>// any channel</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(50..60), </span>// within this note range</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">nil</span><span class="s1"> </span>// any vel</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">)</p>
-<p class="p9"><br></p>
-<p class="p6">c.remove</p>
-<p class="p2"><br></p>
-<p class="p4"><b>learn</b></p>
-<p class="p2"><br></p>
-<p class="p4">wait for the next midi note.<span class="Apple-converted-space">  </span>reset self to match to that src and chan</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>c = </span>NoteOnResponder<span class="s1">({ </span>|src,chan,num,value|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[src,chan,num,value].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>c.learn; </span>// wait for the first note</p>
-<p class="p6">)</p>
-<p class="p9"><br></p>
-<p class="p7">NoteOnResponder<span class="s1">.removeAll</span></p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Control/NotificationCenter.html b/Help/Control/NotificationCenter.html
deleted file mode 100644
index 3bdb1f8..0000000
--- a/Help/Control/NotificationCenter.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.47">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001fb3}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-span.s1 {color: #000000}
-span.s2 {color: #42691d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>NotificationCenter</b></p>
-<p class="p2"><br></p>
-<p class="p3">One common OOP pattern is Model-View-Controller where one object (the controller) is a dependant of the model.<span class="Apple-converted-space">  </span>Every time the model changes it notifies all of its dependants.<span class="Apple-converted-space">  </span>In this case the model has a dictionary of dependants and iterates through those.</p>
-<p class="p2"><br></p>
-<p class="p3">Another common pattern is NotificationCenter wherein an object emits a notification and clients can register functions that will be executed when that notification happens.</p>
-<p class="p2"><br></p>
-<p class="p3">A Server emits a \newAllocators notification when it creates new node and bus allocators which it does when it quits or boots.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>NotificationCenter<span class="s1">.notify(</span>Server.default<span class="s1">,</span><span class="s2">\newAllocators</span><span class="s1">);</span></p>
-<p class="p2"><br></p>
-<p class="p3">You can listen for this:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>NotificationCenter<span class="s1">.register(</span>Server.default<span class="s1">,</span><span class="s2">\newAllocators</span><span class="s1">,</span><span class="s2">yourself</span><span class="s1">, {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// throw away all your node variables</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// or stop the music</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><br></p>
-<p class="p3">The Buffer class register a function to clear its info cache whenever a server restarts.<span class="Apple-converted-space">  </span>The server is emiting changed messages quite often (every 0.4 secs for the status updates), and the Buffer class is only interested in boot/quit events, so this is a more lightweight system for this purpose.</p>
-<p class="p6"><br></p>
-<p class="p7"><br></p>
-<p class="p8"><b>*notify(object,message,args)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span>The object emits a message and may also pass extra args</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b>*register(object,message,listener,action)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span>An interested client can register the action function for the object/message notification.</p>
-<p class="p8"><span class="Apple-tab-span">	</span>A listener may only register one action per object/message notification.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b>*unregister(object,message,listener)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span>Remove the registrations</p>
-<p class="p7"><br></p>
-<p class="p8"><b>*registerOneShot(object,message,listener,action)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span>After the notification has been emited and handled, automatically unregister.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b>*registrationExists(object,message,listener)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span>Simply confirms if a registration is already in place</p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Control/OSCBundle.html b/Help/Control/OSCBundle.html
deleted file mode 100644
index e68980e..0000000
--- a/Help/Control/OSCBundle.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #942b17}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #942b17; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #001fb3}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>OSCBundle<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>network</b><span class="s2"> </span><b>bundle object</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p2"><br></p>
-<p class="p1">a bundle object that allows to add preparation messages for async processes.</p>
-<p class="p1">if this feature is not needed, a list object can be used instead.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>add(msg)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add an osc message to the bundle</p>
-<p class="p2"><br></p>
-<p class="p1"><b>addAll(array)<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add an array of osc messages to the bundle</p>
-<p class="p2"><br></p>
-<p class="p1"><b>addPrepare(msg)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add a preparation osc message, which is sent</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>before the bundle is sent.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>send(server, delta)</b><span class="Apple-tab-span">	</span>send the bundle to a server.<span class="Apple-converted-space">  </span>If preparation messages are given,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>they are sent, the process waits for their reception abd then sends the</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bundle.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>schedSend(server, clock, quant)</b><span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>like send, but the sending is synced to a given clock (TempoClock) to the next beat.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>quant can be a pair of values: [quant, offset]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">// example</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// create a new, empty instance</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s4">OSCBundle</span>.new;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// a synthdef that needs to be sent to the server, an operation that is asynchronous,</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// i.e. we have to wait until it is finished.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">SynthDef</span>(<span class="s5">"test"</span>, { <span class="s4">OffsetOut</span>.ar(0, <span class="s4">BPF</span>.ar(<span class="s4">Impulse</span>.ar(4) * 10, <span class="s4">Rand</span>(9000, 1000), 0.1)) });</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// this is why addPrepare is used.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.addPrepare([<span class="s5">"/d_recv"</span>, x.asBytes]);</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// add is used with synchronous operations, like starting synths.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.add([<span class="s5">"/s_new"</span>, <span class="s5">"test"</span>, -1]);</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// the bundle has now the synchronous separated from the asynchronous bundles:</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.messages;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.preparationMessages;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// this can be simply sent - the bundle takes care of the server client communication</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// like waiting for the synthdef to be loaded. the synth is started when the preparation</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// is finished.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span>s.boot; </span>// boot the server</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.send(s);</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span>s.freeAll; </span>// free all nodes on the server</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// scheduled sending: the synths are started on the next beat.</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.schedSend(s, <span class="s4">TempoClock</span>.default, 1);<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.schedSend(s, <span class="s4">TempoClock</span>.default, 1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.schedSend(s, <span class="s4">TempoClock</span>.default, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span>s.freeAll; </span>// free all nodes on the server</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// the bundle can contain several preparation messages and messages at a time.</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// the proparationMessages are sent first and only when they are all completed,</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// the other bundles are sent.</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// the bundle can also be reused, if there is no specific allocated buffers/node ids.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Control/OSC_communication.html b/Help/Control/OSC_communication.html
deleted file mode 100644
index 5b1dd50..0000000
--- a/Help/Control/OSC_communication.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #842620}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #842620; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #842620}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1229a9}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #1229a9}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #0c16f9}
-span.s5 {font: 9.0px Monaco; color: #606060}
-span.s6 {color: #842620}
-span.s7 {color: #4d6b29}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>OSC_communication</b></p>
-<p class="p2"><br></p>
-<p class="p3">OSC communication between programs is often done to send messages from one application to another, possibly with the applications running on different computers. In SuperCollider this communication is done by creating a <a href="NetAddr.html"><span class="s1">NetAddr</span></a> of the target application and creating an <a href="OSCresponderNode.html"><span class="s1">OSCresponderNode</span></a> to listen to another application. The underlying protocol of OSC is either UDP or TCP.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Sending OSC to another application</b></p>
-<p class="p3">To establish communication to another application, you need to know on which port that application is listening. For example if an application is listening on port 7771, we can create a NetAddr and send it a message:</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s1">NetAddr</span><span class="s2">.new(</span><span class="s3">"127.0.0.1"</span><span class="s2">, 7771); </span>// create the NetAddr</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b.sendMsg(</span><span class="s3">"/hello"</span><span class="s2">, </span><span class="s3">"there"</span><span class="s2">);</span>// send the application the message "hello" with the parameter "there"</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Receiving OSC from another application</b></p>
-<p class="p2"><br></p>
-<p class="p3">To listen to another application, that application needs to send a message to the port SuperCollider is listening on, <b>normally this is 57120, but it can change.</b> The current port can be retrieved with</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">NetAddr</span><span class="s2">.langPort; </span>// retrieve the current port SC is listening to</p>
-<p class="p2"><br></p>
-<p class="p3">Or you can retrieve both the IP and the port with:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>NetAddr</span><span class="s2">.localAddr; </span>// retrieve the current IP and port</p>
-<p class="p2"><br></p>
-<p class="p3">To listen to incoming messages, an <a href="OSCresponderNode.html"><span class="s1">OSCresponderNode</span></a> needs to be created in SuperCollider. If the sending application <b>has a fixed port it sends message from</b>, you can set the OSCresponderNode to listen only to messages coming from that IP and port:</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>n = </span><span class="s1">NetAddr</span><span class="s2">.new(</span><span class="s3">"127.0.0.1"</span><span class="s2">, 7771); </span>// create the NetAddr</p>
-<p class="p6"><span class="Apple-tab-span">	</span>// create the OSCresponderNode</p>
-<p class="p8"><span class="Apple-tab-span">	</span>o = <span class="s1">OSCresponderNode</span>.new(n, <span class="s3">"/goodbye"</span>, { <span class="s1">arg</span> time, resp, msg; [time,resp].postln; } ).add;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>o.remove; </span>// remove the OSCresponderNode when you are done.</p>
-<p class="p2"><br></p>
-<p class="p3">Why <a href="OSCresponderNode.html"><span class="s4">OSCresponderNode</span></a> rather than <a href="OSCresponder.html"><span class="s4">OSCresponder</span></a>? If you create two OSCresponders with the same message name -- e.g. <span class="s5">"/goodbye"</span> above -- the second OSCresponder will overwrite the first. You can have only one OSCresponder per message name at the same time. OSCresponderNodes do not have that restriction -- many OSCresponderNodes with the same name can coexist. (This also means you have to keep track of your OSCresponderNodes to remove them when they are no longer needed.) See also <a href="OSCpathResponder.html"><span class="s4">OSCpathResponder</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Receiving from an application that is sending from a variable port</b></p>
-<p class="p2"><br></p>
-<p class="p3">Some applications (notably Pd and Max) do not send messages from a fixed port, but instead use a different port each time they send out a message. In that case the OSCresponderNode needs to be set up, so that it listens to messages coming from anywhere:</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>o = <span class="s1">OSCresponderNode</span>.new(<span class="s1">nil</span>, <span class="s3">"/goodbye"</span>, { <span class="s1">arg</span> time, resp, msg; [time,resp].postln; } ).add; <span class="s6">// create the OSCresponderNode</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>o.remove; </span>// remove the OSCresponderNode when you are done.</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p4"><b>Testing incoming traffic</b></p>
-<p class="p3">All incoming OSC messages call the message recvOSCmessage, or recvOSCbundle in <a href="../Core/Kernel/Main.html"><span class="s1">Main</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p3">To see the incoming traffic, one may set a function called <b>recvOSCfunc</b> in Main:</p>
-<p class="p10"><br></p>
-<p class="p11">// post all incoming traffic except the server status messages</p>
-<p class="p12">(</p>
-<p class="p13">thisProcess<span class="s2">.recvOSCfunc = { </span>|time, addr, msg|<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>if(msg[0] != <span class="s7">'/status.reply'</span>) {</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"time: % sender: %\nmessage: %\n"<span class="s2">.postf(time, addr, msg);<span class="Apple-converted-space"> </span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>} <span class="Apple-converted-space"> </span></p>
-<p class="p12">}</p>
-<p class="p12">);</p>
-<p class="p5"><br></p>
-<p class="p11">// stop posting.</p>
-<p class="p12"><span class="s1">thisProcess</span>.recvOSCfunc = <span class="s1">nil</span>;</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Control/OSCpathResponder.html b/Help/Control/OSCpathResponder.html
deleted file mode 100644
index 0294d07..0000000
--- a/Help/Control/OSCpathResponder.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; color: #0029b6; min-height: 17.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 15.0px Helvetica}
-span.s2 {color: #002bf8}
-span.s3 {color: #0024f8}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001bb9}
-span.s6 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>OSCpathResponder<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>client side responder</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: OSCresponder</b></p>
-<p class="p4"><br></p>
-<p class="p3">Register a function to be called upon receiving a<span class="Apple-converted-space">  </span>command with a specific path.</p>
-<p class="p4"><br></p>
-<p class="p3">Other applications sending messages to SuperCollider should distinguish between sending messages to the server or the language. Server messages are documented in the <a href="../ServerArchitecture/Server-Command-Reference.html"><span class="s2">Server-Command-Reference</span></a> and should be sent to the server's port - <b>s.addr.port</b> - which is 57110 by default. Messages sent to the server will not be processed by any OSCresponder in the language.</p>
-<p class="p4"><br></p>
-<p class="p3">Messages from external clients that should be processed by OSCresponders must be sent to the language port, <b>57120</b> by default. Use <b>NetAddr.langPort</b> to confirm which port the SuperCollider language is listening on.</p>
-<p class="p4"><br></p>
-<p class="p3">See <a href="OSC_communication.html"><span class="s3">OSC_communication</span></a> for more details.</p>
-<p class="p4"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*new(addr, cmdName, action);</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>addr</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an instance of NetAddr, usually obtained from your server:<span class="Apple-converted-space">  </span>server-addr</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an address of nil will respond to messages from anywhere.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>cmdName</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a command path, such as ['\c_set', bus index]</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a function that will be evaluated when a cmd of that name is received from addr.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>args: time, theResponder, message</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>note that OSCresponderNode evaluates its function in the system process.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in order to access the application process (e.g. for GUI access ) use <b>{ ... }.defer</b>;</p>
-<p class="p4"><br></p>
-<p class="p3"><b><span class="s4">Command paths</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>OSC commands sometimes include additional parameters to specify the right responder.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>For example<span class="Apple-converted-space">  </span><b>/tr </b>commands, which are generated<span class="Apple-converted-space">  </span>on the server by the <b>SendTrig </b>Ugen create</p>
-<p class="p3"><span class="Apple-tab-span">	</span>an OSC packet consisting of:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ /tr,<span class="Apple-converted-space">  </span>nodeID, triggerID, value]</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>This array actually specifies the source of value : <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>[</b> <b>/tr,</b> <b>nodeID,</b> <b>triggerID].</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>We will refer to that array as a <b>command path.</b></p>
-<p class="p4"><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>To create an OSCpathResponder for a specific trigger, the <b>cmdName </b>parameter is simply replaced by<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>the complete command path. <span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><b><span class="s4">Path defaults</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Any element of the command path array can be set to nil to create a responder that will<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>handle multiple command paths.</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>For example, setting the commandpath = [<b>'/tr', nil, triggerID</b>]<span class="Apple-converted-space">  </span>makes a responder that<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>responds to /tr messages from any Synth but with a specific triggerID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>/tr messages from one Synth but with any triggerID.</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//Here is an example:</p>
-<p class="p5"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> s, commandpath, response, aSynth, nodeID, triggerID;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s = <span class="s5">Server</span>.local;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>triggerID = 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>aSynth = { <span class="s5">arg</span> freq = 1, triggerID = 1; <span class="s5">SendTrig</span>.kr(<span class="s5">SinOsc</span>.kr(freq), triggerID, 666); }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>nodeID = aSynth.nodeID;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>commandpath = [<span class="s6">'/tr'</span>, nodeID, triggerID];</p>
-<p class="p7"><span class="Apple-tab-span">	</span>response = { <span class="s5">arg</span> time, responder, message; message.postln };</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>o = <span class="s5">OSCpathResponder</span>(s.addr, commandpath, response);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>o.add;</p>
-<p class="p5"><br></p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p6">// switch on and off:</p>
-<p class="p7">o.remove;</p>
-<p class="p7">o.add;</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Control/OSCresponder.html b/Help/Control/OSCresponder.html
deleted file mode 100644
index c45d745..0000000
--- a/Help/Control/OSCresponder.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #b2140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002bf8}
-span.s3 {color: #0024f8}
-span.s4 {color: #000000}
-span.s5 {color: #0021be}
-span.s6 {color: #0031f8}
-span.s7 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>OSCresponder<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>client side network responder</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Register a function to be called upon receiving a specific command from a specific OSC address.</p>
-<p class="p2"><br></p>
-<p class="p3">Other applications sending messages to SuperCollider should distinguish between sending messages to the server or the language. Server messages are documented in the <a href="../ServerArchitecture/Server-Command-Reference.html"><span class="s2">Server-Command-Reference</span></a> and should be sent to the server's port - <b>s.addr.port</b> - which is 57110 by default. Messages sent to the server will not be processed by any OSCresponder in the language.</p>
-<p class="p2"><br></p>
-<p class="p3">Messages from external clients that should be processed by OSCresponders must be sent to the language port, <b>57120</b> by default. Use <b>NetAddr.langPort</b> to confirm which port the SuperCollider language is listening on.</p>
-<p class="p2"><br></p>
-<p class="p3">See <a href="OSC_communication.html"><span class="s3">OSC_communication</span></a> for more details.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Important:</b> It is highly recommended to use <a href="OSCresponderNode.html"><span class="s2">OSCresponderNode</span></a> or <a href="OSCpathResponder.html"><span class="s2">OSCpathResponder</span></a> instead of OSCresponder directly. OSCresponders can overwrite each other, but OSCresponderNodes with the same address and command name can coexist peacefully.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4"><b><i>Examples: see </i></b><a href="OSCresponderNode.html"><b><i>OSCresponderNode</i></b></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*new(addr, cmdName, action);</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>addr</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the address the responder <b><i>receives from</i></b> (an instance of NetAddr, e.g. Server.default.addr)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an address of <b>nil</b> will respond to messages from anywhere.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an address with a port of <b>nil</b> will respond to messages from any port from that specific IP.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>cmdName</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an OSC command eg. '/done'</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>action</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a function that will be evaluated when a cmd of that name is received from addr.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arguments</b>: <b>time, theResponder, message, addr</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>note that OSCresponder evaluates its function in the system process.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in order to access the application process (e.g. for GUI access ) use <b>{ ... }.defer</b>;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>within the action function, e.g., { <span class="s5">|time, resp, msg|</span> { gui.value_(msg[3]) }.defer }</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Note:</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>A single OSCresponder may be set up for each addr and cmdName combination. <span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Subsequent registrations will overwrite previous ones.<span class="Apple-converted-space">  </span>See <a href="OSCresponderNode.html"><span class="s6">OSCresponderNode</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Whenever an OSC message is sent to the SuperCollider application (the language, not the server), either <span class="Apple-tab-span">	</span>Main-recvOSCmessage or Main-recvOSCbundle is called.<span class="Apple-converted-space">  </span>There, the messages are forwarded to the <span class="Apple-tab-span">	</span>OSCresponder class using the OSCresponder-respond class method. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>add</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add this responder instance to the list of active responders. <span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The OSCresponder is not active until this is done.</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>remove</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove and deactivate the OSCresponder</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>removeWhenDone</b></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>remove and deactivate the OSCresponder when action is done.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>//syntax:<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">OSCresponder</span>(addr,cmdName,action).add.removeWhenDone;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*add(oscResponder)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> add the responder instance<span class="Apple-converted-space"> </span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*remove(oscResponder)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove the responder instance<span class="Apple-converted-space"> </span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*removeAddr(addr)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove all OSCresponders for that addr.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Control/OSCresponderNode.html b/Help/Control/OSCresponderNode.html
deleted file mode 100644
index 9bd37e6..0000000
--- a/Help/Control/OSCresponderNode.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0043f0}
-span.s3 {color: #002bf8}
-span.s4 {color: #0024f8}
-span.s5 {color: #000000}
-span.s6 {color: #001bb9}
-span.s7 {color: #606060}
-span.s8 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>OSCresponderNode<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>client side network responder</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">Register a function to be called upon receiving a specific command from a specific OSC address.</p>
-<p class="p4">same interface like <a href="OSCresponder.html"><span class="s2">OSCresponder</span></a><b>, </b>but allows<b><i> multiple responders to the same command</i></b>.</p>
-<p class="p3"><br></p>
-<p class="p4">Note that OSCresponderNode evaluates its function in the system process.</p>
-<p class="p4">In order to access the application process (e.g. for GUI access ) use <b>{ ... }.defer</b>;</p>
-<p class="p3"><br></p>
-<p class="p4">Other applications sending messages to SuperCollider should distinguish between sending messages to the server or the language. Server messages are documented in the <a href="../ServerArchitecture/Server-Command-Reference.html"><span class="s3">Server-Command-Reference</span></a> and should be sent to the server's port - <b>s.addr.port</b> - which is 57110 by default. Messages sent to the server will not be processed by any OSCresponder in the language.</p>
-<p class="p3"><br></p>
-<p class="p4">Messages from external clients that should be processed by OSCresponders must be sent to the language port, <b>57120</b> by default. Use <b>NetAddr.langPort</b> to confirm which port the SuperCollider language is listening on.</p>
-<p class="p3"><br></p>
-<p class="p4">See <a href="OSC_communication.html"><span class="s4">OSC_communication</span></a> for more details.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Setting up OSCresponderNode for listening to a remote application</b></p>
-<p class="p3"><br></p>
-<p class="p5">// example: two SuperCollider apps communicating</p>
-<p class="p6"><br></p>
-<p class="p5">// application 1:</p>
-<p class="p5"><span class="s5">n = </span><span class="s6">NetAddr</span><span class="s5">(</span><span class="s7">"127.0.0.1"</span><span class="s5">, 57120); </span>// the url should be the one of computer of app 2 (or nil)</p>
-<p class="p6"><br></p>
-<p class="p7">o = <span class="s6">OSCresponderNode</span>(n, <span class="s8">'/chat'</span>, { <span class="s6">|t, r, msg|</span> (<span class="s7">"time:"</span> + t).postln; msg[1].postln }).add;</p>
-<p class="p6"><br></p>
-<p class="p5">// application 2:</p>
-<p class="p5"><span class="s5">m = </span><span class="s6">NetAddr</span><span class="s5">(</span><span class="s7">"127.0.0.1"</span><span class="s5">, 57120); </span>// the url should be the one of computer of app 1</p>
-<p class="p8"><span class="s5">m.sendMsg(</span>"/chat"<span class="s5">, </span>"Hello App 1"<span class="s5">);</span></p>
-<p class="p6"><br></p>
-<p class="p5">// sending bundles (including timestamps)</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s5">m.sendBundle(2.0, [</span>"/chat"<span class="s5">, </span>"Hello App 1"<span class="s5">], [</span>"/chat"<span class="s5">, </span>"Hallo Wurld"<span class="s5">]);</span></p>
-<p class="p8"><span class="s5">m.sendBundle(0.0, [</span>"/chat"<span class="s5">, </span>"Hello App 1"<span class="s5">], [</span>"/chat"<span class="s5">, </span>"Hallo Wurld"<span class="s5">]);</span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// end application 2:</p>
-<p class="p7">m.disconnect;</p>
-<p class="p6"><br></p>
-<p class="p5">// end application 1:</p>
-<p class="p7">n.disconnect; o.remove;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Listening to data from _any_ client</b></p>
-<p class="p3"><br></p>
-<p class="p5">// same as above, but we set the address to nil so we can receive from anywhere</p>
-<p class="p5">// no need for a NetAddr since we are just listening (and not sending)</p>
-<p class="p3"><br></p>
-<p class="p7">o = <span class="s6">OSCresponderNode</span>(nil, <span class="s8">'/test'</span>, { <span class="s6">|t, r, msg|</span> msg.postln }).add;</p>
-<p class="p7">o.remove;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Listening to data from _any_ client, but from a specific host</b></p>
-<p class="p3"><br></p>
-<p class="p5">// same as above, but we use a NetAddr with a port of nil, so we can receive from a specific host, but from any port</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5">n = </span><span class="s6">NetAddr</span><span class="s5">(</span><span class="s7">"127.0.0.1"</span><span class="s5">, nil); </span>// the url should be the one of computer of app 2</p>
-<p class="p7">o = <span class="s6">OSCresponderNode</span>(n, <span class="s8">'/test'</span>, { <span class="s6">|t, r, msg|</span> msg.postln }).add;</p>
-<p class="p7">o.remove;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Listening to data from the server</b></p>
-<p class="p3"><br></p>
-<p class="p5">// example from SendTrig</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">s = <span class="s6">Server</span>.local;</p>
-<p class="p7">s.boot;</p>
-<p class="p7">s.notify;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p8"><span class="s6">SynthDef</span><span class="s5">(</span>"help-SendTrig"<span class="s5">,{</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s6">SendTrig</span>.kr(<span class="s6">Dust</span>.kr(1.0), 0, 0.9);</p>
-<p class="p7">}).send(s);</p>
-<p class="p6"><br></p>
-<p class="p5">// register to receive this message</p>
-<p class="p7">a = <span class="s6">OSCresponderNode</span>(s.addr, <span class="s8">'/tr'</span>, { <span class="s6">arg</span> time, responder, msg;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[time, responder, msg].postln;</p>
-<p class="p7">}).add;</p>
-<p class="p7">b = <span class="s6">OSCresponderNode</span>(s.addr, <span class="s8">'/tr'</span>, { <span class="s6">arg</span> time, responder, msg;</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span></span>"this is another call"<span class="s5">.postln;</span></p>
-<p class="p7">}).add;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s5">x = </span><span class="s6">Synth</span><span class="s5">.new(</span>"help-SendTrig"<span class="s5">);</span></p>
-<p class="p7">a.remove;</p>
-<p class="p7">b.remove;</p>
-<p class="p7">x.free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4"><b>Watching for something specific</b></p>
-<p class="p6"><br></p>
-<p class="p5">// end of group message</p>
-<p class="p6"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s6">OSCresponderNode</span>(s.addr,<span class="s8">'/n_end'</span>,{ <span class="s6">arg</span> time,responder,msg;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[time, responder, msg].postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>if(msg[1] == g.nodeID,{</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"g is dead !"<span class="s5">.postln;</span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// g = Group.new;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p7">}).add;</p>
-<p class="p6"><br></p>
-<p class="p7">g = <span class="s6">Group</span>.new;</p>
-<p class="p6"><br></p>
-<p class="p7">g.free;</p>
-<p class="p6"><br></p>
-<p class="p7">a.remove;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4"><b>Watching for errors</b></p>
-<p class="p6"><br></p>
-<p class="p5">// example from ServerErrorGui in crucial lib</p>
-<p class="p6"><br></p>
-<p class="p7">f = <span class="s6">OSCresponderNode</span>(s.addr, <span class="s8">'/fail'</span>, { <span class="s6">arg</span> time, responder, msg;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">var</span> mins,secs;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mins = (time/60).round(1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>secs = (time%60).round(0.1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(secs<10,{ secs = <span class="s7">"0"</span>++secs.asString; },{ secs=secs.asString;});</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put this on a gui</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//errors.label = "% % (%:%)".format(msg[1], msg[2], mins, secs);</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//errors.stringColor = Color.white;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">"% % (%:%)"</span>.format(msg[1], msg[2], mins, secs).postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}.defer</p>
-<p class="p7">});</p>
-<p class="p7">f.add;</p>
-<p class="p6"><br></p>
-<p class="p5">// cause a failure</p>
-<p class="p8"><span class="s6">Synth</span><span class="s5">(</span>"gthhhhppppppp!"<span class="s5">);</span></p>
-<p class="p6"><br></p>
-<p class="p7">f.remove</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Control/Score.html b/Help/Control/Score.html
deleted file mode 100644
index 394bac3..0000000
--- a/Help/Control/Score.html
+++ /dev/null
@@ -1,261 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #326f17}
-span.s4 {color: #a71e12}
-span.s5 {color: #606060}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Score<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>score of timed OSC commands</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Score encapsulates a list of timed OSC commands and provides some methods for using it, as well as support for the creation of binary OSC files for non-realtime synthesis. See <b>Non-Realtime-Synthesis</b> for more details.</p>
-<p class="p2"><br></p>
-<p class="p1">The list should be in the following format, with times in ascending order. Bundles are okay.</p>
-<p class="p2"><br></p>
-<p class="p3">[</p>
-<p class="p3">[beat1, [<span class="s2">OSCcmd1</span>]],</p>
-<p class="p3">[beat2, [<span class="s2">OSCcmd2</span>], [<span class="s2">OSCcmd3</span>]],</p>
-<p class="p3">...</p>
-<p class="p3">[beat_n, [<span class="s2">OSCcmdn</span>]],</p>
-<p class="p3">[beatToEndNRT, [<span class="s3">\c_set</span>, 0, 0]] <span class="s4">// finish</span></p>
-<p class="p3">]</p>
-<p class="p2"><br></p>
-<p class="p1">For NRT synthesis the final event should a dummy event, after which synthesis will cease. It is thus important that this event be timed to allow previous events to complete.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Score</b> scheduling defaults to <b>TempoClock</b>. A setting of <b>TempoClock</b>.default.tempo = 1 (60 beats per minute), may be used to express score events in seconds if desired.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(list)</b> - returns a new Score object with the supplied list. <b>list </b>can be an <b>Array</b>, a <b>List</b>, or similar object.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*newFromFile(path) </b>- as <b>*new</b>, but reads the list in from a text file. <b>path </b>is a string indicating the path of the file. The file must contain a valid SC expression.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*play(list, server) </b>- as <b>*new</b> but immediately plays it. (See also the instance method below.) If no value is supplied for <b>server</b> it will play on the default <b>Server</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*playFromFile(path, server) </b>- as <b>*play</b>, but reads the list from a file.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*write(list, oscFilePath, clock)</b> - a convenience method to create a binary OSC file for NRT synthesis. Does not create an instance. <b>oscFilePath</b> is a string containing the desired path of the OSC file. Use <b>clock</b> as a tempo base. <b>TempoClock</b>.default if <b>clock</b> is nil.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*writeFromFile(path, oscFilePath, clock)</b> - as *write but reads the list from a file. Use <b>clock</b> as a tempo base.<span class="Apple-converted-space">  </span><b>TempoClock</b>.default if <b>clock</b> is nil.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*recordNRT(list, oscFilePath, outputFilePath, inputFilePath, sampleRate, headerFormat, sampleFormat, options)</b> - a convenience method to synthesize <b>list</b> in non-realtime. This method writes an OSC file to <b>oscFilePath</b> (you have to do your own cleanup if desired) and then starts a server app to synthesize it. For details on valid headerFormats and sampleFormats see <b>SoundFile</b>. Use <b>TempoClock</b>.default as a tempo base. Does not return an instance.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>oscFilePath </b>- the path to which the binary OSC file will be written.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>outputFilePath </b>- the path of the resultant soundfile.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>inputFilePath</b> - an optional path for an input soundfile.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>sampleRate</b> - the sample rate at which synthesis will occur.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>headerFormat</b> - the header format of the output file. The default is 'AIFF'.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>sampleFormat </b>- the sample format of the output file. The default is 'int16'.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>options</b> - an instance of <b>ServerOptions</b>. If not supplied the options of the default <b>Server</b> will be used.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p5"><br></p>
-<p class="p1"><b>play(server, clock, quant) </b>- play the list on <b>server</b> use <b>clock</b> as a tempo base and quantize start time to <b>quant</b>. If <b>server</b> is nil, then on the default server. <b>TempoClock</b>.default if <b>clock</b> is nil. now if <b>quant</b> is 0.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>stop </b>- stop playing.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>write(oscFilePath, clock) </b>- create a binary OSC file for NRT synthesis from the list. Use <b>clock</b> as a tempo base. <b>TempoClock</b>.default if <b>clock</b> is nil.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>score </b>- get the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>score_(list) </b>- set the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>add(bundle)</b> - adds bundle to the list.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sort</b> - sort the score time order.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This is recommended to do <b>before</b> <b>recordNRT or write</b> when<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you are not sure about the packet order</p>
-<p class="p2"><br></p>
-<p class="p1"><b>recordNRT(oscFilePath, outputFilePath, inputFilePath, sampleRate, headerFormat, sampleFormat, options)</b> - synthesize the score in non-realtime. For details of the arguments see <b>*recordNRT</b> above.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>saveToFile(path)</b> - save the score list as a text file to <b>path.</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>NRT Examples:</b></p>
-<p class="p7"><br></p>
-<p class="p8">// A sample synthDef</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s5">"helpscore"</span>,{ <span class="s2">arg</span> freq = 440;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">SinOsc</span>.ar(freq, 0, 0.2) * <span class="s2">Line</span>.kr(1, 0, 0.5, doneAction: 2)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p9"><br></p>
-<p class="p8">// write a sample file for testing</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> f, g;</p>
-<p class="p3"><span class="s2">TempoClock</span>.default.tempo = 1;</p>
-<p class="p3">g = [</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[0.1, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1000, 0, 0, <span class="s3">\freq</span>, 440]],<span class="Apple-tab-span">	</span>[0.2, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1001, 0, 0, <span class="s3">\freq</span>, 660]],</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[0.3, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1002, 0, 0, <span class="s3">\freq</span>, 220]],</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[1, [<span class="s3">\c_set</span>, 0, 0]] <span class="s4">// finish</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>];</p>
-<p class="p10"><span class="s6">f = </span><span class="s2">File</span><span class="s6">(</span>"score-test"<span class="s6">,</span>"w"<span class="s6">);</span></p>
-<p class="p3">f.write(g.asCompileString);</p>
-<p class="p3">f.close;</p>
-<p class="p3">)</p>
-<p class="p11"><br></p>
-<p class="p8">//convert it to a binary OSC file for use with NRT</p>
-<p class="p10"><span class="s2">Score</span><span class="s6">.writeFromFile(</span>"score-test"<span class="s6">, </span>"test.osc"<span class="s6">);</span></p>
-<p class="p11"><br></p>
-<p class="p1">From the command line, the file can then be rendered from within the build directory:</p>
-<p class="p11"><br></p>
-<p class="p3">./scsynth -N test.osc _ test.aif 44100 AIFF int16 -o 1<span class="Apple-converted-space"> </span></p>
-<p class="p11"><br></p>
-<p class="p1">Score also provides methods to do all this more directly:</p>
-<p class="p11"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> f, o;</p>
-<p class="p3">g = [</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[0.1, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1000, 0, 0, <span class="s3">\freq</span>, 440]],<span class="Apple-tab-span">	</span>[0.2, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1001, 0, 0, <span class="s3">\freq</span>, 660],<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1002, 0, 0, <span class="s3">\freq</span>, 880]],</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[0.3, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1003, 0, 0, <span class="s3">\freq</span>, 220]],</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[1, [<span class="s3">\c_set</span>, 0, 0]] <span class="s4">// finish</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>];</p>
-<p class="p3">o = <span class="s2">ServerOptions</span>.new.numOutputBusChannels = 1; <span class="s4">// mono output</span></p>
-<p class="p3"><span class="s2">Score</span>.recordNRT(g, <span class="s5">"help-oscFile"</span>, <span class="s5">"helpNRT.aiff"</span>, options: o); <span class="s4">// synthesize</span></p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Real-time Examples:</b></p>
-<p class="p9"><br></p>
-<p class="p8"><span class="s6">s.boot; </span>// boot the default server</p>
-<p class="p7"><br></p>
-<p class="p8">// A sample synthDef</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s5">"helpscore"</span>,{ <span class="s2">arg</span> freq = 440;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">SinOsc</span>.ar(freq, 0, 0.2) * <span class="s2">Line</span>.kr(1, 0, 0.5, doneAction: 2)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p9"><br></p>
-<p class="p8">// write a sample file for testing</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> f, g;</p>
-<p class="p3"><span class="s2">TempoClock</span>.default.tempo = 1;</p>
-<p class="p3">g = [</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[0.1, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1000, 0, 0, <span class="s3">\freq</span>, 440]],<span class="Apple-tab-span">	</span>[0.2, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1001, 0, 0, <span class="s3">\freq</span>, 660],<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1002, 0, 0, <span class="s3">\freq</span>, 880]],</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[0.3, [<span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1003, 0, 0, <span class="s3">\freq</span>, 220]],</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[1, [<span class="s3">\c_set</span>, 0, 0]] <span class="s4">// finish</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>];</p>
-<p class="p10"><span class="s6">f = </span><span class="s2">File</span><span class="s6">(</span>"score-test"<span class="s6">,</span>"w"<span class="s6">);</span></p>
-<p class="p3">f.write(g.asCompileString);</p>
-<p class="p3">f.close;</p>
-<p class="p3">)</p>
-<p class="p11"><br></p>
-<p class="p3">z = Score.newFromFile(<span class="s5">"score-test"</span>);</p>
-<p class="p11"><br></p>
-<p class="p8">// play it on the default server</p>
-<p class="p3"><span class="s2">z</span>.play;</p>
-<p class="p11"><br></p>
-<p class="p8">// change the list</p>
-<p class="p3">(</p>
-<p class="p3">x = [</p>
-<p class="p3">[0.0, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1000, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1413 ]],</p>
-<p class="p3">[0.1, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1001, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 712 ]],</p>
-<p class="p3">[0.2, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1002, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 417 ]],</p>
-<p class="p3">[0.3, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1003, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1238 ]],</p>
-<p class="p3">[0.4, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1004, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 996 ]],</p>
-<p class="p3">[0.5, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1005, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1320 ]],</p>
-<p class="p3">[0.6, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1006, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 864 ]],</p>
-<p class="p3">[0.7, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1007, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1033 ]],</p>
-<p class="p3">[0.8, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1008, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1693 ]],</p>
-<p class="p3">[0.9, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1009, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 410 ]],</p>
-<p class="p3">[1.0, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1010, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1349 ]],</p>
-<p class="p3">[1.1, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1011, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1449 ]],</p>
-<p class="p3">[1.2, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1012, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1603 ]],</p>
-<p class="p3">[1.3, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1013, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 333 ]],</p>
-<p class="p3">[1.4, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1014, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 678 ]],</p>
-<p class="p3">[1.5, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1015, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 503 ]],</p>
-<p class="p3">[1.6, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1016, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 820 ]],</p>
-<p class="p3">[1.7, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1017, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1599 ]],</p>
-<p class="p3">[1.8, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1018, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 968 ]],</p>
-<p class="p3">[1.9, [ <span class="s3">\s_new</span>, <span class="s3">\helpscore</span>, 1019, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1347 ]],</p>
-<p class="p3">[2.0, [<span class="s3">\c_set</span>, 0, 0]] <span class="s4">// finish</span></p>
-<p class="p3">];</p>
-<p class="p11"><br></p>
-<p class="p3">z.score_(x);</p>
-<p class="p3">)</p>
-<p class="p11"><br></p>
-<p class="p8">// play it</p>
-<p class="p3">z.play;</p>
-<p class="p11"><br></p>
-<p class="p8">// play and stop after one second</p>
-<p class="p3">(</p>
-<p class="p3">z.play;</p>
-<p class="p3"><span class="s2">SystemClock</span>.sched(1.0, {z.stop;});</p>
-<p class="p3">)</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p12"><b>creating Score from a pattern</b></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p13">SynthDescLib<span class="s6">.read;</span></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p8">// new pattern</p>
-<p class="p3">(</p>
-<p class="p3">p = <span class="s2">Pbind</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Prand</span>([0.3, 0.5], <span class="s2">inf</span>),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s2">Prand</span>([200, 300, 500],<span class="s2">inf</span>)</p>
-<p class="p3">);</p>
-<p class="p3">)</p>
-<p class="p11"><br></p>
-<p class="p8">// make a score from the pattern, 4 beats long</p>
-<p class="p3">z = p.asScore(4.0);</p>
-<p class="p11"><br></p>
-<p class="p3">z.score.postcs;</p>
-<p class="p3">z.play;</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p12"><b>rendering a pattern to sound file directly:</b></p>
-<p class="p11"><br></p>
-<p class="p8">// render the pattern to aiff (4 beats)</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="s6">p.render(</span>"asScore-Help.aif"<span class="s6">, 4.0);</span></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-</body>
-</html>
diff --git a/Help/Control/SerialPort.html b/Help/Control/SerialPort.html
deleted file mode 100644
index fec4ed8..0000000
--- a/Help/Control/SerialPort.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a91b0e}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b8}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b8}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #a91b0e}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">// =====================================================================</p>
-<p class="p1">// SerialPort</p>
-<p class="p1">// <span class="Apple-converted-space">  </span>serial port interface</p>
-<p class="p2"><br></p>
-<p class="p1">// device list</p>
-<p class="p1"><span class="s1">SerialPort</span><span class="s2">.listDevices;<span class="Apple-tab-span">	</span></span>// prints to postbuffer</p>
-<p class="p1"><span class="s1">SerialPort</span><span class="s2">.devices;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// returns array</p>
-<p class="p2"><br></p>
-<p class="p1">// change device selection</p>
-<p class="p3"><span class="s1">SerialPort</span>.devicePattern = <span class="s3">"/dev/ttyUSB*"</span>; <span class="s4">// linux usb serial</span></p>
-<p class="p4">SerialPort<span class="s2">.devices;</span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">SerialPort</span>.devicePattern = <span class="s1">nil</span>;</p>
-<p class="p4">SerialPort<span class="s2">.devices;</span></p>
-<p class="p2"><br></p>
-<p class="p1">// opening the port</p>
-<p class="p2"><br></p>
-<p class="p1">// instance creation arguments</p>
-<p class="p1">//</p>
-<p class="p1">// <span class="Apple-converted-space">  </span>port <span class="Apple-converted-space">          </span>device path or index</p>
-<p class="p1">//<span class="Apple-tab-span">	</span>baudrate <span class="Apple-converted-space">      </span>baudrate [4800..230400]</p>
-<p class="p1">// <span class="Apple-converted-space">  </span>databits <span class="Apple-converted-space">      </span>5 | 6 | 7 | 8</p>
-<p class="p1">// <span class="Apple-converted-space">  </span>stopbits <span class="Apple-converted-space">      </span>true | false</p>
-<p class="p1">// <span class="Apple-converted-space">  </span>parity <span class="Apple-converted-space">        </span>nil | 'even' | 'odd'</p>
-<p class="p1">// <span class="Apple-converted-space">  </span>crtscts<span class="Apple-converted-space">        </span>hardware flow control (true | false)</p>
-<p class="p1">// <span class="Apple-converted-space">  </span>xonxoff<span class="Apple-converted-space">        </span>software flow control (true | false)</p>
-<p class="p1">// <span class="Apple-converted-space">  </span>exclusive<span class="Apple-converted-space">      </span>open the device exclusively (true | false)</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4"><span class="s2">p = </span>SerialPort<span class="s2">(</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>"/dev/tty.usbserial-181"<span class="s2">,</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>baudrate: 9600,</p>
-<p class="p3"><span class="Apple-tab-span">	</span>crtscts: <span class="s1">true</span>);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">// read a byte from the device</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s2">p.next;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// doesn't block</p>
-<p class="p1"><span class="s2">p.read;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// may suspend thisThread</p>
-<p class="p2"><br></p>
-<p class="p1">// write a byte to the device</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s2">p.put(42);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// may suspend thisThread</p>
-<p class="p2"><br></p>
-<p class="p1">// write multiple bytes to the device</p>
-<p class="p1">// collection may be Int8Array or String</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">p.putAll(</span>"whaddayawant"<span class="s2">);</span></p>
-<p class="p3">p.putAll(<span class="s1">Int8Array</span>[13, 10]);</p>
-
-<p class="p2"><br></p>
-<p class="p1">// you can set an function which will be evaluated if the port gets closed (maybe unexpectedly so, due to hardware failure or accidental disconnection). This allows you to for example to make a backup solution and activate it (like using fake input data for your algorithm, or trying to reopen the device). By default it will post a message to the post window.</p>
-<p class="p2"><br></p>
-<p class="p3">p.doneAction = { "my serial port got closed".postln; }</p>
-<p class="p2"><br></p>
-
-<p class="p2"><br></p>
-<p class="p1">// close the port</p>
-<p class="p2"><br></p>
-<p class="p3">p.close;</p>
-<p class="p2"><br></p>
-<p class="p1">// close all ports</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">SerialPort</span>.closeAll;</p>
-
-<p class="p2"><br></p>
-<p class="p1">// EOF</p>
-</body>
-</html>
diff --git a/Help/Control/ServerBoot.html b/Help/Control/ServerBoot.html
deleted file mode 100644
index 3dd2072..0000000
--- a/Help/Control/ServerBoot.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #204cc2}
-span.s3 {color: #0024f8}
-span.s4 {color: #0000ff}
-span.s5 {color: #000000}
-span.s6 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ServerBoot<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>register actions to be taken when a server has booted</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : AbstractSystemAction : </b><a href="AbstractServerAction.html"><span class="s3"><b>AbstractServerAction</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">The singleton ServerBoot provides a place for registering functions and objects for<span class="Apple-converted-space"> </span></p>
-<p class="p1">events that should happen when a given server has booted.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="../ServerArchitecture/Server.html"><span class="s2">Server</span></a>, <a href="ServerQuit.html"><span class="s3">ServerQuit</span></a>, <a href="ServerTree.html"><span class="s4">ServerTree</span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s5">See <a href="AbstractServerAction.html"><span class="s6">AbstractServerAction</span></a> for usage.</span></p>
-</body>
-</html>
diff --git a/Help/Control/ServerQuit.html b/Help/Control/ServerQuit.html
deleted file mode 100644
index 14d4e1b..0000000
--- a/Help/Control/ServerQuit.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #204cc2}
-span.s3 {color: #0024f8}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ServerQuit<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>register actions to be taken when a server quits</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : AbstractSystemAction : </b><a href="AbstractServerAction.html"><span class="s3"><b>AbstractServerAction</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">The singleton ServerQuit provides a place for registering functions and objects for<span class="Apple-converted-space"> </span></p>
-<p class="p1">events that should happen when a given server quits.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4"><b>See also:</b> <a href="../ServerArchitecture/Server.html"><span class="s2">Server</span></a>, <a href="ServerBoot.html">ServerBoot</a>, <a href="ServerTree.html">ServerTree</a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">See <a href="AbstractServerAction.html"><span class="s5">AbstractServerAction</span></a> for usage.</span></p>
-</body>
-</html>
diff --git a/Help/Control/ServerTree.html b/Help/Control/ServerTree.html
deleted file mode 100644
index de30d01..0000000
--- a/Help/Control/ServerTree.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2a4bc1}
-span.s3 {color: #0020f6}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {text-decoration: underline ; color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ServerTree<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>register actions to be taken to initialise a basic tree of groups on the server</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : AbstractSystemAction : </b><a href="AbstractServerAction.html"><span class="s3"><b>AbstractServerAction</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">The singleton ServerTree provides a place for registering functions and objects for<span class="Apple-converted-space"> </span></p>
-<p class="p1">events that should happen when a given server has booted and when all synths are freed.</p>
-<p class="p1">This is to<span class="Apple-converted-space">  </span>initialise a basic tree of groups on the server.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4"><b>See also:</b> <a href="../ServerArchitecture/Server.html"><span class="s2">Server</span></a>, <a href="ServerQuit.html"><span class="s5">ServerQuit</span></a>, <a href="ServerBoot.html"><span class="s5">ServerBoot</span></a></span><span class="s3">, <a href="CmdPeriod.html"><span class="s6">CmdPeriod</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4">See <a href="AbstractServerAction.html"><span class="s5">AbstractServerAction</span></a> for usage.</span></p>
-</body>
-</html>
diff --git a/Help/Control/Spec.html b/Help/Control/Spec.html
deleted file mode 100644
index b34b67e..0000000
--- a/Help/Control/Spec.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 25.0px Helvetica}
-span.s3 {color: #0000bf}
-span.s4 {text-decoration: underline ; color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #000000}
-span.s7 {color: #606060}
-span.s8 {color: #737373}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Spec<span class="Apple-tab-span">	</span></b></span><span class="s2"><b><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input datatype specification</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s3"><b>Object</b></span></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">Specs specify what kind of input is required or permissible, and what the range of those parameters are<b>. </b>This is an abstract class – the most common subclass is: <a href="SC://ControlSpec"><span class="s4">ControlSpec</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">ControlSpec is used by GUI sliders and knobs to specify the range and curve of the controls. Input datatypes are of interest to functions, to gui interface objects (sliders etc.) and can also be used for introspection.</p>
-<p class="p2"><br></p>
-<p class="p1">The class Spec itself holds a master Dictionary of common specifications.<span class="Apple-converted-space">  </span>The name that the spec was stored as can then be used as a shorthand to refer to specs:</p>
-<p class="p2"><br></p>
-<p class="p1">\freq.asSpec</p>
-<p class="p2"><br></p>
-<p class="p1">Some common mappings are initialized in ControlSpec.initClass. You may add or overwrite mappings as you wish. The crucial library defines a number of additional subclasses.<span class="Apple-converted-space">  </span>See the crucial/Instr/MoreSpecs.sc</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="Warp.html"><span class="s3">Warp</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*add(name, item)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add a spec to the global spec dictionary under the <b>name</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the item will be converted to a spec using<span class="Apple-converted-space">  </span>.asSpec</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">// example:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s3">Spec</span>.add(<span class="s5">\helpExp</span>, <span class="s3">ControlSpec</span>( 0.01, 1.0, <span class="s5">\exp</span>) );</p>
-<p class="p6"><br></p>
-<p class="p3">// the array will be converted to a control spec</p>
-<p class="p5"><span class="s3">Spec</span>.add(<span class="s5">\helpLin</span>, [0, 1, <span class="s5">\lin</span>, 0.011, 0.01]);</p>
-<p class="p4"><br></p>
-<p class="p3">// a symbol will be looked up converteuse the existing \freq spec for \helpLin2</p>
-<p class="p7"><span class="s3">Spec</span><span class="s6">.add(</span>\helpLin2<span class="s6">, </span>\freq<span class="s6">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p3">// existing spec:</p>
-<p class="p5"><span class="s3">Spec</span>.add(<span class="s5">\helpLin</span>, <span class="s3">ControlSpec</span>(0.ampdb, 1.ampdb, <span class="s5">\db</span>, units: <span class="s7">" dB"</span>));</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">// List of default specs:</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\unipolar</span> -> <span class="s3">ControlSpec</span>(0, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\bipolar</span> -> <span class="s3">ControlSpec</span>(-1, 1, default: 0),</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\freq</span> -> <span class="s3">ControlSpec</span>(20, 20000, <span class="s5">\exp</span>, 0, 440, units: <span class="s8">" Hz"</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\lofreq</span> -> <span class="s3">ControlSpec</span>(0.1, 100, <span class="s5">\exp</span>, 0, 6, units: <span class="s8">" Hz"</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\midfreq</span> -> <span class="s3">ControlSpec</span>(25, 4200, <span class="s5">\exp</span>, 0, 440, units: <span class="s8">" Hz"</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\widefreq</span> -> <span class="s3">ControlSpec</span>(0.1, 20000, <span class="s5">\exp</span>, 0, 440, units: <span class="s8">" Hz"</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\phase</span> -> <span class="s3">ControlSpec</span>(0, 2pi),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\rq</span> -> <span class="s3">ControlSpec</span>(0.001, 2, <span class="s5">\exp</span>, 0, 0.707),</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\audiobus</span> -> <span class="s3">ControlSpec</span>(0, <span class="s3">Server</span>.default.options.numAudioBusChannels-1, step: 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\controlbus</span> -> <span class="s3">ControlSpec</span>(0, <span class="s3">Server</span>.default.options.numControlBusChannels-1, step: 1),</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\midi</span> -> <span class="s3">ControlSpec</span>(0, 127, default: 64),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\midinote</span> -> <span class="s3">ControlSpec</span>(0, 127, default: 60),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\midivelocity</span> -> <span class="s3">ControlSpec</span>(1, 127, default: 64),</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\db</span> -> <span class="s3">ControlSpec</span>(0.ampdb, 1.ampdb, <span class="s5">\db</span>, units: <span class="s8">" dB"</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\amp</span> -> <span class="s3">ControlSpec</span>(0, 1, <span class="s5">\amp</span>, 0, 0),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\boostcut</span> -> <span class="s3">ControlSpec</span>(-20, 20, units: <span class="s8">" dB"</span>,default: 0),</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\pan</span> -> <span class="s3">ControlSpec</span>(-1, 1, default: 0),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\detune</span> -> <span class="s3">ControlSpec</span>(-20, 20, default: 0, units: <span class="s8">" Hz"</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\rate</span> -> <span class="s3">ControlSpec</span>(0.125, 8, <span class="s5">\exp</span>, 0, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\beats</span> -> <span class="s3">ControlSpec</span>(0, 20, units: <span class="s8">" Hz"</span>),</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\delay</span> -> <span class="s3">ControlSpec</span>(0.0001, 1, <span class="s5">\exp</span>, 0, 0.3, units: <span class="s8">" secs"</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Control/StartUp.html b/Help/Control/StartUp.html
deleted file mode 100644
index 6ad677e..0000000
--- a/Help/Control/StartUp.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>StartUp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>register functions to be evaluated after the startup is finished</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: AbstractSystemAction</b></p>
-<p class="p2"><br></p>
-<p class="p3">StartUp registers functions to perform an action after the library has been compiled, and after the startup file has run. For instance this is used for creating <a href="../ServerArchitecture/SynthDef.html"><span class="s2">SynthDef</span></a> in the <b>initClass</b> function of class files in order to be able to make the synthdef directory customizable by the startup script.</p>
-<p class="p2"><br></p>
-<p class="p3">If an object is registered, <b>doOnStartUp</b> must be implemented. Otherwise a function can be used.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3">See Also: <a href="CmdPeriod.html"><span class="s2">CmdPeriod</span></a>, <a href="ServerBoot.html"><span class="s4">ServerBoot</span></a>, <a href="ServerTree.html"><span class="s4">ServerTree</span></a>, <a href="ServerQuit.html"><span class="s4">ServerQuit</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*add(object)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Registers an object or function to be evaluated after startup is finished.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*defer(object)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Registers an object or function to be evaluated after startup is finished, or immediately, if this has happened already.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*remove(object)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Removes an object that was previously registered.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*run</b></p>
-<p class="p2"><br></p>
-<p class="p3">call the object in order.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples</b></p>
-<p class="p7"><br></p>
-<p class="p8">*initClass {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">StartUp</span>.add {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// something to do...</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p8">}</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Control/UsingMIDI.html b/Help/Control/UsingMIDI.html
deleted file mode 100644
index 4d0baae..0000000
--- a/Help/Control/UsingMIDI.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.s5 {color: #bf0000}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Notes on MIDI support in SuperCollider</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Contents</b></p>
-<p class="p2"><br></p>
-<p class="p4">Introduction</p>
-<p class="p4">Receiving MIDI input: MIDIResponder classes</p>
-<p class="p4">Receiving MIDI input: MIDIIn</p>
-<p class="p4">Playing notes on your MIDI keyboard<span class="Apple-converted-space"> </span></p>
-<p class="p4">Sending MIDI out</p>
-<p class="p4">MIDI synchronization</p>
-<p class="p4">Third party libraries</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Introduction</b></p>
-<p class="p2"><br></p>
-<p class="p4">SuperCollider's out of the box MIDI support is fairly thorough (although not as complete as you'll find in commercial sequencers). All MIDI devices accessible to your operating system (CoreMIDI on OSX, ALSA on Linux, PortMIDI on Windows) are accessible to SuperCollider.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Note:</b> This document is written from an OSX perspective. The essential behavior of the MIDI interface classes should be the same on other platforms, despite my continual reference to CoreMIDI here.</p>
-<p class="p2"><br></p>
-<p class="p4">SuperCollider does not impose much higher-level structure on MIDI functionality. The core classes are little more than hardware abstractions (see also the <a href="MIDI.html"><span class="s1">MIDI</span></a> helpfile):</p>
-<p class="p2"><br></p>
-<p class="p4"><b>MIDIClient:</b> represents SuperCollider's communications with CoreMIDI</p>
-<p class="p4"><b>MIDIIn:</b> receives MIDI messages and executes functions in response to those messages</p>
-<p class="p4"><b>MIDIOut:</b> sends MIDI messages out to a specific port and channel</p>
-<p class="p4"><b>MIDIEndPoint:</b> a client-side representation of a CoreMIDI device, containing three variables (name, device and uid, which is a unique identifier assigned by the system)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">In most cases, each physical MIDI connection (pair of in/out jacks on the MIDI interface) has one MIDIEndPoint object to represent it in the client.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Receiving MIDI input: MIDIResponder classes</b></p>
-<p class="p2"><br></p>
-<p class="p4">For most uses, the preferred way to receive MIDI input is using the <b>MIDIResponder</b> classes. The advantage of this approach is that any number of responders can be registered. (By contrast, using MIDIIn responder functions directly means that only one function can exist per incoming message type. That is not an ideal programming practice.)</p>
-<p class="p2"><br></p>
-<p class="p4">Six types of MIDI responder exist, corresponding to the most common MIDI messages.They all have similar interfaces, described in the <a href="MIDIResponder.html"><span class="s1">MIDIResponder</span></a> help file. They can also filter incoming MIDI messages, to respond to a particular device, channel number, or specific parameter values.</p>
-<p class="p2"><br></p>
-<p class="p4">NoteOnResponder</p>
-<p class="p4">NoteOffResponder</p>
-<p class="p4">CCResponder</p>
-<p class="p4">BendResponder</p>
-<p class="p4">TouchResponder</p>
-<p class="p4">ProgramChangeResponder</p>
-<p class="p2"><br></p>
-<p class="p4">See "Playing notes on your MIDI keyboard" below for a simple example using the note-on and note-off responders.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Receiving MIDI input: MIDIIn</b></p>
-<p class="p2"><br></p>
-<p class="p4">MIDIIn has a number of class variables holding functions to be evaluated when a MIDI event comes in. Technical details on each function can be found in the MIDIIn help file.</p>
-<p class="p2"><br></p>
-<p class="p4">noteOn</p>
-<p class="p4">noteOff</p>
-<p class="p4">control</p>
-<p class="p4">bend</p>
-<p class="p4">touch</p>
-<p class="p4">polyTouch</p>
-<p class="p4">program</p>
-<p class="p4">sysex</p>
-<p class="p4">sysrt</p>
-<p class="p4">smpte<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">To assign a response to a particular kind of MIDI message, assign a function to the class variable:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">MIDIIn</span>.connect;</p>
-<p class="p5"><span class="s2">MIDIIn</span>.noteOn = { <span class="s2">|port, chan, note, vel|</span> [port, chan, note, vel].postln };<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2">MIDIIn</span><span class="s3">.noteOn = </span><span class="s2">nil</span><span class="s3">;<span class="Apple-converted-space">  </span></span>// stop responding</p>
-<p class="p2"><br></p>
-<p class="p4">MIDIIn provides the responding functions with all the information coming in from CoreMIDI:</p>
-<p class="p2"><br></p>
-<p class="p4"><b>source (src):</b> corresponds to the uid of the MIDIEndPont from which the message is coming.</p>
-<p class="p4"><b>channel (chan):</b> integer 0-15 representing the channel bits of the MIDI status byte</p>
-<p class="p2"><br></p>
-<p class="p4">... with subsequent arguments representing the data bytes. The MIDIIn help file details all the supported messages along with the arguments of the responding function for the message.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Because these are class variables, you can have only one function assigned at one time. A common usage is to assign a function that looks up responses in a collection. For example, you could have a separate set of response functions for each channel.</p>
-<p class="p2"><br></p>
-<p class="p5">~noteOn = <span class="s2">Array</span>.fill(16, <span class="s2">IdentityDictionary</span>.new);</p>
-<p class="p5"><span class="s2">MIDIIn</span>.noteOn = { <span class="s2">|port, chan, num, vel|</span> ~noteOn[chan].do(<span class="s2">_</span>.value(port, chan, num, vel)) };</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-converted-space">   </span></span>// this function will respond only on channel 0</p>
-<p class="p5">~noteOn[0].put(<span class="s4">\postNoteOn</span>, { <span class="s2">|port, chan, num, vel|</span> [port, chan, note, vel].postln });</p>
-<p class="p5">~noteOn[0].removeAt(<span class="s4">\postNoteOn</span>);<span class="Apple-converted-space">  </span><span class="s5">// stop responding</span></p>
-<p class="p2"><br></p>
-<p class="p4">The advantage of this approach over using "if" or "case" statements in the response function is that you can add and remove responses without having to change the MIDIIn function. The MIDIIn function can serve as a "hook" into another structure that distributes the MIDI events to the real responders.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Playing notes on your MIDI keyboard<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4">The technical problem is that every note on needs to save its synth object so that the note off message can end the right server-side node.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p8"><span class="s6">var</span> notes, on, off;</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="s6">//MIDIIn</span>.connect;</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s3">notes = </span><span class="s6">Array</span><span class="s3">.newClear(128);<span class="Apple-converted-space">  </span></span>// array has one slot per possible MIDI note</p>
-<p class="p9"><br></p>
-<p class="p11"><span class="s3">on = </span>NoteOnResponder<span class="s3">({ </span>|src, chan, num, veloc|</p>
-<p class="p8"><span class="Apple-tab-span">	</span>notes[num] = <span class="s6">Synth</span>(<span class="s7">\default</span>, [<span class="s7">\freq</span>, num.midicps,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\amp</span>, veloc * 0.00315]);</p>
-<p class="p8">});</p>
-<p class="p9"><br></p>
-<p class="p11"><span class="s3">off = </span>NoteOffResponder<span class="s3">({ </span>|src, chan, num, veloc|</p>
-<p class="p8"><span class="Apple-tab-span">	</span>notes[num].release;</p>
-<p class="p8">});</p>
-<p class="p9"><br></p>
-<p class="p8">q = { on.remove; off.remove; };</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p6">// when done:</p>
-<p class="p5">q.value;</p>
-<p class="p2"><br></p>
-<p class="p4">The MIDIIn help file contains a more elaborate example.</p>
-<p class="p2"><br></p>
-<p class="p4">SuperCollider does not have a built-in class to handle this automatically. However, <i>dewdrop_lib</i>, a third party libraries mentioned below, includes Voicer (to simplify note on-off bookkeeping) and VoicerMIDISocket (to trigger Voicer notes by MIDI). Users interested in this functionality may wish to examine that library.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Sending MIDI out</b></p>
-<p class="p2"><br></p>
-<p class="p4">See the <a href="MIDIOut.html"><span class="s1">MIDIOut</span></a> helpfile. Unlike MIDIIn, with MIDIOut you create an instance of the MIDIOut class with a port and uid. You can have multiple MIDIOut objects to send MIDI to different physical devices.</p>
-<p class="p2"><br></p>
-<p class="p4">Many users have reported timing issues with MIDIOut. When the CPU is busy, especially during graphics updates, outgoing MIDI messages may be delayed. Use with caution in a performance situation.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>MIDI synchronization</b></p>
-<p class="p2"><br></p>
-<p class="p4">MIDI synchronization may be performed using MIDIIn's sysrt or smpte response functions. It's up to the user to implement the desired kind of synchronization.</p>
-<p class="p2"><br></p>
-<p class="p4">For sysrt, external MIDI clocks output 24 pulses per quarter note. The responder should count the incoming pulses and multiply the rhythmic value into 24 to determine how many pulses to wait:</p>
-<p class="p2"><br></p>
-<p class="p4">0.25<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>wait 6 pulses (16th note)</p>
-<p class="p4">0.5<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>wait 12 pulses (8th note)</p>
-<p class="p4">2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>wait 48 pulses (half note)</p>
-<p class="p2"><br></p>
-<p class="p4">dewdrop_lib (third party library) includes a class, MIDISyncClock, that receives MIDI clock messages and allows events to be scheduled to keep time with an external MIDI device. See the <b>[MIDISyncClock]</b> helpfile for details.</p>
-<p class="p2"><br></p>
-<p class="p4">There are significant limitations, discussed in the helpfile. This is not really a fully supported class, but it's there for users who need rudimentary MIDI sync functionality.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Third party libraries</b></p>
-<p class="p2"><br></p>
-<p class="p4"><i>dewdrop_lib</i> is a third party library providing a number of useful performance features, available through the <a href="../Extending and Customizing SC/Quarks/Quarks.html"><span class="s1">Quarks</span></a> interface. The library provides a user-extensible framework of MIDI responder classes designed for multiport, multichannel applications.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Among its features:</p>
-<p class="p2"><br></p>
-<p class="p4">- user-extensible: simple functions may be used, and frequently-needed responses can be written into classes that inherit from the framework (see <b>[BasicMIDISocket]</b> and <b>[BasicMIDIControl]</b>)</p>
-<p class="p2"><br></p>
-<p class="p4">- easy to use classes for playing MIDI notes and assigning MIDI controllers to synthesis parameters</p>
-<p class="p2"><br></p>
-<p class="p4">- a user-configurable array of MIDI controller numbers, to simplify assignment of events to hardware controllers</p>
-</body>
-</html>
diff --git a/Help/Control/Warp.html b/Help/Control/Warp.html
deleted file mode 100644
index c7a8f7a..0000000
--- a/Help/Control/Warp.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd1612}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1135f9}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #00831b}
-span.s5 {color: #cd1612}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Warp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>specification of a shape for a mapping of numerical input<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><br></p>
-<p class="p3">The subclasses of Warp specify translations from input (a number) to an output (another number).<span class="Apple-converted-space"> </span><b> </b>This is an abstract class – already available shapes are <i>linear</i>, <i>exponential</i>, <i>sine</i>, <i>cosine</i>, <i>decibel</i>, <i>curve</i> (this is similar to the curves in envelopes, see also <a href="Env.html"><span class="s2">Env</span></a>).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Warps are internally created by <a href="ControlSpec.html"><span class="s2">ControlSpec</span></a>. Usually they are created by the message <b>asWarp</b>, understood by symbols and numbers. A warp has a <a href="Spec.html"><span class="s2">Spec</span></a> to specify a certain range of input and output values.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// create a new warp:</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s4">\exp</span>.asWarp;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = -4.asWarp; <span class="s5">// a curve warp;</span></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>map (value)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Maps and constrains a <b>value</b> between 0 and 1 to the output domain.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>unmap (value)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b>in the output domain to a value in the range between 0 and 1.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span></span>g = -3.asWarp;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.map(0.5);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.unmap(0.9);<span class="s5"><span class="Apple-tab-span">	</span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span></span>// fore and back translation should be identical:</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.unmap(g.map(0.5));</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Control/WiiMote.html b/Help/Control/WiiMote.html
deleted file mode 100644
index c1681b5..0000000
--- a/Help/Control/WiiMote.html
+++ /dev/null
@@ -1,198 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #5c3a26; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #5c3a26; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1c3cd4}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #000000}
-span.s5 {color: #0000bf}
-span.s6 {font: 9.0px Monaco; color: #bf0000}
-span.s7 {color: #bf0000}
-span.s8 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>WiiMote<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>use the Nintendo (tm) Wii Remote</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">The WiiMote class allows you to access the WiiMote from SuperCollider, both to receive data from the device, as well as send data to the device.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding WiiMote</b></p>
-<p class="p2"><br></p>
-<p class="p1">This class has been developed to work both on the Mac and on Linux. The interface is mostly the same, but there are some usage issues on the Mac.</p>
-<p class="p1">Personally, I found that it works better with an external BlueTooth receiver, than with the internal one (tested on the MacBook Pro). I also found that on the Mac, I have to connect, disconnect and then reconnect to get everything to work properly.</p>
-<p class="p2"><br></p>
-<p class="p1">The IR options, as well as the Classic controller have not been tested (due to lack of access to either complementary device by the developer).</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>*start(updtime)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Starts the eventloop. Only really necessary on Mac, but use it for cross platform robustness.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>updtime </b>- updatetime of the eventloop in milliseconds</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*discover</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Discovers a new device. This calls for the creation of a new device and class instance by calling the method <b>new</b>. <b>new</b> should not be called directly. When <b>discover</b> is called, the buttons <b>1</b> and <b>2</b> on the Wii Remote should be pushed to put the device in discovery mode.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*all</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an Array with all WiiMote devices.</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Example to start up:</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.start;<span class="Apple-converted-space">    </span></span>// start the eventloop</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.discover; </span>// discover a new device</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.all;<span class="Apple-converted-space">      </span></span>// post an array of all devices</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// cleanup:</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.closeAll; </span>// close all devices</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">WiiMote</span>.stop;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*closeAll</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Close all WiiMote devices.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*stop</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Stops the eventloop. Only really necessary on Mac, but use it for cross platform robustness.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><b>Accessing Instance and Class Variables</b></p>
-<p class="p15"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>dumpEvents_( bool )</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>dumpEvents</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dump incoming events for debugging purposes</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>spec</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the device specification, with symbolic names for each item. Each name links to the current value.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>actionSpec</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the device action specification, with symbolic names for each item. Each name in the dictionary links to an action to be performed upon receiving a new value.</p>
-<p class="p15"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>closeAction( aFunction )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set an action to be performed when the device closes</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>connectAction( aFunction )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set an action to be performed when the device connects</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>disconnectAction( aFunction )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set an action to be performed when the device disconnects</p>
-<p class="p15"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>at( key )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Get the value of a device property at the given key</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>setAction( key, aFunction )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set an action to be performed when the value of <b>key</b> changes. The key name must be one that occurs in the spec.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>removeAction( key )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Remove the previously defined action at the <b>key</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>close</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Close the device<span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p6">The properties of the Wii Remote:</p>
-<p class="p15"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>battery</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the current battery status of the device</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>ext_type</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the extension type that is connected</p>
-<p class="p15"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>remote_buttons</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current button values</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>remote_motion</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current acceleration values (x,y,z, orientation). Orientation is Mac only.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>remote_ir</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the found IR objects. (not tested!).</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>remote_leds</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current LED values</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>setLEDState( id, value )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the LED with number <b>id</b> to value <b>value</b> (1=on, 0=off).</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>rumble( value )</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Turn on the rumble, <b>value</b> (1=on, 0=off).</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>enable( onoff )<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Enable the device</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>enableExpansion( onoff )<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Enable the device expansion (nunchuk or classic controller)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>enableButtons( onoff )<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Enable the buttons on the device</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>enableMotionSensor( onoff )<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Enable the motion sensor on the device</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>enableIRSensor( onoff )<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Enable the IR sensor on the device</p>
-<p class="p15"><br></p>
-<p class="p6">The properties of the NunChuk:</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>nunchuk_buttons</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current button values</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>nunchuk_motion</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current acceleration values (x,y,z, orientation). Orientation is Mac only.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>nunchuk_stick</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current stick values</p>
-<p class="p15"><br></p>
-<p class="p6">The properties of the Classic Controller:</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>classic_buttons</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current button values</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>classic_stick1</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current stick values of stick 1</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>classic_stick2</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current stick values of stick 2</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>classic_analog</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array with the current analog values</p>
-<p class="p2"><br></p>
-<p class="p14"><b>Examples</b></p>
-<p class="p16"><br></p>
-<p class="p9">// Example to start up and view values</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.start;<span class="Apple-converted-space">    </span></span>// start the eventloop</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.discover; </span>// discover a new device (wait for post about connected)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.all;<span class="Apple-converted-space">      </span></span>// post an array of all devices</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s5">WiiMote</span>.all[0];</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span><span class="s5">WiiMoteGUI</span><span class="s4">.new( w ); </span>// create a GUI (only covers the WiiMote and NunChuk currently)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.enableMotionSensor( 1 );</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.enableExpansion( 1 );</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.setLEDState( 0,1 ); <span class="s7">// turn the first LED on</span></p>
-<p class="p19"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.rumble( 1 ); </span>// rumble the device</p>
-<p class="p19"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.rumble( 0 ); </span>// rumble the device</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.setAction( </span><span class="s8">\bA</span><span class="s4">, { </span><span class="s5">|v|</span><span class="s4"> v.postln; } ); </span>// post the value when button A changes.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.removeAction( <span class="s8">\bA</span> );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>// (MacOSX) if you do not see any changes in the motion sensors, then the connection is bad.</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>// push the red button inside the battery compartment, or the buttons 1 and 2 on the WiiMote and start over again to discover...</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.discover; </span>// discover a new device</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.all;<span class="Apple-converted-space">      </span></span>// post an array of all devices</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s5">WiiMote</span>.all[1];</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.w.close; </span>// close previous window</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span><span class="s5">WiiMoteGUI</span><span class="s4">.new( w ); </span>// create a GUI (only covers the WiiMote and NunChuk currently)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now it should work..., if not, repeat the exercise...</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>// clean up</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">WiiMote</span><span class="s4">.closeAll; </span>// close all devices</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">WiiMote</span>.stop;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.w.close;</p>
-</body>
-</html>
diff --git a/Help/Core/BinaryOpFunction.html b/Help/Core/BinaryOpFunction.html
deleted file mode 100644
index 1df7163..0000000
--- a/Help/Core/BinaryOpFunction.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0033f1}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {font: 12.0px Helvetica; color: #0021e7}
-span.s4 {font: 12.0px Helvetica; color: #0024f8}
-span.s5 {font: 12.0px Helvetica; color: #0033f1}
-span.s6 {font: 12.0px Helvetica; color: #0000ff}
-span.s7 {color: #0000bf}
-span.s8 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BinaryOpFunction<span class="Apple-tab-span">	</span></b></span><b>represent a binary oparation on a function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: AbstractFunction</b></p>
-<p class="p2"><br></p>
-<p class="p1">Operating on functions instead of numbers, what results is not a result of the calculation, but a structure that represents that calculation.</p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p4"><span class="s2">a = 5 + 7; </span>// result is 12.</p>
-<p class="p4"><span class="s2">a = { b } + 7; </span>// result is<span class="Apple-converted-space">  </span>a BinaryOpFunction</p>
-<p class="p5">b = 5;</p>
-<p class="p4"><span class="s2">a.value; </span>// now it is evaluated, and the result is calculated</p>
-<p class="p5">b = 8;</p>
-<p class="p4"><span class="s2">a.value; </span>// again, with a different value.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">see also: <a href="UnaryOpFunction.html"><span class="s3">UnaryOpFunction</span></a>, <a href="NAryOpFunction.html"><span class="s4">NAryOpFunction</span></a></span></p>
-<p class="p8"><span class="s2">related: <a href="../Streams-Patterns-Events/BinaryOpStream.html"><span class="s5">BinaryOpStream</span></a>, <a href="../Streams-Patterns-Events/Patterns/Pbinop.html"><span class="s6">Pbinop</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s7">var</span> a = { 19.rand };</p>
-<p class="p5"><span class="s7">var</span> b = { [5, 8, 9].choose };</p>
-<p class="p5"><span class="s7">var</span> c = a + b;</p>
-<p class="p5">fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>15.do {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(instrument: <span class="s8">\default</span>, note: [c.value, a.value]).play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/Core/Boolean.html b/Help/Core/Boolean.html
deleted file mode 100644
index 3fcd480..0000000
--- a/Help/Core/Boolean.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0000ff}
-</style>
-</head>
-<body>
-<p class="p1"><b>Boolean</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">Boolean is an abstract class whose instances represent a logical value.<span class="Apple-converted-space"> </span></p>
-<p class="p3">Boolean is the superclass of True and False which are the concrete realizations.</p>
-<p class="p3">In code True and False are represented by the literal values true and false.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>xor(aBoolean)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Answers the exclusive or of the receiver and another Boolean.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>and(function)</b></p>
-<p class="p3"><b>and: function</b></p>
-<p class="p2"><br></p>
-<p class="p3">If the receiver is true then answer the evaluation of function.</p>
-<p class="p3">If the receiver is false then function is not evaluated and the message answers false.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>or(function)</b></p>
-<p class="p3"><b>or: function</b></p>
-<p class="p2"><br></p>
-<p class="p3">If the receiver is false then answer the evaluation of function.</p>
-<p class="p3">If the receiver is true then function is not evaluated and the message answers true.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>&& aBoolean</b></p>
-<p class="p2"><br></p>
-<p class="p3">Answers true if the receiver is true and aBoolean is true.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>|| aBoolean</b></p>
-<p class="p2"><br></p>
-<p class="p3">Answers true if either the receiver is true or aBoolean is true.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>nand(aBoolean)</b></p>
-<p class="p3"><b>nand: aBoolean</b></p>
-<p class="p2"><br></p>
-<p class="p3">Answers true unless both the operands are true (Sheffer stroke)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>not</b></p>
-<p class="p2"><br></p>
-<p class="p3">Answers true if the receiver is false, and false if the receiver is true.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>if( trueFunc, falseFunc )</b></p>
-<p class="p2"><br></p>
-<p class="p3">If the receiver is true, answer the evaluation of the trueFunc. If the receiver is false, answer the evaluation of the falseFunc.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>binaryValue</b></p>
-<p class="p2"><br></p>
-<p class="p3">Answer 1 if the receiver is true, and 0 if the receiver is false.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>booleanValue</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return receiver. The same message is understood by <a href="../Math/SimpleNumber.html"><span class="s1">SimpleNumber</span></a><span class="s1"> </span>and can be used to convert it to boolean.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Char.html b/Help/Core/Char.html
deleted file mode 100644
index 1dc884e..0000000
--- a/Help/Core/Char.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {text-decoration: underline}
-span.s2 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Char<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ascii characters</b></p>
-<p class="p3"><br></p>
-<p class="p4">Chars may be written as literals using the $ sign. For example $a, $b, $c.</p>
-<p class="p4">See section [01 Literals]</p>
-<p class="p3"><br></p>
-<p class="p4">Chars may be created from Integers using the Integer methods asAscii and asDigit.</p>
-<p class="p3"><br></p>
-<p class="p5"><b><span class="s1">Conversion</span></b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>ascii</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers the integer ascii value of a Char.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>digit</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers an integer value from 0 to 9 for chars $0 to $9, and values 10 to 35 for chars $a to $z</p>
-<p class="p4">or $A to $Z.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>toUpper</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers the upper case version of a char. Nonalphabetic chars return themselves.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>toLower</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers a lower case version of a char. Nonalphabetic chars return themselves.</p>
-<p class="p3"><br></p>
-<p class="p5"><b><span class="s1">Testing</span></b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>isAlpha</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers whether the char is an alphabetic character.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>isAlphaNum</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers whether the char is an alphabetic or numeric character.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>isPrint</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers whether the char is printable.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>isPunct</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers whether the char is a punctuation character</p>
-<p class="p3"><br></p>
-<p class="p4"><b>isSpace</b></p>
-<p class="p3"><br></p>
-<p class="p4">answers whether the char is white space.</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-converted-space"> </span><b>isDecDigit</b></p>
-<p class="p3"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>answers whether the char is a decimal digit $0 to $9.</p>
-<p class="p3"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span><b>isFileSafe</b></p>
-<p class="p3"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>answers whether the char is safe for use as in a filename.</p>
-<p class="p4"><span class="Apple-converted-space"> </span>excludes the path separators / and :<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-converted-space"> </span></span>for(0,255,{ arg i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>[i,a = i.asAscii,a.isAlphaNum,a.isPrint,a.isPunct,a.isControl].postln;</p>
-<p class="p6">});</p>
-<p class="p7"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/Core/Error.html b/Help/Core/Error.html
deleted file mode 100644
index d6adea2..0000000
--- a/Help/Core/Error.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #263bcc}
-span.s3 {color: #0000ff}
-span.s4 {color: #0012b9}
-span.s5 {color: #000000}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Error<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>superclass of all Errors</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="Exception.html"><span class="s3"><b>Exception</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Error and its subclasses separate different types of error is that can occur in the SuperCollider program into distinct classes, so that they can be reported differently to the user.</p>
-<p class="p2"><br></p>
-<p class="p1">Anywhere that an error must be reported to the user and execution must stop, an error object must be created and thrown.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4"><span class="s4">var</span><span class="s5"> file, path = </span>"betcha-this-file-doesnt-exist.txt"<span class="s5">;</span></p>
-<p class="p3">if((file = <span class="s4">File</span>(path, <span class="s6">"r"</span>)).isOpen) {</p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span>"File is % bytes long.\n"<span class="s5">.postf(file.length);</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>file.close;</p>
-<p class="p3">} {</p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s4">Error</span><span class="s5">(</span>"File % could not be opened."<span class="s5">.format(path)).throw;</span></p>
-<p class="p3">};</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">For backward compatibility, .die() creates the error for you.</p>
-<p class="p2"><br></p>
-<p class="p4">"Nothing is really wrong; just committing suicide for fun. A Harold and Maude moment."<span class="s5">.die;</span></p>
-<p class="p2"><br></p>
-<p class="p1">Throwing an error object gives the caller the opportunity to catch, and possibly recover from, the error. See the <a href="Exception.html"><span class="s3">Exception</span></a> help file for more information about this.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Error hierarchy</b></p>
-<p class="p2"><br></p>
-<p class="p1">The following error classes exist in the main library.</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>Error</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>DeprecatedError:</b> this method is no longer supported.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>MethodError:</b> generic error occurring within a method.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>DoesNotUnderstandError:</b> the receiver does not understand the method name.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>BinaryOpFailureError:</b> a binary operator cannot work with the operand classes.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>ImmutableError:</b> attempted to modify an immutable object.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>MustBeBooleanError:</b> a test (in if or while) returned a non-Boolean value.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>NotYetImplementedError:</b> the method name exists, but isn't implemented yet.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>OutOfContextReturnError:</b> a method return by ^ took place outside of a method.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>PrimitiveFailedError:</b> an error occurred inside a primitive.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>ShouldNotImplementError:</b> you called a method on a class that has no business implementing it.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>SubclassResponsibilityError:</b> you called a method on an abstract class.</p>
-</body>
-</html>
diff --git a/Help/Core/Exception.html b/Help/Core/Exception.html
deleted file mode 100644
index 10f2cd4..0000000
--- a/Help/Core/Exception.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #007300}
-span.s7 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Exception<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>root error class</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">The root of SuperCollider's error handling mechanism.</p>
-<p class="p2"><br></p>
-<p class="p1">Exception is an abstract class, defining basic error behavior. This class is not directly used in SuperCollider. Users may create subclasses of Exception to identify specific types of failure conditions.</p>
-<p class="p2"><br></p>
-<p class="p1">The built-in exception types are actually subclasses of <a href="Error.html"><span class="s3">Error</span></a> -- see its help file for the hierarchy.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Background: General exception handling</b></p>
-<p class="p2"><br></p>
-<p class="p1">An exception is any event that disrupts the normal execution flow of a program. In practice there is not much distinction between an exception and an error; in SuperCollider, we tend to speak of errors where other object-oriented languages (Java, C++) would use exception consistently.</p>
-<p class="p2"><br></p>
-<p class="p1">If a piece of code runs into an unexpected condition, it creates an exception object that holds information about the faulty condition, and then "throws" that object. From there, the interpreter unwinds backward through all the preceding stack frames looking for an exception handler that will "catch" the exception. The exception handler can take an alternate route to resolve the failure and continue normally; if this is not possible, it can re-throw the exception back to the previous stack frame. An exception that never gets caught causes execution to abort. In SuperCollider, this results in the standard error dump (see the <a href="../Language/Understanding-Errors.html"><span class="s3">Understanding-Errors</span></a> help file for details); in C++ or Java, the effect is catastrophic, causing the whole program to crash.</p>
-<p class="p2"><br></p>
-<p class="p1">Common syntax in other languages for exception handling is:</p>
-<p class="p2"><br></p>
-<p class="p4">try { ...code... }</p>
-<p class="p4">catch { ...exception handler... }</p>
-<p class="p2"><br></p>
-<p class="p1">Specific languages may have other variants. The SuperCollider compiler doesn't have room for the "catch" keyword, so the syntax is simpler:</p>
-<p class="p2"><br></p>
-<p class="p4">try { ...code... } { ...exception handler... };</p>
-<p class="p2"><br></p>
-<p class="p1">With "try," if the error cannot be handled, you have to re-throw the error explicitly:</p>
-<p class="p2"><br></p>
-<p class="p4">try { ...code... } { <span class="s4">|error|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>if( test: can <span class="s4">I</span> handle the error? ) {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>handle gracefully</p>
-<p class="p4"><span class="Apple-tab-span">	</span>} { error.throw }</p>
-<p class="p4">};</p>
-<p class="p2"><br></p>
-<p class="p1">SuperCollider includes a variant, borrowed from Scheme, in which the exception is always fatal, but the preceding code might have allocated some resources that need to be released before reporting the error. For example, you might open a file and do some processing on it that might encounter an error. Good practice is to close the file before the error halt, which you can do this way:</p>
-<p class="p2"><br></p>
-<p class="p4">file = <span class="s4">File</span>(path, <span class="s5">"r"</span>);</p>
-<p class="p4">protect {</p>
-<p class="p4"><span class="Apple-tab-span">	</span>work with the file here, which might cause an error</p>
-<p class="p4">} {</p>
-<p class="p4"><span class="Apple-tab-span">	</span>file.close;</p>
-<p class="p4">};</p>
-<p class="p2"><br></p>
-<p class="p1">With "protect," the second function will execute even if there is no error, and any error will be passed up the chain.</p>
-<p class="p2"><br></p>
-<p class="p1">In Java, you can catch specific classes of exception. You can simulate this usage with the following construction:</p>
-<p class="p2"><br></p>
-<p class="p5">// Java-style</p>
-<p class="p6"><br></p>
-<p class="p4">try {<span class="Apple-converted-space">  </span>}</p>
-<p class="p4">catch { <span class="s4">FileNotFoundException</span> e } { console.printLine(<span class="s5">"File not found: "</span> + e.path) }</p>
-<p class="p4">catch { <span class="s4">EmptyFileException</span> e } { console.printLine(<span class="s5">"File is empty: "</span> + e.path) };</p>
-<p class="p6"><br></p>
-<p class="p5">// SuperCollider-style (hypothetical; these specific exceptions do not exist in the main library</p>
-<p class="p6"><br></p>
-<p class="p4">try {<span class="Apple-converted-space">  </span>} { <span class="s4">|error|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>switch(error.species.name)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s6">'FileNotFoundException'</span> } { postln(<span class="s5">"File not found:"</span> + e.path) }</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s6">'EmptyFileException'</span> } { postln(<span class="s5">"File is empty:"</span> + e.path) }</p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// default condition: unhandled exception, rethrow</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ error.throw }</p>
-<p class="p4">}</p>
-<p class="p2"><br></p>
-<p class="p1">Following is an example that recovers from a failed attempt to write into an immutable array, by re-attempting the write on a copy of the array.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p7"><span class="s7">~inPlaceSub = { </span>|array, find, replace|</p>
-<p class="p4"><span class="Apple-tab-span">	</span>array.do({ <span class="s4">|item, i|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(item == find) { array[i] = replace };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>});</p>
-<p class="p4">};</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s7">~trySub = { </span>|array, find, replace|</p>
-<p class="p4"><span class="Apple-tab-span">	</span>try {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~inPlaceSub.(array, find, replace)</p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span>} { </span>|error|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>switch(error.species.name)</p>
-<p class="p8"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ </span>'PrimitiveFailedError'<span class="s7"> } {</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(error.what.find(<span class="s5">"immutable"</span>).notNil) {</p>
-<p class="p9"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"caught ImmutableError"<span class="s7">.postln;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~inPlaceSub.(array.copy, find, replace)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} { <span class="s5">"unknown primitive exception"</span>.postln; error.throw; }</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// default case: unhandled exception, should die so re-throw error</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s5">"unknown exception"</span>.postln; error.throw; }</p>
-<p class="p4"><span class="Apple-tab-span">	</span>};</p>
-<p class="p4">};</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p5">// pass in a mutable array, OK</p>
-<p class="p4">~trySub.((0..9), 9, 19);</p>
-<p class="p6"><br></p>
-<p class="p5">// pass in a literal array, Immutable exception is caught and handled</p>
-<p class="p4">~trySub.(#[0, 1, 2, 3, 4, 5], 5, 6);</p>
-<p class="p6"><br></p>
-<p class="p5">// pass in a nonsense value, other exception is re-thrown</p>
-<p class="p4">~trySub.(10, 5, 6);</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/False.html b/Help/Core/False.html
deleted file mode 100644
index b0af91f..0000000
--- a/Help/Core/False.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {color: #000000}
-</style>
-</head>
-<body>
-<p class="p1"><b>False</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">see [<a href="Boolean.html">Boolean</a>]</span></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/AbstractFunction.html b/Help/Core/Kernel/AbstractFunction.html
deleted file mode 100644
index dedcff0..0000000
--- a/Help/Core/Kernel/AbstractFunction.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #e10000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #d40002}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #e10002}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3300d3}
-span.s1 {color: #0000ff}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0026b4}
-span.s5 {color: #0024f8}
-span.s6 {color: #3300d3}
-span.s7 {color: #008c00}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>AbstractFunction</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../Object.html"><span class="s1"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p3">An AbstractFunction is an object which responds to a set of messages that represent</p>
-<p class="p3">mathematical functions. Subclasses override a smaller set of messages to respond</p>
-<p class="p3">to the mathematical functions. The intent is to provide a mechanism for functions</p>
-<p class="p3">that do not calculate values directly but instead compose structures for calculating.</p>
-<p class="p2"><br></p>
-<p class="p3">Function, Pattern, Stream and UGen are subclasses of AbstractFunction.</p>
-<p class="p3">For example, if you multiply two UGens together the receiver responds by answering a new</p>
-<p class="p3">instance of class BinaryOpUGen which has the two operands as inputs.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="../../UGens/UGen.html"><span class="s3">UGen</span></a>, <a href="../../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s3">Pattern</span></a>, <a href="Function.html"><span class="s3">Function</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Unary Messages:</b></p>
-<p class="p2"><br></p>
-<p class="p3">All of the following messages send the message <b>composeUnaryOp</b> to the receiver with the</p>
-<p class="p3">unary message selector as an argument. See: <a href="../UnaryOpFunction.html"><span class="s4">UnaryOpFunction</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><b>neg, reciprocal, bitNot, abs, asFloat, asInt, ceil, floor, frac, sign, squared, cubed, sqrt</b></p>
-<p class="p3"><b>exp, midicps, cpsmidi, midiratio, ratiomidi, ampdb, dbamp, octcps, cpsoct, log, log2,</b></p>
-<p class="p3"><b>log10, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, rand, rand2, linrand, bilinrand,</b></p>
-<p class="p3"><b>sum3rand, distort, softclip, nyqring, coin, even, odd, isPositive, isNegative,</b></p>
-<p class="p3"><b>isStrictlyPositive, rho, theta</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Binary Messages:</b></p>
-<p class="p5"><br></p>
-<p class="p3">All of the following messages send the message <b>composeBinaryOp</b> to the receiver with the</p>
-<p class="p3">binary message selector and the second operand as arguments. See:<span class="Apple-converted-space">  </span><a href="../BinaryOpFunction.html"><span class="s4">BinaryOpFunction</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><b>+, -, *, /, div, %, **, min, max, <, <=, >, >=, &, |, lcm, gcd, round, trunc, atan2,<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>hypot, hypotApx, >>, +>>, fill, ring1, ring2, ring3, ring4, difsqr, sumsqr, sqrdif, absdif, amclip,</b></p>
-<p class="p3"><b>scaleneg, clip2, excess, <!, rrand, exprand, rotate, dist, bitAnd, bitOr, bitXor, bitHammingDistance, @</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Messages with more arguments:</b></p>
-<p class="p2"><br></p>
-<p class="p3">All of the following messages send the message <b>composeNAryOp</b> to the receiver with the</p>
-<p class="p3">binary message selector and the other operands as arguments. See <a href="../NAryOpFunction.html"><span class="s4">NAryOpFunction</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><b>clip, wrap, fold, blend, linlin, linexp, explin, expexp</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>applyTo(... args)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Interface that allows us to combine selectors (<a href="../Symbol.html"><span class="s4">Symbol</span></a>s) and <a href="Function.html"><span class="s5">Function</span></a>s. Sends <b>valueArray</b>(args) to <b>this</b>.</p>
-<p class="p2"><br></p>
-<p class="p6">// example:</p>
-<p class="p7"><br></p>
-<p class="p8">f = [{ <span class="s6">|a, b|</span> a * b * 100.rand }, { <span class="s6">|a, b|</span> sin(a) * sin(b) }, <span class="s7">'*'</span>, <span class="s7">'/'</span>];</p>
-<p class="p8">f.choose.postcs.applyTo(3, 4);</p>
-<p class="p7"><br></p>
-<p class="p6">// this is used in <a href="../../Collections/SequenceableCollection.html">SequenceableCollection</a> reduce:</p>
-<p class="p8">(1..10).reduce(<span class="s7">'+'</span>);</p>
-<p class="p8">(1..10).reduce({ <span class="s6">|a, b|</span> a * b * 1.0.rand });</p>
-<p class="p2"><br></p>
-<p class="p3"><b>asUGenInput(for)</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns the result of sending the <b>value</b>(for) message to <b>this</b>.</p>
-<p class="p2"><br></p>
-<p class="p6">// example:</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s6">var</span> f, g, product;</p>
-<p class="p8">f = { <span class="s6">SinOsc</span>.ar(400) };</p>
-<p class="p8">g = { <span class="s6">LFPulse</span>.kr(8)<span class="Apple-converted-space">  </span>};</p>
-<p class="p8">product = f * g * 0.1;</p>
-<p class="p8">{ <span class="s6">Pan2</span>.ar(product, <span class="s6">SinOsc</span>.kr(0.3)) }.play;<span class="Apple-converted-space"> </span></p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p10"><b>sampled (function, n, from, to)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><br></p>
-<p class="p12">//sample a function</p>
-<p class="p13">f = { <span class="s6">|x|</span> sin(3*x)*cos(8*x) }</p>
-<p class="p13">f.plotGraph2(from:0,to:2);</p>
-<p class="p13">f.sampled(10,0,2).plotGraph2(from:0,to:2);</p>
-<p class="p13">f.sampled(80,0,2).plotGraph2(from:0,to:2);</p>
-<p class="p9"><br></p>
-<p class="p14">//on complicated functions a sampled function is less cpy heavy.</p>
-<p class="p13">f = { <span class="s6">|x|</span> 60.collect{ 2**((x-rrand(0.0,1.0))) }.sum/60 };</p>
-<p class="p13">f.plotGraph2(from:0,to:1);</p>
-<p class="p13">g = f.sampled(200);</p>
-<p class="p13">g.plotGraph2(from:0,to:1);</p>
-<p class="p13">{ 200.collect{ f.(rand(0.0,1.0)) } }.bench;</p>
-<p class="p13">{ 200.collect{ g.(rand(0.0,1.0)) } }.bench;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Function Composition:</b></p>
-<p class="p2"><br></p>
-<p class="p3">when unary, binary or n-ary operators are appied to an abstract function, it returns an object that represents</p>
-<p class="p3">this operation, without evaluating the function: UnaryOpFunction, BinaryOpFunction, NAryOpFunction.</p>
-<p class="p3">Note that different subclasses like Pattern or UGen have their own composition scheme analogous to the one of AbstractFunction itself. More about functions, see <a href="Function.html"><span class="s4">Function</span></a></p>
-<p class="p2"><br></p>
-<p class="p15"><br></p>
-<p class="p6">// examples</p>
-<p class="p7"><br></p>
-<p class="p8">a = { 1.0.rand } + 8;</p>
-<p class="p8">a.value;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">y = { 8 } + { 1.0.rand };</p>
-<p class="p8">y.value;</p>
-<p class="p7"><br></p>
-<p class="p6">// arguments are passed into both functions</p>
-<p class="p7"><br></p>
-<p class="p8">y = { <span class="s6">|x=0|</span> x } + { 1.0.rand };</p>
-<p class="p8">y.value(10);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">y = { <span class="s6">|x=0|</span> x * 3 } + { |x=0| x + 1.0.rand };</p>
-<p class="p8">y.value(10);</p>
-<p class="p7"><br></p>
-<p class="p8">y.postcs;</p>
-<p class="p7"><br></p>
-<p class="p8">y = { <span class="s6">|x=0|</span> x * 3 } + { |x=0| x + 1.0.rand } * { <span class="s6">|x=0|</span> [50, 100].choose + x } + 1.0;</p>
-<p class="p8">y.value(10);</p>
-<p class="p7"><br></p>
-<p class="p6">// environments can be used as a lookup with valueEnvir:</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p16">Environment<span class="s2">.use {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>~y = 10;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>~x = 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>~z = { <span class="s6">|x=8|</span> x } + { <span class="s6">|y=0|</span> y + 1.0.rand };</p>
-<p class="p8"><span class="Apple-tab-span">	</span>~z.valueEnvir;</p>
-<p class="p8">}</p>
-<p class="p8">)</p>
-<p class="p7"><br></p>
-<p class="p6">// n-ary operators:</p>
-<p class="p7"><br></p>
-<p class="p8">a = blend({ 3.0.rand }, { 1000.rand }, { <span class="s6">|frac|</span> frac });</p>
-<p class="p8">a.value(0.5);</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">a.value((0, 0.06..1)); </span>// creates a range of values..</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Class.html b/Help/Core/Kernel/Class.html
deleted file mode 100644
index 314ec88..0000000
--- a/Help/Core/Kernel/Class.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {text-decoration: underline}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.s4 {color: #326f17}
-</style>
-</head>
-<body>
-<p class="p1"><b>Class</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">A Class describes the structure and implementation of a set objects which are its instances.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Utilities</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>browse</b></p>
-<p class="p2"><br></p>
-<p class="p3">Open a graphical browser for this Class. (OSX only). Shows methods, arguments, variables, subclasses, and has buttons for navigating to the superclass, source, helpfile, cvs, etc.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>findMethod(methodName)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Find the Method referred to by name. If not found, return nil.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>findRespondingMethodFor(methodName)</b></p>
-<p class="p2"><br></p>
-<p class="p3">As above, but climb the class tree to see if the method is inherited from a superclass. If not found, return nil.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>dumpAllMethods</b></p>
-<p class="p2"><br></p>
-<p class="p3">Post all instance methods which instances of this class responde too, including inherited ones. this.class.dumpAllMethods will post all class methods which this class responds to.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>dumpByteCodes(methodName)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Dump the byte codes of the named method.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>dumpClassSubtree</b></p>
-<p class="p2"><br></p>
-<p class="p3">Post the tree of all Classes that inherit from this class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>dumpInterface</b></p>
-<p class="p2"><br></p>
-<p class="p3">Post all the methods defined by this Class and their arguments.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>dumpFullInterface</b></p>
-<p class="p2"><br></p>
-<p class="p3">Post all the class and instance methods that this class responds to (i.e. those defined in this class and those inherited by it).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>openHelpFile</b></p>
-<p class="p2"><br></p>
-<p class="p3">Opens the help file for this Class if it exists.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>helpFilePath</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns the path of this Class's helpfile as a String.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>helpFileForMethod(methodSymbol)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Opens the helpfile for the class in which the responding method is implemented.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Array</span><span class="s3">.helpFileForMethod(</span><span class="s4">'select'</span><span class="s3">); </span>// This will open the Collection helpfile</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Conversion</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>asClass</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return this.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>asString</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return the name of the class as a String.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Accessing</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>name</b></p>
-<p class="p2"><br></p>
-<p class="p3">A Symbol that is the name of the class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>nextclass</b></p>
-<p class="p2"><br></p>
-<p class="p3">The next class in a linked list of all classes.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass</b></p>
-<p class="p2"><br></p>
-<p class="p3">The Class from which this class directly inherits.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclasses</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Array of this class's superclasses, going back to Object.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>subclasses</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Array of the direct subclasses of this.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>allSubclasses</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Array of all subclasses of this.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Array of the methods of this class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>instVarNames</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Array of the names of the instance variables for this class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>classVarNames</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Array of the names of the class variables for this class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>iprototype</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Array of the initial values of instance variables.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>cprototype</b></p>
-<p class="p2"><br></p>
-<p class="p3">An Array of the initial values of class variables.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>filenameSymbol</b></p>
-<p class="p2"><br></p>
-<p class="p3">A Symbol which is a path to the file which defines the Class.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Frame.html b/Help/Core/Kernel/Frame.html
deleted file mode 100644
index c601c4f..0000000
--- a/Help/Core/Kernel/Frame.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Frame</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">Frames are used to contain the arguments, variables and other information for active Functions.</p>
-<p class="p2"><br></p>
-<p class="p3">There are no instance variables or methods.</p>
-<p class="p2"><br></p>
-<p class="p3">Since Frames are often created on the stack, it is too dangerous to allow access to them. Dangling pointers could result.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Frame instances are inaccessible to the user.</p>
-<p class="p2"><br></p>
-<p class="p3">For error handling routines, the relevant information from a Frame can be transferred into a DebugFrame object which can safely be inspected.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">this</span>.getBackTrace.inspect</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Function.html b/Help/Core/Kernel/Function.html
deleted file mode 100644
index 823ac4a..0000000
--- a/Help/Core/Kernel/Function.html
+++ /dev/null
@@ -1,511 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {color: #000000}
-span.s2 {color: #001bb9}
-span.s3 {color: #0000ee}
-span.s4 {color: #ad140d}
-span.s5 {color: #0b28c6}
-span.s6 {color: #cd1612}
-span.s7 {color: #606060}
-span.s8 {color: #2c7014}
-span.s9 {text-decoration: underline ; color: #001bb9}
-span.s10 {font: 9.0px Monaco; color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Function</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Object.html"><b>Object</b></a></span><span class="s2"><b> : </b><a href="AbstractFunction.html"><span class="s3"><b>AbstractFunction</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">A Function is a reference to a <a href="FunctionDef.html"><span class="s2">FunctionDef</span></a> and its defining context <a href="Frame.html"><span class="s2">Frame</span></a>. When a FunctionDef is encountered in your code it is pushed on the stack as a Function. A Function can be evaluated by using the 'value' method. See the <a href="../../Language/Functions.html"><span class="s2">Functions</span></a> help file for a basic introduction.</p>
-<p class="p2"><br></p>
-<p class="p4">Because it inherits from <a href="AbstractFunction.html"><span class="s2">AbstractFunction</span></a>, Functions respond to math operations by creating a new Function.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">// example</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a, b, c;</p>
-<p class="p6">a = { [100, 200, 300].choose };<span class="Apple-tab-span">	</span><span class="s4">// a Function</span></p>
-<p class="p6">b = { 10.rand + 1 };<span class="Apple-tab-span">	</span><span class="s4">// another Function</span></p>
-<p class="p5"><span class="s1">c = a + b; <span class="Apple-tab-span">	</span></span>// c is a Function.</p>
-<p class="p5"><span class="s1">c.value.postln;<span class="Apple-tab-span">	</span></span>// evaluate c and print the result</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p4">See <a href="AbstractFunction.html"><span class="s2">AbstractFunction</span></a><b> </b>for function composition examples.</p>
-<p class="p2"><br></p>
-<p class="p4">Because Functions are such an important concept, here some examples from related programming languages with functions as first class objects:</p>
-<p class="p2"><br></p>
-<p class="p8">// returning the first argument itself:</p>
-<p class="p6">{ <span class="s5">|x|</span> x }.value(1) <span class="s6">// SuperCollider</span></p>
-<p class="p6">[:x | x ] value: 1<span class="s6"> // Smalltalk</span></p>
-<p class="p6">((lambda (x) x) 1) <span class="s6">// Lisp</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Accessing</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>def</b></p>
-<p class="p2"><br></p>
-<p class="p4">Get the definition ( <a href="FunctionDef.html"><span class="s2">FunctionDef</span></a> ) of the Function.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>isClosed</b></p>
-<p class="p2"><br></p>
-<p class="p4">returns true if the function is closed, i.e. has no external references and can thus be converted to a compile string safely.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Evaluation</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>value(... args)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Evaluates the FunctionDef referred to by the Function. The Function is passed the args given.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">|a, b|</span> (a * b).postln }.value(3, 10);</p>
-<p class="p6">{ <span class="s2">arg</span> a, b; (a * b).postln }.value(3, 10); <span class="s4">// different way of expressing the same</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>valueArray(... args)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Evaluates the FunctionDef referred to by the Function. If the last argument is an Array or List, then it is unpacked and appended to the other arguments (if any) to the Function. If the last argument is not an Array or List then this is the same as the 'value' method.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">|a, b, c|</span> ((a * b) + c).postln }.valueArray([3, 10, 7]);</p>
-<p class="p10"><br></p>
-<p class="p6">{ <span class="s2">|a, b, c, d|</span> [a, b, c, d].postln }.valueArray([1, 2, 3]);</p>
-<p class="p10"><br></p>
-<p class="p6">{ <span class="s2">|a, b, c, d|</span> [a, b, c, d].postln }.valueArray(9, [1, 2, 3]);</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">|a, b, c, d|</span> [a, b, c, d].postln }.valueArray(9, 10, [1, 2, 3]);</p>
-<p class="p7"><br></p>
-<p class="p4">A common syntactic shortcut:</p>
-<p class="p7"><br></p>
-<p class="p11">{ <span class="s5">|a, b, c|</span> ((a * b) + c).postln }.value(*[3, 10, 7]);</p>
-<p class="p7"><br></p>
-<p class="p12"><br></p>
-<p class="p4"><b>valueEnvir(... args)</b></p>
-<p class="p2"><br></p>
-<p class="p4">As value above. Unsupplied argument names are looked up in the current <b>Environment</b>.</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p13">Environment<span class="s1">.use({</span></p>
-<p class="p6">~a = 3;</p>
-<p class="p6">~b = 10;</p>
-<p class="p6">{ <span class="s2">|a, b|</span> (a * b).postln }.valueEnvir;</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p12"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>valueArrayEnvir(... args)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Evaluates the FunctionDef referred to by the Function. If the last argument is an Array or List, then it is unpacked and appended to the other arguments (if any) to the Function. If the last argument is not an Array or List then this is the same as the 'value' method. Unsupplied argument names are looked up in the current <b>Environment</b>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>valueWithEnvir(envir)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Evaluate the function, using arguments from the supplied environment</p>
-<p class="p4">This is slightly faster than <b>valueEnvir</b> and does not require replacing the <b>currentEnvironment</b></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">e = Environment</span>.make({<span class="s2"> </span>~a = 3; ~b = 10 });</p>
-<p class="p6">{ <span class="s2">|a, b|</span> (a * b) }.valueWithEnvir(e);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>functionPerformList(selector, arglist)</b></p>
-<p class="p2"><br></p>
-<p class="p4">For Function, this behaves the same as valueArray(arglist). It is used<span class="Apple-converted-space">  </span>where Functions and other objects should behave differently to value, such as in the objecr prototyping implementation of <a href="../../Collections/Environment.html"><span class="s2">Environment</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p14"><br></p>
-<p class="p15"><b>performWithEnvir(selector, envir)</b></p>
-<p class="p14"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b>selector: </b>A <a href="../Symbol.html"><span class="s2">Symbol</span></a> representing a method selector.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>envir: </b>The remaining arguments derived from the environment and passed as arguments to the method named by the selector.</p>
-<p class="p2"><br></p>
-<p class="p6">a = { <span class="s2">|a, b, c|</span> postf(<span class="s7">"% plus % plus % is %\n"</span>, a, b, c, a + b + c); <span class="s7">""</span> };</p>
-<p class="p6">a.performWithEnvir(<span class="s8">\value</span>, (a: 1, c: 3, d: 4, b: 2));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><b>performKeyValuePairs(selector, pairs)</b></p>
-<p class="p14"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p15"><b>selector: </b>A <a href="../Symbol.html"><span class="s2">Symbol</span></a> representing a method selector.<span class="Apple-converted-space"> </span></p>
-<p class="p15"><b>pairs: </b>Array or List with key-value pairs.</p>
-<p class="p14"><br></p>
-<p class="p16">a = { <span class="s2">|a, b, c|</span> postf(<span class="s7">"% plus % plus % is %\n"</span>, a, b, c, a + b + c); <span class="s7">""</span> };</p>
-<p class="p16">a.performKeyValuePairs(<span class="s8">\value</span>, [<span class="s8">\a</span>, 1, <span class="s8">\b</span>, 2, <span class="s8">\c</span>, 3, <span class="s8">\d</span>, 4]);</p>
-<p class="p14"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>loop</b></p>
-<p class="p2"><br></p>
-<p class="p4">Repeat this function. Useful with <b>Task</b> and Clocks.</p>
-<p class="p2"><br></p>
-<p class="p6">t = <span class="s2">Task</span>({ { <span class="s7">"I'm loopy"</span>.postln; 1.wait;}.loop });</p>
-<p class="p6">t.start;</p>
-<p class="p6">t.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>defer(delta)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Delay the evaluation of this Function by <b>delta</b> in seconds. Uses <b>AppClock</b>.</p>
-<p class="p2"><br></p>
-<p class="p17"><span class="s1">{ </span>"2 seconds have passed."<span class="s1">.postln; }.defer(2);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>dup(n)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Return an Array consisting of the results of n evaluations of this Function.</p>
-<p class="p2"><br></p>
-<p class="p6">x = { 4.rand; }.dup(4);</p>
-<p class="p6">x.postln;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4"><b>! n</b></p>
-<p class="p2"><br></p>
-<p class="p4">equivalent to dup(n)</p>
-<p class="p7"><br></p>
-<p class="p6">x = { 4.rand } ! 4;</p>
-<p class="p6">x.postln;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>sum(n)</b></p>
-<p class="p2"><br></p>
-<p class="p4">return the sum of n values produced.</p>
-<p class="p2"><br></p>
-<p class="p6">{ 4.rand }.sum(8);</p>
-<p class="p7"><br></p>
-<p class="p4"><b>choose</b><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">evaluates the function. This makes it polymorphic to <a href="../../Collections/SequenceableCollection.html"><span class="s9">SequenceableCollection</span></a>, <a href="../../Collections/Bag.html"><span class="s2">Bag</span></a> and <a href="../../Collections/Set.html"><span class="s9">Set</span></a>.</p>
-<p class="p7"><br></p>
-<p class="p6">[{ 100.rand }, [20, 30, 40]].collect(_.choose);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>bench(print)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns the amount of time this function takes to evaluate. <b>print</b> is a boolean indicating whether the result is posted. The default is true.</p>
-<p class="p2"><br></p>
-<p class="p6">{ 1000000.do({ 1.0.rand }); }.bench;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4"><b>fork(clock, quant, stackSize)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns a Routine using the receiver as it's function, and plays it in a <a href="../../Scheduling/TempoClock.html"><span class="s2">TempoClock</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p6">{ 4.do({ <span class="s7">"Threadin..."</span>.postln; 1.wait;}) }.fork;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4"><b>forkIfNeeded(clock, quant, stackSize)</b></p>
-<p class="p2"><br></p>
-<p class="p4">If needed, creates a new Routine to evaluate the function in, if the message is called within a routine already, it simply evaluates it.</p>
-<p class="p2"><br></p>
-<p class="p6">f = { 4.do({ <span class="s7">"Threadin..."</span>.postln; 1.wait;}) };</p>
-<p class="p6">f.forkIfNeeded;</p>
-<p class="p6">{ <span class="s7">"we are now in a routine"</span>.postln; 1.wait; f.forkIfNeeded }.fork;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>block</b></p>
-<p class="p2"><br></p>
-<p class="p4">Break from a loop. Calls the receiver with an argument which is a function that returns from the method block. To exit the loop, call .value on the function passed in. You can pass a value to this function and that value will be returned from the block method.</p>
-<p class="p2"><br></p>
-<p class="p6">block {<span class="s2">|break|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>100.do {<span class="s2">|i|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (i == 7) { break.value(999) }</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p6">}</p>
-<p class="p7"><br></p>
-<p class="p4"><b>thunk</b></p>
-<p class="p7"><br></p>
-<p class="p4">Return a <a href="Thunk.html"><span class="s2">Thunk</span></a>, which is an unevaluated value that can be used in calculations<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">x = thunk { 4.rand };</p>
-<p class="p6">x.value;</p>
-<p class="p6">x.value;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4"><b>flop</b></p>
-<p class="p2"><br></p>
-<p class="p4">Return a function that, when evaluated with nested arguments, does multichannel expansion by evaluting the receiver function for each channel. A flopped function responds like the "map" function in languages like Lisp.</p>
-<p class="p7"><br></p>
-<p class="p6">f = { <span class="s2">|a, b|</span> if(a > 0) { a + b } { -<span class="s2">inf</span> } }.flop;</p>
-<p class="p6">f.value([-1, 2, 1, -3.0], [10, 1000]);</p>
-<p class="p6">f.value(2, 3);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4"><b>envirFlop</b></p>
-<p class="p2"><br></p>
-<p class="p4">like flop, but implements an environment argument passing (valueEnvir).<span class="Apple-converted-space"> </span></p>
-<p class="p4">Less efficient in generation than flop, but not a big difference in evaluation.</p>
-<p class="p7"><br></p>
-<p class="p6">f = { <span class="s2">|a|</span> if(a > 0) { a + 1 } { -<span class="s2">inf</span> } }.envirFlop;</p>
-<p class="p6">e = (a: [20, 40]);</p>
-<p class="p6">e.use { f.value }</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>inEnvir(envir)</b></p>
-<p class="p2"><br></p>
-<p class="p4">returns an "environment-safe" function. See <a href="../../Collections/Environment.html"><span class="s2">Environment</span></a> for more details.</p>
-<p class="p2"><br></p>
-<p class="p5">// prints nil because ~a is read from topEnvironment, not e</p>
-<p class="p6">e = (a: <span class="s7">"got it"</span>, f: { { ~a.postln }.defer(0.5) });</p>
-<p class="p6">e.use { e.f };</p>
-<p class="p7"><br></p>
-<p class="p5">// prints "got it" because { ~a.postln } is now bound to the e environment</p>
-<p class="p6">e = (a: <span class="s7">"got it"</span>, f: { { ~a.postln }.inEnvir.defer(0.5) });</p>
-<p class="p6">e.use { e.f };</p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>case(cases)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Function implements a <b>case </b>method which allows for conditional evaluation with multiple cases. Since the receiver represents the first case this can be simply written as pairs of test functions and corresponding functions to be evaluated if true. Unlike Object-switch, this is inlined and is therefore just as efficient as nested if statements.</p>
-<p class="p18"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> i, x, z;</p>
-<p class="p6">z = [0, 1, 1.1, 1.3, 1.5, 2];</p>
-<p class="p6">i = z.choose;</p>
-<p class="p6">x = case</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ i == 1 } <span class="Apple-converted-space">  </span>{ <span class="s8">\no</span> }</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ i == 1.1 } { <span class="s8">\wrong</span> }</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ i == 1.3 } { <span class="s8">\wrong</span> }</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ i == 1.5 } { <span class="s8">\wrong</span> }</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ i == 2 } <span class="Apple-converted-space">  </span>{ <span class="s8">\wrong</span> }</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ i == 0 } <span class="Apple-converted-space">  </span>{ <span class="s8">\true</span> };</p>
-<p class="p6">x.postln;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p4"><b>matchItem(item)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Interface shared with other classes that implements pattern matching. See also: matchItem.</p>
-<p class="p4">Function.matchItem evaluates the function with the item as argument, expecting a <a href="../Boolean.html"><span class="s2">Boolean</span></a> as reply.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">|x|</span> x > 5 }.matchItem(6); <span class="s4">// true</span></p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p4"><b>performDegreeToKey(scaleDegree, stepsPerOctave = 12, accidental = 0)</b></p>
-<p class="p2"><br></p>
-<p class="p4">use a function as a conversion from scale degree to note number. See also <a href="../../Collections/SequenceableCollection.html"><span class="s9">SequenceableCollection</span></a> and <a href="../../Collections/Scale.html"><span class="s2">Scale</span></a></p>
-<p class="p2"><br></p>
-<p class="p5">// a strange mapping</p>
-<p class="p6">(</p>
-<p class="p13">var<span class="s1"> f = {</span>|degree, stepsPerOctave, acc|</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(1.8 ** (degree % stepsPerOctave) + acc).postln</p>
-<p class="p6">};</p>
-<p class="p13">Pbind<span class="s1">(</span></p>
-<p class="p20"><span class="s1"><span class="Apple-tab-span">	</span></span>\scale<span class="s1">, f,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s2">Pseq</span>([0, 1, 2b, 3s, 4s, 6, 14, [0, 2, 4], [1, 3, 6]], <span class="s2">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Exception Handling</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">For the following two methods a return ^ inside of the receiver itself cannot be caught. Returns in methods called by the receiver are OK.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>try(handler)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Executes the receiver. If an exception is thrown the catch function <b>handler</b> is executed with the error as an argument. <b>handler</b> itself can rethrow the error if desired.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>protect(handler)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Executes the receiver. The cleanup function <b>handler </b>is executed with an error as an argument, or nil if there was no error. The error continues to be in effect.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Examples:</p>
-<p class="p7"><br></p>
-<p class="p5">// no exception handler</p>
-<p class="p6">value { 8.zorg; <span class="s8">\didnt_continue</span>.postln; }</p>
-<p class="p7"><br></p>
-<p class="p6">try { 8.zorg } {<span class="s2">|error|</span> error.postln; <span class="s8">\cleanup</span>.postln; }; <span class="s8">\continued</span>.postln;</p>
-<p class="p7"><br></p>
-<p class="p6">protect { 8.zorg } {<span class="s2">|error|</span> error.postln; }; <span class="s8">\didnt_continue</span>.postln;</p>
-<p class="p7"><br></p>
-<p class="p6">try { 123.postln; 456.throw; 789.postln } {<span class="s2">|error|</span> [<span class="s8">\catch</span>, error].postln };</p>
-<p class="p7"><br></p>
-<p class="p6">try { 123.postln; 789.postln } {<span class="s2">|error|</span> [<span class="s8">\catch</span>, error].postln };</p>
-<p class="p7"><br></p>
-<p class="p6">try { 123.postln; <span class="s2">nil</span>.throw; 789.postln } {<span class="s2">|error|</span> [<span class="s8">\catch</span>, error].postln };</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">protect { 123.postln; 456.throw; 789.postln } {<span class="s2">|error|</span> [<span class="s8">\onExit</span>, error].postln };</p>
-<p class="p7"><br></p>
-<p class="p6">protect { 123.postln; 789.postln } {<span class="s2">|error|</span> [<span class="s8">\onExit</span>, error].postln };</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">try {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>protect { 123.postln; 456.throw; 789.postln } {<span class="s2">|error|</span> [<span class="s8">\onExit</span>, error].postln };</p>
-<p class="p6">} {<span class="s2">|error|</span> [<span class="s8">\catch</span>, error].postln };</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">value { 123.postln; 456.throw; 789.postln }</p>
-<p class="p7"><br></p>
-<p class="p6">value { 123.postln; <span class="s2">Error</span>(<span class="s7">"what happened?"</span>).throw; 789.postln }</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p20"><span class="s1">a = [</span>\aaa<span class="s1">, </span>\bbb<span class="s1">, </span>\ccc<span class="s1">, </span>\ddd<span class="s1">];</span></p>
-<p class="p6">a[1].postln;</p>
-<p class="p6">a[<span class="s8">\x</span>].postln;</p>
-<p class="p6">a[2].postln;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">try {</p>
-<p class="p20"><span class="s1"><span class="Apple-tab-span">	</span>a = [</span>\aaa<span class="s1">, </span>\bbb<span class="s1">, </span>\ccc<span class="s1">, </span>\ddd<span class="s1">];</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[1].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[<span class="s8">\x</span>].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[2].postln;</p>
-<p class="p6">} {<span class="s2">|error|</span> <span class="s8">\caught</span>.postln; error.dump }</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">try {</p>
-<p class="p20"><span class="s1"><span class="Apple-tab-span">	</span>a = [</span>\aaa<span class="s1">, </span>\bbb<span class="s1">, </span>\ccc<span class="s1">, </span>\ddd<span class="s1">];</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[1].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[<span class="s8">\x</span>].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[2].postln;</p>
-<p class="p6">} {<span class="s2">|error|</span> <span class="s8">\caught</span>.postln; error.dump; error.throw }</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">protect {</p>
-<p class="p20"><span class="s1"><span class="Apple-tab-span">	</span>a = [</span>\aaa<span class="s1">, </span>\bbb<span class="s1">, </span>\ccc<span class="s1">, </span>\ddd<span class="s1">];</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[1].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[<span class="s8">\x</span>].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a[2].postln;</p>
-<p class="p6">} {<span class="s2">|error|</span> <span class="s8">\caught</span>.postln; error.dump }</p>
-<p class="p6">)</p>
-<p class="p21"><br></p>
-<p class="p21"><br></p>
-<p class="p9"><b>Audio</b></p>
-<p class="p12"><br></p>
-<p class="p4"><b>play(target, outbus, fadetime, addAction, args)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>This is probably the simplest way to get audio in SC3. It wraps the Function in a <b>SynthDef</b> (adding an <b>Out</b> ugen if needed), creates and starts a new <b>Synth</b> with it, and returns the Synth object. A <b>Linen</b> is also added to avoid clicks, which is configured to allow the resulting Synth to have its <span class="s10">\gate </span>argument set, or to respond to a release message. Args in the function become args in the resulting def.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>target </b>- a Node, Server, or Nil. A Server will be converted to the default group of that server. Nil will be converted to the default group of the default Server.</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>outbus </b>- the output bus to play the audio out on. This is equivalent to Out.ar(outbus, theoutput). The default is 0.</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>fadeTime</b> - a fadein time. The default is 0.02 seconds, which is just enough to avoid a click. This will also be the fadeout time for a release if you do not specify.</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>addAction</b> - see <b>Synth</b> for a list of valid addActions. The default is <span class="s10">\addToHead</span><b>.</b></p>
-<p class="p12"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = { <span class="s2">|freq = 440|</span> <span class="s2">SinOsc</span>.ar(freq, 0, 0.3) }.play; <span class="s4">// this returns a Synth object;</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>x.set(</span><span class="s8">\freq</span><span class="s1">, 880); </span>// note you can set the freq argument</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>x.defName; </span>// the name of the resulting SynthDef (generated automatically in a cycle of 512)</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>x.release(4); </span>// fadeout over 4 seconds</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Many of the examples make use of the Function.play syntax.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Note that reusing such code in a <a href="../../ServerArchitecture/SynthDef.html"><span class="s2">SynthDef</span></a> requires the addition of an <a href="../../UGens/InOut/Out.html"><span class="s2">Out</span></a> ugen.</p>
-<p class="p12"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// the following two lines produce equivalent results</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s2">SinOsc</span>.ar(440, 0, 0.3) }.play(fadeTime: 0.0);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s8">\help_FuncPlay</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(440, 0, 0.3))}).play;</p>
-<p class="p18"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Function.play is often more convienent than SynthDef.play, particularly for short examples and quick testing. The latter does have some additional options, such as lagtimes for controls, etc. Where reuse and maximum flexibility are of greater importance, SynthDef and its various methods are usually the better choice.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>scope(numChannels, outbus, fadeTime, bufsize, zoom)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>As <b>play </b>above, but plays it on the internal <b>Server</b>, and calls Server-scope to open a scope window in which to view the output. Currently only works on OSX.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>numChannels</b> - The number of channels to display in the scope window, starting from <b>outbus</b>. The default is 2.</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>outbus </b>- The output bus to play the audio out on. This is equivalent to Out.ar(outbus, theoutput). The default is 0.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>fadeTime</b> - A fadein time. The default is 0.02 seconds, which is just enough to avoid a click.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>bufsize </b>- The size of the buffer for the ScopeView. The default is 4096.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>zoom</b> - A zoom value for the scope's X axis. Larger values show more. The default is 1.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s2">FSinOsc</span>.ar(440, 0, 0.3) }.scope(1)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>plot(duration, server, bounds, minval, maxval, parent)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Calculates <b>duration</b> in seconds worth of the output of this function, and plots it in a GUI window. Unlike <b>play</b> and <b>scope</b> it will not work with explicit Out Ugens, so your function should return a UGen or an <b>Array</b> of them. The plot will be calculated in realtime.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>duration</b> - The duration of the function to plot in seconds. The default is 0.01.</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>server </b>- The <b>Server</b> on which to calculate the plot. This must be running on your local machine, but does not need to be the internal server. If nil the default server will be used.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>bounds</b> - An instance of <b>Rect</b> or <b>Point</b> indicating the bounds of the plot window.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>minval</b> - the minimum value in the plot. Defaults to -1.0.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>maxval</b> - the maximum value in the plot. Defaults to 1.0.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>parent</b> - a window to place the plot in. If nil, one will be created for you.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s2">SinOsc</span>.ar(440) }.plot(0.01, bounds: <span class="s2">Window</span>.screenBounds);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ {<span class="s2">|i|</span> <span class="s2">SinOsc</span>.ar(1 + i)}.dup(7) }.plot(1);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Conversion</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>asSynthDef(rates, prependArgs, outClass, fadetime)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Returns a SynthDef based on this Function, adding a <b>Linen </b>and an <b>Out</b> ugen if needed.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>rates </b>- An Array of rates and lagtimes for the function's arguments (see <b>SynthDef</b> for more details).</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>outClass</b> - The class of the output ugen as a symbol. The default is <span class="s8">\Out</span>.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>fadeTime</b> - a fadein time. The default is 0.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>asDefName</b></p>
-<p class="p2"><br></p>
-<p class="p4">Performs asSynthDef (see above), sends the resulting def to the local server and returns the SynthDefs name. This is asynchronous.</p>
-<p class="p18"><br></p>
-<p class="p6">x = { <span class="s2">SinOsc</span>.ar(440, 0, 0.3) }.asDefName; <span class="s4">// this must complete first</span></p>
-<p class="p6">y = <span class="s2">Synth</span>(x);</p>
-<p class="p18"><br></p>
-<p class="p18"><br></p>
-<p class="p4"><b>asRoutine</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns a <a href="Routine.html"><span class="s2">Routine</span></a> using <b>this</b> as its func argument.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>r</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns a <a href="Routine.html"><span class="s2">Routine</span></a> using <b>this</b> as its func argument.</p>
-<p class="p7"><br></p>
-<p class="p6">a = r { 5.do { <span class="s2">|i|</span> i.rand.yield } };</p>
-<p class="p6">a.nextN(8);</p>
-<p class="p7"><br></p>
-<p class="p4"><b>p</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns a <a href="../../Streams-Patterns-Events/Patterns/Prout.html"><span class="s2">Prout</span></a> using <b>this</b> as its func argument.</p>
-<p class="p7"><br></p>
-<p class="p6">a = p { 5.do { <span class="s2">|i|</span> i.rand.yield } };</p>
-<p class="p6">x = a.asStream;</p>
-<p class="p6">x.nextN(8);</p>
-<p class="p7"><br></p>
-<p class="p4">This is useful for using <a href="../../Language/ListComprehensions.html"><span class="s9">ListComprehensions</span></a> in Patterns:</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">Pbind</span>(<span class="s8">\degree</span>, p {:[x, y].postln, x<-(0..10), y<-(0..10), (x + y).isPrime }, <span class="s8">\dur</span>, 0.3).play;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/FunctionDef.html b/Help/Core/Kernel/FunctionDef.html
deleted file mode 100644
index 284bd08..0000000
--- a/Help/Core/Kernel/FunctionDef.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #0000bf}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-</style>
-</head>
-<body>
-<p class="p1"><b>FunctionDef</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: </b><a href="../Object.html"><span class="s1"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p3">FunctionDefs contain code which can be executed from a <a href="Function.html"><span class="s1">Function</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s2">Accessing</span></b></p>
-<p class="p2"><br></p>
-<p class="p3">Even though it is possible to change the values in the various arrays that define the FunctionDef,</p>
-<p class="p3">you should not do it, unless you like to crash.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>code</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get the byte code array.</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s3">|a = 9, b = 10, c|</span> a + b }.def.code;</p>
-<p class="p6"><br></p>
-<p class="p3"><b>sourceCode</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get the source code string.</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s3">|a = 9, b = 10, c|</span> a + b }.def.sourceCode.postcs;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>context</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get the enclosing FunctionDef or Method.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>findReferences(aSymbol)</b></p>
-<p class="p2"><br></p>
-<p class="p3">return a list of all references to a given symbol.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>argNames</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get the Array of Symbols of the argument names.</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s3">|a = 9, b = 10, c|</span> a + b }.def.argNames;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>prototypeFrame</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get the array of default values for argument and temporary variables.</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s3">|a = 9, b = 10, c|</span> a + b }.def.prototypeFrame;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>varNames</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get the Array of Symbols of the local variable names.</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s3">|a = 9, b = 10, c|</span> var x = 9; a + b + x }.def.varNames;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>argumentString</b></p>
-<p class="p2"><br></p>
-<p class="p3">Return a string that contains<span class="Apple-converted-space">  </span>arguments and their default values for embedding in a string</p>
-<p class="p2"><br></p>
-<p class="p7">{ <span class="s3">|a = 9, b = 10, c|</span> a + b }.def.argumentString;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>makeEnvirFromArgs</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get the Array of Symbols of the local variable names.</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s3">|a = 9, b = 10, c|</span> a + b }.def.makeEnvirFromArgs;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s2">Utilities</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>dumpByteCodes</b></p>
-<p class="p2"><br></p>
-<p class="p3">"Disassemble" and post the FunctionDef's byte code instructions to the text window.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/FunctionList.html b/Help/Core/Kernel/FunctionList.html
deleted file mode 100644
index 558cf49..0000000
--- a/Help/Core/Kernel/FunctionList.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FunctionList<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>multiple function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: AbstractFunction</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">A <b>FunctionList</b> is a function that composes multiple functions into one. This allows allow to deal transparently with several functions as if they were one and to append new functions at a later point. The functions are evaluated in the order they have in the FunctionList's array, which is by default the order in which they have been added to it.</p>
-<p class="p2"><br></p>
-<p class="p1">See the <a href="../../Language/Functions.html"><span class="s2">Functions</span></a> help file for a basic introduction.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(functions)</b><span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>create a new instance. <i>functions</i> is an array of functions or objects</p>
-<p class="p2"><br></p>
-<p class="p1"><b>array</b><span class="Apple-tab-span">	</span>return the FunctionList's array. New functions can be added to the array dierctly, e.g.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = FunctionList(...some functions);<span class="Apple-converted-space">  </span>x.array = x.array.insert(2, aFunction);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>array_(array)</b><span class="Apple-tab-span">	</span>set the array of the FunctionList.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>addFunc(function, function ..)</b><span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>This message is used to be able to add to <b>an Object</b>, to a <b>Function</b>, or to a <b>FunctionList</b>.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>nil.addFunc returns a function, if only one function is passed in the argument.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>function.addFunc then returns a FunctionList.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>removeFunc(function)</b>, remove a function from the list.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>returns <b>the last function</b> when only one function is left.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>returns <b>nil</b> when the last function was removed.</p>
-<p class="p2"><br></p>
-<p class="p1">addFunc and removeFunc are implemented for <b>Nil</b>, <b>Object</b> and <b>FunctionList</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>nil.addFunc(f): <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns f</p>
-<p class="p1"><span class="Apple-tab-span">	</span>obj.addFunc(f): <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns FunctionList([obj, f])</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>nil.removeFunc(f)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns nil</p>
-<p class="p1"><span class="Apple-tab-span">	</span>obj.removeFunc(f)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns nil, if f === obj, else obj is returned</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p5"><br></p>
-<p class="p6">a = <span class="s3">nil</span>;</p>
-<p class="p6">a = a.addFunc { <span class="s3">|x="", y=""|</span> <span class="s4">"this % is an % example\n"</span>.postf(x, y); 1 };</p>
-<p class="p6">a.postln;</p>
-<p class="p6">a = a.addFunc { <span class="s3">|x="", y=""|</span> <span class="s4">"there is no % that is %\n"</span>.postf(x, y); 2 };</p>
-<p class="p6">a.value;</p>
-<p class="p7"><span class="s5">a.value(</span>"text"<span class="s5">, </span>"extraordinary well written"<span class="s5">)</span></p>
-<p class="p6">a.valueArray([<span class="s4">"x"</span>, <span class="s4">"y"</span>]);</p>
-<p class="p5"><br></p>
-<p class="p4">// Function:do vs FunctionList:do (same)</p>
-<p class="p6">a.do { <span class="s3">|x|</span> x.value };</p>
-<p class="p6">{ 4 }.do { <span class="s3">|x|</span> x.value.postln }</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">().use {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~x = <span class="s4">"array"</span>;</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span>~y = </span>"ominous"<span class="s5">;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.valueEnvir;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.valueEnvir(<span class="s4">"list"</span>);</p>
-<p class="p6">}</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">// removing a function</p>
-<p class="p6">x = { <span class="s4">"removal test"</span>.postln };</p>
-<p class="p6">a.addFunc(x);</p>
-<p class="p6">a.value;</p>
-<p class="p6">a = a.removeFunc(x);</p>
-<p class="p6">a.value;</p>
-<p class="p5"><br></p>
-<p class="p4">// mathematics</p>
-<p class="p6">a = <span class="s3">nil</span>;</p>
-<p class="p6">a = a.addFunc({ 1.0.rand }).addFunc({ [0, 1].choose });</p>
-<p class="p6">a = a.squared.linexp(0, 1, 1.0, 500);</p>
-<p class="p5"><br></p>
-<p class="p6">a.value;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">// compatibility with function multichannel expansion</p>
-<p class="p6">a = <span class="s3">nil</span>;</p>
-<p class="p6">a = a.addFunc { <span class="s3">|x=0|</span> if(x > 0) { 7 } { 1000.rand } };</p>
-<p class="p6">a = a.addFunc { <span class="s3">|x=0|</span> if(x < 0) { 17 } { -1000.rand } };</p>
-<p class="p6">a.value</p>
-<p class="p5"><br></p>
-<p class="p6">a = a.flop;</p>
-<p class="p6">a.value</p>
-<p class="p6">a.value([-1, 1])</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">// typical usage in a Document action</p>
-<p class="p4">// see also SCView: addAction example.</p>
-<p class="p5"><br></p>
-<p class="p6">d = <span class="s3">Document</span>.current;</p>
-<p class="p6">d.keyDownAction = { <span class="s4">"You touched the keyboard."</span>.postln };</p>
-<p class="p5"><br></p>
-<p class="p6">d.keyDownAction = d.keyDownAction.addFunc {:x, x<-(1..), :: <span class="s4">"already % times\n\n"</span>.postf(x) };</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">d.keyDownAction = <span class="s3">nil</span>;</p>
-<p class="p5"><br></p>
-<p class="p4">// even if you don't know if there is already an action defined</p>
-<p class="p4">// one can add one.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">d.keyDownAction = <span class="s3">nil</span>;</p>
-<p class="p6">d.keyDownAction = d.keyDownAction.addFunc {:x, x<-(1..), :: <span class="s4">"already % times\n\n"</span>.postf(x) };</p>
-<p class="p5"><br></p>
-<p class="p6">);</p>
-<p class="p5"><br></p>
-<p class="p6">d.keyDownAction = <span class="s3">nil</span>;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Interpreter.html b/Help/Core/Kernel/Interpreter.html
deleted file mode 100644
index 47ae333..0000000
--- a/Help/Core/Kernel/Interpreter.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {text-decoration: underline}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.s5 {font: 12.0px Helvetica; color: #000000}
-span.s6 {color: #0000ff}
-span.s7 {color: #bf0000}
-</style>
-</head>
-<body>
-<p class="p1"><b>Interpreter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">The interpreter defines a context in which interactive commands are compiled and executed.</p>
-<p class="p2"><br></p>
-<p class="p3">In the interpreter, <span class="s1">this</span> refers to the interpreter itself, e.g.:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">this</span>.postln</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b><span class="s1">Accessing</span></b></p>
-<p class="p2"><br></p>
-<p class="p3">The interpreter defines instance variables 'a' through 'z' which are always available in the interpreter. By convention, the variable 's' is used to hold the default <b>Server</b>. Assigning another value to 's' may cause some of the examples in the documentation to fail.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>clearAll</b></p>
-<p class="p2"><br></p>
-<p class="p3">set the values of the variables 'a' through 'z' to nil.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">x = 123;</p>
-<p class="p4">x.postln;</p>
-<p class="p4"><span class="s2">this</span>.clearAll;</p>
-<p class="p4">x.postln;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b><span class="s1">Compile & Interpret</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>interpret(aString)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Compile and execute a String.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">this</span><span class="s3">.interpret(</span>"(123 + 4000).postln"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>interpretPrint(aString)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Compile and execute a String, printing the result.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">this</span>.interpretPrint(<span class="s4">"123 + 4000"</span>);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>compile(aString)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Compile a String and return a Function.</p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p6"><span class="s5">z = </span><span class="s2">this</span><span class="s3">.compile(</span>"(123 + 4000).postln"<span class="s3">);</span></p>
-<p class="p4">z.postln;</p>
-<p class="p4">z.value;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>compileFile(pathName)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads the file at pathName, compiles it and returns a Function.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The file must contain a valid SuperCollider expression, naturally.</p>
-<p class="p3">This will not compile class definitions, only expressions.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>executeFile(pathName)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads the file at pathName, compiles it and executes it, returning the result.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The file must contain a valid SuperCollider expression, naturally.</p>
-<p class="p3">This will not compile class definitions, only expressions.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>cmdLine</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns the previosly interpreted code.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">1 + 2;</p>
-<p class="p4"><span class="s2">this</span>.cmdLine</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>codeDump</b></p>
-<p class="p2"><br></p>
-<p class="p3">this interpreter variable can be set to evaluate a function with any sucessfully compiled code.</p>
-<p class="p3">see e.g. the class <a href="../../Libraries/JITLib/extras/History.html"><span class="s6">History</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">a = [ ]; </span>// store all the code evaulated in a</p>
-<p class="p4"><span class="s2">this</span>.codeDump = { <span class="s2">|code|</span> a = a.add(code) };</p>
-<p class="p4">1 + 3;</p>
-<p class="p4">f = { <span class="s4">"hallo"</span> };</p>
-<p class="p4">a.postcs;</p>
-<p class="p8"><span class="s3">codeDump = </span><span class="s2">nil</span><span class="s3">; </span>// reset to nil.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>preProcessor</b></p>
-<p class="p2"><br></p>
-<p class="p3">can be used to modify code before it is interpreted. Given appropriate delimiters, this can be used to implement little languages.</p>
-<p class="p2"><br></p>
-<p class="p8">// silly but simple: understand a Saw for every SinOsc</p>
-<p class="p4"><span class="s2">this</span>.preProcessor = { <span class="s2">|code|</span> code.replace(<span class="s4">"SinOsc"</span>, <span class="s4">"Saw"</span>) };</p>
-<p class="p9"><br></p>
-<p class="p4">{ <span class="s2">SinOsc</span>.ar(200) * 0.1 }.play;</p>
-<p class="p9"><br></p>
-<p class="p4">preProcessor = <span class="s2">nil</span>; <span class="s7">// reset to nil.</span></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Main.html b/Help/Core/Kernel/Main.html
deleted file mode 100644
index f818a45..0000000
--- a/Help/Core/Kernel/Main.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #a41c14; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0018b8}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0018b8}
-span.s3 {color: #4d4d4d}
-span.s4 {font: 12.0px Helvetica}
-span.s5 {color: #606060}
-span.s6 {color: #356f14}
-span.s7 {font: 10.0px Monaco; color: #a41c14}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Main</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Process</b></p>
-<p class="p2"><br></p>
-<p class="p3">Main is the concrete instance of Process (the runtime environment for the virtual machine and interpreter).</p>
-<p class="p3">Main overrides some methods of Process. There are two methods of interest. One is named <b>startup</b> and is<span class="Apple-converted-space"> </span></p>
-<p class="p3">called after the class library has been compiled. The other is called <b>shutdown</b> which gets called when the library gets re-compiled.</p>
-<p class="p2"><br></p>
-<p class="p3">The singleton instance of Main is available through the special keyword <b>thisProcess</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p3">For example, to find out what platform you're on:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">thisProcess</span><span class="s1">.platform;<span class="Apple-tab-span">	</span></span>// --> e.g. "an OSXPlatform", "a LinuxPlatform", ...</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>startup</b></p>
-<p class="p2"><br></p>
-<p class="p3">called after the class library has been compiled. This calls the superclass' <b>startup</b>, which among other things initializes the <a href="../../Scheduling/AppClock.html"><span class="s2">AppClock</span></a> and the top-level <a href="../../Collections/Environment.html"><span class="s2">Environment</span></a>. Main's <b>startup</b> then stores <b>Server.default</b> in the interpreter variable <b>s</b>, sets the platform default's <a href="../../GUI/GUI-Tools/GUI.html"><span class="s2">GUI</span></a> kit, initializes the <a href="../../Control/GeneralHID.html"><span class="s2">GeneralHID</span></a> system, calls a <a href="../../Platform/Platform.html"><span class="s2">Platform</span></a> specific <b>startup</b> method (for example <b>OSXPlatform</b>'s startup opens the server windows), and finally invokes <b>StartUp.run.</b> To add your own startup functionalities, you could either edit the special startup-file (discussed in <a href="../../Extending and Customizing SC/Using-the-Startup-File.html"><span class="s2">Using-the-Startup-File</span></a>), or use <b>StartUp.add</b> as discussed in the <a href="../../Control/StartUp.html"><span class="s2">StartUp</span></a> help file.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>shutdown</b></p>
-<p class="p2"><br></p>
-<p class="p3">called after SuperCollider is quit or the class library is about to be re-compiled. This will quit all audio <a href="../../ServerArchitecture/Server.html"><span class="s2">Server</span></a> instances, perform a platform specific shutdown (e.g. on Mac OS X, the HID service is released), finally Process' <b>shutdown</b> method is called, resulting successive calls to <b>UI.shutdown</b>, <a href="../../Control/NetAddr.html"><span class="s2">NetAddr</span></a><b>.disconnectAll</b>, <a href="../../Files/File.html"><span class="s2">File</span></a><b>.closeAll</b>, and <b>Archive.write</b>. To register your own shutdown code, use a call like this:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">UI</span>.registerForShutdown({ <span class="s3">"Good bye!!"</span>.postln });</p>
-<p class="p2"><br></p>
-<p class="p3"><b>sleep / wake</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>sleepAction</b> and <b>wakeAction</b> are called when the computer was set in sleep mode / awoke from sleep mode.</p>
-<p class="p3">(currently OS X only)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">thisProcess</span>.sleepAction =<span class="Apple-converted-space">  </span>{ <span class="s5">"good night,"</span>.postln };</p>
-<p class="p2"><br></p>
-<p class="p3"><b>isSleeping</b></p>
-<p class="p3">returns true if computer was just set to sleep. (currently OS X only)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">thisProcess</span>.isSleeping;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>run</b></p>
-<p class="p2"><br></p>
-<p class="p3">Override this to do whatever you want, e. g. add a class extension file like this to the class library:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>+ <span class="s2">Main</span> {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>run { <span class="s3">"myPatch.rtf"</span>.load }</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>recvOSCfunc</b></p>
-<p class="p2"><br></p>
-<p class="p3">You can store a custom function in this field that gets called whenever SuperCollider language (the client) receives an OSC message. That is very useful for debugging OSC-communication with other applications (e.g. Processing, Pure Data, but also the scsynth server).</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// post all incoming traffic except the server status messages</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>thisProcess<span class="s1">.recvOSCfunc = { </span>|time, replyAddr, msg|<span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(msg[0] != <span class="s6">'/status.reply'</span>) {</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"At time %s received message % from %\n"<span class="s1">.postf( time, msg, replyAddr )</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} <span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// stop posting.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">thisProcess</span>.recvOSCfunc = <span class="s2">nil</span>;</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p3"><b>pid</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns the operating system's <i>pid</i> (process ID) for the process.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>thisProcess<span class="s1">.pid</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><>preferencesAction</b> - OSX SC.app only.</p>
-<p class="p2"><br></p>
-<p class="p3">A function to evaluate when the SuperCollider preferences menu is selected.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">thisProcess</span>.preferencesAction = { <span class="s2">arg</span> process; <span class="s2">SCWindow</span>.new.front; }</p>
-<p class="p2"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p3"><b>*version, *versionAtLeast, *versionAtMost</b></p>
-<p class="p2"><br></p>
-<p class="p3">These class methods tell you which version of SuperCollider you are running and whether that version complies to your required minimum / maximum settings:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// the current version as a human readable string</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Main</span>.version;<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// check if we are running at least version 3.1 (returns true or false)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Main</span>.versionAtLeast( 3, 1 );</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// check if we are running version 3.1 or older (returns true or false)<span class="s1"><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Main</span>.versionAtMost( 3, 1 );<span class="s7"><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>recompile</b></p>
-<p class="p2"><br></p>
-<p class="p3">Recompiles the class library. This is equivalent to restarting SC. Currently OSX (SuperCollider.app) only.</p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Method.html b/Help/Core/Kernel/Method.html
deleted file mode 100644
index 85410ab..0000000
--- a/Help/Core/Kernel/Method.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {text-decoration: underline}
-</style>
-</head>
-<body>
-<p class="p1"><b>Method</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Function</b></p>
-<p class="p2"><br></p>
-<p class="p3">A Method is code that is a part of the set of operations upon instances of a Class.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="s1">Accessing</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ownerClass</b></p>
-<p class="p2"><br></p>
-<p class="p3">The Class for which the method is part of the implementation.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>name</b></p>
-<p class="p2"><br></p>
-<p class="p3">A Symbol which is the name of the Method.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>primitiveName</b></p>
-<p class="p2"><br></p>
-<p class="p3">A Symbol which contains the name of the primitive function that implements the Method, if</p>
-<p class="p3">there is one.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Process.html b/Help/Core/Kernel/Process.html
deleted file mode 100644
index a2092ab..0000000
--- a/Help/Core/Kernel/Process.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-</style>
-</head>
-<body>
-<p class="p1"><b>Process</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">A Process is the runtime environment for the virtual machine and interpreter.</p>
-<p class="p3">It has a subclass named Main which is where you should override the methods</p>
-<p class="p3">of Process. There are two methods of interest. One is named 'startup' and is<span class="Apple-converted-space"> </span></p>
-<p class="p3">called after the class library has been compiled. The other is named 'run' and</p>
-<p class="p3">is called when the user chooses the Run menu command.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>startup</b></p>
-<p class="p2"><br></p>
-<p class="p3">called after the class library has been compiled. Override this in class Main to do whatever you want.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>run</b></p>
-<p class="p2"><br></p>
-<p class="p3">called when the user chooses the Run menu command. Override this in class Main to do whatever you want.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*tailCallOptimize</b></p>
-<p class="p2"><br></p>
-<p class="p3">Returns a Boolean indicating whether tail call optimization is on. The default is on.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*tailCallOptimize_(aBoolean)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Turns tail call optimization on or off. Setting this to false can help with debugging by including intermediate levels in an error backtrace.</p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/RawPointer.html b/Help/Core/Kernel/RawPointer.html
deleted file mode 100644
index 4cce18e..0000000
--- a/Help/Core/Kernel/RawPointer.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-</style>
-</head>
-<body>
-<p class="p1"><b>RawPointer</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">A class used to hold raw pointers from the host environment.<span class="Apple-converted-space"> </span></p>
-<p class="p3">No instance variables, no methods.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Routine.html b/Help/Core/Kernel/Routine.html
deleted file mode 100644
index 7f1dba3..0000000
--- a/Help/Core/Kernel/Routine.html
+++ /dev/null
@@ -1,372 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0016bd}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #184dd8}
-span.s2 {color: #0016bd}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.s5 {color: #2553d3}
-span.s6 {color: #0042e7}
-span.s7 {color: #2b7000}
-span.s8 {color: #ae1a19}
-span.s9 {text-decoration: underline ; color: #001bec}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Routine</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: Thread</b></p>
-<p class="p2"><br></p>
-<p class="p3">Routines are functions that can return in the middle and then resume where<span class="Apple-converted-space"> </span></p>
-<p class="p3">they left off when called again. Routines can be used to implement co-routines</p>
-<p class="p3">as found in Scheme and some other languages.</p>
-<p class="p3">Routines are useful for writing things that behave like Streams.</p>
-<p class="p3">Routines inherit behaviour for math operations and filtering from <a href="../../Streams-Patterns-Events/Stream.html"><span class="s1">Stream</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(func, stackSize, seed)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Creates a Routine instance with the given function.</p>
-<p class="p3">The stackSize and random seed may be overridden if desired.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s2">Routine</span>.new({ 1.yield; 2.yield; });</p>
-<p class="p4">a.next.postln;</p>
-<p class="p4">a.next.postln;</p>
-<p class="p4">a.next.postln;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>value(inval)</b></p>
-<p class="p3"><b>resume(inval)</b></p>
-<p class="p3"><b>next(inval)</b></p>
-<p class="p2"><br></p>
-<p class="p3">These are all synonyms for the same method.</p>
-<p class="p2"><br></p>
-<p class="p3">The Routine function is either started if it has not been called yet, or it is<span class="Apple-converted-space"> </span></p>
-<p class="p3">resumed from where it left off. The argument inval is passed as the argument</p>
-<p class="p3">to the Routine function if it is being started, or as the result of the yield</p>
-<p class="p3">method if it is being resumed from a yield. The result of the method will be</p>
-<p class="p3">what the Routine yields.</p>
-<p class="p2"><br></p>
-<p class="p3">There are basically 2 conditions for a Routine: one is when the routine starts. The other case is<span class="Apple-converted-space"> </span></p>
-<p class="p3">that the routine continues after it has yielded.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">When the routine starts (by calling the above methods), you are passing in a first inval.<span class="Apple-converted-space"> </span></p>
-<p class="p3">This inval is accessible as the routine function argument:</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">Routine</span> { <span class="s2">arg</span> inval;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval.postln;</p>
-<p class="p5"><span class="s3">}.value(</span>"hello routine"<span class="s3">);</span></p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3">When there is a yield in the routine, the next time you call <i>next</i> (or synonym), the routine continues</p>
-<p class="p3">from there, and you get a chance to pass in a value from the outside. To access that value within the</p>
-<p class="p3">continuing routine, you have to assign the <b><i>result of the yield call</i></b> to a variable:</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">r = <span class="s2">Routine</span> { <span class="s2">arg</span> inval;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> valuePassedInbyYield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>valuePassedInbyYield = 123.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>valuePassedInbyYield.postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3">r.value(</span>"hello routine"<span class="s3">);</span></p>
-<p class="p5"><span class="s3">r.value(</span>"goodbye world"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Typically the name <i>inval</i> (or inevent) is reused, instead of declaring a variable like "valuePassedInbyYield":</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">r = <span class="s2">Routine</span> { <span class="s2">arg</span> inval;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval = 123.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval.postln;</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3">r.value(</span>"hello routine"<span class="s3">);</span></p>
-<p class="p5"><span class="s3">r.value(</span>"goodbye world"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Typically a routine uses a multiple yield, in which the inval is reassigned repeatedly:</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">r = <span class="s2">Routine</span> { <span class="s2">arg</span> inval;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>5.do { <span class="s2">arg</span> i;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = (i + 10).yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p4">(</p>
-<p class="p4">5.do {</p>
-<p class="p4"><span class="Apple-tab-span">	</span>r.value(<span class="s4">"hello routine"</span>).postln;</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>reset</b></p>
-<p class="p2"><br></p>
-<p class="p3">Causes the Routine to start from the beginning next time it is called.</p>
-<p class="p3">A Routine cannot reset itself except by calling the yieldAndReset method.</p>
-<p class="p2"><br></p>
-<p class="p3">See also in class <b>Object :</b></p>
-<p class="p3"><b>yield(outval)</b></p>
-<p class="p3"><b>yieldAndReset(outval)</b></p>
-<p class="p3"><b>alwaysYield(outval)</b></p>
-<p class="p2"><br></p>
-<p class="p3">If a Routine's function returns then it will always yield nil until reset.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>play(clock, quant)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clock</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a Clock, <b>TempoClock</b> by default</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>quant</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see the <a href="../../Scheduling/Quant.html"><span class="s5">Quant</span></a> helpfile</p>
-<p class="p2"><br></p>
-<p class="p3">In the SuperCollider application, a Routine can be played using a Clock, as can any Stream.</p>
-<p class="p3">every time the Routine yields, it should do so with a float, the clock will interpret that, usually</p>
-<p class="p3">pausing for that many seconds, and then resume the routine, passing it it the clock's current time.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>using Object-idle:<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>idle(time)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>within a routine, return values until this time is over. Time is measured relative to the thread's clock.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>(see <a href="Routine.html"><span class="s6">Routine</span></a>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// for 6 seconds, return 200, then continue</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>r = <span class="s2">Routine</span> {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>199.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>189.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>200.idle(6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>199.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>189.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>fork {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r.value.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// the value can also be a stream or a function</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>r = <span class="s2">Routine</span> {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>199.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>189.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Routine</span> { 100.do { <span class="s2">|i|</span> i.yield } }.idle(6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>199.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>189.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>fork {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r.value.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Accessible instance variables</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><i>Routine</i> inherits from <i>Thread</i>, which allows access to some of its state:</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>beats</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>return the elapsed beats (logical time) of the routine. The beats do not proceed when the routine is</p>
-<p class="p3"><span class="Apple-tab-span">	</span>not playing.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b>seconds</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>return the elapsed seconds (logical time) of the routine. The seconds do not proceed when the routine is</p>
-<p class="p3"><span class="Apple-tab-span">	</span>not playing, it is the converted beat value.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>clock</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>return the thread's clock. If it has not played, it is the SystemClock.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">r = <span class="s2">Routine</span> { <span class="s2">arg</span> inval;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// thisThread refers to the routine.</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>postf(</span>"beats: % seconds: % time: % \n"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">thisThread</span>.beats, <span class="s2">thisThread</span>.seconds, <span class="s2">Main</span>.elapsedTime</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">r.stop;</p>
-<p class="p4">r.beats;</p>
-<p class="p4">r.seconds;</p>
-<p class="p4">r.clock;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Routine Example:</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> r, outval;</p>
-<p class="p4">r = <span class="s2">Routine</span>.new({ <span class="s2">arg</span> inval;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(<span class="s4">"->inval was "</span> ++ inval).postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval = 1.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(<span class="s4">"->inval was "</span> ++ inval).postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval = 2.yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(<span class="s4">"->inval was "</span> ++ inval).postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inval = 99.yield;</p>
-<p class="p4">});</p>
-<p class="p6"><br></p>
-<p class="p4">outval = r.next(<span class="s7">'a'</span>);</p>
-<p class="p4">(<span class="s4">"<-outval was "</span> ++ outval).postln;</p>
-<p class="p4">outval = r.next(<span class="s7">'b'</span>);</p>
-<p class="p4">(<span class="s4">"<-outval was "</span> ++ outval).postln;</p>
-<p class="p4">r.reset; <span class="s4">"reset"</span>.postln;</p>
-<p class="p4">outval = r.next(<span class="s7">'c'</span>);</p>
-<p class="p4">(<span class="s4">"<-outval was "</span> ++ outval).postln;</p>
-<p class="p4">outval = r.next(<span class="s7">'d'</span>);</p>
-<p class="p4">(<span class="s4">"<-outval was "</span> ++ outval).postln;</p>
-<p class="p4">outval = r.next(<span class="s7">'e'</span>);</p>
-<p class="p4">(<span class="s4">"<-outval was "</span> ++ outval).postln;</p>
-<p class="p4">outval = r.next(<span class="s7">'f'</span>);</p>
-<p class="p4">(<span class="s4">"<-outval was "</span> ++ outval).postln;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p7">// wait</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> r;</p>
-<p class="p9"><span class="s3">r = </span>Routine<span class="s3"> {</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>10.do({ <span class="s2">arg</span> a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.postln;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Often you might see Wait being used to pause a routine</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// This waits for one second between each number</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// Wait half second before saying we're done</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">"done"</span>.postln;</p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p7">// waitUntil</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> r;</p>
-<p class="p9"><span class="s3">r = </span>Routine<span class="s3"> {</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>var times = { rrand(1.0, 10.0) }.dup(10) + thisThread.beats;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>times = times.sort;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>times.do({ <span class="s2">arg</span> a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>waitUntil(a);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// Wait half second before saying we're done</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">"done"</span>.postln;</p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// Using Routine to set button states on the fly.</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> update, w, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">SCWindow</span>.new(<span class="s4">"State Window"</span>, <span class="s2">Rect</span>(150,<span class="s2">SCWindow</span>.screenBounds.height-140,380,60));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// a convenient way to set the button label</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update = {<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">|but, string|</span> but.states = [[string.asString, <span class="s2">Color</span>.black, <span class="s2">Color</span>.red]];<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>but.refresh;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">SCButton</span>(w, <span class="s2">Rect</span>(10,10,360,40));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.font_(<span class="s2">Font</span>(<span class="s4">"Impact"</span>, 24));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(b, </span>"there is only one state"<span class="s3">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if an action should do something different each time it is called, a routine is the<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// right thing to use. This is better than creating variables outside and setting them</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// from the action function to keep state from one action to the next</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action_(<span class="s2">Routine</span> { <span class="s2">|butt|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(15, 45).do { <span class="s2">|i|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(butt, <span class="s4">"%. there is still only 1 state"</span>.format(i + 2));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield; <span class="s8">// stop here</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p7">// drawing in a window dynamcially with <a href="../../GUI/Main-GUI/Pen.html"><span class="s9">Pen</span></a></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> w, much = 0.02, string, synth;</p>
-<p class="p6"><br></p>
-<p class="p4">w = <span class="s2">Window</span>.new(<span class="s4">"swing"</span>, <span class="s2">Rect</span>(100, 100, 300, 500)).front;</p>
-<p class="p4">w.view.background_(<span class="s2">Color</span>.new255(153, 255, 102).vary);</p>
-<p class="p6"><br></p>
-<p class="p4">string = <span class="s4">"swing "</span>.dup(24).join;</p>
-<p class="p6"><br></p>
-<p class="p4">w.drawHook = <span class="s2">Routine</span> {<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> i = 0;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> size = 40;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> func = { <span class="s2">|i, j|</span> sin(i * 0.07 + (j * 0.0023) + 1.5pi) * much + 1 };</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> scale;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.font = <span class="s2">Font</span>(<span class="s4">"Helvetica-Bold"</span>, 40);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop {<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = i + 1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>string.do {<span class="Apple-tab-span">	</span><span class="s2">|char, j|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scale = func.value(i, j).dup(6);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.new255(0, 120, 120).vary;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.matrix = scale * #[1, 0, 0, 1, 1, 0];</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stringAtPoint(char.asString,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>((size * (j % 9)) - 10) @ (size * (j div: 9))</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield </span>// stop here, return something unimportant</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">};</p>
-<p class="p6"><br></p>
-<p class="p4">fork { while { w.isClosed.not } { defer { w.refresh }; 0.04.wait; } };</p>
-<p class="p6"><br></p>
-<p class="p4">w.front;</p>
-<p class="p6"><br></p>
-<p class="p4">)</p>
-<p class="p10"><span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Thread.html b/Help/Core/Kernel/Thread.html
deleted file mode 100644
index 564b6ea..0000000
--- a/Help/Core/Kernel/Thread.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #842b1e}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #832519}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0033f1}
-span.s4 {color: #0000ff}
-span.s5 {color: #093caa}
-span.s6 {font: 12.0px Helvetica; color: #000000}
-span.s7 {font: 9.0px Monaco}
-span.s8 {text-decoration: underline ; color: #0039da}
-span.s9 {color: #0035aa}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Thread<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>represents an individual operating system thread<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Object.html"><span class="s3"><b>Object</b></span></a><b> : </b><a href="AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../../Streams-Patterns-Events/Stream.html"><b>Stream</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">Normally there is no need to instantiate a Thread, but its subclass <a href="Routine.html"><span class="s4">Routine</span></a> is very useful.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">It is wise not to fiddle with the source code for this class; see the warnings in the class file.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>thisThread</b> always returns the enclosing thread running the given code. A Thread is aware of its own attached clock and associated beats and seconds timing, and has an individual random number seed and exception handler.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="Routine.html"><span class="s4">Routine</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (func, stackSize)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a Thread. You will not typically do this yourself but as a result of creating Routines, for example.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>func </b>- A function with code for the thread to run.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stackSize </b>- defaults to 64 depth call stack.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s5">Thread</span>({"hello".postln;});</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.seconds; </span>//time of creation, cannot advance without a clock</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8"><br></p>
-<p class="p13"><b>Instance Methods</b></p>
-<p class="p8"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>beats</b> - return the elapsed beats (logical time) of the thread<b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>seconds</b> - return the elapsed seconds (logical time) of the thread.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clock</b> - return the thread's clock</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>isPlaying</b> - return true if it is playing</p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>thisThread.beats;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>thisThread.seconds;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>thisThread.clock;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>state</b> - The internal state values for a Thread instance can be polled:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>0 = not started</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7 = running</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8 = stopped</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Seeding the random number generator</b></p>
-<p class="p14"><br></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>see also: <a href="randomSeed.html"><span class="s8">randomSeed</span></a></p>
-<p class="p6"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>randSeed_ (seed)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>seed </b>- Set the random number generator seed using a single integer</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// inline example</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s9">thisThread</span>.randSeed_(4);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{1.0.rand2.postln};</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>randData</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get the three integer array which defines the internal basis for the random number generator.<span class="Apple-converted-space">  </span>You can use this to get back the exact same random number sequence, and it provides a mechanism for automatic replay for generative music.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// inline example</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = this<span class="s5">Thread</span>.randData;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{1.0.rand2.postln};<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>randData_ (data)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get the three integer array which defines the internal basis for the random number generator. Equivalent to load for a generative music piece, as long as the program is the same as last time!<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>data </b>- three integer array in the format previously obtained from the getter function.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// each time the seed is reset, the random number generation should give the same sequence</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">thisThread</span>.randData_(<span class="s9">Int32Array</span>[ -662787342, 1546785953, 1661466823 ]);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{1.0.rand2.postln};</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/Thunk.html b/Help/Core/Kernel/Thunk.html
deleted file mode 100644
index f1f1173..0000000
--- a/Help/Core/Kernel/Thunk.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.s5 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Thunk<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> unevaluated value</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: AbstractFunction</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Thunk(function)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>function<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>some function that returns the desired value</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b>value<span class="Apple-tab-span">	</span></b>return the value. If calculation is done, use previous value, otherwise do calculation.</p>
-<p class="p2"><b></b><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1">Thunk, <i>"past tense of think"</i>, can be used <span class="Apple-tab-span">	</span>when a calculation may, or may not have to be performed at a later point in time, and its value is needed several times. This is an example of lazy evaluation, and can be used to avoid unnecessary calculations and to make state immutable.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">// so for example, random values will result in a single instance:</p>
-<p class="p5">a = <span class="s2">Thunk</span>({ <span class="s3">\done</span>.postln; rrand(2.0, 8.0) });</p>
-<p class="p4"><span class="s4">a.value; </span>// posts "done"</p>
-<p class="p5">a.value;</p>
-<p class="p6"><br></p>
-<p class="p4">// it is an AbstractFunction, so one can use it for math operations:</p>
-<p class="p6"><br></p>
-<p class="p5">a = <span class="s2">Thunk</span>({ rrand(2.0, 8.0) });</p>
-<p class="p5">b = a * 5 / (a - 1);</p>
-<p class="p5">b.value;</p>
-<p class="p6"><br></p>
-<p class="p4">// lazy evaluation</p>
-<p class="p6"><br></p>
-<p class="p5">a = <span class="s2">Thunk</span>({ <span class="s3">\done1</span>.postln; <span class="s2">Array</span>.fill(10000, { <span class="s2">|i|</span> i + 6 % 5 * i / 2 }) }); <span class="s5">// some calculation.</span></p>
-<p class="p5">b = <span class="s2">Thunk</span>({ <span class="s3">\done2</span>.postln;<span class="s2">Array</span>.fill(10000, { <span class="s2">|i|</span> i + 5 % 6 * i / 3 }) });<span class="s5">// some other calculation.</span></p>
-<p class="p5">c = [a, b].choose + 700;</p>
-<p class="p4"><span class="s4">(c * c * c).value; </span>// caclulation happens here, and only once.</p>
-<p class="p6"><br></p>
-<p class="p4">// compare to a function:</p>
-<p class="p6"><br></p>
-<p class="p5">a = { <span class="s3">\done1</span>.postln; <span class="s2">Array</span>.fill(10000, { <span class="s2">|i|</span> i + 6 % 5 * i / 2 }) }; <span class="s5">// some calculation.</span></p>
-<p class="p5">b = { <span class="s3">\done2</span>.postln;<span class="s2">Array</span>.fill(10000, { <span class="s2">|i|</span> i + 5 % 6 * i / 3 }) };<span class="s5">// some other calculation.</span></p>
-<p class="p5">c = [a, b].choose + 700;</p>
-<p class="p4"><span class="s4">(c * c * c).value; </span>// calculation happens here, but 3 times (for each c)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/initClass.html b/Help/Core/Kernel/initClass.html
deleted file mode 100644
index d35661a..0000000
--- a/Help/Core/Kernel/initClass.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0029ae}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #882e1b}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-span.s1 {color: #0000ff}
-span.s2 {color: #000000}
-span.s3 {color: #0029ae}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>*initClass</b></p>
-<p class="p2"><br></p>
-<p class="p3">see also: <a href="Class.html"><span class="s1">Class</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">When SuperCollider starts up, just after it has compiled the library, it initializes all the classes from <a href="../Object.html"><span class="s1">Object</span></a> down, a depth first traversal of subclasses.</p>
-<p class="p2"><br></p>
-<p class="p3">In this method, any class that requires it may initalize classvars or other resources.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">In some cases you will require another class to be initalized before you can initalize your own.<span class="Apple-converted-space">  </span>You may depend on its resources (a classvar).<span class="Apple-converted-space">  </span>This can be accomplished by:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">YourClass<span class="s2"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>*initClass {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Class</span>.initClassTree(<span class="s3">OtherClass</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>..</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>..</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>..</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5">}</p>
-<p class="p2"><br></p>
-<p class="p3">Each class will be inited once, and the OtherClass will have all of its subclasses inited before the method returns.</p>
-<p class="p2"><br></p>
-<p class="p3">For those methods that need pre-initialized data (such as path names) should defer this function by using <a href="../../Control/StartUp.html"><span class="s1">StartUp</span></a>:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">YourClass<span class="s2"> {</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>*initClass {</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">StartUp</span>.add {</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>..</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>..</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9">}</p>
-<p class="p11"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Kernel/randomSeed.html b/Help/Core/Kernel/randomSeed.html
deleted file mode 100644
index 19d2329..0000000
--- a/Help/Core/Kernel/randomSeed.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 13.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001bb9}
-span.s6 {color: #2c7014}
-span.s7 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>random generator seed</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Every Thread in sclang has a (pseudo-) random number generator that is responsible for all <span class="Apple-tab-span">	</span>randomization within this thread. Each random number generator has its own seed (starting point) from which the series of values is generated. This seed can be set and after that, the randgen (being strictly deterministic) produces exactly the same numbers again.<span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p3">In order to save diskspace, you can reproduce any sequence of randomized data just by one <a href="../../Math/Integer.html"><span class="s2">Integer</span></a> number that you can write down in your notebook..</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">see also: [<a href="../../UGens/Random/RandSeed.html"><span class="s4">RandSeed</span></a>] [<a href="../../Streams-Patterns-Events/Patterns/Pseed.html"><span class="s4">Pseed</span></a>] [<a href="Thread.html"><span class="s4">Thread</span></a>]</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">// every thread, also a Routine, has a random generator seed:</p>
-<p class="p8">(</p>
-<p class="p9"><span class="s3">r = </span>Routine<span class="s3">({</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>loop({#[1,2,3,4,5].choose.yield })</p>
-<p class="p8">});</p>
-<p class="p8">r.randSeed = 1923;</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p7">// using the routine to fill an array</p>
-<p class="p8"><span class="s5">Array</span>.fill(7, r);</p>
-<p class="p2"><br></p>
-<p class="p7">// setting the random generator seed back to our initial seed</p>
-<p class="p8">r.randSeed = 1923;</p>
-<p class="p2"><br></p>
-<p class="p7">// causes this array to be identical</p>
-<p class="p8"><span class="s5">Array</span>.fill(7, r);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inheriting Seeds</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Also it is possible to set the seed of the running thread that<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>all threads started within will inherit.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5">thisThread</span>.randSeed = 1923;</p>
-<p class="p2"><br></p>
-<p class="p7">// create a function that returns a routine</p>
-<p class="p2"><br></p>
-<p class="p8">r = { <span class="s5">Routine</span>({</p>
-<p class="p8"><span class="Apple-tab-span">	</span>loop({#[1,2,3,4,5].choose.yield })</p>
-<p class="p8">}) };</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5">Array</span>.fill(7, r.value);</p>
-<p class="p2"><br></p>
-<p class="p7">// reset the seed</p>
-<p class="p8"><span class="s5">thisThread</span>.randSeed = 1923;</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5">Array</span>.fill(7, r.value);</p>
-<p class="p2"><br></p>
-<p class="p7">// use the seed to completely reproduce a sound:</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s5">SynthDef</span>(<span class="s6">\help_randomSeed</span>, { <span class="s5">arg</span> out=0, freq=440;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Line</span>.kr(1, 0, 0.3, doneAction:2) *<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Resonz</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Dust2</span>.ar([10, 10], 270) + <span class="s5">WhiteNoise</span>.ar(4),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq, 0.01)<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).send(s);</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5">SynthDef</span>(<span class="s6">\help_setRandomSeed</span>, { <span class="s5">arg</span> seed=1956, tbus=0.0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">RandSeed</span>.kr(tbus, seed);</p>
-<p class="p8">}).send(s);</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p7">// run a patch</p>
-<p class="p8">(</p>
-<p class="p10"><span class="s3">x = </span><span class="s5">Synth</span><span class="s3">(</span>\help_setRandomSeed<span class="s3">);</span></p>
-<p class="p9"><span class="s3">r = </span>Routine<span class="s3">({</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Synth</span>(<span class="s6">\help_randomSeed</span>, [<span class="s6">\freq</span>, rrand(440, 700)]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>})</p>
-<p class="p8">}).play;</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p7">// make a reset task</p>
-<p class="p2"><br></p>
-<p class="p8">(</p>
-<p class="p8">d = 1250;<span class="s7">// seed</span></p>
-<p class="p8">t = <span class="s5">Task</span>({</p>
-<p class="p8"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s6">\seed</span>, d, <span class="s6">\tbus</span>, 1.0); r.randSeed = d;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s6">\tbus</span>, 0.0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.9.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>})</p>
-<p class="p8">});</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p7">// sound starts to loop</p>
-<p class="p8">t.start;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s3">d = 1251; </span>// different loop</p>
-<p class="p8">d = 1925;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">// sound is just like random again, not interested in anything..</p>
-<p class="p8">t.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/NAryOpFunction.html b/Help/Core/NAryOpFunction.html
deleted file mode 100644
index 2c37634..0000000
--- a/Help/Core/NAryOpFunction.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0024f8}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #bf0000}
-span.s4 {font: 12.0px Helvetica; color: #0024f8}
-span.s5 {font: 12.0px Helvetica; color: #0000ff}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NAryOpFunction<span class="Apple-tab-span">	</span></b></span><b>represent a n-ary oparation on a function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: AbstractFunction</b></p>
-<p class="p2"><br></p>
-<p class="p1">Operating on functions instead of numbers, what results is not a result of the calculation, but a structure that represents that calculation.</p>
-<p class="p2"><br></p>
-<p class="p3">// example</p>
-<p class="p3"><span class="s2">a = 0.8.linexp(0, 1, 40, 20000); </span>// map (0..1) to exponentially to human frequency hearing range</p>
-<p class="p4">a = { b }.linexp(0, 1, 40, 20000); <span class="s3">// result is<span class="Apple-converted-space">  </span>a NAryOpFunction</span></p>
-<p class="p4">b = 0.1;</p>
-<p class="p3"><span class="s2">a.value; </span>// now it is evaluated, and the result is calculated</p>
-<p class="p4">b = 0.5;</p>
-<p class="p3"><span class="s2">a.value; </span>// again, with a different value.</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">see also: <a href="BinaryOpFunction.html"><span class="s4">BinaryOpFunction</span></a>, <a href="UnaryOpFunction.html"><span class="s4">UnaryOpFunction</span></a></span></p>
-<p class="p6"><span class="s2">related: <a href="../Streams-Patterns-Events/NAryOpStream.html"><span class="s4">NAryOpStream</span></a>, <a href="../Streams-Patterns-Events/Patterns/Pnaryop.html"><span class="s5">Pnaryop</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p3">// sound example</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s6">var</span> a = { 1.0.rand };</p>
-<p class="p4"><span class="s6">var</span> b = a.linexp(0, 1, 40, 20000);</p>
-<p class="p4">fork {</p>
-<p class="p4"><span class="Apple-tab-span">	</span>15.do {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(instrument: <span class="s7">\default</span>, freq: b.value).play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/Core/Nil.html b/Help/Core/Nil.html
deleted file mode 100644
index 7779ff2..0000000
--- a/Help/Core/Nil.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 42.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {color: #1032ee}
-span.s2 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Nil</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="Object.html"><span class="s1"><b>Object</b></span></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">Nil has a single instance named nil and is used to represent uninitialized data,</p>
-<p class="p3">bad values, or terminal values such as end-of-stream.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p5"><b>isNil</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Answers true because this <span class="s2">is</span> nil. In class Object this message is defined to answer false.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>notNil</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Answer false. In class Object this message answers true.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>? anObject</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>? means return first non-nil argument. Since this IS nil then return anObject.</p>
-<p class="p5"><span class="Apple-tab-span">	</span>In class Object, ? is defined to answer the receiver.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>?? aFunction</b></p>
-<p class="p5">If the receiver is nil, value the function and return the result.<span class="Apple-converted-space">  </span>Since this IS nil, then value the function and return the result. In class Object, ?? is defined to answer the receiver.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>add(value)</b></p>
-<p class="p5">Returns an array with the <b>value</b>. This makes it unecessary to initialize when adding to a variable.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>addAll(array)</b></p>
-<p class="p5">Returns an array with all the values. This makes it unecessary to initialize when adding to a variable.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>remove</b></p>
-<p class="p5">Returns nil. This makes it unecessary to initialize when adding to a variable.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>++ array</b></p>
-<p class="p5">Returns an array with all the values. This makes it unecessary to initialize when adding to a variable.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Dependancy</b></p>
-<p class="p2"><br></p>
-<p class="p3">All the messages for the Dependancy protocol (See class Object) are defined in class Nil<span class="Apple-converted-space"> </span></p>
-<p class="p3">to do nothing. This eliminates the need to check for nil when sending dependancy messages.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Other Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">Many other messages are defined in class Nil to do nothing. This eliminates the need to check for nil.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Object.html b/Help/Core/Object.html
deleted file mode 100644
index d228c40..0000000
--- a/Help/Core/Object.html
+++ /dev/null
@@ -1,646 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #737373}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd1713}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p22 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {color: #2c7014}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #606060}
-span.s9 {color: #ad140d}
-span.s10 {color: #cd1713}
-span.s11 {font: 12.0px Helvetica; color: #000000}
-span.s12 {color: #737373}
-span.s13 {color: #102ac3}
-span.s14 {color: #008225}
-span.s15 {color: #102ac2}
-span.s16 {color: #008325}
-span.s17 {font: 9.0px Monaco; color: #ad140d}
-span.s18 {font: 10.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Object<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>abstract superclass of all objects</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1">Object is the root class of all other classes. All objects are indirect instances of class Object.<span class="Apple-converted-space"> </span></p>
-<p class="p1">We call "receiver" the object the message is sent to: receiver.method(argument).</p>
-<p class="p3"><br></p>
-<p class="p1">Superclass: nil (Not the Nil class, but the nil instance).</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2"><b>See also:</b> <a href="Kernel/Class.html"><span class="s3">Class</span></a>, <a href="../Language/Intro-to-Objects.html"><span class="s3">Intro-to-Objects</span></a>, <a href="../Language/Classes.html"><span class="s3">Classes</span></a></span></p>
-<p class="p3"><br></p>
-<p class="p5"><b>Class Membership</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>class</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer the class of the receiver.</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5.class;</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>respondsTo(selector)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a Boolean whether the receiver understands the message selector. <b>selector</b> must be a <a href="Symbol.html"><span class="s4">Symbol</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>5.respondsTo(<span class="s6">'+'</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>isKindOf(aClass)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a <a href="Boolean.html"><span class="s4">Boolean</span></a> indicationg whether the receiver is a direct or indirect instance of <b>aClass</b>. Use of this message in code must be questioned, because it often indicates a missed opportunity to exploit object polymorphism.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>5.isKindOf(<span class="s4">Magnitude</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>isMemberOf(aClass)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a Boolean whether the receiver is a direct instance of <b>aClass</b>. Use of this message in code is almost always a design mistake.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>5.isMemberOf(<span class="s4">Magnitude</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>Accessing</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>size</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Different classes interpret this message differently.<span class="Apple-converted-space">  </span>Object always returns 0.</p>
-<p class="p8"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p5"><b>Copying</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>copy</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Make a copy of the receiver. The implementation of this message depends on the object's class.<span class="Apple-converted-space">  </span>In class Object, copy calls shallowCopy.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>shallowCopy</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Makes a copy of the object. The copy's named and indexed instance variables refer to the same objects as the receiver.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>deepCopy</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Recursively copies the object and all of the objects contained in the instance variables, and so on down the structure. This method works with cyclic graphs.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>copyImmutable</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>If object is immutable then return a shallow copy, else return receiver.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b>Conversion</b></p>
-<p class="p6"><br></p>
-<p class="p1"><span class="Apple-converted-space"> </span>To convert an object of a certain <a href="Kernel/Class.html"><span class="s4">Class</span></a> into a similar, Object provides a number of methods.</p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>as(class)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a similar new Object of a different class.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>[1, 2, 3].as(<span class="s4">Set</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pwhite</span>(0.0, 1.0, 10).as(<span class="s4">Set</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>asArray</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an Array with the receiver, unless it is an <a href="../Collections/Array.html"><span class="s4">Array</span></a> already.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>[1, 2, 3].asArray;<span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5.asArray;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>asCompileString</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a String that can be interpreted to reconstruct a copy of the receiver.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>For the complementary method, see <a href="../Collections/String.html"><span class="s4">String</span></a> interpret<span class="Apple-tab-span">	</span>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = { 10.do { 10.postln } };</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.asCompileString.postcs;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.postcs;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>cs</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>shortcut for <b>asCompileString</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ 10.do { 10.postln } }.cs;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b>Archiving</b></p>
-<p class="p6"><br></p>
-<p class="p1">Object implements methods for writing and retrieving objects from disk. Note that you cannot archive instances of <a href="Kernel/Thread.html"><span class="s4">Thread</span></a> and its subclasses (i.e. <a href="Kernel/Routine.html"><span class="s4">Routine</span></a>), or open Functions (i.e. a <a href="Kernel/Function.html"><span class="s4">Function</span></a> which refers to variables from outside its own scope).</p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>writeArchive(pathname)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Write an object to disk as a text archive. <b>pathname</b> is a <a href="../Collections/String.html"><span class="s4">String</span></a> containing the resulting file's path.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*readArchive(pathname)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Read in an object from a text archive. <b>pathname</b> is a <a href="../Collections/String.html"><span class="s4">String</span></a> containing the archive file's path.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s4">Array</span>.fill(100, { 100.0.rand });</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.writeArchive(<span class="s4">PathName</span>.tmp ++ <span class="s8">"myArray"</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s4">Object</span>.readArchive(<span class="s4">PathName</span>.tmp ++ <span class="s8">"myArray"</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a == b <span class="s9">// true</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>/////////</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// closed Function</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = { 1 + 2 };</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.writeArchive(<span class="s4">PathName</span>.tmp ++ <span class="s8">"myFunc"</span>); <span class="s9">// succeeds</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// open Function</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> num;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>num = 2;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = { num + 2 };</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.writeArchive(<span class="s4">PathName</span>.tmp ++ <span class="s8">"myFunc"</span>); <span class="s9">// fails</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p13"><b>Equality and Identity</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>== anotherObject</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>equality: </b>Answer whether the receiver equals <b>anotherObject</b>. The definition of equality depends on the class of the receiver. The default implementation in Object is to answer if the two objects are identical (see below).</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Note: </b>Whenever == is overridden in a class, <b>hash</b> should be overridden as well.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>5.0 == 5; <span class="s9">// true</span></p>
-<p class="p9"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>5.0 === 5; <span class="s9">// false</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = [1, 2, 3]; b = [1, 2, 3];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a == b; <span class="s9">// equal</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a === b; </span>// not identical</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"worth trying"<span class="s2"> == </span>"worth trying"<span class="s2">; </span><span class="s10">// equal</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>=== anotherObject</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>identity: </b>Answer whether the receiver is the exact same object as <b>anotherObject</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>5.0 === 5; <span class="s10">// false</span></p>
-<p class="p14"><span class="s11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"worth trying"<span class="s2"> === </span>"worth trying"<span class="s2">; </span><span class="s10">// not identical</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s12">'worth trying'</span><span class="s2"> === </span><span class="s12">'worth trying'</span><span class="s2">; </span>// identical (symbols are unique)</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>!= anotherObject</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>non-equality: </b>Answer whether the receiver does not equal <b>anotherObject</b>. The default implementation in Object is to answer if the two objects are not identical (see below).</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>fuzzyEqual(that, precision)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Retruns the degree of equality (in the range from 0 to 1) between two objects with regard to a given precision. Objects to compare must support max, substraction and division.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>5.0.fuzzyEqual(5.0, 0.5); <span class="s9">// 1 - full equality</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5.25.fuzzyEqual(5.0, 0.5); <span class="s9">// 0.5 - 50 % equality</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5.9.fuzzyEqual(5.0, 0.5); <span class="s9">// 0 - no equality</span></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>compareObject(that, instVarNames)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Tests if two Objects (of the same class) are the same in a certain respect: It returns true if <b>instVarNames</b> are equal in both. If none are given, all instance variables are tested (see also: <b>instVarHash</b>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s4">Pseq</span>([1, 2, 3], <span class="s4">inf</span>); b = <span class="s4">Pseq</span>([100, 200, 300], <span class="s4">inf</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.compareObject(b, [<span class="s6">\repeats</span>]); <span class="s9">// true</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.compareObject(b, [<span class="s6">\list</span>]); <span class="s9">// false</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>hash</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a code used to index into a hash table. This is used by <a href="../Collections/Dictionary.html"><span class="s4">Dictionary</span></a> and <a href="../Collections/Set.html"><span class="s4">Set</span></a> and their subclasses to implement fast object lookup.<span class="Apple-converted-space">  </span>Objects which are equal == should have the same hash values. Whenever == is overridden in a class, hash should be overridden as well.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = </span>"worth trying"<span class="s2">; b = </span>"worth trying"<span class="s2">;</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.hash;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.hash;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>identityHash</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a code used to index into a hash table. This method is implemented by a primitive and is not overridden. Objects which are identical === should have the same hash values.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">a = </span>"worth trying"<span class="s2">; b = </span>"worth trying"<span class="s2">;</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.identityHash;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.identityHash;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>instVarHash(instVarNames)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a combined hash value for the object's instance variables and the object's class. If none are given, all instance variables are tested (see also: <b>compareObject</b>).</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s13">Pseq</span>([1, 2, 3], <span class="s13">inf</span>); b = <span class="s13">Pseq</span>([100, 200, 300], <span class="s13">inf</span>);</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.instVarHash([<span class="s14">\repeats</span>]); <span class="s10">// same</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.instVarHash([<span class="s14">\repeats</span>]);</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.instVarHash([<span class="s14">\list</span>]); <span class="s10">// different</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.instVarHash([<span class="s14">\list</span>]);</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s15">Pseq</span>([1, 2, 3], <span class="s15">inf</span>); b = <span class="s15">Prand</span>([1, 2, 3], <span class="s15">inf</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.instVarHash([<span class="s16">\list</span>]); <span class="s10">// different</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.instVarHash([<span class="s16">\list</span>]);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p5"><b>Testing</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>isNil</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a <a href="Boolean.html"><span class="s4">Boolean</span></a> indicating whether the receiver is nil.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>notNil</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a <a href="Boolean.html"><span class="s4">Boolean</span></a> indicating whether the receiver is not nil.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>isNumber</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a <a href="Boolean.html"><span class="s4">Boolean</span></a> indicating whether the receiver is an instance of <a href="../Math/Number.html"><span class="s4">Number</span></a>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>isInteger</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a <a href="Boolean.html"><span class="s4">Boolean</span></a> indicating whether the receiver is an instance of <a href="../Math/Integer.html"><span class="s4">Integer</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>isFloat</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Answer a <a href="Boolean.html"><span class="s4">Boolean</span></a> indicating whether the receiver is an instance of <a href="../Math/Float.html"><span class="s4">Float</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>? anObject</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>If the receiver is nil then answer <b>anObject</b>, otherwise answer the receiver.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>?? aFunction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>If the receiver is nil, evaluate the <a href="Kernel/Function.html"><span class="s4">Function</span></a> and return the result.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>pointsTo(obj)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns true if receiver has a direct reference to obj.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = 9;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = [1, a, 6, 8];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = [1, b, 5];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.pointsTo(b); <span class="s9">// true</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.pointsTo(a); <span class="s9">// false</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s17"><span class="Apple-tab-span">	</span></span><b>mutable</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns true if receiver is mutable.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = #[1, 2, 3]; b = [1, 2, 3];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.mutable; <span class="s9">// false</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.mutable; <span class="s9">// true</span></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s17"><span class="Apple-tab-span">	</span></span><b>frozen</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns true if receiver is frozen.<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>switch(cases)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Object implements a switch<b> </b>method which allows for conditional evaluation with multiple cases. These are implemented as pairs of test objects (tested using if this == test.value) and corresponding functions to be evaluated if true. In order for switch to be inlined (and thus be as efficient as nested if statements) the matching values must be literal Integers, Floats, Chars, Symbols and the functions must have no variables or arguments.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">(</span></p>
-<p class="p19"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var</span> x, z;</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = [0, 1, 1.1, 1.3, 1.5, 2];</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>switch (z.choose.postln,</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, <span class="Apple-converted-space">  </span>{ <span class="s6">\no</span> },</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.1, { <span class="s6">\wrong</span> },</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.3, { <span class="s6">\wrong</span> },</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.5, { <span class="s6">\wrong</span> },</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2, <span class="Apple-converted-space">  </span>{ <span class="s6">\wrong</span> },</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="Apple-converted-space">  </span>{ <span class="s6">\true</span> }</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).postln;</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>or:</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">(</span></p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> x, z;</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = [0, 1, 1.1, 1.3, 1.5, 2];</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = switch (z.choose)</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{1} <span class="Apple-converted-space">  </span>{ <span class="s6">\no</span> }</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{1.1} { <span class="s6">\wrong</span> }</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{1.3} { <span class="s6">\wrong</span> }</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{1.5} { <span class="s6">\wrong</span> }</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{2} <span class="Apple-converted-space">  </span>{ <span class="s6">\wrong</span> }</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{0} <span class="Apple-converted-space">  </span>{ <span class="s6">\true</span> };</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.postln;</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Messaging</b></p>
-<p class="p11"><br></p>
-<p class="p1">Instead of directly sending a method to an object, a method may be invoked given a method selector only (a <a href="Symbol.html"><span class="s4">Symbol</span></a>). The other arguments may be provided by passing them directly, from an environment. If it si not known whether the receiver implements the metod, tryPerform only sends if it does, and superPerform invokes the method of the superclass.</p>
-<p class="p11"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>perform(selector ... args)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The selector argument must be a <a href="Symbol.html"><span class="s4">Symbol</span></a>. Sends the method named by the selector with the given arguments to the receiver.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>performList(selector, [args])</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The selector argument must be a <a href="Symbol.html"><span class="s4">Symbol</span></a>. Sends the method named by the selector with the given arguments to the receiver. If the last argument is a <a href="../Collections/List.html"><span class="s4">List</span></a> or an <a href="../Collections/Array.html"><span class="s4">Array</span></a>, then its elements are unpacked and passed as arguments.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = { <span class="s4">|a, b, c|</span> postf(<span class="s8">"% plus % plus % is %\n"</span>, a, b, c, a + b + c); <span class="s8">""</span> };</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.performList(<span class="s6">\value</span>, [1, 2, 3]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>performMsg([args])</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The argument must be a <a href="../Collections/List.html"><span class="s4">List</span></a> or <a href="../Collections/Array.html"><span class="s4">Array</span></a> whose first element is a <a href="Symbol.html"><span class="s4">Symbol</span></a> representing a method selector. The remaining elements are unpacked and passed as arguments to the method named by the selector.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = { <span class="s4">|a, b, c|</span> postf(<span class="s8">"% plus % plus % is %\n"</span>, a, b, c, a + b + c); <span class="s8">""</span> };</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.performMsg([<span class="s6">\value</span>, 1, 2, 3]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>performWithEnvir(selector, envir)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>selector: </b>A <a href="Symbol.html"><span class="s4">Symbol</span></a> representing a method selector.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>envir: </b>The remaining arguments derived from the environment and passed as arguments to the method named by the selector.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = { <span class="s4">|a, b, c|</span> postf(<span class="s8">"% plus % plus % is %\n"</span>, a, b, c, a + b + c); <span class="s8">""</span> };</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a.performWithEnvir(<span class="s6">\value</span>, (a: 1, c: 3, d: 4, b: 2));</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>performKeyValuePairs(selector, pairs)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>selector: </b>A <a href="Symbol.html"><span class="s4">Symbol</span></a> representing a method selector.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>pairs: </b>Array or List with key-value pairs.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = { <span class="s4">|a, b, c|</span> postf(<span class="s8">"% plus % plus % is %\n"</span>, a, b, c, a + b + c); <span class="s8">""</span> };</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a.performKeyValuePairs(<span class="s6">\value</span>, [<span class="s6">\a</span>, 1, <span class="s6">\b</span>, 2, <span class="s6">\c</span>, 3, <span class="s6">\d</span>, 4]);<span class="s5"><span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>tryPerform(selector ... args)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Like 'perform', but tryPerform passes the method to the receiver only if the receiver understands the method name. If the receiver doesn't implement that method, the result is nil. Note that this does not catch errors like 'try' does (see <a href="Exception.html"><span class="s4">Exception</span></a>). If the receiver does have a matching method but that method throws an error, execution will halt. But, 'tryPerform' is faster than 'try'.</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(a: 1, b: 2, c: 3).tryPerform(<span class="s6">\keysValuesDo</span>, { <span class="s4">|key, value|</span> [key, value].postln });</p>
-<p class="p6"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Array does not understand keysValuesDo -- result is nil</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 2, 3].tryPerform(<span class="s6">\keysValuesDo</span>, { <span class="s4">|key, value|</span> [key, value].postln });</p>
-<p class="p6"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Error occurs within keysValuesDo -- error is thrown back to halt execution</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(a: 1, b: 2, c: 3).tryPerform(<span class="s6">\keysValuesDo</span>, { <span class="s4">|key, value|</span> [key, value].flippityblargh });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>superPerform(selector, ... args)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Like perform, superPerform calls a method, however it calls the method on the superclass.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>selector: </b>A <a href="Symbol.html"><span class="s4">Symbol</span></a> representing a method selector.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>args: </b>Method arguments.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>superPerformList([args])</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Like performList, superPerformList calls a method, however it calls the method on the superclass.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>selector: </b>A <a href="Symbol.html"><span class="s4">Symbol</span></a> representing a method selector.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>args: </b>Method arguments. If the last argument is a List or an Array, then its elements are unpacked and passed as arguments.<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>multiChannelPerform(selector ... args)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>selector: </b>A <a href="Symbol.html"><span class="s4">Symbol</span></a> representing a method selector.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>args: </b>Method arguments, which if they contain an array, will call the method multiple times for each sub-element.</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = { <span class="s4">|a, b, c|</span> format(<span class="s8">"% plus % times % is %"</span>, a, b, c, a + b * c).quote; };</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a.multiChannelPerform(<span class="s6">\value</span>, [1, 10, 100, 1000], [2, 7, 9], [3, 7]);<span class="s5"><span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p5"><b>Unique Methods</b></p>
-<p class="p3"><br></p>
-<p class="p1">Method definitions not yet implemented may be added to an Object instance.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>addUniqueMethod(selector, function)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Add a unique method.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span></span>a = 5;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>a.addUniqueMethod(<span class="s6">\sayHello</span>, { <span class="s4">|to|</span> <span class="s8">"hello "</span> ++ to ++ <span class="s8">", I am 5"</span> });</p>
-<p class="p9"><span class="Apple-tab-span">	</span>a.sayHello;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>removeUniqueMethod(selector)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove a unique method.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>a.removeUniqueMethod(<span class="s6">\sayHello</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>a.sayHello;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>removeUniqueMethods</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove all unique methods of an Object.</p>
-<p class="p3"><br></p>
-<p class="p8"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>Dependancy</b></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>addDependant(aDependant)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Add <b>aDependant</b> to the receiver's list of dependants.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>removeDependant(aDependant)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove <b>aDependant</b> from the receiver's list of dependants.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>dependants</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an <a href="../Collections/IdentitySet.html"><span class="s4">IdentitySet</span></a> of all dependants of the receiver.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>changed(theChanger)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Notify the receiver's dependants that the receiver has changed. The object making the change should be passed as <b>theChanger</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>update(theChanged, theChanger)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>An object upon which the receiver depends has changed. <b>theChanged</b> is the object that changed and <b>theChanger</b> is the object that made the change.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>release</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove all dependants of the receiver. Any object that has had dependants added must be released in order for it or its dependants to get garbage collected.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b>Error Support</b></p>
-<p class="p2"><br></p>
-<p class="p1">Object implements a number of methods which throw instances of Error. A number of methods (e.g. doesNotUnderstand) are 'private' and do not normally need to be called directly in user code. Others, such as those documented below can be useful for purposes such as object oriented design (e.g. to define an abstract interface which will be implemented in subclasses) and deprecation of methods. The reserved keyword <b>thisMethod</b> can be used to refer to the enclosing method. See also <a href="Kernel/Method.html"><span class="s4">Method</span></a> and <a href="Kernel/Function.html"><span class="s4">Function</span></a> (for exception handling).</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>throw</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Throws the receiver as an Exception, which may or may not be caught and handled by any enclosing <a href="Kernel/Function.html"><span class="s4">Function</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>subclassResponsibility(method)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Throws a SubclassResponsibilityError. Use this to indicate that this method should be defined in all subclasses of the receiver.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>someMethod {</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">this</span>.subclassResponsibility(<span class="s4">thisMethod</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>shouldNotImplement(method)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Throws a ShouldNotImplementError. Use this to indicate that this inherited method should not be defined or used in the receiver.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>deprecated(method, alternateMethod)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Throws a DeprecatedError. Use this to indicate that the enclosing method has been replaced by a better one (possibly in another class), and that it will likely be removed in the future. Unlike other errors, DeprecatedError only halts execution if Error.debug == true. In all cases it posts a warning indicating that the method is deprecated and what is the recommended alternative.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>foo {</p>
-<p class="p22"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>this<span class="s2">.deprecated(</span>thisMethod<span class="s2">, </span>ThisOrSomeOtherObject<span class="s2">.findMethod(</span><span class="s6">\foo</span><span class="s2">);</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>... </span>// execution of this method will continue unless Error.debug == true</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s7"><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><b>Printing and Introspection</b></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>post</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Print a string representation of the receiver to the post window.</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">"hello"</span>.post; <span class="s8">"hello"</span>.post; "";</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>postln</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Print a string representation of the receiver followed by a <b>newline</b>.</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">"hello"</span>.postln; <span class="s8">"hello"</span>.postln; "";</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>postc</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Print a string representation of the receiver preceded by <b>comments</b>.</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">"hello"</span>.postc; <span class="s8">"hello"</span>.postc; "";</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>postcln</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Print a string representation of the receiver preceded by <b>comments</b>, followed by a <b>newline</b>.</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">"hello"</span>.postcln; <span class="s8">"hello"</span>.postcln; "";</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>postcs</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Print the <b>compile string</b> representation of the receiver, followed by a newline.</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">"hello"</span>.postcs; <span class="s8">"hello"</span>.postcs; "";</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>dump</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Print a detailed low level representation of the receiver to the post window.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>System Information</b></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>gcInfo</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Posts garbage collector information in a table format.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>flips</b>: the number of times the GC "flipped", i.e. when it finished incremental scanning of all reachable objects</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>collects</b>: the number of partial collections performed</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nalloc</b>: total number of allocations</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alloc</b>: total allocation in bytes</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>grey</b>: the number of "grey" objects, i.e. objects that point to reachable objects and are not determined to be (un)reachable yet</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Then for each size class: numer of black, white and free objects, total number of objects and the total set size.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>flips 241<span class="Apple-converted-space">  </span>collects 689096 <span class="Apple-converted-space">  </span>nalloc 40173511 <span class="Apple-converted-space">  </span>alloc 322496998 <span class="Apple-converted-space">  </span>grey 346541</p>
-<p class="p9"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>0<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">    </span>882<span class="Apple-converted-space">      </span>0 368573 <span class="Apple-converted-space">  </span>369455<span class="Apple-converted-space">    </span>2955640</p>
-<p class="p9"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>1<span class="Apple-converted-space">  </span>bwf t sz: <span class="Apple-converted-space">  </span>6197<span class="Apple-converted-space">    </span>122 5702377 <span class="Apple-converted-space">  </span>5708696 <span class="Apple-converted-space">  </span>91339136</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">    </span>947<span class="Apple-converted-space">      </span>4 1500009 <span class="Apple-converted-space">  </span>1500960 <span class="Apple-converted-space">  </span>48030720</p>
-<p class="p9"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>3<span class="Apple-converted-space">  </span>bwf t sz: <span class="Apple-converted-space">  </span>8056<span class="Apple-converted-space">  </span>65201 301800 <span class="Apple-converted-space">  </span>375057 <span class="Apple-converted-space">  </span>24003648</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4<span class="Apple-converted-space">  </span>bwf t sz: <span class="Apple-converted-space">  </span>4047<span class="Apple-converted-space">    </span>145 <span class="Apple-converted-space">  </span>3457 <span class="Apple-converted-space">    </span>7649 <span class="Apple-converted-space">    </span>979072</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">    </span>422<span class="Apple-converted-space">      </span>1<span class="Apple-converted-space">    </span>431<span class="Apple-converted-space">      </span>854 <span class="Apple-converted-space">    </span>218624</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">    </span>124<span class="Apple-converted-space">      </span>2 <span class="Apple-converted-space">    </span>72<span class="Apple-converted-space">      </span>198 <span class="Apple-converted-space">    </span>101376</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7<span class="Apple-converted-space">  </span>bwf t sz: 153504<span class="Apple-converted-space">      </span>1<span class="Apple-converted-space">      </span>0 <span class="Apple-converted-space">  </span>153505 <span class="Apple-converted-space">  </span>157189120</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8<span class="Apple-converted-space">  </span>bwf t sz: <span class="Apple-converted-space">    </span>22<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">      </span>0 <span class="Apple-converted-space">      </span>22<span class="Apple-converted-space">      </span>45056</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>9<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">      </span>5<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">        </span>5<span class="Apple-converted-space">      </span>20480</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">      </span>5<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">        </span>5<span class="Apple-converted-space">      </span>40960</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>12<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">      </span>2<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">        </span>2<span class="Apple-converted-space">      </span>65536</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>13<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">      </span>1<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">        </span>1<span class="Apple-converted-space">      </span>65536</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>19<span class="Apple-converted-space">  </span>bwf t sz:<span class="Apple-converted-space">      </span>1<span class="Apple-converted-space">      </span>0<span class="Apple-converted-space">      </span>3<span class="Apple-converted-space">        </span>4 <span class="Apple-converted-space">  </span>16777216</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tot bwf t sz: 174215<span class="Apple-converted-space">  </span>65476 7876722 <span class="Apple-converted-space">  </span>8116413 <span class="Apple-converted-space">  </span>341832120</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can also query the amount of free memory with Object.<b>totalFree</b> and dump the currently grey objects with Object.<b>dumpGrey</b>. More memory status methods are: Object.<b>largestFreeBlock</b>, Object..<b>gcDumpSet</b>, and Object.<b>gcSanity</b>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>Iteration</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>do(func)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Object evaluates the function with itself as an argument, returning the reasult. Different classes interpret this message differently. <span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>f = { <span class="s4">|x, i|</span> [x, i].postln; };</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 2, 3].do(f); <span class="s9">// Array.do</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do(f); </span>// Integer.do</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>($Q).do(f); <span class="s9">// Object.do</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s17"><span class="Apple-tab-span">	</span></span><b>generate(func, state)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Object iterates by the message <b>do</b>, sent to the receiver.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This method is used internally by list comprehensions.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>dup(n)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Duplicates the receiver <b>n</b> times, returning an array of n copies. Different classes interpret this message differently.<span class="Apple-converted-space">  </span>The shortcut <b>"!" </b>can be used in place.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8.dup(10);</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8 ! 10; </span>// same as above</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = [[1], [2], [3]].dup(5);</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x[0] === x[1]; </span>// false: copies receiver.</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x[0][0] === x[1][0] </span>// true: doesn't deepCopy receiver</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ 1.0.rand }.dup(5) </span>// other objects respond differently to dup</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p5"><b>Routine Support</b></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Objects support the basic interface of Stream, just returning itself in respone to the following messages:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>next</b>, <b>reset</b>, <b>stop</b>, <b>free</b>, <b>clear</b>, <b>removedFromScheduler</b>, <b>asStream</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>yield</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Must be called from inside a <a href="Kernel/Routine.html"><span class="s4">Routine</span></a><b>. </b>Yields control to the calling thread. The receiver is the result passed to the calling thread's method. The result of yield will be the value passed to the Routine's <b>next</b> method the next time it is called.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>yieldAndReset</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Must be called from inside a <a href="Kernel/Routine.html"><span class="s4">Routine</span></a><b>. </b>Yields control to the calling thread. The receiver is the result passed to the calling thread's method. The Routine is reset so that the next time it is called, it will start from the beginning. <b>yieldAndReset</b> never returns within the Routine.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>alwaysYield</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Must be called from inside a <a href="Kernel/Routine.html"><span class="s4">Routine</span></a><b>. </b>Yields control to the calling thread. The receiver is the result passed to the calling thread's method. The Routine, when called subsequently will always yield the receiver until it is reset. alwaysYield never returns within the Routine.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>embedInStream</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Yields the receiver</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>idle(time)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>within a routine, return values (the receiver) until this time is over. (for an example, see <a href="Kernel/Routine.html"><span class="s4">Routine</span></a>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Time is measured relative to the thread's clock.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>iter</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a <b>OneShotStream</b> with the receiver as return value.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>cyc(n)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Embeds the receiver in the stream n times (default: inf), each time resetting it.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>fin(n)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Calls next with the receiver n times only (default: 1), yielding the result.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>repeat(repeats)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Repeatedly embeds the receiver in the stream using a Pn (may thus be used for patterns and other objects alike)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>loop</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Indefinitely embeds the receiver in the stream<span class="Apple-converted-space"> </span></p>
-<p class="p11"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b>FunctionList</b></p>
-<p class="p6"><br></p>
-<p class="p1">The messages <b>addFunc</b>, <b>addFuncTo</b>, <b>removeFunc</b>, <b>removeFuncFrom</b> are supported by Object. See <a href="Kernel/Function.html"><span class="s4">Function</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Core/Ref.html b/Help/Core/Ref.html
deleted file mode 100644
index 8fcd96c..0000000
--- a/Help/Core/Ref.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #5e3529}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001db9}
-span.s1 {color: #1637a2}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {font: 12.0px Monaco}
-span.s5 {color: #0000ff}
-span.s6 {color: #1637a4}
-span.s7 {color: #426f0e}
-span.s8 {color: #001db9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Ref<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a reference to a value</b></p>
-<p class="p2"><b>superclass: AbstractFunction</b></p>
-<p class="p3"><br></p>
-<p class="p2">A Ref holds an object which may be retrieved and altered with the messages <b>value </b>and <b>value_(obj)</b>.<span class="Apple-converted-space">   </span></p>
-<p class="p2">The backquote ` is a unary operator that is equivalent to calling Ref.new(obj).</p>
-<p class="p3"><br></p>
-<p class="p2">Refs are most commonly used to prevent <i>multi-channel </i>expansion in SynthDefs and Patterns (see <b>Klank </b>for an example).</p>
-<p class="p2">Refs can also be used to simplify the coding of co-routines used in EventStreams (see <b>Proutine </b>for an example).</p>
-<p class="p3"><br></p>
-<p class="p2">example:<span class="Apple-converted-space">   </span></p>
-<p class="p3"><br></p>
-<p class="p4">x = <span class="s1">Ref</span>(<span class="s1">nil</span>);</p>
-<p class="p5"><span class="s2">z = obj.method(x);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// method puts something in reference</p>
-<p class="p5"><span class="s2">x.value.doSomething;<span class="Apple-tab-span">	</span></span>// retrieve value and use it</p>
-<p class="p6"><br></p>
-<p class="p2">Ref is also used as a quoting device to protect against multi channel expansion in certain UGens that require Arrays.</p>
-<p class="p3"><br></p>
-<p class="p7"><b><span class="s3">Class methods:</span></b></p>
-<p class="p3"><br></p>
-<p class="p2"><b>new(anObject)</b></p>
-<p class="p3"><br></p>
-<p class="p2">create a Ref of an object.</p>
-<p class="p3"><br></p>
-<p class="p2"><b>`anObject</b></p>
-<p class="p3"><br></p>
-<p class="p2">create a Ref of an object.</p>
-<p class="p3"><br></p>
-<p class="p7"><b><span class="s3">Instance methods:</span></b></p>
-<p class="p3"><br></p>
-<p class="p2"><b>dereference</b></p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span>Answer the value. This message is also defined in class Object where it just returns the receiver.<span class="Apple-converted-space">  </span>Therefore <span class="s4">anything.dereference</span> will remove a Ref if there is one. This is slightly different than the value message, because value will also cause functions to evaluate themselves whereas dereference will not.</p>
-<p class="p3"><br></p>
-<p class="p2"><b>asRef</b></p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span>Answers the receiver. In class Object this message is defined to create a Ref of the object.</p>
-<p class="p3"><br></p>
-<p class="p2"><b>value</b></p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span>Returns value.</p>
-<p class="p3"><br></p>
-<p class="p2"><b>value_(aValue)</b></p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span>Sets value.</p>
-<p class="p3"><br></p>
-<p class="p2"><b>get</b></p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span>Returns value.</p>
-<p class="p3"><br></p>
-<p class="p2"><b>set(aValue)</b></p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span>Sets value.</p>
-<p class="p3"><br></p>
-<p class="p2"><b>at (index)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b>Returns value.at(index)</p>
-<p class="p3"><br></p>
-<p class="p2"><b>put(index, value)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b>Executes value.put(index, value)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><b>seq(output)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b>this method is used to return values from within a Routine definition</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ this.value = output.embedInStream(this.value); }</p>
-<p class="p3"><br></p>
-<p class="p2"><b>asUGenInput</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b>Returns the Ref - this prevents multi-channel expansion in a SynthDef</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><b>asControlInput</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b>Returns the value - this is used when sending a Ref as a control value to a server Node.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><b>Typical uses of Ref:</b></p>
-<p class="p3"><br></p>
-<p class="p2"><b>preventing multi-channel expansion:</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p2">Consult <a href="../Other Topics/MultiChannel.html"><span class="s5">MultiChannel</span></a> for details on multi-channel expansion in SynthDefs.</p>
-<p class="p3"><br></p>
-<p class="p2">Refs prevent multi-channel expansion in a SynthDef, so the array below defines one Klank UGen rather than three.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s6">Klank</span>.ar(`[[800, 1071, 1153, 1723], <span class="s6">nil</span>, [1, 1, 1, 1]], <span class="s6">Impulse</span>.ar(2, 0, 0.1)) }.play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p2">Refs <span class="s3">cannot</span> be used reliably to suppress multi-channel expansion within Events and Patterns. <span class="Apple-converted-space"> </span></p>
-<p class="p2">Instead, it is necessary to enclose the array of values in another array:</p>
-<p class="p8"><br></p>
-<p class="p4">(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s7">\multi</span><span class="s2">, { </span>| out, freq = #[100,200,300], amp = 0.1, pan = 0, sustain = 1|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">var</span> audio, env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s8">EnvGen</span>.kr(<span class="s8">Env</span>.perc(0.01, sustain), doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>audio = <span class="s8">Mix</span>(<span class="s8">Saw</span>.ar(freq));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>audio = <span class="s8">Pan2</span>.ar(audio * env, pan, amp);<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">OffsetOut</span>.ar(out, audio)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>( instrument: \multi, freq: [ [500, 501, 700] ], sustain: 2).play</p>
-<p class="p8"><br></p>
-<p class="p4">)</p>
-<p class="p4">(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(*[</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instrument: <span class="s7">\multi</span>,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq: <span class="Apple-tab-span">	</span><span class="s8">Prand</span>([<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[[100, 141, 103] ],<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[[100, 310, 190] ],<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[[100, 100.1, 110] ],<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s8">inf</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur: 0.2,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sustain: 0.3</p>
-<p class="p4"><span class="Apple-tab-span">	</span>]).play;</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/Core/RefCopy.html b/Help/Core/RefCopy.html
deleted file mode 100644
index 4237acb..0000000
--- a/Help/Core/RefCopy.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0000bf}
-span.s4 {color: #bf0000}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>RefCopy<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>a reference to the copy of a value</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p1"><b>superclass: Ref</b></p>
-<p class="p2"><br></p>
-<p class="p1">A Ref<span class="Apple-converted-space">  </span>instance is an object with a single slot named 'value' that serves as a holder of<span class="Apple-converted-space">  </span>an object.</p>
-<p class="p1">RefCopy, in difference to Ref, returns only copies of the value when <b>next</b> is called.<span class="Apple-converted-space"> </span></p>
-<p class="p1">This can be useful when the original is to be kept unchanged.</p>
-<p class="p2"><br></p>
-<p class="p1">see <a href="Ref.html"><span class="s2">Ref</span></a> for other methods.</p>
-<p class="p2"><br></p>
-<p class="p3">// example:<span class="Apple-converted-space">   </span></p>
-<p class="p4"><br></p>
-<p class="p5">a = [1, 2, 3];</p>
-<p class="p5">x = <span class="s3">RefCopy</span>(a);</p>
-<p class="p5">b = x.next;</p>
-<p class="p5">b.put(0, 100); <span class="s4">// modify b</span></p>
-<p class="p3"><span class="s5">a; </span>// a is unchanged.</p>
-</body>
-</html>
diff --git a/Help/Core/Symbol.html b/Help/Core/Symbol.html
deleted file mode 100644
index 687d7a6..0000000
--- a/Help/Core/Symbol.html
+++ /dev/null
@@ -1,201 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #00831b}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #00831c}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #1135f9}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #1135f9; min-height: 14.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #00831b}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #00831c; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1135f9}
-span.s3 {color: #737373}
-span.s4 {color: #00831b}
-span.s5 {color: #00831c}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {font: 9.0px Monaco}
-span.s8 {font: 12.0px Helvetica; color: #000000}
-span.s9 {color: #000000}
-span.s10 {color: #0b28c6}
-span.s11 {text-decoration: underline ; color: #0000ee}
-span.s12 {color: #0b28c5}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Symbol<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unique name</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">A Symbol is a name that is guaranteed to be <b>unique</b>. They can be used to represent</p>
-<p class="p1">symbolic constant values, Dictionary keys, etc.</p>
-<p class="p2"><br></p>
-<p class="p1">Symbols are represented syntactically as literals which are described in [<a href="../Language/Literals.html"><span class="s2">Literals</span></a>]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Creating a Symbol</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>A symbol can be written by surrounding characters by single quotes (may include whitespace):</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>'foo bar'</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Or by a preceeding backslash (then it may not include whitespace):</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>\foo</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>A String can be converted into a symbol:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">"arbeit"</span>.scramble.asSymbol;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Testing</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>isClassName / isMetaClassName</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer whether the symbol can be a class name / meta class name. This does not say if the class exists.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\Array</span>.isClassName;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\Bauxite</span>.isClassName;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\Meta_Array</span>.isMetaClassName;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>isSetter</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer whether the symbol has a trailing underscore.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">'_action'</span>.isSetter;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>isPrimitiveName</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer whether the symbol is a valid primitive name</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>'_SymbolIsClassName'<span class="s9">.isPrimitiveName;</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p11"><b>Conversion</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>asString</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Convert to a <a href="../Collections/String.html"><span class="s2">String</span></a></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>asInteger</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Convert to an <a href="../Math/Integer.html"><span class="s2">Integer</span></a></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>asClass</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Answer the <a href="Kernel/Class.html"><span class="s2">Class</span></a> named by the receiver.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>asSetter</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Return a symbol with a trailing underscore added.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>asGetter</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Return a symbol with a trailing underscore removed.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>ascii</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>return the ascii codes as an array</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>asSpec</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Convert to a <a href="../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>asTuning</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Convert to a <a href="../Collections/Tuning.html"><span class="s2">Tuning</span></a></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>asScale</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Convert to a <a href="../Collections/Scale.html"><span class="s2">Scale</span></a></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p11"><b>Environments</b></p>
-<p class="p12"><br></p>
-<p class="p7">Symbols are used as keys to look up objects in dictionaries and environments, but also in arrays.<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="s9">See <a href="../Collections/IdentityDictionary.html"><span class="s6">IdentityDictionary</span></a>, <a href="../Collections/Environment.html"><span class="s6">Environment</span></a>, <a href="../Collections/Event.html"><span class="s6">Event</span></a></span></p>
-<p class="p14"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a = ();</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.put(<span class="s4">\commune</span>, 1871);</p>
-<p class="p15"><span class="s9"><span class="Apple-tab-span">	</span>a.at(</span>\commune<span class="s9">);</span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>envirPut(aValue)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>put a value to the current environment using receiver as key</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>envirGet</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>return a value from the current environment using receiver as key</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s4">\foo</span>.envirPut(100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">\foo</span>.envirGet;</p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s4">\foo</span>.envirPut(<span class="s10">nil</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b>Math</b></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Symbols respond to all unary and binary math operations by returning themselves. The result of any math operation between a Number or other math object and a Symbol is to return the Symbol. This allows for example operations on lists of notes which contain 'rest's to preserve the rests.</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s10">Pseq</span>([1, 3, <span class="s4">\rest</span>, 2, 4] + 8);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>applyTo(firstArg ... args)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Use the symbol as a method selector and perform the message on <b>firstArg</b>, with <b>args</b> as arguments. This is used for mixing functions with method selectors (see also: <a href="Kernel/Function.html"><span class="s2">Function</span></a>).</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">'%'</span>.applyTo(2553, 345<span class="s6">);</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>[<span class="s4">'+'</span>, <span class="s4">'-'</span>, <span class="s4">'*'</span>, { <span class="s10">|a, b|</span> a.rand + b.rand } ].choose.applyTo(2, 3);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b>Synthesis</b></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Inside SynthDefs and UGen functions, symbols can be used to conventiently specify control inputs of different rates and with lags (see:<span class="Apple-converted-space">  </span><a href="../UGens/Synth control/NamedControl.html"><span class="s2">NamedControl</span></a>, <a href="../UGens/Synth control/ControlName.html"><span class="s2">ControlName</span></a><span class="s2">, </span>and<span class="s2"> <a href="../UGens/Synth control/Control.html"><span class="s11">Control</span></a></span>).</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>kr(val, lag)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Return a control rate <a href="../UGens/Synth control/NamedControl.html"><span class="s2">NamedControl</span></a> input with a default value (<b>val</b>), and if supplied, with a <b>lag</b>. If val is an array, the control will be multichannel.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a = { <span class="s10">SinOsc</span>.ar(<span class="s5">\freq</span>.kr(440, 1.2)) }.play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.set(<span class="s5">\freq</span>, 330);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.release;</p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span>a = { <span class="s12">SinOsc</span>.ar(<span class="s5">\freq</span>.kr([440, 460], 1.2)) }.play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.setn(<span class="s5">\freq</span>, [330, 367]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.release;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span><b>ar(val, lag)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Return an audio rate <a href="../UGens/Synth control/NamedControl.html"><span class="s2">NamedControl</span></a><span class="s2"> </span>input with a default value (<b>val</b>), and if supplied, with a <b>lag</b>. If val is an array, the control will be multichannel.</p>
-<p class="p12"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>ir(val)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Return an intitalization rate <a href="../UGens/Synth control/NamedControl.html"><span class="s2">NamedControl</span></a><span class="s2"> </span>input with a default value (<b>val</b>). If val is an array, the control will be multichannel.</p>
-<p class="p6"><span class="s7"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>tr(val)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Return a TrigControl input with a default value (<b>val</b>). If val is an array, the control will be multichannel.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a = { <span class="s10">Ringz</span>.ar(<span class="s10">T2A</span>.ar(<span class="s5">\trig</span>.tr), <span class="s5">\freq</span>.kr(500, 1), 0.8) }.play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.set(<span class="s5">\freq</span>, 330, <span class="s5">\trig</span>, 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.set(<span class="s5">\freq</span>, 830, <span class="s5">\trig</span>, 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.release;</p>
-<p class="p9"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Core/True.html b/Help/Core/True.html
deleted file mode 100644
index 27e5356..0000000
--- a/Help/Core/True.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {color: #000000}
-</style>
-</head>
-<body>
-<p class="p1"><b>True</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">see [<a href="Boolean.html">Boolean</a>]</span></p>
-</body>
-</html>
diff --git a/Help/Core/UnaryOpFunction.html b/Help/Core/UnaryOpFunction.html
deleted file mode 100644
index 6d9ad04..0000000
--- a/Help/Core/UnaryOpFunction.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #832519; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0047e4}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {font: 12.0px Helvetica; color: #0021e7}
-span.s4 {font: 12.0px Helvetica; color: #0024f8}
-span.s5 {font: 12.0px Helvetica; color: #0047e4}
-span.s6 {font: 12.0px Helvetica; color: #0000ff}
-span.s7 {color: #0000bf}
-span.s8 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>UnaryOpFunction<span class="Apple-tab-span">	</span></b></span><b>represent a unary oparation on a function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: AbstractFunction</b></p>
-<p class="p2"><br></p>
-<p class="p1">Operating on functions instead of numbers, what results is not a result of the calculation, but a structure that represents that calculation.</p>
-<p class="p2"><br></p>
-<p class="p3">// example</p>
-<p class="p3"><span class="s2">a = 2.sqrt; </span>// result is square root of two (approximate floating point).</p>
-<p class="p3"><span class="s2">a = { b }.sqrt; </span>// result is<span class="Apple-converted-space">  </span>a UnaryOpFunction</p>
-<p class="p4">b = 2;</p>
-<p class="p3"><span class="s2">a.value; </span>// now it is evaluated, and the result is calculated</p>
-<p class="p4">b = 9;</p>
-<p class="p3"><span class="s2">a.value; </span>// again, with a different value.</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">see also: <a href="BinaryOpFunction.html"><span class="s3">BinaryOpFunction</span></a>, <a href="NAryOpFunction.html"><span class="s4">NAryOpFunction</span></a></span></p>
-<p class="p7"><span class="s2">related: <a href="../Streams-Patterns-Events/UnaryOpStream.html"><span class="s5">UnaryOpStream</span></a>, <a href="../Streams-Patterns-Events/Patterns/Punop.html"><span class="s6">Punop</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">// sound example</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s7">var</span> a = { 19.rand };</p>
-<p class="p4"><span class="s7">var</span> b = a.sqrt;</p>
-<p class="p4">fork {</p>
-<p class="p4"><span class="Apple-tab-span">	</span>15.do {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(instrument: <span class="s8">\default</span>, note: [a.value, b.value]).play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/Core/UniqueID.html b/Help/Core/UniqueID.html
deleted file mode 100644
index cedfdd8..0000000
--- a/Help/Core/UniqueID.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>UniqueID<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>source for unique numbers</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*initClass<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>initialize the starting id.</p>
-<p class="p1"><b>*next</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get next id, which is unique to the system</p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p5">UniqueID<span class="s2">.next;</span></p>
-<p class="p5">UniqueID<span class="s2">.next;</span></p>
-<p class="p5">UniqueID<span class="s2">.next;</span></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Core/if.html b/Help/Core/if.html
deleted file mode 100644
index 6cfaea6..0000000
--- a/Help/Core/if.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8b2719}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #002dad}
-span.s4 {color: #8b2719}
-span.s5 {color: #0025b2}
-span.s6 {color: #606060}
-span.s7 {color: #416d1f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>if</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>if( boolean, trueFunc, falseFunc)</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s1">see also: <a href="../Language/Control-Structures.html"><span class="s2">Control-Structures</span></a></span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">if ( [<span class="s3">false</span>, <span class="s3">true</span>].choose,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Boolean expression (chooses one at random)</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>{ "expression was true".postln },<span class="Apple-tab-span">	</span><span class="s4">// true function</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>{ "expression was false".postln }<span class="Apple-tab-span">	</span><span class="s4">// false function</span></p>
-<p class="p8">)</p>
-<p class="p3"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> a = 1, z;</p>
-<p class="p8">z = if (a < 5, { 100 },{ 200 });</p>
-<p class="p8">z.postln;</p>
-<p class="p8">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>UGens can also use if</b></p>
-<p class="p3"><br></p>
-<p class="p4">the condition ugen is 0 / 1<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if( <span class="s5">LFNoise1</span>.kr(1.0,0.5,0.5) , <span class="s5">SinOsc</span>.ar, <span class="s5">Saw</span>.ar )</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play</p>
-<p class="p9">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">ADVANCED:<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p4">the functions will be inlined, which plucks the code from the functions and uses a more efficient jump statement.</p>
-<p class="p3"><br></p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>if( 6 == 9,{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">"hello"</span>.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>},{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">"hello"</span>.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>})</p>
-<p class="p8">}.def.dumpByteCodes</p>
-<p class="p3"><br></p>
-<p class="p8">BYTECODES: (18)</p>
-<p class="p8"><span class="Apple-converted-space">  </span>0 <span class="Apple-converted-space">  </span><span class="s5">FE</span> 06<span class="Apple-converted-space">    </span><span class="s5">PushPosInt</span> 6</p>
-<p class="p8"><span class="Apple-converted-space">  </span>2 <span class="Apple-converted-space">  </span><span class="s5">FE</span> 09<span class="Apple-converted-space">    </span><span class="s5">PushPosInt</span> 9</p>
-<p class="p8"><span class="Apple-converted-space">  </span>4 <span class="Apple-converted-space">  </span>E6 <span class="Apple-converted-space">      </span>SendSpecialBinaryArithMsg <span class="s7">'=='</span></p>
-<p class="p8"><span class="Apple-converted-space">  </span>5 <span class="Apple-converted-space">  </span><span class="s5">F8</span> 00 06 <span class="s5">JumpIfFalse</span> 6<span class="Apple-converted-space">  </span>(14)</p>
-<p class="p8"><span class="Apple-converted-space">  </span>8 <span class="Apple-converted-space">  </span>42 <span class="Apple-converted-space">      </span><span class="s5">PushLiteral</span> <span class="s6">"hello"</span></p>
-<p class="p8"><span class="Apple-converted-space">  </span>9 <span class="Apple-converted-space">  </span><span class="s5">A1</span> 00<span class="Apple-converted-space">    </span><span class="s5">SendMsg</span> <span class="s7">'postln'</span></p>
-<p class="p8"><span class="Apple-converted-space"> </span>11 <span class="Apple-converted-space">  </span><span class="s5">FC</span> 00 03 <span class="s5">JumpFwd</span> 3<span class="Apple-converted-space">  </span>(17)</p>
-<p class="p8"><span class="Apple-converted-space"> </span>14 <span class="Apple-converted-space">  </span>41 <span class="Apple-converted-space">      </span><span class="s5">PushLiteral</span> <span class="s6">"hello"</span></p>
-<p class="p8"><span class="Apple-converted-space"> </span>15 <span class="Apple-converted-space">  </span><span class="s5">A1</span> 00<span class="Apple-converted-space">    </span><span class="s5">SendMsg</span> <span class="s7">'postln'</span></p>
-<p class="p8"><span class="Apple-converted-space"> </span>17 <span class="Apple-converted-space">  </span><span class="s5">F2</span> <span class="Apple-converted-space">      </span><span class="s5">BlockReturn</span></p>
-<p class="p8">a FunctionDef in closed FunctionDef</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>failure to inline due to variable declarations</b></p>
-<p class="p8">{</p>
-<p class="p3"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>if( 6 == 9,{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> notHere;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">"hello"</span>.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>},{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">"hello"</span>.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3"><br></p>
-<p class="p8">}.def.dumpByteCodes</p>
-<p class="p3"><br></p>
-<p class="p8">WARNING: <span class="s5">FunctionDef</span> contains variable declarations and so will not be inlined.</p>
-<p class="p8"><span class="Apple-converted-space">   </span>in file 'selected text'</p>
-<p class="p8"><span class="Apple-converted-space">   </span>line 4 char 14 :</p>
-<p class="p8"><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">var</span> notHere;•</p>
-<p class="p8"><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">"hello"</span>.postln;</p>
-<p class="p8">-----------------------------------</p>
-<p class="p8">BYTECODES: (12)</p>
-<p class="p8"><span class="Apple-converted-space">  </span>0 <span class="Apple-converted-space">  </span><span class="s5">FE</span> 06<span class="Apple-converted-space">    </span><span class="s5">PushPosInt</span> 6</p>
-<p class="p8"><span class="Apple-converted-space">  </span>2 <span class="Apple-converted-space">  </span><span class="s5">FE</span> 09<span class="Apple-converted-space">    </span><span class="s5">PushPosInt</span> 9</p>
-<p class="p8"><span class="Apple-converted-space">  </span>4 <span class="Apple-converted-space">  </span>E6 <span class="Apple-converted-space">      </span>SendSpecialBinaryArithMsg <span class="s7">'=='</span></p>
-<p class="p8"><span class="Apple-converted-space">  </span>5 <span class="Apple-converted-space">  </span>04 00<span class="Apple-converted-space">    </span><span class="s5">PushLiteralX</span> instance of <span class="s5">FunctionDef</span> in closed <span class="s5">FunctionDef</span></p>
-<p class="p8"><span class="Apple-converted-space">  </span>7 <span class="Apple-converted-space">  </span>04 01<span class="Apple-converted-space">    </span><span class="s5">PushLiteralX</span> instance of <span class="s5">FunctionDef</span> in closed <span class="s5">FunctionDef</span></p>
-<p class="p8"><span class="Apple-converted-space">  </span>9 <span class="Apple-converted-space">  </span>C3 0B<span class="Apple-converted-space">    </span>SendSpecialMsg <span class="s7">'if'</span></p>
-<p class="p8"><span class="Apple-converted-space"> </span>11 <span class="Apple-converted-space">  </span><span class="s5">F2</span> <span class="Apple-converted-space">      </span><span class="s5">BlockReturn</span></p>
-<p class="p8">a FunctionDef in closed FunctionDef</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>if( 6 == 9,{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">"hello"</span>.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>},{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">"hello"</span>.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>})</p>
-<p class="p8">}.def.dumpByteCodes</p>
-<p class="p3"><br></p>
-<p class="p8">BYTECODES: (18)</p>
-<p class="p8"><span class="Apple-converted-space">  </span>0 <span class="Apple-converted-space">  </span><span class="s5">FE</span> 06<span class="Apple-converted-space">    </span><span class="s5">PushPosInt</span> 6</p>
-<p class="p8"><span class="Apple-converted-space">  </span>2 <span class="Apple-converted-space">  </span><span class="s5">FE</span> 09<span class="Apple-converted-space">    </span><span class="s5">PushPosInt</span> 9</p>
-<p class="p8"><span class="Apple-converted-space">  </span>4 <span class="Apple-converted-space">  </span>E6 <span class="Apple-converted-space">      </span>SendSpecialBinaryArithMsg <span class="s7">'=='</span></p>
-<p class="p8"><span class="Apple-converted-space">  </span>5 <span class="Apple-converted-space">  </span><span class="s5">F8</span> 00 06 <span class="s5">JumpIfFalse</span> 6<span class="Apple-converted-space">  </span>(14)</p>
-<p class="p8"><span class="Apple-converted-space">  </span>8 <span class="Apple-converted-space">  </span>42 <span class="Apple-converted-space">      </span><span class="s5">PushLiteral</span> <span class="s6">"hello"</span></p>
-<p class="p8"><span class="Apple-converted-space">  </span>9 <span class="Apple-converted-space">  </span><span class="s5">A1</span> 00<span class="Apple-converted-space">    </span><span class="s5">SendMsg</span> <span class="s7">'postln'</span></p>
-<p class="p8"><span class="Apple-converted-space"> </span>11 <span class="Apple-converted-space">  </span><span class="s5">FC</span> 00 03 <span class="s5">JumpFwd</span> 3<span class="Apple-converted-space">  </span>(17)</p>
-<p class="p8"><span class="Apple-converted-space"> </span>14 <span class="Apple-converted-space">  </span>41 <span class="Apple-converted-space">      </span><span class="s5">PushLiteral</span> <span class="s6">"hello"</span></p>
-<p class="p8"><span class="Apple-converted-space"> </span>15 <span class="Apple-converted-space">  </span><span class="s5">A1</span> 00<span class="Apple-converted-space">    </span><span class="s5">SendMsg</span> <span class="s7">'postln'</span></p>
-<p class="p8"><span class="Apple-converted-space"> </span>17 <span class="Apple-converted-space">  </span><span class="s5">F2</span> <span class="Apple-converted-space">      </span><span class="s5">BlockReturn</span></p>
-<p class="p8">a FunctionDef in closed FunctionDef</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Core/loop.html b/Help/Core/loop.html
deleted file mode 100644
index 71335cb..0000000
--- a/Help/Core/loop.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>loop / repeat</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">create an object that behaves like a stream that returns values for a limited (or infinite) number of times.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Function-loop</b></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span></span>repeats the function forever.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>f = { 3.yield };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = Routine({ f.loop });</p>
-<p class="p4"><span class="Apple-tab-span">	</span>10.do({ x.next.postln })</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Object-repeat(n)</b></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span></span>repeat to yield the object</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = 5;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>y = x.repeat(6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>y.nextN(8);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pattern-repeat(n)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = Prand([1, 2]).repeat(6).asStream;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x.nextN(8);</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pattern-loop</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = Prand([1, 2]).loop.asStream;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x.nextN(8);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Stream-repeat(n)</b></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span></span>embeds the stream repeatedly</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = Routine({ 3.do({ arg i; i.yield }) }).repeat(6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x.nextN(8);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Stream-loop</b></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span></span>embeds the stream repeatedly</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = Routine({ 3.do({ arg i; i.yield }) }).loop;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x.nextN(8);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Creating-Standalone-Applications.html b/Help/Extending and Customizing SC/Creating-Standalone-Applications.html
deleted file mode 100644
index aa3fd0e..0000000
--- a/Help/Extending and Customizing SC/Creating-Standalone-Applications.html	
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Lucida Grande; min-height: 18.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Lucida Grande}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande; min-height: 15.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Lucida Grande}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande; color: #001fe8}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019ba}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {color: #0019ba}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Creating Standalone Applications</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Introduction</b></p>
-<p class="p3"><br></p>
-<p class="p5">On OS X, applications are special directories known as "bundles." This allows you to create stand-alone applications running SuperCollider code that are opaque, in the sense that the user does not need to install SuperCollider, run SuperCollider code, or even know that SuperCollider is involved. (Of course, your application must be open-source and comply with the GPL.) This is useful for distributing applications to the general public, or for creating special-purpose applications for your own use.</p>
-<p class="p3"><br></p>
-<p class="p5">There are two ways of making standalone applications:<span class="Apple-converted-space"> </span></p>
-<p class="p5">A. Modifying an existing <b>Standalone Template.app</b> by editing the contents in its folder,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>which can be done without requiring XCode or any other development environments,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>described in <a href="Modifying_Standalones.html"><b>Modifying_Standalones</b></a>, or</span></p>
-<p class="p3"><br></p>
-<p class="p5">B. Creating a standalone application from scratch, as described below.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Creating a standalone application</b></p>
-<p class="p3"><br></p>
-<p class="p5">1- Obtain a copy of the SuperCollider source code. The easiest way to do so is to download the latest source release from SourceForge:</p>
-<p class="p5">http://sourceforge.net/projects/supercollider/</p>
-<p class="p3"><br></p>
-<p class="p5">2- Open the Language.xcodeproj project in Xcode.</p>
-<p class="p3"><br></p>
-<p class="p5">3- Rename the "Standalone Template" target by control-clicking it and choosing "Rename". This target name is used for both the .app name and for the name presented in the menu bar.</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s2"><img src="attachments/Creating-Standalone-Applications/Pasted Graphic 1.png" alt="attachments/Creating-Standalone-Applications/Pasted Graphic 1.png"></span></p>
-<p class="p8"><br></p>
-<p class="p5">4- Customize the "Standalone Resources" directory, which is located at the root of the SuperCollider source directory. Any files you put in this directory will overide the files placed in the standalone application. For example if you wanted to create your own version of Array.sc you would need to create the following path (creating folders where necessary):<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Standalone Resources/SCClassLibrary/Common/Collections/Array.sc</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5">Your version of Array.sc will now overide the default. Similarly you can replace application resources to customize your application. "Standalone Resources/SCcube.icns" can be overridden to provide a custom icon. "Standalone Resources/English.lproj/MainMenu.nib" can be overriden to provide a custom menu bar and "Standalone Resources/English.lproj/Credits.rtf" can be overidden to provide a new about box. The "Standalone Resources" directory by default comes with a small demo application that puts up a window with a button that generates a tone when pushed.</p>
-<p class="p3"><br></p>
-<p class="p5">5- Build the standalone application by control-clicking on the target and choosing "Build [target name]". This will place your standalone app in the build directory. It is recommended that you develop your application fully in a normal SuperCollider environment before creating a standalone application.</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s2"><img src="attachments/Creating-Standalone-Applications/Pasted Graphic 2.png" alt="attachments/Creating-Standalone-Applications/Pasted Graphic 2.png"></span></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Adding your own behavior</b></p>
-<p class="p3"><br></p>
-<p class="p5">You've now created an application that behaves exactly like SuperCollider. To run your own code on launch and simulate an ordinary application, you'll need to modify the startup-related methods, which are overwritten in (Standalone Resources)/SCClassLibrary/modifyStartup.sc.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p5">Here's an example (the same code used by the SC_StandAlone target):</p>
-<p class="p3"><br></p>
-<p class="p9"><span class="s1">+ </span>OSXPlatform<span class="s1"> {</span></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>startupFiles {</p>
-<p class="p12">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var filename = "startup.rtf";</p>
-<p class="p12">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^[this.systemAppSupportDir +/+ filename, this.userAppSupportDir +/+ filename];</p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// look for startup files inside the app Contents directory</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> filename = <span class="s4">"startup.*"</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^(<span class="s3">String</span>.scDir +/+ filename).pathMatch;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>startup {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Document</span>.implementationClass.startup;</p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// make a server window for the internal if you like</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Server</span>.internal.makeWindow;</p>
-<p class="p12">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Server.local.makeWindow;</p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// uncomment if you use a startup file</p>
-<p class="p12">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this.loadStartupFiles;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// uncomment if you have multiple help files</p>
-<p class="p12">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Help.addToMenu;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p11">}</p>
-<p class="p10"><br></p>
-<p class="p11">+ <span class="s3">Main</span> {<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>startup {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>platform = <span class="s3">this</span>.platformClass.new;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>platform.initPlatform;</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">super</span>.startup;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">GUI</span>.fromID( <span class="s3">this</span>.platform.defaultGUIScheme );</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">GeneralHID</span>.fromID( <span class="s3">this</span>.platform.defaultHIDScheme );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Set Server.default and the 's' interpreter variable to the internal server.</p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// You should use the internal server for standalone applications --</p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// otherwise, if your application has a problem, the user will</p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// be stuck with a process, possibly making sound, that he won't know<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// how to kill.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Server</span>.default = <span class="s3">Server</span>.internal;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>interpreter.s = <span class="s3">Server</span>.default;</p>
-<p class="p10"><br></p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// some folder paths that should point inside the app's Contents folder</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>.synthDefDir = <span class="s3">String</span>.scDir +/+ <span class="s4">"synthdefs/"</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Archive</span>.archiveDir = <span class="s3">String</span>.scDir;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">this</span>.platform.startup;</p>
-<p class="p10"><br></p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// from here on, you should customize what should happen...</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">StartUp</span>.run;</p>
-<p class="p10"><br></p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// One can boot the server, then use .load to evaluate a file</p>
-<p class="p12"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// OR - put things into a class... like the SCSA_Demo</p>
-<p class="p10"><br></p>
-<p class="p13"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Welcome to Standalone Demo made with SuperCollider, type cmd-d for help."<span class="s1">.postln;</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Server</span>.default.boot;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Server</span>.default.waitForBoot({</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SCSA_Demo</span>.new(<span class="s4">"The Cheese Stands Alone"</span>, <span class="s3">Rect</span>(400, 400, 300, 200), interpreter.s).front;</p>
-<p class="p12">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(String.scDir.dirname ++ "/MFBSD.rtf").load;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// close post window if user should not have it</p>
-<p class="p11">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Document.listener.close<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11">}</p>
-<p class="p3"><br></p>
-<p class="p5">The class SCSA_Demo contains the entire application, including the main window. This is the tidiest way to work, and requires the least modification to SuperCollider. If you don't want to write a class, you can execute an .rtf file instead:</p>
-<p class="p3"><br></p>
-<p class="p5">load(String.scDir ++ "/myapp.rtf");</p>
-<p class="p3"><br></p>
-<p class="p5">However, any sizable application will benefit from encapsulation in classes.</p>
-<p class="p3"><br></p>
-<p class="p5">Note that the example uses the internal server. This is part and parcel of keeping the application stand-alone; it shouldn't call extraneous processes behind the user's back that will persist if the application fails. If you need to use the local server for some reason, make sure scsynth is in your resources folder.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Managing multiple standalone applications</b></p>
-<p class="p3"><br></p>
-<p class="p5">To manage several standalone applications simply create several targets and several resources directories. The resources directories should be named according to "[target name] Resources". If a resources directory is found when building that matches the target name, that directory will be used instead than the default "Standalone Resources" directory.</p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Crossplatform.html b/Help/Extending and Customizing SC/Crossplatform.html
deleted file mode 100644
index 223be8e..0000000
--- a/Help/Extending and Customizing SC/Crossplatform.html	
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Crossplatform</b></p>
-<p class="p2"><br></p>
-<p class="p3">When extending SuperCollider you may need to take care of cross platform compatibility. This help file tries to make you aware of the issues you need to watch out for.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Structure of SuperCollider</b></p>
-<p class="p2"><br></p>
-<p class="p3">SuperCollider is composed of three or four programs. There is scsynth, sclang, the editor and optionally a GUI server.</p>
-<p class="p2"><br></p>
-<p class="p3">On OSX most users use the SCapp, which is an editor, including GUI facilities. However, you can also use the GUI server SwingOSC, and may choose to use another editor (such as scel, scvim, or PsyCollider).</p>
-<p class="p2"><br></p>
-<p class="p3">On Windows most users use PsyCollider or JSCEclipse and use the SwingOSC GUI server. Theoretically it is also possible to run scel or scvim on Windows.</p>
-<p class="p2"><br></p>
-<p class="p3">On Linux most users use scel or scvim or sced (a gedit frontend) and use the SwingOSC GUI server. But they could also use JSCEclipse or PsyCollider.</p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>Shortcuts</b></p>
-<p class="p3">Each editor has its own shortcuts, which are documented in the Shortcuts helpfile.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>GUI implementation</b></p>
-<p class="p3">GUI's are made cross platform compatible by using ViewRedirects, or the GUI classes. So instead of using SCWindow, you use Window or GUI.window.new.</p>
-<p class="p2"><br></p>
-<p class="p3">It may be tempting to create custom GUI objects by subclassing, but this is not good for cross-platform portability. To be truly cross-platform, there should be subclasses for the SC* set of GUI widgets (for the cocoa objects used by SCapp) as well as the JSC* set implemented by SwingOSC. A SCapp user who has not installed SwingOSC cannot use subclasses of the SwingOSC objects, because the parent class is not found in the library. The reverse is true for non-Mac users confronted with subclasses of the cocoa widgets (although this is avoided by placing Mac OSX-specific subclasses into a folder named osx/).</p>
-<p class="p2"><br></p>
-<p class="p3">Instead, it's recommended to use the Adapter design pattern. Write a new class that creates an instance of the GUI widget whose behavior you want to extend, and include the new behavior in this class. The new class can forward messages to the physical widget where needed, or add new logic between the user's calls and the calls ultimately made to the widget. If the widgets used in the new class are created using the cross-platform view redirect or GUI kit, then it is automatically cross-platform without requiring multiple versions for different platforms.</p>
-<p class="p2"><br></p>
-<p class="p3">(As a general object-oriented programming rule, subclassing is regarded with some suspicion because the objects' information is not as cleanly encapsulated when a system is built too heavily on subclasses. This is not limited just to GUI cross-platform concerns.)</p>
-<p class="p2"><br></p>
-<p class="p1">If you want to make a GUI kit specific switch (e.g. in a class), then you should use the following instead, as on non-OSX systems the class CocoaGUI is not in the class library path, and you cannot check for an undefined class:</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s9">GUI</span><span class="s3">.id;<span class="Apple-tab-span">	</span></span>// returns the current GUI kit implementation id; this is currently either \cocoa or \swing</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Extension methods added to GUI objects</b></p>
-<p class="p2"><br></p>
-<p class="p3">At present, extension methods added to, for instance, SCButton do not automatically transfer over to JSCButton. It's necessary to provide the extension for both classes. If the compiler finds an extension for a class that doesn't exist, a warning is printed while compiling the class library, but the interpreter will still function after that. In extensions that are published (e.g. as quarks), it's considered rude to litter the startup output with non-fatal warnings unless there is no other alternative.</p>
-<p class="p2"><br></p>
-<p class="p3">One approach with quarks is to create a separate quark with the Swing-specific extensions, and include a compatibility test in the quark file.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="Apple-tab-span">	</span>name: "quarkname",</p>
-<p class="p3"><span class="Apple-tab-span">	</span>path: "...",</p>
-<p class="p3"><span class="Apple-tab-span">	</span>... etc...</p>
-<p class="p3"><span class="Apple-tab-span">	</span>isCompatible:<span class="Apple-tab-span">	</span>{ 'SwingOSC'.asClass.notNil }</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">Then the extensions can't be installed on systems without SwingOSC. OSX-specific extensions can be hidden on other platforms by placing them in a folder named osx/. This is not advisable for SwingOSC extensions because these extensions may need to be used on any platform -- it is not valid to restrict them to linux/ or windows/ platform folders.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>Document implementation</b></p>
-<p class="p3">Document forwards to an editor dependent class (CocoaDocument for SCapp and ScelDocument for scel). Of these CocoaDocument provides the most functionality, ScelDocument provides a partial set of features. For the other editors there is no Document support yet.</p>
-<p class="p2"><br></p>
-<p class="p3">The post window is yet another cup of tea. In SCapp it is a Document like any other. In scel it is a separate window which catches stdout (standard output) of sclang. This is the same for the other editors, who either catch the output in a window internal to the editor, or externally (like scvim).</p>
-<p class="p5"><br></p>
-<p class="p4"><b>Menus</b></p>
-<p class="p3">Menus are also editor specific, though they can also be added to SwingOSC windows.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>Help files</b></p>
-<p class="p3">Help files are generally HTML format. In SCapp they are viewed inside the editor and are regular Documents that are saved as HTML files when they are resaved. In scel they are opened in emacs-w3m in an sclang-minor-mode, so code can be executed from them. For scvim the help files are stripped of their HTML, so they can be opened within scvim as plain text files. Sced opens the help files in Firefox.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>HID (Human Input Device)</b></p>
-<p class="p3">HID support is also slightly platform dependent (not editor dependent!). There is a cross platform accessing class called GeneralHID. The only part which is not cross platform yet in that approach is the numbering of the slots, so these cannot be depended upon across platforms.</p>
-<p class="p2"><br></p>
-<p class="p3">The Windows version of SC should use a python program IxiHID for now with SC to have a partial access to HID devices (only game devices and no output).</p>
-<p class="p5"><br></p>
-<p class="p4"><b>MouseX, MouseY, MouseButton and KeyState</b></p>
-<p class="p3">Should work as is on different platforms.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>WiiMote</b></p>
-<p class="p3">Has been implemented for both OSX and Linux and have the same interface.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>Wacom</b></p>
-<p class="p3">Can be accessed on OSX through a separate interface. On Linux it can be accessed as an HID interface.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>unixCmd</b></p>
-<p class="p3">unixCmd works across platforms, but on Windows has to be a DOS command.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>What to do? Platform specific extensions</b></p>
-<p class="p3">So, now that you have created a class, what to do if it is not platform independent? Well...</p>
-<p class="p3">SC implements a scheme to ensure that classes that are only valid for one specific platform are only compiled for that platform. This works by putting a class in a folder (anywhere in the SCClassLibrary or Extensions) named after that platform (osx/windows/linux). Note that this is case sensitive.</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Helper/AutoClassHelper.html b/Help/Extending and Customizing SC/Helper/AutoClassHelper.html
deleted file mode 100644
index 0fcef1b..0000000
--- a/Help/Extending and Customizing SC/Helper/AutoClassHelper.html	
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #883120; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #883120}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #8c3b28}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0f28af}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #883120}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8c3b28}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0f28af}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1335ea}
-span.s3 {font: 9.0px Monaco; color: #883120}
-span.s4 {color: #000000}
-span.s5 {color: #883120}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>AutoClassHelper<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>autogeneration of help files from source code markup</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object</b></p>
-<p class="p3"><br></p>
-<p class="p1">AutoClassHelper generates an help file following the help template by analyzing the source code of the passed class (e.g. like Doxygen). This is possible by using a special markup syntax in the source code. It works only for classes. In fact, UGens require a much simpler help file and the mechanism does not make sense for Topics: in those cases you can simply use <b>Helper</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="Helper.html"><span class="s2">Helper</span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding AutoClassHelper</b></p>
-<p class="p2"><br></p>
-<p class="p1">AutoHelper is still experimental and you should use it following strictly the syntax examples and explanations provided in the source code of the fake test class <b>AutoClassHelperTest</b>. In order to understand what follows you should open its class definition. You see that the markup tag is a special multiline comment:<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">/*@</p>
-<p class="p6">infos here</p>
-<p class="p6">@*/</p>
-<p class="p5"><br></p>
-<p class="p1">Each class can receive a class description (after its name) where all the infos required by class help template can be filled in by a specific tag (e.g. <span class="s3">shortDesc</span>) followed by <span class="s3">:</span>. In the class field you also describe var and classvars. one for each line (e.g. <span class="s3">classtestvar</span>)<span class="Apple-converted-space">  </span>followed by <span class="s3">:</span>.</p>
-<p class="p5"><br></p>
-<p class="p6">// After class name you can write</p>
-<p class="p6">/*@</p>
-<p class="p6">shortDesc: description of the method</p>
-<p class="p6">longDesc: longer one</p>
-<p class="p6">seeAlso: refs</p>
-<p class="p6">issues: other aspects</p>
-<p class="p6">testvar: a name of a instance var</p>
-<p class="p6">classtestvar: a name of a class var</p>
-<p class="p6">instDesc: the name of the instance methods section</p>
-<p class="p6">longInstDesc: a comment related to the instance methods section</p>
-<p class="p6">@*/</p>
-<p class="p6">//</p>
-<p class="p2"><br></p>
-<p class="p1">Then each method can be marked up with a description of functionality, followed by a description of each argument. Then, multiline examples can be inserted.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">// After each method you can write</p>
-<p class="p6">/*@</p>
-<p class="p6">desc: a description of the method</p>
-<p class="p6">argName: for each arg. Default value is added automatically</p>
-<p class="p6">ex: multiline example</p>
-<p class="p6">@*/</p>
-<p class="p2"><br></p>
-<p class="p1">See <b>AutoClassHelperTest</b> source.</p>
-<p class="p1">Note that more typically you simply pass the item to the makeAutoHelp method of Help class (see Examples below).</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (undocumentedClass, path)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The only method implemented by AutoClassHelper, it generates an help file.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>undocumentedClass </b>- the class to be documented. Default value is nil.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path </b>-<span class="Apple-converted-space">  </span>the path where to write the help file. Default value is nil: in that case you are prompted to select a path by a dialog. After creation SC tries to reopen the file by calling undocumentedClass.openHelpFile, so the path should be searchable by SC. The file is written even if opening fails.<span class="Apple-converted-space">  </span>See <b>Helper</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// testing the fake class: evaluate this</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>AutoClassHelper<span class="s4">(</span>AutoClassHelperTest<span class="s4">) </span><span class="s5">// prompts for a path</span><span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// in order to reopen the file choose a recognized path for help files</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// e.g. simply "Help" in the SC folder</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p14"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p15">// the same using Help.makeAutoHelp<span class="Apple-converted-space"> </span></p>
-<p class="p16">Help<span class="s4">.makeAutoHelp(</span>AutoClassHelperTest<span class="s4">) </span><span class="s5">// prompts for a path</span></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Helper/HelpSearchResult.html b/Help/Extending and Customizing SC/Helper/HelpSearchResult.html
deleted file mode 100644
index 3a98f2f..0000000
--- a/Help/Extending and Customizing SC/Helper/HelpSearchResult.html	
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial; min-height: 15.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial}
-span.s1 {font: 13.0px Helvetica}
-span.s2 {color: #0016bd}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>HelpSearchResult<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>Part of Help.gui</b></span></p>
-<p class="p2"><br></p>
-<p class="p3">The HelpSearchResult class represents results for display in the search GUI.<span class="Apple-converted-space"> </span></p>
-<p class="p3">Run this to get the search GUI:</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Help</span>.gui</p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Helper/Helper.html b/Help/Extending and Customizing SC/Helper/Helper.html
deleted file mode 100644
index adbfe7d..0000000
--- a/Help/Extending and Customizing SC/Helper/Helper.html	
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #753927}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #6d3c2a}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1e39a3}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #6d3c2a}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #1e39a3}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #233da4}
-span.s5 {color: #1e39a3}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Helper<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>documentation template autogeneration</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object</b></p>
-<p class="p3"><br></p>
-<p class="p1">Helper allows to autogenerate a documentation template for classes, ugens, topics.</p>
-<p class="p1">The resulting file strictly follows the provided templates styles, so that you have to worry only about content and not about formatting.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Note that for consistency you should always use this class while creating help files.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><b>See also:</b> <a href="../Style Guide/Documentation Style Guide.html"><span class="s3">Documentation Style Guide</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Helper structure</b></p>
-<p class="p2"><br></p>
-<p class="p1">Helper class works by inspecting the argument passed to the constructor. It then calls three other<span class="Apple-converted-space">  </span>classes specialized for classes, ugens and topics (<b>ClassHelper</b>, <b>UGenHelper</b>, <b>TopicHelper</b>).<span class="Apple-converted-space">  </span>TopicHelper is selected if you pass a string (i.e. the topic you want to discuss).</p>
-<p class="p1">Each of them is given a makeHelp method which generates the help file template. In case of classes, this is done by analysing the source code and retrieving vars, methods, arguments, default values. If you have "private" methods, or other things you think that should not be documented, you have to delete their description from the help file.</p>
-<p class="p1">Note that not only you do not have to deal with this structure but more typically you simply pass the item to the makeHelp method of Help class (see Examples below).</p>
-<p class="p2"><br></p>
-<p class="p1">Please note that:<span class="Apple-converted-space"> </span></p>
-<p class="p1">- if you want to overwrite an existing help file you have to delete it or rename it before using Helper;<span class="Apple-converted-space"> </span></p>
-<p class="p1">- in order to reopen automatically the created file for editing, the path must be in one of the SC recognized paths.</p>
-<p class="p1">- in order to reopen automatically the created file for editing, the name must be the one of the class to be documented.</p>
-<p class="p1">Please note also that in all the previous cases<span class="Apple-converted-space">  </span>the requested file is created.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (undocumentedObject, path)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Write the helpfile by selecting the specialized class. Then it tries to reopen the generated help file</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>undocumentedObject </b>- the item you want to document. Default value is nil. The method select the opportune specialized Class, and sends to its instance the makeHelp message.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <b>path </b>- the path where to write the help file. Default value is nil: in that case you are prompted to select a path by a dialog. After creation SC tries to reopen the file by calling undocumentedObject.openHelpFile. See Examples for requirements.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// of course we can document better this class</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>h = <span class="s4">Helper</span>.new(<span class="s5">Helper</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p11"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p12">//////////</p>
-<p class="p12">// CLASSES</p>
-<p class="p12">//////////</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s5">Helper</span>(<span class="s5">TestClass2</span>, "/Users/andreavalle/Library/Application\ Support/SuperCollider/Extensions/Help/mine/TestClass2.html")</p>
-<p class="p14">// TestClass2: a test class</p>
-<p class="p15">Helper(TestClass2)</p>
-<p class="p14">// prompts for path (must be complete).</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s5">Helper</span>(<span class="s5">TestClass2</span>, "/test/TestClass2.html")</p>
-<p class="p14">// this works but then it can't open the resulting help file</p>
-<p class="p14">// in order to reopen it automatically, the provided path</p>
-<p class="p12">// must be one of the recognized ones</p>
-<p class="p3"><br></p>
-<p class="p12">//////////</p>
-<p class="p12">// UGENS</p>
-<p class="p12">//////////</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s5">Helper</span>(<span class="s5">SinOsc</span>, "/Users/andreavalle/Library/Application\ Support/SuperCollider/Extensions/Help/mine/SinOsc.html")</p>
-<p class="p15">Helper(SinOsc)</p>
-<p class="p14">// In this case SinOsc has already a help file, so Helper opens that one </p>
-<p class="p14">// as it calls SinOsc.openHelpFile</p>
-<p class="p3"><br></p>
-<p class="p12">//////////</p>
-<p class="p12">// TOPICS</p>
-<p class="p12">//////////</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s5">Helper</span>("On_Helper", "/Users/andreavalle/Library/Application\ Support/SuperCollider/Extensions/Help/mine/On_Helper.html")</p>
-<p class="p13"><span class="s5">Helper</span>("On_Helper")</p>
-<p class="p14">// it's a bit boring to repeat the class or the topic name with html as a path</p>
-<p class="p14">// but I don't see a way to propose to GUI save dialog a fileName, so in that case you would have</p>
-<p class="p14">// to specify it the same. </p>
-<p class="p14">// Document was indeed more flexible</p>
-<p class="p6"><br></p>
-<p class="p14">// instead of direct instantiantion<span class="Apple-converted-space"> </span></p>
-<p class="p14">// you may typically use makeHelp<span class="Apple-converted-space">  </span>method on the Help class:</p>
-<p class="p14">// Help.makeHelp wraps the Helper class for you</p>
-<p class="p3"><br></p>
-<p class="p12">// TYPICAL USAGE with Help extension</p>
-<p class="p14">// The same as before</p>
-<p class="p16">// an undocumented class</p>
-<p class="p17">Help.makeHelp(ClassHelper);<span class="Apple-converted-space"> </span></p>
-<p class="p16">// an undocumented topic</p>
-<p class="p18"><span class="s5">Help</span>.makeHelp("On the Helper class");<span class="Apple-converted-space"> </span></p>
-<p class="p16">// an undocumented UGen</p>
-<p class="p17">Help.makeHelp(HilbertFIR);<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Modifying_Standalones.html b/Help/Extending and Customizing SC/Modifying_Standalones.html
deleted file mode 100644
index 9b305cd..0000000
--- a/Help/Extending and Customizing SC/Modifying_Standalones.html	
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Lucida Grande}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande; min-height: 15.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Modifying the Standalone Template for your own App</b></p>
-<p class="p2"><br></p>
-<p class="p3">If you do not have or use Apple Developer tools, the easiest way to create an SC-based<span class="Apple-converted-space"> </span></p>
-<p class="p3">standalone application is to modify an existing SC standalone:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">1 - Obtain the compiled '<b>Standalone Template.app</b>' for the desired version of SC3,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>e.g. SC3.3.1, and make a copy of it for modification.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">2 - Renaming<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>* In the Finder, rename the copy of '<b>Standalone Template.app</b>' to e.g. <b>YourApp.app</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>* Alt-click on YourApp.app, and select 'Show package contents':</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Ths opens the folder inside the app.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>* Open the file Contents/Info.plist (with PropertyListEditor if you have it, or any text editor),<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>* in the section:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>...</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><key>CFBundleName</key></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><string>Standalone Template</string></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>...</p>
-<p class="p3"><span class="Apple-tab-span">	</span>replace '<b>Standalone Template</b>' with <b>YourApp</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>For safety, keep<span class="Apple-converted-space">  </span>a copy of the file Info.plist. around.</p>
-<p class="p2"><br></p>
-<p class="p3">2 - Credits</p>
-<p class="p3"><span class="Apple-tab-span">	</span>In Resources/English.lproj/Credits.rtf, add credits for all contributors to YourApp.</p>
-<p class="p2"><br></p>
-<p class="p3">3 - The top Help file</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Edit Resources/Help/Help.html to inform users about YourApp.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">4 - Adding resources, extensions, etc etc</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Put any soundfiles you intend to use in /Contents/Resources/sounds</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Put any extra UGen plugin libraries your app requires in (e.g. Kloink.scx) in Resources/plugins</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Put any classes for YourApp in Resources/SCClassLibrary</p>
-<p class="p2"><br></p>
-<p class="p3">5 - Modifying the startup file<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>in Resources/SCClassLibrary/, modify the file <b>modifyStartup.sc</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>to do anything your app needs, such as boot the server.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Then, call the class(es) and/or execute the script(s) that start(s) YourApp.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>See the section <b>Adding your own behavior</b> in <a href="Creating-Standalone-Applications.html"><span class="s1">Creating-Standalone-Applications</span></a><span class="s1">!</span></p>
-<p class="p2"><br></p>
-<p class="p3">6 - Start <b>YourApp</b> and test that it works. Adjusting scripts will usually require<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>modifications of file paths, and you may have forgotten classes!<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>You can recompile, edit scripts, add classes, as in SC3 itself.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">7 - When your app works as desired - <b>Share and Enjoy!</b></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Notes-on-the-HTML-Help-System.html b/Help/Extending and Customizing SC/Notes-on-the-HTML-Help-System.html
deleted file mode 100644
index 01fce71..0000000
--- a/Help/Extending and Customizing SC/Notes-on-the-HTML-Help-System.html	
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-</style>
-</head>
-<body>
-<p class="p1"><b>Notes on the HTML Help System</b></p>
-<p class="p2"><br></p>
-<p class="p3">On the OSX platform SC provides support for html help files through NSTextView's WebKit integration. The following should be noted:</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Links</b></p>
-<p class="p4"><br></p>
-<p class="p3">- Selected text can be converted to a link to the corresponding help file in SC's help search path (Help/ and the Extension directories) using the "Link to Help File" item in the Edit menu. The selected text should not include file extensions.</p>
-<p class="p4"><br></p>
-<p class="p3">- Links can be manually edited using the "Edit Link" item in the pop-up menu. (Ctrl-click)</p>
-<p class="p4"><br></p>
-<p class="p3">- Links will be relative if both the linking file and the linked file are in Help/, or if both are not. (This allows for relative linking of extension help files which are distributed together.) Manually edited file: scheme links will be converted to relative links on save.</p>
-<p class="p4"><br></p>
-<p class="p3">- If one file is not in Help/ and one is (i.e. linking from an extension file back to a file in Help/), a special SC: scheme link will be created, of the form SC://FilenameWithoutExtension. SC: scheme links call the help search routine.</p>
-<p class="p4"><br></p>
-<p class="p3">- Bad links cause a warning to be posted, and then call the help search routine.</p>
-<p class="p4"><br></p>
-<p class="p3">- Links which are not relative, and which do not use the file: or SC: schemes are not handled. This allows for http: scheme links to be passed on to Safari for instance.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Attachments</b></p>
-<p class="p4"><br></p>
-<p class="p3">- Attachments are saved in ./attachments/thisDocName/ relative to the main file.</p>
-<p class="p4"><br></p>
-<p class="p3">- Image attachments are converted to PNG files.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Generated HTML</b></p>
-<p class="p4"><br></p>
-<p class="p3">- HTML is generated afresh each time a file is saved. This allows for WYSIWYG editing. The general html support is reasonable, but because of this custom and hand-coded html should be used as a last resort only.</p>
-<p class="p4"><br></p>
-<p class="p3">- Occurences of %20 are converted to " " for compatibility with PsyCollider.</p>
-<p class="p4"><br></p>
-<p class="p3">- NSTextView doesn't like <b> tags within spans, but unfortunately the html export outputs bold underlined text in that way. For this reason on save a function determines the span class for underlines and places these spans within the corresponding <b></b> tags, rather than the other way around.</p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Quarks/Quark.html b/Help/Extending and Customizing SC/Quarks/Quark.html
deleted file mode 100644
index 37b7c2d..0000000
--- a/Help/Extending and Customizing SC/Quarks/Quark.html	
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a8220e}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0933e8}
-span.s2 {color: #000000}
-span.s3 {color: #316f11}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Quark</b></p>
-<p class="p2"><br></p>
-<p class="p3">see <a href="./Quarks.html"><span class="s1">Quarks</span></a> first</p>
-<p class="p4"><br></p>
-<p class="p3">A Quark is a package of SC classes, helpfiles, C++ source for UGens and other SC code.</p>
-<p class="p4"><br></p>
-<p class="p3">A Quark object is created from the quark file found in {Application Support}/quarks/DIRECTORY</p>
-<p class="p4"><br></p>
-<p class="p3">These Quark objects are mostly used just by the Quarks class, and you usually don't need to deal with them at all.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>But to publish a quark,<span class="Apple-converted-space">  </span>you do need to make the quark file.</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Format of the .quark File</b></p>
-<p class="p5"><br></p>
-<p class="p3">This quarkfile is written in sc code, and should contain a dictionary with basic information about the package.</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p8">// required:</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\name</span><span class="s2">: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"theName"<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\path</span><span class="s2">: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">"foldername"</span><span class="s2">, </span>// almost always the same as the quark name</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\summary</span><span class="s2">:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Human readable summary",</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\author</span><span class="s2">: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"My Name"<span class="s2">,</span></p>
-<p class="p2"><br></p>
-<p class="p8">// optional:</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\version</span><span class="s2">:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0, </span>// must be a float</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\organization</span><span class="s2">: <span class="Apple-tab-span">	</span></span>"My Organization"<span class="s2">,</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\country</span><span class="s2">: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"My Country"<span class="s2">,</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">\since</span>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"2004"</span>,</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\helpdoc</span><span class="s2">: </span>"theName.html"<span class="s2">,</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\ext_dependancy</span><span class="s2">: </span>"Information on additional software needed to run this quark properly"<span class="s2">,</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\url</span><span class="s2">: <span class="Apple-converted-space">          </span></span>"http://www.strangeQuark.de"<span class="s2">,</span></p>
-<p class="p2"><br></p>
-<p class="p8">// If the quark depends on other quarks, you can specify it as a list containing:</p>
-<p class="p8">// (1) strings (just the quark name)</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\dependencies</span><span class="s2">: </span>"nameOfDependantQuark"</p>
-<p class="p8">// (2) key->value pairs (name->version)</p>
-<p class="p8">//<span class="Apple-tab-span">	</span>\dependencies: [("nameOfDependantQuark" -> 1.0)]</p>
-<p class="p8">// or (3) arrays with info in this order: [name, version, repositoryBaseUrl]</p>
-<p class="p8">//<span class="Apple-tab-span">	</span>\dependencies: [["nameOfDependantQuark", 1.0, "https://svn.weirdserver.be/trunk/weirdquarks"]]</p>
-<p class="p2"><br></p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3">Of particular importance for the Quarks interface class is the PATH.<span class="Apple-converted-space">  </span>This is the path relative to the quark directory.<span class="Apple-converted-space">  </span>In most cases this is simply the name of the quark and also the name of the folder. <span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">However, you may wish to create a parent folder and then keep several quarks inside that, in which case your path would be : parentfolder/quarkname</p>
-<p class="p4"><br></p>
-<p class="p3">It may even be possible to nest quarks inside of quarks (a kind of aggregate package), though a better way to do that would be to define an empty quark (the aggregate) and specify the other sub quarks as dependencies.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Please test that you don't have any syntax errors in your quark file before commiting it.</b></p>
-<p class="p3">Thank you.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Quarks/Quarks.html b/Help/Extending and Customizing SC/Quarks/Quarks.html
deleted file mode 100644
index f2830ca..0000000
--- a/Help/Extending and Customizing SC/Quarks/Quarks.html	
+++ /dev/null
@@ -1,315 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Verdana; min-height: 13.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b4}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #522b1f; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #88231e}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Verdana}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 19.0px Helvetica}
-span.s2 {font: 9.0px Monaco; color: #001bb9}
-span.s3 {font: 9.0px Monaco}
-span.s4 {text-decoration: underline ; color: #002fe0}
-span.s5 {font: 11.0px Verdana}
-span.s6 {color: #0026b4}
-span.s7 {color: #001bb9}
-span.s8 {text-decoration: underline}
-span.s9 {color: #000000}
-span.s10 {color: #606060}
-span.s11 {color: #002da8}
-span.s12 {font: 12.0px Helvetica}
-span.s13 {color: #3068da}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Quarks<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>package manager</b></p>
-<p class="p2"><br></p>
-<p class="p3">SC supports extensions to its class library, documentation, and server UGen plugins. These extensions are stored in subfolders of <span class="s2">Platform</span><span class="s3">.userExtensionDir </span>– for more info see <a href="../Using-Extensions.html"><span class="s4">Using-Extensions</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3">A Quark is a more formalized kind of extension folder. It can be shared with others and can be easily installed or uninstalled using the Quarks package manager. The package manager has a directory of "quarkfiles" which describe the quarks and how to install them automatically for you.</p>
-<p class="p4"><br></p>
-<p class="p3">There is a shared library of these packages on SourceForge <span class="s5">http://quarks.sourceforge.net </span>offering a variety of useful extra capabilities for SC.</p>
-<p class="p5"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">There are two standard ways to obtain this shared Quarks library.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Method 1: Downloaded binary</b></p>
-<p class="p4"><br></p>
-<p class="p3">If you have downloaded the full binary of SC then you already have them in the Optional Extras folder of the SC download.</p>
-<p class="p3">If so, move the 'quarks' folder into this directory:</p>
-<p class="p4"><br></p>
-<p class="p6">// execute this code to post the directory path</p>
-<p class="p7"><span class="s6">Platform</span>.userAppSupportDir</p>
-<p class="p4"><br></p>
-<p class="p3">(note: do not place it inside Extensions. If you place all of them inside extensions, then they will all be in the compile path. )</p>
-<p class="p4"><br></p>
-<p class="p3">The Quarks package manager will now be able to install and uninstall individual Quark packages.<span class="Apple-converted-space">  </span>It does so by making a symlink in the Extensions/quarks/ folder, pointing back to the quark's source code which stays in the User App Support directory.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p6">// manage Quarks packages from a gui</p>
-<p class="p8">Quarks.gui</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p3">(note: do not turn everything on.<span class="Apple-converted-space">  </span>start slowly)</p>
-<p class="p4"><br></p>
-<p class="p3">Some Quarks depend on other Quarks and will automatically install the other ones they need. <span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Conflicts of classes and package dependencies are always a possibility, so be aware that you may "break" your SC so that it cannot compile what has been placed in its compile path. <span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><br></p>
-<p class="p3">If this happens, simply open this folder:</p>
-<p class="p7"><span class="s7">Platform</span>.userExtensionDir</p>
-<p class="p3">and delete the symlinks inside the quarks folder.<span class="Apple-converted-space">  </span>(Remember: these symlinks point back to the actual quarks sitting harmlessly in your app support directory)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Method 2: Getting Quarks from the SVN repository</b></p>
-<p class="p4"><br></p>
-<p class="p3">The other way to obtain the Quarks library is to checkout a copy using Subversion (SVN).<span class="Apple-converted-space">  </span>SC is fully integrated with SVN and can checkout single quarks or update them whenever developers make changes.<span class="Apple-converted-space">  </span>This is a wonderful thing since you can complain about a broken knob, somebody in Belgium will fix it and a few hours later its working for you.</p>
-<p class="p4"><br></p>
-<p class="p3">You will need the <b>subversion</b> client software installed ( <span class="s8">http://subversion.tigris.org</span> ). To check whether you already have it, type "svn help" in a terminal window.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>If you have previously installed the quarks library from the binary download, you should move or delete that folder now.</b></p>
-<p class="p4"><br></p>
-<p class="p3">The Quarks class and the quarks gui manager will be executing subversion commands.</p>
-<p class="p4"><br></p>
-<p class="p3">On Mac, those commands will launch in a terminal window. The first time you run a SourceForge quarks svn command you will be asked whether to accept the SSL certificate for SourceForge.<span class="Apple-converted-space">  </span>Press 'p' to accept it permanently.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>The DIRECTORY</b></p>
-<p class="p4"><br></p>
-<p class="p3">The quarks folder contains a folder called DIRECTORY filled with quarkfiles xxxxxxxxy.quark</p>
-<p class="p3">These file describe the quark, the developer and note any dependencies.<span class="Apple-converted-space">  </span>You can update the directory without downloading all of the quarks.</p>
-<p class="p4"><br></p>
-<p class="p3">The following command will make sure you have an up-to-date directory listing (you can run this whether or not it's your first time using quarks):</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s6">Quarks</span>.updateDirectory</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// list all quarks in the repository</p>
-<p class="p7"><span class="s6">Quarks</span>.repos.quarks</p>
-<p class="p2"><br></p>
-<p class="p3">Note that checking out or updating the directory touches only the list of quarks. It does not check out or update any code or help files that belong to a quark. If you want to get the latest code for an individual quark, use the instructions in the next section. To checkout or update the entire Quarks repository:</p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s7">Quarks</span><span class="s9">.checkoutAll; </span>// NB: most users don't want ALL quarks, so getting them all might be a waste of disk space!</p>
-<p class="p7"><span class="s6">Quarks</span>.update;</p>
-<p class="p4"><br></p>
-<p class="p3">Individual Quarks can be updated by providing the name to the update method:</p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s7">Quarks</span><span class="s9">.update(</span><span class="s10">"testquark"</span><span class="s9">); </span>// much better use of your hard disk. (NB this assumes you already have installed "testquark")</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Checking out and Installing a Quark</b></p>
-<p class="p4"><br></p>
-<p class="p3">Either launch the package manager to install/uninstall individual Quarks:</p>
-<p class="p4"><br></p>
-<p class="p11">Quarks<span class="s9">.gui</span></p>
-<p class="p4"><br></p>
-<p class="p3">which we hope is somewhat self explanatory.<span class="Apple-converted-space">  </span>(and steadily improving)</p>
-<p class="p4"><br></p>
-<p class="p3">...or use the "checkout" command directly:</p>
-<p class="p4"><br></p>
-<p class="p6">// checks it out from svn</p>
-<p class="p7"><span class="s6">Quarks</span>.checkout(<span class="s10">"testquark"</span>);</p>
-<p class="p2"><br></p>
-<p class="p6">// this installs it</p>
-<p class="p7"><span class="s6">Quarks</span>.install(<span class="s10">"testquark"</span>);</p>
-<p class="p4"><br></p>
-<p class="p3">This symlinks the quark's sourcecode folder into your Extensions directory.<span class="Apple-converted-space">  </span>The source code itself stays in the quarks folder, but the symlink is in your Extensions directory (and thus in SC's compile path).</p>
-<p class="p4"><br></p>
-<p class="p3">After a quark is installed you must <b>recompile the language</b>. Installing simply places the code into SC's compile path.<span class="Apple-converted-space">  </span>You must then recompile.</p>
-<p class="p4"><br></p>
-<p class="p3">Then you can use it:</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s6">TestQuark</span>.sayHello</p>
-<p class="p4"><br></p>
-<p class="p12"><b>Uninstall</b></p>
-<p class="p4"><br></p>
-<p class="p3">You can of course uninstall quarks if you decide you don't need them:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s6">Quarks</span>.uninstall(<span class="s10">"testquark"</span>);</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// list those installed</p>
-<p class="p7"><span class="s6">Quarks</span>.installed</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Dependencies</b></p>
-<p class="p2"><br></p>
-<p class="p3">Note: Quarks may specify other quarks that they are dependent on.<span class="Apple-converted-space">  </span>Quarks.install will also attempt to install those other quarks that the desired quark depends upon, if not already installed. You can prevent this if neccessary by passing <span class="s3">false</span> as the second argument to Quarks.install.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s6">Quarks</span>.install( <span class="s10">"somequark"</span>, includeDependencies: <span class="s6">false</span> )</p>
-<p class="p2"><br></p>
-<p class="p3">Similarly the install command will attempt to <b>download</b> quarks if you don't already have them locally. You can prevent this using the allowCheckout argument:</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s6">Quarks</span>.install( <span class="s10">"somequark"</span>, checkoutIfNeeded: <span class="s6">false</span> )</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p13"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// list those in the repository that you could checkout</p>
-<p class="p7"><span class="s6">Quarks</span>.repos.quarks</p>
-<p class="p2"><br></p>
-<p class="p6">// list those that you have checked out and could now install</p>
-<p class="p7"><span class="s6">Quarks</span>.local.quarks</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p12"><b>Check out all available Quarks</b></p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s6">Quarks</span>.checkoutAll</p>
-<p class="p2"><br></p>
-<p class="p3">This downloads all of them into {Application Support Directory}/quarks but does not yet install them into your class library.</p>
-<p class="p4"><br></p>
-<p class="p3">It can be particularly helpful because you won't in future need to have an internet connection to install the quarks: they are already downloaded even if not installed.</p>
-<p class="p2"><br></p>
-<p class="p6">// post those checked out</p>
-<p class="p7"><span class="s6">Quarks</span>.checkedOut</p>
-<p class="p2"><br></p>
-<p class="p6">// post those checked out with a description</p>
-<p class="p7"><span class="s6">Quarks</span>.listCheckedOut</p>
-<p class="p2"><br></p>
-<p class="p14">// post all available with a description</p>
-<p class="p7"><span class="s11">Quarks</span>.listAvailable</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p12"><b>Standard SVN tools</b></p>
-<p class="p2"><br></p>
-<p class="p3">The Quarks class interface mirrors the familar svn commands while substituting in the correct paths.</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s7">Quarks</span>.update( <span class="s10">"testquark"</span> )</p>
-<p class="p10"><span class="s7">Quarks</span><span class="s9">.update </span>// updates all</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s7">Quarks</span>.status( <span class="s10">"testquark"</span> )</p>
-<p class="p10"><span class="s7">Quarks</span><span class="s9">.status </span>// status of all</p>
-<p class="p4"><br></p>
-<p class="p3">You may also use any standard SVN tools which is probably easier especially for add and commit.</p>
-<p class="p4"><br></p>
-<p class="p3">The principal repository is located at:</p>
-<p class="p4"><br></p>
-<p class="p15">https://quarks.svn.sourceforge.net/svnroot/quarks</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p12"><b>Creating a Quark</b></p>
-<p class="p2"><br></p>
-<p class="p3">Adding a Quark requires using standard SVN tools (command line or SVNX)</p>
-<p class="p2"><br></p>
-<p class="p15"><span class="s12">Create your folder in </span>{Application Support}/quarks/<span class="Apple-converted-space"> </span></p>
-<p class="p3">(we'll assume it's called <i>quarkname</i>)</p>
-<p class="p4"><br></p>
-<p class="p3">Place your classes in this folder.</p>
-<p class="p4"><br></p>
-<p class="p3">Place a quark file called <i>quarkname</i>.quark into <span class="s5">{Application Support}/quarks/DIRECTORY</span></p>
-<p class="p3">(see [<a href="Quark.html"><span class="s13"><b>Quark</b></span></a>] for the format)</p>
-<p class="p4"><br></p>
-<p class="p3">You can now install, re-compile, test and uninstall install the quark from your local system without having added it into the public repository.</p>
-<p class="p4"><br></p>
-<p class="p3">You can use quarks for your own private purposes to install and uninstall packages of classes.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>To add it into the public repository:</b></p>
-<p class="p4"><br></p>
-<p class="p3">You will need a (free) SourceForge account to publish a quark to the subversion repository. You will<span class="Apple-converted-space">  </span>need to be familiar with the basics of svn. <span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">You also need the account to be added to the "quarks" project - contact one of the admins listed at <span class="s8">http://sourceforge.net/projects/quarks</span> to do that.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">Once you're authorised:</p>
-<p class="p4"><br></p>
-<p class="p3">In a shell go to <span class="s5">{Application Support}/quarks/<span class="Apple-converted-space"> </span></span> and<span class="Apple-converted-space">  </span>execute :</p>
-<p class="p4"><br></p>
-<p class="p7">svn add quarkname</p>
-<p class="p4"><br></p>
-<p class="p7">svn add DIRECTORY/quarkname.quark</p>
-<p class="p2"><br></p>
-<p class="p7">svn commit -m "adding quarkname" quarkname</p>
-<p class="p7">svn commit -m "adding directory entry for quarkname" DIRECTORY/quarkname.quark</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Be careful to commit only changes to your own quark and to the directory entry you have added.</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="s8">Local Repository Example</span></b></p>
-<p class="p2"><br></p>
-<p class="p3">Besides the public repos at sourceforge you can use any other subversion host including a repository running on your local machine.<span class="Apple-converted-space">  </span>Running a local repository is suprisingly easy. <span class="Apple-converted-space">  </span>This is useful in that you get version control and an easy way to manage package installation.</p>
-<p class="p4"><br></p>
-<p class="p3">For obvious reasons you need to have a running subversion system somewhere in order to use this feature.</p>
-<p class="p3">Nevertheless it is possible to use alreadily existing subversion quarks directories (as the SonEnvir one).</p>
-<p class="p4"><br></p>
-<p class="p3">1.<span class="Apple-tab-span">	</span>Create a directory in svn-repos (e.g. quarks-<yourname/id/institution>).</p>
-<p class="p3"><i><span class="Apple-tab-span">	</span>!This name has to be unique across all Quark repositories you will ever check out!</i></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Create a dir within it called <span class="s3">"DIRECTORY"</span> containing quark files.</p>
-<p class="p4"><br></p>
-<p class="p3">2.<span class="Apple-tab-span">	</span>Fill repos with your work<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">3.<span class="Apple-tab-span">	</span>Now use Quarks to make it accessible in SC (shown at hand of the existing and<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>publicly available SonEnvir quarks):</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir = <span class="s6">Quarks</span>(</p>
-<p class="p16"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reposPath: </span>"https://svn.sonenvir.at/repos/SonEnvir/trunk/src/quarks-sonenvir"<span class="s9">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>localPath: <span class="s6">Platform</span>.userAppSupportDir ++ <span class="s10">"/quarks-sonenvir"</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.checkoutAll;</p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span></span>// or, if alreadily checked out at the appropriate place:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.update;</p>
-<p class="p2"><br></p>
-<p class="p3">4.<span class="Apple-tab-span">	</span>now install your quarks:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span></span>// post all checked out</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.listCheckedOut;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span></span>// or post all available with a description</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.listAvailable</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.install(<span class="s10">"sonenvir-testquark"</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.isInstalled(<span class="s10">"sonenvir-testquark"</span>);</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.listInstalled</p>
-<p class="p2"><br></p>
-<p class="p3">5.<span class="Apple-tab-span">	</span>recompile</p>
-<p class="p3">6.<span class="Apple-tab-span">	</span>test</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span>SonEnvirTestQuark<span class="s9">.sayHello</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir = <span class="s6">Quarks</span>(</p>
-<p class="p16"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reposPath: </span>"https://svn.sonenvir.at/repos/SonEnvir/trunk/src/quarks-sonenvir"<span class="s9">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>localPath: <span class="s6">Platform</span>.userAppSupportDir ++ <span class="s10">"/quarks-sonenvir"</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><br></p>
-<p class="p7">[...]</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">N.<span class="Apple-tab-span">	</span>remove what you're don't need</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.uninstall(<span class="s10">"sonenvir-testquark"</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span></span>// recompile</p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span>SonEnvirTestQuark<span class="s9">.sayHello</span></p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span></span>// -> error</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">M.<span class="Apple-tab-span">	</span>update</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.updateDirectory</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~qSonEnvir.update</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Style Guide/ClassHelpTemplate.html b/Help/Extending and Customizing SC/Style Guide/ClassHelpTemplate.html
deleted file mode 100644
index 09d1887..0000000
--- a/Help/Extending and Customizing SC/Style Guide/ClassHelpTemplate.html	
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #bf0000}
-span.s5 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SomeClass<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>explanation of what SomeClass is and/or does</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : SuperClassOfSomeClass</b></p>
-<p class="p3"><br></p>
-<p class="p1">More detailed prose description of SomeClass.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="../../ServerArchitecture/Server.html"><span class="s2">Server</span></a> [some other help files]</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding SomeClass (optional)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Explanation of the issues. For more information see <a href="../../ServerArchitecture/ServerTiming.html"><span class="s2">ServerTiming</span></a> and [some other help files].</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new(arg1, arg2)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Short prose description of method.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- Explanation of arg1 and its default value. Further important information regarding this method. Note the use of margins for effective text wrapping.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg2<span class="Apple-converted-space"> </span></b> - Explanation of arg1 and its default value.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// inline example</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">SomeClass</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.doSomething; <span class="s4">// explanation</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.cleanUpMethod;</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*aMethodWithNoArgs</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Short prose description of method.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6">An optional short bit of prose explaining something important about the following class methods:</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*anotherSimpleMethod(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This method does something to <b>arg1</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*yetAnotherMethod</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Short prose description.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// inline example</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">SomeClass</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.yetAnotherMethod; <span class="s4">// explanation</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>g.cleanUpMethod;</p>
-<p class="p7"><br></p>
-<p class="p11"><b>Accessing Instance and Class Variables</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setSomeVar_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>getSomeVar</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Explanation including the type of <b>someVar </b>and a link to its help file.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b>Doing Some Task (optional)</b></p>
-<p class="p12"><br></p>
-<p class="p6">A short bit of prose explaining something about the task.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>instanceMethod1(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Explanation including default value for <b>arg1</b>.<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>instanceMethod2(arg1, arg2)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Explanation of this method.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- Explanation and default value for arg1. Further important information regarding this method. Note the use of margins for effective text wrapping.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg2<span class="Apple-converted-space"> </span></b> - Explanation of arg2 and its default value.<b><span class="Apple-tab-span">	</span></b></p>
-<p class="p13"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>instanceMethodWithAReturnValue</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a <a href="../../Math/Float.html"><span class="s2">Float</span></a> indicating... (explanation of the method)<span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>someInstanceMethod(aNode)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>someInstanceMethodMsg(aNode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>Explanation of these two closely related methods.<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p11"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p14">// what this example does</p>
-<p class="p15">g = <span class="s2">SomeClass</span>.new;</p>
-<p class="p15">g.instanceMethod(someObject);</p>
-<p class="p15">g.cleanUp;</p>
-<p class="p3"><br></p>
-<p class="p15">...</p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Style Guide/Documentation Style Guide.html b/Help/Extending and Customizing SC/Style Guide/Documentation Style Guide.html
deleted file mode 100644
index 0c17d75..0000000
--- a/Help/Extending and Customizing SC/Style Guide/Documentation Style Guide.html	
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {text-decoration: underline ; color: #001ee6}
-span.s4 {color: #0018b8}
-span.s5 {text-decoration: underline ; color: #0000ee}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #0000ff}
-span.s8 {text-decoration: underline ; color: #0018b8}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Style Guide for SuperCollider Documentation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>See also: </b><a href="../Helper/Helper.html"><span class="s2">Helper</span></a> <a href="../Helper/AutoClassHelper.html"><span class="s2">AutoClassHelper</span></a> <a href="UGenHelpTemplate.html"><span class="s3">UGenHelpTemplate</span></a> <a href="ClassHelpTemplate.html"><span class="s3">ClassHelpTemplate</span></a></span><span class="s4"> <a href="TopicHelpTemplate.html"><span class="s5">TopicHelpTemplate</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>What this Guide Covers</b></p>
-<p class="p2"><br></p>
-<p class="p5">This document is intended as a style guide for SuperCollider documentation. SuperCollider's documentation must meet more varied requirements than some general purpose languages, as it needs to address a range of users from computer scientists to computer novices. It contains quick reference files, topics tutorials, and everything in between. As such, it should be understood that there will be numerous necessary exceptions to these guidelines, and that the intent of this guide is to assist in achieving consistency, clarity, and completeness.</p>
-<p class="p2"><br></p>
-<p class="p5">This document is not specifically intended to cover large-scale tutorials or third party libraries, although it is expected that authors may find these guidelines useful and appropriate in those contexts as well.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>General Points</b></p>
-<p class="p2"><br></p>
-<p class="p5">Documentation should be complete. That is to say, all non-'private' methods of classes should be documented. Default values for arguments should be given, as should the type of any value returned. In general methods should only be documented in the help file for the class in which they are implemented, but on occasion it may be appropriate to document some inherited methods in help files for subclasses as well, for the sake of clarity.</p>
-<p class="p2"><br></p>
-<p class="p5">HTML is the preferred file format for documentation, and these guidelines are written mostly with html in mind. That said, much of what is contained here could apply to documentation in rtf, rtfd, or scd (plain text) formats as well.</p>
-<p class="p2"><br></p>
-<p class="p5">Use of the automatic help file generating faciliies of <a href="../Helper/Helper.html"><span class="s4">Helper</span></a> and <a href="../Helper/AutoClassHelper.html"><span class="s4">AutoClassHelper</span></a> is encouraged. In addition to making it easier to create helpfiles these help ensure consistency, completeness and uniformity.</p>
-<p class="p2"><br></p>
-<p class="p5">HTML should be basic. On OSX it can be generated automatically and is WYSIWYG editable. (See <a href="../Notes-on-the-HTML-Help-System.html"><span class="s4">Notes-on-the-HTML-Help-System</span></a> for details.) The use of hand-coded or overly complex HTML should be avoided wherever possible since it may not be parsed correctly on all platforms. HTML documents should not load non-local resources and should always function correctly in an offline context.</p>
-<p class="p2"><br></p>
-<p class="p5">Authors should aim to strike an appropriate balance between specialist discussion and accessibility to new users. Jargon should be used where it enhances clarity, but not where it is unnecessary. Naturally the particular level at which a given document is written will be context dependant.</p>
-<p class="p2"><br></p>
-<p class="p5">Links should be hyperlinks rather than the old style help links.</p>
-<p class="p2"><br></p>
-<p class="p5">Underlining should be avoided, as it is used for the built-in wiki system and can result in unintentional document creation by users.</p>
-<p class="p2"><br></p>
-<p class="p5">The use of margins (on OSX use Format->Text->Show Ruler, Copy Ruler, etc.) is preferrable to tabs when indenting chunks of prose (i.e. method explanations), as it maintains proper text wrap when edited. Tabs are fine for example code and should be utilised to indicate scope.</p>
-<p class="p2"><br></p>
-<p class="p5">The use of 'see also' links is encouraged.</p>
-<p class="p2"><br></p>
-<p class="p5">Authors are encouraged to keep these guidelines in mind when updating old help files, and correct any issues or inconsistencies.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Font Recommendations</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s6">Document Titles: </span><b>Helvetica 18 point Bold</b></p>
-<p class="p5">Document Description (on the same line as the title): <b>Helvetica 12 point Bold</b></p>
-<p class="p4"><span class="s6">Section Titles: </span><b>Helvetica 14 point Bold</b></p>
-<p class="p5">Prose: Helvetica 12 point</p>
-<p class="p5">Emphasized Text (inluding method and argument names, bullet headings, etc.): <b>Helvetica 12 point Bold</b></p>
-<p class="p6"><span class="s6">Code examples: </span><span class="s4">Monaco</span> 9 point, syntax colorised</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Code Examples</b></p>
-<p class="p2"><br></p>
-<p class="p5">Examples should make use of object style rather than messaging style unless the document in question relates specifically to the latter.</p>
-<p class="p2"><br></p>
-<p class="p5">Examples should use SynthDef:add rather than SynthDef:load or :store, or :memStore<span class="Apple-converted-space">  </span>wherever appropriate to avoid creating scsyndef files on the user's hard-drive (this recommendation has changed).</p>
-<p class="p2"><br></p>
-<p class="p5">Examples can use a mixture of Function:play and SynthDef style approaches where appropriate.</p>
-<p class="p2"><br></p>
-<p class="p5">Examples in object style should pass server abstraction objects such as Nodes, Buffers, and Busses as args directly rather than using the nodeID, bufnum, and index methods wherever possible.</p>
-<p class="p2"><br></p>
-<p class="p5">Examples can be placed in an examples section at the end of the text or interspersed within the text. The former is often appropriate for short documents (such as UGen help files) and the latter for longer documents. In some cases it may be appropriate to do both; for instance a large class with short examples demonstrating individual methods within the text and a longer examples section at the end. Interspersed examples should be indented.</p>
-<p class="p2"><br></p>
-<p class="p5">The initial examples in any help file should be as simple and clear as possible.</p>
-<p class="p2"><br></p>
-<p class="p5">Examples in the general SC documentation should not be dependant on any third party libraries, Quarks, etc. in order to function.</p>
-<p class="p2"><br></p>
-<p class="p5">Examples should include any necessary cleanup code. This includes explicitly freeing any created synths. Examples should not rely on an implicit use of Cmd-.</p>
-<p class="p2"><br></p>
-<p class="p5">Examples should wrap blocks of code that are meant to be executed together in parentheses. Individual examples should be distinguished by comments.</p>
-<p class="p2"><br></p>
-<p class="p5">Examples should make appropriate use of comments to explain what is happening.</p>
-<p class="p2"><br></p>
-<p class="p5">GUI examples should make use of the view redirect classes wherever possible in order to ensure cross-platform compatibility. See <a href="../../GUI/GUI-Overview.html"><span class="s4">GUI-Overview</span></a> for more information.</p>
-<p class="p2"><br></p>
-<p class="p5">Classes which are effectively front ends for OSC functionality (i.e. the server abstraction classes) should contain a section showing the OSC messages generated by the class. This can for instance take the form of an example using Server:makeBundle.</p>
-<p class="p2"><br></p>
-<p class="p5">Examples which make reference to keyboard shortcuts should include all cross-platform equivalents. See <a href="../../Other Topics/Shortcuts.html"><span class="s7">Shortcuts</span></a> for documentation of these.</p>
-<p class="p2"><br></p>
-<p class="p5">The use of plot and scope in examples is encouraged where appropriate (i.e. to illustrate something particular about a UGen), but such examples should not be the only ones in any file as they have GUI dependencies. Alternatively, plots can be included as images. Scope examples should call Stethoscope.defaultServer to get the appropriate server object.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Layout</b></p>
-<p class="p2"><br></p>
-<p class="p5">Documents should be in one three styles, broadly speaking (although the use of custom document styles may sometimes be necessary):</p>
-<p class="p2"><br></p>
-<p class="p5"><b>UGen Help File</b> - A short file outlining *ar, *kr, and *ir methods as appropriate. Should include examples. <b>mul</b> and <b>add</b> arguments are generally not documented due to their ubiquity.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Class Help File</b> - Usually a longer file documenting a particular class. In general methods will be divided up into sections by type and related functionality, rather than simply listed alphabetically. For smaller classes they might simply be divided into Class Methods and Instance Methods. Detailed general explanations can be done at the top of the document or at the top of each relevant section. It is often appropriate to document getters and setters or other closely related methods together. These documents should still be suitable for quick reference, so if extensive prose explanation is necessary it may be appropriate to move that text to a 'Topic' file and link to it.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Topic File</b> - These are longer, mostly prose documents which serve as short tutorials explaining some aspect of SC's use or design, relevant theory, etc. These are less than full-fledged general tutorials but probably still useful for some reference. As a general rule particular care should be taken in this type of document to ensure that they are accessible to users with less experience.</p>
-<p class="p2"><br></p>
-<p class="p5">Authors will probably find it simplest to use <a href="../Helper/Helper.html"><span class="s4">Helper</span></a> and <a href="../Helper/AutoClassHelper.html"><span class="s4">AutoClassHelper</span></a> when creating help files, but the following templates are available for use: <a href="UGenHelpTemplate.html"><span class="s8">UGenHelpTemplate</span></a> <a href="ClassHelpTemplate.html"><span class="s8">ClassHelpTemplate</span></a><span class="s4"> <a href="TopicHelpTemplate.html"><span class="s5">TopicHelpTemplate</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>v. 1.3 April 2009</b></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Style Guide/TopicHelpTemplate.html b/Help/Extending and Customizing SC/Style Guide/TopicHelpTemplate.html
deleted file mode 100644
index 87a24e5..0000000
--- a/Help/Extending and Customizing SC/Style Guide/TopicHelpTemplate.html	
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #bf0000}
-span.s4 {color: #0000bf}
-span.s5 {text-decoration: underline ; color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Some Topic</b></p>
-<p class="p2"><br></p>
-<p class="p3">Introductory prose discussing Some Topic.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some aspect of Some Topic</b></p>
-<p class="p2"><br></p>
-<p class="p3">Prose discussion which leads to this example:</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>// inline example</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>b = </span><span class="s2">SomeClass</span><span class="s1">.new(s, 100, 2); <span class="Apple-tab-span">	</span></span>// explanation of this line</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>b.doSomething;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// explanation of this line</p>
-<p class="p7"><br></p>
-<p class="p3">Further discussion leading to the next bit of code which continues from the previous example:</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>b.doSomethingMore</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>b.cleanUp;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some other aspect</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">More prose... Explains how <a href="../../Core/Object.html"><span class="s4">Object</span></a> and <a href="../../Language/Polymorphism.html"><span class="s4">Polymorphism</span></a> are very important to Some Topic.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>See also: </b><a href="../../ServerArchitecture/Buffer.html"><span class="s5">Buffer</span></a><b> </b>[other related help files]</p>
-<p class="p2"><br></p>
-<p class="p4"><b>More detailed examples</b></p>
-<p class="p9"><br></p>
-<p class="p6"><span class="s1">b = </span><span class="s2">SomeClass</span><span class="s1">.new(s, 100, 2); <span class="Apple-tab-span">	</span></span>// explanation of this line</p>
-<p class="p6"><span class="s1">b.doSomething;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// explanation of this line</p>
-<p class="p8">b.cleanUp</p>
-<p class="p7"><br></p>
-<p class="p8">...</p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Style Guide/UGenHelpTemplate.html b/Help/Extending and Customizing SC/Style Guide/UGenHelpTemplate.html
deleted file mode 100644
index 4703619..0000000
--- a/Help/Extending and Customizing SC/Style Guide/UGenHelpTemplate.html	
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SomeUGen<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>explanation of the what SomeUGen does</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>SomeUGen.ar(arg1, arg2, mul, add)</b></p>
-<p class="p1"><b>SomeUGen.kr(arg1, arg2, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Here is a short prose explanation of what the UGen does, and any other relevant points.</p>
-<p class="p1"><b>arg1</b> - explanation of arg1 and default value if applicable</p>
-<p class="p1"><b>arg2</b> - explanation of arg2 and default value if applicable</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="../../UGens/Oscillators/SinOsc.html"><span class="s2">SinOsc</span></a> [other related UGens...]</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// what this example does</p>
-<p class="p5">x = { <span class="s3">SomeUGen</span>.ar(<span class="s3">XLine</span>.kr(2000, 200), 0, 0.5) }.play;</p>
-<p class="p5">x.free;</p>
-<p class="p3"><br></p>
-<p class="p4">// what this example does</p>
-<p class="p5">(</p>
-<p class="p5">x = SynthDef(\helpSomeUGen, {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Out.ar(0, <span class="s3">SomeUGen</span>.ar(<span class="s3">SinOsc</span>.ar(<span class="s3">XLine</span>.kr(1, 1000, 9), 0, 200, 800), 0, 0.25));<span class="Apple-converted-space"> </span></p>
-<p class="p5">}).play;<span class="Apple-converted-space"> </span></p>
-<p class="p5">)</p>
-<p class="p5">x.free;</p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Using-Extensions.html b/Help/Extending and Customizing SC/Using-Extensions.html
deleted file mode 100644
index d30f18f..0000000
--- a/Help/Extending and Customizing SC/Using-Extensions.html	
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #002ff6}
-span.s4 {color: #001dfd}
-span.s5 {text-decoration: underline ; color: #001bec}
-span.s6 {color: #002bb0}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Using Extensions</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">See also: <a href="Writing-Classes.html"><span class="s2">Writing-Classes</span></a><b><span class="Apple-converted-space">    </span></b><a href="Writing_Unit_Generators.html"><span class="s2">Writing_Unit_Generators</span></a></span><span class="s3"> <span class="Apple-converted-space"> </span></span><span class="s4"> <a href="Quarks/Quarks.html"><span class="s5">Quarks</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">SC supports extensions to its class library, documentation, and server UGen plugins. Extensions should be packaged as a single folder containing all three (for convenient addition or removal), or any combination, which can then be placed in platform-specific extension directories in order to be included.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Platform Specific Directories</b></p>
-<p class="p5"><br></p>
-<p class="p4">You can install extensions simply by copying the extensions to the following location:</p>
-<p class="p5"><br></p>
-<p class="p4"><b>User-specific</b></p>
-<p class="p4">OSX<b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>~/Library/Application Support/SuperCollider/Extensions/</p>
-<p class="p4">Linux<b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>~/share/SuperCollider/Extensions/</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s6">Platform</span>.userExtensionDir</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>System-wide (apply to all users)</b></p>
-<p class="p4">OSX<b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>/Library/Application Support/SuperCollider/Extensions/</p>
-<p class="p4">Linux<b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>/usr/local/share/SuperCollider/Extensions/</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s6">Platform</span>.systemExtensionDir</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b>How Extensions Folders Should be Organised</b></p>
-<p class="p5"><br></p>
-<p class="p4">Class files and UGen plugins are recognised by their file extensions (.sc for the former and .scx or .sco for the latter). Anything placed within a folder named help/ or ignore/ (case insensitive) will be ignored when compiling the class library or loading plugins, but anything in the former will be added to the search path for help files.</p>
-<p class="p5"><br></p>
-<p class="p4">Here is an example folder layout:</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>MyExtension/</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>classes/</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myClass.sc <span class="Apple-tab-span">	</span>myUGens.sc</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>plugins/</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myUGenPlugins.scx</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>help/</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myClass.html <span class="Apple-tab-span">	</span>myUGen1.html<span class="Apple-tab-span">	</span>myUGen2.html</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Using-the-Startup-File.html b/Help/Extending and Customizing SC/Using-the-Startup-File.html
deleted file mode 100644
index 8d485fd..0000000
--- a/Help/Extending and Customizing SC/Using-the-Startup-File.html	
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #98281a}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0023b2; min-height: 14.0px}
-span.s1 {color: #0000ff}
-span.s2 {font: 10.0px Monaco}
-span.s3 {color: #0023b2}
-span.s4 {color: #000000}
-span.s5 {color: #0000bf}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Using the Startup File</b></p>
-<p class="p2"><br></p>
-<p class="p3">Once the class library is finished compiling the interpreter looks for a file at an operating system dependent path and if such a file exists, executes any code within it. (This happens within <a href="../Core/Kernel/Main.html"><span class="s1">Main</span></a>-startup.) By creating a file in this location you can make user specific customizations.</p>
-<p class="p2"><br></p>
-<p class="p3">- On <b>Mac OS X</b> the path is either <span class="s2">"/Library/Application Support/SuperCollider/startup.rtf"</span> (i.e. a system-wide file) or <span class="s2">"~/Library/Application Support/SuperCollider/startup.rtf"</span> (i.e. a user-specific file). Both files can be used, where the system-wide file is executed before the user-specific file.<br>
-- On <b>Linux</b> the path is <span class="s2">"~/.sclang.sc"</span><br>
-- On <b>Windows</b> the file is <span class="s2">"startup.sc"</span> and needs to be in the same directory as PsyCollider</p>
-<p class="p2"><br></p>
-<p class="p3">A common example would be to alter the options of the local and internal Servers:</p>
-<p class="p4">// placing the following code in the file will cause these modifications to be made</p>
-<p class="p4">// at startup (see also: <a href="../ServerArchitecture/ServerOptions.html"><span class="s1">ServerOptions</span></a>)</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s3">Server</span><span class="s4">.local.options.numOutputBusChannels = 4;<span class="Apple-tab-span">	</span></span>// change number of input and output channels</p>
-<p class="p6"><span class="s3">Server</span>.local.options.numInputBusChannels = 4;</p>
-<p class="p6"><span class="s3">Server</span>.internal.options.numOutputBusChannels = 4;</p>
-<p class="p6"><span class="s3">Server</span>.internal.options.numInputBusChannels = 4;</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s5">Server</span><span class="s4">.local.options.device = </span><span class="s6">"Built-in Audio"</span><span class="s4">;<span class="Apple-tab-span">	</span></span>// use a specific soundcard</p>
-<p class="p6"><span class="s5">Server</span>.local.options.device = <span class="s6">"MOTU Traveler"</span>;</p>
-<p class="p6"><span class="s5">Server</span>.local.options.device = <span class="s6">"TASCAM US-122"</span>;</p>
-<p class="p6"><span class="s5">Server</span>.local.options.device = <span class="s6">"Jack Router"</span>;</p>
-<p class="p7"><span class="s5">Server</span><span class="s4">.local.options.device = </span><span class="s5">nil</span><span class="s4">;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// use the system default soundcard</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s3">Server</span><span class="s4">.local.options.blockSize = 128; </span>// increase block size (default is 64)</p>
-<p class="p6"><span class="s3">Server</span>.internal.options.blockSize = 128;</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s3">Server</span><span class="s4">.local.options.sampleRate = 96000; </span>// increase sampling rate (if your hardware supports it)</p>
-<p class="p6"><span class="s3">Server</span>.internal.options.sampleRate = 96000;</p>
-<p class="p7"><span class="s5">Server</span><span class="s4">.internal.options.sampleRate = </span><span class="s5">nil</span><span class="s4">;<span class="Apple-tab-span">	</span></span>// use the currently selected samplerate of the soundcard</p>
-<p class="p5"><br></p>
-<p class="p4">// change the standard synthDef directory to a custom one:</p>
-<p class="p6"><span class="s3">SynthDef</span>.synthDefDir = <span class="s6">"~/scwork/synthdefs"</span>.standardizePath;</p>
-<p class="p5"><br></p>
-<p class="p4">// change the standard archive path to a custom one:</p>
-<p class="p6"><span class="s3">Archive</span>.archiveDir = <span class="s6">"~/scwork"</span>.standardizePath;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">Naturally the file must contain only valid SC expressions.</p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Writing Primitives.html b/Help/Extending and Customizing SC/Writing Primitives.html
deleted file mode 100644
index c73119c..0000000
--- a/Help/Extending and Customizing SC/Writing Primitives.html	
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000c1}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #216e23}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #780850; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #780850}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 10.0px; font: 9.0px Monaco; color: #0000e1; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 10.0px; font: 12.0px Helvetica; color: #0000e1}
-span.s1 {color: #0000c1}
-span.s2 {color: #000000}
-span.s3 {color: #780850}
-span.s4 {color: #0000ff}
-span.s5 {color: #8d0c11}
-span.s6 {font: 9.0px Monaco}
-span.s7 {color: #216e23}
-span.s8 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Writing Primitives</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>In SuperCollider code:</b></p>
-<p class="p2"><br></p>
-<p class="p4">Cocoa {</p>
-<p class="p4"><span class="Apple-tab-span">	</span>prGetPathsDialog { <span class="s1">arg</span> returnSlot;</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>_Cocoa_GetPathsDialog</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s1">this</span>.primitiveFailed</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">}</p>
-<p class="p2"><br></p>
-<p class="p3"><b>In your primitive source code define the primitive:</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">void</span> initCocoaFilePrimitives()</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">int</span> base, index;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>base = nextPrimitiveIndex();</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index = <span class="s4">0</span>;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>definePrimitive(base, index++, <span class="s5">"_Cocoa_GetPathsDialog"</span>, prGetPathsDialog, <span class="s4">2</span>, <span class="s4">0</span>);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// further primitives can be laid in...</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//definePrimitive(base, index++, "_Cocoa_SaveAsPlist", prSaveAsPlist, 3, 0);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p8">Here is the prototype for definePrimitive:</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>int</span> definePrimitive(<span class="s3">int</span> base, <span class="s3">int</span> index, <span class="s3">char</span> *name, PrimitiveHandler handler, <span class="s3">int</span> numArgs, <span class="s3">int</span> varArgs);</p>
-<p class="p2"><br></p>
-<p class="p3">The numArgs is the number of arguments that were passed into the SuperCollider method that calls the primitive, plus one to include the receiver which is passed in as the first argument. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">(TODO varArgs ...)</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Write your primitive</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s6">g->sp </span>is the top of the stack and is the last argument pushed.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s6">g->sp - inNumArgsPushed + 1 </span>is the receiver and where the result goes.</p>
-<p class="p2"><br></p>
-<p class="p3">In this example, the numArgsPushed will be 2 (as specified in definePrimitive)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">int</span> prGetPathsDialog(<span class="s3">struct</span> VMGlobals *g, <span class="s3">int</span> numArgsPushed);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">int</span> prGetPathsDialog(<span class="s3">struct</span> VMGlobals *g, <span class="s3">int</span> numArgsPushed)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">        </span><span class="s3">if</span> (!g->canCallOS) <span class="s3">return</span> errCantCallOS;<span class="s7">//if its deferred, does this matter ?</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">        </span>PyrSlot *receiver = g->sp - <span class="s4">1</span>; <span class="s7">// an instance of Cocoa</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">        </span>PyrSlot *array = g->sp; <span class="s7">// an array</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// ...<span class="Apple-converted-space">  </span>the body</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">        </span><span class="s3">return</span> errNone;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This example does not set the receiver, so the primitive returns the original receiver unchanged (still an instance of Cocoa).</p>
-<p class="p2"><br></p>
-<p class="p3">or set the object at</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>receiver</p>
-<p class="p9"><br></p>
-<p class="p4"><span class="s8">which again is at</span> (g->sp - numArgsPushed + 1)</p>
-<p class="p10"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>some guidelines:</b></p>
-<p class="p9"><br></p>
-<p class="p3">If possible, you should avoid creating objects in a primitive. Primitives are much simpler to write and debug if you pass in an object that you create in SC code and fill in its slots in the primitive.</p>
-<p class="p9"><br></p>
-<p class="p3">When you do fill in slots in an object with other objects, you must call g->gc->GCWrite(obj, slot) in order to notify the garbage collector that you have modified a slot that it may have already scanned.</p>
-<p class="p9"><br></p>
-<p class="p3">Do not store pointers to PyrObjects in C/C++ variables unless you can absolutely guarantee that they cannot be garbage collected. For example the File and SCWindow classes do this by storing the objects in an array in a classvar. The object has to stay in that array until no C object refers to it.</p>
-<p class="p9"><br></p>
-<p class="p3">Failing to observe the above two points can result in very hard to find bugs.</p>
-<p class="p9"><br></p>
-<p class="p3">If you create more than one object in a primitive you must make sure that all the previously created objects are reachable before you allocate another. In other words you must store them on the stack or in another object's slots before creating another. Creating objects can call the garbage collector and if you have not made your objects reachable, they can get collected out from under you.</p>
-<p class="p9"><br></p>
-<p class="p3">Since SC is dynamically typed, you cannot rely on any of the arguments being of the class you expect. You should check every argument to make sure it is the correct type. One way to do this is by using isKindOfSlot.<span class="Apple-converted-space">  </span>If you just want a numeric value, you can use slotIntVal, slotFloatVal, or slotDoubleVal which will return an error if the value is not a numeric type. Similarly there is slotStringVal.<span class="Apple-converted-space"> </span></p>
-<p class="p3">It is safe to assume that the receiver will be of the correct type because this is ensured by the method dispatch mechanism.</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p11">Q: now where do i put the thing to return it ?</p>
-<p class="p9"><br></p>
-<p class="p3">A: into g->sp - inNumArgsPushed + 1.</p>
-<p class="p3">In most primitives this is referred to by the variable 'a'.</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Writing-Classes.html b/Help/Extending and Customizing SC/Writing-Classes.html
deleted file mode 100644
index 3cc1747..0000000
--- a/Help/Extending and Customizing SC/Writing-Classes.html	
+++ /dev/null
@@ -1,418 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.11">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px 'Lucida Grande'}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px 'Lucida Grande'; min-height: 17.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px 'Lucida Grande'}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px 'Lucida Grande'; min-height: 18.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Courier; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3300d3}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px 'Lucida Grande'; color: #000000; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {font: 14.0px 'Lucida Grande'}
-span.s4 {font: 14.0px Courier; color: #000000}
-span.s5 {font: 9.0px Monaco}
-span.s6 {font: 12.0px Helvetica; color: #000000}
-span.s7 {color: #3300d3}
-span.s8 {color: #4300ff}
-span.s9 {font: 9.0px Monaco; color: #0000bf}
-span.s10 {font: 14.0px 'Lucida Grande'; color: #000000}
-span.s11 {color: #737373}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Writing SuperCollider Classes<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">For a basic tutorial on how standard object-orientated classes are composed, look elsewhere<span class="Apple-converted-space"> </span></p>
-<p class="p4">http://www.google.com/search?q=oop+class+tutorial</p>
-<p class="p2"><br></p>
-<p class="p3">Note: Class definitions are statically compiled when you launch supercollider or "recompile the library." This means that class definitions must be saved into a file with the extension .sc, in a disk location where supercollider looks for classes. Saving into the main class library (SCClassLibrary) is generally not recommended. It's preferable to use either the user or system extension directories.</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">Platform</span><span class="s2">.userExtensionDir; <span class="Apple-converted-space">  </span></span>// Extensions available only to your user account</p>
-<p class="p6"><span class="s1">Platform</span><span class="s2">.systemExtensionDir; <span class="Apple-converted-space">  </span></span>// Extensions available to all users on the machine</p>
-<p class="p5"><br></p>
-<p class="p3">It is not possible to enter a class definition into an interpreter window and execute it.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Inheriting<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>NewClass<span class="s2"> : </span>SomeSuperclass<span class="s2"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p3">Without specifying a superclass, Object is assumed as the default superclass.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>NewClass</span><span class="s2"> { </span>// : Object is implied</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p7"><b>Methods<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><br></p>
-<p class="p3"><b>class methods</b> are specified with the asterix</p>
-<p class="p2"><br></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>*classMethod { <span class="s1">arg</span> argument;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>within the class method, the keyword<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>this<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>refers to the class.<span class="Apple-converted-space">   </span></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>A class in smalltalk is itself an object.<span class="Apple-converted-space">  </span>It is an instance of Class.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>instance methods</b> are specified :</p>
-<p class="p2"><br></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>instanceMethod { <span class="s1">arg</span> argument;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>within the instance method, the keyword<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>this<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p12"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>refers to the instance.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">to <b>return</b> from the method use ^ (caret)</p>
-<p class="p2"><br></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>someMethod {<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^returnObject<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p3">multiple exit points also possible :<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>someMethod { <span class="s1">arg</span> aBoolean;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(aBoolean,{<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^someObject<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},{<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^someOtherObject<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>if no ^ is specified, the method will return the <b>instance</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>(and in the case of Class methods, will return the class)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>There is no such thing as returning void in Smalltalk.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>New Instance creation<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><br></p>
-<p class="p3">Object.new will return to you a new object.<span class="Apple-converted-space"> </span></p>
-<p class="p3">when overriding the class method .new you must call the superclass, which in turn calls its superclass, up until Object.new is called and an object is actually created and its memory allocated.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>// this example adds no new functionality<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>*new {<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s1">super</span>.new<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// this is a normal constructor method</p>
-<p class="p11"><span class="Apple-tab-span">	</span>*new { <span class="s1">arg</span> arga,argb,argc;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s1">super</span>.new.init(arga,argb,argc)<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span>init { <span class="s1">arg</span> arga,argb,argc;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span></span>// do initiation here</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p3">In this case note that super.new called the method new on the superclass and returned a new object. subsequently we are calling the .init method on that object, which is an instance method.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p3"><b>Warning: </b>if the superclass also happened to call super.new.init it will have expected to call the .init method defined in that class (the superclass), but instead the message .init will find the implementation of the class that the object actually is, which is our new subclass. <span class="Apple-converted-space">  </span>So you should use a unique method name like myclassinit if this is likely to be a problem.</p>
-<p class="p5"><br></p>
-<p class="p3">One easy way to copy the arguments passed to the instance variables when creating a class  is to use  <span class="s5">newCopyArgs</span>. <span class="Apple-converted-space">  </span>This method will copy the arguments to the instance variables in the order that the variables were defined in the class, starting the parent classes and working it's way down to the current class.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p13"><span class="s6"><span class="Apple-tab-span">	</span></span>MyClass<span class="s2">{</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> <a,b,c;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*new { <span class="s7">arg</span> a,b,c;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s7">super</span>.newCopyArgs(a,b,c)<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>MyChildClass<span class="s2"> : </span>MyClass<span class="s2">{</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> <d;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*new { <span class="s7">arg</span> a,b,c,d;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s7">super</span>.newCopyArgs(a,b,c,d)<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><br></p>
-<p class="p3">Over reliance on inheritance is usually a design flaw.<span class="Apple-converted-space">  </span>Explore "object composition" rather than trying to obtain all your powers through inheritance. Is your "subclass" really some kind of "superclass" or are you just trying to swipe all of daddy's methods ? Do a websearch for<span class="Apple-converted-space">  </span>Design Patterns.</p>
-<p class="p5"><br></p>
-<p class="p3">Class variables are accessible within class methods and in any instance methods.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s1">classvar</span> myClassvar;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s1">var</span> myInstanceVar;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><br></p>
-<p class="p5"><br></p>
-<p class="p3">For class initialization check <a href="SC://initClass"><span class="s8">initClass</span></a><span class="s8">.</span></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Overriding Methods (Overloading)</b></p>
-<p class="p2"><br></p>
-<p class="p3">in order to change the behaviour of the superclass, often methods are overridden.</p>
-<p class="p3">note that an object looks always for the method it has defined first and then looks in the superclass.</p>
-<p class="p3">here <span class="s9">NewClass</span><span class="s5">.value(2)</span> will return<span class="s9"> 6</span>, not<span class="s9"> 4</span>:<span class="Apple-converted-space"> </span></p>
-<p class="p12"><br></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>Superclass<span class="s2"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>calculate { <span class="s1">arg</span> in; in * 2 }</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value { <span class="s1">arg</span> in; ^<span class="s1">this</span>.calculate(in) }</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>NewClass<span class="s2"> : </span>Superclass<span class="s2"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>calculate { <span class="s1">arg</span> in; in * 3 }</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><span class="Apple-converted-space"> </span></p>
-<p class="p3">if the method of the superclass is needed, it can be called by <b>super</b>.</p>
-<p class="p12"><br></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>Superclass<span class="s2"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> x;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>init {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = 5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>NewClass<span class="s2"> : </span>Superclass<span class="s2"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> y;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>init {<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">super</span>.init;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = 6;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p7"><b>Getter Setter<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><br></p>
-<p class="p3">Classic Smalltalk demands that variables are not accessible outside of the class or instance.<span class="Apple-converted-space">  </span>A method must be added to explicitly give access:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s10"><span class="Apple-tab-span">	</span></span>NewClass<span class="s2"> : </span>Superclass<span class="s2"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> myVariable;</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>variable {<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^myVariable<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>variable_ { <span class="s1">arg</span> newValue;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myVariable = newValue;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><br></p>
-<p class="p3">These are referred to as getter and setter methods.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">SC allows these methods to be easily added by adding < or ><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s1">var</span> <getMe, >setMe, <>getMeOrSetMe;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p3">you now have the methods:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>someObject.getMe;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>someObject.setMe_(value);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p3">this also allows us to say:</p>
-<p class="p12"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>someObject.setMe = value;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>someObject.getMeOrSetMe_(5);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>someObject.getMeOrSetMe.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><br></p>
-<p class="p10"><br></p>
-<p class="p12"><br></p>
-<p class="p3">a getter or setter method created in this fashion may<span class="Apple-converted-space">  </span>be overridden in a subclass by manually writing the method<span class="Apple-converted-space"> </span></p>
-<p class="p3">setter methods should <b>take only one argument </b>to support both ways of expression consistently.</p>
-<p class="p3">eg.<span class="Apple-converted-space"> </span><span class="s3"><span class="Apple-tab-span">	</span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>variable_ { arg newValue; <span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>variable = newValue.clip(minval,maxval);<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p3">A setter method should always return the receiver. This is standard OOP practice (outside of SC as well). Do not return the new value from your setter.</p>
-<p class="p5"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>variable_ { <span class="s1">arg</span> newValue;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myVariable = newValue;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^newValue<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// DO NOT DO THIS</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p14"><b>External Method Files</b></p>
-<p class="p5"><br></p>
-<p class="p3">Methods may be added to Classes in separate files.<span class="Apple-converted-space">  </span>This is equivalent to Protocols in Objective-C.<span class="Apple-converted-space">  </span>By convention, the file name starts with a lower case letter: the name of the method or feature that the methods are supporting.</p>
-<p class="p2"><br></p>
-<p class="p3">Syntax:</p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>+ <span class="s1">Class</span> {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>newMethod {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*newClassMethod {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p14"><b>Slotted classes</b></p>
-<p class="p5"><br></p>
-<p class="p3">Classes defined with <span class="s5">[slot]</span><span class="Apple-converted-space">  </span>can use the syntax <span class="s5">myClass[i] </span>which will call<span class="Apple-converted-space">  </span><span class="s5">myClass.at(i). </span>This is usefull when defining classes that inherit from a Collection type class.</p>
-<p class="p2"><br></p>
-<p class="p3">Syntax:</p>
-<p class="p15"><br></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s7">MyClass</span>[slot] {</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*new{ ^<span class="s7">super</span>.new }</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>at{ <span class="s7">|i|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s11">"Index "</span>++i).postln<span class="Apple-converted-space"> </span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}<span class="Apple-converted-space"> </span></p>
-<p class="p17"><br></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>}</p>
-<p class="p17"><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>a = <span class="s7">MyClass</span>();</p>
-<p class="p16"><span class="Apple-tab-span">	</span>a[3];</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Defining a custom array of Points:</p>
-<p class="p5"><br></p>
-<p class="p13"><span class="s6"><span class="Apple-tab-span">	</span></span>MyPointArray<span class="s2">[slot] : </span>RawArray<span class="s2"> {</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>center { ^Point(*<span class="s7">this</span>.asArray.flop.collect{ <span class="s7">|item|</span> item.sum / item.size } ) }</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>asArray{ ^<span class="s7">this</span>.collect{ <span class="s7">|elem|</span> elem.asArray } }</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><b>Printing custom messages to post window</b></p>
-<p class="p5"><br></p>
-<p class="p3">By default when postln is called on an class instance the name of the class is printed in a post window.<span class="Apple-converted-space">  </span>When <span class="s5">postln</span><span class="Apple-converted-space">  </span>or <span class="s5">asString</span> is called on a class instance, the class then calls <span class="s5">printOn</span> which can be overridden to obtain more useful information.</p>
-<p class="p2"><br></p>
-<p class="p3">Syntax:</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>MyTestPoint<span class="s2"> {</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> <x, <y;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*new{ <span class="s7">|x,y|</span> ^<span class="s7">super</span>.newCopyArgs(x,y) }</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>printOn { <span class="s7">arg</span> stream;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream << <span class="s11">"MyTestPoint( "</span> << x << <span class="s11">", "</span> << y << <span class="s11">" )"</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = <span class="s7">MyTestPoint</span>(2,3);</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><b>Defining custom asCompileString behaviour</b></p>
-<p class="p5"><br></p>
-<p class="p3">A call to <span class="s5">asCompileString </span>should return a string which when evaluated creates the exact same instance of the class. To define a custom behaviour one should either override <span class="s5">storeOn </span>or <span class="s5">storeArgs</span>.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>The method <span class="s5">storeOn </span>should return the string that evaluated creates the instance of the current object.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>The method <span class="s5">storeArgs </span>should return an array with the arguments to be passed to <span class="s5">TheClass.new</span>. In most cases this method can be used instead of <span class="s5">storeOn.</span></p>
-<p class="p2"><br></p>
-<p class="p3">Syntax:</p>
-<p class="p5"><br></p>
-<p class="p3">either</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>MyTestPoint<span class="s2"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> <x, <y;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*new{ <span class="s7">|x,y|</span> ^<span class="s7">super</span>.newCopyArgs(x,y) }</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>storeOn { <span class="s7">arg</span> stream;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream << <span class="s11">"MyTestPoint.new("</span> << x << <span class="s11">", "</span> << y << <span class="s11">")"</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}<span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">MyTestPoint</span>(2,3).asCompileString;</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p3">or</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>MyTestPoint<span class="s2"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> <x, <y;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*new{ <span class="s7">|x,y|</span> ^<span class="s7">super</span>.newCopyArgs(x,y) }</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>storeArgs { <span class="s7">arg</span> stream;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^[x,y]</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}<span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">MyTestPoint</span>(2,3).asCompileString;<span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Tricks and Traps<span class="Apple-converted-space"> </span></b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>"Superclass not found..."</b></p>
-<p class="p5"><br></p>
-<p class="p3">In one given code file, you can only put classes that inherit from each Object, each other, and one external class. <span class="Apple-converted-space">  </span>In other words, you can't inherit from two separate classes that are defined in separate files.</p>
-<p class="p5"><br></p>
-<p class="p3">If you should happen to declare a variable in a subclass and use the same name as a variable declared in a superclass, you will find that both variables exist, but only the one in the object's actual class is accessible.<span class="Apple-converted-space">  </span>You should not do that. This will at some point become an error worthy of compilation failure.</p>
-<p class="p5"><br></p>
-<p class="p3"><b>Catching methods that are not explicitly defined</b></p>
-<p class="p5"><br></p>
-<p class="p3">It is possible to catch calls to methods that are not explicitly defined in a Class by overriding<span class="Apple-converted-space">  </span><span class="s5">doesNotUnderstand.</span><span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p13"><span class="s6"><span class="Apple-tab-span">	</span></span>MyClass<span class="s2"> {</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*new{ ^<span class="s7">super</span>.new }</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doesNotUnderstand{ <span class="s7">arg</span> selector...args;</p>
-<p class="p18"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</span><span class="s7">this</span><span class="s2">.class++</span>" does not understand method "<span class="s2">++selector);</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">If</span>(<span class="s7">UGen</span>.findRespondingMethodFor(selector).notNil){</p>
-<p class="p18"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"But UGen understands this method"<span class="s2">.postln</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = MyClass();</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.someMethodThatDoesNotExist</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/Writing_Unit_Generators.html b/Help/Extending and Customizing SC/Writing_Unit_Generators.html
deleted file mode 100644
index 9495ff9..0000000
--- a/Help/Extending and Customizing SC/Writing_Unit_Generators.html	
+++ /dev/null
@@ -1,658 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #9b1e10}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #0025b4}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #9b1e10; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Monaco; min-height: 19.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Monaco; min-height: 26.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #606060}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px Helvetica; min-height: 25.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0025b4}
-span.s3 {font: 12.0px Monaco; color: #0025b4}
-span.s4 {font: 14.0px Monaco}
-span.s5 {font: 14.0px Courier}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #606060}
-span.s8 {color: #416c1c}
-span.s9 {font: 12.0px Monaco}
-span.s10 {color: #9b1e10}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">How Unit Generator plug-ins work.</p>
-<p class="p2"><br></p>
-<p class="p3">The server loads unit generator plug-ins when it starts up.</p>
-<p class="p3">Unit Generator plug-ins are dynamically loaded libraries (DLLs) written in C++.</p>
-<p class="p3">Each library may contain one or multiple unit generator definitions.</p>
-<p class="p3">The server looks in the "plugins" directory for all files ending in .scx and calls the load() function in each one.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>The load() function</b></p>
-<p class="p2"><br></p>
-<p class="p3">When the library is loaded the server calls the load() function in the library.</p>
-<p class="p2"><br></p>
-<p class="p3">The load function has two responsibilities:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>• It needs to store the passed in pointer to the InterfaceTable in a global variable.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>• It defines the unit generators.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// InterfaceTable contains pointers to functions in the host (server).</p>
-<p class="p5"><span class="s1">static </span>InterfaceTable<span class="s1"> *ft;</span></p>
-<p class="p4">...</p>
-<p class="p6"><br></p>
-<p class="p4">// the load function is called by the host when the plug-in is loaded</p>
-<p class="p7">void load(<span class="s2">InterfaceTable</span> *inTable)</p>
-<p class="p7">{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span>ft = inTable; </span>// store pointer to InterfaceTable</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>DefineSimpleUnit<span class="s1">(</span>MySaw<span class="s1">);</span></p>
-<p class="p7">}</p>
-<p class="p2"><br></p>
-<p class="p3">Unit Generators are defined by calling a function in the InterfaceTable and passing it the name of the unit generator, the size of its C data struct, and pointers to functions for constructing and destructing it. The macro <span class="s3">DefineSimpleUnit</span> makes this more brief.</p>
-<p class="p2"><br></p>
-<p class="p9">#define DefineSimpleUnit(name) \</p>
-<p class="p9"><span class="Apple-converted-space">       </span>(*ft->fDefineUnit)(#name, sizeof(name), (UnitCtorFunc)&name##_Ctor, 0);</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4">ft->fDefineUnit </span>is a function pointer in the InterfaceTable to the server function that defines a new unit generator.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4">#name </span>creates a string C from the name. In this case, "MySaw".</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4">sizeof(name) </span>will be the size of the struct MySaw.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4">name##_Ctor </span>will macro-expand to <span class="s4">MySaw_Ctor</span>. There will need to be a function defined with this name.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4">0</span> is the argument for the Dtor, or destructor function, which is not needed for this unit generator.</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p3">So the macro:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p9">DefineSimpleUnit(MySaw);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-<p class="p3">expands to this:</p>
-<p class="p2"><br></p>
-<p class="p9">(*ft->fDefineUnit)("MySaw", sizeof(MySaw), (UnitCtorFunc)&MySaw_Ctor, 0);</p>
-<p class="p10"><br></p>
-<p class="p2"><br></p>
-<p class="p3">A plug-in can also define things other than unit generators such as buffer fill (<span class="s5">"/b_gen")</span> commands.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p1">Adding a Target to Xcode</p>
-<p class="p12"><br></p>
-<p class="p3">You will need to have the Developer Tools installed to do this.</p>
-<p class="p3">Each group of plugins shares a target in Xcode, which outputs a single plugin, e.g MyUGens.scx.</p>
-<p class="p2"><br></p>
-<p class="p3">We will use an existing target as a template for our target. In this tutorial we will use ChaosUGens as a template, although you could use any target.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The frist step is to make a duplicate of ChaosUGens. To do this control-click on the ChaosUGens target and select "Duplicate".</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 1.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 1.png"></span></p>
-<p class="p2"><br></p>
-<p class="p3">Now we need to change the name of the target and it's output file. Double click on the "ChaosUGens copy" to open it's inspector.</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 2.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 2.png"></span></p>
-<p class="p2"><br></p>
-<p class="p3">In the "Build" tab , search for the "Product Name" setting and change the value to "MyUGens".</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 5.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 5.png"></span></p>
-<p class="p14"><br></p>
-<p class="p3">Now switch to the "General" tab and change the target name to "MyUGens".</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic.png"></span></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p3">Close the ChaosUGens inspector, expand the target's disclosure triangle, and then expand the "Compile Sources" disclosure triangle.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 10.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 10.png"></span></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p3">Delete the existing "ChaosUGens.cpp" source file by clicking on it and pressing the delete key. Confirm the deletion in the dialog that is presented.</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 11.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 11.png"></span></p>
-<p class="p14"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Use the "File->New File..." menu option to create a new source file.</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 13.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 13.png"></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Under the BSD section, select "C++ File", and click "Next".</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 14.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 14.png"></span></p>
-<p class="p14"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Change the filename field to "MyUGens.cpp", uncheck the "Also create MyUGens.h" option, and check "MyUGens" as the only target. When all these options have been set, click "Finish".</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 15.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 15.png"></span></p>
-<p class="p2"><br></p>
-<p class="p3">Erase the default code, and copy the following into the MyUGens.cpp file:</p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p8"><br></p>
-<p class="p15"><span class="s1">#include </span>"SC_PlugIn.h"</p>
-<p class="p8"><br></p>
-<p class="p4">// InterfaceTable contains pointers to functions in the host (server).</p>
-<p class="p5"><span class="s1">static </span>InterfaceTable<span class="s1"> *ft;</span></p>
-<p class="p8"><br></p>
-<p class="p4">// declare struct to hold unit generator state</p>
-<p class="p7">struct <span class="s2">MySaw</span> : public <span class="s2">Unit</span></p>
-<p class="p7">{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span>double mPhase; </span>// phase of the oscillator, from -1 to 1.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span>float mFreqMul; </span>// a constant for multiplying frequency</p>
-<p class="p7">};</p>
-<p class="p8"><br></p>
-<p class="p4">// declare unit generator functions<span class="Apple-converted-space"> </span></p>
-<p class="p7">extern <span class="s7">"C"</span></p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>void load(<span class="s2">InterfaceTable</span> *inTable);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>void <span class="s2">MySaw_next_a</span>(<span class="s2">MySaw</span> *unit, int inNumSamples);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>void <span class="s2">MySaw_next_k</span>(<span class="s2">MySaw</span> *unit, int inNumSamples);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>void <span class="s2">MySaw_Ctor</span>(<span class="s2">MySaw</span>* unit);</p>
-<p class="p7">};</p>
-<p class="p8"><br></p>
-<p class="p4">//////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// Ctor is called to initialize the unit generator.<span class="Apple-converted-space"> </span></p>
-<p class="p4">// It only executes once.</p>
-<p class="p8"><br></p>
-<p class="p4">// A Ctor usually does 3 things.</p>
-<p class="p4">// 1. set the calculation function.</p>
-<p class="p4">// 2. initialize the unit generator state variables.</p>
-<p class="p4">// 3. calculate one sample of output.</p>
-<p class="p5"><span class="s1">void </span>MySaw_Ctor<span class="s1">(</span>MySaw<span class="s1">* unit)</span></p>
-<p class="p7">{</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// 1. set the calculation function.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>if (<span class="s2">INRATE</span>(0) == calc_FullRate) {</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if the frequency argument is audio rate<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SETCALC<span class="s1">(</span>MySaw_next_a<span class="s1">);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>} else {</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if the frequency argument is control rate (or a scalar).</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SETCALC<span class="s1">(</span>MySaw_next_k<span class="s1">);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// 2. initialize the unit generator state variables.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// initialize a constant for multiplying the frequency</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mFreqMul = 2.0 * <span class="s2">SAMPLEDUR</span>;</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get initial phase of oscillator</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mPhase = <span class="s2">IN0</span>(1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// 3. calculate one sample of output.</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>MySaw_next_k<span class="s1">(unit, 1);</span></p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p4">//////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// The calculation function executes once per control period<span class="Apple-converted-space"> </span></p>
-<p class="p4">// which is typically 64 samples.</p>
-<p class="p8"><br></p>
-<p class="p4">// calculation function for an audio rate frequency argument</p>
-<p class="p7">void <span class="s2">MySaw_next_a</span>(<span class="s2">MySaw</span> *unit, int inNumSamples)</p>
-<p class="p7">{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get the pointer to the output buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *out = <span class="s2">OUT</span>(0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get the pointer to the input buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *freq = <span class="s2">IN</span>(0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get phase and freqmul constant from struct and store it in a<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// local variable.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// The optimizer will cause them to be loaded it into a register.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float freqmul = unit->mFreqMul;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>double phase = unit->mPhase;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// perform a loop for the number of samples in the control period.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// If this unit is audio rate then inNumSamples will be 64 or whatever</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// the block size is. If this unit is control rate then inNumSamples will</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// be 1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>for (int i=0; i < inNumSamples; ++i)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// out must be written last for in place operation</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float z = phase;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>phase += freq[i] * freqmul;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// these if statements wrap the phase a +1 or -1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (phase >= 1.f) phase -= 2.f;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>else if (phase <= -1.f) phase += 2.f;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write the output</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out[i] = z;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// store the phase back to the struct</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mPhase = phase;</p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p4">//////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// calculation function for a control rate frequency argument</p>
-<p class="p7">void <span class="s2">MySaw_next_k</span>(<span class="s2">MySaw</span> *unit, int inNumSamples)</p>
-<p class="p7">{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get the pointer to the output buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *out = <span class="s2">OUT</span>(0);</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// freq is control rate, so calculate it once.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float freq = <span class="s2">IN0</span>(0) * unit->mFreqMul;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get phase from struct and store it in a local variable.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// The optimizer will cause it to be loaded it into a register.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>double phase = unit->mPhase;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// since the frequency is not changing then we can simplify the loops<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// by separating the cases of positive or negative frequencies.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// This will make them run faster because there is less code inside the loop.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>if (freq >= 0.f) {</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// positive frequencies</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for (int i=0; i < inNumSamples; ++i)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out[i] = phase;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>phase += freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (phase >= 1.f) phase -= 2.f;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span>} else {</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// negative frequencies</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for (int i=0; i < inNumSamples; ++i)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out[i] = phase;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>phase += freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (phase <= -1.f) phase += 2.f;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// store the phase back to the struct</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mPhase = phase;</p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// the load function is called by the host when the plug-in is loaded</p>
-<p class="p7">void load(<span class="s2">InterfaceTable</span> *inTable)</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>ft = inTable;</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>DefineSimpleUnit<span class="s1">(</span>MySaw<span class="s1">);</span></p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p6"><br></p>
-<p class="p3">Drag the MyUGens target into the "All" aggregate target, and build the project using the "Build->Build" menu option.</p>
-<p class="p6"><br></p>
-<p class="p13"><span class="s6"><img src="attachments/Writing_Unit_Generators/Pasted Graphic 16.png" alt="attachments/Writing_Unit_Generators/Pasted Graphic 16.png"></span></p>
-<p class="p14"><br></p>
-<p class="p3">Now launch SuperCollider.app and create a file named MyUGens.sc in the class library. Add the following to this file:</p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p8"><br></p>
-<p class="p5">MySaw<span class="s1"> : </span>UGen<span class="s1"> {</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>*ar { <span class="s2">arg</span> freq = 440.0, iphase = 0.0, mul = 1.0, add = 0.0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">this</span>.multiNew(<span class="s8">'audio'</span>, freq, iphase).madd(mul, add)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span>*kr { <span class="s2">arg</span> freq = 440.0, iphase = 0.0, mul = 1.0, add = 0.0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">this</span>.multiNew(<span class="s8">'control'</span>, freq, iphase).madd(mul, add)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">}</p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p8"><br></p>
-<p class="p3">The SuperCollider class for your UGen allows the SuperCollider application to be able to write a SynthDef file.</p>
-<p class="p2"><br></p>
-<p class="p3">The arguments to the MySaw UGen are freq and iphase.</p>
-<p class="p3">The <span class="s9">multiNew</span> method handles multi channel expansion.</p>
-<p class="p3">The <span class="s9">madd</span> method provides support for the mul and add arguments. It will create a MulAdd UGen if necessary. You could write the class without mul and add arguments, but providing them makes it more convenient for the user.</p>
-<p class="p2"><br></p>
-<p class="p4">// without mul and add.</p>
-<p class="p5">MySaw<span class="s1"> : </span>UGen<span class="s1"> {</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>*ar { <span class="s2">arg</span> freq = 440.0, iphase = 0.0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">this</span>.multiNew(<span class="s8">'audio'</span>, freq, iphase)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span>*kr { <span class="s2">arg</span> freq = 440.0, iphase = 0.0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">this</span>.multiNew(<span class="s8">'control'</span>, freq, iphase)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">}</p>
-<p class="p2"><br></p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p3">After a recompilation of the class library (Menu: Lang > Complie Library), the UGen is</p>
-<p class="p3">ready to be used.</p>
-<p class="p8"><br></p>
-<p class="p4">// test it:</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">MySaw</span>.ar(200,0,0.1) }.play</p>
-<p class="p8"><br></p>
-<p class="p2"><br></p>
-<p class="p3">_________________________________________________________</p>
-<p class="p3"><b>Workflow</b></p>
-<p class="p2"><br></p>
-<p class="p3">When changing the C-sourcecode, after each rebuilding the project, there is no need to restart SuperCollider or recompile the library (unless you have changed the class definition)</p>
-<p class="p6"><br></p>
-<p class="p4">// just reboot the server.</p>
-<p class="p2"><br></p>
-<p class="p16">s.reboot;</p>
-<p class="p2"><br></p>
-<p class="p3">Note that if you want to use the internal server (e.g. for scoping), you do need to restart</p>
-<p class="p3">the SuperCollider application.</p>
-<p class="p3">_________________________________________________________</p>
-<p class="p8"><br></p>
-<p class="p3"><b>Useful macros</b></p>
-<p class="p2"><br></p>
-<p class="p3">These are defined in SC_Unit.h.</p>
-<p class="p8"><br></p>
-<p class="p4">// These return float* pointers to input and output buffers.</p>
-<p class="p7">#define <span class="s2">IN</span>(index)<span class="Apple-converted-space">  </span>(unit->mInBuf[index])</p>
-<p class="p7">#define <span class="s2">OUT</span>(index) (unit->mOutBuf[index])</p>
-<p class="p8"><br></p>
-<p class="p6"><br></p>
-<p class="p4">// These return a float value. Used for control rate inputs and outputs.</p>
-<p class="p7">#define <span class="s2">IN0</span>(index)<span class="Apple-converted-space">  </span>(<span class="s2">IN</span>(index)[0])</p>
-<p class="p7">#define <span class="s2">OUT0</span>(index) (<span class="s2">OUT</span>(index)[0])</p>
-<p class="p8"><br></p>
-<p class="p6"><br></p>
-<p class="p4">// get the rate of the input.</p>
-<p class="p7">#define <span class="s2">INRATE</span>(index) (unit->mInput[index]->mCalcRate)</p>
-<p class="p8"><br></p>
-<p class="p3">The possible rates are:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>calc_ScalarRate</p>
-<p class="p7"><span class="Apple-tab-span">	</span>calc_BufRate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"control rate"</p>
-<p class="p7"><span class="Apple-tab-span">	</span>calc_FullRate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"audio rate"</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p4">// set the calculation function</p>
-<p class="p7">#define <span class="s2">SETCALC</span>(func) (unit->mCalcFunc = (<span class="s2">UnitCalcFunc</span>)&func)</p>
-<p class="p8"><br></p>
-<p class="p3">SETCALC must be called in the constructor. It may also be called from a calculation function to change to a different calculation function.</p>
-<p class="p8"><br></p>
-<p class="p6"><br></p>
-<p class="p4">// calculate a slope for control rate interpolation to audio rate.</p>
-<p class="p7">#define <span class="s2">CALCSLOPE</span>(next,prev) ((next - prev) * unit->mRate->mSlopeFactor)</p>
-<p class="p8"><br></p>
-<p class="p3">CALCSLOPE returns (next - prev) / blocksize which is useful for calculating slopes for linear interpolation.</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">#define <span class="s2">SAMPLERATE</span> (unit->mRate->mSampleRate)</p>
-<p class="p8"><br></p>
-<p class="p3">SAMPLERATE returns the sample rate for the unit generator. If it is audio rate then it will be the audio sample rate. If the ugen is control rate, then it will be the control rate. For example, if the ugen is control rate and the auio sample rate is 44100 and the block size is 64, then this will return 44100/64 or 689.0625.</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">#define <span class="s2">SAMPLEDUR</span> (unit->mRate->mSampleDur)</p>
-<p class="p8"><br></p>
-<p class="p3">SAMPLEDUR is simply the reciprocal of the sample rate. It is the seconds per sample.</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">#define <span class="s2">BUFLENGTH</span> (unit->mBufLength)</p>
-<p class="p8"><br></p>
-<p class="p3">BUFLENGTH is equal to the block size if the unit is audio rate and is equal to 1 if the unit is control rate.</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">#define <span class="s2">BUFRATE</span> (unit->mRate->mBufRate)</p>
-<p class="p8"><br></p>
-<p class="p3">BUFRATE always returns the control rate.</p>
-<p class="p2"><br></p>
-<p class="p8"><br></p>
-<p class="p7">#define <span class="s2">BUFDUR</span> (unit->mRate->mBufDuration)</p>
-<p class="p8"><br></p>
-<p class="p3">BUFDUR is the reciprocal of the control rate.</p>
-<p class="p8"><br></p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pointer aliasing</b></p>
-<p class="p8"><br></p>
-<p class="p3">The server uses a "buffer coloring" algorithm to minimize use of buffers to optimize cache performance. This means that any of the output buffers may be the same as one of the input buffers. This allows for in-place operation which is very efficient. You must be careful however not to write any output sample before you have read all of the input samples. If you did, then the input will be overwritten with output.</p>
-<p class="p8"><br></p>
-<p class="p4">// This code is correct. It reads the freq input before writing to out.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>for (int i=0; i < inNumSamples; ++i)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float z = phase; <span class="s10">// store phase in z</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>phase += freq[i] * freqmul; <span class="s10">// read freq</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out[i] = z; </span>// write the output</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// these if statements wrap the phase a +1 or -1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (phase >= 1.f) phase -= 2.f;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>else if (phase <= -1.f) phase += 2.f;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p4">// If out and freq are the same, then the code below will fail.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>for (int i=0; i < inNumSamples; ++i)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write the output</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out[i] = phase;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>phase += freq[i] * freqmul;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// these if statements wrap the phase a +1 or -1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (phase >= 1.f) phase -= 2.f;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>else if (phase <= -1.f) phase += 2.f;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><br></p>
-<p class="p3">If your unit generator cannot be written efficiently when pointers are aliased, then you can tell the server this by using one of the following macros when definining it.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>DefineSimpleCantAliasUnit(MyUGen);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>DefineDtorCantAliasUnit(MyUGen);</p>
-<p class="p2"><br></p>
-<p class="p3">The server will then ensure that no output buffers are the same as any input buffers.</p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p2"><br></p>
-<p class="p1">A Unit Generator that needs a Dtor</p>
-<p class="p17"><br></p>
-<p class="p3">This is code for a simple fixed delay line.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p15"><span class="s1">#include </span>"SC_PlugIn.h"</p>
-<p class="p8"><br></p>
-<p class="p4">// InterfaceTable contains pointers to functions in the host (server).</p>
-<p class="p5"><span class="s1">static </span>InterfaceTable<span class="s1"> *ft;</span></p>
-<p class="p8"><br></p>
-<p class="p4">// declare struct to hold unit generator state</p>
-<p class="p7">struct <span class="s2">MyDelay</span> : public <span class="s2">Unit</span></p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>uint32 mDelayLength;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>uint32 mPosition;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *mData; <span class="s10">// delay buffer</span></p>
-<p class="p7">};</p>
-<p class="p8"><br></p>
-<p class="p4">// declare unit generator functions<span class="Apple-converted-space"> </span></p>
-<p class="p7">extern <span class="s7">"C"</span></p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>void load(<span class="s2">InterfaceTable</span> *inTable);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>void <span class="s2">MyDelay_next_notfull</span>(<span class="s2">MyDelay</span> *unit, int inNumSamples);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>void <span class="s2">MyDelay_next_full</span>(<span class="s2">MyDelay</span> *unit, int inNumSamples);</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>void </span>MyDelay_Ctor<span class="s1">(</span>MyDelay<span class="s1">* unit);</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>void </span>MyDelay_Dtor<span class="s1">(</span>MyDelay<span class="s1">* unit);</span></p>
-<p class="p7">};</p>
-<p class="p8"><br></p>
-<p class="p4">//////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// Ctor is called to initialize the unit generator.<span class="Apple-converted-space"> </span></p>
-<p class="p4">// It only executes once.</p>
-<p class="p8"><br></p>
-<p class="p4">// A Ctor usually does 3 things.</p>
-<p class="p4">// 1. set the calculation function.</p>
-<p class="p4">// 2. initialize the unit generator state variables.</p>
-<p class="p4">// 3. calculate one sample of output.</p>
-<p class="p5"><span class="s1">void </span>MyDelay_Ctor<span class="s1">(</span>MyDelay<span class="s1">* unit)</span></p>
-<p class="p7">{</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// 1. set the calculation function.</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>SETCALC<span class="s1">(</span>MyDelay_next_notfull<span class="s1">);</span></p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// 2. initialize the unit generator state variables.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get the delay length</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mDelayLength = (uint32)(<span class="s2">IN0</span>(1) * <span class="s2">SAMPLERATE</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// allocate the buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mData = (float*)<span class="s2">RTAlloc</span>(unit->mWorld, unit->mDelayLength * sizeof(float));</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// RTAlloc allocates out of the real time memory pool of the server<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// which is finite. Note that this memory is not zeroed, so it may contain</p>
-<p class="p4"><span class="Apple-tab-span">	</span>// garbage. Make sure to write before read.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>// The size of the real time memory pool is set using the</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// -m command line argument of the server, or by ways of server.options.memSize</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// initialize the position</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mPosition = 0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// 3. calculate one sample of output.</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>MyDelay_next_notfull<span class="s1">(unit, 1);</span></p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p4">//////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// Dtor is called to perform any clean up for the unit generator.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s1">void </span>MyDelay_Dtor<span class="s1">(</span>MyDelay<span class="s1">* unit)</span></p>
-<p class="p7">{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// free the buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">RTFree</span>(unit->mWorld, unit->mData);</p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p4">//////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// The calculation function executes once per control period<span class="Apple-converted-space"> </span></p>
-<p class="p4">// which is typically 64 samples.</p>
-<p class="p8"><br></p>
-<p class="p4">// calculation function when the buffer has not yet been filled</p>
-<p class="p7">void <span class="s2">MyDelay_next_notfull</span>(<span class="s2">MyDelay</span> *unit, int inNumSamples)</p>
-<p class="p7">{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get the pointer to the output buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *out = <span class="s2">OUT</span>(0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get the pointer to the input buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *in = <span class="s2">IN</span>(0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get values from struct and store them in local variables.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// The optimizer will cause them to be loaded it into a register.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *data = unit->mData;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>uint32 length = unit->mDelayLength;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>uint32 position = unit->mPosition;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>bool wrapped = <span class="s2">false</span>;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// perform a loop for the number of samples in the control period.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// If this unit is audio rate then inNumSamples will be 64 or whatever</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// the block size is. If this unit is control rate then inNumSamples will</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// be 1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>for (int i=0; i < inNumSamples; ++i)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// get old value in delay line</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float z = data[position];</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// store new value in delay line</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>data[position] = in[i];</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// see if the position went to the end of the buffer<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (++position >= length) {</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>position = 0; </span>// go back to beginning</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>wrapped = </span><span class="s2">true</span><span class="s1">; </span>// indicate we have wrapped.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// change the calculation function</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// next time, the MyDelay_next_full function will be called</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SETCALC<span class="s1">(</span>MyDelay_next_full<span class="s1">);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if we have not yet wrapped, then z is garbage from the uninitialized<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// buffer, so output zero. If we have wrapped, then z is a good value.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out[i] = wrapped ? z : 0.f;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// store the position back to the struct</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mPosition = position;</p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p4">//////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// calculation function when the buffer has been filled</p>
-<p class="p7">void <span class="s2">MyDelay_next_full</span>(<span class="s2">MyDelay</span> *unit, int inNumSamples)</p>
-<p class="p7">{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get the pointer to the output buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *out = <span class="s2">OUT</span>(0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get the pointer to the input buffer</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *in = <span class="s2">IN</span>(0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// get values from struct and store them in local variables.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// The optimizer will cause them to be loaded it into a register.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>float *data = unit->mData;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>uint32 length = unit->mDelayLength;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>uint32 position = unit->mPosition;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// perform a loop for the number of samples in the control period.</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// If this unit is audio rate then inNumSamples will be 64 or whatever</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// the block size is. If this unit is control rate then inNumSamples will</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// be 1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>for (int i=0; i < inNumSamples; ++i)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// get old value in delay line</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float z = data[position];</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// store new value in delay line</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>data[position] = in[i];</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// see if the position went to the end of the buffer<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (++position >= length) {</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>position = 0; </span>// go back to beginning</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out[i] = z;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// store the position back to the struct</p>
-<p class="p7"><span class="Apple-tab-span">	</span>unit->mPosition = position;</p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4">// the load function is called by the host when the plug-in is loaded</p>
-<p class="p7">void load(<span class="s2">InterfaceTable</span> *inTable)</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>ft = inTable;</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>DefineDtorUnit<span class="s1">(</span>MyDelay<span class="s1">);</span></p>
-<p class="p7">}</p>
-<p class="p8"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////</p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p2"><br></p>
-<p class="p8"><br></p>
-<p class="p4">// In the MyUGens.sc file:</p>
-<p class="p8"><br></p>
-<p class="p5">MyDelay<span class="s1"> : </span>UGen<span class="s1"> {</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>*ar { <span class="s2">arg</span> in, delaytime=0.4;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">this</span>.multiNew(<span class="s8">'audio'</span>, in, delaytime)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span>*kr { <span class="s2">arg</span> in, delaytime=0.4;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">this</span>.multiNew(<span class="s8">'control'</span>, in, delaytime)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">}</p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p8"><br></p>
-<p class="p4">// test it</p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> z;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z = <span class="s2">SinOsc</span>.ar * <span class="s2">Decay</span>.kr(<span class="s2">Impulse</span>.kr(1,0,0.2), 0.1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[z, <span class="s2">MyDelay</span>.ar(z, 0.3)]</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p3">____________________________________________________________________</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">TO DO:</p>
-<p class="p3">UGens which access buffers.</p>
-<p class="p3">UGens which use the built in random number generators.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Extending and Customizing SC/attachments/Creating-Standalone-Applications/Pasted Graphic 1.png b/Help/Extending and Customizing SC/attachments/Creating-Standalone-Applications/Pasted Graphic 1.png
deleted file mode 100644
index 84dd4c4..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Creating-Standalone-Applications/Pasted Graphic 1.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Creating-Standalone-Applications/Pasted Graphic 2.png b/Help/Extending and Customizing SC/attachments/Creating-Standalone-Applications/Pasted Graphic 2.png
deleted file mode 100644
index d1beeb6..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Creating-Standalone-Applications/Pasted Graphic 2.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 1.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 1.png
deleted file mode 100644
index 60b3c11..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 1.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 10.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 10.png
deleted file mode 100644
index 1be774b..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 10.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 11.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 11.png
deleted file mode 100644
index 8c0cf04..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 11.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 13.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 13.png
deleted file mode 100644
index 6e4f077..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 13.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 14.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 14.png
deleted file mode 100644
index 8ac1d05..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 14.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 15.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 15.png
deleted file mode 100644
index 29f5c33..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 15.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 16.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 16.png
deleted file mode 100644
index a2d3a86..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 16.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 2.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 2.png
deleted file mode 100644
index 1a898cb..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 2.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 5.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 5.png
deleted file mode 100644
index 47b0baa..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic 5.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic.png b/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic.png
deleted file mode 100644
index 666e283..0000000
Binary files a/Help/Extending and Customizing SC/attachments/Writing_Unit_Generators/Pasted Graphic.png and /dev/null differ
diff --git a/Help/Extending and Customizing SC/publishing_code.html b/Help/Extending and Customizing SC/publishing_code.html
deleted file mode 100644
index 3e2863a..0000000
--- a/Help/Extending and Customizing SC/publishing_code.html	
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>publishing code</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">A computer language like sc makes it easy to share code with others.</p>
-<p class="p3">Apart from sending examples and pieces by email, you can use public</p>
-<p class="p3">repositories to make them available:</p>
-<p class="p4"><br></p>
-<p class="p3">If you like to add some code, or even create your own little webspace<span class="Apple-converted-space"> </span></p>
-<p class="p3">on the supercollider wiki:</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">http://swiki.hfbk-hamburg.de:8888/MusicTechnology/6</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>(passwd: sc, user: sc)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">Generally, making software public that is written in sclang or software that includes changes to scserver</p>
-<p class="p3"><b><i>requires the sourcecode to be publicly available.</i></b></p>
-<p class="p3">For more information, see <span class="s1">http://www.gnu.org/copyleft/gpl.html</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">Quite often, code written by others is copied, modified and used in pieces or software.</p>
-<p class="p3">If the code was published without any specific licence, it is always good to at least <b><i>mention the</i></b></p>
-<p class="p3"><b><i>original authors</i><span class="Apple-converted-space"> </span></b> in your work in order to avoid later conflicts.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Files/CSVFileReader.html b/Help/Files/CSVFileReader.html
deleted file mode 100644
index 6d5099b..0000000
--- a/Help/Files/CSVFileReader.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>CSVFileReader</b></span><b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>file reader for comma separated data</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a></span><b> </b><span class="s2"><b>: </b><a href="../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a></span><b> : </b><a href="../Streams-Patterns-Events/Stream.html"><b>Stream</b></a><b> : </b><a href="FileReader.html"><b>FileReader</b></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>CSVFileReader reads comma-separated text files into 2D arrays line by line.</b></p>
-<p class="p2"><br></p>
-<p class="p1">For tab delimited files use: <a href="TabFileReader.html"><span class="s3">TabFileReader</span></a></p>
-<p class="p1">For space-delimited files, or custom delimiters, use: <a href="FileReader.html"><span class="s3">FileReader</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*read(path, skipEmptyLines, skipBlanks, func)</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// write a test file:</p>
-<p class="p7"><span class="s2">f = </span><span class="s4">File</span><span class="s2">(</span>"CSVReadTest.sc"<span class="s2">, </span>"w"<span class="s2">);</span></p>
-<p class="p5">f.write(</p>
-<p class="p7">"Some,comma,delimited,items, in line 1</p>
-<p class="p8"><br></p>
-<p class="p7">and then, some more, with several commas,,,, in line 3</p>
-<p class="p7">"</p>
-<p class="p5">);</p>
-<p class="p5">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// open file, read and put strings into array, close file.<span class="Apple-converted-space"> </span></p>
-<p class="p5">x = <span class="s4">CSVFileReader</span>.read(<span class="s5">"CSVReadTest.sc"</span>).postcs;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// can skip empty lines:<span class="Apple-converted-space"> </span></p>
-<p class="p5">x = <span class="s4">CSVFileReader</span>.read(<span class="s5">"CSVReadTest.sc"</span>, <span class="s4">true</span>).postcs;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// can skip blank entries caused by multiple commas :<span class="Apple-converted-space"> </span></p>
-<p class="p5">x = <span class="s4">CSVFileReader</span>.read(<span class="s5">"CSVReadTest.sc"</span>, <span class="s4">true</span>, <span class="s4">true</span>).postcs;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// do file open/close by hand if you prefer:</p>
-<p class="p5">f = <span class="s4">File</span>(<span class="s5">"CSVReadTest.sc"</span>, <span class="s5">"r"</span>); f.isOpen;</p>
-<p class="p9"><span class="s2">t = </span>CSVFileReader<span class="s2">(f);<span class="Apple-tab-span">	</span></span></p>
-<p class="p5">t.read(<span class="s4">true</span>, <span class="s4">true</span>).postcs;</p>
-<p class="p5">f.close;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// write a test file with numbers:</p>
-<p class="p7"><span class="s2">f = </span><span class="s4">File</span><span class="s2">(</span>"CSVReadTestNum.sc"<span class="s2">, </span>"w"<span class="s2">);</span></p>
-<p class="p4"><br></p>
-<p class="p5">(1..10).do { <span class="s4">|n|</span> f.write(n.asString ++ <span class="s5">","</span>); };</p>
-<p class="p5">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">x = <span class="s4">CSVFileReader</span>.read(<span class="s5">"CSVReadTestNum.sc"</span>, <span class="s4">true</span>, <span class="s4">true</span>).postcs;</p>
-<p class="p5">x.collect(<span class="s4">_</span>.collect(<span class="s4">_</span>.interpret));<span class="Apple-tab-span">	</span><span class="s6">// convert to numbers.</span></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or do it immediately:</p>
-<p class="p5">x = <span class="s4">CSVFileReader</span>.readInterpret(<span class="s5">"CSVReadTestNum.sc"</span>).postcs;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// write a test file with several lines of numbers:</p>
-<p class="p7"><span class="s2">f = </span><span class="s4">File</span><span class="s2">(</span>"CSVReadTestNum.sc"<span class="s2">, </span>"w"<span class="s2">);</span></p>
-<p class="p4"><br></p>
-<p class="p5">(1..100).do { <span class="s4">|n|</span><span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>f.write(n.asString ++ if (n % 10 != 0, <span class="s5">","</span>, <span class="s4">Char</span>.nl)); };</p>
-<p class="p5">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">x = <span class="s4">CSVFileReader</span>.readInterpret(<span class="s5">"CSVReadTestNum.sc"</span>, <span class="s4">true</span>, <span class="s4">true</span>).postln;</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Files/File.html b/Help/Files/File.html
deleted file mode 100644
index c15a237..0000000
--- a/Help/Files/File.html
+++ /dev/null
@@ -1,238 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #88311d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0028ae}
-span.s4 {font: 9.0px Monaco}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>File</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: </b>UnixFILE</p>
-<p class="p2"><br></p>
-<p class="p3">A class for reading and writing files.<span class="Apple-converted-space">  </span>Not sound files.</p>
-<p class="p2"><br></p>
-<p class="p3">see also the superclass for further docs.</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*new(pathname, mode)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create a File instance and open the file. If the open fails, isOpen will return false.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pathname</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a String containing the path name of the file to open.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>mode</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a String indicating one of the following modes:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>"r" - Opens a file for reading. The file must exist.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"w" - Creates an empty file for writing. If a file with the</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">      </span>same name already exists its content is erased and the</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">      </span>file is treated as a new empty file.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"a" - Appends to a file. Writing operations append data at</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">      </span>the end of the file. The file is created if it does</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">      </span>not exist.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">     </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"rb", "wb", "ab" - same as above, but data is binary</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"r+" - Opens a file for update both reading and writing. The</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>file must exist.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"w+" - Creates an empty file for both reading and writing. If</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>a file with the same name already exists its content</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>is erased and the file is treated as a new empty file.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"a+" - Opens a file for reading and appending. All writing</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>operations are performed at the end of the file,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>protecting the previous content to be overwritten. You</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>can reposition the internal pointer using the seek</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>method to anywhere in the file for reading, but writing</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>operations will move it back to the end of file. The</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-converted-space">      </span>file is created if it does not exist.</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"rb+", wb+", "ab+" - same as above, but data is binary</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>open</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Open the file. Files are automatically opened upon creation, so this call is only necessary<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if you are closing and opening the same file object repeatedly.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>NOTE:<span class="Apple-converted-space">  </span>it is possible when saving files with a standard file dialog to elect to "hide the extension"<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and save it as RTF.<span class="Apple-converted-space">  </span>When opening the file you must specify the real filename:<span class="Apple-converted-space">  </span>"filename.rtf",<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>even though you can't see in file load dialogs or in the Finder.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>close</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Close the file.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*open(pathname, mode)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>same as *new, but a more intuitive name.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*exists(pathName)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>answers if a file exists at that path.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*delete(pathName)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>deletes the file at that path.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>use only for good, never for evil.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*openDialog(prompt,sucessFunc,cancelFunc)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*saveDialog("hello",{},{})</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>not yet implemented</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*getcwd</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>POSIX standard 'get current working directory'.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// example;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">File</span>.getcwd</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span><b>*use(function)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>open the file, evaluate the function with the file and close it.</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span><b>readAllString</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Reads the entire file as a String.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>readAllStringRTF</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Reads the entire file as a String, stripping RTF formatting.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>seek(offset, origin)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>moves the read/write pointer to a given location in the file,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>where offset is location given in bytes, and origin is the</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reference of the offset:</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - offset is from the beginning of the file</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 - offset is relative to the current position</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in the file</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 - offset is from the end of the file</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pos</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns the current position in the file (in bytes)</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pos_(value)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a shortcut for seek(0, value), so moves to a given location</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>from the beginning of the file. the value is clipped so that it</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lies between 0 inclusively and the file length exclusively.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>length</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns the current file size in bytes</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples:</b></p>
-<p class="p9"><br></p>
-<p class="p6">// write some string to a file:</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> f, g;</p>
-<p class="p10"><span class="s2">f = </span><span class="s3">File</span><span class="s2">(</span>"test"<span class="s2">,</span>"w"<span class="s2">);</span></p>
-<p class="p10"><span class="s2">f.write(</span>"Does this work?\n is this thing on ?\n"<span class="s2">);</span></p>
-<p class="p7">f.close;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p6">// read it again:</p>
-<p class="p7">(</p>
-<p class="p10"><span class="s2">g = </span><span class="s3">File</span><span class="s2">(</span>"test"<span class="s2">,</span>"r"<span class="s2">);</span></p>
-<p class="p7">g.readAllString.postln;</p>
-<p class="p7">g.close;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p6">// try the above with File.use:</p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s3">File</span><span class="s2">.use(</span>"test"<span class="s2">, </span>"w"<span class="s2">, { </span><span class="s3">|f|</span><span class="s2"> f.write(</span>"Doesn't this work?\n is this thing really on ?\n"<span class="s2">); })</span></p>
-<p class="p7"><span class="s3">File</span>.use(<span class="s5">"test"</span>, <span class="s5">"r"</span>, { <span class="s3">|f|</span> f.readAllString.postln })</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">// more file writing/reading examples:</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> h, k;</p>
-<p class="p10"><span class="s2">h = </span><span class="s3">File</span><span class="s2">(</span>"test2"<span class="s2">, </span>"wb"<span class="s2">);</span></p>
-<p class="p7">h.inspect;</p>
-<p class="p7">h.write( <span class="s3">FloatArray</span>[1.1, 2.2, 3.3, pi, 3.sqrt] );</p>
-<p class="p7">h.close;</p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s2">k = </span><span class="s3">File</span><span class="s2">(</span>"test2"<span class="s2">, </span>"rb"<span class="s2">);</span></p>
-<p class="p7">(k.length div: 4).do({ k.getFloat.postln; });</p>
-<p class="p7">k.close;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> f, g;</p>
-<p class="p10"><span class="s2">f = </span><span class="s3">File</span><span class="s2">(</span>"test3"<span class="s2">,</span>"w"<span class="s2">);</span></p>
-<p class="p7">100.do({ f.putChar([$a, $b, $c, $d, $e, $\n].choose); });</p>
-<p class="p7">f.close;</p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s2">g = </span><span class="s3">File</span><span class="s2">(</span>"test3"<span class="s2">,</span>"r"<span class="s2">);</span></p>
-<p class="p7">g.readAllString.postln;</p>
-<p class="p7">g.close;</p>
-<p class="p8"><br></p>
-<p class="p7">g = File("test3","r");</p>
-<p class="p7">g.getLine(1024).postln;</p>
-<p class="p7">"*".postln;</p>
-<p class="p7">g.getLine(1024).postln;</p>
-<p class="p7">"**".postln;</p>
-<p class="p7">g.getLine(1024).postln;</p>
-<p class="p7">"***".postln;</p>
-<p class="p7">g.getLine(1024).postln;</p>
-<p class="p7">"****".postln;</p>
-<p class="p7">g.close;</p>
-<p class="p8"><br></p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p6">//var f, g;</p>
-<p class="p10"><span class="s2">f = </span><span class="s3">File</span><span class="s2">(</span>"test3"<span class="s2">,</span>"wb"<span class="s2">);</span></p>
-<p class="p7">f.inspect;</p>
-<p class="p7">100.do({ f.putFloat(1.0.rand); });</p>
-<p class="p8"><br></p>
-<p class="p7">f.inspect;</p>
-<p class="p7">f.close;</p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s2">g = </span><span class="s3">File</span><span class="s2">(</span>"test3"<span class="s2">,</span>"rb"<span class="s2">);</span></p>
-<p class="p7">100.do({</p>
-<p class="p7"><span class="Apple-tab-span">	</span>g.getFloat.postln;</p>
-<p class="p7">});</p>
-<p class="p7">g.inspect;</p>
-<p class="p7">g.close;</p>
-<p class="p8"><br></p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p6">//var f, g;</p>
-<p class="p10"><span class="s2">f = </span><span class="s3">File</span><span class="s2">(</span>"test3"<span class="s2">,</span>"r"<span class="s2">);</span></p>
-<p class="p7">f.inspect;</p>
-<p class="p8"><br></p>
-<p class="p7">f.getLine(1024).postln;</p>
-<p class="p8"><br></p>
-<p class="p7">f.close;</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p3"><b>putInt8</b></p>
-<p class="p9"><br></p>
-<p class="p3">put a signed integer value between -128 and 127</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Files/FileReader.html b/Help/Files/FileReader.html
deleted file mode 100644
index 5bba562..0000000
--- a/Help/Files/FileReader.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #0000bf}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FileReader</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a></span><b> </b><span class="s1"><b>: </b><a href="../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a></span><b> : </b><a href="../Streams-Patterns-Events/Stream.html"><b>Stream</b></a></p>
-<p class="p2"><br></p>
-<p class="p4"><b>FileReader reads space-delimited text files into 2D arrays line by line.</b></p>
-<p class="p2"><br></p>
-<p class="p4">For tab delimited files use: <a href="TabFileReader.html"><span class="s2">TabFileReader</span></a></p>
-<p class="p4">For comma-separated files, use: <a href="CSVFileReader.html"><span class="s2">CSVFileReader</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*read(path, skipEmptyLines, skipBlanks, func, delimiter)</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7">// write a test file:</p>
-<p class="p8"><span class="s1">f = </span><span class="s3">File</span><span class="s1">(</span>"FileReaderTest.sc"<span class="s1">, </span>"w"<span class="s1">);</span></p>
-<p class="p6">f.write(</p>
-<p class="p8">"Some space delimited items in line 1</p>
-<p class="p9"><br></p>
-<p class="p8">and then some more with several blanks <span class="Apple-converted-space">    </span>in line 3</p>
-<p class="p8">"</p>
-<p class="p6">);</p>
-<p class="p6">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>// open file, read and put strings into array, close file.<span class="Apple-converted-space"> </span></p>
-<p class="p6">x = <span class="s3">FileReader</span>.read(<span class="s4">"FileReaderTest.sc"</span>).postcs;</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>// can skip empty lines:<span class="Apple-converted-space"> </span></p>
-<p class="p6">x = <span class="s3">FileReader</span>.read(<span class="s4">"FileReaderTest.sc"</span>, <span class="s3">true</span>).postcs;</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>// can skip blank entries caused by multiple spaces :<span class="Apple-converted-space"> </span></p>
-<p class="p6">x = <span class="s3">FileReader</span>.read(<span class="s4">"FileReaderTest.sc"</span>, <span class="s3">true</span>, <span class="s3">true</span>).postcs;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>// do file open/close by hand if you prefer:</p>
-<p class="p8"><span class="s1">f = </span><span class="s3">File</span><span class="s1">(</span>"FileReaderTest.sc"<span class="s1">, </span>"r"<span class="s1">); f.isOpen;</span></p>
-<p class="p10"><span class="s1">t = </span>FileReader<span class="s1">(f, </span>true<span class="s1">, </span>true<span class="s1">);<span class="Apple-tab-span">	</span></span></p>
-<p class="p6">t.read;</p>
-<p class="p6">f.close;</p>
-<p class="p5"><br></p>
-<p class="p11"><span class="s1"><span class="Apple-tab-span">	</span></span>// take letter "a" as delimiter:<span class="Apple-converted-space"> </span></p>
-<p class="p12">x = <span class="s5">FileReader</span>.read(<span class="s4">"FileReaderTest.sc"</span>, <span class="s5">true</span>, <span class="s5">true</span>, delimiter: $a).postcs;</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7">// write a test file with numbers:</p>
-<p class="p8"><span class="s1">f = </span><span class="s3">File</span><span class="s1">(</span>"FileReadTestNum.sc"<span class="s1">, </span>"w"<span class="s1">);</span></p>
-<p class="p5"><br></p>
-<p class="p6">(1..10).do { <span class="s3">|n|</span> f.write(n.asString ++ <span class="s4">" "</span>); };</p>
-<p class="p6">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s1">x = </span><span class="s3">FileReader</span><span class="s1">.read(</span>"FileReadTestNum.sc"<span class="s1">).postcs;</span></p>
-<p class="p6">x.collect(<span class="s3">_</span>.collect(<span class="s3">_</span>.interpret));<span class="Apple-tab-span">	</span><span class="s6">// convert to numbers.</span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or do it immediately:</p>
-<p class="p6">x = <span class="s3">FileReader</span>.readInterpret(<span class="s4">"FileReadTestNum.sc"</span>).postcs;</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7">// write a test file with several lines of numbers:</p>
-<p class="p8"><span class="s1">f = </span><span class="s3">File</span><span class="s1">(</span>"FileReadTestNum.sc"<span class="s1">, </span>"w"<span class="s1">);</span></p>
-<p class="p5"><br></p>
-<p class="p6">(1..100).do { <span class="s3">|n|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.write(n.asString ++ if (n % 10 != 0, <span class="s4">" "</span>, <span class="s3">Char</span>.nl)); };</p>
-<p class="p6">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">x = <span class="s3">FileReader</span>.readInterpret(<span class="s4">"FileReadTestNum.sc"</span>, <span class="s3">true</span>, <span class="s3">true</span>).postln;</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Files/PathName.html b/Help/Files/PathName.html
deleted file mode 100644
index 91f86af..0000000
--- a/Help/Files/PathName.html
+++ /dev/null
@@ -1,345 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a42113}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a42113; min-height: 12.0px}
-span.s1 {font: 9.0px Helvetica}
-span.s2 {color: #001db6}
-span.s3 {color: #000000}
-span.s4 {font: 9.0px Monaco}
-span.s5 {color: #606060}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PathName<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>file and directory path utilities</b><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p4"><br></p>
-<p class="p3">PathName is a utility Class for manipulating file names and paths.<span class="Apple-converted-space"> </span></p>
-<p class="p3">It expects a path to a file, and lets you access parts of that file path.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Creation</b></p>
-<p class="p6"><br></p>
-<p class="p7">*new(path)</p>
-<p class="p6"><br></p>
-<p class="p3">path is a String which likely contains one or more /<span class="Apple-converted-space">  </span>as typical for folder separation.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s2">PathName</span><span class="s3">.new(</span>"MyDisk/SC 2.2.8 f/Sounds/FunkyChicken"<span class="s3">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p3">~ will be converted to your fully addressed home directory.<span class="Apple-converted-space">  </span>Symbolic Links will be expanded, as per String-standardizePath.</p>
-<p class="p9"><br></p>
-<p class="p5"><b>Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p3"><b>tmp</b></p>
-<p class="p3"><b>tmp_(aPath)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Get or set the global temp directory as a <b>String</b>. This is used by <b>Buffer</b>, etc. By default this is "/tmp/" for Linux and OSX, and "/WINDOWS/TEMP/" for Windows.</p>
-<p class="p9"><br></p>
-<p class="p5"><b>Instance Methods</b></p>
-<p class="p6"><br></p>
-<p class="p3"><b>fileName</b><span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p3">returns just the name of the file itself; i.e.<span class="Apple-converted-space"> </span></p>
-<p class="p3">everything after the last slash in the full path.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">var myPath;</p>
-<p class="p7">myPath = PathName.new("MyDisk/SC 2.2.8 f/Sounds/FunkyChicken");<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.fileName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3">(There is also <b>fileNameWithoutExtension</b> if you don't want the file extension.)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>extension</b><span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p3">returns the file extension, i.e. everything after the last full-stop in the fileName.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>pathOnly</b><span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p3">returns the full path up to the file name itself; i.e.<span class="Apple-converted-space"> </span></p>
-<p class="p3">everything up to and including<span class="Apple-converted-space">  </span>the last slash.<span class="Apple-converted-space"> </span></p>
-<p class="p3">This is handy e.g. for storing several files in the same folder.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">var myPath;</p>
-<p class="p7">myPath = PathName.new("MyDisk/SC 2.2.8 f/Sounds/FunkyChicken");<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.pathOnly.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>isAbsolutePath</b></p>
-<p class="p3"><b>asAbsolutePath</b></p>
-<p class="p3"><b>isRelativePath</b></p>
-<p class="p3"><b>asRelativePath</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>you MUST have correctly initialized the scroot classvar for this</p>
-<p class="p3"><span class="Apple-tab-span">	</span>to know what it is relative to !</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><b>folderName</b><span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p3">returns only the name of the folder that the file is in;<span class="Apple-converted-space"> </span></p>
-<p class="p3">i.e. everything in between the last but one and the last slash.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p8"><span class="s3">myPath = </span><span class="s2">PathName</span><span class="s3">.new(</span>"MyDisk/SC 2.2.8 f/Sounds/FunkyChicken"<span class="s3">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p7">myPath.folderName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><b>fullPath</b></p>
-<p class="p3">returns the full path name that PathName contains.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p8"><span class="s3">myPath = </span><span class="s2">PathName</span><span class="s3">.new(</span>"MyDisk/SC 2.2.8 f/Sounds/FunkyChicken"<span class="s3">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p7">myPath.fullPath.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>entries</b></p>
-<p class="p6"><br></p>
-<p class="p3">returns a list of all the files+folders inside the folder represented by this path.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p7">myPath = <span class="s2">PathName</span>.new(<span class="s5">"./"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.entries.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>files</b></p>
-<p class="p6"><br></p>
-<p class="p3">returns a list of all the files in the folder represented by this path.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p7">myPath = <span class="s2">PathName</span>.new(<span class="s5">"./"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.files.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>folders</b></p>
-<p class="p6"><br></p>
-<p class="p3">returns a list of all the subfolders of the folder represented by this path.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p7">myPath = <span class="s2">PathName</span>.new(<span class="s5">"./"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.folders.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>isFile</b></p>
-<p class="p6"><br></p>
-<p class="p3">returns a <a href="../Core/Boolean.html"><span class="s6">Boolean</span></a> indicating whether or not the path represents a file (not a folder).</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p7">myPath = <span class="s2">PathName</span>.new(<span class="s5">"./"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.isFile.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>isFolder</b></p>
-<p class="p6"><br></p>
-<p class="p3">returns a <a href="../Core/Boolean.html"><span class="s6">Boolean</span></a> indicating whether or not the path represents a folder (not a file).</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p7">myPath = <span class="s2">PathName</span>.new(<span class="s5">"./"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.isFolder.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>filesDo(func)</b></p>
-<p class="p6"><br></p>
-<p class="p3">Iterates over all files found in the pathname, including ones in subfolders.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p7">myPath = <span class="s2">PathName</span>.new(<span class="s5">"./"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.filesDo{|afile| afile.postln};<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>helpFilesDo(func)</b></p>
-<p class="p6"><br></p>
-<p class="p3">Just like <b>filesDo</b>, but ignores paths which don't match the paths expected for SC help files. This excludes certain folders (e.g. ".svn", "ignore") and only includes files with certain extensions.</p>
-<p class="p3">Please note that this is <i>not</i> the same as iterating a list of the Help files cached (e.g. in the Help browser). You can use <b>Help.do(func)</b> if you want that.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s7">var</span> myPath;</p>
-<p class="p7">myPath = <span class="s7">PathName</span>.new(<span class="s5">"./"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7">myPath.helpFilesDo{<span class="s7">|afile|</span> afile.postln};<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>allFolders</b></p>
-<p class="p6"><br></p>
-<p class="p3">returns a list of all the folder names contained in the pathname itself.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p8"><span class="s3">myPath = </span><span class="s2">PathName</span><span class="s3">.new(</span>"MyDisk/SC 2.2.8 f/Sounds/FunkyChicken"<span class="s3">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p7">myPath.allFolders.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>diskName</b></p>
-<p class="p3">if path is an absolute path, returns the disk name; else a blank string.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p8"><span class="s3">myPath = </span><span class="s2">PathName</span><span class="s3">.new(</span>"MyDisk/SC 2.2.8 f/Sounds/FunkyChicken"<span class="s3">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p7">myPath.diskName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p10"><span class="s3">( </span>// note the / at the start</p>
-<p class="p7"><span class="s2">var</span> myPath;</p>
-<p class="p8"><span class="s3">myPath = </span><span class="s2">PathName</span><span class="s3">.new(</span>"/MyDisk/SC 2.2.8 f/Sounds/FunkyChicken"<span class="s3">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p7">myPath.diskName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><b>+/+</b></p>
-<p class="p3">Path concatenation operator - useful for avoiding doubling-up slashes unnecessarily.</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s2">(PathName</span><span class="s3">(</span>"/somewhere"<span class="s3">) +/+ </span><span class="s2">PathName</span><span class="s3">(</span>"over/the/rainbow"<span class="s3">)).postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2">(PathName</span><span class="s3">(</span>"/somewhere"<span class="s3">) +/+ </span><span class="s2">PathName</span><span class="s3">(</span>"/over/the/rainbow"<span class="s3">)).postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><b>endNumber</b><span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p3">returns a number at the end of PathName.</p>
-<p class="p3">Returns zero if there is no number.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">PathName</span>(<span class="s5">"floating1"</span>).endNumber.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">PathName</span>(<span class="s5">"floating"</span>).endNumber.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p3"><b>noEndNumbers</b></p>
-<p class="p3">returns fullPath without any numbers at the end.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">PathName</span>(<span class="s5">"floating1"</span>).noEndNumbers.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">PathName</span>(<span class="s5">"floating"</span>).noEndNumbers.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><b>nextName</b></p>
-<p class="p3">generates a sensible next name for a file</p>
-<p class="p3">by incrementing a number at the end of PathName,<span class="Apple-converted-space"> </span></p>
-<p class="p3">or by adding one if there is none.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">PathName</span>(<span class="s5">"floating34"</span>).nextName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">PathName</span>(<span class="s5">"floating"</span>).nextName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s2">PathName</span><span class="s3">(</span>"floating12_3A4X_56.7"<span class="s3">).nextName.postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p3">This is useful for recording files with consecutive names,<span class="Apple-converted-space"> </span></p>
-<p class="p3">and e.g. to generate a new filename when you don't want to<span class="Apple-converted-space"> </span></p>
-<p class="p3">overwrite an existing file with the current name.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">Here is an example that uses many instance methods.<span class="Apple-converted-space"> </span></p>
-<p class="p3">Just pick any file to see all the parts of its path.</p>
-<p class="p6"><br></p>
-<p class="p10">/*</p>
-<p class="p10">(</p>
-<p class="p10">GetFileDialog.new(</p>
-<p class="p10"><span class="Apple-tab-span">	</span>{ arg ok, path;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>var myPathName;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>if (ok,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> myPathName = PathName.new(path);<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> "New PathName object/ <span class="Apple-converted-space">  </span>".postc;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> myPathName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> "fileName only/ <span class="Apple-converted-space">  </span>".postc;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> myPathName.fileName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> "path up to file only/ <span class="Apple-converted-space">  </span>".postc;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> myPathName.pathOnly.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> "folder Name/ <span class="Apple-converted-space">  </span>".postc;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> myPathName.folderName.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">)</p>
-<p class="p10">)</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p10">Choose a soundfile to put into the library,<span class="Apple-converted-space"> </span></p>
-<p class="p10">using its foldername and filename/</p>
-<p class="p11"><br></p>
-<p class="p10">(</p>
-<p class="p10">GetFileDialog.new(</p>
-<p class="p10"><span class="Apple-tab-span">	</span>{ arg ok, path;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>var myPathName, myFile;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>if (ok,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myPathName = PathName.new(path);<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// read your file from disk, e.g. a soundFile/<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myFile = SoundFile.new;<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (myFile.readHeader(path),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Library.put(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ myPathName.folderName.asSymbol, myPathName.fileName.asSymbol ],</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myFile);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>("Check LibMenu/ " ++ myPathName.folderName ++ " please.").postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ ("Could not read soundfile " ++ path ++ ".").postln; }</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">)</p>
-<p class="p10">)</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p10">Save three tables in the same folder:</p>
-<p class="p10"><span class="Apple-converted-space"> </span>Note: The file name chosen in the dialog is ignored!</p>
-<p class="p10"><span class="Apple-converted-space"> </span>The files are always named table1, table2, table3.<span class="Apple-converted-space"> </span></p>
-<p class="p10">(</p>
-<p class="p10">var table1, table2, table3;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><br></p>
-<p class="p10">table1 = Wavetable.sineFill(1024, [1,2,3]);</p>
-<p class="p10">table2 = Signal.newClear.asWavetable;</p>
-<p class="p10">table3 = Wavetable.sineFill(1024, Array.rand(64, 0.0, 1.0));</p>
-<p class="p11"><br></p>
-<p class="p10">PutFileDialog.new(</p>
-<p class="p10"><span class="Apple-tab-span">	</span>"Pick a folder for tables1-3/", "table1",</p>
-<p class="p10"><span class="Apple-tab-span">	</span>{ arg ok, path;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>var myPathName, myPathOnly;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>if (ok,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myPathName = PathName.new(path);<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myPathOnly = myPathName.pathOnly;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table1.write(myPathOnly ++ "table1");</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table2.write(myPathOnly ++ "table2");</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table3.write(myPathOnly ++ "table3");</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">)</p>
-<p class="p10">)</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p10">*/</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Files/Pipe.html b/Help/Files/Pipe.html
deleted file mode 100644
index 502dc8b..0000000
--- a/Help/Files/Pipe.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #962617}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0024f8}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0027b1}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.s6 {color: #962617}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pipe</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: UnixFILE</b></p>
-<p class="p2"><br></p>
-<p class="p3">Pipe stdin to, or stdout from, a unix shell command. Pipe treats the shell command as if it were a <b>UnixFILE</b>, and returns nil when done. See <a href="UnixFILE.html"><span class="s1"><b>UnixFILE</b></span></a><b> </b>for details of the access methods. Pipe must be explicitly closed. Do not rely on the garbage collector to do this for you!</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Note: </b>For anyone still using OS X 10.3, unix commands like pipe do not work when the server is booted; quit the server, otherwise sc crashes. More recent OS X is not affected.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(commandLine, mode)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>commandLine</b> - A String representing a valid shell command.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>mode </b>- A string representing the mode. Valid modes are "w" (pipe to stdin) and "r" (pipe from stdout).</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>close</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>Closes the pipe. You must do this explicitly before the Pipe object is garbage collected.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="s2">Examples</span></b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// quit the server</p>
-<p class="p5">s.quit;</p>
-<p class="p6"><br></p>
-<p class="p4">// this pipes in stdout from ls</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> p, l;</p>
-<p class="p4"><span class="s4">p = </span><span class="s3">Pipe</span><span class="s4">.new(</span><span class="s5">"ls -l"</span><span class="s4">, </span><span class="s5">"r"</span><span class="s4">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// list directory contents in long format</p>
-<p class="p5">l = p.getLine;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// get the first line</span></p>
-<p class="p5">while({l.notNil}, {l.postln; l = p.getLine; });<span class="Apple-tab-span">	</span><span class="s6">// post until l = nil</span></p>
-<p class="p4"><span class="s4">p.close;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// close the pipe to avoid that nasty buildup</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">A more time-intensive request:</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> p, l;</p>
-<p class="p4"><span class="s4">p = </span><span class="s3">Pipe</span><span class="s4">.new(</span><span class="s5">"ping -c10 sourceforge.net"</span><span class="s4">, </span><span class="s5">"r"</span><span class="s4">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// list directory contents in long format</p>
-<p class="p5">l = p.getLine;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// get the first line</span></p>
-<p class="p5">while({l.notNil}, {l.postln; l = p.getLine; });<span class="Apple-tab-span">	</span><span class="s6">// post until l = nil</span></p>
-<p class="p4"><span class="s4">p.close;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// close the pipe to avoid that nasty buildup</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Files/SoundFile.html b/Help/Files/SoundFile.html
deleted file mode 100644
index c135d2b..0000000
--- a/Help/Files/SoundFile.html
+++ /dev/null
@@ -1,271 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p11 {margin: 0.0px 0.0px 0.0px 29.0px; text-indent: -29.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #0000ff}
-span.s7 {color: #2c7014}
-span.s8 {font: 9.0px Monaco}
-span.s9 {font: 12.0px Helvetica}
-span.s10 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SoundFile<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><b>sclang soundfile data</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: <a href="../Core/Object.html"><span class="s2">Object</span></a></p>
-<p class="p3"><br></p>
-<p class="p1">The SoundFile class is used to check the size, format, channels etc. when the sclang client needs this information about a SoundFile. Soundfile data can be read and modified. Soundfile data can also be read and written incrementally, so with properly designed code, there is no restriction on the file size.</p>
-<p class="p3"><br></p>
-<p class="p1">In most cases you will wish to send commands to the server to get it to load SoundFiles directly into Buffers.<span class="Apple-converted-space">  </span>You will not need to use this class for this. See the <a href="../ServerArchitecture/Buffer.html"><span class="s2">Buffer</span></a> helpfile.</p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">f = <span class="s2">SoundFile</span>.new;</p>
-<p class="p5"><span class="s3">f.openRead(</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p4">f.inspect;</p>
-<p class="p4">f.close;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><b>Creating</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*new</b></p>
-<p class="p3"><br></p>
-<p class="p1">Creates a new SoundFile instance.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*collect(pattern = "sounds/*")</b></p>
-<p class="p3"><br></p>
-<p class="p1">Returns an array of SoundFile objects whose paths match the pattern. <span class="Apple-converted-space"> </span></p>
-<p class="p1">(The associated files are closed. These objects can be used to cue playback buffers)</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s4">SoundFile</span>.collect(<span class="s5">"sounds/*"</span>).do { <span class="s4">|f|</span> f.path.postln };</p>
-<p class="p3"><br></p>
-<p class="p1"><b>*use(path, function)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Reads the data of a SoundFile, evaluates the function (passing the file as argument) and closes it again.</p>
-<p class="p3"><br></p>
-<p class="p8">// the above example</p>
-<p class="p7"><span class="s4">SoundFile</span>.use(<span class="s5">"sounds/a11wlk01.wav"</span>, { <span class="s4">|f|</span> f.inspect });</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><b>Playback</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>cue(event, playNow)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1">Allocates a buffer and cues the SoundFile for playback. Returns an event parameterized to play that buffer.</p>
-<p class="p1">(See <a href="../Streams-Patterns-Events/NodeEvent.html"><span class="s6">NodeEvent</span></a><b> </b>for a description of how events can be used to control running synths.)</p>
-<p class="p1">The event responds to <b>play, stop, pause, resume</b>, keeping both the file and buffer open.</p>
-<p class="p1">The file is closed and the<span class="Apple-converted-space">  </span>buffer is freed when the event is sent a <b>close </b>message.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>arguments</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>event | Nil</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span></b>An <b>event </b>can passed as an argument allowing playback to be customized using the following keys:</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>key<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default value<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>what it does</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// buffer and playback position:<span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufferSize<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>65536</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>firstFrame<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>first frame to play</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lastFrame<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nil<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>last frame to play (nil plays to end of file)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// synth parameters</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sets output bus</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>server:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Server.default<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>which server</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>group:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>what target</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>addAction:<span class="Apple-tab-span">	</span>0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>head/tail/before/after</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amp:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amplitude</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instrument:<span class="Apple-tab-span">	</span>nil<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if nil SoundFile:cue determines the SynthDef</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(one of diskIn1, diskIn2, ...diskIn16)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Here is the default SynthDef used for stereo files:</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SynthDef<span class="s3">(</span><span class="s7">\diskIn2</span><span class="s3">, { </span>| bufnum, out,<span class="Apple-converted-space">  </span>gate = 1, sustain,<span class="Apple-converted-space">  </span>amp = 1, ar = 0, dr = 0.01 |</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">DiskIn</span>.ar(2, bufnum)<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">Linen</span>.kr(gate, ar, 1, dr, 2)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.linen(0, sustain - ar - dr max: 0 ,dr),1, doneAction: 2) * amp)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>The control <b>sustain</b> determines playback duration based on the firstFrame and lastFrame.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The control <b>gate </b>allows early termination of the playback</p>
-<p class="p2"><span class="s9"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s8"><span class="Apple-tab-span">	</span></span><b>playNow</b></p>
-<p class="p1"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>This is a boolean that determines whether the file is to be played immediately after cueing.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>example:</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>f = SoundFile.collect("sounds/*")</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e = f[1].cue;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e = f[1].cue( (addAction: 2, group: 1) );<span class="Apple-tab-span">	</span>// synth will play ahead of the default group</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Read/Write</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>openRead(inPathname)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Read the header of a file. Answers a Boolean whether the read was successful.</p>
-<p class="p1">sets the numFrames,numChannels and sampleRate.<span class="Apple-converted-space">  </span>does not set the headerFormat and sampleFormat.</p>
-<p class="p1"><b>inPathname</b> - a String specifying the path name of the file to read.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>readData(rawArray)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Reads the sample data of the file into the raw array you supply. You<span class="Apple-converted-space">  </span>must have already called openRead.</p>
-<p class="p3"><br></p>
-<p class="p1">The raw array must be a FloatArray. Regardless of the sample format of the file, the array will be populated with floating point values. For integer formats, the floats will all be in the range -1..1.</p>
-<p class="p3"><br></p>
-<p class="p1">The size of the FloatArray determines the maximum number of single samples (<i>not</i> sample frames) that will be read. If there are not enough samples left in the file, the size of the array after the readData call will be less than the original size.</p>
-<p class="p3"><br></p>
-<p class="p1">When you reach EOF, the array's size will be 0. Checking the array size is an effective termination condition when looping through a sound file. See the method channelPeaks for example.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>openWrite(inPathname)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Write the header of a file. Answers a Boolean whether the write was successful.</p>
-<p class="p1"><b>inPathname</b> - a String specifying the path name of the file to write.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>writeData(rawArray)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Writes the rawArray to the sample data of the file. You<span class="Apple-converted-space">  </span>must have already called openWrite.</p>
-<p class="p3"><br></p>
-<p class="p1">The raw array must be a FloatArray or Signal, with all values between -1 and 1 to avoid clipping during playback.</p>
-<p class="p3"><br></p>
-<p class="p1">Example:</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">f = <span class="s2">SoundFile</span>.new.headerFormat_(<span class="s5">"AIFF"</span>).sampleFormat_(<span class="s5">"int16"</span>).numChannels_(1);</p>
-<p class="p5"><span class="s3">f.openWrite(</span>"sounds/sfwrite.aiff"<span class="s3">);</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// sawtooth</p>
-<p class="p4">b = <span class="s2">Signal</span>.sineFill(100, (1..20).reciprocal);</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// write multiple cycles (441 * 100 = 1 sec worth)</p>
-<p class="p4">441.do({ f.writeData(b) });</p>
-<p class="p4">f.close;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p1"><b>isOpen</b></p>
-<p class="p1">answers if the file is open</p>
-<p class="p3"><br></p>
-<p class="p1"><b>close</b></p>
-<p class="p1">closes the file</p>
-<p class="p3"><br></p>
-<p class="p1"><b>duration</b></p>
-<p class="p1">the duration in seconds of the file</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><b>Normalizing</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*normalize(path, outPath, newHeaderFormat, newSampleFormat, startFrame, numFrames, maxAmp, linkChannels, chunkSize, threaded)</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>normalize(outPath, newHeaderFormat, newSampleFormat, startFrame, numFrames, maxAmp, linkChannels, chunkSize, threaded)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Normalizes a soundfile to a level set by the user. The normalized audio will be written into a second file.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Note:</b> While the normalizer is working, there is no feedback to the user. It will look like SuperCollider is hung, but it will eventually complete the operation. You can set threaded:true to get feedback but it will take slightly longer to complete.</p>
-<p class="p3"><br></p>
-<p class="p1">Arguments:</p>
-<p class="p3"><br></p>
-<p class="p11"><b>path:</b> a path to the source file</p>
-<p class="p11"><b>outPath:</b> a path to the destination file</p>
-<p class="p11"><b>newHeaderFormat:</b> the desired header format of the new file; if not specified, the header format of the source file will be used</p>
-<p class="p11"><b>newSampleFormat:</b> the desired sample format of the new file; if not specified, the sample format of the source file will be used</p>
-<p class="p11"><b>startFrame:</b> an index to the sample frame to start normalizing (default 0)</p>
-<p class="p11"><b>numFrames:</b> the number of sample frames to copy into the destination file (default nil, or entire soundfile)</p>
-<p class="p11"><b>maxAmp:</b> the desired maximum amplitude. Provide a floating point number or, if desired, an array to specify a different level for each channel. The default is 1.0.</p>
-<p class="p11"><b>linkChannels:</b> a Boolean specifying whether all channels should be scaled by the same amount. The default is <b>true</b>, meaning that the peak calculation will be based on the largest sample in any channel. If false, each channel's peak will be calculated independently and all channels will be scaled to maxAmp (this would alter the relative loudness of each channel).</p>
-<p class="p11"><b>chunkSize:</b> how many samples to read at once (default is 4194304, or 16 MB)<span class="Apple-converted-space"> </span></p>
-<p class="p11"><b>threaded:</b> if true, the normalization runs in a routine so that SC can respond (intermittently) while processing. Prevents OSX beachballing. Default is false.</p>
-<p class="p3"><br></p>
-<p class="p1">Using the class method (SoundFile.normalize) will automatically open the source file for you. You may also openRead the SoundFile yourself and call normalize on it. In that case, the source path is omitted because the file is already open.</p>
-<p class="p3"><br></p>
-<p class="p1">The normalizer may be used to convert a soundfile from one sample format to another (e.g., to take a floating point soundfile produced by SuperCollider and produce an int16 or int24 soundfile suitable for use in other applications).</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><b>Instance Variables</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b><path</b></p>
-<p class="p3"><br></p>
-<p class="p1">Get the pathname of the file. This variable is set via the openRead or openWrite calls.</p>
-<p class="p3"><br></p>
-<p class="p1"><b><>headerFormat</b></p>
-<p class="p3"><br></p>
-<p class="p1">This is a String indicating the header format which was read by openRead and will be written by openWrite. In order to write a file with a certain header format you set this variable.</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Sound File Format symbols:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>header formats:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>read/write formats:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"AIFF"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Apple/SGI AIFF format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"WAV","WAVE", "RIFF"<span class="Apple-tab-span">	</span>- Microsoft WAV format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"Sun", "NeXT"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Sun/NeXT AU format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"SD2"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Sound Designer 2</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"IRCAM"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Berkeley/IRCAM/CARL</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"raw"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- no header = raw data</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"MAT4"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Matlab (tm) V4.2 / GNU Octave 2.0</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"MAT5"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Matlab (tm) V5.0 / GNU Octave 2.1</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"PAF"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Ensoniq PARIS file format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"SVX"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Amiga IFF / SVX8 / SV16 format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"NIST"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Sphere NIST format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"VOC"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- VOC files</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"W64"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Sonic Foundry's 64 bit RIFF/WAV</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"PVF"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Portable Voice Format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"XI"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Fasttracker 2 Extended Instrument</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"HTK"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- HMM Tool Kit format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"SDS"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Midi Sample Dump Standard</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"AVR"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Audio Visual Research</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"FLAC"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- FLAC lossless file format</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"CAF"<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- Core Audio File format</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Additionally, a huge number of other formats are supported read only.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p13"><br></p>
-<p class="p1"><b><>sampleFormat</b></p>
-<p class="p3"><br></p>
-<p class="p1">A String indicating the format of the sample data which was read by openRead and will be written by openWrite. libsndfile determines which header formats support which sample formats. This information is detailed at <span class="s10">http://www.mega-nerd.com/libsndfile</span>. The possible header formats are:</p>
-<p class="p13"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sample formats:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"int8", "int16", "int24", "int32"</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"mulaw", "alaw",</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"float"</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>not all header formats support all sample formats.</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p1"><b><numFrames</b></p>
-<p class="p3"><br></p>
-<p class="p1">The number of sample frames in the file.</p>
-<p class="p3"><br></p>
-<p class="p1"><b><>numChannels</b></p>
-<p class="p3"><br></p>
-<p class="p1">The number of channels in the file.</p>
-<p class="p3"><br></p>
-<p class="p1"><b><>sampleRate</b></p>
-<p class="p3"><br></p>
-<p class="p1">The sample rate of the file.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Files/TabFileReader.html b/Help/Files/TabFileReader.html
deleted file mode 100644
index 5a9f77c..0000000
--- a/Help/Files/TabFileReader.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #606060}
-span.s7 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TabFileReader<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>file reader for tab separated data</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a></span><b> </b><span class="s2"><b>: </b><a href="../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a></span><b> : </b><a href="../Streams-Patterns-Events/Stream.html"><b>Stream</b></a><b> : </b><a href="FileReader.html"><b>FileReader</b></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>TabFileReader reads tab/return delimited files into 2D arrays.</b></p>
-<p class="p2"><br></p>
-<p class="p1">For comma-separated files, use: <a href="CSVFileReader.html"><span class="s3">CSVFileReader</span></a>.</p>
-<p class="p1">For space-delimited files, or custom delimiters, use: <a href="FileReader.html"><span class="s3">FileReader</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*read(path, skipEmptyLines)</b></p>
-<p class="p4">(</p>
-<p class="p5">// write a test file:</p>
-<p class="p6"><span class="s2">f = </span><span class="s4">File</span><span class="s2">(</span>"TabDelTest.sc"<span class="s2">, </span>"w"<span class="s2">);</span></p>
-<p class="p4">f.write(</p>
-<p class="p6">"Some<span class="Apple-tab-span">	</span>tab-<span class="Apple-tab-span">	</span>delimited<span class="Apple-tab-span">	</span>items<span class="Apple-tab-span">	</span>in<span class="Apple-tab-span">	</span>line<span class="Apple-tab-span">	</span>1</p>
-<p class="p7"><br></p>
-<p class="p6">and<span class="Apple-tab-span">	</span>then<span class="Apple-tab-span">	</span>some<span class="Apple-tab-span">	</span>more<span class="Apple-tab-span">	</span>in<span class="Apple-tab-span">	</span>line<span class="Apple-tab-span">	</span>3</p>
-<p class="p6">"</p>
-<p class="p4">);</p>
-<p class="p4">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// open file, read and put strings into array, close file.<span class="Apple-converted-space"> </span></p>
-<p class="p11">x = <span class="s5">TabFileReader</span>.read(<span class="s6">"TabDelTest.sc"</span>).postcs;</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// can skip empty lines:<span class="Apple-converted-space"> </span></p>
-<p class="p11">x = <span class="s5">TabFileReader</span>.read(<span class="s6">"TabDelTest.sc"</span>, <span class="s5">true</span>).postcs;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// do file open/close by hand if you prefer:</p>
-<p class="p11">f = <span class="s5">File</span>(<span class="s6">"TabDelTest.sc"</span>, <span class="s6">"r"</span>); f.isOpen;</p>
-<p class="p12"><span class="s2">t = </span>TabFileReader<span class="s2">(f);<span class="Apple-tab-span">	</span></span></p>
-<p class="p11">t.read;</p>
-<p class="p11">f.close;</p>
-<p class="p9"><br></p>
-<p class="p11">(</p>
-<p class="p10">// write a test file with numbers:</p>
-<p class="p6"><span class="s2">f = </span><span class="s5">File</span><span class="s2">(</span>"TabDelTestNum.sc"<span class="s2">, </span>"w"<span class="s2">);</span></p>
-<p class="p9"><br></p>
-<p class="p11">(1..10).do { <span class="s5">|n|</span> f.write(n.asString ++ <span class="s5">Char</span>.tab); };</p>
-<p class="p11">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p11">)</p>
-<p class="p9"><br></p>
-<p class="p11">x = <span class="s5">TabFileReader</span>.read(<span class="s6">"TabDelTestNum.sc"</span>).postcs;</p>
-<p class="p11">x.collect(<span class="s5">_</span>.collect(<span class="s5">_</span>.interpret));<span class="Apple-tab-span">	</span><span class="s7">// convert to numbers.</span></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or you can do it immediately:</p>
-<p class="p11">x = <span class="s5">TabFileReader</span>.readInterpret(<span class="s6">"TabDelTestNum.sc"</span>).postcs;</p>
-<p class="p9"><br></p>
-<p class="p11">(</p>
-<p class="p10">// write a test file with numbers:</p>
-<p class="p6"><span class="s2">f = </span><span class="s5">File</span><span class="s2">(</span>"TabDelTestNum.sc"<span class="s2">, </span>"w"<span class="s2">);</span></p>
-<p class="p9"><br></p>
-<p class="p11">(1..100).do { <span class="s5">|n|</span><span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.write(n.asString ++ if (n % 10 != 0, <span class="s5">Char</span>.tab, <span class="s5">Char</span>.nl)); };</p>
-<p class="p11">f.close;<span class="Apple-converted-space"> </span></p>
-<p class="p11">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p11">x = <span class="s5">TabFileReader</span>.readInterpret(<span class="s6">"TabDelTestNum.sc"</span>).postln;</p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Files/UnixFILE.html b/Help/Files/UnixFILE.html
deleted file mode 100644
index 323f904..0000000
--- a/Help/Files/UnixFILE.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-span.s1 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>UnixFILE</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: IOStream</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>An abstract class.<span class="Apple-converted-space">  </span>See </b><a href="File.html"><span class="s1"><b>File</b></span></a><b> and </b><a href="Pipe.html"><span class="s1"><b>Pipe</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>( docs incomplete )</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>isOpen</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns whether the file is open. An open request can fail if a file cannot be found for example.<span class="Apple-converted-space"> </span></p>
-<p class="p3">This method lets you test that the open call succeeded.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>length</b></p>
-<p class="p2"><br></p>
-<p class="p3">Answer the length of the file.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>pos</b></p>
-<p class="p2"><br></p>
-<p class="p3">Answer the current file position</p>
-<p class="p2"><br></p>
-<p class="p3"><b>seek(offset, origin)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Seek to an offset from the origin.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>offset</b> - an offset in bytes.</p>
-<p class="p3"><b>origin</b> - one of the following Integers:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>0 - seek from beginning of file.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>1 - seek from current position in file.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>2 - seek from end of file.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>write(item)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Writes an item to the file.</p>
-<p class="p3">item - one of the following:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Float<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Integer,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Char,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Color,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Symbol - writes the name of the Symbol as a C string.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>RawArray - write the bytes from any RawArray in big endian.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>getLine</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads and returns a String up to lesser of next newline or 1023 chars.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>getChar</b></p>
-<p class="p2"><br></p>
-<p class="p3">read one byte and return as a Char</p>
-<p class="p2"><br></p>
-<p class="p3"><b>getInt8</b></p>
-<p class="p2"><br></p>
-<p class="p3">read one byte and return as a Integer.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>getInt16</b></p>
-<p class="p2"><br></p>
-<p class="p3">read two bytes and return as an Integer.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>getInt32</b></p>
-<p class="p2"><br></p>
-<p class="p3">read four bytes and return as an Integer.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>getFloat</b></p>
-<p class="p2"><br></p>
-<p class="p3">read four bytes and return as a Float.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>getDouble</b></p>
-<p class="p2"><br></p>
-<p class="p3">read eight bytes and return as a Float.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>putChar</b></p>
-<p class="p2"><br></p>
-<p class="p3">write a Char as one byte.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>putInt8</b></p>
-<p class="p2"><br></p>
-<p class="p3">write an Integer as one byte.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>putInt16</b></p>
-<p class="p2"><br></p>
-<p class="p3">write an Integer as two bytes.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>putInt32</b></p>
-<p class="p2"><br></p>
-<p class="p3">write an Integer as four bytes.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>putFloat</b></p>
-<p class="p2"><br></p>
-<p class="p3">write a Float as four bytes.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>putDouble</b></p>
-<p class="p2"><br></p>
-<p class="p3">write a Float as eight bytes.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>putString</b></p>
-<p class="p2"><br></p>
-<p class="p3">write a null terminated String.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>readAllString</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads the entire file as a String.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>readAllInt8</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads the entire file as an Int8Array.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>readAllInt16</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads the entire file as an Int16Array.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>readAllInt32</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads the entire file as an Int32Array.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>readAllFloat</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads the entire file as an FloatArray.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>readAllDouble</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads the entire file as an DoubleArray.</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/CocoaMenuItem.html b/Help/GUI/Cocoa-GUI/CocoaMenuItem.html
deleted file mode 100644
index 215daf1..0000000
--- a/Help/GUI/Cocoa-GUI/CocoaMenuItem.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0016bd}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001dfd}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #606060}
-span.s6 {color: #0016bd}
-span.s7 {color: #ae1a19}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>CocoaMenuItem<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>abstract superclass of OSX Menu Items</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">CocoaMenuItem represents a menu item or sub menu in the application menu. This is an abstract class. Generally you will deal with the subclasses SCMenuItem, SCMenuGroup, and SCMenuSeparator, but the convenience method <b>*add</b> (see below) allows one to easily add items to a default 'Library' menu.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SCMenuItem.html"><span class="s4">SCMenuItem</span></a>, <a href="SCMenuGroup.html"><span class="s4">SCMenuGroup</span></a>, <a href="SCMenuSeparator.html"><span class="s4">SCMenuSeparator</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*clearCustomItems</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Clear all custom menu items.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>*default</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the 'Library' menu, creating it if necessary.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*add (names, action)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Add an item to the Library menu. The Library menu will be created automatically if needed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>names </b>- An Array of Strings indicating the menu path to this item.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- A Function that will be evaluated when this item is selected.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p10"><b>Instance Methods</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>action_(actionFunc)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>action</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Get or set this item's action. This is a <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> that will be evaluated when this item is selected.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>state_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>state</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Get or set this item's state. If <b>bool</b> is true a check mark is displayed next to the item.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>remove</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove the receiver and its children (if any).</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>enabled_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Enable or disable this menu item.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether this item should be enabled or disabled.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setShortCut (string, alt, ctrl)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the keyboard shortcut for this item. The Cmd key is assumed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>string </b>- A <a href="../../Collections/String.html"><span class="s2">String</span></a> indicating the character for this shortcut.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alt </b>- A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether the alt key is included in this shortcut. Default value is false.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ctrl </b>- A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether the ctrl key is included in this shortcut. Default value is false.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Evaluate the receiver's action function.</p>
-<p class="p8"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p11">// Simple example</p>
-<p class="p12"><span class="s3">g = </span>SCMenuGroup<span class="s3">(</span>nil<span class="s3">, </span><span class="s5">"stuff"</span><span class="s3">, 10);</span></p>
-<p class="p13">i = <span class="s6">SCMenuItem</span>(g, <span class="s5">"foo"</span>);</p>
-<p class="p13">j = <span class="s6">SCMenuItem</span>(g, <span class="s5">"bar"</span>);</p>
-<p class="p13">j.action = {<span class="s5">"bar!!"</span>.postln};</p>
-<p class="p11"><span class="s3">k = </span><span class="s6">SCMenuSeparator</span><span class="s3">(g, 1); </span>// add a separator</p>
-<p class="p13">i.enabled = <span class="s6">false</span>;</p>
-<p class="p13">j.state = <span class="s6">true</span>;</p>
-<p class="p13">j.setShortCut(<span class="s5">"$"</span>, <span class="s6">true</span>, <span class="s6">true</span>); <span class="s7">// Cmd-ctrl-alt-$</span></p>
-<p class="p2"><br></p>
-<p class="p11">// using *add<span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s6">CocoaMenuItem</span><span class="s3">.add([</span>"hallo"<span class="s3">, </span>"world"<span class="s3">], { </span>"hallo menu"<span class="s3">.postln });</span></p>
-<p class="p14"><span class="s6">CocoaMenuItem</span><span class="s3">.add([</span>"hallo"<span class="s3">, </span>"world"<span class="s3">, </span>"here"<span class="s3">], { </span>"hallo here"<span class="s3">.postln }); </span><span class="s7">// fails correctly</span></p>
-<p class="p14"><span class="s6">CocoaMenuItem</span><span class="s3">.add([</span>"mellow"<span class="s3">, </span>"world"<span class="s3">, </span>"here"<span class="s3">], { </span>"mellow here"<span class="s3">.postln }); </span><span class="s7">// works.</span></p>
-<p class="p13"><span class="s6">CocoaMenuItem</span>.add([<span class="s5">"hallo"</span>, <span class="s5">"thought"</span>], { <span class="s5">"hallo world"</span>.scramble.postln });</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s6">CocoaMenuItem</span>.clearCustomItems;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/Document.html b/Help/GUI/Cocoa-GUI/Document.html
deleted file mode 100644
index 6f559a2..0000000
--- a/Help/GUI/Cocoa-GUI/Document.html
+++ /dev/null
@@ -1,796 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #001bb9; min-height: 14.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #2c7014}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #001bb9}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p20 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; color: #001bb9; min-height: 14.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 11.0px Monaco}
-p.p22 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Monaco}
-p.p23 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco}
-p.p24 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p25 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p26 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #606060}
-span.s6 {font: 9.0px Monaco}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {color: #2c7014}
-span.s10 {color: #ad140d}
-span.s11 {font: 14.0px Helvetica}
-span.s12 {font: 14.0px Impact}
-span.s13 {font: 14.0px Monaco}
-span.s14 {font: 12.0px Lucida Grande; color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Document<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract class for editor-specific text document editing classes</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">The Document class represents a text document within the context of your text editing environment. You can use the class to programmatically create, modify, and query these documents. While it is an abstract class, you still use it to create a <b>new</b> Document. It simply passes on <b>new</b> to the appropriate document implementation, e.g. CocoaDocument.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../../OSX/CocoaDocument.html"><span class="s4">CocoaDocument</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding Document</b></p>
-<p class="p2"><br></p>
-<p class="p1">Different text-editing environments can be used with SuperCollider. Therefore Document is an abstract class, meaning it doesn't provide all the functionality itself, but relies on subclasses to complete the functionality. Calls to Document.<b>new</b> or Document.<b>open</b> are actually passed down to the relevant class for the editor you're using, such as CocoaDocument (for most Mac users) or ScelDocument (containing an EmacsDocument).</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Setting the Environment</b></p>
-<p class="p6"><br></p>
-<p class="p1">By defualt <b>envir</b> it is set to the current <a href="../../Collections/Environment.html"><span class="s2">Environment</span></a>. However, you can make it use its own Environment also. Thus, e.g., if you were to set the Environment variable ~myVar=12 in the current Environment, you can create a new Document window in which that Environment variable is not set.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (title, string, makeListener, envir)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>title </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a> or <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>. Default value is "Untitled".</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>string </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a> . Default value is "". The contents of the document.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeListener </b>- Makes this document the lisenter, i.e. the place where SC-lang posts messages. Default value is false. .</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>envir </b>- An instance of <a href="../../Collections/Environment.html"><span class="s2">Environment</span></a>. The Environment to be used by the interpreter of the document window. By defualt, it is set to the current Environment.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.new(</span>"this is the title"<span class="s3">, </span>"this is the text"<span class="s3">);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*open (path, selectionStart, selectionLength, envir)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Open a document from a path.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path </b>- The file system path to the document. An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>selectionStart </b>-The beginning of the cursor seleciton of the file content. Default value is 0.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>selectionLength </b>- The length of the cursor seleciton of the file content. Default value is 0.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>envir </b>- An instance of <a href="../../Collections/Environment.html"><span class="s2">Environment</span></a>. The Environment to be used by the interpreter of the document window. By defualt, it is set to the current Environment.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.open(</span><span class="s5">"README"</span><span class="s3">, 292,253); </span>// notice the selected text in the open document</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*openDocuments</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an Array of all open documents.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d=<span class="s2">Document</span>.openDocuments.do{<span class="s2">|doc|</span> doc.name.postln};</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*hasEditedDocuments</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns <b>true</b> if there are edited Documents.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*closeAll (leavePostWindowOpen)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>CAUTION </b>Closes all open Documents, whether edited or not.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>leavePostWindowOpen </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default is <b>true</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*closeAllUnedited (leavePostWindowOpen)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Closes all unedtited Documents.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>leavePostWindowOpen </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default is <b>true</b>.</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*current</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*current_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the current Document.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.current.name.postln; </span>// Prints "Document.html"</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*listener</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the current Document which is the listener, i.e. the Document where interpreter messages are posted.</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*storePostWin (path)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Stores the conteng of Document.listener.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path </b>- The file system path. An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*allDocuments</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Returns all documents</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default value is defaultValue.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*globalKeyDownAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*globalKeyDownAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Get/set A global action to be performed when a key is pressed.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>.</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*globalKeyUpAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*globalKeyUpAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Get/set A global action to be performed when a key is released.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*initAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*initAction_(arg1)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Get/set A an action to be performed up openning or creating a Document.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*autoRun</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*autoRun_</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. If a document begins with the String, "/*RUN*/", then the code following it int he file will be exectued on opening the file, if <b>autorun</b> is set to true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default value is true.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*wikiBrowse</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*wikiBrowse_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. If set to true, underlining text will create a wiki link.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default value is true.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*implementationClass</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*implementationClass_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. The editor implementation specific class which will handle Documents.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - A class for implementing Document, e.g. <a href="../../OSX/CocoaDocument.html"><span class="s2">CocoaDocument</span></a></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span><b>*setTheme(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the theme for syntax colorization. The Document class has a preset theme called 'default',</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>which is set as follows (default SC colors):</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>themes = (</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default: (</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>classColor: <span class="s2">Color</span>(0, 0, 0.75, 1),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>textColor: <span class="s2">Color</span>(0, 0, 0, 1),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor: <span class="s2">Color</span>(0.375, 0.375, 0.375, 1),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>commentColor: <span class="s2">Color</span>(0.75, 0, 0, 1),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>symbolColor: <span class="s2">Color</span>(0, 0.45, 0, 1),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numberColor: <span class="s2">Color</span>(0, 0, 0, 1)</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>If you want to have your own themes for syntax colorization, you need to put your color set into</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Document.themes first (preferably in startup.rtf file) and call setTheme by giving it the name of</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the theme you've added to "themes" earlier:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//putting a custom color theme into Document.themes</p>
-<p class="p14"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span>.themes.put</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</span>\myTheme<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>classColor: <span class="s2">Color</span>.new255(53, 74, 187),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>textColor: <span class="s2">Color</span>.new255(0, 0, 0),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor: <span class="s2">Color</span>.new255(96, 129, 158),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>commentColor: <span class="s2">Color</span>.new255(206, 27, 28),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>symbolColor: <span class="s2">Color</span>.new255(57, 154, 20),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numberColor: <span class="s2">Color</span>.new255(157, 80, 65)</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//and then calling setTheme with the name:</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.setTheme(<span class="s9">'myTheme'</span>);</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//to see the current theme:</p>
-<p class="p17"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Document<span class="s3">.theme;</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>You can switch to the default theme anytime by calling:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span>.setTheme(<span class="s9">'default'</span>);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Next time you invoke syntaxColorize, the color theme set by setTheme will be used for syntax</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>colorization. If you want to change the background color for the document window and selected</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>text, in order to make them fit with your syntax colorization theme, see the help for the "background" and "selectedBackground" methods for Document.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - A Symbol, defining the name of the theme that you've put into Document.themes.</p>
-<p class="p7"><br></p>
-<p class="p5"><b>Path Utilites</b></p>
-<p class="p8"><span class="s11"><span class="Apple-tab-span">	</span></span>Utilities and settings for dealing with documents such as super collider code files. By default the document directory is SuperCollider's application directory.</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*dir</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*dir_ (path)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the default document directory. The default is dependent on Document.implementationClass.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path </b>- The file system path to the directory. An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>In Main-startUp you can set this to a more practical directory:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.dir = </span>"~/Documents/SuperCollider"<span class="s3">;</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*wikiDir</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*wikiDir_ (path)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the default wiki directory. The default is dependent on Document.implementationClass.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path </b>- The file system path to the directory. An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*standardizePath (p)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>If it is a relative path, expand it to an absolute path relative to your document directory.<span class="Apple-tab-span">	</span>Expand tildes in path (your home directory), resolve symbolic links (but not aliases). Also converts from OS9 macintosh path format. See <a href="../../Files/PathName.html"><span class="s2">PathName</span></a><b> </b>for more complex needs.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path </b>- The file system path to the directory. An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.standardizePath(</span><span class="s5">"~/"</span><span class="s3">);</span>//This will print your home directory<span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.standardizePath(</span>":Patches:newfoots:fastRuckAndTuck"<span class="s3">)</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Returns: /Volumes/Macintosh HD/Users/cruxxial/Documents/SC3docs/Patches/newfoots/fastRuckAndTuck</p>
-<p class="p13"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.standardizePath(</span>"~/Documents/SC3docs/Patches/newfoots/fastRuckAndTuck"<span class="s3">)</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Returns: Patches/newfoots/fastRuckAndTuck</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.standardizePath(</span>"Patches/newfoots/fastRuckAndTuck"<span class="s3">)</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Returns: Patches/newfoots/fastRuckAndTuck</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*abrevPath (path)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a path relative to Document.dir, if the path is inside Document.dir.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path </b>- The file system path to the directory. An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>General Document Properties</b></p>
-<p class="p6"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>bounds</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>bounds_ (argBounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the bounds of the document.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argBounds </b>- an instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>path</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>path_ (apath)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the the Document's <b>path</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>apath </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>. A files system path.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.path.postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>dir</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the directory of a Document.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.dir.postln;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>== (doc)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A binary operator.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>doc </b>- An instance of Document.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.current == </span><span class="s2">Document</span><span class="s3">.listener; </span>//presumaably returns false</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>editable</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>editable_(abool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the the document is editable.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>name</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>name_ (aname)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>title</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>title_ (argName)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the title.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aname/argName </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.name.postln</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s12"><span class="Apple-tab-span">	</span></span><b>background</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>background_ (color)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the the Document's background color.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = </span><span class="s2">Document</span><span class="s3">(</span>"background"<span class="s3">, </span>"'hardly see anything"<span class="s3">);</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.background_(</span><span class="s2">Color</span><span class="s3">.blue(alpha:0.8)); </span>// notice that alpha controlls th window transparency</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span><b>postColor</b></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span><b>postColor_ (color)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the listeners pen color.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.postColor; </span>//returns current post color</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.postColor_(<span class="s2">Color</span>.red);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.postColor_(<span class="s2">Color</span>.green);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.postColor_(<span class="s2">Color</span>.blue);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.postColor_(<span class="s2">Color</span>.black);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s2">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.postColor_(<span class="s2">Color</span>.rand);</p>
-<p class="p19"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"There is no blue without yellow and without orange."<span class="s3">.postln;</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.rand.yield;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.postColor_(<span class="s2">Color</span>.black);</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r.play;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r.stop;</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>alwaysOnTop</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>alwaysOnTop_ (boolean)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set whether a document is always on top.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>boolean </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>promptToSave</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>promptToSave_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set whether a document is prompts to save if it has been changed. Use this with caution.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>closed</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns <b>true</b> if the document has been closed</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>isEdited</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns true if the document has been edited.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.isEdited.postln;</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>isFront</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns true if the document is in front.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>isListener</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns if the document is the <b>listener</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>didBecomeKey</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Saves the current Environment, makes the document current, and performs its <b>toFrontAction</b>.</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>didResignKey</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Performs the Document's <b>endFrontAction</b> and restores the current Environment.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>Controlling Document</b></p>
-<p class="p6"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>close</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Close a document.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Task</span>({</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> doc;</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc = </span><span class="s2">Document</span><span class="s3">(</span>"background"<span class="s3">, </span>"closing in 2 seconds"<span class="s3">);</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.stringColor_(<span class="s2">Color</span>.blue);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.background_(<span class="s2">Color</span>.blue(alpha:0.8));</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.close;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(<span class="s2">AppClock</span>);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">)</span></p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>front</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Bring a document to the front.</p>
-<p class="p7"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.listener.front</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>unfocusedFront</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Bring a document to the forn without focusing it.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span>.listener.unfocusedFront</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>onClose</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>onClose_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the action to be performed on closing the document.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a><span class="s2"> </span>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>endFrontAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>endFrontAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the action to be performed when the document becomes no longer the front document.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a><span class="s2"> .</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>toFrontAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>toFrontAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the action to be performed when the document become the front document.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a><span class="s2"> .</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>mouseDownAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>mouseDownAction_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>mouseUpAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>mouseUpAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the action to be performed on mouseDown or mouseUp.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Note:</b> The Mac OSX built-in editor supports only mouseUpAction. A mouseDownAction that you supply will be ignored.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a><span class="s2"> </span>The arguments passed to the function are.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>x, y, modifiers, buttonNumber, clickCount, clickPos</b></p>
-<p class="p7"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//add a mouse action to this document:</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//example: easy button:</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//when you click in front of a 17 a SinOsc will start up;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.waitForBoot({<span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.mouseUpAction_({<span class="s2">arg</span> doc;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> char;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>char = doc.rangeText(doc.selectionStart, 2);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(char == <span class="s5">"17"</span>,{</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc, doneAction:2) * <span class="s2">SinOsc</span>.ar([600,720,300].choose, 0, 0.5)}.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(char == <span class="s5">"23"</span>,{</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc, doneAction:2) * <span class="s2">PinkNoise</span>.ar(0.2)}.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p21"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>test here and click in front of the number:</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s13">17</span></p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>23</p>
-<p class="p14"><span class="s13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span>.current.mouseUpAction=<span class="s2">nil</span>; <span class="s10">//clear mouseUpActiont</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>keyDownAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>keyDownAction_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>keyUpAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>keyUpAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get / set the action to be performed on keyDown or keyUp.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a><span class="s2"> </span>The arguments passed to the function are<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>char, modifiers, unicode,keycode</b></p>
-<p class="p10"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.keyDownAction={<span class="s2">arg</span> ...args; args.postln};</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now type some text</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.keyDownAction=<span class="s2">nil</span>;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>makeWikiPage (wikiWord, extension, directory)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a wiki page .</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>wikiWord </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>. The name of the document.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>extension </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>. The file extension. Default value is ".rtf".</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>directory </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>. The directory in which to save the page.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.makeWikiPage(<span class="s5">"test1"</span>);</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>openWikiPage</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Opens/creates a wiki page out of the currently selected text.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>Editing Content</b></p>
-<p class="p6"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectLine (line)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Select a line of the document by number.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>line </b>- An <a href="../../Math/Integer.html"><span class="s2">Integer</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span>.current.selectLine(390);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectRange (start, length)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Select a text range in the string of the document</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>start </b>-The start index.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length </b>- The length of the seleciton.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.selectRange(<span class="s2">Document</span>.current.selectedRangeLocation+3,</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>150);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span><b>balanceParens (level)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Starting from the current selection, increase the selection<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>until matching parentheses are selected.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>level </b>- do this as many times to find ever wider brackets. Set to <b>inf</b> for outmost.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>((((</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.balanceParens(<span class="s2">1</span>);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.balanceParens(<span class="s2">3</span>);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.balanceParens(<span class="s2">inf</span>);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>))))</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectionStart</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the start of a current selection.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.selectionStart.postln;</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectionSize</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the size of a current selection.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> doc;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc = <span class="s2">Document</span>.current;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.selectRange(doc.selectionStart-40, 10);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.selectionSize.postln;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="s8"><span class="Apple-tab-span">	</span></span></p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectedString_ (txt)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectedString</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the selected string.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>txt </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> doc;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc = <span class="s2">Document</span>.current;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.selectRange(doc.selectionStart-40, 10);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.selectedString.postln;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="s8"><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>currentLine</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the current line as a <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> doc;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc = <span class="s2">Document</span>.current;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.selectRange(doc.selectionStart-40, 10);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.currentLine.postln;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span><b>getSelectedLines(rangestart, rangesize)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns all full lines from before rangestart to after rangestart + rangesize as a <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> doc;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc = <span class="s2">Document</span>.current;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.selectRange(doc.selectionStart-40, 10);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.getSelectedLines(doc.selectionStart-40, 130).postln;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>string (rangestart, rangesize)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>string_ (string, rangestart, rangesize)</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the string within a certain range.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>string </b>- Explanation of string. Default value is nil. Other information.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangestart </b>- An integer. Default value is nil.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangesize </b>- An integer. Default value is 1.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Select the following code in parentheses and execute it</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Document</span><span class="s3">.current.string_(</span>": test test test test test "<span class="s3">,</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.selectedRangeLocation+12,</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>18);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Watch me change content</p>
-<p class="p13"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>font_ (font, rangestart, rangesize)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the font within a certain range.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangestart </b>- An integer. Default value is -1. If rangestart = -1, the whole document is selected.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangesize </b>- An integer. Default value is 0.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Select the following code in parentheses and execute it</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.font_(<span class="s2">Font</span>(<span class="s5">"Impact"</span>,14),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.selectedRangeLocation+12,</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>18);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Watch me change font</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>stringColor</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets the last color set with stringColor_.</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>stringColor_ (color, rangeStart, rangeSize)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the string color of a specific range of already printed text. Default is the whole document.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>To set the listener text color for posting, see: <b>postColor</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of Color.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangeStart </b>- An <a href="../../Math/Integer.html"><span class="s2">Integer</span></a>. Default is -1.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangeSize </b>- An <a href="../../Math/Integer.html"><span class="s2">Integer</span></a>. Default value is 0</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Select the following code in parentheses and execute it</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.stringColor_(<span class="s2">Color</span>.rand(0.2,0.8),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.selectedRangeLocation+13,</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>16);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// </span><b>Watch me change color</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectedBackground</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets the document's background color for selected text.</p>
-<p class="p13"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectedBackground_ (color)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the document's background color for selected text.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Applies to the whole document instance.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of Color.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Document</span>.current.selectedBackground; <span class="s10">//returns default color</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p19"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s2">Document</span><span class="s3">.new(</span>"Test"<span class="s3">, </span>"Here is a selected text..."<span class="s3">);</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.selectedBackground_(<span class="s2">Color</span>.new255(120, 180, 110));</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.selectRange(10, 13);</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>syntaxColorize</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Syntax colorize a document.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>underlineSelection</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Underlines the current selection of a Document.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p24"><b>Auto-Completion</b></p>
-<p class="p8"><span class="s11"><span class="Apple-tab-span">	</span></span>OSX version only, currently. See <a href="DocumentAutoCompletion.html"><span class="s14">DocumentAutoCompletion</span></a></p>
-<p class="p6"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*allowAutoComp</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*autoCompAll</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*autoComplete</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*autoCompleteKeyAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*openFileAutoComplete (path)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*openAutoComplete</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>autoComplete</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p24"><b>Subclassing and Internal Methods</b></p>
-<p class="p8"><span class="s11"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*startup</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*numberOfOpen</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>mouseUp (x, y, modifiers, buttonNumber, clickCount, clickPos)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>keyDown (character, modifiers, unicode, keycode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>keyUp (character, modifiers, unicode, keycode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>getIdentifierCoordFromEnd (endPos)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>dataptr</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span>Private. Used only internally:</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*newFromIndex (idx)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*prnumberOfOpen</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*prGetLast</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*prGetIndexOfListener</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*prBasicNew</b></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span><b>prAdd</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prGetLastIndex</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>setFont (font, rangeStart, rangeSize)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>setTextColor (color, rangeStart, rangeSize)<span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>propen (path, selectionStart, selectionLength)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>rangeText (rangestart, rangesize)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>insertTextRange (string, rangestart, rangesize)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prinitByString (title, str, makeListener)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prSetBackgroundColor (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prGetBackgroundColor (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prSelectLine (line)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prIsEditable_ (editable)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prSetTitle (argName)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prGetTitle</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prGetFileName</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prSetFileName (apath)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prGetBounds (argBounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prSetBounds (argBounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prclose</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prinsertText (dataPtr, txt)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>prinitByIndex (idx)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>envir</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>envir_ (ev)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>text</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>removeUndo<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectedText</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectUnderlinedText (clickPos)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>linkAtClickPos (clickPos)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectedRangeLocation</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>selectedRangeSize</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>restoreCurrentEnvironment</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>saveCurrentEnvironment</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>initByIndex (idx)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>initLast</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>initFromPath (path, selectionStart, selectionLength)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>initByString (argTitle, str, makeListener)</b></p>
-<p class="p13"><br></p>
-<p class="p24"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p25">//unfocusedFront_</p>
-<p class="p18">(</p>
-<p class="p18"><span class="s2">Document</span>.allDocuments.at(0).unfocusedFront</p>
-<p class="p18">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p18">(</p>
-<p class="p3"><br></p>
-<p class="p18"><span class="s2">var</span> doc;</p>
-<p class="p18">doc = <span class="s2">Document</span>(<span class="s5">""</span>, <span class="s5">"||"</span>);</p>
-<p class="p18">doc.background_(<span class="s2">Color</span>.blue(alpha: 1.0.rand));</p>
-<p class="p26">Task<span class="s3">({</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>1000.do({</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.setFont(rangeSize: [7,8,9,24].choose);</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.08.wait;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>})</p>
-<p class="p18">}).play(<span class="s2">AppClock</span>);</p>
-<p class="p26">Task<span class="s3">({</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>100.do({</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.01.wait;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.stringColor_([<span class="s2">Color</span>.red(alpha: 1.0.rand), <span class="s2">Color</span>.green(alpha: 1.0.rand)].choose);</p>
-<p class="p18"><span class="Apple-tab-span">	</span>})</p>
-<p class="p18">}).play(<span class="s2">AppClock</span>);</p>
-<p class="p26">Task<span class="s3">({</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>100.do({</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.01.wait;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.selectedString_([<span class="s5">"\"\n#"</span>,<span class="s5">"||"</span>,<span class="s5">"-"</span>, <span class="s5">"--"</span>].choose);</p>
-<p class="p18"><span class="Apple-tab-span">	</span>})</p>
-<p class="p18">}).play(<span class="s2">AppClock</span>);</p>
-<p class="p26">Task<span class="s3">({</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s2">var</span> co, mul;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>co = 0.1;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>mul = 1.02;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>100.do({</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.16.wait;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>co = co * mul;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(co > 0.99, { co = 0.1 });</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doc.background_(<span class="s2">Color</span>.blue(alpha: co));</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p18"><span class="Apple-tab-span">	</span>doc.close;</p>
-<p class="p18">}).play(<span class="s2">AppClock</span>)</p>
-<p class="p3"><br></p>
-<p class="p18">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p25">// a simple implementation of TBT (time based text)</p>
-<p class="p25">// http://tbt.dyne.org/?info=download</p>
-<p class="p3"><br></p>
-<p class="p25">// record: type some text</p>
-<p class="p18">(</p>
-<p class="p18"><span class="s2">var</span> time = <span class="s2">Main</span>.elapsedTime;</p>
-<p class="p18">a = <span class="s2">List</span>.new;</p>
-<p class="p26"><span class="s3">r = </span>Routine<span class="s3"> { </span>|char|</p>
-<p class="p18">loop {</p>
-<p class="p18">a = a.add([char, <span class="s2">Main</span>.elapsedTime - time]);</p>
-<p class="p18">char = 0.yield;</p>
-<p class="p18">}</p>
-<p class="p18">};</p>
-<p class="p3"><br></p>
-<p class="p19"><span class="s2">Document</span><span class="s3">.new(</span>"type some text"<span class="s3">)</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>.bounds_(<span class="s2">Rect</span>(100,<span class="s2">SCWindow</span>.screenBounds.height-250,400,200))</p>
-<p class="p18"><span class="Apple-tab-span">	</span>.keyDownAction = { <span class="s2">|doc, key|</span> r.value(key) ; time=<span class="s2">Main</span>.elapsedTime};</p>
-<p class="p18">)</p>
-<p class="p3"><br></p>
-<p class="p25">// play back text in time</p>
-<p class="p18">(</p>
-<p class="p19"><span class="s3">d=</span><span class="s2">Document</span><span class="s3">.new(</span>"type some text"<span class="s3">)</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>.bounds_(<span class="s2">Rect</span>(550,<span class="s2">SCWindow</span>.screenBounds.height-250,400,200));</p>
-<p class="p18">fork({</p>
-<p class="p18">a.do { <span class="s2">|pair|</span></p>
-<p class="p18">d.string = d.string ++ pair[0];</p>
-<p class="p18">pair[1].wait;</p>
-<p class="p18">}</p>
-<p class="p26"><span class="s3">}, </span>AppClock<span class="s3">)</span></p>
-<p class="p18">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/DocumentAutoCompletion.html b/Help/GUI/Cocoa-GUI/DocumentAutoCompletion.html
deleted file mode 100644
index 4452e8f..0000000
--- a/Help/GUI/Cocoa-GUI/DocumentAutoCompletion.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 23.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #153adf}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SuperCollider autocompletion</b></p>
-<p class="p2"><br></p>
-<p class="p3">The autocompletion feature described in this document is available in the OSX version only. It uses the keyDownAction feature of <a href="../../OSX/CocoaDocument.html"><span class="s1">CocoaDocument</span></a> to intercept keystrokes and open the autocompletion interface when specific characters are typed. That feature is not available in all platforms.</p>
-<p class="p2"><br></p>
-<p class="p3">The SCEL interface in Linux has its own autocompletion function, accessed by typing <ESC> <TAB>.</p>
-<p class="p2"><br></p>
-<p class="p3">Autocompletion is not available in the Windows version as of this writing.</p>
-<p class="p2"><br></p>
-<p class="p3">Another way to get information about classes and methods is the class browser, accessed by calling ".browse" on a class, e.g. <b>Object.browse</b>. The browser is available in the OSX version, as well as any platform where SwingOSC (http://www.sciss.de/swingOSC) is installed.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Usage:</b></p>
-<p class="p2"><br></p>
-<p class="p3">To open a text window with the auto-complete feature enabled, execute the following in SuperCollider:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Document</span>.autoComplete</p>
-<p class="p2"><br></p>
-<p class="p3">(ac is a shortcut for Auto-complete, to make it easier to type.)</p>
-<p class="p2"><br></p>
-<p class="p3">To open a file by pathname:</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s2">Document</span>.openFileAutoComplete(<span class="s3">"myPath.rtf"</span>);</p>
-<p class="p7"><span class="s2">Document</span><span class="s4">.openFileAutoComplete(</span><span class="s3">"*.sc"</span><span class="s4">);<span class="Apple-tab-span">	</span></span>// wildcards are supported</p>
-<p class="p6"><br></p>
-<p class="p3">To bring up an open-file dialog:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Document</span>.openAutoComplete</p>
-<p class="p2"><br></p>
-<p class="p3">Autocompletion will be integrated more tightly into the code editor.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Summary:</b></p>
-<p class="p2"><br></p>
-<p class="p3">While editing code in an auto-complete code window, the following keystrokes initiate special actions:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>(</b> -- attempt to match the preceding identifier to method names containing that string, and display a list of methods with their defining classes. Making a selection will insert a method template into your document.</p>
-<p class="p2"><br></p>
-<p class="p3">( will also match classnames, with the .new method: Rect( will show you a method template for Rect-*new.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>.</b> -- attempt to match the preceding identifier to an exact class name, and present a list of class methods (not instance methods). Your selection will insert a method template into the document.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ctrl-.</b> -- attempt to match the preceding identifier to class names containing the identifier, and present a list of those class names. Your selection will open a class browser. You can navigate through the class tree to find the method you want, and press enter in the method list to insert a method template.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Shortcut in the class browser:</b> type ^ in the method list to go to the superclass. This allows speedier location of methods inherited from superclasses.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Special behavior for ctrl-.</b> -- when you choose a method in a class browser, its class will be compared to the class you chose in the opening list. If the initial class responds to the method, the initial class will be put into the document; otherwise, the class from the class browser.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Feature description:</b></p>
-<p class="p2"><br></p>
-<p class="p3">When you type a dot, SuperCollider will to check the previous text to see if it refers to a valid class. If so, a window will be presented with all the class methods (not instance methods) of the class.</p>
-<p class="p2"><br></p>
-<p class="p3">So, for example, if you type:</p>
-<p class="p2"><br></p>
-<p class="p8">SinOsc<span class="s4">.</span></p>
-<p class="p2"><br></p>
-<p class="p3">the window will display the options:</p>
-<p class="p2"><br></p>
-<p class="p3">ar(freq, phase, mul, add)</p>
-<p class="p3">buildSynthDef()</p>
-<p class="p3">buildSynthDef_()</p>
-<p class="p3">....</p>
-<p class="p2"><br></p>
-<p class="p3">If you type the first few letters into the text box, the list will reduce itself to the matching entries. If you type 'a', then the list will contain only:</p>
-<p class="p2"><br></p>
-<p class="p3">ar(freq, phase, mul, add)</p>
-<p class="p2"><br></p>
-<p class="p3">Press enter or return, and the method name with all its arguments will be added to your document, leaving the text:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">SinOsc</span>.ar(freq, phase, mul, add)</p>
-<p class="p2"><br></p>
-<p class="p3">You can also click on the item you want in the list (or move through the list with the up and down arrow keys), and then press return.</p>
-<p class="p2"><br></p>
-<p class="p3">Pressing escape or closing the window will cancel the auto-complete. Text typed into the text box prior to canceling will be added to the document--so, if you keep typing while the box comes up and you want to ignore it, your text will not be lost.</p>
-<p class="p2"><br></p>
-<p class="p3">Similar behavior for method names: when you type an open parenthesis '(', SuperCollider will display a list of all classes that define this method. Type the first few letters of the class name (don't forget to capitalize) to choose the right one.</p>
-<p class="p2"><br></p>
-<p class="p3">This treatment is necessary because variables in SuperCollider are not typed. If you enter 'func.value(', the text editor has no way to know what kind of object will be contained in func at the time of execution. So, it presents you with all possible options and allows you to choose.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>New: </b>The autocompleter now supports partial string matching for methods (triggered by typing open-paren) and classes (not by typing dot, but by typing ctrl-dot). In the case of classes, you will be given a list of classes matching the string typed. After you choose from the list, a full class browser will be opened. When you select a method and press enter, a method template will be dropped into the current document.</p>
-<p class="p2"><br></p>
-<p class="p3">Because the class browser does not show methods defined by superclasses, you may press ^ to go to the superclass.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Further configuration:</b></p>
-<p class="p2"><br></p>
-<p class="p3">Use the startup file (see <a href="../../Extending and Customizing SC/Using-the-Startup-File.html"><span class="s5">Using-the-Startup-File</span></a>) to define class names and method names to be excluded from the browsers. I like to exclude the most common flow of control mechanisms (while, do, if, etc.).</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2">AutoCompMethodBrowser</span><span class="s4">.exclude([</span>\if<span class="s4">, </span>\do<span class="s4">, </span>\while<span class="s4">, </span>\loop<span class="s4">, </span>\collect<span class="s4">, </span>\select<span class="s4">, </span>\reject<span class="s4">, </span>\detect<span class="s4">, </span>\add<span class="s4">, </span>\put<span class="s4">, </span>\at<span class="s4">]);</span></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s2">AutoCompClassBrowser</span>.exclude([... list of classes ...]);</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Quirks and caveats:</b></p>
-<p class="p2"><br></p>
-<p class="p3">The auto complete features will be lost from all documents when recompiling the class library.</p>
-<p class="p2"><br></p>
-<p class="p3">The method browser does not handle inheritance. If you're browsing a method like 'add', you won't find Array in the list (but you will find its superclass ArrayedCollection).</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SC2DSlider.html b/Help/GUI/Cocoa-GUI/SC2DSlider.html
deleted file mode 100644
index f1bc672..0000000
--- a/Help/GUI/Cocoa-GUI/SC2DSlider.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0016bd}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #2b7000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0016bd}
-span.s5 {color: #606060}
-span.s6 {color: #2b7000}
-span.s7 {font: 14.0px Helvetica}
-span.s8 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SC2DSlider<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a two-dimensional GUI slider</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCControlView.html"><b>SCControlView</b></a><b> : </b><a href="SCSliderBase.html"><b>SCSliderBase</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><b>See also:</b> <a href="SC2DTabletSlider.html"><span class="s3">SC2DTabletSlider</span></a></span><span class="s4"> , <a href="SCTabletView.html"><span class="s3">SCTabletView</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SC2DSlider</b></p>
-<p class="p2"><br></p>
-<p class="p1">SC2DSlider values always have ranges between zero and one. You must scale the output and input values to your needs. Using <b>map</b> and <b>unmap,</b> combined with a <a href="../../Control/Spec.html"><span class="s4">Spec</span></a>, is helpful for this. To set the increment or decrement value of the slider, set the <b>step</b> .<span class="Apple-converted-space">  </span>By default, the shift, ctrl, and alt keys will modify the stepping by 100x, 10x, or 0.1x repectively, though you can customize this by setting <b>shift_scale, ctrl_scale, </b>or<b> alt_scale<span class="Apple-converted-space">  </span></b>(see <a href="SCSliderBase.html"><span class="s4">SCSliderBase</span></a>) . Drag and drop returns and accept a <a href="../../Geometry/Point.html"><span class="s4">Point</span></a>. Inherits some formatting form <a href="SCSliderBase.html"><span class="s4">SCSliderBase</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s4">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s4">Point</span></a> indicating width at height.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s4">Window</span>(<span class="s5">"2DSlider"</span>, <span class="s4">Rect</span>(100,100, 140 ,140)).front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>t = <span class="s4">Slider2D</span>(w, <span class="s4">Rect</span>(20, 20,80, 80))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s4">|sl|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s6">\sliderX</span>, sl.x, <span class="s6">\sliderY</span>, sl.y].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p12"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>x</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>x_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The horizontal value of the 2d slider. Gets/sets the property, \x, by calling get/setProperty(\x, <b>val</b>). This will not do the <b>action</b> of the slider.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>activex_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the property, \x, by calling setPropertyWithAction(\x, <b>val</b>). Does the sliders <b>action</b>, if the <b>x</b> value has changed.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>y</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>y_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The vertical value of the 2d slider. Gets/sets the property, \y, by calling get/setProperty(\y, <b>val</b>). This will not do the <b>action</b> of the slider.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>activey_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the property, \y, by calling setPropertyWithAction(\y, <b>val</b>). Does the sliders <b>action</b>, if the <b>y </b>value has changed.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setXY (x, y)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A convenience method which performs both the <b>x_</b> and <b>y_</b> setters. This will not do the <b>action</b> of the slider.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setXYActive (x, y)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A convenience method which performs both the <b>x_</b> and <b>y_</b> setters. Does the action of the slider.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>incrementY</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Increments <b>y</b> by 1/bounds.height, unless the hight value is out of bounds. Does the action of the slider.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>decrementY</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Decrements <b>y</b> by 1/bounds.heitght, unless the hight value is out of bounds. Does the action of the slider.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>incrementX</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Increments <b>x</b> by 1/bounds.width, unless the hight value is out of bounds. Does the action of the slider.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>decrementX</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Decrements <b>x</b> by 1/bounds.width, unless the hight value is out of bounds. Does the action of the slider.</p>
-<p class="p6"><br></p>
-<p class="p12"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>r<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>activex_(1.rand), activey_(1.rand) with action </b><span class="Apple-tab-span">	</span>random</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>activex_(0), activey_(0) with action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>left lower corner<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>activex_(1), activey_(1) with action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>top left corner</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>activex_(0.5), activey_(0.5) with action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>centered</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span><b>incrementY</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span><b>incrementX</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span><b>decrementY</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span><b>decrement</b>X<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>left arrow</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag. Returns a <a href="../../Geometry/Point.html"><span class="s4">Point</span></a> (<b>lo</b>@<b>hi).</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to place a drag in this object. By default, SCSlider will respond only to drags where the drag contains a <a href="../../Geometry/Point.html"><span class="s4">Point</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8"><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been recieved. The default action performed when receiving a drag. Sets <b>x</b> and <b>y</b> respectively using the <a href="../../Geometry/Point.html"><span class="s4">Point</span></a> ( currentDrag.x at currentDrag.y) . Performs the action.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s4">SCView</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s2">, </span>\visible<span class="s2">, </span>\enabled<span class="s2">, </span>\canFocus<span class="s2">, </span>\resize<span class="s2">, </span>\background<span class="s2">, </span>\minWidth<span class="s2">, </span>\maxWidth<span class="s2">, </span>\minHeight<span class="s2">, </span>\maxHeight<span class="s2">, </span>\knobColor<span class="s2">, </span>\step<span class="s2">, </span>\x<span class="s2">, </span>\y<span class="s2"> ]</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p15"><br></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s4">Window</span>(<span class="s5">"Slider2D"</span>, <span class="s4">Rect</span>(100,100, 140 ,140));</p>
-<p class="p11">t = <span class="s4">Slider2D</span>(w, <span class="s4">Rect</span>(20, 20,80, 80))</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.x_(0.5)<span class="Apple-tab-span">	</span></span>// initial location of x</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.y_(1)<span class="Apple-tab-span">	</span></span>// initial location of y</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s4">|sl|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s6">\sliderX</span>, sl.x, <span class="s6">\sliderY</span>, sl.y].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11">w.front;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p16"><span class="s2">t.x <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// get the x loc</p>
-<p class="p16"><span class="s2">t.x_(0.25) <span class="Apple-tab-span">	</span></span>// set the x loc</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">// drag an drop Points</p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s4">Window</span>(<span class="s5">"Slider2D"</span>, <span class="s4">Rect</span>(100,100, 500 ,300));</p>
-<p class="p11">w.view.decorator = <span class="s4">FlowLayout</span>(w.view.bounds);</p>
-<p class="p11">t = <span class="s4">Slider2D</span>(w, <span class="s4">Rect</span>(20, 20,280, 280))</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.x_(0.5)<span class="Apple-tab-span">	</span></span>// initial location of x</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.y_(1)<span class="Apple-tab-span">	</span></span>// initial location of y</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_( <span class="s4">Color</span>.rand )</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s4">|sl|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s6">\sliderX</span>, sl.x, <span class="s6">\sliderY</span>, sl.y].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11">t.step_(0.01);</p>
-<p class="p15"><br></p>
-<p class="p11">n=<span class="s4">CompositeView</span>.new(w, 200 at 300);</p>
-<p class="p11">n.decorator= <span class="s4">FlowLayout</span>(n.bounds);</p>
-<p class="p15"><br></p>
-<p class="p11">v = { <span class="s4">|i|</span> <span class="s4">DragBoth</span>.new(n, <span class="s4">Rect</span>(0, i * 20, 200, 20)).background_( <span class="s4">Color</span>.rand ).align_(<span class="s6">\center</span>) }.dup(5);</p>
-<p class="p15"><br></p>
-<p class="p17"><span class="s4">StaticText</span><span class="s2">.new(n,200 at 150).string_(</span>"hold down cmd and drag points from the slider to the drag slots, or reverse"<span class="s2">).stringColor_(</span><span class="s4">Color</span><span class="s2">.white);</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11">w.front;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p16">// Shape a Sound</p>
-<p class="p11">(</p>
-<p class="p11">s.waitForBoot({</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a={<span class="s4">arg</span> mod=0.05, index=0.05;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> r,out,out2;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r=<span class="s4">Saw</span>.ar(8,0.03);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out=<span class="s4">PMOsc</span>.ar(440,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>660*mod,3*index, 0,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Lag</span>.ar(r,0.01,1));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[out,<span class="s4">Delay1</span>.ar(out)];</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = <span class="s4">Window</span>(<span class="s5">"Slider2D"</span>, <span class="s4">Rect</span>(100,<span class="s4">Window</span>.screenBounds.height-400, 300 ,300));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s4">FlowLayout</span>(w.view.bounds);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>t = <span class="s4">Slider2D</span>(w, <span class="s4">Rect</span>(0, 0,292, 292))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.y_(0.05)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.x_(0.05)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_( <span class="s4">Color</span>.rand )</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.knobColor_(<span class="s4">Color</span>.rand)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s4">|sl|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.set(<span class="s6">\mod</span>,sl.x,<span class="s6">\index</span>,sl.y);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s4">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p11">})</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SC2DTabletSlider.html b/Help/GUI/Cocoa-GUI/SC2DTabletSlider.html
deleted file mode 100644
index 7c78308..0000000
--- a/Help/GUI/Cocoa-GUI/SC2DTabletSlider.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #96251f}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #3d57c3}
-span.s4 {text-decoration: underline}
-span.s5 {color: #5061b0}
-span.s6 {color: #6f7178}
-span.s7 {color: #0021b6}
-span.s8 {color: #606060}
-span.s9 {color: #426d13}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SC2DTabletSlider<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a 2D slider with support for extended wacom data</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCControlView.html"><span class="s3"><b>SCControlView</b></span></a><b> : </b><a href="SCSliderBase.html"><b>SCSliderBase</b></a><b> : </b><a href="SC2DSlider.html"><b>SC2DSlider</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="SC2DSlider.html"><span class="s4">SC2DSlider</span></a>, <a href="SCTabletView.html"><span class="s4">SCTabletView</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Concerning SC2DTabletSlider</b></p>
-<p class="p2"><br></p>
-<p class="p1">Inherits much of its behavior form SC2DSlider and SCSliderBase. Drag and drop returns and accepts a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s6">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s6">Point</span></a> indicating width at height.</p>
-<p class="p5"><br></p>
-<p class="p9"><b>Accessing Instance and Class Variables</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mouseDown (x, y, pressure, tiltx, tilty, deviceID, buttonNumber, clickCount, absoluteZ, rotation)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mouseUp (x, y, pressure, tiltx, tilty, deviceID, buttonNumber, clickCount, absoluteZ, rotation)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>doAction (x, y, pressure, tiltx, tilty, deviceID, buttonNumber, clickCount, absoluteZ, rotation)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Each of the three actions are passed the following wacom tablet values:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>view</b> - the view</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>x</b> - 0..1 value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>y</b> - 0..1 value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>pressure - </b>0..1</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>tiltX - </b>0..1 where available</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>tiltY - </b>0..1 where available</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>deviceID - </b>will be used to look up if the tip or the eraser is used</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>buttonNumber - </b>0 left, 1 right, 2 middle wheel click</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>clickCount - </b>double click, triple click ...</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>most relevant for the mouseDown, but still valid for the dragged and mouseUp</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>absoluteZ</b> - the wheel on the side of some mice</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rotation</b> - in degrees, only on the 4d mice</p>
-<p class="p5"><br></p>
-<p class="p9"><b>Examples</b></p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11"><span class="s7">var</span> window;</p>
-<p class="p11"><span class="s7">var</span> slider;</p>
-<p class="p10"><br></p>
-<p class="p11">window = <span class="s7">Window</span>(<span class="s8">"2DSlider"</span>, <span class="s7">Rect</span>(100,100, 140 ,140));</p>
-<p class="p11">window.front;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>slider = <span class="s7">TabletSlider2D</span>(window, <span class="s7">Rect</span>(20, 20,80, 80))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.x_(0.5).y_(1);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>slider.mouseDownAction = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s8">"down"</span>,view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>slider.action = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span>slider.mouseUpAction = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s8">"up"</span>,view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span>slider.setProperty(<span class="s9">\clipInBounds</span>,0)</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p12">// drag an drop Points</p>
-<p class="p11">(</p>
-<p class="p10"><br></p>
-<p class="p11">w = <span class="s7">Window</span>(<span class="s8">"TabletSlider2D"</span>, <span class="s7">Rect</span>(100,100, 500 ,300));</p>
-<p class="p11">w.view.decorator = <span class="s7">FlowLayout</span>(w.view.bounds);</p>
-<p class="p10"><br></p>
-<p class="p11">t = <span class="s7">TabletSlider2D</span>(w, <span class="s7">Rect</span>(20, 20,280, 280))</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.x_(0.5)<span class="Apple-tab-span">	</span></span>// initial location of x</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.y_(1)<span class="Apple-tab-span">	</span></span>// initial location of y</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.knobColor_(<span class="s7">Color</span>.rand)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s7">|sl|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s9">\sliderX</span>, sl.x, <span class="s9">\sliderY</span>, sl.y].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11">t.step_(0.01);</p>
-<p class="p10"><br></p>
-<p class="p11">n=<span class="s7">CompositeView</span>.new(w, 200 at 300);</p>
-<p class="p11">n.decorator= <span class="s7">FlowLayout</span>(n.bounds);</p>
-<p class="p10"><br></p>
-<p class="p11">v = { <span class="s7">|i|</span> <span class="s7">DragBoth</span>(n, <span class="s7">Rect</span>(0, i * 20, 200, 20)).align_(<span class="s9">\center</span>).background_(<span class="s7">Color</span>.rand) }.dup(5);</p>
-<p class="p13"><span class="s7">StaticText</span><span class="s2">.new(n,200 at 150).string_(</span>"hold down cmd and drag points from the slider to the drag slots, or reverse"<span class="s2">).stringColor_(</span><span class="s7">Color</span><span class="s2">.white);<span class="Apple-tab-span">	</span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11">w.front;</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p12">// sound example</p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">s.waitForBoot({</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> w, v,int,synth;</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>synth=<span class="s7">SynthDef</span>(<span class="s8">"help-TabletSlider2D"</span>,{ <span class="s7">arg</span> freq=440,int1=5,int2 = -5,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ffreqInterval=0,rq=0.4,gate=0.0;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> p,c,d,f;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c=<span class="s7">LFNoise1</span>.kr(0.1,0.45,0.55);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d=<span class="s7">LFNoise1</span>.kr(0.1,0.45,0.55);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f=<span class="s7">LFNoise1</span>.kr(0.1,2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p=<span class="s7">Pulse</span>.ar([ freq * int1.midiratio + f , freq, freq * int2.midiratio - f],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[c,d,c],0.2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(0,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">RLPF</span>.ar(<span class="s7">Mix</span>.ar(p),freq * ffreqInterval.midiratio,rq)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s7">EnvGen</span>.kr(<span class="s7">Env</span>.adsr, gate, gate)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>},[0.1,0.1,0.1,0.1,0.1,<span class="s7">nil</span>]).play(s);</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = <span class="s7">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>int = <span class="s7">ControlSpec</span>(-48,48,<span class="s9">\linear</span>,1);</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>v = <span class="s7">TabletSlider2D</span>(w,<span class="s7">Rect</span>(10,10,380,380));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.background = <span class="s7">Color</span>.blue.alpha_(0.2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.knobColor = <span class="s7">Color</span>.red;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.action = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.set(<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\int1</span>, int.map(x),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\int2</span>, int.map(y),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\ffreqInterval</span>, int.map(pressure),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\gate</span>, pressure.postln</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.mouseDownAction = { <span class="s7">arg</span> view,x,y,pressure;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.set(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\freq</span> , rrand(30,80).midicps,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\gate</span>, pressure.postln</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.mouseUpAction = { <span class="s7">arg</span> view,x,y,pressure;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.set( <span class="s9">\gate</span>, 0.postln )</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11">});</p>
-<p class="p11">)</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCButton.html b/Help/GUI/Cocoa-GUI/SCButton.html
deleted file mode 100644
index 3807d1e..0000000
--- a/Help/GUI/Cocoa-GUI/SCButton.html
+++ /dev/null
@@ -1,394 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #6f7178}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #000000}
-span.s5 {color: #0000bf}
-span.s6 {color: #606060}
-span.s7 {font: 14.0px Helvetica}
-span.s8 {font: 9.0px Monaco; color: #51535a}
-span.s9 {color: #bf0000}
-span.s10 {color: #007300}
-span.s11 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCButton<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a multi-state button</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : SCControlView</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Some Important Issues Regarding SCButton</b></p>
-<p class="p2"><br></p>
-<p class="p1">Failure to set any <b>states</b> at all results in an invisible button.</p>
-<p class="p2"><br></p>
-<p class="p1">The button performs its action upon releasing the mouse. In musical contexts, you might want to use <span class="s3">mouseDownAction_() </span>to set a function to be performed on pressing the mouse (see <a href="SCView.html"><span class="s2">SCView</span></a>, and examples below).</p>
-<p class="p2"><br></p>
-<p class="p1">If the drag contains a number, then <b>valueAction_()</b> is performed using the <b>currentDrag</b>. If the drag contains anything else, <b>action </b>ist set to the current drag. You could, for example, drag a function to an SCButton, and action would then be set to that function.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Creation / Class Methods</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> indicating width at height.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s5">Window</span><span class="s4">.new(</span>"The Four Noble Truths"<span class="s4">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s5">Button</span>(w, <span class="s5">Rect</span>(20,20,340,30))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s6">"there is suffering"</span>, <span class="s5">Color</span>.black, <span class="s5">Color</span>.red],</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</span>"the origin of suffering"<span class="s4">, </span><span class="s5">Color</span><span class="s4">.white, </span><span class="s5">Color</span><span class="s4">.black],</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</span>"the cessation of suffering"<span class="s4">, </span><span class="s5">Color</span><span class="s4">.red, </span><span class="s5">Color</span><span class="s4">.white],</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</span>"there is a path to cessation of suffering"<span class="s4">, </span><span class="s5">Color</span><span class="s4">.blue, </span><span class="s5">Color</span><span class="s4">.clear]</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s5">arg</span> butt;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>butt.value.postln;<span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">)</span></p>
-<p class="p4"><br></p>
-<p class="p13"><b>Accessing Instance and Class Variables</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>states</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>states_ (array)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>An array of labels and colors defining the states ofthe button</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array </b>- an <a href="../../Collections/Array.html"><span class="s2">Array</span></a> of arrays of the form [ [String, strColor, bgColor] , .... ]</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the index of the current state. This will <b>not</b> evaluate the function assigned to <b>action</b> (see <a href="SCView.html"><span class="s2">SCView</span></a>).</p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the button to display the state at index <b>val</b> of the <b>states</b> array. This will <b>not</b> evaluate the function assigned to <b>action</b> (see <a href="SCView.html"><span class="s2">SCView</span></a>).</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- The index of an item in the <b>states</b> array .</p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the button to display the item at index <b>val</b> of the <b>states</b> array, and evaluates action (see <a href="SCView.html"><span class="s2">SCView</span></a>), if the value has changed.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- The index of an item in the <b>states</b> array .</p>
-<p class="p6"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>font</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>font_ (argFont)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a> of the button. Default value is the default font: Font.default .</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argFont </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.</p>
-<p class="p14"><br></p>
-<p class="p13"><b>Subclassing and Internal Methods</b></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>doAction (modifiers)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by the primitive upon releasing the mouse.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>modifiers </b>- A key modifier number, which is passed to the <b>action</b> as its second argument upon mouse-releasing the button.</p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" " <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>space</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\r <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\n, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.asAscii,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(enter key or cmd-C on Mac OSX )</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>To change these use <span class="s8">defaultKeyDownAction_</span> , see <a href="SCView.html"><span class="s2">SCView</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s2">SCView</span></a>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p16"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s4">, </span>\visible<span class="s4">, </span>\enabled<span class="s4">, </span>\canFocus<span class="s4">, </span>\resize<span class="s4">, </span>\background<span class="s4">, </span>\minWidth<span class="s4">, </span>\maxWidth<span class="s4">, </span>\minHeight<span class="s4">, </span>\maxHeight<span class="s4">, </span>\value<span class="s4">, </span>\font<span class="s4">, </span>\states<span class="s4">, </span>\focusColor<span class="s4"> ]</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag <b>from</b> an SCButton. Returns the same as <b>value</b>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to drop a drag in this object. By default, SCButton will respond only to drags where the drag contains a <a href="../../Math/Number.html"><span class="s2">Number</span></a> or <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been recieved. If the drag contains a number, then <b>action </b>ist set to the current drag. Otherwise <b>valueAction_()</b> is performed using the <b>currentDrag</b>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p11"><br></p>
-<p class="p12">(</p>
-<p class="p12">w = <span class="s5">Window</span>.new(<span class="s6">"Example"</span>);</p>
-<p class="p11"><br></p>
-<p class="p12">b = <span class="s5">Button</span>(w, <span class="s5">Rect</span>(90,20,200,30))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s6">"sine"</span>, <span class="s5">Color</span>.black, <span class="s5">Color</span>.rand],</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s6">"saw"</span>, <span class="s5">Color</span>.black, <span class="s5">Color</span>.rand],</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s6">"noise"</span>, <span class="s5">Color</span>.black, <span class="s5">Color</span>.rand],</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s6">"pulse"</span>, <span class="s5">Color</span>.black, <span class="s5">Color</span>.rand]</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s5">arg</span> butt;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>butt.value.postln;<span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12">w.front;</p>
-<p class="p12">)</p>
-<p class="p11"><br></p>
-<p class="p17">// does not do action</p>
-<p class="p12">b.value = 2;</p>
-<p class="p11"><br></p>
-<p class="p17">// does action if it results in a change of value</p>
-<p class="p12">b.valueAction = 3;</p>
-<p class="p11"><br></p>
-<p class="p17">// clips to size of states</p>
-<p class="p12">b.valueAction = -1;</p>
-<p class="p11"><br></p>
-<p class="p17">// floats no problem</p>
-<p class="p12">b.valueAction = 3.3;</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p17">//In a musical context, a button-down press is more meaningful than a button-up (release) as it's more</p>
-<p class="p17">//intuitive to press a button on the beat. For that you can use View's mouseDownAction</p>
-<p class="p17">//(a superclass of Button)</p>
-<p class="p11"><br></p>
-<p class="p12">(</p>
-<p class="p12">s.waitForBoot({</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s5">Window</span>.new;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s5">Button</span>(w, <span class="s5">Rect</span>(20,20,80,26))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[<span class="s6">"play"</span>, <span class="s5">Color</span>.black, <span class="s5">Color</span>.rand]])</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.mouseDownAction_({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="Apple-tab-span">	</span>{<span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.adsr,doneAction:2)*<span class="s5">SinOsc</span>.ar(440,0,0.4)}.play;<span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s5">arg</span> butt, mod;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.release(0.3);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12">})</p>
-<p class="p12">)</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p17">// if you drag a function to a button, the the button's action is set to that function.</p>
-<p class="p17">// you can us this for swapping functions.</p>
-<p class="p12">(</p>
-<p class="p11"><br></p>
-<p class="p12">s.waitForBoot({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s5">var</span> w,p,snd,b;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s5">Window</span>.new;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b=<span class="s5">Button</span>(w, <span class="s5">Rect</span>(20,20,80,26))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[<span class="s6">"start a sound"</span>, <span class="s5">Color</span>.black, <span class="s5">Color</span>.green],[<span class="s6">"stop"</span>, <span class="s5">Color</span>.black, <span class="s5">Color</span>.red]])</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span>v=</span><span class="s5">VLayoutView</span><span class="s4">(w,</span><span class="s5">Rect</span><span class="s4">(140,20,200,300)); </span>//Group the following views</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s5">StaticText</span>(v, <span class="s5">Rect</span>(20,20,180,60))</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(</span>"The button does nothing at first, so try dragging a function to the button"<span class="s4">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s5">DragSource</span>(v, <span class="s5">Rect</span>(20,20,80,26))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.object_(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s5">|b|</span> (b.value==1).if{snd={ <span class="s5">SinOsc</span>.ar(440,0,0.6) }.play}{snd.free};}<span class="s9">//a button action function</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(<span class="s6">"a play sine function"</span>).align_(<span class="s10">\center</span>).background_(<span class="s5">Color</span>.rand);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s5">DragSource</span>(v, <span class="s5">Rect</span>(20,20,80,26))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.object_(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s5">|b|</span> (b.value==1).if{snd={ <span class="s5">Saw</span>.ar(440,0.4) }.play}{snd.free};} <span class="s9">//a button action function</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(<span class="s6">"a play saw function"</span>).align_(<span class="s10">\center</span>).background_(<span class="s5">Color</span>.rand);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s5">DragSource</span>(v, <span class="s5">Rect</span>(20,20,80,26))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.object_(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s5">|b|</span> (b.value==1).if{snd={ <span class="s5">WhiteNoise</span>.ar(0.4) }.play}{snd.free};} <span class="s9">//a button action function</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(<span class="s6">"a play noise function"</span>).align_(<span class="s10">\center</span>).background_(<span class="s5">Color</span>.rand);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span>p=</span><span class="s5">CmdPeriod</span><span class="s4">.add({b.value_(0)});</span>// set button to 0 on hitting Cmd-period</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.onClose_{ snd.free; <span class="s5">CmdPeriod</span>.removeAll };<span class="s9">//clean up when window is closed</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p11"><br></p>
-<p class="p12">})</p>
-<p class="p12">)</p>
-<p class="p11"><br></p>
-<p class="p17">// Using <a href="../../Core/Kernel/Routine.html"><span class="s11">Routine</span></a> to set button states on the fly.</p>
-<p class="p12">(</p>
-<p class="p12"><span class="s5">var</span> update, w, b;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s5">Window</span>.new(<span class="s6">"State Window"</span>, <span class="s5">Rect</span>(150,<span class="s5">Window</span>.screenBounds.height-140,380,60));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// a convenient way to set the button label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update = {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">|but, string|</span> but.states = [[string.asString, <span class="s5">Color</span>.black, <span class="s5">Color</span>.red]];</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>but.refresh;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s5">Button</span>(w, <span class="s5">Rect</span>(10,10,360,40));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.font_(<span class="s5">Font</span>(<span class="s6">"Impact"</span>, 24));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(b, </span>"there is only one state"<span class="s4">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if an action should do something different each time it is called, a routine is the</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// right thing to use. This is better than creating variables outside and setting them</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// from the action function to keep state from one action to the next</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action_(<span class="s5">Routine</span> { <span class="s5">|butt|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(15, 45).do { <span class="s5">|i|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(butt, <span class="s6">"%. there is still only 1 state"</span>.format(i + 2));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield; <span class="s9">// stop here</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12">)</p>
-<p class="p11"><br></p>
-<p class="p17">// Using <a href="../../Core/Kernel/Routine.html"><span class="s11">Routine</span></a> to set button states on the fly 2.</p>
-<p class="p12">(</p>
-<p class="p12">s.waitForBoot({</p>
-<p class="p12"><span class="s5">var</span> update, w, b;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s5">Window</span>.new(<span class="s6">"State Window"</span>, <span class="s5">Rect</span>(150,<span class="s5">Window</span>.screenBounds.height-140,380,60));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// a convenient way to set the button label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update = { <span class="s5">|but, string|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>but.states = [[string.asString, <span class="s5">Color</span>.black, <span class="s5">Color</span>.red]]; but.refresh };</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s5">Button</span>(w, <span class="s5">Rect</span>(10,10,360,40));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.font_(<span class="s5">Font</span>(<span class="s6">"Impact"</span>, 24));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(b, </span>"there is only one state"<span class="s4">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if an action should do something different each time it is called, a routine is the</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// right thing to use. This is better than creating variables outside and setting them</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// from the action function to keep state from one action to the next</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action_(<span class="s5">Routine</span> { <span class="s5">|butt|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> synth, guessVal;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(butt, <span class="s6">"there are only two states"</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield; <span class="s9">// stop here</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(butt, <span class="s6">"click me"</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield; <span class="s9">// stop here</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(butt, <span class="s6">"click me again"</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield; <span class="s9">// stop here ..</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create a synth</p>
-<p class="p18"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth = { </span>|freq=1000, rate=5|</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Ringz</span>.ar(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Impulse</span>.ar(rate.lag(4) * [1,1.01]), freq, rrand(0.01, 0.1),0.3</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>guessVal = exprand(200.0, 18000).round;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.set(<span class="s10">\freq</span>, guessVal); <span class="s9">// set the synth</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(butt, <span class="s6">"?"</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update.value(butt, guessVal.asString + <span class="s6">"Hz"</span>); <span class="s9">// display frequency</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.set(<span class="s10">\rate</span>, rrand(10, 50)); <span class="s9">// set trigger rate</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// start an independent process</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fork({ 5.wait; synth.release; update.value(butt, <span class="s6">"."</span>); 1.wait; w.close }, <span class="s5">AppClock</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12">});</p>
-<p class="p12">)</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p17">// complex drag and drop example</p>
-<p class="p17">// try dragging the buttons to white slot, adn then between white slots, or simply out fo the view</p>
-<p class="p11"><br></p>
-<p class="p12">(</p>
-<p class="p12"><span class="s5">var</span> w, f, slots;</p>
-<p class="p12"><span class="s5">var</span> insert, remove;</p>
-<p class="p11"><br></p>
-<p class="p12">slots = <span class="s5">Dictionary</span>.new;</p>
-<p class="p11"><br></p>
-<p class="p12">remove = {<span class="s5">arg</span> slot, id;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>[slot, id].postln;</p>
-<p class="p12">};</p>
-<p class="p11"><br></p>
-<p class="p12">insert = {<span class="s5">arg</span> slot, fx;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(fx!=<span class="s6">""</span>){</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slots[<span class="s6">"slot"</span>++slot].value_(0).states_([[fx, <span class="s5">Color</span>.white, <span class="s5">Color</span>.blue]]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[slot, fx].postln;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slots[<span class="s6">"slot"</span>++slot].value_(0).states_([[ <span class="s6">""</span>, <span class="s5">Color</span>.white, <span class="s5">Color</span>.white ]]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove.value(slot, fx);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12">};</p>
-<p class="p11"><br></p>
-<p class="p12">w = <span class="s5">Window</span>.new(<span class="s6">""</span>,<span class="s5">Rect</span>(200, 400, 448, 180));</p>
-<p class="p12">w.view.decorator = f = <span class="s5">FlowLayout</span>(w.view.bounds);</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="s5">StaticText</span><span class="s4">(w, 400 at 20).string_(</span>"Drag & Drop holding down Cmd-key"<span class="s4">);</span></p>
-<p class="p12">f.nextLine;</p>
-<p class="p12">6.do{<span class="s5">arg</span> i;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s5">var</span> fxwin, winOpen=<span class="s5">false</span>, empty = [ <span class="s6">""</span>, <span class="s5">Color</span>.white, <span class="s5">Color</span>.white ];</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>slots[<span class="s6">"slot"</span>++i] = <span class="s5">Button</span>.new(w, 70 at 70)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.states_([empty])</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.action_({<span class="s5">|v|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if((slots[<span class="s6">"slot"</span>++i].states[0][0]!=<span class="s6">""</span>)&&(winOpen==<span class="s5">false</span>)){</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fxwin = <span class="s5">Window</span>(slots[<span class="s6">"slot"</span>++i].states[0][0], <span class="s5">Rect</span>(rrand(0,500),rrand(0,500),200,200)).front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fxwin.view.background_(<span class="s5">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fxwin.onClose_({winOpen=<span class="s5">false</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>winOpen = <span class="s5">true</span>}</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{if(winOpen==<span class="s5">true</span>){fxwin.front}};</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>})</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.canReceiveDragHandler_({<span class="s5">View</span>.currentDrag.isString})</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.receiveDragHandler_({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>insert.value(i, <span class="s5">View</span>.currentDrag);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>})</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.beginDragAction_({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> drag;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>drag = slots[<span class="s6">"slot"</span>++i].states[0][0];</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slots[<span class="s6">"slot"</span>++i].value_(0).states_([empty]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove.value(i, <span class="s5">View</span>.currentDrag);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>drag;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>})</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.keyDownAction_({ <span class="s5">arg</span> view,char,modifiers,unicode,keycode;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>switch (keycode)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{51} {slots[<span class="s6">"slot"</span>++i].value_(0).states_([empty]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slots[<span class="s6">"slot"</span>++i].refresh;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove.value(i, <span class="s5">View</span>.currentDrag);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><br></p>
-<p class="p12">};</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12">f.nextLine;</p>
-<p class="p11"><br></p>
-<p class="p12">[<span class="s6">"a"</span>, <span class="s6">"b"</span>, <span class="s6">"c"</span>, <span class="s6">"d"</span>, <span class="s6">"e"</span>, <span class="s6">"f"</span>].do{<span class="s5">arg</span> item, i;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s5">Button</span>.new(w, 70 at 70)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.states_([ [ item ] ])</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.action_({<span class="s5">|v|</span> })</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.beginDragAction_({item})</p>
-<p class="p12">};</p>
-<p class="p12">w.front;</p>
-<p class="p12">)</p>
-<p class="p11"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCCompositeView.html b/Help/GUI/Cocoa-GUI/SCCompositeView.html
deleted file mode 100644
index da249e6..0000000
--- a/Help/GUI/Cocoa-GUI/SCCompositeView.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0018b8}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0018b8}
-span.s4 {text-decoration: underline ; color: #001ee6}
-span.s5 {text-decoration: underline}
-span.s6 {font: 9.0px Monaco}
-span.s7 {color: #a41c14}
-span.s8 {color: #356f14}
-span.s9 {color: #606060}
-span.s10 {font: 11.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCCompositeView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>A view that contains other views</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCContainerView.html"><b>SCContainerView</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">A container for grouping other views and widgets. SCCompositeView inherits all of its methods from <a href="SCContainerView.html"><span class="s3">SCContainerView</span></a><span class="s3">.</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2"><b>See also:</b> <a href="../../Libraries/crucial/Gui/FlowView.html"><span class="s4">FlowView</span></a></span>, <a href="../GUI-Tools/FlowLayout.html"><span class="s5">FlowLayout</span></a></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Some Important Issues Regarding SCCompositeView</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCCompositeView is used for grouping widgets in a window. While it accepts key actions, it does not accept mouse clicks or drags.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s3">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s3">Point</span></a> indicating width at height.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>.new;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = <span class="s3">CompositeView</span>(w, <span class="s3">Rect</span>(0,0,300,300) );</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s3">Slider2D</span>(c, <span class="s3">Rect</span>(10,10,100,100) );<span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s3">Slider2D</span>(c, <span class="s3">Rect</span>(110,110,100,100) );</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p13"><b>Coordinate System</b></p>
-<p class="p14"><br></p>
-<p class="p8">Containers use relative coordinates, i.e.<span class="Apple-converted-space">  </span>views are placed relative to the upper left corner of the container.</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>.new;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>c = <span class="s3">CompositeView</span>(w,<span class="s3">Rect</span>(50,0,300,300));</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span>a = </span><span class="s3">Slider2D</span><span class="s2">(c,</span><span class="s3">Rect</span><span class="s2">(0,0,100,100));<span class="Apple-tab-span">	</span></span>// actually displays at (50, 0)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">Slider2D</span>(c,<span class="s3">Rect</span>(100,100,100,100));</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>c.background = <span class="s3">Color</span>.rand;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span>c.bounds_(</span><span class="s3">Rect</span><span class="s2">(100,0,300,300)); </span>// contents adust since coords are relative</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span>c.resize_(6); </span>// contents adust since coords are relative</p>
-<p class="p2"><br></p>
-<p class="p13"><b>Keydown Bubbling</b></p>
-<p class="p14"><br></p>
-<p class="p1">Key actions "bubble up" to the parent view if a view does not define one itself. In the following example, a and b do not have keyDown actions themselves, so the key event is passed to c, the parent, which defines the key down action. d's parent is the SCTopView, which has no key down action. See also <a href="SCView.html"><span class="s3">SCView</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span>( </span>//Click on the different views and hit keys on the keyboard.</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>.new;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>c = <span class="s3">CompositeView</span>(w,<span class="s3">Rect</span>(0,0,200,200)).background_(<span class="s3">Color</span>.grey.alpha_(0.3));</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>a = <span class="s3">Slider2D</span>(c,<span class="s3">Rect</span>(0,0,100,100)).background_(<span class="s3">Color</span>.rand);<span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">Slider2D</span>(c,<span class="s3">Rect</span>(100,100,100,100)).background_(<span class="s3">Color</span>.rand);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>c.keyDownAction = {</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"keydown bubbled up to c"<span class="s2">.postln;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span></span>//d is on window w, not on composite view c</p>
-<p class="p12"><span class="Apple-tab-span">	</span>d = <span class="s3">Slider2D</span>(w,<span class="s3">Rect</span>(200,200,100,100));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>d.background = <span class="s3">Color</span>.black;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p13"><b>Decorators</b></p>
-<p class="p14"><br></p>
-<p class="p1">A 'decorator' object can be set to handle layout management. All views added to the CompositeView will now be placed by the decorator. Currently the only one existing is <a href="../GUI-Tools/FlowLayout.html"><span class="s3">FlowLayout</span></a>. You can use the addFlowLayout method as a short cut to assigning FlowLayout to decorator.</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a = <span class="s3">Window</span>.new;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">CompositeView</span>(a,<span class="s3">Rect</span>(0,0,500,500));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.decorator = <span class="s3">FlowLayout</span>(b.bounds);</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span></span>// b.addFlowLayout; // you can also write this for convenience</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span></span>// adding views to b automatically use the decorator</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span></span>// no need to use parent.decorator.place</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c = <span class="s3">Slider2D</span>(b,<span class="s3">Rect</span>(0,0,100,100));<span class="Apple-tab-span">	</span><span class="s7">// size matters</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>d = <span class="s3">Slider2D</span>(b,<span class="s3">Rect</span>(0,0,100,100)); <span class="s7">// origin doesn't</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p1">You can also use an empty composite view nicely as a spacer in <a href="SCVLayoutView.html"><span class="s3">VLayoutView</span></a>, <a href="SCHLayoutView.html"><span class="s3">HLayoutView</span></a>, or views that have a <a href="../GUI-Tools/FlowLayout.html"><span class="s3">FlowLayout</span></a> as their decorator.</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a = <span class="s3">Window</span>.new;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">CompositeView</span>(a,<span class="s3">Rect</span>(0,0,500,500));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.decorator = <span class="s3">FlowLayout</span>(<span class="s3">Rect</span>(0, 0, 500, 500));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">Slider2D</span>(b,<span class="s3">Rect</span>(0,0,100,100)).background_(<span class="s3">Color</span>.rand);<span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">CompositeView</span><span class="s2">(b,</span><span class="s3">Rect</span><span class="s2">(0,0,70,100));<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//just used for spacing</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">Slider2D</span>(b,<span class="s3">Rect</span>(0,0,100,100)).background_(<span class="s3">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">Slider2D</span>(b,<span class="s3">Rect</span>(0,0,100,100)).background_(<span class="s3">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.decorator.nextLine;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">Slider2D</span>(b,<span class="s3">Rect</span>(0,0,100,100)).background_(<span class="s3">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">Slider2D</span>(b,<span class="s3">Rect</span>(0,0,100,100)).background_(<span class="s3">Color</span>.rand);<span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">CompositeView</span><span class="s2">(b,</span><span class="s3">Rect</span><span class="s2">(0,0,70,100))<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>;</span>//just used for spacing</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">Slider2D</span>(b,<span class="s3">Rect</span>(0,0,100,100)).background_(<span class="s3">Color</span>.rand);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p13"><b>Hiding / Swapping</b></p>
-<p class="p14"><br></p>
-<p class="p1">You can stack CompositeViews on top of each other and use a button show only one of them</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">var</span> colors = [<span class="s3">Color</span>.blue,<span class="s3">Color</span>.red, <span class="s3">Color</span>.green];</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a = <span class="s3">Window</span>.new;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>q = 3;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">Button</span>(a,<span class="s3">Rect</span>(0,0,160,20));</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.states = <span class="s3">Array</span>.fill(q,{ <span class="s3">arg</span> i;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[i.asString,<span class="s3">Color</span>.white,colors.wrapAt(i)]</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.action = { <span class="s3">arg</span> butt;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.visible = <span class="s3">false</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p = c.at(butt.value);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.visible = <span class="s3">true</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>c = <span class="s3">Array</span>.fill(q,{ <span class="s3">arg</span> i;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s3">CompositeView</span>(a,<span class="s3">Rect</span>(0,25,300,300));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.background=colors[i].alpha_(0.2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.visible=<span class="s3">false</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>5.do{<span class="s3">arg</span> i;c[0].add(<span class="s3">Slider</span>(c[0],<span class="s3">Rect</span>(10,i*30+10,150,25)).value_(1.0.rand))};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>5.do{<span class="s3">arg</span> i;c[1].add(<span class="s3">Slider</span>(c[1],<span class="s3">Rect</span>(i*30+10,10,25,150)).value_(1.0.rand))};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c[2].add(<span class="s3">Slider2D</span>(c[2],<span class="s3">Rect</span>(10,10,155,150)).x_(1.0.rand).y_(1.0.rand));</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>p = c.at(0); <span class="s7">// previous</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span>p.visible = </span><span class="s3">true</span><span class="s2">; </span>// show first one</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.front;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Nested Example</b></p>
-<p class="p14"><br></p>
-<p class="p1">In this example, the StaticText accepts mouse clicks, since container views can't:</p>
-<p class="p14"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w=<span class="s3">Window</span>.new.front;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v=<span class="s3">CompositeView</span>.new(w,w.view.bounds.insetBy(10)).background_(<span class="s3">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.decorator=<span class="s3">FlowLayout</span>(v.bounds);</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span>l=</span>"SUPERCOLLIDER"<span class="s2">.scramble;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>t=<span class="s3">Array</span>.fill(9,{<span class="s3">arg</span> i; <span class="s3">var</span> n,r,q;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n=<span class="s3">CompositeView</span>.new(v,<span class="s3">Rect</span>(20,20,121,121)).background_(<span class="s3">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q=<span class="s3">StaticText</span>(n, n.bounds.moveTo(0,0).insetBy(25)).string_(l[i]).align_(<span class="s8">\center</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.enabled=<span class="s3">true</span>;</p>
-<p class="p15">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.font=Font("Geneva",10);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.font=<span class="s3">Font</span>( <span class="s9">"Geneva"</span>, 10 )<span class="s10">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.background_(<span class="s3">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.mouseDownAction={</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.background_(<span class="s3">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.font=q.font.size_(5+q.font.size+7%60)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p14"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCContainerView.html b/Help/GUI/Cocoa-GUI/SCContainerView.html
deleted file mode 100644
index 2bf934b..0000000
--- a/Help/GUI/Cocoa-GUI/SCContainerView.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #0000bf; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {text-decoration: underline ; color: #001bec}
-span.s6 {font: 14.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCContainerView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract superclass for container views</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">Users will not normally directly create instances of SCContainerView, but only use it through its subclasses. It provides the basic mechanisms for container views of various kinds, which are used for placing and grouping widgets in a window.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also: </b><a href="SCTopView.html"><span class="s2">SCTopView</span></a><b>,</b> <a href="SCCompositeView.html"><span class="s4">SCCompositeView</span></a>, <a href="SCHLayoutView.html"><span class="s4">SCHLayoutView</span></a>, <a href="SCVLayoutView.html"><span class="s4">SCVLayoutView</span></a>, <a href="SCScrollView.html"><span class="s4">SCScrollView</span></a></span><span class="s2"> <a href="SCScrollTopView.html"><span class="s5">SCScrollTopView</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Some Important Issues Regarding SCContainerView</b></p>
-<p class="p2"><br></p>
-<p class="p1">Container views are meant for placing and grouping child views and widgets. While they accept key actions, many do not accept mouse cklicks or drags. The exception is <a href="SCTopView.html"><span class="s2">SCTopView</span></a> and its subclasses.</p>
-<p class="p7"><br></p>
-<p class="p8"><b>Accessing Instance and Class Variables</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>decorator_(arg1)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>decorator</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An automatic layout management for a container. Currently the only one existing is <a href="../GUI-Tools/FlowLayout.html"><span class="s2">FlowLayout</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(note: Crucial Library also has a useful layout tool called <a href="../../Libraries/crucial/Gui/GridLayout.html"><span class="s2">GridLayout</span></a><span class="s2">.)</span></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>addFlowLayout(margin, gap)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A convenience utility which sets <b>decorator</b> to FlowLayout and returns the decorator. See FlowLayout for examples.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin</b> - An instance of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap</b> - An instance of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>children</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An array containing all the views (children) contained in the the container.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b>Adding and Removing Subviews</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>add (child)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Adds a view to <b>children</b>. The placement of the child view will depend on the the <b>decorator</b>, and the child's <b>bounds</b>. Nomally you don't need to call this directly, since subviews call it automatically when you create them.</p>
-<p class="p7"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>removeAll</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Removes all children from the view</p>
-<p class="p7"><br></p>
-<p class="p8"><b>Subclassing and Internal Methods</b></p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p7"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>init (argParent, argBounds)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>prRemoveChild (child) </b>private method</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>prClose </b>private method</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCControlView.html b/Help/GUI/Cocoa-GUI/SCControlView.html
deleted file mode 100644
index dc6f794..0000000
--- a/Help/GUI/Cocoa-GUI/SCControlView.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCControlView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract class for backward compatibility</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">For backward compatibility only. Inherits everything from <a href="SCView.html"><span class="s2">SCView</span></a>. No new methods.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCDragBoth.html b/Help/GUI/Cocoa-GUI/SCDragBoth.html
deleted file mode 100644
index 951c396..0000000
--- a/Help/GUI/Cocoa-GUI/SCDragBoth.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3e3c36; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #485abb}
-span.s4 {color: #6f717d}
-span.s5 {font: 14.0px Helvetica}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCDragBoth<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a gui object source and receiver for drag and drop</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCStaticTextBase.html"><b>SCStaticTextBase</b></a><b> : </b><a href="SCDragView.html"><b>SCDragView</b></a><b> : </b><a href="SCDragSink.html"><b>SCDragSink</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">See <a href="SCDragView.html"><span class="s3">SCDragView</span></a> for description and examples.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- the parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- an instance of <a href="../../Geometry/Rect.html"><span class="s4">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s4">Point</span></a> indicating width at height.</p>
-<p class="p5"><br></p>
-<p class="p10"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag. Returns the content of <b>object</b> when dragging <b>from</b> an SCDragBoth.</p>
-<p class="p5"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p11"><br></p>
-<p class="p12">(</p>
-<p class="p13"><span class="Apple-tab-span">	</span>w=<span class="s6">Window</span>.new.front;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>w.addFlowLayout;</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// store various kinds of objects in the drag source</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// a string source</p>
-<p class="p13"><span class="Apple-tab-span">	</span>a=<span class="s6">DragBoth</span>(w,<span class="s6">Rect</span>(10,10,150,20)).align_(<span class="s7">\center</span>)<span class="s2">.background_(Color.rand)</span>;</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span>a.object=</span>"drag us around"<span class="s2">;</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>a=<span class="s6">DragBoth</span>(w,<span class="s6">Rect</span>(10,10,150,20)).align_(<span class="s7">\center</span>).background_(Color.rand);</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span>a.object=</span>"SUPERCOLLIDER"<span class="s2">;</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>8.do{</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a=<span class="s6">DragBoth</span>(w,<span class="s6">Rect</span>(10,10,150,20)).align_(<span class="s7">\center</span>).background_(Color.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.receiveDragHandler={arg obj; obj.object = View.currentDrag.scramble}</p>
-<p class="p13"><span class="Apple-tab-span">	</span>}</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p17"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCDragSink.html b/Help/GUI/Cocoa-GUI/SCDragSink.html
deleted file mode 100644
index be56a78..0000000
--- a/Help/GUI/Cocoa-GUI/SCDragSink.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #5a65a5}
-span.s4 {color: #485abb}
-span.s5 {color: #6f717e}
-span.s6 {font: 14.0px Helvetica}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #0000bf}
-span.s9 {color: #007300}
-span.s10 {font: 11.0px Monaco}
-span.s11 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCDragSink<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a gui object for receiving drag and drop</b><span class="s1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCStaticTextBase.html"><b>SCStaticTextBase</b></a><b> : </b><a href="SCDragView.html"><b>SCDragView</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">See <a href="SCDragView.html"><span class="s3">SCDragView</span></a> for description and examples, and <a href="SCView.html"><span class="s4">SCView</span></a> for a general description of the drag and drop mechanism.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- the parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- an instance of <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a> indicating width at height.</p>
-<p class="p2"><br></p>
-<p class="p10"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to drop a drag in this object. By default, SCDragSink will respond to any drag.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been recieved.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>By default, this sets the <b>object</b> to the <b>currentDrag</b> and performs the <b>action.</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p11"><br></p>
-<p class="p12">(</p>
-<p class="p13"><span class="s2">s.waitForBoot({<span class="Apple-tab-span">	</span></span>//only needed if you are using sound</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w=<span class="s8">Window</span>.new.front;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// store various kinds of objects in the drag source</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// a string source</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a=<span class="s8">DragSource</span>(w,<span class="s8">Rect</span>(10,10,150,20)).align_(<span class="s9">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>a.object=</span>"I am a string source"<span class="s2">;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// a Float source</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b=<span class="s8">DragSource</span>(w,<span class="s8">Rect</span>(10,40,150,20)).align_(<span class="s9">\center</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.object=2.234;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// a Point source</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c=<span class="s8">DragSource</span>(w,<span class="s8">Rect</span>(10,70,150,20)).align_(<span class="s9">\center</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c.object=<span class="s8">Point</span>(20,30);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// A sound function source</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// dragLabel_() is used for the label while dragging</p>
-<p class="p12"><span class="Apple-tab-span">	</span>d=<span class="s8">DragSource</span>(w,<span class="s8">Rect</span>(10,100,150,20)).align_(<span class="s9">\center</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>d.object={<span class="s8">Synth</span>(<span class="s9">\default</span>)};</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>d.dragLabel=</span>" I am a sound function.\n My dragLabel_() is set \n to inform you about that "<span class="s2">;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// A sound function source</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>//here the string label is independent of the content type (Function)</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// dragLabel_() is used for the label while dragging</p>
-<p class="p12"><span class="Apple-tab-span">	</span>f=<span class="s8">DragSource</span>(w,<span class="s8">Rect</span>(10,130,150,20)).align_(<span class="s9">\center</span>).setBoth_(<span class="s8">false</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>f.object={{<span class="s8">SinOsc</span>.ar(440,0,0.4)}.play};</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>f.string=</span>"My label is independent"<span class="s2">;</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>f.dragLabel=</span>" My dragLabel_() says \n I am dragging a sound function "<span class="s2">;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive anthing</p>
-<p class="p12"><span class="Apple-tab-span">	</span>g=<span class="s8">DragSink</span>(w,<span class="s8">Rect</span>(170,10,200,20)).align_(<span class="s9">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>g.string=</span>"recieve anything, do nothing"<span class="s2">;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only floats</p>
-<p class="p12"><span class="Apple-tab-span">	</span>g=<span class="s8">DragSink</span>(w,<span class="s8">Rect</span>(170,40,200,20)).align_(<span class="s9">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>g.string=</span>"I only like floats"<span class="s2">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>g<span class="s10">.</span>canReceiveDragHandler = { <span class="s8">View</span>.currentDrag.isFloat };</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only numbers and points, and convert them to rects</p>
-<p class="p12"><span class="Apple-tab-span">	</span>h=<span class="s8">DragSink</span>(w,<span class="s8">Rect</span>(170,70,200,20)).align_(<span class="s9">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>h.string=</span>"I convert to Rect"<span class="s2">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s10">h.</span>canReceiveDragHandler = {<span class="s8">View</span>.currentDrag.isKindOf(<span class="s8">Number</span>)||<span class="s8">View</span>.currentDrag.isKindOf(<span class="s8">Point</span>)};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>h.receiveDragHandler={<span class="s8">arg</span> v; h.object=<span class="s8">View</span>.currentDrag.asRect};</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only functions, and try to play them</p>
-<p class="p12"><span class="Apple-tab-span">	</span>i=<span class="s8">DragSink</span>(w,<span class="s8">Rect</span>(170,100,200,20)).align_(<span class="s9">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>i.string=</span>"I evaluate a (sound) function"<span class="s2">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s10">i.</span>canReceiveDragHandler = {<span class="s8">View</span>.currentDrag.isKindOf(<span class="s8">Function</span>)};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>i.receiveDragHandler={<span class="s8">arg</span> v;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.object=<span class="s8">View</span>.currentDrag.value;</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.string=</span>"click here for silence"<span class="s2">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.background_(<span class="s8">Color</span>.red)};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>i.mouseDownAction_({i.object.free;i.string=<span class="s11">"I evaluate a (sound) function"</span>;i.background_(<span class="s8">Color</span>.clear)});</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s8">StaticText</span>(w,<span class="s8">Rect</span>(10,200,380,50))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.stringColor_(<span class="s8">Color</span>.white)</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(</span>"Try dragging any item on the left -----> to any item on the right"<span class="s2">);</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12">});</p>
-<p class="p12">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCDragSource.html b/Help/GUI/Cocoa-GUI/SCDragSource.html
deleted file mode 100644
index f1b2ef1..0000000
--- a/Help/GUI/Cocoa-GUI/SCDragSource.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #505fb1}
-span.s4 {color: #3850cb}
-span.s5 {color: #6f717e}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.s8 {font: 11.0px Monaco}
-span.s9 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCDragSource<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a gui object source for drag and drop</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCStaticTextBase.html"><b>SCStaticTextBase</b></a><b> : </b><a href="SCDragView.html"><b>SCDragView</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">A gui object which acts as a source a source for drag and drop. See <a href="SCDragView.html"><span class="s3">SCDragView</span></a> for usage and examples, and <a href="SCView.html"><span class="s4">SCView</span></a> for a general description of the drag and drop mechanism.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a> indicating width at height.</p>
-<p class="p5"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p11"><br></p>
-<p class="p12">(</p>
-<p class="p13"><span class="s2">s.waitForBoot({<span class="Apple-tab-span">	</span></span>//only needed if you are using sound</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w=<span class="s6">Window</span>.new.front;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// store various kinds of objects in the drag source</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// a string source</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,10,150,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>a.object=</span>"I am a string source"<span class="s2">;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// a Float source</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,40,150,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.object=2.234;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// a Point source</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,70,150,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c.object=<span class="s6">Point</span>(20,30);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// A sound function source</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// dragLabel_() is used for the label while dragging</p>
-<p class="p12"><span class="Apple-tab-span">	</span>d=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,100,150,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>d.object={<span class="s6">Synth</span>(<span class="s7">\default</span>)};</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>d.dragLabel=</span>" I am a sound function.\n My dragLabel_() is set \n to inform you about that "<span class="s2">;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// A sound function source</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>//here the string label is independent of the content type (Function)</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// dragLabel_() is used for the label while dragging</p>
-<p class="p12"><span class="Apple-tab-span">	</span>f=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,130,150,20)).align_(<span class="s7">\center</span>).setBoth_(<span class="s6">false</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>f.object={{<span class="s6">SinOsc</span>.ar(440,0,0.4)}.play};</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>f.string=</span>"My label is independent"<span class="s2">;</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>f.dragLabel=</span>" My dragLabel_() says \n I am dragging a sound function "<span class="s2">;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive anthing</p>
-<p class="p12"><span class="Apple-tab-span">	</span>g=<span class="s6">DragSink</span>(w,<span class="s6">Rect</span>(170,10,200,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>g.string=</span>"recieve anything, do nothing"<span class="s2">;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only floats</p>
-<p class="p12"><span class="Apple-tab-span">	</span>g=<span class="s6">DragSink</span>(w,<span class="s6">Rect</span>(170,40,200,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>g.string=</span>"I only like floats"<span class="s2">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>g<span class="s8">.</span>canReceiveDragHandler = { <span class="s6">View</span>.currentDrag.isFloat };</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only numbers and points, and convert them to rects</p>
-<p class="p12"><span class="Apple-tab-span">	</span>h=<span class="s6">DragSink</span>(w,<span class="s6">Rect</span>(170,70,200,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>h.string=</span>"I convert to Rect"<span class="s2">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s8">h.</span>canReceiveDragHandler = {<span class="s6">View</span>.currentDrag.isKindOf(<span class="s6">Number</span>)||<span class="s6">View</span>.currentDrag.isKindOf(<span class="s6">Point</span>)};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>h.receiveDragHandler={<span class="s6">arg</span> v; h.object=<span class="s6">View</span>.currentDrag.asRect};</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only functions, and try to play them</p>
-<p class="p12"><span class="Apple-tab-span">	</span>i=<span class="s6">DragSink</span>(w,<span class="s6">Rect</span>(170,100,200,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>i.string=</span>"I evaluate a (sound) function"<span class="s2">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s8">i.</span>canReceiveDragHandler = {<span class="s6">View</span>.currentDrag.isKindOf(<span class="s6">Function</span>)};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>i.receiveDragHandler={<span class="s6">arg</span> v;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.object=<span class="s6">View</span>.currentDrag.value;</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.string=</span>"click here for silence"<span class="s2">;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.background_(<span class="s6">Color</span>.red)};</p>
-<p class="p12"><span class="Apple-tab-span">	</span>i.mouseDownAction_({i.object.free;i.string=<span class="s9">"I evaluate a (sound) function"</span>;i.background_(<span class="s6">Color</span>.clear)});</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s6">StaticText</span>(w,<span class="s6">Rect</span>(10,200,380,50))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.stringColor_(<span class="s6">Color</span>.white)</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(</span>"Try dragging any item on the left -----> to any item on the right"<span class="s2">);</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12">});</p>
-<p class="p12">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCDragView.html b/Help/GUI/Cocoa-GUI/SCDragView.html
deleted file mode 100644
index bdb0933..0000000
--- a/Help/GUI/Cocoa-GUI/SCDragView.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3e3c36; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #696f8e}
-span.s5 {font: 14.0px Helvetica}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.s8 {font: 11.0px Monaco}
-span.s9 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCDragView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract superclass for drag views</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCStaticTextBase.html"><b>SCStaticTextBase</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="SCDragSource.html"><span class="s3">SCDragSource</span></a>, <a href="SCDragSink.html"><span class="s3">SCDragSink</span></a>, <a href="SCDragBoth.html"><span class="s3">SCDragBoth</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">Users will not normally directly create instances of SCDragView, but only use it through its subclasses. The three subclasses, SCDragSource, SCDragSink, SCDragBoth, all function basically the same way: they are simple, graphically represented rectangles, which act as a drag-source, a drag target, or both. Their dragging behavior only differs from other GUI views, in that they do not require the cmd key to be held down for dragging. All other dragging functions are those defined by <a href="SCView.html"><span class="s4">SCView</span></a>. They inherit from <a href="SCStaticTextBase.html"><span class="s4">SCStaticTextBase</span></a>, and thus store their content in <b>object</b> and by default display their content using <b>asString</b>. You can keep their string independent of the content, if you set <b>setBoth</b>=false. You can also set a label to be displayed while dragging by using <b>dragLabel_()</b>.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Subclassing and Internal Methods</b></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag. Returns <b>object</b> .</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Examples</b></p>
-<p class="p8"><br></p>
-<p class="p9">(</p>
-<p class="p10"><span class="s2">s.waitForBoot({<span class="Apple-tab-span">	</span></span>//only needed if you are using sound</p>
-<p class="p9"><span class="Apple-tab-span">	</span>w=<span class="s6">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// store various kinds of objects in the drag source</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// a string source</p>
-<p class="p9"><span class="Apple-tab-span">	</span>a=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,10,150,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>a.object=</span>"I am a string source"<span class="s2">;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// a Float source</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,40,150,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b.object=2.234;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// a Point source</p>
-<p class="p9"><span class="Apple-tab-span">	</span>c=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,70,150,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>c.object=<span class="s6">Point</span>(20,30);</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// A sound function source</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// dragLabel_() is used for the label while dragging</p>
-<p class="p9"><span class="Apple-tab-span">	</span>d=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,100,150,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>d.object={<span class="s6">Synth</span>(<span class="s7">\default</span>)};</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>d.dragLabel=</span>" I am a sound function.\n My dragLabel_() is set \n to inform you about that "<span class="s2">;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// A sound function source</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>//here the string label is independent of the content type (Function)</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// dragLabel_() is used for the label while dragging</p>
-<p class="p9"><span class="Apple-tab-span">	</span>f=<span class="s6">DragSource</span>(w,<span class="s6">Rect</span>(10,130,150,20)).align_(<span class="s7">\center</span>).setBoth_(<span class="s6">false</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>f.object={{<span class="s6">SinOsc</span>.ar(440,0,0.4)}.play};</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>f.string=</span>"My label is independent"<span class="s2">;</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>f.dragLabel=</span>" My dragLabel_() says \n I am dragging a sound function "<span class="s2">;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive anthing</p>
-<p class="p9"><span class="Apple-tab-span">	</span>g=<span class="s6">DragSink</span>(w,<span class="s6">Rect</span>(170,10,200,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>g.string=</span>"recieve anything, do nothing"<span class="s2">;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only floats</p>
-<p class="p9"><span class="Apple-tab-span">	</span>g=<span class="s6">DragSink</span>(w,<span class="s6">Rect</span>(170,40,200,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>g.string=</span>"I only like floats"<span class="s2">;</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>g<span class="s8">.</span>canReceiveDragHandler = { <span class="s6">View</span>.currentDrag.isFloat };</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only numbers and points, and convert them to rects</p>
-<p class="p9"><span class="Apple-tab-span">	</span>h=<span class="s6">DragSink</span>(w,<span class="s6">Rect</span>(170,70,200,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>h.string=</span>"I convert to Rect"<span class="s2">;</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s8">h.</span>canReceiveDragHandler = {<span class="s6">View</span>.currentDrag.isKindOf(<span class="s6">Number</span>)||<span class="s6">View</span>.currentDrag.isKindOf(<span class="s6">Point</span>)};</p>
-<p class="p9"><span class="Apple-tab-span">	</span>h.receiveDragHandler={<span class="s6">arg</span> v; h.object=<span class="s6">View</span>.currentDrag.asRect};</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>// receive only functions, and try to play them</p>
-<p class="p9"><span class="Apple-tab-span">	</span>i=<span class="s6">DragSink</span>(w,<span class="s6">Rect</span>(170,100,200,20)).align_(<span class="s7">\center</span>);</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>i.string=</span>"I evaluate a (sound) function"<span class="s2">;</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s8">i.</span>canReceiveDragHandler = {<span class="s6">View</span>.currentDrag.isKindOf(<span class="s6">Function</span>)};</p>
-<p class="p9"><span class="Apple-tab-span">	</span>i.receiveDragHandler={<span class="s6">arg</span> v;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.object=<span class="s6">View</span>.currentDrag.value;</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.string=</span>"click here for silence"<span class="s2">;</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.background_(<span class="s6">Color</span>.red)};</p>
-<p class="p9"><span class="Apple-tab-span">	</span>i.mouseDownAction_({i.object.free;i.string=<span class="s9">"I evaluate a (sound) function"</span>;i.background_(<span class="s6">Color</span>.clear)});</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s6">StaticText</span>(w,<span class="s6">Rect</span>(10,200,380,50))</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.stringColor_(<span class="s6">Color</span>.white)</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(</span>"Try dragging any item on the left -----> to any item on the right"<span class="s2">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9">});</p>
-<p class="p9">)</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCEnvelopeEdit.html b/Help/GUI/Cocoa-GUI/SCEnvelopeEdit.html
deleted file mode 100644
index 232a0b9..0000000
--- a/Help/GUI/Cocoa-GUI/SCEnvelopeEdit.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #314bd1}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #314bd1}
-span.s3 {color: #000000}
-span.s4 {color: #304098}
-span.s5 {color: #6f7178}
-span.s6 {font: 14.0px Helvetica}
-span.s7 {color: #0000bf}
-span.s8 {color: #606060}
-span.s9 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCEnvelopeEdit<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an envelope editor view</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object : SCView : </b><a href="SCEnvelopeView.html"><span class="s2"><b>SCEnvelopeView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">An editable Envelope view.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b></span><span class="s4"> <a href="SCEnvelopeView.html"><span class="s2">SCEnvelopeView</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SCEnvelopeEdit</b></p>
-<p class="p2"><br></p>
-<p class="p1">The breakpoints are color coded as follows:</p>
-<p class="p1"><span class="Apple-tab-span">	</span>blue -<span class="Apple-tab-span">	</span>normal</p>
-<p class="p1"><span class="Apple-tab-span">	</span>red -<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sustain node</p>
-<p class="p1"><span class="Apple-tab-span">	</span>green -<span class="Apple-tab-span">	</span>loop node</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds, env, pointsPerSegment)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a> indicating width at height.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>env </b>- The envelope. An instance of <a href="../../Control/Env.html"><span class="s2">Env</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>pointsPerSegment </b>- The resolution in points per segment. Default value is 10.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*paletteExample (parent, bounds)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><b>Accessing Instance and Class Variables</b></p>
-<p class="p11"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>refresh</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>If the Env object is modified directly, this needs to be called to update the GUI.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxLevel</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxLevel_ (level)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Changes maximum level shown in editor.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>level </b>- and Instance of <a href="../../Math/Float.html"><span class="s2">Float</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>minLevel</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>minLevel_ (level)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Changes minimum level shown in editor.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>level </b>- and Instance of <a href="../../Math/Float.html"><span class="s2">Float</span></a>.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>minTime</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>minTime_ (sec)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Changes minimum time (sec) shown in editor. Negative times are okay because Env uses inter-node durations.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sec </b>- An instance of <a href="../../Math/Float.html"><span class="s2">Float</span></a>. Seconds.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxTime</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxTime_ (sec)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Changes maximum time (sec) shown in editor.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sec </b>- An instance of <a href="../../Math/Float.html"><span class="s2">Float</span></a>. Seconds.</p>
-<p class="p6"><br></p>
-<p class="p10"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultMauseDownAction (x, y, modifiers, buttonNumber, clickCount)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*viewClass</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>env_ (e)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>addBreakPoint (level)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>insertAtTime (time, level)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>pointsPerSegment</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>env</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>initSCEnvelopeEdit (argEnv, argPPS, setMinMax)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>redraw</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>updateAll</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>updateSegment (segNum)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>clear</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p13"><br></p>
-<p class="p14">(</p>
-<p class="p15">// make a basic editor</p>
-<p class="p14">e = <span class="s7">Env</span>([1,2],[10]);</p>
-<p class="p14">w = <span class="s7">SCWindow</span>(<span class="s8">"Env Editor"</span>, <span class="s7">Rect</span>(200,200,300,200));</p>
-<p class="p14">v = <span class="s7">SCEnvelopeEdit</span>(w, w.view.bounds.moveBy(20,20).resizeBy(-40,-40), e, 20).resize_(5);</p>
-<p class="p14">w.front;</p>
-<p class="p14">)</p>
-<p class="p14">v.addBreakPoint;</p>
-<p class="p13"><br></p>
-<p class="p14">v.clear;</p>
-<p class="p14">v.redraw;</p>
-<p class="p14">v;</p>
-<p class="p14">)</p>
-<p class="p13"><br></p>
-<p class="p15"><span class="s3">v.maxLevel_(2);<span class="Apple-tab-span">	</span></span>// to give more headroom</p>
-<p class="p15"><span class="s3">v.maxTime_(2);<span class="Apple-tab-span">	</span></span>// to increase release point</p>
-<p class="p15"><span class="s3">v.minTime_(-1);<span class="Apple-tab-span">	</span></span>// to increase attack time</p>
-<p class="p13"><br></p>
-<p class="p15"><span class="s3">e.curves_ = </span><span class="s9">'sin'</span><span class="s3">;<span class="Apple-tab-span">	</span></span>// env object is changed</p>
-<p class="p15"><span class="s3">v.refresh;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// must refresh editor</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p15">// Controlling a Synth</p>
-<p class="p13"><br></p>
-<p class="p14">s=<span class="s7">Server</span>.internal;</p>
-<p class="p14">s.boot;</p>
-<p class="p14">(</p>
-<p class="p14">e = <span class="s7">Env</span>([0, 1, 0.7, 0.9, 0], [0.03, 0.03, 0.03, 0.03], <span class="s9">'sin'</span>);</p>
-<p class="p14">f = <span class="s7">Env</span>([0, 1, 0.7, 0.9, 0], [0.03, 0.03, 0.03, 0.03], <span class="s9">'sin'</span>);</p>
-<p class="p14">w = <span class="s7">SCWindow</span>(<span class="s8">"Shards"</span>, <span class="s7">Rect</span>(100, 100, 500, 400));</p>
-<p class="p14">v = <span class="s7">SCEnvelopeEdit</span>(w, w.view.bounds.resizeBy(-20, -200), e, 10).resize_(2);</p>
-<p class="p14"><span class="s7">SCStaticText</span>(w, v.bounds).string_(<span class="s8">" amplitude"</span>).resize_(2);</p>
-<p class="p14">x = <span class="s7">SCEnvelopeEdit</span>(w, v.bounds.moveBy(0, 200), f, 10).resize_(2);</p>
-<p class="p14"><span class="s7">SCStaticText</span>(w, x.bounds).string_(<span class="s8">" frequency"</span>).resize_(2);</p>
-<p class="p14">w.front;</p>
-<p class="p14">)</p>
-<p class="p13"><br></p>
-<p class="p14">(</p>
-<p class="p16"><span class="s7">SynthDef</span><span class="s3">(</span>"sineBlip"<span class="s3">, {</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s7">arg</span> freq=440, vol=0.1, la0, la1, la2, la3, la4, ta0, ta1, ta2, ta3, crva,</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lf0, lf1, lf2, lf3, lf4, tf0, tf1, tf2, tf3, crvf;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s7">var</span> signal, fenv, aenv;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>fenv = <span class="s7">EnvGen</span>.ar(<span class="s7">Env</span>([lf0,lf1,lf2,lf3,lf4],[tf0,tf1,tf2,tf3], crvf));</p>
-<p class="p14"><span class="Apple-tab-span">	</span>aenv = <span class="s7">EnvGen</span>.ar(<span class="s7">Env</span>([la0,la1,la2,la3,la4],[ta0,ta1,ta2,ta3], crva), doneAction: 2);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>signal = <span class="s7">SinOsc</span>.ar([freq, freq*2] * fenv) * aenv * vol;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(0, signal.dup);</p>
-<p class="p14">}).send(s);</p>
-<p class="p14">)</p>
-<p class="p13"><br></p>
-<p class="p14">(</p>
-<p class="p17">Routine<span class="s3">({</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s7">var</span> par, indices;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>indices = (2..21);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>par = (indices +++ (v.env.levels ++ v.env.times ++ v.env.curves ++ x.env.levels ++ x.env.times ++ x.env.curves)).flatten;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(s.latency, [<span class="s9">\s_new</span>, <span class="s8">"sineBlip"</span>, -1, 1, 1, <span class="s9">\freq</span>, exprand(4e3,11e3)] ++ par);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.04.wait;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>});</p>
-<p class="p14">}).play;</p>
-<p class="p14">)</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCEnvelopeView.html b/Help/GUI/Cocoa-GUI/SCEnvelopeView.html
deleted file mode 100644
index e1d03be..0000000
--- a/Help/GUI/Cocoa-GUI/SCEnvelopeView.html
+++ /dev/null
@@ -1,397 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #406c0f}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9a2a1b}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001db9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #6f7178}
-span.s5 {font: 9.0px Monaco}
-span.s6 {color: #001db9}
-span.s7 {color: #606060}
-span.s8 {color: #6f7284}
-span.s9 {color: #6d7086}
-span.s10 {color: #6e7185}
-span.s11 {color: #5e689f}
-span.s12 {color: #1b46d8}
-span.s13 {color: #3151cd}
-span.s14 {font: 12.0px Monaco}
-span.s15 {color: #2853d2}
-span.s16 {color: #2d4fd2}
-span.s17 {color: #6f7181}
-span.s18 {color: #6c6f88}
-span.s19 {font: 14.0px Helvetica}
-span.s20 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCEnvelopeView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a configurable view with nodes and connections</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object : SCView</b></p>
-<p class="p3"><br></p>
-<p class="p1">A view which can grapically display nodes at x/y coordinates, connection lines, cross-connections, node markers, and labels. All of the values for these are stored in arrays. While this view is typically used to make editable envelopes interfaces, it can be used to draw very complex interconnection graphs as well.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding SCEnvelopeView</b></p>
-<p class="p2"><br></p>
-<p class="p1">The instance variable <b>step</b> must be explicitly set for the <b>defautlKeyDownAction</b> to work.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2"><b>See also:</b> <a href="SCMultiSliderView.html"><span class="s3">SCMultiSliderView</span></a>, <a href="SCEnvelopeEdit.html"><span class="s3">SCEnvelopeEdit</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s4">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s4">Point</span></a> indicating width at height.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>(<span class="s7">"envelope"</span>, <span class="s6">Rect</span>(150 , <span class="s6">Window</span>.screenBounds.height-250, 250, 100)).front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s6">EnvelopeView</span>(w, <span class="s6">Rect</span>(10, 10, 230, 70))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.resize_(5)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">arg</span> b; [b.index,b.value].postln})</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.value_([[0.0, 0.15, 0.5, 1.0],[0.1,1.0,0.7,0.0]])</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.curves_([5,5,-5]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p13"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>editable</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>editable_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines if the any node is editable.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Core/Boolean.html"><span class="s8">Boolean</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setEditable (index, boolean)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines if the the node at index is editable.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>-an integer.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>boolean </b>- An instance of <a href="../../Core/Boolean.html"><span class="s8">Boolean</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>step</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>step_ (stepSize)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Quantizes the values to the nearest multiple of stepSize.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stepSize </b>- An instance of <a href="../../Math/Float.html"><span class="s9">Float</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets the property, \value, by calling get/setProperty(\value, <b>val</b>). The setter also sets <b>size</b> to the size of <b>val</b>. This will not do the <b>action</b> of the slider.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Collections/Array.html"><span class="s10">Array</span></a>. The values mus be between 0 and 1. The form of the array must be:</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ [ x1, x2, x3, ... ], [ y1, y2, y3, ... ] ]</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the property, \value, by calling (\value, <b>val</b>). Also sets <b>size</b> to the size of <b>val. </b>Does the sliders <b>action</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Collections/Array.html"><span class="s10">Array</span></a>. The values mus be between 0 and 1 . The form of the array must be:</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ [ x1, x2, x3, ... ], [ y1, y2, y3, ... ] ]</p>
-<p class="p14"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>index</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets theselected index. -1 if none selected.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>inx </b>- an integer.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>lastIndex</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the index last selected.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectIndex (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Selects the node at index, and refreshes the view.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>x</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>y</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>x_ (ax)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>y_ (ay)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the x or y value at the selected <b>index</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ay </b>- An instance of <a href="../../Math/Float.html"><span class="s11">Float</span></a>, between 0 and 1</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentvalue</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentvalue_ (iny)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the y - value at the current <b>index</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>iny </b>- A float between 0 and 1.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setString (index, astring)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draw the string inside the thumb at index. Make sure that ths stroke color contrasts the fill color.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>astring </b>- An instance of <a href="../../Collections/String.html"><span class="s11">String</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>strings_ (astrings)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draw a string inside the thumb at the corresponding index in the array. Make sure that ths stroke color contrasts the fill color.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>astrings </b>- An <a href="../../Collections/Array.html"><span class="s11">Array</span></a> of <a href="../../Collections/String.html"><span class="s11">String</span></a>s;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>curves</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>curves_(incurves)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set a shape to draw the connection between points. The shapes defined by <a href="../../Control/Env.html"><span class="s12">Env</span></a> are accepted.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>incurves</b> - An<span class="Apple-converted-space">  </span><a href="../../Collections/Array.html"><span class="s11">Array</span></a> of Symbols, An<span class="Apple-converted-space">  </span><a href="../../Collections/Array.html"><span class="s11">Array</span></a> of <a href="../../Math/SimpleNumber.html"><span class="s13">SimpleNumber</span></a>s, a <a href="../../Core/Symbol.html"><span class="s13">Symbol</span></a> or a <a href="../../Math/SimpleNumber.html"><span class="s13">SimpleNumber</span></a></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>setEnv_(env)</b></p>
-<p class="p7"><span class="s14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Set an <a href="../../Control/Env.html"><span class="s13">Env</span></a> to be shown in the view.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>grid</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>grid_(point)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set a grid using a <a href="../../Geometry/Point.html"><span class="s15">Point</span></a>. x and y correspond to times and levels respectively. Specify a value of 0.0 if you do not want that axis to be drawn.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridOn</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridOn_(flag)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Show a grid.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>flag</b><span class="s14"> </span>- a false or true</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridColor</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridColor_</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the <a href="../GUI-Tools/Color.html"><span class="s16">Color</span></a> of the grid.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>connect (from, aconnections)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Replaces the connections which were drawn at init time, and then draws new ones from the index, <b>from,</b> to the each of the <b>aconnections </b>indexes .</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>from </b>- An integer. The index form which the lines originate.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aconnections </b>- An Array of numbers. The indexes to which the lines are drawn.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>metaAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>metaAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets a function to be evaluate on Ctrl-click</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 - </b>An instance of <a href="../../Core/Kernel/Function.html"><span class="s17">Function</span></a>. Default value is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Customizing Appearance</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>strokeColor_ (acolor)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The line and text color of the view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>acolor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s18">Color</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>colors_ (strokec, fillc)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the stroke and fill colors of the view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>strokec </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s18">Color</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fillc </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s18">Color</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawLines (abool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawLines_ (abool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draws connecting lines between the nodes.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>abool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s10">Boolean</span></a>. default is false.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawRects_ (abool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draws rectangles (thumbs) at the nodes .</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>abool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s10">Boolean</span></a>. default is true.</p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>fillColor_ (color)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setFillColor (index, color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The line and text color of the all the nodex (and their text), or of a specific node at indes.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s11">Color</span></a>.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>thumbWidth_ (width)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>thumbHeight_ (height)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>thumbSize_ (size)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the width, height, or size(both) of all th thumbs.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>width, height, size </b>- The number of pixels.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setThumbWidth (index, width)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setThumbHeight (index, height)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setThumbSize (index, size)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the thumb width, height, or size(both) at a certain index.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>width, height, size </b>- The number of pixels.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectionColor_ (acolor)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the color a thumb has when selected.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>acolor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s11">Color</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p13"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s19"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span>shift+unicode 16rF703, <span class="Apple-tab-span">	</span>increment x by <b>step</b><span class="Apple-tab-span">	</span>shift + right arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span>shift+unicode 16rF702, <span class="Apple-tab-span">	</span>decrement x by <b>step</b><span class="Apple-tab-span">	</span>shift + left arrow<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span>select next index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span>select previous index<span class="Apple-tab-span">	</span>left arrow<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span>increment y by <b>step</b><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span>decrement y by <b>step</b><span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>note: <b>step</b> must be explicitly set fro this to work.</p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns this.value.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to place a drag in this object. Will recieve any drag, but the drag should be an array of values of the form:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>[ [ x1, x2, x3, ... ], [ y1, y2, y3, ... ] ]</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been received. Performs <b>value_()</b> <b>and reference_()</b> using <b>currentDrag</b> as an argument. Does not perform the <b>action</b>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s4">SCView</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s2">, </span>\visible<span class="s2">, </span>\enabled<span class="s2">, </span>\canFocus<span class="s2">, </span>\resize<span class="s2">, </span>\background<span class="s2">, </span>\minWidth<span class="s2">, </span>\maxWidth<span class="s2">, </span>\minHeight<span class="s2">, </span>\maxHeight<span class="s2">, </span>\value<span class="s2">, </span>\thumbSize<span class="s2">, </span>\fillColor<span class="s2">, </span>\strokeColor<span class="s2">, </span>\xOffset<span class="s2">, </span>\x<span class="s2">, </span>\y<span class="s2">, </span>\showIndex<span class="s2">, </span>\drawLines<span class="s2">, </span>\drawRects<span class="s2">, </span>\selectionSize<span class="s2">, </span>\startIndex<span class="s2">, </span>\thumbWidth<span class="s2">, </span>\absoluteX<span class="s2">, </span>\isFilled<span class="s2">, </span>\step<span class="s2"> ]</span></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>size_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>size</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>called by <b>value_</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>items_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>items</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doMetaAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Not normally called directly (called by the primitive).</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>select (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Selects the node at index, without refreshing the view</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>addValue (xval, yval)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>fixedSelection_ (bool)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>allConnections_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>allConnections</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doMetaAction</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p14"><br></p>
-<p class="p17">// use as envelope view</p>
-<p class="p11">(</p>
-<p class="p17">//use shift-click to keep a node selected</p>
-<p class="p11">w = <span class="s6">Window</span>(<span class="s7">"envelope"</span>, <span class="s6">Rect</span>(150 , <span class="s6">Window</span>.screenBounds.height-250, 250, 100)).front;</p>
-<p class="p11">w.view.decorator = <span class="s6">FlowLayout</span>(w.view.bounds);</p>
-<p class="p3"><br></p>
-<p class="p11">b = <span class="s6">EnvelopeView</span>(w, <span class="s6">Rect</span>(0, 0, 230, 80))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.drawLines_(<span class="s6">true</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.selectionColor_(<span class="s6">Color</span>.red)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.drawRects_(<span class="s6">true</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.resize_(5)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.step_(0.05)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.action_({<span class="s6">arg</span> b; [b.index,b.value].postln})</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.thumbSize_(5)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.value_([[0.0, 0.1, 0.5, 1.0],[0.1,1.0,0.8,0.0]]);</p>
-<p class="p3"><br></p>
-<p class="p11">w.front;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p17">// show grid</p>
-<p class="p11">b.gridOn_(<span class="s6">true</span>);</p>
-<p class="p3"><br></p>
-<p class="p17">// show Env</p>
-<p class="p11">b.setEnv(<span class="s6">Env</span>.asr(0.5,1, 0.2));</p>
-<p class="p3"><br></p>
-<p class="p17">// make the first point unmoveable</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p11">b.setEditable(0,<span class="s6">false</span>);</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p17">// use shift click to select/unselect the points</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s6">Window</span>(<span class="s7">"envelope"</span>, <span class="s6">Rect</span>(150 , <span class="s6">Window</span>.screenBounds.height-250, 400, 150)).front;</p>
-<p class="p11">w.view.decorator = <span class="s6">FlowLayout</span>(w.view.bounds);</p>
-<p class="p3"><br></p>
-<p class="p11">b = <span class="s6">EnvelopeView</span>(w, <span class="s6">Rect</span>(0, 0, 350, 100))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.thumbSize_(5)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.drawLines_(<span class="s6">true</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.fillColor_(<span class="s6">Color</span>.green)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.selectionColor_(<span class="s6">Color</span>.red)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.drawRects_(<span class="s6">true</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.value_([(0.0, 0.1 .. 1.0), (0.0, 0.1 .. 1.0)])</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.setEditable(0,<span class="s6">false</span>);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p18"><span class="s2">r = </span>Routine<span class="s2">({</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">var</span> j = 0;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>20.do({ <span class="s6">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>b.select((b.size -1).rand.abs);</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>b.x_(1.0.rand.abs);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>b.y_(1.0.rand.abs);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span>b.select(-1);</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">AppClock</span>.play(r);</p>
-<p class="p11">)<span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p17">//show boxes with a string in it:</p>
-<p class="p11">(</p>
-<p class="p11">a = <span class="s6">Window</span>(<span class="s7">"text-boxes"</span>, <span class="s6">Rect</span>(200 , 450, 450, 450));</p>
-<p class="p11">a.view.decorator = <span class="s6">FlowLayout</span>(a.view.bounds);</p>
-<p class="p3"><br></p>
-<p class="p11">b = <span class="s6">EnvelopeView</span>(a, <span class="s6">Rect</span>(0, 0, 440, 440))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.thumbWidth_(60.0)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.thumbHeight_(15.0)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.drawLines_(<span class="s6">true</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.drawRects_(<span class="s6">true</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.selectionColor_(<span class="s6">Color</span>.red)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.value_([[0.1, 0.4, 0.5, 0.3], [0.1, 0.2, 0.9, 0.7]]);</p>
-<p class="p11">4.do({<span class="s6">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>b.setString(i, [<span class="s7">"this"</span>, <span class="s7">"is"</span>, <span class="s7">"so much"</span>, <span class="s7">"fun"</span>].at(i));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>b.setFillColor(i,[<span class="s6">Color</span>.yellow, <span class="s6">Color</span>.white, <span class="s6">Color</span>.green].choose);</p>
-<p class="p11">});</p>
-<p class="p11">a.front;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p17"><span class="s2">b.connect(3, [2.0,0.0,1.0]); </span>// the text objects can be connected</p>
-<p class="p11">b.connect(0,[2.0,3.0,1.0]);</p>
-<p class="p11">)</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCFreqScope.html b/Help/GUI/Cocoa-GUI/SCFreqScope.html
deleted file mode 100644
index 73f3c14..0000000
--- a/Help/GUI/Cocoa-GUI/SCFreqScope.html
+++ /dev/null
@@ -1,212 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #96251f; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1a45de}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline ; color: #0029e4}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0016bd}
-span.s7 {color: #606060}
-span.s8 {color: #ae1a19}
-span.s9 {color: #6f7178}
-span.s10 {color: #0036ec}
-span.s11 {color: #4f6a1d}
-span.s12 {font: 9.0px Monaco; color: #4f6a1d}
-span.s13 {font: 14.0px Helvetica}
-span.s14 {font: 11.0px Monaco; color: #1435a6}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCFreqScope<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>frequency analysis view</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCScope.html"><span class="s2"><b>SCScope</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">SCFreqScope shows the frequency spectrum of a specified audio bus.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SCScope.html"><span class="s4">SCScope</span></a>, <a href="SCFreqScopeWindow.html"><span class="s5">SCFreqScopeWindow</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>A Very Important Issue Regarding SCFreqScope:</b></p>
-<p class="p2"><br></p>
-<p class="p1">The scope will remain active after a command-period. To turn it off you must use the 'active' method.</p>
-<p class="p1"><b>Very important:</b> You must run <b>kill() </b>when the parent window is closed to avoid problems.</p>
-<p class="p1">It also frees the buffers that the scope allocated and stops the FFT analysis synth. So:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">SCWindow</span>(<span class="s7">"My Analyzer"</span>, <span class="s6">Rect</span>(0, 0, 511, 300));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s6">SCFreqScope</span>(w, w.view.bounds);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.onClose_({ f.kill }); <span class="s8">// YOU MUST HAVE THIS</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s9">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s9">Point</span></a> indicating width at height.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Start internal server</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s = <span class="s6">Server</span>.internal.boot;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Create analyzer in a window</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">SCWindow</span>(<span class="s7">"My Analyzer"</span>, <span class="s6">Rect</span>(0, 0, 511, 300)); <span class="s8">// width should be 511</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s6">SCFreqScope</span>(w, w.view.bounds);</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.active_(</span><span class="s6">true</span><span class="s3">); <span class="Apple-tab-span">	</span></span>// turn it on the first time;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.onClose_({ f.kill }); <span class="s8">// you must have this</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s6">SinOsc</span>.ar([500, 1000], 0, 0.25).mean.dup }.play(s); <span class="s8">// start two sine waves</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*response (parent, bounds, bus1, bus2, freqMode)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create a scope in a special frequency-response mode. This uses FFT-based spectral division to estimate the frequency response of some effect, on the assumption that the signal to <b>bus1</b> is transformed to the signal at <b>bus2</b> by some linear time-invariant process.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s9">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s9">Point</span></a> indicating width at height.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bus1</b> - The bus on which the "pre" signal is found.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bus2</b> - The bus on which the "post" signal is found.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freqMode</b> - linear (0) or log(1) frequency mode. Defaults to 1.</p>
-<p class="p7"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Server</span>.default = s = <span class="s6">Stethoscope</span>.defaultServer.boot;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// basic usage. try these. Each one will open a new window</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// move the mouse left and right to test response in different ranges<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">LPF</span>.scopeResponse</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">HPF</span>.scopeResponse</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">MoogFF</span>.scopeResponse</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">BBandPass</span>.scopeResponse</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">BLowShelf</span><span class="s3">.scopeResponse </span>// by default BLowShelf doesn't mangle much</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Resonz</span>.scopeResponse</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">BRF</span>.scopeResponse</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Integrator</span>.scopeResponse</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">Median</span><span class="s3">.scopeResponse </span>// nonlinear, and therefore interesting</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// customize the parameters for more informative scoping</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s6">|in|</span> <span class="s6">MoogFF</span>.ar(in, freq: <span class="s6">MouseX</span>.kr(10, 10000, 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gain:<span class="s6">MouseY</span>.kr(4,0))}.scopeResponse</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><b>Instance Methods</b></p>
-<p class="p15"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>kill</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Very important</b>. This must be run when the parent window is closed to avoid problems. It also frees the buffers that the scope allocated and stops the FFT analysis synth.</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>active</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>active_ (bool)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Turn the scope on or off.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of Boolean.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>freqMode</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>freqMode_ (mode)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>mode </b>- 0= linear, 1= logarithmic.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>inBus</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>inBus_ (num)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The bus to listen on.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>num </b>- an audio <a href="../../ServerArchitecture/Bus.html"><span class="s2">Bus</span></a> number.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>dbRange</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>dbRange_ (db)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the amplitude range.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>db </b>- A <a href="../../Math/Number.html"><span class="s2">Number</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>special (defname, extraArgs)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Put the scope into a special mode using a user-specified <a href="../../ServerArchitecture/SynthDef.html"><span class="s10">SynthDef</span></a>. Note that only very particular SynthDefs should be used, namely ones that are derived from the <span class="s11">\</span><span class="s12">freqScope0</span> or <span class="s12">\freqScope1</span> SynthDefs. Most users will not need to use this method directly, but it can be used to provide a customised analysis shown in the scope.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>defname </b>- Name of the SynthDef you wish to use.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>extraArgs </b>- extra arguments that you may wish to pass to the synth.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><b>Subclassing and Internal Methods</b></p>
-<p class="p8"><span class="s13"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*viewClass</b> Returns <span class="s14">SCScope</span>. See also Subclassing and Internal Methods in <a href="SCView.html"><span class="s2">SCView</span></a></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*initClass</b> Sets the classVar , <b>server</b> = Server.internal.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>server</b> - A classVar. must be Server.internal</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>start</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>eventSeq (delta, funcs)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>cmdPeriod</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>initSCFreqScope</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>sendSynthDefs</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>allocBuffers</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>freeBuffers</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>node</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>scopebuf</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>fftbuf</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>bufSize</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p14"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p12">// Start internal server</p>
-<p class="p6">s = <span class="s6">Server</span>.internal.boot;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">// Create analyzer in a window</p>
-<p class="p6">(</p>
-<p class="p6">w = <span class="s6">SCWindow</span>(<span class="s7">"My Analyzer"</span>, <span class="s6">Rect</span>(0, 0, 511, 300)); <span class="s8">// width should be 511</span></p>
-<p class="p6">f = <span class="s6">SCFreqScope</span>(w, w.view.bounds);</p>
-<p class="p12"><span class="s3">f.active_(</span><span class="s6">true</span><span class="s3">); <span class="Apple-tab-span">	</span></span>// turn it on the first time;</p>
-<p class="p3"><br></p>
-<p class="p6">w.onClose_({ f.kill }); <span class="s8">// you must have this</span></p>
-<p class="p6">w.front;</p>
-<p class="p6">{ <span class="s6">SinOsc</span>.ar([500, 1000], 0, 0.25).mean.dup }.play(s); <span class="s8">// start two sine waves</span></p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">f.freqMode_(1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// change to log scale so we can see them</p>
-<p class="p12"><span class="s3">f.inBus_(1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// look at bus 1</p>
-<p class="p12"><span class="s3">f.dbRange_(200);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// expand amplitude range</p>
-<p class="p12"><span class="s3">f.active_(</span><span class="s6">false</span><span class="s3">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// turn scope off (watch CPU)</p>
-<p class="p12"><span class="s3">f.active_(</span><span class="s6">true</span><span class="s3">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// turn it back on<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">// Now press command-period. The scope is still running.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">{ <span class="s6">Mix</span>.ar(<span class="s6">SinOsc</span>.ar([500, 1200, 3000, 9000,12000], 0, [0.2,0.1,0.05,0.03,0.01])) }.play(s); <span class="s8">// restart some sines</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">// Close window and scope is killed.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p16"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCFreqScopeWindow.html b/Help/GUI/Cocoa-GUI/SCFreqScopeWindow.html
deleted file mode 100644
index a02eefa..0000000
--- a/Help/GUI/Cocoa-GUI/SCFreqScopeWindow.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #1638e6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #3850cb}
-span.s4 {color: #0000bf}
-span.s5 {font: 14.0px Helvetica}
-span.s6 {color: #314bd1}
-span.s7 {color: #1638e6}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCFreqScopeWindow<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a nice wrapper for SCFreqScope</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object</b></p>
-<p class="p3"><br></p>
-<p class="p1">SCFreqScopeWindow shows the frequency spectrum of the specified audio bus. The scope will</p>
-<p class="p1">remain active after a command-period. To turn it off you must either click off the 'Power'</p>
-<p class="p1">button or close the window.</p>
-<p class="p2"><br></p>
-<p class="p1">Panel commands:</p>
-<p class="p1">Power - <span class="Apple-tab-span">	</span>Turns the scope on and off. This is useful for freezing the signal on the display</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or for saving CPU.</p>
-<p class="p1">BusIn -<span class="Apple-tab-span">	</span>The audio bus to be analyzed.</p>
-<p class="p1">FrqScl -<span class="Apple-tab-span">	</span>Determines the mapping of frequencies on the x-axis. Can be linear (lin) or</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>logarithmic (log). Logarithmic is equal spacing per musical octave.</p>
-<p class="p1">dbCut -<span class="Apple-tab-span">	</span>Determines the lowest decibel shown on the y-axis.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><b>See also:</b> <a href="SCFreqScope.html">SCFreqScope</a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (width, height, busNum, scopeColor, bgColor)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>width </b>- Default value is 512.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>height </b>-Default value is 300.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>busNum </b>- The number of the audio <a href="../../ServerArchitecture/Bus.html"><span class="s3">Bus</span></a> to be monitored.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>scopeColor </b>- An instance of Color. The drawing color of the scope.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bgColor </b>- An instance of Color. The background color of the scope.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// must use internal server</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s = <span class="s4">Server</span>.internal.boot;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create a new analyzer</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SCFreqScopeWindow</span>.new(400, 200, 0);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// basic sine</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s4">SinOsc</span>.ar(2000, 0, 0.25) }.play(s);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// random saw</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s4">RLPF</span>.ar(<span class="s4">Saw</span>.ar(110, 0.2), <span class="s4">LFNoise2</span>.kr(1,1e4,1e4), <span class="s4">LFNoise2</span>.kr(1, 0.2, 0.22)) }.play(s);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// modulate phase</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s4">SinOsc</span>.ar(800, <span class="s4">SinOsc</span>.ar(<span class="s4">XLine</span>.kr(20,8000,10),0,2pi), 0.25) }.play(s);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all harmonics</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s4">Blip</span>.ar(200,<span class="s4">Line</span>.kr(1,100,10),0.2) }.play(s);</p>
-<p class="p6"><br></p>
-<p class="p13"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>scopeOpen</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a <a href="../../Core/Boolean.html"><span class="s6">Boolean</span></a>, whether the scope is open.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>window</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the window in which the <a href="SCFreqScope.html"><span class="s7">SCFreqScope</span></a><span class="s3"> </span>view is placed.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>scope</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the <a href="SCFreqScope.html"><span class="s7">SCFreqScope</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCHLayoutView.html b/Help/GUI/Cocoa-GUI/SCHLayoutView.html
deleted file mode 100644
index 7f75a63..0000000
--- a/Help/GUI/Cocoa-GUI/SCHLayoutView.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0018b8; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0018b8}
-span.s4 {text-decoration: underline}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {color: #a41c14}
-span.s7 {color: #606060}
-span.s8 {color: #356f14}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCHLayoutView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a container that automatically places widgets in rows</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCContainerView.html"><b>SCContainerView</b></a><b> : </b><a href="SCLayoutView.html"><b>SCLayoutView</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">SCHLayoutView automatically arranges its sub-views in horizontal order, expanding their height to the bounds of the SCHLayoutView. Only the bounds.width of the sub-view is relevant. Its abstract superclass, <a href="SCLayoutView.html"><span class="s3">SCLayoutView</span></a>, provides some important formatting methods.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="SCVLayoutView.html"><span class="s4">SCVLayoutView</span></a>, <a href="SCCompositeView.html"><span class="s4">SCCompositeView</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SCHLayoutView</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCHLayoutView is designed mainly for grouping and placing widgets. While you can set it to accept key strokes, it does not itself accept mouse clicks or drags.</p>
-<p class="p2"><br></p>
-<p class="p1">SCHLayoutView responds to the minWidth and maxWidth <b>properties</b> in its child views. This is useful when <b>resize</b> is set to 2, 5, or 8. See examples below.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s3">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s3">Point</span></a> indicating width at height.</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>.new;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s3">HLayoutView</span>(w, <span class="s3">Rect</span>(10,10,300,300) );</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Array</span>.fill( 10, { <span class="s3">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Slider</span>( v, <span class="s3">Rect</span>(0,0,20,75) ).value_(i / 10)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5"><span class="Apple-tab-span">	</span></span></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p13"><br></p>
-<p class="p14">// Childview height fills the View automatically</p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">q = 10;</p>
-<p class="p11">w = <span class="s3">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">h = <span class="s3">HLayoutView</span>(w,<span class="s3">Rect</span>(0,0,300,300));</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s3">Array</span>.fill(q,{ <span class="s3">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">Slider</span>(h,<span class="s3">Rect</span>(0,0,20,75)).value_(i / q)</p>
-<p class="p11">});</p>
-<p class="p11">h.background_(<span class="s3">Color</span>.rand);</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p14">// Stretching the layout view. Slider height fills the View automatically.</p>
-<p class="p15"><br></p>
-<p class="p11">(</p>
-<p class="p11">q = 8;</p>
-<p class="p11">w = <span class="s3">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">h = <span class="s3">HLayoutView</span>(w,<span class="s3">Rect</span>(0,0,300,300));</p>
-<p class="p11">h.background = <span class="s3">Color</span>.rand;</p>
-<p class="p11">h.resize = 5; <span class="s6">// elastic</span></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s3">Array</span>.fill(q,{ <span class="s3">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">var</span> s;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s = <span class="s3">Slider</span>(h,<span class="s3">Rect</span>(0,0,20,75)).background_(<span class="s3">Color</span>.grey.alpha_(0.4));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.value = i / q;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p11"><span class="s3">StaticText</span>(h, <span class="s3">Rect</span>(0,0,105,20)).background_(<span class="s3">Color</span>.rand).string_(<span class="s7">" Some Example\n Text"</span>);</p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p14">// Stretching the layout view and the contents.</p>
-<p class="p14">// If all the contents are elastic, the widths of the contents are perfectly divided up:</p>
-<p class="p14">// in this example, the StaticText is not elastic in order to preserv its width.</p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">q = 10;</p>
-<p class="p11">w = <span class="s3">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">h = <span class="s3">HLayoutView</span>(w,<span class="s3">Rect</span>(0,0,300,300));</p>
-<p class="p11">h.resize = 5; <span class="s6">// elastic</span></p>
-<p class="p11">h.background = <span class="s3">Color</span>.rand;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s3">Array</span>.fill(q,{ <span class="s3">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">var</span> s;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s = <span class="s3">Slider</span>(h,<span class="s3">Rect</span>(0,0,20,75));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.resize = 5; <span class="s6">// elastic</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.value = i / q;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p11"><span class="s3">StaticText</span>(h, <span class="s3">Rect</span>(0,0,105,20)).background_(<span class="s3">Color</span>.rand).string_(<span class="s7">" Some Example\n Text"</span>);</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p14">// set minWidth on contents</p>
-<p class="p14">// beware that if the layout view width is smaller than the combined width of all the contents,</p>
-<p class="p14">// things might disappear when you try to handle them with the mouse.</p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">q = 5;</p>
-<p class="p11">w = <span class="s3">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">h = <span class="s3">HLayoutView</span>(w,<span class="s3">Rect</span>(0,0,300,300));</p>
-<p class="p11">h.background = <span class="s3">Color</span>.rand;</p>
-<p class="p11">h.resize = 5; <span class="s6">// elastic</span></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s3">Array</span>.fill(q,{ <span class="s3">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">var</span> s;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s = <span class="s3">Slider</span>(h,<span class="s3">Rect</span>(0,0,20,75));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.value = i / 5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>if(i < 2,{</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.resize = 5; <span class="s6">// some elastic</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.setProperty(<span class="s8">\minWidth</span>,20);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>},{</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.resize = 1; </span>// some not elastic</p>
-<p class="p11"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p11"><span class="s3">StaticText</span>(h, <span class="s3">Rect</span>(0,0,105,20)).background_(<span class="s3">Color</span>.rand).string_(<span class="s7">" Some Example\n Text"</span>);</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">q = 5;</p>
-<p class="p11">w = <span class="s3">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">h = <span class="s3">HLayoutView</span>(w,<span class="s3">Rect</span>(0,0,300,300));</p>
-<p class="p11">h.resize = 5; <span class="s6">// elastic</span></p>
-<p class="p11">h.background = <span class="s3">Color</span>.rand;</p>
-<p class="p11"><span class="s3">Array</span>.fill(q,{ <span class="s3">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">var</span> s;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s = <span class="s3">Slider</span>(h,<span class="s3">Rect</span>(0,0,20,75));</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.value = i / 5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.resize = 5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.setProperty(<span class="s8">\minWidth</span>,20);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.setProperty(<span class="s8">\maxWidth</span>,40);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p14">// Text flows</p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">q = 5;</p>
-<p class="p11">w = <span class="s3">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">h = <span class="s3">HLayoutView</span>(w,<span class="s3">Rect</span>(0,0,300,300));</p>
-<p class="p11">h.resize = 5; <span class="s6">// elastic</span></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s3">Array</span>.fill(q,{ <span class="s3">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">var</span> s;</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span>s = <span class="Apple-tab-span">	</span></span><span class="s3">StaticText</span><span class="s2">(h,120 at 20).string_(</span>"Some short text which wraps around"<span class="s2">);</span></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.resize = 5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.setProperty(<span class="s8">\minWidth</span>,10);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.setProperty(<span class="s8">\maxWidth</span>,120);</p>
-<p class="p10"><br></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// not working</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.setProperty(<span class="s8">\maxHeight</span>,10);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.setProperty(<span class="s8">\minHeight</span>,10);</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.background = <span class="s3">Color</span>.white;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p14">// Spacing</p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">q = 10;</p>
-<p class="p11">w = <span class="s3">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">h = <span class="s3">HLayoutView</span>(w,<span class="s3">Rect</span>(0,0,300,300));</p>
-<p class="p11">h.setProperty(<span class="s8">\spacing</span>,0);</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s3">Array</span>.fill(q,{</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">Slider</span>(h,<span class="s3">Rect</span>(0,0,20,75))</p>
-<p class="p11">});</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCImage/SCImage.html b/Help/GUI/Cocoa-GUI/SCImage/SCImage.html
deleted file mode 100644
index c41d551..0000000
--- a/Help/GUI/Cocoa-GUI/SCImage/SCImage.html
+++ /dev/null
@@ -1,893 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0026ed}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; color: #ba1100}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #ba1100}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #606060}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; color: #606060}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #001fbe}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #1d700f}
-span.s1 {color: #001fbe}
-span.s2 {text-decoration: underline ; color: #0026ed}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001a36}
-span.s6 {color: #004793}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {font: 10.0px Monaco}
-span.s9 {font: 12.0px Helvetica; color: #001a36}
-span.s10 {font: 12.0px Helvetica}
-span.s11 {color: #606060}
-span.s12 {color: #0066d0}
-span.s13 {color: #1d700f}
-span.s14 {font: 14.0px Helvetica}
-span.s15 {color: #ba1100}
-span.s16 {color: #0054fa}
-span.s17 {color: #973300}
-span.s18 {color: #151608}
-span.s19 {color: #006fec}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SCImage</b></p>
-<p class="p2"><br></p>
-<p class="p3">SCImage is an image component for the Mac OS X supercollider client. SCImage is currently a wrapper around different models : you can use it for bitmap operations, image embedding for custom UI and for more advanced image processing as applying filters and kernels, both provided with the CoreImage framework.</p>
-<p class="p2"><br></p>
-<p class="p3">SCImage currently supports most formats including tiff, bmp, gif, jpeg, png, tga...ect.. for reading. But for for writing it supports only those in <span class="s1">SCImage</span>.formats.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><a href="../../GUI-Tools/GUI.html">GUI</a></span> Issue : since it is OS X only, be sure to call GUI.cocoa before any SCImage.call</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3">See also: <a href="SCImageFilter.html"><span class="s4">SCImageFilter</span></a> <a href="SCImageKernel.html"><span class="s4">SCImageKernel</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new(multiple)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a new SCImage instance. multiple stands here for multiple arguments.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>multiple </b>- <span class="s5">May</span> be a</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="../../../Math/Number.html"><span class="s6">Number</span></a> to create an <b>empty</b> image of size multiple as width and height</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.new(400);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Create a 400x400 pixels SCimage.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.dump;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.new(400,200);<span class="Apple-tab-span">	</span></span>// Create a 400x200 pixels SCimage.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.dump;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="../../../Geometry/Point.html"><span class="s5">Point</span></a> to create an <b>empty</b> image of size multiple.x as width and multiple.y as height</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.new(400 at 200);<span class="Apple-tab-span">	</span></span>// Create a 400x200 pixels SCimage.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.dump;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="../../../Collections/String.html"><span class="s9">String</span></a></span> to create an image from a <b>local file </b>or from an <span class="s5"><b>URL</b></span> (http://, ftp://, file:///)</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>Path string</p>
-<p class="p14"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[i.width, i.height].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>URL string - http:// or ftp:// - blocks until image is downloaded</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"http://www.google.com/intl/en_ALL/images/logo.gif"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.url;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*color(multiple, color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a new SCImage instance filled with the specified color. <b>multiple</b> stands here for multiple arguments. the last argument should be a valid <a href="../../GUI-Tools/Color.html"><span class="s5">Color</span></a></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>i = <span class="s1">SCImage</span>.color(400, 200, <span class="s1">Color</span>.blue(0.9,0.1));</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s8"><span class="Apple-tab-span">	</span></span><b>*open(path)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a new SCImage instance from the local file at <b>path</b>.</p>
-<p class="p16"><br></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p17"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = </span><span class="s1">SCImage</span><span class="s3">.open(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.url.postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*openURL(path)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a new SCImage instance from a valid image at the specified<b> </b>URL <b>path</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p17"><span class="s7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.openURL(</span>"file:///Library/Desktop%20Pictures/Ripples%20Blue.jpg"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.url;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p12"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>*fromImage(image)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a new SCImage instance from another SCImage.</p>
-<p class="p9"><br></p>
-<p class="p15"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>i = <span class="s1">SCImage</span>.new(<span class="s1">Document</span>.current.dir +/+ <span class="s11">"vduck2.jpg"</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j = <span class="s1">SCImage</span>.fromImage(i);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.dump;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.dump;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[i, j].do(<span class="s1">_</span>.plot);</p>
-<p class="p15"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>[i, j].do(<span class="s1">_</span>.free);</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s8"><span class="Apple-tab-span">	</span></span><b>*fromWindow(window, rect)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="s8"><span class="Apple-tab-span">	</span></span>Creates a new SCImage from a portion of a <a href="../SCWindow.html"><span class="s12">SCWindow</span></a> . this can be used to capture either a window</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or a specific SCView.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>window</b> - the SCWindow object.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rect</b> - optional. the constrained rect to capture inside the SCWindow. By default, it is the window size.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// WINDOW Example:</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// First create a window and draw inside of it</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s1">SCWindow</span>.new;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front; </span>// comment this to copy offscreen window</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s1">Color</span>.white);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.translate(100, 100);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.color = <span class="s1">Color</span>.blue(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.addWedge((100.rand)@(100.rand), rrand(10, 100), 2pi.rand, 2pi.rand);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.perform([<span class="s13">\stroke</span>, <span class="s13">\fill</span>].choose);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// then grab the window</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.fromWindow(w);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// VIEW Capture Example:</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// First create a window and add some views inside of it</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s1">SCWindow</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = [10, 80].asSpec;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = <span class="s1">SCNumberBox</span>(w, <span class="s1">Rect</span>(20, 20, 60, 40));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s1">SCSlider</span>(w, <span class="s1">Rect</span>(20, 80, 100, 40))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.focusColor_(<span class="s1">Color</span>.red(alpha:0.2))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.value_(b.map(a.value).round(0.01))</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// round the float so it will fit in the SCNumberBox</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// then grab the window</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.fromWindow(w, a.bounds);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p6"><b>Class variables and attributes</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*formats</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns all the valid image formats as an <a href="../../../Collections/Array.html"><span class="s5">Array</span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s10"><span class="Apple-tab-span">	</span></span><span class="s1">SCImage</span>.formats;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*compositingOperations</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns all the valid compositing operations you can use when drawing an <span class="s5">SCImage</span> as an <a href="../../../Collections/Array.html"><span class="s5">Array</span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s10"><span class="Apple-tab-span">	</span></span><span class="s1">SCImage</span>.compositingOperations;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*interpolations</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an <a href="../../../Collections/Array.html"><span class="s5">Array</span></a> of the different levels of interpolation you can specify when drawing an <span class="s5">SCImage</span>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s10"><span class="Apple-tab-span">	</span></span><span class="s1">SCImage</span>.interpolations;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*closeAllPlotWindows</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>close all the <span class="s5">SCImage</span> plot windows currently opened.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Instance Methods</b></p>
-<p class="p7"><br></p>
-<p class="p6"><b>commons / general attributes</b></p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s14"><b><span class="Apple-tab-span">	</span></b></span><b>width</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns the width of the receiver</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>width_</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the width of the receiver</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>height</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns the height of the receiver</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>height_</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the height of the receiver</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>setSize ( width, height )</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the size of the receiver</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>bounds</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns the bounds of the receiver.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>free</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>deallocate the receiver. this method is useful if you want to manage and reclaim yourself resources.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>otherwise you do not need to call this method since each object is automatically garbage collected.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCImage</span>.all;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SCImage<span class="s3">.all;</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>scalesWhenResized</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>flag to tell if the receiver should update its bitmap representation to scale when a resize operation if performed</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>scalesWhenResized_</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the flag to tell if the receiver should update its bitmap representation to scale when a resize operation if performed</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">(</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.bounds.postln; </span>// getting the dimensions</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w =i.plot;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// changing the size of an image</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.scalesWhenResized_(<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.setSize(400, 400 / (i.width / i.height));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a =i.plot;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.close; w.close; i.free;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>url</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns the url of the receiver, if any where supplied at creation, otherwise returns <span class="s5">nil</span>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"http://www.google.com/intl/en_ALL/images/logo.gif"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.url;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>url_(anURL)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>sets the url of the receiver. <span class="s5">May</span> be used for different purpose but try to supply a valid one since it is used for archiving the image as an object.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>accelerated</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>if true, the receiver currently use the CoreImage model, possibly caching its data on GPU, if not the bitmap model.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>accelerated_(aBool)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set whether the receiver should use a CoreImage representation or a bitmap representation.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this method should never be used directly unless you know perfectly what you are doing. Since the SCImage will switch internally and manage itself</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the syncronization between representations.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>interpolation</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>get the level of interpolation used when rendering the image - it has not effect when the <span class="s5">SCImage</span> is accelerated. see <b>*interpolations</b> for a valid range of values.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>interpolation_(interpolation)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the level of interpolation to use when rendering the image - it has not effect when the <span class="s5">SCImage</span> is accelerated. see <b>*interpolations</b> for a valid range of values.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.new(<span class="s1">Document</span>.current.dir +/+ <span class="s11">"vduck2.jpg"</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = i.plot;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// get the image currrent interpolation mode</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation = </span><span class="s13">'none'</span><span class="s3">;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// experiment with interpolation modes</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation = <span class="s13">'low'</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation = 1;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">// same as 'low'</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation = <span class="s13">'high'</span>; w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation = <span class="s13">'default'</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.accelerated_(<span class="s1">true</span>);</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation = </span><span class="s13">'none'</span><span class="s3">; </span>// does not work on coreimage accelerated image</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><br></p>
-<p class="p6"><b>saving and archiving</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>write( path, format )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>write the SCImage to a file.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path</b> - the location where to save it</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>format</b> - (optional) format to use. see SCImage.formats for supported formats. If nil, it will</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get the format depending on the path extension.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.dump<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.write(</span>"~/Desktop/my_image.png"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>storeOn / asCompileString</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.url;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.asCompileString;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.writeArchive(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">nil</span>;</p>
-<p class="p12"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Document</span>.open(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">Object</span>.readArchive(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>rendering</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>plot ( name, bounds, freeOnClose, background, showInfo )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>plots the image in a <a href="../SCWindow.html"><span class="s5">SCWindow</span></a>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name</b> - the title of the SCWindow. may be nil.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - the bounds of the SCWindow. may be nil.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freeOnClose</b> - flag to tell if the SCWindow should free the SCImage when closed. false by default.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>background</b> - additional background to apply to the SCWindow. may be useful for artifacts due to alpha / compositing...</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>showInfo</b> - shows pixel coordinates while the mouse is over the image's plot window. (default is <b>true</b>)</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s7"><span class="Apple-tab-span">	</span></span><span class="s3">i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = i.plot;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = i.plot(showInfo:<span class="s1">false</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// other option - image will be automatically freed when closed</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">).plot(</span>"Hello"<span class="s3">, freeOnClose:</span><span class="s1">true</span><span class="s3">);</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>lockFocus</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>sets the receiver as the current graphic context. <span class="s5">So</span> you can use <a href="../SCPen.html"><span class="s16">SCPen</span></a> to draw inside of it.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>unlockFocus</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>restore the graphic context state. the receiver is not anymore the current graphic context.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s8">(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j = <span class="s1">SCImage</span>.new(400,300);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.lockFocus;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.translate(100, 100);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1000.do{</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.color = <span class="s1">Color</span>.green(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.addAnnularWedge(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(100.rand)@(100.rand),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(10, 50),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(51, 100),<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi.rand,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi.rand</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.perform([<span class="s13">\stroke</span>, <span class="s13">\fill</span>].choose);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.unlockFocus;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.plot;</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.write(</span>"~/Desktop/my_drawing.png"<span class="s3">); </span><span class="s15">// write the image</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>draw ( aFunction )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>shortcut for drawing inside an image. equivalent to :</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>receiver.lockFocus</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>aFunction</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>receiver.unlockFocus</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j = <span class="s1">SCImage</span>.new(400,300);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.draw({ <span class="s1">arg</span> image;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.translate(100, 100);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1000.do {</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.color = <span class="s1">Color</span>.green(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.addAnnularWedge(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(100.rand)@(100.rand),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(10, 50),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(51, 100),<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi.rand,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi.rand</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.perform([<span class="s13">\stroke</span>, <span class="s13">\fill</span>].choose);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>String drawing support on the image</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>drawStringAtPoint(string, point, font, color);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j = <span class="s1">SCImage</span>.new(150,50);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.draw({ <span class="s1">arg</span> bounds;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.drawStringAtPoint(<span class="s11">"Hello, world!"</span>, 10 at 10, <span class="s1">Font</span>(<span class="s11">"Lucida Grande"</span>, 24), <span class="s1">Color</span>.black);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.plot;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.write(</span>"~/Desktop/hello.png"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>j.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s8"><span class="Apple-tab-span">	</span></span><b>drawStringAtPoint( string, point, font, color )</b></p>
-<p class="p3"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>renders *correctly* a String inside an SCImage :) <span class="s17">// to fix to have a compiant interface</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> width, height, tgHeight, ratio, str, font, color, strb, targetWidth=400, shadowColor, run = <span class="s1">true</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>shadowColor = <span class="s1">Color</span>.black;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>color = <span class="s1">Color</span>.gray(0.8);</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>str = </span>"I Love Pixels"<span class="s3">;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>font = <span class="s1">Font</span>(<span class="s11">"Monaco"</span>, 10);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>strb = str.bounds(font);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>width = strb.width;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>height = strb.height;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ratio = height / width;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>(width@(height));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.draw({<span class="s1">|bb|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.smoothing_(<span class="s1">false</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.drawStringAtPoint(str, 0 at 0, font, color);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation_(<span class="s13">\none</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tgHeight = targetWidth * ratio;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s1">SCWindow</span>.new(<span class="s11">""</span>, <span class="s1">Rect</span>(400,400, 450, 150)).drawHook_({</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPen</span>.setShadow(2 at 2, 0.4, color:<span class="s1">Color</span>.red);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.drawInRect(<span class="s1">Rect</span>(5,5,targetWidth, tgHeight));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s1">Color</span>.white);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.onClose_({run = <span class="s1">false</span>; i.free;});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>drawAtPoint( point, fromRect, operation, fraction )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>render the image or a portion of it in the current graphic context.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>point</b> - the <a href="../../../Geometry/Point.html"><span class="s5">Point</span></a> where to draw it</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fromRect</b> - the portion of the <span class="s5">SCImage</span> to use</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>operation</b> - the compositing operation to use. 'sourceOver' is the default.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fraction</b> - the opacity to use, ranging from 0.0 (fully transparent) to 1.0 (fully opaque)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s10"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> operation=<span class="s13">'sourceOver'</span>, fraction=1.0, i, w;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.new(</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>"http://supercollider.sourceforge.net/theme/sc01/icon.supercollider.gif"</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>Document.current.dir +/+ "duck_alpha.png"</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Document</span>.current.dir +/+ <span class="s11">"Swamp.png"</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s1">SCWindow</span>.new(<span class="s11">"SCImage"</span>, <span class="s1">Rect</span>(120, 400, 360, 180)).front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCSlider</span>.new(w, <span class="s1">Rect</span>(10, 150, 150, 16))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.value_(1.0)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s1">arg</span> sl;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fraction = sl.value;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SCPopUpMenu</span>.new(w, <span class="s1">Rect</span>(170, 150, 100, 16))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.items_( <span class="s1">SCImage</span>.compositingOperations.collect({ <span class="s1">arg</span> i; i.asString }) )</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.value_(2)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s1">arg</span> pm;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>operation = <span class="s1">SCImage</span>.compositingOperations.at(pm.value);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.onClose_({ i.free }); </span>// free the image when the window is closed</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook_({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.drawAtPoint(10 at 10, <span class="s1">nil</span>, operation, fraction);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>drawInRect( rect, fromRect, operation, fraction )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>render the image or a portion of it in a specified rectangle of the current graphic context. <span class="s5">This</span> may stretch the image depending on the destination rect.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rect</b> - the <a href="../../../Geometry/Rect.html"><span class="s5">Rect</span></a> where to draw it</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fromRect</b> - the portion of the <span class="s5">SCImage</span> to use</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>operation</b> - the compositing operation to use. 'sourceOver' is the default.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fraction</b> - the opacity to use, ranging from 0.0 (fully transparent) to 1.0 (fully opaque)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.new(</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// "http://supercollider.sourceforge.net/theme/sc01/icon.supercollider.gif"</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Document</span><span class="s3">.current.dir +/+ </span>"icon.supercollider.png"</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s1">SCWindow</span>.new(<span class="s11">"SCImage"</span>, <span class="s1">Rect</span>(120, 400, 360, 180)).front;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.onClose_({ i.free }); </span>// free the image when the window is closed</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook_({</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.drawInRect(<span class="s1">Rect</span>(10,10,50,50), <span class="s1">Rect</span>(10,10,50,50), 2, 1.0); <span class="s15">// only a section</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>tileInRect( rect, fromRect, operation, fraction )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>tile the image or a portion of it in a specified rectangle of the current graphic context. <span class="s5">This</span> may stretch the image depending on the destination rect.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rect</b> - the <a href="../../../Geometry/Rect.html"><span class="s5">Rect</span></a> where to draw it</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fromRect</b> - the portion of the <span class="s5">SCImage</span> to use</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>operation</b> - the compositing operation to use. <span class="s18">'sourceOver'</span> is the default.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <i>Compositing operations are currently disabled for tileInRect</i></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fraction</b> - the opacity to use, ranging from 0.0 (fully transparent) to 1.0 (fully opaque)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.new(</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// "http://supercollider.sourceforge.net/theme/sc01/icon.supercollider.gif"</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Document</span><span class="s3">.current.dir +/+ </span>"icon.supercollider.png"</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s1">SCWindow</span>.new(<span class="s11">"SCImage"</span>, <span class="s1">Rect</span>(120, 400, 360, 180)).front;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.onClose_({ i.free }); </span>// free the image when the window is closed</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook_({</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.tileInRect(w.view.bounds, <span class="s1">nil</span>, 2, 1.0); <span class="s15">// all image contents</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Instance Methods / accessing and setting pixels</b></p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s14"><span class="Apple-tab-span">	</span></span><b>setPixel( rgbaInteger, x, y )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>fill a pixel located at x @ y.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rgbaInteger - an 32 bit <span class="s6">Integer</span> containing color information packed as 8bit <span class="s5">RGBA</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>i = <span class="s1">SCImage</span>.color(60, 60, <span class="s1">Color</span>.blue(0.1,0.1));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = i.plot;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.setPixel([255,0,0,255].asRGBA, 0, 0); <span class="s15">// setting red</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s11">"pixel at 0 @ 0:"</span>+i.getPixel(0,0).rgbaArray).postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s8"><span class="Apple-tab-span">	</span></span><b>getPixel( x, y )</b></p>
-<p class="p3"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>retrieve the pixel value at x @ y as a <span class="s5">RGBA</span> integer</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// A simple example on how to manipulate pixels with SCImage</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span>b = </span>Int32Array<span class="s3">[ </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Integer</span>.fromRGBA(255,0,0,255), <span class="s15">// red</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Integer</span>.fromRGBA(0,255,0,255), <span class="s15">// green</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Integer</span>.fromRGBA(0,0,255,255), <span class="s15">// blue</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Integer</span>.fromRGBA(255,0,255,255) <span class="s15">// purple</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>];</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>b[0].red; </span>// 255 see Integer.red</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>b[0].green; </span>// 0 see Integer.green</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>b[0].blue; </span>// 0 see Integer.blue</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>b[0].alpha; </span>// 255 see Integer.alpha</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = <span class="s1">SCImage</span>.new(b.size at 1).pixels_(b).interpolation_(<span class="s13">\none</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.plot;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// Set + Get</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>a.setPixel([255, 0, 255, 128].asRGBA </span>/* create an Integer from 0-255 integer rgba value */<span class="s3">, 0, 0).plot;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p = a.getPixel(0,0);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p.red; <span class="s15">// 255</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p.green; <span class="s15">// 0</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p.blue; <span class="s15">// 255</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p.alpha; <span class="s15">// 128</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// now another important example</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.setPixel([255, 0, 255, 0].asRGBA, 1, 0).plot; <span class="s15">// clear color -> alpha is 0</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p = a.getPixel(1,0);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>p.red; </span>// you expect 255 but you get 0 ??? Why = because SCImage uses premultiplied color component value internally</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// meaning all Red, Green, and Blue component are premultiplied by the alpha</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// if alpha is 0 you get 0 back for all components.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p.green; <span class="s15">// 0</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p.blue; <span class="s15">// 0</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p.alpha; <span class="s15">// 0</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>p = a.getColor(1,0); </span>// more explicit - but same here</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>setColor( color, x, y )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>fill the pixel located at x @ y with the specified <b>color</b>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>getColor( x, y )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>retrieve the pixel value at x @ y as a <a href="../../GUI-Tools/Color.html"><span class="s5">Color</span></a>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pixels</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>retrieve all the pixels of the receiver.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Carefull: the returned <span class="s5">Array</span> is a <a href="../../../Collections/Int32Array.html"><span class="s5">Int32Array</span></a> of size receiver.width * receiver.height containing all pixel values</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>as 32bit <span class="s5">Integer</span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>loadPixels(array, region, start)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>load all the pixels of the receiver in an array. it is better and faster to call this function instead of <b>pixels</b> if you plan to retrieve frequently the pixel data (since it won't allocate a new array everytime !)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b> - the array that will be filled. Should be an <a href="../../../Collections/Int32Array.html"><span class="s19">Int32Array</span></a> of size receiver.width * receiver.height.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>region</b> - the targeted rectangular region. (nil by default, meaning full size)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>start</b> - the start index of the array. (0 by default)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// exec one line at a time</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.new(</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// "http://supercollider.sourceforge.net/theme/sc01/icon.supercollider.gif"</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Document</span><span class="s3">.current.dir +/+ </span>"icon.supercollider.png"</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><br></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// first grab the pixels<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p = i.pixels;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// do some mods - here invert</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.invert;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reload directly in my array - do not need to call i.pixels again</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.loadPixels(p);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.free;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>pixels_(array)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set all the pixels of the receiver.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>array - an <a href="../../../Collections/Int32Array.html"><span class="s5">Int32Array</span></a> of size receiver.width * receiver.height containing all pixel values</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>as 32bit <span class="s5">Integer</span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>setPixels( array, rect, start )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the pixels in a specific portion of the receiver.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b> - an <a href="../../../Collections/Int32Array.html"><span class="s5">Int32Array</span></a> of size <b>rect</b>.width * <b>rect</b>.height containing all pixel values</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>as 32bit <span class="s5">Integer</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rect</b> - a rectangle defining the portion to update in the receiver. <span class="s5">By</span> default <b>rect</b> is <span class="s5">nil</span>, meaning</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>full image size.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>start</b> - the array start index. (default is 0)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s10"><b><span class="Apple-tab-span">	</span></b></span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.new(20 at 20);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.pixels_(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Int32Array</span>.fill(i.width * i.height, {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Integer</span>.fromRGBA(255.rand,127.rand,255.rand,255)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//i.interpolation_(\none); // uncomment to see the difference</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.pixels.postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = <span class="s1">SCImage</span>.color(50 at 50, <span class="s1">Color</span>.white);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.setPixels(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Int32Array</span>.fill(20*20,{<span class="s1">Integer</span>.fromRGBA(255.rand, 127.rand, 255.rand, 255)}),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Rect</span>(10,10,20,20)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.interpolation_(</span><span class="s13">\none</span><span class="s3">); </span>// uncomment to see the difference</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.pixels.postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Instance Methods / Views addition</b></p>
-<p class="p19"><span class="Apple-tab-span">	</span>you can now use a SCImage as a valid view background. 16 drawing modes are defined to behave</p>
-<p class="p19"><span class="Apple-tab-span">	</span>differently.</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tileMode values:</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 - fixed to left, fixed to top</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 - horizontally tile, fixed to top</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3 - fixed to right, fixed to top</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 - fixed to left, vertically tile</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5 - horizontally tile, vertically tile</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6 - fixed to right, vertically tile</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7 - fixed to left, fixed to bottom</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8 - horizontally tile, fixed to bottom</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>9 - fixed to right, fixed to bottom</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10 - fit</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>11 - center, center (scale)</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>12 - center , fixed to top</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>13 - center , fixed to bottom</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>14 - fixed to left, center</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>15 - fixed to right, center</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>16 - center, center (no scale)</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s8"><span class="Apple-tab-span">	</span></span><b>backgroundImage_( image, tileMode=1, alpha=1.0, fromRect )</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>image</b> - the SCImage to use</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>tileMode</b> - the mode to use. by default fixed to left, fixed to top</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alpha</b> - opacity 0 < x < 1</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fromRect</b> - the portion of the image to use. by default use the full image.</p>
-<p class="p12"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = 1.0;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s1">SCImage</span>.new(<span class="s1">Document</span>.current.dir +/+ <span class="s11">"vduck2.jpg"</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s1">Rect</span>(20,3,40,40);</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s1">SCWindow</span><span class="s3">.new(</span>"SCImage background"<span class="s3"> </span><span class="s15">/*, textured:false*/</span><span class="s3"> );</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s1">Color</span>.gray);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 5, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// monte carlo :) exec every line to test</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// r = nil; // uncomment for full image</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 1, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 2, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 3, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 4, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 5, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 6, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 7, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 8, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 9, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 10, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 11, b, r); <span class="s15">// find best ratio - move to see</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 12, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 13, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 14, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 15, b, r);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.backgroundImage_(a, 16, b, r);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this is safe even if window is still open because Background object holds the SCImage</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s1">SCWindow</span><span class="s3">.new(</span>"SCImage background"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = <span class="s1">SC2DSlider</span>.new(w, <span class="s1">Rect</span>(10,10,200,200))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.backgroundImage_( a, 5, 1, <span class="s1">Rect</span>(0,0,10,10) );</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.free; <span class="s15">// safe</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> bounds = <span class="s1">Rect</span>(10,10,150,18);</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s1">SCWindow</span><span class="s3">.new(</span>"SCImage background"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = <span class="s1">SCSlider</span>.new(w, bounds)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.backgroundImage_(a);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.free; <span class="s15">// safe</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Instance Methods / Attributes for SCImageFilter support</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s10"><span class="Apple-tab-span">	</span></span>see <a href="SCImageFilter.html"><span class="s12">SCImageFilter</span></a> for more info</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>applyFilters ( filters, crop, region )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>apply an array of <a href="SCImageFilter.html"><span class="s12">SCImageFilter</span></a> to the image. this should be considered as an in place operation, meaning the SCImage is altered after it.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>filters</b> - a SCImageFilter or an array of <a href="SCImageFilter.html"><span class="s12">SCImageFilter</span></a> to be applied</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>crop</b> - the crop region to finally use. This may be required for extending bounds since some SCImageFilter / CoreImageFilters require to set a wider</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>region (to be applied correctly) or may create a huge image. Setting crop to nil sets no crop region. In case the current maximum size of a filtered SCImage is 4096 / 4096. Any larger size will be clipped.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>by default crop is constrained to the receiver bounds.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>region</b> - NOTE: supported only in Mac OS 10.5 and later. option to constrain the filter to a specific region IN the SCImage.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// ******** Built In CoreImage Generators ********</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// Generators are not filters, they actually create an image but do not need an input image</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// you just have to create an image of a new size</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// ** The Simple Random Filter **</p>
-<p class="p11"><span class="Apple-tab-span">	</span>(</p>
-<p class="p21"><span class="s3"><span class="Apple-tab-span">	</span>f = </span><span class="s1">SCImageFilter</span><span class="s3">.new(</span>\CIRandomGenerator<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = <span class="s1">SCImage</span>.new(500 at 500);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.applyFilters(f);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = a.plot(freeOnClose:<span class="s1">true</span>, background:<span class="s1">Color</span>.black);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.bounds.postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// ** The StarShine example **</p>
-<p class="p11"><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s1">var</span> width=500, height=500, centerVector;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>centerVector = [ width*0.5, height*0.5 ];</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = <span class="s1">SCImage</span>.new(500 at 500);</p>
-<p class="p21"><span class="s3"><span class="Apple-tab-span">	</span>f = </span><span class="s1">SCImageFilter</span><span class="s3">.new(</span>\CIStarShineGenerator<span class="s3">);</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.center_(centerVector);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.radius_(width*0.05);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.color_(<span class="s1">Color</span>.blue);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.crossWidth_(2.0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.crossAngle_(0.0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.crossOpacity_(-4.0);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.applyFilters(f);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = a.plot(freeOnClose:<span class="s1">true</span>, background:<span class="s1">Color</span>.gray); <span class="s15">// change background to see</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// ** Starshine + Pixellate + ZoomBlur **</p>
-<p class="p11"><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s1">var</span> width=500, height=500, centerVector;</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>centerVector = [ width*0.5, height*0.5 ];</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = <span class="s1">SCImage</span>.new(500 at 500);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s3"><span class="Apple-tab-span">	</span>f = </span><span class="s1">SCImageFilter</span><span class="s3">.new(</span>\CIStarShineGenerator<span class="s3">);</span></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span>g = </span>SCImageFilter<span class="s3">.new(</span><span class="s13">\CIPixellate</span><span class="s3">);</span></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span>h = </span>SCImageFilter<span class="s3">.new(</span><span class="s13">\CIZoomBlur</span><span class="s3">);</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.center_(centerVector);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.radius_(width*0.05);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.color_(<span class="s1">Color</span>.blue);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.crossWidth_(2.0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.crossAngle_(0.0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f.crossOpacity_(-4.0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.center_(centerVector);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>h.center_(centerVector);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>h.amount_(50);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.applyFilters([f, g, h]);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = a.plot(freeOnClose:<span class="s1">true</span>, background:<span class="s1">Color</span>.black);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>filteredWith( filters, crop )</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a new SCImage, copy of the receiver filtered with an array of SCImageFilter.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arguments are the same as applyFilter (except for <b>region</b>).</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Beware: you are responsible for freeing the newly created SCImage !!!</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>filters</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>filters is the instance variable that holds the array of SCImageFilter attached to the receiver. This is a convenient for applying filters out place and changing</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the SCImageFilter's attributes. see <b>addFilter</b>, <b>removeFilter</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>see <a href="SCImageFilter.html"><span class="s12">SCImageFilter</span></a> for an example on how to use the <b>filters </b>array.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>addFilter ( filter )</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>filter</b> - a SCImageFilter to apply before rendering of the image</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can also attach filters to the receiver for real-time changing operations. In this case the receiver will create a cache before each rendering</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>to maintain his previous state, and allowing you to use filters without applying them in place. The cache is managed directly by the receiver.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can add several filters to the receiver, the first filter in the array is the first applied in the rendering chain.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see <a href="SCImageFilter.html"><span class="s12">SCImageFilter</span></a> for an example on how to use <b>addFilter</b>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>removeFilter( filter )</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>filter</b> - the SCImageFilter to remove from the rendering chain.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see <a href="SCImageFilter.html"><span class="s12">SCImageFilter</span></a> for an example on how to use <b>removeFilter</b>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>flatten</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if <b>filters</b> is not zero sized, this method will apply all those filters in place.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if the image is accelerated this method force a bitmap representation of the receiver.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>invert</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>invert the receiver</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.invert;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>crop (aRect)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>crop the receiver</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aRect</b> - the cropping region</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s8">(</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = </span><span class="s1">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.crop( <span class="s1">Rect</span>(10,10,120,100) );</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.plot(freeOnClose:<span class="s1">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Instance Methods / Attributes for SCImageKernel support</b></p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s14"><b><span class="Apple-tab-span">	</span></b></span>see <a href="SCImageKernel.html"><span class="s12">SCImageKernel</span></a> for examples and more info.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>applyKernel( kernel )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>apply a Kernel in place. the receiver is modified after this call.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>kernel</b> - a SCImageKernel</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCImage/SCImageFilter.html b/Help/GUI/Cocoa-GUI/SCImage/SCImageFilter.html
deleted file mode 100644
index 4d2c0d0..0000000
--- a/Help/GUI/Cocoa-GUI/SCImage/SCImageFilter.html
+++ /dev/null
@@ -1,349 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #003dd8; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #416a20}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #9e2212}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0033b4}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #606060}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #9e2212; min-height: 14.0px}
-span.s1 {color: #003dd8}
-span.s2 {text-decoration: underline}
-span.s3 {color: #000000}
-span.s4 {color: #0033b4}
-span.s5 {color: #416a20}
-span.s6 {color: #9e2212}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {color: #606060}
-span.s9 {font: 14.0px Helvetica}
-span.s10 {font: 12.0px Helvetica}
-span.s11 {color: #0000ff}
-span.s12 {font: 10.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SCImageFilter</b></p>
-<p class="p2"><br></p>
-<p class="p3">filter class to use with <a href="SCImage.html"><span class="s1">SCImage</span></a></p>
-<p class="p3">currently this class represents the CoreImage Filters you can apply to a SCImage.</p>
-<p class="p4"><br></p>
-<p class="p3">all the built-in filters and docs:</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2">http://developer.apple.com/documentation/GraphicsImaging/Reference/CoreImageFilterReference/Reference/reference.html</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Class Methods</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span></span><b>*new (filterName, args)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>filterName - </b>The filter name <a href="../../../Core/Symbol.html"><span class="s1">Symbol</span></a> or <a href="../../../Collections/String.html"><span class="s1">String</span></a></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>args - </b>The filter name <a href="../../../Core/Symbol.html"><span class="s1">Symbol</span></a> or <a href="../../../Collections/String.html"><span class="s1">String</span></a></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>f = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span>\CIStarShineGenerator<span class="s3">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.attributes;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// or you can do also Synth like style if you already know the attributes of this synth</p>
-<p class="p8"><span class="Apple-tab-span">	</span>f = <span class="s4">SCImageFilter</span>.new(<span class="s5">\CIStarShineGenerator</span>, [<span class="s5">\center</span>, [200,200], <span class="s5">\radius</span>, 200*0.05]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.values; <span class="s6">//</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span></span><b>*filterCategories</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a Dictionary containing all the filters associated by categories.</p>
-<p class="p10"><span class="s7"><b><span class="Apple-tab-span">	</span></b></span>// getting filter categories (dictionary)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SCImageFilter</span>.filterCategories.keysDo({<span class="s4">|cat|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cat.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"ok"</span>.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// getting Filters for a category - returns a SymbolArray</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">SCImageFilter</span><span class="s3">.filterCategories.at(</span>\CICategoryGeometryAdjustment<span class="s3">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">SCImageFilter</span>.filterCategories.at(<span class="s5">\CICategoryGenerator</span>);</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="s7"><b><span class="Apple-tab-span">	</span></b></span>// finding Non Built In Plugins usually plugins loaded in (/Library/Graphics/Image Units/)</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// all plugins are loaded at startup</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// you can find free plugins at http://www.noiseindustries.com/products/</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">var</span> n = 0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">SCImageFilter</span>.filterCategories.do ({</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>|symbolArray|</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>symbolArray.do ({<span class="s4">|pluginName|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(pluginName.asString.beginsWith(<span class="s8">"CI"</span>).not, {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s8">"External Filter Found: "</span> ++ pluginName).postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n = n+1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(n + <span class="s8">"plugins found"</span>).postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>n;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Instance Methods</b></p>
-<p class="p12"><br></p>
-<p class="p3"><span class="s9"><b><span class="Apple-tab-span">	</span></b></span><b>attributes<span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an <a href="../../../Collections/IdentityDictionary.html"><span class="s1">IdentityDictionary</span></a> containing for each association:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the attribute/property name as the key.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the supercollider <a href="../../../Core/Kernel/Class.html"><span class="s1">Class</span></a> you should use as an argument to set the attribute.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Once you know the attributes you can set them like using normal instance setters, use the name and append '_'.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s10"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>f = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span>\CIStarShineGenerator<span class="s3">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.attributes.keysValuesDo({<span class="s4">|k, v|</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</span>"CIStarShineGenerator responds to "<span class="s3">++k.asString++</span>"_("<span class="s3">++v.asString++</span>")"<span class="s3">).postln;</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.center_([200,200]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.radius_(200*0.05);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>attributeRange</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>get the numerical range and the default Value for an attribute.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns an Array as [ min, max, default ]</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>min, max, or default may be a <a href="../../../Math/Float.html"><span class="s11">Float</span></a>, a <a href="../../GUI-Tools/Color.html"><span class="s11">Color</span></a>, an <a href="../../../Collections/Array.html"><span class="s11">Array</span></a> or <a href="../../../Core/Nil.html"><span class="s11">Nil</span></a>.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// a SCImageFilter</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>f = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span>\CIFlashTransition<span class="s3">);</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.dump;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.attributes;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.attributeRange(<span class="s5">\time</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// getting all attributes MIN - MAX possible values</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>f.attributes.keysDo({<span class="s4">|attr|</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(attr ++ </span><span class="s8">" = "</span><span class="s3"> + f.attributeRange(attr)).postln; </span>// nil results means there is no min max for those attributes</p>
-<p class="p8"><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>values</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns all the values you setted for each attributes. If a value is not explicitely setted</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for an attribute, it will be set to default when applied to the SCImage.</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span>\CIStarShineGenerator<span class="s3">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s10"><span class="Apple-tab-span">	</span></span>f.center_([200,200]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.radius_(200*0.05);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.color_(<span class="s4">Color</span>.blue);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.crossWidth_(2.0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.crossAngle_(0.0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.crossOpacity_(-4.0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.values.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s12"><span class="Apple-tab-span">	</span></span><b>set( args )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the attributes for this SCImageFilter</p>
-<p class="p8"><span class="s10"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span>\CIStarShineGenerator<span class="s3">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s10"><span class="Apple-tab-span">	</span></span>f.set(<span class="s5">\center</span>, [200,200], <span class="s5">\radius</span>, 200*0.05, <span class="s5">\color</span>, <span class="s4">Color</span>.blue, <span class="s5">\crossWidth</span>, 2.0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.values.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)<span class="s10"><span class="Apple-tab-span">	</span></span></p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s12"><span class="Apple-tab-span">	</span></span><b>enable_(yorn)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>enable or not the Filter when applied to a SCImage. If <b>yorn</b> is false, applying the filter will do</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nothing.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>enable</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is the filter enabled ? <b>true</b> is default</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p10">//EXAMPLES</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">// thor's fast experimentation request</p>
-<p class="p10">// example with the filters array wich allows you to use filters without applying them in place</p>
-<p class="p10">// convenient for RT use / test or whatever...</p>
-<p class="p9"><br></p>
-<p class="p10">// here scale down the image otherwise with the zoomblur it will take your computer</p>
-<p class="p10">// to its knees using addFilter and not applyFilter</p>
-<p class="p10">// kinda fast swapping test</p>
-<p class="p9"><br></p>
-<p class="p8">a = <span class="s4">SCImage</span>.new(<span class="s8">"/Library/Desktop Pictures/Plants/Peony.jpg"</span>).scalesWhenResized_(<span class="s4">true</span>).setSize(500, 400);</p>
-<p class="p10"><span class="s3">a.plot; </span>// look at me first - i am beautiful</p>
-<p class="p9"><br></p>
-<p class="p10">// but i want you to be posterize</p>
-<p class="p8">(</p>
-<p class="p7"><span class="s3">h = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span>\CIColorPosterize<span class="s3">);</span></p>
-<p class="p10"><span class="s3">a.addFilter(h); </span>// first call needed</p>
-<p class="p10"><span class="s3">a.plot; </span>// there should have it</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p10">// then you can freely access and set the slot directly - easier</p>
-<p class="p8">(</p>
-<p class="p8">a.filters[0] = <span class="s4">SCImageFilter</span>.new(<span class="s5">\CIColorInvert</span>);</p>
-<p class="p8">a.plot;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p10">// again</p>
-<p class="p8">(</p>
-<p class="p8">a.filters[0] = <span class="s4">SCImageFilter</span>.new(<span class="s5">\CIZoomBlur</span>);</p>
-<p class="p8">a.plot;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p10">// again</p>
-<p class="p8">(</p>
-<p class="p8">a.filters[0] = <span class="s4">SCImageFilter</span>.new(<span class="s5">\CIRandomGenerator</span>);</p>
-<p class="p8">a.plot;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8">a.removeAllFilters;</p>
-<p class="p8">a.plot(freeOnClose:<span class="s4">true</span>);</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">// ** Masking Example **</p>
-<p class="p8">(</p>
-<p class="p10"><span class="s3">f = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span><span class="s5">\CIColorMonochrome</span><span class="s3">); </span>// create a GrayScale image</p>
-<p class="p10"><span class="s3">g = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span><span class="s5">\CISourceInCompositing</span><span class="s3">); </span>// compositing we will use</p>
-<p class="p8">f.color_(<span class="s4">Color</span>.black);</p>
-<p class="p8">f.intensity_(1.0);</p>
-<p class="p8">a = <span class="s4">SCImage</span>.new(<span class="s4">Document</span>.current.dir +/+ <span class="s8">"vduck2.jpg"</span>);</p>
-<p class="p8">a.bounds;</p>
-<p class="p8">b = <span class="s4">SCImage</span>.new(<span class="s4">Document</span>.current.dir +/+ <span class="s8">"flowers2.jpg"</span>);</p>
-<p class="p10"><span class="s3">a.applyFilters([f, </span><span class="s4">SCImageFilter</span><span class="s3">(</span><span class="s5">\CIColorInvert</span><span class="s3">), </span><span class="s4">SCImageFilter</span><span class="s3">(</span><span class="s5">\CIMaskToAlpha</span><span class="s3">)]); </span>// grayscale + invert + maskToAlpha = create a mask</p>
-<p class="p10"><span class="s3">g.backgroundImage_(a); </span>// set up background image</p>
-<p class="p10"><span class="s3">b.applyFilters(g); </span>// create masked image</p>
-<p class="p8">a.free;</p>
-<p class="p10"><span class="s3">w = b.plot(freeOnClose:</span><span class="s4">true</span><span class="s3">, background:</span><span class="s4">Color</span><span class="s3">.clear); </span>// set to clear color to see plainly the image</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">// *** Kinda very simple real time FX using the .filters property of SCImage **</p>
-<p class="p10">// SCImage.filters provides a way to set up filters to apply in the rendering chain</p>
-<p class="p10">// this can be useful to modify in RT some filter properties</p>
-<p class="p10">// but they won't be processed inplace, they will be computed at each rendering</p>
-<p class="p10">// here the filter calc is performed at each rendering call</p>
-<p class="p10">// so this is convenient but not optimal</p>
-<p class="p10">// SCPhotoshop :)</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s4">var</span> width=500, height=500, centerVector;</p>
-<p class="p8"><span class="s4">var</span> controller, specs;</p>
-<p class="p9"><br></p>
-<p class="p8">centerVector = [width*0.5, height*0.5];</p>
-<p class="p8">a = <span class="s4">SCImage</span>.new(500 at 500);</p>
-<p class="p8">a.accelerated_(<span class="s4">true</span>);</p>
-<p class="p7"><span class="s3">f = </span><span class="s4">SCImageFilter</span><span class="s3">.new(</span>\CIStarShineGenerator<span class="s3">);</span></p>
-<p class="p11"><span class="s3">g = </span>SCImageFilter<span class="s3">.new(</span><span class="s5">\CIPixellate</span><span class="s3">);</span></p>
-<p class="p11"><span class="s3">h = </span>SCImageFilter<span class="s3">.new(</span><span class="s5">\CIZoomBlur</span><span class="s3">);</span></p>
-<p class="p9"><br></p>
-<p class="p8">f.center_(centerVector);</p>
-<p class="p8">f.radius_(width*0.05);</p>
-<p class="p8">f.color_(<span class="s4">Color</span>.green);</p>
-<p class="p8">f.crossWidth_(2.0);</p>
-<p class="p8">f.crossAngle_(0.0);</p>
-<p class="p8">f.crossOpacity_(-4.0);</p>
-<p class="p8">g.center_(centerVector);</p>
-<p class="p8">h.center_(centerVector);</p>
-<p class="p8">h.amount_(50);</p>
-<p class="p9"><br></p>
-<p class="p10">// simple example control</p>
-<p class="p8">specs = [</p>
-<p class="p8"><span class="Apple-tab-span">	</span>[f, <span class="s5">\crossOpacity_</span>, [-8, 0].asSpec, -4],</p>
-<p class="p8"><span class="Apple-tab-span">	</span>[f, <span class="s5">\crossAngle_</span>, [-pi, pi].asSpec, 0.0],</p>
-<p class="p8"><span class="Apple-tab-span">	</span>[h, <span class="s5">\amount_</span>, [0, 200].asSpec, 50],</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3">]; </span>// CIStarShine opacity, CIZoomBlur</p>
-<p class="p9"><br></p>
-<p class="p8">controller = <span class="s4">SCWindow</span>.new(<span class="s8">"Close Me First !!!"</span>, <span class="s4">Rect</span>(400,400,300,specs.size * 40));</p>
-<p class="p8">controller.view.decorator = <span class="s4">FlowLayout</span>(controller.view.bounds.insetBy(10), 10 at 10);</p>
-<p class="p8">specs.size.do {<span class="s4">|i|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">SCSlider</span>.new(controller, <span class="s4">Rect</span>(0,0,150,20))</p>
-<p class="p8"><span class="Apple-tab-span">	</span>.action_({<span class="s4">|obj|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>specs[i][0].perform(specs[i][1], specs[i][2].map(obj.value));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>})</p>
-<p class="p8"><span class="Apple-tab-span">	</span>.value_(specs[i][2].unmap(specs[i][3]));</p>
-<p class="p8"><span class="Apple-tab-span">	</span>controller.view.decorator.nextLine;</p>
-<p class="p8">};</p>
-<p class="p9"><br></p>
-<p class="p10">// adding filters</p>
-<p class="p8">a.addFilter(f);</p>
-<p class="p8">a.addFilter(g);</p>
-<p class="p8">a.addFilter(h);</p>
-<p class="p9"><br></p>
-<p class="p8">a.filters.do {<span class="s4">|filt, i|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>if(i != 0, {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SCButton</span>.new(controller, <span class="s4">Rect</span>(0,0,20,20))</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s4">|obj|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>filt.enable_(obj.value != 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[<span class="s8">""</span>, <span class="s4">Color</span>.white], [<span class="s8">""</span>, <span class="s4">Color</span>.white, <span class="s4">Color</span>.black]]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>});</p>
-<p class="p8">};</p>
-<p class="p9"><br></p>
-<p class="p10">// plotting</p>
-<p class="p8">w = a.plot(background:<span class="s4">Color</span>.black);</p>
-<p class="p8">controller.front;</p>
-<p class="p8">controller.onClose_({</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.defer(0.1);</p>
-<p class="p8">});</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">/*</p>
-<p class="p10">// ******** Using EXTERNAL NI Image Units Generator + FX *******</p>
-<p class="p10">// Download them --- MIGHT BE 10.5 Only so</p>
-<p class="p10">// http://www.noiseindustries.com/downloads/Units.dmg</p>
-<p class="p10">// When using for the first time an Image plugin, it might take some extra time due to the plugin loading</p>
-<p class="p10">// Random</p>
-<p class="p10">(</p>
-<p class="p10">f = SCImageFilter.new(\NINoiseGenerator);</p>
-<p class="p10">f.width_(500); f.height_(500);</p>
-<p class="p10">f.grayscale_(true);</p>
-<p class="p10">a = SCImage.new(500 at 500);</p>
-<p class="p10">a.applyFilters(f);</p>
-<p class="p10">w = a.plot(freeOnClose:true, background:Color.black);</p>
-<p class="p10">)</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p10">(</p>
-<p class="p10">f = SCImageFilter.new(\NIDropShadow);</p>
-<p class="p10">f.offsetX_(0);</p>
-<p class="p10">f.offsetY_(0);</p>
-<p class="p10">f.radius_(30);</p>
-<p class="p10">f.shadowColor_(Color.red);</p>
-<p class="p10">a = SCImage.new("vduck2.jpg");</p>
-<p class="p10">a.applyFilters(f, a.bounds.outsetBy(500));</p>
-<p class="p10">w = a.plot(freeOnClose:true, background:Color.clear);</p>
-<p class="p10">a.bounds;</p>
-<p class="p10">)</p>
-<p class="p14"><br></p>
-<p class="p10">(</p>
-<p class="p10">f = SCImageFilter.new(\NIDotsGenerator);</p>
-<p class="p10">f.softness_(1);</p>
-<p class="p10">a = SCImage.new(500 at 500);</p>
-<p class="p10">a.applyFilters(f);</p>
-<p class="p10">w = a.plot(freeOnClose:true, background:Color.black);</p>
-<p class="p10">)</p>
-<p class="p14"><br></p>
-<p class="p10">(</p>
-<p class="p10">f = SCImageFilter.new(\NICircle);</p>
-<p class="p10">a = SCImage.new(500 at 500);</p>
-<p class="p10">a.applyFilters(f);</p>
-<p class="p10">w = a.plot(freeOnClose:true);</p>
-<p class="p10">)</p>
-<p class="p10">*/</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCImage/SCImageKernel.html b/Help/GUI/Cocoa-GUI/SCImage/SCImageKernel.html
deleted file mode 100644
index 3c82e2b..0000000
--- a/Help/GUI/Cocoa-GUI/SCImage/SCImageKernel.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.33">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #a32213}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #a32213; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #8e1f11}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0032b4}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #606060; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #9e210a}
-p.p15 {margin: 0.0px 0.0px 0.0px 36.0px; text-align: justify; text-indent: -36.0px; font: 10.0px Monaco; color: #9e210a; background-color: #f4f4f4}
-p.p16 {margin: 0.0px 0.0px 0.0px 36.0px; text-align: justify; text-indent: -36.0px; font: 10.0px Monaco; color: #9e210a}
-span.s1 {color: #0043f0}
-span.s2 {color: #0042e5}
-span.s3 {color: #0040e6}
-span.s4 {text-decoration: underline}
-span.s5 {font: 14.0px Helvetica}
-span.s6 {color: #002da2}
-span.s7 {color: #0032b4}
-span.s8 {color: #606060}
-span.s9 {color: #9e210a}
-span.s10 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SCImageKernel</b></p>
-<p class="p2">// very experimental :)</p>
-<p class="p3"><br></p>
-<p class="p4">kernel class to use with <a href="SCImage.html"><span class="s1">SCImage</span></a><span class="s2">.</span> Currently this class represents the CoreImage <b>CIKernel</b> you can apply to a <a href="SCImage.html"><span class="s3">SCImage</span></a>. The Kernel language is a subset of the <i>OpenGL Shading Language</i>.</p>
-<p class="p5"><br></p>
-<p class="p4">more information about the Kernel Language can be found here :</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s4">http://developer.apple.com/documentation/GraphicsImaging/Reference/CIKernelLangRef/Introduction/chapter_1_section_1.html</span></p>
-<p class="p5"><br></p>
-<p class="p4">and here:</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s4">http://developer.apple.com/documentation/GraphicsImaging/Reference/CIKernelLangRef/chapter_2_section_1.html#//apple_ref/doc/uid/TP40004397-CH206-TPXREF101</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">here is the translation table between Kernel language Objects and SuperCollider objects</p>
-<p class="p4">--------------------------------------------------------------------------------------------------------------------------------------------------</p>
-<p class="p4"><b> </span>Kernel Language Object<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>|<span class="Apple-tab-span">	</span><b>SuperCollider Object</b></p>
-<p class="p4">--------------------------------------------------------------------------------------------------------------------------------------------------</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sampler<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>|<span class="Apple-tab-span">	</span><a href="SCImage.html"><span class="s2">SCImage</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span>__color<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>|<span class="Apple-tab-span">	</span><a href="../../GUI-Tools/Color.html"><span class="s2">Color</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span>float<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>|<span class="Apple-tab-span">	</span><a href="../../../Math/Number.html"><span class="s2">Number</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span>vec2, vec3, vec4<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>|<span class="Apple-tab-span">	</span><a href="../../../Collections/Array.html"><span class="s1">Array</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span>__table<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>| <span class="Apple-tab-span">	</span><a href="SCImage.html"><span class="s2">SCImage</span></a> (basically the __table modifier just use Images as a data providers - LUT)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Class Methods</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><span class="s5"><b><span class="Apple-tab-span">	</span></b></span><b>*new( shader, values, bounds )</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>creates a new <span class="s6">SCImageKernel</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>shader</b> - optional. the shader code string. <span class="s6">nil</span> by default</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>values</b> - optional. the values that match the kernel proc function defined in the shader string. <span class="s6">nil</span> by default</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - optional. not used for now. <span class="s6">nil</span> by default</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Instance Methods</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><span class="s5"><b><span class="Apple-tab-span">	</span></b></span><b>shader</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>get the shader string.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>shader_</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the shader string.<span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p4"><span class="s5"><b><span class="Apple-tab-span">	</span></b></span><b>values</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>get the values array.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>values_</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the values array.<span class="Apple-tab-span">	</span>the object indexes in the values Array must match the argument declaration order as defined in the main</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><i>kernel vec4 routine</i>. See examples for more info.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><span class="s5"><b><span class="Apple-tab-span">	</span></b></span><b>isValid</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>very basic verification to tell if all arguments of the shader are set.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span><b>compile</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>compile the SCImageKernel object (and cache it). </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Note: when rendered the first time, the kernel object is always compiled first.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If you plan to change the shader string after, you must explicitely compile it to make it effective.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8">/**** Kernels ****/</p>
-<p class="p8">// very experimental</p>
-<p class="p8">// COLOR INVERSION SHADER EXAMPLE</p>
-<p class="p9">(</p>
-<p class="p9">a = <span class="s7">SCImage</span>.new(<span class="s7">Document</span>.current.dir +/+ <span class="s8">"vduck2.jpg"</span>); <span class="s9">// get the image</span></p>
-<p class="p10"><span class="s10">k = </span>SCImageKernel<span class="s10">.new;</span></p>
-<p class="p9">k.shader_(<span class="s8">"</span></p>
-<p class="p11"><br></p>
-<p class="p12">vec4<span class="Apple-tab-span">	</span>invertPixel(vec4 pix) {</p>
-<p class="p12"><span class="Apple-tab-span">	</span>return vec4(1.0 - pix.r, 1.0 - pix.g, 1.0 - pix.b, pix.a);</p>
-<p class="p12">}</p>
-<p class="p11"><br></p>
-<p class="p12">kernel vec4 _invertColor(sampler source)</p>
-<p class="p12">{</p>
-<p class="p12"><span class="Apple-tab-span">	</span>vec4 pixel;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>pixel = sample(source, samplerCoord(source));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>unpremultiply(pixel);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>return unpremultiply(invertPixel(pixel));</p>
-<p class="p12">}</p>
-<p class="p9"><span class="s8">"</span>);</p>
-<p class="p13"><br></p>
-<p class="p14">// the argument order should be kept in the array</p>
-<p class="p14">// here we need only the "sampler" argument wich should be as the translation table informs you a SCImage</p>
-<p class="p14">// the signature of the Kernel function is normaly 'kernel vec4'</p>
-<p class="p14">// you can of course add other functions in the shader</p>
-<p class="p9">k.values_([a]);</p>
-<p class="p13"><br></p>
-<p class="p9">k.isValid.postln; <span class="s9">// is it ok</span></p>
-<p class="p9">a.applyKernel(k);</p>
-<p class="p13"><br></p>
-<p class="p9">w = a.plot(freeOnClose:<span class="s7">true</span>);</p>
-<p class="p9">)</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p9">(</p>
-<p class="p14">// ANOTHER APPLE KERNEL EXAMPLE - See CoreImage programming guide for original example</p>
-<p class="p9">a = <span class="s7">SCImage</span>.new(<span class="s7">Document</span>.current.dir +/+ <span class="s8">"vduck2.jpg"</span>); <span class="s9">// get the image</span></p>
-<p class="p10"><span class="s10">k = </span>SCImageKernel<span class="s10">.new;</span></p>
-<p class="p9">k.shader_(<span class="s8">"</span></p>
-<p class="p12">vec2 testVec(float x, float y)</p>
-<p class="p12">{</p>
-<p class="p12"><span class="Apple-tab-span">	</span>return vec2(x, y);</p>
-<p class="p12">}</p>
-<p class="p11"><br></p>
-<p class="p12">kernel vec4 testKernelFromApple( sampler src, __color color, float distance, float slope )</p>
-<p class="p12">{</p>
-<p class="p12"><span class="Apple-tab-span">	</span>vec4 <span class="Apple-tab-span">	</span>t;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>float<span class="Apple-tab-span">	</span>d;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>d = destCoord().y * slope + distance;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>t = unpremultiply(sample(src, samplerCoord(src)));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>t = (t - d*color) / (1.0-d);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>return premultiply(t);</p>
-<p class="p12">}</p>
-<p class="p9"><span class="s8">"</span>);</p>
-<p class="p13"><br></p>
-<p class="p14">// as stated in the Apple Example</p>
-<p class="p14">// distance - min: 0.0 max: 1.0</p>
-<p class="p14">// slope - min: -0.01 max: 0.01</p>
-<p class="p9">k.values_(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>[</p>
-<p class="p14"><span class="s10"><span class="Apple-tab-span">	</span>a,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// arg 0: the SCImage</p>
-<p class="p14"><span class="s10"><span class="Apple-tab-span">	</span></span><span class="s7">Color</span><span class="s10">.white,  </span></span>// arg 1: color</p>
-<p class="p14"><span class="s10"><span class="Apple-tab-span">	</span>0.5, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// arg 2: distance</p>
-<p class="p14"><span class="s10"><span class="Apple-tab-span">	</span>-0.002<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// arg 3: slope</p>
-<p class="p9"><span class="Apple-tab-span">	</span>]</p>
-<p class="p9">);</p>
-<p class="p13"><br></p>
-<p class="p9">a.applyKernel(k);</p>
-<p class="p13"><br></p>
-<p class="p9">w = a.plot(freeOnClose:<span class="s7">true</span>);</p>
-<p class="p9">)</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p9">(</p>
-<p class="p14">// OK a Better Colorfull Kernel</p>
-<p class="p9">a = <span class="s7">SCImage</span>.new(600 at 600); <span class="s9">// get the image</span></p>
-<p class="p10"><span class="s10">k = </span>SCImageKernel<span class="s10">.new;</span></p>
-<p class="p13"><br></p>
-<p class="p9">k.shader_(</p>
-<p class="p14">// shader/kernel from toneburst.com</p>
-<p class="p15">// Generates spherical and planar displacement maps for VBO-based 3D heightfield. </p>
-<p class="p16">// http://machinesdontcare.wordpress.com </p>
-<p class="p12">"</p>
-<p class="p12">const float PI = 3.14159265359;</p>
-<p class="p12">const float TWOPI = 6.28318530718;</p>
-<p class="p11"><br></p>
-<p class="p12">kernel vec4 _heightMap(sampler image, vec3 scale)</p>
-<p class="p12">{</p>
-<p class="p12"><span class="Apple-tab-span">	</span>vec2 xyNorm = samplerCoord(image) / samplerSize(image);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>float u = xyNorm.x * PI;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>float v = xyNorm.y * TWOPI;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>vec3 spherical;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>spherical.r = cos(v) * sin(u);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>spherical.g = sin(v) * sin(u);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>spherical.b = cos(u);</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>spherical.r = (spherical.r * 0.5 + 0.5) * scale.x;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>spherical.g = (spherical.g * 0.5 + 0.5) * scale.y;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>spherical.b = (spherical.b * 0.5 + 0.5) * scale.z;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>return vec4(spherical,1.0);</p>
-<p class="p12">}</p>
-<p class="p9"><span class="s8">"</span>);</p>
-<p class="p13"><br></p>
-<p class="p9">k.values_([a, [1.0, 1.0, 1.0]]);</p>
-<p class="p13"><br></p>
-<p class="p14">// k.isValid; // is it ok</p>
-<p class="p9">a.applyKernel(k);</p>
-<p class="p14"><span class="s10">//.flatten; </span>// ensure a bitmap rep so the kernel is not applied at each rendering call - uncomment that and rescale the plot window to see the difference.</p>
-<p class="p13"><br></p>
-<p class="p9">w = a.plot(freeOnClose:<span class="s7">true</span>);</p>
-<p class="p9">)</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCImage/Swamp.png b/Help/GUI/Cocoa-GUI/SCImage/Swamp.png
deleted file mode 100644
index 27f5d0d..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCImage/Swamp.png and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCImage/duck_alpha.png b/Help/GUI/Cocoa-GUI/SCImage/duck_alpha.png
deleted file mode 100644
index 36ece1d..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCImage/duck_alpha.png and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCImage/flowers2.jpg b/Help/GUI/Cocoa-GUI/SCImage/flowers2.jpg
deleted file mode 100644
index 84b60a0..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCImage/flowers2.jpg and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCImage/icon.supercollider.png b/Help/GUI/Cocoa-GUI/SCImage/icon.supercollider.png
deleted file mode 100644
index 6cfd783..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCImage/icon.supercollider.png and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCImage/vduck2.jpg b/Help/GUI/Cocoa-GUI/SCImage/vduck2.jpg
deleted file mode 100644
index d285038..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCImage/vduck2.jpg and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCKnob.html b/Help/GUI/Cocoa-GUI/SCKnob.html
deleted file mode 100644
index 9554d82..0000000
--- a/Help/GUI/Cocoa-GUI/SCKnob.html
+++ /dev/null
@@ -1,357 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #5c5e65}
-span.s4 {font: 9.0px Monaco}
-span.s5 {color: #0000bf}
-span.s6 {color: #606060}
-span.s7 {color: #1638e6}
-span.s8 {color: #0c2eee}
-span.s9 {color: #1129ac}
-span.s10 {color: #516a24}
-span.s11 {font: 14.0px Helvetica}
-span.s12 {color: #007300}
-span.s13 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCKnob<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a gui control with round, horizontal or vertical action</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCUserView.html"><b>SCUserView</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> EZKnob</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s3">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s3">Point</span></a> indicating width at height.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">(</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s5">Window</span>.new(<span class="s6">"Knob"</span>, <span class="s5">Rect</span>(640,630,270,70)).front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>k = <span class="s5">Knob</span>.new(w, <span class="s5">Rect</span>(20, 10, 48, 48));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>k.action_({<span class="s5">|v,x,y,m|</span> postf(<span class="s6">"action func called: %\n"</span>, v.value); });</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">)</span></p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*defaultMode</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*defaultMode_(val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Class variable that states the default tracking mode for new knobs..</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val</b> - An instance of <a href="../../Core/Symbol.html"><span class="s7">Symbol</span></a>. \vert, \round, or \horiz. Default value is \round.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Accessing Instance and Class Variables</b></p>
-<p class="p13"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>centered</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>centered_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>If true, the knob's center scale, 0.5 is zero in the value scale. eg. as in a pan control. .</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s8">Boolean</span></a>.<span class="Apple-converted-space">  </span>Default is false.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mode</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mode_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The knob's tracking mode .</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - An instance of <a href="../../Core/Symbol.html"><span class="s8">Symbol</span></a>. \round, \horiz or \vert. Default<span class="Apple-converted-space">  </span>is<span class="Apple-converted-space">  </span>\round .</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets the the <b>value</b>. This will not do the <b>action</b>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val</b> -<span class="Apple-converted-space">  </span>A <a href="../../Math/Number.html"><span class="s8">Number</span></a>.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the <b>value</b>. Does the <b>action</b>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val</b> -<span class="Apple-converted-space">  </span>A Number.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>keystep</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>keystep_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The step by which the value is incremented/decremented with the keyboard.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - A <a href="../../Math/Float.html"><span class="s7">Float</span></a>. Default is 0.01.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>step</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>step_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The step in which the value is incremented/decremented while draging in \horiz and \vert modes.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - A <a href="../../Math/Float.html"><span class="s7">Float</span></a>. Default is 0.01.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>increment</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>decrement</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Increments or decrements the <b>value</b> by <b>keystep</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>refresh</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Redraws the knob</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Customizing Appearance</b></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>color_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>color</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1</b> - An <a href="../../Collections/Array.html"><span class="s7">Array</span></a> of <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a>s: [center Color,<span class="Apple-converted-space">  </span>value Color, range Color, dial Color].</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>skin</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>skin_ (newskin)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get, set the skin of the knob.<span class="Apple-converted-space">  </span>See <b>Examples</b> below for how to set<span class="Apple-converted-space">  </span>a skin.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>newskin </b>- An instance of Symobl. The default is \default:</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scale:<span class="Apple-tab-span">	</span><span class="s9">Color</span>.black.alpha_(0.3),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>center:<span class="Apple-tab-span">	</span><span class="s9">Color</span>.blue(0.7, 0.5),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>level:<span class="Apple-tab-span">	</span><span class="s9">Color</span>.green(0.8, 0.8),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dial:<span class="Apple-tab-span">	</span><span class="s9">Color</span>.black.alpha_(0.7),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>defaultMode: <span class="s10">'round'</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Subclassing and Internal Methods</b></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>r<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>valueAction_</b>(1.0.rand)<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>valueAction_</b>(0)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>valueAction_</b>(1)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>valueAction_</b>(0.5)<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>increment by <b>keystep</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>decrement by <b>keystep</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span>increment by <b>keystep</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span>increment by <b>keystep</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span>decrement by <b>keystep</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span>decrement by <b>keystep</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>left arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mouseDown (x, y, modifiers, buttonNumber, clickCount)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mouseMove (x, y, modifiers)</b></p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*isSquare</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*isSquare_(bool)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*viewClass</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*compactRatio</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*initClass</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*paletteExample (parent, bounds)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>oldMethodsCompat</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>init (argParent, argBounds)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>bounds_ (rect)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>calcConsts (rect)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>draw</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p17">// examples</p>
-<p class="p18">(</p>
-<p class="p17"><span class="s5">var</span><span class="s2"> window, size = 32; </span>// try different sizes - from 15 to 200 or more!</p>
-<p class="p18">window = <span class="s5">Window</span>.new(<span class="s6">"Knob"</span>, <span class="s5">Rect</span>(640,630,270,70)).front;</p>
-<p class="p18">k = <span class="s5">Knob</span>.new(window, <span class="s5">Rect</span>(20, 10, size, size));</p>
-<p class="p18">k.action_({<span class="s5">|v,x,y,m|</span> postf(<span class="s6">"action func called: %\n"</span>, v.value); });</p>
-<p class="p17">//k.color[1] = Color.gray(alpha:0);</p>
-<p class="p18">)</p>
-<p class="p18">k.value</p>
-<p class="p18">k.value = 0.25</p>
-<p class="p18">k.valueAction = 0.125</p>
-<p class="p16"><br></p>
-<p class="p17">// modes</p>
-<p class="p18">k.mode = <span class="s12">\vert</span>;</p>
-<p class="p18">k.mode = <span class="s12">\horiz</span>;</p>
-<p class="p18">k.mode = <span class="s12">\round</span>; <span class="s13">// default</span></p>
-<p class="p16"><br></p>
-<p class="p18">k.visible</p>
-<p class="p18">k.visible = <span class="s5">false</span></p>
-<p class="p18">k.visible = <span class="s5">true</span></p>
-<p class="p18">k.enabled = <span class="s5">false</span></p>
-<p class="p18">k.enabled_(<span class="s5">true</span>)</p>
-<p class="p18">k.canFocus = <span class="s5">false</span></p>
-<p class="p18">k.canFocus = <span class="s5">true</span></p>
-<p class="p16"><br></p>
-<p class="p17">// centered mode - like in a pan or eq gain control etc.</p>
-<p class="p18">(</p>
-<p class="p18"><span class="s5">var</span> window;</p>
-<p class="p18">window = <span class="s5">Window</span>.new(<span class="s6">"Pan Knob"</span>, <span class="s5">Rect</span>(640,630,270,70)).front;</p>
-<p class="p18">k = <span class="s5">Knob</span>.new(window, <span class="s5">Rect</span>(20,10,36,36));</p>
-<p class="p18">k.action_({<span class="s5">|v,x,y,m|</span> <span class="s12">\pan</span>.asSpec.map(v.value).postln; })</p>
-<p class="p17">//<span class="Apple-tab-span">	</span>.mode_(\horiz)</p>
-<p class="p18"><span class="Apple-tab-span">	</span>.centered_(<span class="s5">false</span>)</p>
-<p class="p18"><span class="Apple-tab-span">	</span>.value_(<span class="s12">\pan</span>.asSpec.unmap(0)); <span class="s13">// 0.5</span></p>
-<p class="p17">//k.color[1] = Color.gray(alpha:0);</p>
-<p class="p18">)</p>
-<p class="p18">k.centered</p>
-<p class="p18">k.centered = <span class="s5">true</span></p>
-<p class="p18">k.centered = <span class="s5">false</span></p>
-<p class="p16"><br></p>
-<p class="p17">// mouseOverAction</p>
-<p class="p18">(</p>
-<p class="p18"><span class="s5">var</span> size = 28;</p>
-<p class="p18"><span class="s5">GUI</span>.skins.default.knob.mySkin = ( );</p>
-<p class="p18">w = <span class="s5">Window</span>.new(<span class="s6">"Knobs"</span>, <span class="s5">Rect</span>(384,630,320,80));</p>
-<p class="p17"><span class="s2">w.acceptsMouseOver=</span><span class="s5">true</span><span class="s2">; </span>// true in parent window!</p>
-<p class="p18">w.view.decorator = <span class="s5">FlowLayout</span>(w.view.bounds, 10 at 4, 10 at 4);</p>
-<p class="p18">h = <span class="s5">StaticText</span>(w, 300 @ 16).background_(<span class="s5">Color</span>.blue(0.2,0.1));</p>
-<p class="p18">w.view.decorator.nextLine;</p>
-<p class="p18">k = <span class="s5">Array</span>.fill(8, {<span class="s5">|item, i|</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s5">var</span> knob;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>knob = <span class="s5">Knob</span>.new(w, size @ size)</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>.canFocus_(false)</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s5">|v,x,y,m|</span> h.string = <span class="s6">"value: "</span> ++ v.value.asString; })</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.mouseOverAction_({<span class="s5">|v,x,y|</span> h.string = <span class="s6">"value: "</span> ++ v.value.asString; });</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skins.default.knob.mySkin.center_(<span class="s5">Color</span>.rand);</p>
-<p class="p18"><span class="Apple-tab-span">	</span>knob.skin_( <span class="s5">GUI</span>.skins.default.knob.mySkin );</p>
-<p class="p18"><span class="Apple-tab-span">	</span>knob;</p>
-<p class="p18">});</p>
-<p class="p18">w.front</p>
-<p class="p18">)</p>
-<p class="p18">k.collect(<span class="s5">_</span>.value);</p>
-<p class="p16"><br></p>
-<p class="p17">// step - 'horiz' and 'vert' modes only</p>
-<p class="p18">(</p>
-<p class="p18"><span class="s5">var</span> window, midispec;</p>
-<p class="p18">midispec = [0,127,<span class="s12">'linear'</span>,1].asSpec;</p>
-<p class="p18">window = <span class="s5">Window</span>.new(<span class="s6">"step Knob"</span>, <span class="s5">Rect</span>(640,630,270,70)).front;</p>
-<p class="p18">k = <span class="s5">Knob</span>.new(window, <span class="s5">Rect</span>(20,10,32,32));</p>
-<p class="p18">k.action_({<span class="s5">|v,x,y,m|</span> midispec.map(v.value).postln; })</p>
-<p class="p18"><span class="Apple-converted-space">       </span>.value_(midispec.unmap(0));</p>
-<p class="p16"><br></p>
-<p class="p18">k.mode = <span class="s12">\vert</span>;</p>
-<p class="p16"><br></p>
-<p class="p18">)</p>
-<p class="p18">k.step</p>
-<p class="p18">k.step = 10/127 // step by 10</p>
-<p class="p16"><br></p>
-<p class="p18">k.mode = <span class="s12">\horiz</span>;</p>
-<p class="p18">k.mode = <span class="s12">\round</span>;</p>
-<p class="p16"><br></p>
-<p class="p17">// on Sheet</p>
-<p class="p18">(</p>
-<p class="p19"><span class="s2"><span class="Apple-tab-span">	</span></span>Sheet<span class="s2">({ </span>arg<span class="s2"> l;</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l.view.decorator.gap=4 at 4;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l.view.decorator.margin=4 at 4;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = <span class="s5">Array</span>.fill(8, { <span class="s5">Knob</span>.new(l, 28 at 28) });</p>
-<p class="p20"><span class="s2"><span class="Apple-tab-span">	</span>}, </span>"Knob"<span class="s2">)</span></p>
-<p class="p18">)</p>
-<p class="p18">c</p>
-<p class="p18">c.collect(<span class="s5">_</span>.value);</p>
-<p class="p16"><br></p>
-<p class="p17">// GUI Kit</p>
-<p class="p18">(</p>
-<p class="p18"><span class="Apple-tab-span">	</span>f = {</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> size = 32;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s5">GUI</span>.window.new(<span class="s6">"GUI.knob Test"</span>, <span class="s5">Rect</span>(580,590,300,80));</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>k = <span class="s5">GUI</span>.knob.new(w, <span class="s5">Rect</span>(20, 10, size, size));</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>k.action_({<span class="s5">|v|</span> v.value.postln; });</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p18"><span class="Apple-tab-span">	</span>};</p>
-<p class="p18">)</p>
-<p class="p16"><br></p>
-<p class="p17"><span class="s5">GUI</span><span class="s2">.cocoa; </span>// select cocoa gui</p>
-<p class="p18">f.value;</p>
-<p class="p16"><br></p>
-<p class="p17"><span class="s5">GUI</span><span class="s2">.swing; </span>// select swing gui</p>
-<p class="p18">f.value;</p>
-<p class="p16"><br></p>
-<p class="p17">// GUI skins</p>
-<p class="p17">//<span class="Apple-tab-span">	</span>default skin</p>
-<p class="p17">//<span class="Apple-tab-span">	</span>GUI.skins.knob.default = (</p>
-<p class="p17">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scale: Color.black.alpha_(0.3),</p>
-<p class="p17">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dial: Color.black.alpha_(0.7),</p>
-<p class="p17">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>center: Color.blue(0.7, 0.5),</p>
-<p class="p17">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>level: Color.green(0.8, 0.8)</p>
-<p class="p17">//<span class="Apple-tab-span">	</span>);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="s5">GUI</span>.skins.knob.default.level</p>
-<p class="p18"><span class="s5">GUI</span>.skins.knob.default.center</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p18"><span class="s5">GUI</span>.skins.keys</p>
-<p class="p18"><span class="s5">GUI</span>.skins.default.keys</p>
-<p class="p16"><br></p>
-<p class="p18">(</p>
-<p class="p18"><span class="s5">GUI</span>.skins.default.knob.mySkin = ( );</p>
-<p class="p16"><br></p>
-<p class="p19">Sheet<span class="s2">({ </span>arg<span class="s2"> l;</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span>a = <span class="s5">Array</span>.fill( 8, {</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skins.default.knob.mySkin.center_(<span class="s5">Color</span>.rand);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Knob</span>(l, 32 at 32).skin_( <span class="s5">GUI</span>.skins.default.knob.mySkin );</p>
-<p class="p18"><span class="Apple-tab-span">	</span>})</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s2">}, </span>"Knobs"<span class="s2">);</span></p>
-<p class="p18">)</p>
-<p class="p16"><br></p>
-<p class="p18">a.collect(<span class="s5">_</span>.value);</p>
-<p class="p16"><br></p>
-<p class="p17">// drag and drop</p>
-<p class="p18">(</p>
-<p class="p18"><span class="s5">var</span> w, txt, size = 36;</p>
-<p class="p18">w = <span class="s5">Window</span>.new(<span class="s6">"Knobs"</span>, <span class="s5">Rect</span>(400,400,250,100)).front;</p>
-<p class="p18">w.acceptsMouseOver=<span class="s5">true</span>;</p>
-<p class="p18">w.view.decorator = <span class="s5">FlowLayout</span>(w.view.bounds).gap_(10 @ 10).margin_(10 @10);</p>
-<p class="p18">txt = <span class="s5">StaticText</span>(w, 200 @ 14);</p>
-<p class="p18">w.view.decorator.nextLine;</p>
-<p class="p16"><br></p>
-<p class="p18">k = <span class="s5">Knob</span>(w, size @ size);</p>
-<p class="p18">k.action = {<span class="s5">arg</span> v,x,y;<span class="Apple-converted-space">  </span>v.value.postln; txt.string_(<span class="s6">"value: "</span> ++ v.value); };</p>
-<p class="p18">k.mouseOverAction = {<span class="s5">|v|</span> txt.string_(<span class="s6">"value: "</span> ++ v.value); };</p>
-<p class="p16"><br></p>
-<p class="p18">j = <span class="s5">Knob</span>(w, size @ size);</p>
-<p class="p18">j.action = {<span class="s5">arg</span> v,x,y;<span class="Apple-converted-space">  </span>j.value.postln; txt.string_(<span class="s6">"value: "</span> ++ v.value); };</p>
-<p class="p18">j.mouseOverAction = { txt.string_(<span class="s6">"value: "</span> ++ j.value); };</p>
-<p class="p16"><br></p>
-<p class="p18">n = <span class="s5">NumberBox</span>(w, 100 @ 20);</p>
-<p class="p17">//n.setProperty(\boxColor,Color.grey(alpha:0.0));</p>
-<p class="p18">n.value = 0.0;</p>
-<p class="p18">)</p>
-<p class="p16"><br></p>
-<p class="p17">// customize drag and drop methods</p>
-<p class="p18">k.canReceiveDragHandler</p>
-<p class="p18">k.canReceiveDragHandler = <span class="s5">false</span>; <span class="s13">// don't accept drops</span></p>
-<p class="p16"><br></p>
-<p class="p18">k.canReceiveDragHandler = { <span class="s5">View</span>.currentDrag.isFloat }; <span class="s13">// accept only if drag is float</span></p>
-<p class="p16"><br></p>
-<p class="p18">k.receiveDragHandler = { (<span class="s6">"value droped in: "</span> ++ <span class="s5">View</span>.currentDrag).postln }</p>
-<p class="p16"><br></p>
-<p class="p18">k.receiveDragHandler = { k.valueAction = <span class="s5">View</span>.currentDrag.clip(0.0, 1.0); }</p>
-<p class="p16"><br></p>
-<p class="p18">k.beginDragAction = { (<span class="s6">"drag out -> "</span> ++ k.value).postln; }</p>
-<p class="p16"><br></p>
-<p class="p18">k.beginDragAction = { k.value.asFloat; }</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCLayoutView.html b/Help/GUI/Cocoa-GUI/SCLayoutView.html
deleted file mode 100644
index f3d4069..0000000
--- a/Help/GUI/Cocoa-GUI/SCLayoutView.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #356f14}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #6f7185}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCLayoutView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract class for layout containter views</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCContainerView.html"><b>SCContainerView</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">Users will not normally directly create instances of SCLayoutView, but only use it through its subclasses.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="SCHLayoutView.html"><span class="s3">SCHLayoutView</span></a> <a href="SCVLayoutView.html"><span class="s3">SCVLayoutView</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Customizing Appearance</b></p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>spacing</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>spacing_ (distance)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>distance </b>- pixels.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Subclassing and Internal Methods</b></p>
-<p class="p7">The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s4">SCView</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s2">, </span>\visible<span class="s2">, </span>\enabled<span class="s2">, </span>\canFocus<span class="s2">, </span>\resize<span class="s2">, </span>\background<span class="s2">, </span>\minWidth<span class="s2">, </span>\maxWidth<span class="s2">, </span>\minHeight<span class="s2">, </span>\maxHeight<span class="s2">, </span>\spacing<span class="s2"> ]</span></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setProperty (key, value)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set a property. See <b>properties</b> below. Normally you can also set properties by using methods with the same names as the keys.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key </b>- An instance of Symobol</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>value </b>- A value appropriate to the key.</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCLevelIndicator.html b/Help/GUI/Cocoa-GUI/SCLevelIndicator.html
deleted file mode 100644
index 6b2c2d9..0000000
--- a/Help/GUI/Cocoa-GUI/SCLevelIndicator.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9f2423}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0049f3}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #6f7178}
-span.s6 {color: #0016bd}
-span.s7 {color: #003cf7}
-span.s8 {color: #0032b5}
-span.s9 {color: #0020bb}
-span.s10 {color: #3c6d00}
-span.s11 {color: #9f2423}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCLevelIndicator<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a level indicator GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">A level indicator view, suitable for use as a level or peak meter, etc.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SCRangeSlider.html"><span class="s4">SCRangeSlider</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a> indicating width at height.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s6">SCLevelIndicator</span>(w, <span class="s6">Rect</span>(10, 10, 20, 160));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p12"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets the current level of the view.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the current level of the view</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A <a href="../../Math/Float.html"><span class="s7">Float</span></a> between 0 and 1.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>As value but calls the action function. Currently not used.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A <a href="../../Math/Float.html"><span class="s7">Float</span></a> between 0 and 1.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>warning_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Styles 0 and 2 (see below) implement a warning display. If critical is > <b>warning</b> the view will turn yellow if <b>value</b> is >= to <b>val</b>. If critical is <= <b>warning</b> the view will turn yellow if <b>value</b> is <= to <b>val</b>. If <b>drawsPeak</b> is true warning will be displayed based on <b>peakLevel </b>rather than <b>value</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A <a href="../../Math/Float.html"><span class="s7">Float</span></a> between 0 and 1.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s6">SCLevelIndicator</span>(w, <span class="s6">Rect</span>(10, 10, 20, 160));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 0.5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.warning = 0.6; a.critical = 0.9;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 0.7;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>critical_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Styles 0 and 2 (see below) implement a critical display. If critical is > <b>warning</b> the view will turn red if <b>value</b> is >= to <b>val</b>. If critical is <= <b>warning</b> the view will turn yellow if <b>value</b> is <= to <b>val</b>. If <b>drawsPeak</b> is true critical will be displayed based on <b>peakLevel </b>rather than <b>value</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A <a href="../../Math/Float.html"><span class="s7">Float</span></a> between 0 and 1.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s6">SCLevelIndicator</span>(w, <span class="s6">Rect</span>(10, 10, 20, 160));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.style = 2;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numSteps = 10;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 0.5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.warning = 0.6; a.critical = 0.9;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 1;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>style_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the style of the view</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An <a href="../../Math/Integer.html"><span class="s7">Integer</span></a> from 0 to 3. 0 = colored bar; 1 = graduated black lines; 2 = LED style (see <b>numSteps_</b>); 3 = LED style with custom image (see <b>image_</b>).</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.addFlowLayout;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4.do({|i|</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s8">SCLevelIndicator</span>(w, <span class="s8">Rect</span>(0, 0, 20, 200));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.style = i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numSteps = 10;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 0.5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numSteps_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The number of steps used in styles 2 and 3. (See <b>style_</b>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A positive <a href="../../Math/Integer.html"><span class="s7">Integer</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s8">SCLevelIndicator</span>(w, <span class="s8">Rect</span>(10, 10, 200, 20));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.style = 2;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 1;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numSteps = 10;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numSteps = 20;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>image_ (image)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the image used in style 3. See below for an example.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>image </b>- An <a href="SCImage/SCImage.html"><span class="s7">SCImage</span></a>. The default image is the SC cube.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numTicks_ (ticks)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The number of ticks to display in the view's scale.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ticks </b>- An <a href="../../Math/Integer.html"><span class="s7">Integer</span></a> >= 0.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background = Color.black;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s8">SCLevelIndicator</span>(w, <span class="s8">Rect</span>(10, 10, 300, 30));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numTicks = 11;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 0.5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numMajorTicks_ (ticks)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The number of ticks in the view's scale which will be larger.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ticks </b>- An <a href="../../Math/Integer.html"><span class="s7">Integer</span></a> >= 0.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background = Color.black;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s8">SCLevelIndicator</span>(w, <span class="s8">Rect</span>(10, 10, 300, 30));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numTicks = 11;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numMajorTicks = 3;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 0.5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawsPeak_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines whether the view draws a separate peak display. This can be useful for displaying both peak and RMS values. If <b>drawsPeak</b> is true <b>warning</b> and <b>critical </b>(see above) will be displayed based on <b>peakLevel </b>rather than <b>value</b> in styles 0 and 2.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- A <a href="../../Core/Boolean.html"><span class="s7">Boolean</span></a>. The default is false.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s9">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s9">SCLevelIndicator</span>(w, <span class="s9">Rect</span>(10, 10, 300, 30));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.drawsPeak = <span class="s9">true</span>;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.style = 1;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 0.5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.peakLevel = 0.6;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>peakLevel_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the level of the peak display. (See <b>drawsPeak_</b>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A <a href="../../Math/Float.html"><span class="s7">Float</span></a> between 0 and 1.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s9">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s9">SCLevelIndicator</span>(w, <span class="s9">Rect</span>(10, 10, 20, 160));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.drawsPeak = <span class="s9">true</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.peakLevel = 0.6)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p11">s.boot;</p>
-<p class="p3"><br></p>
-<p class="p13">// something to meter</p>
-<p class="p11">(</p>
-<p class="p14"><span class="s3">b = </span><span class="s9">Buffer</span><span class="s3">.read(s, </span>"sounds/a11wlk01.wav"<span class="s3">);<span class="Apple-tab-span">	</span></span></p>
-<p class="p11">x = { <span class="s9">var</span> colum, noise, imp, delimp, mul = 1;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>imp = <span class="s9">Impulse</span>.kr(10);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>delimp = <span class="s9">Delay1</span>.kr(imp);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>colum = <span class="s9">PlayBuf</span>.ar(1, b, <span class="s9">BufRateScale</span>.kr(b), loop: 1) * mul;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// measure rms and Peak</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s9">SendReply</span>.kr(imp, <span class="s10">'/levels'</span>, [<span class="s9">Amplitude</span>.kr(colum), <span class="s9">K2A</span>.ar(<span class="s9">Peak</span>.ar(colum, delimp).lag(0, 3))]);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>colum;</p>
-<p class="p11">}.play;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p13">// a window and responder</p>
-<p class="p13">// default style is coloured / solid</p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s9">Window</span>.new.front;</p>
-<p class="p11">a = <span class="s9">SCLevelIndicator</span>(w, <span class="s9">Rect</span>(10, 10, 20, 160));</p>
-<p class="p11">o = <span class="s9">OSCresponder</span>(s.addr, <span class="s10">'/levels'</span>, {<span class="s9">arg</span> time, resp, msg;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>{</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = msg[3].ampdb.linlin(-40, 0, 0, 1);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.peakLevel = msg[4].ampdb.linlin(-40, 0, 0, 1);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}.defer;</p>
-<p class="p11">}).add;</p>
-<p class="p11">w.onClose = {o.remove; x.free};</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p13">// styles 0 and 2 support warning and critical levels</p>
-<p class="p11">(</p>
-<p class="p11">a.warning = -6.dbamp;</p>
-<p class="p11">a.critical = -3.dbamp;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p13">// optionally show peak level</p>
-<p class="p11">(</p>
-<p class="p11">a.warning = 0;</p>
-<p class="p11">a.critical = 0;</p>
-<p class="p11">a.drawsPeak = <span class="s9">true</span>;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p13">// style 1 is black bars</p>
-<p class="p11">a.style = 1</p>
-<p class="p3"><br></p>
-<p class="p13">// looks good with a background</p>
-<p class="p11">a.background = <span class="s9">Gradient</span>(<span class="s9">Color</span>.red, <span class="s9">Color</span>.green, <span class="s10">\v</span>);</p>
-<p class="p3"><br></p>
-<p class="p13">// all styles can have ticks</p>
-<p class="p11">(</p>
-<p class="p11">a.background = <span class="s9">Color</span>.clear;</p>
-<p class="p11">a.numTicks = 11; <span class="s11">// includes 0;</span></p>
-<p class="p11">a.numMajorTicks = 3;<span class="Apple-tab-span">	</span></p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p13">// style 2 is LED</p>
-<p class="p11">(</p>
-<p class="p11">a.drawsPeak = <span class="s9">false</span>;</p>
-<p class="p11">a.style = 2;</p>
-<p class="p11">a.numSteps = 10;</p>
-<p class="p11">a.numTicks = 0;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p13">// style 3 is as 2, but with images</p>
-<p class="p13"><span class="s3">a.style = 3; </span>// use default image</p>
-<p class="p3"><br></p>
-<p class="p13">// make a custom image</p>
-<p class="p11">(</p>
-<p class="p11">j = <span class="s9">SCImage</span>.new(20,20);</p>
-<p class="p11">j.draw({ <span class="s9">arg</span> image;</p>
-<p class="p11"><span class="s9">var</span> lozenge;</p>
-<p class="p11">lozenge = <span class="s9">Rect</span>(3, 3, 16, 16);</p>
-<p class="p11"><span class="s9">Pen</span>.addOval(lozenge);</p>
-<p class="p11"><span class="s9">Pen</span>.fillAxialGradient(1 at 1, 19 at 19, <span class="s9">Color</span>.new255(255, 165, 0), <span class="s9">Color</span>.new255(238, 232, 170));</p>
-<p class="p11"><span class="s9">Pen</span>.width = 1;</p>
-<p class="p11"><span class="s9">Pen</span>.strokeColor = <span class="s9">Color</span>.blue;</p>
-<p class="p11"><span class="s9">Pen</span>.strokeOval(lozenge);</p>
-<p class="p11">});</p>
-<p class="p11">a.image = j;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p13">// be inspired</p>
-<p class="p14"><span class="s3">j = </span><span class="s9">SCImage</span><span class="s3">.openURL(</span>"http://tinyurl.com/7lj55f"<span class="s3">);</span></p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p11">a.bounds = <span class="s9">Rect</span>(10, 10, 380, 80);</p>
-<p class="p11">a.numSteps = 5;</p>
-<p class="p11">a.image = j;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCListView.html b/Help/GUI/Cocoa-GUI/SCListView.html
deleted file mode 100644
index 483b06f..0000000
--- a/Help/GUI/Cocoa-GUI/SCListView.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #0000bf}
-span.s9 {color: #0000bf}
-span.s10 {color: #0000bf}
-span.s11 {font: 14.0px Helvetica}
-span.s12 {font: 12.0px Helvetica; color: #000000}
-span.s13 {color: #bf0000}
-span.s14 {color: #606060}
-span.s15 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SCListView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>a list view</b></span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCControlView.html"><span class="s3"><b>SCControlView</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4"><b>See also:</b> <a href="SCPopUpMenu.html"><span class="s5">SCPopUpMenu</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SCListView</b></p>
-<p class="p2"><br></p>
-<p class="p6">By default, SCSlider will respond only to drags where the drag contains a <a href="../../Math/Number.html"><span class="s6">Number</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s7">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s7">Point</span></a> indicating width at height.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s8">ListView</span>(w,<span class="s8">Rect</span>(10,10,120,200));</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.items = [ </span>"item 1"<span class="s4">, </span>"item 2"<span class="s4">, </span>"item 3"<span class="s4">, </span>"item 4"<span class="s4">, </span>"item 5"<span class="s4">];</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.action = { <span class="s8">arg</span> q; [ q.value, v.items[ q.value ] ].postln;<span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p13"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>items</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>items_ (array)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array </b>- An <a href="../../Collections/Array.html"><span class="s7">Array</span></a> of <a href="../../Collections/String.html"><span class="s7">String</span></a>s or <a href="../../Core/Symbol.html"><span class="s7">Symbol</span></a>s, which make up the items in the pop up menu.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>item</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p14"><span class="s1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns</span> items.at(<span class="s9">this</span>.value)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the index of the currently highlighted item. This will <b>not</b> do the <b>action</b>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- The index of an item in the <b>items</b> array .</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the menu to highlight the item at index <b>val</b>, and evaluates <b>action</b> (see <a href="SCView.html"><span class="s7">SCView</span></a>), if the value has changed.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- The index of an item in the <b>items</b> array .</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>enterKeyAction_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>enterKeyAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Instead of, or additionally to defining an action (see <a href="SCView.html"><span class="s2">SCView</span></a>), you can define an action which will be performed only if you hit the enter key while the list view is focussed.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Customizing Appearance</b></p>
-<p class="p15"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font_ (argFont)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the <a href="../Main-GUI/Font.html"><span class="s7">Font</span></a> of the list. Default value is the default font: Font.default .</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argFont</b> - An instance of <a href="../Main-GUI/Font.html"><span class="s7">Font</span></a>.</p>
-<p class="p8"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stringColor</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stringColor_ (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the string <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a> for the unselected items in the list .</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>selectedStringColor</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>selectedStringColor_ (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the string <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a> for the selected item .</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a>.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>hiliteColor</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>hiliteColor_ (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the background <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a> for the selected item .</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a>.</p>
-<p class="p8"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>colors</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>colors_(incolors)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the background Color for the items.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>incolor</b> - An <a href="../../Collections/Array.html"><span class="s10">Array</span></a> of <a href="../GUI-Tools/Color.html"><span class="s10">Color</span></a>s</p>
-<p class="p8"><br></p>
-<p class="p13"><b>Subclassing and Internal Methods</b></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p8"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" " <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span>with action<span class="Apple-tab-span">	</span>space</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\r <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>enterKeyAction</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\n, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>enterKeyAction<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.asAscii,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>enterKeyAction<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(enter key or cmd-C on Mac OSX )</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span>value - 1 with action<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span>value + 1 with action<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span>value + 1 with action<span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span>value - 1 with action<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>left arrow</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s7">SCView</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>returns:</p>
-<p class="p16"><span class="s12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">[ </span>\bounds<span class="s4">, </span>\visible<span class="s4">, </span>\enabled<span class="s4">, </span>\canFocus<span class="s4">, </span>\resize<span class="s4">, </span>\background<span class="s4">, </span>\minWidth<span class="s4">, </span>\maxWidth<span class="s4">, </span>\minHeight<span class="s4">, </span>\maxHeight<span class="s4">, </span>\value<span class="s4">, </span>\font<span class="s4">, </span>\items<span class="s4">, </span>\stringColor<span class="s4">, </span>\align<span class="s4">, </span>\itemColors<span class="s4">, </span>\focusColor<span class="s4"> ]</span></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>init (argParent, argBounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Overrides SCView:init.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag <b>from</b> an SCListView. Returns the same as <b>value</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to drop a drag in this object. Returns the result of <b>currentDrag</b>.isNumber.</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been recieved. Performs <b>valueAction_</b> with the <b>currentDrag</b> as an argument.</p>
-<p class="p7"><br></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p17"><br></p>
-<p class="p11">(</p>
-<p class="p17"><br></p>
-<p class="p11">w = <span class="s8">Window</span>.new.front;</p>
-<p class="p17"><br></p>
-<p class="p11">v = <span class="s8">ListView</span>(w,<span class="s8">Rect</span>(10,10,120,70))</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span>.items_([ </span>"SinOsc"<span class="s4">, </span>"Saw"<span class="s4">, </span>"LFSaw"<span class="s4">, </span>"WhiteNoise"<span class="s4">, </span>"PinkNoise"<span class="s4">, </span>"BrownNoise"<span class="s4">, </span>"Osc"<span class="s4"> ])</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>.background_(<span class="s8">Color</span>.clear)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.hiliteColor_(<span class="s8">Color</span>.green(alpha:0.6))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.action_({ <span class="s8">arg</span> sbs;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[sbs.value, v.items[sbs.value]].postln;<span class="Apple-tab-span">	</span><span class="s13">// .value returns the integer</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11">)</p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p18">// Sound example use to switch Filters</p>
-<p class="p11">(</p>
-<p class="p11"><span class="s8">Server</span>.default = s = <span class="s8">Stethoscope</span>.defaultServer.boot;</p>
-<p class="p11">s.waitForBoot({</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">var</span> f, freq, ww;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>n={r=<span class="s8">LFSaw</span>.ar([220, 530],0,0.3)*<span class="s8">LFPulse</span>.ar(12,0,0.3,0.4); [r[0],<span class="s8">Delay2</span>.ar(r[1])]}.play;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>freq={<span class="s8">SinOsc</span>.kr(0.5,0,4000,4200)}.play;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w=<span class="s8">Window</span>(<span class="s14">"Filters"</span>).front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v = <span class="s8">ListView</span>(w,<span class="s8">Rect</span>(10,10,180,120))</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.items_([ </span>"No Filter"<span class="s4">,</span>"RLPF"<span class="s4">, </span>"RHPF"<span class="s4">, </span>"BPF"<span class="s4">, </span>"Resonz"<span class="s4">, </span>"MoogFF"<span class="s4"> ])</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_(<span class="s8">Color</span>.clear)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.hiliteColor_(<span class="s8">Color</span>.green(alpha:0.6))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s8">arg</span> v;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.value.switch(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,{try{f.free};<span class="s14">"test"</span>.postln},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,{try{f.free};f={<span class="s8">ReplaceOut</span>.ar(0,<span class="s8">RLPF</span>.ar(<span class="s8">In</span>.ar(0,2),<span class="s8">In</span>.kr(0,1),0.2,0.3))}.play(addAction:<span class="s15">\addToTail</span>)},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2,{try{f.free};f={<span class="s8">ReplaceOut</span>.ar(0,<span class="s8">RHPF</span>.ar(<span class="s8">In</span>.ar(0,2),<span class="s8">In</span>.kr(0,1),0.2,0.3))}.play(addAction:<span class="s15">\addToTail</span>)},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3,{try{f.free};f={<span class="s8">ReplaceOut</span>.ar(0,<span class="s8">BPF</span>.ar(<span class="s8">In</span>.ar(0,2),<span class="s8">In</span>.kr(0,1),0.2,1.5))}.play(addAction:<span class="s15">\addToTail</span>)},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4,{try{f.free};f={<span class="s8">ReplaceOut</span>.ar(0,<span class="s8">Resonz</span>.ar(<span class="s8">In</span>.ar(0,2),<span class="s8">In</span>.kr(0,1),0.2,2))}.play(addAction:<span class="s15">\addToTail</span>)},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5,{try{f.free};f={<span class="s8">ReplaceOut</span>.ar(0,<span class="s8">MoogFF</span>.ar(<span class="s8">In</span>.ar(0,2),<span class="s8">In</span>.kr(0,1),1.5))}.play(addAction:<span class="s15">\addToTail</span>)}</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>ww=<span class="s8">FreqScope</span>.new(400, 200, 0);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w.bounds=<span class="s8">Rect</span>(50,<span class="s8">Window</span>.screenBounds.height-300,200,200);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>ww.window.bounds=ww.window.bounds.moveTo(255,<span class="s8">Window</span>.screenBounds.height-328);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">CmdPeriod</span>.doOnce({{ww.window.close}.defer(0.5);w.close;});</p>
-<p class="p18"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//defer or crash, because FreqScopeWindow Class contains its own routine for cleaning up on CmdPeriod</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w.onClose_({n.free;f.free;freq.free});</p>
-<p class="p11">});</p>
-<p class="p11">)</p>
-<p class="p17"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCMenuGroup.html b/Help/GUI/Cocoa-GUI/SCMenuGroup.html
deleted file mode 100644
index 40db5aa..0000000
--- a/Help/GUI/Cocoa-GUI/SCMenuGroup.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #606060}
-span.s5 {color: #0000bf}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCMenuGroup<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>represents a named submenu</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="CocoaMenuItem.html"><b>CocoaMenuItem</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">SCMenuGroup and its siblings allow users to create custom menus. Many methods are defined in its superclass.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="CocoaMenuItem.html">CocoaMenuItem</a>, <a href="SCMenuItem.html">SCMenuItem</a>, <a href="SCMenuSeparator.html">SCMenuSeparator</a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, name, index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a new sub-menu.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent menu. The default value is nil, which indicates the application menu.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- A <a href="../../Collections/String.html"><span class="s3">String</span></a> indicating the label for this menu item.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- The index at which to insert this item in its parent.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p4"><br></p>
-<p class="p11">// Simple example</p>
-<p class="p12"><span class="s2">g = </span>SCMenuGroup<span class="s2">(</span>nil<span class="s2">, </span><span class="s4">"stuff"</span><span class="s2">, 10);</span></p>
-<p class="p13">i = <span class="s5">SCMenuItem</span>(g, <span class="s4">"foo"</span>);</p>
-<p class="p13">j = <span class="s5">SCMenuItem</span>(g, <span class="s4">"bar"</span>);</p>
-<p class="p13">j.action = {<span class="s4">"bar!!"</span>.postln};</p>
-<p class="p11"><span class="s2">k = </span><span class="s5">SCMenuSeparator</span><span class="s2">(g, 1); </span>// add a separator</p>
-<p class="p13">i.enabled = <span class="s5">false</span>;</p>
-<p class="p13">j.state = <span class="s5">true</span>;</p>
-<p class="p13">j.setShortCut(<span class="s4">"$"</span>, <span class="s5">true</span>, <span class="s5">true</span>); <span class="s6">// Cmd-ctrl-alt-$</span></p>
-<p class="p4"><br></p>
-<p class="p13"><span class="s5">CocoaMenuItem</span>.clearCustomItems;</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCMenuItem.html b/Help/GUI/Cocoa-GUI/SCMenuItem.html
deleted file mode 100644
index 707899e..0000000
--- a/Help/GUI/Cocoa-GUI/SCMenuItem.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #606060}
-span.s5 {color: #0000bf}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCMenuItem<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>represents an item in a menu</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="CocoaMenuItem.html"><b>CocoaMenuItem</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">SCMenuItem and its siblings allow users to create custom menus. Many methods are defined in its superclass.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="CocoaMenuItem.html">CocoaMenuItem</a>, <a href="SCMenuGroup.html">SCMenuGroup</a>, <a href="SCMenuSeparator.html">SCMenuSeparator</a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, name, index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a new menu item.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent menu. The default value is nil, which indicates the application menu.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- A <a href="../../Collections/String.html"><span class="s3">String</span></a> indicating the label for this menu item.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- The index at which to insert this item in its parent.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p4"><br></p>
-<p class="p11">// Simple example</p>
-<p class="p12"><span class="s2">g = </span>SCMenuGroup<span class="s2">(</span>nil<span class="s2">, </span><span class="s4">"stuff"</span><span class="s2">, 10);</span></p>
-<p class="p13">i = <span class="s5">SCMenuItem</span>(g, <span class="s4">"foo"</span>);</p>
-<p class="p13">j = <span class="s5">SCMenuItem</span>(g, <span class="s4">"bar"</span>);</p>
-<p class="p13">j.action = {<span class="s4">"bar!!"</span>.postln};</p>
-<p class="p11"><span class="s2">k = </span><span class="s5">SCMenuSeparator</span><span class="s2">(g, 1); </span>// add a separator</p>
-<p class="p13">i.enabled = <span class="s5">false</span>;</p>
-<p class="p13">j.state = <span class="s5">true</span>;</p>
-<p class="p13">j.setShortCut(<span class="s4">"$"</span>, <span class="s5">true</span>, <span class="s5">true</span>); <span class="s6">// Cmd-ctrl-alt-$</span></p>
-<p class="p4"><br></p>
-<p class="p14"><span class="s5">CocoaMenuItem</span>.clearCustomItems;</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCMenuSeparator.html b/Help/GUI/Cocoa-GUI/SCMenuSeparator.html
deleted file mode 100644
index e88822d..0000000
--- a/Help/GUI/Cocoa-GUI/SCMenuSeparator.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #606060}
-span.s5 {color: #0000bf}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCMenuSeparator<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>represents a separator in a menu</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="CocoaMenuItem.html"><b>CocoaMenuItem</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">SCMenuSeparator allows users to add separators (a horizontal line) to custom menus.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="CocoaMenuItem.html">CocoaMenuItem</a>, <a href="SCMenuItem.html">SCMenuItem</a>, <a href="SCMenuGroup.html">SCMenuGroup</a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a new menu separator.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The menu or submenu in which to add this separator. This should be an instance of <a href="SCMenuGroup.html"><span class="s3">SCMenuGroup</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- The index at which to insert this item in its parent.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p4"><br></p>
-<p class="p11">// Simple example</p>
-<p class="p12"><span class="s2">g = </span>SCMenuGroup<span class="s2">(</span>nil<span class="s2">, </span><span class="s4">"stuff"</span><span class="s2">, 10);</span></p>
-<p class="p13">i = <span class="s5">SCMenuItem</span>(g, <span class="s4">"foo"</span>);</p>
-<p class="p13">j = <span class="s5">SCMenuItem</span>(g, <span class="s4">"bar"</span>);</p>
-<p class="p13">j.action = {<span class="s4">"bar!!"</span>.postln};</p>
-<p class="p11"><span class="s2">k = </span><span class="s5">SCMenuSeparator</span><span class="s2">(g, 1); </span>// add a separator</p>
-<p class="p13">i.enabled = <span class="s5">false</span>;</p>
-<p class="p13">j.state = <span class="s5">true</span>;</p>
-<p class="p13">j.setShortCut(<span class="s4">"$"</span>, <span class="s5">true</span>, <span class="s5">true</span>); <span class="s6">// Cmd-ctrl-alt-$</span></p>
-<p class="p4"><br></p>
-<p class="p13"><span class="s5">CocoaMenuItem</span>.clearCustomItems;</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCModalSheet.html b/Help/GUI/Cocoa-GUI/SCModalSheet.html
deleted file mode 100644
index 070ed6c..0000000
--- a/Help/GUI/Cocoa-GUI/SCModalSheet.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0043f5}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #003cf7}
-span.s6 {color: #004aeb}
-span.s7 {color: #0016bd}
-span.s8 {color: #606060}
-span.s9 {color: #ae1a19}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCModalSheet<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a window modal version of SCWindow</b><span class="s1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCWindow.html"><span class="s2"><b>SCWindow</b></span></a><b> : SCAbstractModalWindow</b></p>
-<p class="p3"><br></p>
-<p class="p1">SCModalSheet is an window modal version of SCWindow. A sheet is an accessory window which is attached to a parent window. SCModalSheet blocks all other user input to its parent window until it is dismissed. It is thus useful for alerts, preference panels and other situations which should limit user input.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SCWindow.html"><span class="s4">SCWindow</span></a>, <a href="SCModalWindow.html"><span class="s4">SCModalWindow</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Dismissing Modal Sheets</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCModalSheets have no close button. It is therefore very important that you add an SCButton or some other GUI widget to allow the user to dismiss the sheet. As an 'escape hatch' pressing the esc key will kill a sheet if it has focus (i.e. is foremost and selected).</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Blocking and Multiple Sheets on the Same Window</b></p>
-<p class="p6"><br></p>
-<p class="p1">Each window can have only sheet attached to it at any given time. (You can however have sheets attached to sheets.) If you attempt to create more than one at the same time all but the first will fail. If needed, you can check parent window's <b>currentSheet</b> method to see if a sheet is running. This will return the current sheet if it exists, and nil otherwise. If one is running, you can add a <a href="../../Core/Kernel/Function.html"><span class="s5">Function</span></a> to its onClose in order to relaunch the additional sheet(s) if desired, or do any necessary testing.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (window, bounds, resizable, border, server, scroll)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a new SCModalSheet instance. You do not need to call <b>front</b> on it to make it visible.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>window </b>- An instance of <a href="SCWindow.html"><span class="s2">SCWindow</span></a> or one of its subclasses. This is the parent window to which the sheet will be attached.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - A <a href="../../Geometry/Rect.html"><span class="s6">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> specifying the size of the window.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>resizable</b> - A <a href="../../Core/Boolean.html"><span class="s6">Boolean</span></a> indicating whether this window can be resized by the user. The default is false.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>border</b> - A <a href="../../Core/Boolean.html"><span class="s6">Boolean</span></a> indicating whether this window has a border. Borderless windows have no title bar. The default is true.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server</b> - This is a dummy argument which is here to provide compatibility with SwingOSC and has no effect. See <a href="../GUI-Tools/GUI.html"><span class="s6">GUI</span></a> for more details.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>scroll</b> - A <a href="../../Core/Boolean.html"><span class="s6">Boolean</span></a> indicating whether this window will add scrollers if its contents exceed its bounds. If this is set to true resize settings will be ignored for enclosed views. See <a href="SCScrollTopView.html"><span class="s6">SCScrollTopView</span></a>. The default is false.</p>
-<p class="p7"><br></p>
-<p class="p11"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p12">///// simple example</p>
-<p class="p13">w = <span class="s7">SCWindow</span>.new(<span class="s8">"Parent"</span>).front; <span class="s9">// make a window</span></p>
-<p class="p3"><br></p>
-<p class="p13">(</p>
-<p class="p12">// now attach a sheet</p>
-<p class="p13">x = <span class="s7">SCModalSheet</span>.new(w, 380 at 70);</p>
-<p class="p13"><span class="s7">SCButton</span>(x, <span class="s7">Rect</span>(20,20,340,30))</p>
-<p class="p13"><span class="Apple-tab-span">	</span>.states_([</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s8">"Dismiss me"</span>, <span class="s7">Color</span>.black, <span class="s7">Color</span>.red]</p>
-<p class="p13"><span class="Apple-tab-span">	</span>])</p>
-<p class="p13"><span class="Apple-tab-span">	</span>.onClose_({<span class="s8">"Dismissed!"</span>.postln})</p>
-<p class="p13"><span class="Apple-tab-span">	</span>.action_({ x.close });</p>
-<p class="p13">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCModalWindow.html b/Help/GUI/Cocoa-GUI/SCModalWindow.html
deleted file mode 100644
index 73a96eb..0000000
--- a/Help/GUI/Cocoa-GUI/SCModalWindow.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002afb}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001dfd}
-span.s6 {color: #0038f1}
-span.s7 {color: #0016bd}
-span.s8 {color: #606060}
-span.s9 {color: #2b7000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCModalWindow<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an application modal version of SCWindow</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCWindow.html"><span class="s2"><b>SCWindow</b></span></a><b> : SCAbstractModalWindow</b></p>
-<p class="p3"><br></p>
-<p class="p1">SCModalWindow is an application modal version of SCWindow. This means that it blocks all other user input until it is dismissed. It is thus useful for alerts, preference panels and other situations which should limit user input.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also: </b><a href="SCWindow.html"><span class="s4">SCWindow</span></a>, <a href="SCModalSheet.html"><span class="s4">SCModalSheet</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Dismissing App Modal Windows</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCModalWindows have non-functional OSX close buttons. It is therefore very important that you add an SCButton or some other GUI widget to allow the user to close the window. As an 'escape hatch' pressing the esc key will kill any application modal window.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Blocking and Multiple App Modal Windows</b></p>
-<p class="p6"><br></p>
-<p class="p1">There can only be one active SCModalWindow at any given time. If you attempt to create more than one they will be cued and launched in turn as each is dismissed.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>N.B.</b> If you launch multiple app modal windows which will alter the same data, you may need to take special care. You can use the <b>*current </b>class method to check if an app modal window is currently running, and add a <a href="../../Core/Kernel/Function.html"><span class="s5">Function</span></a> to its onClose in order to check if the additional window is still needed once the first one has closed. See below for an example of how to do this.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (name, bounds, resizable, border, server, scroll)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a new SCModalWindow instance. You do not need to call <b>front</b> on it to make it visible.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- The name that will be displayed in the title bar. An instance of <a href="../../Collections/String.html"><span class="s6">String</span></a> or <a href="../../Core/Symbol.html"><span class="s6">Symbol</span></a>. The default is 'panel'.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - A <a href="../../Geometry/Rect.html"><span class="s6">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> specifying the size of the window. The size does not include the title bar. <b>N.B. </b>App Modal windows are centred on the screen when created, so if you wish to move it for some reason you will need to call <b>bounds_</b> on the window after creation.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>resizable</b> - A <a href="../../Core/Boolean.html"><span class="s6">Boolean</span></a> indicating whether this window can be resized by the user. The default is false.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>border</b> - A <a href="../../Core/Boolean.html"><span class="s6">Boolean</span></a> indicating whether this window has a border. Borderless windows have no title bar. The default is true.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server</b> - This is a dummy argument which is here to provide compatibility with SwingOSC and has no effect. See <a href="../GUI-Tools/GUI.html"><span class="s6">GUI</span></a> for more details.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>scroll</b> - A <a href="../../Core/Boolean.html"><span class="s6">Boolean</span></a> indicating whether this window will add scrollers if its contents exceed its bounds. If this is set to true resize settings will be ignored for enclosed views. See <a href="SCScrollTopView.html"><span class="s6">SCScrollTopView</span></a>. The default is false.</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p11"><b>Accessing Instance and Class Variables</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*current</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This returns the currently running app modal window, if it exists, or nil otherwise.</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p11"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p12">// simple example</p>
-<p class="p13">(</p>
-<p class="p13"><span class="s7">var</span> person, win;</p>
-<p class="p14"><span class="s3">win = </span><span class="s7">SCModalWindow</span><span class="s3">(</span>"What kind of person?"<span class="s3">, 230 at 60);</span></p>
-<p class="p13">win.view.decorator = <span class="s7">FlowLayout</span>(win.view.bounds);</p>
-<p class="p13"><span class="s7">EZPopUpMenu</span>(win, 210 at 20, <span class="s8">"Are you:"</span>, [<span class="s9">'Dog Person'</span>->{person = <span class="s8">"Dog Person"</span>}, <span class="s9">'Cat Person'</span>->{person = <span class="s8">"Cat Person"</span>}], initAction: <span class="s7">true</span>);</p>
-<p class="p13">win.view.decorator.nextLine.nextLine;</p>
-<p class="p13"><span class="s7">SCButton</span>(win, <span class="s7">Rect</span>(20,20,210,20))</p>
-<p class="p13"><span class="Apple-tab-span">	</span>.states_([</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s8">"OK"</span>, <span class="s7">Color</span>.black, <span class="s7">Color</span>.white]</p>
-<p class="p13"><span class="Apple-tab-span">	</span>])</p>
-<p class="p13"><span class="Apple-tab-span">	</span>.onClose_({(<span class="s8">"You're a"</span> + person).postln})</p>
-<p class="p13"><span class="Apple-tab-span">	</span>.action_({ win.close });</p>
-<p class="p13">)</p>
-<p class="p3"><br></p>
-<p class="p12">// multiple windows with state check</p>
-<p class="p12">// checks against data1 and data2 to see if windows are still needed</p>
-<p class="p13">(</p>
-<p class="p13"><span class="s7">var</span> window1, window2, window3;</p>
-<p class="p13"><span class="s7">var</span> func2, func3;</p>
-<p class="p13"><span class="s7">var</span> data1 = <span class="s7">false</span>, data2 = <span class="s7">false</span>;</p>
-<p class="p3"><br></p>
-<p class="p12">// 1</p>
-<p class="p13">window1 = <span class="s7">SCModalWindow</span>.new(<span class="s8">"1"</span>);</p>
-<p class="p13"><span class="s7">SCButton</span>(window1, <span class="s7">Rect</span>(20,20,340,30))</p>
-<p class="p13"><span class="Apple-tab-span">	</span>.states_([</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s8">"OK"</span>, <span class="s7">Color</span>.black, <span class="s7">Color</span>.red]</p>
-<p class="p13"><span class="Apple-tab-span">	</span>])</p>
-<p class="p13"><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>data1 = </span><span class="s7">true</span><span class="s3">; </span>// we will still need 2</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>window1.close;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><br></p>
-<p class="p12">// 2</p>
-<p class="p13">func2 = {</p>
-<p class="p13"><span class="s7">var</span> curr;</p>
-<p class="p13">curr = <span class="s7">SCModalWindow</span>.current;</p>
-<p class="p13">if(curr.isNil, {</p>
-<p class="p13"><span class="Apple-tab-span">	</span>if(data1, {</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>window2 = <span class="s7">SCModalWindow</span>.new(<span class="s8">"2"</span>);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SCButton</span>(window2, <span class="s7">Rect</span>(20,20,340,30))</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s8">"OK"</span>, <span class="s7">Color</span>.black, <span class="s7">Color</span>.red]</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>data2 = </span><span class="s7">false</span><span class="s3">; </span>// we won't still need 3</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>window2.close;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).onClose_({2.postln;});</p>
-<p class="p13"><span class="Apple-tab-span">	</span>});</p>
-<p class="p13">}, {curr.onClose = curr.onClose.addFunc(func2)});</p>
-<p class="p13">};</p>
-<p class="p13">func2.value;</p>
-<p class="p3"><br></p>
-<p class="p12">// 3</p>
-<p class="p13">func3 = {</p>
-<p class="p13"><span class="s7">var</span> curr;</p>
-<p class="p13">curr = <span class="s7">SCModalWindow</span>.current;</p>
-<p class="p13">if(curr.isNil, {</p>
-<p class="p13"><span class="Apple-tab-span">	</span>if(data2, {</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>window3 = <span class="s7">SCModalWindow</span>.new(<span class="s8">"3"</span>);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SCButton</span>(window3, <span class="s7">Rect</span>(20,20,340,30))</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s8">"OK"</span>, <span class="s7">Color</span>.black, <span class="s7">Color</span>.red]</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ window3.close; })</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.onClose_({3.postln;});</p>
-<p class="p13"><span class="Apple-tab-span">	</span>});</p>
-<p class="p13">}, {curr.onClose = curr.onClose.addFunc(func3)});</p>
-<p class="p13">};</p>
-<p class="p13">func3.value;</p>
-<p class="p13">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCMovieView.html b/Help/GUI/Cocoa-GUI/SCMovieView.html
deleted file mode 100644
index 28e472b..0000000
--- a/Help/GUI/Cocoa-GUI/SCMovieView.html
+++ /dev/null
@@ -1,197 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1638e6}
-span.s3 {color: #6f7178}
-span.s4 {color: #0c2eee}
-span.s5 {color: #0018b8}
-span.s6 {color: #606060}
-span.s7 {color: #000000}
-span.s8 {color: #a41c14}
-span.s9 {color: #8d261b}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCMovieView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a wrapper for a Cocoa Quicktime view</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">SCMovieView can play movies such as .mov and mpg,</p>
-<p class="p1">and image files like jpg, png, tiff and others.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also: </b><a href="SCImage/SCImage.html"><span class="s2">SCImage</span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s3">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s3">Point</span></a> indicating width at height.</p>
-<p class="p5"><br></p>
-<p class="p9"><b>Accessing Instance and Class Variables</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>path</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>path_ (moviePath)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>moviePath </b>- The path to the movie.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b>Movie Control</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>start</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stop</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stepForward</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stepBack</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>gotoEnd</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>gotoBeginning</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>frame_ (frameIdx)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Go to frame.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frameIdx </b>- An integer.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>playSelectionOnly_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>skipFrames (numFrames)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- An Integer.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>muted</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>muted_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>loopMode</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>loopMode_ (mode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>mode </b>- An Integer . Loop modes:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 Playback runs forward and backward between both endpoints.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 Restarts playback at beginning when end is reached.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 Playback stops when end is reached.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>rate</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>rate_ (ratein)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ratein </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a>. 1.0 is the normal rate.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b>Movie Editing</b></p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>copy</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>clear</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>cut</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>paste</b></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>editable</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>editable_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>currentTime</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>currentTime_ (time)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the current time.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>time </b>- Default value is nil. .</p>
-<p class="p5"><br></p>
-<p class="p9"><b>Adjusting Appearance</b></p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>showControllerAndAdjustSize (show, adjust)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>show </b>- An instance of Boolean. Default is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>adjust </b>- An instance of Boolean. Default is true.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>resizeWithMagnification (size)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Resizes the whole view, adjusts its contents.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>size </b>- An instance of <a href="../../Math/Float.html"><span class="s2">Float</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>fixedAspectRatio_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p9"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p12">(</p>
-<p class="p12">w = <span class="s5">Window</span>(<span class="s6">"mov"</span>).front;</p>
-<p class="p12">b = <span class="s5">Button</span>(w, <span class="s5">Rect</span>(0, 0, 150, 20))</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.states_([[<span class="s6">"pick a file"</span>]])</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.action_({ <span class="s5">File</span>.openDialog(<span class="s6">""</span>, { <span class="s5">|path|</span> m.path_(path) }) });</p>
-<p class="p12">m = <span class="s5">MovieView</span>(w, <span class="s5">Rect</span>(0,20,360, 260));</p>
-<p class="p12">)</p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// random-pick a tiff from the Help folder</p>
-<p class="p12">m.path_(<span class="s6">"Help/*/*/*.tiff"</span>.pathMatch.choose);</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// or point it to a movie (you may have that one too):</p>
-<p class="p14"><span class="s7">m.path_(</span>"/Library/Application\ Support/iDVD/Tutorial/Movies/Our\ First\ Snowman.mov"<span class="s7">);</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">m.start;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">// playback</span></p>
-<p class="p12">m.muted_(<span class="s5">false</span>);<span class="Apple-tab-span">	</span><span class="s8">// thank god</span></p>
-<p class="p12">m.stop;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>//rate</p>
-<p class="p12">m.rate_(1);<span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// backwards</p>
-<p class="p12">m.gotoEnd.rate_(-1).start;</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// select a range on the controller and play it</p>
-<p class="p12">m.rate_(1).playSelectionOnly_(<span class="s5">true</span>).start;</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// loopModes:</p>
-<p class="p13"><span class="s7">m.loopMode_(1);<span class="Apple-tab-span">	</span></span>// only one direction</p>
-<p class="p12">m.loopMode_(0).start;<span class="Apple-tab-span">	</span><span class="s8">// back and forth</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">m.stop;</p>
-<p class="p12">m.gotoBeginning;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// single steps</p>
-<p class="p12">m.stepForward;</p>
-<p class="p3"><br></p>
-<p class="p12">10.do { m.stepForward; };</p>
-<p class="p12">m.stepBack;</p>
-<p class="p3"><br></p>
-<p class="p13">// select with shift-drag, copy paste between movieviews or quicktime player</p>
-<p class="p12">m.editable_(<span class="s5">true</span>);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">m.showControllerAndAdjustSize(<span class="s5">true</span>, <span class="s5">true</span>);</p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>// resize compared to image size:</p>
-<p class="p12">m.resizeWithMagnification(0.25);<span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>//goto time (in seconds)</p>
-<p class="p12">m.currentTime_(1);</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// not there yet, but would be nice to have:</p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// startFrame, length</p>
-<p class="p12">m.setSelection_(20, 15);</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12">m.frame_(frame);<span class="Apple-tab-span">	</span><span class="s8">// jump to frame</span></p>
-<p class="p12">m.frame.postln;<span class="Apple-tab-span">	</span><span class="s8">// poll current</span><span class="s9"> frame pos</span></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCMultiSliderView.html b/Help/GUI/Cocoa-GUI/SCMultiSliderView.html
deleted file mode 100644
index ef7e909..0000000
--- a/Help/GUI/Cocoa-GUI/SCMultiSliderView.html
+++ /dev/null
@@ -1,498 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p20 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p22 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p23 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0000bf}
-p.p24 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p25 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #6b718a}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #6f7178}
-span.s6 {color: #0000bf}
-span.s7 {color: #bf0000}
-span.s8 {color: #676d92}
-span.s9 {font: 12.0px Helvetica}
-span.s10 {color: #656b96}
-span.s11 {color: #666c94}
-span.s12 {color: #636a99}
-span.s13 {color: #696f8e}
-span.s14 {color: #5f689f}
-span.s15 {color: #61699c}
-span.s16 {font: 14.0px Helvetica}
-span.s17 {color: #6f7179}
-span.s18 {font: 9.0px Monaco}
-span.s19 {color: #606060}
-span.s20 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCMultiSliderView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a richly configurable view for graphically displaying and editing an array of values</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">SCMultiSliderView on the surface is like a group of sliders. However, various graphical options allow you to use it for displaying and editing graphic representations of array values. It is also the super class of <a href="SCEnvelopeView.html"><span class="s2">SCEnvelopeView</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SCEnvelopeView.html"><span class="s4">SCEnvelopeView</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SCMultiSliderView</b></p>
-<p class="p2"><br></p>
-<p class="p1">If no instance variables other than parent and bounds are set, then a multislider with bounds.width/12 sliders is created. However, the default thumbSize is 12 and the gap default is 1. The view width has to be 13*n+2 for all the sliders to automatically fit in the view.</p>
-<p class="p2"><br></p>
-<p class="p1">So if you want a specific number of sliders, then it is best to specify the <b>size</b> and set <b>elasticMode</b> to 1. Then you will get a multislider which distrubutes <b>size</b> amount of sliders over <b>bounds.width</b>, where the slider widths are at <i>maximum</i> <b>indexThumbSize</b> (default 12) and the <b>gap</b> is adusted accordingly.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a> indicating width at height.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n=20;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = <span class="s6">MultiSliderView</span>(w,<span class="s6">Rect</span>(10,10,n*13+2,100)); <span class="s7">//default thumbWidth is 13</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.value=</span><span class="s6">Array</span><span class="s3">.fill(n, {</span><span class="s6">|v|</span><span class="s3"> v*0.05}); </span>// size is set automatically when you set the value</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.action = { <span class="s6">arg</span> q;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.value.postln;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">)</span></p>
-<p class="p6"><br></p>
-<p class="p14"><b>Accessing Instance and Class Variables</b></p>
-<p class="p15"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>size</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>size_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets the size of the array returned by <b>action</b>, <i>if you explicitly set the size</i>. If you do not set the size nor value, then the size of the array returned by action will be the amount of sliders in the view, which is <b>bounds.width</b>/12. Changing <b>size, </b>after the the multislider has been drawn or after the <b>value</b> array has been set, will lead to unexpected results. Instead, you should change the content of <b>value, </b>if you need to change the multislider contents.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 - </b>An Integer.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>indexIsHorizontal_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines the index direction (vertical/horizontal) of the slider.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Core/Boolean.html"><span class="s8">Boolean</span></a>. Default is true.</p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>editable</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>editable_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines if the sliders are editable. If editable is false, the multislider will still execute <b>action</b> on mouse click.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Core/Boolean.html"><span class="s8">Boolean</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>readOnly_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- boolean.</p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>step</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>step_ (stepSize)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Quantizes the values to the nearest multiple of stepSize.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stepSize </b>- An instance of <a href="../../Math/Float.html"><span class="s10">Float</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><b>Accessing and Setting Values</b></p>
-<p class="p15"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets the property, \value, by calling get/setProperty(\value, <b>val</b>). The setter also sets <b>size</b> to the size of <b>val</b>. This will not do the <b>action</b> of the slider.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Collections/Array.html"><span class="s11">Array</span></a>.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the property, \value, by calling setPropertyWithAction(\value, <b>val</b>). Also sets <b>size</b> to the size of <b>val. </b>Does the sliders <b>action</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Collections/Array.html"><span class="s11">Array</span></a>.</p>
-<p class="p15"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>index</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>index_ (inx)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the first index of the selection range.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>inx </b>- an integer.</p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectionSize</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectionSize_ (aval)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the size of the selection. Can be 0.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aval </b>- An integer.</p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>startIndex_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentvalue</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentvalue_ (iny)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the value at the current <b>index</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>iny </b>- A float between 0 and 1.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>reference</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>reference_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets a reference value, and draws it according to other drawing options: as a line, or a thumb.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An <a href="../../Collections/Array.html"><span class="s12">Array</span></a> of <a href="../../Math/Float.html"><span class="s12">Float</span></a>s between 0 and 1;</p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>metaAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>metaAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets a function to be evaluate on Ctrl-click</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 - </b>An instance of <a href="../../Core/Kernel/Function.html"><span class="s13">Function</span></a>. Default value is nil.</p>
-<p class="p15"><br></p>
-<p class="p14"><b>Customizing Appearance</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>showIndex_ (abool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Highlights the currently selected index.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>abool </b>- An Instance of <a href="../../Core/Boolean.html"><span class="s10">Boolean</span></a>. Default is false.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>elasticMode</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>elasticMode_ (mode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines if the sliders are distributed over the width of the view. If resize is 2, 3, or 8, then the width and gap of the individual sliders will adjust automatically using a maximum slider with of <b>thumbSize</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>mode </b>- 0 or 1</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>thumbSize_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the <b>indexThumbSize_</b> of the sliders. If elasticMode is 1, then it determines the maximum indexThumbSize of the slider as well as the <b><span class="Apple-tab-span">	</span></b>valueThumbSize.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A Float or Integer.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>indexThumbSize_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The size of the slider thumb in the index direction.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A Float or Integer.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>valueThumbSize_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The size of the slider thumb in the value direction.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A Float or Integer.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawLines (abool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawLines_ (abool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draws connecting lines between the values.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>abool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s11">Boolean</span></a>. default is false.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawRects_ (abool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draws the thumbs of the sliders.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>abool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s11">Boolean</span></a>. default is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gap</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gap_ (inx)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set/get the property, \xOffset, which is gap between the sliders. This value is ignored if <b>elasticMode</b> is set to 1.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>inx </b>- An integer.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>isFilled_ (abool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>If set to true, this extends the thumb-rectangle to the edge, like in a bar graph. Fills the area between 0 and the value, or between 0 and the reference, depending on other draw options. If drawLines_(true) and drawRects_(false) and isFilled_(true), then it will fill the value between the value and the reference only.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>abool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s14">Boolean</span></a>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n=80;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = <span class="s6">MultiSliderView</span>(w,<span class="s6">Rect</span>(10,10,20*13+2,100)); <span class="s7">//default thumbWidth is 13</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.elasticMode_(1);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.value=<span class="s6">Array</span>.fill(n, {<span class="s6">|v|</span> 1.0.rand});</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.reference=<span class="s6">Array</span>.fill(n, {<span class="s6">|v|</span> 0.5});</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.action = { <span class="s6">arg</span> q;q.value.postln; };</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.isFilled_ (<span class="s6">true</span>);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.drawLines_(<span class="s6">true</span>);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.drawRects_(<span class="s6">false</span>);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">)</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>fillColor_ (acolor)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The fill color of the view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>acolor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s15">Color</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>strokeColor_ (acolor)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The line color of the view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>acolor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s15">Color</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>colors_ (strokec, fillc)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the stroke and fill colors of the graph.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>strokec </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s15">Color</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fillc </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s15">Color</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p14"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s16"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span>increment index by <b>1</b><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span>decrement index by <b>1</b><span class="Apple-tab-span">	</span>left arrow<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span>decrement gap by <b>1</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span>increment gap by <b>1</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s17">SCView</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s3">, </span>\visible<span class="s3">, </span>\enabled<span class="s3">, </span>\canFocus<span class="s3">, </span>\resize<span class="s3">, </span>\background<span class="s3">, </span>\minWidth<span class="s3">, </span>\maxWidth<span class="s3">, </span>\minHeight<span class="s3">, </span>\maxHeight<span class="s3">, </span>\value<span class="s3">, </span>\thumbSize<span class="s3">, </span>\fillColor<span class="s3">, </span>\strokeColor<span class="s3">, </span>\xOffset<span class="s3">, </span>\x<span class="s3">, </span>\y<span class="s3">, </span>\showIndex<span class="s3">, </span>\drawLines<span class="s3">, </span>\drawRects<span class="s3">, </span>\selectionSize<span class="s3">, </span>\startIndex<span class="s3">, </span>\referenceValues<span class="s3">, </span>\thumbWidth<span class="s3">, </span>\absoluteX<span class="s3">, </span>\isFilled<span class="s3">, </span>\step<span class="s3">, </span>\elasticResizeMode<span class="s3"> ]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag <b>from</b> an SCNumberBox.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Tho following describes the defaultbehavior:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a) if selectionSize is 0, returns the content of value (an Array):</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b) if selectionSize > 1, returns an Array with the values at the indexes in the selection;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if references is not nil, returns an array containing (a) or (b) , and an array of the relevant reference values ; [ [values], [references] ]</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to place a drag in this object. Will recieve any drag, but the drag should either be an array of values, ( [ values ] ), or an array containg an array of values and an array of reference values ( [ [values], [references] ] ).</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been received. If the <b>currentDrag</b> is a String, then Performs <b>value_()</b> <b>and reference_()</b> using <b>currentDrag</b> as an argument. Does not perform the <b>action</b>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doMetaAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Not normally called directly (called by the primitive).</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p14"><b>Examples</b></p>
-<p class="p19"><br></p>
-<p class="p13">// basic</p>
-<p class="p12">(</p>
-<p class="p12">n=20;</p>
-<p class="p12">w = <span class="s6">Window</span>.new.front;</p>
-<p class="p12">m = <span class="s6">MultiSliderView</span>(w,<span class="s6">Rect</span>(10,10,n*13+2,100)); <span class="s7">//default thumbWidth is 13</span></p>
-<p class="p13"><span class="s3">m.value=</span><span class="s6">Array</span><span class="s3">.fill(n, {</span><span class="s6">|v|</span><span class="s3"> v*0.05}); </span>// size is set automatically when you set the value</p>
-<p class="p12">m.action = { <span class="s6">arg</span> q;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>q.value.postln;</p>
-<p class="p12">};</p>
-<p class="p12">)<span class="Apple-tab-span">	</span></p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p13">// looks like a candlestick graph</p>
-<p class="p12">(</p>
-<p class="p12"><span class="s6">var</span> size;</p>
-<p class="p12">size = 350 / 6;</p>
-<p class="p12">w = <span class="s6">Window</span>.new;</p>
-<p class="p12">w.view.decorator = <span class="s6">FlowLayout</span>(w.view.bounds);</p>
-<p class="p12">m = <span class="s6">MultiSliderView</span>(w, <span class="s6">Rect</span>(0, 0, 350, 100));<span class="Apple-tab-span">	</span></p>
-<p class="p12">m.value_(<span class="s6">Array</span>.fill(size, {0.01}));</p>
-<p class="p13"><span class="s3">m.isFilled_(</span><span class="s6">true</span><span class="s3">); </span>// width in pixels of each stick</p>
-<p class="p13"><span class="s3">m.indexThumbSize_(2.0); </span>// spacing on the value axis</p>
-<p class="p12">m.gap_(4);</p>
-<p class="p12">w.front;</p>
-<p class="p12">)</p>
-<p class="p19"><br></p>
-<p class="p13">// rotate the above graph</p>
-<p class="p12">(</p>
-<p class="p12">m.bounds_(<span class="s6">Rect</span>(0, 0, 100, 350));</p>
-<p class="p12">m.indexIsHorizontal_(<span class="s6">false</span>);</p>
-<p class="p12">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14"><b>Interactive Example (explains all the graphic options)</b></p>
-<p class="p19"><br></p>
-<p class="p17">(</p>
-<p class="p17">n=40;</p>
-<p class="p20"><br></p>
-<p class="p17">w = <span class="s6">Window</span>(<span class="s19">"MultiSlider Options"</span>, <span class="s6">Rect</span>(200, <span class="s6">Window</span>.screenBounds.height-550, 600, 450));</p>
-<p class="p17">f={<span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s6">FlowLayout</span>( w.view.bounds, 10 at 10, 10 at 2 );</p>
-<p class="p21"><span class="s3"><span class="Apple-tab-span">	</span>m = </span><span class="s6">MultiSliderView</span><span class="s3">(w,</span><span class="s6">Rect</span><span class="s3">(0,0,580,200)); </span>// default thumbWidth is 13</p>
-<p class="p17"><span class="Apple-tab-span">	</span>m.value=<span class="s6">Array</span>.fill(n, {<span class="s6">|v|</span> 0.5+((0.3*v).sin*0.25)});</p>
-<p class="p17"><span class="Apple-tab-span">	</span>m.action = { <span class="s6">arg</span> q;q.value.postln; };</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">StaticText</span><span class="s3">(w,380 at 18).string_(</span>"indexThumbSize or thumbSize"<span class="s3">);</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Slider</span>(w,580 at 10).action_({<span class="s6">arg</span> sl; m.indexThumbSize=sl.value*24}).value_(0.5);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">StaticText</span>(w,380 at 18).string_(<span class="s19">"valueThumbSize"</span>);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Slider</span>(w,580 at 10).action_({<span class="s6">arg</span> sl; m.valueThumbSize=sl.value*24}).value_(0.5);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">StaticText</span>(w,580 at 18).string_(<span class="s19">"xOffset or gap"</span>);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Slider</span>(w,580 at 10).action_({<span class="s6">arg</span> sl;0.5- m.xOffset=sl.value*50});</p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">StaticText</span><span class="s3">(w,580 at 18).string_(</span>"setProperty(\\startIndex)"<span class="s3">);</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Slider</span>(w,580 at 10).action_({<span class="s6">arg</span> sl; m.setProperty(<span class="s20">\startIndex</span>, sl.value *m.size )};);</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="s3"><span class="Apple-tab-span">	</span></span>CompositeView<span class="s3">(w,580 at 10);</span><span class="s7">//spacer</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Button</span>(w,100 at 20).states_([[<span class="s19">"RESET"</span>,<span class="s6">Color</span>.red]])</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ w.view.removeAll; f.value; });</p>
-<p class="p17"><span class="Apple-tab-span">	</span>h=<span class="s6">StaticText</span>(w,450 at 18).string_(<span class="s19">""</span>).stringColor_(<span class="s6">Color</span>.yellow);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Button</span>(w,100 at 20).states_([[<span class="s19">"elasticMode = 0"</span>],[<span class="s19">"elasticMode = 1"</span>,<span class="s6">Color</span>.white]])</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">|b|</span> m.elasticMode = b.value});</p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">Button</span><span class="s3">(w,160 at 20).states_([[</span>"indexIsHorizontal = false"<span class="s3">],[</span>"indexIsHorizontal = true"<span class="s3">,</span><span class="s6">Color</span><span class="s3">.white]])</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">|b|</span> m.indexIsHorizontal = b.value.booleanValue}).value_(1);</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Button</span>(w,120 at 20).states_([[<span class="s19">"isFilled = false"</span>],[<span class="s19">"isFilled = true"</span>,<span class="s6">Color</span>.white]])</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">|b|</span> m.isFilled = b.value.booleanValue});</p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">Button</span><span class="s3">(w,120 at 20).states_([[</span>"drawRects = false"<span class="s3">],[</span>"drawRects = true"<span class="s3">,</span><span class="s6">Color</span><span class="s3">.white]])</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">|b|</span> m.drawRects = b.value.booleanValue}).valueAction_(1);</p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">Button</span><span class="s3">(w,100 at 20).states_([[</span>"drawLines = false"<span class="s3">],[</span>"drawLines = true"<span class="s3">,</span><span class="s6">Color</span><span class="s3">.white]])</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">|b|</span> m.drawLines = b.value.booleanValue});</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Button</span>(w,160 at 20).states_([[<span class="s19">"readOnly = false"</span>],[<span class="s19">"readOnly = true"</span>,<span class="s6">Color</span>.white]])</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">|b|</span> m.readOnly = b.value.booleanValue});</p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">Button</span><span class="s3">(w,120 at 20).states_([[</span>"showIndex = false"<span class="s3">],[</span>"showIndex = true"<span class="s3">,</span><span class="s6">Color</span><span class="s3">.white]])</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">|b|</span> m.showIndex = b.value.booleanValue});</p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">Button</span><span class="s3">(w,120 at 20).states_([[</span>"reference = nil"<span class="s3">],[</span>"reference filled"<span class="s3">,</span><span class="s6">Color</span><span class="s3">.white],[</span>"reference random"<span class="s3">,</span><span class="s6">Color</span><span class="s3">.yellow]])</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s6">|b|</span> b.value.booleanValue.if({</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(b.value>1).if(</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{m.reference=<span class="s6">Array</span>.fill(n, {1.0.rand})},</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{m.reference=<span class="s6">Array</span>.fill(m.size, {0.5})});</p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},{ q=m.value;m.reference=[]; h.string=</span>"reference can't be returned to nil presently. please hit RESET."<span class="s3">}</span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Button</span>(w,180 at 20).states_([[<span class="s19">"fillColor = Color.rand"</span>]]).action_({m.fillColor=<span class="s6">Color</span>.rand});</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Button</span>(w,180 at 20).states_([[<span class="s19">"strokeColor = Color.rand"</span>]]).action_({m.strokeColor=<span class="s6">Color</span>.rand});</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s6">Button</span>(w,180 at 20).states_([[<span class="s19">"background = Color.rand"</span>]]).action_({m.background=<span class="s6">Color</span>.rand});</p>
-<p class="p20"><span class="Apple-tab-span">	</span></p>
-<p class="p17">};</p>
-<p class="p17">f.value;</p>
-<p class="p17">w.front;</p>
-<p class="p20"><br></p>
-<p class="p17">)</p>
-<p class="p20"><br></p>
-<p class="p6"><br></p>
-<p class="p14"><b>Load a Sound file</b></p>
-<p class="p3"><br></p>
-<p class="p19"><br></p>
-<p class="p12">(</p>
-<p class="p13">// press shift to extend the selection</p>
-<p class="p13">// use as waveView: scrubbing over the view returns index</p>
-<p class="p13">// if showIndex(false) the view is not refreshed (faster);</p>
-<p class="p13">// otherwise you can make a selection with shift - drag.</p>
-<p class="p12"><span class="s6">var</span> size, file, maxval, minval;</p>
-<p class="p12">size = 640;</p>
-<p class="p12">a = <span class="s6">Window</span>(<span class="s19">"test"</span>, <span class="s6">Rect</span>(200 , 140, 650, 150));</p>
-<p class="p12">a.view.decorator = <span class="s6">FlowLayout</span>(a.view.bounds);</p>
-<p class="p12">b = <span class="s6">MultiSliderView</span>(a, <span class="s6">Rect</span>(0, 0, size, 50));</p>
-<p class="p12">b.readOnly_(<span class="s6">true</span>);</p>
-<p class="p12">a.view.decorator.nextLine;</p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p12">d = <span class="s6">Array</span>.new;</p>
-<p class="p12">c = <span class="s6">FloatArray</span>.newClear(65493);</p>
-<p class="p19"><br></p>
-<p class="p12">r = <span class="s6">Slider</span>( a, <span class="s6">Rect</span>(0, 0, size, 12));</p>
-<p class="p12">r.action = {<span class="s6">arg</span> ex; b.setProperty(<span class="s20">\xOffset</span>, (ex.value * 4) + 1 )};</p>
-<p class="p19"><br></p>
-<p class="p12">file = <span class="s6">SoundFile</span>.new;</p>
-<p class="p24"><span class="s3">file.openRead(</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p12">file.numFrames.postln;</p>
-<p class="p12">file.readData(c);</p>
-<p class="p13">// file.inspect;</p>
-<p class="p12">file.close;</p>
-<p class="p12">minval = 0;</p>
-<p class="p12">maxval = 0;</p>
-<p class="p12">f = <span class="s6">Array</span>.new;</p>
-<p class="p12">d = <span class="s6">Array</span>.new;</p>
-<p class="p12">c.do({<span class="s6">arg</span> fi, i;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>if(fi < minval, {minval = fi});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>if(fi > maxval, {maxval = fi});</p>
-<p class="p19"><br></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>//f.postln;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>if(i % 256 == 0,{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = d.add((1 + maxval ) * 0.5 );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = f.add((1 + minval ) * 0.5 );</p>
-<p class="p19"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>minval = 0;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maxval = 0;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p12">});</p>
-<p class="p19"><br></p>
-<p class="p13"><span class="s3">b.reference_(d); </span>// this is used to draw the upper part of the table</p>
-<p class="p12">b.value_(f);</p>
-<p class="p19"><br></p>
-<p class="p12">r = <span class="s6">Slider</span>( a, <span class="s6">Rect</span>(0, 0, size, 12));</p>
-<p class="p12">r.action = {<span class="s6">arg</span> ex; b.setProperty(<span class="s20">\startIndex</span>, ex.value *f.size )};</p>
-<p class="p19"><br></p>
-<p class="p13">// b.enabled_(false);</p>
-<p class="p12">b.action = {<span class="s6">arg</span> xb; (<span class="s19">"index: "</span> ++ xb.index).postln};</p>
-<p class="p12">b.drawLines_(<span class="s6">true</span>);</p>
-<p class="p12">b.drawRects_(<span class="s6">false</span>);</p>
-<p class="p12">b.isFilled_(<span class="s6">true</span>);</p>
-<p class="p12">b.selectionSize_(10);</p>
-<p class="p12">b.index_(10);</p>
-<p class="p12">b.thumbSize_(1);</p>
-<p class="p12">b.gap_(0);</p>
-<p class="p12">b.colors_(<span class="s6">Color</span>.black, <span class="s6">Color</span>.blue(1.0,1.0));</p>
-<p class="p12">b.showIndex_(<span class="s6">true</span>);</p>
-<p class="p12">a.front;</p>
-<p class="p19"><br></p>
-<p class="p12">)</p>
-<p class="p3"><br></p>
-<p class="p1"><b>Use as Sequencer</b></p>
-<p class="p25"><br></p>
-<p class="p13">// example with sound</p>
-<p class="p12">(</p>
-<p class="p12"><span class="s6">var</span> size;</p>
-<p class="p12">size = 12;</p>
-<p class="p12">s.waitForBoot{<span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>n={<span class="s6">arg</span> freq=330; <span class="s6">SinOsc</span>.ar(freq,0,0.2)}.play;</p>
-<p class="p19"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>(<span class="s19">"test"</span>, <span class="s6">Rect</span>(200 , 450, 10 + (size * 17), 10 + (size * 17)));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s6">FlowLayout</span>(w.view.bounds);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s6">MultiSliderView</span>(w, <span class="s6">Rect</span>(0, 0, size * 17, size * 17));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.value_( <span class="s6">Array</span>.fill(size,{<span class="s6">|i|</span> i/size}) );</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.background_(<span class="s6">Color</span>.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.action = {<span class="s6">arg</span> xb;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.set(<span class="s20">\freq</span>, 330+(1100*xb.value.at(xb.index)));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s19">"index: "</span> ++ xb.index ++<span class="s19">" value: "</span> ++ xb.value.at(xb.index)).postln};</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>b.elasticMode_(1); </span>// makes the squares fit evenly</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.setProperty(<span class="s20">\showIndex</span>, <span class="s6">true</span>); <span class="s7">// cursor mode</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.readOnly=<span class="s6">true</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p19"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>r = <span class="s6">Routine</span>({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>30.do({ <span class="s6">arg</span> i;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.index_(i%size);</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.doAction;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>20.do({ <span class="s6">arg</span> i;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.index_(b.size.rand);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.doAction;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.1,0.2].choose.wait;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{w.close}.defer;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s6">AppClock</span>.play(r);</p>
-<p class="p12">};</p>
-<p class="p12">)</p>
-<p class="p12">Note: <span class="s6">this</span> forces the entire view to redraw at each step and will spend a lot of <span class="s6">CPU</span>.</p>
-<p class="p19"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCNumberBox.html b/Help/GUI/Cocoa-GUI/SCNumberBox.html
deleted file mode 100644
index 1c3b4cd..0000000
--- a/Help/GUI/Cocoa-GUI/SCNumberBox.html
+++ /dev/null
@@ -1,269 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {font: 9.0px Monaco}
-span.s6 {color: #606060}
-span.s7 {font: 14.0px Helvetica}
-span.s8 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCNumberBox<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a box for displaying and editing numerical values</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCStaticTextBase.html"><b>SCStaticTextBase</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="SCTextField.html"><span class="s3">SCTextField</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding SCNumberBox</b></p>
-<p class="p1">Whatever is entered into the number box is converted to a <a href="../../Math/Float.html"><span class="s4">Float</span></a> upon hitting return or enter. You can also use exponential notation for entering a number, e.g. "2.1e-2" will be converted to 0.02. Drag and drop accepts a <a href="../../Math/Number.html"><span class="s4">Number</span></a>.<span class="Apple-converted-space">  </span>SCNumberBox inherits formatting methods from <a href="SCStaticTextBase.html"><span class="s4">SCStaticTextBase</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">By default, <b>scroll</b> is set to to true, and you can use mouse scrolling in the SCNumberBox by step. By default, the shift, ctrl, and alt keys will modify the arrow stepping and scrolling by 100x, 10x, or 0.1x repectively, though you can customize this by setting <b>shift_scale, ctrl_scale, </b>or<b> alt_scale.</b>. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s4">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s4">Point</span></a> indicating width at height.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">(</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s4">Window</span>(<span class="s6">"NumberBox Example"</span>, <span class="s4">Rect</span>(100, 500, 400, 120));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="Apple-tab-span">	</span><span class="s4">NumberBox</span>(w, <span class="s4">Rect</span>(150, 10, 100, 20));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value = rrand(1,15);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action = {<span class="s4">arg</span> numb; numb.value.postln; };</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><br></p>
-<p class="p12"><b>Accessing Instance and Class Variables</b></p>
-<p class="p13"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets the number box value. This will <b>not</b> evaluate the function assigned to <b>action</b> (see <a href="SCView.html"><span class="s4">SCView</span></a>).</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- A numerical value. You can also use exponential notation for entering a number, e.g. 2.1e-2 will be converted to 0.02.</p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the number box to display <b>val</b>, and evaluates action (see <a href="SCView.html"><span class="s4">SCView</span></a>), if the value has changed.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- The index of an item in the <b>items</b> array .</p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>step_(val)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>step</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The size of the step for the <b>increment</b> and <b>decrement</b> methods.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a>.</p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>clipLo_(aFloat)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>clipHi_(aFloat)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>clipLo</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>clipHi</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Constrain the receiver's value to clipLo and clipHi.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clipLo defaults to -<span class="s4">inf</span> - no clipping.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clipHi defaults to <span class="s4">inf</span> - no clipping.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aFloat </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a>.</p>
-<p class="p11"><br></p>
-<p class="p12"><b>Mouse click and drag scrolling behavior</b></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>scroll_(bool)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>scroll</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Enable/disable the receiver's mouse click and drag scrolling behavior.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scroll defaults to true.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>scroll_step_(val)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>scroll_step</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The default size of the step for mouse scrolling. This is modified by <b>shift_scale, ctrl_scale, </b>and <b>alt_scale.</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a>.</p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>shift_scale_(aFloat)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>shift_scale</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A value for <b>increment</b>'s or <b>decrement</b>'s zoom argument while mouse scrolling<span class="Apple-converted-space">  </span>or arrow keys, and while the <b>shift</b> key is pressed.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>shift_scale</b> defaults to 100.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aFloat </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a>.</p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>ctrl_scale_(aFloat)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>ctrl_scale</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A value for <b>increment</b>'s or <b>decrement</b>'s zoom argument while mouse scrolling or arrow keys, and while the <b>ctrl</b> key is pressed.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ctrl_scale</b> defaults to 10.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aFloat </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>alt_scale_(aFloat)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>alt_scale</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A value for <b>increment</b>'s or <b>decrement</b>'s zoom argument while mouse scrolling or arrow keys, and while the <b>alt</b> key is pressed.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ctrl_scale</b> defaults to 0.1.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aFloat </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a>.</p>
-<p class="p11"><br></p>
-<p class="p12"><b>Customizing Appearance</b></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>boxColor</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>boxColor_ (color)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This has been deprecated. Use <b>background </b>/ <b>background_</b> instead. See <a href="SCView.html"><span class="s4">SCView</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>normalColor_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>normalColor</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default is Color.black. You can use the normalColor and the stringColor in combination to indicate if the contents of the box have changed. When you create the box, its string color is the color you set in stringColor. The if you change the box contents, either with the keyboard or with the setter, value_ , then the color changes to normalColor. <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s4">Color</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s4">Window</span>(<span class="s6">"NumberBox Example"</span>, <span class="s4">Rect</span>(100, 500, 400, 120));</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="Apple-tab-span">	</span><span class="s4">NumberBox</span>(w, <span class="s4">Rect</span>(150, 10, 100, 20));</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value = 5;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.stringColor=<span class="s4">Color</span>.black;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.normalColor=<span class="s4">Color</span>.green(0.8);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action = {<span class="s4">arg</span> numb; numb.value.postln; };</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value = 12;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>typingColor_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>typingColor</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The string color while typing a new value in the number box. The default is Color.red.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s4">Color</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Subclassing and Internal Methods</b></p>
-<p class="p6"><span class="s7"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>increment(mul)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Increments the value of the box by <b>step</b>. Called by <b>defaultKeyDownAction</b>, but you can call it directly too.</p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>decrement(mul)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Decrements the value of the box by <b>step</b>. Called by <b>defaultKeyDownAction</b>, but you can call it directly too.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>keyString_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>keyString</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A <a href="../../Collections/String.html"><span class="s4">String</span></a> containing what the user types into the number box. It is converted to a <a href="../../Math/Float.html"><span class="s4">Float</span></a> upon hitting return or enter. This also allows you to use exponential notation for entering a number, e.g. 2.1e-2 will be converted to 0.021 .</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>init (argParent, argBounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Overrides the init method of <a href="SCView.html"><span class="s4">SCView</span></a>.</p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.asAscii,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>enter typed value<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(enter key or cmd-C on Mac OSX )</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span>increment by <b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span>increment by <b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span>decrement by <b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span>decrement by <b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>left arrow<span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s4">SCView</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s2">, </span>\visible<span class="s2">, </span>\enabled<span class="s2">, </span>\canFocus<span class="s2">, </span>\resize<span class="s2">, </span>\background<span class="s2">, </span>\minWidth<span class="s2">, </span>\maxWidth<span class="s2">, </span>\minHeight<span class="s2">, </span>\maxHeight<span class="s2">, </span>\string<span class="s2">, </span>\font<span class="s2">, </span>\stringColor<span class="s2">, </span>\boxColor<span class="s2">, </span>\focusColor<span class="s2"> ]</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag <b>from</b> an SCNumberBox. Returns <b>object</b>.asFloat.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to place a drag in this object. By default, SCNumberBox will respond only to drags where the drag contains a <a href="../../Math/Number.html"><span class="s4">Number</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been received. Performs <b>valueAction_()</b> using <b>currentDrag</b> as an argument<span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p15"><br></p>
-<p class="p14">(</p>
-<p class="p14"><span class="Apple-tab-span">	</span>w = <span class="s4">Window</span>(<span class="s6">"NumberBox Example"</span>, <span class="s4">Rect</span>(100, 500, 400, 120));</p>
-<p class="p14"><span class="Apple-tab-span">	</span>b = <span class="Apple-tab-span">	</span><span class="s4">NumberBox</span>(w, <span class="s4">Rect</span>(150, 10, 100, 20));</p>
-<p class="p14"><span class="Apple-tab-span">	</span>b.value = rrand(1,15);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>b.action = {<span class="s4">arg</span> numb; numb.value.postln; };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>w.front</p>
-<p class="p14">)</p>
-<p class="p18">// try these one at time</p>
-<p class="p18"><span class="s2">b.value = rrand(1,15) ; <span class="Apple-tab-span">	</span></span>// sets the value but does not perform the action</p>
-<p class="p18"><span class="s2">b.valueAction_(5); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sets the value and performs the action</p>
-<p class="p18"><span class="s2">b.step_(0.1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// change the increment/decrement size for the arrow keys</p>
-<p class="p18"><span class="s2">b.scrollStep=10;<span class="Apple-converted-space">    </span></span>// change the increment/decrement size for the mosueScrolling</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s2">b.background_(</span><span class="s4">Color</span><span class="s2">.grey); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// change the background color of the box</p>
-<p class="p18"><span class="s2">b.typingColor_(</span><span class="s4">Color</span><span class="s2">(0.3,1,0.3)); <span class="Apple-tab-span">	</span></span>// change the typing color for the box</p>
-<p class="p18"><span class="s2">b.normalColor_(</span><span class="s4">Color</span><span class="s2">.white);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// change the normal color for the box. won't change until next value change</p>
-<p class="p15"><br></p>
-<p class="p14">b.setProperty(<span class="s8">\stringColor</span>,<span class="s4">Color</span>.white);</p>
-<p class="p14">b.setProperty(<span class="s8">\align</span>,<span class="s8">\center</span>);</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s2">b.increment; </span>// increment or decrement by step</p>
-<p class="p14">b.decrement;</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p18">// change freqency of a playing synth by step using arrow keys</p>
-<p class="p11"><br></p>
-<p class="p14">(<span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span>s.waitForBoot({</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n={<span class="s4">arg</span> freq=220;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> out;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out=<span class="s4">SinOsc</span>.ar(freq,0,0.2);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8.do{out = <span class="s4">AllpassN</span>.ar(out, 0.2,0.02+0.20.rand,8)};</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s4">Window</span><span class="s2">(</span>"Use arrow keys to change the frequency by steps"<span class="s2">, </span><span class="s4">Rect</span><span class="s2">(100, 500, 500, 120));</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="Apple-tab-span">	</span><span class="s4">NumberBox</span>(w, <span class="s4">Rect</span>(200, 10, 100, 20));</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value = 220;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action = {<span class="s4">arg</span> numb; n.set(<span class="s8">\freq</span>,numb.value); };</p>
-<p class="p18"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.step=55; </span>//make the step a fraction of the freq</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.focus;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span>});</p>
-<p class="p14">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCPen.html b/Help/GUI/Cocoa-GUI/SCPen.html
deleted file mode 100644
index ceab731..0000000
--- a/Help/GUI/Cocoa-GUI/SCPen.html
+++ /dev/null
@@ -1,1168 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001fe8}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
-p.p10 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ad1d13}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ad1d13; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #ad1d13}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #ad1d13; min-height: 14.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019ba}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #ad1d13}
-span.s6 {font: 9.0px Monaco}
-span.s7 {color: #0000bf}
-span.s8 {color: #606060}
-span.s9 {color: #2b6f11}
-span.s10 {font: 12.0px Helvetica; color: #000000}
-span.s11 {color: #bf0000}
-span.s12 {font: 10.0px Monaco}
-span.s13 {font: 8.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCPen<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>draw on a SCWindow</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p3">A class which allows you to draw on a <a href="SCWindow.html"><span class="s2">SCWindow</span></a>. It has no instance methods.</p>
-<p class="p2"><br></p>
-<p class="p3">The following methods must be called within an SCWindow-drawHook or a SCUserView-drawFunc function, and will only be visible once the window or the view is refreshed. Each call to SCWindow-refresh SCUserView-refresh will 'overwrite' all previous drawing by executing the currently defined function.</p>
-<p class="p2"><br></p>
-<p class="p3">SCPen is returned by <a href="../Main-GUI/Pen.html"><span class="s2">Pen</span></a> when CocoaGUI is in use. The examples below use the <a href="../GUI-Tools/ViewRedirect.html"><span class="s2">ViewRedirect</span></a> subclass, <a href="../Main-GUI/Pen.html"><span class="s2">Pen</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SCWindow.html"><span class="s4">SCWindow</span></a>, <a href="SCUserView.html"><span class="s4">SCUserView</span></a>, <a href="../GUI-Tools/Color.html"><span class="s4">Color</span></a>, and <a href="../../Collections/String.html"><span class="s4">String</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Drawing Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">The following methods define paths. You will need to call <b>*stroke</b> or <b>*fill</b> to actually draw them.</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*moveTo (point)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Move the Pen to <b>point</b>. <b>point</b> is an instance of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*lineTo (point)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Draw a line (define a path) from the current position to <b>point</b>. <b>point</b> is an instance of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p3"> </p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*line (p1, p2)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Draw a line (define a path) from p1 to p2. Current position will be p2. <b>p1</b> and <b>p2</b> are instances of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s5"><b><span class="Apple-tab-span">	</span></b></span><b>*curveTo(point, cpoint1, cpoint2)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>draws a cubic bezier curve from the current position to <b>point</b>. </p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>cpoint1, cpoint2 </b>are control points determining the curve's curvature.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>point, cpoint1 </b>and<b> cpoint2 </b>are instances of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s5"><b><span class="Apple-tab-span">	</span></b></span><b>*quadCurveTo(point, cpoint1)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>draws a quad bezier curve from the current position to <b>point</b>. </p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>cpoint1 </b>is a control point determining the curve's curvature.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>point, cpoint1 </b>are instances of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*arcTo(point1, point2, radius)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>draws an arc of a circle using a radius and tangent points.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>point1</b> is the end point of the first tangent line. Its start point is the current position.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>point2</b> is the end point of the second tangent line. Its start point is <b>point1</b>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>radius</b> is the radius of the arc.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>point1, point2 </b>are instances of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> w = <span class="s7">Window</span>(<span class="s8">"arcTo"</span>, <span class="s7">Rect</span>(100, 200, 300, 300)).front;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> r= 15;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = { <span class="s7">|v|</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.fillColor = <span class="s7">Color</span>.blue;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.strokeColor = <span class="s7">Color</span>.red;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.moveTo(150 at 150);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.arcTo(200 at 150, 200 at 225, r);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.arcTo(200 at 225, 100 at 225, r);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.arcTo(100 at 225, 100 at 150, r);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.arcTo(100 at 150, 150 at 150, r);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.lineTo(150 at 150);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.fillStroke;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">)</span></p>
-<p class="p5"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*addArc(center, radius, startAngle, arcAngle)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draw an arc around the <b>[Point]</b> <b>center</b>, at <b>radius</b> number of pixels. <b>startAngle</b> and <b>arcAngle</b> refer to the starting angle and the extent of the arc, and are in radians [0..2pi].</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(100, 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.color = <span class="s2">Color</span>.red(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addArc((100.rand)@(100.rand), rrand(10, 100), 2pi.rand, pi);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.perform([<span class="s9">\stroke</span>, <span class="s9">\fill</span>].choose);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*addWedge(center, radius, startAngle, arcAngle)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draw a wedge around the <b>[Point]</b> <b>center</b>, at <b>radius</b> number of pixels. <b>startAngle</b> and <b>arcAngle</b> refer to the starting angle and the extent of the arc, and are in radians [0..2pi].</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(100, 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.color = <span class="s2">Color</span>.blue(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addWedge((100.rand)@(100.rand), rrand(10, 100), 2pi.rand, 2pi.rand);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.perform([<span class="s9">\stroke</span>, <span class="s9">\fill</span>].choose);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*addAnnularWedge (center, innerRadius, outerRadius, startAngle, arcAngle)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draw an annular wedge around the <b>[Point]</b> <b>center</b>, from <b>innerRadius</b> to <b>outerRadius</b> in pixels. <b>startAngle</b> and <b>arcAngle</b> refer to the starting angle and the extent of the arc, and are in radians [0..2pi].</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(100, 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1000.do{</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.color = <span class="s2">Color</span>.green(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addAnnularWedge(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(100.rand)@(100.rand), </p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(10, 50), </p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(51, 100), <span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi.rand, </p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi.rand</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.perform([<span class="s9">\stroke</span>, <span class="s9">\fill</span>].choose);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*addRect(rect)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>adds a rectangle to the drawing; </p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.dump;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>80.do{</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.color = <span class="s2">Color</span>.green(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addRect(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Rect</span>(20, 20, (w.bounds.width-40).rand, (w.bounds.height-40).rand)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.perform([<span class="s9">\stroke</span>, <span class="s9">\fill</span>].choose);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*stroke</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outline the previous defined path.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.red;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(200 at 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(250 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(300 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 250);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(150 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 100);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*fill</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fill the previous defined path. </p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.red;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(200 at 100);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(250 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(300 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 250);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(150 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 100);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*draw(option)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>draw the previous defined path using any of the following options:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 = fill</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 = fill using even-odd rule</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 = stroke</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3 = fill and stroke the current path<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> </p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 = fill and stroke using even-odd rule</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.red;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(200 at 100);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(250 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(300 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 250);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(150 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 100);</p>
-<p class="p5"><br></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Pen</span><span class="s3">.draw(4); </span>// fill and then stroke</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*fillStroke</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b><span class="s6"><span class="Apple-tab-span">	</span></span>fill and stroke the current path<span class="Apple-tab-span">	</span>(shortcut to the <b>draw(3)</b> method)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.red;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(200 at 100);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(250 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(300 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 250);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(150 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 100);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillStroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">These methods do require separate calls to <b>*stroke</b> or <b>*fill</b>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*strokeRect(rect)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Strokes a rectangle into the window. <b>rect</b> is an instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>(<span class="s8">"strokeRect"</span>, <span class="s2">Rect</span>(128, 64, 360, 360));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s2">Rect</span>(100, 100, 160, 80);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.black.alpha_(0.8);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeRect(r);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*fillRect(rect)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Draws a filled rectangle into the window. <b>rect</b> is an instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*addOval(rect)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Adds an Oval shape to the current path. <b>rect</b> is an instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*strokeOval(rect)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Strokes an oval into the window. <b>rect</b> is an instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>(<span class="s8">"strokeOval"</span>, <span class="s2">Rect</span>(128, 64, 360, 360));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s2">Rect</span>(100, 100, 160, 80);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.black.alpha_(0.8);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeOval(r);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*fillOval(rect)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Draws a filled oval into the window. <b>rect</b> is an instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*fillAxialGradient(startPoint, endPoint, startColor, endColor)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draws an Axial gradient.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fill the gradient</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addRect(w.view.bounds.insetBy(30));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillAxialGradient(w.view.bounds.leftTop, w.view.bounds.rightBottom, <span class="s2">Color</span>.rand, <span class="s2">Color</span>.rand);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*fillRadialGradient(innerCircleCenter, outerCircleCenter, startRadius, endRadius, startColor, endColor)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Draws a Radial gradient.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fill the gradient</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(w.view.bounds.insetBy(30));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillRadialGradient(w.view.bounds.center, </p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.bounds.center, 0, w.bounds.width, <span class="s2">Color</span>.rand, <span class="s2">Color</span>.rand);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b>//<span class="Apple-tab-span">	</span>*drawAquaButton(rect, type=0, down=false, on=false)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><b>Graphics State Methods</b></p>
-<p class="p5"><br></p>
-<p class="p3">The following commands transform the graphics state, i.e. they effect all subsequent drawing commands. These transformations are cumulative, i.e. each command applies to the previous graphics state, <i>not</i> the original one.</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*translate(x=0, y=0)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>translate the coordinate system to have its origin moved by <b>x</b>,<b>y</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.blue;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(200,100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 0 at 0 is now 200 at 100</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 150);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// cumulative translations<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.clear);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.black;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// draw 35 lines</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>35.do {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(0 at 0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(50 at 350);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// shift 10 to the right every time</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(10, 0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*scale (x=0, y=0)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Scales subsequent drawing. <b>x</b> and <b>y</b> are scaling factors (i.e. 1 is normal, 2 is double size, etc.).</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.green;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(200,100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.scale(0.5, 2);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you have to set a starting point...</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 150);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*skew (x=0, y=0)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Skews subsequent drawing. <b>x</b> and <b>y</b> are skewing factors (i.e. 1 is normal).</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.green(0.5, 0.8);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(200,100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.skew(0.5, 0.2);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you have to set a starting point...</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 150);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*rotate (angle=0, x=0, y=0)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Rotates subsequent drawing around the <b>Point</b> x at y by the amount <b>angle </b>in radians [0..2pi].</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = 0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(220, 200);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(0,10);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color for all "real" drawing</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.hsv(c.fold(0, 1), 1, 1, 0.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you have to set a starting point...</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(0 at 0);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 150);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 0);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.rotate(0.2pi);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = c + 0.1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*matrix_ (array)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>transforms coordinate system.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>array = [a, b, c, d, x, y]</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a<span class="Apple-tab-span">	</span>zoomX</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b<span class="Apple-tab-span">	</span>shearingY</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c<span class="Apple-tab-span">	</span>shearingX</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d<span class="Apple-tab-span">	</span>zoomY</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x<span class="Apple-tab-span">	</span>translateX</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y<span class="Apple-tab-span">	</span>translateY</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> controlWindow, w;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r, a, b, c, d, matrix = [1, 0, 0, 1, 10, 10];</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> sliders, spex, name;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create a controller-window </p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>controlWindow = <span class="s2">Window</span>(<span class="s8">"matrix controls"</span>, <span class="s2">Rect</span>(400,200,350,120));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>controlWindow.front;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// determine the rectangle to be drawn</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s2">Rect</span>.fromPoints(a = 0 @ 0, c = 180 @ 180);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = r.leftBottom;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = r.rightTop;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the drawHook</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.red;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="Apple-tab-span">	</span><span class="s2">Pen</span>.matrix = matrix;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 5;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeRect(r);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeOval(r);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.color = <span class="s2">Color</span>.blue;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 0.1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="Apple-tab-span">	</span><span class="s2">Pen</span>.line(a, c);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="Apple-tab-span">	</span><span class="s2">Pen</span>.line(b, d);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>   </p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="s2">Pen</span>.font = <span class="s2">Font</span>( <span class="s8">"Helvetica-Bold"</span>, 12 );</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="s2">Pen</span>.stringAtPoint( <span class="s8">"A"</span>, a - 6 );</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="s2">Pen</span>.stringAtPoint( <span class="s8">"B"</span>, b - 6 );</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="s2">Pen</span>.stringAtPoint( <span class="s8">"C"</span>, c - (0 at 6) );</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="s2">Pen</span>.stringAtPoint( <span class="s8">"D"</span>, d - (0 at 6) );</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>   </p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="s2">Pen</span>.font = <span class="s2">Font</span>( <span class="s8">"Helvetica"</span>, 10 );</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="s2">Pen</span>.stringInRect( <span class="s8">"a matrix test"</span>, r.moveBy( 50, 50 ));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>controlWindow.view.decorator = sliders = <span class="s2">FlowLayout</span>(controlWindow.view.bounds);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>spex = [</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, 2.0].asSpec,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, 2.0].asSpec,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, 2.0].asSpec,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, 2.0].asSpec,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, 200.0].asSpec,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, 200.0].asSpec</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>name = #[zoomX, shearingY, shearingX, zoomY, translateX, translateY];</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6.do { <span class="s2">|i|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>    <span class="s2">EZSlider</span>(controlWindow, 300 @ 14, name[i], spex[i], { <span class="s2">|ez|</span> <span class="s2">var</span> val;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>            val = ez.value;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>            [i, val.round(10e-4)].postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>            matrix.put(i, val);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>            </span>w.refresh; // reevaluate drawHook function</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>  <span class="Apple-tab-span">	</span>}, matrix[i]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>  <span class="Apple-tab-span">	</span>sliders.nextLine;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*width_(width=1)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sets the width of the Pen for the whole stroke</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.blue(0.5, 0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(200,100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 10;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you have to set a starting point...</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 150);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*use (function)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Draw <b>function</b>, and then revert to the previous graphics state. This allows you to make complex transformations of the graphics state without having to explicitly revert to get back to 'normal'.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// modified by an example of Stefan Wittwer</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//paint origin</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.gray(0, 0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addArc(0 at 0, 20, 0, 2pi);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 10;</p>
-<p class="p5"><br></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Pen</span><span class="s3">.use { </span>// draw something complex...</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 0.5;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(100,100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.blue;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addArc(0 at 0, 10, 0, 2pi);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>20.do{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(0 at 0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.red(0.8, rrand(0.7, 1));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.skew(0, 0.1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now go on with all params as before</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// translation, skewing, width, and color modifications do not apply</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.line(10 at 120, 300 at 120);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*path(function)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>make a path, consisting of the drawing made in <b>function.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Unfortunately not working for now... </b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(there's no Meta_SCPen-endPath which currently is used in this method)</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*beginPath</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Discard any previous path.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="s10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span>// incomplete arrow</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.blue;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(200,100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// forget what we just drew</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginPath;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 150);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-100 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(-50 at 100);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(0 at 0);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*beginTransparencyLayer</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Begins a new transparency layer. Transparency layers are useful when you want to apply an effect to a group of objects or create a composite graphic.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new(<span class="s8">"Transparency Layer test"</span>, <span class="s2">Rect</span>(400,400,430,450)).front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.blue.setStroke;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.setShadow(2 at 2, 10, <span class="s2">Color</span>.black);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginTransparencyLayer;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.red.setFill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(<span class="s2">Rect</span>(20,40,100,100));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.green.setFill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(<span class="s2">Rect</span>(30,70,100,100));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.blue.setFill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(<span class="s2">Rect</span>(60,40,100,100));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"With Transparency Layer"</span>.drawCenteredIn(<span class="s2">Rect</span>(30, 40, 100, 100), <span class="s2">Font</span>.default, <span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.endTransparencyLayer;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(200, 0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.setShadow(2 at 2, 10, <span class="s2">Color</span>.black);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.red.setFill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(<span class="s2">Rect</span>(20,40,100,100));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.green.setFill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(<span class="s2">Rect</span>(30,70,100,100));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.blue.setFill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(<span class="s2">Rect</span>(60,40,100,100));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"Without Transparency Layer"</span>.drawCenteredIn(<span class="s2">Rect</span>(30, 40, 100, 100), <span class="s2">Font</span>.default, <span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(0, 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.setShadow(2 at 2, 10, <span class="s2">Color</span>.black);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginTransparencyLayer;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.push;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(<span class="s2">Rect</span>(20,40,170,170));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillAxialGradient(w.view.bounds.leftTop, w.view.bounds.rightBottom, <span class="s2">Color</span>.rand, <span class="s2">Color</span>.rand);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.pop;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"With Transparency Layer"</span>.drawCenteredIn(<span class="s2">Rect</span>(20,40,170,170), <span class="s2">Font</span>.default, <span class="s2">Color</span>.white);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.endTransparencyLayer;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(200, 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.setShadow(2 at 2, 10, <span class="s2">Color</span>.black);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addOval(<span class="s2">Rect</span>(20,40,170,170));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillAxialGradient(w.view.bounds.leftTop, w.view.bounds.rightBottom, <span class="s2">Color</span>.rand, <span class="s2">Color</span>.rand);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"Without Transparency Layer"</span>.drawCenteredIn(<span class="s2">Rect</span>(20,40,170,170), <span class="s2">Font</span>.default, <span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*endTransparencyLayer</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Ends the current transparency layer.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*clip</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Use the previously defined path as a clipping path.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span>      <span class="Apple-tab-span">	</span></span>// outline the clipping path</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(110 at 110);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(290 at 110);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(290 at 240);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(110 at 240);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(110 at 110);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now clip</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.clip;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// everything else we draw is now clipped</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.yellow;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillRect(<span class="s2">Rect</span>(0,0,400,400));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.red;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(200 at 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(250 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(300 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 250);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(150 at 200);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*smoothing_(flag)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>turns on/off anti-aliasing.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> w = <span class="s7">Window</span>(<span class="s8">"smoothing"</span>, <span class="s7">Rect</span>(100, 200, 500, 300)).front;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s7">Color</span>.white);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = { <span class="s7">|v|</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.strokeColor = <span class="s7">Color</span>.grey(0.25);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.smoothing_(<span class="s7">false</span>);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">//no anti-aliasing</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>50.do{<span class="s7">|i|</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.moveTo(50 at 50.rrand(250));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.lineTo(250 at 50.rrand(250));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.stroke;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">Pen</span><span class="s3">.smoothing_(</span><span class="s7">true</span><span class="s3">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//anti-aliasing (default)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>50.do{<span class="s7">|i|</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.moveTo(250 at 50.rrand(250));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.lineTo(450 at 50.rrand(250));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pen</span>.stroke;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">)</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><b>*setShadow(offsetPoint, blur, color)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>will fill the current path with a shadow.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you should use this option between Pen.push / Pen.pop (or Pen.use)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*joinStyle_(option)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the lines joining style according to the defined options:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 = miter</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 = round</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 = bevel</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s5"><span class="Apple-tab-span">	</span></span><b>*capStyle_(option)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the lines joining style according to the defined options:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 = butt</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 = round</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 = square</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.white);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SCStaticText</span>(w, <span class="s2">Rect</span>(0,0,180,20))</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(</span>" Change Line Cap & Join Styles: "<span class="s3">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = <span class="s2">SCPopUpMenu</span>(w, <span class="s2">Rect</span>(180,0,130,20))</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.items_([</span>"Butt - Miter"<span class="s3">, </span>"Round - Round"<span class="s3">, </span>"Square - Bevel"<span class="s3">])</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({w.refresh});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.red;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width_(8.0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.capStyle_(y.value);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.joinStyle_(y.value);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(200 at 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(250 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(300 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 250);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(100 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(150 at 200);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(200 at 100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*alpha_(alphaValue)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the opacity level.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*blendMode_(mode)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the blending mode to use.</p>
-<p class="p15"><span class="s10"><span class="Apple-tab-span">	</span></span>/*</p>
-<p class="p15"><span class="Apple-tab-span">	</span>different blend modes:</p>
-<p class="p15"><span class="Apple-tab-span">	</span>OS X 10.4 and > Only</p>
-<p class="p15"><span class="Apple-tab-span">	</span>--------------------</p>
-<p class="p15"><span class="Apple-tab-span">	</span>0 - Normal</p>
-<p class="p15"><span class="Apple-tab-span">	</span>1 - Multiply</p>
-<p class="p15"><span class="Apple-tab-span">	</span>2 - Screen</p>
-<p class="p15"><span class="Apple-tab-span">	</span>3 - Overlay</p>
-<p class="p15"><span class="Apple-tab-span">	</span>4 - Darken</p>
-<p class="p15"><span class="Apple-tab-span">	</span>5 - Lighten</p>
-<p class="p15"><span class="Apple-tab-span">	</span>6 - ColorDodge</p>
-<p class="p15"><span class="Apple-tab-span">	</span>7 - ColorBurn</p>
-<p class="p15"><span class="Apple-tab-span">	</span>8 - SoftLight</p>
-<p class="p15"><span class="Apple-tab-span">	</span>9 - HardLight</p>
-<p class="p15"><span class="Apple-tab-span">	</span>10 - Difference</p>
-<p class="p15"><span class="Apple-tab-span">	</span>11 - Exclusion</p>
-<p class="p15"><span class="Apple-tab-span">	</span>12 - Hue</p>
-<p class="p15"><span class="Apple-tab-span">	</span>13 - Saturation</p>
-<p class="p15"><span class="Apple-tab-span">	</span>14 - Color</p>
-<p class="p15"><span class="Apple-tab-span">	</span>15 - Luminosity</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>OS 10.5 and > Only</p>
-<p class="p15"><span class="Apple-tab-span">	</span>--------------------</p>
-<p class="p15"><span class="Apple-tab-span">	</span>16 - Clear</p>
-<p class="p15"><span class="Apple-tab-span">	</span>17 - Copy</p>
-<p class="p15"><span class="Apple-tab-span">	</span>18 - SourceIn</p>
-<p class="p15"><span class="Apple-tab-span">	</span>19 - SourceOut</p>
-<p class="p15"><span class="Apple-tab-span">	</span>20 - SourceATop</p>
-<p class="p15"><span class="Apple-tab-span">	</span>21 - DestinationOver</p>
-<p class="p15"><span class="Apple-tab-span">	</span>22 - DestinationIn</p>
-<p class="p15"><span class="Apple-tab-span">	</span>23 - DestinationATop</p>
-<p class="p15"><span class="Apple-tab-span">	</span>24 - XOR</p>
-<p class="p15"><span class="Apple-tab-span">	</span>25 - PlusDarker</p>
-<p class="p15"><span class="Apple-tab-span">	</span>26 - PlusLighter</p>
-<p class="p15"><span class="Apple-tab-span">	</span>*/</p>
-<p class="p17"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s12"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> blendMode=0, blendString=<span class="s8">"Normal"</span>;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = <span class="s2">SCPopUpMenu</span>(w, <span class="s2">Rect</span>(10, w.view.bounds.height - 30, 150, 20));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.items = [</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s13">"</span>0 - Normal"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"1 - Multiply"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"2 - Screen"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"3 - Overlay"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"4 - Darken"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"5 - Lighten"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"6 - ColorDodge"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"7 - ColorBurn"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"8 - SoftLight"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"9 - HardLight"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"10 - Difference"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"11 - Exclusion"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"12 - Hue"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"13 - Saturation"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"14 - Color"<span class="s3">,</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"15 - Luminosity"</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.action_({<span class="s2">|view|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blendMode = view.value;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blendString = view.items.at(blendMode);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>80.do{<span class="s2">|i|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.blendMode_(blendMode);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.color = <span class="s2">Color</span>.green(0.6, 0.10);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addRect(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Rect</span>(20, 20, 20 + (i*4), 20 + (i*4));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*lineDash_(pattern)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the line dash pattern. </p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pattern should be a <span class="s2">FloatArray</span> of values that specify the lengths of the </p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>painted segments and not painted segments.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> w;</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s2">Window</span><span class="s3">.new(</span>"Radial Gradient + line dash + cubic bezier curve example"<span class="s3">, </span><span class="s2">Rect</span><span class="s3">(640,630,300,300)).front;</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>u = <span class="s2">SCUserView</span>.new(w, w.view.bounds).resize_(5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>u.drawFunc = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillRadialGradient(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>u.bounds.center,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>u.bounds.center,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, u.bounds.width.max(u.bounds.height),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.new255(105, 130, 150, 255),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.new255(57, 73, 88, 255)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white.alpha_(0.2).setFill;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white.setStroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineDash_(<span class="s2">FloatArray</span>[3,3]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(u.bounds.left@(u.bounds.top + (u.bounds.height*0.5)));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.curveTo(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>u.bounds.right@(u.bounds.top + (u.bounds.height*0.5)),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(u.bounds.left + 40)@(u.bounds.top),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(u.bounds.right - 40)@(u.bounds.bottom)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillStroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p12"><br></p>
-<p class="p8">(</p>
-<p class="p9">// simple rotating and scaling</p>
-<p class="p8"><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>(<span class="s8">"Pen Rotation and Scaling"</span>, <span class="s2">Rect</span>(128, 64, 360, 360));</p>
-<p class="p8"><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// use the same rect for everything, just scale and rotate</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r = <span class="s2">Rect</span>(0,0,200,80);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.black;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// offset all subsequent co-ordinates</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(80,20);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillRect(r);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.red;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale all subsequent co-ordinates</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.scale(0.8, 0.8);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(8,10);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// rotate all subsequent co-ordinates</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.rotate(0.1pi);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillRect(r);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.blue;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lather, rinse, repeat</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.scale(0.8, 0.8);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.rotate(0.1pi);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 3;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeRect(r);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.yellow(1,0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.scale(0.8, 0.8);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.rotate(0.1pi);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(20,-20);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillOval(r);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p9">// redraw at random interval</p>
-<p class="p9">// different every time</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> w, run = <span class="s2">true</span>;</p>
-<p class="p8">w = <span class="s2">Window</span>(<span class="s8">"my name is... panel"</span>, <span class="s2">Rect</span>(128, 64, 800, 800));</p>
-<p class="p8">w.view.background = <span class="s2">Color</span>.white;</p>
-<p class="p8">w.onClose = { run = <span class="s2">false</span>; };</p>
-<p class="p8">w.front;</p>
-<p class="p8">w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 0.2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>400.do {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginPath;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(<span class="s2">Point</span>(10.rand * 80 + 40, 10.rand * 80 + 40));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(<span class="s2">Point</span>(10.rand * 80 + 40, 10.rand * 80 + 40));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">};</p>
-<p class="p5"><br></p>
-<p class="p8">{ while { run } { w.refresh; 1.0.rand.wait } }.fork(<span class="s2">AppClock</span>)</p>
-<p class="p5"><br></p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> w, run = <span class="s2">true</span>;</p>
-<p class="p8">w = <span class="s2">Window</span>(<span class="s8">"my name is... panel"</span>, <span class="s2">Rect</span>(128, 64, 800, 500));</p>
-<p class="p8">w.view.background = <span class="s2">Color</span>.white;</p>
-<p class="p8">w.onClose = { run = <span class="s2">false</span>; };</p>
-<p class="p8">w.front;</p>
-<p class="p8">w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>80.do {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = rrand(0,4) + 0.5;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginPath;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(<span class="s2">Point</span>(800.rand, 500.rand));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(<span class="s2">Point</span>(800.rand, 500.rand));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">};</p>
-<p class="p5"><br></p>
-<p class="p8">{ while { run } { w.refresh; 1.0.rand.wait } }.fork(<span class="s2">AppClock</span>)</p>
-<p class="p5"><br></p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p9">// Animation</p>
-<p class="p5"><br></p>
-<p class="p9">// Uses random seed to 'store' data</p>
-<p class="p9">// By reseting the seed each time the same random values and shapes are generated for each 'frame'</p>
-<p class="p9">// These can then be subjected to cumulative rotation, etc., by simply incrementing the phase var.</p>
-<p class="p8">(</p>
-<p class="p9">// By James McCartney</p>
-<p class="p8"><span class="s2">var</span> w, h = 700, v = 700, seed, run = <span class="s2">true</span>, phase = 0;</p>
-<p class="p8">w = <span class="s2">Window</span>(<span class="s8">"wedge"</span>, <span class="s2">Rect</span>(40, 40, h, v), <span class="s2">false</span>);</p>
-<p class="p8">w.view.background = <span class="s2">Color</span>.rand(0,0.3);</p>
-<p class="p9"><span class="s3">w.onClose = { run = </span><span class="s2">false</span><span class="s3"> }; </span>// stop the thread on close</p>
-<p class="p8">w.front;</p>
-<p class="p9">// store an initial seed value for the random generator</p>
-<p class="p8">seed = <span class="s2">Date</span>.seed;</p>
-<p class="p8">w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reset this thread's seed for a moment</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">thisThread</span>.randSeed = <span class="s2">Date</span>.seed;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now a slight chance of a new seed or background color</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (0.006.coin) { seed = <span class="s2">Date</span>.seed; };</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (0.02.coin) { w.view.background = <span class="s2">Color</span>.rand(0,0.3); };</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// either revert to the stored seed or set the new one</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">thisThread</span>.randSeed = seed;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the random values below will be the same each time if the seed has not changed</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// only the phase value has advanced</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(h/2, v/2);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// rotate the whole image</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// negative random values rotate one direction, positive the other</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.rotate(phase * 1.0.rand2);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale the rotated y axis in a sine pattern</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.scale(1, 0.3 * sin(phase * 1.0.rand2 + 2pi.rand) + 0.5 );</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create a random number of annular wedges</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(6,24).do {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.color = <span class="s2">Color</span>.rand(0.0,1.0).alpha_(rrand(0.1,0.7));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginPath;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.addAnnularWedge(<span class="s2">Point</span>(0,0), a = rrand(60,300), a + 50.rand2, 2pi.rand </p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ (phase * 2.0.rand2), 2pi.rand);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (0.5.coin) {<span class="s2">Pen</span>.stroke}{<span class="s2">Pen</span>.fill};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">};</p>
-<p class="p5"><br></p>
-<p class="p9">// fork a thread to update 20 times a second, and advance the phase each time</p>
-<p class="p8">{ while { run } { w.refresh; 0.05.wait; phase = phase + 0.01pi;} }.fork(<span class="s2">AppClock</span>)</p>
-<p class="p5"><br></p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> w, phase = 0, seed = <span class="s2">Date</span>.seed, run = <span class="s2">true</span>;</p>
-<p class="p8">w = <span class="s2">Window</span>(<span class="s8">"my name is... panel"</span>, <span class="s2">Rect</span>(128, 64, 800, 800));</p>
-<p class="p8">w.view.background = <span class="s2">Color</span>.blue(0.4);</p>
-<p class="p8">w.onClose = { run = <span class="s2">false</span>; };</p>
-<p class="p8">w.front;</p>
-<p class="p8">w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (0.02.coin) { seed = <span class="s2">Date</span>.seed; };</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">thisThread</span>.randSeed = seed;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.white;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>200.do {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> a = 4.rand;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> b = 24.rand;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r1 = 230 + (50 * a);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> a1 = 2pi / 24 * b + phase;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r2 = 230 + (50 * (a + 1.rand2).fold(0,3));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> a2 = 2pi / 24 * (b + (3.rand2)).wrap(0,23) + phase;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 0.2 + 1.0.linrand;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginPath;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(<span class="s2">Polar</span>(r1, a1).asPoint + <span class="s2">Point</span>(400,400));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(<span class="s2">Polar</span>(r2, a2).asPoint + <span class="s2">Point</span>(400,400));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">thisThread</span>.randSeed = <span class="s2">Date</span>.seed;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>40.do {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> a = 4.rand;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> b = 24.rand;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r1 = 230 + (50 * a);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> a1 = 2pi / 24 * b + phase;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r2 = 230 + (50 * (a + 1.rand2).fold(0,3));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> a2 = 2pi / 24 * (b + (3.rand2)).wrap(0,23) + phase;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 0.2 + 1.5.linrand;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginPath;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(<span class="s2">Polar</span>(r1, a1).asPoint + <span class="s2">Point</span>(400,400));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(<span class="s2">Polar</span>(r2, a2).asPoint + <span class="s2">Point</span>(400,400));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">};</p>
-<p class="p5"><br></p>
-<p class="p8">{ while { run } { w.refresh; 0.1.wait; phase = phase + (2pi/(20*24)) } }.fork(<span class="s2">AppClock</span>)</p>
-<p class="p5"><br></p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> w, h = 800, v = 600, seed = <span class="s2">Date</span>.seed, phase = 0, zoom = 0.7, zoomf = 1, run = <span class="s2">true</span>;</p>
-<p class="p8">w = <span class="s2">Window</span>(<span class="s8">"affines"</span>, <span class="s2">Rect</span>(40, 40, h, v));</p>
-<p class="p8">w.view.background = <span class="s2">Color</span>.blue(0.4);</p>
-<p class="p8">w.onClose = { run = <span class="s2">false</span> };</p>
-<p class="p8">w.front;</p>
-<p class="p8">w.drawHook = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">thisThread</span>.randSeed = <span class="s2">Date</span>.seed;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>if (0.0125.coin) { seed = <span class="s2">Date</span>.seed; phase = 0; zoom = 0.7; zoomf = exprand(1/1.01, 1.01); }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{ phase = phase + (2pi/80); zoom = zoom * zoomf; };</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">thisThread</span>.randSeed = seed;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.use {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> p1 = <span class="s2">Point</span>(20.rand2 + (h/2), 20.rand2 + (v/2));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> p2 = <span class="s2">Point</span>(20.rand2 + (h/2), 20.rand2 + (v/2));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> xscales = { exprand(2** -0.1, 2**0.1) } ! 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> yscales = { exprand(2** -0.1, 2**0.1) } ! 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> xlates = { 8.rand2 } ! 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> ylates = { 8.rand2 } ! 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> rots = { 2pi.rand + phase } ! 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> xform;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>xscales = (xscales ++ (1/xscales)) * 1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>yscales = (yscales ++ (1/yscales)) * 1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>xlates = xlates ++ xlates.neg;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ylates = ylates ++ xlates.neg;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rots = rots ++ rots.neg;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>xform = {<span class="s2">|i|</span> [xlates[i], ylates[i], rots[i], xscales[i], yscales[i]] } ! 4;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.strokeColor = <span class="s2">Color</span>.grey(1,0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 8.linrand + 1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(400, 400);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.scale(zoom, zoom);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(-400, -400);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1200.do {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> p, rot, xlate, ylate, xscale, yscale;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.width = 8.linrand + 1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.beginPath;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#rot, xlate, ylate, xscale, yscale = xform.choose;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.translate(xlate, ylate);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.rotate(rot, h/2, v/2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.scale(xscale, yscale);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.moveTo(p1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.lineTo(p2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stroke;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">};</p>
-<p class="p5"><br></p>
-<p class="p8">{ while { run } { w.refresh; 0.05.wait; } }.fork(<span class="s2">AppClock</span>)</p>
-<p class="p5"><br></p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCPopUpMenu.html b/Help/GUI/Cocoa-GUI/SCPopUpMenu.html
deleted file mode 100644
index cc21a10..0000000
--- a/Help/GUI/Cocoa-GUI/SCPopUpMenu.html
+++ /dev/null
@@ -1,253 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #8d261b}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p22 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p23 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p24 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #6f7181}
-span.s3 {color: #485abb}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {color: #5d67a2}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #0000bf}
-span.s9 {color: #0922b2}
-span.s10 {color: #606060}
-span.s11 {color: #8d261b}
-span.s12 {color: #51535f}
-span.s13 {font: 14.0px Helvetica}
-span.s14 {color: #6f717e}
-span.s15 {font: 9.0px Monaco; color: #545663}
-span.s16 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SCPopUpMenu<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>a pop up menu</b></span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCControlView.html"><span class="s3"><b>SCControlView</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4"><b>See also:</b> <a href="../EZ-GUI/EZPopUpMenu.html"><span class="s5">EZPopUpMenu</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SCPopUpMenu</b></p>
-<p class="p6"><br></p>
-<p class="p7">By default, SCPopUpMenu will respond only to drags where the drag contains a <a href="../../Math/Number.html"><span class="s6">Number</span></a>.</p>
-<p class="p8"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p9"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> indicating width at height.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">(</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = <span class="s8">PopUpMenu</span>(w,<span class="s8">Rect</span>(10,10,180,20));</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.items = [</span>"linear"<span class="s4">,</span>"exponential"<span class="s4">,</span>"sine"<span class="s4">,</span>"welch"<span class="s4">,</span>"squared"<span class="s4">,</span>"cubed"<span class="s4">];</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.action = { <span class="s8">arg</span> menu;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[menu.value, menu.item].postln;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p14"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>)<span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p15"><b>Accessing Instance and Class Variables</b></p>
-<p class="p16"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>items</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>items_ (array)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array </b>- An <a href="../../Collections/Array.html"><span class="s2">Array</span></a> of <a href="../../Collections/String.html"><span class="s2">String</span></a>s or <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>s, which make up the items in the pop up menu.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The underlying OS X graphics system gives special meanings to some characters.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e.g. :</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>- </b>is a divider line</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Also these: <b>< = (</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s9">SCWindow</span>.new.front;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = <span class="s9">SCPopUpMenu</span>(w,<span class="s9">Rect</span>(10,10,180,20));</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.items = [</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s10">""</span><span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ignored !</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s10">" "</span><span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// displays as a blank</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"1 absolute"<span class="s4">,</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"-replaced by a divider"<span class="s4">, <span class="Apple-tab-span">	</span></span><span class="s11">// starting with a -</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"3 relative"<span class="s4">,</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s10">"4 fore <= aft"</span><span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fore aft ( <= disappears )</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"5 fore <hello aft"<span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s11">// fore ello aft</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"6 something -> else"<span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s11">// ok</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"7 fore hello aft"<span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s11">// fore hello aft</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s10">"8 fore -hello aft"</span><span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fore -hello aft (one - )</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"9 fore -<hello aft"<span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s11">// fore ello aft</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"10 something (else)"<span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s11">// item greyed out</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s10">"11 something \(else)"</span><span class="s4">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// item still greyed out</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"12 something [else]"<span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s11">// ok</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"13 something {else}"<span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s11">// ok</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"14 something | else"<span class="s4"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s11">// ok</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>item</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p14"><span class="s1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns </span>items.at(<span class="s12">this</span>.value)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the index of the currently chosen item. This will <b>not</b> do the <b>action</b>.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the menu to display the item at index <b>val</b> of the <b>items</b> array. This will <b>not</b> do the <b>action</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- The index of an item in the <b>items</b> array .</p>
-<p class="p9"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the menu to display the item at index <b>val</b> of the <b>items</b> array, and evaluates <b>action</b> (see <a href="SCView.html"><span class="s2">SCView</span></a>), if the value has changed.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- The index of an item in the <b>items</b> array .</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><b>Customizing Appearance</b></p>
-<p class="p16"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>font</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>font_ (argFont)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a> of the pop up menu. This only changes the font for the displayed item, not for the popped up menu.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argFont </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>stringColor</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>stringColor_ (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the current string <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a> for the display of the menu items . This only changes the string color for the displayed item, not for the popped up menu.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>.</p>
-<p class="p9"><br></p>
-<p class="p15"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s13"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p9"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s14">SCView</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p18"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s4">, </span>\visible<span class="s4">, </span>\enabled<span class="s4">, </span>\canFocus<span class="s4">, </span>\resize<span class="s4">, </span>\background<span class="s4">, </span>\minWidth<span class="s4">, </span>\maxWidth<span class="s4">, </span>\minHeight<span class="s4">, </span>\maxHeight<span class="s4">, </span>\value<span class="s4">, </span>\font<span class="s4">, </span>\items<span class="s4">, </span>\stringColor, \focusColor<span class="s4"> ]<span class="Apple-tab-span">	</span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag <b>from</b> an SCMenu. Returns the same as <b>value</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to drop a drag in this object. Returns currentDrag.isNumber, i.e. by default, SCPopUpMenu will respond only to drags where the drag contains a number.<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been recieved. Performs <b>valueAction_</b> with the <b>currentDrag</b> as an argument<span class="s15">.</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" " <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>space</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\r <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\n, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.asAscii,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(enter key or cmd-C on Mac OSX )</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span>value - 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span>value + 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span>value - 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>left arrow</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>All of these are done with <b>action</b>.</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><b>Examples</b></p>
-<p class="p19">(</p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span>w = </span><span class="s8">Window</span><span class="s4">.new(</span>"The Eightfold Path"<span class="s4">).front;</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span>m = <span class="s8">PopUpMenu</span>(w,<span class="s8">Rect</span>(10,10,180,20));</p>
-<p class="p22"><br></p>
-<p class="p21"><span class="Apple-tab-span">	</span>m.items = [</p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"right view"<span class="s4">,</span>"right thinking"<span class="s4">,</span>"right mindfulness"<span class="s4">,</span>"right speech"<span class="s4">,</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"right action"<span class="s4">,</span>"right diligence"<span class="s4">,</span>"right concentration"<span class="s4">,</span>"right livelihood"</p>
-<p class="p21"><span class="Apple-tab-span">	</span>];</p>
-<p class="p22"><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="s4"><span class="Apple-tab-span">	</span>m.background_(</span><span class="s8">Color</span><span class="s4">.white.alpha_(0.2)); </span>// only changes the look of displayed item</p>
-<p class="p23"><span class="s4"><span class="Apple-tab-span">	</span>m.stringColor_(</span><span class="s8">Color</span><span class="s4">.white); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// only changes the look of displayed item</p>
-<p class="p23"><span class="s4"><span class="Apple-tab-span">	</span>m.font_(</span><span class="s8">Font</span><span class="s4">(</span><span class="s10">"Courier"</span><span class="s4">, 13)); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// only changes the look of displayed item</p>
-<p class="p21"><span class="Apple-tab-span">	</span>m.action = { <span class="s8">arg</span> menu;</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[menu.value, menu.item].postln;<span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span>};</p>
-<p class="p21">)</p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="s4">m.value; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// returns the index of the current item;</p>
-<p class="p23"><span class="s4">m.item;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// returns the String or Symbol of the current item<span class="Apple-tab-span">	</span></p>
-<p class="p22"><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="s4">m.value_(2); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// changes the displayed item, but does not evaluate the action</p>
-<p class="p23"><span class="s4">m.valueAction_(3); </span>// evaluates the action.</p>
-<p class="p22"><br></p>
-<p class="p22"><br></p>
-<p class="p23">// Play different Functions</p>
-<p class="p22"><br></p>
-<p class="p21">(</p>
-<p class="p21">s.waitForBoot({</p>
-<p class="p22"><br></p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="s8">var</span> w,menu,snd,funcs,b;</p>
-<p class="p22"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span>w=<span class="s8">Window</span>.new.front;</p>
-<p class="p22"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span>menu=<span class="s8">PopUpMenu</span>(w,<span class="s8">Rect</span>(10,10,90,20))</p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.items_([</span>"Sine"<span class="s4"> , </span>"Saw"<span class="s4"> , </span>"Noise"<span class="s4"> , </span>"Pulse"<span class="s4">]);</span></p>
-<p class="p22"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span>funcs=[ {<span class="s8">SinOsc</span>.ar(440,0,0.3)} , {<span class="s8">Saw</span>.ar(440,0.3)} , {<span class="s8">WhiteNoise</span>.ar(0.3)} , {<span class="s8">Pulse</span>.ar(440,0.2,0.3)} ];</p>
-<p class="p22"><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span>b=<span class="s8">Button</span>(w,<span class="s8">Rect</span>(110,10,180,20))</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[<span class="s10">"play"</span>,<span class="s8">Color</span>.black,<span class="s8">Color</span>.green]])</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.mouseDownAction_({</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>snd = funcs.at(menu.value).play;<span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s8">arg</span> butt, mod;</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>snd.free;</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p22"><span class="Apple-tab-span">	</span></p>
-<p class="p23"><span class="s4"><span class="Apple-tab-span">	</span>p=</span><span class="s8">CmdPeriod</span><span class="s4">.add({b.value_(0)});</span>// set button to 0 on hitting Cmd-period</p>
-<p class="p21"><span class="Apple-tab-span">	</span>w.onClose_{ snd.free; <span class="s8">CmdPeriod</span>.removeAll };<span class="s16">// clean up when window is closed</span></p>
-<p class="p22"><br></p>
-<p class="p21">})</p>
-<p class="p21">)</p>
-<p class="p22"><br></p>
-<p class="p24"><br></p>
-<p class="p24"><br></p>
-<p class="p24"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/Cells.qtz b/Help/GUI/Cocoa-GUI/SCQuartzComposerView/Cells.qtz
deleted file mode 100644
index f713742..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/Cells.qtz and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCLevelMeter.qtz b/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCLevelMeter.qtz
deleted file mode 100644
index 6b432e0..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCLevelMeter.qtz and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQCSonogramCount2.qtz b/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQCSonogramCount2.qtz
deleted file mode 100644
index 3d60021..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQCSonogramCount2.qtz and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerView.html b/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerView.html
deleted file mode 100644
index bf0a892..0000000
--- a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerView.html
+++ /dev/null
@@ -1,387 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #1235e8}
-span.s4 {text-decoration: underline}
-span.s5 {color: #56682c}
-span.s6 {color: #6f7178}
-span.s7 {color: #000000}
-span.s8 {color: #0000bf}
-span.s9 {color: #606060}
-span.s10 {font: 14.0px Helvetica}
-span.s11 {color: #007300}
-span.s12 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCQuartzComposerView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>view for rendering Quartz Composer Compositions</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">SCQuartzComposerView allows for the rendering of Quartz Composer Compositions within the standard OSX SC GUI system. Quartz Composer is a visual programming environment for processing and rendering graphical data, which is distributed free of charge as part of Apple's XCode Development Tools. QC is highly optimised to work with the OSX graphics system, and in general should be more efficient than <a href="../../Main-GUI/Pen.html"><span class="s3">Pen</span></a>. For more information on QC see: <span class="s4">http://developer.apple.com/documentation/GraphicsImaging/Conceptual/QuartzComposer/index.html</span></p>
-<p class="p3"><br></p>
-<p class="p1">You can access input and output ports using the methods <b>setInputValue</b>, <b>getInputValue</b> and <b>getOutputValue</b>, or (do to a slight of hand in the implementation, using the port keys as getters and setters directly. The following two lines of code are thus equivalent:</p>
-<p class="p2"><br></p>
-<p class="p4">myQCView.setInputValue(<span class="s5">\valueIn</span>, 1);</p>
-<p class="p4">myQCView.valueIn = 1;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- </span>The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../../Geometry/Rect.html"><span class="s6">Rect</span></a>, </span>or </span>a <a href="../../../Geometry/Point.html"><span class="s6">Point</span></a> indicating width at height.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s8">SCWindow</span><span class="s7">(</span>"Simple QC Test"<span class="s7">).front;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s8">SCButton</span>(w, <span class="s8">Rect</span>(0, 0, 150, 20))</p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[</span>"pick another QC file"<span class="s7">]])</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s8">File</span>.openDialog(<span class="s9">""</span>, { <span class="s8">|path|</span> m.path_(path) }) });</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(0,20,400, 260));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.path = <span class="s8">Document</span>.current.path.dirname ++ <span class="s9">"/Cells.qtz"</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.start;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m.stop;</p>
-<p class="p3"><br></p>
-<p class="p5"><b>Instance Methods</b></p>
-<p class="p13"><b></b><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>path</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>path_ (argpath)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the path of the currently loaded composition as a <a href="../../../Collections/String.html"><span class="s2">String</span></a>, or loads a new QC composition from the file at the location specified by the String <b>argpath</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argpath </b>- A file path as a <a href="../../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>inputKeys</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>Returns an Array of Symbols corresponding to the keys of the currently loaded composition's input ports.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>outputKeys</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an Array of Symbols corresponding to the keys of the currently loaded composition's output ports.<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>start</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Start rendering the loaded composition.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>stop</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Stop rendering the loaded composition.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setInputValue (key, value)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the value of an input port at key.</span></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key </b>- A String or Symbol matching the port's key.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>value </b>- The type of value must correspond to the type of the port, but Floats, Integers, and Booleans are converted if needed. (true = 1, false = 0)</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>getInputValue (key)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get the current value of an input port. The type of object returned will correspond to the port's type.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key </b>- A String or Symbol matching the port's key.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>getOutputValue (key)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get the current value of an output port. The type of object returned will correspond to the port's type.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key </b>- A String or Symbol matching the port's key.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxFPS_ (rate)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the maximum frames per second at which the composition will render.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rate </b>- A value of 0 indicates no limit.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>openInQC</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Open the currently loaded composition in Quartz Composer. You will need to reload the composition into the view before any saved changes take effect.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><b>Subclassing and Internal Methods</span></b></p>
-<p class="p7"><span class="s10"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</span></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doesNotUnderstand (selector, args)</b></p>
-<p class="p6"><br></p>
-<p class="p14"><b>Examples</b></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">////////// Simple example</p>
-<p class="p11">(</p>
-<p class="p12"><span class="s7">w = </span><span class="s8">SCWindow</span><span class="s7">(</span>"Simple QC Test"<span class="s7">).front;</span></p>
-<p class="p11">b = <span class="s8">SCButton</span>(w, <span class="s8">Rect</span>(0, 0, 150, 20))</p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span>.states_([[</span>"pick another QC file"<span class="s7">]])</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>.action_({ <span class="s8">File</span>.openDialog(<span class="s9">""</span>, { <span class="s8">|path|</span> m.path_(path) }) });</p>
-<p class="p11">m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(0,20,400, 260));</p>
-<p class="p11">m.path = <span class="s8">Document</span>.current.path.dirname ++ <span class="s9">"/Cells.qtz"</span>;</p>
-<p class="p11">)</p>
-<p class="p11">m.start;</p>
-<p class="p11">m.stop;</p>
-<p class="p15"><br></p>
-<p class="p16">////////// Set and get inputs and outputs</p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s8">SCWindow</span>(<span class="s9">"SCTV"</span>).front;</p>
-<p class="p11">m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(0,20,400, 260));</p>
-<p class="p11">m.path = <span class="s8">Document</span>.current.path.dirname ++ <span class="s9">"/SCQuartzComposerViewTest.qtz"</span>;</p>
-<p class="p11">m.start;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p16">// get the names of input and output keys</p>
-<p class="p11">m.inputKeys;</p>
-<p class="p11">m.outputKeys;</p>
-<p class="p16"><span class="s7">m.openInQC; </span>// you can see the published inputs and outputs in the composition</p>
-<p class="p15"><br></p>
-<p class="p16">// You can access input and output ports using setInputValue, getInputValue and getOutputValue</p>
-<p class="p16">// or directly using the keys as getters and setters</p>
-<p class="p11">m.setInputValue(<span class="s11">\direction</span>, 1);</p>
-<p class="p11">m.direction = 0;</p>
-<p class="p11">m.direction;</p>
-<p class="p16"><span class="s7">m.fontSize; </span>// font size in QC Units</p>
-<p class="p11">m.fontSize_(0.1);</p>
-<p class="p15"><br></p>
-<p class="p11">m.string_(<span class="s9">"SCTV"</span>).fontName_(<span class="s9">"Courier"</span>);</p>
-<p class="p11">m.startColor_(<span class="s8">Color</span>.green);</p>
-<p class="p11">m.billboardEnable_(<span class="s8">false</span>);</p>
-<p class="p11">m.billboardEnable_(<span class="s8">true</span>);</p>
-<p class="p11">m.maxFPS_(5.0);</p>
-<p class="p11">m.maxFPS_(10);</p>
-<p class="p11">m.maxFPS_(0.0); <span class="s12">// no max</span></p>
-<p class="p15"><br></p>
-<p class="p16"><span class="s7">m.getOutputValue(</span><span class="s11">\interpResult</span><span class="s7">); </span>// current rotation of the text in degrees</p>
-<p class="p11">m.interpResult;</p>
-<p class="p16"><span class="s7">m.systemTime; </span>// current System Time published in the composition</p>
-<p class="p16"><span class="s7">m.endColor.class; </span>// yup, it's a SC Color object</p>
-<p class="p11">m.endColor == <span class="s8">Color</span>.white;</p>
-<p class="p15"><br></p>
-<p class="p11">(</p>
-<p class="p16">// probably more efficient to do this in QC, but...</p>
-<p class="p11">{</p>
-<p class="p11">c = <span class="s8">Color</span>.blue;</p>
-<p class="p11">100.do({ m.startColor_(c = c.vary(1)); 0.1.wait; });</p>
-<p class="p11">}.fork(<span class="s8">AppClock</span>);</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">m.bounds = <span class="s8">Rect</span>(100, 20, 200, 260);</p>
-<p class="p15"><br></p>
-<p class="p11">m.stop;</p>
-<p class="p15"><br></p>
-<p class="p16">///////////// Fullscreen</p>
-<p class="p15"><br></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s8">SCWindow</span>(<span class="s9">"SCTV"</span>, <span class="s8">Rect</span>(0,0,360, 280), border: <span class="s8">false</span>).front;</p>
-<p class="p11">b = <span class="s8">SCButton</span>(w, <span class="s8">Rect</span>(0, 0, 150, 20))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.states_([[<span class="s9">"Close Me"</span>]])</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.action_({w.close});</p>
-<p class="p11">m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(0,20,360, 260));</p>
-<p class="p11">m.path = <span class="s8">Document</span>.current.path.dirname ++ <span class="s9">"/SCQuartzComposerViewTest.qtz"</span>;</p>
-<p class="p15"><br></p>
-<p class="p11">m.resize = 5;</p>
-<p class="p11">m.start;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">w.fullScreen;</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">////////// Structure test</p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s8">SCWindow</span>(<span class="s9">"SCTV"</span>).front;</p>
-<p class="p11">m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(0,20,400, 260));</p>
-<p class="p12"><span class="s7">m.path = </span><span class="s8">Document</span><span class="s7">.current.path.dirname ++ </span>"/SCQuartzComposerViewStructureTest.qtz"<span class="s7">;</span></p>
-<p class="p11">m.start;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">m.inputKeys;</p>
-<p class="p11">m.outputKeys;</p>
-<p class="p16"><span class="s7">m.openInQC; </span>// Take a look at the various inputs and outputs. Select and mouseover for key names.</p>
-<p class="p15"><br></p>
-<p class="p16">// set several parameters at once</p>
-<p class="p16">// [background color, num copies, scale, string, [font size in QC units, font]]</p>
-<p class="p11">m.structure = [<span class="s8">Color</span>.red, 4, 1.5, <span class="s9">"Hello"</span>, [0.2, <span class="s9">"Courier"</span>]];</p>
-<p class="p11">m.structure = [<span class="s8">Color</span>.red, 3, 1.5, <span class="s9">"World"</span>, [0.4, <span class="s9">"Arial"</span>]];</p>
-<p class="p11">m.structure = [<span class="s8">Color</span>.red, 4, 0.1, <span class="s9">"!!"</span>, [0.7, <span class="s9">"Times"</span>]];</p>
-<p class="p11">m.structure = [<span class="s8">Color</span>.black, 4, 0.1, <span class="s9">"!!!"</span>, [0.6, <span class="s9">"Courier"</span>]];</p>
-<p class="p11">m.dictStructure = <span class="s8">IdentityDictionary</span>[<span class="s11">\x</span>->(-0.4), <span class="s11">\y</span>->0.4];</p>
-<p class="p15"><br></p>
-<p class="p16">// get stuff out</p>
-<p class="p16">// QCView stores all structures as instances of NSCFDictionary internally</p>
-<p class="p16">// so all structure outputs are instances of IdentityDictionary</p>
-<p class="p11">m.structure = [<span class="s8">Color</span>.blue, 4, 0.2, <span class="s9">"Gruess Welt"</span>, [0.12, <span class="s9">"Zapfino"</span>]];</p>
-<p class="p16"><span class="s7">x = m.stringStruct; </span>// separates the string into components</p>
-<p class="p17"><span class="s7">x[</span>\component_1<span class="s7">];</span></p>
-<p class="p15"><br></p>
-<p class="p16">// pass something through</p>
-<p class="p11">m.arbStructIn = [<span class="s9">"foo"</span>, <span class="s9">"bar"</span>, [<span class="s9">"foobar"</span>]]; <span class="s12">// array in</span></p>
-<p class="p16"><span class="s7">x = m.arbStructOut; </span>// IdentDict out with Integer Symbols as keys</p>
-<p class="p11">x[\0];</p>
-<p class="p11">x[\2][\0];</p>
-<p class="p11">(</p>
-<p class="p16">// convert to array</p>
-<p class="p11">y = <span class="s8">Array</span>.newClear(x.size);</p>
-<p class="p11">x.keysValuesDo({<span class="s8">|i, elem|</span> y[i.asInteger] = elem});</p>
-<p class="p11">y.postln;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p16">// use QC to concat the strings)</p>
-<p class="p11">m.stringConcatIn = [<span class="s9">"foo"</span>, <span class="s9">"bar"</span>]; <span class="s12">// array in</span></p>
-<p class="p11">x = m.stringConcatOut; <span class="s12">// String Out</span></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">////////// Control some audio: Stupid Pan Example</p>
-<p class="p15"><br></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s8">SCWindow</span>(<span class="s9">"Stupid Pan Example"</span>, <span class="s8">Rect</span>(0,20,600, 150)).front;</p>
-<p class="p11">m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(0,20,600, 100));</p>
-<p class="p11">m.path = <span class="s8">Document</span>.current.path.dirname ++ <span class="s9">"/Stupid Pan.qtz"</span>;</p>
-<p class="p11">m.resize = 5;</p>
-<p class="p11">m.start;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">s.boot;</p>
-<p class="p16">// use mouse to set pan position</p>
-<p class="p11">(</p>
-<p class="p11">{</p>
-<p class="p11">loop({</span></p>
-<p class="p11">{ <span class="s8">Pan2</span>.ar(<span class="s8">Saw</span>.ar(mul: 0.1) * <span class="s8">EnvGen</span>.ar(<span class="s8">Env</span>.perc, timeScale: 4, doneAction: 2), m.x_pos) }.play;</span></p>
-<p class="p11">1.wait;</span></p>
-<p class="p11">});</p>
-<p class="p11">}.fork(<span class="s8">AppClock</span>);</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p16">////////// Sonogram</p>
-<p class="p15"><br></p>
-<p class="p16">// could be better optimised, but proves the concept</p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s8">SCWindow</span>(<span class="s9">"Sonogram"</span>, <span class="s8">Rect</span>(0,20,600, 300)).front;</p>
-<p class="p11">m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(0,20,600, 256));</p>
-<p class="p11">m.path = <span class="s8">Document</span>.current.path.dirname ++ <span class="s9">"/SCQCsonogramCount2.qtz"</span>;</p>
-<p class="p11">m.start;</p>
-<p class="p11">m.setInputValue(<span class="s11">\framesPerView</span>, 300);</p>
-<p class="p11">m.setInputValue(<span class="s11">\magnitudes</span>, (0, 0.01..1));</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">s.boot;</p>
-<p class="p11">b = <span class="s8">Buffer</span>.alloc(s,256);</p>
-<p class="p11">(</p>
-<p class="p11">a = { <span class="s8">FFT</span>(b, <span class="s8">LFSaw</span>.ar(4000)); 0.0 }.play; <span class="s12">// sawtooth</span></p>
-<p class="p15"><br></p>
-<p class="p11">p = 0.25; i = 0;</p>
-<p class="p16">//m.setInputValue(\period, p);</p>
-<p class="p16">//m.maxFPS_(p.reciprocal * 2);</p>
-<p class="p11"><span class="s8">SystemClock</span>.sched(0.0, {</p>
-<p class="p11">b.getn(0, 256, { <span class="s8">arg</span> buf;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">var</span> z, x;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>z = buf.clump(2).flop;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>z = [<span class="s8">Signal</span>.newFrom(z[0]), <span class="s8">Signal</span>.newFrom(z[1])];</p>
-<p class="p11"><span class="Apple-tab-span">	</span>x = <span class="s8">Complex</span>(z[0], z[1]);</p>
-<p class="p16"><span class="s7"><span class="Apple-tab-span">	</span></span>//{m.setInputValue(\magnitudes, x.magnitude.resamp1(m.bounds.height * 0.5));}.defer</p>
-<p class="p11"><span class="Apple-tab-span">	</span>{m.setInputValue(<span class="s11">\magnitudes</span>, x.magnitude * 0.025); m.setInputValue(<span class="s11">\count</span>, i);}.defer;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>i = i + 1;</p>
-<p class="p11">}); p</p>
-<p class="p11">});</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">a.free;</p>
-<p class="p11">a = { <span class="s8">FFT</span>(b, <span class="s8">Dust2</span>.ar(500) * 5); 0.0 }.play; <span class="s12">// Impulses</span></p>
-<p class="p15"><br></p>
-<p class="p11">a.free;</p>
-<p class="p12"><span class="s7">c = </span><span class="s8">Buffer</span><span class="s7">.read(s, </span>"sounds/a11wlk01.wav"<span class="s7">);</span></p>
-<p class="p11">(</p>
-<p class="p11">m.setInputValue(<span class="s11">\framesPerView</span>, 50);</p>
-<p class="p11">a = { <span class="s8">var</span> colum;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>colum = <span class="s8">PlayBuf</span>.ar(1, c, <span class="s8">BufRateScale</span>.kr(c) * <span class="s8">Line</span>.kr(1, 3, 20), loop: 1);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">FFT</span>(b, colum);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>colum</p>
-<p class="p11">}.play;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p16">///////////// Cheap Level Meter</p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s8">SCWindow</span>(<span class="s9">"Level Meters"</span>, <span class="s8">Rect</span>(128, 64, 200, 400)).front;</p>
-<p class="p15"><br></p>
-<p class="p11">m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(20,20,50, 360));</p>
-<p class="p11">n = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(130,20,50, 360));</p>
-<p class="p11">m.path = <span class="s8">Document</span>.current.path.dirname ++ <span class="s9">"/SCLevelMeter.qtz"</span>;</p>
-<p class="p11">n.path = <span class="s8">Document</span>.current.path.dirname ++ <span class="s9">"/SCLevelMeter.qtz"</span>;</p>
-<p class="p11">m.maxFPS_(20); n.maxFPS_(20);</p>
-<p class="p11">m.start; n.start;</p>
-<p class="p11">~meters = [m, n];</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">s.boot;</p>
-<p class="p15"><br></p>
-<p class="p16">// MouseX controls noise amp</p>
-<p class="p11">(</p>
-<p class="p11">o = <span class="s8">OSCresponder</span>(s.addr, <span class="s11">'/tr'</span>, {<span class="s8">arg</span> time, resp, msg;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>{~meters[msg[2]].level = (msg[3] + 0.01).explin(0.01,1.01, 0, 1);}.defer;</p>
-<p class="p11">}).add;</p>
-<p class="p12"><span class="s7">b = </span><span class="s8">Buffer</span><span class="s7">.read(s, </span>"sounds/a11wlk01.wav"<span class="s7">);<span class="Apple-tab-span">	</span></span></p>
-<p class="p11">a = { <span class="s8">var</span> colum, noise, imp, delimp;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>imp = <span class="s8">Impulse</span>.kr(20);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>delimp = <span class="s8">Delay1</span>.kr(imp);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>colum = <span class="s8">PlayBuf</span>.ar(1, b, <span class="s8">BufRateScale</span>.kr(b), loop: 1);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>noise = <span class="s8">PinkNoise</span>.ar(<span class="s8">MouseX</span>.kr);</p>
-<p class="p16"><span class="s7"><span class="Apple-tab-span">	</span></span>// measure Peak</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">SendTrig</span>.kr(imp, 0, <span class="s8">Peak</span>.ar(colum, delimp));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">SendTrig</span>.kr(imp, 1, <span class="s8">Peak</span>.ar(noise, delimp));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>[colum, noise];</p>
-<p class="p11">}.play;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">a.free;</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">/// using an event type to control a QCView by patterns:</p>
-<p class="p15"><br></p>
-<p class="p11"><span class="s8">Event</span>.addEventType(<span class="s11">\quartz</span>, { <span class="s8">|server|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">var</span> latency = server.latency;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">var</span> view = ~view.postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">var</span> key = ~key, value = ~value;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">AppClock</span>.sched(latency, { view.postln; view.setInputValue(key, value) });</p>
-<p class="p11">});</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s8">SCWindow</span>(<span class="s9">"Level Meters"</span>, <span class="s8">Rect</span>(128, 64, 200, 400)).front;</p>
-<p class="p15"><br></p>
-<p class="p11">m = <span class="s8">SCQuartzComposerView</span>(w, <span class="s8">Rect</span>(20,20,50, 360));</p>
-<p class="p12"><span class="s7">m.path = </span>"Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCLevelMeter.qtz"<span class="s7">.standardizePath;</span></p>
-<p class="p11">m.maxFPS_(20);</p>
-<p class="p11">m.start;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">(</p>
-<p class="p18">Pbind<span class="s7">(</span></p>
-<p class="p17"><span class="s7"><span class="Apple-tab-span">	</span></span>\type<span class="s7">, </span>\quartz<span class="s7">,</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\view</span>, m,</p>
-<p class="p17"><span class="s7"><span class="Apple-tab-span">	</span></span>\key<span class="s7">, </span>\level<span class="s7">,</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\value</span>, <span class="s8">Pwhite</span>(0, 1.0, <span class="s8">inf</span>).explin(0.01,1.01, 0, 1),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\dur</span>, 0.1</p>
-<p class="p11">).play;</p>
-<p class="p11">)</p>
-<p class="p15"><br></p>
-<p class="p11">m.setInputValue(<span class="s11">\level</span>, 0.5);</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerViewStructureTest.qtz b/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerViewStructureTest.qtz
deleted file mode 100644
index 01615da..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerViewStructureTest.qtz and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerViewTest.qtz b/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerViewTest.qtz
deleted file mode 100644
index 3a6541d..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerViewTest.qtz and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/Stupid Pan.qtz b/Help/GUI/Cocoa-GUI/SCQuartzComposerView/Stupid Pan.qtz
deleted file mode 100644
index 1f20b23..0000000
Binary files a/Help/GUI/Cocoa-GUI/SCQuartzComposerView/Stupid Pan.qtz and /dev/null differ
diff --git a/Help/GUI/Cocoa-GUI/SCRangeSlider.html b/Help/GUI/Cocoa-GUI/SCRangeSlider.html
deleted file mode 100644
index beefcbd..0000000
--- a/Help/GUI/Cocoa-GUI/SCRangeSlider.html
+++ /dev/null
@@ -1,238 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #0000bf}
-span.s9 {color: #007300}
-span.s10 {font: 11.0px Monaco}
-span.s11 {font: 11.0px Monaco; color: #0000bf}
-span.s12 {font: 14.0px Helvetica}
-span.s13 {color: #000000}
-span.s14 {font: 9.0px Monaco}
-span.s15 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCRangeSlider<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a double-ended gui slider</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCControlView.html"><span class="s3"><b>SCControlView</b></span></a><b> : </b><a href="SCSliderBase.html"><span class="s2"><b>SCSliderBase</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">A slider for setting two values (usually low and high values). Dragging in the slider sets the lo and high ranges according to mouse down and mouse up. To move the whole range, hold down the ctrl key while dragging. Arrow keys will also move the whole range.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="../EZ-GUI/EZRanger.html"><span class="s2">EZRanger</span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding SCRangeSlider</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCRangeSlider always has a range between zero and one. You must scale the output and input values to your needs. Using <b>map</b> and <b>unmap,</b> combined with a <a href="../../Control/Spec.html"><span class="s4">Spec</span></a>, is helpful for this. To set the increment or decrement value of the slider, set the <b>step</b> .<span class="Apple-converted-space">  </span>By default, the shift, ctrl, and alt keys will modify the stepping by 100x, 10x, or 0.1x repectively, though you can customize this by setting <b>shift_scale, ctrl_scale, </b>or<b> alt_scale </b>(see <a href="SCSliderBase.html"><span class="s4">SCSliderBase</span></a>) .<span class="Apple-converted-space"> </span><b> </b>Drag and drop returns and accepts <a href="../../Geometry/Point.html"><span class="s5">Point</span></a>s. Inherits some formatting from <a href="SCSliderBase.html"><span class="s6">SCSliderBase</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s7">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s7">Point</span></a> indicating width at height.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s8">RangeSlider</span>(w, <span class="s8">Rect</span>(20, 80, 120, 30))</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.lo_(0.2)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.range_(0.4)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s8">|slider|</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s9">\sliderLOW</span>, slider.lo, <span class="s9">\sliderHI</span>, slider.hi].postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p11"><b>Accessing Instance and Class Variables</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>lo</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>lo_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The low value of the slider. Gets/sets the property, \lo, by calling get/setProperty(\lo, <b>val</b>). This will not do the <b>action</b> of the slider.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>activeLo_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the property, \lo, by calling setPropertyWithAction(\lo, <b>val</b>). Does the sliders <b>action</b>, if the <b>lo</b> value has changed.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>hi</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>hi_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The high value of the slider. Gets/sets the property, \hi, by calling get/setProperty(\hi, <b>val</b>). This also sets the range of the slider to <b>hi</b> - <b>low</b> (which can be negative). This will not do the <b>action</b> of the slider.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>activeHi_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the property, \hi, by calling setPropertyWithAction(\hi, <b>val</b>). This also sets the range of the slider to <b>hi</b> - <b>low</b> (which can be negative). Does the sliders <b>action, </b>if the <b>hi</b> value has changed.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>range</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>range_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The range value of the slider. Gets/sets the property, \range, by calling get/setProperty(\range, <b>val</b>). This also sets the <b>hi</b> value of the slider to <b>lo</b> + <b>range.</b> This will not do the <b>action</b> of the slider.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>activeRange_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the property, \range, by calling setPropertyWithAction(\range, <b>val</b>). This also sets the <b>hi</b> value of the slider to <b>lo</b> + <b>range.</b> Does the sliders <b>action</b>.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setSpan (lo, hi)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A convenience method which performs both the <b>lo_</b> and <b>hi_</b> setters. This will not do the <b>action</b> of the slider.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setSpanActive (lo, hi)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A convenience method which performs both the <b>lo_</b> and <b>hi_</b> setters. Does the <b>action</b> of the slider.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>setDeviation(deviation, average)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A convenience methods which allows to set <b>lo</b> and <b>hi</b> according to their deviation and their average instead of their absolute values.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>increment (zoom)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>decrement (zoom)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>These are the methods called by pressing the arrow keys. These methods increment or decrement both the the slider values (<b>hi</b> and <b>lo</b>) by <span class="s10">(max(</span><span class="s11">this</span><span class="s10">.step, </span><span class="s11">this</span><span class="s10">.pixelStep) * zoom)</span>. This means that by default increment and decrement change the value by <b>pixelStep</b> (<b>step</b> is nil by default). You can set <b>step</b> to quantize the slider values. If you call these methods from your code, you can also change the resolution of the values with the <b>zoom</b> factor. This will not effect how the keys work, since they will always use a zoom factor of 1. Performs the action of the slider.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>zoom </b>- Defaults to 1.</p>
-<p class="p5"><br></p>
-<p class="p11"><b>Subclassing and Internal Methods</b></p>
-<p class="p6"><span class="s12"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>activeLo_(0), activeHi_(1) with action</b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>activeLo_(0), activeHi_(0) with action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>activeLo_(1), activeHi_(1) with action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>activeLo_(0.5), activeHi_(0.5) with action</b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span><b>increment</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span><b>increment</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span><b>decrement</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span><b>decrement</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>left arrow</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s7">SCView</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p13"><span class="s13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s13">, </span>\visible<span class="s13">, </span>\enabled<span class="s13">, </span>\canFocus<span class="s13">, </span>\resize<span class="s13">, </span>\background<span class="s13">, </span>\minWidth<span class="s13">, </span>\maxWidth<span class="s13">, </span>\minHeight<span class="s13">, </span>\maxHeight<span class="s13">, </span>\knobColor<span class="s13">, </span>\step<span class="s13">, </span>\lo<span class="s13">, </span>\hi<span class="s13">, </span>\focusColor<span class="s13"> ]</span></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag,Returns a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>( <b>lo</b>@<b>hi).</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to drop a drag in this object. By default, SCSlider will respond only to drags where the drag contains a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been recieved. Sets <b>lo</b> and <b>hi</b> repectively using the <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>(currentDrag.x at currentDrag.y). Performs the action.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p11"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p10">(</p>
-<p class="p10">w = <span class="s8">Window</span>.new.front;</p>
-<p class="p10">a = <span class="s8">RangeSlider</span>(w, <span class="s8">Rect</span>(20, 80, 120, 30))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.lo_(0.2)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.range_(0.4)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({ <span class="s8">|slider|</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s9">\sliderLOW</span>, slider.lo, <span class="s9">\sliderHI</span>, slider.hi].postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>});</p>
-<p class="p10">)</p>
-<p class="p3"><br></p>
-<p class="p14">// ---------</p>
-<p class="p3"><br></p>
-<p class="p10">(</p>
-<p class="p10">w = <span class="s8">Window</span>.new.front;</p>
-<p class="p10">a = <span class="s8">RangeSlider</span>(w, <span class="s8">Rect</span>(20, 80, 120, 30))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.lo_(0.2)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.hi_(0.8)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({ <span class="s8">|slider|</span></p>
-<p class="p14"><span class="s13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.activeLo_(slider.lo); </span>// this will trigger the action of b (and set it's value)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.hi_(slider.hi);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>});</p>
-<p class="p10">b = <span class="s8">RangeSlider</span>(w, <span class="s8">Rect</span>(220, 80, 20, 130))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.lo_(0.2)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.hi_(0.8)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.knobColor_(<span class="s8">HiliteGradient</span>(<span class="s8">Color</span>.grey, <span class="s8">Color</span>.white,<span class="s9">\h</span>))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({ <span class="s8">|slider|</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s9">\sliderLOW</span>, slider.lo, <span class="s9">\sliderHI</span>, slider.hi].postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><br></p>
-<p class="p10">)</p>
-<p class="p3"><br></p>
-<p class="p14">// setDeviation:</p>
-<p class="p10">(</p>
-<p class="p3"><br></p>
-<p class="p10">w = <span class="s8">Window</span>(<span class="s15">"setDeviation"</span>, <span class="s8">Rect</span>(300, 300, 300, 150));</p>
-<p class="p10">a = <span class="s8">RangeSlider</span>(w, <span class="s8">Rect</span>(10, 10, 200, 30))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.lo_(0)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.hi_(1);</p>
-<p class="p10">b = <span class="s8">Slider</span>(w, <span class="s8">Rect</span>(10, 50, 200, 30))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-tab-span">	</span><span class="s8">arg</span> me;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.setDeviation(c.value, b.value);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10">c = <span class="s8">Slider</span>(w, <span class="s8">Rect</span>(10, 100, 200, 30))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-tab-span">	</span><span class="s8">arg</span> me;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.setDeviation(c.value, b.value);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span>);</p>
-<p class="p10">c.valueAction = 0.2;</p>
-<p class="p10">w.front;</p>
-<p class="p10">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">// SoundExample</p>
-<p class="p3"><br></p>
-<p class="p14">// Shape a bandpass filter. Hold down the ctrl-key to move the whole frequency range</p>
-<p class="p10">(</p>
-<p class="p10">s.waitForBoot({</p>
-<p class="p10"><span class="Apple-tab-span">	</span>a={<span class="s8">arg</span> freq=1800, bw=0.2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">var</span> r;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">BBandPass</span>.ar(<span class="s8">WhiteNoise</span>.ar(0.3), freq, bw);</p>
-<p class="p3"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p3"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>(<span class="s15">"2DSlider"</span>, <span class="s8">Rect</span>(100,<span class="s8">Window</span>.screenBounds.height-400, 400 ,50));</p>
-<p class="p10"><span class="Apple-tab-span">	</span>t = <span class="s8">RangeSlider</span>(w, <span class="s8">Rect</span>(10, 10, 380, 30))</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.lo_(0.4)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.hi_(0.6)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({<span class="s8">|sl|</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.set(<span class="s9">\freq</span>,1800*(sl.lo+sl.lo)+10,<span class="s9">\bw</span>, (sl.hi-sl.lo).abs+0.01);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10"><span class="Apple-tab-span">	</span>t.doAction;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p10">})</p>
-<p class="p10">)</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCScope.html b/Help/GUI/Cocoa-GUI/SCScope.html
deleted file mode 100644
index 598e7f6..0000000
--- a/Help/GUI/Cocoa-GUI/SCScope.html
+++ /dev/null
@@ -1,251 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #615f4a}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {text-decoration: underline ; color: #1940ce}
-span.s5 {color: #2f4fcf}
-span.s6 {color: #6f7178}
-span.s7 {color: #4c5fb5}
-span.s8 {color: #5a66a4}
-span.s9 {font: 14.0px Helvetica}
-span.s10 {color: #0016bd}
-span.s11 {color: #ae1a19}
-span.s12 {color: #606060}
-span.s13 {color: #2b7000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCScope<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>oscilliscope: render a buffer to a view in real time</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object : SCView</b></p>
-<p class="p3"><br></p>
-<p class="p1">An oscilloscope-type view.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><b>See also:</b> <a href="SCStethoscope.html"><span class="s3">SCStethoscope</span></a>, <a href="SCFreqScope.html"><span class="s4">SCFreqScope</span></a>,<a href="SCFreqScopeWindow.html"><span class="s3">SCFreqScopeWindow</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SCScope</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCScope can only work with the internal <a href="../../ServerArchitecture/Server.html"><span class="s5">Server</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s6">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s6">Point</span></a> indicating width at height.</p>
-<p class="p6"><br></p>
-<p class="p10"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>bufnum</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>bufnum_ (num)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>num </b>- An integer.The <b>bufnum</b> of the scope's <a href="../../ServerArchitecture/Buffer.html"><span class="s7">Buffer</span></a>.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>style_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The display style of the scope.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- an integer.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 = vertically spaced</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 = overlapped</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 = x/y</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>xZoom</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>xZoom_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The x- scaling of the scope.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Math/Float.html"><span class="s8">Float</span></a>. Must be in steps of 2**(1/n ), where n is a positive integer</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>yZoom</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>yZoom_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The y- scaling of the scope. Must be in steps of 2**(1/n ), where n is a positive integer</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of <a href="../../Math/Float.html"><span class="s8">Float</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>x</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>x_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The x offset of the scope in samples.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An Integer.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>waveColors</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>waveColors_ (arrayOfColors)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arrayOfColors </b>- An <a href="../../Collections/Array.html"><span class="s8">Array</span></a> of <a href="../GUI-Tools/Color.html"><span class="s8">Color</span></a>s. [ color1, color2, color2, ...], corresponding to the number of channels.</p>
-<p class="p6"><br></p>
-<p class="p10"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s9"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns;</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s2">, </span>\visible<span class="s2">, </span>\enabled<span class="s2">, </span>\canFocus<span class="s2">, </span>\resize<span class="s2">, </span>\background<span class="s2">, </span>\minWidth<span class="s2">, </span>\maxWidth<span class="s2">, </span>\minHeight<span class="s2">, </span>\maxHeight<span class="s2">, </span>\bufnum<span class="s2">, </span>\x<span class="s2">, </span>\y<span class="s2">, </span>\xZoom<span class="s2">, </span>\yZoom<span class="s2">, </span>\gridColor<span class="s2">, </span>\waveColors<span class="s2">, </span>\style<span class="s2">]</span></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridColor</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridColor_ (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>y</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>y_ (val)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p14">// execute these in succession</p>
-<p class="p14">// the cross platform syntax for SCScope is ScopeView</p>
-<p class="p15">(</p>
-<p class="p15">s = <span class="s10">Server</span>.internal;</p>
-<p class="p15">s.boot;</p>
-<p class="p15">)</p>
-<p class="p15">(</p>
-<p class="p15">f = <span class="s10">Buffer</span>.alloc(s,1024,2);</p>
-<p class="p12">b = <span class="s10">Bus</span>.audio(s,1);</p>
-<p class="p6"><br></p>
-<p class="p12">w=<span class="s10">Window</span>.new.front;</p>
-<p class="p12">c = <span class="s10">ScopeView</span>(w.view,w.view.bounds.insetAll(10,10,10,10));<span class="Apple-converted-space">  </span><span class="s11">// this is SCScope</span></p>
-<p class="p12">c.bufnum = f.bufnum;</p>
-<p class="p12">)</p>
-<p class="p12">(</p>
-<p class="p16">// listening to the bus, using ScopeOut to write it to the buffer</p>
-<p class="p12">a=<span class="s10">SynthDef</span>(<span class="s12">"monoscope"</span>, { <span class="s10">arg</span> bus, bufnum;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> z;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = <span class="s10">In</span>.ar(bus,2);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ScopeOut writes the audio to the buffer</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">ScopeOut</span>.ar(z, bufnum);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">RootNode</span>(s),</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s13">\bus</span>,b.index, <span class="s13">\bufnum</span>, f.bufnum] ,</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s13">\addToTail</span><span class="s2"> </span>// make sure it goes after what you are scoping</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><br></p>
-<p class="p16">// making noise onto the buffer</p>
-<p class="p15">d=<span class="s10">SynthDef</span>(<span class="s12">"noise"</span>, { <span class="s10">arg</span> bus;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> z;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = <span class="s10">LFSaw</span>.ar(<span class="s10">SinOsc</span>.kr(0.1).range(300,1000),[0,1]*pi) * 0.1;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Out</span>.ar(bus, z);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s,</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s13">\bus</span>,b.index]</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12">)</p>
-<p class="p6"><br></p>
-<p class="p16"><span class="s2">c.style = 0 </span>// vertically spaced</p>
-<p class="p16"><span class="s2">c.style = 1 </span>// overlapped</p>
-<p class="p12">c.style = 2 <span class="s11">// x/y</span></p>
-<p class="p6"><br></p>
-<p class="p12">(<span class="Apple-converted-space"> </span></p>
-<p class="p16">//remember to free your stuff when finished</p>
-<p class="p12">a.free;</p>
-<p class="p12">d.free;</p>
-<p class="p12">f.free;</p>
-<p class="p12">b.free;</p>
-<p class="p12">w.close;</p>
-<p class="p12">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p16">/***** Interactive Example with Sound (explains all the options) *****/</p>
-<p class="p6"><br></p>
-<p class="p15">(</p>
-<p class="p3"><br></p>
-<p class="p15">s = <span class="s10">Server</span>.internal;</p>
-<p class="p15">s.waitForBoot({<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">var</span> func, sdef1, sdef2, syn1, syn2,startButton ;</p>
-<p class="p15"><span class="Apple-tab-span">	</span>f = <span class="s10">Buffer</span>.alloc(s,1024,2);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>b = <span class="s10">Bus</span>.audio(s,1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>w=<span class="s10">Window</span>(<span class="s12">"Scope"</span>, <span class="s10">Rect</span>(150, <span class="s10">SCWindow</span>.screenBounds.height-500,790,400)).front;</p>
-<p class="p15"><span class="Apple-tab-span">	</span>c = <span class="s10">ScopeView</span>(w,<span class="s10">Rect</span>(10,10,380,380)); <span class="s11">// this is SCScope</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>c.bufnum = f.bufnum;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>v=<span class="s10">CompositeView</span>(w,<span class="s10">Rect</span>(400,10,380,380)).background_(<span class="s10">Color</span>.rand(0.7));</p>
-<p class="p15"><span class="Apple-tab-span">	</span>v.decorator = n = <span class="s10">FlowLayout</span>(v.bounds, margin: 0 at 0, gap: 5 at 5);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>a = <span class="s10">StaticText</span>(v, <span class="s10">Rect</span>(20, 70, 90, 20)).string_(<span class="s12">" xZoom = 1"</span>).background_(<span class="s10">Color</span>.rand);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>m = <span class="s10">Slider</span>(v, <span class="s10">Rect</span>(20, 60, 285, 20)).background_(a.background).action_({func.value}).value_(0.5);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>d = <span class="s10">StaticText</span>(v, <span class="s10">Rect</span>(20, 70, 90, 20)).string_(<span class="s12">" yZoom = 1"</span>).background_(<span class="s10">Color</span>.rand);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>g = <span class="s10">Slider</span>(v, <span class="s10">Rect</span>(20, 60, 285, 20)).background_(d.background).action_({func.value}).value_(0.5);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>h = <span class="s10">StaticText</span>(v, <span class="s10">Rect</span>(20, 70, 90, 20)).string_(<span class="s12">" x = 0"</span>).background_(<span class="s10">Color</span>.rand);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>i = <span class="s10">Slider</span>(v, <span class="s10">Rect</span>(20, 60, 285, 20)).background_(h.background).action_({func.value}).value_(0.5);</p>
-<p class="p3"><br></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">Button</span>(v, <span class="s10">Rect</span>(0,0,380, 20))</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[</span>"waveColors = [ Color.rand, ... ]"<span class="s2">,</span><span class="s10">Color</span><span class="s2">.black,</span><span class="s10">Color</span><span class="s2">.rand]])</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({c.waveColors = [<span class="s10">Color</span>.rand,<span class="s10">Color</span>.rand]});</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">Button</span>(v, <span class="s10">Rect</span>(0,0,380, 20))</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[</span>" background = Color.rand(0.1,0.3) "<span class="s2">,</span><span class="s10">Color</span><span class="s2">.black,</span><span class="s10">Color</span><span class="s2">.rand]])</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({c.background = <span class="s10">Color</span>.rand(0.1,0.3) });</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>t= <span class="s10">Button</span>(v, <span class="s10">Rect</span>(0,0,380, 20))</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[<span class="s12">"Current style is 0"</span>,<span class="s10">Color</span>.black,<span class="s10">Color</span>.rand],</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</span>"Current style is 1"<span class="s2">,</span><span class="s10">Color</span><span class="s2">.black,</span><span class="s10">Color</span><span class="s2">.rand],</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s12">"Current style is 2"</span>,<span class="s10">Color</span>.black,<span class="s10">Color</span>.rand]])</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({func.value});</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>func={</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.xZoom = ([0.25, 10, <span class="s13">\exp</span>, 1/8, 1].asSpec.map(m.value)); a.string = <span class="s12">" xZoom = %"</span>.format(c.xZoom);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.yZoom = ([0.25, 10, <span class="s13">\exp</span>, 1/8, 1].asSpec.map(g.value)); d.string = <span class="s12">" yZoom = %"</span>.format(c.yZoom);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.x = ([ -1024,1024, <span class="s13">\linear</span>, 1/8, 1].asSpec.map(i.value)); h.string = <span class="s12">" x = %"</span>.format(c.x);</p>
-<p class="p14">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.y = ([-1,1, \linear, 1/16, 1].asSpec.map(k.value)); j.string = " y = %".format(c.y);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.style=t.value</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>startButton = <span class="s10">Button</span>.new(v, <span class="s10">Rect</span>(0,0,380, 50))</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.states_([[<span class="s12">"Start Sound"</span>,<span class="s10">Color</span>.black,<span class="s10">Color</span>.green],[<span class="s12">"Stop Sound"</span>,<span class="s10">Color</span>.black,<span class="s10">Color</span>.red]]).action_({});</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>startButton.action_{</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(startButton.value==1).if{</p>
-<p class="p15"><span class="Apple-tab-span">	</span>syn1=<span class="s10">SynthDef</span>(<span class="s12">"test1"</span>, { <span class="s10">arg</span> bus, bufnum;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> z;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = <span class="s10">In</span>.ar(bus,2);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ScopeOut writes the audio to the buffer</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">ScopeOut</span>.ar(z, bufnum);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Out</span>.ar(0,z);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">RootNode</span>(s),</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s13">\bus</span>,b.index, <span class="s13">\bufnum</span>, f.bufnum] ,</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s13">\addToTail</span><span class="s2"> </span>// make sure it goes after what you are scoping</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// making noise onto the buffer</p>
-<p class="p15"><span class="Apple-tab-span">	</span>syn2=<span class="s10">SynthDef</span>(<span class="s12">"test2"</span>, { <span class="s10">arg</span> bus;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> z;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = <span class="s10">PMOsc</span>.ar([300,250],*<span class="s10">SinOsc</span>.ar([0.027,0.017])*pi) * 0.1;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Out</span>.ar(bus, z);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s,[<span class="s13">\bus</span>,b.index]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}{syn1.free; syn2.free};</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="Apple-tab-span">	</span>w.onClose={syn1.free; syn2.free; b.free; f.free};</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p15">})</p>
-<p class="p15">)</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCScrollTopView.html b/Help/GUI/Cocoa-GUI/SCScrollTopView.html
deleted file mode 100644
index 0a4a610..0000000
--- a/Help/GUI/Cocoa-GUI/SCScrollTopView.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #384cb9}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #384cb9; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #384cb9}
-span.s3 {color: #0020f6}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline ; color: #3346ac}
-span.s6 {color: #3b4eb5}
-span.s7 {color: #344abf}
-span.s8 {color: #2c46cb}
-span.s9 {color: #2040df}
-span.s10 {color: #0018b8}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCScrollTopView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an SCTopView with scrollers</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCContainerView.html"><span class="s3"><b>SCContainerView</b></span></a><b> : </b><a href="SCCompositeView.html"><span class="s2"><b>SCCompositeView</b></span></a><b> : </b><a href="SCTopView.html"><span class="s3"><b>SCTopView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">A top level container view which allows the user to scroll across content which exceeds a window's visible bounds. A SCScrollTopView is created for you automatically if you pass true for the scroll argument in SCWindow:new. You do not need to create instances of this class directly.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4"><b>See also:</b> <a href="SCWindow.html"><span class="s5">SCWindow</span></a> <a href="../GUI-Tools/GUI.html"><span class="s5">GUI</span></a></span><span class="s6"> <a href="SCScrollView.html"><span class="s2">SCScrollView</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Setting the Internal Bounds</b></p>
-<p class="p2"><br></p>
-<p class="p1">The size of the contained 'canvas' is determined by the bounds of the views which it encloses. Resize settings are thus ignored for contained views. To set it to a particular size, you can add a <a href="SCCompositeView.html"><span class="s7">SCCompositeView</span></a> or other container view, but there is no direct setter. One should not use a decorator such as FlowLayout directly on a NSScrollTopView, only on a container view within it.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Action Functions with Scrolling SCViews</b></p>
-<p class="p2"><br></p>
-<p class="p1">A SCScrollTopView or SCScrollView's action function is evaluated when a user scrolls the view or sets the visibleOrigin. See the example in the <a href="SCScrollView.html"><span class="s8">SCScrollView</span></a> help file.</p>
-<p class="p2"><br></p>
-<p class="p7"><b>Instance Methods</b></p>
-<p class="p8"><br></p>
-<p class="p1">A window's SCScrollTopView can be accessed using the SCWindow:view method. See the examples below.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>autohidesScrollers_(bool)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>autohidesScrollers</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> value indicating whether this view only shows its scrollers when the bounds of the enclosed content exceed the the bounds of this view. Autohiding is done independently for each axis. The default is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>autoScrolls_(bool)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>autoScrolls</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> value indicating whether this view scrolls automatically when you drag on a contained control view past the edge of visible bounds. The default is true.<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>hasHorizontalScroller_(bool)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>hasHorizontalScroller</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> value indicating whether this view has a horizontal scroller. The default is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>hasVerticalScroller_(bool)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>hasVerticalScroller</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> value indicating whether this view has a vertical scroller. The default is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>innerBounds</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a <a href="../../Geometry/Rect.html"><span class="s9">Rect</span></a> corresponding to the size of the enclosed canvas. Note that you cannot set this directly. The size of the innerBounds will be either the visible bounds or the smallest Rect which contains all enclosed subviews, whichever is larger. See discussion above.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>visibleOrigin_(point)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>visibleOrigin</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return the coordinates of the current visible origin (the upper lefthand corner) of the enclosed 'canvas'. <b>point</b> is an instance of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p10">(</p>
-<p class="p11"><span class="s4">w = </span><span class="s10">Window</span><span class="s4">(scroll: </span><span class="s10">true</span><span class="s4">); </span>// you must set this when the window is created</p>
-<p class="p10">c = <span class="s10">Slider</span>(w, <span class="s10">Rect</span>(0,0,100,30));</p>
-<p class="p10">w.front;</p>
-<p class="p10">)</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s4">c.resize = 2; </span>// resize settings are ignored if scrolling is enabled.</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s4">d = </span><span class="s10">Slider</span><span class="s4">(w, </span><span class="s10">Rect</span><span class="s4">(1500, 40, 100, 30)); </span>// a horizontal scroller appears</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s4">w.view.autohidesScrollers_(</span><span class="s10">false</span><span class="s4">); </span>// autohide is enabled by default, but we can turn it off</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s4">w.view.visibleOrigin = 1500 at 0; </span>// but we can still scroll using the visibleOrigin method</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCScrollView.html b/Help/GUI/Cocoa-GUI/SCScrollView.html
deleted file mode 100644
index fecb8b2..0000000
--- a/Help/GUI/Cocoa-GUI/SCScrollView.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #46539b; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001ee6}
-span.s3 {color: #0c2eee}
-span.s4 {text-decoration: underline ; color: #334abd}
-span.s5 {color: #4c5aa7}
-span.s6 {color: #0018b8}
-span.s7 {color: #000000}
-span.s8 {color: #a41c14}
-span.s9 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCScrollView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>container view with scrollers</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCContainerView.html"><span class="s3"><b>SCContainerView</b></span></a><b> : </b><a href="SCCompositeView.html"><span class="s2"><b>SCCompositeView</b></span></a><b> : </b><a href="SCTopView.html"><span class="s3"><b>SCTopView</b></span></a><b> : </b><a href="SCScrollTopView.html"><span class="s2"><b>SCScrollTopView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">A container view which allows the user to scroll across content which exceeds the view's visible bounds.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="SCWindow.html"><span class="s4">SCWindow</span></a> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Some Important Issues Concerning SCScrollView</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCScrollView inherits most of it's important methods from it's superclass, <a href="SCScrollTopView.html"><span class="s5">SCScrollTopView</span></a>. Please see its helpfile for more information.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Setting the Internal Bounds</b></p>
-<p class="p2"><br></p>
-<p class="p1">The size of the contained 'canvas' is determined by the bounds of the views which it encloses. Resize settings are thus ignored for contained views. To set it to a particular size, you can add a <a href="SCCompositeView.html"><span class="s5">SCCompositeView</span></a> or other container view, but there is no direct setter. One should not use a decorator such as FlowLayout directly on a SCScrollView, only on a container view within it.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Action Functions with Scrolling SCViews</b></p>
-<p class="p2"><br></p>
-<p class="p1">A SCScrollTopView or SCScrollView's action function is evaluated when a user scrolls the view or sets the visibleOrigin. See the example below.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new(parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a new SCScrollView. (Inheritted from <a href="SCView.html"><span class="s5">SCView</span></a>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- A <a href="SCWindow.html"><span class="s5">SCWindow</span></a>, or a container view such as <a href="SCCompositeView.html"><span class="s5">SCCompositeView</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - A <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, which specifies the position of this view in its <b>parent</b>.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p10"><b>Instance Methods</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>hasBorder_(bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>hasBorder</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>These methods get and set a <a href="../../Core/Boolean.html"><span class="s5">Boolean</span></a> indicating whether or not a black border is drawn around the view. This border is drawn within the bounds of the SCScrollView. Thus the bounds do not change when a border is added, but the visible area is slightly reduced.<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s6">Window</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p11">b = <span class="s6">ScrollView</span>(w, <span class="s6">Rect</span>(0,0,150,100));</p>
-<p class="p11">c = <span class="s6">Slider2D</span>(b, <span class="s6">Rect</span>(0,0,100,100));<span class="Apple-tab-span">	</span></p>
-<p class="p11">d = <span class="s6">Slider2D</span>(b, <span class="s6">Rect</span>(100,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p11">w.front;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p11">w.view.background = <span class="s6">Color</span>.white;</p>
-<p class="p3"><br></p>
-<p class="p11">b.background = <span class="s6">Color</span>.grey;</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s7">d.bounds = </span><span class="s6">Rect</span><span class="s7">(100,0,1000,100); </span>// the 'canvas' grows to accomodate it</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s7">b.resize = 5; </span>// the ScrollView resizes, but not its contents</p>
-<p class="p3"><br></p>
-<p class="p11">b.hasBorder_(<span class="s6">true</span>);</p>
-<p class="p3"><br></p>
-<p class="p11">b.hasBorder_(<span class="s6">false</span>);</p>
-<p class="p3"><br></p>
-<p class="p11">b.visibleOrigin;</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s7">b.visibleOrigin = </span><span class="s6">Point</span><span class="s7">(2000, 0); </span>// clips to the bounds of its contents</p>
-<p class="p3"><br></p>
-<p class="p11">b.hasHorizontalScroller_(<span class="s6">false</span>);</p>
-<p class="p3"><br></p>
-<p class="p11">b.hasVerticalScroller_(<span class="s6">true</span>);</p>
-<p class="p3"><br></p>
-<p class="p11">b.autohidesScrollers_(<span class="s6">false</span>);</p>
-<p class="p3"><br></p>
-<p class="p11">w.close;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">// Force a 'canvas' size</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s6">Window</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p11">b = <span class="s6">ScrollView</span>(w, <span class="s6">Rect</span>(0, 0, 300, 300)).hasBorder_(<span class="s6">true</span>);</p>
-<p class="p11">c = <span class="s6">CompositeView</span>(b, <span class="s6">Rect</span>(0, 0, 500, 500)); <span class="s8">// 'canvas' is this big</span></p>
-<p class="p12"><span class="s7">c.decorator = </span><span class="s6">FlowLayout</span><span class="s7">(c.bounds); </span>// now we can use a decorator</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s6">Slider2D</span>(c, <span class="s6">Rect</span>(0, 0, 240, 240));</p>
-<p class="p11"><span class="s6">Slider2D</span>(c, <span class="s6">Rect</span>(0, 0, 240, 240));</p>
-<p class="p11"><span class="s6">Slider2D</span>(c, <span class="s6">Rect</span>(0, 0, 240, 240));</p>
-<p class="p3"><br></p>
-<p class="p11">c.decorator.nextLine;</p>
-<p class="p11">w.front;</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">// "Rulers", using an action function</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p11"><span class="s6">var</span> drawFunc;</p>
-<p class="p11">w = <span class="s6">Window</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p11">a = <span class="s6">ScrollView</span>(w, <span class="s6">Rect</span>(40, 40, 300, 300));</p>
-<p class="p11">b = <span class="s6">ScrollView</span>(w, <span class="s6">Rect</span>(0, 40, 40, 300)).hasHorizontalScroller_(<span class="s6">false</span>).hasVerticalScroller_(<span class="s6">false</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.autoScrolls_(<span class="s6">false</span>);</p>
-<p class="p11">c = <span class="s6">ScrollView</span>(w, <span class="s6">Rect</span>(40, 0, 300, 40)).hasHorizontalScroller_(<span class="s6">false</span>).hasVerticalScroller_(<span class="s6">false</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.autoScrolls_(<span class="s6">false</span>);</p>
-<p class="p11">b.background = <span class="s6">Color</span>.grey;</p>
-<p class="p11">c.background = <span class="s6">Color</span>.grey;</p>
-<p class="p3"><br></p>
-<p class="p11">d = <span class="s6">UserView</span>(a, <span class="s6">Rect</span>(0, 0, 620, 620));</p>
-<p class="p11">e = <span class="s6">UserView</span>(b, <span class="s6">Rect</span>(0, 0, 40, 630));</p>
-<p class="p11">f = <span class="s6">UserView</span>(c, <span class="s6">Rect</span>(0, 0, 630, 40));</p>
-<p class="p3"><br></p>
-<p class="p11">a.action = { <span class="s6">var</span> origin;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>origin = a.visibleOrigin;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>b.visibleOrigin = 0@(origin.y);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>c.visibleOrigin = (origin.x)@0;</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">drawFunc = {</p>
-<p class="p11"><span class="Apple-tab-span">	</span>30.do({<span class="s6">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(i+1).asString.drawAtPoint((i+1 * 20)@0, <span class="s6">Font</span>(<span class="s9">"Courier"</span>, 9), <span class="s6">Color</span>.black);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">d.drawFunc = {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">Pen</span>.use({</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Pen</span>.translate(0, 5);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>drawFunc.value;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>});<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">Pen</span>.translate(15, 0).rotate(0.5pi);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>drawFunc.value;</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">e.drawFunc = {<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">Pen</span>.translate(40, 0).rotate(0.5pi);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>drawFunc.value;</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">f.drawFunc = {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">Pen</span>.translate(0, 25);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>drawFunc.value;</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">w.front;</p>
-<p class="p11">)</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCSlider.html b/Help/GUI/Cocoa-GUI/SCSlider.html
deleted file mode 100644
index b54cf59..0000000
--- a/Help/GUI/Cocoa-GUI/SCSlider.html
+++ /dev/null
@@ -1,292 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {font: 11.0px Monaco}
-span.s8 {font: 11.0px Monaco; color: #0000bf}
-span.s9 {font: 14.0px Helvetica}
-span.s10 {text-decoration: underline ; color: #0000bf}
-span.s11 {color: #007300}
-span.s12 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCSlider<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a gui slider</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCControlView.html"><b>SCControlView</b></a><b> : </b><a href="SCSliderBase.html"><b>SCSliderBase</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="SCRangeSlider.html"><span class="s3">SCRangeSlider</span></a>, <a href="../EZ-GUI/EZSlider.html"><span class="s3">EZSlider</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding SCSlider</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCSlider always has a range between zero and one. You must scale the output and input values to your needs. Using <b>map</b> and <b>unmap,</b> combined with a <a href="../../Control/Spec.html"><span class="s4">Spec</span></a>, is helpful for this. To set the increment or decrement value of the slider, set the <b>step</b>.<span class="Apple-converted-space">  </span>By default, the shift, ctrl, and alt keys will modify the stepping by 100x, 10x, or 0.1x repectively, though you can customize this by setting <b>shift_scale, ctrl_scale, </b>or<b> alt_scale<span class="Apple-converted-space"> </span></b> (see <a href="SCSliderBase.html"><span class="s5">SCSliderBase</span></a>) .<span class="Apple-converted-space">  </span>Inherits some formatting from <a href="SCSliderBase.html"><span class="s5">SCSliderBase</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6">By default, SCSlider will respond only to drags where the drag contains a <a href="../../Math/Number.html"><span class="s5">Number</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a> indicating width at height.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s5">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(20, 60, 150, 20));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.action = { a.value.postln };</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><br></p>
-<p class="p11"><b>Accessing Instance and Class Variables</b><span class="s6"><span class="Apple-tab-span">	</span></span></p>
-<p class="p12"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets the property, \value, by calling get/setProperty(\value, <b>val</b>). This will not do the <b>action</b> of the slider.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets the property, \value, by calling setPropertyWithAction(\value, <b>val</b>). Does the sliders <b>action</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>increment (zoom)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>decrement (zoom)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>These are the methods called by pressing the arrow keys. These methods increment or decrement the slider value by <span class="s7">(max(</span><span class="s8">this</span><span class="s7">.step, </span><span class="s8">this</span><span class="s7">.pixelStep) * zoom)</span>. This means that by default increment and decrement change the value by <b>pixelStep</b> (<b>step</b> is nil by default). You can set <b>step</b> to quantize the increment/decrement of the slider values. If you call these methods from your code, you can also change the resolution of the values with the <b>zoom</b> factor. This will not effect how the keys work, since they will always use a zoom factor of 1, or a multiple of that depending on the key modifier. See <a href="SCSliderBase.html"><span class="s5">SCSliderBase</span></a>. Performs the action of the slider.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>zoom </b>- Defaults to 1, though it is effected by key modifiers when using arrow keys.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b>Customizing Appearance</b></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>thumbSize</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>thumbSize_ (size)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>size </b>- The size of the slider button in pixels. Its width or height, depending on the slider orientation</p>
-<p class="p7"><br></p>
-<p class="p11"><b>Subclassing and Internal Methods</b></p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s5">SCView</span></a>.</p>
-<p class="p13"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s2">, </span>\visible<span class="s2">, </span>\enabled<span class="s2">, </span>\canFocus<span class="s2">, </span>\resize<span class="s2">, </span>\background<span class="s2">, </span>\minWidth<span class="s2">, </span>\maxWidth<span class="s2">, </span>\minHeight<span class="s2">, </span>\maxHeight<span class="s2">, </span>\knobColor<span class="s2">, </span>\step<span class="s2">, </span>\thumbSize<span class="s2">, </span>\focusColor<span class="s2">]</span></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>pixelStep</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the reciprocal of: the slider width or height (depending on orientation) minus the <b>thumbSize</b><span class="Apple-tab-span">	</span></p>
-<p class="p13"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>r<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>valueAction_</b>(1.0.rand)<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>valueAction_</b>(0)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>valueAction_</b>(1)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>valueAction_</b>(0.5)<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>increment by <b>step</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>decrement by <b>step</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF700, <span class="Apple-tab-span">	</span>increment by <b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>up arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF703, <span class="Apple-tab-span">	</span>increment by <b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>right arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF701, <span class="Apple-tab-span">	</span>decrement by <b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>down arrow</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unicode 16rF702, <span class="Apple-tab-span">	</span>decrement by <b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>left arrow</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag <b>from</b> an SCSlider. Returns the same as <b>value</b>.</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to drop a drag in this object. By default, SCSlider will respond only to drags where the drag contains a <a href="../../Math/Number.html"><span class="s5">Number</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been recieved. Performs <b>valueAction_()</b> using <b>currentDrag</b> as an argument.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b>Examples</b></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p17">// the simplest version will give you a very long float</p>
-<p class="p10">(</p>
-<p class="p10">w = <span class="s5">Window</span>.new.front;</p>
-<p class="p10">c = <span class="s5">NumberBox</span>(w, <span class="s5">Rect</span>(20, 20, 150, 20));</p>
-<p class="p10">a = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(20, 60, 150, 20))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.value_(a.value)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10">a.action.value;</p>
-<p class="p10">)</p>
-<p class="p16"><br></p>
-<p class="p17"><span class="s2">(</span>// change the bounds to become vertical</p>
-<p class="p10">w = <span class="s5">Window</span>.new.front;</p>
-<p class="p10">c = <span class="s5">NumberBox</span>(w, <span class="s5">Rect</span>(20, 20, 150, 20));</p>
-<p class="p10">a = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(200, 60, 20, 150))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.value_(a.value)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10">a.action.value;</p>
-<p class="p10">)</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p17">// use a <a href="../../Control/Spec.html"><span class="s10">Spec</span></a> to round and map the output range for clearer display</p>
-<p class="p10">(</p>
-<p class="p10">w = <span class="s5">Window</span>.new.front;</p>
-<p class="p17"><span class="s2">b = </span><span class="s5">ControlSpec</span><span class="s2">(-50, 50, </span><span class="s11">\linear</span><span class="s2">, 0.01); </span>// min, max, mapping, step</p>
-<p class="p10">c = <span class="s5">StaticText</span>(w, <span class="s5">Rect</span>(20, 20, 150, 20)).align_(<span class="s11">\center</span>).background_(<span class="s5">Color</span>.rand);</p>
-<p class="p10">a = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(20, 50, 150, 20))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.focusColor_(<span class="s5">Color</span>.red(alpha:0.2))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.background_(<span class="s5">Color</span>.rand)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.value_(0.5)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.string_(b.map(a.value).asString)</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// round the float so it will fit in the NumberBox</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10">a.action.value;</p>
-<p class="p16"><br></p>
-<p class="p10">)</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p17">// change the stepsize of the slider, selected via a PopUpMenu</p>
-<p class="p10">(</p>
-<p class="p10">w = <span class="s5">Window</span>.new.front;</p>
-<p class="p18"><span class="s2">a = [</span>"0"<span class="s2">, </span>"0.0625"<span class="s2">, </span>"0.125"<span class="s2">, </span>"0.25"<span class="s2">, </span>"0.5"<span class="s2">, </span>"1"<span class="s2">];</span></p>
-<p class="p10">b = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(20, 100, 100, 20))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.value_(b.value)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).background_(<span class="s5">Color</span>.rand);</p>
-<p class="p10">d = <span class="s5">PopUpMenu</span>(w, <span class="s5">Rect</span>(20, 60, 100, 20))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.items_(a)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.step_((a.at(d.value)).asFloat);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10"><span class="s5">StaticText</span>(w, <span class="s5">Rect</span>(130, 60, 100, 20)).string_(<span class="s12">"change step"</span>);<span class="Apple-tab-span">	</span></p>
-<p class="p10">c = <span class="s5">NumberBox</span>(w, <span class="s5">Rect</span>(20, 20, 100, 20));</p>
-<p class="p10">)</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p17">// use the slider view to accept key actions</p>
-<p class="p16"><br></p>
-<p class="p17"><span class="s2">(</span>// select the slider, type something and watch the post window</p>
-<p class="p10">w = <span class="s5">Window</span>.new;</p>
-<p class="p10">c = <span class="s5">Slider</span>(w,<span class="s5">Rect</span>(0,0,100,30));</p>
-<p class="p10">c.keyDownAction = { <span class="s5">arg</span> view,char,modifiers,unicode,keycode;</p>
-<p class="p10">[char,modifiers,unicode,keycode].postln;</p>
-<p class="p10">};</p>
-<p class="p10">w.front;</p>
-<p class="p10">)</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p17">// adding functionality to a view by the method addAction</p>
-<p class="p17">// this is useful for adding things to existing frameworks</p>
-<p class="p17">// that have action functions already.</p>
-<p class="p16"><br></p>
-<p class="p10">(</p>
-<p class="p10">w = <span class="s5">Window</span>.new(<span class="s12">"A Slider"</span>);</p>
-<p class="p10">a = <span class="s5">Slider</span>.new(w, <span class="s5">Rect</span>(40, 10, 300, 30));</p>
-<p class="p10">w.front</p>
-<p class="p10">);</p>
-<p class="p16"><br></p>
-<p class="p17">// now incrementally add some action to the slider</p>
-<p class="p10">a.addAction({ <span class="s5">|sl|</span> sl.value.postln });</p>
-<p class="p10">a.addAction({ <span class="s5">|sl|</span> w.view.background = <span class="s5">Color</span>.green(sl.value) });</p>
-<p class="p10">a.addAction({ <span class="s5">|sl|</span> sl.background = <span class="s5">Color</span>.red(1 - sl.value) });</p>
-<p class="p16"><br></p>
-<p class="p17">// adding and removing an action:</p>
-<p class="p18"><span class="s2">f = { </span><span class="s5">|sl|</span><span class="s2"> </span>"--------*******-------"<span class="s2">.postln; };</span></p>
-<p class="p10">a.addAction(f);</p>
-<p class="p10">a.removeAction(f);</p>
-<p class="p16"><br></p>
-<p class="p17">// or remove all, of course</p>
-<p class="p10">a.action = <span class="s5">nil</span>;</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p10">-----</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p10">// you can use <span class="s5">Slider</span> for triggering sounds also:</p>
-<p class="p16"><br></p>
-<p class="p10">(</p>
-<p class="p10">s.waitForBoot({</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s5">SynthDef</span>(<span class="s11">\pluck</span>,{<span class="s5">arg</span> freq=55;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pluck</span>.ar(<span class="s5">WhiteNoise</span>.ar(0.06),</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0,4), 1.0, doneAction: 2),</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq.reciprocal,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq.reciprocal,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>coef:0.1)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span>w = <span class="s5">Window</span>.new(<span class="s12">"Hold arrow keys to trigger sound"</span>,<span class="s5">Rect</span>(300,<span class="s5">Window</span>.screenBounds.height-300,400,100)).front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>a = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(50, 20, 300, 40))</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.value_(0.5)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.step_(0.05)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.focus</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// trigger a synth with varying frequencies</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Synth</span>(<span class="s11">\pluck</span>, [<span class="s11">\freq</span>,55+(1100*a.value)]);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s5">Gradient</span>(<span class="s5">Color</span>.rand,<span class="s5">Color</span>.rand));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p10">});</p>
-<p class="p16"><br></p>
-<p class="p10">)</p>
-<p class="p16"><br></p>
-<p class="p17">// change the background color of WIndow by moving the sliders</p>
-<p class="p10">(</p>
-<p class="p10">w = <span class="s5">Window</span>(<span class="s12">"RGB fader"</span>, <span class="s5">Rect</span>(100, 500, 400, 400))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.front;</p>
-<p class="p10">f = { w.view.background_(<span class="s5">Color</span>.new(r.value, g.value, b.value, 1)) };</p>
-<p class="p10">r = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(100, 140, 200, 20))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.value_(0.5)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({ f.value });</p>
-<p class="p10">g = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(100, 170, 200, 20))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.value_(0.5)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({ f.value });</p>
-<p class="p10">b = <span class="s5">Slider</span>(w, <span class="s5">Rect</span>(100, 200, 200, 20))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.value_(0.5)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.action_({ f.value });</p>
-<p class="p10">f.value;</p>
-<p class="p10">);</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCSliderBase.html b/Help/GUI/Cocoa-GUI/SCSliderBase.html
deleted file mode 100644
index dfb86bf..0000000
--- a/Help/GUI/Cocoa-GUI/SCSliderBase.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {font: 14.0px Helvetica}
-span.s9 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCSliderBase<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract superclass for various sliders</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCControlView.html"><span class="s3"><b>SCControlView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">Users will not normally directly create instances of SCSliderBase, but only use it through its subclasses. It provides a few methods common to various slider views. To set the increment or decrement value of a slider, set the <b>step</b> .<span class="Apple-converted-space">  </span>By default, the shift, ctrl, and alt keys will modify the stepping by 100x, 10x, or 0.1x repectively, though you can customize this by setting <b>shift_scale, ctrl_scale, </b>or<b> alt_scale.</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4"><b>See also:</b> <a href="SCSlider.html"><span class="s5">SCSlider</span></a>, <a href="SCRangeSlider.html"><span class="s5">SCRangeSlider</span></a>, <a href="SC2DSlider.html"><span class="s5">SC2DSlider</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>step</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>step_ (stepSize)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The step size for changing a slider value. The subclasses tend to use this in their <b>increment</b> an <b>decrement</b> methods, among other things.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stepSize </b>- A Number;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>shift_scale_(aFloat)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>shift_scale</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A value for <b>increment</b>'s or <b>decrement</b>'s zoom argument while mouse scrolling<span class="Apple-converted-space">  </span>or arrow keys, and while the <b>shift</b> key is pressed.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>shift_scale</b> defaults to 100.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aFloat </b>- An instance of <a href="../../Math/Float.html"><span class="s6">Float</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>ctrl_scale_(aFloat)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>ctrl_scale</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A value for <b>increment</b>'s or <b>decrement</b>'s zoom argument while mouse scrolling or arrow keys, and while the <b>ctrl</b> key is pressed.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ctrl_scale</b> defaults to 10.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aFloat </b>- An instance of <a href="../../Math/Float.html"><span class="s6">Float</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>alt_scale_(aFloat)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>alt_scale</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A value for <b>increment</b>'s or <b>decrement</b>'s zoom argument while mouse scrolling or arrow keys, and while the <b>alt</b> key is pressed.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ctrl_scale</b> defaults to 0.1.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aFloat </b>- An instance of <a href="../../Math/Float.html"><span class="s6">Float</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b>Customizing Appearance</b></p>
-<p class="p8"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>knobColor</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>knobColor_ (color)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the knob <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a> for a slider-</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s7">Color</span></a>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p7"><b>Subclassing and Internal Methods</b></p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s9">SCView</span></a>.</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns:</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s4">, </span>\visible<span class="s4">, </span>\enabled<span class="s4">, </span>\canFocus<span class="s4">, </span>\resize<span class="s4">, </span>\background<span class="s4">, </span>\minWidth<span class="s4">, </span>\maxWidth<span class="s4">, </span>\minHeight<span class="s4">, </span>\maxHeight<span class="s4">, </span>\knobColor<span class="s4">, </span>\step<span class="s4">, </span>\thumbSize<span class="s4"> ]<span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><br></p>
-<p class="p7"><b>Examples</b></p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s4">See <a href="SCSlider.html"><span class="s5">SCSlider</span></a>, <a href="SCRangeSlider.html"><span class="s5">SCRangeSlider</span></a>, <a href="SC2DSlider.html"><span class="s5">SC2DSlider</span></a></span></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCSoundFileView.html b/Help/GUI/Cocoa-GUI/SCSoundFileView.html
deleted file mode 100644
index 38edafd..0000000
--- a/Help/GUI/Cocoa-GUI/SCSoundFileView.html
+++ /dev/null
@@ -1,504 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #485abb}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #6f7178}
-span.s6 {color: #0018b8}
-span.s7 {color: #606060}
-span.s8 {color: #4357c0}
-span.s9 {color: #3e54c5}
-span.s10 {text-decoration: underline ; color: #3e51b3}
-span.s11 {color: #2040df}
-span.s12 {color: #0000ff}
-span.s13 {font: 14.0px Helvetica}
-span.s14 {color: #0000bf}
-span.s15 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCSoundFileView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a sound file editor / viewer</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCScope.html"><span class="s2"><b>SCScope</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">A sound file viewer with numerous options. </p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../../Files/SoundFile.html"><span class="s4">SoundFile</span></a>, <a href="SCScope.html"><span class="s4">SCScope</span></a>, <a href="SoundFileViewProgressWindow.html"><span class="s4">SoundFileViewProgressWindow</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a> indicating width at height.</p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">SCWindow</span>.new(<span class="s7">"soundfile test"</span>, <span class="s6">Rect</span>(200, 200, 850, 400));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s6">SCSoundFileView</span>.new(w, <span class="s6">Rect</span>(20,20, 700, 60));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s6">SoundFile</span>.new;</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.openRead(</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.soundfile = f;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.read(0, f.numFrames);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p12"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>soundfile</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>soundfile_ (snd)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>snd </b>- An Instance of <a href="../../Files/SoundFile.html"><span class="s8">SoundFile</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>startFrame</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the start frame as an <a href="../../Math/Integer.html"><span class="s8">Integer</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numFrames</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the number of frames in the <b>soundfile.</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>viewFrames</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns how many frames int the view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>readProgress</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns the read progress<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>scrollPos</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns the scroll position<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>metaAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>metaAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 - </b>An instance of <a href="../../Core/Kernel/Function.html"><span class="s8">Function</span></a> to be evaluated on ctrl-click.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Reading A Sound File into the View</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>read (startframe, frames, block, closeFile)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Reads a section of  <b>soundfile</b> and displays it in the view. For large files, you may want to use <b>readWithTask</b> instead.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startframe </b>- An integer smaller than <b>numFrames</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frames </b>- An integer smaller than <b>numFrames</b>-<b>startFrame</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>block </b>- An integer. The block size. Must be 2**n. Default value is 64. The visual resolution of the waveform.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>closeFile </b>- If true, closes the SoundFile after reading. Default value is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>readFile (asoundfile, startframe, frames, block, closefile)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Reads a section of any open instance of <a href="../../Files/SoundFile.html"><span class="s9">SoundFile</span></a>, and displays it in the view. For large files, you may want to use the method <b>readWithTask</b> instead.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>asoundfile </b>- Any instance of SoundFile. the file must be open.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startframe </b>- An integer smaller than <b>numFrames</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frames </b>- An integer smaller than <b>numFrames</b>-<b>startFrame</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>block </b>- An integer. The block size. Must be 2**n. Default value is 64. The visual resolution of the waveform.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>closeFile </b>- If true, closes the SoundFile after reading. Default value is true.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>readWithTask (startframe, frames, block, doneAction, showProgress)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Reads a section of this.<b>soundfile</b> into the view, looping thrugh the frames and updating <b>readProgress</b>. If showProgress is true,  a <a href="SoundFileViewProgressWindow.html"><span class="s10">SoundFileViewProgressWindow</span></a> opens to show the read progress.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startframe </b>- An integer smaller than <b>numFrames</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frames </b>- An integer smaller than <b>numFrames</b>-<b>startFrame</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>block </b>- An integer. The block size. Must be 2**n. Default value is 64. The visual resolution of the waveform.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>doneAction </b>- An optional functiont o be evaluated on completion.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>showProgress </b>- An instance of Boolean. Whether to open a progress window. Default value is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>readFileWithTask (soundfile, startframe, frames, block, doneAction, showProgress)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Reads a section of an open instance of <a href="../../Files/SoundFile.html"><span class="s9">SoundFile</span></a> into the view, looping thrugh the frames and updating <b>readProgress</b>. If showProgress is true,  a <a href="SoundFileViewProgressWindow.html"><span class="s10">SoundFileViewProgressWindow</span></a> opens to show the read progress.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>soundfile </b>- Any instance of SoundFile. the file must be open.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startframe </b>- An integer smaller than <b>numFrames</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frames </b>- An integer smaller than <b>numFrames</b>-<b>startFrame</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>block </b>- An integer. The block size. Must be 2**n. Default value is 64. The visual resolution of the waveform.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>doneAction </b>- An optional functiont o be evaluated on completion.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>showProgress </b>- An instance of Boolean. Whether to open a progress window. Default value is true.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p12"><b>Navigating the Sound File</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>zoom (factor)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Zoom by factor relative to current zoom.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>factor </b>- An instance of <a href="../../Math/Float.html"><span class="s11">Float</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>zoomToFrac (frac)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Zoom to a specific scale, <b>frac</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frac </b>- An instance of <a href="../../Math/Float.html"><span class="s11">Float</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>zoomAllOut</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Fill the window with the current selection.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>zoomSelection (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Zoom to <b>selections</b>.at(<b>index</b>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>scrollTo (position)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>position </b>- An integer.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>scroll (amount)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amount </b>- An integer.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>scrollToStart</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>scrollToEnd</b></p>
-<p class="p6"><br></p>
-<p class="p12"><b>Selecting Ranges of Sound</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selections</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an array of 64 arrays of start frames and sizes: [ [ start0, size0 ] , [ start1, size1 ], ... ].</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This is where the selections are stored.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selection (index)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setSelection (index, selection)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets <b>selections</b>.at(<b>index</b>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>selection </b>- An instance of Array, [ [ start, size ] ], where start and size are integers.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentSelection</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentSelection_ (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets / gets the current selection.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectionStart (index)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setSelectionStart (index, frame)</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the start frame of <b>selections</b>.at(<b>index</b>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frame </b>- An integer smaller than <b>numFrames</b> .</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectionSize (index)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setSelectionSize (index, frame)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the size of <b>selections</b>.at(<b>index</b>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frame </b>- An integer. The number of frames in the selection .</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectionStartTime (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the start time of at <b>selections</b>.at(<b>index</b>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectionDuration (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the duration of at <b>selections</b>.at(<b>index</b>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectAll (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set <b>selections</b>.at(<b>index</b>) to the whole file .</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>selectNone (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the size of the selection,  <b>selections</b>.at(<b>index</b>), to 0.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setSelectionColor (index, color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the color of <b>selections</b>.at(<b>index</b>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <b>Color</b>.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setEditableSelectionStart (index, bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setEditableSelectionSize (index, bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Use this to protect a selection from being edited.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer between 0 an 63.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s11">Boolean</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>readSelection (block, closeFile)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>read this.<b>selection</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>block </b>- An integer. The block size. Must be 2**n. Default value is 64. The visual resolution of the waveform.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>closeFile </b>- If true, closes the SoundFile after reading. Default value is true.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>readSelectionWithTask</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>read this.<b>selection</b> using the progress window.</p>
-<p class="p6"><br></p>
-<p class="p12"><b>Display Options</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridOn</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridOn_ (boolean)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>boolean </b>- An instance of <a href="../../Core/Boolean.html"><span class="s11">Boolean</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridResolution</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridResolution_ (resolution)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set he resolution of the grid.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>resolution </b>- An instance of Float.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridOffset_ (offset)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the grid offset.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>offset </b>- an integer.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridColor_(color)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gridColor</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s11">Color</span></a>.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawsWaveForm</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawsWaveForm_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Whether the wave is drawn or not.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s12">Boolean</span></a>.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>timeCursorOn</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>timeCursorOn_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Show/hide the time cursor.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool</b>- An instance of <a href="../../Core/Boolean.html"><span class="s11">Boolean</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>timeCursorPosition</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>timeCursorPosition_ (frame)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the time cursor frame position.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frame </b>- An integer.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>timeCursorColor</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>timeCursorColor_ (color)</b></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of Color</p>
-<p class="p6"><br></p>
-<p class="p12"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s13"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doMetaAction</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>makeProgressWindow</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p14"><span class="s3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a <a href="SoundFileViewProgressWindow.html"><span class="s4">SoundFileViewProgressWindow</span></a>.</span></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>init (argParent, argBounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>dataFrames_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>dataFrames</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Explanation including the type of <b>dataFrames </b>and a link to its help file.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default value is nil.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>dataNumSamples</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>data</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>data_ (arr)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the view data.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arr </b>- An instance of <a href="../../Collections/Array.html"><span class="s11">Array</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setData (arr, block, startframe, channels, samplerate)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the view data.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arr </b>- An instance of <a href="../../Collections/Array.html"><span class="s11">Array</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>block </b>- An integer. The block size. Must be 2**n. Default value is 64. The visual resolution of the waveform.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startframe </b>- An integer.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>channels </b>- An integer.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>samplerate </b>- An integer. Default value is 44100.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>updateScroll</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>updateData</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>elasticMode</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>elasticMode_ (mode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseEndTrack (x, y)</b></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s13"><span class="Apple-tab-span">	</span></span>Not Implemented yet:</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*cacheFolder</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*cacheFolder_ (path)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*cacheCapacity</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*cacheCapacity_ (megaBytes)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*cacheActive</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*cacheActive_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16">w = <span class="s14">SCWindow</span>.new(<span class="s7">"soundfile test"</span>, <span class="s14">Rect</span>(200, 200, 800, 400));</p>
-<p class="p16">a = <span class="s14">SCSoundFileView</span>.new(w, <span class="s14">Rect</span>(20,20, 700, 60));</p>
-<p class="p15"><br></p>
-<p class="p16">f = <span class="s14">SoundFile</span>.new;</p>
-<p class="p17"><span class="s3">f.openRead(</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p16">f.inspect;</p>
-<p class="p15"><br></p>
-<p class="p16">a.soundfile = f;</p>
-<p class="p16">a.read(0, f.numFrames);</p>
-<p class="p16">a.elasticMode = <span class="s14">true</span>;</p>
-<p class="p15"><br></p>
-<p class="p16">a.timeCursorOn = <span class="s14">true</span>;</p>
-<p class="p16">a.timeCursorColor = <span class="s14">Color</span>.red;</p>
-<p class="p16">a.timeCursorPosition = 2050;</p>
-<p class="p16">a.drawsWaveForm = <span class="s14">true</span>;</p>
-<p class="p16">a.gridOn = <span class="s14">true</span>;</p>
-<p class="p16">a.gridResolution = 0.2;</p>
-<p class="p15"><br></p>
-<p class="p16">w.front;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p18">// step by step examples:</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3">( </span>// make a simple SCSoundFileView</p>
-<p class="p16">w = <span class="s14">SCWindow</span>.new(<span class="s7">"soundfile test"</span>, <span class="s14">Rect</span>(10, 700, 750, 100));</p>
-<p class="p16">w.front;</p>
-<p class="p16">a = <span class="s14">SCSoundFileView</span>.new(w, <span class="s14">Rect</span>(20,20, 700, 60));</p>
-<p class="p15"><br></p>
-<p class="p16">f = <span class="s14">SoundFile</span>.new;</p>
-<p class="p17"><span class="s3">f.openRead(</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p18">// f.inspect;</p>
-<p class="p15"><br></p>
-<p class="p16">a.soundfile = f;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">// set soundfile</span></p>
-<p class="p18"><span class="s3">a.read(0, f.numFrames);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// read in the entire file.</p>
-<p class="p18"><span class="s3">a.refresh;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// refresh to display the file.</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reading file</p>
-<p class="p16">a.read(0, f.numFrames / 2).refresh;<span class="Apple-tab-span">	</span><span class="s15">// read first half</span></p>
-<p class="p18"><span class="s3">a.read.refresh;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// read entire file by default</p>
-<p class="p16">a.read(f.numFrames / 2).refresh; <span class="Apple-tab-span">	</span><span class="s15">// read second half</span></p>
-<p class="p18"><span class="s3">a.read(0, -1).refresh;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// -1 also reads entire file, like buffer.</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// block sets visual resolution of waveform, default is 64.</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// i.e. the view keeps peak values for each block of e.g. 64 samples</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// rather than the entire waveform.</p>
-<p class="p16">a.read(0, -1, block: 32).refresh;</p>
-<p class="p16">a.read(0, -1, block: 24).refresh;</p>
-<p class="p16">a.read(0, -1, block: 16).refresh;</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// for longer files, you can use:</p>
-<p class="p16">a.readWithTask;</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// zoom is relative</p>
-<p class="p16">a.zoom(0.2).refresh;</p>
-<p class="p16">a.zoom(2).refresh;</p>
-<p class="p16">a.zoom(2).refresh;</p>
-<p class="p18"><span class="s3">a.zoomToFrac(0.5); </span>// zoom to half file size</p>
-<p class="p16">a.zoomAllOut;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="s3">a.gridOn = </span><span class="s14">true</span><span class="s3">;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// time grid, 1 second by default,</p>
-<p class="p18"><span class="s3">a.gridResolution = 0.2;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or set resolution in seconds</p>
-<p class="p18"><span class="s3">a.gridColor = </span><span class="s14">Color</span><span class="s3">.cyan;<span class="Apple-tab-span">	</span></span>// color is changeable.</p>
-<p class="p18"><span class="s3">a.gridOffset_(0.1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// not sure if this is working?</p>
-<p class="p15"><br></p>
-<p class="p16">a.timeCursorOn = <span class="s14">true</span>;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">// a settable cursor</span></p>
-<p class="p16">a.timeCursorPosition = 2050;<span class="Apple-tab-span">	</span><span class="s15">// position is in frames.</span></p>
-<p class="p16">a.timeCursorColor = <span class="s14">Color</span>.white;<span class="Apple-tab-span">	</span></p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// toggle drawing on/off</p>
-<p class="p16">a.drawsWaveForm = <span class="s14">false</span>;</p>
-<p class="p16">a.drawsWaveForm = <span class="s14">true</span>;</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// these methods should return view properties:</p>
-<p class="p16">a.gridOn</p>
-<p class="p16">a.gridResolution</p>
-<p class="p16">a.gridColor</p>
-<p class="p16">a.timeCursorOn</p>
-<p class="p16">a.timeCursorPosition</p>
-<p class="p16">a.timeCursorColor</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Selections: multiple selections are supported.</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// e.g. use selection 0:</p>
-<p class="p16">a.setSelectionColor(0, <span class="s14">Color</span>.red);<span class="Apple-tab-span">	</span><span class="s15">// set...( index, value )</span></p>
-<p class="p16">a.selectionStart(0);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">// at index</span></p>
-<p class="p16">a.setSelectionStart(0, 12345);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16">a.setSelectionSize(0, 12345);</p>
-<p class="p15"><br></p>
-<p class="p16">a.setSelectionStart(0, 1234);</p>
-<p class="p16">a.selectionStart(0);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">//</span></p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now selection 1</p>
-<p class="p16">a.setSelectionColor(1, <span class="s14">Color</span>.white);</p>
-<p class="p16">a.setSelectionStart(1, 1234).setSelectionSize(1, 1234 * 2);</p>
-<p class="p16">a.selectionStart(1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">//</span></p>
-<p class="p16">a.setSelectionStart(0, 12345);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">//</span></p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the current selection gets changed when click/dragging in view.</p>
-<p class="p18"><span class="s3">a.currentSelection;<span class="Apple-tab-span">	</span></span>// index of current selection;</p>
-<p class="p18"><span class="s3">a.currentSelection_(1);<span class="Apple-tab-span">	</span></span>// switch current selection - try click/drag white now.</p>
-<p class="p16">a.currentSelection;</p>
-<p class="p15"><br></p>
-<p class="p16">a.selections.size;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">// 64 selections</span></p>
-<p class="p16">a.selections[0];</p>
-<p class="p16">a.selections[1];</p>
-<p class="p16">a.selections;</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// setSelection (index, selection);</p>
-<p class="p16">a.setSelection(0, [234, 2345]);</p>
-<p class="p18"><span class="s3">a.selection(1);<span class="Apple-tab-span">	</span></span>// returns [start, size].</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3">a.elasticMode = </span><span class="s14">true</span><span class="s3">;<span class="Apple-tab-span">	</span></span>// not sure if this is working yet?</p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// mouseUpAction</p>
-<p class="p16">a.mouseUpAction = {</p>
-<p class="p17"><span class="s3"><span class="Apple-tab-span">	</span>(</span>"mouseUp, current selection is now:"<span class="s3"></span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ a.selections[a.currentSelection]).postln;</p>
-<p class="p16">};</p>
-<p class="p16">)</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// lock selection 0:</p>
-<p class="p16">a.currentSelection_(0);</p>
-<p class="p16">a.setEditableSelectionStart(0, <span class="s14">false</span>);</p>
-<p class="p16">a.setEditableSelectionSize(0, <span class="s14">false</span>);</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// unlock selection 0:</p>
-<p class="p16">a.setEditableSelectionStart(0, <span class="s14">true</span>);</p>
-<p class="p16">a.setEditableSelectionSize(0, <span class="s14">true</span>);</p>
-<p class="p15"><br></p>
-<p class="p16">a.selectionStartTime(0);</p>
-<p class="p16">a.selectionDuration(0);</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">a.setSelectionStart(0, 12345);</p>
-<p class="p16">a.setSelectionSize(0, 12345);</p>
-<p class="p16">a.readSelection.refresh;</p>
-<p class="p16">a.readSelection(16).refresh;<span class="Apple-tab-span">	</span><span class="s15">// in higher resolution</span></p>
-<p class="p18"><span class="s3">a.read.refresh;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// go back to entire file.</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3">a.dataNumSamples;<span class="Apple-tab-span">	</span></span>// visual data have this many points</p>
-<p class="p16">a.data.plot;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">//</span></p>
-<p class="p16">a.setData(a.data.reverse);</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p18"><span class="s3">a.zoom(0.25);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scrolling is normalized</p>
-<p class="p16">a.scrollTo(0.5);<span class="Apple-tab-span">	</span><span class="s15">//</span></p>
-<p class="p16">a.scrollTo(0.6);<span class="Apple-tab-span">	</span><span class="s15">//</span></p>
-<p class="p18"><span class="s3">a.scroll(12);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scroll is in viewFrames.</p>
-<p class="p15"><br></p>
-<p class="p16">a.zoom(4);<span class="Apple-tab-span">	</span></p>
-<p class="p15"><br></p>
-<p class="p16">w.close;</p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCStaticText.html b/Help/GUI/Cocoa-GUI/SCStaticText.html
deleted file mode 100644
index 2e54004..0000000
--- a/Help/GUI/Cocoa-GUI/SCStaticText.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #5f689f}
-span.s4 {color: #6f717e}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.s8 {color: #606060}
-span.s9 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCStaticText<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a view for displaying text</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCStaticTextBase.html"><b>SCStaticTextBase</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">Inherits formatting methods from <a href="SCStaticTextBase.html"><span class="s3">SCStaticTextBase</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s4">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s4">Point</span></a> indicating width at height.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>(<span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s6">StaticText</span>(w, <span class="s6">Rect</span>(10, 10, 200, 20));</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.string = </span>"an instance of String"<span class="s2">;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">)</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p14"><br></p>
-<p class="p15">// basic usage</p>
-<p class="p11">(<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = <span class="s6">StaticText</span>(w, <span class="s6">Rect</span>(10, 10, 200, 20));</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span>a.string = </span>"Rolof's Rolex"<span class="s2">;</span></p>
-<p class="p11">)</p>
-<p class="p14"><br></p>
-<p class="p15">// adjust look , alignment and content</p>
-<p class="p11">a.background=<span class="s6">Color</span>.grey;</p>
-<p class="p11">a.align = <span class="s7">\center</span>;</p>
-<p class="p11">a.font = <span class="s6">Font</span>(<span class="s8">"Monaco"</span>, 11);</p>
-<p class="p11">a.string = <span class="s8">"Your Rolex"</span>;</p>
-<p class="p14"><br></p>
-<p class="p15">// Monitoring values in a synth</p>
-<p class="p11">(</p>
-<p class="p14"><br></p>
-<p class="p11">w = <span class="s6">Window</span>(<span class="s8">"Frequency Monitor"</span>, <span class="s6">Rect</span>(200, <span class="s6">SCWindow</span>.screenBounds.height-200,300,150)).front;</p>
-<p class="p14"><br></p>
-<p class="p11">a = <span class="s6">StaticText</span>(w, <span class="s6">Rect</span>(45, 10, 200, 20)).background_(<span class="s6">Color</span>.rand);</p>
-<p class="p14"><br></p>
-<p class="p12"><span class="s2">a.string = </span>" Current Frequency "<span class="s2">;</span></p>
-<p class="p14"><br></p>
-<p class="p11"><span class="s6">Button</span>.new(w, <span class="s6">Rect</span>(45, 70, 200, 20)).states_([[<span class="s8">"close"</span>,<span class="s6">Color</span>.black,<span class="s6">Color</span>.rand]]).action_({w.close});</p>
-<p class="p14"><br></p>
-<p class="p11">s.waitForBoot({</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>b=<span class="s6">Bus</span>.new(<span class="s7">\control</span>,0,1);</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>q=<span class="s6">SynthDef</span>(<span class="s7">\Docs_FreqMonitor</span>, {<span class="s6">var</span> freq,snd;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq=<span class="s6">LFNoise0</span>.ar(2, 400, 650);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>snd=<span class="s6">SinOsc</span>.ar(freq,0,0.2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(0,snd);</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">Out</span><span class="s2">.kr(b.index,freq); </span>// output the frequency to a control bus</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span>r= </span>Routine<span class="s2">{</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Set the value of the StaticText to the value in the control bus.</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Setting GUI values is asynchronous, so you must use .defer in the system clock.</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Also you must check if the window is still open, since Routine will continue for at least</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// one step after you close the window.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.get( {<span class="s6">arg</span> v; {w.isClosed.not.if{ a.string= <span class="s8">" Current Frequency: "</span>++v.round(0.01)}; }.defer} );</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01.wait;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.loop</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>}.play</p>
-<p class="p11">});</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="s6">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p11">w.onClose={r.stop; q.free; b.free }; <span class="s9">//clean up if the window closes</span></p>
-<p class="p14"><br></p>
-<p class="p11">)</p>
-<p class="p14"><br></p>
-<p class="p15">// dynamic text</p>
-<p class="p14"><br></p>
-<p class="p11">(<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w.view.background=<span class="s6">Color</span>.white;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = <span class="s6">Array</span>.fill(20, {<span class="s6">StaticText</span>(w, <span class="s6">Rect</span>(w.bounds.extent.x.rand, w.bounds.extent.y.rand, 160, 16))</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(<span class="s8">"Rolof's Rolex"</span>.scramble)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.align_(<span class="s7">\center</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.stringColor_(<span class="s6">Color</span>.rand)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.font_(<span class="s6">Font</span>([</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Helvetica-Bold"<span class="s2">,</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Helvetica"<span class="s2">,</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Monaco"<span class="s2">,</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Arial"<span class="s2">,</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Gadget"<span class="s2">,</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"MarkerFelt-Thin"</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>].choose, 11))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>});</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>r = {<span class="s6">inf</span>.do{<span class="s6">|i|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">thisThread</span>.randSeed_(1284);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.do{<span class="s6">|item|</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// setting GUI values is asynchronous, so you must use .defer</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{item.bounds = <span class="s6">Rect</span>(5+w.bounds.extent.x.rand * (cos(i*0.01)).abs,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds.extent.y.rand * sin(i*0.01),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>160, 20)}.defer;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.15.wait;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}}.fork;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w.onClose_({r.stop});</p>
-<p class="p11">)</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCStaticTextBase.html b/Help/GUI/Cocoa-GUI/SCStaticTextBase.html
deleted file mode 100644
index 202b33e..0000000
--- a/Help/GUI/Cocoa-GUI/SCStaticTextBase.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #356f14}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #6d7187}
-span.s3 {text-decoration: underline ; color: #5e648c}
-span.s4 {text-decoration: underline ; color: #5b6291}
-span.s5 {color: #636a99}
-span.s6 {text-decoration: underline ; color: #5d638e}
-span.s7 {color: #3e54c5}
-span.s8 {color: #5461ad}
-span.s9 {color: #505fb1}
-span.s10 {color: #6f7183}
-span.s11 {font: 14.0px Helvetica}
-span.s12 {color: #6f7185}
-span.s13 {color: #000000}
-span.s14 {color: #696f8e}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCStaticTextBase<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>An abstract superclass for classes that store and display objects as strings</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="SCNumberBox.html"><span class="s3">SCNumberBox</span></a> , <a href="SCTextField.html"><span class="s4">SCTextField</span></a><span class="s5">, <a href="SCStaticText.html"><span class="s6">SCStaticText</span></a></span><span class="s6">,</span> <a href="SCDragView.html"><span class="s7">SCDragView</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Users will not normally directly create instances of SCStaticTextBase, but only use it through its subclasses. It provides methods for the storage of objects, and their display as a text string or number. Its subclasses include editable and non-editable displays, such as static text, numbers boxes, or drag and drop objects.</span></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Accessing Instance and Class Variables</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>string</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>string_ (argString)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The displayed <a href="../../Collections/String.html"><span class="s2">String</span></a> of the static text. If the string needs to represent a type other than String, e.g. a Float, then you need to use the <b>object</b> method to set the content.</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argString </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>object</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>object_ (obj)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Allows you to store an object, which is displayed as a string. If <b>setBoth</b>==true (the default), then setting <b>object</b> will automatically set the <b>string</b> as well, using <b>obj</b>.asString(80). Subclasses, e.g. <a href="SCNumberBox.html"><span class="s2">SCNumberBox</span></a> or <a href="SCDragBoth.html"><span class="s8">SCDragBoth</span></a>, us this to display their value as a string.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>obj </b>- Any <a href="../../Core/Object.html"><span class="s9">Object</span></a>. Most likely one which makes sense to display as a string, such as a <a href="../../Math/Float.html"><span class="s2">Float</span></a><span class="s2">.</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setBoth</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setBoth_(arg1)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default is true. See the method description for <b>object </b>above.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Customizing Appearance</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font_ (argFont)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the Font of the static text. Default value is the default font: Font.default .</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argFont </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s10">Font</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>align_ (align)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the alignment of the string.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>align </b>- An instance of <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>. \centered, \left, or \right.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stringColor</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stringColor_ (color)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the color of the displayed String.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Subclassing and Internal Methods</span></b></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed. SCStaticTextBase functions by storing any instance of <a href="../../Core/Object.html"><span class="s7">Object</span></a> in the instance variable, <b>object</b>, and then representing it visually using <b>string</b>. This string can either be directly related to the object or not, depending on the flag, <b>setBoth</b>. By default, <b>object</b> is represented in <b>string</b> using the top level instance method, asString(80). Subclasses can override this.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. See <a href="SCView.html"><span class="s12">SCView</span></a>.</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p11"><span class="s13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s13">, </span>\visible<span class="s13">, </span>\enabled<span class="s13">, </span>\canFocus<span class="s13">, </span>\resize<span class="s13">, </span>\background<span class="s13">, </span>\minWidth<span class="s13">, </span>\maxWidth<span class="s13">, </span>\minHeight<span class="s13">, </span>\maxHeight<span class="s13">, </span>\value<span class="s13">, </span>\font<span class="s13">, </span>\items<span class="s13">, </span>\stringColor<span class="s13"> ]</span></p>
-<p class="p12"><br></p>
-<p class="p4"><b>Examples</b></p>
-<p class="p6">See the help files for subclasses such as <a href="SCStaticText.html"><span class="s14">SCStaticText</span></a> or <a href="SCNumberBox.html"><span class="s14">SCNumberBox</span></a>.</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCStethoscope.html b/Help/GUI/Cocoa-GUI/SCStethoscope.html
deleted file mode 100644
index 616f1b6..0000000
--- a/Help/GUI/Cocoa-GUI/SCStethoscope.html
+++ /dev/null
@@ -1,287 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0922b2}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #8d261b}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p17 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #3e54c5}
-span.s3 {color: #2040df}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {text-decoration: underline ; color: #394eb8}
-span.s7 {color: #62633a}
-span.s8 {color: #0922b2}
-span.s9 {font: 12.0px Helvetica}
-span.s10 {color: #0000bf}
-span.s11 {font: 14.0px Helvetica}
-span.s12 {color: #606060}
-span.s13 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCStethoscope<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a wrapper for a window with an SCScope an control interface</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">A window containing a configurable <a href="SCScope.html"><span class="s3">SCScope</span></a> with an interface to navigate on buses.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4"><b>See also:</b> <a href="SCScope.html"><span class="s5">SCScope</span></a>, <a href="../../ServerArchitecture/Server.html"><span class="s5">Server</span></a></span><span class="s2">, <a href="../../ServerArchitecture/Bus.html"><span class="s6">Bus</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SCStethoscope</b></p>
-<p class="p2"><br></p>
-<p class="p1">the scope window can be controlled by the following keys:</p>
-<p class="p2"><br></p>
-<p class="p1">J<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>one channel back</p>
-<p class="p1">K<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>switch rate (audio vs. control)</p>
-<p class="p1">L<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>one channel forward</p>
-<p class="p2"><br></p>
-<p class="p1">O<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>jump to first hardware output channel and adjust numChannels to hardware</p>
-<p class="p1">I<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>jump to first hardware input channel and adjust numChannels to hardware</p>
-<p class="p2"><br></p>
-<p class="p1">space <span class="Apple-tab-span">	</span>run, if not running anyway.</p>
-<p class="p1">. (period)<span class="Apple-tab-span">	</span>stop.</p>
-<p class="p1">M<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toggle screen size</p>
-<p class="p2"><br></p>
-<p class="p1">+ / -<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>zoom horizontally</p>
-<p class="p1">* / _<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>zoom vertically</p>
-<p class="p1">S<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>change style between parallel and overlay</p>
-<p class="p2"><br></p>
-<p class="p1">shift S <span class="Apple-tab-span">	</span>change style to lissajou (use only with fast computer and small buffer size)</p>
-<p class="p1">shift A<span class="Apple-tab-span">	</span>allocate buffer size so it fills the screen (to next power of two) (this can be dangerous, might crash)</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (server, numChannels, index, bufsize, zoom, rate, view, bufnum)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server </b>- must be <a href="../../ServerArchitecture/Server.html"><span class="s2">Server</span></a>.internal.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels </b>- An integer. Default value is 2..</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- The offset index. An integer. Default is nil.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufsize </b>- The size of the analysis buffer. Default value is 4096. .</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>zoom </b>- Horizontal maginification of the displayed wave. Default is 1.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rate </b>- <span class="s7">\audio</span> or <span class="s7">\control</span>. Default is Audio.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>view </b>- The parent view of the scope. Default is nil. If nil, then it will open its own <a href="SCWindow.html"><span class="s2">SCWindow</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufnum </b>- The id number of the <a href="../../ServerArchitecture/Buffer.html"><span class="s2">Buffer</span></a> to analyze. Default value is nil. If nil, then a <a href="../../ServerArchitecture/Buffer.html"><span class="s2">Buffer</span></a> of size <b>bufSize</b> is allocated.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Server</span>.default = s = <span class="s8">Server</span>.internal</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s8">SinOsc</span>.ar([330,440], 0, 0.4)}.play;</p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SCStethoscope<span class="s4">(s,2);</span></p>
-<p class="p6"><br></p>
-<p class="p5"><b>Creation by Message .scope</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>aServer.scope(numChannels, index, bufsize, zoom, rate)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Opens a scope window for the server, and stores it in the server instance var <b>scopeWindow</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Server</span>.default = s = <span class="s8">Server</span>.internal</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s8">SinOsc</span>.ar([330,440], 0, 0.4)}.play;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.scope;</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>aBus.scope(bufsize, zoom)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Displays a bus in scope, using the Bus's <b>numChannels</b>, <b>index</b>, and <b>rate</b> settings.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">Server</span>.default = s = <span class="s8">Server</span>.internal</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b=<span class="s8">Bus</span>.audio(s,2);</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a={</span><span class="s8">SinOsc</span><span class="s4">.ar([330,440], 0, 0.4)}.play(s,b) </span>//you won't hear this if you only have two channels</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.scope</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.free;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>aFunction.scope(numChannels, outbus, fadeTime, bufsize, zoom)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Plays a function and shows output in scope, returns synth object, like <b>{ }.play</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Server</span>.default = s = <span class="s10">Server</span>.internal</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a={<span class="s10">SinOsc</span>.ar([330,440], 0, 0.4)}.scope;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.free;</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*ugenScopes</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an array of the running ugen scopes.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Server</span>.default = s = <span class="s10">Server</span>.internal</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{[<span class="s10">SinOsc</span>.ar.scope,<span class="s10">WhiteNoise</span>.ar(0.5).scope]*0.1}.scope(2);</p>
-<p class="p15"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s10">SCStethoscope</span><span class="s4">.ugenScopes; </span>// returns the ugen scopes</p>
-<p class="p6"><br></p>
-<p class="p16"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>ugenScopes</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns an array of the running ugen scopes, just like the class method ugenSopes.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numChannels</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numChannels_ (n)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the number of Channels in a scope.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>n </b>- an Integer.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>rate</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>rate_ (argRate)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the rate of a scope.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argRate </b>- \audio or \control.</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>index</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>index_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set the offest index in a scope.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- and Integer.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>size_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the width and height tof the scope window.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer (the iwndow is square).</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>window</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the parent <a href="SCWindow.html"><span class="s3">SCWindow</span></a> of the scope .</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>bufsize</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The size of the buffer.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>server</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the server of SCStethoscope</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><b>Controlling the Scope</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>quit</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Closes the window, and cleans up synths and buffer.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>toggleSize</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Toggle between size 500 and 212.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>zoom_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>xZoom_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Zoom the horizontal value by factor <b>val</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of Float.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>yZoom_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Zoom the vertical value by factor <b>val</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An instance of Float.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>style_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- 1 = Separate channels, 2 = overlayed channels, 3= lissajou (use only with fast computer and small buffer size)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s11"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*tileBounds</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A utility used by Ugen : scope to tile scope windows.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*defaultServer</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>SCStethoscope's default server.<b> </b>Returns Server.internal</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*isValidServer (aServer)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Tests if a server is a valid server. Returns a n instanc of Boolean;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aServer </b>- An instance of <a href="../../ServerArchitecture/Server.html"><span class="s3">Server</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyDown (char)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>spec</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setProperties (numChannels, index, bufsize, zoom, rate)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>allocBuffer (argbufsize, argbufnum)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>xZoom</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>yZoom</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>updateColors</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>switchRate</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>toInputBus</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>toOutputBus</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>adjustBufferSize</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>run</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>free</b></p>
-<p class="p6"><br></p>
-<p class="p16"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p18"><br></p>
-<p class="p19">(</p>
-<p class="p19"><span class="s10">Server</span>.default = <span class="s10">Server</span>.internal;</p>
-<p class="p19">s = <span class="s10">Server</span>.default;</p>
-<p class="p19">s.boot;</p>
-<p class="p19">)</p>
-<p class="p19">(</p>
-<p class="p19">{</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="s10">SinOsc</span>.ar([225, 450, 900], 0, 0.2)</p>
-<p class="p19"><span class="Apple-tab-span">	</span>+ <span class="s10">LPF</span>.ar(</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">LFPulse</span>.ar(226 * [1, 2, 5],[0,0.1,0.1],0.2, 0.2),</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">MouseX</span>.kr(20, 10000, 1)</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p19">}.scope;</p>
-<p class="p19">)</p>
-<p class="p18"><br></p>
-<p class="p20">// server.scope only changes the properies explicitly given:</p>
-<p class="p18"><br></p>
-<p class="p19">s.scope(numChannels:5);</p>
-<p class="p19">s.scope(index:12);</p>
-<p class="p19">s.scope(zoom:4);</p>
-<p class="p19">s.scope(index:0);</p>
-<p class="p18"><br></p>
-<p class="p19">s.scopeWindow.size = 600;</p>
-<p class="p19">s.scopeWindow.size = 222;</p>
-<p class="p18"><br></p>
-<p class="p20">// scoping buses:</p>
-<p class="p18"><br></p>
-<p class="p19">a = <span class="s10">Bus</span>.audio(s, 4);</p>
-<p class="p19">{ <span class="s10">WhiteNoise</span>.ar(0.2.dup(4)) }.play(s, a);</p>
-<p class="p18"><br></p>
-<p class="p19">a.scope;</p>
-<p class="p18"><br></p>
-<p class="p19">c = <span class="s10">Bus</span>.control(s, 3);</p>
-<p class="p19">{ <span class="s10">WhiteNoise</span>.kr(1.dup(4) * <span class="s10">MouseX</span>.kr) }.play(s, c);</p>
-<p class="p18"><br></p>
-<p class="p19">c.scope;</p>
-<p class="p18"><br></p>
-<p class="p20">// note that scoping control rate buses shows block size interpolation (this is due to the</p>
-<p class="p20">// fact that ScopeOut.kr doesn't work yet.)</p>
-<p class="p3"><br></p>
-<p class="p1"><b>external use: you can pass your own view in to add a stethoscope to it;</b></p>
-<p class="p3"><br></p>
-<p class="p19">w = <span class="s10">Window</span>.new(<span class="s12">"my own scope"</span>, <span class="s10">Rect</span>(20, 20, 400, 500));</p>
-<p class="p19">w.view.decorator = <span class="s10">FlowLayout</span>(w.view.bounds);</p>
-<p class="p19">c = <span class="s10">Stethoscope</span>.new(s, view:w.view);</p>
-<p class="p19">w.onClose = { c.free }; <span class="s13">// don't forget this</span></p>
-<p class="p19">w.front;</p>
-<p class="p18"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCTabletView.html b/Help/GUI/Cocoa-GUI/SCTabletView.html
deleted file mode 100644
index ee7d94f..0000000
--- a/Help/GUI/Cocoa-GUI/SCTabletView.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #606060}
-span.s9 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCTabletView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a view that receives extended wacom tablet data</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">An otherwise featureless view that receives extended wacom tablet data. It can also be used with a normal mouse but with less resolution.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SC2DTabletSlider.html"><span class="s4">SC2DTabletSlider</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Concerning SCTabletView</b></p>
-<p class="p2"><br></p>
-<p class="p1">Drag and drop returns and accepts a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s6">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s6">Point</span></a> indicating width at height.</p>
-<p class="p6"><br></p>
-<p class="p10"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseDown (x, y, pressure, tiltx, tilty, deviceID, buttonNumber, clickCount, absoluteZ, rotation)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseUp (x, y, pressure, tiltx, tilty, deviceID, buttonNumber, clickCount, absoluteZ, rotation)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doAction (x, y, pressure, tiltx, tilty, deviceID, buttonNumber, clickCount, absoluteZ, rotation)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Each of the three actions are passed the following wacom tablet values:</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>view - </b>the view</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>x - </b>subpixel location in view</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>y - </b>subpixel location in view</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>pressure - </b>0..1</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>tiltX : </b>-1 (max. left) ... +1 (max. right)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>tiltY : </b>-1 (max. down) ... +1 (max. up)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>deviceID - </b>will be used to look up if the tip or the eraser is used</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>buttonNumber - </b>0 left, 1 right, 2 middle wheel click</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>clickCount - </b>double click, triple click ...</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>most relevant for the mouseDown, but still valid for the dragged and mouseUp</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>absoluteZ</b> - the wheel on the side of some mice</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rotation</b> - in degrees, only on the 4d mice</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s7">Window</span>.new;</p>
-<p class="p11">t = <span class="s7">TabletView</span>(w,<span class="s7">Rect</span>(40,40,300,300));</p>
-<p class="p11">t.background = <span class="s7">Color</span>.white;</p>
-<p class="p11">w.front;</p>
-<p class="p3"><br></p>
-<p class="p11">t.mouseDownAction = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount,absoluteZ,rotation;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>[<span class="s8">"down"</span>,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount,absoluteZ,rotation].postln;</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">t.action = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount,absoluteZ,rotation;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>[<span class="s8">"dragging"</span>, x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount,absoluteZ,rotation].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>t.background = <span class="s7">Color</span>(x / 300,y / 300,tiltx,pressure);</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">t.mouseUpAction = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount,absoluteZ,rotation;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>[<span class="s8">"up"</span>,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount,absoluteZ,rotation].postln;</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p12">//Assign the same function to each action</p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s7">Window</span>.new;</p>
-<p class="p11">t = <span class="s7">TabletView</span>(w,<span class="s7">Rect</span>(40,40,300,300));</p>
-<p class="p11">t.background = <span class="s7">Color</span>.white;</p>
-<p class="p11">w.front;</p>
-<p class="p3"><br></p>
-<p class="p11">f = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>[x,y,pressure,tiltx,tilty,deviceID, buttonNumber,clickCount].postln;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>t.background = <span class="s7">Color</span>(x / 300,y / 300,tiltx,pressure);</p>
-<p class="p11">};</p>
-<p class="p3"><br></p>
-<p class="p11">t.mouseDownAction = f;</p>
-<p class="p11">t.action = f;</p>
-<p class="p11">t.mouseUpAction = f;</p>
-<p class="p3"><br></p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p12">// sound example</p>
-<p class="p3"><br></p>
-<p class="p11">s.boot</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p11"><span class="s7">SynthDef</span>(<span class="s8">"help-2DTabletSlider"</span>,{ <span class="s7">arg</span> freq=440,int1=5,int2 = -5,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ffreqInterval=0,rq=0.4,gate=0.0;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> p,c,d,f;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>c=<span class="s7">LFNoise1</span>.kr(0.1,0.45,0.55);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>d=<span class="s7">LFNoise1</span>.kr(0.1,0.45,0.55);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f=<span class="s7">LFNoise1</span>.kr(0.1,2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>p=<span class="s7">Pulse</span>.ar([ freq * int1.midiratio + f , freq, freq * int2.midiratio - f],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[c,d,c],0.2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(0,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">RLPF</span>.ar(<span class="s7">Mix</span>.ar(p),freq * ffreqInterval.midiratio,rq)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s7">EnvGen</span>.kr(<span class="s7">Env</span>.adsr, gate, gate)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p11">},[0.1,0.1,0.1,0.1,0.1,<span class="s7">nil</span>]).send(s);</p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> w, v,freq,int,synth;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>synth = </span><span class="s7">Synth</span><span class="s3">(</span>"help-2DTabletSlider"<span class="s3">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>w = <span class="s7">Window</span>.new.front;</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>freq = <span class="s7">ControlSpec</span>(100,3000,<span class="s9">\exp</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>int = <span class="s7">ControlSpec</span>(-48,48,<span class="s9">\linear</span>,1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>v = <span class="s7">TabletView</span>(w,<span class="s7">Rect</span>(10,10,380,380));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.background = <span class="s7">Color</span>.blue.alpha_(0.2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.action = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.set(<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\int1</span>, int.map(x),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\int2</span>, int.map(y),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\ffreqInterval</span>, int.map(pressure),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\gate</span>, pressure.postln</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.mouseDownAction = { <span class="s7">arg</span> view,x,y,pressure;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.set(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\freq</span> , rrand(30,80).midicps,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">\gate</span>, pressure.postln</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.mouseUpAction = { <span class="s7">arg</span> view,x,y,pressure;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.set( <span class="s9">\gate</span>, 0.postln )</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">//An example using crucial library</p>
-<p class="p11">(</p>
-<p class="p11"><span class="s7">Instr</span>([<span class="s9">\minimoog</span>,<span class="s9">\loose</span>],{ <span class="s7">arg</span> freq=440,int1=5,int2 = -5,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ffreqInterval=0,rq=0.4,gate=0.0;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> p,c,d,f;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>c=<span class="s7">LFNoise1</span>.kr(0.1,0.45,0.55);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>d=<span class="s7">LFNoise1</span>.kr(0.1,0.45,0.55);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>f=<span class="s7">LFNoise1</span>.kr(0.1,2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>p=<span class="s7">Pulse</span>.ar([ freq * int1.midiratio + f , freq, freq * int2.midiratio - f],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[c,d,c],0.2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">RLPF</span>.ar(<span class="s7">Mix</span>.ar(p),freq * ffreqInterval.midiratio,rq)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s7">EnvGen</span>.kr(<span class="s7">Env</span>.adsr, gate, <span class="s7">Latch</span>.kr(gate,gate))</p>
-<p class="p3"><br></p>
-<p class="p11">},#[</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span></span>nil<span class="s3">,</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>[[-48,48,<span class="s9">\linear</span>,1]],</p>
-<p class="p11"><span class="Apple-tab-span">	</span>[[-48,48,<span class="s9">\linear</span>,1]],</p>
-<p class="p11"><span class="Apple-tab-span">	</span>[[-48,48,<span class="s9">\linear</span>,1]]</p>
-<p class="p11">]);</p>
-<p class="p3"><br></p>
-<p class="p11">p = <span class="s7">Patch</span>.new([ <span class="s9">'minimoog'</span>, <span class="s9">'loose'</span> ],[</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span></span>nil<span class="s3">,</span>nil<span class="s3">,</span>nil<span class="s3">,</span>nil<span class="s3">,</span>nil<span class="s3">,</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s7">KrNumberEditor</span><span class="s3">(0.0,</span><span class="s9">\gate</span><span class="s3">) </span>// override the default control</p>
-<p class="p11">]);</p>
-<p class="p3"><br></p>
-<p class="p14">Sheet<span class="s3">({ </span>arg<span class="s3"> f;</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> v,freq,int;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>freq = <span class="s7">ControlSpec</span>(100,3000,<span class="s9">\exp</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>int = [-48,48,<span class="s9">\linear</span>,1].asSpec;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>p.topGui(f);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v = <span class="s7">TabletView</span>(f,<span class="s7">Rect</span>(0,0,200,200));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.background = <span class="s7">Color</span>.white;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.action = { <span class="s7">arg</span> view,x,y,pressure,tiltx,tilty;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.args.at(1).value_( int.map( x / 200 ) ).changed;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.args.at(2).value_( int.map( y / 200 ) ).changed;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.args.at(3).value_( int.map( pressure ) ).changed;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.mouseDownAction = { <span class="s7">arg</span> view,x,y,pressure;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.args.at(0).value_( rrand(30,80).midicps ).changed;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.args.at(5).value_( pressure ).changed;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><span class="Apple-tab-span">	</span>v.mouseUpAction = { <span class="s7">arg</span> view,x,y,pressure;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.args.at(5).value_( 0.0 ).changed;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11">});</p>
-<p class="p3"><br></p>
-<p class="p11">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCTextField.html b/Help/GUI/Cocoa-GUI/SCTextField.html
deleted file mode 100644
index de32c42..0000000
--- a/Help/GUI/Cocoa-GUI/SCTextField.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #6c7188}
-span.s3 {color: #6b718a}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {color: #5a66a4}
-span.s7 {color: #485cba}
-span.s8 {color: #6f717f}
-span.s9 {font: 9.0px Monaco}
-span.s10 {color: #0016bd}
-span.s11 {color: #6f7182}
-span.s12 {font: 14.0px Helvetica}
-span.s13 {color: #606060}
-span.s14 {color: #2b7000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCTextField<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a text field for entering text</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a><b> : </b><a href="SCStaticTextBase.html"><span class="s3"><b>SCStaticTextBase</b></span></a><b> : </b><a href="SCNumberBox.html"><span class="s2"><b>SCNumberBox</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4"><b>See also:</b> <a href="SCStaticText.html"><span class="s5">SCStaticText</span></a>, <a href="SCTextView.html"><span class="s5">SCTextView</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding SCTextField</b></p>
-<p class="p2"><br></p>
-<p class="p1">Does not allow copying and pasting. Does not handle composed character sequences ( etc. ). Use <a href="SCTextView.html"><span class="s2">SCTextView</span></a> for these features. Hit delete before typing to clear the text field. Drag and drop accepts a any <a href="../../Core/Object.html"><span class="s6">Object</span></a> and recieves it <b>asString</b>. Inherits formatting methods from <a href="SCStaticTextBase.html"><span class="s7">SCStaticTextBase</span></a>. If you drag a file from the finder onto an SCTextView, it will display the file path.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s8">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s8">Point</span></a> indicating width at height.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s10">Window</span>.new.front;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s10">TextField</span>(w, <span class="s10">Rect</span>(10, 10, 150, 20));</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.string = </span>"some default text"<span class="s4">;</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.action = {<span class="s10">arg</span> field; field.value.postln; };</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p10"><br></p>
-<p class="p11"><b>Accessing Instance and Class Variables</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>string_ (s)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the <a href="../../Collections/String.html"><span class="s11">String</span></a> of the text field.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>s </b>- An instance of <a href="../../Collections/String.html"><span class="s11">String</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p11"><b>Subclassing and Internal Methods</b></p>
-<p class="p12"><br></p>
-<p class="p5"><span class="s12"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*viewClass</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the view class thus determining which primitive is called.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction (char, modifiers, unicode)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default keydown actions are:</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>comment</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\r <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>valueAction on the string</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\n, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>valueAction on the string<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.asAscii,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>valueAction on the string<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(enter key or cmd-C on Mac OSX )</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>127.asAscii<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clears the <b>keyString</b> (See <a href="SCNumberBox.html"><span class="s3">SCNumberBox</span></a>)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(delete key)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if no text has been typed yet. Otherwise</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>deletes the last typed character.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>all others<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>adds character to the <b>keyString</b> (See <a href="SCNumberBox.html"><span class="s3">SCNumberBox</span></a>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The method called by default when initiating a drag <b>from</b> an SCTextView. Returns <b>string</b>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>defaultCanReceiveDrag</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The method called by default when attempting to place a drag in this object. By default, SCTextView will respond only to drags containing objects that respond to the method, <b>asString</b> (basically, all objects, since <a href="../../Core/Object.html"><span class="s3">Object</span></a> does).</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>defaultReceiveDrag</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The default method called when a drag has been recieved. Performs <b>valueAction_()</b> using <b>currentDrag</b> as an argument.</p>
-<p class="p10"><br></p>
-<p class="p11"><b>Examples</b></p>
-<p class="p13"><br></p>
-<p class="p8">(</p>
-<p class="p8">w = <span class="s10">Window</span>.new.front;</p>
-<p class="p8">a = <span class="s10">TextField</span>(w, <span class="s10">Rect</span>(10, 10, 150, 20));</p>
-<p class="p8">a.string = <span class="s13">"hi there"</span>;</p>
-<p class="p8">a.action = {<span class="s10">arg</span> field; field.value.postln; };</p>
-<p class="p8">)</p>
-<p class="p13"><br></p>
-<p class="p14">// does not do the action</p>
-<p class="p8">a.value = <span class="s13">"yo"</span>;</p>
-<p class="p8">a.string = <span class="s13">"oy"</span>;</p>
-<p class="p13"><br></p>
-<p class="p14"><span class="s4">a.valueAction_(</span><span class="s13">"this is not a pipe"</span><span class="s4">); </span>//does the action, if the value has changed</p>
-<p class="p14"><span class="s4">a.doAction; </span>//evaluates the action with the content of the text field as an argument</p>
-<p class="p13"><br></p>
-<p class="p8">a.background_(<span class="s10">Color</span>.grey);</p>
-<p class="p8">a.stringColor_(<span class="s10">Color</span>.white);</p>
-<p class="p8">a.align_(<span class="s14">\center</span>);</p>
-<p class="p13"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCTextView.html b/Help/GUI/Cocoa-GUI/SCTextView.html
deleted file mode 100644
index 10a6ec0..0000000
--- a/Help/GUI/Cocoa-GUI/SCTextView.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0b15e8}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a81914}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0910ba}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #6c7189}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #5d66a3}
-span.s6 {color: #6f717c}
-span.s7 {color: #0910ba}
-span.s8 {color: #6f7180}
-span.s9 {font: 9.0px Monaco}
-span.s10 {font: 14.0px Helvetica}
-span.s11 {color: #606060}
-span.s12 {color: #a81914}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCTextView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a view in which to display and edit text or code</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>See also:</b> <a href="SCStaticText.html"><span class="s4">SCStaticText</span></a>, <a href="SCTextField.html"><span class="s4">SCTextField</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding SCTextView</b></p>
-<p class="p2"><br></p>
-<p class="p1">While SCTextView allows you to load and display formatted text, and while it understands rtf or html markup, you cannot save formatted text currently. You only have acces to the text-content of the view as a <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">By default, SCTextView will recieve drags containing any <a href="../../Core/Object.html"><span class="s5">Object</span></a>, and insert them into the text <b>asString</b>. If you drag a file from the finder onto an SCTextView, it will display the file path in quotation marks.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s6">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s6">Point</span></a> indicating width at height.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s7">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>t = <span class="s7">TextView</span>(w.asView,<span class="s7">Rect</span>(10,10, 380,200))</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.focus(<span class="s7">true</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Accessing Instance and Class Variables</b></p>
-<p class="p13"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>string</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>string_ (str)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The displayed content of the SCView, as a string. For more precise control of the string, see <b>setString</b> below.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>str </b>- An instance of <a href="../../Collections/String.html"><span class="s8">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>open (path)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Opens a file from <b>path. </b>This will interpret rtf and html for display, but you cannot save formatting currently.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>selectedString</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the text currently selected with the cursor as a String.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>selectionStart</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the start of the current selection as an integer.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>selectionSize</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the size of the current selection as an integer.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span></span><b>usesTabToFocusNextView_(bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Default is true. If false, then hitting tab will write a tab in the text view, rathern than jumping to the next view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s9"><span class="Apple-tab-span">	</span></span><b>enterInterpretsSelection</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>enterInterpretsSelection_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines if a selection can be interpreted with the cmd-enter or ctrl-c . Default is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p9"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>enabled_ (bool)</b> same as <b>editable_(bool)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>editable</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>editable_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Without setting <b>editable, </b>it returns nil, though the content will be editable. However, you can explicitly set <b>editable</b> to true or false, and it will make the view editable or otherwise.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Customizing Appearance and Changing Content</b></p>
-<p class="p13"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font_ (argFont)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the <b>font</b> variable of the text view, and changes the Font of the entire text in the view. Default value is nil. If you loaded a text with <b>open</b>, then the font will still be nil. Changing the font of the content using OSX's cmd-T text formatter will not change the <b>font</b> variable. For more precise control of the font, see <b>setFont</b> below.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argFont</b> - An instance of <a href="../Main-GUI/Font.html"><span class="s6">Font</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stringColor</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>stringColor_ (color)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the <b>stringColor</b> variable of the text view, and changes the stringColor of the entire text in the view. Default value is nil. If you loaded a text with <b>open</b>, then the stringColor will be nil. Changing the stringColor of the content using OSX's cmd-T text formatter will not change the <b>font</b> variable. For more precise control of the string color, see <b>setStringColor</b> below.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An Instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>autohidesScrollers_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Overrides <b>hasHorizontalScroller_ and hasVerticalScroller_ . </b>Default is false.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>hasHorizontalScroller_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Is overriden by <b>autohidesScrollers_. </b>Default is false.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>hasVerticalScroller_ (bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Is overriden by <b>autohidesScrollers_.</b> Default is false.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setStringColor (color, rangeStart, rangeSize)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangeStart </b>- The beginning of a range of text in which to change the color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangeSize </b>- The length of a range of text in which to change the color.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setFont (font, rangestart, rangesize)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangeStart </b>- The beginning of a range of text in which to change the font.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangeSize </b>- The length of a range of text in which to change the font.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setString (string, rangestart, rangesize)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>string </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangeStart </b>- The beginning of a range of text in which to change the content.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rangeSize </b>- The length of a range of text in which to change the content.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>syntaxColorize</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Runs the default syntax colorizer over the contents of the TextView.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Subclassing and Internal Methods</b></p>
-<p class="p6"><span class="s10"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mouseUp (x, y, modifiers, buttonNumber, clickCount, clickPos)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Normally not called directly. Used by the primitive.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>selectedString_ (str)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Normally not called directly.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p11"><br></p>
-<p class="p10">(</p>
-<p class="p10">w = <span class="s7">Window</span>.new(<span class="s11">"Text View Example"</span>,<span class="s7">Rect</span>(100,<span class="s7">Window</span>.screenBounds.height-400, 520,300)).front;</p>
-<p class="p10">t = <span class="s7">TextView</span>(w.asView,<span class="s7">Rect</span>(10,10, 500,200))</p>
-<p class="p10"><span class="Apple-tab-span">	</span>.focus(<span class="s7">true</span>);</p>
-<p class="p10">)</p>
-<p class="p11"><br></p>
-<p class="p14">// Using the Window you just created, try these in succession, and test how the text view responds</p>
-<p class="p15"><span class="s3">t.mouseUpAction_{</span>|it, x, y, modifiers, buttonNumber, clickCount, pos|<span class="s3"> [pos].postln};</span></p>
-<p class="p10">t.hasVerticalScroller_(<span class="s7">true</span>);</p>
-<p class="p10">t.hasHorizontalScroller_(<span class="s7">true</span>);</p>
-<p class="p10">t.autohidesScrollers_(<span class="s7">true</span>);</p>
-<p class="p11"><br></p>
-<p class="p16"><span class="s3">t.open(</span>"Help/GUI/Main-GUI/Button.html"<span class="s3">); </span><span class="s12">// load an html file</span></p>
-<p class="p11"><br></p>
-<p class="p14">// selective editing and formatting</p>
-<p class="p10">t.setStringColor (<span class="s7">Color</span>.red, 5, 220);</p>
-<p class="p10">t.setFont (<span class="s7">Font</span>(<span class="s11">"Courier"</span>,12), 5, 120);</p>
-<p class="p16"><span class="s3">t.setString (</span>"\nA replacement String\n"<span class="s3">, 12, 120);</span></p>
-<p class="p11"><br></p>
-<p class="p14">// compare with these methods, which change everything</p>
-<p class="p10">t.font_(<span class="s7">Font</span>(<span class="s11">"Courier"</span>,14));</p>
-<p class="p10">t.stringColor_(<span class="s7">Color</span>.blue);</p>
-<p class="p11"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCTopView.html b/Help/GUI/Cocoa-GUI/SCTopView.html
deleted file mode 100644
index 2bc213e..0000000
--- a/Help/GUI/Cocoa-GUI/SCTopView.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #2946d8}
-span.s4 {text-decoration: underline}
-span.s5 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCTopView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>the top view in an SCWindow</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: Object : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCContainerView.html"><b>SCContainerView</b></a><b> : </b><a href="SCCompositeView.html"><b>SCCompositeView</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">Normally, you do not create this view manually. SCTopView is automatically placed </span>into an <a href="SCWindow.html"><span class="s3">SCWindow</span></a> as its top view, unless <b>scroll</b> is set to true upon SCWindow creation, in which case a SCScrollTopView is used. </span>SCTopView is different from other container views, in that it can accept </span>drags. </span>This is mainly to support the interface builder GUI (hit Cmd-shift-N).</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="SCWindow.html"><span class="s4">SCWindow</span></a>, <a href="SCScrollTopView.html"><span class="s4">SCScrollTopView</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Accessing Instance and Class Variables</b><span class="s5"><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>findWindow</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the parent window of the SCTopView.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Subclassing and Internal Methods</span></b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>handleKeyModifiersChangedBubbling (view, modifiers)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by <b>keyModifiersChanged,</b> </span>and either evaluated the <b>keyModifiersChangedAction</b>, or bubbles up to the parent view, which may then respond.</span></p>
-<p class="p5"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>handleKeyDownBubbling (view, char, modifiers, unicode, keycode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>handleKeyUpBubbling (view, char, modifiers, unicode, keycode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by <b>keyDown</b> or <b>keyUp,</b> </span>and either evaluated the key actions, or bubbles up to the parent view, which may then respond.</span></p>
-<p class="p5"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>canReceiveDrag</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by the primitive. Calls <b>beginDragAction </b>or<b> defaultGetDrag</b>, depending on whether <b>beginDragAction</b> is nil.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>defaultReceiveDrag (x, y)</b></p>
-<p class="p9"><br></p>
-<p class="p6"><b>Interface Builder Methods</span></b></p>
-<p class="p5"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>constructionGrid_ (point)</b></p>
-<p class="p5"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>constructionGrid</b></p>
-<p class="p5"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>enableConstructionGrid_ (flag)</b></p>
-<p class="p5"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>enableConstructionGrid</b></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCUserView.html b/Help/GUI/Cocoa-GUI/SCUserView.html
deleted file mode 100644
index 73eb92b..0000000
--- a/Help/GUI/Cocoa-GUI/SCUserView.html
+++ /dev/null
@@ -1,467 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002fb1}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {text-decoration: underline ; color: #002fb1}
-span.s6 {color: #0036f4}
-span.s7 {font: 14.0px Helvetica}
-span.s8 {text-decoration: underline ; color: #001bec}
-span.s9 {text-decoration: underline ; color: #000000}
-span.s10 {color: #0000bf}
-span.s11 {color: #007300}
-span.s12 {color: #606060}
-span.s13 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCUserView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>user-definable view</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="SCView.html"><span class="s2"><b>SCView</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">SCUserView is a user-definable View intended mainly for use with Pen and drawHooks. It is also good for making custom buttons or other gui interfaces and displays. Thus anything you can draw with the methods of <a href="SCPen.html"><span class="s2">Pen</span></a>, combined with mouse tracking, can be used to create a vast variety of interfaces and displays. When a view is refreshed, either maunually, or triggered by a refresh of the parent view, drawFunc is evaluated. Using <b>refreshInRect </b>constrains the receiver's refresh area to the rectangle passed in a Rect (see <a href="SCView.html"><span class="s2">SCView</span></a>).</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also: </b><a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a><b>,</b> <a href="SCWindow.html"><span class="s5">SCWindow</span></a>, <a href="SCPen.html"><span class="s5">Pen</span></a>, <a href="../GUI-Tools/Color.html"><span class="s5">Color</span></a>, and <a href="../../Collections/String.html"><span class="s5">String</span></a> <a href="SCUserViewSubclassing/SCUserView-Subclassing.html"><span class="s4">SCUserView-Subclassing</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> indicating width at height.</p>
-<p class="p6"><br></p>
-<p class="p10"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawFunc_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>drawFunc</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the function which should be evaluated if the view is refreshed. This happens every time the view or the whole window is refreshed (manually by calling SCView:refresh, SCWindow:refresh or e.g. by selecting the view or resizing the window).</p>
-<p class="p7">.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a>. Default value is nil. Refreshing passes the instance of SCUserView itself as the first argument to the function.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>clearOnRefresh</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>clearOnRefresh_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines whether the drawn content of the view is cleared on refresh.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default value is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>drawingEnabled</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>drawingEnabled_(bool)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Determines whether to execute the draw function or not</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default value is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>animate_(bool)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Determines whether the view should refresh itself internally at a constant frame rate or not.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Use thisProcess.setDeferredTaskInterval(1/fps) to change this global frame rate. The default is 60fps.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default value is false.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>frame</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>An <a href="../../Math/Integer.html"><span class="s6">Integer</span></a> counter that increases by one each time the view is redrawn. Useful for driving animation.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>frameRate</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A <a href="../../Math/Float.html"><span class="s6">Float</span></a> that represents the current average frame rate. Useful for benchmarking while animating. If this value drops below 60, it is an indication of that the current drawFunc is heavy for the program to execute.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>draw</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Evaluates the draw function, passing the instance of SCUserView itself as the first argument to the function</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>clearDrawing</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>If <b>clearOnRefresh</b> is set to false, then you can use this to manually clear the drawing (you must refesh in order for it to show)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Deprecated</b></p>
-<p class="p12"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mousePosition</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Deprecated</b>. R the relative position of the mouse cklick as a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed. For a Tutorial on how to subclass SCUserView to make your own custom GUI Widgets, see <a href="SCUserViewSubclassing/SCUserView-Subclassing.html"><span class="s2">SCUserView-Subclassing</span></a></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>init (argParent, argBounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> indicating width at height.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyDownFunc</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyDownFunc_ (action)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Deprecated. Use <b>keyDownAction</b> instead. See <a href="SCView.html"><span class="s2">SCView</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseDownFunc</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseDownFunc_ (action)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Deprecated. Use <b>mouseDownAction</b> instead. See <a href="SCView.html"><span class="s2">SCView</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseMoveFunc</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseMoveFunc_ (action)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Deprecated. Use <b>mouseMoveAction</b> instead. See <a href="SCView.html"><span class="s2">SCView</span></a>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseUpFunc</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseUpFunc_ (action)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Deprecated. Use <b>mouseUpAction</b> instead. See <a href="SCView.html"><span class="s2">SCView</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p13"><br></p>
-<p class="p1"><span class="s8"><a href="../GUI-Overview.html">GUI<span class="s9">-</span><span class="s4">Overview</span></a></span> contains an elobarate example on how to make a gui widget with <span class="s2">SCUserView</span> using interface level coding. <span class="s2">For</span> a <span class="s2">Tutorial</span> on how to write a subclass of <span class="s2">SCUserView</span> to make your own custom <span class="s2">GUI</span> <span class="s2">Widgets</span>, see <a href="SCUserViewSubclassing/SCUserView-Subclassing.html"><span class="s2">SCUserView</span><span class="s5">-</span><span class="s2">Subclassing</span></a></p>
-<p class="p12"><br></p>
-<p class="p14">// Basic Usage. Resize the window to refresh the drawing. Or use mouse click.</p>
-<p class="p15"><br></p>
-<p class="p16">(<span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>w=<span class="s10">Window</span>.new;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>v=<span class="s10">UserView</span>(w, w.view.bounds.insetBy(50,50));</p>
-<p class="p16"><span class="Apple-tab-span">	</span>v.background_(<span class="s10">Color</span>.rand);</p>
-<p class="p16"><span class="Apple-tab-span">	</span>v.drawFunc={<span class="s10">|uview|</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.moveTo(0 at uview.bounds.height.rand);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.lineTo(uview.bounds.width at uview.bounds.height.rand);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.stroke;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span>v.mouseDownAction={v.refresh};</p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14">// Coordinates are relative to the SCUserView</p>
-<p class="p14">// Try resizing the Window.</p>
-<p class="p15"><br></p>
-<p class="p16">(<span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">var</span> func;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>func = {<span class="s10">|me|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.use{</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Color</span>.red(rrand(0.0, 1), rrand(0.0, 0.5)).set;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.addArc((400.exprand(2))@(100.rand), rrand(10, 100), 2pi.rand, pi);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.perform([<span class="s11">\stroke</span>, <span class="s11">\fill</span>].choose);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s3"><span class="Apple-tab-span">	</span>w = </span><span class="s10">SCWindow</span><span class="s3">.new(</span>"DrawFunc Examples"<span class="s3">).front;</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.view.background_(<span class="s10">Color</span>.white);</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>3.do{<span class="s10">|i|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s10">SCUserView</span>(w, <span class="s10">Rect</span>(20+(i*120), 100, 100, 100))</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.drawFunc_(func);</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.resize=3; </span>// the func coordinates ar valid even though the view move on resize</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.background_(<span class="s10">Color</span>.rand);</p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14">// Mouse Tracking</p>
-<p class="p14">// Set the function which should be evaluated if the mouse is at the end of tracking (mouse-up).</p>
-<p class="p14">// This function will be passed four arguments: theView, x coordinate, y coordinate, and keyboard modifiers.</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16">(</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">var</span> drawFunc, mouseDownFunc, mouseUpFunc, mouseMoveFunc, sat = 0, startX;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>drawFunc = {<span class="s10">|me|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.use{</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Color</span>.red(rrand(0.0, 1), rrand(0.0, 0.5)).set;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.addArc((400.exprand(2))@(100.rand), rrand(10, 100), 2pi.rand, pi);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.perform([<span class="s11">\stroke</span>, <span class="s11">\fill</span>].choose);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>mouseDownFunc = {<span class="s10">|me, x, y, mod|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>startX = x;</p>
-<p class="p17"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>postf(</span>"begin path: x=% realtive mouse coordinates:%\n"<span class="s3">,startX, x at y);</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>mouseUpFunc = {<span class="s10">|me, x, y, mod|</span></p>
-<p class="p17"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>postf(</span>"end path: (startX-x)==% mouse coordinates:%\n"<span class="s3">,(startX-x), x at y);</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>mouseMoveFunc = {<span class="s10">|me, x, y, mod|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sat = ((startX-x)/100);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(x at y).postln;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>me.refresh;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>w = <span class="s10">SCWindow</span>.new.front;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.view.background_(<span class="s10">Color</span>.white);</p>
-<p class="p16"><span class="Apple-tab-span">	</span>3.do{<span class="s10">|i|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s10">SCUserView</span>(w, <span class="s10">Rect</span>(20+(i*120), 100, 100, 100));</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.background_(<span class="s10">Color</span>.rand);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.drawFunc = drawFunc;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.mouseDownAction = mouseDownFunc;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.mouseUpAction = mouseUpFunc;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.mouseMoveAction = mouseMoveFunc;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14">// Prevent redrawing:</p>
-<p class="p15"><br></p>
-<p class="p16">(<span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">var</span> func, views;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>func = {<span class="s10">|me|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.use{</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do{</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Color</span>.red(rrand(0.0, 1), rrand(0.0, 0.5)).set;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.addArc((400.exprand(2))@(100.rand), rrand(10, 100), 2pi.rand, pi);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.perform([<span class="s11">\stroke</span>, <span class="s11">\fill</span>].choose);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s3"><span class="Apple-tab-span">	</span>w = </span><span class="s10">SCWindow</span><span class="s3">.new(</span>"DrawFunc Examples"<span class="s3">).front;</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.view.background_(<span class="s10">Color</span>.white);</p>
-<p class="p16"><span class="Apple-tab-span">	</span>views = {<span class="s10">|i|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s10">SCUserView</span>(w, <span class="s10">Rect</span>(20+(i*120), 100, 100, 100));</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.drawFunc = func;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.clearOnRefresh_(<span class="s10">false</span>);</p>
-<p class="p16"><span class="Apple-tab-span">	</span>} ! 3;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>{views.do{<span class="s10">|v|</span> v.drawFunc = <span class="s10">nil</span>}}.defer(0.4);</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14">// Use the mouse to draw on the view</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">var</span> w, txt, tmppoints, all;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>tmppoints = [];</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>w = <span class="s10">SCWindow</span>(<span class="s12">"draw on me"</span>, <span class="s10">Rect</span>(128, 64, 340, 360));</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>v = <span class="s10">SCUserView</span>(w,w.view.bounds)</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.mouseMoveAction_({<span class="s10">|v,x,y|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[x,y].postln;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tmppoints = tmppoints.add(x at y);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.refresh;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>})</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.mouseUpAction_({<span class="s10">|v,x,y|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>all = all.add(tmppoints.copy);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tmppoints = [];</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.refresh;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>})</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.drawFunc_{<span class="s10">|me|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.use {<span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Color</span>.white.set;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillRect(me.bounds.moveTo(0,0));<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.width = 1;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Color</span>.black.set;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.beginPath;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tmppoints.do{<span class="Apple-tab-span">	</span><span class="s10">|p, i|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(i == 0){</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.moveTo(p);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}{</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.lineTo(p);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>all.do{<span class="s10">|points|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>points.do{<span class="s10">|p, i|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(i == 0){</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.moveTo(p);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}{</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.lineTo(p);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.stroke;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};<span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14">// Animation</p>
-<p class="p14">// with mouse interaction</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16"><span class="s10">var</span> width = 400, height = 400, mx = 0, my = 0;</p>
-<p class="p16">w = <span class="s10">Window</span>(<span class="s12">"animation and mouse interaction"</span>, <span class="s10">Rect</span>(100, 200, width, height), <span class="s10">false</span>);</p>
-<p class="p16">u = <span class="s10">UserView</span>(w, <span class="s10">Rect</span>(0, 0, width, height));</p>
-<p class="p16">u.background = <span class="s10">Color</span>.black;</p>
-<p class="p16">u.animate = <span class="s10">true</span>;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s13">//animate this view</span></p>
-<p class="p16">u.drawFunc = {</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillColor = <span class="s10">Color</span>.green;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.stringAtPoint(u.frameRate.asString, <span class="s10">Point</span>(10, 10));<span class="Apple-tab-span">	</span><span class="s13">//get frame rate</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.stringAtPoint(u.frame.asString, <span class="s10">Point</span>(10, 30));<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s13">//get frame counter</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.color = <span class="s10">Color</span>.white;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.moveTo(<span class="s10">Point</span>(my, mx));</p>
-<p class="p16"><span class="Apple-tab-span">	</span>100.do{<span class="s10">|i|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> x = sin(u.frame*0.04.neg+i)*(5*i)+mx;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s13">//use .frame to drive animation</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> y = cos(u.frame*0.05+i)*(5*i)+my;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.lineTo(<span class="s10">Point</span>(y, x));</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.addOval(<span class="s10">Rect</span>(x, y, i, i));</p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillStroke;</p>
-<p class="p16">};</p>
-<p class="p16">u.mouseDownAction = {<span class="s10">|v, x, y|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>mx = x;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>my = y;</p>
-<p class="p16">};</p>
-<p class="p16">u.mouseMoveAction = u.mouseDownAction;</p>
-<p class="p16">w.front;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p14"><span class="s3">u.animate = </span><span class="s10">false</span><span class="s3">;<span class="Apple-tab-span">	</span></span>//animation can be paused and resumed</p>
-<p class="p16">u.animate = <span class="s10">true</span>;</p>
-<p class="p14"><span class="s3">w.close;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//stops animation</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14">// Simple ball animation</p>
-<p class="p14">//</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16"><span class="s10">var</span> width = 400, height = 400, xspeed = 3, yspeed = 2, x = width*0.5, y = height*0.5;</p>
-<p class="p16">w = <span class="s10">Window</span>(<span class="s12">"ball"</span>, <span class="s10">Rect</span>(100, 200, width, height));</p>
-<p class="p16">u = <span class="s10">UserView</span>(w, <span class="s10">Rect</span>(0, 0, width, height));</p>
-<p class="p16">u.background = <span class="s10">Color</span>.black;</p>
-<p class="p16">u.animate = <span class="s10">true</span>;</p>
-<p class="p16">u.drawFunc = {</p>
-<p class="p16"><span class="Apple-tab-span">	</span>if(x<0 or:{x>width}, {xspeed = 0-xspeed});</p>
-<p class="p16"><span class="Apple-tab-span">	</span>if(y<0 or:{y>height}, {yspeed = 0-yspeed});</p>
-<p class="p16"><span class="Apple-tab-span">	</span>x = x+xspeed;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>y = y+yspeed;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillColor = <span class="s10">Color</span>.white;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillOval(<span class="s10">Rect</span>.aboutPoint(<span class="s10">Point</span>(x, y), 8, 8));</p>
-<p class="p16">};</p>
-<p class="p16">w.front;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span></span>//replace the drawFunc above while running</p>
-<p class="p16">u.drawFunc = {</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillColor = <span class="s10">Color</span>.red;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillOval(<span class="s10">Rect</span>(200, 200, sin(u.frame*0.031)*200, sin(u.frame*0.044)*200));</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillOval(<span class="s10">Rect</span>(200, 200, sin(u.frame*0.052)*200, sin(u.frame*0.065)*200));</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillOval(<span class="s10">Rect</span>(200, 200, sin(u.frame*0.073)*200, sin(u.frame*0.086)*200));</p>
-<p class="p16">}</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p14">//close the window to stop</p>
-<p class="p16">w.close;</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14">// Clearing on Refresh</p>
-<p class="p14">//</p>
-<p class="p14">// Set the behaviour for refreshing the view.</p>
-<p class="p14">// If this flag is true (the default) the view will be cleared before each refresh call,</p>
-<p class="p14">// otherwise It will draw in top of it.</p>
-<p class="p14">// On OSX this functionality is only available for the version >= 10.4 .</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">var</span> width = 640, height = 480, w, theta = 0, drawFunc;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>w = <span class="s10">Window</span>( <span class="s12">"trails"</span>, <span class="s10">Rect</span>( 128, 64, width, height ), <span class="s10">false</span> );</p>
-<p class="p16"><span class="Apple-tab-span">	</span>drawFunc = { <span class="s10">arg</span> view;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> x = 20 * sin( theta ), y = 42 * cos( theta );</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>theta = theta + 0.01;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillColor_( <span class="s10">Color</span>.red( 0.2, 0.1 ));</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s10">Pen</span><span class="s3">.fillRect( </span><span class="s10">Rect</span><span class="s3">( 0, 0, width, height ));</span>//draw a semitransparent rect filling the screen</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.strokeColor_( <span class="s10">Color</span>.white );</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.translate( width * 0.5, height * 0.5 );</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6.do { <span class="s10">arg</span> i;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.rotate( theta * (1 - (i / 6)) );</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.scale( 0.7 + (i * 0.4), 0.4 + (i * 0.5) );</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.strokeOval( <span class="s10">Rect</span>.aboutPoint( <span class="s10">Point</span>( x, y ), 60, 40 ));</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span>};</p>
-<p class="p16"><span class="Apple-tab-span">	</span>x = <span class="s10">UserView</span>( w, <span class="s10">Rect</span>( 10, 10, width - 20, height - 20 ))</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.canFocus_( <span class="s10">false</span> )</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.drawFunc_( drawFunc )</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.clearOnRefresh_( <span class="s10">false</span> );</p>
-<p class="p15"><br></p>
-<p class="p16"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>x.animate = <span class="s10">true</span></p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14">// Use refreshInRect(aRect).</p>
-<p class="p14">// Constrains the receiver's refresh area to the rectangle passed in aRect.</p>
-<p class="p14">// you may use Quartz Debug's flash screen updates to see the refresh area of the view</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="s10">var</span> userView, win, blob = <span class="s10">Rect</span>(0, 0, 50, 50), trackblob=<span class="s10">false</span>, pmouse;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s3"><span class="Apple-tab-span">	</span>a = </span><span class="s10">SCImage</span><span class="s3">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s3">);</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>win = <span class="s10">SCWindow</span>.new(<span class="s12">"refreshInRect Test"</span>, <span class="s10">Rect</span>(400, 400, 600, 200), scroll:<span class="s10">true</span>).front;</p>
-<p class="p16"><span class="Apple-tab-span">	</span>win.onClose_({ a.free; });</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>userView = <span class="s10">SCUserView</span>(win, <span class="s10">Rect</span>(10,10,2000,800))</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.backgroundImage_(a, 5)</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.drawFunc_({<span class="s10">|me|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Color</span>.blue.setFill;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Pen</span>.fillRect(blob);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.mouseDownAction_({<span class="s10">|v, x, y, mod|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pmouse = x at y;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trackblob = blob.containsPoint(pmouse);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.mouseUpAction_({<span class="s10">|v, x, y, mod|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trackblob = <span class="s10">false</span>;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.mouseMoveAction_({<span class="s10">|v, x, y, mod|</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> refresh, mouse, delta;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mouse = x at y;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(trackblob, {</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>refresh = blob.copy;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta = mouse-pmouse;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blob = blob.moveBy(delta.x, delta.y);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>refresh = refresh.union(blob);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.refreshInRect(refresh);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pmouse = mouse;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span>blob = blob.moveBy(userView.bounds.left, userView.bounds.top);</p>
-<p class="p16"><span class="Apple-tab-span">	</span>userView.bounds.postln;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCUserViewSubclassing/SCUserView-Subclassing.html b/Help/GUI/Cocoa-GUI/SCUserViewSubclassing/SCUserView-Subclassing.html
deleted file mode 100644
index 10424e6..0000000
--- a/Help/GUI/Cocoa-GUI/SCUserViewSubclassing/SCUserView-Subclassing.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000f1}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #c20000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline ; color: #0000c1}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000c1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SCUserView Subclassing Tutorial</b></p>
-<p class="p2">by Jost Muxfeldt<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s1">See also: <a href="../../GUI-Overview.html"><span class="s2">GUI-Overview</span></a>, <a href="../SCUserView.html"><span class="s3">SCUserView</span></a>, <a href="../SCView.html"><span class="s3">SCView</span></a>, <a href="../../../Extending and Customizing SC/Writing-Classes.html"><span class="s3">Writing Classes</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6">The following is a short tutorial on how to make a custom gui widget by subclassing SCUserView. It is assumed that you know how to write classes in SuperCollider. See <a href="../../../Extending and Customizing SC/Writing-Classes.html"><span class="s4">Writing Classes</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6">You also need to open the template class file, <a href="SCUserViewTutorial.sc"><span class="s2">SCUserViewTutorial.sc</span></a> , first to follow this tutorial.</p>
-<p class="p5"><br></p>
-<p class="p6">You can use the contents of <a href="SCUserViewTutorial.sc"><span class="s2">SCUserViewTutorial.sc</span></a> as a template for writing your own subclass. Simply copy the file to your SC extensions folder and rename the file and class, <b>MyWidget</b>, to whatever you want to call your class. Then adjust the class methods to fit your design.</p>
-<p class="p5"><br></p>
-<p class="p6">The following narrates the code in SCUserViewTutorial.sc:</p>
-<p class="p5"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span>1. Setup instance vars appropriate to your widget</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>You inherit all of the instance variables from SCUserView and SCView, of course, but many gui widgets need their own variables. In particular, you need to overide <b>value</b>, to return whatever you want your view to return. The instance variable, <b>step</b>, is also often used to allow <b>value</b> to be quantized. <b>thumbSize</b> is used for both width and height of a slider thumb, while <b>thumbWidth</b> or <b>thumbHeight</b> are typically used for only one dimension. <b>x</b> and <b>y</b> are used for mouse clicks. Take a look at a similar SC widget to see what the standard instance variables are.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span>2. Define the viewClass to SCUserView</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This is mandatory. You must do this so that your class calls the primitive of SCUserView on init.</p>
-<p class="p5"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span>3. Set up your view</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>You will want to override <b>init</b> to customize your sub class.Here you will set the defaults of some of your instant variables and anything else you want to do on creating the view.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Finally, you should set <b>this.drawFunc</b> (SCUserView's drawing function) to the method <b>this.draw</b>, which you will define below.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span>4. Define a drawing function for SCPen</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This is where you will define how the view appears. As of SC3.31, drawing should use relative coordinates. How you draw will<span class="Apple-converted-space">  </span>typically will be dependent on instance variables which you defined such as <b>value</b>, <b>states</b> (for buttons), <b>x</b> and <b>y</b> (for mouse clicks), or anything else you might need for your design. See <a href="../SCPen.html"><span class="s4">SCPen</span></a> for drwaing methods.</p>
-<p class="p8"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span>5. Define typical widget methods</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Here you define various methods according to your own design. You should look at similar gui objects to see what they have. The setter, <b>valueAction_</b> is defined by practically any gui widget, for example. It sets the <b>value</b> and performs the <b>action</b> (already defined in SCView).</p>
-<p class="p8"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span>6. Override mouseActions</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>SCView defines <b>mouseDown</b>, <b>mouseMove</b> and <b>mouseUp</b>, as methods, and the corresponding user definable methods, <b>mouseDownAction</b>, <b>mouseMoveAction</b> and <b>mouseUpAction</b>. You should overrider <b>mouseDown</b>, <b>mouseMove</b> or <b>mouseUp</b> as needed, and <b><i>make sure</i></b><i> your method calls the corresponding action as well</i>, so your user can later add user actions, just like in the template. Also see the <a href="../SCView.html"><span class="s4">SCView</span></a> help file.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span>7. Define default key actions</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Here you define your default key responses in <b>defaultKeyDownAction</b> or <b>defaultKeyUpAction</b>. Differently than with mouse actions, you do not call the keyAction in your method, since this mechanism is handled by <a href="../SCView.html"><span class="s4">SCView</span></a>. If the user defines a <b>keyDownAction</b>, or <b>keyUpAction</b>, SCView makes it override your default action. See the template, and see the <a href="../SCView.html"><span class="s4">SCView</span></a> help file.</p>
-<p class="p7"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span>8. Define default drag and drop actions</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Here you define your drag responses in <b>defaultGetDrag</b>, <b>defaultCanReceiveDrag</b>, and , <b>defaultReceiveDrag</b>. Differently than with mouse actions, you do not call the dragAction in your method, since this mechanism is handled by <a href="../SCView.html"><span class="s4">SCView</span></a>. If your user defines a <b>beginDragAction, canReceiveDragHandler, </b>or <b>receiveDragHandler, </b>SCView makes it override your default action. See the template, and see the <a href="../SCView.html"><span class="s4">SCView</span></a> help file.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2">That's it. Now recompile, only to find your first syntax errors. ;-)</p>
-<p class="p7"><br></p>
-<p class="p2">Happy subclassing.</p>
-<p class="p7"><br></p>
-<p class="p9">//try this after you have added the class to the class library</p>
-<p class="p10">(<span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">GUI</span>.cocoa;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>w=<span class="s4">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>v=<span class="s4">MyWidget</span>(w, <span class="s4">Rect</span>(10,20,200,20)).valueAction_(0.5);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>q=<span class="s4">MyWidget</span>(w, <span class="s4">Rect</span>(10,60,200,20)).valueAction_(0.3);</p>
-<p class="p10">)</p>
-<p class="p7"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCUserViewSubclassing/SCUserViewTutorial.sc b/Help/GUI/Cocoa-GUI/SCUserViewSubclassing/SCUserViewTutorial.sc
deleted file mode 100644
index 20a0f6a..0000000
--- a/Help/GUI/Cocoa-GUI/SCUserViewSubclassing/SCUserViewTutorial.sc
+++ /dev/null
@@ -1,117 +0,0 @@
-// How to subclass SCUserView to make custom GUI interfaces. Jost Muxfeldt, 2008.
-// For many purposes you can use this as a template, and simply adjust the methods
-
-MyWidget : SCUserView {
-
-	// (1) Setup instance vars appropriate to your widget. Make sure to define value.
-	var <>step, <value=0, <>leftColor, <>rightColor, <>thumbWidth=7;
-
-	// (2) Set the viewClass to SCUserView
-	*viewClass { ^SCUserView } // this ensures that SCUserView's primitive is called
-
-
-	// (3) Set up your view
-	init { |argParent, argBounds|
-
-		super.init(argParent, argBounds);
-
-		// set defaults of your instance variables
-		rightColor=Color.grey(0.8);
-		leftColor=Color.grey(0.2);
-		step=this.pixelStep;
-
-		// set the draw function of the SCUserView
-		this.drawFunc={ this.draw};
-	}
-
-
-	// (4) define a drawing function for SCPen
-	draw{
-		// Draw the fill
-		SCPen.fillColor = Color.grey;
-		Pen.addRect(Rect(0,0, this.bounds.width*value,this.bounds.height));
-		Pen.fill;
-		// Draw the triangle
-		SCPen.fillColor = Color.red;
-		Pen.moveTo(((this.bounds.width*value)-5) @ this.bounds.height);
-		Pen.lineTo(((this.bounds.width*value)+5) @ this.bounds.height);
-		Pen.lineTo(((this.bounds.width*value)) @ (this.bounds.height/2));
-		Pen.lineTo(((this.bounds.width*value)-5) @ this.bounds.height);
-		Pen.fill;
-		// Draw the frame
-		SCPen.strokeColor = Color.black;
-		Pen.addRect(Rect(0,0, this.bounds.width,this.bounds.height));
-		Pen.stroke;
-	}
-
-
-	// (5) define typical widget methods  (only those you need or adjust as needed)
-	valueAction_{ arg val; // most widgets have this
-		this.value=val;
-		this.doAction;
-	}
-	value_{ |val|  	 // in many widgets, you can change the
-					 // value and refresh the view , but not do the action.
-		value=val;
-		this.refresh;
-	}
-			// these are like in SCSlider
-	increment { |zoom=1| ^this.valueAction = this.value + (max(this.step, this.pixelStep) * zoom) }
-	decrement { |zoom=1| ^this.valueAction = this.value - (max(this.step, this.pixelStep) * zoom) }
-
-	pixelStep {  // like in SCSlider
-		var bounds = this.bounds;
-		^(bounds.width-1).reciprocal
-	}
-
-
-	// (6) override mouseActions
-	mouseDown{ arg x, y, modifiers, buttonNumber, clickCount;
-		var newVal;
-		// this allows for user defined mouseDownAction
-		mouseDownAction.value(this, x, y, modifiers, buttonNumber, clickCount);
-
-		// set the value and do the action
-		([256, 0].includes(modifiers)).if{ // restrict to no modifier
-
-			newVal= x.linlin(0,this.bounds.width,0,1);
-			// translates the relative mouse position in pixels to a value between 0 and 1
-
-			if (newVal != value) {this.valueAction_(newVal)}; // only do something if the value changed
-		};
-	}
-
-	mouseMove{ arg x, y, modifiers, buttonNumber, clickCount;
-		var newVal;
-		// this allows for user defined mouseMoveAction
-		mouseMoveAction.value(this, x, y, modifiers, buttonNumber, clickCount);
-
-		// set the value and do the action
-		([256, 0].includes(modifiers)).if{ // restrict to no modifier
-
-			newVal= x.linlin(0,this.bounds.width,0,1);
-			// translates the  relative mouse position in pixels to a value between 0 and 1
-
-			if (newVal != value) {this.valueAction_(newVal)}; // only do something if the value changed
-		};
-
-	}
-
-	// (7) define default key actions
-	// make sure to return "this", if successful, and nil if not successful
-	defaultKeyDownAction { arg char, modifiers, unicode,keycode;
-		if (unicode == 16rF700, { this.increment; ^this });
-		if (unicode == 16rF703, { this.increment; ^this });
-		if (unicode == 16rF701, { this.decrement; ^this });
-		if (unicode == 16rF702, { this.decrement; ^this });
-
-		^nil		// bubble if it's an invalid key
-	}
-
-	// (8) define drag and drop
-	defaultGetDrag {^value} // what to drag
-	defaultCanReceiveDrag  {^currentDrag.isNumber} // when to receive
-	defaultReceiveDrag { this.valueAction = currentDrag;} // what to do on receiving
-
-
-}
\ No newline at end of file
diff --git a/Help/GUI/Cocoa-GUI/SCVLayoutView.html b/Help/GUI/Cocoa-GUI/SCVLayoutView.html
deleted file mode 100644
index e943840..0000000
--- a/Help/GUI/Cocoa-GUI/SCVLayoutView.html
+++ /dev/null
@@ -1,229 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #bf0000}
-span.s9 {color: #606060}
-span.s10 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCVLayoutView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a container that automatically places widgets in a column</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="SCView.html"><b>SCView</b></a><b> : </b><a href="SCContainerView.html"><b>SCContainerView</b></a><b> : </b><a href="SCLayoutView.html"><b>SCLayoutView</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">SCVLayoutView automatically arranges its sub-views in vertical order, expanding their width to the bounds of the SCVLayoutView. Only the bounds.height of the sub-view is relevant. Its abstract superclass, <a href="SCLayoutView.html"><span class="s3">SCLayoutView</span></a>, provides some important formatting methods.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="SCHLayoutView.html"><span class="s4">SCHLayoutView</span></a>, <a href="SCCompositeView.html"><span class="s4">SCCompositeView</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding SCVLayoutView</b></p>
-<p class="p2"><br></p>
-<p class="p1">SCVLayoutView is designed mainly for grouping and placing widgets. While you can set it to accept key strokes, it does not itself accept mouse clicks or drags.</p>
-<p class="p2"><br></p>
-<p class="p1">SCVLayoutView responds to the minHeight and maxHeight <b>properties </b>in its child views. This is useful when <b>resize</b> is set to 4, 5, or 6. See examples below.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s5">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s5">Point</span></a> indicating width at height.</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s6">VLayoutView</span>(w, <span class="s6">Rect</span>(10,10,300,300) );</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Array</span>.fill( 10, { <span class="s6">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Slider</span>( v, <span class="s6">Rect</span>(0,0,75,20) ).value_(i / 10)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">q = 10;</p>
-<p class="p11">w = <span class="s7">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">v = <span class="s7">VLayoutView</span>(w,<span class="s7">Rect</span>(10,10,300,300));</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s7">Array</span>.fill(q,{ <span class="s7">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">Slider</span>(v,<span class="s7">Rect</span>(0,0,75,20)).value_(i / q)</p>
-<p class="p11">});</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p13">// show the area of the view.</p>
-<p class="p13"><span class="s2">v.background_(</span><span class="s7">Color</span><span class="s2">.rand) </span>// The sliders automatically expand to the optimal width</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p14"><br></p>
-<p class="p13">// Stretching the layout view. Slider height is fixed.</p>
-<p class="p11">(</p>
-<p class="p11">q = 10;</p>
-<p class="p11">w = <span class="s7">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">v = <span class="s7">VLayoutView</span>(w,<span class="s7">Rect</span>(10,10,300,300));</p>
-<p class="p11">v.background_(<span class="s7">Color</span>.rand);</p>
-<p class="p11">v.resize = 5; <span class="s8">// elastic</span></p>
-<p class="p11"><span class="s7">Array</span>.fill(q,{ <span class="s7">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> s;</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span>s = </span><span class="s7">Slider</span><span class="s2">(v,</span><span class="s7">Rect</span><span class="s2">(0,0,55,20));</span>// The bounds.width are irrelevant here. They expand to the optimal width</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.value = i / q;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p11"><span class="s7">StaticText</span>(v, <span class="s7">Rect</span>(0,0,55,20)).background_(<span class="s7">Color</span>.rand).string_(<span class="s9">"Some Example Text"</span>).align_(<span class="s10">\center</span>);</p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p13">// Stretching the layout view and the contents.</p>
-<p class="p13">// If all the contents are elastic, the heights of the contents are perfectly divided up.</p>
-<p class="p13">// in this example, the StaticText is not elastic in order to preserv its height.</p>
-<p class="p11">(</p>
-<p class="p11">q = 10;</p>
-<p class="p11">w = <span class="s7">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">v = <span class="s7">VLayoutView</span>(w,<span class="s7">Rect</span>(10,10,300,300));</p>
-<p class="p11">v.background_(<span class="s7">Color</span>.rand);</p>
-<p class="p11">v.resize = 5; <span class="s8">// elastic</span></p>
-<p class="p11"><span class="s7">Array</span>.fill(q,{ <span class="s7">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> s;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s = <span class="s7">Slider</span>(v,<span class="s7">Rect</span>(0,0,75,20));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.resize = 5; <span class="s8">// elastic</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.value = i / q;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p11"><span class="s7">StaticText</span>(v, <span class="s7">Rect</span>(0,0,55,40))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.background_(<span class="s7">Color</span>.rand).string_(<span class="s9">"Some Example Text"</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.align_(<span class="s10">\center</span>);</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p13">// Mixed stretching modes</p>
-<p class="p11">(</p>
-<p class="p11">q = 5;</p>
-<p class="p11">w = <span class="s7">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">v = <span class="s7">VLayoutView</span>(w,<span class="s7">Rect</span>(10,10,300,300));</p>
-<p class="p11">v.resize = 5; <span class="s8">// elastic</span></p>
-<p class="p11">v.background_(<span class="s7">Color</span>.grey);</p>
-<p class="p11"><span class="s7">Array</span>.fill(q,{ <span class="s7">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> s;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s = <span class="s7">Slider</span>(v,<span class="s7">Rect</span>(0,0,75,20)).background_(<span class="s7">Color</span>.rand);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.value = i / 5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>if(i < 2,{</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.resize = 5; <span class="s8">// some elastic</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.setProperty(<span class="s10">\minHeight</span>,20);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>},{</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.resize = 1; </span>// some not elastic</p>
-<p class="p11"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p11"><span class="s7">StaticText</span>(v, <span class="s7">Rect</span>(0,0,55,20)).background_(<span class="s7">Color</span>.rand).string_(<span class="s9">"Some Example Text"</span>).align_(<span class="s10">\center</span>);</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p13">// Set minimum heights</p>
-<p class="p13">// beware that if the layout view height is smaller than the combined height of all the contents,</p>
-<p class="p13">// things might disappear when you try to handle them with the mouse:</p>
-<p class="p11">(</p>
-<p class="p11">q = 5;</p>
-<p class="p11">w = <span class="s7">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">v = <span class="s7">VLayoutView</span>(w,<span class="s7">Rect</span>(10,10,300,300));</p>
-<p class="p11">v.resize = 5; <span class="s8">// elastic</span></p>
-<p class="p11">v.background_(<span class="s7">Color</span>.grey);</p>
-<p class="p11"><span class="s7">Array</span>.fill(q,{ <span class="s7">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">var</span> s;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s = <span class="s7">Slider</span>(v,<span class="s7">Rect</span>(0,0,75,20)).background_(<span class="s7">Color</span>.blue.alpha_(0.2));</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.value = i / 5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.resize = 5;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.setProperty(<span class="s10">\minHeight</span>,20);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.setProperty(<span class="s10">\maxHeight</span>,40);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s</p>
-<p class="p11">});</p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p13">// Spacing</p>
-<p class="p11">(</p>
-<p class="p11">q = 10;</p>
-<p class="p11">w = <span class="s7">Window</span>.new;</p>
-<p class="p10"><br></p>
-<p class="p11">v = <span class="s7">VLayoutView</span>(w,<span class="s7">Rect</span>(10,10,300,300));</p>
-<p class="p11">v.setProperty(<span class="s10">\spacing</span>,0);</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s7">Array</span>.fill(q,{</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">Slider</span>(v,<span class="s7">Rect</span>(0,0,75,20))</p>
-<p class="p11">});</p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p13">// Nesting</p>
-<p class="p13">// Use VLayoutView and HLayoutView in combination</p>
-<p class="p11">(</p>
-<p class="p11">q = 10;</p>
-<p class="p11">w = <span class="s7">Window</span>.new(<span class="s9">"nesting"</span>,<span class="s7">Rect</span>(30,30,400,700));</p>
-<p class="p10"><br></p>
-<p class="p11">v = <span class="s7">VLayoutView</span>(w,<span class="s7">Rect</span>(10,10,300,600));</p>
-<p class="p10"><br></p>
-<p class="p11">v.background = <span class="s7">Color</span>.rand;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s7">Array</span>.fill(q,{ <span class="s7">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">Slider</span>(v,<span class="s7">Rect</span>(0,0,75,20)).value_(i / q)</p>
-<p class="p11">});</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s7">StaticText</span>(v, <span class="s7">Rect</span>(0,0,55,20)).background_(<span class="s7">Color</span>.rand).string_(<span class="s9">"Some Example Text"</span>).align_(<span class="s10">\center</span>);</p>
-<p class="p10"><br></p>
-<p class="p11">h = <span class="s7">HLayoutView</span>(v,<span class="s7">Rect</span>(10,10,300,300));</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s7">Array</span>.fill(q,{ <span class="s7">arg</span> i;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s7">Slider</span>(h,<span class="s7">Rect</span>(0,0,20,70)).value_(i / q)</p>
-<p class="p11">});</p>
-<p class="p11">h.background = <span class="s7">Color</span>.rand;</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11">w.front</p>
-<p class="p10"><br></p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCView.html b/Help/GUI/Cocoa-GUI/SCView.html
deleted file mode 100644
index 26c58fd..0000000
--- a/Help/GUI/Cocoa-GUI/SCView.html
+++ /dev/null
@@ -1,492 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0000bf}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p19 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {font: 14.0px Helvetica}
-span.s5 {font: 9.0px Monaco}
-span.s6 {color: #606060}
-span.s7 {color: #007300}
-span.s8 {font: 12.0px Helvetica; color: #000000}
-span.s9 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>the abstract superclass for all SC GUI widgets</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">SCView is the abstract superclass for all SC GUI widgets. You cannot call SCView directly. Several key methods and variables are defined in SCView and inherited in its subclasses. This help file contains important information about many of the basic functions of all gui views, in particular defining actions, defining drag and drop, defining mouse actions, and defining key actions.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SCWindow.html">SCWindow</a></span>, <a href="../GUI-Tools/GUI.html">GUI</a></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Some Important Issues Regarding SCView</b></p>
-<p class="p2"><br></p>
-<p class="p1">If you try to set parameters of a GUI widget from a<span class="Apple-converted-space">  </span>Routine , which uses the <a href="../../Scheduling/SystemClock.html"><span class="s2">SystemClock</span></a> by default, you must wrap it in a deferred function: { myView.value_(2) }.defer .<span class="Apple-converted-space">  </span>You do not need to use .defer, if you use the <a href="../../Scheduling/AppClock.html"><span class="s2">AppClock</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> indicating width at height.</p>
-<p class="p5"><br></p>
-<p class="p10"><b>Accessing Instance and Class Variables</b></p>
-<p class="p11"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>parent</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the view's parent view, or nil if the view is a top view.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>bounds</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>bounds_ (rect)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> determining the bounds of the View. Some containers, such as <a href="SCHLayoutView.html"><span class="s2">SCHLayoutView</span></a> and <a href="SCVLayoutView.html"><span class="s2">SCVLayoutView</span></a>, will use only the width and height of a child view's <b>bounds</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rect </b>- an instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> indicating width at height.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>absoluteBounds</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> witht he absolute bounds of the view.</p>
-<p class="p8"><span class="s4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>refresh</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Refreshes the view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>remove</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Removes the view from its <b>parent</b> view and closes the view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>enabled</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>enabled_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets / sets whether the view is enabled, ie. responds to key or mouse actions (see below). Defaults to false, but views which respond to user input default to true. Some views will be greyed if they are disabled.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>canFocus</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>canFocus_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets / sets whether the view can be focussed. Defualts to true.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span><b>hasFocus</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>focus (flag)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets / sets whether the view is focussed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>flag </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>isClosed</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>notClosed</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> depending on whether the view is closed or not.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>onClose_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>onClose</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A function to be evaluated upon closing the view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- A <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. Default value is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Customizing Appearance</b></p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>background</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>background_ (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The background color of the view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>focusColor</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>focusColor_ (color)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The background color of the view when it is focussed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>visible</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>visible_ (bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets / sets whether the view is visible. Defualts to true.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>.</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p10"><b>Resize Constraints</b></p>
-<p class="p11"><br></p>
-<p class="p1"><b>resize</b> takes integers 1-9 as an argument which defines how a view behaves when a window is resized.</p>
-<p class="p1">See <a href="../GUI-Tools/resize.html"><span class="s2">resize</span></a> for details and examples.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p10"><b>Defining Actions</b></p>
-<p class="p5"><br></p>
-<p class="p1">Actions are Functions which are evaluated when the primitive calls <b>doAction</b> in response to user input of some sort. Typically a view like <a href="SCButton.html"><span class="s2">SCButton</span></a>, <a href="SCSlider.html"><span class="s2">SCSlider</span></a>, <a href="SCPopUpMenu.html"><span class="s2">SCPopUpMenu</span></a>, etc, use <b>action</b> to store the function to be performed on user input. Many views only call <b>doAction</b> if their value has changed.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>action</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>action_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The action a view takes if doAction is called (normally by the primitive). See <b>doAction</b>. Many view subclasses override this methods for their own purposes.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. Default value is nil.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>addAction (func, selector)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>removeAction (func, selector)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Adds/removes an action to or from the list of functions in the variable determined by <b>selector</b>. Adding functionality to a view by the method <b>addAction</b> is useful for adding things to existing frameworks that have action functions already.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>func </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>selector </b>- A <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>. Defaults to<b> \action</b>. By default, <b>addAction</b> will add a function to the <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a> of <b>action</b>, but you can also make it add a function to any other (sensible) instance or class variable in SCView by using a different selector, for example, \<b>globalKeyDownAction</b> or \<b>mouseUpAction</b> or \<b>onClose</b> . See the other action variables below.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new(<span class="s6">"A Slider"</span>);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s2">Slider</span>.new(w, <span class="s2">Rect</span>(40, 10, 300, 30));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// adding and removing an action:</p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = { </span><span class="s2">|sl|</span><span class="s3"> </span>"--------*******-------"<span class="s3">.postln; };</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.addAction(f);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.removeAction(f);</p>
-<p class="p8"><br></p>
-<p class="p10"><b>Defining Key Actions</b></p>
-<p class="p11"><br></p>
-<p class="p1">Use the methods below to store functions to be called in response to a key event initiated by the user. If you return nil from your function, or you have no function registered, the event will bubble up to the parent view which may then respond. It will continue to bubble up unless something responds or it hits the topView of the window. You may register a function in the window's topView to respond to all unhandled events for the window.</p>
-<p class="p2"><br></p>
-<p class="p1">When calling one of the key actions , the function will be passed the following arguments (in order):</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>view</b> - The receiving instance of SCView.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>char</b> - The character pressed, possibly unprintable. Character sequences (for example ) get passed as two characters, the first one blank ( ), the second one is the unmodified character (e). This will also vary depending on the nationality the keyboard is set to.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>modifiers</b>- An integer bit field indicating the modifier keys in effect. You can examine individual flag settings using the C bitwise AND operator. For a list of these, see <a href="../GUI-Tools/modifiers.html"><span class="s2">modifiers</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>unicode</b> - The unicode integer.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>keycode</b> - The hardware dependent keycode indicating the physical key. This will vary from machine to machine, but is useful for building musical interfaces using the computer keyboard.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>N.B.: Function key modifier may change the keycode.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>For various reasons these don't make it through cocoa:</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>most command modifiers</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ctl-tab</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ctl-escape</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tab and shift tab are currently trapped by SC itself for cycling the focus through the views.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyUpAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyDownAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyUpAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyDownAction_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>This is where you define your key actions. If these variables are nil (the default), <b>defaultKeyDownAction</b> or <b>defaultKeyUpAction</b> are called instead. Many subclasses define their own appropriate default key actions. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. The function is passed the following argument list: <b>view</b>, <b>char</b>, <b>modifiers</b>, <b>unicode</b>, <b>keycode</b>.</p>
-<p class="p12"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>globalKeyDownAction</b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>globalKeyDownAction_(arg1)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>globalKeyUpAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>globalKeyUpAction_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Here you can define a global key action. An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a> which is globally evaluated on a key action. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. The function is passed the following argument list: <b>view</b>, <b>char</b>, <b>modifiers</b>, <b>unicode</b>, <b>keycode</b>.</p>
-<p class="p8"><br></p>
-<p class="p12"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyModifiersChangedAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyModifiersChangedAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This is where you set actions to be performed if the modifier changes. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of Function or FunctionList. The function is passed the following argument list: <b>view, modifiers</b>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Defining Mouse Actions</b></p>
-<p class="p11"><br></p>
-<p class="p1">Use the methods below to store functions to be called in response to a mouse action initiated by the user. A view must be <b>enabled</b> for the mouse actions to work. The function is passed one or more arguments from the following argument list (in order):</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>view</b> - the view</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>x</b> - the x coordinate</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>y</b> - the y coordinate</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>modifiers</b> - a modifier key number. For a list of these, see <a href="../GUI-Tools/modifiers.html"><span class="s2">modifiers</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>buttonNumber</b> - 0-left, 1-right, 2-middle, etc.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clickCount</b> - the number of clicks within the system click time limit. At least 1.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseDownAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseDownAction_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This is where you set your mouse down actions. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. The function is passed the following argument list <b>view, x, y, modifiers, buttonNumber, clickCount.</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseUpAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseUpAction_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This is where you set your mouse up actions. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. This is where you set your mouse actions. The function is passed the following argument list: <b>view</b>, <b>x</b>, <b>y</b>, <b>modifiers</b>. Default is nil.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseMoveAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseMoveAction_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This is where you set your mouse move actions. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. This is where you set your mouse actions. The function is passed the following argument list: <b>view</b>, <b>x</b>, <b>y</b>, <b>modifiers</b>. Default is nil.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseOverAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseOverAction_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>This is where you set your mouse over actions. For this to work, <b>acceptsMouseOver</b> of the parent Window must be set to true. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. The function is passed the following argument list: <b>view</b>, <b>x</b>, <b>y</b>. Default is nil.</p>
-<p class="p5"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">SCWindow</span>.new.front;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v=<span class="s2">SCCompositeView</span>.new(w,w.view.bounds.insetBy(10)).background_(<span class="s2">Color</span>.rand);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.decorator=<span class="s2">FlowLayout</span>(v.bounds);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>t=<span class="s2">Array</span>.fill(9,{<span class="s2">arg</span> i; <span class="s2">var</span> n,r,q;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n=<span class="s2">SCCompositeView</span>.new(v,<span class="s2">Rect</span>(20,20,121,121)).background_(<span class="s2">Color</span>.rand);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q=<span class="s2">SCStaticText</span>(n, n.bounds.moveTo(0,0).insetBy(25)).string_((70+i).asAscii).align_(<span class="s7">\center</span>);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.enabled=<span class="s2">true</span>;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.font=<span class="s2">Font</span>.default.copy;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.background_(<span class="s2">Color</span>.rand);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.mouseDownAction={</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.background_(<span class="s2">Color</span>.rand);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.font=q.font.size_(5+q.font.size+7%60)</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Defining Drag and Drop Actions</b></p>
-<p class="p11"><br></p>
-<p class="p1">Each view subclass has a default object that it exports when dragged from. For sliders its the value of the slider, for lists it is the currently selected numeric index etc. By setting the <b>beginDragAction</b> handler you can return a different object based on the context and your application.</p>
-<p class="p2"><br></p>
-<p class="p1">The current dragged object can be found in the classvar SCView.<b>currentDrag</b>. Files dragged from the Finder will result in an Array of Strings representing the files' paths. Objects dragged from within SuperCollider are also in SCView.<b>currentDragString</b> as a compile string. Text dragged from other applications is in SCView.<b>currentDragString</b> and the results of attempting to compile that as sc code is in SCView.<b>currentDrag.</b></p>
-<p class="p2"><br></p>
-<p class="p1">Each view subclass has a <b>defaultCanReceiveDrag</b> method that determines if the current object being dragged is possible for this view to accept, and a <b>defaultReceiveDrag</b> method for actually receiving the drag. Sliders accept numbers, simple text labels do not accept drags etc. After receiving the drag, the SCView.<b>currentDrag</b> is set to nil. Containers typically cannot receive drags by default.</p>
-<p class="p2"><br></p>
-<p class="p1">By setting the <b>canReceiveDragHandler</b> and <b>receiveDragHandler</b> you can make a view accept and receive objects based on the context and your application. (Note: currently not possible for <a href="SCStaticText.html"><span class="s2">SCStaticText</span></a>)</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>beginDragAction_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>beginDragAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This is a custom handler determining the content of the drag. If this variable is nil (the default), <b>defaultGetDrag</b> is called instead. Many views already have their own appropriate <b>defaultGetDrag. </b>See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. The function is passed the following argument list: <b>view</b>, <b>x, y</b>.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>canReceiveDragHandler_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>canReceiveDragHandler</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>This is where you deterimine under which conditions a view will recieve a drag. If this variable is nil (the default), <b>defaultCanReceiveDrag</b> is called instead. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. This function typically will examine <b>currentDrag,</b> an return a boolean. The function is passed the following argument list: <b>view</b>, <b>x, y</b>.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>receiveDragHandler_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>receiveDragHandler</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>This is where you deterimine what a view will do when it receives a drag. If this variable is nil (the default), <b>defaultReceiveDrag</b> is called instead. See also <b>addAction (func, selector)</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. The function is passed the following argument list: <b>view</b>, <b>x, y</b>. Typically it will then precess <b>currentDrag </b>in some way<b>.</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>dragLabel_(string)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set a <b>string</b> to be displayed in a label while dragging, instead of displaying the object type.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>string </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">SCWindow</span>.new.front;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s2">SCButton</span>(w, <span class="s2">Rect</span>(10, 10, 200, 20)).states_([[<span class="s6">"Hi There!"</span>]]);</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.receiveDragHandler = { a.string = <span class="s2">SCView</span>.currentDrag.postln[0].basename};</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.beginDragAction = { a.dragLabel =<span class="s6">"I'm dragging: \""</span>++ a.states[0][0]++<span class="s6">"\""</span>; a.states[0][0] };</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SCDragSink</span>(w,<span class="s2">Rect</span>(10,40,200,20)).align_(<span class="s7">\center</span>).string=<span class="s6">"Cmd-drag from Button to here"</span>;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Contains the content fo the current drag. It is set by <b>beginDrag</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentDragString</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Conatains the content fo the current drag <b>asCompileString</b> (see <a href="../../Core/Object.html"><span class="s2">Object</span></a>). It is set by <b>beginDrag.</b></p>
-<p class="p8"><br></p>
-<p class="p10"><b>Subclassing and Internal Methods</b></p>
-<p class="p11"><br></p>
-<p class="p1">The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed. For a Tutorial on how to subclass and <a href="SCUserView.html"><span class="s2">SCUserView</span></a> to make your own custom GUI Widgets, see <a href="SCUserViewSubclassing/SCUserView-Subclassing.html"><span class="s2">SCUserView-Subclassing</span></a><span class="s2">. </span>The tutorial is a good template for any View subclass, and clearly explains the most important method overrides.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">If you want to subclass a GUI class, then it is important to understand the viewClass mechanism (see below). You must set the viewCass if you want to use the primitive of the parent class.</p>
-<p class="p11"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*viewClass</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the current GUI class. This class method provides a mechanism to subclass existing GUI objects while still calling their primitives. It is used by many extensions and <a href="../../Extending and Customizing SC/Quarks/Quarks.html"><span class="s2">Quarks</span></a>. E.g., if I subclass <a href="SCNumberBox.html"><span class="s2">SCNumberBox</span></a> with SCMySubClass, but want to continue to use SCNumberbox's primitive, then I have to define tha class method, <b>viewClass</b>, making it return SCNumberBox instead of SCMySubClass, like this:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>SCMySubClass<span class="s3"> : </span>SCNumberBox<span class="s3"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*viewClass{^</span><span class="s2">SCNumberBox</span><span class="s3">} </span>// this ensures that SCNumberBox' primitive is called</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// my other methods ......</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This is because view init methods typically contain this:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">this</span>.prInit(parent.asView, argBounds.asRect,<span class="s2">this</span>.class.viewClass)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*paletteExample (parent, bounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Normally not used directly. Used by the SCInterfaceBuilder and determines if and how this class is implemented when dragged to the construction view. You can use cmd-shift-N to evoke the interface builder. All views on the Pallette override this with their own appropriate method. Override this to determine how your subclass is displayed in the interface builder.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>init (argParent, argBounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates the view and adds it to its parent.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argParent </b>- An SCView or SCWindow SCTopView</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>argBounds </b>- an instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, or a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a> indicating width at height.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>asView</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Simply returns the view. Used for comptabliltiy with SCWindow.asView. If you want to guarantee that a view's parent will recieve a view, then write, e.g.:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>{<span class="s2">arg</span> w;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SCSlider</span>(w.asView,<span class="s2">Rect</span>(10,10,150,20)</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>getParents</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns and Array containting all the parents and grandparents, etc., of the view.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>id</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>id_ (id)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>findByID (id)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Internal methods.</p>
-<p class="p8"><br></p>
-<p class="p10"><b>Subclassing and Internal Methods: Actions</b></p>
-<p class="p11"><br></p>
-<p class="p1">The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Evaluates the <b>action. </b>Typically called by the primitive of a view subclass in response to some kind of user input, with the mouse, keys, etc. Many view subclasses override this methods for their own purposes.</p>
-<p class="p8"><br></p>
-<p class="p10"><b>Subclassing and Internal Methods: Properties</b></p>
-<p class="p11"><br></p>
-<p class="p1">The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed. In particular, there are a number of views that return property keys, which are not implemented (yet). Typically, a sub class will implement instance methods which call getPropertyor setProperty whith the name of the method as the key. For example, the method <b>knobColor_(color) </b>might call setProperty(\knobColor, color).</p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>properties</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A list of properties to which this view responds. Most subclasses override or supplement this, getting their property list from their primitives.</p>
-<p class="p5"><br></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns:</p>
-<p class="p19"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ </span>\bounds<span class="s3">, </span>\visible<span class="s3">, </span>\enabled<span class="s3">, </span>\canFocus<span class="s3">, </span>\resize<span class="s3">, </span>\background<span class="s3">, </span>\minWidth<span class="s3">, </span>\maxWidth<span class="s3">, </span>\minHeight<span class="s3">, </span>\maxHeight<span class="s3">, </span>\knobColor<span class="s3">, </span>\step<span class="s3">, </span>\thumbSize<span class="s3">, </span>\focusColor<span class="s3">]</span></p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>getProperty (key, value)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setProperty (key, value)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the property at <b>key</b> to the <b>value</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key </b>- An instance of <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>value </b>- A value appropriate to the key.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setPropertyWithAction (symbol, obj)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the property and calls <b>doAction.</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>symbol </b>- The property key. An instance of <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>obj </b>- a value appropriate to the key.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>getPropertyList</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an array of property keys and their values, of the form [ [\key1, value1] , [\key2, value2] ...].</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setPropertyList (list)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets a list of properties to associated values. Typically called by methods that need to set more than one property.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>list </b>- An Array of the form [ [\key1, value1] , [\key2, value2] ...].</p>
-<p class="p8"><br></p>
-<p class="p10"><b>Subclassing and Internal Methods: Key Actions</b></p>
-<p class="p11"><br></p>
-<p class="p1">The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultKeyUpAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultKeyDownAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>These are the methods to override</b> to define defualt key actions in a subclass. The action function evaluated by default on a key action. Many views override these methods, defining their own appropreate default action. Setting the <b>keyDownAction </b>or<b> keyUpAction</b> will bypass these defaults.<span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyTyped_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyTyped</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Contains the key just typed.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyDown (char, modifiers, unicode, keycode)<span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyUp (char, modifiers, unicode, keycode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by a primitive. Evaluates the <b>globalKeyDownAction</b> (<b>globalKeyUpAction</b>) and calls the <b>handleKeyDownBubbling</b> (<b>handleKeyUpBubbling</b>) method.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>handleKeyDownBubbling (view, char, modifiers, unicode, keycode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>handleKeyUpBubbling (view, char, modifiers, unicode, keycode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by <b>keyDown</b> or <b>keyUp,</b> and either evaluated the key actions, or bubbles up to the parent view, which may then respond.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>keyModifiersChanged (modifiers)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Evaluates the <b>keyModifiersChangedAction</b> and calls the <b>handleKeyModifiersChangedBubbling</b> method.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>handleKeyModifiersChangedBubbling (view, modifiers)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by <b>keyModifiersChanged,</b> and either evaluated the <b>keyModifiersChangedAction</b>, or bubbles up to the parent view, which may then respond.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Subclassing and Internal Methods: Mouse Actions</b></p>
-<p class="p11"><br></p>
-<p class="p1">The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseDown (x, y, modifiers, buttonNumber, clickCount)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseUp (x, y, modifiers)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseMove (x, y, modifiers)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>mouseOver (x, y)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>These are the methods to override</b> in your subclass<b>. </b>If you override these, remember to call <b>mouseDownAction</b>, <b>mouseUpAction</b>, <b>mousMoveAction</b>, or <b>mouseOverAction</b> in your method so that users can still set addidtional custom mouse actions. These are called by the primitive.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Subclassing and Internal Methods: Drag and Drop Actions</b></p>
-<p class="p11"><br></p>
-<p class="p1">The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p2"><br></p>
-<p class="p1">The next three methods are the ones you will most likely override in your custom View subclass</p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultGetDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Override this in your subclass</b>. The default method for determining the content of a drag. Many subclases override this for their specific behaviors. called by <b>beginDrag</b>.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultCanReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Override this in your subclass</b>. The default method for determining under which condidtions a view will recieve a drag. Many subclases override this for their specific behaviors. Called by <b>canReceiveDrag.</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defaultReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Override this in your subclass</b>. The default method for determining what to do with a recieved . Many subclases override this for their specific behaviors. Called by <b>receiveDrag.</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*importDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called when an NSString is the drag object from outside of the SC app.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Override this in your subclass.</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>beginDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by the primitive. Calls <b>beginDragAction </b>or<b> defaultGetDrag</b>, depending on whether <b>beginDragAction</b> is nil.</p>
-<p class="p5"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>canReceiveDrag</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by the primitive. Calls <b>beginDragAction </b>or<b> defaultGetDrag</b>, depending on whether <b>beginDragAction</b> is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>receiveDrag (x, y)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Called by the primitive. Calls <b>canReceiveDragHandler.</b></p>
-<p class="p5"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SCWindow.html b/Help/GUI/Cocoa-GUI/SCWindow.html
deleted file mode 100644
index 66169ea..0000000
--- a/Help/GUI/Cocoa-GUI/SCWindow.html
+++ /dev/null
@@ -1,315 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000eb}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000b4; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ba0000}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ba0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000b4}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {text-decoration: underline ; color: #0000b4}
-span.s6 {text-decoration: underline ; color: #0000eb}
-span.s7 {color: #3c3c3c}
-span.s8 {color: #ba0000}
-span.s9 {font: 9.0px Monaco}
-span.s10 {color: #006206}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCWindow<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Cocoa user interface window</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">A class representing a user interface window in the Cocoa gui system on OSX.</p>
-<p class="p2"><br></p>
-<p class="p1">Besides providing a window in which to host <a href="SCView.html"><span class="s2">SCView</span></a>, SCWindow is also a canvas on which you can draw using Pen. See the <a href="SCPen.html"><span class="s2">SCPen</span></a> file for many examples.</p>
-<p class="p2"><br></p>
-<p class="p1">For modal versions of SCWindow see <a href="SCModalWindow.html"><span class="s2">SCModalWindow</span></a> and <a href="SCModalSheet.html"><span class="s2">SCModalSheet</span></a><span class="s2">.</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also: </b><a href="SCView.html"><span class="s4">SCView</span></a>, <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="SCScrollTopView.html"><span class="s4">SCScrollTopView</span></a>, <a href="SCPen.html"><span class="s5">SCPen</span></a></span><span class="s2">, <a href="SCUserView.html"><span class="s6">SCUserView</span></a>, <a href="SCImage/SCImage.html"><span class="s6">SCImage</span></a></span><span class="s5">,</span><span class="s3"> <a href="SCModalWindow.html"><span class="s5">SCModalWindow</span></a>, <a href="SCModalSheet.html"><span class="s5">SCModalSheet</span></a></span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="SCVLayoutView.html"><span class="s5">SCVLayoutView</span></a></span><span class="s2">, <a href="SCHLayoutView.html"><span class="s6">SCHLayoutView</span></a>, <a href="../GUI-Tools/FlowLayout.html"><span class="s6">FlowLayout</span></a></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Some Important Issues Regarding SCWindow</b></p>
-<p class="p2"><br></p>
-<p class="p1">If you try to set parameters of a Window or a GUI widget from a<span class="Apple-converted-space">  </span>Routine , which uses the <a href="../../Scheduling/SystemClock.html"><span class="s2">SystemClock</span></a> by default, you must wrap it in a deferred function: { myWindow.bounds_( Rect(100,500,200,200) ) }.defer .<span class="Apple-converted-space">  </span>You do not need to use .defer, if you use the <a href="../../Scheduling/AppClock.html"><span class="s2">AppClock</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new(name, bounds, resizable, border, server, scroll)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a new SCWindow instance. You will need to call <b>front</b> (see below) on it before it will be visible.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- The name that will be displayed in the title bar. An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a> or <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>. The default is 'panel'.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - A <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> specifying the location and size of the window. The size does not include the title bar. <b>N.B. </b>Location is measured from the <i>bottom left</i><span class="Apple-tab-span">	</span>of the screen. This is different from view location, which is measured from the <i>upper left</i> of the window (not including the title bar). The default is Rect(128, 64, 400, 400).</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>resizable</b> - A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether this window can be resized by the user. The default is true.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>border</b> - A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether this window has a border. Borderless windows have no title bar and thus can only be closed in code. The default is true.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server</b> - This is a dummy argument which is here to provide compatibility with SwingOSC and has no effect. See <a href="../GUI-Tools/GUI.html"><span class="s2">GUI</span></a> for more details.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>scroll</b> - A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether this window will add scrollers if its contents exceed its bounds. If this is set to true resize settings will be ignored for enclosed views. See <a href="SCScrollTopView.html"><span class="s2">SCScrollTopView</span></a>. The default is false.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new;</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front; </span>// draw it and bring it to the front</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*allWindows</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an <a href="../../Collections/Array.html"><span class="s2">Array</span></a> of all open SCWindows.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*initAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*initAction_(func)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set and action to be performed when any window is created.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>func</b> - An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*closeAll</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Closes all open SCWindows.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*screenBounds</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> indicating the bounds of the current screen in pixels.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p13"><b>Instance Methods</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>addFlowLayout(margin, gap)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A convenience utility which sets view.decorator to FlowLayout and returns the decorator. See FlowLayout for examples.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin</b> - An instance of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap</b> - An instance of <a href="../../Geometry/Point.html"><span class="s2">Point</span></a></p>
-<p class="p9"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>acceptsClickThrough_(boolean)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>acceptsClickThrough</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not the window receives clicks when it is not front-most. The default is true.</p>
-<p class="p9"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>acceptsMouseOver_(boolean)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>acceptsMouseOver</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not the window receives mouseOver events. The default is false.</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>alpha_(alpha)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the transparency of this window. <b>alpha </b>is a Float between 0.0 (invisible) and 1.0 (opaque).</p>
-<p class="p9"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>alwaysOnTop_(bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>alwaysOnTop</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> value indicating whether this window is always front-most. The default is false.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>bounds_(argBounds)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>bounds</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> corresponding to the location and size of the window. The size does not include the title bar. <b>N.B. </b>Location is measured from the <i>bottom left</i> of the screen. This is different from view location, which is measured from the <i>upper left</i> of the window (not including the title bar). Note that because of the way Cocoa applications work, setting the bounds doesn't complete until the application finishes its current application event cycle. Thus, if you check the bounds in the same chunk of code, the SCWindow will not yet return the updated values.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new(<span class="s7">"test"</span>);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds = <span class="s2">Rect</span>(150, 450, 150, 150);</p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds.postln; </span>// still the old bounds</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ w.bounds.postln; <span class="s2">nil</span> }.defer(0.1); <span class="s8">// next application event cycle</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>close</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Closes this window.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>drawHook_(function)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>drawHook</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a drawing <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a>. See <a href="../Main-GUI/Pen.html"><span class="s2">Pen</span></a> for more information and many examples.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>front</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Display this window and bring it to the front.<span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>fullScreen</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>endFullScreen</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Puts the window in or out of full screen mode. Putting a window into fullScreen mode may change its bounds.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Use the <b>escape</b> key to exit full screen mode and close the window.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new(border: <span class="s2">false</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s2">Color</span>.rand);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.fullScreen;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Button</span>.new(w, <span class="s2">Rect</span>(200,200,200,200)).states_([[<span class="s7">"Close Window"</span>]]).action_({w.endFullScreen;w.close});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><b>isClosed</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether this window has been closed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><b>minimize</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Minimize this window to the dock.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>name_(argName)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>name</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a String corresponding to the text in this window's title bar.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><b>onClose_(val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>onClose</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> to be evaluated when the window is closed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9"><span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><b>addToOnClose(function)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>removeFromOnClose(funcion)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Add or remove a <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> to be evaluated when the window is closed.<span class="s9"><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><b>refresh</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Force this window and its contents to redraw. This is sometimes necessary in order to update drawing.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>setInnerExtent(w,h)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Changes the size of this window while keeping the top left corner fixed. This is the usual desired behavior, as by default Cocoa uses a flipped coordinate system.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>setTopLeftBounds(rect,menuSpacer)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the bounds of the window using topLeft as a reference point, just like in View.<span class="Apple-converted-space">  </span>The menuSpacer defaults to 45, the height of the OSX menu bar.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><b>userCanClose_(bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>userCanClose</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return a <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> value indicating whether the user can close this window by clicking on its close button. The default is true.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>view</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>asView</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns this window's top level view, which contains all of its other views. This will be an instance of SCTopView or <a href="SCScrollTopView.html"><span class="s2">SCScrollTopView</span></a> depending on the value passed to the <b>scroll</b> argument when the window was created. See <b>*new</b> above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>currentSheet</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returnscurrent modal sheet attached to this window, if it exists. See <a href="SCModalSheet.html"><span class="s2">SCModalSheet</span></a></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p15">//how to add views</p>
-<p class="p14">(</p>
-<p class="p14"><span class="s2">var</span> w;</p>
-<p class="p14">w = <span class="s2">Window</span>(<span class="s7">"my name is... panel"</span>, <span class="s2">Rect</span>(128, 64, 340, 360));</p>
-<p class="p3"><br></p>
-<p class="p14">32.do({ <span class="s2">arg</span> i;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>b = <span class="s2">Button</span>(w, <span class="s2">Rect</span>(rrand(20,300),rrand(20,300), 75, 24));</p>
-<p class="p14"><span class="Apple-tab-span">	</span>b.states = [[<span class="s7">"Start "</span>++i, <span class="s2">Color</span>.black, <span class="s2">Color</span>.rand],</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s7">"Stop "</span>++i, <span class="s2">Color</span>.white, <span class="s2">Color</span>.red]];</p>
-<p class="p14">});</p>
-<p class="p14">w.front;</p>
-<p class="p14">)</p>
-<p class="p3"><br></p>
-<p class="p15">// using a decorator on this window's top view</p>
-<p class="p14">(</p>
-<p class="p14"><span class="s2">var</span> w;</p>
-<p class="p14">w = <span class="s2">Window</span>(<span class="s7">"my name is... panel"</span>, <span class="s2">Rect</span>(128, 64, 340, 360));</p>
-<p class="p3"><br></p>
-<p class="p14">w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p15">// w.addFlowLayout; // you can als write this instead of the line above</p>
-<p class="p3"><br></p>
-<p class="p14">w.view.background = <span class="s2">Color</span>(0.6,0.8,0.8);</p>
-<p class="p14">32.do({ <span class="s2">arg</span> i;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>b = <span class="s2">Button</span>(w, <span class="s2">Rect</span>(rrand(20,300),rrand(20,300), 75, 24));</p>
-<p class="p14"><span class="Apple-tab-span">	</span>b.states = [[<span class="s7">"Start "</span>++i, <span class="s2">Color</span>.black, <span class="s2">Color</span>.rand],</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s7">"Stop "</span>++i, <span class="s2">Color</span>.white, <span class="s2">Color</span>.red]];</p>
-<p class="p14">});</p>
-<p class="p3"><br></p>
-<p class="p14">w.front;</p>
-<p class="p14">)</p>
-<p class="p3"><br></p>
-<p class="p15">// setting bounds</p>
-<p class="p15">// use screenbounds for precise placement from the top</p>
-<p class="p3"><br></p>
-<p class="p14">(</p>
-<p class="p14">x = <span class="s2">Window</span>.new(<span class="s7">"test"</span>, <span class="s2">Rect</span>(100,<span class="s2">Window</span>.screenBounds.height-180,300,100));x.front;</p>
-<p class="p14">)</p>
-<p class="p3"><br></p>
-<p class="p15">// bounds.top refers to the bottom edge of the window,</p>
-<p class="p15">// measured from the bottom of the screen. Different than in View.</p>
-<p class="p14">x.bounds_(<span class="s2">Rect</span>(100,400,300,300));</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p15">// borderless windows</p>
-<p class="p15"><span class="s3">w = </span><span class="s2">Window</span><span class="s3">.new(border:</span><span class="s2">false</span><span class="s3">).front; </span>// can't be manually closed</p>
-<p class="p15"><span class="s3">w.close; </span>// so close it in code</p>
-<p class="p3"><br></p>
-<p class="p15">// onClose</p>
-<p class="p14">(</p>
-<p class="p14">x = <span class="s2">Window</span>.new.front;</p>
-<p class="p14">x.alpha = 0.8;</p>
-<p class="p15"><span class="s3">x.onClose_({ y = </span><span class="s2">Synth</span><span class="s3">.new(</span><span class="s10">\default</span><span class="s3">) }); </span>//close the window and the synth plays</p>
-<p class="p14">)</p>
-<p class="p14">x.close;</p>
-<p class="p14">y.free;</p>
-<p class="p3"><br></p>
-<p class="p15">// a window with scrollers</p>
-<p class="p14">(</p>
-<p class="p15"><span class="s3">w = </span><span class="s2">Window</span><span class="s3">(scroll: </span><span class="s2">true</span><span class="s3">); </span>// you must set this when the window is created</p>
-<p class="p14">c = <span class="s2">Slider2D</span>(w, <span class="s2">Rect</span>(0, 0, 1500, 300));</p>
-<p class="p14">d = <span class="s2">Slider</span>(w, <span class="s2">Rect</span>(0, 310, 20, 300));</p>
-<p class="p14">c.background = <span class="s2">Color</span>.grey.alpha = 0.6;</p>
-<p class="p14">d.background = <span class="s2">Color</span>.grey.alpha = 0.6;</p>
-<p class="p14">w.front;</p>
-<p class="p14">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p15">// drawing dynamically in a window with <a href="../Main-GUI/Pen.html"><span class="s5">Pen</span></a></p>
-<p class="p14">(</p>
-<p class="p14"><span class="s2">var</span> w, much = 0.02, string, synth;</p>
-<p class="p3"><br></p>
-<p class="p14">w = <span class="s2">Window</span>.new(<span class="s7">"swing"</span>, <span class="s2">Rect</span>(100, 100, 300, 500)).front;</p>
-<p class="p14">w.view.background_(<span class="s2">Color</span>.new255(153, 255, 102).vary);</p>
-<p class="p3"><br></p>
-<p class="p14">string = <span class="s7">"swing "</span>.dup(24).join;</p>
-<p class="p3"><br></p>
-<p class="p14">w.drawHook = <span class="s2">Routine</span> {<span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s2">var</span> i = 0;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s2">var</span> size = 40;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s2">var</span> func = { <span class="s2">|i, j|</span> sin(i * 0.07 + (j * 0.0023) + 1.5pi) * much + 1 };</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s2">var</span> scale;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.font = <span class="s2">Font</span>(<span class="s7">"Helvetica-Bold"</span>, 40);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>loop {<span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = i + 1;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>string.do {<span class="Apple-tab-span">	</span><span class="s2">|char, j|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scale = func.value(i, j).dup(6);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.fillColor = <span class="s2">Color</span>.new255(0, 120, 120).vary;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.matrix = scale * #[1, 0, 0, 1, 1, 0];</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pen</span>.stringAtPoint(char.asString,</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>((size * (j % 9)) - 10) @ (size * (j div: 9))</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.yield </span>// stop here, return something unimportant</p>
-<p class="p14"><span class="Apple-tab-span">	</span>}</p>
-<p class="p14">};</p>
-<p class="p3"><br></p>
-<p class="p14">fork { while { w.isClosed.not } { defer { w.refresh }; 0.04.wait; } };</p>
-<p class="p3"><br></p>
-<p class="p14">w.front;</p>
-<p class="p3"><br></p>
-<p class="p14">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Cocoa-GUI/SoundFileViewProgressWindow.html b/Help/GUI/Cocoa-GUI/SoundFileViewProgressWindow.html
deleted file mode 100644
index 3be70b1..0000000
--- a/Help/GUI/Cocoa-GUI/SoundFileViewProgressWindow.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SoundFileViewProgressWindow<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a progress window used by SCSoundFileView</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">Only for use by SCSoundFileView</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="SCSoundFileView.html">SCSoundFileView</a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (name)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- An Instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p10"><b>Actions</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>makeWindow (name)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- An Instance of <a href="../../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>update (changed, changer)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZGui.html b/Help/GUI/EZ-GUI/EZGui.html
deleted file mode 100644
index 35e8f04..0000000
--- a/Help/GUI/EZ-GUI/EZGui.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1e34a1}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #636a99}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0020f6}
-span.s6 {color: #2040df}
-span.s7 {color: #515362}
-span.s8 {color: #6f7184}
-span.s9 {color: #4357c0}
-span.s10 {color: #4c5db6}
-span.s11 {color: #3e54c5}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZGui<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract superclass for EZ widget wrappers</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">Users will not normally directly create instances of EZGui, but only use it through its subclasses. It provides the basic mechanisms for various EZ widget wrappers. It also provides a standard for EZ GUI Classes, and new EZ Classes should subclass EZGUI to help keep a consistent user interface .</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also: </b><a href="EZListView.html"><span class="s4">EZListView</span></a>, <a href="EZPopUpMenu.html"><span class="s4">EZPopUpMenu</span></a>, <a href="EZSlider.html"><span class="s4">EZSlider</span></a>, <a href="EZNumber.html"><span class="s4">EZNumber</span></a>, <a href="EZRanger.html"><span class="s4">EZRanger</span></a>, <a href="EZKnob.html"><span class="s5">EZKnob</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Accessing Instance and Class Variables</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>view</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>Returns the enclosing <a href="../Main-GUI/CompositeView.html"><span class="s6">CompositeView</span></a>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>bounds</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>Returns the bounds of the enclosing <a href="../Main-GUI/CompositeView.html"><span class="s6">CompositeView</span></a>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>label</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>label_(string)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets it the label. Will add the label view if none was initially created.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>string </b>- An Instance of <a href="../../Collections/String.html"><span class="s7">String</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>window</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>Returns the window if you used the popUp window function.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>Accessing GUI options</b></p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>alwaysOnTop_(bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>alwaysOnTop</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Makes the popup window always on top, if there is one</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An Instance of <a href="../../Core/Boolean.html"><span class="s8">Boolean</span></a>. Default is false;</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>visible</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>visible_(bool)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets it the component views are visible.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An Instance of <a href="../../Core/Boolean.html"><span class="s8">Boolean</span></a>. Default is true;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>enabled</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>enabled_(bool)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets if the list is enabled.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An Instance of <a href="../../Core/Boolean.html"><span class="s8">Boolean</span></a>. Default is true;<span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>onClose</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>onClose_(func)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets the onClose function of either <b>view</b> or <b>window</b>, depending on whether the EZ view used a popup window.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>func </b>- An Instance of <a href="../../Core/Kernel/Function.html"><span class="s9">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s9">FunctionList</span></a>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>font_(font)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An Instance of <a href="../Main-GUI/Font.html"><span class="s10">Font</span></a>;<span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>Subclassing</b></p>
-<p class="p10"><br></p>
-<p class="p1">EZGui provides a standard and basic tools for most EZ classes. If you make a new EZ class, then subclass EZGui, and override the necessary methods. If your class only has a label and a widget, chances are, you need to overide nothing, but only need to write the<span class="Apple-converted-space">  </span>new and init class methods. See existing subclasses of EZGui for examples of this. You may also want to override the following:</p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>widget</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>returns the active widget.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>subclasses will typically refer to it or ignor it, e.g.:</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>MyEZClass<span class="s3">{</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>myOtherMethods{}</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>....</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>listView{^widget}</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>action</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>action_(func)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>Gets/sets the action of the EZclass instance.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fund </b>- An Instance of <a href="../../Core/Kernel/Function.html"><span class="s11">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s11">FunctionList</span></a>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the value of the <b>widget</b>. Does not perform the action.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p13"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets thevalue of the widget. Performs do action</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Performs this.action.value(this) .</p>
-<p class="p10"><br></p>
-<p class="p5"><b>Internal Utilities</b></p>
-<p class="p10"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>prSubViewBounds(rect, hasLabel)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>This calculates the bounds of the subviews and the gaps. It returns an array of Rects, which depends on how many subview there are. Subclasses override this if they have more than one widget.</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>prMakeView(parentView,bounds);</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by init . Returns s<span class="Apple-converted-space">  </span><b>[view,bounds]</b>. The container is either the enclosing Container,<span class="Apple-converted-space">  </span>or a popUpWindow with a container.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>prSetViewParams</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Only defined by some subclassses. Sets the <b>resize</b><span class="Apple-converted-space">  </span>and <b>align</b> of all the views, according to the state of <b>layout</b><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>prMakeMarginGap(parentView, argMargin, argGap)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called in the<span class="Apple-converted-space">  </span>init method of all subclasses.<span class="Apple-converted-space">  </span>Sets the margin and gap of<span class="Apple-converted-space">  </span><b>view</b>. By default, it tries to get its parent's gap, otherwise it defaults to 2 at 2. Setting argGap<span class="Apple-converted-space">  </span>overrides these.</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZKnob.html b/Help/GUI/EZ-GUI/EZKnob.html
deleted file mode 100644
index 2e15eee..0000000
--- a/Help/GUI/EZ-GUI/EZKnob.html
+++ /dev/null
@@ -1,469 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p16 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {font: 11.0px Monaco}
-span.s6 {color: #bf0000}
-span.s7 {color: #007300}
-span.s8 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZKnob<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>wrapper class for label, knob, number box</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="EZGui.html"><span class="s2"><b>EZGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">EZKnob is wrapper class which creates an (optional) <a href="../Main-GUI/StaticText.html"><span class="s2">StaticText</span></a>, and a <a href="../Main-GUI/Knob.html"><span class="s2">Knob</span></a><span class="s2"> </span>plus a <a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a>. If the parent is nil, then EZKnob will create its own window. See <a href="EZGui.html"><span class="s2">EZGui</span></a> more options.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../Main-GUI/Knob.html"><span class="s2">Knob</span></a>, <a href="../Main-GUI/NumberBox.html"><span class="s4">NumberBox</span></a>, <a href="../Main-GUI/StaticText.html"><span class="s4">StaticText</span></a>, <a href="../Main-GUI/CompositeView.html"><span class="s4">CompositeView</span></a>, <a href="EZGui.html"><span class="s4">EZGui</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Some Important Issues Regarding NumberBox</b></p>
-<p class="p2"><br></p>
-<p class="p7">Warning: EZKnob replaces the EZKnob Quark, which is now called EZKnobOld.<span class="Apple-converted-space">  </span>It is encouraged to update your code. The two classes have different creation methods and approaches, particularly concerning the <b>dimensions</b> (now <b>bounds</b>). To make the conversion process easier,<span class="Apple-converted-space">  </span>EZKnobOld has an instance method called <b>convert</b> which will post the equivallent creation code for the new EZKnob.</p>
-<p class="p8"><br></p>
-<p class="p7">Bounds: Make certain to choose bounds that are large enough to encompass the knob, the number box, and the label (if you use one), otherwise you may get confusing results. See the examples below.</p>
-<p class="p9"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parent, bounds, label, controlSpec, action, initVal, initAction, labelWidth, knobSize,unitWidth,labelHeight, layout,gap)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view or window. If the parent is nil, then EZKnob will create its own <a href="../Main-GUI/Window.html"><span class="s2">Window</span></a>, and place it conveniently on the screen if the bounds are a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. If the bounds are a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, then the Rect determines the window bounds.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. Default value is <span class="s5">160 at 20</span>.<span class="Apple-converted-space">  </span>Make certain to choose bounds that are large enough to encompass the knob, the number box, and the label (if you use one), otherwise you may get confusing results. See the examples below.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>label </b>- The label. Default value is nil. If nil, then no StaticText is created.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>controlSpec </b>- The <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a> for scaling the value.<span class="Apple-converted-space">  </span>If the minVal + maxVal of the spec is 0, then <b>centered</b> will be set to true automatically.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- A <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> called when the value changes. The function is passed the EZKnob instance as its argument.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initVal </b>- The value to initialize the knob and number box with. If nil, then it uses the ControlSpec's default value.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initAction </b>- A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether the action function should be called when setting the initial value. The default is false.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelWidth </b>- Number of pixels width for the label. default is 60. This is only valid for the \horz layout.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>knobSize </b>- An instance of Point.<span class="Apple-converted-space">  </span>It will adjust itself to maximize the space use of width/height. By default, it uses the maximum availabel height, and adjusts the withd accordingly.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>unitWidth </b>- Number of pixels width for the unit label. default is 0.<span class="Apple-converted-space">  </span>If 0, then no unitLabel is created</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelHeight</b>- Default is 20;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>layout</b>- \vert, vert2,<span class="Apple-converted-space">  </span>\line2, or \horz. default is vert;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. By default, the view tries to get its parent's gap, otherwise it defaults to 2 at 2. Setting it overrides these.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. This will inset the bounds occupied<span class="Apple-converted-space">  </span>by the subviews of view.</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">EZKnob</span>(<span class="Apple-tab-span">	</span>w,<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s6">// parent</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>50 at 90,<span class="Apple-tab-span">	</span><span class="s6">// bounds</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>" test "<span class="s3">,<span class="Apple-tab-span">	</span></span><span class="s6">// label</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">\freq</span><span class="s3">, <span class="Apple-tab-span">	</span></span>// controlSpec</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> (ez.value.asString ++<span class="s8">" is the value of "</span> ++ ez).postln} <span class="s6">// action</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Simplest version, no parent view, so a window is created</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(label:<span class="s8">" test "</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.action_({<span class="s2">|ez|</span> (ez.value.asString ++<span class="s8">" is the value of "</span> ++ ez).postln});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1">The contained views can be accessed via the EZKnob instance variables:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>labelView</b>, <b>knobView</b>, <b>numberView</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p15"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numberView</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the <b>numberView</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>action</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>action_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A function to be evaluated when the value changes. Te first argument will be the EZKnob.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. Default value is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The value of the knob</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>centered_(bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>centered</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets/Gets whether the<span class="Apple-converted-space">  </span>knob is in centered mode. See <a href="../Main-GUI/Knob.html"><span class="s2">Knob</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>round_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>round</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Rounds the values in the number box.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>controlSpec_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>controlSpec</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An instance of <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a> for scaling the values.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the list/menu to the index at value. Does not perform the action.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the value and performs the action at the index value and the global action.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Performs the action at the current index and the global action.</p>
-<p class="p8"><br></p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>set (label, spec, argAction, initVal, initAction)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the args after creation. You can only set the label if it was not nil from the beginning.</p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>visible</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>visible_(bool)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets it the component views are visible.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An Instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default is true;</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><b>Changing Appearance</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setColors(stringBackground,stringColor,numBackground,</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor,numNormalColor,numTypingColor,knobColor,background)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stringBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the label and unit views.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the label and unit views.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>numColor</b> of the number view.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the number view.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numNormalColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>normalColor</b> of the number view.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numTypingColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>typingColor</b> of the number view.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>knobColor</b> of the knob view.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>background </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>backround</b> of the enclosing view.</p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>font_(font)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the Font used by all the views.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p15"><b>Examples</b></p>
-<p class="p17"><br></p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// basic use</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(w, 50 at 90,<span class="s8">" test<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,{<span class="s2">|a|</span> a.value.postln});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">// lots of knobs on on view</p>
-<p class="p12">(</p>
-<p class="p12">w=<span class="s2">Window</span>.new.front;</p>
-<p class="p12">w.view.decorator=<span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p12">w.view.decorator.gap=2 at 2;</p>
-<p class="p3"><br></p>
-<p class="p12">20.do{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">EZKnob</span>(w, 180 at 24,<span class="s8">" Freq "</span>, <span class="s7">\freq</span>,unitWidth:30,initVal:6000.rand,layout:<span class="s7">\horz</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>,11));</p>
-<p class="p3"><br></p>
-<p class="p12">};</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s2">Window</span><span class="s3">.closeAll<span class="Apple-converted-space">  </span></span>// use this to close all the windows</p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////////////////////////////////////////////////////</p>
-<p class="p14">////////// click these parentheses to see all features and layouts<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p12">(<span class="Apple-converted-space">   </span></p>
-<p class="p12">m=<span class="s2">nil</span>;</p>
-<p class="p14"><span class="s3">m=2 at 2;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// comment this for no margin</p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////</p>
-<p class="p14">/// Layout \line2</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features, small font</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 128 at 40,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:20,layout:<span class="s7">\line2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,50);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>,10));</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 118 at 40,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:0,layout:<span class="s7">\line2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -40);</p>
-<p class="p12">);</p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label, so use window name as label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 118 at 30, <span class="s2">nil</span>, <span class="s7">\freq</span>,labelWidth:100, unitWidth:20,layout:<span class="s7">\line2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -130);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////</p>
-<p class="p14">/// Layout \horz</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 200 at 28,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:30,layout:<span class="s7">\horz</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(0,50);</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 160 at 28,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,layout:<span class="s7">\horz</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(0, -30);</p>
-<p class="p12">);</p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label, so use window name as label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 120 at 28, <span class="s2">nil</span>, <span class="s7">\freq</span> ,layout:<span class="s7">\horz</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(0, -110);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////</p>
-<p class="p14">/// Layout \vert</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 82 at 82,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:18,layout:<span class="s7">\vert</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>, 10));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(220,50);</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView, with label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 70 at 90,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:0,layout:<span class="s7">\vert</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(220,-90);</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 120 at 60,<span class="s2">nil</span>, <span class="s7">\freq</span>, unitWidth:30,layout:<span class="s7">\vert</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(220,-230);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no lablel, so use window name as label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 120 at 60,<span class="s2">nil</span>, <span class="s7">\freq</span>,unitWidth:0,layout:<span class="s7">\vert</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(220,-340);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////</p>
-<p class="p14">/// Layout \vert2</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 82 at 82,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:18,layout:<span class="s7">\vert2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>, 10));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(350,50);</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView, with label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 70 at 90,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:0,layout:<span class="s7">\vert2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(350,-90);</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 120 at 60,<span class="s2">nil</span>, <span class="s7">\freq</span>, unitWidth:30,layout:<span class="s7">\vert2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(350,-230);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no lablel, so use window name as label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZKnob</span>(<span class="s2">nil</span>, 120 at 60,<span class="s2">nil</span>, <span class="s7">\freq</span>,unitWidth:0,layout:<span class="s7">\vert2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(350,-340);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">)<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">///////////////////////////////////////////////////////////////</p>
-<p class="p14">///////////////////////////////////////////////////////////////</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p14">// Sound example</p>
-<p class="p12">(</p>
-<p class="p14">// start server</p>
-<p class="p12">s.waitForBoot({</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s2">var</span> w, startButton, noteControl, cutoffControl, resonControl;</p>
-<p class="p12"><span class="s2">var</span> balanceControl, ampControl;</p>
-<p class="p12"><span class="s2">var</span> node, cmdPeriodFunc;</p>
-<p class="p3"><br></p>
-<p class="p14">// define a synth</p>
-<p class="p12"><span class="s2">SynthDef</span>(<span class="s8">"window-test"</span>, { <span class="s2">arg</span> note = 36, fc = 1000, rq = 0.25, bal=0, amp=0.4, gate = 1;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> x;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Mix</span>.fill(4, {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFSaw</span>.ar((note + {0.1.rand2}.dup).midicps, 0, 0.02)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(x, fc, rq).softclip;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(x, fc, rq, amp).softclip;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Balance2</span>.ar(x[0], x[1], bal);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.cutoff, gate, doneAction: 2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, x);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}, [0.1, 0.1, 0.1, 0.1, 0.1, 0]</p>
-<p class="p12">).load(s);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">// make the window</p>
-<p class="p12">w = <span class="s2">Window</span>(<span class="s8">"another control panel"</span>, <span class="s2">Rect</span>(20, 400, 230, 250));</p>
-<p class="p14"><span class="s3">w.front; </span>// make window visible and front window.</p>
-<p class="p12">w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p12">w.view.decorator.gap=2 at 2;</p>
-<p class="p3"><br></p>
-<p class="p14">// add a button to start and stop the sound.</p>
-<p class="p12">startButton = <span class="s2">Button</span>(w, 75 @ 20);</p>
-<p class="p12">startButton.states = [</p>
-<p class="p12"><span class="Apple-tab-span">	</span>[<span class="s8">"Start"</span>, <span class="s2">Color</span>.black, <span class="s2">Color</span>.green(0.7)],</p>
-<p class="p12"><span class="Apple-tab-span">	</span>[<span class="s8">"Stop"</span>, <span class="s2">Color</span>.white, <span class="s2">Color</span>.red(0.7)]</p>
-<p class="p12">];</p>
-<p class="p12">startButton.action = {<span class="s2">|view|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (view.value == 1) {</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// start sound</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node = <span class="s2">Synth</span>( <span class="s8">"window-test"</span>, [</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"note"</span>, noteControl.value,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"fc"</span>, cutoffControl.value,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"rq"</span>, resonControl.value,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"bal"</span>, balanceControl.value,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"amp"</span>, ampControl.value.dbamp ]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set gate to zero to cause envelope to release</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.release; node = <span class="s2">nil</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12">};</p>
-<p class="p3"><br></p>
-<p class="p14">// create controls for all parameters</p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">noteControl = <span class="s2">EZKnob</span>(w, 220 @ 32, <span class="s8">"Note "</span>, <span class="s2">ControlSpec</span>(24, 60, <span class="s7">\lin</span>, 1, 36, <span class="s7">\note</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"note"</span>, ez.value )}, unitWidth:30,layout:<span class="s7">\horz</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">cutoffControl = <span class="s2">EZKnob</span>(w, 220 @ 32, <span class="s8">"Cutoff "</span>, <span class="s2">ControlSpec</span>(200, 5000, <span class="s7">\exp</span>,0.01,1000,<span class="s7">\Hz</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"fc"</span>, ez.value )}, unitWidth:30,layout:<span class="s7">\horz</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">resonControl = <span class="s2">EZKnob</span>(w, 220 @ 32, <span class="s8">"Reson "</span>, <span class="s2">ControlSpec</span>(0.1, 0.7,<span class="s7">\lin</span>,0.001,0.2,<span class="s7">\rq</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"rq"</span>, ez.value )}, unitWidth:30,layout:<span class="s7">\horz</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">balanceControl = <span class="s2">EZKnob</span>(w, 220 @ 32, <span class="s8">"Balance "</span>, <span class="s7">\bipolar</span>,</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"bal"</span>, ez.value )},<span class="Apple-converted-space">  </span>unitWidth:30,layout:<span class="s7">\horz</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">ampControl = <span class="s2">EZKnob</span>(w, 220 @ 32, <span class="s8">"Amp "</span>, <span class="s7">\db</span>,</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"amp"</span>, ez.value.dbamp )}, -6, unitWidth:30,layout:<span class="s7">\horz</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p14">// set start button to zero upon a cmd-period</p>
-<p class="p12">cmdPeriodFunc = { startButton.value = 0; };</p>
-<p class="p12"><span class="s2">CmdPeriod</span>.add(cmdPeriodFunc);</p>
-<p class="p3"><br></p>
-<p class="p14">// stop the sound when window closes and remove cmdPeriodFunc.</p>
-<p class="p12">w.onClose = {</p>
-<p class="p12"><span class="Apple-tab-span">	</span>node.free; node = <span class="s2">nil</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">CmdPeriod</span>.remove(cmdPeriodFunc);</p>
-<p class="p12">};</p>
-<p class="p12">});</p>
-<p class="p12">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">//////////////////////////////</p>
-<p class="p14">// more examples</p>
-<p class="p14">// these mimick the original<span class="Apple-converted-space">  </span>EZKnob layout and colors</p>
-<p class="p3"><br></p>
-<p class="p12">(</p>
-<p class="p12">w = <span class="s2">Window</span>(<span class="s8">"EZKnob"</span>, <span class="s2">Rect</span>(380,400,300,180)).front;</p>
-<p class="p12">w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p12">k = <span class="s2">EZKnob</span>(w, 42 @ 74, <span class="s8">"Knob"</span>, action: { <span class="s2">arg</span> knb; knb.value.postln; }, margin:2 at 2, labelHeight:16);</p>
-<p class="p12">k.view.background_(<span class="s2">Color</span>.grey.alpha_(0.4));</p>
-<p class="p12">)</p>
-<p class="p12">k.centered_(<span class="s2">true</span>)</p>
-<p class="p12">k.value=0.5;</p>
-<p class="p12">k.visible_(<span class="s2">false</span>)</p>
-<p class="p12">k.visible_(<span class="s2">true</span>)</p>
-<p class="p3"><br></p>
-<p class="p12">k.enabled_(<span class="s2">false</span>)</p>
-<p class="p12">k.value = 0.1</p>
-<p class="p12">k.enabled</p>
-<p class="p12">k.enabled_(<span class="s2">true</span>)</p>
-<p class="p12">k.value = 0.25</p>
-<p class="p3"><br></p>
-<p class="p12">(</p>
-<p class="p12">w = <span class="s2">Window</span>(<span class="s8">"EZKnob"</span>, <span class="s2">Rect</span>(380,400,300,180)).front;</p>
-<p class="p12">w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds, gap: 1 at 1);</p>
-<p class="p12"><span class="s2">StaticText</span>(w, (42 * 4 + 3) @ 16).string_(<span class="s8">"EZKnob Cluster"</span>).background_(<span class="s2">Color</span>.blue(0.1,0.1));</p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">a = [</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EZKnob</span>(w, 42 @ 74, <span class="s8">"knob 1"</span>, margin:2 at 2, labelHeight:16),</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EZKnob</span>(w, 42 @ 74, <span class="s8">"knob 2"</span>, controlSpec: <span class="s7">\freq</span>, margin:2 at 2, labelHeight:16),</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EZKnob</span>(w, 42 @ 74, <span class="s8">"knob 3"</span>, controlSpec: <span class="s7">\pan</span>, margin:2 at 2, labelHeight:16).round_(0.001),</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EZKnob</span>(w, 42 @ 74, <span class="s8">"knob 4"</span>, controlSpec: <span class="s7">\rq</span>, margin:2 at 2, labelHeight:16)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>];</p>
-<p class="p12">a.do{<span class="s2">arg</span> a;a.view.background_(<span class="s2">Color</span>.grey.alpha_(0.4))};</p>
-<p class="p12">)</p>
-<p class="p14">// a now holds the array of knobs</p>
-<p class="p12">a</p>
-<p class="p12">a[0].value</p>
-<p class="p12">a[3].value_(0.5)</p>
-<p class="p12">a.collect(<span class="s2">_</span>.value );</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZListView.html b/Help/GUI/EZ-GUI/EZListView.html
deleted file mode 100644
index 22f0046..0000000
--- a/Help/GUI/EZ-GUI/EZListView.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {font: 11.0px Monaco}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.s6 {color: #606060}
-span.s7 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZListView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a wrapper class for a label plus a listView with per item actions</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="EZGui.html"><span class="s2"><b>EZGui</b></span></a><b> : </b><a href="EZLists.html"><span class="s2"><b>EZLists</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">EZListView is wrapper class which creates an (optional) label and a listView. It includes per item actions as well as a global action which are both evaluated upon selection of an item. Convenience methods for inserting and deleting list items are also included . If the parent is nil, then EZListView will create its own window. See <a href="EZGui.html"><span class="s2">EZGui</span></a> and <a href="EZLists.html"><span class="s2">EZLists</span></a> for all of the options.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="../Main-GUI/ListView.html"><span class="s2">ListView</span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding EZListView</b></p>
-<p class="p2"><br></p>
-<p class="p1">The convenience methods for EZListView require that the items array is an array of associations of labels and functions, not like in <a href="../Main-GUI/ListView.html"><span class="s2">ListView</span></a>, where items is simply an array of strings. If <b>label</b> is nil, then no staticText is created.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parentView, bounds, label, items, globalAction, initVal, initAction, labelWidth, labelHeight,layout,gap)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view or window. If the parent is nil, then EZListView will create its own <a href="../Main-GUI/Window.html"><span class="s2">Window</span></a>, and place it conveniently on the screen if the bounds are a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. If the bounds are a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, then the Rect determines the window bounds.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. Default value is <span class="s3">160 at 200</span>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>label </b>- The label. Default value is nil. If nil, then no StaticText is created.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>items </b>- Default value is nil. An Array of <a href="../../Collections/Association.html"><span class="s2">Association</span></a>s ['label' -> {arg listObj; value}, ].Or and Array Symbols (if you are only using <b>globalAction</b>).</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>globalAction </b>- a Global function to be performed in addition to the item functions {arg listObj; value}.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initVal </b>- Initial <b>value</b> of the List, i.e. the index selected. Default value is 0.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initAction </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Performs the action at <b>initVal</b> on creation of the list, plus the <b>globalAction</b>. Default value is false.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelWidth </b>- Default value is 80. Not used if <b>layout</b> is \vert.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelHeight </b>- Default value is 20. Not used if <b>layout</b> is \horz.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>layout</b>- \vert or \horz. default is vert;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. By default, the view tries to get its parent's gap, otherwise it defaults to 2 at 2. Setting it overrides these.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. This will inset the bounds occupied<span class="Apple-converted-space">  </span>by the subviews of view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// default with vertical layout</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">EZListView</span>.new(w,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>230 at 230,</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"An ListView:"<span class="s4">,</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\item0</span> ->{<span class="s2">|a|</span> (<span class="s6">"this is item 0 of "</span> ++ a).postln},</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\item1</span> ->{<span class="s2">|a|</span> (<span class="s6">"this is item 1 of "</span> ++ a).postln},</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\item2</span> ->{<span class="s2">|a|</span> (<span class="s6">"this is item 2 of "</span> ++ a).postln},</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>globalAction: {<span class="s2">|a|</span> (<span class="s6">"this is a global action of "</span>++a.asString ).postln},</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>initVal: 2,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>initAction: <span class="s2">true</span>,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>labelWidth: 120,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>labelHeight: 16,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>layout: <span class="s5">\vert</span>,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gap: 2 at 2</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or a more simple syntax (uses decorator gap settings):</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">EZListView</span>.new(w,200 at 230, <span class="s6">" List:"</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.addItem(<span class="s5">\item0</span>, {<span class="s2">|a|</span> (<span class="s6">"this is item 0 of "</span> ++ a).postln});</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.addItem(<span class="s5">\item1</span>, {<span class="s2">|a|</span> (<span class="s6">"this is item 1 of "</span> ++ a).postln});</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.addItem(<span class="s5">\item2</span>, {<span class="s2">|a|</span> (<span class="s6">"this is item 2 of "</span> ++ a).postln});</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><b>Changing Appearance</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setColors(stringBackground,stringColor,listBackground,listStringColor,</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>selectedStringColor,hiliteColor,background)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stringBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the label and unit views.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the label and unit views.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>listBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the list view.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>listStringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the list view.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>selectedStringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>selectedStringColor</b> of the listView.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hiliteColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>hiliteColor</b> of the list view.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>background </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the list view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font_(font)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the Font used by all the views.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Examples</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p11">// Creates its own window if parent is nil:</p>
-<p class="p10">(</p>
-<p class="p10">g = <span class="s2">EZListView</span>.new(label: <span class="s6">" My PopUp List: "</span>);</p>
-<p class="p10">g.addItem(<span class="s5">\item0</span>, {<span class="s6">"this is item 0"</span>. postln});</p>
-<p class="p10">g.addItem(<span class="s5">\item1</span>, {<span class="s6">"this is item 1"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item2</span>, {<span class="s6">"this is item 2"</span>. postln});</p>
-<p class="p13">g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p3"><br></p>
-<p class="p13">)</p>
-<p class="p3"><br></p>
-<p class="p11">// Layout horizontal:</p>
-<p class="p10">(</p>
-<p class="p10">g = <span class="s2">EZListView</span>.new(<span class="s2">nil</span>,205 at 180, <span class="s6">"Choose One: "</span>, layout:<span class="s5">\horz</span>);</p>
-<p class="p10">10.do{<span class="s2">|i|</span> g.addItem(<span class="s6">"item"</span>++i.asString, {(<span class="s6">"this is item"</span> ++i.asString). postln})};</p>
-<p class="p13">g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p13">)</p>
-<p class="p3"><br></p>
-<p class="p11">// No labelView created, so set the window title;</p>
-<p class="p10">(</p>
-<p class="p10">g = <span class="s2">EZListView</span>.new(bounds:200 at 230); <span class="s7">// no label</span></p>
-<p class="p10">12.do{<span class="s2">|i|</span> g.addItem(<span class="s6">"item"</span>++i.asString, {(<span class="s6">"this is item"</span> ++i.asString). postln})};</p>
-<p class="p13">g.view.parent.findWindow.name=<span class="s6">" choose item"</span>;</p>
-<p class="p13">)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p11">// insert item;</p>
-<p class="p10">(</p>
-<p class="p10">g = <span class="s2">EZListView</span>.new(<span class="s2">nil</span>,200 at 200, <span class="s6">"List:"</span>);</p>
-<p class="p13">g.addItem(<span class="s5">\item0</span>, {<span class="s6">"this is item 0"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item1</span>, {<span class="s6">"this is item 1"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item2</span>, {<span class="s6">"this is item 2"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item4</span>, {<span class="s6">"this is item 4"</span>. postln});</p>
-<p class="p13">)</p>
-<p class="p3"><br></p>
-<p class="p13">g.insertItem(3, <span class="s5">\item3</span>, {<span class="s6">"this is item 3"</span>. postln});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11">// remove item;</p>
-<p class="p10">(</p>
-<p class="p10">g = <span class="s2">EZListView</span>.new(<span class="s2">nil</span>,200 at 200, <span class="s6">"List:"</span>);</p>
-<p class="p13">g.addItem(<span class="s5">\item0</span>, {<span class="s6">"this is item 0"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item1</span>, {<span class="s6">"this is item 1"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item2</span>, {<span class="s6">"this is item 2"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item4</span>, {<span class="s6">"this is item 4"</span>. postln});</p>
-<p class="p13">g.insertItem(3, <span class="s5">\item3</span>, {<span class="s6">"this is item 3"</span>. postln});</p>
-<p class="p13">)</p>
-<p class="p3"><br></p>
-<p class="p13">g. removeItemAt(1);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p11">// replace item;</p>
-<p class="p10">(</p>
-<p class="p10">g = <span class="s2">EZListView</span>.new(<span class="s2">nil</span>,200 at 200, <span class="s6">"List:"</span>);</p>
-<p class="p13">g.addItem(<span class="s5">\item0</span>, {<span class="s6">"this is item 0"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item1</span>, {<span class="s6">"this is item 1"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item2</span>, {<span class="s6">"this is item 2"</span>. postln});</p>
-<p class="p13">g.addItem(<span class="s5">\item3</span>, {<span class="s6">"this is item 3"</span>. postln});</p>
-<p class="p13">)</p>
-<p class="p3"><br></p>
-<p class="p13">g.replaceItemAt(2, <span class="s5">\item2_replaced</span>, {<span class="s6">"this is item 2 replaced"</span>. postln});</p>
-<p class="p3"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZLists.html b/Help/GUI/EZ-GUI/EZLists.html
deleted file mode 100644
index 544c4c1..0000000
--- a/Help/GUI/EZ-GUI/EZLists.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZLists<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract superclass for EZListView and EZPopUpMenu</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="EZGui.html"><span class="s2"><b>EZGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">Users will not normally directly create instances of EZLists, but only use it through its subclasses. It provides the basic mechanisms for EZListView and EZPopUpMenu.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="EZListView.html"><span class="s4">EZListView</span></a> and <a href="EZPopUpMenu.html"><span class="s4">EZPopUpMenu</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parentView, bounds, label, items, globalAction, initVal, initAction, labelWidth, layout, gap)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b>Building and Changing the List</b></p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>globalAction_(function)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>globalAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a Global function to be performed in addition to the item functions: {arg listObj; value}.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>items</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>items_ (assocArray)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>assocArray </b>- An Array of <a href="../../Collections/Association.html"><span class="s2">Association</span></a>s including the labels and the item functions: ['label' -> {arg listObj; value}, ]. In menus, the OS X graphics system gives special meanings to some characters. See <a href="../Cocoa-GUI/SCPopUpMenu.html"><span class="s2">SCPopUpMenu</span></a>; Or and Array Symbols (if you are only using <b>globalAction</b>). Arrays of Symbols will get converted into and array of Associations with and empty Function:['label' -> {}, ].</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>item</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the item label of the current selection.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>itemFunc</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the item function of the current selection</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>addItem (name, action)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Adds an item.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a> or <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>. The name of the list/menu item.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- An instanc of Function.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>insertItem (index, name, action)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Inserts a list/menu item at positiion of index.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer. The index where to insert an item.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a> or <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>. The name of the list/menu item.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- A n instanc of Function.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>replaceItemAt (index, name, action)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Replace a list/menu item at positiion of index.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer. The index where to insert an item.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- An instance of <a href="../../Collections/String.html"><span class="s2">String</span></a> or <a href="../../Core/Symbol.html"><span class="s2">Symbol</span></a>. The name of the list/menu item. Default is the current item label.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- A n instanc of Function. Default is the current item action-</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>removeItemAt (index)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Removes a list/menu item at positiion of index.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index </b>- An integer. The index where to remove an item.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>remove</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>removes both the view, label and the list/menu from the parent view.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p9"><b>Accessing Values</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the list/menu to the index at value. Does not perform the action.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the value and performs the action at the index value and the global action.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Performs the action at the current index and the global action.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>initViews</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Called by init and overriden by all subclasses. This is where the class specific views are built.</p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZNumber.html b/Help/GUI/EZ-GUI/EZNumber.html
deleted file mode 100644
index 7b9b639..0000000
--- a/Help/GUI/EZ-GUI/EZNumber.html
+++ /dev/null
@@ -1,336 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {font: 11.0px Monaco}
-span.s4 {color: #bf0000}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.s7 {color: #606060}
-span.s8 {font: 11.0px Monaco; color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZNumber<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>wrapper class for label and number box</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object : </b><a href="EZGui.html"><span class="s2"><b>EZGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">EZNumber is wrapper class which creates an (optional) <a href="../Main-GUI/StaticText.html"><span class="s2">StaticText</span></a>, and a <a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding NumberBox</b></p>
-<p class="p1">If the parent is nil, then EZNumber will create its own window. See <a href="EZGui.html"><span class="s2">EZGui</span></a> more options.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Scrolling and Arrow Keys</b></p>
-<p class="p1">EZNumber scrolls by default, using the step size of the <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a>. If the controlSpec's step is set to 0, or is not set, then the the stepping and scrolling will be guessed according to the <b>minval</b> and <b>maxval</b> values of the spec on creation of the view.<span class="Apple-converted-space">  </span>Unlike the step variable of a regular NumberBox, <b>controlSpec.step</b> is also the smallest possible increment for the EZNumber.<span class="Apple-converted-space">  </span>By default, the shift-key modifier<span class="Apple-converted-space">  </span>will allow you to step by 100 x controlSpec.step , while the ctrl-key will give you 10x controlSpec.step.<span class="Apple-converted-space">  </span>Since the alt-key would give you 0.1 of the minimum step, it is disabled by default, but you can change that by setting <b>numberView.alt_step</b> to any value you like<b>.</b> Accordingly you can customize the other modifiers to fit your needs. See <a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds, label, controlSpec, action, initVal, initAction, labelWidth, numberWidth, unitWidth, labelHeight, layout, gap)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view or window. If the parent is nil, then EZNumber will create its own <a href="../Main-GUI/Window.html"><span class="s2">Window</span></a>, and place it conveniently on the screen if the bounds are a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. If the bounds are a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, then the Rect determines the window bounds.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. Default value is <span class="s3">160 at 20</span>.</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>label </b>- The label. Default value is nil. If nil, then no StaticText is created.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>controlSpec </b>- The <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a> for scaling the value.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- A <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> called when the value changes. The function is passed the EZNumber instance as its argument.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initVal </b>- The value to initialize the slider and number box with. If nil, then it uses the ControlSpec's default value.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initAction </b>- A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether the action function should be called when setting the initial value. The default is false.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelWidth </b>- Number of pixels width for the label. The<span class="Apple-converted-space">  </span>default is 60. In the \horz <b>layout, </b>if you specify the <b>numberWidth</b>, then the <b>labelWidth</b> is ignored and is set to the <b>bounds.width - unitWidth - numberWidth</b>.<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numberWidth </b>- Number of pixels width for the number box. The<span class="Apple-converted-space">  </span>default is 45. In \line2 <b>layout</b>, <b>numberWidth</b> defaults to the <b>bounds.width</b> minus the <b>unitWidth</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>unitWidth </b>- Number of pixels width for the unit label. The default is 0.<span class="Apple-converted-space">  </span>If <b>unitWidth</b> is 0, then no unitLabel is created. In the \line2 <b>layout</b>, if you specify the <b>numberWidth</b>, then the <b>unitWidth</b> is ignored and is set to the <b>bounds.width - unitWidth - numberWidth.</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelHeight</b>- Default is 20;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>layout</b>- \line2, or \horz. The default is horz; \line2 is a two line version.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. By default, the view tries to get its parent's gap, otherwise it defaults to 2 at 2. Setting it overrides these.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. This will inset the bounds occupied<span class="Apple-converted-space">  </span>by the subviews of view.</p>
-<p class="p3"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">EZNumber</span>(<span class="Apple-tab-span">	</span>w,<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s4">// parent</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>150 at 20,<span class="Apple-tab-span">	</span><span class="s4">// bounds</span></p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>" test "<span class="s5">,<span class="Apple-tab-span">	</span></span><span class="s4">// label</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">\freq</span><span class="s5">, <span class="Apple-tab-span">	</span></span>// controlSpec</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> (ez.value.asString ++<span class="s7">" is the value of "</span> ++ ez).postln}, <span class="s4">// action</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>330,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// initValue</p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">true</span><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// initAction</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Simplest version, no parent view, so a window is created</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(label:<span class="s7">" test "</span>, controlSpec: <span class="s6">\amp</span>.asSpec.step_(0.01) );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.action_({<span class="s2">|ez|</span> (ez.value.asString ++<span class="s7">" is the value of "</span> ++ ez).postln});</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p7"><br></p>
-<p class="p1">The contained views can be accessed via the EZNumber instance variables:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>labelView</b>, <b>numberView</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>numberView</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the <b>numberView</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>action</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>action_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A function to be evaluated when the value changes. Te first argument will be the EZNumber.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. Default value is nil.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The value of the slider</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>round_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>round</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Rounds the values in the number box.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>controlSpec_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>controlSpec</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An instance of <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a> for scaling the values.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the list/menu to the index at value. Does not perform the action.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the value and performs the action at the index value and the global action.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Performs the action at the current index and the global action.</p>
-<p class="p7"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>set (label, spec, argAction, initVal, initAction)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the args after creation.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>enabled</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>enabled_(bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets if the list is enabled.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An Instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default is true;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p13"><b>Changing Appearance</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setColors(stringBackground,stringColor,numBackground,</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor,numNormalColor,numTypingColor,background)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stringBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the label and unit views.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the label and unit views.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the number view.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the number view.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numNormalColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>normalColor</b> of the number view.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numTypingColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>typingColor</b> of the number view.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>background </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>backround</b> of the enclosing view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font_(font)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the Font used by all the views.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p12">// Simplest version</p>
-<p class="p12"><span class="s5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// basic use</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(w, 170 at 16,<span class="s7">" test<span class="Apple-converted-space">  </span>"</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:30, numberWidth:60,layout:<span class="s6">\horz</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p10">);</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p12">// lots of numberviews on on view</p>
-<p class="p10">(</p>
-<p class="p10">w=<span class="s2">Window</span>.new.front;</p>
-<p class="p10">w.view.decorator=<span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p10">w.view.decorator.gap=2 at 2;</p>
-<p class="p3"><br></p>
-<p class="p10">40.do{</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(w, 170 at 16,<span class="s7">" test<span class="Apple-converted-space">  </span>"</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:30, numberWidth:60,layout:<span class="s6">\horz</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.8));</p>
-<p class="p10">};</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">// click these parentheses to see all features and layouts<span class="Apple-converted-space"> </span></p>
-<p class="p10">(<span class="Apple-converted-space">   </span></p>
-<p class="p3"><br></p>
-<p class="p10">m=<span class="s2">nil</span>;</p>
-<p class="p12"><span class="s5">m=2 at 2;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//comment for no margin</p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////</p>
-<p class="p12">/// Layout \horz</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(<span class="s2">nil</span>, 170 at 20,<span class="s7">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:30, numberWidth:60,layout:<span class="s6">\horz</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,background: <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,50);</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(<span class="s2">nil</span>, 170 at 20,<span class="s7">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:0, numberWidth:60,layout:<span class="s6">\horz</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,background: <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -20);</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label, with unit. use window name as label</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(<span class="s2">nil</span>, 120 at 20,<span class="s2">nil</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:30, numberWidth:60,layout:<span class="s6">\horz</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,background: <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -90);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s7">"Freq"</span>;</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no units, no label; use window name as label;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(<span class="s2">nil</span>, 120 at 20, <span class="s2">nil</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:0, numberWidth:60,layout:<span class="s6">\horz</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,background: <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -160);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s7">"Freq"</span>;</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////</p>
-<p class="p12">/// Layout \line2</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(<span class="s2">nil</span>, 120 at 42,<span class="s7">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:30, numberWidth:60,layout:<span class="s6">\line2</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,background: <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(100,50);</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView, with label</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(<span class="s2">nil</span>, 170 at 42,<span class="s7">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:0, numberWidth:60,layout:<span class="s6">\line2</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,background: <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(100, -50);</p>
-<p class="p10">);</p>
-<p class="p12"><span class="s5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView, no label; use window name as label</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZNumber</span>(<span class="s2">nil</span>, 170 at 20,<span class="s2">nil</span>, <span class="s6">\</span><span class="s8">freq</span>,unitWidth:0, numberWidth:60,layout:<span class="s6">\line2</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white,background: <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(100,-150);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s7">"Freq"</span>;</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p10">)<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">// Sound example</p>
-<p class="p10">(</p>
-<p class="p12">// start server</p>
-<p class="p10">s.waitForBoot({</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">var</span> w, startButton, noteControl, cutoffControl, resonControl;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">var</span> balanceControl, ampControl;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">var</span> node, cmdPeriodFunc;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span></span>// define a synth</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s7">"window-test"</span>, { <span class="s2">arg</span> note = 36, fc = 1000, rq = 0.25, bal=0, amp=0.4, gate = 1;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> x;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Mix</span>.fill(4, {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFSaw</span>.ar((note + {0.1.rand2}.dup).midicps, 0, 0.02)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(x, fc, rq).softclip;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(x, fc, rq, amp).softclip;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Balance2</span>.ar(x[0], x[1], bal);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.cutoff, gate, doneAction: 2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, x);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}, [0.1, 0.1, 0.1, 0.1, 0.1, 0]</p>
-<p class="p10"><span class="Apple-tab-span">	</span>).load(s);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span></span>// make the window</p>
-<p class="p10"><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>(<span class="s7">"another control panel"</span>, <span class="s2">Rect</span>(200, 400, 300, 180));</p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span>w.front; </span>// make window visible and front window.</p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.view.background = <span class="s2">Color</span>.rand;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span></span>// add a button to start and stop the sound.</p>
-<p class="p10"><span class="Apple-tab-span">	</span>startButton = <span class="s2">Button</span>(w, 75 @ 20);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>startButton.states = [</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s7">"Start"</span>, <span class="s2">Color</span>.black, <span class="s2">Color</span>.green],</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s7">"Stop"</span>, <span class="s2">Color</span>.white, <span class="s2">Color</span>.red]</p>
-<p class="p10"><span class="Apple-tab-span">	</span>];</p>
-<p class="p10"><span class="Apple-tab-span">	</span>startButton.action = {<span class="s2">|view|</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (view.value == 1) {</p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// start sound</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node = <span class="s2">Synth</span>( <span class="s7">"window-test"</span>, [</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">"note"</span>, noteControl.value,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">"fc"</span>, cutoffControl.value,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">"rq"</span>, resonControl.value,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">"bal"</span>, balanceControl.value,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">"amp"</span>, ampControl.value.dbamp ]);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set gate to zero to cause envelope to release</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.release; node = <span class="s2">nil</span>;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p10"><span class="Apple-tab-span">	</span>};</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span></span>// create controls for all parameters</p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.view.decorator.nextLine;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>noteControl = <span class="s2">EZNumber</span>(w, 160 @ 20, <span class="s7">"Note "</span>, <span class="s2">ControlSpec</span>(24, 60, <span class="s6">\lin</span>, 1),</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s7">"note"</span>, ez.value )}, 36);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.view.decorator.nextLine;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>cutoffControl = <span class="s2">EZNumber</span>(w, 160 @ 20, <span class="s7">"Cutoff "</span>, <span class="s2">ControlSpec</span>(200, 5000, <span class="s6">\exp</span>),</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s7">"fc"</span>, ez.value )}, 1000);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.view.decorator.nextLine;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>resonControl = <span class="s2">EZNumber</span>(w, 160 @ 20, <span class="s7">"Reson"</span>, <span class="s2">ControlSpec</span>(0.1, 0.7),</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s7">"rq"</span>, ez.value )}, 0.2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.view.decorator.nextLine;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>balanceControl = <span class="s2">EZNumber</span>(w, 160 @ 20, <span class="s7">"Balance "</span>, <span class="s6">\bipolar</span>,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s7">"bal"</span>, ez.value )}, 0);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.view.decorator.nextLine;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>ampControl = <span class="s2">EZNumber</span>(w, 160 @ 20, <span class="s7">"Amp "</span>, <span class="s6">\db</span>,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s7">"amp"</span>, ez.value.dbamp )}, -6);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span></span>// set start button to zero upon a cmd-period</p>
-<p class="p10"><span class="Apple-tab-span">	</span>cmdPeriodFunc = { startButton.value = 0; };</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">CmdPeriod</span>.add(cmdPeriodFunc);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s5"><span class="Apple-tab-span">	</span></span>// stop the sound when window closes and remove cmdPeriodFunc.</p>
-<p class="p10"><span class="Apple-tab-span">	</span>w.onClose = {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.free; node = <span class="s2">nil</span>;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">CmdPeriod</span>.remove(cmdPeriodFunc);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>};</p>
-<p class="p10">});</p>
-<p class="p10">)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZPopUpMenu.html b/Help/GUI/EZ-GUI/EZPopUpMenu.html
deleted file mode 100644
index f3b3229..0000000
--- a/Help/GUI/EZ-GUI/EZPopUpMenu.html
+++ /dev/null
@@ -1,217 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {font: 11.0px Monaco}
-span.s6 {color: #007300}
-span.s7 {color: #606060}
-span.s8 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZPopUpMenu<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a wrapper class for a label plus a popUpMenu with per item actions</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="EZGui.html"><span class="s2"><b>EZGui</b></span></a><b> : </b><a href="EZLists.html"><span class="s2"><b>EZLists</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">EZPopUpMenu is wrapper class which creates an (optional) label and a popUpMenu. It includes per item actions as well as a global action which are both evaluated upon selection of an item. Convenience methods for inserting and deleting menu items are also included . If the parent is nil, then EZPopUpMenu will create its own window.See <a href="EZGui.html"><span class="s2">EZGui</span></a> and <a href="EZLists.html"><span class="s2">EZLists</span></a> for all of the options.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../Main-GUI/PopUpMenu.html"><span class="s4">PopUpMenu</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Some Important Issues Regarding EZPopUpMenu</b></p>
-<p class="p2"><br></p>
-<p class="p1">The convenience methods for EZPopUpMenu require that the items array is an array of associations of labels and functions, not like in <a href="../Main-GUI/PopUpMenu.html"><span class="s2">PopUpMenu</span></a>, where items is simply an array of strings. If <b>label</b> is nil, then no staticText is created. I</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (parentView, bounds, label, items, globalAction, initVal, initAction, labelWidth, labelHeight,layout,gap)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parentView </b>- The parent view or window. If the parent is nil, then EZPopUpMenu will create its own <a href="../Main-GUI/Window.html"><span class="s2">Window</span></a>, and place it conveniently on the screen if the bounds are a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. If the bounds are a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, then the Rect determines the window bounds.</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. Default value is <span class="s5">160 at 22</span>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>label </b>- the label. Default value is nil. If nil, then no StaticText is created.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>items </b>- Default value is nil. An Array of <a href="../../Collections/Association.html"><span class="s2">Association</span></a>s ['label' -> {arg menuObj; value}, ]. Or and Array Symbols (if you are only using <b>globalAction</b>).</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>globalAction </b>- a Global function to be performed in addition to the item functions {arg menuObj; value}.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initVal </b>- Initial <b>value</b> of the Menu, i.e. the index selected. Default value is 0.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initAction </b>- An instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Performs the action at <b>initVal</b> on creation of the menu, plus the <b>globalAction</b>. Default value is false.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelWidth </b>- Default value is 80.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelHeight </b>- Default value is 20. Not used if <b>layout</b> is \horz.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>layout</b>- \vert or \horz. default is horz;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. By default, the view tries to get its parent's gap, otherwise it defaults to 2 at 2. Setting it overrides these.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. This will inset the bounds occupied<span class="Apple-converted-space">  </span>by the subviews of view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">EZPopUpMenu</span>.new(w,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>230 at 22,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"A PopUpMenu: "<span class="s3">,</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\item0</span> ->{<span class="s2">|a|</span> (<span class="s7">"this is item 0 of "</span> ++ a).postln},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\item1</span> ->{<span class="s2">|a|</span> (<span class="s7">"this is item 1 of "</span> ++ a).postln},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\item2</span> ->{<span class="s2">|a|</span> (<span class="s7">"this is item 2 of "</span> ++ a).postln},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>globalAction: {<span class="s2">|a|</span> (<span class="s7">"this is a global action of "</span>++a.asString ).postln},</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>initVal: 1,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>initAction: <span class="s2">true</span>,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>labelWidth: 120,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>labelHeight: 20,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>layout: <span class="s6">\horz</span>,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gap: 2 at 2</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or a more simple syntax:</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">EZPopUpMenu</span>.new(w,200 at 22, <span class="s7">"Menu: "</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.addItem(<span class="s6">\item0</span>, {<span class="s2">|a|</span> (<span class="s7">"this is item 0 of "</span> ++ a).postln});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.addItem(<span class="s6">\item1</span>, {<span class="s2">|a|</span> (<span class="s7">"this is item 1 of "</span> ++ a).postln});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.addItem(<span class="s6">\item2</span>, {<span class="s2">|a|</span> (<span class="s7">"this is item 2 of "</span> ++ a).postln});</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.value=0;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><b>Changing Appearance</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setColors(stringBackground,stringColor,menuBackground,menuStringColor,background)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stringBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the label and unit views.</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the label and unit views.</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>menuBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the menu.</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>menuStringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the menu.</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>background </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>backround</b> of the list view.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>font_(font)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the Font used by all the views.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>Examples</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16">// try several examples together</p>
-<p class="p14">(</p>
-<p class="p3"><br></p>
-<p class="p16">// many menus</p>
-<p class="p16">// inherits the parent's decorator gap</p>
-<p class="p3"><br></p>
-<p class="p14">(</p>
-<p class="p11">w=<span class="s2">Window</span>.new(<span class="s7">"oscillators"</span>, <span class="s2">Rect</span>(200,500,200,160)).front;</p>
-<p class="p11">w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds).gap_(2 at 2);</p>
-<p class="p11">5.do{<span class="s2">|i|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>g = <span class="s2">EZPopUpMenu</span>.new(w,190 at 22, <span class="s7">"Oscillator % : "</span>.format(i+1));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.addItem(<span class="s6">\off</span>, {<span class="s7">"off"</span>. postln});</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.addItem(<span class="s6">\sine</span>, {<span class="s7">"sine"</span>. postln});</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.addItem(<span class="s6">\saw</span>, {<span class="s7">"saw"</span>. postln});</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.addItem(<span class="s6">\pulse</span>, {<span class="s7">"pulse"</span>. postln});</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.value=0;</p>
-<p class="p11">};</p>
-<p class="p11">w.bounds=w.bounds.moveBy(300,60);</p>
-<p class="p14">);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p13">// Creates its own window if parentView is nil:</p>
-<p class="p14">(</p>
-<p class="p11">g = <span class="s2">EZPopUpMenu</span>.new(<span class="s2">nil</span>,250 at 22 ,<span class="s7">" Select : "</span>);</p>
-<p class="p11">g.addItem(<span class="s6">\item0</span>, {<span class="s7">"this is item 0"</span>. postln});</p>
-<p class="p11">g.addItem(<span class="s6">\item1</span>, {<span class="s7">"this is item 1"</span>. postln});</p>
-<p class="p11">g.addItem(<span class="s6">\item2</span>, {<span class="s7">"this is item 2"</span>. postln});</p>
-<p class="p11">g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p11">g.value=0;</p>
-<p class="p6"><br></p>
-<p class="p14">);</p>
-<p class="p3"><br></p>
-<p class="p16">// layout vertical:</p>
-<p class="p14">(</p>
-<p class="p11">g = <span class="s2">EZPopUpMenu</span>.new(<span class="s2">nil</span>,200 at 42, <span class="s7">" Choose"</span>,layout:<span class="s6">\vert</span>);</p>
-<p class="p11">g.addItem(<span class="s6">\item0</span>, {<span class="s7">"this is item 0"</span>. postln});</p>
-<p class="p11">g.addItem(<span class="s6">\item1</span>, {<span class="s7">"this is item 1"</span>. postln});</p>
-<p class="p11">g.addItem(<span class="s6">\item2</span>, {<span class="s7">"this is item 2"</span>. postln});</p>
-<p class="p11">g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p11">g.window.bounds=g.window.bounds.moveBy(300,-200);</p>
-<p class="p11">g.value=0;</p>
-<p class="p14">);</p>
-<p class="p3"><br></p>
-<p class="p16">// No labelView created, so set the window title;</p>
-<p class="p14">(</p>
-<p class="p11">g = <span class="s2">EZPopUpMenu</span>.new(bounds:180 at 22); <span class="s8">// no label</span></p>
-<p class="p11">g.addItem(<span class="s6">\item0</span>, {<span class="s7">"this is item 0"</span>. postln});</p>
-<p class="p11">g.addItem(<span class="s6">\item1</span>, {<span class="s7">"this is item 1"</span>. postln});</p>
-<p class="p11">g.addItem(<span class="s6">\item2</span>, {<span class="s7">"this is item 2"</span>. postln});</p>
-<p class="p11">g.value=0;</p>
-<p class="p11">g.window.name=<span class="s7">" choose item"</span>;</p>
-<p class="p11">g.window.bounds=g.window.bounds.moveBy(0,-200);</p>
-<p class="p14">);</p>
-<p class="p14">)</p>
-<p class="p16">// insertItem;</p>
-<p class="p6"><br></p>
-<p class="p11">(</p>
-<p class="p11">g = <span class="s2">EZPopUpMenu</span>.new(<span class="s2">nil</span>,200 at 22, <span class="s7">"Menu:"</span>);</p>
-<p class="p11">g.addItem(<span class="s6">\item0</span>, {<span class="s7">"this is item 0"</span>. postln});</p>
-<p class="p11">g.addItem(<span class="s6">\item1</span>, {<span class="s7">"this is item 1"</span>. postln});</p>
-<p class="p14">g.addItem(<span class="s6">\item2</span>, {<span class="s7">"this is item 2"</span>. postln});</p>
-<p class="p14">g.addItem(<span class="s6">\item4</span>, {<span class="s7">"this is item 4"</span>. postln});</p>
-<p class="p11">g.value=0;</p>
-<p class="p14">);</p>
-<p class="p3"><br></p>
-<p class="p14">g.insertItem(3, <span class="s6">\item3</span>, {<span class="s7">"this is item 3"</span>. postln});</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p13">// remove Item ;</p>
-<p class="p6"><br></p>
-<p class="p11">(</p>
-<p class="p11">w=<span class="s2">Window</span>.new.front;</p>
-<p class="p11">w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p11">g = <span class="s2">EZPopUpMenu</span>.new(w,200 at 22, <span class="s7">"Menu:"</span>);</p>
-<p class="p11">g.addItem(<span class="s6">\item0</span>, {<span class="s7">"this is item 0"</span>. postln});</p>
-<p class="p11">g.addItem(<span class="s6">\item1</span>, {<span class="s7">"this is item 1"</span>. postln});</p>
-<p class="p14">g.addItem(<span class="s6">\item2</span>, {<span class="s7">"this is item 2"</span>. postln});</p>
-<p class="p14">g.addItem(<span class="s6">\item4</span>, {<span class="s7">"this is item 4"</span>. postln});</p>
-<p class="p14">g.insertItem(3, <span class="s6">\item3</span>, {<span class="s7">"this is item 3"</span>. postln});</p>
-<p class="p11">g.value=0;</p>
-<p class="p14">)</p>
-<p class="p3"><br></p>
-<p class="p14">g. removeItemAt(0);</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p13">// replace item;</p>
-<p class="p11">(</p>
-<p class="p11">g = <span class="s2">EZPopUpMenu</span>.new(<span class="s2">nil</span>,200 at 22, <span class="s7">"List:"</span>);</p>
-<p class="p14">g.addItem(<span class="s6">\item0</span>, {<span class="s7">"this is item 0"</span>. postln});</p>
-<p class="p14">g.addItem(<span class="s6">\item1</span>, {<span class="s7">"this is item 1"</span>. postln});</p>
-<p class="p14">g.addItem(<span class="s6">\item2</span>, {<span class="s7">"this is item 2"</span>. postln});</p>
-<p class="p14">g.addItem(<span class="s6">\item3</span>, {<span class="s7">"this is item 3"</span>. postln});</p>
-<p class="p14">)</p>
-<p class="p3"><br></p>
-<p class="p14">g.replaceItemAt(2, <span class="s6">\item2_replaced</span>, {<span class="s7">"this is item 2 replaced"</span>. postln});</p>
-<p class="p3"><br></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZRanger.html b/Help/GUI/EZ-GUI/EZRanger.html
deleted file mode 100644
index c3563e6..0000000
--- a/Help/GUI/EZ-GUI/EZRanger.html
+++ /dev/null
@@ -1,374 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p16 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {font: 11.0px Monaco}
-span.s6 {color: #606060}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZRanger<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a wrapper class for a label, a rangeslider, and numberboxes</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="EZGui.html"><span class="s2"><b>EZGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">EZRanger is wrapper class which creates an (optional) <a href="../Main-GUI/StaticText.html"><span class="s2">StaticText</span></a>, and a <a href="../Main-GUI/Slider.html"><span class="s2">Slider</span></a><span class="s2"> </span>plus a <a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a>. If the parent is nil, then EZRanger will create its own window. See <a href="EZGui.html"><span class="s2">EZGui</span></a> more options.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Scrolling and Arrow Keys</b></p>
-<p class="p1">EZRanger's number boxs scroll by default, using the step size of the <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a>. If the controlSpec's step is set to 0, or is not set, then the the stepping and scrolling will be guessed according to the <b>minval</b> and <b>maxval</b> values of the spec on creation of the view.<span class="Apple-converted-space">  </span>Unlike the step variable of a regular NumberBox, <b>controlSpec.step</b> is also the smallest possible increment for the NumberBoxs.<span class="Apple-converted-space">  </span>By default, the shift-key modifier<span class="Apple-converted-space">  </span>will allow you to step by 100 x controlSpec.step , while the ctrl-key will give you 10x controlSpec.step.<span class="Apple-converted-space">  </span>Since the alt-key would give you 0.1 of the minimum step, it is disabled by default, but you can change that by setting <b>numberView.alt_step</b> to any value you like<b>.</b> Accordingly you can customize the other modifiers to fit your needs.<span class="Apple-converted-space">  </span>See <a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a> and <a href="../Main-GUI/Slider.html"><span class="s2">Slider</span></a>. This also effects the arrow keys for the slider.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><b>See also:</b> <a href="../Main-GUI/Slider.html"><span class="s4">Slider</span></a>, <a href="../Main-GUI/NumberBox.html"><span class="s4">NumberBox</span></a>, <a href="../Main-GUI/StaticText.html"><span class="s4">StaticText</span></a>, <a href="../Main-GUI/CompositeView.html"><span class="s4">CompositeView</span></a>, <a href="EZGui.html"><span class="s4">EZGui</span></a></span></p>
-<p class="p6"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (parent, bounds, label, controlSpec, action, initVal, initAction, labelWidth, numberWidth,unitWidth,labelHeight, layout,gap)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view or window. If the parent is nil, then EZRanger will create its own <a href="../Main-GUI/Window.html"><span class="s2">Window</span></a>, and place it conveniently on the screen if the bounds are a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. If the bounds are a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, then the Rect determines the window bounds.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. Default value is <span class="s5">160 at 20</span>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>label </b>- The label. Default value is nil. If nil, then no StaticText is created.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>controlSpec </b>- The <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a> for scaling the value.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- A <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> called when the value changes. The function is passed the EZRanger instance as its argument.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initVal </b>- An inistance of Array [lo, hi]. If nil, then it uses the ControlSpec's default value.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initAction </b>- A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether the action function should be called when setting the initial value. The default is false.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelWidth </b>- Number of pixels width for the label. default is 60..</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numberWidth </b>- Number of pixels width for the number box. default is 45.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>unitWidth </b>- Number of pixels width for the unit label. The default is 0.<span class="Apple-converted-space">  </span>If 0, then no unitLabel is created</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelHeight</b>- The default is 20;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>layout</b>- \vert \line2, or \horz. The default is \horz;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. By default, the view tries to get its parent's gap, otherwise it defaults to 2 at 2. Setting it overrides these.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. This will inset the bounds occupied<span class="Apple-converted-space">  </span>by the subviews of view.</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(w, 400 at 16,<span class="s6">" test<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,{<span class="s2">|v|</span> v.value.postln},[50,2000],unitWidth:30)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Simplest version, no parent view, so a window is created</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EZRanger</span>(<span class="s2">nil</span>, 400 at 16,<span class="s6">" test<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,{<span class="s2">|v|</span> v.value.postln},[50,2000])</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><br></p>
-<p class="p1">The contained views can be accessed via the EZRanger instance variables:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>rangeSlider, hiBox,loBox, unitView,labelView</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p13"><b>Accessing Instance and Class Variables</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>unitView</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The Units label. Only appears if unitWidth was set to >0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>controlSpec_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>controlSpec</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An instance of <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a> for scaling the values.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>loBox</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The lo value<span class="Apple-converted-space">  </span><a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>action</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>action_(arg1)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A function to be evaluated when the value changes. Te first argument will be the EZRanger.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. Default value is nil.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>rangeSlider</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The <a href="../Main-GUI/RangeSlider.html"><span class="s2">RangeSlider</span></a> View</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>lo</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>lo_ (val)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The low value</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>hi</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>lo_ (val)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The high value</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>hiBox</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The hi value<span class="Apple-converted-space">  </span><a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>round_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>round</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Rounds the values in the number boxes.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Doing Some Task (optional)</b></p>
-<p class="p14"><br></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Performs the action at the current index and the global action.</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>value_ (vals)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the lo and hi values.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>vals </b>- An instance of <a href="../../Collections/Array.html"><span class="s2">Array</span></a>: [ lo, hi ]</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>valueAction_ (vals)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the value and performs the action at the index value and the global action.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>vals </b>- An instance of <a href="../../Collections/Array.html"><span class="s2">Array</span></a>: [ lo, hi ]</p>
-<p class="p7"><br></p>
-<p class="p15">;</p>
-<p class="p13"><b>Changing Appearance</b></p>
-<p class="p9"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>setColors(stringBackground,stringColor,sliderColor,numBackground,</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor,numNormalColor,numTypingColor,knobColor,background)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stringBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the label and unit views.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the label and unit views.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sliderColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The slider <b>background</b>.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the number view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the number view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numNormalColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>normalColor</b> of the number view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numTypingColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>typingColor</b> of the number view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>knobColor</b> of the slider view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>background </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>backround</b> of the enclosing view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>font_(font)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the Font used by all the views.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p14"><br></p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span></span>// basic use</p>
-<p class="p11"><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(w, 400 at 16,<span class="s6">" test<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,{<span class="s2">|v|</span> v.value.postln},[50,2000],unitWidth:30);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p12">// lots of range sliders on a view</p>
-<p class="p11">(</p>
-<p class="p11">w=<span class="s2">Window</span>.new.front;</p>
-<p class="p11">w.view.decorator=<span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p11">w.view.decorator.gap=1 at 1;</p>
-<p class="p3"><br></p>
-<p class="p11">20.do{</p>
-<p class="p11"><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(w, 400 at 16,<span class="s6">" test<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,{<span class="s2">|v|</span> v.value.postln},[50.rand,50+20000.rand],unitWidth:30)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.font_(<span class="s2">Font</span>(<span class="s6">"Helvetica"</span>,11));</p>
-<p class="p3"><br></p>
-<p class="p11">};</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s2">Window</span>.closeAll</p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////////////////////////////////////////////////////</p>
-<p class="p12">////////// click these parentheses to see all features and layouts<span class="Apple-converted-space"> </span></p>
-<p class="p11">(<span class="Apple-converted-space">   </span></p>
-<p class="p3"><br></p>
-<p class="p11">m=<span class="s2">nil</span>;</p>
-<p class="p12"><span class="s3">m=2 at 2; </span>// comment for no margin</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////</p>
-<p class="p12">/// Layout \horz</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features, small font</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 400 at 16,<span class="s6">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>initVal:[100.rand,200+2000.rand],unitWidth:30, numberWidth:60,layout:<span class="s7">\horz</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,50);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s6">"Helvetica"</span>,10));</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 400 at 16,<span class="s6">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,initVal:[100.rand,200+2000.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:0, numberWidth:60,layout:<span class="s7">\horz</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -20);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s6">"Helvetica"</span>,10));</p>
-<p class="p11">);</p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label, so use window name as label</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 400 at 16, <span class="s2">nil</span>, <span class="s7">\freq</span>,initVal:[100.rand,200+2000.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:0, numberWidth:60,layout:<span class="s7">\horz</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -90);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s6">"Freq"</span>;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s6">"Helvetica"</span>,10));</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////</p>
-<p class="p12">/// Layout \line2</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 300 at 42,<span class="s6">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,initVal:[100.rand,200+2000.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:30, numberWidth:60,layout:<span class="s7">\line2</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,-160);</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView, with label</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 300 at 42,<span class="s6">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,initVal:[100.rand,200+2000.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:0, numberWidth:60,layout:<span class="s7">\line2</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,-260);</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 300 at 42,<span class="s2">nil</span>, <span class="s7">\freq</span>, initVal:[100.rand,200+2000.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:30, numberWidth:60,layout:<span class="s7">\line2</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,-360);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s6">"Freq"</span>;</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label, so use window name as label</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 150 at 42,<span class="s2">nil</span>, <span class="s7">\freq</span>,initVal:[100.rand,200+2000.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:0, numberWidth:60,layout:<span class="s7">\line2</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,-460);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s6">"Freq"</span>;</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////</p>
-<p class="p12">/// Layout \vert</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features, small font</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 45 at 300,<span class="s6">" Vol<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\db</span>.asSpec.step_(0.01),initVal:[-3-15.rand,-2.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:30, numberWidth:60,layout:<span class="s7">\vert</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white,<span class="s7">\h</span>));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(250,50);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s6">"Helvetica"</span>,9));</p>
-<p class="p11">);</p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label, small font</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 45 at 300, <span class="s2">nil</span>, <span class="s7">\db</span>.asSpec.step_(0.01),initVal:[-3-15.rand,-2.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:30, numberWidth:60,layout:<span class="s7">\vert</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white,<span class="s7">\h</span>));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(310,50);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s6">"Helvetica"</span>,9));</p>
-<p class="p11">);</p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no Units small font</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 45 at 300, <span class="s6">" Vol"</span>, <span class="s7">\db</span>.asSpec.step_(0.01),initVal:[-3-15.rand,-2.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:0, numberWidth:60,layout:<span class="s7">\vert</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white,<span class="s7">\h</span>));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(370,50);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s6">"Helvetica"</span>,9));</p>
-<p class="p11">);</p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView, no units small font</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZRanger</span>(<span class="s2">nil</span>, 45 at 300, <span class="s2">nil</span>, <span class="s7">\db</span>.asSpec.step_(0.01),initVal:[-3-15.rand,-2.rand],</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unitWidth:0, numberWidth:60,layout:<span class="s7">\vert</span>, margin:2 at 2);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow, background:<span class="s2">Color</span>.grey(0.7),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor: <span class="s2">HiliteGradient</span>(<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white,<span class="s7">\h</span>));</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(430,50);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s6">"Helvetica"</span>,9));</p>
-<p class="p11">);</p>
-<p class="p3"><br></p>
-<p class="p11">)<span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////</p>
-<p class="p3"><br></p>
-<p class="p12">////Sound Example</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s3">(<span class="Apple-tab-span">	</span></span>// example to explore a synthesis idea:</p>
-<p class="p11">p = <span class="s2">ProxySpace</span>.push(s.boot);</p>
-<p class="p3"><br></p>
-<p class="p11">q = q ? ();</p>
-<p class="p11">q.freqRange = [200, 2000];</p>
-<p class="p11">q.ampRange = [0.1, 1];</p>
-<p class="p11">q.ringRange = [0.1, 10];</p>
-<p class="p11">q.numRange = [3, 30];</p>
-<p class="p3"><br></p>
-<p class="p11">q.soundfunc = { <span class="s2">|dens=5|</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s2">Splay</span>.ar(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Array</span>.fill(exprand(q.numRange[0], q.numRange[1]).asInteger, {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Ringz</span>.ar(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dust</span>.ar(dens),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exprand(q.freqRange[0], q.freqRange[1]),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exprand(q.ringRange[0], q.ringRange[1]),</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exprand(q.ampRange[0], q.ampRange[1])</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p11"><span class="Apple-tab-span">	</span>).distort</p>
-<p class="p11">};</p>
-<p class="p11">)</p>
-<p class="p11">~plong.play;</p>
-<p class="p3"><br></p>
-<p class="p11">~plong.fadeTime = 3;</p>
-<p class="p11">~plong = q[<span class="s7">\soundfunc</span>];</p>
-<p class="p3"><br></p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s2">Window</span>(<span class="s6">"cow herd"</span>).front;</p>
-<p class="p11">w.view.decorator_(<span class="s2">FlowLayout</span>(w.bounds.copy.moveTo(0, 0)));</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s2">Spec</span>.add(<span class="s7">\ring</span>, [0.03, 30, <span class="s7">\exp</span>]);</p>
-<p class="p11"><span class="s2">Spec</span>.add(<span class="s7">\num</span>, [3, 30, <span class="s7">\exp</span>, 1]);</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s2">EZRanger</span>(w, 390 at 20, <span class="s6">"numRange"</span>, <span class="s7">\num</span>, { <span class="s2">|sl|</span> q.numRange = sl.value; }, labelWidth: 65)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.round_(1);</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s2">EZRanger</span>(w, 390 at 20, <span class="s6">"freqRange"</span>, <span class="s7">\freq</span>, { <span class="s2">|sl|</span> q.freqRange = sl.value; }, q.freqRange, labelWidth: 65)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.round_(0.1);</p>
-<p class="p11"><span class="s2">EZRanger</span>(w, 390 at 20, <span class="s6">"ringRange"</span>, <span class="s7">\ring</span>, { <span class="s2">|sl|</span> q.ringRange = sl.value; }, q.ringRange, labelWidth: 65)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.round_(0.0001);</p>
-<p class="p11"><span class="s2">EZRanger</span>(w, 390 at 20, <span class="s6">"ampRange"</span>, <span class="s7">\amp</span>, { <span class="s2">|sl|</span> q.ampRange = sl.value; }, q.ampRange, labelWidth: 65)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>.round_(0.0001);</p>
-<p class="p11"><span class="s2">Button</span>(w, 190 at 20).states_([[<span class="s7">\newSound</span>]]).action_({~plong = q[<span class="s7">\soundfunc</span>] });</p>
-<p class="p11">)</p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZScroller.html b/Help/GUI/EZ-GUI/EZScroller.html
deleted file mode 100644
index 1371232..0000000
--- a/Help/GUI/EZ-GUI/EZScroller.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #000000}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZScroller</b></span><span class="s2"><span class="Apple-tab-span">	</span></span><b>show a subset of items on gui elements</b></p>
-<p class="p2"><br></p>
-<p class="p1">EZScroller is a vertical slider that allows displaying different subsets of a</span></p>
-<p class="p1">dynamically changing list of objects on a fixed number of views by scrolling.</span></p>
-<p class="p3"><br></p>
-<p class="p1">EZScroller is used JITLib guis like NodeProxyEditor, ProxyMixer,</span></p>
-<p class="p1">TdefAllGui, and PdefAllGui.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s3">Window</span>.new(<span class="s4">"EZScroller test"</span>, <span class="s3">Rect</span>(100, 400,200, 100)).front;<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// 5 displays</p>
-<p class="p5">v = { <span class="s3">|i|</span> <span class="s3">DragBoth</span>.new(w, <span class="s3">Rect</span>(0, i * 20, 100, 20)) }.dup(5);</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// 12 items</p>
-<p class="p5">a = (1..12);</p>
-<p class="p4"><br></p>
-<p class="p5">e = <span class="s3">EZScroller</span>(w, <span class="s3">Rect</span>(100,0,14,100), v.size, a.size, { <span class="s3">|sc|</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> startIndex = sc.value.asInteger.postcs;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>v.do { <span class="s3">|drag, i|</span> drag.object_( a[ (startIndex) + i] ? <span class="s4">""</span>); };</p>
-<p class="p5"><span class="Apple-tab-span">	</span>e.visible_(sc.numItems > sc.maxItems); <span class="s6">// hide when not useful</span></p>
-<p class="p5">});</p>
-<p class="p5">e.doAction;</p>
-<p class="p5">)</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// change list a, update ezscroller</p>
-<p class="p5">a = (1..4);<span class="Apple-tab-span">	</span>e.numItems_(a.size); e.doAction;</p>
-<p class="p4"><br></p>
-<p class="p5">a = (1..8);<span class="Apple-tab-span">	</span>e.numItems_(a.size); e.doAction;</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZSlider.html b/Help/GUI/EZ-GUI/EZSlider.html
deleted file mode 100644
index 3374add..0000000
--- a/Help/GUI/EZ-GUI/EZSlider.html
+++ /dev/null
@@ -1,475 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {font: 11.0px Monaco}
-span.s6 {color: #bf0000}
-span.s7 {color: #007300}
-span.s8 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZSlider<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>wrapper class for label, slider, number box</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="EZGui.html"><span class="s2"><b>EZGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">EZSlider is wrapper class which creates an (optional) <a href="../Main-GUI/StaticText.html"><span class="s2">StaticText</span></a>, and a <a href="../Main-GUI/Slider.html"><span class="s2">Slider</span></a><span class="s2"> </span>plus a <a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a>. If the parent is nil, then EZSlider will create its own window. See <a href="EZGui.html"><span class="s2">EZGui</span></a> more options.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Scrolling and Arrow Keys</b></p>
-<p class="p1">EZSlider's number box scrolls by default, using the step size of the <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a>. If the controlSpec's step is set to 0, or is not set, then the the stepping and scrolling will be guessed according to the <b>minval</b> and <b>maxval</b> values of the spec on creation of the view.<span class="Apple-converted-space">  </span>Unlike the step variable of a regular NumberBox, <b>controlSpec.step</b> is also the smallest possible increment for the NumberBox.<span class="Apple-converted-space">  </span>By default, the shift-key modifier<span class="Apple-converted-space">  </span>will allow you to step by 100 x controlSpec.step , while the ctrl-key will give you 10x controlSpec.step.<span class="Apple-converted-space">  </span>Since the alt-key would give you 0.1 of the minimum step, it is disabled by default, but you can change that by setting <b>numberView.alt_step</b> to any value you like<b>.</b> Accordingly you can customize the other modifiers to fit your needs. See <a href="../Main-GUI/NumberBox.html"><span class="s2">NumberBox</span></a> and <a href="../Main-GUI/Slider.html"><span class="s2">Slider</span></a>. This also effects the arrow keys for the slider.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><b>See also:</b> <a href="../Main-GUI/Slider.html"><span class="s4">Slider</span></a>, <a href="../Main-GUI/NumberBox.html"><span class="s4">NumberBox</span></a>, <a href="../Main-GUI/StaticText.html"><span class="s4">StaticText</span></a>, <a href="../Main-GUI/CompositeView.html"><span class="s4">CompositeView</span></a>, <a href="EZGui.html"><span class="s4">EZGui</span></a></span></p>
-<p class="p6"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (parent, bounds, label, controlSpec, action, initVal, initAction, labelWidth, numberWidth,unitWidth,labelHeight, layout,gap)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view or window. If the parent is nil, then EZSlider will create its own <a href="../Main-GUI/Window.html"><span class="s2">Window</span></a>, and place it conveniently on the screen if the bounds are a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. If the bounds are a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, then the Rect determines the window bounds.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. Default value is <span class="s5">160 at 20</span>.</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>label </b>- The label. Default value is nil. If nil, then no StaticText is created.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>controlSpec </b>- The <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a> for scaling the value.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- A <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> called when the value changes. The function is passed the EZSlider instance as its argument.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initVal </b>- The value to initialize the slider and number box with. If nil, then it uses the ControlSpec's default value.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initAction </b>- A <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether the action function should be called when setting the initial value. The default is false.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelWidth </b>- Number of pixels width for the label. The default is 60..</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numberWidth </b>- Number of pixels width for the number box. The default is 45.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>unitWidth </b>- Number of pixels width for the unit label. The default is 0.<span class="Apple-converted-space">  </span>If 0, then no unitLabel is created</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelHeight</b>- The default is 20;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>layout</b>- \vert \line2, or \horz. The default is horz;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. By default, the view tries to get its parent's gap, otherwise it defaults to 2 at 2. Setting it overrides these.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. This will inset the bounds occupied<span class="Apple-converted-space">  </span>by the subviews of view.</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s2">EZSlider</span>(<span class="Apple-tab-span">	</span>w,<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s6">// parent</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>390 at 20,<span class="Apple-tab-span">	</span><span class="s6">// bounds</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>" test "<span class="s3">,<span class="Apple-tab-span">	</span></span><span class="s6">// label</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">\freq</span><span class="s3">, <span class="Apple-tab-span">	</span></span>// controlSpec</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> (ez.value.asString ++<span class="s8">" is the value of "</span> ++ ez).postln} <span class="s6">// action</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Simplest version, no parent view, so a window is created</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(label:<span class="s8">" test "</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.action_({<span class="s2">|ez|</span> (ez.value.asString ++<span class="s8">" is the value of "</span> ++ ez).postln});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1">The contained views can be accessed via the EZSlider instance variables:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>labelView</b>, <b>sliderView</b>, <b>numberView</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p15"><b>Accessing Instance and Class Variables</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>numberView</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the <b>numberView</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>action</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>action_(arg1)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A function to be evaluated when the value changes. Te first argument will be the EZSlider.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. Default value is nil.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The value of the slider</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>round_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>round</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Rounds the values in the number box.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>controlSpec_(arg1)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>controlSpec</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An instance of <a href="../../Control/ControlSpec.html"><span class="s2">ControlSpec</span></a> for scaling the values.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the list/menu to the index at value. Does not perform the action.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the value and performs the action at the index value and the global action.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- An integer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Performs the action at the current index and the global action.</p>
-<p class="p9"><br></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>set (label, spec, argAction, initVal, initAction)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the args after creation. You can only set the label if it was not nil from the beginning.</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>visible</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>visible_(bool)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets it the component views are visible.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An Instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default is true;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><b>Changing Appearance</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>setColors(stringBackground,stringColor,sliderBackground,numBackground,</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor,numNormalColor,numTypingColor,knobColor,background)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stringBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the label and unit views.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the label and unit views.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sliderBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The slider <b>background</b>.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>numColor</b> of the number view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the number view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numNormalColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>normalColor</b> of the number view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numTypingColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>typingColor</b> of the number view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>knobColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>knobColor</b> of the slider view.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>background </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>backround</b> of the enclosing view.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>font_(font)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the Font used by all the views.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p15"><b>Examples</b></p>
-<p class="p16"><br></p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// basic use</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w=<span class="s2">Window</span>.new.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(w, 400 at 16,<span class="s8">" test<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:30, numberWidth:60,layout:<span class="s7">\horz</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white);</p>
-<p class="p12">);</p>
-<p class="p12">g.view.enabled=<span class="s2">false</span></p>
-<p class="p14">// lots of sliders on on view</p>
-<p class="p12">(</p>
-<p class="p12">w=<span class="s2">Window</span>.new.front;</p>
-<p class="p12">w.view.decorator=<span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p12">w.view.decorator.gap=2 at 2;</p>
-<p class="p3"><br></p>
-<p class="p12">20.do{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">EZSlider</span>(w, 392 at 16,<span class="s8">" Freq "</span>, <span class="s7">\freq</span>,unitWidth:30,initVal:6000.rand, numberWidth:60,layout:<span class="s7">\horz</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>,11));</p>
-<p class="p3"><br></p>
-<p class="p12">};</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s2">Window</span><span class="s3">.closeAll<span class="Apple-converted-space">  </span></span>// use this to close all the windows</p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////////////////////////////////////////////////////</p>
-<p class="p14">////////// click these parentheses to see all features and layouts<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p12">(<span class="Apple-converted-space">   </span></p>
-<p class="p3"><br></p>
-<p class="p12">m=<span class="s2">nil</span>;</p>
-<p class="p14">//m=2 at 2;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// uncomment this for margin</p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////</p>
-<p class="p14">/// Layout \horz</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features, small font</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 400 at 14,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:30, numberWidth:60,layout:<span class="s7">\horz</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,50);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>,10));</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 400 at 16,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:0, numberWidth:60,layout:<span class="s7">\horz</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -20);</p>
-<p class="p12">);</p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label, so use window name as label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 400 at 16, <span class="s2">nil</span>, <span class="s7">\freq</span>,unitWidth:0, numberWidth:60,layout:<span class="s7">\horz</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -90);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////</p>
-<p class="p14">/// Layout \line2</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 300 at 42,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:30, numberWidth:60,layout:<span class="s7">\line2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,-160);</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView, with label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 300 at 42,<span class="s8">" freq<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\freq</span>,unitWidth:0, numberWidth:60,layout:<span class="s7">\line2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,-260);</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 300 at 42,<span class="s2">nil</span>, <span class="s7">\freq</span>, unitWidth:30, numberWidth:60,layout:<span class="s7">\line2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,-360);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no lablel, so use window name as label</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 150 at 42,<span class="s2">nil</span>, <span class="s7">\freq</span>,unitWidth:0, numberWidth:60,layout:<span class="s7">\line2</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,-460);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s8">"Freq"</span>;</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p14">/////////////////</p>
-<p class="p14">/// Layout \vert</p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features, small font</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 45 at 300,<span class="s8">" Vol<span class="Apple-converted-space">  </span>"</span>, <span class="s7">\db</span>.asSpec.step_(0.01),unitWidth:30, numberWidth:60,layout:<span class="s7">\vert</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(250,50);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>,10));</p>
-<p class="p12">);</p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label, small font</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 45 at 300, <span class="s2">nil</span>, <span class="s7">\db</span>.asSpec.step_(0.01),unitWidth:30, numberWidth:60,layout:<span class="s7">\vert</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(310,50);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>,10));</p>
-<p class="p12">);</p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no Units small font</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 45 at 300, <span class="s8">" Vol"</span>, <span class="s7">\db</span>.asSpec.step_(0.01),unitWidth:0, numberWidth:60,layout:<span class="s7">\vert</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(370,50);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>,10));</p>
-<p class="p12">);</p>
-<p class="p14"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no unitView, no Units small font</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s2">EZSlider</span>(<span class="s2">nil</span>, 45 at 300, <span class="s2">nil</span>, <span class="s7">\db</span>.asSpec.step_(0.01),unitWidth:0, numberWidth:60,layout:<span class="s7">\vert</span>, margin: m);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow,<span class="s2">nil</span>,<span class="s2">nil</span>, <span class="s2">Color</span>.grey(0.7));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(430,50);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.font_(<span class="s2">Font</span>(<span class="s8">"Helvetica"</span>,10));</p>
-<p class="p12">);</p>
-<p class="p3"><br></p>
-<p class="p12">)<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">///////////////////////////////////////////////////////////////</p>
-<p class="p14">///////////////////////////////////////////////////////////////</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p14">// Sound example</p>
-<p class="p12">(</p>
-<p class="p14">// start server</p>
-<p class="p12">s.waitForBoot({</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s2">var</span> w, startButton, noteControl, cutoffControl, resonControl;</p>
-<p class="p12"><span class="s2">var</span> balanceControl, ampControl;</p>
-<p class="p12"><span class="s2">var</span> node, cmdPeriodFunc;</p>
-<p class="p3"><br></p>
-<p class="p14">// define a synth</p>
-<p class="p12"><span class="s2">SynthDef</span>(<span class="s8">"window-test"</span>, { <span class="s2">arg</span> note = 36, fc = 1000, rq = 0.25, bal=0, amp=0.4, gate = 1;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> x;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Mix</span>.fill(4, {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFSaw</span>.ar((note + {0.1.rand2}.dup).midicps, 0, 0.02)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(x, fc, rq).softclip;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(x, fc, rq, amp).softclip;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Balance2</span>.ar(x[0], x[1], bal);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.cutoff, gate, doneAction: 2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, x);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}, [0.1, 0.1, 0.1, 0.1, 0.1, 0]</p>
-<p class="p12">).load(s);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">// make the window</p>
-<p class="p12">w = <span class="s2">Window</span>(<span class="s8">"another control panel"</span>, <span class="s2">Rect</span>(20, 400, 440, 180));</p>
-<p class="p14"><span class="s3">w.front; </span>// make window visible and front window.</p>
-<p class="p12">w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p12">w.view.decorator.gap=2 at 2;</p>
-<p class="p3"><br></p>
-<p class="p14">// add a button to start and stop the sound.</p>
-<p class="p12">startButton = <span class="s2">Button</span>(w, 75 @ 20);</p>
-<p class="p12">startButton.states = [</p>
-<p class="p12"><span class="Apple-tab-span">	</span>[<span class="s8">"Start"</span>, <span class="s2">Color</span>.black, <span class="s2">Color</span>.green(0.7)],</p>
-<p class="p12"><span class="Apple-tab-span">	</span>[<span class="s8">"Stop"</span>, <span class="s2">Color</span>.white, <span class="s2">Color</span>.red(0.7)]</p>
-<p class="p12">];</p>
-<p class="p12">startButton.action = {<span class="s2">|view|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (view.value == 1) {</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// start sound</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node = <span class="s2">Synth</span>( <span class="s8">"window-test"</span>, [</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"note"</span>, noteControl.value,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"fc"</span>, cutoffControl.value,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"rq"</span>, resonControl.value,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"bal"</span>, balanceControl.value,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">"amp"</span>, ampControl.value.dbamp ]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set gate to zero to cause envelope to release</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.release; node = <span class="s2">nil</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12">};</p>
-<p class="p3"><br></p>
-<p class="p14">// create controls for all parameters</p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">noteControl = <span class="s2">EZSlider</span>(w, 430 @ 20, <span class="s8">"Note "</span>, <span class="s2">ControlSpec</span>(24, 60, <span class="s7">\lin</span>, 1, 36, <span class="s7">\note</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"note"</span>, ez.value )}, unitWidth:30)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">cutoffControl = <span class="s2">EZSlider</span>(w, 430 @ 20, <span class="s8">"Cutoff "</span>, <span class="s2">ControlSpec</span>(200, 5000, <span class="s7">\exp</span>,0.01,1000,<span class="s7">\Hz</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"fc"</span>, ez.value )}, unitWidth:30)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">resonControl = <span class="s2">EZSlider</span>(w, 430 @ 20, <span class="s8">"Reson "</span>, <span class="s2">ControlSpec</span>(0.1, 0.7,<span class="s7">\lin</span>,0.001,0.2,<span class="s7">\rq</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"rq"</span>, ez.value )}, unitWidth:30)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">balanceControl = <span class="s2">EZSlider</span>(w, 430 @ 20, <span class="s8">"Balance "</span>, <span class="s7">\bipolar</span>,</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"bal"</span>, ez.value )},<span class="Apple-converted-space">  </span>unitWidth:30)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">ampControl = <span class="s2">EZSlider</span>(w, 430 @ 20, <span class="s8">"Amp "</span>, <span class="s7">\db</span>,</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{<span class="s2">|ez|</span> node.set( <span class="s8">"amp"</span>, ez.value.dbamp )}, -6, unitWidth:30)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p14">// set start button to zero upon a cmd-period</p>
-<p class="p12">cmdPeriodFunc = { startButton.value = 0; };</p>
-<p class="p12"><span class="s2">CmdPeriod</span>.add(cmdPeriodFunc);</p>
-<p class="p3"><br></p>
-<p class="p14">// stop the sound when window closes and remove cmdPeriodFunc.</p>
-<p class="p12">w.onClose = {</p>
-<p class="p12"><span class="Apple-tab-span">	</span>node.free; node = <span class="s2">nil</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">CmdPeriod</span>.remove(cmdPeriodFunc);</p>
-<p class="p12">};</p>
-<p class="p12">});</p>
-<p class="p12">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">// a variant of the above example so one can<span class="Apple-converted-space"> </span></p>
-<p class="p14">// add new parameters and more views are created automatically</p>
-<p class="p3"><br></p>
-<p class="p12">(</p>
-<p class="p14">// start server</p>
-<p class="p12">s.waitForBoot({</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s2">var</span> w, startButton, sliders;</p>
-<p class="p12"><span class="s2">var</span> node, cmdPeriodFunc;</p>
-<p class="p12"><span class="s2">var</span> params, specs;</p>
-<p class="p3"><br></p>
-<p class="p14">// define a synth</p>
-<p class="p12"><span class="s2">SynthDef</span>(<span class="s8">"window-test"</span>, { <span class="s2">arg</span> note = 36, fc = 1000, rq = 0.25, bal = 0, amp=0.4, width=0, gate = 1;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> x;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Mix</span>.fill(4, {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">VarSaw</span>.ar((note + {0.1.rand2}.dup).midicps, 0, width, 0.02)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(x, fc, rq).softclip;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(x, fc, rq, amp).softclip;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Balance2</span>.ar(x[0], x[1], bal);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.cutoff, gate, 5, doneAction: 2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, x);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}, [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0]</p>
-<p class="p12">).load(s);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s3">params = [</span>"note"<span class="s3">, </span>"fc"<span class="s3">, </span>"rq"<span class="s3">, </span>"bal"<span class="s3">, </span>"amp"<span class="s3">, </span>"width"<span class="s3">];</span></p>
-<p class="p12">specs = [</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">ControlSpec</span>(24, 60, <span class="s7">\lin</span>, 1, 36, <span class="s7">\note</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">ControlSpec</span>(200, 5000, <span class="s7">\exp</span>,0.01,1000,<span class="s7">\Hz</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">ControlSpec</span>(0.1, 0.7,<span class="s7">\lin</span>,0.001,0.2,<span class="s7">\rq</span>),</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">ControlSpec</span>(-1, 1, <span class="s7">\lin</span>, 0, 0, <span class="s7">\pan</span>),</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">ControlSpec</span><span class="s3">(0.0001, 2, </span><span class="s7">\exp</span><span class="s3">, 0, 0.3, </span><span class="s7">\vol</span><span class="s3">), </span>// db spec acts weird, so use self made one</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">ControlSpec</span>(0, 1, <span class="s7">\lin</span>, 0, 0.3, <span class="s7">\width</span>),</p>
-<p class="p12">];</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p14">// make the window</p>
-<p class="p12">w = <span class="s2">Window</span>(<span class="s8">"another control panel"</span>, <span class="s2">Rect</span>(20, 400, 440, 180));</p>
-<p class="p14"><span class="s3">w.front; </span>// make window visible and front window.</p>
-<p class="p12">w.view.decorator = <span class="s2">FlowLayout</span>(w.view.bounds);</p>
-<p class="p12">w.view.decorator.gap=2 at 2;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p14">// add a button to start and stop the sound.</p>
-<p class="p12">startButton = <span class="s2">Button</span>(w, 75 @ 20);</p>
-<p class="p12">startButton.states = [</p>
-<p class="p12"><span class="Apple-tab-span">	</span>[<span class="s8">"Start"</span>, <span class="s2">Color</span>.black, <span class="s2">Color</span>.green(0.7)],</p>
-<p class="p12"><span class="Apple-tab-span">	</span>[<span class="s8">"Stop"</span>, <span class="s2">Color</span>.white, <span class="s2">Color</span>.red(0.7)]</p>
-<p class="p12">];</p>
-<p class="p12">startButton.action = {<span class="s2">|view|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> args;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (view.value == 1) {</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// start sound</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>params.do { <span class="s2">|param, i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>args = args.add(param);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>args = args.add(sliders[i].value)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node = <span class="s2">Synth</span>(<span class="s8">"window-test"</span>, args.postcs);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set gate to zero to cause envelope to release</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.release; node = <span class="s2">nil</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12">};</p>
-<p class="p3"><br></p>
-<p class="p14">// create controls for all parameters</p>
-<p class="p12">w.view.decorator.nextLine;</p>
-<p class="p12">sliders = params.collect { <span class="s2">|param, i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">EZSlider</span>(w, 430 @ 20, param, specs[i], {<span class="s2">|ez|</span> node.set( param, ez.value )})</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.setColors(<span class="s2">Color</span>.grey,<span class="s2">Color</span>.white, <span class="s2">Color</span>.grey(0.7),<span class="s2">Color</span>.grey, <span class="s2">Color</span>.white, <span class="s2">Color</span>.yellow);</p>
-<p class="p12">};</p>
-<p class="p14">// set start button to zero upon a cmd-period</p>
-<p class="p12">cmdPeriodFunc = { startButton.value = 0; };</p>
-<p class="p12"><span class="s2">CmdPeriod</span>.add(cmdPeriodFunc);</p>
-<p class="p3"><br></p>
-<p class="p14">// stop the sound when window closes and remove cmdPeriodFunc.</p>
-<p class="p12">w.onClose = {</p>
-<p class="p12"><span class="Apple-tab-span">	</span>node.free; node = <span class="s2">nil</span>;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">CmdPeriod</span>.remove(cmdPeriodFunc);</p>
-<p class="p12">};</p>
-<p class="p3"><br></p>
-<p class="p12">})</p>
-<p class="p12">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/EZ-GUI/EZText.html b/Help/GUI/EZ-GUI/EZText.html
deleted file mode 100644
index b4ec635..0000000
--- a/Help/GUI/EZ-GUI/EZText.html
+++ /dev/null
@@ -1,237 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a91616}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0014bc}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0a2cb0}
-span.s3 {font: 11.0px Monaco}
-span.s4 {color: #0014bc}
-span.s5 {color: #606060}
-span.s6 {color: #a91616}
-span.s7 {color: #000000}
-span.s8 {color: #307109}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EZText<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>wrapper class for a label, a text field and a value</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object : </b><a href="EZGui.html"><span class="s2"><b>EZGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">EZText is a wrapper class which creates an (optional) <a href="../Main-GUI/StaticText.html"><span class="s2">StaticText</span></a>, and a <a href="../Main-GUI/TextField.html"><span class="s2">TextField</span></a>.</p>
-<p class="p1">The value is displayed as a compileString in the text field for editing.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some Important Issues Regarding EZText</b></p>
-<p class="p1">If the parent is nil, then EZText will create its own window. See <a href="EZGui.html"><span class="s2">EZGui</span></a> for more options.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (parent, bounds, label, action, labelWidth, textWidth, labelHeight, layout, gap)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- The parent view or window. If the parent is nil, then EZText will create its own <a href="../Main-GUI/Window.html"><span class="s2">Window</span></a>, and place it conveniently on the screen if the bounds are a <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. If the bounds are a <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a>, then the Rect determines the window bounds.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of <a href="../../Geometry/Rect.html"><span class="s2">Rect</span></a> or <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. Default value is <span class="s3">160 at 20</span>.</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>label </b>- The label. Default value is nil. If nil, then no StaticText is created.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action </b>- A <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> called when the value changes. The function is passed the EZText instance as its argument.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initVal </b>- The value to initialize the EZText with.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>initAction </b>- A <a href="../../../../../../SC3/supercollider/trunk/build/Help/Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether the action function should be called when setting the initial value. The default is false.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelWidth </b>- Number of pixels width for the label. The<span class="Apple-converted-space">  </span>default is 60. In the \horz <b>layout, </b>if you specify the <b>textWidth</b>, then the <b>labelWidth</b> is ignored and is set to the <b>bounds.width - textWidth</b>.<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>textWidth </b>- Number of pixels width for the number box. The<span class="Apple-converted-space">  </span>default is 45. In \vert <b>layout</b>, <b>textWidth</b> defaults to the <b>bounds.width</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>labelHeight</b>- Default is 20;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>layout</b>- \vert, or \horz. The default is horz; \vert is a two line version.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. By default, the view tries to get its parent's gap, otherwise it defaults to 2 at 2. Setting it overrides these.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin </b>- A <a href="../../Geometry/Point.html"><span class="s2">Point</span></a>. This will inset the bounds occupied<span class="Apple-converted-space">  </span>by the subviews of view.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s4">Window</span>(<span class="s5">"EZText"</span>, <span class="s4">Rect</span>(300, 300, 260, 60)).front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s4">EZText</span>(<span class="Apple-tab-span">	</span>w,<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s6">// parent</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>250 at 50,<span class="Apple-tab-span">	</span><span class="s6">// bounds</span></p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"testing"<span class="s7">,<span class="Apple-tab-span">	</span></span><span class="s6">// label</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="s4">|ez|</span> (ez.value.asString ++<span class="s5">" is the value of "</span> ++ ez).postln}, <span class="s6">// action</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 2, 3], <span class="s6">// initValue</span></p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">true</span><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// initAction</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s4">Color</span>.grey,<span class="s4">Color</span>.white);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Simplest version, no parent view, so a window is created</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s4">EZText</span>(label:<span class="s5">" test "</span> );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.action_({<span class="s4">|ez|</span> (ez.value.asString ++<span class="s5">" is the value of "</span> ++ ez).postln});</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s4">EZText</span>(bounds: <span class="s4">Rect</span>( 100, 200, 150, 50), label:<span class="s5">" test "</span>, layout: <span class="s8">\vert</span> );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.action_({<span class="s4">|ez|</span> (ez.value.asString ++<span class="s5">" is the value of "</span> ++ ez).postln});</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p7"><br></p>
-<p class="p1">The contained views can be accessed via the EZText instance variables:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>labelView</b>, <b>textField</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>textField</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the <b>textField</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>action</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>action_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A function to be evaluated when the value changes.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Typical use is to type in a new value, and interpret it by hitting the evaluation shortcut.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The first argument to the function will be the EZText.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 </b>- An instance of <a href="../../Core/Kernel/Function.html"><span class="s2">Function</span></a> or <a href="../../Core/Kernel/FunctionList.html"><span class="s2">FunctionList</span></a>. Default value is nil.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The value of the ezText can be any object.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets/sets the value of the ezText. Does not perform the action.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- any object.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>valueAction_ (val)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the value and performs the action.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- any object.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>doAction</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Performs the action.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>enabled</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>enabled_(bool)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets/gets whether the textfield is enabled.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool </b>- An Instance of <a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a>. Default is true.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p13"><b>Changing Appearance</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setColors(stringBackground, stringColor, textBackground, textStringColor,</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>textNormalColor, textTypingColor, background)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stringBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the label and unit views.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the label and unit views.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>textBackground </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the textField.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numStringColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>stringColor</b> of the textField.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numNormalColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>normalColor</b> of the textField.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numTypingColor </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>typingColor</b> of the textField.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>background </b>- An instance of <a href="../GUI-Tools/Color.html"><span class="s2">Color</span></a>. The <b>background</b> of the enclosing view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>font_(font)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the Font used by all the views.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font </b>- An instance of <a href="../Main-GUI/Font.html"><span class="s2">Font</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p12">// Simplest version</p>
-<p class="p12"><span class="s7">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// basic use</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s4">Window</span>(<span class="s5">"ez"</span>, <span class="s4">Rect</span>(300, 300, 300, 50)).front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s4">EZText</span>(w, 290 at 40,<span class="s5">" test<span class="Apple-converted-space">  </span>"</span>, textWidth: 220,layout:<span class="s8">\horz</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s4">Color</span>.grey,<span class="s4">Color</span>.white);</p>
-<p class="p10">);</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p12">// lots of textFields on one window</p>
-<p class="p10">(</p>
-<p class="p10">w=<span class="s4">Window</span>.new.front;</p>
-<p class="p10">w.view.decorator=<span class="s4">FlowLayout</span>(w.view.bounds);</p>
-<p class="p10">w.view.decorator.gap=2 at 2;</p>
-<p class="p3"><br></p>
-<p class="p10">40.do{</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s4">EZText</span>(w, 170 at 16,<span class="s5">" test<span class="Apple-converted-space">  </span>"</span>, textWidth: 120,layout:<span class="s8">\horz</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s4">Color</span>.grey, <span class="s4">Color</span>.white, <span class="s4">Color</span>.grey(0.8));</p>
-<p class="p10">};</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">// click these parentheses to see three variants<span class="Apple-converted-space"> </span></p>
-<p class="p10">(</p>
-<p class="p3"><br></p>
-<p class="p10">m=<span class="s4">nil</span>;</p>
-<p class="p12"><span class="s7">m=2 at 2;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//comment for no margin</p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////</p>
-<p class="p12">/// Layout \horz</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s7">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// with label</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s4">EZText</span>(<span class="s4">nil</span>, 170 at 20,<span class="s5">" freq<span class="Apple-converted-space">  </span>"</span>, textWidth:120,layout:<span class="s8">\horz</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s4">Color</span>.grey,<span class="s4">Color</span>.white,background: <span class="s4">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180,50);</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s7">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no label. use window name as label</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s4">EZText</span>(<span class="s4">nil</span>, 120 at 20, layout:<span class="s8">\horz</span>,margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s4">Color</span>.grey,<span class="s4">Color</span>.white,background: <span class="s4">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(-180, -90);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.name=<span class="s5">"Freq"</span>;</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p12">/////////////////</p>
-<p class="p12">/// Layout \vert</p>
-<p class="p3"><br></p>
-<p class="p12"><span class="s7">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all features</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g=<span class="s4">EZText</span>(<span class="s4">nil</span>, 120 at 60,<span class="s5">" freq<span class="Apple-converted-space">  </span>"</span>, textWidth: 120,layout: <span class="s8">\vert</span>, margin:m);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.setColors(<span class="s4">Color</span>.grey,<span class="s4">Color</span>.white,background: <span class="s4">Color</span>.grey(0.7));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.window.bounds = g.window.bounds.moveBy(100,50);</p>
-<p class="p10">);</p>
-<p class="p3"><br></p>
-<p class="p10">)<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p12">// Simplest sound example</p>
-<p class="p10">(</p>
-<p class="p10"><span class="s4">Tdef</span>(<span class="s8">\text</span>).set(<span class="s8">\note</span>, [0, 2, 7], <span class="s8">\dur</span>, { [0.1, 0.2].choose });</p>
-<p class="p3"><br></p>
-<p class="p10">w = <span class="s4">Window</span>(<span class="s5">"EZTexts"</span>, <span class="s4">Rect</span>(200, 400, 304, 120)).front;</p>
-<p class="p10">w.addFlowLayout;</p>
-<p class="p3"><br></p>
-<p class="p10"><span class="s4">TdefEditor</span>(<span class="s4">Tdef</span>(<span class="s8">\text</span>), 0, w: w);</p>
-<p class="p10"><span class="s4">Tdef</span>(<span class="s8">\text</span>).envir.keysValuesDo { <span class="s4">|k, v|</span><span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">EZText</span>(w, <span class="s4">Rect</span>(0,0,300,40), k, { <span class="s4">|ez|</span><span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Tdef</span>(<span class="s8">\text</span>).envir.put(*[k, ez.value].postcs);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}, v);</p>
-<p class="p10">};</p>
-<p class="p3"><br></p>
-<p class="p15">Tdef<span class="s7">(</span><span class="s8">\text</span><span class="s7">, { </span>|ev|<span class="s7"><span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">var</span> mydur;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>loop {<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mydur = ev.dur;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(note: ev.note, dur: mydur).postln.play;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mydur.wait;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">}).play;</p>
-<p class="p10">)</p>
-<p class="p3"><br></p>
-<p class="p12">// type these or similar functions into dur and note fields and evaluate:</p>
-<p class="p3"><br></p>
-<p class="p10">{ [0.1, 0.2, 0.3].choose }</p>
-<p class="p10">{ [ 0, 2, 7, 10 ].scramble.keep(rrand(0, 4)) }</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/FlowView.html b/Help/GUI/FlowView.html
deleted file mode 100644
index a30e534..0000000
--- a/Help/GUI/FlowView.html
+++ /dev/null
@@ -1,322 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #762810; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0018a6; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d200d}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #762810}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0018a6}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #87240e}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4d4d4d}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #6a2a14}
-span.s1 {color: #0015ab}
-span.s2 {color: #0018a6}
-span.s3 {color: #87240e}
-span.s4 {color: #0012af}
-span.s5 {color: #9d200d}
-span.s6 {color: #000000}
-span.s7 {color: #4d4d4d}
-span.s8 {color: #001ea1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FlowView</b></p>
-<p class="p2">superclass: SCViewHolder</p>
-<p class="p3"><br></p>
-<p class="p2">an SCCompositeView with a FlowLayout as decorator</p>
-<p class="p4"><br></p>
-<p class="p5"><b>FlowView.new(parent,bounds)</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2">In the simplest respect this is a lazy contraction of this :</p>
-<p class="p4"><br></p>
-<p class="p6">w = <span class="s1">GUI</span>.window.new;</p>
-<p class="p6">w.view.decorator = <span class="s1">FlowLayout</span>.new( w.bounds );</p>
-<p class="p6">w.front;</p>
-<p class="p4"><br></p>
-<p class="p2">FlowView add some features to this setup.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">f = <span class="s2">FlowView</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s2">GUI</span>.slider.new(f,<span class="s2">Rect</span>(0,0,100,100));</p>
-<p class="p6"><span class="s2">GUI</span>.slider.new(f,<span class="s2">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p6">// the StartRow will be fixed at this point in the children array</p>
-<p class="p6">f.startRow;</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">GUI</span>.slider.new(f,<span class="s2">Rect</span>(0,0,100,100));</p>
-<p class="p6">f.startRow;</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s2">GUI</span>.slider.new(f,<span class="s2">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><b>indentedRemaining</b></p>
-<p class="p2">the maximum space that is left, starting at the current cursor position</p>
-<p class="p6">(</p>
-<p class="p6">f = <span class="s1">FlowView</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f, f.indentedRemaining)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.background = <span class="s1">Color</span>.blue(alpha:0.2)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6">f = <span class="s1">FlowView</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p6">f.startRow; <span class="s3">// new row</span></p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f, f.indentedRemaining)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.background = <span class="s1">Color</span>.blue(alpha:0.2)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6">f = <span class="s1">FlowView</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f, f.indentedRemaining)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.background = <span class="s1">Color</span>.blue(alpha:0.2)</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p2"><b>used</b></p>
-<p class="p3"><br></p>
-<p class="p2">the area used so far, rounded up to the nearest rectangle plus margin</p>
-<p class="p6">(</p>
-<p class="p6">w = <span class="s4">GUI</span>.window.new;</p>
-<p class="p6">w.front;</p>
-<p class="p6">f = <span class="s4">FlowView</span>.new(w);</p>
-<p class="p6">f.background = <span class="s4">Color</span>.blue(alpha:0.1);</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s4">GUI</span>.slider.new(f,<span class="s4">Rect</span>(0,0,100,100));</p>
-<p class="p6"><span class="s4">GUI</span>.slider.new(f,<span class="s4">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p6">f.used.postln;</p>
-<p class="p3"><br></p>
-<p class="p9">// overlaid</p>
-<p class="p6"><span class="s4">GUI</span>.compositeView.new(w,f.used)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.background = <span class="s4">Color</span>.red(alpha: 0.1);</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p6">w = <span class="s4">GUI</span>.window.new;</p>
-<p class="p6">w.front;</p>
-<p class="p6">f = <span class="s4">FlowView</span>.new(w);</p>
-<p class="p6">f.background = <span class="s4">Color</span>.blue(alpha:0.1);</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s4">GUI</span>.slider.new(f,<span class="s4">Rect</span>(0,0,100,100));</p>
-<p class="p6"><span class="s4">GUI</span>.slider.new(f,<span class="s4">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p6">f.startRow; <span class="s5">// new row</span></p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s4">GUI</span>.slider.new(f,<span class="s4">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p6">f.used.postln;</p>
-<p class="p3"><br></p>
-<p class="p9">// overlaid</p>
-<p class="p6"><span class="s4">GUI</span>.compositeView.new(w,f.used)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.background = <span class="s4">Color</span>.red(alpha: 0.1);</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p2"><b>flow</b></p>
-<p class="p2">insert a sub flow view into the current view</p>
-<p class="p6">(</p>
-<p class="p6">f = FlowView.new;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p10">// flow within a flow</p>
-<p class="p6">g = f.flow({ <span class="s2">arg</span> g;</p>
-<p class="p11"><span class="s6"><span class="Apple-tab-span">	</span></span>ActionButton<span class="s6">(g,</span><span class="s7">"a"</span><span class="s6">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">GUI</span>.slider.new(g,<span class="s2">Rect</span>(0,0,100,100)).background_(<span class="s2">Color</span>.rand);</p>
-<p class="p6">}).background_(<span class="s2">Color</span>.black);</p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span></span>// shrinks to fit the contents afterwards</p>
-<p class="p6">)</p>
-<p class="p2"><b>comp</b></p>
-<p class="p3"><br></p>
-<p class="p2">insert a sub composite view into the current view</p>
-<p class="p6">(</p>
-<p class="p6">f = <span class="s1">FlowView</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">GUI</span>.slider.new(f,<span class="s1">Rect</span>(0,0,100,100));</p>
-<p class="p3"><br></p>
-<p class="p12">// sc composite view</p>
-<p class="p6">g = f.comp({ <span class="s1">arg</span> g;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">GUI</span>.slider.new(g,<span class="s1">Rect</span>(50,30,50,100)).background_(<span class="s1">Color</span>.rand);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">GUI</span>.slider.new(g,<span class="s1">Rect</span>(120,30,50,100)).background_(<span class="s1">Color</span>.rand);</p>
-<p class="p6">},<span class="s1">Rect</span>(0,0,200,200)).background_(<span class="s1">Color</span>.black);</p>
-<p class="p3"><br></p>
-<p class="p6">f.startRow;</p>
-<p class="p13">"Back to flowing"<span class="s6">.gui(f);</span></p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">// note: some of the following examples use ActionButton from the crucialib</p>
-<p class="p3"><br></p>
-<p class="p14">// tests</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s8">FlowView</span>.new.flow({ <span class="s8">arg</span> f;</p>
-<p class="p14">//<span class="Apple-tab-span">	</span>b = ActionButton(f,"hi",minWidth:140)</p>
-<p class="p6">}).background_(<span class="s8">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s8">FlowView</span>.new.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b = <span class="s8">ActionButton</span>(f,<span class="s7">"hi"</span>,minWidth:140);</p>
-<p class="p6">}).background_(<span class="s8">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">FlowView</span>.new.flow({ <span class="s2">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b = <span class="s2">GUI</span>.slider.new(f,<span class="s2">Rect</span>(0,0,100,100));</p>
-<p class="p6">}).background_(<span class="s2">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s8">FlowView</span>.new.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p14"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//b = ActionButton(f,"hi",minWidth:140)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.white)</p>
-<p class="p6">}).background_(<span class="s8">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s8">FlowView</span>.new.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s8">ActionButton</span>(f,<span class="s7">"hi"</span>,minWidth:140)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.white)</p>
-<p class="p6">}).background_(<span class="s8">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s8">FlowView</span>.new.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">ActionButton</span>(f,<span class="s7">"hello"</span>,minWidth:100);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.blue);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s8">ActionButton</span>(f,<span class="s7">"hi"</span>,minWidth:140);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.white)</p>
-<p class="p6">}).background_(<span class="s8">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s8">FlowView</span>.new.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">ActionButton</span>(f,<span class="s7">"hello"</span>,minWidth:100);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.blue);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s8">ActionButton</span>(f,<span class="s7">"hi"</span>,minWidth:140);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.white)</p>
-<p class="p6">}).background_(<span class="s8">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s8">FlowView</span>.new.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s8">ActionButton</span>(f,<span class="s7">"hi"</span>,minWidth:140);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">ActionButton</span>(f,<span class="s7">"hello"</span>,minWidth:100);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.blue);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.white)</p>
-<p class="p6">}).background_(<span class="s8">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s2">FlowView</span>.new.flow({ <span class="s2">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.flow({ <span class="s2">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">GUI</span>.slider.new(f,<span class="s2">Rect</span>(0,0,140,20));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.flow({ <span class="s2">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ActionButton</span>(f,<span class="s7">"hello"</span>,minWidth:100);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).background_(<span class="s2">Color</span>.blue);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).background_(<span class="s2">Color</span>.white)</p>
-<p class="p6">}).background_(<span class="s2">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s2">FlowView</span>.new.flow({ <span class="s2">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">GUI</span>.slider.new(f,<span class="s2">Rect</span>(0,0,140,20));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.flow({ <span class="s2">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">ActionButton</span>(f,<span class="s7">"hello"</span>,minWidth:100);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).background_(<span class="s2">Color</span>.blue);</p>
-<p class="p6">}).background_(<span class="s2">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p3"><br></p>
-<p class="p6">a = <span class="s8">FlowView</span>.new.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>w = f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = f.flow({ <span class="s8">arg</span> f;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">ActionButton</span>(f,<span class="s7">"hello"</span>,minWidth:100);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.blue);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">ActionButton</span>(f,<span class="s7">"hi"</span>,minWidth:140);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).background_(<span class="s8">Color</span>.white)</p>
-<p class="p6">}).background_(<span class="s8">Color</span>.grey)</p>
-<p class="p3"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p6">b.remove(<span class="s8">true</span>);</p>
-<p class="p6">w.resizeToFit(<span class="s8">true</span>,<span class="s8">true</span>);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12">// add something big back in</p>
-<p class="p6"><span class="s1">ActionButton</span>(w,<span class="s7">"i'm back"</span>,minWidth: 200);</p>
-<p class="p6">w.resizeToFit(<span class="s1">true</span>,<span class="s1">true</span>);</p>
-<p class="p12">// slightly wrong size at the bottom</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Classes.html b/Help/GUI/GUI-Classes.html
deleted file mode 100644
index 8882d0f..0000000
--- a/Help/GUI/GUI-Classes.html
+++ /dev/null
@@ -1,798 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #5d67a2}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #666c94; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ffffff; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #596194}
-span.s1 {color: #000000}
-span.s2 {color: #3e54c5}
-span.s3 {color: #6d7187}
-span.s4 {color: #5d67a2}
-span.s5 {text-decoration: underline}
-span.s6 {color: #ffffff}
-span.s7 {color: #394eb8}
-span.s8 {color: #485abb}
-span.Apple-tab-span {white-space:pre}
-td.td1 {width: 127.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td2 {width: 149.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td3 {width: 139.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td4 {width: 119.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td5 {width: 103.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td6 {width: 153.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td7 {width: 115.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td8 {width: 316.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td9 {width: 368.0px; background-color: #e9e9e9; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #ffffff #ffffff #ffffff #ffffff; padding: 2.0px 2.0px 2.0px 2.0px}
-</style>
-</head>
-<body>
-<p class="p1"><b>GUI Classes<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p3">Lists of kit-specific and kit-independant gui classes.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><b>See also:</b> <a href="GUI-Tools/GUI.html"><span class="s2">GUI</span></a></span><span class="s3">, <a href="GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>List of Kit-independant GUI Classes</b></p>
-<p class="p7"><br></p>
-<p class="p3">These classes are platform neutral in themselves.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<table cellspacing="0" cellpadding="0">
-<tbody>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="EZ-GUI/EZSlider.html">EZSlider</a></span><span class="s6"><span class="Apple-tab-span">	</span></span></p>
-</td>
-<td valign="middle" class="td2">
-<p class="p8"><span class="s5"><a href="EZ-GUI/EZNumber.html">EZNumber</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="EZ-GUI/EZRanger.html">EZRanger</a></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="EZ-GUI/EZListView.html">EZListView</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="EZ-GUI/EZPopUpMenu.html">EZPopUpMenu</a></span></p>
-</td>
-<td valign="middle" class="td2">
-<p class="p8"><span class="s5"><a href="EZ-GUI/EZScroller.html">EZScroller</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p9"><a href="EZ-GUI/EZKnob.html">EZKnob</a></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="EZ-GUI/EZText.html">EZText</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="GUI-Tools/Gradient.html">Gradient</a></span><span class="s7"><span class="Apple-tab-span">	</span></span></p>
-</td>
-<td valign="middle" class="td2">
-<p class="p8"><span class="s5"><a href="GUI-Tools/HiliteGradient.html">HiliteGradient</a></span><span class="s7"><span class="Apple-tab-span">	</span></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p9"><a href="GUI-Tools/FlowLayout.html">FlowLayout</a></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="GUI-Tools/Color.html">Color</a></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-<p class="p11"><br></p>
-<p class="p6"><b>List of Redirection Classes and their Corresponding Kit-specific GUI Classes</b></p>
-<p class="p2"><br></p>
-<p class="p3">The following list contains the ViewRedirect subclass and corresponding CocoaGUI and SwingGUI platform dependent classes:</p>
-<p class="p2"><br></p>
-<table cellspacing="0" cellpadding="0">
-<tbody>
-<tr>
-<td valign="middle" class="td5">
-<p class="p3"><b>ViewRedirect</b></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p3"><b>CocoaGUI</b></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p3"><b>SwingGUI</b></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3"><b>Description</b></p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/Window.html">Window</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCWindow.html">SCWindow</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCWindow.html">JSCWindow</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a frame that can contain gadgets</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p12">-----------------</p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCModalWindow.html">SCModalWindow</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p12">-----------------</p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a modal window</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p12">-----------------</p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCModalSheet.html">SCModalSheet</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p12">-----------------</p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a modal sheet to attach to windows</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/View.html">View</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCView.html">SCView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCView.html">JSCView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">The base class for most view classes. Important help file.</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/CompositeView.html">CompositeView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCCompositeView.html">SCCompositeView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCCompositeView.html">JSCCompositeView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">container view for nesting layouts</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/HLayoutView.html">HLayoutView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCHLayoutView.html">SCHLayoutView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCHLayoutView.html">JSCHLayoutView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">container view with horizontal distribution of children</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/VLayoutView.html">VLayoutView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCVLayoutView.html">SCVLayoutView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCVLayoutView.html">JSCVLayoutView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">container view with vertical distribution of children</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/Button.html">Button</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCButton.html">SCButton</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCButton.html">JSCButton</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a multiple state push button</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/PopUpMenu.html">PopUpMenu</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCPopUpMenu.html">SCPopUpMenu</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCPopUpMenu.html">JSCPopUpMenu</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a collapsed multiple choice button</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/Slider.html">Slider</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCSlider.html">SCSlider</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCSlider.html">JSCSlider</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a horizontal or vertical slider</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/RangeSlider.html">RangeSlider</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCRangeSlider.html">SCRangeSlider</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCRangeSlider.html">JSCRangeSlider</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">horizontal or vertical interval slider</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/Slider2D.html">Slider2D</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SC2DSlider.html">SC2DSlider</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSC2DSlider.html">JSC2DSlider</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a horizontally and vertically moveable slider</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/TextField.html">TextField</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCTextField.html">SCTextField</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCTextField.html">JSCTextField</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">an editable one line text field</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/ListView.html">ListView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCListView.html">SCListView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCListView.html">JSCListView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a list of text items</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/StaticText.html">StaticText</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCStaticText.html">SCStaticText</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCStaticText.html">JSCStaticText</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a text label</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/NumberBox.html">NumberBox</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCNumberBox.html">SCNumberBox</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCNumberBox.html">JSCNumberBox</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">editable number field</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/DragSource.html">DragSource</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCDragSource.html">SCDragSource</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCDragSource.html">JSCDragSource</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">object container acting as a source for drag-n-drop</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/DragSink.html">DragSink</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCDragSink.html">SCDragSink</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCDragSink.html">JSCDragSink</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">object container acting as a target for drag-n-drop</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/DragBoth.html">DragBoth</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCDragBoth.html">SCDragBoth</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCDragBoth.html">JSCDragBoth</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">combination of DragSource and DragSink</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/Stethoscope.html">Stethoscope</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCStethoscope.html">SCStethoscope</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JStethoscope.html">JStethoscope</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">oscilloscope tool</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/ScopeView.html">ScopeView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCScope.html">SCScope</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCScope.html">JSCScope</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">oscilloscope view</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/TabletView.html">TabletView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCTabletView.html">SCTabletView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCTabletView.html">JSCTabletView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">view for receiving graphic tablet data</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/TabletSlider2D.html">TabletSlider2D</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SC2DTabletSlider.html">SC2DTabletSlider</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p3">-----------------</p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">2D slider with support for graphic tablet data</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/FreqScope.html">FreqScope</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCFreqScopeWindow.html">SCFreqScopeWindow</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JFreqScope.html">JFreqScope</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">spectrum tool</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/FreqScopeView.html">FreqScopeView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCFreqScope.html">SCFreqScope</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCFreqScope.html">JSCFreqScope</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">spectrum view</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/MultiSliderView.html">MultiSliderView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCMultiSliderView.html">SCMultiSliderView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCMultiSliderView.html">JSCMultiSliderView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">array of sliders</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/EnvelopeView.html">EnvelopeView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCEnvelopeView.html">SCEnvelopeView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCEnvelopeView.html">JSCEnvelopeView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">breakpoint envelope editor</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/UserView.html">UserView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCUserView.html">SCUserView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCUserView.html">JSCUserView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">view for user-defined drawing operations</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/SoundFileView.html">SoundFileView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCSoundFileView.html">SCSoundFileView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCSoundFileView.html">JSCSoundFileView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">waveform view / editor for sound files</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/MovieView.html">MovieView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCMovieView.html">SCMovieView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCMovieView.html">JSCMovieView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">canvas for movie (QuickTime) and image display</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/TextView.html">TextView</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCTextView.html">SCTextView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JSCTextView.html">JSCTextView</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">multiline text editor</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p3">-----------------</p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCQuartzComposerView/SCQuartzComposerView.html">SCQuartzComposerView</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p3">-----------------</p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">view for displaying QuartzComposer documents</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p3">-----------------</p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCImage/SCImage.html">SCImage</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p3">-----------------</p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">an image component for the Mac OS X</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p3">-----------------</p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCImage/SCImageFilter.html">SCImageFilter</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p3">-----------------</p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a filter class to use with SCImage</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p3">-----------------</p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCImage/SCImageKernel.html">SCImageKernel</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p3">-----------------</p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a kernel class to use with SCImage.</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td5">
-<p class="p8"><span class="s5"><a href="Main-GUI/Knob.html">Knob</a></span></p>
-</td>
-<td valign="middle" class="td6">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCKnob.html">SCKnob</a></span></p>
-</td>
-<td valign="middle" class="td7">
-<p class="p8"><span class="s5"><a href="SC://JKnob.html">JKnob</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td8">
-<p class="p3">a knob view</p>
-</td>
-</tr>
-</tbody>
-</table>
-<p class="p2"><br></p>
-<p class="p6"><b>Other Redirects and Platform Specific Classes</b></p>
-<p class="p2"><br></p>
-<table cellspacing="0" cellpadding="0">
-<tbody>
-<tr>
-<td valign="middle" class="td1">
-<p class="p3"><b>Cross Platform</b></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p3"><b>CocoaGUI</b></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p3"><b>SwingGUI</b></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3"><b>Description</b></p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="Main-GUI/Dialog.html">Dialog</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="../OSX/CocoaDialog.html">CocoaDialog</a></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="SC://SwingDialog.html">SwingDialog</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">file selection dialog management</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="Main-GUI/Font.html">Font</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="GUI-Tools/SCFont.html">SCFont</a></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="SC://JFont.html">JFont</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">a font typeface description.</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="Main-GUI/Pen.html">Pen</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="Cocoa-GUI/SCPen.html">SCPen</a></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="SC://JPen.html">JPen</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">custom drawing operations class</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="../UGens/Synth control/MouseX.html">MouseX</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="../UGens/Synth control/MouseX.html">MouseX</a></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="SC://JMouseX.html">JMouseX</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">UGen. JMouseX for backward compatiblility only.</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="../UGens/Synth control/MouseY.html">MouseY</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="../UGens/Synth control/MouseY.html">MouseY</a></span><span class="s1"><span class="Apple-tab-span">	</span></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="SC://JMouseY.html">JMouseY</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">UGen. JMouseY for backward compatiblility only.</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="../UGens/Synth control/MouseButton.html">MouseButton</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="../UGens/Synth control/MouseButton.html">MouseButton</a></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="SC://JMouseButton.html">JMouseButton</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">UGen. JMouseButton for backward compatiblility only.</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p8"><span class="s5"><a href="../UGens/Synth control/KeyState.html">KeyState</a></span></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="../UGens/Synth control/KeyState.html">KeyState</a></span><span class="s1"><span class="Apple-tab-span">	</span></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="SC://JKeyState.html">JKeyState</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">UGen. JKeyState for backward compatiblility only.</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p3">use GUI.speech</p>
-</td>
-<td valign="middle" class="td3">
-<p class="p8"><span class="s5"><a href="../OSX/Speech.html">Speech</a></span></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p8"><span class="s5"><a href="SC://JSpeech.html">JSpeech</a></span></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">text-to-speech synthesis management</p>
-</td>
-</tr>
-</tbody>
-</table>
-<p class="p2"><br></p>
-<p class="p6"><b>Helper Methods</b></p>
-<p class="p7"><br></p>
-<table cellspacing="0" cellpadding="0">
-<tbody>
-<tr>
-<td valign="middle" class="td1">
-<p class="p3"><b>Cross Platform</b></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p3"><b>CocoaGUI</b></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p3"><b>SwingGUI</b></p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3"><b>Description</b></p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p3">GUI.stringBounds</p>
-</td>
-<td valign="middle" class="td3">
-<p class="p3">is synchronous</p>
-</td>
-<td valign="middle" class="td4">
-<p class="p3">is asynchronous</p>
-</td>
-<td colspan="2" valign="middle" class="td9">
-<p class="p3">returns a Rect with the graphic size of a string. See the example in <a href="GUI-Overview.html"><span class="s8">GUI-Overview</span></a> for asynchronous use</p>
-</td>
-</tr>
-</tbody>
-</table>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Overview.html b/Help/GUI/GUI-Overview.html
deleted file mode 100644
index 32bab25..0000000
--- a/Help/GUI/GUI-Overview.html
+++ /dev/null
@@ -1,483 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0000bf}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {text-decoration: underline ; color: #001bec}
-span.s5 {color: #606060}
-span.s6 {font: 10.0px Monaco; color: #bf0000}
-span.s7 {color: #bf0000}
-span.s8 {text-decoration: underline ; color: #0000ee}
-span.s9 {color: #007300}
-span.s10 {font: 12.0px Helvetica}
-span.s11 {font: 10.0px Monaco; color: #0000bf}
-span.s12 {font: 10.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>GUI Overview and Introduction</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">See also: <a href="GUI-Classes.html"><span class="s2">GUI-Classes</span></a>, <a href="GUI-Tools/GUI.html"><span class="s2">GUI</span></a></span><span class="s3">, <a href="GUI-Tools/ViewRedirect.html"><span class="s4">ViewRedirect</span></a>.</span></p>
-<p class="p4"><br></p>
-<p class="p5">SuperCollider provides for using different gui kits, and also provides syntax for transparently writing kit and platform independent code. Two main classes control this mechnanism: the gui factory abstraction class, <a href="GUI-Tools/GUI.html"><span class="s3">GUI</span></a>, and the subclasses of <a href="GUI-Tools/ViewRedirect.html"><span class="s3">ViewRedirect</span></a>, which transparently uses the <a href="GUI-Tools/GUI.html"><span class="s3">GUI</span></a> class to redirect to the kit-specific gui class.</p>
-<p class="p4"><br></p>
-<p class="p5">For a table of all gui classes and their equivalents, see <a href="GUI-Classes.html"><span class="s3">GUI-Classes</span></a><span class="s3">.</span></p>
-<p class="p5">For information on switching gui kits, see the documentation for <a href="GUI-Tools/GUI.html"><span class="s3">GUI</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p6"><b>Basic usage: Kits and Syntax</b></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>w=</span><span class="s3">Window</span><span class="s1">(</span><span class="s5">"Test Window"</span><span class="s1">).front; </span>// Window is a subclass of ViewRedirect</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>w.postln </span>// w now contains the class appropriate to the gui kit</p>
-<p class="p7"><br></p>
-<p class="p5">Kit-dependant gui classes have a prefix. For example, to make a window, the CocoaGUI kit uses <a href="Cocoa-GUI/SCWindow.html"><span class="s3">SCWindow</span></a><span class="s3">,</span> or the swing kit uses <a href="SC://JSCWindow.html"><span class="s3">JSCWindow</span></a>. It is generally discouraged to use the kit-dependant classes directly. Instead, you simply use the subclasses of <a href="GUI-Tools/ViewRedirect.html"><span class="s3">ViewRedirect</span></a><span class="s3">. </span>In most cases this involves simply using the class base name without any prefix, like in the example above. Behind the scenes, the above technique actually automatically redirects to the appropriate GUI class method. For a table of all gui classes and their kit-dependent equivalents, see <a href="GUI-Classes.html"><span class="s3">GUI-Classes</span></a><span class="s3">.</span></p>
-<p class="p4"><br></p>
-<p class="p5">Depending on the curent GUI.scheme the example above is equivalent to writing, for example:</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">SCWindow</span><span class="s1">(</span><span class="s5">"Test Window"</span><span class="s1">).front; </span>// cocoa version</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s6"><span class="Apple-tab-span">	</span></span>or</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">JSCWindow</span><span class="s1">(</span><span class="s5">"Test Window"</span><span class="s1">).front; </span>// swing version</p>
-<p class="p4"><br></p>
-<p class="p6"><b>Basic Usage: Windows, Containers and Decorators</b></p>
-<p class="p7"><br></p>
-<p class="p12">(</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// Window returns the window class for the current kit</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>( <span class="s5">"my name is..."</span>, <span class="s3">Rect</span>( 128, 64, 340, 360 ));</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s3">FlowLayout</span>( w.view.bounds ); <span class="s7">// comment this out for no decorator</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// w.addFlowLayout // you can use this instead of the above line for brevity.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.view.background = <span class="s3">Color</span>( 0.6, 0.8, 0.8 );</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>32.do({ <span class="s3">arg</span> i;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Here Button returns the button class for the current kit</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s3">Button</span>( w, <span class="s3">Rect</span>( rrand( 20, 300 ), rrand( 20, 300 ), 75, 24 ));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.states = [[ <span class="s5">"Start "</span> ++ i, <span class="s3">Color</span>.black, <span class="s3">Color</span>.rand ],</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ <span class="s5">"Stop "</span> ++ i, <span class="s3">Color</span>.white, <span class="s3">Color</span>.red ]];</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12">)</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s1">w.postln </span>//prints the window instance for the current gui kit</p>
-<p class="p8"><span class="s1">b.postln </span>//prints the button instance for the current gui kit</p>
-<p class="p7"><br></p>
-<p class="p5">In the above example, first a <a href="Main-GUI/Window.html"><span class="s3">Window</span></a> was created. A <a href="Main-GUI/Window.html"><span class="s3">Window</span></a> automatically has its own top level container, which is a subclass of <a href="Main-GUI/CompositeView.html"><span class="s3">CompositeView</span></a>. A <a href="Main-GUI/CompositeView.html"><span class="s3">CompositeView</span></a> can have a <b>decorator</b>, which automatically places the contents in a predetermined order. In this case it is a <a href="GUI-Tools/FlowLayout.html"><span class="s3">FlowLayout</span></a>, which is the only one that currently exists. This is optional however. Try commenting out the decorator in the example above.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s8"><a href="Main-GUI/Window.html">Window</a></span> and <a href="Main-GUI/CompositeView.html"><span class="s3">CompositeView</span></a> both have addFlowLayout utility methods which assign an instance of FlowLayout to their view decorators and return the decorator.</p>
-<p class="p7"><br></p>
-<p class="p5">Most gui objects are subclasses of <a href="Main-GUI/View.html"><span class="s3">View</span></a>. All subclasses of View are created with the same beginning arguments, <b>parent </b>and <b>bounds</b>, for example, <a href="Main-GUI/Slider.html"><span class="s3">Slider</span></a>(<b>parent</b>, <b>bounds</b>).</p>
-<p class="p4"><br></p>
-<p class="p5">The <b>parent</b> is a container view of some kind, and the <b>bounds</b> are an instance of <a href="../Geometry/Rect.html"><span class="s3">Rect</span></a> or a <a href="../Geometry/Point.html"><span class="s3">Point</span></a> (for width and height only). Using a Point is convenient if you are using a decorator for the postioning.</p>
-<p class="p7"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>w=</span><span class="s3">Window</span><span class="s1">.new.front;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Use Rect for precise placement in a CompositeView</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">Slider</span><span class="s1">(w, </span><span class="s3">Rect</span><span class="s1"> (50,50,250,20)); <span class="Apple-tab-span">	</span></span>// Slider is actually placed in w.view, which is a top view.</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">Slider</span><span class="s1">(w.view, </span><span class="s3">Rect</span><span class="s1"> (50,100,250,20)) </span>// So this is equivalent when Window is used as a parent</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p5">You can easily nest containers, decorators and views to make complex layouts, and you can use colors to visually separate them:</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w=<span class="s3">Window</span>.new.front;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>w.view.decorator = </span><span class="s3">FlowLayout</span><span class="s1">(w.view.bounds); </span>// notice that FlowView refers to w.view, not w</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v=<span class="s3">CompositeView</span>(w, <span class="s3">Rect</span>(5,5,190,390));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.background = <span class="s3">Color</span>.rand; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">// set the color</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.decorator = <span class="s3">FlowLayout</span>(v.bounds);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>y=<span class="s3">CompositeView</span>(w, <span class="s3">Rect</span>(205,5,190,390));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>y.background = <span class="s3">Color</span>.rand;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">// set the color</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>y.decorator = <span class="s3">FlowLayout</span>(y.bounds);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>14.do{ </span><span class="s3">Slider</span><span class="s1">(v, 180 at 20).background_(v.background) };</span>// Points used, since the layout is handled by a decorator.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>18.do{ <span class="s3">Slider2D</span>(y,58 at 58).background_(<span class="s3">Color</span>.rand); };</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Container Coordinates</b></p>
-<p class="p7"><br></p>
-<p class="p5">Container and User views use <b>relative</b> bounds coordinates, which are measured from the parent <b>view's</b> top left corner.</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>( <span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>w=</span><span class="s3">Window</span><span class="s1">.new.front;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Use Rect for precise placement in a CompositeView</p>
-<p class="p12"><span class="Apple-tab-span">	</span>v=<span class="s3">CompositeView</span>(w, <span class="s3">Rect</span>(50,50,300,300));</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>v.background_(</span><span class="s3">Color</span><span class="s1">.grey);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// give the subview a visible color</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">Slider</span><span class="s1">(v, </span><span class="s3">Rect</span><span class="s1"> (50,50,220,20)) <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// so this is equivalent when Window is used as a parent</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><b>Window Coordinates</b></p>
-<p class="p4"><br></p>
-<p class="p5">For a <a href="Main-GUI/Window.html"><span class="s3">Window</span></a>, the bounds coordinates are measured from the <b>bottom</b> left of the screen.</p>
-<p class="p5">The bounds.rect differs from that of views, and is the following: Rect(left, <b>bottom</b>, width,height). Typically, you will call Window.screenBounds to place a window precisely independently of the screen size you are working on.</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="s1"><span class="Apple-tab-span">	</span>w=</span><span class="s3">Window</span><span class="s1">.new(</span>"A Precisely Placed Window"<span class="s1">,</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Rect</span>(100, <span class="s3">Window</span>.screenBounds.height-300, 300, 200 )</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).front;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>) </span>//since the window is 200 high and the bottom is at screenBounds.height-300, the top is 100 from the screen top</p>
-<p class="p9"><br></p>
-<p class="p6"><b>Resizing</b></p>
-<p class="p4"><br></p>
-<p class="p5">Views can resize or stretch according to nine differents states, according to the instance variable <b>resize</b>. For documentation and examples see <a href="GUI-Tools/resize.html"><span class="s3">resize</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p9"><br></p>
-<p class="p6"><b>Actions: Performing Things with a GUI Widget</b></p>
-<p class="p7"><br></p>
-<p class="p5">Gui widgets typically have an <b>action</b>, which is a <a href="../Core/Kernel/Function.html"><span class="s3">Function</span></a> or <a href="../Core/Kernel/FunctionList.html"><span class="s3">FunctionList</span></a> to be evaluated when the user interacts with the widget.</p>
-<p class="p5">You can set the <b>action</b>, or use <b>addAction</b>, or <b>removeAction</b> to determine how a widget interacts with your code.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="s1"><span class="Apple-tab-span">	</span>w = </span><span class="s3">Window</span><span class="s1"> (</span>"A Slider"<span class="s1">);</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>a = <span class="s3">Slider</span> (w, <span class="s3">Rect</span>(40, 10, 300, 30));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.action={ <span class="s3">|sl|</span> sl.value.postln }; <span class="s7">// set the action of the slider</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.front</p>
-<p class="p12"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// now incrementally add some more actions to the slider</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.addAction({ <span class="s3">|sl|</span> w.view.background = <span class="s3">Color</span>.green(sl.value) });</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.addAction({ <span class="s3">|sl|</span> sl.background = <span class="s3">Color</span>.red(1 - sl.value) });</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// adding and removing an action:</p>
-<p class="p13"><span class="s1"><span class="Apple-tab-span">	</span>f = { </span><span class="s3">|sl|</span><span class="s1"> </span>"--------*******-------"<span class="s1">.postln; };</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.addAction(f);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.removeAction(f);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// or remove all, of course</p>
-<p class="p12"><span class="Apple-tab-span">	</span>a.action = <span class="s3">nil</span>;</p>
-<p class="p9"><br></p>
-<p class="p6"><b>GUI Timing: System Clock and App Clock</b></p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s1">See: <a href="../Scheduling/AppClock.html"><span class="s2">AppClock</span></a>, <a href="../Scheduling/TempoClock.html"><span class="s2">TempoClock</span></a>, <a href="../Scheduling/SystemClock.html"><span class="s2">SystemClock</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p5">Calls to the gui system from from the lang must be made from the AppClock, since the <a href="../Scheduling/SystemClock.html"><span class="s3">SystemClock</span></a> is reserved for high priority sound related tasks. If you want to control a gui with a Routine or Task, then you must either use the <a href="../Scheduling/AppClock.html"><span class="s3">AppClock</span></a> to play them, or use the <b>defer</b> mechanism, which schedules a Function in the <a href="../Scheduling/AppClock.html"><span class="s3">AppClock</span></a>:</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w=<span class="s3">Window</span>.new.front;</p>
-<p class="p14"><span class="s1"><span class="Apple-tab-span">	</span></span>Routine<span class="s1">{</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>20.do{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds=<span class="s3">Rect</span>(200.rand, 200+200.rand, 300,300);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}.play(<span class="s3">AppClock</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p5">The same thing using the <b>defer</b> mechanism and a <a href="../Scheduling/SystemClock.html"><span class="s3">SystemClock</span></a>:</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w=<span class="s3">Window</span>.new.front;</p>
-<p class="p14"><span class="s1"><span class="Apple-tab-span">	</span></span>Routine<span class="s1">{</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>20.do{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{w.bounds=<span class="s3">Rect</span>(200.rand, 200+200.rand, 300,300) }.defer; <span class="s7">// you must defer this</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{w.close}.defer; </span>// you must defer this</p>
-<p class="p14"><span class="s1"><span class="Apple-tab-span">	</span>}.play(</span>SystemClock<span class="s1">)</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><br></p>
-<p class="p5">In reality, <b>defer</b> simply schedules a <a href="../Core/Kernel/Routine.html"><span class="s3">Routine</span></a> in an <a href="../Scheduling/AppClock.html"><span class="s3">AppClock</span></a>.</p>
-<p class="p7"><br></p>
-<p class="p6"><b>Asynchronous GUI Techniques: Communicating with the Sound Server</b></p>
-<p class="p7"><br></p>
-<p class="p5">Sending values from a gui object to the sound server is basically the same as sending from the lang. Gui widgets typically have an <b>action</b>, which is a <a href="../Core/Kernel/Function.html"><span class="s3">Function</span></a> or <a href="../Core/Kernel/FunctionList.html"><span class="s3">FunctionList</span></a> to be evaluated when the user interacts with the widget.</p>
-<p class="p4"><br></p>
-<p class="p8">// use arrow keys to change frequency</p>
-<p class="p16"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(<span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.waitForBoot({</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n={<span class="s3">arg</span> freq=220;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> out;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out=<span class="s3">SinOsc</span>.ar(freq,0,0.2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8.do{out = <span class="s3">AllpassN</span>.ar(out, 0.2,0.02+0.20.rand,8)};</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = </span><span class="s3">Window</span><span class="s1">(</span>"Use arrow keys to change the frequency by steps"<span class="s1">, </span><span class="s3">Rect</span><span class="s1">(100, 500, 500, 120));</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="Apple-tab-span">	</span><span class="s3">NumberBox</span>(w, <span class="s3">Rect</span>(200, 10, 100, 20));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value = 220;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action = {</span><span class="s3">arg</span><span class="s1"> numb; n.set(</span><span class="s9">\freq</span><span class="s1">, numb.value); }; </span>// set the action here to change the frequency.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.addAction ( {w.view.background = <span class="s3">Color</span>.rand}); <span class="s7">// add another action here.</span></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.step=55; </span>//make the step a fraction of the freq</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.focus;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><br></p>
-<p class="p5">Recieving values, however is asynchronous, and requires either using an OSCresponderNode, or polling values.</p>
-<p class="p5">In this example a Routine polls values:</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>(<span class="s5">"Frequency Monitor"</span>, <span class="s3">Rect</span>(200, <span class="s3">Window</span>.screenBounds.height-200,300,150)).front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.view.background_(<span class="s3">Color</span>.grey(0.9));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>a = <span class="s3">StaticText</span>(w, <span class="s3">Rect</span>(45, 10, 200, 20)).background_(<span class="s3">Color</span>.rand);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s1"><span class="Apple-tab-span">	</span>a.string = </span>"Current Frequency"<span class="s1">;</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">Button</span>.new(w, <span class="s3">Rect</span>(45, 70, 200, 20)).states_([[<span class="s5">"close"</span>,<span class="s3">Color</span>.black,<span class="s3">Color</span>.rand]]).action_({w.close});</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.waitForBoot({</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b=<span class="s3">Bus</span>.new(<span class="s9">\control</span>,0,1);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q=<span class="s3">SynthDef</span>(<span class="s9">\Docs_FreqMonitor</span>, {<span class="s3">var</span> freq,snd;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq=<span class="s3">LFNoise0</span>.ar(2, 400, 650);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>snd=<span class="s3">SinOsc</span>.ar(freq,0,0.2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0,snd);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Out</span><span class="s1">.kr(b.index,freq); </span>// output the frequency to a control bus</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r= </span>Routine<span class="s1">{</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Set the value of the StaticText to the value in the control bus.</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Setting GUI values is asynchronous, so you must use .defer in the system clock.</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Also you must check if the window is still open, since Routine will continue for at least</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// one step after you close the window.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.get( {<span class="s3">arg</span> v; {w.isClosed.not.if{ a.string= <span class="s5">" Current Frequency: "</span>++v.round(0.01)}; }.defer} );</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// b.get sends query to the server, and waits for a response before it sets the StaticText.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01.wait;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.loop</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">CmdPeriod</span>.doOnce({w.close});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.onClose={r.stop; q.free; b.free }; <span class="s7">//clean up if the window closes</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p5">Here an OSCreponder changes a gui. See <a href="../Control/OSCresponderNode.html"><span class="s3">OSCresponderNode</span></a> for more examples. It is important here that the action of the responder is defered.</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.waitForBoot({</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w=<span class="s3">Window</span>.new.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background_(<span class="s3">Color</span>.blue(0.3));</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x={<span class="Apple-tab-span">	</span><span class="s3">var</span> d,arr,out;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = </span><span class="s3">Dust</span><span class="s1">.kr(2,0.2);<span class="Apple-tab-span">	</span></span>// generate triggers for SendTrig and for DynKlank</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">SendTrig</span><span class="s1">.kr(d, 0, 0.9); </span>// send message to lang</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arr=<span class="s3">Array</span>.fill(4, {<span class="s3">TRand</span>.kr(50+500.rand,1200+1200.rand,d)});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out=<span class="s3">DynKlank</span>.ar(`[arr, <span class="s3">nil</span>, [1, 1, 1, 1]], <span class="s3">K2A</span>.ar(d)*0.1);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Limiter</span>.ar(out,0.5)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// register to receive this message</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s3">OSCresponderNode</span>(s.addr, <span class="s9">'/tr'</span>,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ {w.refresh}.defer }).add; <span class="s7">// you must use defer here</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {<span class="s3">|me|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.use{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>90.do{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.strokeColor=<span class="s3">Color</span>.rand.alpha_(rrand(0.1,0.9));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.addArc(400.rand at 400.rand, rrand(10, 100), 2pi.rand, pi);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.stroke;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">CmdPeriod</span><span class="s1">.doOnce({w.close}); </span>//close window when sound is stopped</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.onClose=({a.remove; x.free;});<span class="s7">// clean up</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="s10"><span class="Apple-tab-span">	</span></span>)</p>
-<p class="p7"><br></p>
-<p class="p6"><b>Custom GUI: designing your own widgets using UserView</b></p>
-<p class="p7"><br></p>
-<p class="p5">UserView is generally speaking a view in which you can draw, and for which you can define mouse, key, and drag and drop actions. For documentation on all of these, see the <a href="Main-GUI/UserView.html"><span class="s3">UserView</span></a>, <a href="Main-GUI/View.html"><span class="s3">View</span></a>, and <a href="Main-GUI/Pen.html"><span class="s3">Pen</span></a> help files. The example below, however, will demonstrate a basic example of these techniques for designing a widget. The steps you need to take are the following:</p>
-<p class="p5">(<b>1) Create a User View (2) define a draw function (3) define an action (4) define mouse actions (5) define key actions (6) define drag and drop actions</b>. You can omit steps which you don't want.</p>
-<p class="p4"><br></p>
-<p class="p5">Caution, subclassing differs in many points from the example below. For a subclassing template and a quick tutorial on how to write a custom widget as a SCUserView subclass, see <a href="Cocoa-GUI/SCUserViewSubclassing/SCUserView-Subclassing.html"><span class="s3">SCUserView-Subclassing</span></a>.<span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">var</span> value = 0.5;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>.new.front;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// (1) create a user view</p>
-<p class="p12"><span class="Apple-tab-span">	</span>v = <span class="s3">UserView</span>(w,<span class="s3">Rect</span>(50,50,200,20));</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// (2) define a drawing function for Pen</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.drawFunc = {</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Draw the fill</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.fillColor = <span class="s3">Color</span>.grey;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.addRect(<span class="s3">Rect</span>(0,0, v.bounds.width*value,v.bounds.height));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.fill;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Draw the triangle</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.fillColor = <span class="s3">Color</span>.red;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.moveTo(((v.bounds.width*value)-5) @ v.bounds.height);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.lineTo(((v.bounds.width*value)+5) @ v.bounds.height);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.lineTo(((v.bounds.width*value)) @ (v.bounds.height/2));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.lineTo(((v.bounds.width*value)-5) @ v.bounds.height);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.fill;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Draw the frame</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.strokeColor = <span class="s3">Color</span>.black;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.addRect(<span class="s3">Rect</span>(0,0, v.bounds.width,v.bounds.height));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pen</span>.stroke;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// (3) set an action to the user view<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.action = {value.postln; v.refresh};</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// (4) define mouse actions</p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.mouseDownAction = {<span class="s3">arg</span> view, x = 0.5,y, m;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//m.postln;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>([256, 0].includes(m)).if{ <span class="s7">// restrict to no modifier</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value = (x).linlin(0,v.bounds.width,0,1); v.doAction};</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.mouseMoveAction = v.mouseDownAction;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// (5) (optional) define key actions</p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.keyDownAction = { <span class="s3">arg</span> view, char, modifiers, unicode,keycode;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (unicode == 16rF700, { value = (value+0.1).clip(0,1) });</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (unicode == 16rF703, { value = (value+0.1).clip(0,1) });</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (unicode == 16rF701, { value = (value-0.1).clip(0,1) });</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (unicode == 16rF702, { value = (value-0.1).clip(0,1) });</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.doAction;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// (6) (optional) define drag and drop</p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.beginDragAction = {value}; <span class="s7">// what to drag</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.canReceiveDragHandler = {<span class="s3">View</span>.currentDrag.isNumber}; <span class="s7">// what to receive</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v.receiveDragHandler = {value = <span class="s3">View</span>.currentDrag; v.doAction }; <span class="s7">// what to do on receiving</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// just for testing drag and drop</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s3">Slider</span>(w,<span class="s3">Rect</span>(50,100,200,20));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">StaticText</span><span class="s1">(w,</span><span class="s3">Rect</span><span class="s1">(50,150,350,50)).string_(</span>"To Test Drag and Drop,\nHold down Cmd (Ctl) Key"<span class="s1">);</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Automatic GUI</b></p>
-<p class="p7"><br></p>
-<p class="p5">You can get a quick simple automatic interface for a <a href="../ServerArchitecture/Synth.html"><span class="s3">Synth</span></a> with <a href="../ServerArchitecture/SynthDesc.html"><span class="s3">SynthDesc</span></a> : makeWindow.</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.waitForBoot({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s5">"test"</span>, { <span class="s3">arg</span> out, freq=330, amp=0.6;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar(freq,0,amp))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SynthDescLib</span>.global.at(<span class="s9">\test</span>).makeWindow;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Helper Methods in GUI</b></p>
-<p class="p7"><br></p>
-<p class="p5"><b>*stringBounds( string, font )</b></p>
-<p class="p4"><br></p>
-<p class="p5">Returns a Rect object describing the bounds occupied by the given string if it was painted using the given font. Note that this method is asynchronous in SwingOSC, hence it is advised to use it inside a Routine.(not necessary on CocoaGUI). Example:</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> text = <span class="s5">"Test"</span>, bounds, font, fonts, rect = <span class="s3">Rect</span>.new, total = <span class="s3">Rect</span>.new;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fonts = <span class="s3">Font</span>.availableFonts;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>.new( <span class="s5">"String Bounds"</span>, resizable: <span class="s3">false</span> );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background = <span class="s3">Color</span>.blue;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>font<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= <span class="s3">Font</span>( fonts.choose, exprand( 6, 36 ));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bounds<span class="Apple-tab-span">	</span>= <span class="s3">GUI</span>.stringBounds( text, font );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rect.set( rect.right, rect.bottom, bounds.width + 4, bounds.height + 2 );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">StaticText</span>.new( w, rect )</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.font_( font ).align_( <span class="s9">\center</span> ).string_( text ).background_( <span class="s3">Color</span>.white );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>total<span class="Apple-tab-span">	</span>= total.union( rect );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds = total.moveTo( 200, 200 );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}.fork( <span class="s3">AppClock</span> );</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><br></p>
-<p class="p6"><b>Browsers and Inspectors</b></p>
-<p class="p4"><br></p>
-<p class="p5">These classes use the current GUI kit implementation as returned by <span class="s11">GUI</span><span class="s12">.current</span> . You usually do not instantiate them directly, but use one of the "Plus-GUI" methods described in the next paragraph.</p>
-<p class="p4"><br></p>
-<p class="p5">ObjectInspector</p>
-<p class="p5">StringInspector</p>
-<p class="p5">ClassInspector</p>
-<p class="p5">FunctionDefInspector</p>
-<p class="p5">MethodInspector</p>
-<p class="p5">SlotInspector</p>
-<p class="p5">FrameInspector</p>
-<p class="p4"><br></p>
-<p class="p5">ClassBrowser</p>
-<p class="p4"><br></p>
-<p class="p7"><br></p>
-<p class="p5">"Plus-GUI" methods are methods added to other classes such as <a href="../Collections/String.html"><span class="s3">String</span></a> or <a href="../ServerArchitecture/Server.html"><span class="s3">Server</span></a> that provide GUI functionality for those classes. These methods use the current GUI kit implementation as returned by <span class="s11">GUI</span><span class="s12">.current</span> .</p>
-<p class="p4"><br></p>
-<p class="p17">.inspect</p>
-<p class="p5"><span class="Apple-tab-span">	</span>Examples for Inspectors:</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Server</span>.default.inspect;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Server</span>.inspect;</p>
-<p class="p4"><br></p>
-<p class="p18">.browse</p>
-<p class="p5"><span class="Apple-tab-span">	</span>Examples for Browsers:</p>
-<p class="p11"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">UGen</span><span class="s1">.browse;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ClassBrowser</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SynthDescLib</span>( <span class="s7">\myLib</span> ).read.browse;</p>
-<p class="p4"><br></p>
-<p class="p18">.makeWindow</p>
-<p class="p5"><span class="Apple-tab-span">	</span>Examples for Server:</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if( s.window.notNil, {s.window.close});</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.makeWindow;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.scope;</p>
-<p class="p4"><br></p>
-<p class="p18">.plot</p>
-<p class="p5"><span class="Apple-tab-span">	</span>Examples for Plotting:</p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see <a href="../Collections/ArrayedCollection.html"><span class="s2">ArrayedCollection</span></a>, <a href="../ServerArchitecture/Buffer.html"><span class="s2">Buffer</span></a>, <a href="../Control/Env.html"><span class="s2">Env</span></a>, <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a>, <a href="../Collections/Signal.html"><span class="s2">Signal</span></a>, <a href="../Files/SoundFile.html"><span class="s2">SoundFile</span></a>, <a href="../Collections/Wavetable.html"><span class="s2">Wavetable</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p18">.scope</p>
-<p class="p5"><span class="Apple-tab-span">	</span>Examples for Scoping</p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see <a href="../ServerArchitecture/Bus.html"><span class="s2">Bus</span></a>, <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a>, <a href="../ServerArchitecture/Server.html"><span class="s2">Server</span></a>, <a href="../UGens/UGen.html"><span class="s2">UGen</span></a></span><span class="s3">, <a href="Main-GUI/ScopeView.html"><span class="s4">ScopeView</span></a>, <a href="Main-GUI/Stethoscope.html"><span class="s4">Stethoscope</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/Color.html b/Help/GUI/GUI-Tools/Color.html
deleted file mode 100644
index 788054a..0000000
--- a/Help/GUI/GUI-Tools/Color.html
+++ /dev/null
@@ -1,978 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #8d261b}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #603227}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #485abb}
-span.s3 {color: #3b478c}
-span.s4 {color: #4357c0}
-span.s5 {color: #3e54c5}
-span.s6 {color: #000000}
-span.s7 {color: #0922b2}
-span.s8 {font: 12.0px Helvetica; color: #000000}
-span.s9 {color: #1e34a1}
-span.s10 {color: #1638e6}
-span.s11 {color: #0018b8}
-span.s12 {color: #356f14}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Color<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an object which stores color values</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">An object which stores red, green, blue, and alpha values in instance variables, and provides numerous class and instance methods for creating and manipulating these values.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="../../Core/Object.html"><span class="s3">Object</span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (red, green, blue, alpha)</b></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>red </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a> between 0 and 1. Default value is 0.0</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>green </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a> between 0 and 1. Default value is 0.0</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>blue </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a> between 0 and 1 . Default value is 0.0</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alpha </b>- An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a> between 0 and 1 . Default value is 0.0</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new255 (red, green, blue, alpha)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>RGB values from 0-255. Takes 8-bit values as arguments.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>red </b>- An instance of <a href="../../Math/Integer.html"><span class="s5">Integer</span></a> between 0 and 255. Default value is 0.0</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>green </b>- An integer between 0 and 255. Default value is 0.0</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>blue </b>- An integer between 0 and 255 . Default value is 0.0</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alpha </b>- An integer between 0 and 255 . Default value is 255</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*fromArray (array)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array </b>- An instance of Array. 1-4 values between 0 and 1. See <b>new. </b>Same as *<b>new</b>(*array)</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*black</b> - nothing is darker.</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*white</b> - nothing is lighter.</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*clear </b>- nothing is more clear.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*gray (gray, alpha)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*grey (grey, alpha)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>British or American shades of grey.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gray/grey </b>- shades between 0 (black) and 1 (white) as <a href="../../Math/Float.html"><span class="s4">Float</span></a>. Default is 0.5.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alpha </b>- Transparency of grey between 0 and 1 as <a href="../../Math/Float.html"><span class="s4">Float</span></a>. Default is 1.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*red (val, alpha)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*green (val, alpha)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*blue (val, alpha)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*cyan (val, alpha)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*magenta (val, alpha)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*yellow (val, alpha)</b></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- Default is 1. An instance of Float between 0 and 1, where 1 is the bright, fully saturated color, and 0 is black.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alpha </b>- Transparency between 0 and 1 as <a href="../../Math/Float.html"><span class="s4">Float</span></a>. Default is 1.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*rand (lo, hi)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A random RGB Color where the colors are randomly chosen between <b>lo</b> and <b>hi</b>. See <b>new</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo </b>- An instance of Float between 0 and 1. Default value is 0.3.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>hi </b>- An instance of Float between 0 and 1. Default value is 0.9.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*hsv (hue, sat, val, alpha)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Maps hsv and alpha values to rgb between 0 and 1.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>hue </b>- Default value is nil. Float between 0 and 0.999. Default value is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sat </b>- Float between 0 and 1. Default value is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- Float between 0 and 1. Default value is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alpha </b>- Default value is 1. Float between 0 and 1.</p>
-<p class="p5"><br></p>
-<p class="p9"><b>Accessing Instance and Class Variables</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>red_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>red</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>green</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>green_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>blue</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>blue_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>alpha</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>alpha_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Get/set one of the instance variables, red, green, blue, or alpha,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>arg1</b> - An instance of <a href="../../Math/Float.html"><span class="s5">Float</span></a> between 0 and 1.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b>Doing Some Task (optional)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>==</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>binary operator</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// returns true</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Color</span>.new255(0,0,255,255) == <span class="s7">Color</span>.new(0,0,1,1)<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>scaleByAlpha</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a Color, where red, green, and blue are scaled by the alpha value, and alpha is set to 1.</p>
-<p class="p7"><br></p>
-<p class="p10"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s6"><span class="Apple-tab-span">	</span></span>// returns true:</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Color</span>(1,0.5,1,0.5).scaleByAlpha == <span class="s7">Color</span>(0.5,0.25,0.5,1)</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>blend (that, blend)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Interpolates the <b>red</b>, <b>green</b>, <b>blue</b>, and <b>alpha</b> values of two Colors, linearly weighting between the first and the second.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>that </b>- A second Color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>blend </b>- 0 menas only <b>this</b>, while 1 means only <b>that</b>. default is 0.5</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>vary (val, lo, hi, alphaVal)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a random variation of a Color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>val </b>- Varies the RGB values +- this amount. Default value is 0.1.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo </b>- Low-clips the RGB variation here . Default value is 0.3..</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>hi </b>- High-clips the RGB variation here . Default value is 0.9.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>alphaVal </b>- Varies the alpha value +- tis amount, and clips it between 0 and 1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>complementary</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the complementary color.</p>
-<p class="p12"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s6"><span class="Apple-tab-span">	</span></span>// returns true:</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">Color</span>(1,0.5,1,0.5).complementary == <span class="s9">Color</span>(0.0, 0.5, 0.0, 0.5)</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>multiply (aColor, opacity)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>divide (aColor, opacity)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>subtract (aColor, opacity)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>add (aColor, opacity)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>symmetricDifference (aColor, opacity)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>screen (aColor, opacity)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>lighten (aColor, opacity)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>darken (aColor, opacity)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aColor </b>- An instance of Color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>opacity </b>- A value between 0 and 1. Default value is 1.0.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>hueBlend (aColor, blend)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>saturationBlend (aColor, blend)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>valueBlend (aColor, blend)</b></p>
-<p class="p13"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aColor </b>- An instance of Color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>blend </b>- A value between 0 and 1. Default value is 0..</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>asHSV</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an array with [ hue, saturation, value, alpha], as values between 0 and 1.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>asArray</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an array with [ red, green, blue, alpha], as values between 0 and 1.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>printOn (stream)</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>storeArgs</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an array with [ <b>red</b>, <b>green</b>, <b>blue</b>, <b>alpha</b>].</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setStroke</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>For use with <a href="../Main-GUI/Pen.html"><span class="s10">Pen</span></a>. Sets the stroke of Pen to this.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setFill</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>For use with <a href="../Main-GUI/Pen.html"><span class="s10">Pen</span></a>. Sets the fill of Pen to this.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>set</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>For use with <a href="../Main-GUI/Pen.html"><span class="s10">Pen</span></a>. Sets the stroke and fill of Pen to this.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>asInteger</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an integer between -1 (white) and 255 (black).</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>hash</b></p>
-<p class="p5"><br></p>
-<p class="p9"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p14">(</p>
-<p class="p14">w = <span class="s11">Window</span>.new.front;</p>
-<p class="p14">w.view.background_(<span class="s11">Color</span>.white);</p>
-<p class="p14">w.drawHook = {</p>
-<p class="p15"><span class="s6"><span class="Apple-tab-span">	</span></span>// set the Color</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s11">Pen</span>.translate(200, 200);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>30.do{</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Pen</span>.width = 3.0.rand;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Color</span>.blue(rrand(0.0, 1), rrand(0.0, 0.5)).setStroke;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Color</span>.red(rrand(0.0, 1), rrand(0.0, 0.5)).setFill;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Pen</span>.addAnnularWedge(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 at 0,</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(10, 50),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(51, 100),<span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi.rand,</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi.rand</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Pen</span>.perform([<span class="s12">\stroke</span>, <span class="s12">\fill</span>].choose);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>}</p>
-<p class="p14">};</p>
-<p class="p14">w.refresh;</p>
-<p class="p14">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>X-windows colors :</b></p>
-<p class="p3"><br></p>
-<p class="p14"><span class="s12">'alice blue'</span> -> <span class="s11">Color</span>.new255(240, 248, 255),</p>
-<p class="p14"><span class="s12">'AliceBlue'</span> -> <span class="s11">Color</span>.new255(240, 248, 255),</p>
-<p class="p14"><span class="s12">'antique white'</span> -> <span class="s11">Color</span>.new255(250, 235, 215),</p>
-<p class="p14"><span class="s12">'AntiqueWhite'</span> -> <span class="s11">Color</span>.new255(250, 235, 215),</p>
-<p class="p14"><span class="s12">'AntiqueWhite1'</span> -> <span class="s11">Color</span>.new255(255, 239, 219),</p>
-<p class="p14"><span class="s12">'AntiqueWhite2'</span> -> <span class="s11">Color</span>.new255(238, 223, 204),</p>
-<p class="p14"><span class="s12">'AntiqueWhite3'</span> -> <span class="s11">Color</span>.new255(205, 192, 176),</p>
-<p class="p14"><span class="s12">'AntiqueWhite4'</span> -> <span class="s11">Color</span>.new255(139, 131, 120),</p>
-<p class="p14"><span class="s12">'aquamarine'</span> -> <span class="s11">Color</span>.new255(127, 255, 212),</p>
-<p class="p14"><span class="s12">'aquamarine1'</span> -> <span class="s11">Color</span>.new255(127, 255, 212),</p>
-<p class="p14"><span class="s12">'aquamarine2'</span> -> <span class="s11">Color</span>.new255(118, 238, 198),</p>
-<p class="p14"><span class="s12">'aquamarine3'</span> -> <span class="s11">Color</span>.new255(102, 205, 170),</p>
-<p class="p14"><span class="s12">'aquamarine4'</span> -> <span class="s11">Color</span>.new255(69, 139, 116),</p>
-<p class="p14"><span class="s12">'azure'</span> -> <span class="s11">Color</span>.new255(240, 255, 255),</p>
-<p class="p14"><span class="s12">'azure1'</span> -> <span class="s11">Color</span>.new255(240, 255, 255),</p>
-<p class="p14"><span class="s12">'azure2'</span> -> <span class="s11">Color</span>.new255(224, 238, 238),</p>
-<p class="p14"><span class="s12">'azure3'</span> -> <span class="s11">Color</span>.new255(193, 205, 205),</p>
-<p class="p14"><span class="s12">'azure4'</span> -> <span class="s11">Color</span>.new255(131, 139, 139),</p>
-<p class="p14"><span class="s12">'beige'</span> -> <span class="s11">Color</span>.new255(245, 245, 220),</p>
-<p class="p14"><span class="s12">'bisque'</span> -> <span class="s11">Color</span>.new255(255, 228, 196),</p>
-<p class="p14"><span class="s12">'bisque1'</span> -> <span class="s11">Color</span>.new255(255, 228, 196),</p>
-<p class="p14"><span class="s12">'bisque2'</span> -> <span class="s11">Color</span>.new255(238, 213, 183),</p>
-<p class="p14"><span class="s12">'bisque3'</span> -> <span class="s11">Color</span>.new255(205, 183, 158),</p>
-<p class="p14"><span class="s12">'bisque4'</span> -> <span class="s11">Color</span>.new255(139, 125, 107),</p>
-<p class="p14"><span class="s12">'black'</span> -> <span class="s11">Color</span>.new255(0, 0, 0),</p>
-<p class="p14"><span class="s12">'blanched almond'</span> -> <span class="s11">Color</span>.new255(255, 235, 205),</p>
-<p class="p14"><span class="s12">'BlanchedAlmond'</span> -> <span class="s11">Color</span>.new255(255, 235, 205),</p>
-<p class="p14"><span class="s12">'blue'</span> -> <span class="s11">Color</span>.new255(0, 0, 255),</p>
-<p class="p14"><span class="s12">'blue violet'</span> -> <span class="s11">Color</span>.new255(138, 43, 226),</p>
-<p class="p14"><span class="s12">'blue1'</span> -> <span class="s11">Color</span>.new255(0, 0, 255),</p>
-<p class="p14"><span class="s12">'blue2'</span> -> <span class="s11">Color</span>.new255(0, 0, 238),</p>
-<p class="p14"><span class="s12">'blue3'</span> -> <span class="s11">Color</span>.new255(0, 0, 205),</p>
-<p class="p14"><span class="s12">'blue4'</span> -> <span class="s11">Color</span>.new255(0, 0, 139),</p>
-<p class="p14"><span class="s12">'BlueViolet'</span> -> <span class="s11">Color</span>.new255(138, 43, 226),</p>
-<p class="p14"><span class="s12">'brown'</span> -> <span class="s11">Color</span>.new255(165, 42, 42),</p>
-<p class="p14"><span class="s12">'brown1'</span> -> <span class="s11">Color</span>.new255(255, 64, 64),</p>
-<p class="p14"><span class="s12">'brown2'</span> -> <span class="s11">Color</span>.new255(238, 59, 59),</p>
-<p class="p14"><span class="s12">'brown3'</span> -> <span class="s11">Color</span>.new255(205, 51, 51),</p>
-<p class="p14"><span class="s12">'brown4'</span> -> <span class="s11">Color</span>.new255(139, 35, 35),</p>
-<p class="p14"><span class="s12">'burlywood'</span> -> <span class="s11">Color</span>.new255(222, 184, 135),</p>
-<p class="p14"><span class="s12">'burlywood1'</span> -> <span class="s11">Color</span>.new255(255, 211, 155),</p>
-<p class="p14"><span class="s12">'burlywood2'</span> -> <span class="s11">Color</span>.new255(238, 197, 145),</p>
-<p class="p14"><span class="s12">'burlywood3'</span> -> <span class="s11">Color</span>.new255(205, 170, 125),</p>
-<p class="p14"><span class="s12">'burlywood4'</span> -> <span class="s11">Color</span>.new255(139, 115, 85),</p>
-<p class="p14"><span class="s12">'cadet blue'</span> -> <span class="s11">Color</span>.new255(95, 158, 160),</p>
-<p class="p14"><span class="s12">'CadetBlue'</span> -> <span class="s11">Color</span>.new255(95, 158, 160),</p>
-<p class="p14"><span class="s12">'CadetBlue1'</span> -> <span class="s11">Color</span>.new255(152, 245, 255),</p>
-<p class="p14"><span class="s12">'CadetBlue2'</span> -> <span class="s11">Color</span>.new255(142, 229, 238),</p>
-<p class="p14"><span class="s12">'CadetBlue3'</span> -> <span class="s11">Color</span>.new255(122, 197, 205),</p>
-<p class="p14"><span class="s12">'CadetBlue4'</span> -> <span class="s11">Color</span>.new255(83, 134, 139),</p>
-<p class="p14"><span class="s12">'chartreuse'</span> -> <span class="s11">Color</span>.new255(127, 255, 0),</p>
-<p class="p14"><span class="s12">'chartreuse1'</span> -> <span class="s11">Color</span>.new255(127, 255, 0),</p>
-<p class="p14"><span class="s12">'chartreuse2'</span> -> <span class="s11">Color</span>.new255(118, 238, 0),</p>
-<p class="p14"><span class="s12">'chartreuse3'</span> -> <span class="s11">Color</span>.new255(102, 205, 0),</p>
-<p class="p14"><span class="s12">'chartreuse4'</span> -> <span class="s11">Color</span>.new255(69, 139, 0),</p>
-<p class="p14"><span class="s12">'chocolate'</span> -> <span class="s11">Color</span>.new255(210, 105, 30),</p>
-<p class="p14"><span class="s12">'chocolate1'</span> -> <span class="s11">Color</span>.new255(255, 127, 36),</p>
-<p class="p14"><span class="s12">'chocolate2'</span> -> <span class="s11">Color</span>.new255(238, 118, 33),</p>
-<p class="p14"><span class="s12">'chocolate3'</span> -> <span class="s11">Color</span>.new255(205, 102, 29),</p>
-<p class="p14"><span class="s12">'chocolate4'</span> -> <span class="s11">Color</span>.new255(139, 69, 19),</p>
-<p class="p14"><span class="s12">'coral'</span> -> <span class="s11">Color</span>.new255(255, 127, 80),</p>
-<p class="p14"><span class="s12">'coral1'</span> -> <span class="s11">Color</span>.new255(255, 114, 86),</p>
-<p class="p14"><span class="s12">'coral2'</span> -> <span class="s11">Color</span>.new255(238, 106, 80),</p>
-<p class="p14"><span class="s12">'coral3'</span> -> <span class="s11">Color</span>.new255(205, 91, 69),</p>
-<p class="p14"><span class="s12">'coral4'</span> -> <span class="s11">Color</span>.new255(139, 62, 47),</p>
-<p class="p14"><span class="s12">'cornflower blue'</span> -> <span class="s11">Color</span>.new255(100, 149, 237),</p>
-<p class="p14"><span class="s12">'CornflowerBlue'</span> -> <span class="s11">Color</span>.new255(100, 149, 237),</p>
-<p class="p14"><span class="s12">'cornsilk'</span> -> <span class="s11">Color</span>.new255(255, 248, 220),</p>
-<p class="p14"><span class="s12">'cornsilk1'</span> -> <span class="s11">Color</span>.new255(255, 248, 220),</p>
-<p class="p14"><span class="s12">'cornsilk2'</span> -> <span class="s11">Color</span>.new255(238, 232, 205),</p>
-<p class="p14"><span class="s12">'cornsilk3'</span> -> <span class="s11">Color</span>.new255(205, 200, 177),</p>
-<p class="p14"><span class="s12">'cornsilk4'</span> -> <span class="s11">Color</span>.new255(139, 136, 120),</p>
-<p class="p14"><span class="s12">'cyan'</span> -> <span class="s11">Color</span>.new255(0, 255, 255),</p>
-<p class="p14"><span class="s12">'cyan1'</span> -> <span class="s11">Color</span>.new255(0, 255, 255),</p>
-<p class="p14"><span class="s12">'cyan2'</span> -> <span class="s11">Color</span>.new255(0, 238, 238),</p>
-<p class="p14"><span class="s12">'cyan3'</span> -> <span class="s11">Color</span>.new255(0, 205, 205),</p>
-<p class="p14"><span class="s12">'cyan4'</span> -> <span class="s11">Color</span>.new255(0, 139, 139),</p>
-<p class="p14"><span class="s12">'dark goldenrod'</span> -> <span class="s11">Color</span>.new255(184, 134, 11),</p>
-<p class="p14"><span class="s12">'dark green'</span> -> <span class="s11">Color</span>.new255(0, 100, 0),</p>
-<p class="p14"><span class="s12">'dark khaki'</span> -> <span class="s11">Color</span>.new255(189, 183, 107),</p>
-<p class="p14"><span class="s12">'dark olive green'</span> -> <span class="s11">Color</span>.new255(85, 107, 47),</p>
-<p class="p14"><span class="s12">'dark orange'</span> -> <span class="s11">Color</span>.new255(255, 140, 0),</p>
-<p class="p14"><span class="s12">'dark orchid'</span> -> <span class="s11">Color</span>.new255(153, 50, 204),</p>
-<p class="p14"><span class="s12">'dark salmon'</span> -> <span class="s11">Color</span>.new255(233, 150, 122),</p>
-<p class="p14"><span class="s12">'dark sea green'</span> -> <span class="s11">Color</span>.new255(143, 188, 143),</p>
-<p class="p14"><span class="s12">'dark slate blue'</span> -> <span class="s11">Color</span>.new255(72, 61, 139),</p>
-<p class="p14"><span class="s12">'dark slate gray'</span> -> <span class="s11">Color</span>.new255(47, 79, 79),</p>
-<p class="p14"><span class="s12">'dark slate grey'</span> -> <span class="s11">Color</span>.new255(47, 79, 79),</p>
-<p class="p14"><span class="s12">'dark turquoise'</span> -> <span class="s11">Color</span>.new255(0, 206, 209),</p>
-<p class="p14"><span class="s12">'dark violet'</span> -> <span class="s11">Color</span>.new255(148, 0, 211),</p>
-<p class="p14"><span class="s12">'DarkGoldenrod'</span> -> <span class="s11">Color</span>.new255(184, 134, 11),</p>
-<p class="p14"><span class="s12">'DarkGoldenrod1'</span> -> <span class="s11">Color</span>.new255(255, 185, 15),</p>
-<p class="p14"><span class="s12">'DarkGoldenrod2'</span> -> <span class="s11">Color</span>.new255(238, 173, 14),</p>
-<p class="p14"><span class="s12">'DarkGoldenrod3'</span> -> <span class="s11">Color</span>.new255(205, 149, 12),</p>
-<p class="p14"><span class="s12">'DarkGoldenrod4'</span> -> <span class="s11">Color</span>.new255(139, 101, 8),</p>
-<p class="p14"><span class="s12">'DarkGreen'</span> -> <span class="s11">Color</span>.new255(0, 100, 0),</p>
-<p class="p14"><span class="s12">'DarkKhaki'</span> -> <span class="s11">Color</span>.new255(189, 183, 107),</p>
-<p class="p14"><span class="s12">'DarkOliveGreen'</span> -> <span class="s11">Color</span>.new255(85, 107, 47),</p>
-<p class="p14"><span class="s12">'DarkOliveGreen1'</span> -> <span class="s11">Color</span>.new255(202, 255, 112),</p>
-<p class="p14"><span class="s12">'DarkOliveGreen2'</span> -> <span class="s11">Color</span>.new255(188, 238, 104),</p>
-<p class="p14"><span class="s12">'DarkOliveGreen3'</span> -> <span class="s11">Color</span>.new255(162, 205, 90),</p>
-<p class="p14"><span class="s12">'DarkOliveGreen4'</span> -> <span class="s11">Color</span>.new255(110, 139, 61),</p>
-<p class="p14"><span class="s12">'DarkOrange'</span> -> <span class="s11">Color</span>.new255(255, 140, 0),</p>
-<p class="p14"><span class="s12">'DarkOrange1'</span> -> <span class="s11">Color</span>.new255(255, 127, 0),</p>
-<p class="p14"><span class="s12">'DarkOrange2'</span> -> <span class="s11">Color</span>.new255(238, 118, 0),</p>
-<p class="p14"><span class="s12">'DarkOrange3'</span> -> <span class="s11">Color</span>.new255(205, 102, 0),</p>
-<p class="p14"><span class="s12">'DarkOrange4'</span> -> <span class="s11">Color</span>.new255(139, 69, 0),</p>
-<p class="p14"><span class="s12">'DarkOrchid'</span> -> <span class="s11">Color</span>.new255(153, 50, 204),</p>
-<p class="p14"><span class="s12">'DarkOrchid1'</span> -> <span class="s11">Color</span>.new255(191, 62, 255),</p>
-<p class="p14"><span class="s12">'DarkOrchid2'</span> -> <span class="s11">Color</span>.new255(178, 58, 238),</p>
-<p class="p14"><span class="s12">'DarkOrchid3'</span> -> <span class="s11">Color</span>.new255(154, 50, 205),</p>
-<p class="p14"><span class="s12">'DarkOrchid4'</span> -> <span class="s11">Color</span>.new255(104, 34, 139),</p>
-<p class="p14"><span class="s12">'DarkSalmon'</span> -> <span class="s11">Color</span>.new255(233, 150, 122),</p>
-<p class="p14"><span class="s12">'DarkSeaGreen'</span> -> <span class="s11">Color</span>.new255(143, 188, 143),</p>
-<p class="p14"><span class="s12">'DarkSeaGreen1'</span> -> <span class="s11">Color</span>.new255(193, 255, 193),</p>
-<p class="p14"><span class="s12">'DarkSeaGreen2'</span> -> <span class="s11">Color</span>.new255(180, 238, 180),</p>
-<p class="p14"><span class="s12">'DarkSeaGreen3'</span> -> <span class="s11">Color</span>.new255(155, 205, 155),</p>
-<p class="p14"><span class="s12">'DarkSeaGreen4'</span> -> <span class="s11">Color</span>.new255(105, 139, 105),</p>
-<p class="p14"><span class="s12">'DarkSlateBlue'</span> -> <span class="s11">Color</span>.new255(72, 61, 139),</p>
-<p class="p14"><span class="s12">'DarkSlateGray'</span> -> <span class="s11">Color</span>.new255(47, 79, 79),</p>
-<p class="p14"><span class="s12">'DarkSlateGray1'</span> -> <span class="s11">Color</span>.new255(151, 255, 255),</p>
-<p class="p14"><span class="s12">'DarkSlateGray2'</span> -> <span class="s11">Color</span>.new255(141, 238, 238),</p>
-<p class="p14"><span class="s12">'DarkSlateGray3'</span> -> <span class="s11">Color</span>.new255(121, 205, 205),</p>
-<p class="p14"><span class="s12">'DarkSlateGray4'</span> -> <span class="s11">Color</span>.new255(82, 139, 139),</p>
-<p class="p14"><span class="s12">'DarkSlateGrey'</span> -> <span class="s11">Color</span>.new255(47, 79, 79),</p>
-<p class="p14"><span class="s12">'DarkTurquoise'</span> -> <span class="s11">Color</span>.new255(0, 206, 209),</p>
-<p class="p14"><span class="s12">'DarkViolet'</span> -> <span class="s11">Color</span>.new255(148, 0, 211),</p>
-<p class="p14"><span class="s12">'deep pink'</span> -> <span class="s11">Color</span>.new255(255, 20, 147),</p>
-<p class="p14"><span class="s12">'deep sky blue'</span> -> <span class="s11">Color</span>.new255(0, 191, 255),</p>
-<p class="p14"><span class="s12">'DeepPink'</span> -> <span class="s11">Color</span>.new255(255, 20, 147),</p>
-<p class="p14"><span class="s12">'DeepPink1'</span> -> <span class="s11">Color</span>.new255(255, 20, 147),</p>
-<p class="p14"><span class="s12">'DeepPink2'</span> -> <span class="s11">Color</span>.new255(238, 18, 137),</p>
-<p class="p14"><span class="s12">'DeepPink3'</span> -> <span class="s11">Color</span>.new255(205, 16, 118),</p>
-<p class="p14"><span class="s12">'DeepPink4'</span> -> <span class="s11">Color</span>.new255(139, 10, 80),</p>
-<p class="p14"><span class="s12">'DeepSkyBlue'</span> -> <span class="s11">Color</span>.new255(0, 191, 255),</p>
-<p class="p14"><span class="s12">'DeepSkyBlue1'</span> -> <span class="s11">Color</span>.new255(0, 191, 255),</p>
-<p class="p14"><span class="s12">'DeepSkyBlue2'</span> -> <span class="s11">Color</span>.new255(0, 178, 238),</p>
-<p class="p14"><span class="s12">'DeepSkyBlue3'</span> -> <span class="s11">Color</span>.new255(0, 154, 205),</p>
-<p class="p14"><span class="s12">'DeepSkyBlue4'</span> -> <span class="s11">Color</span>.new255(0, 104, 139),</p>
-<p class="p14"><span class="s12">'dim gray'</span> -> <span class="s11">Color</span>.new255(105, 105, 105),</p>
-<p class="p14"><span class="s12">'dim grey'</span> -> <span class="s11">Color</span>.new255(105, 105, 105),</p>
-<p class="p14"><span class="s12">'DimGray'</span> -> <span class="s11">Color</span>.new255(105, 105, 105),</p>
-<p class="p14"><span class="s12">'DimGrey'</span> -> <span class="s11">Color</span>.new255(105, 105, 105),</p>
-<p class="p14"><span class="s12">'dodger blue'</span> -> <span class="s11">Color</span>.new255(30, 144, 255),</p>
-<p class="p14"><span class="s12">'DodgerBlue'</span> -> <span class="s11">Color</span>.new255(30, 144, 255),</p>
-<p class="p14"><span class="s12">'DodgerBlue1'</span> -> <span class="s11">Color</span>.new255(30, 144, 255),</p>
-<p class="p14"><span class="s12">'DodgerBlue2'</span> -> <span class="s11">Color</span>.new255(28, 134, 238),</p>
-<p class="p14"><span class="s12">'DodgerBlue3'</span> -> <span class="s11">Color</span>.new255(24, 116, 205),</p>
-<p class="p14"><span class="s12">'DodgerBlue4'</span> -> <span class="s11">Color</span>.new255(16, 78, 139),</p>
-<p class="p14"><span class="s12">'firebrick'</span> -> <span class="s11">Color</span>.new255(178, 34, 34),</p>
-<p class="p14"><span class="s12">'firebrick1'</span> -> <span class="s11">Color</span>.new255(255, 48, 48),</p>
-<p class="p14"><span class="s12">'firebrick2'</span> -> <span class="s11">Color</span>.new255(238, 44, 44),</p>
-<p class="p14"><span class="s12">'firebrick3'</span> -> <span class="s11">Color</span>.new255(205, 38, 38),</p>
-<p class="p14"><span class="s12">'firebrick4'</span> -> <span class="s11">Color</span>.new255(139, 26, 26),</p>
-<p class="p14"><span class="s12">'floral white'</span> -> <span class="s11">Color</span>.new255(255, 250, 240),</p>
-<p class="p14"><span class="s12">'FloralWhite'</span> -> <span class="s11">Color</span>.new255(255, 250, 240),</p>
-<p class="p14"><span class="s12">'forest green'</span> -> <span class="s11">Color</span>.new255(34, 139, 34),</p>
-<p class="p14"><span class="s12">'ForestGreen'</span> -> <span class="s11">Color</span>.new255(34, 139, 34),</p>
-<p class="p14"><span class="s12">'gainsboro'</span> -> <span class="s11">Color</span>.new255(220, 220, 220),</p>
-<p class="p14"><span class="s12">'ghost white'</span> -> <span class="s11">Color</span>.new255(248, 248, 255),</p>
-<p class="p14"><span class="s12">'GhostWhite'</span> -> <span class="s11">Color</span>.new255(248, 248, 255),</p>
-<p class="p14"><span class="s12">'gold'</span> -> <span class="s11">Color</span>.new255(255, 215, 0),</p>
-<p class="p14"><span class="s12">'gold1'</span> -> <span class="s11">Color</span>.new255(255, 215, 0),</p>
-<p class="p14"><span class="s12">'gold2'</span> -> <span class="s11">Color</span>.new255(238, 201, 0),</p>
-<p class="p14"><span class="s12">'gold3'</span> -> <span class="s11">Color</span>.new255(205, 173, 0),</p>
-<p class="p14"><span class="s12">'gold4'</span> -> <span class="s11">Color</span>.new255(139, 117, 0),</p>
-<p class="p14"><span class="s12">'goldenrod'</span> -> <span class="s11">Color</span>.new255(218, 165, 32),</p>
-<p class="p14"><span class="s12">'goldenrod1'</span> -> <span class="s11">Color</span>.new255(255, 193, 37),</p>
-<p class="p14"><span class="s12">'goldenrod2'</span> -> <span class="s11">Color</span>.new255(238, 180, 34),</p>
-<p class="p14"><span class="s12">'goldenrod3'</span> -> <span class="s11">Color</span>.new255(205, 155, 29),</p>
-<p class="p14"><span class="s12">'goldenrod4'</span> -> <span class="s11">Color</span>.new255(139, 105, 20),</p>
-<p class="p14"><span class="s12">'gray'</span> -> <span class="s11">Color</span>.new255(190, 190, 190),</p>
-<p class="p14"><span class="s12">'gray0'</span> -> <span class="s11">Color</span>.new255(0, 0, 0),</p>
-<p class="p14"><span class="s12">'gray1'</span> -> <span class="s11">Color</span>.new255(3, 3, 3),</p>
-<p class="p14"><span class="s12">'gray10'</span> -> <span class="s11">Color</span>.new255(26, 26, 26),</p>
-<p class="p14"><span class="s12">'gray100'</span> -> <span class="s11">Color</span>.new255(255, 255, 255),</p>
-<p class="p14"><span class="s12">'gray11'</span> -> <span class="s11">Color</span>.new255(28, 28, 28),</p>
-<p class="p14"><span class="s12">'gray12'</span> -> <span class="s11">Color</span>.new255(31, 31, 31),</p>
-<p class="p14"><span class="s12">'gray13'</span> -> <span class="s11">Color</span>.new255(33, 33, 33),</p>
-<p class="p14"><span class="s12">'gray14'</span> -> <span class="s11">Color</span>.new255(36, 36, 36),</p>
-<p class="p14"><span class="s12">'gray15'</span> -> <span class="s11">Color</span>.new255(38, 38, 38),</p>
-<p class="p14"><span class="s12">'gray16'</span> -> <span class="s11">Color</span>.new255(41, 41, 41),</p>
-<p class="p14"><span class="s12">'gray17'</span> -> <span class="s11">Color</span>.new255(43, 43, 43),</p>
-<p class="p14"><span class="s12">'gray18'</span> -> <span class="s11">Color</span>.new255(46, 46, 46),</p>
-<p class="p14"><span class="s12">'gray19'</span> -> <span class="s11">Color</span>.new255(48, 48, 48),</p>
-<p class="p14"><span class="s12">'gray2'</span> -> <span class="s11">Color</span>.new255(5, 5, 5),</p>
-<p class="p14"><span class="s12">'gray20'</span> -> <span class="s11">Color</span>.new255(51, 51, 51),</p>
-<p class="p14"><span class="s12">'gray21'</span> -> <span class="s11">Color</span>.new255(54, 54, 54),</p>
-<p class="p14"><span class="s12">'gray22'</span> -> <span class="s11">Color</span>.new255(56, 56, 56),</p>
-<p class="p14"><span class="s12">'gray23'</span> -> <span class="s11">Color</span>.new255(59, 59, 59),</p>
-<p class="p14"><span class="s12">'gray24'</span> -> <span class="s11">Color</span>.new255(61, 61, 61),</p>
-<p class="p14"><span class="s12">'gray25'</span> -> <span class="s11">Color</span>.new255(64, 64, 64),</p>
-<p class="p14"><span class="s12">'gray26'</span> -> <span class="s11">Color</span>.new255(66, 66, 66),</p>
-<p class="p14"><span class="s12">'gray27'</span> -> <span class="s11">Color</span>.new255(69, 69, 69),</p>
-<p class="p14"><span class="s12">'gray28'</span> -> <span class="s11">Color</span>.new255(71, 71, 71),</p>
-<p class="p14"><span class="s12">'gray29'</span> -> <span class="s11">Color</span>.new255(74, 74, 74),</p>
-<p class="p14"><span class="s12">'gray3'</span> -> <span class="s11">Color</span>.new255(8, 8, 8),</p>
-<p class="p14"><span class="s12">'gray30'</span> -> <span class="s11">Color</span>.new255(77, 77, 77),</p>
-<p class="p14"><span class="s12">'gray31'</span> -> <span class="s11">Color</span>.new255(79, 79, 79),</p>
-<p class="p14"><span class="s12">'gray32'</span> -> <span class="s11">Color</span>.new255(82, 82, 82),</p>
-<p class="p14"><span class="s12">'gray33'</span> -> <span class="s11">Color</span>.new255(84, 84, 84),</p>
-<p class="p14"><span class="s12">'gray34'</span> -> <span class="s11">Color</span>.new255(87, 87, 87),</p>
-<p class="p14"><span class="s12">'gray35'</span> -> <span class="s11">Color</span>.new255(89, 89, 89),</p>
-<p class="p14"><span class="s12">'gray36'</span> -> <span class="s11">Color</span>.new255(92, 92, 92),</p>
-<p class="p14"><span class="s12">'gray37'</span> -> <span class="s11">Color</span>.new255(94, 94, 94),</p>
-<p class="p14"><span class="s12">'gray38'</span> -> <span class="s11">Color</span>.new255(97, 97, 97),</p>
-<p class="p14"><span class="s12">'gray39'</span> -> <span class="s11">Color</span>.new255(99, 99, 99),</p>
-<p class="p14"><span class="s12">'gray4'</span> -> <span class="s11">Color</span>.new255(10, 10, 10),</p>
-<p class="p14"><span class="s12">'gray40'</span> -> <span class="s11">Color</span>.new255(102, 102, 102),</p>
-<p class="p14"><span class="s12">'gray41'</span> -> <span class="s11">Color</span>.new255(105, 105, 105),</p>
-<p class="p14"><span class="s12">'gray42'</span> -> <span class="s11">Color</span>.new255(107, 107, 107),</p>
-<p class="p14"><span class="s12">'gray43'</span> -> <span class="s11">Color</span>.new255(110, 110, 110),</p>
-<p class="p14"><span class="s12">'gray44'</span> -> <span class="s11">Color</span>.new255(112, 112, 112),</p>
-<p class="p14"><span class="s12">'gray45'</span> -> <span class="s11">Color</span>.new255(115, 115, 115),</p>
-<p class="p14"><span class="s12">'gray46'</span> -> <span class="s11">Color</span>.new255(117, 117, 117),</p>
-<p class="p14"><span class="s12">'gray47'</span> -> <span class="s11">Color</span>.new255(120, 120, 120),</p>
-<p class="p14"><span class="s12">'gray48'</span> -> <span class="s11">Color</span>.new255(122, 122, 122),</p>
-<p class="p14"><span class="s12">'gray49'</span> -> <span class="s11">Color</span>.new255(125, 125, 125),</p>
-<p class="p14"><span class="s12">'gray5'</span> -> <span class="s11">Color</span>.new255(13, 13, 13),</p>
-<p class="p14"><span class="s12">'gray50'</span> -> <span class="s11">Color</span>.new255(127, 127, 127),</p>
-<p class="p14"><span class="s12">'gray51'</span> -> <span class="s11">Color</span>.new255(130, 130, 130),</p>
-<p class="p14"><span class="s12">'gray52'</span> -> <span class="s11">Color</span>.new255(133, 133, 133),</p>
-<p class="p14"><span class="s12">'gray53'</span> -> <span class="s11">Color</span>.new255(135, 135, 135),</p>
-<p class="p14"><span class="s12">'gray54'</span> -> <span class="s11">Color</span>.new255(138, 138, 138),</p>
-<p class="p14"><span class="s12">'gray55'</span> -> <span class="s11">Color</span>.new255(140, 140, 140),</p>
-<p class="p14"><span class="s12">'gray56'</span> -> <span class="s11">Color</span>.new255(143, 143, 143),</p>
-<p class="p14"><span class="s12">'gray57'</span> -> <span class="s11">Color</span>.new255(145, 145, 145),</p>
-<p class="p14"><span class="s12">'gray58'</span> -> <span class="s11">Color</span>.new255(148, 148, 148),</p>
-<p class="p14"><span class="s12">'gray59'</span> -> <span class="s11">Color</span>.new255(150, 150, 150),</p>
-<p class="p14"><span class="s12">'gray6'</span> -> <span class="s11">Color</span>.new255(15, 15, 15),</p>
-<p class="p14"><span class="s12">'gray60'</span> -> <span class="s11">Color</span>.new255(153, 153, 153),</p>
-<p class="p14"><span class="s12">'gray61'</span> -> <span class="s11">Color</span>.new255(156, 156, 156),</p>
-<p class="p14"><span class="s12">'gray62'</span> -> <span class="s11">Color</span>.new255(158, 158, 158),</p>
-<p class="p14"><span class="s12">'gray63'</span> -> <span class="s11">Color</span>.new255(161, 161, 161),</p>
-<p class="p14"><span class="s12">'gray64'</span> -> <span class="s11">Color</span>.new255(163, 163, 163),</p>
-<p class="p14"><span class="s12">'gray65'</span> -> <span class="s11">Color</span>.new255(166, 166, 166),</p>
-<p class="p14"><span class="s12">'gray66'</span> -> <span class="s11">Color</span>.new255(168, 168, 168),</p>
-<p class="p14"><span class="s12">'gray67'</span> -> <span class="s11">Color</span>.new255(171, 171, 171),</p>
-<p class="p14"><span class="s12">'gray68'</span> -> <span class="s11">Color</span>.new255(173, 173, 173),</p>
-<p class="p14"><span class="s12">'gray69'</span> -> <span class="s11">Color</span>.new255(176, 176, 176),</p>
-<p class="p14"><span class="s12">'gray7'</span> -> <span class="s11">Color</span>.new255(18, 18, 18),</p>
-<p class="p14"><span class="s12">'gray70'</span> -> <span class="s11">Color</span>.new255(179, 179, 179),</p>
-<p class="p14"><span class="s12">'gray71'</span> -> <span class="s11">Color</span>.new255(181, 181, 181),</p>
-<p class="p14"><span class="s12">'gray72'</span> -> <span class="s11">Color</span>.new255(184, 184, 184),</p>
-<p class="p14"><span class="s12">'gray73'</span> -> <span class="s11">Color</span>.new255(186, 186, 186),</p>
-<p class="p14"><span class="s12">'gray74'</span> -> <span class="s11">Color</span>.new255(189, 189, 189),</p>
-<p class="p14"><span class="s12">'gray75'</span> -> <span class="s11">Color</span>.new255(191, 191, 191),</p>
-<p class="p14"><span class="s12">'gray76'</span> -> <span class="s11">Color</span>.new255(194, 194, 194),</p>
-<p class="p14"><span class="s12">'gray77'</span> -> <span class="s11">Color</span>.new255(196, 196, 196),</p>
-<p class="p14"><span class="s12">'gray78'</span> -> <span class="s11">Color</span>.new255(199, 199, 199),</p>
-<p class="p14"><span class="s12">'gray79'</span> -> <span class="s11">Color</span>.new255(201, 201, 201),</p>
-<p class="p14"><span class="s12">'gray8'</span> -> <span class="s11">Color</span>.new255(20, 20, 20),</p>
-<p class="p14"><span class="s12">'gray80'</span> -> <span class="s11">Color</span>.new255(204, 204, 204),</p>
-<p class="p14"><span class="s12">'gray81'</span> -> <span class="s11">Color</span>.new255(207, 207, 207),</p>
-<p class="p14"><span class="s12">'gray82'</span> -> <span class="s11">Color</span>.new255(209, 209, 209),</p>
-<p class="p14"><span class="s12">'gray83'</span> -> <span class="s11">Color</span>.new255(212, 212, 212),</p>
-<p class="p14"><span class="s12">'gray84'</span> -> <span class="s11">Color</span>.new255(214, 214, 214),</p>
-<p class="p14"><span class="s12">'gray85'</span> -> <span class="s11">Color</span>.new255(217, 217, 217),</p>
-<p class="p14"><span class="s12">'gray86'</span> -> <span class="s11">Color</span>.new255(219, 219, 219),</p>
-<p class="p14"><span class="s12">'gray87'</span> -> <span class="s11">Color</span>.new255(222, 222, 222),</p>
-<p class="p14"><span class="s12">'gray88'</span> -> <span class="s11">Color</span>.new255(224, 224, 224),</p>
-<p class="p14"><span class="s12">'gray89'</span> -> <span class="s11">Color</span>.new255(227, 227, 227),</p>
-<p class="p14"><span class="s12">'gray9'</span> -> <span class="s11">Color</span>.new255(23, 23, 23),</p>
-<p class="p14"><span class="s12">'gray90'</span> -> <span class="s11">Color</span>.new255(229, 229, 229),</p>
-<p class="p14"><span class="s12">'gray91'</span> -> <span class="s11">Color</span>.new255(232, 232, 232),</p>
-<p class="p14"><span class="s12">'gray92'</span> -> <span class="s11">Color</span>.new255(235, 235, 235),</p>
-<p class="p14"><span class="s12">'gray93'</span> -> <span class="s11">Color</span>.new255(237, 237, 237),</p>
-<p class="p14"><span class="s12">'gray94'</span> -> <span class="s11">Color</span>.new255(240, 240, 240),</p>
-<p class="p14"><span class="s12">'gray95'</span> -> <span class="s11">Color</span>.new255(242, 242, 242),</p>
-<p class="p14"><span class="s12">'gray96'</span> -> <span class="s11">Color</span>.new255(245, 245, 245),</p>
-<p class="p14"><span class="s12">'gray97'</span> -> <span class="s11">Color</span>.new255(247, 247, 247),</p>
-<p class="p14"><span class="s12">'gray98'</span> -> <span class="s11">Color</span>.new255(250, 250, 250),</p>
-<p class="p14"><span class="s12">'gray99'</span> -> <span class="s11">Color</span>.new255(252, 252, 252),</p>
-<p class="p14"><span class="s12">'green'</span> -> <span class="s11">Color</span>.new255(0, 255, 0),</p>
-<p class="p14"><span class="s12">'green yellow'</span> -> <span class="s11">Color</span>.new255(173, 255, 47),</p>
-<p class="p14"><span class="s12">'green1'</span> -> <span class="s11">Color</span>.new255(0, 255, 0),</p>
-<p class="p14"><span class="s12">'green2'</span> -> <span class="s11">Color</span>.new255(0, 238, 0),</p>
-<p class="p14"><span class="s12">'green3'</span> -> <span class="s11">Color</span>.new255(0, 205, 0),</p>
-<p class="p14"><span class="s12">'green4'</span> -> <span class="s11">Color</span>.new255(0, 139, 0),</p>
-<p class="p14"><span class="s12">'GreenYellow'</span> -> <span class="s11">Color</span>.new255(173, 255, 47),</p>
-<p class="p14"><span class="s12">'grey'</span> -> <span class="s11">Color</span>.new255(190, 190, 190),</p>
-<p class="p14"><span class="s12">'grey0'</span> -> <span class="s11">Color</span>.new255(0, 0, 0),</p>
-<p class="p14"><span class="s12">'grey1'</span> -> <span class="s11">Color</span>.new255(3, 3, 3),</p>
-<p class="p14"><span class="s12">'grey10'</span> -> <span class="s11">Color</span>.new255(26, 26, 26),</p>
-<p class="p14"><span class="s12">'grey100'</span> -> <span class="s11">Color</span>.new255(255, 255, 255),</p>
-<p class="p14"><span class="s12">'grey11'</span> -> <span class="s11">Color</span>.new255(28, 28, 28),</p>
-<p class="p14"><span class="s12">'grey12'</span> -> <span class="s11">Color</span>.new255(31, 31, 31),</p>
-<p class="p14"><span class="s12">'grey13'</span> -> <span class="s11">Color</span>.new255(33, 33, 33),</p>
-<p class="p14"><span class="s12">'grey14'</span> -> <span class="s11">Color</span>.new255(36, 36, 36),</p>
-<p class="p14"><span class="s12">'grey15'</span> -> <span class="s11">Color</span>.new255(38, 38, 38),</p>
-<p class="p14"><span class="s12">'grey16'</span> -> <span class="s11">Color</span>.new255(41, 41, 41),</p>
-<p class="p14"><span class="s12">'grey17'</span> -> <span class="s11">Color</span>.new255(43, 43, 43),</p>
-<p class="p14"><span class="s12">'grey18'</span> -> <span class="s11">Color</span>.new255(46, 46, 46),</p>
-<p class="p14"><span class="s12">'grey19'</span> -> <span class="s11">Color</span>.new255(48, 48, 48),</p>
-<p class="p14"><span class="s12">'grey2'</span> -> <span class="s11">Color</span>.new255(5, 5, 5),</p>
-<p class="p14"><span class="s12">'grey20'</span> -> <span class="s11">Color</span>.new255(51, 51, 51),</p>
-<p class="p14"><span class="s12">'grey21'</span> -> <span class="s11">Color</span>.new255(54, 54, 54),</p>
-<p class="p14"><span class="s12">'grey22'</span> -> <span class="s11">Color</span>.new255(56, 56, 56),</p>
-<p class="p14"><span class="s12">'grey23'</span> -> <span class="s11">Color</span>.new255(59, 59, 59),</p>
-<p class="p14"><span class="s12">'grey24'</span> -> <span class="s11">Color</span>.new255(61, 61, 61),</p>
-<p class="p14"><span class="s12">'grey25'</span> -> <span class="s11">Color</span>.new255(64, 64, 64),</p>
-<p class="p14"><span class="s12">'grey26'</span> -> <span class="s11">Color</span>.new255(66, 66, 66),</p>
-<p class="p14"><span class="s12">'grey27'</span> -> <span class="s11">Color</span>.new255(69, 69, 69),</p>
-<p class="p14"><span class="s12">'grey28'</span> -> <span class="s11">Color</span>.new255(71, 71, 71),</p>
-<p class="p14"><span class="s12">'grey29'</span> -> <span class="s11">Color</span>.new255(74, 74, 74),</p>
-<p class="p14"><span class="s12">'grey3'</span> -> <span class="s11">Color</span>.new255(8, 8, 8),</p>
-<p class="p14"><span class="s12">'grey30'</span> -> <span class="s11">Color</span>.new255(77, 77, 77),</p>
-<p class="p14"><span class="s12">'grey31'</span> -> <span class="s11">Color</span>.new255(79, 79, 79),</p>
-<p class="p14"><span class="s12">'grey32'</span> -> <span class="s11">Color</span>.new255(82, 82, 82),</p>
-<p class="p14"><span class="s12">'grey33'</span> -> <span class="s11">Color</span>.new255(84, 84, 84),</p>
-<p class="p14"><span class="s12">'grey34'</span> -> <span class="s11">Color</span>.new255(87, 87, 87),</p>
-<p class="p14"><span class="s12">'grey35'</span> -> <span class="s11">Color</span>.new255(89, 89, 89),</p>
-<p class="p14"><span class="s12">'grey36'</span> -> <span class="s11">Color</span>.new255(92, 92, 92),</p>
-<p class="p14"><span class="s12">'grey37'</span> -> <span class="s11">Color</span>.new255(94, 94, 94),</p>
-<p class="p14"><span class="s12">'grey38'</span> -> <span class="s11">Color</span>.new255(97, 97, 97),</p>
-<p class="p14"><span class="s12">'grey39'</span> -> <span class="s11">Color</span>.new255(99, 99, 99),</p>
-<p class="p14"><span class="s12">'grey4'</span> -> <span class="s11">Color</span>.new255(10, 10, 10),</p>
-<p class="p14"><span class="s12">'grey40'</span> -> <span class="s11">Color</span>.new255(102, 102, 102),</p>
-<p class="p14"><span class="s12">'grey41'</span> -> <span class="s11">Color</span>.new255(105, 105, 105),</p>
-<p class="p14"><span class="s12">'grey42'</span> -> <span class="s11">Color</span>.new255(107, 107, 107),</p>
-<p class="p14"><span class="s12">'grey43'</span> -> <span class="s11">Color</span>.new255(110, 110, 110),</p>
-<p class="p14"><span class="s12">'grey44'</span> -> <span class="s11">Color</span>.new255(112, 112, 112),</p>
-<p class="p14"><span class="s12">'grey45'</span> -> <span class="s11">Color</span>.new255(115, 115, 115),</p>
-<p class="p14"><span class="s12">'grey46'</span> -> <span class="s11">Color</span>.new255(117, 117, 117),</p>
-<p class="p14"><span class="s12">'grey47'</span> -> <span class="s11">Color</span>.new255(120, 120, 120),</p>
-<p class="p14"><span class="s12">'grey48'</span> -> <span class="s11">Color</span>.new255(122, 122, 122),</p>
-<p class="p14"><span class="s12">'grey49'</span> -> <span class="s11">Color</span>.new255(125, 125, 125),</p>
-<p class="p14"><span class="s12">'grey5'</span> -> <span class="s11">Color</span>.new255(13, 13, 13),</p>
-<p class="p14"><span class="s12">'grey50'</span> -> <span class="s11">Color</span>.new255(127, 127, 127),</p>
-<p class="p14"><span class="s12">'grey51'</span> -> <span class="s11">Color</span>.new255(130, 130, 130),</p>
-<p class="p14"><span class="s12">'grey52'</span> -> <span class="s11">Color</span>.new255(133, 133, 133),</p>
-<p class="p14"><span class="s12">'grey53'</span> -> <span class="s11">Color</span>.new255(135, 135, 135),</p>
-<p class="p14"><span class="s12">'grey54'</span> -> <span class="s11">Color</span>.new255(138, 138, 138),</p>
-<p class="p14"><span class="s12">'grey55'</span> -> <span class="s11">Color</span>.new255(140, 140, 140),</p>
-<p class="p14"><span class="s12">'grey56'</span> -> <span class="s11">Color</span>.new255(143, 143, 143),</p>
-<p class="p14"><span class="s12">'grey57'</span> -> <span class="s11">Color</span>.new255(145, 145, 145),</p>
-<p class="p14"><span class="s12">'grey58'</span> -> <span class="s11">Color</span>.new255(148, 148, 148),</p>
-<p class="p14"><span class="s12">'grey59'</span> -> <span class="s11">Color</span>.new255(150, 150, 150),</p>
-<p class="p14"><span class="s12">'grey6'</span> -> <span class="s11">Color</span>.new255(15, 15, 15),</p>
-<p class="p14"><span class="s12">'grey60'</span> -> <span class="s11">Color</span>.new255(153, 153, 153),</p>
-<p class="p14"><span class="s12">'grey61'</span> -> <span class="s11">Color</span>.new255(156, 156, 156),</p>
-<p class="p14"><span class="s12">'grey62'</span> -> <span class="s11">Color</span>.new255(158, 158, 158),</p>
-<p class="p14"><span class="s12">'grey63'</span> -> <span class="s11">Color</span>.new255(161, 161, 161),</p>
-<p class="p14"><span class="s12">'grey64'</span> -> <span class="s11">Color</span>.new255(163, 163, 163),</p>
-<p class="p14"><span class="s12">'grey65'</span> -> <span class="s11">Color</span>.new255(166, 166, 166),</p>
-<p class="p14"><span class="s12">'grey66'</span> -> <span class="s11">Color</span>.new255(168, 168, 168),</p>
-<p class="p14"><span class="s12">'grey67'</span> -> <span class="s11">Color</span>.new255(171, 171, 171),</p>
-<p class="p14"><span class="s12">'grey68'</span> -> <span class="s11">Color</span>.new255(173, 173, 173),</p>
-<p class="p14"><span class="s12">'grey69'</span> -> <span class="s11">Color</span>.new255(176, 176, 176),</p>
-<p class="p14"><span class="s12">'grey7'</span> -> <span class="s11">Color</span>.new255(18, 18, 18),</p>
-<p class="p14"><span class="s12">'grey70'</span> -> <span class="s11">Color</span>.new255(179, 179, 179),</p>
-<p class="p14"><span class="s12">'grey71'</span> -> <span class="s11">Color</span>.new255(181, 181, 181),</p>
-<p class="p14"><span class="s12">'grey72'</span> -> <span class="s11">Color</span>.new255(184, 184, 184),</p>
-<p class="p14"><span class="s12">'grey73'</span> -> <span class="s11">Color</span>.new255(186, 186, 186),</p>
-<p class="p14"><span class="s12">'grey74'</span> -> <span class="s11">Color</span>.new255(189, 189, 189),</p>
-<p class="p14"><span class="s12">'grey75'</span> -> <span class="s11">Color</span>.new255(191, 191, 191),</p>
-<p class="p14"><span class="s12">'grey76'</span> -> <span class="s11">Color</span>.new255(194, 194, 194),</p>
-<p class="p14"><span class="s12">'grey77'</span> -> <span class="s11">Color</span>.new255(196, 196, 196),</p>
-<p class="p14"><span class="s12">'grey78'</span> -> <span class="s11">Color</span>.new255(199, 199, 199),</p>
-<p class="p14"><span class="s12">'grey79'</span> -> <span class="s11">Color</span>.new255(201, 201, 201),</p>
-<p class="p14"><span class="s12">'grey8'</span> -> <span class="s11">Color</span>.new255(20, 20, 20),</p>
-<p class="p14"><span class="s12">'grey80'</span> -> <span class="s11">Color</span>.new255(204, 204, 204),</p>
-<p class="p14"><span class="s12">'grey81'</span> -> <span class="s11">Color</span>.new255(207, 207, 207),</p>
-<p class="p14"><span class="s12">'grey82'</span> -> <span class="s11">Color</span>.new255(209, 209, 209),</p>
-<p class="p14"><span class="s12">'grey83'</span> -> <span class="s11">Color</span>.new255(212, 212, 212),</p>
-<p class="p14"><span class="s12">'grey84'</span> -> <span class="s11">Color</span>.new255(214, 214, 214),</p>
-<p class="p14"><span class="s12">'grey85'</span> -> <span class="s11">Color</span>.new255(217, 217, 217),</p>
-<p class="p14"><span class="s12">'grey86'</span> -> <span class="s11">Color</span>.new255(219, 219, 219),</p>
-<p class="p14"><span class="s12">'grey87'</span> -> <span class="s11">Color</span>.new255(222, 222, 222),</p>
-<p class="p14"><span class="s12">'grey88'</span> -> <span class="s11">Color</span>.new255(224, 224, 224),</p>
-<p class="p14"><span class="s12">'grey89'</span> -> <span class="s11">Color</span>.new255(227, 227, 227),</p>
-<p class="p14"><span class="s12">'grey9'</span> -> <span class="s11">Color</span>.new255(23, 23, 23),</p>
-<p class="p14"><span class="s12">'grey90'</span> -> <span class="s11">Color</span>.new255(229, 229, 229),</p>
-<p class="p14"><span class="s12">'grey91'</span> -> <span class="s11">Color</span>.new255(232, 232, 232),</p>
-<p class="p14"><span class="s12">'grey92'</span> -> <span class="s11">Color</span>.new255(235, 235, 235),</p>
-<p class="p14"><span class="s12">'grey93'</span> -> <span class="s11">Color</span>.new255(237, 237, 237),</p>
-<p class="p14"><span class="s12">'grey94'</span> -> <span class="s11">Color</span>.new255(240, 240, 240),</p>
-<p class="p14"><span class="s12">'grey95'</span> -> <span class="s11">Color</span>.new255(242, 242, 242),</p>
-<p class="p14"><span class="s12">'grey96'</span> -> <span class="s11">Color</span>.new255(245, 245, 245),</p>
-<p class="p14"><span class="s12">'grey97'</span> -> <span class="s11">Color</span>.new255(247, 247, 247),</p>
-<p class="p14"><span class="s12">'grey98'</span> -> <span class="s11">Color</span>.new255(250, 250, 250),</p>
-<p class="p14"><span class="s12">'grey99'</span> -> <span class="s11">Color</span>.new255(252, 252, 252),</p>
-<p class="p14"><span class="s12">'honeydew'</span> -> <span class="s11">Color</span>.new255(240, 255, 240),</p>
-<p class="p14"><span class="s12">'honeydew1'</span> -> <span class="s11">Color</span>.new255(240, 255, 240),</p>
-<p class="p14"><span class="s12">'honeydew2'</span> -> <span class="s11">Color</span>.new255(224, 238, 224),</p>
-<p class="p14"><span class="s12">'honeydew3'</span> -> <span class="s11">Color</span>.new255(193, 205, 193),</p>
-<p class="p14"><span class="s12">'honeydew4'</span> -> <span class="s11">Color</span>.new255(131, 139, 131),</p>
-<p class="p14"><span class="s12">'hot pink'</span> -> <span class="s11">Color</span>.new255(255, 105, 180),</p>
-<p class="p14"><span class="s12">'HotPink'</span> -> <span class="s11">Color</span>.new255(255, 105, 180),</p>
-<p class="p14"><span class="s12">'HotPink1'</span> -> <span class="s11">Color</span>.new255(255, 110, 180),</p>
-<p class="p14"><span class="s12">'HotPink2'</span> -> <span class="s11">Color</span>.new255(238, 106, 167),</p>
-<p class="p14"><span class="s12">'HotPink3'</span> -> <span class="s11">Color</span>.new255(205, 96, 144),</p>
-<p class="p14"><span class="s12">'HotPink4'</span> -> <span class="s11">Color</span>.new255(139, 58, 98),</p>
-<p class="p14"><span class="s12">'indian red'</span> -> <span class="s11">Color</span>.new255(205, 92, 92),</p>
-<p class="p14"><span class="s12">'IndianRed'</span> -> <span class="s11">Color</span>.new255(205, 92, 92),</p>
-<p class="p14"><span class="s12">'IndianRed1'</span> -> <span class="s11">Color</span>.new255(255, 106, 106),</p>
-<p class="p14"><span class="s12">'IndianRed2'</span> -> <span class="s11">Color</span>.new255(238, 99, 99),</p>
-<p class="p14"><span class="s12">'IndianRed3'</span> -> <span class="s11">Color</span>.new255(205, 85, 85),</p>
-<p class="p14"><span class="s12">'IndianRed4'</span> -> <span class="s11">Color</span>.new255(139, 58, 58),</p>
-<p class="p14"><span class="s12">'ivory'</span> -> <span class="s11">Color</span>.new255(255, 255, 240),</p>
-<p class="p14"><span class="s12">'ivory1'</span> -> <span class="s11">Color</span>.new255(255, 255, 240),</p>
-<p class="p14"><span class="s12">'ivory2'</span> -> <span class="s11">Color</span>.new255(238, 238, 224),</p>
-<p class="p14"><span class="s12">'ivory3'</span> -> <span class="s11">Color</span>.new255(205, 205, 193),</p>
-<p class="p14"><span class="s12">'ivory4'</span> -> <span class="s11">Color</span>.new255(139, 139, 131),</p>
-<p class="p14"><span class="s12">'khaki'</span> -> <span class="s11">Color</span>.new255(240, 230, 140),</p>
-<p class="p14"><span class="s12">'khaki1'</span> -> <span class="s11">Color</span>.new255(255, 246, 143),</p>
-<p class="p14"><span class="s12">'khaki2'</span> -> <span class="s11">Color</span>.new255(238, 230, 133),</p>
-<p class="p14"><span class="s12">'khaki3'</span> -> <span class="s11">Color</span>.new255(205, 198, 115),</p>
-<p class="p14"><span class="s12">'khaki4'</span> -> <span class="s11">Color</span>.new255(139, 134, 78),</p>
-<p class="p14"><span class="s12">'lavender'</span> -> <span class="s11">Color</span>.new255(230, 230, 250),</p>
-<p class="p14"><span class="s12">'lavender blush'</span> -> <span class="s11">Color</span>.new255(255, 240, 245),</p>
-<p class="p14"><span class="s12">'LavenderBlush'</span> -> <span class="s11">Color</span>.new255(255, 240, 245),</p>
-<p class="p14"><span class="s12">'LavenderBlush1'</span> -> <span class="s11">Color</span>.new255(255, 240, 245),</p>
-<p class="p14"><span class="s12">'LavenderBlush2'</span> -> <span class="s11">Color</span>.new255(238, 224, 229),</p>
-<p class="p14"><span class="s12">'LavenderBlush3'</span> -> <span class="s11">Color</span>.new255(205, 193, 197),</p>
-<p class="p14"><span class="s12">'LavenderBlush4'</span> -> <span class="s11">Color</span>.new255(139, 131, 134),</p>
-<p class="p14"><span class="s12">'lawn green'</span> -> <span class="s11">Color</span>.new255(124, 252, 0),</p>
-<p class="p14"><span class="s12">'LawnGreen'</span> -> <span class="s11">Color</span>.new255(124, 252, 0),</p>
-<p class="p14"><span class="s12">'lemon chiffon'</span> -> <span class="s11">Color</span>.new255(255, 250, 205),</p>
-<p class="p14"><span class="s12">'LemonChiffon'</span> -> <span class="s11">Color</span>.new255(255, 250, 205),</p>
-<p class="p14"><span class="s12">'LemonChiffon1'</span> -> <span class="s11">Color</span>.new255(255, 250, 205),</p>
-<p class="p14"><span class="s12">'LemonChiffon2'</span> -> <span class="s11">Color</span>.new255(238, 233, 191),</p>
-<p class="p14"><span class="s12">'LemonChiffon3'</span> -> <span class="s11">Color</span>.new255(205, 201, 165),</p>
-<p class="p14"><span class="s12">'LemonChiffon4'</span> -> <span class="s11">Color</span>.new255(139, 137, 112),</p>
-<p class="p14"><span class="s12">'light blue'</span> -> <span class="s11">Color</span>.new255(173, 216, 230),</p>
-<p class="p14"><span class="s12">'light coral'</span> -> <span class="s11">Color</span>.new255(240, 128, 128),</p>
-<p class="p14"><span class="s12">'light cyan'</span> -> <span class="s11">Color</span>.new255(224, 255, 255),</p>
-<p class="p14"><span class="s12">'light goldenrod'</span> -> <span class="s11">Color</span>.new255(238, 221, 130),</p>
-<p class="p14"><span class="s12">'light goldenrod yellow'</span> -> <span class="s11">Color</span>.new255(250, 250, 210),</p>
-<p class="p14"><span class="s12">'light gray'</span> -> <span class="s11">Color</span>.new255(211, 211, 211),</p>
-<p class="p14"><span class="s12">'light grey'</span> -> <span class="s11">Color</span>.new255(211, 211, 211),</p>
-<p class="p14"><span class="s12">'light pink'</span> -> <span class="s11">Color</span>.new255(255, 182, 193),</p>
-<p class="p14"><span class="s12">'light salmon'</span> -> <span class="s11">Color</span>.new255(255, 160, 122),</p>
-<p class="p14"><span class="s12">'light sea green'</span> -> <span class="s11">Color</span>.new255(32, 178, 170),</p>
-<p class="p14"><span class="s12">'light sky blue'</span> -> <span class="s11">Color</span>.new255(135, 206, 250),</p>
-<p class="p14"><span class="s12">'light slate blue'</span> -> <span class="s11">Color</span>.new255(132, 112, 255),</p>
-<p class="p14"><span class="s12">'light slate gray'</span> -> <span class="s11">Color</span>.new255(119, 136, 153),</p>
-<p class="p14"><span class="s12">'light slate grey'</span> -> <span class="s11">Color</span>.new255(119, 136, 153),</p>
-<p class="p14"><span class="s12">'light steel blue'</span> -> <span class="s11">Color</span>.new255(176, 196, 222),</p>
-<p class="p14"><span class="s12">'light yellow'</span> -> <span class="s11">Color</span>.new255(255, 255, 224),</p>
-<p class="p14"><span class="s12">'LightBlue'</span> -> <span class="s11">Color</span>.new255(173, 216, 230),</p>
-<p class="p14"><span class="s12">'LightBlue1'</span> -> <span class="s11">Color</span>.new255(191, 239, 255),</p>
-<p class="p14"><span class="s12">'LightBlue2'</span> -> <span class="s11">Color</span>.new255(178, 223, 238),</p>
-<p class="p14"><span class="s12">'LightBlue3'</span> -> <span class="s11">Color</span>.new255(154, 192, 205),</p>
-<p class="p14"><span class="s12">'LightBlue4'</span> -> <span class="s11">Color</span>.new255(104, 131, 139),</p>
-<p class="p14"><span class="s12">'LightCoral'</span> -> <span class="s11">Color</span>.new255(240, 128, 128),</p>
-<p class="p14"><span class="s12">'LightCyan'</span> -> <span class="s11">Color</span>.new255(224, 255, 255),</p>
-<p class="p14"><span class="s12">'LightCyan1'</span> -> <span class="s11">Color</span>.new255(224, 255, 255),</p>
-<p class="p14"><span class="s12">'LightCyan2'</span> -> <span class="s11">Color</span>.new255(209, 238, 238),</p>
-<p class="p14"><span class="s12">'LightCyan3'</span> -> <span class="s11">Color</span>.new255(180, 205, 205),</p>
-<p class="p14"><span class="s12">'LightCyan4'</span> -> <span class="s11">Color</span>.new255(122, 139, 139),</p>
-<p class="p14"><span class="s12">'LightGoldenrod'</span> -> <span class="s11">Color</span>.new255(238, 221, 130),</p>
-<p class="p14"><span class="s12">'LightGoldenrod1'</span> -> <span class="s11">Color</span>.new255(255, 236, 139),</p>
-<p class="p14"><span class="s12">'LightGoldenrod2'</span> -> <span class="s11">Color</span>.new255(238, 220, 130),</p>
-<p class="p14"><span class="s12">'LightGoldenrod3'</span> -> <span class="s11">Color</span>.new255(205, 190, 112),</p>
-<p class="p14"><span class="s12">'LightGoldenrod4'</span> -> <span class="s11">Color</span>.new255(139, 129, 76),</p>
-<p class="p14"><span class="s12">'LightGoldenrodYellow'</span> -> <span class="s11">Color</span>.new255(250, 250, 210),</p>
-<p class="p14"><span class="s12">'LightGray'</span> -> <span class="s11">Color</span>.new255(211, 211, 211),</p>
-<p class="p14"><span class="s12">'LightGrey'</span> -> <span class="s11">Color</span>.new255(211, 211, 211),</p>
-<p class="p14"><span class="s12">'LightPink'</span> -> <span class="s11">Color</span>.new255(255, 182, 193),</p>
-<p class="p14"><span class="s12">'LightPink1'</span> -> <span class="s11">Color</span>.new255(255, 174, 185),</p>
-<p class="p14"><span class="s12">'LightPink2'</span> -> <span class="s11">Color</span>.new255(238, 162, 173),</p>
-<p class="p14"><span class="s12">'LightPink3'</span> -> <span class="s11">Color</span>.new255(205, 140, 149),</p>
-<p class="p14"><span class="s12">'LightPink4'</span> -> <span class="s11">Color</span>.new255(139, 95, 101),</p>
-<p class="p14"><span class="s12">'LightSalmon'</span> -> <span class="s11">Color</span>.new255(255, 160, 122),</p>
-<p class="p14"><span class="s12">'LightSalmon1'</span> -> <span class="s11">Color</span>.new255(255, 160, 122),</p>
-<p class="p14"><span class="s12">'LightSalmon2'</span> -> <span class="s11">Color</span>.new255(238, 149, 114),</p>
-<p class="p14"><span class="s12">'LightSalmon3'</span> -> <span class="s11">Color</span>.new255(205, 129, 98),</p>
-<p class="p14"><span class="s12">'LightSalmon4'</span> -> <span class="s11">Color</span>.new255(139, 87, 66),</p>
-<p class="p14"><span class="s12">'LightSeaGreen'</span> -> <span class="s11">Color</span>.new255(32, 178, 170),</p>
-<p class="p14"><span class="s12">'LightSkyBlue'</span> -> <span class="s11">Color</span>.new255(135, 206, 250),</p>
-<p class="p14"><span class="s12">'LightSkyBlue1'</span> -> <span class="s11">Color</span>.new255(176, 226, 255),</p>
-<p class="p14"><span class="s12">'LightSkyBlue2'</span> -> <span class="s11">Color</span>.new255(164, 211, 238),</p>
-<p class="p14"><span class="s12">'LightSkyBlue3'</span> -> <span class="s11">Color</span>.new255(141, 182, 205),</p>
-<p class="p14"><span class="s12">'LightSkyBlue4'</span> -> <span class="s11">Color</span>.new255(96, 123, 139),</p>
-<p class="p14"><span class="s12">'LightSlateBlue'</span> -> <span class="s11">Color</span>.new255(132, 112, 255),</p>
-<p class="p14"><span class="s12">'LightSlateGray'</span> -> <span class="s11">Color</span>.new255(119, 136, 153),</p>
-<p class="p14"><span class="s12">'LightSlateGrey'</span> -> <span class="s11">Color</span>.new255(119, 136, 153),</p>
-<p class="p14"><span class="s12">'LightSteelBlue'</span> -> <span class="s11">Color</span>.new255(176, 196, 222),</p>
-<p class="p14"><span class="s12">'LightSteelBlue1'</span> -> <span class="s11">Color</span>.new255(202, 225, 255),</p>
-<p class="p14"><span class="s12">'LightSteelBlue2'</span> -> <span class="s11">Color</span>.new255(188, 210, 238),</p>
-<p class="p14"><span class="s12">'LightSteelBlue3'</span> -> <span class="s11">Color</span>.new255(162, 181, 205),</p>
-<p class="p14"><span class="s12">'LightSteelBlue4'</span> -> <span class="s11">Color</span>.new255(110, 123, 139),</p>
-<p class="p14"><span class="s12">'LightYellow'</span> -> <span class="s11">Color</span>.new255(255, 255, 224),</p>
-<p class="p14"><span class="s12">'LightYellow1'</span> -> <span class="s11">Color</span>.new255(255, 255, 224),</p>
-<p class="p14"><span class="s12">'LightYellow2'</span> -> <span class="s11">Color</span>.new255(238, 238, 209),</p>
-<p class="p14"><span class="s12">'LightYellow3'</span> -> <span class="s11">Color</span>.new255(205, 205, 180),</p>
-<p class="p14"><span class="s12">'LightYellow4'</span> -> <span class="s11">Color</span>.new255(139, 139, 122),</p>
-<p class="p14"><span class="s12">'lime green'</span> -> <span class="s11">Color</span>.new255(50, 205, 50),</p>
-<p class="p14"><span class="s12">'LimeGreen'</span> -> <span class="s11">Color</span>.new255(50, 205, 50),</p>
-<p class="p14"><span class="s12">'linen'</span> -> <span class="s11">Color</span>.new255(250, 240, 230),</p>
-<p class="p14"><span class="s12">'magenta'</span> -> <span class="s11">Color</span>.new255(255, 0, 255),</p>
-<p class="p14"><span class="s12">'magenta1'</span> -> <span class="s11">Color</span>.new255(255, 0, 255),</p>
-<p class="p14"><span class="s12">'magenta2'</span> -> <span class="s11">Color</span>.new255(238, 0, 238),</p>
-<p class="p14"><span class="s12">'magenta3'</span> -> <span class="s11">Color</span>.new255(205, 0, 205),</p>
-<p class="p14"><span class="s12">'magenta4'</span> -> <span class="s11">Color</span>.new255(139, 0, 139),</p>
-<p class="p14"><span class="s12">'maroon'</span> -> <span class="s11">Color</span>.new255(176, 48, 96),</p>
-<p class="p14"><span class="s12">'maroon1'</span> -> <span class="s11">Color</span>.new255(255, 52, 179),</p>
-<p class="p14"><span class="s12">'maroon2'</span> -> <span class="s11">Color</span>.new255(238, 48, 167),</p>
-<p class="p14"><span class="s12">'maroon3'</span> -> <span class="s11">Color</span>.new255(205, 41, 144),</p>
-<p class="p14"><span class="s12">'maroon4'</span> -> <span class="s11">Color</span>.new255(139, 28, 98),</p>
-<p class="p14"><span class="s12">'medium aquamarine'</span> -> <span class="s11">Color</span>.new255(102, 205, 170),</p>
-<p class="p14"><span class="s12">'medium blue'</span> -> <span class="s11">Color</span>.new255(0, 0, 205),</p>
-<p class="p14"><span class="s12">'medium orchid'</span> -> <span class="s11">Color</span>.new255(186, 85, 211),</p>
-<p class="p14"><span class="s12">'medium purple'</span> -> <span class="s11">Color</span>.new255(147, 112, 219),</p>
-<p class="p14"><span class="s12">'medium sea green'</span> -> <span class="s11">Color</span>.new255(60, 179, 113),</p>
-<p class="p14"><span class="s12">'medium slate blue'</span> -> <span class="s11">Color</span>.new255(123, 104, 238),</p>
-<p class="p14"><span class="s12">'medium spring green'</span> -> <span class="s11">Color</span>.new255(0, 250, 154),</p>
-<p class="p14"><span class="s12">'medium turquoise'</span> -> <span class="s11">Color</span>.new255(72, 209, 204),</p>
-<p class="p14"><span class="s12">'medium violet red'</span> -> <span class="s11">Color</span>.new255(199, 21, 133),</p>
-<p class="p14"><span class="s12">'MediumAquamarine'</span> -> <span class="s11">Color</span>.new255(102, 205, 170),</p>
-<p class="p14"><span class="s12">'MediumBlue'</span> -> <span class="s11">Color</span>.new255(0, 0, 205),</p>
-<p class="p14"><span class="s12">'MediumOrchid'</span> -> <span class="s11">Color</span>.new255(186, 85, 211),</p>
-<p class="p14"><span class="s12">'MediumOrchid1'</span> -> <span class="s11">Color</span>.new255(224, 102, 255),</p>
-<p class="p14"><span class="s12">'MediumOrchid2'</span> -> <span class="s11">Color</span>.new255(209, 95, 238),</p>
-<p class="p14"><span class="s12">'MediumOrchid3'</span> -> <span class="s11">Color</span>.new255(180, 82, 205),</p>
-<p class="p14"><span class="s12">'MediumOrchid4'</span> -> <span class="s11">Color</span>.new255(122, 55, 139),</p>
-<p class="p14"><span class="s12">'MediumPurple'</span> -> <span class="s11">Color</span>.new255(147, 112, 219),</p>
-<p class="p14"><span class="s12">'MediumPurple1'</span> -> <span class="s11">Color</span>.new255(171, 130, 255),</p>
-<p class="p14"><span class="s12">'MediumPurple2'</span> -> <span class="s11">Color</span>.new255(159, 121, 238),</p>
-<p class="p14"><span class="s12">'MediumPurple3'</span> -> <span class="s11">Color</span>.new255(137, 104, 205),</p>
-<p class="p14"><span class="s12">'MediumPurple4'</span> -> <span class="s11">Color</span>.new255(93, 71, 139),</p>
-<p class="p14"><span class="s12">'MediumSeaGreen'</span> -> <span class="s11">Color</span>.new255(60, 179, 113),</p>
-<p class="p14"><span class="s12">'MediumSlateBlue'</span> -> <span class="s11">Color</span>.new255(123, 104, 238),</p>
-<p class="p14"><span class="s12">'MediumSpringGreen'</span> -> <span class="s11">Color</span>.new255(0, 250, 154),</p>
-<p class="p14"><span class="s12">'MediumTurquoise'</span> -> <span class="s11">Color</span>.new255(72, 209, 204),</p>
-<p class="p14"><span class="s12">'MediumVioletRed'</span> -> <span class="s11">Color</span>.new255(199, 21, 133),</p>
-<p class="p14"><span class="s12">'midnight blue'</span> -> <span class="s11">Color</span>.new255(25, 25, 112),</p>
-<p class="p14"><span class="s12">'MidnightBlue'</span> -> <span class="s11">Color</span>.new255(25, 25, 112),</p>
-<p class="p14"><span class="s12">'mint cream'</span> -> <span class="s11">Color</span>.new255(245, 255, 250),</p>
-<p class="p14"><span class="s12">'MintCream'</span> -> <span class="s11">Color</span>.new255(245, 255, 250),</p>
-<p class="p14"><span class="s12">'misty rose'</span> -> <span class="s11">Color</span>.new255(255, 228, 225),</p>
-<p class="p14"><span class="s12">'MistyRose'</span> -> <span class="s11">Color</span>.new255(255, 228, 225),</p>
-<p class="p14"><span class="s12">'MistyRose1'</span> -> <span class="s11">Color</span>.new255(255, 228, 225),</p>
-<p class="p14"><span class="s12">'MistyRose2'</span> -> <span class="s11">Color</span>.new255(238, 213, 210),</p>
-<p class="p14"><span class="s12">'MistyRose3'</span> -> <span class="s11">Color</span>.new255(205, 183, 181),</p>
-<p class="p14"><span class="s12">'MistyRose4'</span> -> <span class="s11">Color</span>.new255(139, 125, 123),</p>
-<p class="p14"><span class="s12">'moccasin'</span> -> <span class="s11">Color</span>.new255(255, 228, 181),</p>
-<p class="p14"><span class="s12">'navajo white'</span> -> <span class="s11">Color</span>.new255(255, 222, 173),</p>
-<p class="p14"><span class="s12">'NavajoWhite'</span> -> <span class="s11">Color</span>.new255(255, 222, 173),</p>
-<p class="p14"><span class="s12">'NavajoWhite1'</span> -> <span class="s11">Color</span>.new255(255, 222, 173),</p>
-<p class="p14"><span class="s12">'NavajoWhite2'</span> -> <span class="s11">Color</span>.new255(238, 207, 161),</p>
-<p class="p14"><span class="s12">'NavajoWhite3'</span> -> <span class="s11">Color</span>.new255(205, 179, 139),</p>
-<p class="p14"><span class="s12">'NavajoWhite4'</span> -> <span class="s11">Color</span>.new255(139, 121, 94),</p>
-<p class="p14"><span class="s12">'navy'</span> -> <span class="s11">Color</span>.new255(0, 0, 128),</p>
-<p class="p14"><span class="s12">'navy blue'</span> -> <span class="s11">Color</span>.new255(0, 0, 128),</p>
-<p class="p14"><span class="s12">'NavyBlue'</span> -> <span class="s11">Color</span>.new255(0, 0, 128),</p>
-<p class="p14"><span class="s12">'old lace'</span> -> <span class="s11">Color</span>.new255(253, 245, 230),</p>
-<p class="p14"><span class="s12">'OldLace'</span> -> <span class="s11">Color</span>.new255(253, 245, 230),</p>
-<p class="p14"><span class="s12">'olive drab'</span> -> <span class="s11">Color</span>.new255(107, 142, 35),</p>
-<p class="p14"><span class="s12">'OliveDrab'</span> -> <span class="s11">Color</span>.new255(107, 142, 35),</p>
-<p class="p14"><span class="s12">'OliveDrab1'</span> -> <span class="s11">Color</span>.new255(192, 255, 62),</p>
-<p class="p14"><span class="s12">'OliveDrab2'</span> -> <span class="s11">Color</span>.new255(179, 238, 58),</p>
-<p class="p14"><span class="s12">'OliveDrab3'</span> -> <span class="s11">Color</span>.new255(154, 205, 50),</p>
-<p class="p14"><span class="s12">'OliveDrab4'</span> -> <span class="s11">Color</span>.new255(105, 139, 34),</p>
-<p class="p14"><span class="s12">'orange'</span> -> <span class="s11">Color</span>.new255(255, 165, 0),</p>
-<p class="p14"><span class="s12">'orange red'</span> -> <span class="s11">Color</span>.new255(255, 69, 0),</p>
-<p class="p14"><span class="s12">'orange1'</span> -> <span class="s11">Color</span>.new255(255, 165, 0),</p>
-<p class="p14"><span class="s12">'orange2'</span> -> <span class="s11">Color</span>.new255(238, 154, 0),</p>
-<p class="p14"><span class="s12">'orange3'</span> -> <span class="s11">Color</span>.new255(205, 133, 0),</p>
-<p class="p14"><span class="s12">'orange4'</span> -> <span class="s11">Color</span>.new255(139, 90, 0),</p>
-<p class="p14"><span class="s12">'OrangeRed'</span> -> <span class="s11">Color</span>.new255(255, 69, 0),</p>
-<p class="p14"><span class="s12">'OrangeRed1'</span> -> <span class="s11">Color</span>.new255(255, 69, 0),</p>
-<p class="p14"><span class="s12">'OrangeRed2'</span> -> <span class="s11">Color</span>.new255(238, 64, 0),</p>
-<p class="p14"><span class="s12">'OrangeRed3'</span> -> <span class="s11">Color</span>.new255(205, 55, 0),</p>
-<p class="p14"><span class="s12">'OrangeRed4'</span> -> <span class="s11">Color</span>.new255(139, 37, 0),</p>
-<p class="p14"><span class="s12">'orchid'</span> -> <span class="s11">Color</span>.new255(218, 112, 214),</p>
-<p class="p14"><span class="s12">'orchid1'</span> -> <span class="s11">Color</span>.new255(255, 131, 250),</p>
-<p class="p14"><span class="s12">'orchid2'</span> -> <span class="s11">Color</span>.new255(238, 122, 233),</p>
-<p class="p14"><span class="s12">'orchid3'</span> -> <span class="s11">Color</span>.new255(205, 105, 201),</p>
-<p class="p14"><span class="s12">'orchid4'</span> -> <span class="s11">Color</span>.new255(139, 71, 137),</p>
-<p class="p14"><span class="s12">'pale goldenrod'</span> -> <span class="s11">Color</span>.new255(238, 232, 170),</p>
-<p class="p14"><span class="s12">'pale green'</span> -> <span class="s11">Color</span>.new255(152, 251, 152),</p>
-<p class="p14"><span class="s12">'pale turquoise'</span> -> <span class="s11">Color</span>.new255(175, 238, 238),</p>
-<p class="p14"><span class="s12">'pale violet red'</span> -> <span class="s11">Color</span>.new255(219, 112, 147),</p>
-<p class="p14"><span class="s12">'PaleGoldenrod'</span> -> <span class="s11">Color</span>.new255(238, 232, 170),</p>
-<p class="p14"><span class="s12">'PaleGreen'</span> -> <span class="s11">Color</span>.new255(152, 251, 152),</p>
-<p class="p14"><span class="s12">'PaleGreen1'</span> -> <span class="s11">Color</span>.new255(154, 255, 154),</p>
-<p class="p14"><span class="s12">'PaleGreen2'</span> -> <span class="s11">Color</span>.new255(144, 238, 144),</p>
-<p class="p14"><span class="s12">'PaleGreen3'</span> -> <span class="s11">Color</span>.new255(124, 205, 124),</p>
-<p class="p14"><span class="s12">'PaleGreen4'</span> -> <span class="s11">Color</span>.new255(84, 139, 84),</p>
-<p class="p14"><span class="s12">'PaleTurquoise'</span> -> <span class="s11">Color</span>.new255(175, 238, 238),</p>
-<p class="p14"><span class="s12">'PaleTurquoise1'</span> -> <span class="s11">Color</span>.new255(187, 255, 255),</p>
-<p class="p14"><span class="s12">'PaleTurquoise2'</span> -> <span class="s11">Color</span>.new255(174, 238, 238),</p>
-<p class="p14"><span class="s12">'PaleTurquoise3'</span> -> <span class="s11">Color</span>.new255(150, 205, 205),</p>
-<p class="p14"><span class="s12">'PaleTurquoise4'</span> -> <span class="s11">Color</span>.new255(102, 139, 139),</p>
-<p class="p14"><span class="s12">'PaleVioletRed'</span> -> <span class="s11">Color</span>.new255(219, 112, 147),</p>
-<p class="p14"><span class="s12">'PaleVioletRed1'</span> -> <span class="s11">Color</span>.new255(255, 130, 171),</p>
-<p class="p14"><span class="s12">'PaleVioletRed2'</span> -> <span class="s11">Color</span>.new255(238, 121, 159),</p>
-<p class="p14"><span class="s12">'PaleVioletRed3'</span> -> <span class="s11">Color</span>.new255(205, 104, 137),</p>
-<p class="p14"><span class="s12">'PaleVioletRed4'</span> -> <span class="s11">Color</span>.new255(139, 71, 93),</p>
-<p class="p14"><span class="s12">'papaya whip'</span> -> <span class="s11">Color</span>.new255(255, 239, 213),</p>
-<p class="p14"><span class="s12">'PapayaWhip'</span> -> <span class="s11">Color</span>.new255(255, 239, 213),</p>
-<p class="p14"><span class="s12">'peach puff'</span> -> <span class="s11">Color</span>.new255(255, 218, 185),</p>
-<p class="p14"><span class="s12">'PeachPuff'</span> -> <span class="s11">Color</span>.new255(255, 218, 185),</p>
-<p class="p14"><span class="s12">'PeachPuff1'</span> -> <span class="s11">Color</span>.new255(255, 218, 185),</p>
-<p class="p14"><span class="s12">'PeachPuff2'</span> -> <span class="s11">Color</span>.new255(238, 203, 173),</p>
-<p class="p14"><span class="s12">'PeachPuff3'</span> -> <span class="s11">Color</span>.new255(205, 175, 149),</p>
-<p class="p14"><span class="s12">'PeachPuff4'</span> -> <span class="s11">Color</span>.new255(139, 119, 101),</p>
-<p class="p14"><span class="s12">'peru'</span> -> <span class="s11">Color</span>.new255(205, 133, 63),</p>
-<p class="p14"><span class="s12">'pink'</span> -> <span class="s11">Color</span>.new255(255, 192, 203),</p>
-<p class="p14"><span class="s12">'pink1'</span> -> <span class="s11">Color</span>.new255(255, 181, 197),</p>
-<p class="p14"><span class="s12">'pink2'</span> -> <span class="s11">Color</span>.new255(238, 169, 184),</p>
-<p class="p14"><span class="s12">'pink3'</span> -> <span class="s11">Color</span>.new255(205, 145, 158),</p>
-<p class="p14"><span class="s12">'pink4'</span> -> <span class="s11">Color</span>.new255(139, 99, 108),</p>
-<p class="p14"><span class="s12">'plum'</span> -> <span class="s11">Color</span>.new255(221, 160, 221),</p>
-<p class="p14"><span class="s12">'plum1'</span> -> <span class="s11">Color</span>.new255(255, 187, 255),</p>
-<p class="p14"><span class="s12">'plum2'</span> -> <span class="s11">Color</span>.new255(238, 174, 238),</p>
-<p class="p14"><span class="s12">'plum3'</span> -> <span class="s11">Color</span>.new255(205, 150, 205),</p>
-<p class="p14"><span class="s12">'plum4'</span> -> <span class="s11">Color</span>.new255(139, 102, 139),</p>
-<p class="p14"><span class="s12">'powder blue'</span> -> <span class="s11">Color</span>.new255(176, 224, 230),</p>
-<p class="p14"><span class="s12">'PowderBlue'</span> -> <span class="s11">Color</span>.new255(176, 224, 230),</p>
-<p class="p14"><span class="s12">'purple'</span> -> <span class="s11">Color</span>.new255(160, 32, 240),</p>
-<p class="p14"><span class="s12">'purple1'</span> -> <span class="s11">Color</span>.new255(155, 48, 255),</p>
-<p class="p14"><span class="s12">'purple2'</span> -> <span class="s11">Color</span>.new255(145, 44, 238),</p>
-<p class="p14"><span class="s12">'purple3'</span> -> <span class="s11">Color</span>.new255(125, 38, 205),</p>
-<p class="p14"><span class="s12">'purple4'</span> -> <span class="s11">Color</span>.new255(85, 26, 139),</p>
-<p class="p14"><span class="s12">'red'</span> -> <span class="s11">Color</span>.new255(255, 0, 0),</p>
-<p class="p14"><span class="s12">'red1'</span> -> <span class="s11">Color</span>.new255(255, 0, 0),</p>
-<p class="p14"><span class="s12">'red2'</span> -> <span class="s11">Color</span>.new255(238, 0, 0),</p>
-<p class="p14"><span class="s12">'red3'</span> -> <span class="s11">Color</span>.new255(205, 0, 0),</p>
-<p class="p14"><span class="s12">'red4'</span> -> <span class="s11">Color</span>.new255(139, 0, 0),</p>
-<p class="p14"><span class="s12">'rosy brown'</span> -> <span class="s11">Color</span>.new255(188, 143, 143),</p>
-<p class="p14"><span class="s12">'RosyBrown'</span> -> <span class="s11">Color</span>.new255(188, 143, 143),</p>
-<p class="p14"><span class="s12">'RosyBrown1'</span> -> <span class="s11">Color</span>.new255(255, 193, 193),</p>
-<p class="p14"><span class="s12">'RosyBrown2'</span> -> <span class="s11">Color</span>.new255(238, 180, 180),</p>
-<p class="p14"><span class="s12">'RosyBrown3'</span> -> <span class="s11">Color</span>.new255(205, 155, 155),</p>
-<p class="p14"><span class="s12">'RosyBrown4'</span> -> <span class="s11">Color</span>.new255(139, 105, 105),</p>
-<p class="p14"><span class="s12">'royal blue'</span> -> <span class="s11">Color</span>.new255(65, 105, 225),</p>
-<p class="p14"><span class="s12">'RoyalBlue'</span> -> <span class="s11">Color</span>.new255(65, 105, 225),</p>
-<p class="p14"><span class="s12">'RoyalBlue1'</span> -> <span class="s11">Color</span>.new255(72, 118, 255),</p>
-<p class="p14"><span class="s12">'RoyalBlue2'</span> -> <span class="s11">Color</span>.new255(67, 110, 238),</p>
-<p class="p14"><span class="s12">'RoyalBlue3'</span> -> <span class="s11">Color</span>.new255(58, 95, 205),</p>
-<p class="p14"><span class="s12">'RoyalBlue4'</span> -> <span class="s11">Color</span>.new255(39, 64, 139),</p>
-<p class="p14"><span class="s12">'saddle brown'</span> -> <span class="s11">Color</span>.new255(139, 69, 19),</p>
-<p class="p14"><span class="s12">'SaddleBrown'</span> -> <span class="s11">Color</span>.new255(139, 69, 19),</p>
-<p class="p14"><span class="s12">'salmon'</span> -> <span class="s11">Color</span>.new255(250, 128, 114),</p>
-<p class="p14"><span class="s12">'salmon1'</span> -> <span class="s11">Color</span>.new255(255, 140, 105),</p>
-<p class="p14"><span class="s12">'salmon2'</span> -> <span class="s11">Color</span>.new255(238, 130, 98),</p>
-<p class="p14"><span class="s12">'salmon3'</span> -> <span class="s11">Color</span>.new255(205, 112, 84),</p>
-<p class="p14"><span class="s12">'salmon4'</span> -> <span class="s11">Color</span>.new255(139, 76, 57),</p>
-<p class="p14"><span class="s12">'sandy brown'</span> -> <span class="s11">Color</span>.new255(244, 164, 96),</p>
-<p class="p14"><span class="s12">'SandyBrown'</span> -> <span class="s11">Color</span>.new255(244, 164, 96),</p>
-<p class="p14"><span class="s12">'sea green'</span> -> <span class="s11">Color</span>.new255(46, 139, 87),</p>
-<p class="p14"><span class="s12">'SeaGreen'</span> -> <span class="s11">Color</span>.new255(46, 139, 87),</p>
-<p class="p14"><span class="s12">'SeaGreen1'</span> -> <span class="s11">Color</span>.new255(84, 255, 159),</p>
-<p class="p14"><span class="s12">'SeaGreen2'</span> -> <span class="s11">Color</span>.new255(78, 238, 148),</p>
-<p class="p14"><span class="s12">'SeaGreen3'</span> -> <span class="s11">Color</span>.new255(67, 205, 128),</p>
-<p class="p14"><span class="s12">'SeaGreen4'</span> -> <span class="s11">Color</span>.new255(46, 139, 87),</p>
-<p class="p14"><span class="s12">'seashell'</span> -> <span class="s11">Color</span>.new255(255, 245, 238),</p>
-<p class="p14"><span class="s12">'seashell1'</span> -> <span class="s11">Color</span>.new255(255, 245, 238),</p>
-<p class="p14"><span class="s12">'seashell2'</span> -> <span class="s11">Color</span>.new255(238, 229, 222),</p>
-<p class="p14"><span class="s12">'seashell3'</span> -> <span class="s11">Color</span>.new255(205, 197, 191),</p>
-<p class="p14"><span class="s12">'seashell4'</span> -> <span class="s11">Color</span>.new255(139, 134, 130),</p>
-<p class="p14"><span class="s12">'sienna'</span> -> <span class="s11">Color</span>.new255(160, 82, 45),</p>
-<p class="p14"><span class="s12">'sienna1'</span> -> <span class="s11">Color</span>.new255(255, 130, 71),</p>
-<p class="p14"><span class="s12">'sienna2'</span> -> <span class="s11">Color</span>.new255(238, 121, 66),</p>
-<p class="p14"><span class="s12">'sienna3'</span> -> <span class="s11">Color</span>.new255(205, 104, 57),</p>
-<p class="p14"><span class="s12">'sienna4'</span> -> <span class="s11">Color</span>.new255(139, 71, 38),</p>
-<p class="p14"><span class="s12">'sky blue'</span> -> <span class="s11">Color</span>.new255(135, 206, 235),</p>
-<p class="p14"><span class="s12">'SkyBlue'</span> -> <span class="s11">Color</span>.new255(135, 206, 235),</p>
-<p class="p14"><span class="s12">'SkyBlue1'</span> -> <span class="s11">Color</span>.new255(135, 206, 255),</p>
-<p class="p14"><span class="s12">'SkyBlue2'</span> -> <span class="s11">Color</span>.new255(126, 192, 238),</p>
-<p class="p14"><span class="s12">'SkyBlue3'</span> -> <span class="s11">Color</span>.new255(108, 166, 205),</p>
-<p class="p14"><span class="s12">'SkyBlue4'</span> -> <span class="s11">Color</span>.new255(74, 112, 139),</p>
-<p class="p14"><span class="s12">'slate blue'</span> -> <span class="s11">Color</span>.new255(106, 90, 205),</p>
-<p class="p14"><span class="s12">'slate gray'</span> -> <span class="s11">Color</span>.new255(112, 128, 144),</p>
-<p class="p14"><span class="s12">'slate grey'</span> -> <span class="s11">Color</span>.new255(112, 128, 144),</p>
-<p class="p14"><span class="s12">'SlateBlue'</span> -> <span class="s11">Color</span>.new255(106, 90, 205),</p>
-<p class="p14"><span class="s12">'SlateBlue1'</span> -> <span class="s11">Color</span>.new255(131, 111, 255),</p>
-<p class="p14"><span class="s12">'SlateBlue2'</span> -> <span class="s11">Color</span>.new255(122, 103, 238),</p>
-<p class="p14"><span class="s12">'SlateBlue3'</span> -> <span class="s11">Color</span>.new255(105, 89, 205),</p>
-<p class="p14"><span class="s12">'SlateBlue4'</span> -> <span class="s11">Color</span>.new255(71, 60, 139),</p>
-<p class="p14"><span class="s12">'SlateGray'</span> -> <span class="s11">Color</span>.new255(112, 128, 144),</p>
-<p class="p14"><span class="s12">'SlateGray1'</span> -> <span class="s11">Color</span>.new255(198, 226, 255),</p>
-<p class="p14"><span class="s12">'SlateGray2'</span> -> <span class="s11">Color</span>.new255(185, 211, 238),</p>
-<p class="p14"><span class="s12">'SlateGray3'</span> -> <span class="s11">Color</span>.new255(159, 182, 205),</p>
-<p class="p14"><span class="s12">'SlateGray4'</span> -> <span class="s11">Color</span>.new255(108, 123, 139),</p>
-<p class="p14"><span class="s12">'SlateGrey'</span> -> <span class="s11">Color</span>.new255(112, 128, 144),</p>
-<p class="p14"><span class="s12">'snow'</span> -> <span class="s11">Color</span>.new255(255, 250, 250),</p>
-<p class="p14"><span class="s12">'snow1'</span> -> <span class="s11">Color</span>.new255(255, 250, 250),</p>
-<p class="p14"><span class="s12">'snow2'</span> -> <span class="s11">Color</span>.new255(238, 233, 233),</p>
-<p class="p14"><span class="s12">'snow3'</span> -> <span class="s11">Color</span>.new255(205, 201, 201),</p>
-<p class="p14"><span class="s12">'snow4'</span> -> <span class="s11">Color</span>.new255(139, 137, 137),</p>
-<p class="p14"><span class="s12">'spring green'</span> -> <span class="s11">Color</span>.new255(0, 255, 127),</p>
-<p class="p14"><span class="s12">'SpringGreen'</span> -> <span class="s11">Color</span>.new255(0, 255, 127),</p>
-<p class="p14"><span class="s12">'SpringGreen1'</span> -> <span class="s11">Color</span>.new255(0, 255, 127),</p>
-<p class="p14"><span class="s12">'SpringGreen2'</span> -> <span class="s11">Color</span>.new255(0, 238, 118),</p>
-<p class="p14"><span class="s12">'SpringGreen3'</span> -> <span class="s11">Color</span>.new255(0, 205, 102),</p>
-<p class="p14"><span class="s12">'SpringGreen4'</span> -> <span class="s11">Color</span>.new255(0, 139, 69),</p>
-<p class="p14"><span class="s12">'steel blue'</span> -> <span class="s11">Color</span>.new255(70, 130, 180),</p>
-<p class="p14"><span class="s12">'SteelBlue'</span> -> <span class="s11">Color</span>.new255(70, 130, 180),</p>
-<p class="p14"><span class="s12">'SteelBlue1'</span> -> <span class="s11">Color</span>.new255(99, 184, 255),</p>
-<p class="p14"><span class="s12">'SteelBlue2'</span> -> <span class="s11">Color</span>.new255(92, 172, 238),</p>
-<p class="p14"><span class="s12">'SteelBlue3'</span> -> <span class="s11">Color</span>.new255(79, 148, 205),</p>
-<p class="p14"><span class="s12">'SteelBlue4'</span> -> <span class="s11">Color</span>.new255(54, 100, 139),</p>
-<p class="p14"><span class="s12">'tan'</span> -> <span class="s11">Color</span>.new255(210, 180, 140),</p>
-<p class="p14"><span class="s12">'tan1'</span> -> <span class="s11">Color</span>.new255(255, 165, 79),</p>
-<p class="p14"><span class="s12">'tan2'</span> -> <span class="s11">Color</span>.new255(238, 154, 73),</p>
-<p class="p14"><span class="s12">'tan3'</span> -> <span class="s11">Color</span>.new255(205, 133, 63),</p>
-<p class="p14"><span class="s12">'tan4'</span> -> <span class="s11">Color</span>.new255(139, 90, 43),</p>
-<p class="p14"><span class="s12">'thistle'</span> -> <span class="s11">Color</span>.new255(216, 191, 216),</p>
-<p class="p14"><span class="s12">'thistle1'</span> -> <span class="s11">Color</span>.new255(255, 225, 255),</p>
-<p class="p14"><span class="s12">'thistle2'</span> -> <span class="s11">Color</span>.new255(238, 210, 238),</p>
-<p class="p14"><span class="s12">'thistle3'</span> -> <span class="s11">Color</span>.new255(205, 181, 205),</p>
-<p class="p14"><span class="s12">'thistle4'</span> -> <span class="s11">Color</span>.new255(139, 123, 139),</p>
-<p class="p14"><span class="s12">'tomato'</span> -> <span class="s11">Color</span>.new255(255, 99, 71),</p>
-<p class="p14"><span class="s12">'tomato1'</span> -> <span class="s11">Color</span>.new255(255, 99, 71),</p>
-<p class="p14"><span class="s12">'tomato2'</span> -> <span class="s11">Color</span>.new255(238, 92, 66),</p>
-<p class="p14"><span class="s12">'tomato3'</span> -> <span class="s11">Color</span>.new255(205, 79, 57),</p>
-<p class="p14"><span class="s12">'tomato4'</span> -> <span class="s11">Color</span>.new255(139, 54, 38),</p>
-<p class="p14"><span class="s12">'turquoise'</span> -> <span class="s11">Color</span>.new255(64, 224, 208),</p>
-<p class="p14"><span class="s12">'turquoise1'</span> -> <span class="s11">Color</span>.new255(0, 245, 255),</p>
-<p class="p14"><span class="s12">'turquoise2'</span> -> <span class="s11">Color</span>.new255(0, 229, 238),</p>
-<p class="p14"><span class="s12">'turquoise3'</span> -> <span class="s11">Color</span>.new255(0, 197, 205),</p>
-<p class="p14"><span class="s12">'turquoise4'</span> -> <span class="s11">Color</span>.new255(0, 134, 139),</p>
-<p class="p14"><span class="s12">'violet'</span> -> <span class="s11">Color</span>.new255(238, 130, 238),</p>
-<p class="p14"><span class="s12">'violet red'</span> -> <span class="s11">Color</span>.new255(208, 32, 144),</p>
-<p class="p14"><span class="s12">'VioletRed'</span> -> <span class="s11">Color</span>.new255(208, 32, 144),</p>
-<p class="p14"><span class="s12">'VioletRed1'</span> -> <span class="s11">Color</span>.new255(255, 62, 150),</p>
-<p class="p14"><span class="s12">'VioletRed2'</span> -> <span class="s11">Color</span>.new255(238, 58, 140),</p>
-<p class="p14"><span class="s12">'VioletRed3'</span> -> <span class="s11">Color</span>.new255(205, 50, 120),</p>
-<p class="p14"><span class="s12">'VioletRed4'</span> -> <span class="s11">Color</span>.new255(139, 34, 82),</p>
-<p class="p14"><span class="s12">'wheat'</span> -> <span class="s11">Color</span>.new255(245, 222, 179),</p>
-<p class="p14"><span class="s12">'wheat1'</span> -> <span class="s11">Color</span>.new255(255, 231, 186),</p>
-<p class="p14"><span class="s12">'wheat2'</span> -> <span class="s11">Color</span>.new255(238, 216, 174),</p>
-<p class="p14"><span class="s12">'wheat3'</span> -> <span class="s11">Color</span>.new255(205, 186, 150),</p>
-<p class="p14"><span class="s12">'wheat4'</span> -> <span class="s11">Color</span>.new255(139, 126, 102),</p>
-<p class="p14"><span class="s12">'white'</span> -> <span class="s11">Color</span>.new255(255, 255, 255),</p>
-<p class="p14"><span class="s12">'white smoke'</span> -> <span class="s11">Color</span>.new255(245, 245, 245),</p>
-<p class="p14"><span class="s12">'WhiteSmoke'</span> -> <span class="s11">Color</span>.new255(245, 245, 245),</p>
-<p class="p14"><span class="s12">'yellow'</span> -> <span class="s11">Color</span>.new255(255, 255, 0),</p>
-<p class="p14"><span class="s12">'yellow green'</span> -> <span class="s11">Color</span>.new255(154, 205, 50),</p>
-<p class="p14"><span class="s12">'yellow1'</span> -> <span class="s11">Color</span>.new255(255, 255, 0),</p>
-<p class="p14"><span class="s12">'yellow2'</span> -> <span class="s11">Color</span>.new255(238, 238, 0),</p>
-<p class="p14"><span class="s12">'yellow3'</span> -> <span class="s11">Color</span>.new255(205, 205, 0),</p>
-<p class="p14"><span class="s12">'yellow4'</span> -> <span class="s11">Color</span>.new255(139, 139, 0),</p>
-<p class="p14"><span class="s12">'YellowGreen'</span> -> <span class="s11">Color</span>.new255(154, 205, 50)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/FlowLayout.html b/Help/GUI/GUI-Tools/FlowLayout.html
deleted file mode 100644
index 99e32e5..0000000
--- a/Help/GUI/GUI-Tools/FlowLayout.html
+++ /dev/null
@@ -1,250 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {text-decoration: underline}
-span.s7 {color: #0000bf}
-span.s8 {color: #0000bf}
-span.s9 {color: #bf0000}
-span.s10 {color: #0000bf}
-span.s11 {color: #0000bf}
-span.s12 {color: #0000bf}
-span.s13 {font: 14.0px Helvetica}
-span.s14 {color: #4d4d4d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FlowLayout<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a view decorator which autowraps the view contents</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">FlowLayout is a decorator which automatically arranges views inside a container view in a row, and starts a new row if there is not enough space left for the next view. <a href="../Cocoa-GUI/SCWindow.html"><span class="s3">SCWindow</span></a> and <a href="../Cocoa-GUI/SCCompositeView.html"><span class="s4">SCCompositeView</span></a> both have addFlowLayout methods which assign FlowLayout to their view decorators and return the decorator.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s5"><b>See also: </b><a href="../Cocoa-GUI/SCContainerView.html"><span class="s6">SCContainerView</span></a>, <a href="../Cocoa-GUI/SCCompositeView.html"><span class="s6">CompositeView</span></a>, <a href="../Cocoa-GUI/SCTopView.html"><span class="s6">SCTopView</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (bounds, margin, gap)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- An instance of Rect. Normally set to the parent.bounds.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin </b>- An instance of <a href="../../Geometry/Point.html"><span class="s7">Point</span></a>. The horizontal and vertical inner margins, within which the parent's subviews are placed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap </b>- An instance of <a href="../../Geometry/Point.html"><span class="s7">Point</span></a>. The horizontal and vertical layout gap between the subviews.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//change the gaps and margins to see how they work</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = <span class="s8">FlowLayout</span>( w.view.bounds, 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>16.do{ <span class="s8">Slider2D</span>( w.view,80 at 80 ).background_( <span class="s8">Color</span>.rand ) };</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>You can also write:</p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.addFlowLayout( 10 at 10, 20 at 5 ); <span class="s9">// a shortcut method, see <a href="../Cocoa-GUI/SCContainerView.html"><span class="s10">SCContainerView</span></a></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>16.do{ <span class="s8">Slider2D</span>( w.view,80 at 80 ).background_( <span class="s8">Color</span>.rand ) };</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p12"><b>Accessing Instance and Class Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>nextLine</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Forces the decorator to start a new line:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q = w.addFlowLayout( 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,140 at 140 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.nextLine;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,140 at 140 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>indentedRemaining</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns and instance of <a href="../../Geometry/Rect.html"><span class="s11">Rect</span></a>. This is a very useful method which tells you how much space is left in a row, before the next row starts. The height of <b>indentedRemaining,</b> is the full height remaining in the FlowLayout.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//normally you will only use the width of indentedRemaining</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = d = <span class="s8">FlowLayout</span>.new( w.view.bounds, 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">Slider</span><span class="s5">( w.view, d.indentedRemaining.width at 150) </span>//fits this view perfeclty to the right innerBounds</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Compare this with:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>( </span>//here the third view is fit to both the right and bottom innerBounds</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = d = <span class="s8">FlowLayout</span>.new( w.view.bounds, 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,140 at 140 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,140 at 140 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.nextLine;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view, d.indentedRemaining ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>bounds</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>bounds_ (b)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The outer bounds in which the decorator places the subviews in the parent view</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b</b> - An instance of <a href="../../Geometry/Rect.html"><span class="s12">Rect</span></a> .</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>innerBounds</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the <b>bounds</b> inset by <b>margin</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gap_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>gap</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The horizontal and vertical layout gap between the subviews.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg1 </b>-<b> </b>An instance of <a href="../../Geometry/Point.html"><span class="s7">Point</span></a>.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>margin_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>margin</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The horizontal and vertical inner margins, within which the parent's subviews are placed.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg1 </b>- An instance of <a href="../../Geometry/Point.html"><span class="s7">Point</span></a>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Subclassing and Internal Methods</b></p>
-<p class="p7"><span class="s13"><span class="Apple-tab-span">	</span></span>The following methods are usually not used directly or are called by a primitive. Programmers can still call or override these as needed.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>left_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>left</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get the current left indentation or manually set it.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg1 </b>- A number;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = d = <span class="s8">FlowLayout</span>.new( w.view.bounds, 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.left_(220); </span>//manually set the new indentation</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>top_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>top</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get the current top indentation or manually set it.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg1 </b>- A number;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = d = <span class="s8">FlowLayout</span>.new( w.view.bounds, 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.top_(50); </span>//manually set the new indentation</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>shift (x, y)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the current <b>left</b> and <b>top</b> indentation (see above).</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxHeight_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxHeight</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set maximium height of the subviews in the current position.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg1 </b>- A number;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = d = <span class="s8">FlowLayout</span>.new( w.view.bounds, 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,100 at 160 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s14">"first row maxHeight: "</span> ++ d.maxHeight.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s14">"second row maxHeight: "</span> ++ d.maxHeight.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxRight_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxRight</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get/set maximium right of the subviews in the current position.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg1 </b>- A number;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = d = <span class="s8">FlowLayout</span>.new( w.view.bounds, 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,100 at 160 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s14">"first row maxRight: "</span> ++ d.maxRight.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s14">"second row maxRight: "</span> ++ d.maxRight.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>currentBounds</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets a Rect with <b>bounds</b>.width and height = <b>top</b> + <b>maxHeight</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = d = <span class="s8">FlowLayout</span>.new( w.view.bounds, 10 at 10, 10 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,100 at 160 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.currentBounds.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.currentBounds.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.currentBounds.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>used</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets a Rect with the space actually used.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s8">Window</span>.new;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.decorator = d = <span class="s8">FlowLayout</span>.new( w.view.bounds, 10 at 10, 20 at 5 );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,100 at 160 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.used.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.used.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Slider2D</span>( w.view,150 at 150 ).background_( <span class="s8">Color</span>.rand );</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.used.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>reset</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Resets the layout mechanism to 0,0.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>init<span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>place (view)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/GUI.html b/Help/GUI/GUI-Tools/GUI.html
deleted file mode 100644
index 4373135..0000000
--- a/Help/GUI/GUI-Tools/GUI.html
+++ /dev/null
@@ -1,227 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #5763a9; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; color: #000000; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p19 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p20 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p21 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #5763a9}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {text-decoration: underline ; color: #1638e6}
-span.s6 {color: #0c2eee}
-span.s7 {color: #0922b2}
-span.s8 {color: #314bd1}
-span.s9 {color: #0000bf}
-span.s10 {font: 10.0px Monaco}
-span.s11 {color: #bf0000}
-span.s12 {font: 10.0px Monaco; color: #52566c}
-span.s13 {color: #007300}
-span.s14 {font: 10.0px Monaco; color: #545668}
-span.s15 {color: #606060}
-span.s16 {color: #5461ad}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>GUI<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Factory abstraction for all GUI related core classes</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a>, <a href="ViewRedirect.html"><span class="s5">ViewRedirect</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p1">The GUI class provides a means of writing cross platform gui code. GUI provides Factory abstraction for all gui related core classes. Each gui kit is described by a gui scheme which maps class names to actual classes. These schemes are in turn used by <a href="ViewRedirect.html"><span class="s6">ViewRedirect</span></a> to provide a simple cross-platform gui syntax. It also provide utilities for switching kits and other cross platform tasks. You can get your available schemes (depending on what you installed) with:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s7">GUI</span>.schemes;</p>
-<p class="p2"><br></p>
-<p class="p1">For a complete list of gui classes and redirects, see <a href="../GUI-Classes.html"><span class="s8">GUI-Classes</span></a>.</span></p>
-<p class="p5"><br></p>
-<p class="p7"><b>Switching and Referring to GUI Kits</b></p>
-<p class="p8"><br></p>
-<p class="p1">As of this writing, two GUI kits are available through the GUI class: CocoaGUI (Mac OS X native) and SwingGUI (Java) . Note that SwingOSC is not part of every SuperCollider distribution, so you may have to install it separately.</p>
-<p class="p2"><br></p>
-<p class="p1">You can switch the GUI kit by calling one of the following class methods:</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s9">GUI</span><span class="s3">.cocoa;<span class="Apple-tab-span">	</span></span>// use cocoa in subsequent GUI creation procedures</p>
-<p class="p9"><span class="s9">GUI</span><span class="s3">.swing;<span class="Apple-tab-span">	</span></span>// use swing in subsequent GUI creation procedures</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// NOTE: If you do not have SwingOSC installed, you get</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// a warning only, and do not switch; so you cannot</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// accidentally disable your (mac) gui system.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">These methods return the new GUI kit implementation. The current implementation can be queried by calling</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s9">GUI</span><span class="s3">.current;<span class="Apple-tab-span">	</span></span>// returns the current GUI kit implementation</p>
-<p class="p2"><br></p>
-<p class="p1">If you want to make a GUI kit specific switch (e.g. in a class), then you should use the following instead, as on non-OSX systems the class CocoaGUI is not in the class library path, and you cannot check for an undefined class:</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s9">GUI</span><span class="s3">.id;<span class="Apple-tab-span">	</span></span>// returns the current GUI kit implementation id; this is currently either \cocoa or \swing</p>
-<p class="p2"><br></p>
-<p class="p1">For persistency, you can store the identifier of the kit implementation and recall the kit through the class method <span class="s10">fromID</span>:</p>
-<p class="p2"><br></p>
-<p class="p10">x = <span class="s9">GUI</span>.cocoa;</p>
-<p class="p9"><span class="s3">y = x.id;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// store the identifier of a kit implementation</p>
-<p class="p9"><span class="s3">y.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ; the id could be stored in a preferences file for example</p>
-<p class="p10"><span class="s9">GUI</span>.swing;</p>
-<p class="p9">// now switch back to the kit implementation with identifier y</p>
-<p class="p10"><span class="s9">GUI</span>.fromID( y );</p>
-<p class="p10"><span class="s9">GUI</span>.current.id.postln;<span class="Apple-tab-span">	</span><span class="s11">// --> cocoa</span></p>
-<p class="p2"><br></p>
-<p class="p1">The <span class="s12">*use</span> and <span class="s12">*useID</span> methods allow you to temporarily switch the kit, so as to use it only for a dedicated block of statements:</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s9">GUI</span>.cocoa;</p>
-<p class="p10"><span class="s9">GUI</span>.useID( <span class="s13">\swing</span>, {<span class="s9">Array</span>.rand( 1000, 0.0, 1.0 ).plot });</p>
-<p class="p10"><span class="s9">GUI</span>.current.id.postln;<span class="Apple-tab-span">	</span><span class="s11">// --> still cocoa</span></p>
-<p class="p11"><br></p>
-<p class="p1">You can get a particular kit using the <span class="s12">*get</span> method. You can switch to a particular kit using the <span class="s12">*set</span> method:</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">x = </span><span class="s9">GUI</span><span class="s3">.get( </span><span class="s13">\swing</span><span class="s3"> );<span class="Apple-tab-span">	</span></span>// note: unlike *swing and *cocoa, this does not _switch_ the current kit!</p>
-<p class="p10"><span class="s9">GUI</span>.current.id.postln;<span class="Apple-tab-span">	</span><span class="s11">// --> still cocoa</span></p>
-<p class="p9"><span class="s9">GUI</span><span class="s3">.set( x );<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now we make SwingOSC the current kit</p>
-<p class="p10"><span class="s9">GUI</span>.window.viewPalette;</p>
-<p class="p8"><br></p>
-<p class="p7"><b>Extending GUI Kits</b></p>
-<p class="p8"><br></p>
-<p class="p1">GUI Kits can be extended with custom classes by using their respective <span class="s14">.put</span> methods:</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s9">GUI</span>.get( <span class="s13">\cocoa</span> ).put( <span class="s13">\myText</span>, <span class="s9">SCStaticText</span> );</p>
-<p class="p12"><span class="s9">GUI</span>.get( <span class="s13">\swing</span> ).put( <span class="s13">\myText</span>, <span class="s9">JSCStaticText</span> );</p>
-<p class="p13"><br></p>
-<p class="p12"><span class="s9">GUI</span>.cocoa;</p>
-<p class="p12"><span class="s9">GUI</span>.swing;</p>
-<p class="p12">(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w = <span class="s9">GUI</span>.window.new;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s9">GUI</span>.myText.new( w, w.view.bounds.insetBy( 20, 20 )).string_( <span class="s15">"schoko"</span> ).background_( <span class="s9">Color</span>.red );</p>
-<p class="p12"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p12">)</p>
-<p class="p5"><br></p>
-<p class="p1">If you intend to add extensions from within your own classes upon class library initialization time, the preferred way is to do this in the startup process:</p>
-<p class="p13"><br></p>
-<p class="p14">MyGUIExtension<span class="s3"> {</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>*initClass {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">StartUp</span>.add({</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">var</span> scheme;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scheme = <span class="s9">GUI</span>.get( <span class="s13">\cocoa</span> );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if( scheme.notNil, {scheme.put( <span class="s13">\myText</span>, <span class="s9">SCStaticText</span> )});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scheme = <span class="s9">GUI</span>.get( <span class="s13">\swing</span> );</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if( scheme.notNil, {scheme.put( <span class="s13">\myText</span>, <span class="s9">JSCStaticText</span> )});</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12">}</p>
-<p class="p15"><br></p>
-<p class="p16"><b>Methods and Variables for GUI</b></p>
-<p class="p17"><br></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*new (key)</b></p>
-<p class="p17"><br></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*makeGUI (key, args, properties)</b></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*initClass</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sets the <b>skin</b> to default values on Compile.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fontSpecs</b>: <span class="Apple-tab-span">	</span>["Helvetica", 10],</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fontColor</b>: <span class="Apple-tab-span">	</span>Color.black,</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>background</b>: <span class="Apple-tab-span">	</span>Color(0.8, 0.85, 0.7, 0.5),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>foreground</b>:<span class="Apple-tab-span">	</span>Color.grey(0.95),</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>onColor</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Color(0.5, 1, 0.5),</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>offColor</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Color.clear,</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gap</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 @ 0,</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>margin</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 at 2,</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>buttonHeight</b>:<span class="Apple-tab-span">	</span>16</p>
-<p class="p17"><br></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*cocoa</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Makes Cocoa (Mac OS X GUI) the current scheme and returns it. Subsequent GUI object calls to GUI are delegated to cocoa. Returns the current (cocoa) scheme.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><br></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*swing</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Makes Swing (Java GUI) the current scheme and returns it. Subsequent GUI object calls to GUI are delegated to swing. Returns the current (swing) scheme.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*fromID (id)</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Changes the current scheme and returns the new scheme.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>id </b>- (Symbol) the identifier of the scheme touse</p>
-<p class="p17"><br></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*current</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the current scheme. This is useful for objects that, upon instantiation, wish to store the then-current scheme, so as to be able to consistently use the same scheme in future method calls.</span></p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Note: the caller shouldn't make any assumptions about the nature (the class) of the returned object, so that the actual implementation (an Event) may change in the future.</span></p>
-<p class="p17"><br></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*get (id)</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the scheme for a given identifier. Does not switch the current scheme.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>id </b>- (Symbol) the identifier of the scheme to retrieve, such as returned by calling aScheme.id</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*set (aScheme)</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Changes the current scheme.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aScheme </b>- An instance of Symbol. The scheme to use as current scheme</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*use (aScheme, func)</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Executes a function body, temporarily setting the current GUI scheme. This is usefull inside view's action functions in order to make this function use the GUI scheme that was originally used for the view of the action, even if the scheme has been switched meanwhile.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aScheme </b>- The scheme to use during the function execution.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>func </b>- An Instance of Function.</p>
-<p class="p17"><br></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*useID (id, func)</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Same as 'use' but using a scheme's id as first argument.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>id </b>- The id of the scheme to use during the function execution.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>func </b>- A body to execute.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*add (aScheme)</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Registers a new scheme. This is typically called by external libraries in their startup procedure. If a scheme with the same identifier (scheme.id) exists, it is overwritten.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>aScheme </b>- The scheme to add.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*doesNotUnderstand (selector, args)</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>All method calls are mapped to the current scheme, so that for example GUI.button can be used and is delegated to the button association of the current scheme.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*setSkin (skinName)</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p19"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*scheme</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Returns the current scheme.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*schemes</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Returns an <a href="../../Collections/IdentityDictionary.html"><span class="s16">IdentityDictionary</span></a> of registered schemes.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*skin</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Returns the current skin.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b><span class="Apple-tab-span">	</span>*skins</b></p>
-<p class="p19"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A class variable. Returns an <a href="../../Collections/IdentityDictionary.html"><span class="s16">IdentityDictionary</span></a> of registered skins.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/Gradient.html b/Help/GUI/GUI-Tools/Gradient.html
deleted file mode 100644
index c0c5c88..0000000
--- a/Help/GUI/GUI-Tools/Gradient.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0011ed}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #aa190e}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bb0e03}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0043df}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001fb8}
-span.s6 {color: #316f16}
-span.s7 {color: #000ebe}
-span.s8 {color: #167209}
-span.s9 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Gradient<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a linear color fade between two colors</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>See also:</b> <a href="Color.html"><span class="s4">Color</span></a>, <a href="HiliteGradient.html"><span class="s4">HiliteGradient</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (color1, color2, direction, steps)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color1 </b>- An instance of Color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color2 </b>- An instance of Color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>direction </b>- \h or \v for horizontal and vertical respectively. Default value is \h.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>steps </b>- The resolution of the gradient. Default value is 64.</p>
-<p class="p9"><b></b><br></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>at(pos)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Retrieve the colour at position <b>pos</b>, typically a value between zero and one.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>at(0) is color1, and at(1) is color2.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p11"><br></p>
-<p class="p12">// basic usage</p>
-<p class="p13">(</p>
-<p class="p13">w = <span class="s5">Window</span>.new.front;</p>
-<p class="p13">w.view.background = <span class="s5">Gradient</span>(<span class="s5">Color</span>.yellow,<span class="s5">Color</span>.white);</p>
-<p class="p13">)</p>
-<p class="p11"><br></p>
-<p class="p12">// change direction and resolution</p>
-<p class="p13">(</p>
-<p class="p13">w = <span class="s5">Window</span>.new.front;</p>
-<p class="p13">w.view.background = <span class="s5">Gradient</span>(<span class="s5">Color</span>.red,<span class="s5">Color</span>.white,<span class="s6">\v</span>, 5);</p>
-<p class="p13">)</p>
-<p class="p11"><br></p>
-<p class="p14">// almost unnoticeable variations can be pleasant</p>
-<p class="p13">(</p>
-<p class="p13">w = <span class="s7">Window</span>.new.front;</p>
-<p class="p13">v = <span class="s7">CompositeView</span>(w, <span class="s7">Rect</span>(50,50,300,300));</p>
-<p class="p13">c = <span class="s7">Color</span>.rand;</p>
-<p class="p13">d = c.vary(0.15);</p>
-<p class="p13">v.background = <span class="s7">Gradient</span>(c, d, <span class="s8">\v</span>);</p>
-<p class="p13">[c, d].postln</p>
-<p class="p13">)</p>
-<p class="p11"><br></p>
-<p class="p13">(</p>
-<p class="p13"><span class="s7">var</span> w, k, c, d, e, c1, c2, f, g;</p>
-<p class="p13">w = <span class="s7">Window</span>.new.front;</p>
-<p class="p13">k = <span class="s7">Slider2D</span>(w, <span class="s7">Rect</span>(50,50,300,300));</p>
-<p class="p13">f = {</p>
-<p class="p13"><span class="Apple-tab-span">	</span>c = <span class="s7">Color</span>.rand;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>d = c.vary(0.5);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>e = d.vary(0.5);</p>
-<p class="p13">};</p>
-<p class="p13">g = {<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>c1 = d.hueBlend(e, k.y).round(0.01);<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>c2 = c.hueBlend(e, k.x).round(0.01);<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>k.background = <span class="s7">Gradient</span>(c1, c2, <span class="s8">\v</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p13">};</p>
-<p class="p13">f.value; g.value;</p>
-<p class="p13">k.action = g;</p>
-<p class="p13">k.mouseUpAction = { [c1, c2].postln };</p>
-<p class="p14"><span class="s3">k.keyDownAction = f; // hit any key for new color</p>
-<p class="p13">)</p>
-<p class="p11"><br></p>
-<p class="p15">// an example using gradient indirectly to update window colour</p>
-<p class="p13">(</p>
-<p class="p13">w=<span class="s9">Window</span>.new.front;</p>
-<p class="p13">g = <span class="s9">Gradient</span>(<span class="s9">Color</span>.red,<span class="s9">Color</span>.green);</p>
-<p class="p16">Task{</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>(0, 0.01 .. 1).do{<span class="s9">|pos|</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background = g.at(pos);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01.wait;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>};</p>
-<p class="p13">}.play(<span class="s9">AppClock</span>)</p>
-<p class="p13">)</p>
-<p class="p11"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/HiliteGradient.html b/Help/GUI/GUI-Tools/HiliteGradient.html
deleted file mode 100644
index 98e18f6..0000000
--- a/Help/GUI/GUI-Tools/HiliteGradient.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1141e0}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001bb9}
-span.s6 {color: #2c7014}
-span.s7 {color: #0000bf}
-span.s8 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>HiliteGradient<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a linear color fade between an outside and an inside color</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>See also:</b> <a href="Color.html"><span class="s4">Color</span></a>, <a href="Gradient.html"><span class="s4">Gradient</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (color1, color2, direction, steps)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color1 </b>- An instance of Color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>color2 </b>- An instance of Color.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>direction </b>- \h or \v for horizontal and vertical respectively. Default value is \v.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>steps </b>- The resolution of the gradient. Default value is 64.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>frac </b>- The center of the gradient. Default value is 0.33, i.e. off center toward the top on a vertical gradient.</p>
-<p class="p5"><br></p>
-<p class="p9"><b>Examples</b></p>
-<p class="p10"><br></p>
-<p class="p11">// basic usage</p>
-<p class="p12">(</p>
-<p class="p12">w=<span class="s5">Window</span>.new.front;</p>
-<p class="p12">v=<span class="s5">CompositeView</span>(w, <span class="s5">Rect</span>(50,50,200,50));</p>
-<p class="p12">v.background=<span class="s5">HiliteGradient</span>(<span class="s5">Color</span>.gray,<span class="s5">Color</span>.white);</p>
-<p class="p12">)</p>
-<p class="p10"><br></p>
-<p class="p11">// change direction and resolution</p>
-<p class="p12">(</p>
-<p class="p12">w=<span class="s5">Window</span>.new.front;</p>
-<p class="p12">w.view.background=<span class="s5">HiliteGradient</span>(<span class="s5">Color</span>.red,<span class="s5">Color</span>.white,<span class="s6">\h</span>, 12, 0.5);</p>
-<p class="p12">)</p>
-<p class="p10"><br></p>
-<p class="p13">// almost unnoticeable variations can be pleasant</p>
-<p class="p12">(</p>
-<p class="p12">w = <span class="s7">Window</span>.new.front;</p>
-<p class="p12">v = <span class="s7">CompositeView</span>(w, <span class="s7">Rect</span>(50,50,300,300));</p>
-<p class="p12">c = <span class="s7">Color</span>.rand;</p>
-<p class="p12">d = c.vary(0.15);</p>
-<p class="p12">v.background = <span class="s5">HiliteGradient</span>(c, d, <span class="s8">\v</span>);</p>
-<p class="p12">[c, d].postln</p>
-<p class="p12">)</p>
-<p class="p10"><br></p>
-<p class="p12">(</p>
-<p class="p12"><span class="s7">var</span> w, k, c, d, e, c1, c2, f, g;</p>
-<p class="p12">w = <span class="s7">Window</span>.new.front;</p>
-<p class="p12">k = <span class="s7">Slider2D</span>(w, <span class="s7">Rect</span>(50,50,300,300));</p>
-<p class="p12">f = {</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c = <span class="s7">Color</span>.rand;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>d = c.vary(0.5);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>e = d.vary(0.5);</p>
-<p class="p12">};</p>
-<p class="p12">g = {<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>c1 = d.hueBlend(e, k.y).round(0.01);<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>c2 = c.hueBlend(e, k.x).round(0.01);<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>k.background = <span class="s5">HiliteGradient</span>(c1, c2, <span class="s8">\v</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p12">};</p>
-<p class="p12">f.value; g.value;</p>
-<p class="p12">k.action = g;</p>
-<p class="p12">k.mouseUpAction = { [c1, c2].postln };</p>
-<p class="p13"><span class="s3">k.keyDownAction = f; </span>// hit any key for new color</p>
-<p class="p12">)</p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/Plotter.html b/Help/GUI/GUI-Tools/Plotter.html
deleted file mode 100644
index 29ba907..0000000
--- a/Help/GUI/GUI-Tools/Plotter.html
+++ /dev/null
@@ -1,405 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd1612}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #737373}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #00831b}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0b28c6}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #1135f9}
-span.s4 {font: 9.0px Monaco}
-span.s5 {color: #0b28c5}
-span.s6 {color: #737373}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {color: #000000}
-span.s9 {color: #0b28c6}
-span.s10 {font: 12.0px Helvetica}
-span.s11 {color: #3300d3}
-span.s12 {color: #00831b}
-span.s13 {color: #cd1612}
-span.s14 {color: #00831c}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Plotter<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>plot numerical data on a window or view</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">Plot data of up to three dimensions on a <a href="../Main-GUI/Window.html"><span class="s3">Window</span></a> or <a href="../Main-GUI/UserView.html"><span class="s3">UserView</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> plot.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new(name, bounds, parent)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>name</b> - Plot window title.</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>parent</b> - Either a <a href="../Main-GUI/Window.html"><span class="s3">Window</span></a>/<a href="../Main-GUI/View.html"><span class="s3">View</span></a> may be passed in - then the plot is embedded. Otherwise a new Window is created.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - the window bounds (a <a href="../../Geometry/Rect.html"><span class="s3">Rect</span></a>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Plotter</span>(<span class="s6">"the plot"</span>, <span class="s5">Rect</span>(600, 30, 800, 250));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = (0..1000).normalize(0, 14pi).curdle(0.01).scramble.flat.sin;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b>something.<b>plot2(args)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="s7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span>// plot array</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 6, 2, -5, 2].plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(0..100).normalize(0, 8pi).sin.plot2;</p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// nested arrays</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ (0..100).normalize(0, 15.0.rand).sin }.dup(3).plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ { (0..17).normalize(0, 15.0.rand).sin }.dup(4) }.dup(3).plot2;</p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// UGen functions</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s9">SinOsc</span>.ar([700, 357]) * <span class="s9">SinOsc</span>.ar([400, 476]) * 0.2 }.plot2;</p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Buffer</p>
-<p class="p11"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s9">Buffer</span><span class="s8">.read(s, </span>"sounds/SinedPink.aiff"<span class="s8">).plot2;</span></p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Env</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">Env</span>.perc(0.4, 0.6).plot2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>something.<b>plotGraph2(n,from,to,...)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="s10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span>{ <span class="s11">|x|</span> sin(x) }.plotGraph2(300,0,2*pi);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s11">|x|</span> sin(1/x)*x }.plotGraph2(from:0.0001,to:0.2);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p12"><b>Keyboard shortcuts</b></p>
-<p class="p13"><br></p>
-<p class="p6">When the plotter window has focus, the following keyboard shortcuts can be used to change the display:</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ / -<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>vertical zoom</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>=<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>compare plot channels</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toggle normalize display (0..1) / (-1..1), or fit range</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toggle superposition<span class="Apple-converted-space">  </span></b>(see: superpose)</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>switch plot mode </b>(see: plotMode)</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toggle editing </b>(see: editMode)</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toggle horizontal (domain) grid</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>G <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toggle vertical (codomain) grid</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ctrl-+ / -<span class="Apple-tab-span">	</span>zoom font</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>alt-click<span class="Apple-tab-span">	</span>post value</b></p>
-<p class="p7"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><br></p>
-<p class="p12"><b>Accessing Instance and Class Variables</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>makeWindow(parent, bounds)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Open given plotter in a new window or within a given composite view.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent</b> - Either a <a href="../Main-GUI/Window.html"><span class="s3">Window</span></a>/<a href="../Main-GUI/View.html"><span class="s3">View</span></a> may be passed in - then the plot is embedded. Otherwise a new Window is created.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - the window bounds (a <a href="../../Geometry/Rect.html"><span class="s3">Rect</span></a>).</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>plotMode_(symbol)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>plotMode</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the style of data display.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Available modes:<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\linear</b><span class="Apple-tab-span">	</span>connecting data points with linear interpolation</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\points</b><span class="Apple-tab-span">	</span>draw data points only</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\plines</b><span class="Apple-tab-span">	</span>combination of lines and points</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\levels</b><span class="Apple-tab-span">	</span>horizontal lines</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\steps</b><span class="Apple-tab-span">	</span>connecting data points with step interpolation</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = (0..20).scramble.plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.plotMode = <span class="s12">\points</span>; a.refresh;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.plotMode = <span class="s12">\plines</span>; a.refresh;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.plotMode = <span class="s12">\levels</span>; a.refresh;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.plotMode = <span class="s12">\steps</span>; a.refresh;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.plotMode = <span class="s12">\linear</span>; a.refresh;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><b>setProperties(...pairs)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set properties of all plot views. Defaults are taken from GUI.skin.at(\plot);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Supported properties:<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>font, fontColor, gridColorX, gridColorY, plotColor (an array), backgroundColor,</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gridLinePattern, gridLineSmoothing (bool), labelX, labelY, gridOnX (bool), gridOnY (bool)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">(</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = { (0..30).scramble }.dup(2).plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.setProperties(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s12">\fontColor</span>, <span class="s9">Color</span>.red,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s12">\plotColor</span>, <span class="s9">Color</span>.blue,<span class="Apple-converted-space"> </span></p>
-<p class="p14"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\backgroundColor<span class="s8">, </span><span class="s9">Color</span><span class="s8">.black,</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s12">\gridColorX</span>, <span class="s9">Color</span>.white,</p>
-<p class="p11"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s12">\labelX</span><span class="s8">, </span>"Humidity"</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.refresh;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">GUI</span>.skin.at(<span class="s12">\plot</span>); <span class="s13">// defaults</span></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>editMode_(boolean)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>editMode</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the edit mode is set to true, the data may be edited via cursor.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = (0..20).plot2;</p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.editMode = </span><span class="s9">true</span><span class="s8">; </span>// now edit the data by clicking into the plot..</p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value; </span>// the value</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>resolution_(val)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>resolution</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the number of data points displayed maximally per pixel (default: 1)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = (0..200).scramble.plot2;</p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.resolution = 8; a.refresh; </span>// resizing the window shows interpolation</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.resolution = 1; a.refresh;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>findSpecs_(boolean)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>findSpecs</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If true (default: true), specs are derived from new data (using min and max values) automatically.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>superpose_(boolean)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>superpose</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If set to true, plotter displays channels on top of each other (keyboard shortcut: s)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = { (0..30).scramble }.dup(2).plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.superpose = <span class="s9">true</span>; a.refresh;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>value_(array)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return or set the data values. Data may be numerical arrays of up to 3 dimensions.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = [1, 4, 2, 7, 4].dup(2).plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>data</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Reference to the current internal data.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>cursorPos</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the last cursorPos (a <a href="../../Geometry/Point.html"><span class="s3">Point</span></a>)</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>plots</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the single subplots (a Plot).</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>specs</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>specs_(list)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or get the spec for the y-axis (codomain).</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">(</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = { (40..3000).scramble }.dup(2).plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.specs = \freq.asSpec; a.refresh;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>domainSpecs</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>domainSpecs_(list)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or get the spec for the x-axis (domain).</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = { (40..300).scramble }.dup(2).plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.domainSpecs = <span class="s12">\freq</span>.asSpec; a.refresh;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>editFunc</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>editFunc_(func)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Supply a function which is evaluated when editing data. The function is called with the arguments: plotter, plotIndex, index, val, x, y</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">(</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = { (0..10).scramble.normalize }.dup(2).plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.editMode = <span class="s9">true</span>;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.editFunc = { <span class="s9">|...args|</span> args.postln };</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// using plotter as a control interface</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = (0..10).scramble.normalize(300, 400).plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.specs = <span class="s12">\freq</span>; a.plotMode = <span class="s12">\points</span>;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.editMode = <span class="s9">true</span>;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s9">SinOsc</span>.ar(<span class="s12">\freq</span>.kr(a.value)).mean * 0.1 }.play;</p>
-<p class="p15"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.editFunc = { </span>|plotter, plotIndex, i, val|</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.setn(<span class="s12">\freq</span>, a.value)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.parent.onClose = { x.release };</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = { (0..10).scramble.normalize(300, 400) }.dup.plot2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.specs = <span class="s14">\freq</span>; a.plotMode = <span class="s14">\levels</span>;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.editMode = <span class="s9">true</span>;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var phase = <span class="s9">SinOsc</span>.ar(<span class="s14">\rate</span>.kr(a.value[1]));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">SinOsc</span>.ar(<span class="s14">\freq</span>.kr(a.value[0]), phase).mean * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p15"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.editFunc = { </span>|plotter, plotIndex, i, val|</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.setn(<span class="s14">\freq</span>, a.value[0]);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.setn(<span class="s14">\rate</span>, a.value[1]);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.parent.onClose = { x.release };</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Changing global defaults</b></p>
-<p class="p13"><br></p>
-<p class="p6">The default styles are kept (and may be overridden) in GUI.skin.at(\plot). See also <a href="GUI.html"><span class="s3">GUI</span></a> help.<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// specify plot layout</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skin.plot.gridLinePattern = <span class="s5">FloatArray</span>[1, 0];</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skin.plot.fontColor = <span class="s5">Color</span>(0.5, 1, 0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skin.plot.gridColorX = <span class="s5">Color</span>.yellow(0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skin.plot.gridColorY = <span class="s5">Color</span>.yellow(0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skin.plot.background = <span class="s5">Color</span>.black;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skin.plot.plotColor = (10..0).normalize(0.1, 1).collect { <span class="s5">|i|</span> <span class="s5">Color</span>.rand(i) };</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skin.plot.labelX = <span class="s6">"X"</span>;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">GUI</span>.skin.plot.labelY = <span class="s6">"Y"</span>;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s5">|i|</span> (0..60).scramble.clump(8) * (3.5 ** i) }.dup(3);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.plot2(<span class="s6">"ARRAY:PLOT"</span>, <span class="s5">Rect</span>(200, 300, 600, 500));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>GUI</span>.skin.plot.put(<span class="s14">\plotColor</span>, { <span class="s5">Color</span>.rand(0.0, 0.8) } ! 8);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[(0..100), (20..120), (40..140)].squared.flop.bubble.plot2;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p16"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reset the defaults:</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">Plot</span>.initClass;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p12"><b>More examples</b></p>
-<p class="p3"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9">// embedding in another GUI</p>
-<p class="p8">(</p>
-<p class="p8">w = <span class="s5">Window</span>(<span class="s6">"plot panel"</span>, <span class="s5">Rect</span>(20, 30, 520, 250));</p>
-<p class="p8"><span class="s5">Slider</span>.new(w, <span class="s5">Rect</span>(10, 10, 490, 20)).resize_(2).action_ { <span class="s5">|v|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.value = (0..(v.value * 80).asInteger).scramble;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p8">};</p>
-<p class="p8">z = <span class="s5">CompositeView</span>(w, <span class="s5">Rect</span>(10, 35, 490, 200)).background_(<span class="s5">Color</span>.rand(0.7)).resize_(5);</p>
-<p class="p8">a = <span class="s5">Plotter</span>(<span class="s6">"plot"</span>, parent: z).value_([0, 1, 2, 3, 4].scramble * 100);<span class="Apple-converted-space"> </span></p>
-<p class="p8">w.front;</p>
-<p class="p8">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p8">(</p>
-<p class="p8">a = <span class="s5">Plotter</span>(<span class="s6">"the plot"</span>, <span class="s5">Rect</span>(600, 30, 600, 400));</p>
-<p class="p8">a.value = (0..100).normalize(0, 8pi).sin;</p>
-<p class="p8">)</p>
-<p class="p3"><br></p>
-<p class="p8">a.value = { <span class="s5">|i|</span> (0..90) % (i + 12) + ( (0..90) % (i + 2 * 1) ) }.dup(3);</p>
-<p class="p8">a.value = (0..12).squared;</p>
-<p class="p8">a.plotMode = <span class="s14">\points</span>; a.refresh;</p>
-<p class="p8">a.plotMode = <span class="s14">\levels</span>; a.refresh;</p>
-<p class="p8">a.plotMode = <span class="s14">\plines</span>; a.refresh;</p>
-<p class="p3"><br></p>
-<p class="p8">a.domainSpecs = [[0, 115, <span class="s14">\lin</span>, 1]]; a.refresh;</p>
-<p class="p3"><br></p>
-<p class="p8">a.parent.close; <span class="s13">// close window</span></p>
-<p class="p16"><span class="s8">a.makeWindow;<span class="Apple-tab-span">	</span></span>// open it again</p>
-<p class="p3"><br></p>
-<p class="p8">a.value = { (0..70).scramble }.dup(3);</p>
-<p class="p8">a.plotMode = <span class="s14">\linear</span>; a.refresh;</p>
-<p class="p8">a.value = { <span class="s5">|i|</span> (0..2000).normalize(0, 4pi + i).sin } ! 4; <span class="s13">// lots of values, test efficiency</span></p>
-<p class="p8">a.value = { <span class="s5">|i|</span> (0..10000).normalize(0, 8pi + i).sin } ! 3; <span class="s13">// lots of values, test efficiency</span></p>
-<p class="p8">a.value = { (0..140).scramble } ! 7;</p>
-<p class="p3"><br></p>
-<p class="p8">a.value = { <span class="s5">|i|</span> (0..90).normalize(0, 8pi + (i*2pi)).sin } ! 2 * [400, 560] + 700;</p>
-<p class="p8">a.value = { <span class="s5">|i|</span> (<span class="s5">_</span> + 2.0.rand).dup(100).normalize(0, 8pi + i).sin } ! 2 * 400 + 700;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p16">// multi channel expansion of single values</p>
-<p class="p8">a.value = { <span class="s5">|i|</span> (<span class="s5">_</span> + 2.0.rand).dup(100).normalize(0, 8pi + i).sin *.t [1, 2, 3] } ! 2 * 400 + 700;</p>
-<p class="p8">a.value = { <span class="s5">|i|</span> (0..10) **.t [1, 1.2, 1.3, 1.5] * (3.5 ** i) }.dup(3);</p>
-<p class="p3"><br></p>
-<p class="p8">a.parent.bounds = <span class="s5">Rect</span>(400, 100, 500, 700);</p>
-<p class="p8">a.parent.bounds = <span class="s5">Rect</span>(600, 30, 500, 300);</p>
-<p class="p3"><br></p>
-<p class="p8">a.superpose = <span class="s5">true</span>;</p>
-<p class="p8">a.value = { <span class="s5">|i|</span> (0..20) * (3.5 ** i) }.dup(5);</p>
-<p class="p8">a.superpose = <span class="s5">false</span>;</p>
-<p class="p3"><br></p>
-<p class="p16">// specs</p>
-<p class="p3"><br></p>
-<p class="p8">a.value = (50..90).midicps.scramble;</p>
-<p class="p8">a.specs = <span class="s14">\freq</span>; a.refresh;</p>
-<p class="p8">a.value = (1..60).scramble.neg;</p>
-<p class="p8">a.specs = <span class="s14">\db</span>; a.refresh;</p>
-<p class="p3"><br></p>
-<p class="p8">a.value = { <span class="s5">|i|</span> { exprand(1e3, (10 ** (i + 8))) }.dup(90) }.dup(3);</p>
-<p class="p8">a.value = { { exprand(1e3, 1e9) }.dup(90) }.dup(3);</p>
-<p class="p8">a.specs = [[1e3, 1e10, <span class="s14">\exp</span>], [1e3, 1e20, <span class="s14">\exp</span>], [1e3, 1e30, <span class="s14">\exp</span>]]; a.refresh;</p>
-<p class="p8">a.domainSpecs = [[0, 5], [-8, 100], [-1, 1]]; a.refresh;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p16">// Array:plot</p>
-<p class="p8">(</p>
-<p class="p8">a = (4 ** (-5..0)).postln.plot2;</p>
-<p class="p8">a.specs = <span class="s14">\delay</span>; a.refresh;</p>
-<p class="p8">a.domainSpecs = [0, 10, <span class="s14">\lin</span>, 0, 0, <span class="s6">" Kg"</span>].asSpec; a.refresh;</p>
-<p class="p8">);</p>
-<p class="p3"><br></p>
-<p class="p8">a.domainSpecs = [0.1, 10, <span class="s14">\exponential</span>, 0, 0, <span class="s6">" Kg"</span>].asSpec; a.refresh;</p>
-<p class="p8">a.domainSpecs = [-10, 10, <span class="s14">\lin</span>, 0, 0, <span class="s6">" Kg"</span>].asSpec; a.refresh;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p8">a = [(0..100) * 9, (200..1300) * 2, (200..1000)/ 5].plot2;</p>
-<p class="p8">a.superpose = <span class="s5">true</span>;</p>
-<p class="p3"><br></p>
-<p class="p8">a = [[0, 1.2, 1.5], [0, 1.3, 1.5, 1.6], [0, 1.5, 1.8, 2, 6]].midiratio.plot2;</p>
-<p class="p8">a.plotMode = <span class="s14">\levels</span>; a.refresh;</p>
-<p class="p8">a.superpose = <span class="s5">false</span>;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p16">// Function:plot</p>
-<p class="p8">a = { <span class="s5">SinOsc</span>.ar([700, 357]) * <span class="s5">SinOsc</span>.ar([400, 476]) * 0.2 }.plot2;</p>
-<p class="p8">a = { <span class="s5">SinOsc</span>.ar([700, 357] *0.02) * <span class="s5">SinOsc</span>.ar([400, 476]) * 0.3 }.plot2(0.2, minval: -1);</p>
-<p class="p8">a = { <span class="s5">SinOsc</span>.ar(440) }.plot2(1);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p16">// Env:plot</p>
-<p class="p8"><span class="s5">Env</span>.perc(0.4, 0.6).plot2;</p>
-<p class="p8"><span class="s5">Env</span>.new({ 1.0.rand2 }! 8, { 1.0.rand } ! 7, <span class="s14">\sin</span>).plot2;</p>
-<p class="p3"><br></p>
-<p class="p16">// Buffer:plot</p>
-<p class="p17"><span class="s8">b = </span><span class="s5">Buffer</span><span class="s8">.read(s, </span>"sounds/SinedPink.aiff"<span class="s8">);</span></p>
-<p class="p16"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// "sounds/SinedPink.aiff" contains SinOsc on left, PinkNoise on right</p>
-<p class="p8">b.plot2;</p>
-<p class="p8">b.free;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/Regenerate-GUI-Help.html b/Help/GUI/GUI-Tools/Regenerate-GUI-Help.html
deleted file mode 100644
index fc22564..0000000
--- a/Help/GUI/GUI-Tools/Regenerate-GUI-Help.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Regenerate GUI Help</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3">To regenerate the main GUI-Help file to include your platform specific links and kits, execute the following code.<span class="Apple-converted-space">  </span>Your kit must be registered with GUI in order to be listed in the redirect stubs. See <a href="GUI.html"><span class="s1">GUI</span></a> on how to do this.</p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">Helper</span><span class="s2">.updateRedirectStubs; </span>// this may take a moment to complete</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/SCFont.html b/Help/GUI/GUI-Tools/SCFont.html
deleted file mode 100644
index 419eaec..0000000
--- a/Help/GUI/GUI-Tools/SCFont.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #606060}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Arial; color: #606060}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #606060}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Marker Felt; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2040df}
-span.s3 {color: #2b3d9c}
-span.s4 {color: #2946d8}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.s7 {color: #000000}
-span.s8 {color: #606060}
-span.s9 {font: 9.0px Monaco}
-span.s10 {font: 9.0px Monaco; color: #000000}
-span.s11 {font: 9.0px Marker Felt}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SCFont<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a font object</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This is the object you pass to other gui objects to set their font name or size.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (name, size)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- An instance of String. Must coincide with the name of a font on the system. See *<b>availableFonts</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>size </b>- An Instance of Float.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s3">Font</span>.new("Helvetica", 12);</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*availableFonts</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an array of the available fonts.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*antiAliasing_ (flag)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>flag </b>- An instance of <a href="../../Core/Boolean.html"><span class="s4">Boolean</span></a>. Default value is false.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*smoothing_ (flag)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>flag </b>- An instance of <a href="../../Core/Boolean.html"><span class="s4">Boolean</span></a>. Default value is false.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*defaultSansFace</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the default sans face Font.</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*defaultSerifFace</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the default serif face Font.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*defaultMonoFace</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the default mono face Font.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p10"><b>Accessing Instance and Class Variables</b></p>
-<p class="p11"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*default</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Class Variable. Gets/sets the default Font.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>name_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>name</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets the name of a font.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 - </b>An instance of <a href="../../Collections/String.html"><span class="s4">String</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>size_(arg1)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>size</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Gets/sets the size of a font.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>arg1 - </b>An instance of <a href="../../Math/Float.html"><span class="s4">Float</span></a>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setDefault</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Makes the current instance of Font the <b>default</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>storeArgs</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns an Array, [ name, size ].</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>boldVariant</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Appendes "-Bold" to the name. This is only useful for fonts that have bold variants.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p12"><br></p>
-<p class="p13">(</p>
-<p class="p13">w=<span class="s5">SCWindow</span>.new.front;</p>
-<p class="p13">t=<span class="s5">SCStaticText</span>(w, w.view.bounds).align_(<span class="s6">\center</span>);</p>
-<p class="p14"><span class="s7">t.string=</span>" SUPERCOLLIDER"<span class="s7">;</span></p>
-<p class="p13">)</p>
-<p class="p13">t.font=<span class="s5">Font</span>(<span class="s8">"Monaco"</span>, 24);</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p13">(</p>
-<p class="p13"><span class="s5">var</span> updateFont;</p>
-<p class="p13">w=<span class="s5">SCWindow</span>(<span class="s8">"Fonts"</span>, <span class="s5">Rect</span>(150,<span class="s5">SCWindow</span>.screenBounds.height-500, 400,400)).front;</p>
-<p class="p15">w.view.decorator = <span class="s5">FlowLayout</span>( w.view.bounds);</p>
-<p class="p13"><span class="s5">SCStaticText</span>.new(w, <span class="s5">Rect</span>(5,0,30,20)).string_(<span class="s8">"Font"</span>).align_(<span class="s6">\rght</span>);</p>
-<p class="p13">m=<span class="s5">SCPopUpMenu</span>(w, <span class="s5">Rect</span>(40,0,250,20));</p>
-<p class="p13">m.items = <span class="s5">Font</span>.availableFonts;</p>
-<p class="p12"><br></p>
-<p class="p13"><span class="s5">SCStaticText</span>.new(w, <span class="s5">Rect</span>(290,0,28,20)).string_(<span class="s8">"Size"</span>).align_(<span class="s6">\right</span>);</p>
-<p class="p13">y=<span class="s5">SCPopUpMenu</span>(w, <span class="s5">Rect</span>(322,0,50,20));</p>
-<p class="p14"><span class="s7">y.items = [</span>"6"<span class="s7">,</span>"7"<span class="s7">,</span>"8"<span class="s7">,</span>"9"<span class="s7">,</span>"10"<span class="s7">,</span>"12"<span class="s7">,</span>"13"<span class="s7">,</span>"14"<span class="s7">,</span>"18"<span class="s7">,</span>"24"<span class="s7">,</span>"36"<span class="s7">,</span>"48"<span class="s7">,</span>"60"<span class="s7">,</span>"72"<span class="s7">,</span>"96"<span class="s7">];</span></p>
-<p class="p12"><br></p>
-<p class="p13">t=<span class="s5">SCTextView</span>(w, <span class="s5">Rect</span>(10,40,380,150));</p>
-<p class="p14"><span class="s7">t.string=</span>"\nThe quick drowned fox jumped over the lazy blog. \n\n 0 1 2 3 4 5 6 7 8 9 "<span class="s7">;</span></p>
-<p class="p12"><br></p>
-<p class="p13">a=<span class="s5">SCStaticText</span>(w, 200 at 20).string_(<span class="s8">"The quick drowned fox"</span>).background_(<span class="s5">Color</span>.rand).align_(<span class="s6">\center</span>);</p>
-<p class="p13">b=<span class="s5">SCButton</span>(w, 200 at 20).states_([[<span class="s8">"The quick drowned fox"</span>]]).background_(<span class="s5">Color</span>.rand);</p>
-<p class="p13">c=<span class="s5">SCPopUpMenu</span>(w, 200 at 20).items_([<span class="s8">"The quick drowned fox"</span>]).background_(<span class="s5">Color</span>.rand);</p>
-<p class="p12"><br></p>
-<p class="p13">y.action={</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s5">var</span> font;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>font= <span class="s5">Font</span>(m.items[m.value],y.items[y.value].asInteger);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>a.font_(font).refresh;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>b.font_(font).refresh;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>c.font_(font).refresh;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>t.font_(font).refresh;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>};</p>
-<p class="p12"><br></p>
-<p class="p13">m.action=y.action;</p>
-<p class="p12"><br></p>
-<p class="p13">m.valueAction=3;</p>
-<p class="p13">y.valueAction=5;</p>
-<p class="p12"><br></p>
-<p class="p13">)</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p13">(</p>
-<p class="p13"><span class="s5">var</span> w,f;</p>
-<p class="p12"><br></p>
-<p class="p13">w = <span class="s5">SCWindow</span>(<span class="s8">"Fonts"</span>, <span class="s5">Rect</span>(128, 64, 340, 360));</p>
-<p class="p13">w.view.decorator = f = <span class="s5">FlowLayout</span>(w.view.bounds,<span class="s5">Point</span>(4,4),<span class="s5">Point</span>(4,2));</p>
-<p class="p12"><br></p>
-<p class="p16">[</p>
-<p class="p17"><span class="s9">"</span><b>Helvetica-Bold</b><span class="s9">"</span><span class="s10">,</span></p>
-<p class="p17"><span class="s9">"</span>Helvetica<span class="s9">"</span><span class="s10">,</span></p>
-<p class="p14">"Monaco"<span class="s7">,</span></p>
-<p class="p18"><span class="s9">"</span>Arial<span class="s9">"</span><span class="s10">,</span></p>
-<p class="p19"><span class="s9">"</span>Gadget<span class="s9">"</span><span class="s10">,</span></p>
-<p class="p20"><span class="s9">"</span>MarkerFelt-Thin<span class="s11">"</span></p>
-<p class="p12"><br></p>
-<p class="p13">].do({ <span class="s5">arg</span> name;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s5">var</span> v, s, n, spec, p, height = 16;</p>
-<p class="p12"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s5">SCStaticText</span>(w, <span class="s5">Rect</span>(0, 0, 56, height+2));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.font = <span class="s5">Font</span>(name, 13);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.string = name;</p>
-<p class="p12"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s = <span class="s5">SCButton</span>(w, <span class="s5">Rect</span>(0, 0, 140, height+2));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.font = <span class="s5">Font</span>(name, 13);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.states = [[name]];</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n = <span class="s5">SCNumberBox</span>(w, <span class="s5">Rect</span>(0, 0, 56, height+2));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.font = <span class="s5">Font</span>(name, 13);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.object = pi;</p>
-<p class="p12"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>f.nextLine;</p>
-<p class="p13">});</p>
-<p class="p12"><br></p>
-<p class="p13">w.front;</p>
-<p class="p12"><br></p>
-<p class="p13">)</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p13">(</p>
-<p class="p13"><span class="s5">var</span> w,f,i=0;</p>
-<p class="p12"><br></p>
-<p class="p13">w = <span class="s5">SCWindow</span>(<span class="s8">"Fonts"</span>, <span class="s5">Rect</span>(128, 64, 820, 760));</p>
-<p class="p13">b = <span class="s5">SCScrollView</span>(w, w.view.bounds);</p>
-<p class="p12"><br></p>
-<p class="p13">b.decorator = f = <span class="s5">FlowLayout</span>(b.bounds,<span class="s5">Point</span>(4,4),<span class="s5">Point</span>(4,2));</p>
-<p class="p12"><br></p>
-<p class="p13"><span class="s5">Font</span>.availableFonts.do({ <span class="s5">arg</span> name;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s5">var</span> v, s, n, spec, p, height = 16,font;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>font = <span class="s5">Font</span>(name,13);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s5">SCStaticText</span>(b, <span class="s5">Rect</span>(0, 0, 56, height+2));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.font = font;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.string = name;</p>
-<p class="p12"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s = <span class="s5">SCButton</span>(b, <span class="s5">Rect</span>(0, 0, 140, height+2));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.font = font;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.states = [[name]];</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.action = { font.asCompileString.postln; };</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n = <span class="s5">SCNumberBox</span>(b, <span class="s5">Rect</span>(0, 0, 56, height+2));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.font = font;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.object = pi;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>if( (i = i + 1) % 3 == 0,{</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.nextLine;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>});</p>
-<p class="p13">});</p>
-<p class="p12"><br></p>
-<p class="p13">w.front;</p>
-<p class="p12"><br></p>
-<p class="p13">)</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/ViewRedirect.html b/Help/GUI/GUI-Tools/ViewRedirect.html
deleted file mode 100644
index 69300cd..0000000
--- a/Help/GUI/GUI-Tools/ViewRedirect.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2f4fcf; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0c3ee4; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2345c7; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2f4fcf}
-span.s3 {text-decoration: underline ; color: #1940ce}
-span.s4 {color: #264ad6}
-span.s5 {text-decoration: underline ; color: #002cf4}
-span.s6 {text-decoration: underline ; color: #0b3ad5}
-span.s7 {color: #0c3ee4}
-span.s8 {color: #3753c9}
-span.s9 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ViewRedirect<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>an abstract super class for gui redirection classes</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1"><b>See also:</b> <a href="GUI.html"><span class="s3">GUI</span></a><span class="s4">, <a href="../GUI-Classes.html"><span class="s5">GUI-Classes</span></a></span>, <a href="../GUI-Overview.html"><span class="s6">GUI-Overview</span></a></p>
-<p class="p4"><br></p>
-<p class="p1"><b>For a current list of subclasses see</b> <a href="../GUI-Classes.html"><span class="s7">GUI-Classes</span></a></p>
-<p class="p5"><br></p>
-<p class="p1">You will never call this class directly, but will only call its subclasses.</p>
-<p class="p1">ViewRedirect is the abstract superclass of all gui redirect classes. These subclasses in turn use the <a href="GUI.html"><span class="s8">GUI</span></a>.myView mechanism to redirect to the currently active gui kit. ViewRedirect's subclasses provide a simple syntax for creating gui views and widgets, while transparently making the code work with different gui kits.</p>
-<p class="p2"><br></p>
-<p class="p1">Each subclass uses a *<b>key</b> class method to return a key appropriate to the desired GUI redirect method:</p>
-<p class="p2"><br></p>
-<p class="p6">MyGUIClass : ViewRedirect { *key { ^\myGUIClass }}</p>
-<p class="p7"><br></p>
-<p class="p8"><b>Accessing Instance and Class Variables</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*redirectQueries_(bool)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*redirectQueries</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bool</b> is a <a href="../../Core/Boolean.html"><span class="s9">Boolean</span></a> indicating whether or not openClassFile queries will redirect to the active implementation class (Cocoa or Swing). The default is false.</p>
-<p class="p2"><br></p>
-<p class="p11"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/modifiers.html b/Help/GUI/GUI-Tools/modifiers.html
deleted file mode 100644
index b6bb508..0000000
--- a/Help/GUI/GUI-Tools/modifiers.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Modifier Keys<span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p3">An integer bit field indicating the modifier keys in effect. You can examine individual flag settings using the C bitwise AND operator.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>65536 NSAlphaShiftKeyMask</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set if Caps Lock key is pressed.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>131072 NSShiftKeyMask</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set if Shift key is pressed.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>262144 NSControlKeyMask</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set if Control key is pressed.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>524288 NSAlternateKeyMask</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set if Option or Alternate key is pressed.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1048576 NSCommandKeyMask</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set if Command key is pressed.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2097152 NSNumericPadKeyMask</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set if any key in the numeric keypad is pressed. The numeric keypad is generally on the right side of the keyboard.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4194304 NSHelpKeyMask</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set if the Help key is pressed.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8388608 NSFunctionKeyMask</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set if any function key is pressed. The function keys include the F keys at the top of most keyboards (F1, F2, and so on) and the navigation keys in the center of most keyboards (Help, Forward Delete, Home, End, Page Up, Page Down, and the arrow keys).</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arrow keys have an extra modifier value of 10485760</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>so for a shift arrow key do a bitwise 'or' with the shift mask:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10485760 | 131072</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= 10616832 // this is the mask for shift arrow key</p>
-<p class="p4"><br></p>
-<p class="p3">Three usage examples, direct and with helper methods</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>isCaps, isShift, isCtrl, isAlt, isCmd, isNumPad, isHelp, isFun</b>:</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">w = <span class="s1">Window</span>.new.front; w.addFlowLayout;</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// direct, using bit field</p>
-<p class="p6"><span class="s1">Button</span>(w, <span class="s1">Rect</span>(0,0,390,50)).states_([[<span class="s3">"hold shift/alt keys and click"</span>]])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.action_ { <span class="s1">|but, mod|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (mod & 131072 == 131072) { <span class="s3">"shift key was pressed."</span>.postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (mod & 524288 == 524288) { <span class="s3">"alt key was pressed."</span>.postln; };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// using helper methods</p>
-<p class="p6"><span class="s1">Button</span>(w, <span class="s1">Rect</span>(0,0,390,50)).states_([[<span class="s3">"hold any mod keys and click"</span>]])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.action_ { <span class="s1">|but, mod|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(mod.isCaps) { <span class="s3">"mod pressed: Caps."</span>.postln };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(mod.isShift) { <span class="s3">"mod pressed: Shift."</span>.postln };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(mod.isCtrl) { <span class="s3">"mod pressed: Ctrl."</span>.postln };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(mod.isAlt) { <span class="s3">"mod pressed: Alt."</span>.postln };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(mod.isNumPad) { <span class="s3">"mod pressed: NumPad."</span>.postln };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(mod.isHelp) { <span class="s3">"mod pressed: Help."</span>.postln };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(mod.isFun) { <span class="s3">"mod pressed: Fun."</span>.postln };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// collecting all modifiers</p>
-<p class="p6"><span class="s1">Button</span>(w, <span class="s1">Rect</span>(0,0,390,50)).states_([[<span class="s3">"hold any mod keys and click"</span>]])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.action_ { <span class="s1">|but, mod|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> pressed;</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[</span>\isCaps<span class="s2">, </span>\isShift<span class="s2">, </span>\isCtrl<span class="s2">, </span>\isAlt<span class="s2">, </span>\isCmd<span class="s2">, </span>\isNumPad<span class="s2">, </span>\isHelp<span class="s2">, </span>\isFun<span class="s2">].do { </span><span class="s1">|x|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(mod.perform(x)) { pressed = pressed.add(x) }</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pressed.postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/plot.html b/Help/GUI/GUI-Tools/plot.html
deleted file mode 100644
index ebf3110..0000000
--- a/Help/GUI/GUI-Tools/plot.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline ; color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #737373}
-span.s6 {color: #bf0000}
-span.s7 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>plot<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>plot data in a graph</b></p>
-<p class="p2"><br></p>
-<p class="p1">The <b>.plot</b> method provides the ability to plot data in a GUI window. The method is implemented in the <a href="../../Collections/ArrayedCollection.html"><span class="s2">ArrayedCollection</span></a> class but is also available for other classes for convenience, including <a href="../../Core/Kernel/Function.html"><span class="s3">Function</span></a>, <a href="../../Control/Env.html"><span class="s3">Env</span></a>, <a href="../../ServerArchitecture/Buffer.html"><span class="s3">Buffer</span></a>, <a href="../../Files/SoundFile.html"><span class="s3">SoundFile</span></a>, <a href="../../Collections/Wavetable.html"><span class="s3">Wavetable</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>receiver.plot(name, bounds, discrete, numChannels, minval, maxval, parent, labels)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Arguments (all optional):</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>name</b> - the name to be used as the GUI window title.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>bounds</b> - a <a href="../../Geometry/Rect.html"><span class="s3">Rect</span></a> providing coordinates for the GUI location.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>discrete</b> - plots are line-plots by default. Set this to true for bar charts.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>numChannels</b> - the number of interleaved channels that an array represents. For Buffers this argument is not available, since it's filled in automatically.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>minval</b> - minimum value(s) for the display range. For a Buffer this defaults to -1 but can be changed.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>maxval</b> - maximum value(s) for the display range. For a Buffer this defaults to +1 but can be changed.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>parent</b> - by default the plot is placed in a new GUI window. This argument can be used to specify an existing GUI container to send the plot to.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>labels</b> - by default labels appear at the top left of the plot giving a data readout based on mouse position. Set this argument to false to prevent them appearing.</p>
-<p class="p2"><br></p>
-<p class="p3">If <b>minval</b> and/or <b>maxval</b> are set to nil (this is default, except for Buffers), they will be automatically calculated from the dataset minimum and/or maximum. For multi-channel data, <b>minval</b> and <b>maxval</b> may be arrays, specifying the range independently for each channel (including use of nil, in which case the min/max will be calculated for the specific channel rather than for the overall dataset).</p>
-<p class="p4"><br></p>
-<p class="p1">Hitting the<b> L-key </b>on the keyboard when the window is focussed toggles the lock, and the window</p>
-<p class="p1">can be used to edit the data.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p1">(See some of the classes linked above for more examples)</p>
-<p class="p2"><br></p>
-<p class="p5">// Arrays</p>
-<p class="p6">[5, 6, 7, 6.5, 4.5, 3.5].plot(<span class="s4">"Some data"</span>)</p>
-<p class="p6">[5, 6, 7, 6.5, 4.5, 3.5].plot(<span class="s4">"Some data, in stereo"</span>, numChannels:2)</p>
-<p class="p6">[5, 6, 7, 6.5, 4.5, 3.5].plot(<span class="s4">"Some data, in stereo"</span>, numChannels:2, discrete: <span class="s3">true</span>)</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s3">|i|</span> { <span class="s3">|j|</span> j + 1 * i % 6 }.dup(5) }.dup(200).plot(<span class="s5">"Some 2-d data"</span>);</p>
-<p class="p8"><br></p>
-<p class="p5">// 3-channel interlaced data</p>
-<p class="p6">b = [{1.0.rand}.dup(50), { 20.0.rand - 30 }.dup(50),{ 10.0.rand }.dup(50)].lace(150);</p>
-<p class="p6">b.plot(numChannels:3, minval: <span class="s3">nil</span>, maxval: <span class="s3">nil</span>); <span class="s6">// Common rescaling</span></p>
-<p class="p6">b.plot(numChannels:3, minval: [<span class="s3">nil</span>, <span class="s3">nil</span>, <span class="s3">nil</span>], maxval: [<span class="s3">nil</span>, <span class="s3">nil</span>, <span class="s3">nil</span>]); <span class="s6">// Separate rescaling</span></p>
-<p class="p8"><br></p>
-<p class="p5">// Envelopes</p>
-<p class="p6"><span class="s3">Env</span>.adsr(0.4, 0.4, 0.8, 0.9).plot</p>
-<p class="p7"><br></p>
-<p class="p5">// Buffers</p>
-<p class="p6">s.boot;</p>
-<p class="p9"><span class="s7">b = </span><span class="s3">Buffer</span><span class="s7">.read(s,</span>"sounds/a11wlk01.wav"<span class="s7">);</span></p>
-<p class="p5"><span class="s7">b.plot; </span>// +-1 range</p>
-<p class="p6">b.plot(minval: <span class="s3">nil</span>, maxval: <span class="s3">nil</span>); <span class="s6">// auto range</span></p>
-<p class="p6">b.plot(minval: 0, maxval: <span class="s3">nil</span>); <span class="s6">// semi-auto range</span></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/GUI-Tools/resize.html b/Help/GUI/GUI-Tools/resize.html
deleted file mode 100644
index 0b0342f..0000000
--- a/Help/GUI/GUI-Tools/resize.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #991a13}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0017ad}
-span.s3 {color: #4d4d4d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>resize</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>resize behavior for SCView and its subclasses</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>resize</b> takes nine different arguments defining the behavior when window is resized. Each view responds relatively to the stretches of its parent view.</p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 2 3</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 5 6</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7 8 9</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 - fixed to left, fixed to top</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 - horizontally elastic, fixed to top</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3 - fixed to right, fixed to top</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 - fixed to left, vertically elastic</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5 - horizontally elastic, vertically elastic</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6 - fixed to right, vertically elastic</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7 - fixed to left, fixed to bottom</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8 - horizontally elastic, fixed to bottom</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>9 - fixed to right, fixed to bottom</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p5">// resize behaviours</p>
-<p class="p5">// use the PopUpMenus to mix resize modes</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> a;</p>
-<p class="p2"><br></p>
-<p class="p4">a = { <span class="s2">|i|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> w, b, x,k,t,p;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>k=i;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>i = i + 1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>(<span class="s3">"resize:"</span>+i, <span class="s2">Rect</span>(10 + (k%3 * 220), <span class="s2">Window</span>.screenBounds.height- [250,460,670].at(k/3), 200, 180));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = w.view.bounds;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s2">CompositeView</span>(w, w.view.bounds.insetBy(20,20))</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_(<span class="s2">Color</span>.rand)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.resize_(i);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>y = <span class="s2">CompositeView</span>(x, x.bounds.moveTo(0,0).insetBy(20,20))<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_(<span class="s2">Color</span>.rand)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.resize_(i);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>y.decorator = <span class="s2">FlowLayout</span>(y.bounds).gap_(0.0 @ 0.0);</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>t = <span class="s2">StaticText</span>(y, <span class="s2">Rect</span>(0, 0, 40, 40))</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_(<span class="s2">Color</span>.rand.alpha_(0.8))</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.resize_(i)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.string_(i)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.font_(<span class="s2">Font</span>(<span class="s3">"Helvetica"</span>, 26));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>p=<span class="s2">PopUpMenu</span>(y,40 at 40).items_((1..9).collect(<span class="s2">_</span>.asString)).value_(i-1).resize_(i)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_{<span class="s2">|m|</span> t.string_((m.value+1).asString); [p,t].do(<span class="s2">_</span>.resize_(m.value+1))};</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>w.onClose = {a.do(<span class="s2">_</span>.close) };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">} ! 9;</p>
-<p class="p2"><br></p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// the popupmenu contains the various modes</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">w = <span class="s2">Window</span>(<span class="s3">"soundfile test"</span>, <span class="s2">Rect</span>(200, 200, 720, 250));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">p = <span class="s2">PopUpMenu</span>(w, <span class="s2">Rect</span>(10,10,80,24))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>.items_( <span class="s2">Array</span>.fill(9, {<span class="s2">arg</span> i; (i+1).asString;}) )</p>
-<p class="p4"><span class="Apple-tab-span">	</span>.action_({ <span class="s2">arg</span> sbs;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.resize_(sbs.value+1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>});</p>
-<p class="p2"><br></p>
-<p class="p4">f = <span class="s2">SoundFile</span>.new;</p>
-<p class="p4">f.openRead(<span class="s3">"sounds/a11wlk01.wav"</span>.absolutePath);</p>
-<p class="p2"><br></p>
-<p class="p4">a = <span class="s2">SoundFileView</span>(w, <span class="s2">Rect</span>(10,40, 700, 180))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>.soundfile_(f)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>.readWithTask(0, f.numFrames, showProgress: <span class="s2">false</span> )</p>
-<p class="p4"><span class="Apple-tab-span">	</span>.resize_(1);</p>
-<p class="p2"><br></p>
-<p class="p4">w.front;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/HistoryGui.htm b/Help/GUI/HistoryGui.htm
deleted file mode 100644
index bd69cc6..0000000
--- a/Help/GUI/HistoryGui.htm
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9c251f}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0027a6}
-span.s4 {color: #406c2c}
-span.s5 {color: #606060}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>HistoryGui</b></span><span class="s2"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>a gui for History objects</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">The gui elements in detail:</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>button start</b> stops and starts History _if_ gui.history is current.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><b>popUp sameDoc/newDoc</b> switches whether the postDoc method posts to old post-doc window or new.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><b>button closeAll</b> closes all documents called "History repeats",<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><b>button closeOld</b> closes only those created from this gui, except the latest.</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><b>button X/- </b>turns filtering on/off</p>
-<p class="p1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><b>popup \all </b>selects which key to search for (only useful if networked)</p>
-<p class="p1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><b>textview</b> allows for typing in search string.</p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><b>listview</b> shows either all lineShorts, or the filtered lineShorts;<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span>selecting them in listview makes them come appear in post-doc window.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p4">(</p>
-<p class="p4">h = <span class="s3">History</span>.new.lines_([</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[0, <span class="s4">\me</span>, <span class="s5">"1+2"</span>],<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[1, <span class="s4">\me</span>, <span class="s5">"3+5"</span>], [1.234, <span class="s4">\you</span>, <span class="s5">"q = q ? ();"</span>],<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s6"><span class="Apple-tab-span">	</span>[3, </span><span class="s4">\her</span><span class="s6">, </span>"\"<span class="s3">Herstory</span><span class="s6">\</span>".speak"<span class="s6">]</span></p>
-<p class="p4">]);</p>
-<p class="p4">g = h.makeWin;</p>
-<p class="p4">g.findDoc;</p>
-<p class="p4">g.postDoc(2);</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">h.document;</p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>// how filtering works:</p>
-<p class="p4">g.filters.postcs;</p>
-<p class="p4">g.filterOff;<span class="Apple-converted-space"> </span></p>
-<p class="p4">g.filterOn;<span class="Apple-converted-space"> </span></p>
-<p class="p4">g.filtering;<span class="Apple-converted-space"> </span></p>
-<p class="p4">g.setKeyFilter(<span class="s4">\all</span>);</p>
-<p class="p4">g.setKeyFilter(<span class="s4">\me</span>);</p>
-<p class="p4">g.setStrFilter(<span class="s5">""</span>);</p>
-<p class="p4">g.setStrFilter(<span class="s5">"3"</span>);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>// internal state cached in gui:</p>
-<p class="p4">g.filteredIndices;</p>
-<p class="p4">g.filteredShorts;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">// to do: execute line on special key in listview;<span class="Apple-converted-space"> </span></p>
-<p class="p4">// window following?<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Button.html b/Help/GUI/Main-GUI/Button.html
deleted file mode 100644
index 35c5d4e..0000000
--- a/Help/GUI/Main-GUI/Button.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Button<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Button.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCButton.html">JSCButton</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCButton.html">SCButton</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/CompositeView.html b/Help/GUI/Main-GUI/CompositeView.html
deleted file mode 100644
index 7eb996f..0000000
--- a/Help/GUI/Main-GUI/CompositeView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>CompositeView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a CompositeView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCCompositeView.html">JSCCompositeView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCCompositeView.html">SCCompositeView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Dialog.html b/Help/GUI/Main-GUI/Dialog.html
deleted file mode 100644
index 2c16b4d..0000000
--- a/Help/GUI/Main-GUI/Dialog.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dialog<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Dialog.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://SwingDialog.html">SwingDialog</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../../OSX/CocoaDialog.html">CocoaDialog</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/DragBoth.html b/Help/GUI/Main-GUI/DragBoth.html
deleted file mode 100644
index 748beaf..0000000
--- a/Help/GUI/Main-GUI/DragBoth.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DragBoth<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a DragBoth.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCDragBoth.html">JSCDragBoth</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCDragBoth.html">SCDragBoth</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/DragSink.html b/Help/GUI/Main-GUI/DragSink.html
deleted file mode 100644
index 85f13cb..0000000
--- a/Help/GUI/Main-GUI/DragSink.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DragSink<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a DragSink.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCDragSink.html">JSCDragSink</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCDragSink.html">SCDragSink</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/DragSource.html b/Help/GUI/Main-GUI/DragSource.html
deleted file mode 100644
index 483cd32..0000000
--- a/Help/GUI/Main-GUI/DragSource.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DragSource<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a DragSource.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCDragSource.html">JSCDragSource</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCDragSource.html">SCDragSource</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/EnvelopeView.html b/Help/GUI/Main-GUI/EnvelopeView.html
deleted file mode 100644
index 1f73f28..0000000
--- a/Help/GUI/Main-GUI/EnvelopeView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EnvelopeView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a EnvelopeView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCEnvelopeView.html">JSCEnvelopeView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCEnvelopeView.html">SCEnvelopeView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Font.html b/Help/GUI/Main-GUI/Font.html
deleted file mode 100644
index 8249126..0000000
--- a/Help/GUI/Main-GUI/Font.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Font<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Font.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JFont.html">JFont</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../GUI-Tools/SCFont.html">SCFont</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/FreqScope.html b/Help/GUI/Main-GUI/FreqScope.html
deleted file mode 100644
index 3fdcf37..0000000
--- a/Help/GUI/Main-GUI/FreqScope.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FreqScope<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a FreqScope.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JFreqScope.html">JFreqScope</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCFreqScopeWindow.html">SCFreqScopeWindow</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/FreqScopeView.html b/Help/GUI/Main-GUI/FreqScopeView.html
deleted file mode 100644
index 1d1d601..0000000
--- a/Help/GUI/Main-GUI/FreqScopeView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FreqScopeView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a FreqScopeView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCFreqScope.html">JSCFreqScope</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCFreqScope.html">SCFreqScope</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/HLayoutView.html b/Help/GUI/Main-GUI/HLayoutView.html
deleted file mode 100644
index cf9c5f6..0000000
--- a/Help/GUI/Main-GUI/HLayoutView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>HLayoutView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a HLayoutView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCHLayoutView.html">JSCHLayoutView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCHLayoutView.html">SCHLayoutView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Knob.html b/Help/GUI/Main-GUI/Knob.html
deleted file mode 100644
index 8bafbd3..0000000
--- a/Help/GUI/Main-GUI/Knob.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Knob<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Knob.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JKnob.html">JKnob</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCKnob.html">SCKnob</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/ListView.html b/Help/GUI/Main-GUI/ListView.html
deleted file mode 100644
index 9cecd86..0000000
--- a/Help/GUI/Main-GUI/ListView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ListView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a ListView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCListView.html">JSCListView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCListView.html">SCListView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/MovieView.html b/Help/GUI/Main-GUI/MovieView.html
deleted file mode 100644
index 8a21d92..0000000
--- a/Help/GUI/Main-GUI/MovieView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MovieView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a MovieView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCMovieView.html">JSCMovieView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCMovieView.html">SCMovieView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/MultiSliderView.html b/Help/GUI/Main-GUI/MultiSliderView.html
deleted file mode 100644
index 2c2dc4b..0000000
--- a/Help/GUI/Main-GUI/MultiSliderView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MultiSliderView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a MultiSliderView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCMultiSliderView.html">JSCMultiSliderView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCMultiSliderView.html">SCMultiSliderView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/NumberBox.html b/Help/GUI/Main-GUI/NumberBox.html
deleted file mode 100644
index 862f304..0000000
--- a/Help/GUI/Main-GUI/NumberBox.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NumberBox<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a NumberBox.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCNumberBox.html">JSCNumberBox</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCNumberBox.html">SCNumberBox</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Pen.html b/Help/GUI/Main-GUI/Pen.html
deleted file mode 100644
index e79d972..0000000
--- a/Help/GUI/Main-GUI/Pen.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pen<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Pen.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JPen.html">JPen</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCPen.html">SCPen</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/PopUpMenu.html b/Help/GUI/Main-GUI/PopUpMenu.html
deleted file mode 100644
index fc4ce13..0000000
--- a/Help/GUI/Main-GUI/PopUpMenu.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PopUpMenu<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a PopUpMenu.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCPopUpMenu.html">JSCPopUpMenu</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCPopUpMenu.html">SCPopUpMenu</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/RangeSlider.html b/Help/GUI/Main-GUI/RangeSlider.html
deleted file mode 100644
index e2312d9..0000000
--- a/Help/GUI/Main-GUI/RangeSlider.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>RangeSlider<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a RangeSlider.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCRangeSlider.html">JSCRangeSlider</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCRangeSlider.html">SCRangeSlider</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/ScopeView.html b/Help/GUI/Main-GUI/ScopeView.html
deleted file mode 100644
index 2548047..0000000
--- a/Help/GUI/Main-GUI/ScopeView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ScopeView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a ScopeView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCScope.html">JSCScope</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCScope.html">SCScope</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/ScrollView.html b/Help/GUI/Main-GUI/ScrollView.html
deleted file mode 100644
index 6cba22c..0000000
--- a/Help/GUI/Main-GUI/ScrollView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ScrollView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a ScrollView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCScrollView.html">JSCScrollView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCScrollView.html">SCScrollView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Slider.html b/Help/GUI/Main-GUI/Slider.html
deleted file mode 100644
index 5865d6a..0000000
--- a/Help/GUI/Main-GUI/Slider.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Slider<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Slider.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCSlider.html">JSCSlider</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCSlider.html">SCSlider</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Slider2D.html b/Help/GUI/Main-GUI/Slider2D.html
deleted file mode 100644
index 3301f5f..0000000
--- a/Help/GUI/Main-GUI/Slider2D.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Slider2D<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Slider2D.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSC2DSlider.html">JSC2DSlider</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SC2DSlider.html">SC2DSlider</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/SoundFileView.html b/Help/GUI/Main-GUI/SoundFileView.html
deleted file mode 100644
index cb54310..0000000
--- a/Help/GUI/Main-GUI/SoundFileView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SoundFileView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a SoundFileView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCSoundFileView.html">JSCSoundFileView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCSoundFileView.html">SCSoundFileView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/StaticText.html b/Help/GUI/Main-GUI/StaticText.html
deleted file mode 100644
index f91e1c8..0000000
--- a/Help/GUI/Main-GUI/StaticText.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>StaticText<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a StaticText.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCStaticText.html">JSCStaticText</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCStaticText.html">SCStaticText</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Stethoscope.html b/Help/GUI/Main-GUI/Stethoscope.html
deleted file mode 100644
index 8dd5cef..0000000
--- a/Help/GUI/Main-GUI/Stethoscope.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Stethoscope<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Stethoscope.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JStethoscope.html">JStethoscope</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCStethoscope.html">SCStethoscope</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/StubTemplate.html b/Help/GUI/Main-GUI/StubTemplate.html
deleted file mode 100644
index 0a4c898..0000000
--- a/Help/GUI/Main-GUI/StubTemplate.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>%<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a %.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-%%
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/TabletSlider2D.html b/Help/GUI/Main-GUI/TabletSlider2D.html
deleted file mode 100644
index 304e2c7..0000000
--- a/Help/GUI/Main-GUI/TabletSlider2D.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TabletSlider2D<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a TabletSlider2D.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SC2DTabletSlider.html">SC2DTabletSlider</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/TabletView.html b/Help/GUI/Main-GUI/TabletView.html
deleted file mode 100644
index 6b19b27..0000000
--- a/Help/GUI/Main-GUI/TabletView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TabletView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a TabletView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCTabletView.html">JSCTabletView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCTabletView.html">SCTabletView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/TextField.html b/Help/GUI/Main-GUI/TextField.html
deleted file mode 100644
index e0d8086..0000000
--- a/Help/GUI/Main-GUI/TextField.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TextField<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a TextField.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCTextField.html">JSCTextField</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCTextField.html">SCTextField</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/TextView.html b/Help/GUI/Main-GUI/TextView.html
deleted file mode 100644
index f77db01..0000000
--- a/Help/GUI/Main-GUI/TextView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TextView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a TextView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCTextView.html">JSCTextView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCTextView.html">SCTextView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/UserView.html b/Help/GUI/Main-GUI/UserView.html
deleted file mode 100644
index 4ada5fd..0000000
--- a/Help/GUI/Main-GUI/UserView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>UserView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a UserView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCUserView.html">JSCUserView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCUserView.html">SCUserView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/VLayoutView.html b/Help/GUI/Main-GUI/VLayoutView.html
deleted file mode 100644
index d13d8f0..0000000
--- a/Help/GUI/Main-GUI/VLayoutView.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>VLayoutView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a VLayoutView.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCVLayoutView.html">JSCVLayoutView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCVLayoutView.html">SCVLayoutView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/View.html b/Help/GUI/Main-GUI/View.html
deleted file mode 100644
index feae265..0000000
--- a/Help/GUI/Main-GUI/View.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>View<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a View.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCView.html">JSCView</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCView.html">SCView</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/Main-GUI/Window.html b/Help/GUI/Main-GUI/Window.html
deleted file mode 100644
index ac0fb06..0000000
--- a/Help/GUI/Main-GUI/Window.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2946d8}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #2040df}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Window<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a cross-platform redirector for a GUI widget</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../GUI-Tools/ViewRedirect.html"><span class="s2"><b>ViewRedirect</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">This class will return the gui kit specific version of a Window.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../GUI-Tools/GUI.html"><span class="s4">GUI</span></a>, <a href="../GUI-Classes.html"><span class="s4">GUI-Classes</span></a>, <a href="../GUI-Overview.html"><span class="s4">GUI-Overview</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples and Documentation:</b></p>
-<p class="p1">For examples and platform specific documentation follow these links.</p><p class="p1"><br></p>
-<p class="p1"><b>SwingGUI:<span class="Apple-tab-span">     </span></b> <a href="SC://JSCWindow.html">JSCWindow</a></p>
-<br>
-<p class="p1"><b>CocoaGUI:<span class="Apple-tab-span">     </span></b> <a href="../Cocoa-GUI/SCWindow.html">SCWindow</a></p>
-<br>
-
-<p class="p1">Some of the links above might not work, if the help files for the listed kit are not included in your setup. If you do not see your GUI kit listed in the help redirect stubs, or to fix the above links,<span class="Apple-converted-space">  </span>see <a href="../GUI-Tools/Regenerate-GUI-Help.html"><span class="s5">Regenerate-GUI-Help</span></a>.</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/SimpleController.html b/Help/GUI/SimpleController.html
deleted file mode 100644
index 499dd98..0000000
--- a/Help/GUI/SimpleController.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #002de8; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #93320e; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0000bf}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-span.s1 {color: #0000ff}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SimpleController</b></p>
-<p class="p2"><br></p>
-<p class="p3">SimpleController can be used as a controller according to the model-view-controller (M-V-C) paradigm. It provides an <a href="../Collections/IdentityDictionary.html"><span class="s1">IdentityDictionary</span></a> of actions, which are called whenever the attached model sends a notification by calling <b>changed</b>.</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new(model)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Creates a SimpleController instance with the <b>model</b> to be observed. <b>Model</b> can an object of any class</p>
-<p class="p9"><br></p>
-<p class="p6"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>put(what, action)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Register an action, which is called when the model invokes <b>changed(what, moreArgs)</b>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p10"><b>Examples:</b></p>
-<p class="p11"><br></p>
-<p class="p12">(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s2">var</span> controller, model, view;</p>
-<p class="p13"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>model = <span class="s2">Ref</span>(0.5);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>controller = <span class="s2">SimpleController</span>(model);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>controller.put(<span class="s3">\value</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p14"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{</span>|theChanger, what, moreArgs|<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>view.value_(theChanger.value);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p13"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>view = <span class="s2">Slider</span>(<span class="s2">Window</span>(<span class="s5">"slider"</span>, <span class="s2">Rect</span>(100, 100, 330, 38)).front, <span class="s2">Rect</span>(5, 5, 320, 20));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>view.onClose_{controller.remove};</p>
-<p class="p13"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s4"><span class="Apple-tab-span">	</span></span>// run a routine to change the model's value:</p>
-<p class="p12"><span class="Apple-tab-span">	</span>r{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100.do{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>model.value_(1.0.rand.postln).changed(<span class="s3">\value</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}.play(<span class="s2">AppClock</span>)</p>
-<p class="p12">)</p>
-</body>
-</html>
diff --git a/Help/GUI/guicrucial/ObjectGui.html b/Help/GUI/guicrucial/ObjectGui.html
deleted file mode 100644
index de506c4..0000000
--- a/Help/GUI/guicrucial/ObjectGui.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #00168f}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #571f0d}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #571f0d; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {color: #00168f}
-span.s3 {color: #571f0d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ObjectGui</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass for all Gui classes</b></p>
-<p class="p2"><br></p>
-<p class="p3">In the MVC architecture this is the Controller, which creates Views for manipulating the properties of your Model, and receives messages from the View and enacts the changes on the Model.</p>
-<p class="p2"><br></p>
-<p class="p3">Each class specifies its Gui class via the guiClass method.</p>
-<p class="p2"><br></p>
-<p class="p3">The default guiClass for an Object is ObjectGui.<span class="Apple-converted-space">  </span>So if a class does not implement guiClass at all, then at least there is a default ObjectGui that will display the name.</p>
-<p class="p2"><br></p>
-<p class="p3">Many subclasses overide the <b>guiClass</b> method to specify a different class, one that subclasses ObjectGui.</p>
-<p class="p4"><br></p>
-<p class="p5">see [gui]</p>
-<p class="p2"><br></p>
-<p class="p3">It is the simplest display, just the the object asString.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>an example gui class</b></p>
-<p class="p4"><br></p>
-<p class="p7">YourSimpleGuiClass<span class="s1"> : </span>ObjectGui<span class="s1"> {</span></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>guiBody { <span class="s2">arg</span> layout;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// we refer to the model and</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// access its variable howFast.</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if its a simple number, it will display</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// using the default ObjectGui class, which</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// will simply show its value as a string.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>model.howFast.gui(layout);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}</p>
-<p class="p9">}</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p10">// more complex</p>
-<p class="p7">YourGuiClass<span class="s1"> : </span>ObjectGui<span class="s1"> {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s2">var</span> numberEditor;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>//for example</p>
-<p class="p9"><span class="Apple-tab-span">	</span>guiBody { <span class="s2">arg</span> layout;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> r;</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the object you are making a gui for is referred to as the model</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// display some param on screen.</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// here we assume that someParam is something that</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>has a suitable gui class</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// implemented, or that the default ObjectGui is sufficient.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>model.someParam.gui(layout);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// using non 'gui' objects</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = layout.layRight(300,300); <span class="s3">// allocate yourself some space</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Button</span>(layout.win,r)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s2">arg</span> butt;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>model.goApeShit;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// note: NumberEditor is a cruciallib class</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numberEditor = <span class="s2">NumberEditor</span>(model.howFast,[0,100])</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.action_({ <span class="s2">arg</span> val;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>model.howFast = val;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>model.changed(<span class="s2">this</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// tell the model that this gui changed it</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numberEditor.gui(layout);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>// your gui object will have update called any time the .changed message</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>// is sent to your model</p>
-<p class="p9"><span class="Apple-tab-span">	</span>update { <span class="s2">arg</span> changed,changer;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(changer !== <span class="s2">this</span>,{<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>/* if it is this gui object that changed the value</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>using the numberEditor, then we already have a correct</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>display and don't need to waste cpu to update it.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if anyone else changed anything about the model,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>we will update ourselves here.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*/</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numberEditor.value = model.howFast;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">/*</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>note that<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numberEditor.value = model.howFast;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is passive, and does not fire the numberEditor's action.<span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numberEditor.activeValue = model.howFast</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>would fire the action as well, resulting in a loop that would</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>probably crash your machine.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*/</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}</p>
-<p class="p8"><br></p>
-<p class="p9">}</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/GUI/guicrucial/gui.html b/Help/GUI/guicrucial/gui.html
deleted file mode 100644
index fe3d868..0000000
--- a/Help/GUI/guicrucial/gui.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001ca1}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #782514; min-height: 15.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001ca1}
-span.s3 {color: #4d4d4d}
-span.s4 {font: 12.0px Helvetica}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>gui</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>make a graphical user interface for an object</b></p>
-<p class="p2"><br></p>
-<p class="p1">.gui is a common interface convention that creates a graphical user interface for the object<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">nil</span>.gui;</p>
-<p class="p3"><span class="s3">"2"</span>.gui;</p>
-<p class="p3">2.gui;</p>
-<p class="p3">[1,<span class="s2">nil</span>,<span class="s3">"tree"</span>].gui;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>gui(parent,bounds)</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>parent</b> -</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a Window,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a FlowView</p>
-<p class="p5"><span class="Apple-tab-span">	</span>CompositeVIew</p>
-<p class="p5"><span class="Apple-tab-span">	</span>HLayoutView</p>
-<p class="p5"><span class="Apple-tab-span">	</span>VLayoutView</p>
-<p class="p5"><span class="Apple-tab-span">	</span>nil (will create a window with a FlowView)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><b></b><br></p>
-<p class="p1"><b>bounds</b> -</p>
-<p class="p5"><span class="Apple-tab-span">	</span>anything that responds to asRect:</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Nil - the gui will use its own default size</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Point - width @ height</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Usually the bounds are not specified.<span class="Apple-converted-space">  </span>The object's gui class first adds a container,</p>
-<p class="p1"><span class="Apple-tab-span">	</span>lays its things inside that container and then shrinks the container to fit it.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>If you specify a bounds, the container will be set to that size and will stay that way.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Add yourself to a parent view (window)</b></p>
-<p class="p5">(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>f = <span class="s2">FlowView</span>.new;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">nil</span>.gui(f);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">"2"</span>.gui(f);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>2.gui(f);</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Each class can specify an associated guiClass, which is a subclass of ObjectGui.</p>
-<p class="p1">If none is specified then ObjectGui will create the simplest of guis.</p>
-<p class="p2"><br></p>
-<p class="p1">Examples specifying guiClass:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">Object</span>-guiClass {<span class="Apple-converted-space">  </span>^<span class="s2">ObjectGui</span> }</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>AbstractPlayer<span class="s5">-guiClass { ^</span>AbstractPlayerGui<span class="s5"> }</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Patch</span>-guiClass { ^<span class="s2">PatchGui</span> }</p>
-<p class="p7"><br></p>
-<p class="p1">For any class where it is appropriate, a separate gui class is implemented, usually inheriting much of its behavior from the gui class of the superclass.</p>
-<p class="p8"><br></p>
-<p class="p9">see also [ObjectGui]</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Geometry/Point.html b/Help/Geometry/Point.html
deleted file mode 100644
index 1229c3a..0000000
--- a/Help/Geometry/Point.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {color: #0000ff}
-span.s2 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Point<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Cartesian point</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: </b><a href="../Core/Object.html"><span class="s1"><b>Object</b></span></a></p>
-<p class="p4"><br></p>
-<p class="p3">Defines a point on the Cartesian plane.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="s2">Creation</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>new(inX, inY)</b></p>
-<p class="p4"><br></p>
-<p class="p3">defines a new point.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="s2">Accessing</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>x</b></p>
-<p class="p4"><br></p>
-<p class="p3">get the x coordinate value.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>y</b></p>
-<p class="p4"><br></p>
-<p class="p3">get the y coordinate value.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>x_(aValue)</b></p>
-<p class="p4"><br></p>
-<p class="p3">set the x coordinate value.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>y_(aValue)</b></p>
-<p class="p4"><br></p>
-<p class="p3">set the y coordinate value.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>set(inX, inY)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Sets the point x and y values.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="s2">Testing</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>== aPoint</b></p>
-<p class="p4"><br></p>
-<p class="p3">answers a Boolean whether the receiver equals the argument.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>hash</b></p>
-<p class="p4"><br></p>
-<p class="p3">returns a hash value for the receiver.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="s2">Math</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>+ aPointOrScalar</b></p>
-<p class="p4"><br></p>
-<p class="p3">Addition.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>- aPointOrScalar</b></p>
-<p class="p4"><br></p>
-<p class="p3">Subtraction.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>* aPointOrScalar</b></p>
-<p class="p4"><br></p>
-<p class="p3">Multiplication.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>/ aPointOrScalar</b></p>
-<p class="p4"><br></p>
-<p class="p3">Division.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>translate(aPoint)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Addition by a Point.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>scale(aPoint)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Multiplication by a Point.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>rotate(angle)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Rotation about the origin by the angle given in radians.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>abs</b></p>
-<p class="p4"><br></p>
-<p class="p3">Absolute value of the point.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>rho</b></p>
-<p class="p4"><br></p>
-<p class="p3">return the polar coordinate radius of the receiver.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>theta</b></p>
-<p class="p4"><br></p>
-<p class="p3">return the polar coordinate angle of the receiver.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>dist(aPoint)</b></p>
-<p class="p4"><br></p>
-<p class="p3">return the distance from the receiver to aPoint.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>transpose</b></p>
-<p class="p4"><br></p>
-<p class="p3">return a Point whose x and y coordinates are swapped.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>round(quantum)</b></p>
-<p class="p4"><br></p>
-<p class="p3">round the coordinate values to a multiple of quantum.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>trunc(quantum)</b></p>
-<p class="p4"><br></p>
-<p class="p3">truncate the coordinate values to a multiple of quantum.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="s2">Conversion</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>asPoint</b></p>
-<p class="p4"><br></p>
-<p class="p3">returns the receiver.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>asComplex</b></p>
-<p class="p4"><br></p>
-<p class="p3">returns a complex number with x as the real part and y as the imaginary part.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>asString</b></p>
-<p class="p4"><br></p>
-<p class="p3">return a string representing the receiver.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>asShortString</b></p>
-<p class="p4"><br></p>
-<p class="p3">return a short string representing the receiver.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>paramsCompileString</b></p>
-<p class="p4"><br></p>
-<p class="p3">represent parameters to 'new' as compileable strings. (See Object::asCompileString)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Geometry/Rect.html b/Help/Geometry/Rect.html
deleted file mode 100644
index 0f8a10e..0000000
--- a/Help/Geometry/Rect.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.47">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Rect<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rectangle</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="s1">Class methods:</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>new(inLeft, inTop, inWidth, inHeight)</b></p>
-<p class="p2"><br></p>
-<p class="p3">return a new Rect with the given upper left corner and dimensions.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>newSides(inLeft, inTop, inRight, inBottom)</b></p>
-<p class="p2"><br></p>
-<p class="p3">return a new Rect with the given boundaries.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>fromPoints(inPoint1, inPoint2)</b></p>
-<p class="p2"><br></p>
-<p class="p3">return a new Rect defined by the given Points.</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="s1">Instance methods:</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>left</b></p>
-<p class="p3"><b>top</b></p>
-<p class="p3"><b>right</b></p>
-<p class="p3"><b>bottom</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get the value of the boundary.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>left_(aValue)</b></p>
-<p class="p3"><b>top_(aValue)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Set the value of the boundary.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>set(inLeft, inTop, inWidth, inHeight)</b></p>
-<p class="p2"><br></p>
-<p class="p3">set the boundaries to the given values.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>setExtent(inWidth, inHeight)</b></p>
-<p class="p2"><br></p>
-<p class="p3">set the dimensions.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>width</b></p>
-<p class="p2"><br></p>
-<p class="p3">return the width.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>height</b></p>
-<p class="p2"><br></p>
-<p class="p3">return the height,</p>
-<p class="p2"><br></p>
-<p class="p3"><b>width_(aValue)</b></p>
-<p class="p2"><br></p>
-<p class="p3">set the width.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>height_(aValue)</b></p>
-<p class="p2"><br></p>
-<p class="p3">set the height.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>origin</b></p>
-<p class="p2"><br></p>
-<p class="p3">return the upper left corner as a Point.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>corner</b></p>
-<p class="p2"><br></p>
-<p class="p3">return the lower right corner as a Point.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>extent</b></p>
-<p class="p2"><br></p>
-<p class="p3">return a Point whose x value is the height and whose y value is the width.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>leftTop</b></p>
-<p class="p2"><br></p>
-<p class="p3">return the upper left corner as a Point.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>rightTop</b></p>
-<p class="p2"><br></p>
-<p class="p3">return the upper right corner as a Point.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>leftBottom</b></p>
-<p class="p2"><br></p>
-<p class="p3">return the lower left corner as a Point.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>rightBottom</b></p>
-<p class="p2"><br></p>
-<p class="p3">return the lower right corner as a Point.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>moveBy(x, y)</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect which is offset by x and y.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>moveTo(x, y)</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect whose upper left corner is moved to (x, y).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>moveToPoint(aPoint)</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect whose upper left corner is moved to aPoint.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>resizeBy(x, y)</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect whose dimensions have been changed by (x, y).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>resizeTo(x, y)</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect whose dimensions are (x, y).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>insetBy(x, y)</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect whose boundaries have been inset by (x, y). If only one argument is supplied, it will be used for both x and y.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>insetAll(insetLeft, insetTop, insetRight, insetBottom)</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect whose boundaries have been inset by the given amounts.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>contains(aPoint)</b></p>
-<p class="p2"><br></p>
-<p class="p3">answers whether aPoint is in the receiver.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>union(aRect)</b></p>
-<p class="p3"><b>| aRect</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect which contains the receiver and aRect.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>sect(aRect)</b></p>
-<p class="p3"><b>& aRect</b></p>
-<p class="p2"><br></p>
-<p class="p3">returns a new Rect which is the intersection of the receiver and aRect.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Glossary.html b/Help/Glossary.html
deleted file mode 100644
index b729358..0000000
--- a/Help/Glossary.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #002aff}
-span.s2 {color: #0000ff}
-span.s3 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Glossary</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>buffer</b> - A server-side header and array of 32 bit floating point sample data. Buffers are used for sound files, delay lines, arrays of global controls, and arrays of inter-synth patch points. Represented by the client-side class <a href="ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>class</b> - A description of the state and behaviour of a set of objects.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>client</b> - SC is divided into two separate applications: The client and the server. The client is where the supercollider language is implemented and where one executes code. The server actually synthesizes the audio, contains the node tree of synths and groups and responds to Open Sound Control messages from the client. See <a href="ServerArchitecture/ClientVsServer.html"><span class="s2">ClientVsServer</span></a> for more information.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>group</b> - A linked list of nodes. Groups provide ways to control execution of many nodes at once. A group is a kind of node. Colloquially one can understand a group as an ordered grouping of other nodes, which may include both synths and other groups. Represented by the client-side class <a href="ServerArchitecture/Group.html"><span class="s1">Group</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>interface</b> - The set of messages to which an object responds.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>instance</b> - One of the objects described by a class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>instance variable</b> - A part of an object's internal state</p>
-<p class="p2"><br></p>
-<p class="p3"><b>message</b><span class="Apple-tab-span">	</span>- A request for an object to perform an operation.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>method</b> - A description of the operations necessary to implement a message for a particular class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>MIDI</b> - A protocol for sending music control data between synthesizers.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>node</b> - One point in a tree of nodes executed in a depth first traversal order by the synth engine. There are two types of nodes, synths and groups. These are represented by the client-side classes <a href="ServerArchitecture/Synth.html"><span class="s1">Synth</span></a> and <a href="ServerArchitecture/Group.html"><span class="s1">Group</span></a>, and their abstract superclass <a href="ServerArchitecture/Node.html"><span class="s1">Node</span></a>. The node tree defines the order of execution for synths.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>object</b> - Something that has data, representing the object's state, and a set of operations that can be performed on the object.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Open Sound Control</b> - a protocol defined by CNMAT at UCBerkeley for controlling synthesizers. See <span class="s3">http://opensoundcontrol.org/</span>. SuperCollider communicates between the client and server using OSC messages over UDP or TCP.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>OSC</b> - See Open Sound Control.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>polymorphism</b><span class="Apple-tab-span">	</span>- The ability for different kinds of objects to respond differently to the same message.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>protocol</b> - A set of messages that implement a specific kind of behaviour.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>receiver</b> - The object to which a message is sent.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>server</b> - SC is divided into two separate applications: The client and the server. The client is where the supercollider language is implemented and where one executes code. The server actually synthesizes the audio, contains the node tree of synths and groups and responds to Open Sound Control messages from the client. See <a href="ServerArchitecture/ClientVsServer.html"><span class="s2">ClientVsServer</span></a> for more information.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>synth</b> - A sound processing module, based upon a particular synth definition. Similar to "voice " in other systems. Synths are referred to by a number. Represented by the client-side class <a href="ServerArchitecture/Synth.html"><span class="s1">Synth</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>synth definition</b> - A definition for creating new synths. Synth definitions are like a pattern or design for synths. Similar to "instrument" in other systems. Represented by the client-side class <a href="ServerArchitecture/SynthDef.html"><span class="s1">SynthDef</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>TCP</b> - A protocol for streaming data over a network.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>UDP</b> - A protocol for sending datagrams over a network.</p>
-</body>
-</html>
diff --git a/Help/Help.html b/Help/Help.html
deleted file mode 100644
index 479a111..0000000
--- a/Help/Help.html
+++ /dev/null
@@ -1,555 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 9.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 1.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p7 {margin: 0.0px 0.0px 1.0px 0.0px; font: 12.0px Helvetica; color: #001bb9; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times; min-height: 19.0px}
-p.p9 {margin: 0.0px 0.0px 12.0px 0.0px; text-align: center; font: 10.0px Helvetica}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-table.t1 {margin: 5.0px 0.0px 0.0px 0.0px}
-table.t2 {border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #b3b3b3 #b3b3b3 #b3b3b3 #b3b3b3}
-td.td1 {width: 48.0px; padding: 2.0px 2.0px 2.0px 2.0px}
-td.td2 {width: 173.0px; padding: 2.0px 2.0px 2.0px 5.0px}
-td.td3 {width: 180.0px; padding: 0.0px 12.0px 14.0px 0.0px}
-td.td4 {width: 168.0px; background-color: #dcdee5; border-style: solid; border-width: 0.0px 0.0px 1.0px 0.0px; border-color: #000000 #000000 #b3b3b3 #000000; padding: 0.0px 5.0px 0.0px 5.0px}
-td.td5 {width: 168.0px; padding: 2.0px 5.0px 2.0px 5.0px}
-td.td6 {width: 180.0px}
-td.td7 {width: 192.0px}
-</style>
-</head>
-<body>
-<table cellspacing="0" cellpadding="0" class="t1">
-<tbody>
-<tr>
-<td valign="middle" class="td1">
-<p class="p1"><span class="s1"><img src="attachments/Help/SC_icon.png" alt="attachments/Help/SC_icon.png"></span></p>
-</td>
-<td valign="middle" class="td2">
-<p class="p2"><b>SuperCollider Help</b></p>
-</td>
-</tr>
-</tbody>
-</table>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p3">Help files are HTML files kept in the Help directory in the SuperCollider application folder.</p>
-<p class="p3">If you're an absolute beginner please also refer to the README that came with the application download.</p>
-<p class="p3">To browse or search the documentation execute the following line of code:</p>
-<p class="p4"><span class="s2">Help</span><span class="s3">.gui; </span>//to run a single line of code put the cursor anywhere on the line and execute</p>
-<p class="p3">To execute code, use the keyboard shortcut: Enter (not Return), ctrl-Return, Ctrl-c, fn-Return, or Shift-Return (OS X, SCapp), Ctrl+Enter (Windows, PsyCollider), Ctrl+c Ctrl+c (Emacs), F5 (vim), Ctrl+e (gedit/sced). For key commands, also see <a href="Other Topics/Shortcuts.html"><span class="s2">Shortcuts</span></a>.</p>
-<p class="p3">To execute multiple lines, highlight (select) the <i>entire</i> block before pressing the execute key. Do not simply place the cursor on a line; this will cause syntax or execution errors. Parentheses often surround blocks.</p>
-<p class="p3">To explore using links (which are usually blue and underlined), simply click on them, or ask for help after selecting them. To obtain help on any selected item, use the Help menu, or type the relevant shortcut: Cmd+d (OS X, SCapp), F1 (Windows, PsyCollider), Ctrl-c Ctrl-h (Emacs), K (vim), Ctrl+U (gedit/sced).</p>
-<p class="p3">SuperCollider uses <i>classes</i>, whose names all begin with a capital letter. The help file for a class can be called up by selecting the text of a class name, then asking for help. You can also browse the class directory:</p>
-<p class="p4"><span class="s2">Object</span><span class="s3">.browse; </span>//execute this line of code</p>
-<table cellspacing="0" cellpadding="0" class="t1">
-<tbody>
-<tr>
-<td valign="top" class="td3">
-<table cellspacing="0" cellpadding="0" class="t2">
-<tbody>
-<tr>
-<td valign="middle" class="td4">
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p5"><b>Getting Help</b></p>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="More-On-Getting-Help.html">More On Getting Help</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Tutorials/How-to-Use-the-Interpreter.html">How To Use The Interpreter</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Understanding-Errors.html">Understanding Errors</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Debugging-tips.html">Debugging Tips</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Other Topics/Internal-Snooping.html">Internal Snooping</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="GUI/Cocoa-GUI/DocumentAutoCompletion.html">Auto Completion</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-<td valign="top" class="td3">
-<table cellspacing="0" cellpadding="0" class="t2">
-<tbody>
-<tr>
-<td valign="top" class="td4">
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p5"><b>Tutorials</b></p>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Tutorials/Getting-Started/Getting Started With SC.html">Getting Started With SC</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Tutorials/Mark_Polishook_tutorial/Introductory_tutorial.html">Introductory Tutorial</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Tutorials/Tutorial.html">Tutorial</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="UGens/Tour_of_UGens.html">Tour of Unit Generators</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Streams-Patterns-Events/A Practical Guide/PG_01_Introduction.html">A Practical Guide to Patterns</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Streams-Patterns-Events/Streams.html">Streams Overview</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Glossary.html">Glossary</a></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-<td valign="top" class="td6">
-<table cellspacing="0" cellpadding="0" class="t2">
-<tbody>
-<tr>
-<td valign="top" class="td4">
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p5"><b>Overviews</b></p>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Operators.html">Operators</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Collections/Collections.html">Collections</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="UGens/FFT/FFT Overview.html">FFT Overview</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="GUI/GUI-Overview.html">GUI Overview</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="GUI/GUI-Classes.html">GUI Classes</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Other Topics/Non-Realtime-Synthesis.html">Non-Realtime Synthesis</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Other Topics/Randomness.html">Randomness</a></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td3">
-<table cellspacing="0" cellpadding="0" class="t2">
-<tbody>
-<tr>
-<td valign="top" class="td4">
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p5"><b>Language Reference</b></p>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Intro-to-Objects.html">Intro To Objects</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Method-Calls.html">Method Calls</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Assignment.html">Assignment</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Comments.html">Comments</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Expression-Sequence.html">Expression Sequence</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Functions.html">Functions</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Scope.html">Scope</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Control-Structures.html">Control Structures</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Classes.html">Classes</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Polymorphism.html">Polymorphism</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Syntax-Shortcuts.html">Syntax Shortcuts</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/SymbolicNotations.html">Symbolic Notations</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Adverbs.html">Adverbs</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Partial-Application.html">Partial Application</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/J_concepts_in_SC.html">J Concepts In SC</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/ListComprehensions.html">List Comprehensions</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Language/Literals.html">Literals</a></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-<td valign="top" class="td7">
-<table cellspacing="0" cellpadding="0" class="t2">
-<tbody>
-<tr>
-<td valign="top" class="td4">
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p5"><b>Architecture</b></p>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/Server-Architecture.html">Server Architecture</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/Server-Command-Reference.html">Server Command Reference</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Tutorials/UGens-and-Synths.html">Unit Generators and Synths</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/ClientVsServer.html">Client versus Server</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/NodeMessaging.html">Node Messaging</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Other Topics/MultiChannel.html">Multichannel Expansion</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/Order-of-execution.html">Order Of Execution</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/ServerTiming.html">Server Timing</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/default_group.html">Default Group</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/bundledCommands.html">Bundled Server Messages</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="ServerArchitecture/Synth-Definition-File-Format.html">SynthDef File Format</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-<td valign="top" class="td6">
-<table cellspacing="0" cellpadding="0" class="t2">
-<tbody>
-<tr>
-<td valign="top" class="td4">
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p5"><b>Extending SC</b></p>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Quarks/Quarks.html">Quarks</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Using-the-Startup-File.html">Using The Startup File</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Using-Extensions.html">Using Extensions</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Writing-Classes.html">Writing Classes</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="GUI/Cocoa-GUI/SCUserViewSubclassing/SCUserView-Subclassing.html">SCUserView Subclassing</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Writing_Unit_Generators.html">Writing Unit Generators</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Writing Primitives.html">Writing Primitives</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Creating-Standalone-Applications.html">Standalone Applications</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Style Guide/Documentation Style Guide.html">Documentation Style Guide</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Notes-on-the-HTML-Help-System.html">HTML Help System</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/publishing_code.html">Publishing Code</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Extending and Customizing SC/Crossplatform.html">Crossplatform</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p7"><br></p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td7">
-<table cellspacing="0" cellpadding="0" class="t2">
-<tbody>
-<tr>
-<td valign="top" class="td4">
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p5"><b>Third Party Libraries</b></p>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Libraries/JITLib/JITLib.html">Just In Time Programming</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="Libraries/crucial/CRUCIAL-LIBRARY.html">Crucial Library</a></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-<td valign="top" class="td7">
-<table cellspacing="0" cellpadding="0" class="t2">
-<tbody>
-<tr>
-<td valign="top" class="td4">
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-<p class="p5"><b>Legacy SuperCollider</b></p>
-<p class="p1"><span class="s1"><img src="attachments/Help/empty.png" alt="attachments/Help/empty.png"></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="3vs2/SC3vsSC2.html">SC3 vs SC2</a></span></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td5">
-<p class="p6"><span class="s4"><a href="3vs2/Backwards-Compatibility.html">Backwards Compatibility</a></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-</td>
-</tr>
-</tbody>
-</table>
-<p class="p8"><br></p>
-<p class="p9"><i>SuperCollider is </i><a href="Other Topics/Licensing.html"><span class="s2"><i>free software published under the GPL</i></span></a>.<br/>
-SuperCollider help docs are published under the </i><a href="Other Topics/HelpDocsLicensing.html"><span class="s2"><i>Creative Commons CC-BY-SA-3 license</i></span></a></p>
-</body>
-</html>
diff --git a/Help/Language/Adverbs.html b/Help/Language/Adverbs.html
deleted file mode 100644
index 97adb8e..0000000
--- a/Help/Language/Adverbs.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-</style>
-</head>
-<body>
-<p class="p1"><b>Adverbs for Binary Operators</b></p>
-<p class="p2"><br></p>
-<p class="p3">Adverbs are a third argument passed to binary operators that modifies how they iterate over SequenceableCollections or Streams. The idea for adverbs is taken from the J programming language which is a successor of APL.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Adverbs and SequenceableCollections</b></p>
-<p class="p4"><br></p>
-<p class="p3">Normally when you add two arrays like this:</p>
-<p class="p2"><br></p>
-<p class="p6">[10, 20, 30, 40, 50] + [1, 2, 3]</p>
-<p class="p2"><br></p>
-<p class="p3">You get this result:</p>
-<p class="p2"><br></p>
-<p class="p6">[ 11, 22, 33, 41, 52 ]</p>
-<p class="p2"><br></p>
-<p class="p3">A new array is created which is the length of the longer array and items from each array are added together by wrapped indexing.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">Using adverbs can change this behavior. Adverbs are symbols and they follow a '.' after the binary operator. Adverbs can be applied to all binary operators.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>adverb 's'</b></p>
-<p class="p4"><br></p>
-<p class="p3">The first adverb is 's' which means 'short'. The add operation now returns the shorter of the two arrays.</p>
-<p class="p2"><br></p>
-<p class="p6">[10, 20, 30, 40, 50] +.s [1, 2, 3]</p>
-<p class="p2"><br></p>
-<p class="p3">returns:</p>
-<p class="p2"><br></p>
-<p class="p6">[ 11, 22, 33 ]</p>
-<p class="p2"><br></p>
-<p class="p3"><b>adverb 'f'</b></p>
-<p class="p2"><br></p>
-<p class="p3">Another adverb is 'f' which uses folded indexing instead of wrapped:</p>
-<p class="p2"><br></p>
-<p class="p6">[10, 20, 30, 40, 50] +.f [1, 2, 3]</p>
-<p class="p2"><br></p>
-<p class="p3">returns:</p>
-<p class="p2"><br></p>
-<p class="p6">[ 11, 22, 33, 42, 51 ]</p>
-<p class="p2"><br></p>
-<p class="p3"><b>adverb 't'</b></p>
-<p class="p2"><br></p>
-<p class="p3">The table adverb 't' makes an array of arrays where each item in the first array is added to the whole second array and the resulting arrays are collected.</p>
-<p class="p2"><br></p>
-<p class="p6">[10, 20, 30, 40, 50] +.t [1, 2, 3]</p>
-<p class="p2"><br></p>
-<p class="p3">returns:</p>
-<p class="p2"><br></p>
-<p class="p6">[ [ 11, 12, 13 ], [ 21, 22, 23 ], [ 31, 32, 33 ], [ 41, 42, 43 ], [ 51, 52, 53 ] ]</p>
-<p class="p2"><br></p>
-<p class="p3"><b>adverb 'x'</b></p>
-<p class="p2"><br></p>
-<p class="p3">The cross adverb 'x' is like table, except that the result is a flat array:</p>
-<p class="p2"><br></p>
-<p class="p6">[10, 20, 30, 40, 50] +.x [1, 2, 3]</p>
-<p class="p2"><br></p>
-<p class="p6">[ 11, 12, 13, 21, 22, 23, 31, 32, 33, 41, 42, 43, 51, 52, 53 ]</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Adverbs and Streams</b></p>
-<p class="p2"><br></p>
-<p class="p3">There is currently one adverb defined for streams. This is the cross adverb, 'x'.</p>
-<p class="p4"><br></p>
-<p class="p3">Normally when you add two streams like this:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">p = (<span class="s1">Pseq</span>([10, 20]) + <span class="s1">Pseq</span>([1, 2, 3])).asStream;</p>
-<p class="p6">Array.fill(3, { p.next });</p>
-<p class="p2"><br></p>
-<p class="p3">you get this:</p>
-<p class="p2"><br></p>
-<p class="p6">[ 11, 22, nil ]</p>
-<p class="p2"><br></p>
-<p class="p3">The items are paired sequentially and the stream ends when the earliest stream ends.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">The cross adverb allows you to pair each item in the first stream with every item in the second stream.</p>
-<p class="p2"><br></p>
-<p class="p6">p = (<span class="s1">Pseq</span>([10, 20]) +.x <span class="s1">Pseq</span>([1, 2, 3])).asStream;</p>
-<p class="p6">Array.fill(7, { p.next });</p>
-<p class="p2"><br></p>
-<p class="p3">the result is:</p>
-<p class="p2"><br></p>
-<p class="p6">[ 11, 12, 13, 21, 22, 23, nil ]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">You can string these together. Every item in the left stream operand is "ornamented" by the right stream operand.</p>
-<p class="p2"><br></p>
-<p class="p6">p = (<span class="s1">Pseq</span>([100, 200]) +.x <span class="s1">Pseq</span>([10, 20, 30]) +.x <span class="s1">Pseq</span>([1, 2, 3, 4])).asStream;</p>
-<p class="p6">Array.fill(25, { p.next });</p>
-<p class="p2"><br></p>
-<p class="p6">[ 111, 112, 113, 114, 121, 122, 123, 124, 131, 132, 133, 134,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-converted-space">  </span>211, 212, 213, 214, 221, 222, 223, 224, 231, 232, 233, 234, nil ]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Sound example:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.17, <span class="s3">\degree</span>, <span class="s2">Pwhite</span>(0, 6) +.x <span class="s2">Pseq</span>([[0, 2, 4], 1, [0, 2], 3])).trace.play</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Assignment.html b/Help/Language/Assignment.html
deleted file mode 100644
index 51372f0..0000000
--- a/Help/Language/Assignment.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #a71e12}
-span.s1 {color: #a71e12}
-span.s2 {color: #000000}
-</style>
-</head>
-<body>
-<p class="p1"><b>Assignment Statements<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Single Assignment</b></p>
-<p class="p2"><br></p>
-<p class="p3">A single assignment assigns the value of an expression on the right hand side to a variable on the left hand side. A single assignment is in the form:</p>
-<p class="p2"><br></p>
-<p class="p3"><variable> = <an expression></p>
-<p class="p2"><br></p>
-<p class="p3">examples:</p>
-<p class="p2"><br></p>
-<p class="p4">x = [1, 2, 3, 4].rotate(1);</p>
-<p class="p4">c = a + b;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Multiple Assignment</b></p>
-<p class="p2"><br></p>
-<p class="p3">A multiple assignment statement assigns the elements of a Collection which is the result of an expression on the right hand side, to a list of variables on the left hand side. A multiple assignment statement is preceeded by the symbol #. If the last variable on the left is preceeded by three dots, then the entire remainder of the collection is assigned to that variable. There must be at least one variable name before the ellipsis.</p>
-<p class="p2"><br></p>
-<p class="p3">The form of a multiple assignment is:</p>
-<p class="p2"><br></p>
-<p class="p3"># <list of variables> = <expression></p>
-<p class="p3"><span class="Apple-converted-space"> </span>-- or --</p>
-<p class="p3"># <list of variables> ... <variable> = <expression></p>
-<p class="p2"><br></p>
-<p class="p3">examples:</p>
-<p class="p2"><br></p>
-<p class="p4"># a, b, c = [1, 2, 3, 4, 5, 6]; <span class="s1">// afterwards a=1, b=2, c=3</span></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2"># a, b ... c = [1, 2, 3, 4, 5, 6]; </span>// afterwards a=1, b=2, c = [3, 4, 5, 6]</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2"># ... a = [1, 2, 3, 4, 5, 6]; </span>// ILLEGAL, just use:<span class="Apple-converted-space">    </span>a = [1, 2, 3, 4, 5, 6];</p>
-<p class="p2"><br></p>
-<p class="p3">Multiple assignment is implemented using the 'at' method and the 'copyToEnd' method.</p>
-<p class="p3">Your right hand side expression can return any object that responds to these messages.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Instance Variable Assignment</b></p>
-<p class="p2"><br></p>
-<p class="p3">The basic syntax for setting the value of an instance variable is to use the variable's setter method which is the name of the variable with an underscore appended.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">point.x_(5); </span>// set point's x coordinate to 5</p>
-<p class="p2"><br></p>
-<p class="p3">An alternative syntax is to use instance variable assignment.</p>
-<p class="p2"><br></p>
-<p class="p4">point.x = 5;</p>
-<p class="p2"><br></p>
-<p class="p3">This type of assignment is translated to the first form by the compiler. The two syntaxes are equivalent.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Series Assignment to an ArrayedCollection or List</b></p>
-<p class="p2"><br></p>
-<p class="p3">There is a special syntax for doing assignments to a range of values in an ArrayedCollection or List.</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">a = (0,10..200);</p>
-<p class="p6"><span class="s2">a[5..10] = 1;<span class="Apple-converted-space">  </span></span>// series stepping by 1</p>
-<p class="p5"><br></p>
-<p class="p4">a = (0,10..200);</p>
-<p class="p6"><span class="s2">a[7,9..13] = 1; </span>// a series by any step size</p>
-<p class="p5"><br></p>
-<p class="p4">a = (0,10..200);</p>
-<p class="p6"><span class="s2">a[..5] = 1;<span class="Apple-converted-space">  </span></span>// from zero to n</p>
-<p class="p5"><br></p>
-<p class="p4">a = (0,10..200);</p>
-<p class="p6"><span class="s2">a[12..] = 1;<span class="Apple-converted-space">  </span></span>// from n to the end of the array</p>
-<p class="p5"><br></p>
-<p class="p4">a = (0,10..200);</p>
-<p class="p6"><span class="s2">a[1,3..] = 1;<span class="Apple-converted-space">  </span></span>// a series to the end of the array</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/Language/Classes.html b/Help/Language/Classes.html
deleted file mode 100644
index f8624f9..0000000
--- a/Help/Language/Classes.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #002cab}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #872c1c}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0024f8}
-span.s2 {color: #002cab}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Classes</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>All objects in SuperCollider are members of a class that describes the objects' data and interface. The name of a class must begin with a capital letter. Class names are the only global values in the SC language. Since classes are themselves objects, the value of a class name identifier is the object representing that class.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Instance Variables</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>The data of an object is contained in its instance variables. Instance variables are of two kinds, named and indexed. Each object contains a separate copy of its instance variables.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Some classes' instances have no instance variables at all but instead have an atomic value. Classes whose instances consist of an atomic value are <a href="../Math/Integer.html"><span class="s1">Integer</span></a>, <a href="../Math/Float.html"><span class="s1">Float</span></a>, <a href="../Core/Symbol.html"><span class="s1">Symbol</span></a>, <a href="../Core/True.html"><span class="s1">True</span></a>, <a href="../Core/False.html"><span class="s1">False</span></a>, <a href="../Core/Nil.html"><span class="s1">Nil</span></a>, <a href="../Math/Infinitum.html"><span class="s1">Infinitum</span></a>, <a href="../Core/Char.html"><span class="s1">Char</span></a>, <a href="../GUI/GUI-Tools/Color.html"><span class="s1">Color</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Instance variables declaration lists occur after the open curly bracket of the class definition and are preceeded by the reserved word <b>var</b>. Instance variables names in the list may be initialized to a default literal value by using an equals sign. Instance variables which are not explicitly initialized will be set to nil. Instance variables that are immutable are defined by the reserved word <b>const</b>.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Instance variables may only be directly accessed and changed from within the class' own methods. Instance variables may be exposed to clients by adding getter and setter messages to the class. A <b>getter</b> message is a message with the same name as the variable which returns the value of that variable when sent to the receiver. A <b>setter</b> message is a message with the name of the variable with an underscore appended which sets the value of the instance variable to the value of the argument to the message. Getter and setter methods may be defined in the declaration of the instance variable. A getter message for an instance variable is created by typing a less than sign < before the variable name. A setter message is created by typing a greater than > sign before the variable name. If both occur then they must occur in the order <>.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">var</span> a, <b, >c, <>d;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>a has no getter or setter.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>b has a getter but not a setter.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>c has only a setter.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>d has both a getter and setter.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">Point<span class="s3"> {</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// x and y are instance variables which have both getter and setter methods</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// and default to zero.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> <>x = 0, <>y = 0;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>...</p>
-<p class="p5">}</p>
-<p class="p8"><br></p>
-<p class="p5">p = <span class="s2">Point</span>.new;</p>
-<p class="p7"><span class="s3">p.x_(5);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// send setter message to set x to 5</p>
-<p class="p7"><span class="s3">p.y_(7);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// send setter message to set y to 7</p>
-<p class="p7"><span class="s3">p.x = 5;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// send setter message using setter assignment (See [03 Assignment])</p>
-<p class="p7"><span class="s3">p.y = 7;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// send setter message using setter assignment (See [03 Assignment])</p>
-<p class="p7"><span class="s3">a = p.x;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// send getter message for x</p>
-<p class="p7"><span class="s3">b = p.y;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// send getter message for y</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Class Variables</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Class variables are values that are shared by all objects in the class. Class variable declaration lists are preceeded by the reserved word <b>classvar</b> and may be interspersed with instance variable declaration lists. Class variables like instance variables may only be directly accessed by methods of the class. Class variables may also have getter and setter methods created for them using the less than < and greater than > symbols.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>The messages of a class' interface are implemented in the methods of the class. When an object is sent a message the method whose name matches the message selector in the receiver's class is executed.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Method definitions follow the class variable and instance variable declarations in the class.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Method definitions are similar to FunctionDefs in syntax. Method definitions begin with the message selector. The message selector must be an identifier or a binary operator. Methods have arguments and variable declarations with the same syntax as in FunctionDefs. Methods however have an implicit first argument named <b>this</b> which is the receiver of the message. The variable 'this' may be referred to just like any of the other arguments and variables in the method. You may not assign a value to 'this'.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Class Methods are methods that implement messages sent to the class object. A common example is the message <b>new</b> which is sent to the class object to create a new instance of the class. Class method names have an asterisk preceeding the message selector.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">See also: <a href="../Core/Kernel/Class.html"><span class="s1">Class</span></a></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Comments.html b/Help/Language/Comments.html
deleted file mode 100644
index a1796b4..0000000
--- a/Help/Language/Comments.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Comments</b><span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p3">Comments begin with <span class="s2">//</span> and go until the end of the line. Comments can also be delimited with <span class="s2">/*</span> and <span class="s2">*/</span>.</p>
-<p class="p3">examples:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// single line comment</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>/*</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>multi</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>line</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>comment</p>
-<p class="p4"><span class="Apple-tab-span">	</span>*/</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>/* Unlike C, you can have /* nested */ comments */</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Language/Control-Structures.html b/Help/Language/Control-Structures.html
deleted file mode 100644
index fe76280..0000000
--- a/Help/Language/Control-Structures.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000; min-height: 14.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-span.s1 {color: #002bfe}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #bf0000}
-span.s5 {font: 12.0px Monaco}
-span.s6 {color: #606060}
-span.s7 {color: #007300}
-span.s8 {font: 9.0px Monaco}
-span.s9 {font: 9.0px Monaco; color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Control Structures</b></p>
-<p class="p2"><br></p>
-<p class="p3">Control structures in SuperCollider are implemented via message sends. Here are a few of those available.<span class="Apple-converted-space"> </span></p>
-<p class="p3">See <a href="Syntax-Shortcuts.html"><span class="s1">Syntax-Shortcuts</span></a> for the various ways expressions can be written.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>If</b></p>
-<p class="p2"><br></p>
-<p class="p3">Conditional execution is implemented via the <b>if</b> message. The <b>if</b> message is sent to an expression which must return a Boolean value. In addition it takes two arguments: a function to execute if the expression is true and another optional function to execute if the expression is false. The <b>if</b> message returns the value of the function which is executed. If the falseFunc is not present and the expression is false then the result of the <b>if</b> message is nil.</p>
-<p class="p2"><br></p>
-<p class="p3">syntax:</p>
-<p class="p2"><br></p>
-<p class="p4">if (expr, trueFunc, falseFunc);</p>
-<p class="p4">..or..</p>
-<p class="p4">expr.if (trueFunc, falseFunc);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">see also: the<b> </b><a href="../Core/if.html">if</a><b> helpfile</b></p>
-<p class="p2"><br></p>
-<p class="p3">examples:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">if ( [</span><span class="s3">false</span><span class="s2">, </span><span class="s3">true</span><span class="s2">].choose,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Boolean expression (chooses one at random)</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>{ </span>"expression was true"<span class="s2">.postln },<span class="Apple-tab-span">	</span></span><span class="s4">// true function</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>{ </span>"expression was false"<span class="s2">.postln }<span class="Apple-tab-span">	</span></span><span class="s4">// false function</span></p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> a = 1, z;</p>
-<p class="p8">z = if (a < 5, { 100 },{ 200 });</p>
-<p class="p8">z.postln;</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> x;</p>
-<p class="p8">if (x.isNil, { x = 99 });</p>
-<p class="p8">x.postln;</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p3"><span class="s5">'</span>If' expressions are optimized (i.e. inlined) by the compiler if they do not contain variable declarations in the trueFunc and the falseFunc.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>While</b></p>
-<p class="p2"><br></p>
-<p class="p3">The <b>while</b> message implements conditional execution of a loop. If the testFunc answers true when evaluated, then the bodyFunc is evaluated and the process is repeated. Once the testFunc returns false, the loop terminates.</p>
-<p class="p2"><br></p>
-<p class="p3">syntax:</p>
-<p class="p2"><br></p>
-<p class="p4">while ( testFunc, bodyFunc );</p>
-<p class="p4">..or..</p>
-<p class="p4">testFunc.while( bodyFunc );</p>
-<p class="p2"><br></p>
-<p class="p3">example:</p>
-<p class="p2"><br></p>
-<p class="p8">(</p>
-<p class="p8">i = 0;</p>
-<p class="p8">while ( { i < 5 }, { i = i + 1; <span class="s6">"boing"</span>.postln });</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p3"><span class="s5">'</span>While' expressions are optimized by the compiler if they do not contain variable declarations in the testFunc and the bodyFunc.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>For</b></p>
-<p class="p2"><br></p>
-<p class="p3">The <b>for</b> message implements iteration over an integer series from a starting value to an end value stepping by one each time. A function is evaluated each iteration and is passed the iterated numeric value as an argument.</p>
-<p class="p2"><br></p>
-<p class="p3">syntax:</p>
-<p class="p2"><br></p>
-<p class="p4">for ( startValue, endValue, function )</p>
-<p class="p4">..or..</p>
-<p class="p4">startValue.for ( endValue, function )</p>
-<p class="p2"><br></p>
-<p class="p3">example:</p>
-<p class="p2"><br></p>
-<p class="p8">for (3, 7, { <span class="s3">arg</span> i; i.postln }); <span class="s4">// prints values 3 through 7</span></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p1"><b>ForBy</b></p>
-<p class="p2"><br></p>
-<p class="p3">The <b>forBy</b> selector implements iteration over an integer series with a variable step size. A function is evaluated each iteration and is passed the iterated numeric value as an argument.</p>
-<p class="p2"><br></p>
-<p class="p3">syntax:</p>
-<p class="p2"><br></p>
-<p class="p4">forBy ( startValue, endValue, stepValue, function );</p>
-<p class="p4">..or..</p>
-<p class="p4">startValue.forBy ( endValue, stepValue, function );</p>
-<p class="p11"><br></p>
-<p class="p2"><br></p>
-<p class="p3">example:</p>
-<p class="p2"><br></p>
-<p class="p8">forBy (0, 8, 2, { <span class="s3">arg</span> i; i.postln }); <span class="s4">// prints values 0 through 8 by 2's</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Do</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Do</b> is used to iterate over a collection. Positive Integers also respond to 'do' by iterating from zero up to their value. Collections iterate, calling the function for each object they contain. Other kinds of Objects respond to do by passing themselves to the function one time. The function is called with two arguments, the item, and an iteration counter.</p>
-<p class="p2"><br></p>
-<p class="p3">syntax:</p>
-<p class="p2"><br></p>
-<p class="p4">do ( collection, function )</p>
-<p class="p4">..or..</p>
-<p class="p4">collection.do(function)</p>
-<p class="p11"><br></p>
-<p class="p3">example:</p>
-<p class="p2"><br></p>
-<p class="p8">[ 1, 2, <span class="s6">"abc"</span>, (3 at 4) ].do({ <span class="s3">arg</span> item, i; [i, item].postln; });</p>
-<p class="p9"><br></p>
-<p class="p8">5.do({ <span class="s3">arg</span> item; item.postln }); <span class="s4">// iterates from zero to four</span></p>
-<p class="p9"><br></p>
-<p class="p6"><span class="s6">"you"</span><span class="s2">.do({ </span><span class="s3">arg</span><span class="s2"> item; item.postln }); </span>// a String is a collection of characters</p>
-<p class="p9"><br></p>
-<p class="p6"><span class="s7">'they'</span><span class="s2">.do({ </span><span class="s3">arg</span><span class="s2"> item; item.postln }); </span>// a Symbol is a singular item</p>
-<p class="p9"><br></p>
-<p class="p8">(8..20).do({ <span class="s3">arg</span> item; item.postln }); <span class="s4">// iterates from eight to twenty<span class="Apple-converted-space"> </span></span></p>
-<p class="p9"><br></p>
-<p class="p6"><span class="s2">(8,10..20).do({ </span><span class="s3">arg</span><span class="s2"> item; item.postln }); </span>// iterates from eight to twenty, with stepsize two</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="s3">Routine</span>({ <span class="s3">var</span> i=10; while { i > 0 } { i.yield; i = i - 5.0.rand } }).do({ <span class="s3">arg</span> item; item.postln });</p>
-<p class="p12"><br></p>
-<p class="p5"><b>Note:</b> The syntax (8..20).do uses an optimization to avoid generating an array that is used only for iteration (but which would be discarded thereafter). The return value of <span class="s8">(8..20).do({ </span><span class="s9">|item|</span><span class="s8"> item.postln })</span> is 8, the starting value.</p>
-<p class="p12"><br></p>
-<p class="p5"><span class="s8">(8..20) do: { </span><span class="s9">|item|</span><span class="s8"> item.postln }</span> is not optimized, and returns the array.</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p1"><b>Switch</b></p>
-<p class="p2"><br></p>
-<p class="p3">Object implements a <b>switch </b>method which allows for conditional evaluation with multiple cases. These are implemented as pairs of test objects (tested using if this == test.value) and corresponding functions to be evaluated if true. The switch statement will be inlined if the test objects are all Floats, Integers, Symbols, Chars, nil, false, true and if the functions have no variable or argument declarations. The inlined switch uses a hash lookup (which is faster than nested if statements), so it should be very fast and scale to any number of clauses.</p>
-<p class="p2"><br></p>
-<p class="p13"><br></p>
-<p class="p8">(</p>
-<p class="p6"><span class="s3">var</span><span class="s2"> x=0; </span>//also try 1</p>
-<p class="p8">switch(x,0,{<span class="s6">"hello"</span>}, 1, {<span class="s6">"goodbye"</span>})</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> x, z;</p>
-<p class="p8">z = [0, 1, 1.1, 1.3, 1.5, 2];</p>
-<p class="p8">switch (z.choose.postln,</p>
-<p class="p8"><span class="Apple-tab-span">	</span>1, <span class="Apple-converted-space">  </span>{ <span class="s7">\no</span> },</p>
-<p class="p8"><span class="Apple-tab-span">	</span>1.1, { <span class="s7">\wrong</span> },</p>
-<p class="p8"><span class="Apple-tab-span">	</span>1.3, { <span class="s7">\wrong</span> },</p>
-<p class="p8"><span class="Apple-tab-span">	</span>1.5, { <span class="s7">\wrong</span> },</p>
-<p class="p8"><span class="Apple-tab-span">	</span>2, <span class="Apple-converted-space">  </span>{ <span class="s7">\wrong</span> },</p>
-<p class="p8"><span class="Apple-tab-span">	</span>0, <span class="Apple-converted-space">  </span>{ <span class="s7">\true</span> }</p>
-<p class="p8">).postln;</p>
-<p class="p8">)</p>
-<p class="p14"><br></p>
-<p class="p5">or:</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> x, z;</p>
-<p class="p8">z = [0, 1, 1.1, 1.3, 1.5, 2];</p>
-<p class="p8">x = switch (z.choose)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{1} <span class="Apple-converted-space">  </span>{ <span class="s7">\no</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{1.1} { <span class="s7">\wrong</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{1.3} { <span class="s7">\wrong</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{1.5} { <span class="s7">\wrong</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{2} <span class="Apple-converted-space">  </span>{ <span class="s7">\wrong</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{0} <span class="Apple-converted-space">  </span>{ <span class="s7">\true</span> };</p>
-<p class="p8">x.postln;</p>
-<p class="p8">)</p>
-<p class="p15"><br></p>
-<p class="p1"><b>Case</b></p>
-<p class="p15"><br></p>
-<p class="p3">Function implements a <b>case </b>method which allows for conditional evaluation with multiple cases. Since the receiver represents the first case this can be simply written as pairs of test functions and corresponding functions to be evaluated if true. Case is inlined and is therefore just as efficient as nested if statements.</p>
-<p class="p15"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> i, x, z;</p>
-<p class="p8">z = [0, 1, 1.1, 1.3, 1.5, 2];</p>
-<p class="p8">i = z.choose;</p>
-<p class="p8">x = case</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{ i == 1 } <span class="Apple-converted-space">  </span>{ <span class="s7">\no</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{ i == 1.1 } { <span class="s7">\wrong</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{ i == 1.3 } { <span class="s7">\wrong</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{ i == 1.5 } { <span class="s7">\wrong</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{ i == 2 } <span class="Apple-converted-space">  </span>{ <span class="s7">\wrong</span> }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{ i == 0 } <span class="Apple-converted-space">  </span>{ <span class="s7">\true</span> };</p>
-<p class="p8">x.postln;</p>
-<p class="p8">)</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p1"><b>Other Control Structures</b></p>
-<p class="p2"><br></p>
-<p class="p3">Using Functions, many control structures can be defined like the ones above. In the class <b>Collection</b> there are many more messages defined for iterating over Collections.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Debugging-tips.html b/Help/Language/Debugging-tips.html
deleted file mode 100644
index 05e68df..0000000
--- a/Help/Language/Debugging-tips.html
+++ /dev/null
@@ -1,434 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0022f5}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #906739}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #a71e12}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #326f17}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {color: #326f17}
-span.s3 {color: #000000}
-span.s4 {color: #a71e12}
-span.s5 {color: #df2818}
-span.s6 {color: #6ff634}
-span.s7 {color: #dd37f7}
-span.s8 {color: #e98425}
-span.s9 {color: #0022f5}
-span.s10 {color: #906739}
-span.s11 {text-decoration: underline}
-span.s12 {color: #606060}
-span.s13 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Debugging tips<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Debugging synthdefs<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>Debugging client-to-server communication</b></p>
-<p class="p3"><b>Debugging client code<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Debugging synthdefs<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4">The challenge in debugging synthdefs is the invisibility of the server's operations. There are a handful of techniques to expose the output of various UGens.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>SendTrig / OSCresponderNode<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4">SendTrig is originally intended to send a trigger message back to the client, so the client can take further action on the server. However, it can be used to send any numeric value back to the client, which can then be printed out.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">To print out the values, you need to create an OSCresponderNode as follows:</p>
-<p class="p2"><br></p>
-<p class="p5">o = <span class="s1">OSCresponderNode</span>(myServer.addr, <span class="s2">'/tr'</span>, { <span class="s1">|time, resp, msg|</span> msg.postln }).add;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Each line of output is an array with four values: ['/tr', defNode, id (from SendTrig), value (from SendTrig)].<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">{<span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>freq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s1">LFNoise1</span>.kr(2, 600, 800);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Impulse is needed to trigger the /tr message to be sent</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(<span class="s1">Impulse</span>.kr(4), 0, freq);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(freq, 0, 0.3) ! 2</p>
-<p class="p5">}.play;</p>
-<p class="p5">[ /tr, 1000, 0, 1340.8098144531 ]</p>
-<p class="p5">[ /tr, 1000, 0, 1153.9201660156 ]</p>
-<p class="p5">[ /tr, 1000, 0, 966.35247802734 ]</p>
-<p class="p5">[ /tr, 1000, 0, 629.31628417969 ]</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s3">o.remove;<span class="Apple-converted-space">  </span></span>// when done, you need to clean up the OSCresponderNode</p>
-<p class="p2"><br></p>
-<p class="p4">If you need to track multiple values, you can store them in a collection of arrays and differentiate them by assigning different IDs in the SendTrig UGen.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">l = { <span class="s1">List</span>.new } ! 2;</p>
-<p class="p8"><span class="s3">o = </span>OSCresponderNode<span class="s3">(myServer.addr, </span><span class="s2">'/tr'</span><span class="s3">, { </span>|time, resp, msg|</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// msg[2] is the index</p>
-<p class="p5"><span class="Apple-tab-span">	</span>l[msg[2]].add(msg[3]);</p>
-<p class="p5">}).add;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p5">{<span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>freq, amp;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s1">LFNoise0</span>.kr(8, 600, 800);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>amp = <span class="s1">LFNoise1</span>.kr(10, 0.5, 0.5);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Impulse is needed to trigger the /tr message to be sent</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(<span class="s1">Impulse</span>.kr(4), 0, freq);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(<span class="s1">Impulse</span>.kr(4), 1, amp);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(freq, 0, 0.3) ! 2</p>
-<p class="p5">}.play;</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s3">o.remove;<span class="Apple-converted-space">  </span></span>// when done, you need to clean up the OSCresponderNode</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s3">l[0].array.plot<span class="Apple-tab-span">	</span></span>// view frequencies</p>
-<p class="p5">l[1].array.plot<span class="Apple-tab-span">	</span><span class="s4">// view amps</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Shared controls (Internal server only, control rate only)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4">The internal server allocates a number of control buses whose memory addresses are shared with the client. The client can poll these buses without using OSC messages.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Insert a SharedOut.kr UGen into your synthdef. Then, on the client side, use s.getSharedControl(num) to read the value. If you want to track the value over time, use a routine to poll repeatedly.</p>
-<p class="p2"><br></p>
-<p class="p5">{<span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>freq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s1">LFNoise1</span>.kr(2, 600, 800);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s1">SharedOut</span><span class="s3">.kr(0, freq);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no need for Impulse here</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(freq, 0, 0.3) ! 2</p>
-<p class="p5">}.play;</p>
-<p class="p7"><br></p>
-<p class="p5">l = <span class="s1">List</span>.new;</p>
-<p class="p5">r = fork { loop { l.add(s.getSharedControl(0)); 0.1.wait } };</p>
-<p class="p5">r.stop;</p>
-<p class="p6"><span class="s3">l.array.plot;<span class="Apple-converted-space">  </span></span>// to view the results graphically<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Server-side trace<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4">The /n_trace message causes the server to print a list of all the UGens in the node as well as their input and output values.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">It takes some practice to read a synthdef trace, but it's the ultimate source of information when a synthdef is not behaving as expected. Signal flow can be identified by looking at the numbers at inputs and outputs. When a UGen's output feeds into another's input, the values will be the same at both ends.</p>
-<p class="p2"><br></p>
-<p class="p4">For a concrete example, let's look at a synthdef that doesn't work. The intent is to generate a detuned sawtooth wave and run it through a set of parallel resonant filters whose cut-off frequencies are modulating randomly. We run the synth and generate the trace (reproduced below). The trace comes out in monochrome; colors are used here to highlight signal flow.</p>
-<p class="p2"><br></p>
-<p class="p8">SynthDef<span class="s3">(</span><span class="s2">\resonz</span><span class="s3">, { </span>|freq = 440|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig, ffreq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s1">Saw</span>.ar([freq, freq+1], 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>ffreq = <span class="s1">LFNoise1</span>.kr(2, 1, 0.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, <span class="s1">Resonz</span>.ar(sig, (800, 1000..1800) * ffreq, 0.1))</p>
-<p class="p5">}).send(s);</p>
-<p class="p7"><br></p>
-<p class="p5">a = <span class="s1">Synth</span>(<span class="s2">\resonz</span>);</p>
-<p class="p5">a.trace;</p>
-<p class="p5">a.free;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>TRACE 1005<span class="Apple-converted-space">  </span>resonz<span class="Apple-converted-space">    </span>#units: 21</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 0 Control</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out 440</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 1 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>440 1</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out 441</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 2 Saw</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>441</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out 0.451348</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 3 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>0.451348 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out 0.0902696</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 4 Saw</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>440</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out -0.367307</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 5 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>-0.367307 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out -0.0734615</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 6 LFNoise1</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>2</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out -0.836168</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 7 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>-0.836168 0.5</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out <span class="s5"><i>-0.336168</i></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 8 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>800 <span class="s5"><i>-0.336168</i></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out <span class="s5"><i>-268.934</i></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 9 Resonz</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>-0.0734615 <span class="s5"><i>-268.934</i></span> 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out <b>843934</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 10 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>1000 -0.336168</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out -336.168</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 11 Resonz</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>0.0902696 <i>-336.168</i> 0.1</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out </span><b>3.02999e+08</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 12 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>1200 -0.336168</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out -403.402</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 13 Resonz</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>-0.0734615 <i>-403.402</i> 0.1</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out </span><b>9.14995e+10</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 14 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>1400 -0.336168</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out -470.635</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 15 Resonz</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>0.0902696 <i>-470.635</i> 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out <span class="s6"><b>-5.42883</b></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 16 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>1600 -0.336168</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out -537.869</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 17 Resonz</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>-0.0734615 <i>-537.869</i> 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out <span class="s7"><b>515.506</b></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 18 BinaryOpUGen</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>1800 -0.336168</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out -605.102</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 19 Resonz</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>0.0902696 <i>-605.102</i> 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out <span class="s8"><b>32785.2</b></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>unit 20 Out</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>in<span class="Apple-converted-space">  </span>0 <b>843934 </b><span class="s9"><b>3.02999e+08</b></span><b> </b><span class="s10"><b>9.14995e+10</b></span><b> </b><span class="s6"><b>-5.42883</b></span><b> </b><span class="s7"><b>515.506</b></span><b> </b><span class="s8"><b>32785.2</b></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span>out<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Two problems leap out from the trace: first, there are six channels of the output (there should be 1), and second, all the outputs are well outside the audio range -1..1. The first is because we use multichannel expansion to produce an array of Resonz filters, but we don't mix them down into a single channel.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">The above trace uses colors to track the source of each output signal. Note that there are no out of range signals prior to each Resonz. Looking at the Resonz inputs, we see that the frequency input is negative, which will blow up most digital filters.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">The resonance frequency derives from multiplying an array by a LFNoise1. Tracing back (the red, italicized numbers), the LFNoise1 is outputting a negative number, where we expected it to be 0.5..1.5. But, the mul and add inputs are reversed!<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">If you look very carefully at the trace, you will see another problem relating to multichannel expansion. The two components of the detuned sawtooth go into alternate Resonz'es, where we expected both to go, combined, into every Resonz. To fix it, the sawtooths need to be mixed as well.</p>
-<p class="p2"><br></p>
-<p class="p8">SynthDef<span class="s3">(</span><span class="s2">\resonz</span><span class="s3">, { </span>|freq = 440|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig, ffreq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s1">Mix</span>.ar(<span class="s1">Saw</span>.ar([freq, freq+1], 0.2));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>ffreq = <span class="s1">LFNoise1</span>.kr(2, 0.5, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, <span class="s1">Mix</span>.ar(<span class="s1">Resonz</span>.ar(sig, (800, 1000..1800) * ffreq, 0.1)))</p>
-<p class="p5">}).send(s);</p>
-<p class="p7"><br></p>
-<p class="p5">a = <span class="s1">Synth</span>(<span class="s2">\resonz</span>);</p>
-<p class="p5">a.trace;</p>
-<p class="p5">a.free;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p3"><b>Debugging client-to-server communication</b></p>
-<p class="p2"><br></p>
-<p class="p4">Some bugs result from OSC messages to the server being constructed incorrectly. Julian Rohrhuber's DebugNetAddr is a convenient way to capture messages. The class may be downloaded from:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s11">http://swiki.hfbk-hamburg.de:8888/MusicTechnology/710</span><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">To use it, you need to quit the currently running local server, then create a new server using a DebugNetAddr instead of a regular NetAddr. Messages will be dumped into a new document window.</p>
-<p class="p2"><br></p>
-<p class="p5">s.quit;</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s1">Server</span>.default = s = <span class="s1">Server</span>.new(<span class="s2">'local-debug'</span>, <span class="s1">DebugNetAddr</span>(<span class="s12">"localhost"</span>, 57110));</p>
-<p class="p5">s.boot;</p>
-<p class="p5">s.makeWindow;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// optional</span></p>
-<p class="p7"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>latency nil<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// these messages get sent on bootup</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ "/notify", 1 ]</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>latency nil</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ "/g_new", 1 ]</p>
-<p class="p7"><br></p>
-<p class="p5">a = { <span class="s1">SinOsc</span>.ar(440, 0, 0.4) ! 2 }.play;</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>latency nil</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ "/d_recv", "data[ 290 ]", [ 9, "-1589009783", 1001, 0, 1, 'i_out', 0, 'out', 0 ] ]</p>
-<p class="p7"><br></p>
-<p class="p5">a.free;</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>latency nil</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ 11, 1001 ]</p>
-<p class="p7"><br></p>
-<p class="p3"><b>Debugging client code<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">SuperCollider does not have a step trace function, which makes debugging on the client side tougher, but not impossible.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Errors</b><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Learning how to read SuperCollider error output is absolutely essential. Error dumps often (though not always) contain a great deal of information: what the action was, which objects are being acted upon, and how the flow of execution reached that point.</p>
-<p class="p2"><br></p>
-<p class="p4">See the <a href="Understanding-Errors.html"><span class="s13">Understanding-Errors</span></a> help file for a tutorial.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">There's also a graphic Inspector for error dumps, which is enabled with the following command:</p>
-<p class="p2"><br></p>
-<p class="p8">Exception<span class="s3">.debug = </span>true<span class="s3">;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">// enable</span></p>
-<p class="p8">Exception<span class="s3">.debug = </span>false<span class="s3">;<span class="Apple-tab-span">	</span></span><span class="s4">// disable<span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p4">In most cases, this will give you more information than a regular error dump. Usually the regular error dump is sufficient. If you are using Environments or prototype-style programming, the graphic inspector is indispensable.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Debug output using post statements</b></p>
-<p class="p2"><br></p>
-<p class="p4">The most common approach is to insert statements to print the values of variables and expressions. Since the normal printing methods don't change the value of an expression, they can be placed in the middle of the statement without altering the processing flow. There's no significant difference between:</p>
-<p class="p2"><br></p>
-<p class="p5">if(a > 0) { positive.value(a) };</p>
-<p class="p2"><br></p>
-<p class="p4">and</p>
-<p class="p2"><br></p>
-<p class="p5">if((a > 0).postln) { positive.value(a) };<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Common methods to use are:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">.postln</p>
-<p class="p11"><span class="s3">.postcs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// post the object as a compile string</p>
-<p class="p11"><span class="s3">.debug(caller)<span class="Apple-tab-span">	</span></span>// post the object along with a tag identifying the caller</p>
-<p class="p2"><br></p>
-<p class="p4">.debug is defined in the crucial library, so Linux and Windows users may not have access to it. It's used like this:</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span><span class="Apple-tab-span">	</span>positiveFunc;</p>
-<p class="p5">positiveFunc = { <span class="s1">|a|</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span>a.debug(</span>'positiveFunc-arg a'<span class="s3">);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>a*10</p>
-<p class="p5">};</p>
-<p class="p5">a = 5;</p>
-<p class="p5">if (a > 0) { positiveFunc.value(a) };</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">// output:</p>
-<p class="p5">positiveFunc-arg a: 5</p>
-<p class="p5">50</p>
-<p class="p2"><br></p>
-<p class="p4">The caller argument is optional; however, it's very helpful for tracing the origin of erroneous values.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Another advantage of .debug is that it's easier to search for debug calls and differentiate them from legitimate postln and postcs calls.</p>
-<p class="p2"><br></p>
-<p class="p4">To print multiple values at one time, wrap them in an array before using .debug or .postcs. Note that if any of the array members are collections, postln will hide them behind the class name: "an Array, a Dictionary" etc. Use postcs if you expect to be posting collections.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">[val1, val2, val3].debug(</span><span class="s2">\myMethod</span><span class="s3">);<span class="Apple-tab-span">	</span></span>// or, for a non-Crucial way:</p>
-<p class="p5">[<span class="s2">\callerTag</span>, val1, val2, val3].postcs;</p>
-<p class="p2"><br></p>
-<p class="p4">By sprinkling these throughout your code, especially at the beginnings of functions or methods, the debugging output can give you a partial trace of which code blocks get visited in what order.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>dumpBackTrace</b></p>
-<p class="p2"><br></p>
-<p class="p4">If you discover that a particular method or function is being entered but you don't know how it got there, you can use the .dumpBackTrace method on any object. You'll get what looks like an error dump, but without the error. Execution continues normally after the stack dump.</p>
-<p class="p2"><br></p>
-<p class="p8">(</p>
-<p class="p5"><span class="s1">var</span><span class="Apple-tab-span">	</span>positiveFunc;</p>
-<p class="p5">positiveFunc = { <span class="s1">|a|</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span>a.debug(</span>'positiveFunc-arg a'<span class="s3">);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.dumpBackTrace;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a*10</p>
-<p class="p5">};</p>
-<p class="p5">a = 5;</p>
-<p class="p5">if (a > 0) { positiveFunc.value(a) };</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">// output:</p>
-<p class="p5">positiveFunc-arg a: 5</p>
-<p class="p5">CALL STACK:</p>
-<p class="p5"><span class="Apple-tab-span">	</span>< FunctionDef in closed FunctionDef ></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg a = 5</p>
-<p class="p5"><span class="Apple-tab-span">	</span>< closed FunctionDef ></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var positiveFunc = <instance of Function></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Interpreter-interpretPrintCmdLine</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Interpreter></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var res = nil</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var func = <instance of Function></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Process-interpretPrintCmdLine</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Main></p>
-<p class="p5">50</p>
-<p class="p2"><br></p>
-<p class="p4">This tells you that the function came from interpreting a closed FunctionDef (automatically created when evaluating a block of code).</p>
-<p class="p2"><br></p>
-<p class="p4">In a method definition, it's recommended to use "this.dumpBackTrace"; in a free-standing function, there is no "this" so you should pick some arbitrary object.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Tracing streams</b></p>
-<p class="p2"><br></p>
-<p class="p4">To see the results of a pattern, use the .trace method. Each output value from the pattern gets posted to the main output.</p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5"><span class="s1">SynthDescLib</span>.global.read;</p>
-<p class="p7"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(<span class="s2">\degree</span>, <span class="s1">Pwalk</span>((0..14), <span class="s1">Pstutter</span>(<span class="s1">Pwhite</span>(1, 4, <span class="s1">inf</span>), <span class="s1">Prand</span>(#[-2, -1, 1, 2], <span class="s1">inf</span>)), <span class="s1">Pseq</span>(#[-1, 1], <span class="s1">inf</span>), 0), <span class="s2">\delta</span>, 0.25, <span class="s2">\sustain</span>, 0.2, <span class="s2">\instrument</span>, <span class="s2">\default</span>).trace.play;</p>
-<p class="p7"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Debugging infinite loops or recursion</b></p>
-<p class="p2"><br></p>
-<p class="p5">while(<span class="s1">true</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">This is a bad idea. It will lock up SuperCollider and you will have to force quit. Sometimes this happens in your code and the reason isn't obvious. Debugging these situations is very painful because you might have to force quit, relaunch SuperCollider, and reload your code just to try again.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">f = { <span class="s1">|func|</span> func.value(func) };</p>
-<p class="p5">f.value(f);<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Infinite recursion, on the other hand, is more likely to cause SuperCollider to quit unexpectedly when the execution stack runs out of space.</p>
-<p class="p2"><br></p>
-<p class="p4">In Mac OS X, inserting "post" or "debug" calls will not help with infinite loops or recursion, because posted output is held in a buffer until execution is complete. If execution never completes, you never see the output.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">One useful approach is to insert statements that will cause execution to halt. The easiest is .halt, but it provides you with no information about where or how it stopped, or how it got there. If you want a more descriptive message, make up an error and throw it:</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s1">Error</span><span class="s3">(</span>"myFunction-halt"<span class="s3">).throw;<span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p4">When debugging code that crashes, place a line like this somewhere in the code. If you get the error output, you know that the infinite loop is happening after the error--so move the error.throw later and try again. If it crashes, you know the infinite loop is earlier. Eventually, after a lot of heartache, you can zero in on the location.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Here is a rogues' gallery of infinite loop gotchas--things that don't look like infinite loops, but they will kill your code quicker than you can wish you hadn't just pushed the enter key:</p>
-<p class="p2"><br></p>
-<p class="p5">i = 0;</p>
-<p class="p5">while (i < 10) { i.postln; i = i+1 }; <span class="Apple-tab-span">	</span><span class="s4">// crash</span></p>
-<p class="p2"><br></p>
-<p class="p4">While loop syntax is different in SuperCollider from C. The above loop means to check whether i < 10 once, at the beginning of the loop, then loop if the value is true. Since the loop condition is evaluated only once, it never changes, so the loop never stops. The loop condition should be written inside a function, to wit:</p>
-<p class="p2"><br></p>
-<p class="p5">i = 0;</p>
-<p class="p5">while { i < 10 } { i.postln; i = i+1 };</p>
-<p class="p2"><br></p>
-<p class="p4">Routines and empty arrays:</p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s1">Array</span>.new;</p>
-<p class="p8"><span class="s3">r = </span>Routine<span class="s3">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.do({ <span class="s1">|item|</span> item.yield });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">});<span class="Apple-converted-space"> </span></p>
-<p class="p5">r.next;<span class="Apple-tab-span">	</span><span class="s4">// crash</span></p>
-<p class="p2"><br></p>
-<p class="p4">This looks pretty innocent: iterate repeatedly over an array and yield each item successively. But, if the array is empty, the do loop never executes and yield never gets called. So, the outer loop{} runs forever, doing nothing.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Recursion is often used to walk through a tree structure. Tree structures are usually finite--no matter which branch you go down, eventually you will reach the end. If you have a data structure that is self-referential, you can easily get infinite recursion:</p>
-<p class="p2"><br></p>
-<p class="p5">a = (1..10);</p>
-<p class="p6"><span class="s3">a.put(5, a);<span class="Apple-tab-span">	</span></span>// now one of the items of a is a itself</p>
-<p class="p6"><span class="s3">a.postcs;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// crash--postcs has to walk through the entire collection, which loops on itself<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Self-referential data structures are sometimes an indication of poor design. If this is the case, avoid them.</p>
-<p class="p2"><br></p>
-<p class="p5">a = 0;</p>
-<p class="p6"><span class="s1">SystemClock</span><span class="s3">.sched(2, { a.postln });<span class="Apple-tab-span">	</span></span>// crashes when scheduler fires the function</p>
-<p class="p2"><br></p>
-<p class="p4">When a scheduled function executes, if it returns a number, the function will be rescheduled for now + the number. If the number is 0, it is effectively the same as an infinite loop.</p>
-<p class="p2"><br></p>
-<p class="p4">To fix it, make sure the function returns a non-number.</p>
-<p class="p2"><br></p>
-<p class="p5">a = 0;</p>
-<p class="p5"><span class="s1">SystemClock</span>.sched(2, { a.postln; <span class="s1">nil</span> });</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Removing debugging statements</b></p>
-<p class="p2"><br></p>
-<p class="p4">Use formatting to help your eye locate debugging statements when it's time to remove them. SuperCollider code is usually indented. If you write your debugging statements fully left-justified, they're much easier to see.</p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s1">Array</span>.new;</p>
-<p class="p8"><span class="s3">r = </span>Routine<span class="s3">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s12">"debugging"</span><span class="s3">.postln;<span class="Apple-tab-span">	</span></span>// looks like regular code, doesn't stand out</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.do({ <span class="s1">|item|</span> item.yield });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">});<span class="Apple-converted-space"> </span></p>
-<p class="p5">r.next;<span class="Apple-tab-span">	</span><span class="s4">// crash</span></p>
-<p class="p7"><br></p>
-<p class="p6">// vs:</p>
-<p class="p7"><br></p>
-<p class="p5">a = <span class="s1">Array</span>.new;</p>
-<p class="p8"><span class="s3">r = </span>Routine<span class="s3">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="s12">"debugging"</span><span class="s3">.postln;<span class="Apple-tab-span">	</span></span>// this obviously sticks out</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.do({ <span class="s1">|item|</span> item.yield });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">});<span class="Apple-converted-space"> </span></p>
-<p class="p5">r.next;<span class="Apple-tab-span">	</span><span class="s4">// crash</span></p>
-</body>
-</html>
diff --git a/Help/Language/Expression-Sequence.html b/Help/Language/Expression-Sequence.html
deleted file mode 100644
index 54319fb..0000000
--- a/Help/Language/Expression-Sequence.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #a71e12}
-span.s1 {color: #000000}
-span.s2 {font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Expression Sequence</b></p>
-<p class="p2"><br></p>
-<p class="p3">A sequence of expressions separated by semicolons and optionally terminated by a semicolon are a single expression whose value is the value of the last expression. Such a sequence may be used anywhere that a normal expression may be used.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">max( b = a * 2; b + 5,<span class="Apple-converted-space">  </span>10);<span class="Apple-tab-span">	</span></span>// computes the maximum of b+5 and 10</p>
-<p class="p2"><br></p>
-<p class="p3">In the above example, the sequence: <span class="s2">b = a * 2; b + 5 </span>acts as a single expression for the first argument to<span class="s2"> max()</span>.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Functions.html b/Help/Language/Functions.html
deleted file mode 100644
index 66c3151..0000000
--- a/Help/Language/Functions.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf; min-height: 14.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Functions</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>See also: </b><a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a>, <a href="../Core/Kernel/AbstractFunction.html"><span class="s2">AbstractFunction</span></a>, <a href="../Core/Kernel/FunctionDef.html"><span class="s2">FunctionDef</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">A <a href="../Core/Kernel/Function.html"><span class="s3">Function</span></a> is an expression which defines operations to be performed when it is sent the 'value' message. In functional languages, a function would be known as a lambda expression. Function definitions are enclosed in curly brackets {}. Argument declarations, if any, follow the open bracket. Variable declarations follow argument declarations. An expression follows the declarations.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s4">arg</span> a, b, c;<span class="Apple-converted-space">  </span><span class="s4">var</span> d; <span class="Apple-converted-space">  </span>d = a * b; c + d }</p>
-<p class="p2"><br></p>
-<p class="p4">Functions are not evaluated immediately when they occur in code, but are passed as values just like integers or strings.</p>
-<p class="p2"><br></p>
-<p class="p4">A function may be evaluated by passing it the value message and a list of arguments.</p>
-<p class="p2"><br></p>
-<p class="p4">When evaluated, the function returns the value of its expression.</p>
-<p class="p2"><br></p>
-<p class="p5">f = { <span class="s4">arg</span> a, b; a + b };</p>
-<p class="p5">f.value(4, 5).postln;</p>
-<p class="p5">f.value(10, 200).postln;</p>
-<p class="p6"><br></p>
-<p class="p4">An empty function returns the value nil when evaluated.</p>
-<p class="p6"><br></p>
-<p class="p5">{}.value.postln;</p>
-<p class="p6"><br></p>
-<p class="p4">A function can be thought as a machine able to perform a task on demand, e.g. a calculator. The calculator can receive input (args) and can output a value, the result of the performed operations. The function definition can then be thought as the building of the calculator: once built, the calculator does nothing until it is requested to work (by passing the value method to a function).</p>
-<p class="p4">The following figure depicts an empty function, input without output, output without input, and the general case with input and output.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><img src="attachments/Functions/functions.png" alt="attachments/Functions/functions.png"></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Functions</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b>Arguments</b></p>
-<p class="p2"><br></p>
-<p class="p4">An argument list immediately follows the open curly bracket of a function definition. An argument list either begins with the reserved word <b>arg</b>, or is contained between two vertical bars. If a function takes no arguments, then the argument list may be omitted.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Names of arguments in the list may be initialized to a default value by using an equals sign. Arguments which are not explicitly initialized will be set to nil if no value is passed for them.</p>
-<p class="p2"><br></p>
-<p class="p4">If the last argument in the list is preceeded by three dots (an ellipsis), then all the remaining arguments that were passed will be assigned to that variable as an Array. Arguments must be separated by commas.</p>
-<p class="p2"><br></p>
-<p class="p4">examples:</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s4">arg</span><span class="s1"> a, b, c=3; </span>// is equivalent to:</p>
-<p class="p9"><br></p>
-<p class="p5">|a, b, c=3|</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="s4">arg</span><span class="s1"> x=</span><span class="s5">'stop'</span><span class="s1">, y, z=0; </span>// these args are initialised</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="s4">arg</span><span class="s1"> a, b, c ... d; </span>// any arguments after the first 3 will be assigned to d as an Array</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">If you want all the arguments put in an Array</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">arg</span> ... z;</p>
-<p class="p6"><br></p>
-<p class="p4">In general arguments may be initialized to literals or expressions, but in the case of Function-play or SynthDef-play, they may only be initialized to literals.</p>
-<p class="p2"><br></p>
-<p class="p8">// this is okay:</p>
-<p class="p9"><br></p>
-<p class="p5">{ <span class="s4">arg</span> a = <span class="s4">Array</span>.geom(4, 100, 3); a * 4 }.value;</p>
-<p class="p9"><br></p>
-<p class="p8">// this is not:</p>
-<p class="p9"><br></p>
-<p class="p5">{ <span class="s4">arg</span> freq = <span class="s4">Array</span>.geom(4, 100, 3); <span class="s4">Mix</span>(<span class="s4">SinOsc</span>.ar(freq, 0, 0.1)) }.play; <span class="s6">// silence</span></p>
-<p class="p9"><br></p>
-<p class="p8">// but this is:</p>
-<p class="p5">{ <span class="s4">arg</span> freq =<span class="Apple-converted-space">  </span>#[ 100, 300, 900, 2700 ]; <span class="s4">Mix</span>(<span class="s4">SinOsc</span>.ar(freq, 0, 0.1)) }.play; <span class="s6">// silence</span></p>
-<p class="p2"><br></p>
-<p class="p4">See <a href="Literals.html"><span class="s3">Literals</span></a> for more information.</p>
-<p class="p2"><br></p>
-<p class="p7"><b>Variables</b></p>
-<p class="p2"><br></p>
-<p class="p4">Following the argument declarations are the variable declarations. These may be declared in any order. Variable lists are preceeded by the reserved word <b>var</b>. There can be multiple var declaration lists if necessary. Variables may be initialized to default values in the same way as arguments. Variable declarations lists may not contain an ellipsis.</p>
-<p class="p2"><br></p>
-<p class="p4">examples:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">var</span> level=0, slope=1, curve=1;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Intro-to-Objects.html b/Help/Language/Intro-to-Objects.html
deleted file mode 100644
index 984f093..0000000
--- a/Help/Language/Intro-to-Objects.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Objects, Messages</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>The SuperCollider language is an object oriented language. All entities in the language</p>
-<p class="p3">are objects. An <b>object</b> is something that has data, representing the object's state, and a set of operations that can be performed on the object. All objects are <b>instances</b> of some <b>class</b> which describes the structure of the object and its operations. Objects in SuperCollider include numbers, character strings, object collections, unit generators, wave samples, points, rectangles, graphical windows, graphical buttons, sliders and much more.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Operations upon objects are invoked by messages. A <b>message</b> is a request for an object, called the <b>receiver</b>, to perform one of its operations. The means by which the operation is performed is determined</p>
-<p class="p3">by the object's class. Objects of different classes may implement the same message in different ways, each appropriate to the class of the object. For example all objects understand the 'value' message. Many objects simply return themselves in response to 'value', but other objects such as functions and streams first evaluate themselves and return the result of that evaluation. The ability for different objects to react differently to the same message is known as <b>polymorphism</b> and is perhaps the most important concept in object oriented programming since it allows the object's behaviour to be abstract from the point of view of the user of the object (the client).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>The set of messages to which an object responds to is known as its <b>interface</b>. A set of messages that</p>
-<p class="p3">implement a specific kind behaviour is known as a <b>protocol</b>. An object's interface may include several protocols which allow the object to interact in several different contexts. For example all objects implement the 'dependancy' protocol which allow the object to notify other dependant objects that the object has changed and that the dependant should do any necessary action to update itself.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>An object's internal state may only be changed by sending it messages. This allows the implementation of the object to be hidden from the client. The advantage to this is that the client does not depend on the object's implementation and that that implementation can be changed without having to change the client.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Classes, Instance Variables, Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>An object's <b>class</b> contains the description of the object's data and operations. A class<span class="Apple-converted-space">  </span>also describes</p>
-<p class="p3">how to create an object which is a instance of that class.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>An object's data is contained in its <b>instance variables</b>. These are named variables that describe</p>
-<p class="p3">the object's state. The values of the instance variables are themselves objects. For example, instances of class Point have instance variables named 'x' and 'y' which contain the coordinate values of the Point.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>An instance variable is only directly accessible from within the class itself. The author of a class may decide to expose instance variable access to clients by adding <b>getter</b> and/or <b>setter</b> messages to the class.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>A <b>method</b> is a description of the operations necessary to implement a message for a particular class. The methods in a class tell how to implement messages sent to its instances. A class contains a method definition for each message to which its instances respond. Methods generally<span class="Apple-converted-space">  </span>fall into several categories. Some methods inquire about some property of the receiver. Others ask the receiver to make some change to its internal state. Still others may ask the receiver to return some computed value.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Summary of Terminology</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>object</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>something that has data, representing the object's state, and a set of operations</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>that can be performed on the object.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>message</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a request for an object to perform an operation.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>receiver</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the object to which a message is sent.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>class</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a description of the state and behaviour of a set of objects.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>interface</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the set of messages to which an object responds.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>protocol</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a set of messages that implement a specific kind of behaviour.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>polymorphism</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the ability for different kinds of objects to respond differently to the same message.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>method</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a description of the operations necessary to implement a message for a particular class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>instance</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>one of the objects described by a class.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>instance variable</b><span class="Apple-tab-span">	</span>a part of an object's internal state</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/J_concepts_in_SC.html b/Help/Language/J_concepts_in_SC.html
deleted file mode 100644
index d65ef14..0000000
--- a/Help/Language/J_concepts_in_SC.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #a71e12}
-span.s4 {color: #606060}
-span.s5 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">// The J programming language is a successor of APL. <http://www.jsoftware.com></p>
-<p class="p1">// These languages are made for processing arrays of data and are able to express</p>
-<p class="p1">// complex notions of iteration implicitly.</p>
-<p class="p1">// The following are some concepts borrowed from or inspired by J.</p>
-<p class="p1">// Thinking about multidimensional arrays can be both mind bending and mind expanding.</p>
-<p class="p1">// It may take some effort to grasp what is happening in these examples.</p>
-<p class="p2"><br></p>
-<p class="p1">// iota fills an array with a counter</p>
-<p class="p3">z = <span class="s1">Array</span>.iota(2, 3, 3);</p>
-<p class="p1"><span class="s2">z.rank; </span>// 3 dimensions</p>
-<p class="p1"><span class="s2">z.shape; </span>// gives the sizes of the dimensions</p>
-<p class="p1"><span class="s2">z = z.reshape(3, 2, 3); </span>// reshape changes the dimensions of an array</p>
-<p class="p1"><span class="s2">z.rank; </span>// 3 dimensions</p>
-<p class="p3">z.shape;</p>
-<p class="p2"><br></p>
-<p class="p1">// fill a 2D array</p>
-<p class="p3"><span class="s1">Array</span>.fill2D(3,3,{1.0.rand.round(0.01)});</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Array</span>.fill2D(2,3,{<span class="s1">|i,j|</span> i at j});</p>
-<p class="p2"><br></p>
-<p class="p1">// fill a 3D array</p>
-<p class="p3"><span class="s1">Array</span>.fill3D(2,2,2,{1.0.rand.round(0.01)});</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Array</span>.fill3D(2,2,2,{<span class="s1">|i,j,k|</span> `[i,j,k]});</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">// using dup to create arrays</p>
-<p class="p3">(1..4) dup: 3;</p>
-<p class="p3">100.rand dup: 10;</p>
-<p class="p3">{100.rand} dup: 10;</p>
-<p class="p3">{100.rand} dup: 3 dup: 4;</p>
-<p class="p3">{{100.rand} dup: 3} dup: 4;</p>
-<p class="p3">{<span class="s1">|i|</span> i.squared} dup: 10;</p>
-<p class="p3">{<span class="s1">|i|</span> i.nthPrime} dup: 10;</p>
-<p class="p2"><br></p>
-<p class="p1">// ! is an abbreviation of dup</p>
-<p class="p3">(1..4) ! 3;</p>
-<p class="p3">100.rand ! 10;</p>
-<p class="p3">{100.rand} ! 10;</p>
-<p class="p3">{100.rand} ! 3 ! 4;</p>
-<p class="p3">{{100.rand} ! 3} ! 4;</p>
-<p class="p3">{<span class="s1">|i|</span> i.squared} ! 10;</p>
-<p class="p3">{<span class="s1">|i|</span> i.nthPrime} ! 10;</p>
-<p class="p2"><br></p>
-<p class="p1">// other ways to do the same thing:</p>
-<p class="p1"><span class="Apple-tab-span">	</span>// partial application</p>
-<p class="p3"><span class="s1">_</span>.squared ! 10;</p>
-<p class="p3"><span class="s1">_</span>.nthPrime ! 10;</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>// operating on a list</p>
-<p class="p3">(0..9).squared;</p>
-<p class="p3">(0..9).nthPrime;</p>
-<p class="p2"><br></p>
-<p class="p1">// operator adverbs</p>
-<p class="p1">// Adverbs are a third argument passed to binary operators that modifies how they iterate over</p>
-<p class="p1">// SequenceableCollections or Streams.</p>
-<p class="p1">// see the Adverbs help file</p>
-<p class="p3">[10, 20, 30, 40, 50] + [1, 2, 3]; <span class="s3">// normal</span></p>
-<p class="p3">[10, 20, 30, 40, 50] +.f [1, 2, 3]; <span class="s3">// folded</span></p>
-<p class="p3">[10, 20, 30, 40, 50] +.s [1, 2, 3]; <span class="s3">// shorter</span></p>
-<p class="p3">[10, 20, 30, 40, 50] +.x [1, 2, 3]; <span class="s3">// cross</span></p>
-<p class="p3">[10, 20, 30, 40, 50] +.t [1, 2, 3]; <span class="s3">// table</span></p>
-<p class="p2"><br></p>
-<p class="p1">// operator depth.</p>
-<p class="p1">// J has a concept called verb rank, which is probably too complex to understand and implement<span class="Apple-converted-space"> </span></p>
-<p class="p1">// in SC, but operator depth is similar and simpler.</p>
-<p class="p1">// A binary operator can be given a depth at which to operate</p>
-<p class="p1">// negative depths iterate the opposite operand.</p>
-<p class="p1">// These are better understood by example.</p>
-<p class="p1">// It is not currently possible to combine adverb and depth.</p>
-<p class="p3">z = <span class="s1">Array</span>.iota(3,3);</p>
-<p class="p3">y = [100, 200, 300];</p>
-<p class="p3">z + y;</p>
-<p class="p1"><span class="s2">z +.0 y; </span>// same as the above. y added to each row of z</p>
-<p class="p1"><span class="s2">z +.1 y; </span>// y added to each column of z</p>
-<p class="p1"><span class="s2">z +.2 y; </span>// y added to each element of z</p>
-<p class="p1"><span class="s2">z +.-1 y; </span>// z added to each element of y</p>
-<p class="p2"><br></p>
-<p class="p1">// deepCollect operates a function at different dimensions or depths in an array.</p>
-<p class="p3">z = <span class="s1">Array</span>.iota(3, 2, 3);</p>
-<p class="p3">f = {<span class="s1">|item|</span> item.reverse };</p>
-<p class="p3">z.deepCollect(0, f);</p>
-<p class="p3">z.deepCollect(1, f);</p>
-<p class="p3">z.deepCollect(2, f);</p>
-<p class="p2"><br></p>
-<p class="p3">f = {<span class="s1">|item|</span> item.stutter };</p>
-<p class="p3">z.deepCollect(0, f);</p>
-<p class="p3">z.deepCollect(1, f);</p>
-<p class="p3">z.deepCollect(2, f);</p>
-<p class="p2"><br></p>
-<p class="p1">// slice can get sections of multidimensional arrays.</p>
-<p class="p1">// nil gets all the indices of a dimension</p>
-<p class="p3">z = <span class="s1">Array</span>.iota(4,5);</p>
-<p class="p3">z.slice(<span class="s1">nil</span>, (1..3));</p>
-<p class="p3">z.slice(2, (1..3));</p>
-<p class="p3">z.slice((2..3), (0..2));</p>
-<p class="p3">z.slice((1..3), 3);</p>
-<p class="p3">z.slice(2, 3);</p>
-<p class="p2"><br></p>
-<p class="p3">z = <span class="s1">Array</span>.iota(3,3,3);</p>
-<p class="p3">z.slice([0,1],[1,2],[0,2]);</p>
-<p class="p3">z.slice(<span class="s1">nil</span>,<span class="s1">nil</span>,[0,2]);</p>
-<p class="p3">z.slice(1);</p>
-<p class="p3">z.slice(<span class="s1">nil</span>,1);</p>
-<p class="p3">z.slice(<span class="s1">nil</span>,<span class="s1">nil</span>,1);</p>
-<p class="p3">z.slice(<span class="s1">nil</span>,2,1);</p>
-<p class="p3">z.slice(<span class="s1">nil</span>,1,(1..2));</p>
-<p class="p3">z.slice(1,[0,1]);</p>
-<p class="p3">z.flop;</p>
-<p class="p2"><br></p>
-<p class="p1">// sorting order</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s2">z = {100.rand}.dup(10); </span>// generate a random array;</p>
-<p class="p1">// order returns an array of indices representing what would be the sorted order of the array.</p>
-<p class="p3">o = z.order;<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="s2">y = z[o]; </span>// using the order as an index returns the sorted array</p>
-<p class="p2"><br></p>
-<p class="p1">// calling order on the order returns an array of indices that returns the sorted array to the<span class="Apple-converted-space"> </span></p>
-<p class="p1">// original scrambled order</p>
-<p class="p3">p = o.order;<span class="Apple-converted-space"> </span></p>
-<p class="p3">x = y[p];</p>
-<p class="p2"><br></p>
-<p class="p1">// bubbling wraps an item in an array of one element. it takes the depth and levels as arguments.</p>
-<p class="p3">z = <span class="s1">Array</span>.iota(4,4);</p>
-<p class="p3">z.bubble;</p>
-<p class="p3">z.bubble(1);</p>
-<p class="p3">z.bubble(2);</p>
-<p class="p3">z.bubble(0,2);</p>
-<p class="p3">z.bubble(1,2);</p>
-<p class="p3">z.bubble(2,2);</p>
-<p class="p1">// similarly, unbubble unwraps an Array if it contains a single element.</p>
-<p class="p3">5.unbubble;</p>
-<p class="p3">[5].unbubble;</p>
-<p class="p3">[[5]].unbubble;</p>
-<p class="p3">[[5]].unbubble(0,2);</p>
-<p class="p3">[4,5].unbubble;</p>
-<p class="p3">[[4],[5]].unbubble;</p>
-<p class="p3">[[4],[5]].unbubble(1);</p>
-<p class="p3">z.bubble.unbubble;</p>
-<p class="p3">z.bubble(1).unbubble(1);</p>
-<p class="p3">z.bubble(2).unbubble(2);</p>
-<p class="p2"><br></p>
-<p class="p1">// laminating with the +++ operator</p>
-<p class="p1">// the +++ operator takes each item from the second list and appends it to the corresponding item</p>
-<p class="p1">// in the first list. If the second list is shorter, it wraps.</p>
-<p class="p3">z = <span class="s1">Array</span>.iota(5,2);</p>
-<p class="p3">z +++ [77,88,99];</p>
-<p class="p3">z +++ [[77,88,99]];</p>
-<p class="p3">z +++ [[[77,88,99]]];</p>
-<p class="p3">z +++ [ [[77]],[[88]],[[99]] ];</p>
-<p class="p1">// same as:</p>
-<p class="p3">z +++ [77,88,99].bubble;</p>
-<p class="p3">z +++ [77,88,99].bubble(0,2);</p>
-<p class="p3">z +++ [77,88,99].bubble(1,2);</p>
-<p class="p2"><br></p>
-<p class="p3">z +++ [11,22,33].pyramidg;</p>
-<p class="p3">z +++ [11,22,33].pyramidg.bubble;</p>
-<p class="p3">z +++ [[11,22,33].pyramidg];</p>
-<p class="p3">z +++ [[[11,22,33].pyramidg]];</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">z = (1..4);</p>
-<p class="p3">10.do {<span class="s1">|i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z.pyramid(i+1).postln;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z.pyramidg(i+1).postln;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">""</span>.postln;</p>
-<p class="p3">};</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">// reshapeLike allows you to make one nested array be restructured in the same manner as another.</p>
-<p class="p2"><br></p>
-<p class="p3">a = [[10,20],[30, 40, 50], 60, 70, [80, 90]];</p>
-<p class="p3">b = [[1, 2, [3, 4], [[5], 6], 7], 8, [[9]]];</p>
-<p class="p3">a.reshapeLike(b);</p>
-<p class="p3">b.reshapeLike(a);</p>
-<p class="p2"><br></p>
-<p class="p1">// If the lengths are different, the default behaviour is to wrap:</p>
-<p class="p2"><br></p>
-<p class="p3">a = [[10,20],[30, 40, 50]];</p>
-<p class="p3">b = [[1, 2, [3, 4], [[5], 6], 7], 8, [[9]]];</p>
-<p class="p3">a.reshapeLike(b);</p>
-<p class="p2"><br></p>
-<p class="p1">// but you can specify other index operators:</p>
-<p class="p2"><br></p>
-<p class="p3">a.reshapeLike(b, <span class="s5">\foldAt</span>);</p>
-<p class="p2"><br></p>
-<p class="p3">a.reshapeLike(b, <span class="s5">\clipAt</span>);</p>
-<p class="p2"><br></p>
-<p class="p3">a.reshapeLike(b, <span class="s5">\at</span>);</p>
-<p class="p2"><br></p>
-<p class="p1">// allTuples will generate all combinations of the sub arrays</p>
-<p class="p3">[[1, 2, 3], [4, 5], 6].allTuples;</p>
-<p class="p3">[[1, 2, 3], [4, 5, 6, 7], [8, 9]].allTuples;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/ListComprehensions.html b/Help/Language/ListComprehensions.html
deleted file mode 100644
index 262f014..0000000
--- a/Help/Language/ListComprehensions.html
+++ /dev/null
@@ -1,294 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Courier}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #326f17}
-span.s3 {color: #a71e12}
-span.s4 {font: 10.0px Monaco}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>List Comprehensions</b></p>
-<p class="p2"><br></p>
-<p class="p3">List comprehensions are a syntactic feature of functional programming languages like Miranda, Haskell, and Erlang which were later copied into Python.</p>
-<p class="p3">You can search the web for "list comprehensions" or "generator expressions" to learn more.<span class="Apple-converted-space"> </span></p>
-<p class="p3">Basically list comprehensions are for getting a series of solutions to a problem.</p>
-<p class="p2"><br></p>
-<p class="p3">in SC these are just a syntax macro for a longer expression.</p>
-<p class="p4"><br></p>
-<p class="p5">// read this as "all [x,y] for x in 1..5, y in 1..x, such that x+y is prime.</p>
-<p class="p6">all {:[x,y], x <- (1..5), y <- (1..x), (x+y).isPrime }</p>
-<p class="p4"><br></p>
-<p class="p6">[ [ 1, 1 ], [ 2, 1 ], [ 3, 2 ], [ 4, 1 ], [ 4, 3 ], [ 5, 2 ] ]</p>
-<p class="p4"><br></p>
-<p class="p3">the list comprehension above is equivalent to the following code:</p>
-<p class="p4"><br></p>
-<p class="p6">all(<span class="s1">Routine</span>.new({ (1..5).do {<span class="s1">|x|</span> (1..x).do {<span class="s1">|y|</span> if ((x+y).isPrime) {[x,y].yield} }}}));</p>
-<p class="p4"><br></p>
-<p class="p3">..but much more concise and much easier to keep in your head than writing it out.</p>
-<p class="p2"><br></p>
-<p class="p3">In the list comprehension compiler, simple series like (1..5) and (1..x) are treated as special cases and implemented as loops rather than making a collection.</p>
-<p class="p2"><br></p>
-<p class="p3">A list comprehension in SC is really a Routine. You can use the 'all' message to collect all of the Routine's results into a list.</p>
-<p class="p2"><br></p>
-<p class="p7"><b>A few examples</b></p>
-<p class="p4"><br></p>
-<p class="p6">all {: x/(x+1), x <- (1..5) }</p>
-<p class="p4"><br></p>
-<p class="p6">[ 0.5, 0.66666666666667, 0.75, 0.8, 0.83333333333333 ]</p>
-<p class="p4"><br></p>
-<p class="p6">all {:[x,y], x <- (1..3), y <- [<span class="s2">\a</span>,<span class="s2">\b</span>,<span class="s2">\c</span>] }</p>
-<p class="p4"><br></p>
-<p class="p6">[ [ 1, a ], [ 1, b ], [ 1, c ], [ 2, a ], [ 2, b ], [ 2, c ], [ 3, a ], [ 3, b ], [ 3, c ] ]</p>
-<p class="p4"><br></p>
-<p class="p6">all {:[x,y], x <- (0..3), y <- (x..0) }</p>
-<p class="p4"><br></p>
-<p class="p6">[ [ 0, 0 ], [ 1, 1 ], [ 1, 0 ], [ 2, 2 ], [ 2, 1 ], [ 2, 0 ], [ 3, 3 ], [ 3, 2 ], [ 3, 1 ], [ 3, 0 ] ]</p>
-<p class="p4"><br></p>
-<p class="p6">all {:y, x <- (1..4), y <- (x..1) }</p>
-<p class="p4"><br></p>
-<p class="p6">[ 1, 2, 1, 3, 2, 1, 4, 3, 2, 1 ]</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> intervals;</p>
-<p class="p5">// a function to generate intervals between all pairs of notes in a chord voicing</p>
-<p class="p6">intervals = {<span class="s1">|chord|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>all {: chord[i+gap] - chord[i],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gap <- (1 .. chord.lastIndex),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i <- (0 .. chord.lastIndex - gap)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">};</p>
-<p class="p4"><br></p>
-<p class="p6">intervals.([0,4,7,10]).postln;</p>
-<p class="p6">intervals.([0,1,3,7]).postln;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">[ 4, 3, 3, 7, 6, 10 ]</p>
-<p class="p6">[ 1, 2, 4, 3, 6, 7 ]</p>
-<p class="p4"><br></p>
-<p class="p6">all {:[y, z], x<-(0..30), <span class="s1">var</span> y = x.nthPrime, <span class="s1">var</span> z = 2 ** y - 1, z.asInteger.isPrime.not<span class="Apple-converted-space">  </span>}</p>
-<p class="p6">[ [ 11, 2047 ], [ 23, 8388607 ], [ 29, 536870911 ] ] <span class="s3">// mersenne numbers which are no primes</span></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Qualifier Clauses</b></p>
-<p class="p2"><br></p>
-<p class="p3">A list comprehension begins with <span class="s4">{: </span>and contains a body followed by several qualifier clauses separated by commas.</p>
-<p class="p2"><br></p>
-<p class="p8">{: <i>body</i> , <i>qualifiers</i> }</p>
-<p class="p2"><br></p>
-<p class="p3">There are several types of qualifier clauses that can appear after the body.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>generator clause</b></p>
-<p class="p2"><br></p>
-<p class="p3">The basic clause is the generator clause. Its syntax is<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p8"><i>name</i> <- <i>expr</i></p>
-<p class="p2"><br></p>
-<p class="p3">The expression should be something that can respond meaningfully to 'do' such as a collection or a stream.</p>
-<p class="p3">The name takes on each value of the expression.</p>
-<p class="p3">The name is a local variable whose scope extends to all clauses to the right. The name is also in scope in the body.</p>
-<p class="p2"><br></p>
-<p class="p6">all {: x, x <- (1..3) }</p>
-<p class="p4"><br></p>
-<p class="p6">[ 1, 2, 3 ]</p>
-<p class="p4"><br></p>
-<p class="p6">all {: x, x <- [\a, \b, \c] }</p>
-<p class="p4"><br></p>
-<p class="p6">[ a, b, c ]</p>
-<p class="p4"><br></p>
-<p class="p6">all {: x, x <- (1!3)++(2!2)++3 }</p>
-<p class="p4"><br></p>
-<p class="p6">[ 1, 1, 1, 2, 2, 3 ]</p>
-<p class="p4"><br></p>
-<p class="p3">multiple generators act like nested loops.</p>
-<p class="p4"><br></p>
-<p class="p6">all {: [x,y], x <- (1..2), y <- (10,20..30) }</p>
-<p class="p4"><br></p>
-<p class="p9">[ [ 1, 10 ], [ 1, 20 ], [ 1, 30 ], [ 2, 10 ], [ 2, 20 ], [ 2, 30 ] ]</p>
-<p class="p4"><br></p>
-<p class="p3">generators can depend on previous values.</p>
-<p class="p4"><br></p>
-<p class="p6">all {: x, x <- (1..3), y <- (1..x) }</p>
-<p class="p4"><br></p>
-<p class="p6">[ 1, 2, 2, 3, 3, 3 ]</p>
-<p class="p4"><br></p>
-<p class="p6">all {: x, x <- (1..3), y <- (1..4-x) }</p>
-<p class="p4"><br></p>
-<p class="p6">[ 1, 1, 1, 2, 2, 3 ]</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>guard clause</b></p>
-<p class="p2"><br></p>
-<p class="p3">A guard clause is simply an expression. It should return a boolean value.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p8"><i>expr</i></p>
-<p class="p4"><br></p>
-<p class="p3">The guard acts as a filter on the results and constrains the search.</p>
-<p class="p4"><br></p>
-<p class="p6">all {: x, x <- (0..10), x.odd }</p>
-<p class="p2"><br></p>
-<p class="p6">[ 1, 3, 5, 7, 9 ]</p>
-<p class="p2"><br></p>
-<p class="p3">x.odd is the guard and causes all even numbers to be skipped.</p>
-<p class="p2"><br></p>
-<p class="p6">all {: x, x <- (0..30), (x % 5 == 0) || x.isPowerOfTwo }</p>
-<p class="p4"><br></p>
-<p class="p6">[ 0, 1, 2, 4, 5, 8, 10, 15, 16, 20, 25, 30 ]</p>
-<p class="p2"><br></p>
-<p class="p3">you can have multiple guards.</p>
-<p class="p2"><br></p>
-<p class="p6">all {: [x,y], x <- (0..10), (x % 5 == 0) || x.isPowerOfTwo, y <- (1..2), (x+y).even }</p>
-<p class="p4"><br></p>
-<p class="p6">[ [ 0, 2 ], [ 1, 1 ], [ 2, 2 ], [ 4, 2 ], [ 5, 1 ], [ 8, 2 ], [ 10, 2 ] ]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>var clause</b></p>
-<p class="p2"><br></p>
-<p class="p3">A var clause lets you create a new variable binding that you can use in your expressions.</p>
-<p class="p3">The scope of the name extends to all clauses to the right and in the body.</p>
-<p class="p2"><br></p>
-<p class="p8">var <i>name</i> = <i>expr</i></p>
-<p class="p2"><br></p>
-<p class="p3">Unlike the generator clause, the name is bound to a single value, it doesn't iterate.</p>
-<p class="p2"><br></p>
-<p class="p6">all {: z, x <- (1..20), <span class="s1">var</span> z = (x*x-x) div: 2, z.odd }</p>
-<p class="p2"><br></p>
-<p class="p6">[ 1, 3, 15, 21, 45, 55, 91, 105, 153, 171 ]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>side effect clause</b></p>
-<p class="p2"><br></p>
-<p class="p3">This clause lets you insert code to do some side effect like printing.</p>
-<p class="p2"><br></p>
-<p class="p8">:: <i>expr</i></p>
-<p class="p2"><br></p>
-<p class="p6">all {: z, x <- (1..20), <span class="s1">var</span> z = (x*x-x) div: 2, :: [x,z].postln, z.even }</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>termination clause</b></p>
-<p class="p2"><br></p>
-<p class="p3">The termination clause is for stopping further searching for results. Once the expression becomes false,</p>
-<p class="p3">the routine halts.</p>
-<p class="p2"><br></p>
-<p class="p8">:while <i>expr</i></p>
-<p class="p2"><br></p>
-<p class="p5">// using a guard</p>
-<p class="p6">all {: z, x <- (1..20), <span class="s1">var</span> z = (x*x-x) div: 2,<span class="Apple-converted-space">  </span>:: [x,z].postln, z < 50 }</p>
-<p class="p4"><br></p>
-<p class="p5">// using a termination clause</p>
-<p class="p5">// this one stops searching, so does less work than the above.</p>
-<p class="p6">all {: z, x <- (1..20), <span class="s1">var</span> z = (x*x-x) div: 2,<span class="Apple-converted-space">  </span>:: [x,z].postln, :while z < 50 }</p>
-<p class="p2"><br></p>
-<p class="p7"><b>Constrained Search</b></p>
-<p class="p2"><br></p>
-<p class="p3">list comprehensions can solve constrained combinatorial problems like this one:</p>
-<p class="p2"><br></p>
-<p class="p3">Baker, Cooper, Fletcher, Miller, and Smith live on different floors of an apartment house that contains only five floors.</p>
-<p class="p3">Baker does not live on the top floor. Cooper does not live on the bottom floor.</p>
-<p class="p3">Fletcher does not live on either the top or the bottom floor. Miller lives on a higher floor than does Cooper.</p>
-<p class="p3">Smith does not live on a floor adjacent to Fletcher's. Fletcher does not live on a floor adjacent to Cooper's.</p>
-<p class="p3">Where does everyone live?</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6">z = {: [baker, cooper, fletcher, miller, smith] ,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> floors = (1..5),</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span>baker <- floors,<span class="Apple-converted-space">  </span>baker != 5,<span class="Apple-converted-space">  </span></span>// Baker does not live on the top floor.</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// remove baker's floor from the list. var creates a new scope, so the 'floors' on the left is a new binding.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> floors = floors.removing(baker),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span>cooper <- floors, cooper != 1, </span>// Cooper does not live on the bottom floor.</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s1">var</span><span class="s5"> floors = floors.removing(cooper), </span>// remove cooper's floor from the list.</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span>fletcher <- floors, (fletcher != 5) && (fletcher != 1) </span>// Fletcher does not live on either the top or the bottom floor.</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>&& (absdif(fletcher, cooper) > 1), </span>// Fletcher does not live on a floor adjacent to Cooper's.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> floors = floors.removing(fletcher), <span class="s3">// remove fletcher's floor</span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span>miller <- floors, miller > cooper, </span>// Miller lives on a higher floor than does Cooper.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> floors = floors.removing(miller), <span class="s3">// remove miller's floor</span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span>smith <- floors, absdif(fletcher, smith) > 1<span class="Apple-converted-space">  </span></span>// Smith does not live on a floor adjacent to Fletcher's.</p>
-<p class="p6">};</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s5">z.next; </span>// [3, 2, 4, 5, 1 ]</p>
-<p class="p5"><span class="s5">z.next; </span>// nil.<span class="Apple-converted-space">  </span>only one solution</p>
-<p class="p4"><br></p>
-<p class="p3">combinatorial problems can take a lot of time to run.</p>
-<p class="p3">you can reorder the above tests to make it run faster. generally you want to search the most constrained variables first.</p>
-<p class="p3">the most constrained person above is fletcher, so he should be searched first, then cooper, etc.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><b>Grammar:</b></p>
-<p class="p10"><br></p>
-<p class="p3">Here is the BNF grammar for list comprehensions in SC.</p>
-<p class="p4"><br></p>
-<p class="p6">[ ] - optional</p>
-<p class="p6">{ } - zero or more</p>
-<p class="p4"><br></p>
-<p class="p6"><list_compre> ::= "{:" <body> ',' <qualifiers> "}"</p>
-<p class="p4"><br></p>
-<p class="p6"><body> ::= <exprseq></p>
-<p class="p4"><br></p>
-<p class="p6"><exprseq> ::= <expr> { ";" <expr> }</p>
-<p class="p4"><br></p>
-<p class="p6"><qualifiers> ::= <qualifier> { ',' <qualifiers> }</p>
-<p class="p4"><br></p>
-<p class="p6"><qualifier> ::= <generator> | <guard> | <binding> | <side_effect> | <termination></p>
-<p class="p4"><br></p>
-<p class="p6"><generator> ::= <name> "<-" <exprseq></p>
-<p class="p4"><br></p>
-<p class="p6"><guard> ::= <exprseq></p>
-<p class="p4"><br></p>
-<p class="p6"><binding> ::= "var" <name> "=" <exprseq></p>
-<p class="p4"><br></p>
-<p class="p6"><side_effect> ::= "::" <exprseq></p>
-<p class="p4"><br></p>
-<p class="p6"><termination> ::= ":while" <exprseq></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><b>Code Generation:</b></p>
-<p class="p4"><br></p>
-<p class="p3">For each of the above clauses, here is how the code is generated. The body acts as the innermost qualifier.</p>
-<p class="p3">By understanding these translations, you can better understand how scoping and control flow work in list comprehensions.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>generator:</b></p>
-<p class="p4"><br></p>
-<p class="p6">expr.do {|name| ..next qualifier.. }</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>guard:</b></p>
-<p class="p4"><br></p>
-<p class="p6">if (expr) { ..next qualifier.. }</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>binding:</b></p>
-<p class="p4"><br></p>
-<p class="p6">{|name| ..next qualifier.. }.value(expr)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>side effect:</b></p>
-<p class="p4"><br></p>
-<p class="p6">expr ; ..next qualifier..</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>termination:</b></p>
-<p class="p4"><br></p>
-<p class="p6">if (expr) { ..next qualifier.. }{ nil.alwaysYield }</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Literals.html b/Help/Language/Literals.html
deleted file mode 100644
index 3a755bd..0000000
--- a/Help/Language/Literals.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Literals</b></p>
-<p class="p2"><br></p>
-<p class="p3">Literals are values which have a direct syntactic representation.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The following sections describe the types of literals that can be represented.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Numbers</b></p>
-<p class="p4"><br></p>
-<p class="p3">An integer is any series of digits optionally preceeded by a minus sign.</p>
-<p class="p3">examples of integers :</p>
-<p class="p5"><span class="Apple-tab-span">	</span>-13 <span class="Apple-converted-space">     </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>666 <span class="Apple-converted-space">     </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>2112 <span class="Apple-converted-space">     </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>96</p>
-<p class="p4"><br></p>
-<p class="p3">A float is one or more decimal digits followed by a decimal point followed by one or more decimal digits.<span class="Apple-converted-space"> </span></p>
-<p class="p3">You must have digits on both sides of the decimal point.<span class="Apple-converted-space">  </span>This distinguishes floating point numbers from<span class="Apple-converted-space"> </span></p>
-<p class="p3">integer expressions like:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>8.rand</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p3">examples of floats :</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.39 <span class="Apple-converted-space">     </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>98.6 <span class="Apple-converted-space">     </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>1.0 <span class="Apple-converted-space">     </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>-0.5<span class="Apple-converted-space">     </span></p>
-<p class="p6"><br></p>
-<p class="p3">Exponential notation is also supported.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>1.2e4</p>
-<p class="p5"><span class="Apple-tab-span">	</span>1e-4</p>
-<p class="p4"><br></p>
-<p class="p3">The constant pi can be appended to a number to create floating point constant:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>2pi <span class="Apple-converted-space">   </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5pi</p>
-<p class="p5"><span class="Apple-tab-span">	</span>-0.25pi</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Numbers can also be written in radices other than base 10 up to base 36.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The radix is specified in base 10 followed by the letter 'r' followed by the value written in</p>
-<p class="p3">that radix using characters 0-9,A-Z, or a-z, for digit values from 0 to 35.<span class="Apple-converted-space"> </span></p>
-<p class="p3">For example you can write hexidecimal numbers as follows:</p>
-<p class="p4"><br></p>
-<p class="p5">16rF0</p>
-<p class="p5">16rA9FF</p>
-<p class="p4"><br></p>
-<p class="p3">Binary numbers can be written as follows:</p>
-<p class="p6"><br></p>
-<p class="p5">2r01101011</p>
-<p class="p6"><br></p>
-<p class="p3">Floating point values may also be specified in any base:</p>
-<p class="p4"><br></p>
-<p class="p5">12r4A.A</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Characters</b></p>
-<p class="p4"><br></p>
-<p class="p3">Characters are preceeded by a dollar sign:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>$A<span class="Apple-converted-space">     </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>$B<span class="Apple-converted-space">     </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>$C<span class="Apple-converted-space">       </span></p>
-<p class="p4"><br></p>
-<p class="p3">Tab, linefeed, carriage return, and backslash are preceeded by a backslash:</p>
-<p class="p5"><span class="Apple-tab-span">	</span>$\t</p>
-<p class="p5"><span class="Apple-tab-span">	</span>$\n</p>
-<p class="p5"><span class="Apple-tab-span">	</span>$\r</p>
-<p class="p5"><span class="Apple-tab-span">	</span>$\\</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1"><b>Symbols</b><span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p3">A symbol is written as a string enclosed in single quotes.<span class="Apple-converted-space"> </span></p>
-<p class="p3">examples of symbols:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>'x'</p>
-<p class="p5"><span class="Apple-tab-span">	</span>'aiff'</p>
-<p class="p5"><span class="Apple-tab-span">	</span>'BigSwiftyAndAssoc'</p>
-<p class="p5"><span class="Apple-tab-span">	</span>'nowhere here' <span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>'somewhere there'<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>'.+o*o+.'</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">A symbol consisting of a single word can be written with a preceeding backslash.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>\x</p>
-<p class="p5"><span class="Apple-tab-span">	</span>\aiff</p>
-<p class="p5"><span class="Apple-tab-span">	</span>\BigSwiftyAndAssoc</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Strings</b></p>
-<p class="p4"><br></p>
-<p class="p3">Strings are written in double quotes:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>"This is a string."</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">If two or more strings are lexically adjacent, then they combine into a larger string.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">example:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>"This" " is " "also a " "string."</p>
-<p class="p4"><br></p>
-<p class="p3">Strings may span more than one line. If so, then the new line characters become part of the string.</p>
-<p class="p3">example:</p>
-<p class="p4"><br></p>
-<p class="p5">"This</p>
-<p class="p5">is<span class="Apple-converted-space"> </span></p>
-<p class="p5">also a</p>
-<p class="p5">string.</p>
-<p class="p5">"</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Identifiers</b><span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p3">Names of methods and variables begin with a lower case alphabetic character, followed<span class="Apple-converted-space">  </span>by zero or more<span class="Apple-converted-space"> </span></p>
-<p class="p3">alphanumeric characters.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p5">var abc, z123, func;</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Class Names</b></p>
-<p class="p4"><br></p>
-<p class="p3">Class names always begin with a capital letter followed<span class="Apple-converted-space">  </span>by zero or more<span class="Apple-converted-space">  </span>alphanumeric characters.</p>
-<p class="p4"><br></p>
-<p class="p5">Object</p>
-<p class="p5">Point</p>
-<p class="p5">Synth</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Special Values</b></p>
-<p class="p4"><br></p>
-<p class="p3">The singular instances of the classes True, False and Nil are written as the<span class="Apple-converted-space"> </span></p>
-<p class="p3">words true, false, nil and inf.</p>
-<p class="p4"><br></p>
-<p class="p5">x = true;</p>
-<p class="p5">y = false;</p>
-<p class="p5">z = nil;</p>
-<p class="p6"><br></p>
-<p class="p1"><b>Literal Arrays</b></p>
-<p class="p4"><br></p>
-<p class="p3">Arrays of literals are created at compile time and are written with a # preceeding the array as follows:</p>
-<p class="p4"><br></p>
-<p class="p5">#[1, 2, 'abc', "def", 4]</p>
-<p class="p6"><br></p>
-<p class="p3">Literal Arrays must be used as is and may not be altered at run time.</p>
-<p class="p4"><br></p>
-<p class="p3">In literal Arrays names are interpreted as symbols. This is not the case in regular Arrays, where they are interpreted as variable names:</p>
-<p class="p4"><br></p>
-<p class="p5">#[foo, bar]<span class="Apple-tab-span">	</span>// this is legal; an Array of Symbols</p>
-<p class="p5">[foo, bar]<span class="Apple-tab-span">	</span>// this is only legal if foo and bar have been declared as variables</p>
-<p class="p4"><br></p>
-<p class="p3">Arrays and other collections may also be created dynamically which is explained in Collections.help.</p>
-<p class="p3">Using a literal Array is faster than building an array dynamically every time you need it.</p>
-<p class="p6"><br></p>
-<p class="p3">When nesting literal arrays, only the outermost literal array needs the '#' character.</p>
-<p class="p6"><br></p>
-<p class="p5">#[[1, 2, 3], [4, 5, 6]]</p>
-<p class="p4"><br></p>
-<p class="p3">Literal Arrays can be useful for things such as tables of constants, for example note names:</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">// build a table of note names</p>
-<p class="p5">var table = ();</p>
-<p class="p5">value {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>var semitones = [0, 2, 4, 5, 7, 9, 11];</p>
-<p class="p5"><span class="Apple-tab-span">	</span>var naturalNoteNames = ["c", "d", "e", "f", "g", "a", "b"];</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(0..9).do {|o|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>naturalNoteNames.do {|c, i|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var n = (o + 1) * 12 + semitones[i];</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table[(c ++ o).asSymbol] = n;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table[(c ++ "s"<span class="Apple-converted-space">  </span>++ o).asSymbol] = n + 1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table[(c ++ "ss" ++ o).asSymbol] = n + 2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table[(c ++ "b"<span class="Apple-converted-space">  </span>++ o).asSymbol] = n - 1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table[(c ++ "bb" ++ o).asSymbol] = n - 2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5">};</p>
-<p class="p6"><br></p>
-<p class="p5">// translate note names to midi keys</p>
-<p class="p5">table.atAll(#[c4, e4, gs4, c5, e5, gs5, c6])</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Method-Calls.html b/Help/Language/Method-Calls.html
deleted file mode 100644
index 3451a69..0000000
--- a/Help/Language/Method-Calls.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #a71e12; min-height: 16.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {font: 12.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0019b7}
-span.s5 {color: #316c17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Messages</b><span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p3">Sending messages is the way things get done in an object oriented language. A message consists of a message <b>selector</b> which names the type of operation, a <b>receiver</b> to which the message is sent and in some cases a list of <b>arguments</b> which give additional information pertaining to the operation. A message always</p>
-<p class="p3">returns a result. The kind of result depends on the kind of message. In the default case, the return value is the receiver itself.</p>
-<p class="p2"><br></p>
-<p class="p3">Messages may be written using binary operators, functional notation or receiver notation.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Binary operator messages</b></p>
-<p class="p2"><br></p>
-<p class="p3">A binary operator selector is any string of characters from the list of legal binary operator characters:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>! @ % & * - + = | < > ? /</p>
-<p class="p2"><br></p>
-<p class="p3">An exception is that no operator may begin with <span class="s2">//</span> or <span class="s2">/*</span> which are comment delimiters.</p>
-<p class="p2"><br></p>
-<p class="p3">A binary operator expression consists of two expressions with a binary operator between them.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>1 + 2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sum of one and two</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>a - b<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// difference of a and b</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>x < 0.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// answer whether x is less than zero</p>
-<p class="p7"><br></p>
-<p class="p3">A binary operator can also be an identifier followed by a colon.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>10 rrand: 100</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Operator Precedence</b></p>
-<p class="p2"><br></p>
-<p class="p3">There is none. All binary operators have the same level of precedence and associate from left to right.<span class="Apple-converted-space"> </span></p>
-<p class="p3">For example, the expression:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a * b + c * d</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>is equivalent to:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>((a * b) + c) * d</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>and not:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(a * b) + (c * d)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">Therefore it is usually better style to fully parenthesize your expressions.</p>
-<p class="p6"><br></p>
-<p class="p3"><b>Functional notation messages</b></p>
-<p class="p2"><br></p>
-<p class="p3">The message selector preceeds the parenthesized argument list. The first argument in the list is actually<span class="Apple-converted-space"> </span></p>
-<p class="p3">the receiver.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>sin(x)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sine of x</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>max(a, b)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// maximum of a and b</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><b>Receiver notation messages</b></p>
-<p class="p2"><br></p>
-<p class="p3">A method call in functional notation may be converted to receiver notation by putting the receiver before the method name followed by a dot as shown below.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">max(a, b)</span><span class="Apple-converted-space">    </span>is equivalent to : <span class="Apple-converted-space">  </span><span class="s2">a.max(b)</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">sin(x)<span class="Apple-converted-space">  </span></span><span class="Apple-converted-space">  </span>is equivalent to : <span class="Apple-converted-space">  </span><span class="s2">x.sin</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>another example:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g(f(a, b), c)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>is equivalent to :</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g(a.f(b), c)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>is equivalent to :</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f(a, b).g(c)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>is equivalent to :</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.f(b).g(c)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Default Argument Values</b></p>
-<p class="p2"><br></p>
-<p class="p3">You may call a function or method with more or fewer arguments than it was declared to accept. If fewer arguments are passed, those arguments not passed are set to a default value if one is given in the method or function definition, or otherwise to nil.<span class="Apple-converted-space">  </span>If too many arguments are passed, the excess arguments are either collected into an Array or ignored depending on whether or not the function or method has an ellipsis argument (explained in <b>Functions</b>). When calling a method or function with zero arguments you can omit the parentheses:</p>
-<p class="p2"><br></p>
-<p class="p5">// x is declared to take two arguments a and b which default to 1 and 2 respectively.</p>
-<p class="p5">// It returns their sum. This syntax will be explained in the section on Functions.</p>
-<p class="p4">x = { <span class="s4">arg</span> a=1, b=2; a + b };<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3">z = x.value;<span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></span>// z is set to 3. (a defaults to 1, b defaults to 2)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3">z = x.value(10);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// z is set to 12. (a is 10, b defaults to 2)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3">z = x.value(10, 5);<span class="Apple-tab-span">	</span></span>// z is set to 15. (a is 10, b is 5)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3">z = x.value(10, 5, 9);<span class="Apple-tab-span">	</span></span>// z is set to 15. (a is 10, b is 5, 9 is ignored)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><b>Keyword Arguments</b></p>
-<p class="p2"><br></p>
-<p class="p3">Arguments to Methods may be specified by the name by which they are declared in a method's definition. Such arguments are called keyword arguments. Any argument may be passed as a keyword argument except for the receiver 'this'. Keyword arguments must come after any normal (aka 'positional') arguments, and may be specified in any order. If a keyword is specified and there is no matching argument then it is ignored and a warning will be printed. This warning may be turned off globally by making the following call:<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p4">keywordWarnings(false)</p>
-<p class="p2"><br></p>
-<p class="p3">If a keyword argument and a positional argument specify the same argument, then the keyword argument value overrides the positional argument value.</p>
-<p class="p2"><br></p>
-<p class="p3">For example the 'ar' class method of the SinOsc class takes arguments named <b>freq</b>, <b>phase</b>, <b>mul</b>, and <b>add</b> in that order. All of the following are legal calls to that method.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">SinOsc</span><span class="s3">.ar(800, pi, 0.2, 0); </span>// all normal arguments: freq, phase, mul, add</p>
-<p class="p6"><br></p>
-<p class="p5">// freq = 800, mul = 0.2, others get default values.</p>
-<p class="p4"><span class="s4">SinOsc</span>.ar(800, mul: 0.2);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p5">// freq = 800, phase = pi, mul = 0.2, add gets its default value of zero.</p>
-<p class="p4"><span class="s4">SinOsc</span>.ar(phase: pi, mul: 0.2, freq: 800);</p>
-<p class="p6"><br></p>
-<p class="p5">// keyword value of 1200 overrides the positional arg value of 800</p>
-<p class="p4"><span class="s4">SinOsc</span>.ar(800, freq: 1200);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">SinOsc</span><span class="s3">.ar(zorg: 999); </span>// invalid keyword prints warning</p>
-<p class="p2"><br></p>
-<p class="p3">The arguments to a Function may also be specified by keyword arguments when using the 'value' message.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">// function args may be specified by keyword.</p>
-<p class="p4">{ <span class="s4">arg</span> a=1, b=2, c=3; [a, b, c].postln }.value(b: 7, c: 8);</p>
-<p class="p6"><br></p>
-<p class="p3">You may also use keyword arguments when using the 'perform' method.</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="s4">SinOsc</span>.perform(<span class="s5">'ar'</span>, phase: pi, mul: 0.2, freq: 800);</p>
-<p class="p6"><br></p>
-<p class="p3"><b>Cost of using keyword arguments</b></p>
-<p class="p6"><br></p>
-<p class="p3">When using keyword arguments there is a runtime cost to do the matching that you should be aware of. The cost can be worth the convenience when speed is not critical.</p>
-</body>
-</html>
diff --git a/Help/Language/Operators.html b/Help/Language/Operators.html
deleted file mode 100644
index 6809234..0000000
--- a/Help/Language/Operators.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-</style>
-</head>
-<body>
-<p class="p1"><b>Operators</b></p>
-<p class="p2"><br></p>
-<p class="p3">SuperCollider supports operator overloading. Operators can thus be applied to a variety of different objects; Numbers, Ugens, Collections, and so on. When operators are applied to ugens they result in BinaryOpUGens or UnaryOpUGens. See the <b>BinaryOpUGen </b>overview<b> </b>helpfile for details.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Unary Operators</b></p>
-<p class="p4"><br></p>
-<p class="p3">neg .. inversion</p>
-<p class="p3">reciprocal .. reciprocal</p>
-<p class="p3">abs .. absolute value</p>
-<p class="p3">floor .. next lower integer</p>
-<p class="p3">ceil .. next higher integer</p>
-<p class="p3">frac .. fractional part</p>
-<p class="p3">sign .. -1 when a < 0, +1 when a > 0, 0 when a is 0</p>
-<p class="p3">squared .. a*a</p>
-<p class="p3">cubed .. a*a*a</p>
-<p class="p3">sqrt .. square root</p>
-<p class="p3">exp .. exponential</p>
-<p class="p3">midicps .. MIDI note number to cycles per second</p>
-<p class="p3">cpsmidi .. cycles per second to MIDI note number</p>
-<p class="p3">midiratio .. convert an interval in MIDI notes into a frequency ratio</p>
-<p class="p3">ratiomidi .. convert a frequency ratio to an interval in MIDI notes</p>
-<p class="p3">dbamp .. decibels to linear amplitude</p>
-<p class="p3">ampdb .. linear amplitude to decibels</p>
-<p class="p3">octcps .. decimal octaves to cycles per second</p>
-<p class="p3">cpsoct .. cycles per second to decimal octaves</p>
-<p class="p3">log .. natural logarithm</p>
-<p class="p3">log2 .. base 2 logarithm</p>
-<p class="p3">log10 .. base 10 logarithm</p>
-<p class="p3">sin .. sine</p>
-<p class="p3">cos .. cosine</p>
-<p class="p3">tan .. tangent</p>
-<p class="p3">asin .. arcsine</p>
-<p class="p3">acos .. arccosine</p>
-<p class="p3">atan .. arctangent</p>
-<p class="p3">sinh .. hyperbolic sine</p>
-<p class="p3">cosh .. hyperbolic cosine</p>
-<p class="p3">tanh .. hyperbolic tangent</p>
-<p class="p3">distort .. distortion</p>
-<p class="p3">softclip .. distortion</p>
-<p class="p3">isPositive .. 1 when a >= 0, else 0</p>
-<p class="p3">isNegative .. 1 when a < 0, else 0</p>
-<p class="p3">isStrictlyPositive .. 1 when a > 0, else 0</p>
-<p class="p3">(36)</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Binary Operators</b></p>
-<p class="p4"><br></p>
-<p class="p3">+ .. addition</p>
-<p class="p3">- .. subtraction</p>
-<p class="p3">* .. multiplication</p>
-<p class="p3">/ .. division</p>
-<p class="p3">% .. float modulo</p>
-<p class="p3">** .. exponentiation</p>
-<p class="p3"><<span class="Apple-converted-space">  </span>.. less than</p>
-<p class="p3"><= .. less than or equal</p>
-<p class="p3">><span class="Apple-converted-space">  </span>.. greater than</p>
-<p class="p3">>= .. greater than or equal</p>
-<p class="p3">== .. equal</p>
-<p class="p3">!= .. not equal</p>
-<p class="p3"><! .. return first argument</p>
-<p class="p3">min .. minimum of two</p>
-<p class="p3">max .. maximum of two</p>
-<p class="p3">round .. quantization by rounding</p>
-<p class="p3">trunc .. quantization by truncation</p>
-<p class="p3">atan2 .. arctangent</p>
-<p class="p3">hypot .. hypotenuse <span class="Apple-converted-space">  </span>sqrt(a*a + b*b)</p>
-<p class="p3">hypotApx .. hypotenuse approximation</p>
-<p class="p3">ring1 .. a*b + a <span class="Apple-converted-space">  </span>or equivalently: <span class="Apple-converted-space">  </span>a*(b + 1)</p>
-<p class="p3">ring2 .. a*b + a + b</p>
-<p class="p3">ring3 .. a*a*b</p>
-<p class="p3">ring4 .. a*a*b - a*b*b</p>
-<p class="p3">sumsqr .. a*a + b*b</p>
-<p class="p3">difsqr .. a*a - b*b</p>
-<p class="p3">sqrsum .. (a + b)**2</p>
-<p class="p3">sqrdif .. (a - b)**2</p>
-<p class="p3">absdif .. fabs(a - b)</p>
-<p class="p3">thresh .. threshholding <span class="Apple-converted-space">  </span>{ 0 when a < b, a when a >= b }</p>
-<p class="p3">amclip .. two quadrant multiply <span class="Apple-converted-space">  </span>{ 0 when b <= 0, a*b when b > 0 }</p>
-<p class="p3">scaleneg .. nonlinear amplification <span class="Apple-converted-space">  </span>{ a when a >= 0, a*b when a < 0 }</p>
-<p class="p3">clip2<span class="Apple-converted-space">  </span>.. bilateral clipping { b when a > b, -b when a < -b, else a }</p>
-<p class="p3">wrap2<span class="Apple-converted-space">  </span>.. bilateral wrapping</p>
-<p class="p3">fold2<span class="Apple-converted-space">  </span>.. bilateral folding</p>
-<p class="p3">excess .. residual of clipping <span class="Apple-converted-space">  </span>a - clip2(a,b)</p>
-<p class="p3">(36)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Partial-Application.html b/Help/Language/Partial-Application.html
deleted file mode 100644
index 401b936..0000000
--- a/Help/Language/Partial-Application.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #326f17}
-span.s3 {color: #000000}
-span.s4 {color: #a71e12}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Function Creation via Partial Application</b></p>
-<p class="p1"><br></p>
-<p class="p3">Partial application is a way to create a function by passing only some arguments to a method. The _ character stands in for missing arguments and becomes an argument to the created function. It only applies to a single method, list, or dictionary call, not to a more complex nested expression.</p>
-<p class="p4"><br></p>
-<p class="p3">for example:</p>
-<p class="p4"><br></p>
-<p class="p5">f = _ + 2;</p>
-<p class="p4"><br></p>
-<p class="p3">f is now a function of one argument.</p>
-<p class="p4"><br></p>
-<p class="p5">f.value(7);</p>
-<p class="p4"><br></p>
-<p class="p3">it is equivalent to having written:</p>
-<p class="p4"><br></p>
-<p class="p5">f = {<span class="s1">|x|</span> x + 2 };</p>
-<p class="p4"><br></p>
-<p class="p3">(except that there is no name 'x' declared)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">g = <span class="s1">Point</span>(<span class="s1">_</span>, <span class="s1">_</span>);</p>
-<p class="p4"><br></p>
-<p class="p3">g is a function of two arguments.</p>
-<p class="p4"><br></p>
-<p class="p5">g.value(3, 4);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">Here are some example usages of this in a collect message. Below each is written the equivalent function.</p>
-<p class="p5">(1..8).collect(<span class="s1">_</span>.isPrime);</p>
-<p class="p5">(1..8).collect {<span class="s1">|x|</span> x.isPrime };</p>
-<p class="p4"><br></p>
-<p class="p5">(1..8).collect(<span class="s1">_</span>.hash);</p>
-<p class="p5">(1..8).collect {<span class="s1">|x|</span> x.hash };</p>
-<p class="p4"><br></p>
-<p class="p5">(1..8).collect([<span class="s2">\a</span>, <span class="s2">\b</span>, <span class="s1">_</span>]);</p>
-<p class="p5">(1..8).collect {<span class="s1">|x|</span> [<span class="s2">\a</span>, <span class="s2">\b</span>, x] };</p>
-<p class="p4"><br></p>
-<p class="p5">(1..8).collect((a:<span class="s1">_</span>));</p>
-<p class="p5">(1..8).collect {<span class="s1">|x|</span> (a:x) };</p>
-<p class="p4"><br></p>
-<p class="p5">(1..8).collect(<span class="s1">Polar</span>(<span class="s1">_</span>, pi));</p>
-<p class="p5">(1..8).collect {<span class="s1">|x|</span> <span class="s1">Polar</span>(x, pi) };</p>
-<p class="p4"><br></p>
-<p class="p5">(1..8).collect((1..<span class="s1">_</span>));</p>
-<p class="p5">(1..8).collect {<span class="s1">|x|</span> (1..x) };</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s3">f = (a:</span><span class="s1">_</span><span class="s3">, b:</span><span class="s1">_</span><span class="s3">); </span>// f is a two argument function</p>
-<p class="p6"><span class="s3">g = f.(</span><span class="s1">_</span><span class="s3">, 5); <span class="Apple-converted-space">  </span></span>// g is a partial application of f</p>
-<p class="p6"><span class="s3">g.(7);<span class="Apple-converted-space">          </span></span>// get the answer</p>
-<p class="p4"><br></p>
-<p class="p6">// equivalent to this:</p>
-<p class="p5">f = {<span class="s1">|x, y|</span> (a:x, b:y) }</p>
-<p class="p5">g = {<span class="s1">|z|</span> f.(z, 5) };</p>
-<p class="p5">g.value(7);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">An example of what you can't do:</p>
-<p class="p4"><br></p>
-<p class="p5">(1..8).collect( <span class="s1">Point</span>(100 * <span class="s1">_</span>, 50) ); <span class="s4">// nested expression won't work.</span></p>
-<p class="p6">// only the * gets partially applied, not the surrounding expression.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s3">(1..8).collect {</span><span class="s1">|x|</span><span class="s3"> </span><span class="s1">Point</span><span class="s3">(100 * x, 50) }; </span>// need to use a function for this.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Polymorphism.html b/Help/Language/Polymorphism.html
deleted file mode 100644
index 1eb8434..0000000
--- a/Help/Language/Polymorphism.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 7.0px Monaco; min-height: 10.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #000000; min-height: 11.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #bf0000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Polymorphism</b></p>
-<p class="p2"><br></p>
-<p class="p3">Polymorphism is the ability of different classes to respond to a message in different ways. A message generally has some underlying meaning and it is the responsibility of each class to respond in a way appropriate to that meaning.</p>
-<p class="p2"><br></p>
-<p class="p3">For example, the '<b>value</b>' message means "give me the effective value of this object".</p>
-<p class="p2"><br></p>
-<p class="p3">The value method is implemented by these classes (among others):</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Function</span> : <span class="Apple-converted-space">  </span><span class="s1">this</span>.value(args)</p>
-<p class="p5"><span class="s1">Object</span> : <span class="Apple-converted-space">  </span><span class="s1">this</span>.value()</p>
-<p class="p5"><span class="s1">Ref</span> : <span class="Apple-converted-space">  </span><span class="s1">this</span>.value</p>
-<p class="p4"><br></p>
-<p class="p3">Let's look at how these classes implement the value message.</p>
-<p class="p2"><br></p>
-<p class="p3">Here's the value method in class <b>Object</b>:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>value { ^<span class="s1">this</span> }</p>
-<p class="p6"><br></p>
-<p class="p3">It simply returns itself. Since all classes inherit from class Object this means that unless a class overrides 'value', the object will respond to 'value' by returning itself.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">5.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// posts itself</p>
-<p class="p7"><span class="s2">5.value.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// value returns itself</p>
-<p class="p8">'a symbol'<span class="s2">.postln;</span></p>
-<p class="p5"><span class="s3">'a symbol'</span>.value.postln;</p>
-<p class="p5">[1,2,3].value.postln;</p>
-<p class="p7">//etc...</p>
-<p class="p2"><br></p>
-<p class="p3">In class <b>Function</b> the value method is a primitive.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>value { <span class="s1">arg</span> ... args;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>_FunctionValue<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// evaluate a function with args</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s1">this</span>.primitiveFailed<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">_FunctionValue is a C code primitive, so it is not possible to know just by looking at it what it does. However what it does is to evaluate the function and return the result.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">{ 5.squared }.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// posts Instance of Function</p>
-<p class="p5">{ 5.squared }.value.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// posts 25</span></p>
-<p class="p2"><br></p>
-<p class="p3">The <b>Ref</b> class provides a way to create an indirect reference to an object. It can be used to pass a value by reference. Ref objects have a single instance variable called '<b>value</b>'. The '<b>value</b>' method returns the value of the instance variable '<b>value</b>'. Here is the class definition for <b>Ref</b>.</p>
-<p class="p2"><br></p>
-<p class="p9">Ref<span class="s2"> : </span>AbstractFunction<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> <>value;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>*new { <span class="s1">arg</span> thing; ^<span class="s1">super</span>.new.value_(thing) }</p>
-<p class="p5"><span class="Apple-tab-span">	</span>set { <span class="s1">arg</span> thing; value = thing }</p>
-<p class="p5"><span class="Apple-tab-span">	</span>get { ^value }</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dereference { ^value }</p>
-<p class="p5"><span class="Apple-tab-span">	</span>asRef { ^<span class="s1">this</span> }</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>//behave like a stream</p>
-<p class="p5"><span class="Apple-tab-span">	</span>next { ^value }</p>
-<p class="p5"><span class="Apple-tab-span">	</span>embedInStream { <span class="s1">arg</span> inval;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s1">this</span>.value.embedInStream(inval)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>printOn { <span class="s1">arg</span> stream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream << <span class="s5">"`("</span> << value << <span class="s5">")"</span>;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span>storeOn { <span class="s1">arg</span> stream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream << <span class="s5">"`("</span> <<< value << <span class="s5">")"</span>;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p11"><br></p>
-<p class="p3">Here is how it responds :</p>
-<p class="p11"><br></p>
-<p class="p5"><span class="s1">Ref</span>.new(123).postln;</p>
-<p class="p5"><span class="s1">Ref</span>.new(123).value.postln;</p>
-<p class="p2"><br></p>
-<p class="p3">Ref also implements a message called '<b>dereference</b>' which is another good example of polymorphism. As implemented in Ref, dereference just returns the value instance variable which is no different than what the value method does. So what is the need for it? That is explained by how other classes respond to dereference. The dereference message means "remove any Ref that contains you". In class Object dereference returns the object itself, again just like the value message. The difference is that no other classes override this method. So that dereference of a Function is still the Function.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">Object</span> : <span class="Apple-converted-space">  </span><span class="s1">this</span>.dereference()</p>
-<p class="p5"><span class="s1">Ref</span> : <span class="Apple-converted-space">  </span><span class="s1">this</span>.dereference()</p>
-<p class="p10"><br></p>
-<p class="p5">5.value.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5">{ 5.squared }.value.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1">Ref</span>.new(123).value.postln;</p>
-<p class="p12"><br></p>
-<p class="p5">5.dereference.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5">{ 5.squared }.dereference.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1">Ref</span>.new(123).dereference.postln;</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p3">Yet another example of polymorphism is <b>play</b>. Many different kinds of objects know how to play themselves.</p>
-<p class="p11"><br></p>
-<p class="p5">{ <span class="s1">PinkNoise</span>.ar(0.1) }.play;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// Function</span></p>
-<p class="p10"><br></p>
-<p class="p5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// AppClock</span></p>
-<p class="p5"><span class="s1">var</span> w, r;</p>
-<p class="p5">w = <span class="s1">Window</span>.new(<span class="s5">"trem"</span>, <span class="s1">Rect</span>(512, 256, 360, 130));</p>
-<p class="p5">w.front;</p>
-<p class="p5">r = <span class="s1">Routine</span>({ <span class="s1">arg</span> appClockTime;</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</span>"AppClock has been playing for secs:"<span class="s2">,appClockTime].postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>60.do({ <span class="s1">arg</span> i;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds = w.bounds.moveBy(10.rand2, 10.rand2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.alpha = cos(i*0.1pi)*0.5+0.5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p5">});</p>
-<p class="p5"><span class="s1">AppClock</span>.play(r);</p>
-<p class="p5">)</p>
-<p class="p10"><br></p>
-<p class="p5">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// SynthDef</span></p>
-<p class="p13"><span class="s2">x = </span><span class="s1">SynthDef</span><span class="s2">(</span>"Help-SynthDef"<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s1">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, <span class="s1">PinkNoise</span>.ar(0.1))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p5">)</p>
-<p class="p10"><br></p>
-<p class="p5"><span class="s1">Pbind</span>(<span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 1, 2, 3],<span class="s1">inf</span>)).play;<span class="Apple-tab-span">	</span><span class="s4">// Pattern</span></p>
-<p class="p10"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Polymorphism allows you to write code that does not assume anything about the implementation of an object, but rather asks the object to "do what I mean" and have the object respond appropriately.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/Scope.html b/Help/Language/Scope.html
deleted file mode 100644
index d896a4e..0000000
--- a/Help/Language/Scope.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-span.s1 {font: 12.0px Monaco}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.s4 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Scoping and Closure<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">SuperCollider has nested scoping of variables. A function can refer not only to its own arguments and variables, but also to those declared in any enclosing (defining) contexts.</p>
-<p class="p2"><br></p>
-<p class="p3">For example :</p>
-<p class="p2"><br></p>
-<p class="p3">The function defined below within <span class="s1">makeCounter</span> can access all of the arguments and variables declared in <span class="s1">makeCounter</span>. Other code can call the returned function at some later time and it can access and update the values contained in <span class="s1">makeCounter</span> at the time when the inner function was instantiated.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> makeCounter;</p>
-<p class="p4">makeCounter = { <span class="s2">arg</span> curVal=0, stepVal=1;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span> </span>// return a function :</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> temp;</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// temp is local to this function, curVal & stepVal in the</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// enclosing function are referred to here within.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>temp = curVal;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>curVal = curVal + stepVal;</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>temp <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// return result</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">};</p>
-<p class="p6"><br></p>
-<p class="p5">// each invocation of makeCounter creates a new set of variables curVal and stepVal</p>
-<p class="p6"><br></p>
-<p class="p4">x = makeCounter.value(10, 1);</p>
-<p class="p4">z = makeCounter.value(99, 100);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p5">// x and z are functions which refer to different instances of the variables curVal and stepVal</p>
-<p class="p6"><br></p>
-<p class="p4">x.value.postln; <span class="s4">// posts 10</span></p>
-<p class="p4">x.value.postln; <span class="s4">// posts 11</span></p>
-<p class="p4">z.value.postln; <span class="s4">// posts 99</span></p>
-<p class="p4">z.value.postln; <span class="s4">// posts 199</span></p>
-<p class="p4">x.value.postln; <span class="s4">// posts 12</span></p>
-<p class="p4">x.value.postln; <span class="s4">// posts 13</span></p>
-<p class="p4">z.value.postln; <span class="s4">// posts 299</span></p>
-<p class="p4">z.value.postln; <span class="s4">// posts 399</span></p>
-<p class="p6"><br></p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p3">Note that even though the function which defines curVal and stepVal has completed execution, its variables are still accessible to those functions that were defined within its context. This is known as <b>lexical closure</b>, the capturing and availability of variables defined in outer contexts by inner contexts even when the outer contexts may have completed execution.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Language/SymbolicNotations.html b/Help/Language/SymbolicNotations.html
deleted file mode 100644
index b7fc235..0000000
--- a/Help/Language/SymbolicNotations.html
+++ /dev/null
@@ -1,389 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #000000}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #0000bf}
-span.s7 {font: 9.0px Monaco; color: #0000bf}
-span.s8 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Catalog of symbolic notations in SuperCollider<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Arithmetic operators</b></p>
-<p class="p2"><br></p>
-<p class="p3">Math operators apply to many classes, including arrays and other collections.</p>
-<p class="p2"><br></p>
-<p class="p3">Using a basic math operator on a Symbol swallows the operation (returns the symbol)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">\symbol<span class="s1"> * 5</span></p>
-<p class="p5">symbol<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">number + number<span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>addition</span></p>
-<p class="p3"><span class="s3">number - number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>subtraction</p>
-<p class="p3"><span class="s3">number * number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>multiplication</p>
-<p class="p5">number / number<span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>division</span></p>
-<p class="p5">number % number<span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>modulo</span></p>
-<p class="p3"><span class="s3">number ** number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponentiation</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Bitwise arithmetic</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">number & number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bitwise and</p>
-<p class="p5">number | number<span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bitwise or</span></p>
-<p class="p3"><span class="s3">number << number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bitwise left shift</p>
-<p class="p3"><span class="s3">number >> number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bitwise right shift</p>
-<p class="p3"><span class="s3">number +>> number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unsigned bitwise right shift</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Logical operators</b></p>
-<p class="p2"><br></p>
-<p class="p5">object == object<span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>equivalence</span></p>
-<p class="p5">object === object<span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>identity</span></p>
-<p class="p3"><span class="s3">object != object</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>not equal to</p>
-<p class="p3"><span class="s3">object !== object</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>not identical to</p>
-<p class="p2"><br></p>
-<p class="p3">Objects may be equivalent but not identical.</p>
-<p class="p2"><br></p>
-<p class="p5">[1, 2, 3] == [1, 2, 3]</p>
-<p class="p6">true</p>
-<p class="p5">[1, 2, 3] === [1, 2, 3]</p>
-<p class="p7"><span class="s4">false</span><span class="s1"><span class="Apple-tab-span">	</span></span>// a and b are two different array instances with the same contents</p>
-<p class="p8"><br></p>
-<p class="p5">a = b = [1, 2, 3];</p>
-<p class="p5">a === b;</p>
-<p class="p7"><span class="s4">true</span><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// a and b are the same array instance</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">number < number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>comparison (less than)</p>
-<p class="p3"><span class="s3">number <= number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>comparison (less than or equal to)</p>
-<p class="p3"><span class="s3">number > number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>comparison (greater than)</p>
-<p class="p3"><span class="s3">number >= number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>comparison (greater than or equal to)</p>
-<p class="p2"><br></p>
-<p class="p5">Boolean && Boolean<span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>logical And</span></p>
-<p class="p5">Boolean || Boolean<span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>logical Or</span></p>
-<p class="p2"><br></p>
-<p class="p3">When a function is the second operand, these operators perform short-circuiting (i.e., the function is executed only when its result would influence the result of the operation). This is recommended for speed.</p>
-<p class="p2"><br></p>
-<p class="p3">With and: and or: second-argument functions will be inlined. If you use && or ||, no inlining will be done and performance will be slower.</p>
-<p class="p2"><br></p>
-<p class="p5">a = 1;</p>
-<p class="p8"><br></p>
-<p class="p5">a == 1 and: { <span class="s5">"second condition"</span>.postln; [<span class="s4">true</span>, <span class="s4">false</span>].choose }</p>
-<p class="p5">second condition</p>
-<p class="p6">true</p>
-<p class="p8"><br></p>
-<p class="p5">a == 1 or: { <span class="s5">"second condition"</span>.postln; [<span class="s4">true</span>, <span class="s4">false</span>].choose }</p>
-<p class="p6">true</p>
-<p class="p8"><br></p>
-<p class="p5">a != 1 and: { <span class="s5">"second condition"</span>.postln; [<span class="s4">true</span>, <span class="s4">false</span>].choose }</p>
-<p class="p6">false</p>
-<p class="p8"><br></p>
-<p class="p5">a != 1 or: { <span class="s5">"second condition"</span>.postln; [<span class="s4">true</span>, <span class="s4">false</span>].choose }</p>
-<p class="p5">second condition</p>
-<p class="p6">true</p>
-<p class="p2"><br></p>
-<p class="p3">In this case, the second condition will cause an error if a is nil, because nil does not understand addition. a.notNil is a safeguard to ensure the second condition makes sense.</p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s4">nil</span>;</p>
-<p class="p5">a.notNil and: { <span class="s5">"second condition"</span>.postln; (a = a+1) < 5 }</p>
-<p class="p6">false</p>
-<p class="p8"><br></p>
-<p class="p5">a = 10;</p>
-<p class="p5">a.notNil and: { <span class="s5">"second condition"</span>.postln; (a = a+1) < 5 }</p>
-<p class="p5">second condition</p>
-<p class="p6">false</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Array and Collection operators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">object ++ object</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>concatenation</p>
-<p class="p3"><span class="s3">collection +++ collection</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lamination (see <a href="J_concepts_in_SC.html"><span class="s6">J_concepts_in_SC</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">collection @ index</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>collection/array indexing: .at(index) or [index]</p>
-<p class="p3"><span class="s3">collection @@ integer</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>collection/array indexing: .wrapAt(int)</p>
-<p class="p3"><span class="s3">collection @|@ integer</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>collection/array indexing: .foldAt(int)</p>
-<p class="p3"><span class="s3">collection |@| integer</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>collection/array indexing: .clipAt(int)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Set operators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">set & set</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>intersection of two sets</p>
-<p class="p3"><span class="s3">set | set</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>union of two sets</p>
-<p class="p3"><span class="s3">setA - setB</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>difference of sets (elements of setA not found in setB)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">set -- set</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>symmetric difference</p>
-<p class="p2"><br></p>
-<p class="p3">(setA -- setB) == ((setA - setB) | (setB - setA))</p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s4">Set</span>[2, 3, 4, 5, 6, 7];</p>
-<p class="p5">b = <span class="s4">Set</span>[5, 6, 7, 8, 9];</p>
-<p class="p8"><br></p>
-<p class="p5">a - b</p>
-<p class="p5"><span class="s4">Set</span>[ 2, 4, 3 ]</p>
-<p class="p8"><br></p>
-<p class="p5">b - a</p>
-<p class="p5"><span class="s4">Set</span>[ 8, 9 ]</p>
-<p class="p8"><br></p>
-<p class="p5">((a-b) | (b-a))</p>
-<p class="p5"><span class="s4">Set</span>[ 2, 9, 3, 4, 8 ]</p>
-<p class="p8"><br></p>
-<p class="p5">a -- b</p>
-<p class="p5"><span class="s4">Set</span>[ 2, 9, 3, 4, 8 ]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Geometry operators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">number @ number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x @ y returns Point(x, y)</p>
-<p class="p3"><span class="s3">point @ point</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Point(left, top) @ Point(right, bottom)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns Rect(left, top, right-left, bottom-top)</p>
-<p class="p3"><span class="s3">ugen @ ugen</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a Point with 2 UGens</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">rect & rect</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>intersection of two rectangles</p>
-<p class="p3"><span class="s3">rect | rect</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>union of two rectangles (returns a Rect</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>whose boundaries exactly encompass both Rects)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>IOStream operators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">stream << object</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>represent the object as a string and add to the stream<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">A common usage is with the Post class, to write output to the post window.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s4">Post</span><span class="s1"> << </span>"Here is a random number: "<span class="s1"> << 20.rand << </span>".\n"<span class="s1">;</span></p>
-<p class="p5">Here is a random number: 13.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">stream <<* collection</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add each item of the collection to the stream</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">Post</span> << [0, 1, 2, 3]</p>
-<p class="p5">[ 0, 1, 2, 3 ]</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s4">Post</span> <<* [0, 1, 2, 3]</p>
-<p class="p5">0, 1, 2, 3</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">stream <<< object</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add the object's compile string to the stream</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s4">Post</span><span class="s1"> <<< </span>"a string"</p>
-<p class="p9">"a string"</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">stream <<<* collection</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add each item's compile string to the stream</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Conditional execution operators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">object ? object</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nil check (no .value)</p>
-<p class="p3"><span class="s3">object ?? function</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nil check (.value, function is inlined)</p>
-<p class="p2"><br></p>
-<p class="p3">If the object is nil, the second expression's value will be used; otherwise, it will be the first object.</p>
-<p class="p2"><br></p>
-<p class="p5">a = [<span class="s4">nil</span>, 5];</p>
-<p class="p8"><br></p>
-<p class="p5">10.do({ (a.choose ? 20.rand).postln });</p>
-<p class="p5">10.do({ (a.choose ?? { 20.rand }).postln });</p>
-<p class="p2"><br></p>
-<p class="p3">?? { } is generally recommended. ? always evaluates the second expression, even if its value will not be used. ?? evaluates the function conditionally (only when needed). If the function defines no variables, the function will be inlined for speed.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Especially useful when the absence of an object requires a new object to be created. In this example, it's critical that a new SCSlider not be created if the object was already passed in.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">f = { </span>|slider, parent|</p>
-<p class="p5"><span class="Apple-tab-span">	</span>slider = slider ?? { <span class="s4">SCSlider</span>.new(parent, <span class="s4">Rect</span>(0, 0, 100, 20)) };</p>
-<p class="p5"><span class="Apple-tab-span">	</span>slider.value_(0);</p>
-<p class="p5">};</p>
-<p class="p2"><br></p>
-<p class="p3">If the first line inside the function instead read <span class="s3">slider = slider ? </span><span class="s7">SCSlider</span><span class="s3">.new(parent, </span><span class="s7">Rect</span><span class="s3">(0, 0, 100, 20));</span>, a new slider would be created even if it is not needed, or used.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">object !? function</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>execute function if object is not nil</p>
-<p class="p2"><br></p>
-<p class="p5">a = [10, <span class="s4">nil</span>].choose;</p>
-<p class="p5">a !? { <span class="s5">"ran func"</span>.postln };</p>
-<p class="p7">// equivalent of:</p>
-<p class="p5">if (a.notNil) { <span class="s5">"ran func"</span>.postln };</p>
-<p class="p2"><br></p>
-<p class="p3">Used when an operation requires a variable not to be empty.</p>
-<p class="p2"><br></p>
-<p class="p5">f = { <span class="s4">|a|</span> a + 5 };</p>
-<p class="p5">f.value</p>
-<p class="p7">// error: nil does not understand +</p>
-<p class="p8"><br></p>
-<p class="p5">f = { <span class="s4">|a|</span> a !? { a+5 } };</p>
-<p class="p5">f.value</p>
-<p class="p7"><span class="s4">nil</span><span class="s1"><span class="Apple-tab-span">	</span></span>// no error</p>
-<p class="p5">f.value(2)</p>
-<p class="p5">7</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Miscellaneous operators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">object ! number</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>object.dup(number)</p>
-<p class="p2"><br></p>
-<p class="p5">15 ! 5</p>
-<p class="p5">[ 15, 15, 15, 15, 15 ]</p>
-<p class="p2"><br></p>
-<p class="p3">If the object is a function, it behaves like Array.fill(number, function).</p>
-<p class="p2"><br></p>
-<p class="p5">{ 10.rand } ! 5</p>
-<p class="p5">[ 8, 9, 3, 8, 0 ]</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">object -> object</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>creates an Association, used in dictionaries</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">expression <! expression</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bypass value of second expression<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">This operator evaluates both expressions, and returns the value of the first.</p>
-<p class="p2"><br></p>
-<p class="p5">a = 0;</p>
-<p class="p5">0</p>
-<p class="p8"><br></p>
-<p class="p7">// a is incremented twice, but the return value (1)</p>
-<p class="p7">// comes from the first increment (0 + 1)</p>
-<p class="p5">(a = a + 1) <! (a = a + 1)</p>
-<p class="p5">1</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">a<span class="Apple-tab-span">	</span></span>// a's value reflects both increments</p>
-<p class="p5">2</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">function <> function</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>function composition operator<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">This operator returns a new function, which evaluates the second function and passes the result to the first function.</p>
-<p class="p2"><br></p>
-<p class="p5">f = { <span class="s4">|a|</span> a * 5 } <> {<span class="s4">|a|</span> a + 2 };</p>
-<p class="p5">f.(10);</p>
-<p class="p7"><span class="s1">60<span class="Apple-tab-span">	</span></span>// == (10+2) * 5</p>
-<p class="p2"><br></p>
-<p class="p3">An array as argument is passed through the chain:</p>
-<p class="p8"><br></p>
-<p class="p5">f.([10, 75, 512]);</p>
-<p class="p7"><span class="s1">[ 60, 385, 2570 ]<span class="Apple-tab-span">	</span></span>// == ([10, 75, 512]+2) * 5</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Symbolic notations to define literals/other objects</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">$</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>character prefix: "ABC".at(0) == $A</p>
-<p class="p3"><span class="s3">''</span> or <span class="s3">\</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define a literal Symbol: 'abc' === \abc</p>
-<p class="p3"><span class="s3">""</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define a literal String</p>
-<p class="p3"><span class="s3">[item, item...]</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define an Array containing given items</p>
-<p class="p3"><span class="s7">Set</span><span class="s3">[item, item...]</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define a Set -- any Collection class name can be used other than Set</p>
-<p class="p3"><span class="s3">#[item, item...]</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define a literal Array</p>
-<p class="p3"><span class="s3">(a:1, b:2)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define an Event (same as Event[\a -> 1, \b -> 2])</p>
-<p class="p3"><span class="s3">`</span> (backtick or backquote)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define a Ref: `1 == Ref(1), `(a+1) == Ref(a+1)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">\</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inside a string or symbol, escapes the next character</p>
-<p class="p2"><br></p>
-<p class="p5">"abc\"def\"ghi"</p>
-<p class="p5">abc"def"ghi</p>
-<p class="p8"><br></p>
-<p class="p5">'abc\'def\'ghi'</p>
-<p class="p5">abc'def'ghi</p>
-<p class="p2"><br></p>
-<p class="p3">\t<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tab character</p>
-<p class="p3">\n<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>newline character</p>
-<p class="p3">\l<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>linefeed character</p>
-<p class="p3">\r<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>carriage return character</p>
-<p class="p3">\\<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\ character</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">{ }</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define an open function</p>
-<p class="p3"><span class="s3">#{ }</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define a closed function</p>
-<p class="p3"><span class="s3">(_ * 2)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define a function { |a| a * 2 } (see <a href="Partial-Application.html"><span class="s6">Partial-Application</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Argument definition</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">|a, b, c|</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define function/method arguments</p>
-<p class="p3"><span class="s3">|a, b ... c|</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define function/method arguments;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arguments after a and b will be placed into c as an array</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">#a, b, c = myArray</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>assign consecutive elements of myArray to multiple variables</p>
-<p class="p3"><span class="s3">#a, b ... c = myArray</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>assign first two elements to a and b; the rest as an array into c</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Where f is a function</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">f.( )</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>evaluate the function with the arguments in parentheses</p>
-<p class="p3"><span class="s3">f.(*argList)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>evaluate the function with the arguments in an array</p>
-<p class="p3"><span class="s3">f.(anArgName: value)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>keyword addressing of function or method arguments</p>
-<p class="p2"><br></p>
-<p class="p10">f = { <span class="s8">|a, b|</span> a * b };</p>
-<p class="p10">f.(2, 4);</p>
-<p class="p10">f.(*[2, 4]);</p>
-<p class="p10">f.(a: 2, b: 4);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s7">SomeClass</span><span class="s3">.[index]</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Equivalent to SomeClass.at(index) -- Instr.at is a good example</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">myObject.method(*array)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>call the method with the arguments in an array</p>
-<p class="p3"><span class="s3">obj1 method: obj2</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>same as obj1.method(obj2) or method(obj1, obj2)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This works only with single-argument methods</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>like binary operators.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Class and instance variable access</b></p>
-<p class="p2"><br></p>
-<p class="p3">Inside a class definition (see <a href="../Extending and Customizing SC/Writing-Classes.html"><span class="s6">Writing-Classes</span></a>):</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s7">classvar</span><span class="s3"> <a,</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Define a class variable with a getter method (for outside access)</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span>>b,</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Define a class variable with a setter method</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span><>c;</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Define a class variable with both a getter and setter method</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s7">var</span><span class="s3"><span class="Apple-tab-span">	</span><a,</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Define an instance variable with a getter method (for outside access)</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span>>b,</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Define an instance variable with a setter method</p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span><>c;</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Define an instance variable with both a getter and setter method</p>
-<p class="p2"><br></p>
-<p class="p3">These notations do not apply to variables defined within methods.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">^someExpression</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Inside a method definition: return the expression's value to the caller</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">instVar_ { }</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>define a setter for an instance variable</p>
-<p class="p3"><span class="s3">myObject.instVar = x;</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>invoke the setter: (myObject.instVar_(x); x)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Array series and indexing</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">(a..b)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>produces an array consisting of consecutive integers from a to b</p>
-<p class="p3"><span class="s3">(a, b..c)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e.g.: (1, 3..9) produces [1, 3, 5, 7, 9]</p>
-<p class="p3"><span class="s3">(..b)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>produces an array 0 through b</p>
-<p class="p3"><span class="s3">(a..)</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>not legal (no endpoint given)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">a[i..j]</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.copyRange(i, j)</p>
-<p class="p3"><span class="s3">a[i, j..k]</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e.g.: a[1, 3..9] retrieves array elements 1, 3, 5, 7, 9</p>
-<p class="p3"><span class="s3">a[..j]</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.copyRange(0, j)</p>
-<p class="p3"><span class="s3">a[j..]</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.copyRange(i, a.size-1)<span class="Apple-converted-space">  </span>(this is OK--Array is finite)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">~</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>access an environment variable</p>
-<p class="p3"><span class="s3">~abc</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>compiles to \abc.envirGet</p>
-<p class="p3"><span class="s3">~abc = value</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>compiles to \abc.envirPut(value)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Adverbs to math operators</b> (see <a href="Adverbs.html"><span class="s6">Adverbs</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p3">e.g.:</p>
-<p class="p5">[1, 2, 3] * [2, 3, 4]</p>
-<p class="p5">[ 2, 6, 12 ]</p>
-<p class="p8"><br></p>
-<p class="p5">[1, 2, 3] *.t [2, 3, 4]</p>
-<p class="p5">[ [ 2, 3, 4 ], [ 4, 6, 8 ], [ 6, 9, 12 ] ]</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">.s</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>output length is the shorter of the two arrays</p>
-<p class="p3"><span class="s3">.f</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>use folded indexing instead of wrapped indexing</p>
-<p class="p3"><span class="s3">.t</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>table-style</p>
-<p class="p3"><span class="s3">.x</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cross (like table, except that the results of each operation</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>are concatenated, not added as another dimension)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">.0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>operator depth (see <a href="J_concepts_in_SC.html"><span class="s6">J_concepts_in_SC</span></a>)</p>
-<p class="p3"><span class="s3">.1</span> etc.</p>
-</body>
-</html>
diff --git a/Help/Language/Syntax-Shortcuts.html b/Help/Language/Syntax-Shortcuts.html
deleted file mode 100644
index 7e69205..0000000
--- a/Help/Language/Syntax-Shortcuts.html
+++ /dev/null
@@ -1,229 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #a71e12}
-span.s3 {color: #000000}
-span.s4 {font: 12.0px Monaco}
-span.s5 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Syntax Shortcuts</b></p>
-<p class="p2"><br></p>
-<p class="p3">This file shows a number of syntax equivalences in the compiler.</p>
-<p class="p2"><br></p>
-<p class="p4">__________________________________________________________________________</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Example: multiple ways to write the same thing.</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3">Because of the multiple syntax equivalences, some expressions can be written in many different ways. All of the following do the same thing and compile to the same code.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8">// new argument syntax</p>
-<p class="p5"><br></p>
-<p class="p4">(1..10).collect({<span class="s1">|n|</span> n.squared }); <span class="s2">// receiver syntax</span></p>
-<p class="p5"><br></p>
-<p class="p4">collect((1..10), {<span class="s1">|n|</span> n.squared }); <span class="s2">// function call syntax</span></p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s3">(1..10).collect {</span><span class="s1">|n|</span><span class="s3"> n.squared }; </span>// receiver syntax with trailing function arg</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s3">collect ((1..10)) {</span><span class="s1">|n|</span><span class="s3"> n.squared }; </span>// function call syntax with trailing function arg</p>
-<p class="p5"><br></p>
-<p class="p4">(1..10) collect: {<span class="s1">|n|</span> n.squared }; <span class="s2">// binary operator syntax</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">// old argument syntax</p>
-<p class="p5"><br></p>
-<p class="p4">(1..10).collect({ <span class="s1">arg</span> n; n.squared }); <span class="s2">// receiver syntax</span></p>
-<p class="p5"><br></p>
-<p class="p4">collect((1..10), { <span class="s1">arg</span> n; n.squared }); <span class="s2">// function call syntax</span></p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s3">(1..10).collect { </span><span class="s1">arg</span><span class="s3"> n; n.squared }; </span>// receiver syntax with trailing function arg</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s3">collect ((1..10)) { </span><span class="s1">arg</span><span class="s3"> n; n.squared }; </span>// function call syntax with trailing function arg</p>
-<p class="p5"><br></p>
-<p class="p4">(1..10) collect: { <span class="s1">arg</span> n; n.squared }; <span class="s2">// binary operator syntax</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">// partial application syntax</p>
-<p class="p5"><br></p>
-<p class="p4">(1..10).collect( _.squared ); <span class="s2">// receiver syntax</span></p>
-<p class="p5"><br></p>
-<p class="p4">collect((1..10), _.squared ); <span class="s2">// function call syntax</span></p>
-<p class="p5"><br></p>
-<p class="p4">(1..10) collect: _.squared ; <span class="s2">// binary operator syntax</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">You could even start expanding out the equivalent of <span class="s4">(1..10)</span> which is really a shortcut for <span class="s4">series(1, nil, 10)</span>. This could also be written <span class="s4">1.series(nil,10)</span>. This adds another 26 variations to the 13 variations above.</p>
-<p class="p2"><br></p>
-<p class="p4">__________________________________________________________________________</p>
-<p class="p2"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>functional and receiver notation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">f(x, y)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.f(y)</p>
-<p class="p4">f(g(x))<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.g.f</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>defining instance variable accessor methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4">Thing { var x;<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Thing { var <>x; }<span class="s5"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x { ^x } <span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x_ { arg z; x = z; }<span class="Apple-converted-space"> </span></p>
-<p class="p4">}<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>calling an instance variable setter method</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">p.x_(y)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>p.x = y;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>use a selector as binary operator</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">min(x, y)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x min: y</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>multiple assignment</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">x = z.at(0); y = z.at(1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span># x, y = z;</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get environment variable</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">'myName'.envirGet<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~myName</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set environment variable</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">'myName'.envirSet(9);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~myName = 9;</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instantiate object</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">Point.new(3, 4);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Point(3, 4)</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a collection</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">Set.new.add(3).add(4).add(5);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set[3, 4, 5]</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>moving blocks out of argument lists</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">if (x<3, {\abc}, {\def});<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (x<3) {\abc} {\def}</p>
-<p class="p5"><br></p>
-<p class="p4">z.do({|x| x.play });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z.do {|x| x.play };</p>
-<p class="p5"><br></p>
-<p class="p4">while({ a < b },{ a = a * 2 });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>while { a < b } { a = a * 2 };</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>shorter argument lists</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">{ arg x; x < 2 }<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{|x| x < 2 }</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>shorthand for Symbols</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">'mySymbol'<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\mySymbol</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>creating a Ref</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">Ref.new(thing)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>`thing</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>calling the 'value' method</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">f.value(x)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f.(x)</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>indexing with 'at'</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">z.at(i)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z[i]</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>indexing with 'put'</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">z.put(i, y);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z[i] = y;</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>creating IdentityDictionaries</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">IdentityDictionary['a'->1,'b'->2]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(a: 1, b: 2)</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>creating arithmetic series</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">Array.series(16,1,1)<span class="s5"><i>, or<span class="Apple-converted-space">  </span></i></span>series(1,nil,16)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(1..16)</p>
-<p class="p5"><br></p>
-<p class="p4">Array.series(6,1,2)<span class="s5"><i>, or<span class="Apple-converted-space">  </span></i></span>series(1,3,11)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(1,3..11)</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>accessing subranges of Arrays</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">a.copyRange(4,8)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[4..8]</p>
-<p class="p5"><br></p>
-<p class="p4">a.copyToEnd(4)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[4..]</p>
-<p class="p5"><br></p>
-<p class="p4">a.copyFromStart(4)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[..4]</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>calling performList</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">object.performList(\method, a, b, array)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>object.method(a, b, *array)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>partial application</b></p>
-<p class="p5"><br></p>
-<p class="p3"><b>instead of writing:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>you can write:</b></p>
-<p class="p2"><br></p>
-<p class="p4">{|x| object.msg(a, x, b) }<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>object.msg(a, _, b)</p>
-<p class="p5"><br></p>
-<p class="p4">{|x,y| object.msg(a, x, y) }<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>object.msg(a, _, _)</p>
-<p class="p5"><br></p>
-<p class="p4">{|x| a + x }<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a + _</p>
-<p class="p5"><br></p>
-<p class="p4">{|x| [a, b, x] }<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[a, b, _]</p>
-<p class="p5"><br></p>
-<p class="p4">{|x| (a: x) }<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(a: _)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">__________________________________________________________________________</p>
-</body>
-</html>
diff --git a/Help/Language/Understanding-Errors.html b/Help/Language/Understanding-Errors.html
deleted file mode 100644
index b34fb4e..0000000
--- a/Help/Language/Understanding-Errors.html
+++ /dev/null
@@ -1,369 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.s4 {color: #606060}
-span.s5 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Understanding errors<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>1. Reading error dumps</b></p>
-<p class="p3"><b>2. Error objects and error handling</b></p>
-<p class="p3"><b>3. Common primitive errors</b></p>
-<p class="p3"><b>4. A common network error</b></p>
-<p class="p3"><b>5. A common warning</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>1. Reading error dumps<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">When sc3 reports an error to the user, there are usually three parts:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">- the error text</p>
-<p class="p3">- a dump of the receiver of the method that caused the error, and/or any arguments of the method call</p>
-<p class="p3">- a dump of the call stack to the point of the error<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">For example:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">1.blech<span class="Apple-converted-space">  </span></span>// no class implements this method; therefore you'll get an error</p>
-<p class="p6"><br></p>
-<p class="p5">// error text</p>
-<p class="p7">ERROR: Message 'blech' not understood.</p>
-<p class="p5">// receiver and args</p>
-<p class="p7">RECEIVER:</p>
-<p class="p7"><span class="Apple-converted-space">   </span>Integer 1</p>
-<p class="p7">ARGS:</p>
-<p class="p7">Instance of Array {<span class="Apple-converted-space">    </span>(02207560, gc=01, fmt=01, flg=11, set=00)</p>
-<p class="p7"><span class="Apple-converted-space">  </span>indexed slots [0]</p>
-<p class="p7">}</p>
-<p class="p5">// call stack</p>
-<p class="p7">CALL STACK:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>DoesNotUnderstandError-reportError</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Nil-handleError</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = nil</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg error = <instance of DoesNotUnderstandError></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Object-throw</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Object-doesNotUnderstand</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = 1</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg selector = 'blech'</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg args = [*0]</p>
-<p class="p7"><span class="Apple-tab-span">	</span>< closed FunctionDef ><span class="Apple-converted-space">  </span>(no arguments or variables)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>Interpreter-interpretPrintCmdLine</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Interpreter></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var res = nil</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var func = <instance of Function></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Process-interpretPrintCmdLine</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Main></p>
-<p class="p2"><br></p>
-<p class="p3">Each of these parts provides valuable information about the cause of the error. Debugging is much easier if you understand what the error output means.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Error text:</b> A string describing the error. In this case, "Message 'xxx' not understood" means that you attempted to use the method xxx on a class that does not implement it.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Receiver and arguments:</b> The method was applied to an integer (1), with no arguments (the size of the arguments array is 0).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Call stack:</b> Order of execution in the call stack is in reverse: the top of the stack shows the most recent calls.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Most call stacks for errors will show the same top three calls as shown here (calling the method reportError on an error class, calling handleError on Nil, and calling throw on the error object). You can ignore these three calls.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Following is the meat: the error happened when an object was not understood. Continuing to read down, it happened inside a function definition. (Every time you highlight a block of code and press the enter key, the code is compiled into a function definition and executed. So, this function definition simply refers to the text submitted to the interpreter.) And, it all began with the instruction to interpret and print a command line.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Here is a slightly more complex example, showing how you can use the variables listed for each call in the call stack to help locate the error.</p>
-<p class="p2"><br></p>
-<p class="p8">Routine<span class="s1">({</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> a;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a = 5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> b;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = 20.rand;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.postln.ecky_ecky_phtang; <span class="Apple-converted-space">  </span><span class="s3">// "NI!!!!"</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">}).play;</p>
-<p class="p2"><br></p>
-<p class="p7">ERROR: Message 'ecky_ecky_phtang' not understood.</p>
-<p class="p7">RECEIVER:</p>
-<p class="p7"><span class="Apple-converted-space">   </span>Integer 6</p>
-<p class="p7">ARGS:</p>
-<p class="p7">Instance of Array {<span class="Apple-converted-space">    </span>(02207560, gc=01, fmt=01, flg=11, set=00)</p>
-<p class="p7"><span class="Apple-converted-space">  </span>indexed slots [0]</p>
-<p class="p7">}</p>
-<p class="p7">CALL STACK:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>DoesNotUnderstandError-reportError</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Nil-handleError</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = nil</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg error = <instance of DoesNotUnderstandError></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Object-throw</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Object-doesNotUnderstand</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = 6</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg selector = 'ecky_ecky_phtang'</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg args = [*0]</p>
-<p class="p7"><span class="Apple-tab-span">	</span>< FunctionDef in closed FunctionDef ></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var b = 6</p>
-<p class="p7"><span class="Apple-tab-span">	</span>Function-loop</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Function></p>
-<p class="p7"><span class="Apple-tab-span">	</span>< FunctionDef in closed FunctionDef ></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var a = 5</p>
-<p class="p7"><span class="Apple-tab-span">	</span>Routine-prStart</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Routine></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg inval = 1542.075067</p>
-<p class="p9"><br></p>
-<p class="p3">Reading from the bottom this time, to trace the flow in chronological order: this time, execution did not begin with the command line, but with a routine commencing within the scheduler (Routine({...}).play). Note that there are two calls identified as "FunctionDef in closed FunctionDef" and that they can be distinguished by the variables contained within. The earlier call (second from the bottom) defines the variable "a" while the other defines "b." To locate the error in the code, then, you should look for a function defining the variable "b" that is <i>called</i> within another function defining "a" inside a routine.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">What if the error occurred not inside a function definition that you wrote, but inside a method in the class library? There may be a bug in the method, or you may have thought the method took a certain kind of argument when in fact it expects something else.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">If you double click on the construction "ClassName-methodName" in the call stack, the whole thing is selected. Then you can press cmd-J to open the method definition and look at the source code.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>2. Error objects and error handling<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">sc3 implements error reporting using Error objects, which are instances of the class Error or one of its subclasses. Any code (whether in the class library or any user application) can throw an error any time as follows:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s2">Error</span><span class="s1">(</span>"This is a basic error."<span class="s1">).throw;<span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p3">You can also catch exceptions that occur within functions by executing the function with "try" or "protect" instead of "value."</p>
-<p class="p2"><br></p>
-<p class="p3"><b>try -</b> execute the first function. On an error, execute the second function and suppress the error. The second function can rethrow the error if desired, allowing you to decide which errors will be reported and which suppressed. In this example, we do not rethrow the error, so the error is swallowed and execution continues to the end.</p>
-<p class="p2"><br></p>
-<p class="p7">try { 1.blech } { <span class="s2">|error|</span> <span class="s4">"oops"</span>.postln };</p>
-<p class="p10">"next line"<span class="s1">.postln;</span></p>
-<p class="p2"><br></p>
-<p class="p7">oops</p>
-<p class="p7">next line</p>
-<p class="p2"><br></p>
-<p class="p3"><b>protect -</b> executes the first function. On an error, execute the second function before reporting the error. This is useful when the steps before the protect make some changes that need to be undone if an error occurs. See the method Environment-use for an example.</p>
-<p class="p2"><br></p>
-<p class="p7">protect { 1.blech } { <span class="s2">|error|</span> <span class="s4">"oops"</span>.postln };</p>
-<p class="p10">"next line"<span class="s1">.postln;</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">oops<span class="Apple-converted-space">  </span></span>// without protect, this would not be posted</p>
-<p class="p7">ERROR: Message 'blech' not understood.</p>
-<p class="p7">RECEIVER:</p>
-<p class="p7"><span class="Apple-converted-space">   </span>Integer 1</p>
-<p class="p7">ARGS:</p>
-<p class="p7">Instance of Array {<span class="Apple-converted-space">    </span>(02207560, gc=01, fmt=01, flg=11, set=00)</p>
-<p class="p7"><span class="Apple-converted-space">  </span>indexed slots [0]</p>
-<p class="p7">}</p>
-<p class="p7">CALL STACK:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>DoesNotUnderstandError-reportError</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Prior to August 2004, try and protect do not return the value of the function to the caller if there is no error.</p>
-<p class="p2"><br></p>
-<p class="p7">try { 1+1 }</p>
-<p class="p9"><br></p>
-<p class="p7">a Function</p>
-<p class="p2"><br></p>
-<p class="p3">More recent builds (since early August 2004) do return the function's value. Non-error objects can be thrown using the class <b>Exception</b>.</p>
-<p class="p2"><br></p>
-<p class="p7">try { 1+1 }</p>
-<p class="p7">2</p>
-<p class="p2"><br></p>
-<p class="p5">// can't add a Point to an integer - binary op failed error</p>
-<p class="p5">// result of catch func is returned instead</p>
-<p class="p7">try { 1+<span class="s2">Point</span>(0, 0) } { 2*5 }</p>
-<p class="p7">10</p>
-<p class="p2"><br></p>
-<p class="p4"><b>3. Common primitive errors<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>- operation cannot be called from this Process.<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">This is usually the results of performing a GUI operation within a routine or scheduled function that is executing on some clock other than AppClock. AppClock is the only clock that can execute GUI manipulation because it is a lower priority thread. If the CPU is busy with audio synthesis or maintaining accurate scheduling for musical events, AppClock events will be delayed until the CPU is free enough.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Solution: write your GUI updates as follows. <b>defer</b> schedules the function on AppClock.</p>
-<p class="p2"><br></p>
-<p class="p7">{ myGUIObject.value_(newValue) }.defer;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>- Attempted write to immutable object.<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p7">#[0, 1, 2].put(1, 3)</p>
-<p class="p9"><br></p>
-<p class="p7">ERROR: Primitive '_BasicPut' failed.</p>
-<p class="p7">Attempted write to immutable object.</p>
-<p class="p2"><br></p>
-<p class="p3">#[0, 1, 2] is a literal array. Literal arrays cannot be manipulated--they can only be indexed. They cannot be changed internally.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Solution: copy the array first.</p>
-<p class="p2"><br></p>
-<p class="p7">#[0, 1, 2].copy.put(1, 3)</p>
-<p class="p9"><br></p>
-<p class="p7">[ 0, 3, 2 ]<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>- Index not an Integer.</b></p>
-<p class="p2"><br></p>
-<p class="p7">#[0, 1, 2].at(\1)</p>
-<p class="p9"><br></p>
-<p class="p7">ERROR: Primitive '_BasicAt' failed.</p>
-<p class="p7">Index not an Integer</p>
-<p class="p2"><br></p>
-<p class="p3">Arrays can be indexed only with integers (or, in builds since August 2004, floats).</p>
-<p class="p2"><br></p>
-<p class="p3">Solution: use .asInteger—note that if the object cannot be converted into an integer, you'll get a "Does not understand" error!</p>
-<p class="p2"><br></p>
-<p class="p7">#[0, 1, 2].at(\1.asInteger)</p>
-<p class="p7">1</p>
-<p class="p2"><br></p>
-<p class="p3"><b>- Index out of range.</b></p>
-<p class="p2"><br></p>
-<p class="p7">[0, 1, 2].put(5, 5)</p>
-<p class="p9"><br></p>
-<p class="p7">ERROR: Primitive '_BasicPut' failed.</p>
-<p class="p7">Index out of range.</p>
-<p class="p2"><br></p>
-<p class="p3">Arrays have a finite size. If you try to put an object into an array slot but the slot does not exist because the array is too small, you'll get this error.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Solution: extend the array.</p>
-<p class="p2"><br></p>
-<p class="p7">[0, 1, 2].extend(6).put(5, 5)</p>
-<p class="p9"><br></p>
-<p class="p7">[ 0, 1, 2, nil, nil, 5 ]</p>
-<p class="p9"><br></p>
-<p class="p3">Note that if the argument to extend() is smaller than the array, then the array will be truncated. If you're not sure, use max:</p>
-<p class="p9"><br></p>
-<p class="p7">i = rrand(5, 10);</p>
-<p class="p7">a = [0, 1, 2];</p>
-<p class="p7">a.extend(max(i+1, a.size)).put(i, 100);</p>
-<p class="p2"><br></p>
-<p class="p3">Why i+1? An array with size 4 allows 0, 1, 2 and 3 as indexes (4 elements starting with 0).</p>
-<p class="p2"><br></p>
-<p class="p3">If it's a new array, use .newClear instead of .new.</p>
-<p class="p2"><br></p>
-<p class="p7">a = <span class="s2">Array</span>.new(4);</p>
-<p class="p7">a.put(3, 1);</p>
-<p class="p7">ERROR: Primitive '_BasicPut' failed.</p>
-<p class="p7">Index out of range.</p>
-<p class="p9"><br></p>
-<p class="p7">a = <span class="s2">Array</span>.newClear(4);</p>
-<p class="p7">a.put(3, 1);</p>
-<p class="p7">[ nil, nil, nil, 1 ]</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p4"><b>4. A common network error</b></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p7">Exception in World_OpenUDP: unable to bind udp socket</p>
-<p class="p2"><br></p>
-<p class="p3">This is because you have multiple servers running, left over from crashes, unexpected quits etc.</p>
-<p class="p3">One can't cause them to quit via OSC (the boot button).</p>
-<p class="p9"><br></p>
-<p class="p5">// use this to remove them:</p>
-<p class="p7"><span class="s2">Server</span>.killAll<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>5. A common warning</b></p>
-<p class="p2"><br></p>
-<p class="p7">WARNING: FunctionDef contains variable declarations and so will not be inlined.</p>
-<p class="p2"><br></p>
-<p class="p3">This warning can be safely ignored. Your code will still run, even if you get this warning.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Inlining is a compiler optimization that takes the operations inside a function and places them in the main line of the containing function. For instance,<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">// inlined</p>
-<p class="p7">{ while { 0.9.coin } { 10.rand.postln }</p>
-<p class="p7">}.def.dumpByteCodes;</p>
-<p class="p2"><br></p>
-<p class="p7">BYTECODES: (16)</p>
-<p class="p7"><span class="Apple-converted-space">  </span>0 <span class="Apple-converted-space">  </span>40 <span class="Apple-converted-space">      </span>PushLiteral Float 0.9 <span class="Apple-converted-space">  </span>3FECCCCC CCCCCCCD<span class="Apple-converted-space">  </span><span class="s3">// { 0.9.coin }</span></p>
-<p class="p7"><span class="Apple-converted-space">  </span>1 <span class="Apple-converted-space">  </span>0D 2C<span class="Apple-converted-space">    </span>SendSpecialUnaryArithMsgX 'coin'</p>
-<p class="p7"><span class="Apple-converted-space">  </span>3 <span class="Apple-converted-space">  </span>F9 00 09 JumpIfFalsePushNil 9<span class="Apple-converted-space">  </span>(15)</p>
-<p class="p7"><span class="Apple-converted-space">  </span>6 <span class="Apple-converted-space">  </span>2C 0A<span class="Apple-converted-space">    </span>PushInt 10<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span><span class="s3">// { 10.rand.postln }</span></p>
-<p class="p7"><span class="Apple-converted-space">  </span>8 <span class="Apple-converted-space">  </span>0D 25<span class="Apple-converted-space">    </span>SendSpecialUnaryArithMsgX 'rand'</p>
-<p class="p7"><span class="Apple-converted-space"> </span>10 <span class="Apple-converted-space">  </span>C1 38<span class="Apple-converted-space">    </span>SendSpecialMsg 'postln'</p>
-<p class="p7"><span class="Apple-converted-space"> </span>12 <span class="Apple-converted-space">  </span>FD 00 0D JumpBak 13<span class="Apple-converted-space">  </span>(0)</p>
-<p class="p7"><span class="Apple-converted-space"> </span>15 <span class="Apple-converted-space">  </span>F2 <span class="Apple-converted-space">      </span>BlockReturn</p>
-<p class="p7">a FunctionDef in closed FunctionDef</p>
-<p class="p2"><br></p>
-<p class="p3">This function contains two other functions. One is the condition for the while loop; the other is the while loop's action. The compiler renders this into a single code block, using jump instructions to handle the looping and exit.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">If, however, one of the functions defines a variable, then that function requires a separate execution frame. In this case, it's necessary for the compiler to push function definition objects onto the stack.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">// not inlined</p>
-<p class="p7">{ while { 0.9.coin } {</p>
-<p class="p5"><span class="s1"><span class="Apple-converted-space">    </span></span><span class="s2">var</span><span class="s1"> a;<span class="Apple-tab-span">	</span></span>// variable here prevents optimization</p>
-<p class="p7"><span class="Apple-converted-space">    </span>a = 10.rand;</p>
-<p class="p7"><span class="Apple-converted-space">    </span>a.postln</p>
-<p class="p7"><span class="Apple-converted-space">  </span>}</p>
-<p class="p7">}.def.dumpByteCodes;</p>
-<p class="p2"><br></p>
-<p class="p7">BYTECODES: (7)</p>
-<p class="p7"><span class="Apple-converted-space">  </span>0 <span class="Apple-converted-space">  </span>04 00<span class="Apple-converted-space">    </span>PushLiteralX instance of FunctionDef in closed FunctionDef</p>
-<p class="p7"><span class="Apple-converted-space">  </span>2 <span class="Apple-converted-space">  </span>04 01<span class="Apple-converted-space">    </span>PushLiteralX instance of FunctionDef in closed FunctionDef</p>
-<p class="p7"><span class="Apple-converted-space">  </span>4 <span class="Apple-converted-space">  </span>C2 0C<span class="Apple-converted-space">    </span>SendSpecialMsg 'while'</p>
-<p class="p7"><span class="Apple-converted-space">  </span>6 <span class="Apple-converted-space">  </span>F2 <span class="Apple-converted-space">      </span>BlockReturn</p>
-<p class="p7">a FunctionDef in closed FunctionDef</p>
-<p class="p2"><br></p>
-<p class="p3">Inlined code will run faster, because pushing and using different execution frames is extra work for the virtual machine. If you're very concerned about speed, you can use this warning as an indicator that you might be able to optimize something in your code further.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Sometimes, there's no way around un-optimized code. To wit,<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">// inlined, optimized, but you'll get stuck notes</p>
-<p class="p8">Routine<span class="s1">({</span></p>
-<p class="p7"><span class="Apple-converted-space">  </span><span class="s2">var</span> synth;</p>
-<p class="p7"><span class="Apple-converted-space">  </span>{ synth = <span class="s2">Synth</span>(<span class="s4">"someSynth"</span>, [...args...]);</p>
-<p class="p7"><span class="Apple-converted-space">    </span><span class="s2">thisThread</span>.clock.sched(10, {</p>
-<p class="p7"><span class="Apple-converted-space">      </span>synth.free;</p>
-<p class="p7"><span class="Apple-converted-space">    </span>});</p>
-<p class="p7"><span class="Apple-converted-space">    </span>2.wait;</p>
-<p class="p7"><span class="Apple-converted-space">  </span>}.loop;</p>
-<p class="p7">}).play;</p>
-<p class="p9"><br></p>
-<p class="p5">// not inlined, but no stuck notes</p>
-<p class="p8">Routine<span class="s1">({</span></p>
-<p class="p7"><span class="Apple-converted-space">  </span>{ <span class="s2">var</span> synth;</p>
-<p class="p7"><span class="Apple-converted-space">    </span>synth = <span class="s2">Synth</span>(<span class="s4">"someSynth"</span>, [...args...]);</p>
-<p class="p7"><span class="Apple-converted-space">    </span><span class="s2">thisThread</span>.clock.sched(10, {</p>
-<p class="p7"><span class="Apple-converted-space">      </span>synth.free;</p>
-<p class="p7"><span class="Apple-converted-space">    </span>});</p>
-<p class="p7"><span class="Apple-converted-space">    </span>2.wait;</p>
-<p class="p7"><span class="Apple-converted-space">  </span>}.loop;</p>
-<p class="p7">}).play;</p>
-<p class="p2"><br></p>
-<p class="p3">The first routine can be optimized because there is no variable declaration inside the loop. But, the synth variable changes on each iteration, meaning that by the time the first release happens, you don't have access anymore to the first note. Thus the first note will never terminate.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">In the second case, each note has its own synth variable, so the notes will be terminated as expected. You get a warning, but it's better because the results are correct.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">A solution to the above problem is to use a function with local variables.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p8">Routine<span class="s1">({</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> func;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>func = {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">var</span><span class="s1"> synth; </span>// this variable is local to the function</p>
-<p class="p7"><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>synth = <span class="s2">Synth</span>(<span class="s4">"default"</span>);</p>
-<p class="p7"><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>[<span class="s5">\play</span>, synth].postln;</p>
-<p class="p7"><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">thisThread</span>.clock.sched(4.5, {<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>synth.free;</p>
-<p class="p7"><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>[<span class="s5">\free</span>, synth].postln; <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>});</p>
-<p class="p7"><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span></span>};</p>
-<p class="p7"><span class="Apple-converted-space">    <span class="Apple-tab-span">	</span></span>{ func.value; 1.wait; }.loop</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/attachments/Functions/functions.png b/Help/Language/attachments/Functions/functions.png
deleted file mode 100644
index 70c006d..0000000
Binary files a/Help/Language/attachments/Functions/functions.png and /dev/null differ
diff --git a/Help/Language/isKindOf.htm b/Help/Language/isKindOf.htm
deleted file mode 100644
index 1165af3..0000000
--- a/Help/Language/isKindOf.htm
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; color: #000000}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-</style>
-</head>
-<body>
-<p class="p1"><b>isKindOf</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">defined in: Object</p>
-<p class="p2"><br></p>
-<p class="p4">anObject.isKindOf(aClass)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Returns true if the object is of the class or one of its subclasses.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">To determine if an object is specifically of type aClass, but not one of its subclasses :</p>
-<p class="p2"><br></p>
-<p class="p4">anObject.class === aClass</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Language/switch.htm b/Help/Language/switch.htm
deleted file mode 100644
index 2b2b4cf..0000000
--- a/Help/Language/switch.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #952e14}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #606060}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>switch</b></p>
-<p class="p2"><br></p>
-<p class="p3">object.switch( test1, trueFunc1, test2, trueFunc2 ... testN, trueFuncN, defaultFunc )</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p2"><br></p>
-<p class="p4">a = 4.switch(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0, { <span class="s1">"was 0"</span> },</p>
-<p class="p4"><span class="Apple-tab-span">	</span>1, { <span class="s1">"was 1"</span> },</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// test cases are evaluated</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ 1 + 1 }, { <span class="s1">"was 2"</span> },</p>
-<p class="p4"><span class="Apple-tab-span">	</span>4, { <span class="s1">"was 4"</span> },</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>4, { </span>"flow has stopped, we don't get here unlike traditional switch implementations"<span class="s2"> },</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// last function is the default</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>{ </span>"if the answer wasn't four we would have ended up here, the default"<span class="s2"> }</span></p>
-<p class="p4">);</p>
-<p class="p2"><br></p>
-<p class="p4">a</p>
-<p class="p2"><br></p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3">switch returns the result of the trueFunc</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/EnvirGui.html b/Help/Libraries/JITLib/GUI/EnvirGui.html
deleted file mode 100644
index 1f3808d..0000000
--- a/Help/Libraries/JITLib/GUI/EnvirGui.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0023e6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2b30fa}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #961e1e}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2024c7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline ; color: #0018ea}
-span.s4 {color: #0026f7}
-span.s5 {text-decoration: underline ; color: #0023e6}
-span.s6 {text-decoration: underline}
-span.s7 {color: #0023e6}
-span.s8 {text-decoration: underline ; color: #2b30fa}
-span.s9 {color: #001db9}
-span.s10 {color: #426f0e}
-span.s11 {color: #961e1e}
-span.s12 {color: #2024c7}
-span.s13 {color: #008417}
-span.s14 {color: #737373}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EnvirGui<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>display the contents of an environment for editing</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: JITGui</b></p>
-<p class="p3"><br></p>
-<p class="p1">EnvirGui displays all keys and values of an environment, so one can change them flexibly.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Single number get displayed with an EZSlider, pairs of numbers with an EZRanger,<span class="Apple-converted-space"> </span></p>
-<p class="p1">and anything else is shown as an EZText (a text field).</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><b>See also:</b> <a href="adclib/EZText.html"><span class="s3">EZText</span></a></span><span class="s4">, <a href="SC://TdefEditor"><span class="s5">Tdef</span></a></span><span class="s6">Gui</span><span class="s4">, <a href="SC://PdefEditor"><span class="s5">Pdef</span></a></span><span class="s6">Gui,</span></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span><a href="NPParamGui.html"><span class="s8">NPParamGui</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new (object, numItems, parent, bounds, extras, makeSkip)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>create a new EnvirGui</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- the envir to display</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems </b>- the number of items to display. If an envir is given, and no num, num is envir.size.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- the parent view to display in; if none is given, a new window is created.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- the bounds within which to display; if none is given, bounds are calculated.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- a name to use for the envir/gui; is used for the auto-created window.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- flag whether to make a skipjack to manage updates of the envirgui. default is true.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// simple example</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s9">EnvirGui</span>.new(nil, 5);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// empty with 5 slots</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object_((a: 1, b: <span class="s10">\werty</span>, freq: [500, 2000])); <span class="Apple-tab-span">	</span><span class="s11">// put some things in</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.put(<span class="s10">\karl</span>, <span class="s10">\otto1</span>);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// one more</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.putAll((b: -12, r: 1, s: 2, t: 3, u: 4, v: 5))<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object_((x: 2)); <span class="Apple-tab-span">	</span></span>// put something else in</p>
-<p class="p7"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.putAll((b: -12, r: 1, s: 2, t: 3, u: 4, v: 5))<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.removeAt(\b)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.removeAt(\r)<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.removeAt(\s)<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.removeAt(\t)<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.removeAt(\u)<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.removeAt(\v)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.parent.close;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p13"><b>Instance Variables<span class="Apple-converted-space"> </span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>numItems<span class="Apple-tab-span">	</span></b>how many envir items to display<span class="Apple-converted-space"> </span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>envir<span class="Apple-tab-span">	</span></b>the envir displayed - actually an alias for object.</p>
-<p class="p9"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>zone<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the composite view the envirgui makes for itself<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>valFields</b><span class="Apple-tab-span">	</span>the areas in which the key-value pairs are displayed.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>widgets</b><span class="Apple-tab-span">	</span>the EZGuis that display the values:<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Single numbers will have an EZSlider,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pairs of numbers will be shown as an EZRanger,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>all other values are shown as compileStrings in an EZText.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>specs</b><span class="Apple-tab-span">	</span>EZSlider and EZRanger needs specs for their display ranges;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if there is a global spec for that key (key.asSpec), it will be used.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If not, a spec is generated (see the getSpec method) and kept in these (local) specs. <span class="Apple-converted-space"> </span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>keysRotation<span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if the size of envir exceeds numItems, the keys displayed can be rotated:<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e.g. with 10 keys displayed on 5 valFields,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>keysRotation 0 means show keys (0..4),<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>keysRotation 2 means show keys (2..6), etc.</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><b>Some Methods</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>object_ (obj)<span class="Apple-tab-span">	</span></b>set the environment to show</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>obj </b>- can be nil, a dictionary, an environment, or an event.</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s12">EnvirGui</span>((freq: 120, <span class="s13">\amp</span>: 0.2, <span class="s13">\pan</span>: -0.5), 12, <span class="s12">nil</span>, bounds: <span class="s12">Rect</span>(20, 400, 220, 100));<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object_((a: 1, b: [2, 3], c: <span class="s13">\symbol</span>, d: [4, 5, 6], f: { <span class="s14">"boing"</span>.postln }))</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>envir_(envir)<span class="Apple-tab-span">	</span></b>same as object_(obj)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>name_ (name)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>if in its own window, set the window's name</p>
-<p class="p9"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.name_(<span class="s14">"Yoohoo")</span>;</p>
-<p class="p2"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>getSpec (key, value)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>For editing, specs for the parameter ranges are needed.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>These can be set locally in the EnvirGui, or global specs will be looked up.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If no local or global specs exist for that parameter name, getSpec makes a<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>usable guess for them.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key </b>- the parameter name for which to find a spec</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>value </b>- the current value of that param, which may be used for guessing specs.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// inline example</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s12">EnvirGui</span>.new;</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.getSpec(</span><span class="s13">\freq</span><span class="s2">, 400); </span>// \freq exists as global spec, so use that</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object_((freq: 150));</p>
-<p class="p7"><br></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.getSpec(</span><span class="s13">\iFrek</span><span class="s2">, 500); <span class="Apple-tab-span">	</span></span>// no global spec, so make a new one:</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// exponential from val * 0.05 to val * 20;<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.specs;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// and keep it here</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.envir.put(<span class="s13">\iFrek</span>, 500);</p>
-<p class="p9"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>putSpec (key, obj)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add a spec for a given key,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or (if it is a global key) override a global spec with a local one:<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.putSpec(<span class="s13">\iFrek</span>, [10, 1000, <span class="s13">\exp</span>]);<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.putSpec(<span class="s13">\freq</span>, [100, 1000, <span class="s13">\exp</span>]);<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object_((freq: 200, iFrek: 20));</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Some internal methods:</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>setField (index, key, value, sameKey)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set a field by index, with the new key, value;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sameKey means the field had the same key already.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>setByKeys<span class="Apple-tab-span">	</span></b>update the widgets for the current keys</p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>clearField (index)<span class="Apple-tab-span">	</span></b>remove the EZGui at this index</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>clearFields<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>remove all unused EZGuis<b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p13"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span></span>// Setting envir variables in a Tdef:</p>
-<p class="p17">(</p>
-<p class="p17"><span class="s12">Tdef</span>(<span class="s13">\text</span>).set(<span class="s13">\note</span>, [0, 2, 7], <span class="s13">\dur</span>, { [0.1, 0.2, 0.4].choose }, <span class="s13">\pan</span>, 0, <span class="s13">\amp</span>, 0.1);</p>
-<p class="p3"><br></p>
-<p class="p17">w = <span class="s12">Window</span>(<span class="s14">"EZTexts"</span>, <span class="s12">Rect</span>(200, 400, 304, 120)).front;</p>
-<p class="p17">w.addFlowLayout;</p>
-<p class="p3"><br></p>
-<p class="p17"><span class="s12">TdefGui</span>(<span class="s12">Tdef</span>(<span class="s13">\text</span>), 0, parent: w);</p>
-<p class="p3"><br></p>
-<p class="p17">e = <span class="s12">EnvirGui</span>(<span class="s12">Tdef</span>(<span class="s13">\text</span>).envir, 4, parent: w);</p>
-<p class="p3"><br></p>
-<p class="p18">Tdef<span class="s2">(</span><span class="s13">\text</span><span class="s2">, { </span>|ev|<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="s12">var</span> mydur;</p>
-<p class="p17"><span class="Apple-tab-span">	</span>loop {<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mydur = ev.dur;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(note: ev.note, dur: mydur, amp: ev.amp, pan: ev.pan).postln.play;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mydur.wait;</p>
-<p class="p17"><span class="Apple-tab-span">	</span>}</p>
-<p class="p17">}).play;</p>
-<p class="p17">)</p>
-<p class="p3"><br></p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span></span>// or equivalently, use the built-in EnvirGui in TdefGui:</p>
-<p class="p18">TdefGui<span class="s2">(</span>Tdef<span class="s2">(</span><span class="s13">\text</span><span class="s2">), 4);</span></p>
-<p class="p3"><br></p>
-<p class="p17"><span class="s12">Tdef</span>(<span class="s13">\text</span>).set(<span class="s13">\yuhu</span>, <span class="s12">Prand</span>([2, 3, 5, 8, 13], <span class="s12">inf</span>), <span class="s13">\magic</span>, [<span class="s13">\abra</span>, <span class="s13">\cadabra</span>]);</p>
-<p class="p3"><br></p>
-<p class="p17"><span class="s12">Tdef</span>(<span class="s13">\text</span>).clear;</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/JITGui.html b/Help/Libraries/JITLib/GUI/JITGui.html
deleted file mode 100644
index 5bc9d37..0000000
--- a/Help/Libraries/JITLib/GUI/JITGui.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #2024c7}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {text-decoration: underline ; color: #0000ee}
-span.s5 {text-decoration: underline ; color: #292def}
-span.s6 {color: #2024c7}
-span.s7 {color: #cd0b0b}
-span.s8 {color: #008417}
-span.s9 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>JITGui<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a superclass for just in time interfaces</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: Object</b></p>
-<p class="p3"><br></p>
-<p class="p1">Proxies for synths, tasks and patterns as implemented in JITLib are extremely flexible.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Having guis that represent their changeable states makes it easier to understand<span class="Apple-converted-space"> </span></p>
-<p class="p1">what is going on, especially when using multiple proxies together.<span class="Apple-converted-space"> </span></p>
-<p class="p1">JITGuis follow a special strategy described below.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><a href="SC://EnvirGui"><span class="s3">EnvirGui</span></a>,<span class="Apple-converted-space"> </span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="TdefGui.html"><span class="s4">TdefGui</span></a>, <a href="SC://TdefAllGui"><span class="s4">TdefAllGui</span></a>, (TaskProxyGui)<span class="Apple-tab-span">	</span>// TdefGui replaces obsolete TdefEditor</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="PdefGui.html"><span class="s4">PdefGui</span></a>, <a href="SC://PdefAllGui"><span class="s4">PdefAllGui</span></a>, (TaskProxyAllGui)<span class="Apple-tab-span">	</span>// PdefGui replaces obsolete PdefEditor</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><a href="SC://NdefGui"><span class="s3">NdefGui</span></a>, <a href="MonitorGui.html"><span class="s3">MonitorGui</span></a>, <a href="SC://NdefParamGui"><span class="s3">NdefParamGui</span></a></span> <span class="Apple-tab-span">	</span><span class="s2">// replace <a href="NodeProxyEditor.html"><span class="s5">NodeProxyEditor</span></a>, <a href="ProxyMonitorGui.html"><span class="s5">ProxyMonitorGui</span></a></span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><a href="SC://ProxyMixer"><span class="s3">ProxyMixer</span></a></span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><a href="NdefMixer.html"><span class="s3">NdefMixer</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>still to be done:</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(ProxyChain) ProxyChainGui</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(PxPreset) PxPresetGui</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(maybe SoftSet)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (object, numItems, parent, bounds, options, makeSkip)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a new JITGui that will be watching an object and displaying its state.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- <span class="Apple-tab-span">	</span>the object to watch<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems </b>- the number of display items to use, e.g. how many fields for text,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or how many EZSliders for single-number parameters.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- <span class="Apple-tab-span">	</span>a parent view on which to display. If nil, a new window is created;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>can also be an existing window or a composite view.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- <span class="Apple-tab-span">	</span>a desired size and position where to display a JITGui. can be nil,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a point, or a rect. JITGuis know their minimum size (<b>minSize),<span class="Apple-converted-space"> </span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>and if bounds is nil, minSize is used.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if bounds is a point or rect, it will be set to at least minSize.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>With a rect one can also supply a position where to display.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If a point,shown size is the maximum of bounds and minSize<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>options - <span class="Apple-tab-span">	</span></b>a list of additional information, e.g. flags about optional buttons.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(this is used is some subclasses)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- A flag whether to make a skipjack.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s6">JITGui</span>.new(<span class="s6">nil</span>, 0);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">// make one</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object = 123;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// object gets shown asCompileString</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object = (key: </span><span class="s8">\otto</span><span class="s2">); <span class="Apple-tab-span">	</span></span>// if the object understands .key, key gets shown</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object = <span class="s6">Pseq</span>([1, 2, 3], <span class="s6">inf</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.close;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p13"><b>Accessing Instance Variables</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span>g.dump;</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>object </b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the object to watch<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>numItems </b><span class="Apple-tab-span">	</span>the number of display items to use, e.g. how many fields for text,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or how many EZSliders for single-number parameters.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>parent </b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a parent view on which the gui is displayed.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>bounds </b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the size and position of the JITGui</p>
-<p class="p8"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>zone<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a CompositeView inside the parent that holds the JITGui's views.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>minSize<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a JITGuis calculates its own minimum size based on numItems and options.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>defPos<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the default position where the JITGui is shown if it is in its own window.</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Appearance:</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>skin<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the GUI skin to use. By default this is GUI.skins.jit.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>font<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the font, also taken from JITGui.skin.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// </b>specific in the JITGui class:<span class="Apple-converted-space"> </span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>nameView<span class="Apple-tab-span">	</span></b>displays the object's key if available.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>csView<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>displays the object's compileString.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// common to all JITGuis:<span class="Apple-converted-space"> </span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>prevState<span class="Apple-tab-span">	</span></b>the last observed state which is kept around for comparison.<span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>skipjack<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the skipjack that watches the object's state so it can be updated.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>scroller<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>an EZScroller used for scrolling which of a list of items is shown.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see e.g. TdefGui for usage.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>hasWindow</b><span class="Apple-tab-span">	</span>a flag whether the JITGui has made its own window, and thus owns it.</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p13"><b>Instance Methods</b></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>object_ (obj)<span class="Apple-tab-span">	</span></b>put an object in the gui - if the gui accepts it.<span class="s9"><span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>accepts(obj)<span class="Apple-tab-span">	</span></b>test whether obj is a valid object to show in a JITGui.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>In <b>JITGui</b> itself, all objects are accepted, in the subclasses,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>obj</b> can either be nil or a specific class, such as Tdef, Pdef, Ndef,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>name_<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the text of the nameView and the window (if it <b>hasWindow</b>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>getName</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ask the object its name, or return '_anon_'</p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>winName</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return a suitable name for a window: "JITGui_objname"</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>moveTo (h, v)<span class="Apple-tab-span">	</span></b>if it has its own window, one can move it to some specific location.</p>
-<p class="p10"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>close<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>close its window.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p13"><b>How JITGuis work:<span class="Apple-converted-space"> </span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span>A JITGui watches the state of its object by calling its (the gui's) <b>getState</b> method.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>It compares the new state of the object with the previous state stored in <b>prevState.</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span>When something has changed, the gui elements concerned are updated.</p>
-<p class="p15"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b>Methods that subclasses should implement</b></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>You can write your own subclasses to JITGui very efficiently by<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>implementing appropriate variants of the following methods in your class.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>For examples of these methods, see TaskProxyGui, EnvirGui, NodeProxyGui.</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>setDefaults<span class="Apple-tab-span">	</span></b>used to calculate the required onscreen size for the jitGui's zone.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Should determine zone size based on numItems and options.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>also, defPos (where to show your jitGui by default) can be set here,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and possibly modifications to the skin used.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>accepts (obj)</b><span class="Apple-tab-span">	</span>a test whether <b>obj</b> can be shown in the particular kind of JITGui.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Subclasses of JITGui are made for special objects, e.g. Pdefs,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>so they should test whether obj is the right kind.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>makeViews<span class="Apple-tab-span">	</span></b>create all the views of the jitGui inside the zone.</p>
-<p class="p6"><br></p>
-<p class="p8"><br></p>
-<p class="p7"><b>For updating the JITGui, these are essential:</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>getState<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>ask the object for all aspects of its current state that will be displayed<b>.</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>checkUpdate<span class="Apple-tab-span">	</span></b>get the object's current state with <b>prevState</b>, compare it with <b>prevState</b>,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>update all gui elements that need to be changed,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and store the new state as <b>prevState</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This method is called in the skipJack.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b>More methods you may want to overwrite if required:</b></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>calcBounds</b> <span class="Apple-tab-span">	</span>how to calculate the bounds for the zone in which to display</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>makeWindow<span class="Apple-tab-span">	</span></b>how to make a window when no parent is given</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s9"><span class="Apple-tab-span">	</span></span><b>makeZone<span class="Apple-tab-span">	</span></b>how to initalize the zone within the parent window or view</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>getName<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a method for generating a name for the object.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>winName<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a method for generating a name for the JITGui's window.</p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>makeScroller</b><span class="Apple-tab-span">	</span>Some objects may have more elements to display than the gui has slots,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e.g. a ProxySpace can have more proxies than the mixer has numItems.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Then, only <b>numItems </b>elements are shown, and the others can be scrolled</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>to with <b>scroller</b> - an EZScroller next to the slot elements.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The makeScroller method knows where in the zone to put the scroller.</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// some layout tests</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span></span>// make its own window - defPos, minSize is used</p>
-<p class="p16"><span class="s2">g = </span>JITGui<span class="s2">(</span>Ndef<span class="s2">(</span><span class="s8">\a</span><span class="s2">));</span></p>
-<p class="p17"><br></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span></span>// make its own window, specific size</p>
-<p class="p11">g = <span class="s6">JITGui</span>(<span class="s6">Ndef</span>(<span class="s8">\a</span>), bounds: 390 at 20);</p>
-<p class="p17"><br></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span></span>// provide full bounds</p>
-<p class="p11">g = <span class="s6">JITGui</span>(<span class="s6">Ndef</span>(<span class="s8">\a</span>), bounds: <span class="s6">Rect</span>(200, 500, 390, 24));</p>
-<p class="p17"><br></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span></span>// extent is 0 at 0: minSize x, y is used</p>
-<p class="p11">g = <span class="s6">JITGui</span>(<span class="s6">Ndef</span>(<span class="s8">\a</span>), bounds: <span class="s6">Rect</span>(200, 500, 0, 0));</p>
-<p class="p11">g = <span class="s6">JITGui</span>(<span class="s6">Ndef</span>(<span class="s8">\a</span>), bounds: <span class="s6">Rect</span>(200, 500, 0, 50));</p>
-<p class="p11">g = <span class="s6">JITGui</span>(<span class="s6">Ndef</span>(<span class="s8">\a</span>), bounds: <span class="s6">Rect</span>(200, 500, 500, 0));</p>
-<p class="p17"><br></p>
-<p class="p18"><br></p>
-<p class="p19"><span class="s2">(<span class="Apple-tab-span">	</span></span>// put a JITGui in an existing window:</p>
-<p class="p20">w = <span class="s6">Window</span>().front;<span class="Apple-converted-space"> </span></p>
-<p class="p11">g = <span class="s6">JITGui</span>(<span class="s6">Ndef</span>(<span class="s8">\a</span>), 0, w, bounds: 300 at 48);</p>
-<p class="p20">)</p>
-<p class="p17"><br></p>
-<p class="p19"><span class="s2">(<span class="Apple-tab-span">	</span></span>// 5 lines high</p>
-<p class="p20">w = <span class="s6">Window</span>().front;<span class="Apple-converted-space"> </span></p>
-<p class="p11">g = <span class="s6">JITGui</span>(<span class="s6">Ndef</span>(<span class="s8">\a</span>), 5, w);</p>
-<p class="p20">)</p>
-<p class="p17"><br></p>
-<p class="p19"><span class="s2">(<span class="Apple-tab-span">	</span></span>// recommended: use a FlowLayout.</p>
-<p class="p20">w = <span class="s6">Window</span>().front;<span class="Apple-converted-space"> </span></p>
-<p class="p20">w.addFlowLayout;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s6">EZSlider</span>(w, 300 at 100, <span class="s8">\test</span>, []);</p>
-<p class="p11">g = <span class="s6">JITGui</span>(<span class="s6">Ndef</span>(<span class="s8">\a</span>), 0, w, bounds: 300 at 40);</p>
-<p class="p20">)</p>
-<p class="p17"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/MonitorGui.html b/Help/Libraries/JITLib/GUI/MonitorGui.html
deleted file mode 100644
index b1bf4c9..0000000
--- a/Help/Libraries/JITLib/GUI/MonitorGui.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2b30fa}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #2024c7}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2b30fa}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #1200c4}
-span.s6 {text-decoration: underline ; color: #0000ee}
-span.s7 {color: #2024c7}
-span.s8 {color: #008417}
-span.s9 {color: #cd0b0b}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MonitorGui<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>display and control a Monitor</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from : </b><a href="SC://JITGui"><span class="s2"><b>JITGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">MonitorGui displays the state of a <a href="SC://NodeProxy"><span class="s2">NodeProxy</span></a>'s <a href="SC://Monitor"><span class="s2">Monitor</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s3">It is used in <a href="NdefGui.html">NdefGui</a>, <a href="SC://ProxyMixer">ProxyMixer</a>, and <a href="SC://NdefMixer">NdefMixer</a>.<span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><b>See also:</b> <a href="SC://NodeProxy"><span class="s4">NodeProxy</span></a></span><span class="s5">, <a href="SC://Ndef"><span class="s2">Ndef</span></a>, <a href="SC://JITGui"><span class="s2">JITGui</span></a></span><span class="s2">, <a href="NdefGui.html"><span class="s6">NdefGui</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>First examples</b></p>
-<p class="p2"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6"><span class="s7">Ndef</span>(<span class="s8">\a</span>).ar;</p>
-<p class="p6"><span class="s7">Ndef</span>(<span class="s8">\k</span>).kr;</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// make a MonitorGui with all bells and whistles</p>
-<p class="p6">m = <span class="s7">MonitorGui</span>.new(bounds: 500 at 40, options: [<span class="s8">\playN</span>, <span class="s8">\name, \level, \fade</span>]);</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// when it has a kr proxy, it is visible, but disabled</p>
-<p class="p6">m.object_(<span class="s7">Ndef</span>(<span class="s8">\k</span>));</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// with an ar proxy, it is enabled</p>
-<p class="p6">m.object_(<span class="s7">Ndef</span>(<span class="s8">\a</span>));</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// show its play state</p>
-<p class="p6"><span class="s7">Ndef</span>(<span class="s8">\a</span>).play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// and volume</p>
-<p class="p6"><span class="s7">Ndef</span>(<span class="s8">\a</span>).vol_(0.25);</p>
-<p class="p6"><span class="s7">Ndef</span>(<span class="s8">\a</span>).stop</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// switch to playN mode - spread outputs should show</p>
-<p class="p6"><span class="s7">Ndef</span>(<span class="s8">\a</span>).playN([0, 2]);</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// switch back to play - spread outbox goes back</p>
-<p class="p6"><span class="s7">Ndef</span>(<span class="s8">\a</span>).stop;</p>
-<p class="p6"><span class="s7">Ndef</span>(<span class="s8">\a</span>).play(0);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p9"><b>Creation</b></p>
-<p class="p10"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>*new (object, parent, bounds, makeSkip, options)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- the nodeproxy whose monitor state will be shown, or nil.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- a parent view where MonitorGui is to be shown. If nil, a window is made.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- bounds where the view (or window) will be shown.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- a flag whether to create and start a SkipJack for auto-updating.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>options </b>- an array of symbols for options of what to display.<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = </span>MonitorGui<span class="s3">(</span>Ndef<span class="s3">(</span><span class="s8">\a</span><span class="s3">));<span class="Apple-tab-span">	</span></span><span class="s9">// barebones</span></p>
-<p class="p15">(</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s7">Window</span>.new.front;<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.addFlowLayout;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s7">MonitorGui</span>(<span class="s7">Ndef</span>(<span class="s8">\a</span>), w, 300 at 40);</p>
-<p class="p15">)</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// different options:<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// a playN dialog button</p>
-<p class="p6">g = <span class="s7">MonitorGui</span>.new(<span class="s7">Ndef</span>(<span class="s8">\a</span>), options: [<span class="s8">\playN</span>])</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// bounds<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s7">MonitorGui</span>.new(<span class="s7">Ndef</span>(<span class="s8">\a</span>), bounds: <span class="s7">Rect</span>(100, 100, 400, 30), options: [<span class="s8">\playN</span>])</p>
-<p class="p6"><span class="s7">MonitorGui</span>.new(<span class="s7">Ndef</span>(<span class="s8">\a</span>), bounds: 400 at 24, options: [<span class="s8">\playN</span>])</p>
-<p class="p10"><br></p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span></span>// level name and numerical value</p>
-<p class="p6"><span class="s7">MonitorGui</span>.new(<span class="s7">Ndef</span>(<span class="s8">\a</span>), options: [<span class="s8">\playN</span>, <span class="s8">\level</span>])</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// a nameView and a fadeTime setter box</p>
-<p class="p6"><span class="s7">MonitorGui</span>.new(<span class="s7">Ndef</span>(<span class="s8">\a</span>), options: [<span class="s8">\playN</span>, <span class="s8">\name</span>, <span class="s8">\fade</span>])</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// all of 'em</p>
-<p class="p6"><span class="s7">MonitorGui</span>.new(<span class="s7">Ndef</span>(<span class="s8">\a</span>), options: [<span class="s8">\playN</span>, <span class="s8">\level</span>, <span class="s8">\name</span>, <span class="s8">\fade</span>])</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p17"><b>Class Variables</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>lastOutBus</b><span class="Apple-tab-span">	</span>the highest outbus number to allow. Default is 99.</p>
-<p class="p12"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><b>Instance Variables</b></p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>config<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>some information on what to display</p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>ampSl<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>an EZSlider for Monitor volume</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>playBut<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a play button - shows play or playN<span class="Apple-converted-space"> </span></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>setOutBox<span class="Apple-tab-span">	</span></b>a numberbox to set output routing</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>playNDialogBut<span class="Apple-tab-span">	</span></b>opens a dialog window for playN output routing by code</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>fadeBox</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a numberbox for setting monitor fadeTime.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p17"><b>Some Methods</b></p>
-<p class="p12"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>playNMode_ (flag)<span class="Apple-tab-span">	</span></b>switches between playN mode (true) and play mode (false)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>checkUpdate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>compare previous state with current state, and update gui elements.</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/NdefGui.html b/Help/Libraries/JITLib/GUI/NdefGui.html
deleted file mode 100644
index 030400d..0000000
--- a/Help/Libraries/JITLib/GUI/NdefGui.html
+++ /dev/null
@@ -1,285 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #1d25b9; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2024c7}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #008417}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2b30fa}
-span.s3 {text-decoration: underline ; color: #0000ee}
-span.s4 {color: #000000}
-span.s5 {color: #2024c7}
-span.s6 {color: #008417}
-span.s7 {color: #737373}
-span.s8 {color: #cd0b0b}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NdefGui<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a gui for a NodeProxy or Ndef</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="JITGui.html"><span class="s2"><b>JITGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">NdefGui provides controls for handling and editing a NodeProxy or Ndef,<span class="Apple-converted-space"> </span></p>
-<p class="p1">and its monitors. NdefGui replaces <a href="NodeProxyEditor.html"><span class="s2">NodeProxyEditor</span></a>.</p>
-<p class="p1">It provides:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>• sliders for numerical settings</p>
-<p class="p1"><span class="Apple-tab-span">	</span>• mapping of kr proxies to parameters<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>• optional controls for playing / monitoring</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s3"><a href="SC://NodeProxy">NodeProxy</a></span> and <a href="SC://Ndef"><span class="s2">Ndef</span></a> implement a .gui message,<span class="Apple-converted-space"> </span></p>
-<p class="p1">which returns a NdefGui for that NodeProxy.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Overview: <a href="SC://JITLib"><span class="s2">JITLib</span></a></p>
-<p class="p4"><br></p>
-<p class="p1">See also: <a href="MonitorGui.html"><span class="s2">MonitorGui</span></a>, <a href="NdefParamGui.html"><span class="s2">NdefParamGui</span></a>, NdefMixer, ProxyMixer</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p3"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new (object, numItems, parent, bounds, makeSkip, options)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- the nodeproxy to be shown and edited, or nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems </b>- How many sliders or textviews for paramaters to provide. Default value is 0.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- a parent view where NdefGui is to be shown. If nil, a window is made.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- bounds where the view (or window) will be shown.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- a flag whether to create and start a SkipJack for auto-updating.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>options </b>- an array of symbols for options of what to display. See list below.</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// some preparation - make an ar and a kr nodeproxy.</p>
-<p class="p11">s.boot;</p>
-<p class="p11">(</p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\lfo</span>, { <span class="s5">|lofreq|</span> <span class="s5">SinOsc</span>.kr(lofreq) });</p>
-<p class="p12">Ndef<span class="s4">(</span><span class="s6">\a</span><span class="s4">, { </span>|freq=300, dens=20, amp=0.1, pan|<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(<span class="s5">Ringz</span>.ar(<span class="s5">Dust</span>.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2), pan)<span class="Apple-converted-space"> </span></p>
-<p class="p11">});</p>
-<p class="p11">)</p>
-<p class="p13"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// make an NdefGui. By default, this has a lot of the options on.</p>
-<p class="p11">n = <span class="s5">NdefGui</span>.new;</p>
-<p class="p11">n.object_(<span class="s5">Ndef</span>(<span class="s6">\lfo</span>));</p>
-<p class="p11">n.object_(<span class="s5">Ndef</span>(<span class="s6">\a</span>));</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).set(<span class="s6">\lofreq</span>, 12);</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>Some configuration options<span class="Apple-tab-span">	</span></b></p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// numItems - sliders for setting parameters</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), 8);</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// 4 sets of configurations are provided:</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), 0, options: <span class="s5">NdefGui</span>.control);</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), 0, options: <span class="s5">NdefGui</span>.audio);</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), 0, options: <span class="s5">NdefGui</span>.big);</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), 0, options: <span class="s5">NdefGui</span>.full);</p>
-<p class="p14"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s5">NdefGui</span><span class="s4">.control;<span class="Apple-tab-span">	</span></span>// used for control proxies in PxMix</p>
-<p class="p15"><span class="s4">-><span class="Apple-tab-span">	</span>[ </span>\name<span class="s4">, </span>\pausR<span class="s4">, </span>\sendR<span class="s4">, </span>\poll<span class="s4">, </span>\ed<span class="s4"> ]</span></p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s5">NdefGui</span><span class="s4">.audio;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// used for audio proxies in PxMix</p>
-<p class="p15"><span class="s4">-><span class="Apple-tab-span">	</span>[ </span>\monitor<span class="s4">, </span>\playN<span class="s4">, </span>\name<span class="s4">, </span>\pausR<span class="s4">, </span>\sendR<span class="s4">, </span>\ed<span class="s4"> ]</span></p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s5">NdefGui</span><span class="s4">.big;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// used for the big NdefGui in PxMix</p>
-<p class="p15"><span class="s4">-><span class="Apple-tab-span">	</span>[ </span>\name<span class="s4">, </span>\type<span class="s4">, </span>\CLR<span class="s4">, </span>\reset<span class="s4">, </span>\scope<span class="s4">, </span>\doc<span class="s4">, </span>\end<span class="s4">, </span>\fade<span class="s4">,</span></p>
-<p class="p15"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\monitor<span class="s4">, </span>\playN<span class="s4">, </span>\pausR<span class="s4">, </span>\sendR<span class="s4">, </span>\poll<span class="s4"> ]</span></p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all of 'em</p>
-<p class="p12">NdefGui<span class="s4">.full;</span></p>
-<p class="p15"><span class="s4">-><span class="Apple-tab-span">	</span>[ <span class="Apple-tab-span">	</span>name, </span>\type<span class="s4">, </span>\CLR<span class="s4">, </span>\reset<span class="s4">, </span>\scope<span class="s4">, </span>\doc<span class="s4">, </span>\end<span class="s4">, </span>\fade<span class="s4">, </span>\rip<span class="s4">,</span></p>
-<p class="p15"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>monitor, </span>\playN<span class="s4">, </span>\pausR<span class="s4">, </span>\sendR<span class="s4">, </span>\poll<span class="s4">, </span>\ed<span class="s4"> ]</span></p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// the<span class="Apple-converted-space">  </span>choice of elements is<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\name</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a dragboth for the proxy<span class="s6">'s name</span></p>
-<p class="p11"><span class="s6"><span class="Apple-tab-span">	</span>\type<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a view for the proxy'</span>s type (ir, ar + numChans, kr + numChans)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\CLR</span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to clear proxy</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\reset</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to reset proxy nodemap</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\scope</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to scope proxy</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\doc</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to document proxy as code</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\end</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to end proxy</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\fade</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">EZNumber</span> for setting proxy fadetime</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\monitor</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">MonitorGui</span> for audio proxies</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\playN</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a button for editing playN settings (within the <span class="s5">MonitorGui</span>)</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\rip</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(^)<span class="Apple-tab-span">	</span>button to open a new editor on the proxy (used in <span class="s5">PxMix</span>)</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\pausR</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a button to toggle proxy pause/resume</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\sendR</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a button to re-send; alt-click tells the proxy to rebuild</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\poll</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>poll the proxy</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>Planned options - not done yet:</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\morph</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add a <span class="s5">PxPreset</span> / morph control<span class="Apple-converted-space"> </span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="Apple-tab-span">	</span>pass in functions to add your own elements, such as:<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s6">\zoink</span> -> { <span class="s5">|ndgui|</span> <span class="s5">Button</span>(ndgui.zone, 60 at 20).states_([[<span class="s7">"zoink"</span>]]).action_({ ndgui.object.zoink }) };<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// make one and watch how the elements change<span class="Apple-converted-space"> </span></p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), 4, options: <span class="s5">NdefGui</span>.big);</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).stop;</p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).play;</p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).vol_(0.3);</p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).stop;</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).playN([2, 5]);</p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).playN([2, 5], vol: 0.34);</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// as in ProxyMixer, left side</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), options: <span class="s5">NdefGui</span>.audio);</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), 4, options: <span class="s5">NdefGui</span>.control); <span class="s8">// control zone</span></p>
-<p class="p11">n = <span class="s5">NdefGui</span>(options: <span class="s5">NdefGui</span>.big);</p>
-<p class="p14"><br></p>
-<p class="p11">n = <span class="s5">NdefGui</span>(bounds: 400 at 20, options: <span class="s5">NdefGui</span>.full);</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// put in a window - then no margin is added</p>
-<p class="p11">(</p>
-<p class="p11">w = <span class="s5">Window</span>().front;<span class="Apple-converted-space"> </span></p>
-<p class="p11">w.addFlowLayout;</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">Ndef</span>(<span class="s6">\a</span>), 4, w, options: <span class="s5">NdefGui</span>.big);</p>
-<p class="p11">)</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>, { <span class="s5">|freq = 10|</span> <span class="s5">Blip</span>.ar(freq) }).set(<span class="s6">\freq</span>, 200)</p>
-<p class="p12">Ndef<span class="s4">(</span><span class="s6">\a</span><span class="s4">, { </span>|freq = 10, amp = 0.1|<span class="s4"> </span>Blip<span class="s4">.ar(freq) * amp })</span></p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).set(<span class="s6">\freq</span>, 220)</p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\a</span>).set(<span class="s6">\harm</span>, 20)</p>
-<p class="p12">Ndef<span class="s4">(</span><span class="s6">\a</span><span class="s4">, { </span>|freq = 10, amp = 0.1, harm = 20|<span class="s4"> </span>Blip<span class="s4">.ar(freq, harm) * amp })</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>//<span class="Apple-tab-span">	</span>Works with ProxySpace as well:<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><br></p>
-<p class="p11">p = <span class="s5">ProxySpace</span>.push;</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(~test, 4);</p>
-<p class="p14"><br></p>
-<p class="p11">~test.ar;</p>
-<p class="p11">~test.play;</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// too many controls: an EZScroller helps.</p>
-<p class="p11">(</p>
-<p class="p12"><span class="s4">~test = { </span>|freq=300, dens=20, amp=0.1, pan, ping=12, tok=13, crak|<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(<span class="s5">Ringz</span>.ar(<span class="s5">Dust</span>.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2), pan)<span class="Apple-converted-space"> </span></p>
-<p class="p11">};</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// gets specs for slider ranges from global lookup in Spec.specs:</p>
-<p class="p11"><span class="s5">Spec</span>.add(<span class="s6">\dens</span>, [0.1, 100, <span class="s6">\exp</span>, 0.01, 10]);</p>
-<p class="p11">)</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4">(<span class="Apple-tab-span">	</span></span>// keys go away if not needed</p>
-<p class="p12"><span class="s4">~test = { </span>|freq=300, dens=20, amp=0.1|<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(<span class="s5">Ringz</span>.ar(<span class="s5">Dust</span>.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2))<span class="Apple-converted-space"> </span></p>
-<p class="p11">};</p>
-<p class="p11">)</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4">(<span class="Apple-tab-span">	</span></span>// and are added in order if needed</p>
-<p class="p12"><span class="s4">~test = { </span>|freq=300, intv=0, dens=20, amp=0.1, pan, pok, ting|<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Ringz</span>.ar(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Dust</span>.ar(dens ! 2, amp / (dens.max(1).sqrt)),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * [intv, intv.neg].midiratio, 0.2))<span class="Apple-converted-space"> </span></p>
-<p class="p11">};</p>
-<p class="p11">)</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// changes in settings are shown:</p>
-<p class="p11">~test.set(<span class="s6">\freq</span>, exprand(100.0, 2000.0));</p>
-<p class="p11">~test.playN([0, 2]);</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// mapping kr proxies to controls is shown</p>
-<p class="p11">~lfo = { <span class="s5">LFNoise0</span>.kr(8, 4) };</p>
-<p class="p11">~test.map(<span class="s6">\intv</span>, ~lfo);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11">~test.unmap(<span class="s6">\intv</span>);<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p14"><br></p>
-<p class="p11"><span class="s5">Spec</span>.add(<span class="s6">\intv</span>, <span class="s5">ControlSpec</span>(0, 24, <span class="s6">\lin</span>, 0.01, 0));<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// setting a param value unmaps a previous control source</p>
-<p class="p11">~test.set(<span class="s6">\freq</span>, rrand(200, 500), <span class="s6">\intv</span>, rrand(-5.5, 5.5));</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p1"><b>// You can drag and drop proxies between NodeProxyEditors:<span class="Apple-converted-space"> </span></b></p>
-<p class="p14"><br></p>
-<p class="p11">(</p>
-<p class="p10">//<span class="Apple-tab-span">	</span>p = ProxySpace.push(s.boot);</p>
-<p class="p14"><br></p>
-<p class="p11">l = <span class="s5">NdefGui</span>(<span class="s5">nil</span>, 3).moveTo(10, 120);</p>
-<p class="p11">m = <span class="s5">NdefGui</span>(<span class="s5">nil</span>, 3).moveTo(10, 240);</p>
-<p class="p11">n = <span class="s5">NdefGui</span>(<span class="s5">nil</span>, 3).moveTo(10, 360);</p>
-<p class="p11">o = <span class="s5">NdefGui</span>(<span class="s5">nil</span>, 3).moveTo(10, 480);</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="s5">Spec</span>.add(<span class="s6">\dens</span>, [0.1, 300, <span class="s6">\exp</span>]);</p>
-<p class="p14"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// make 3 kinds of proxies: using tilde/proxyspace, Ndef, and unnamed.</p>
-<p class="p11">~spacy = {<span class="s5">|dens=5|</span> <span class="s5">Formlet</span>.ar(<span class="s5">Dust</span>.ar(dens ! 2), <span class="s5">LFDNoise0</span>.kr(20 ! 2).lag(0.1).linexp(-1, 1, 300, 5000), 0.003, 0.03)<span class="Apple-converted-space">  </span>};</p>
-<p class="p11"><span class="s5">Ndef</span>(<span class="s6">\ndeffy</span>, { <span class="s5">GrayNoise</span>.ar( 0.1 ! 2) });</p>
-<p class="p11">c = <span class="s5">NodeProxy</span>.audio.source_({ <span class="s5">PinkNoise</span>.ar(0.1 ! 2) });</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// put one in each editor</p>
-<p class="p11">l.object_(~spacy);</p>
-<p class="p11">m.object_(<span class="s5">Ndef</span>(<span class="s6">\ndeffy</span>));</p>
-<p class="p11">n.object_(c);<span class="Apple-tab-span">	</span></p>
-<p class="p11">)</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// one can also drag and drop text into the drag:</p>
-<p class="p11">(<span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s6">\a</span>)<span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p16"><br></p>
-<p class="p17"><b>Class Variables</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>buttonSizes<span class="Apple-tab-span">	</span></b>a dict for the sizes of the different gui elements.</p>
-<p class="p7"><br></p>
-<p class="p17"><b>Instance Variables<span class="Apple-converted-space"> </span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>As in all JITGuis:<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>... object, numItems, parent, bounds ...<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>... zone, minSize, defPos, skin, font, skipjack ...<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Views if they were present in the options:<span class="Apple-converted-space"> </span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>nameView</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>typeView</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>monitorGui</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>paramGui</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>fadeBox</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>pauseBut</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>sendBut</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>edBut</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p6">// test replacing keys - needed for ProxyChain.</p>
-<p class="p13"><br></p>
-<p class="p18">(</p>
-<p class="p12">Ndef<span class="s4">(</span><span class="s6">\a</span><span class="s4">, { </span>|freq=300, dens=20, amp=0.1, pan|<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(<span class="s5">Ringz</span>.ar(<span class="s5">Dust</span>.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2), pan)<span class="Apple-converted-space"> </span></p>
-<p class="p11">});</p>
-<p class="p12"><span class="s4">n = </span>NdefGui<span class="s4">(</span>Ndef<span class="s4">(</span><span class="s6">\a</span><span class="s4">));</span></p>
-<p class="p11">)</p>
-<p class="p11">n.addReplaceKey(<span class="s6">\freq</span>, <span class="s6">\myFreak</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// ATM needs an extra update:</p>
-<p class="p11">x = n.object; n.object_(<span class="s5">nil</span>); n.object_(x);</p>
-<p class="p14"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/NdefMixer.html b/Help/Libraries/JITLib/GUI/NdefMixer.html
deleted file mode 100644
index 5b9f9c7..0000000
--- a/Help/Libraries/JITLib/GUI/NdefMixer.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2b30fa}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2024c7; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2024c7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #737373}
-span.s4 {color: #2024c7}
-span.s5 {color: #008417}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NdefMixer <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>mix control for an Ndef proxyspace</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>NdefMixer is nearly identical to ProxyMixer, except that it looks at the<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>proxyspaces for each server that Ndef.all contains.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also </b><a href="ProxyMixer.html"><b>ProxyMixer</b></a><b>, </b><a href="JITGui.html"><b>JITGui</b></a></span><b>, </b><a href="NdefGui.html"><b>NdefGui</b></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">n = NdefMixer<span class="s2">(s);</span></p>
-<p class="p2"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">"bcdefghijk"</span>.do { <span class="s4">|k|</span> Ndef(k.asSymbol).ar };</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">"lmnopqrtuvw"</span>.do { <span class="s4">|k|</span> Ndef(k.asSymbol).kr };</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">"abcdefghijk"</span>.do { <span class="s4">|k|</span> Ndef(k.asSymbol).playN };</p>
-<p class="p6">(</p>
-<p class="p5">Ndef<span class="s2">(</span><span class="s5">\aaaaaa</span><span class="s2">, { </span>|freq=250, intv=19, timescale=1, curve=0, loopnode=0|<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> env = <span class="s4">EnvGen</span>.kr(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Env</span>({ 1.0.rand2 }!11, {1.0.rand}!10, curve, releaseNode: 9, loopNode: loopnode),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timeScale: timescale);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> pitch = (env * [1, 0.33, -1] * intv).midiratio * freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Splay</span>.ar(<span class="s4">Formant</span>.ar(pitch, pitch.scramble * 2, pitch.scramble)) * 0.1;</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">n.switchSize(2);</p>
-<p class="p6">n.switchSize(1);</p>
-<p class="p6">n.switchSize(0);</p>
-<p class="p6">n.editGui.object_(Ndef(\aaaaaa));</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">NdefMixer</span>(<span class="s4">Server</span>.internal, 24);</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/NdefMixerOld.html b/Help/Libraries/JITLib/GUI/NdefMixerOld.html
deleted file mode 100644
index 9b05d7d..0000000
--- a/Help/Libraries/JITLib/GUI/NdefMixerOld.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0023b6; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0023b6; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf1410}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0a26c0}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf1410}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco; color: #0023b6}
-span.s3 {text-decoration: underline ; color: #1032ee}
-span.s4 {color: #1135f9}
-span.s5 {font: 12.0px Helvetica; color: #000000}
-span.s6 {color: #bf1410}
-span.s7 {color: #000000}
-span.s8 {color: #017417}
-span.s9 {color: #0a26c0}
-span.s10 {color: #0b28c6}
-span.s11 {color: #00831b}
-span.s12 {color: #0000bf}
-span.s13 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NdefMixer</b></span><span class="s2"> </span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mix control for all Ndefs on a given server<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from:</b> <a href="../../../Core/Object.html"><span class="s3">Object</span></a><b> </b>:<b> </b><a href="ProxyMixer.html"><span class="s4">ProxyMixer</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>For more details see: </b><a href="ProxyMixer.html"><span class="s4"><b>ProxyMixer</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Creation / Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b></b><br></p>
-<p class="p7"><b>*new(server, nProxies = 16, title, bounds)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Return a new window for a given server.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>server: Server object (<a href="../../../ServerArchitecture/Server.html"><span class="s4">Server</span></a>) or server name (<a href="../../../Core/Symbol.html"><span class="s4">Symbol</span></a>)</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span></span>// ndef mxers for other servers</p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s7">n = </span>NdefMixer<span class="s7">(</span><span class="s8">\internal</span><span class="s7">);</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s7">n = </span>NdefMixer<span class="s7">(</span><span class="s8">\localhost</span><span class="s7">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s7">n = </span><span class="s9">NdefMixer</span><span class="s7">(</span><span class="s8">\trala</span><span class="s7">); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fails, no such server</p>
-<p class="p10"><b></b><br></p>
-<p class="p7"><b>proxyspace</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span>Return the proxyspace.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p6"><b></b><br></p>
-<p class="p11"><b>Example</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p13"><span class="s7">n = </span><span class="s9">NdefMixer</span><span class="s7">(s);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// for the default server</p>
-<p class="p14">// make a new proxy</p>
-<p class="p15">(</p>
-<p class="p15"><span class="s10">Ndef</span>(<span class="s11">\a</span>, {<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">Pan2</span>.ar(</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Ringz</span>.ar(</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Impulse</span>.ar(exprand(0.5, 4)),<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exprand(300, 3000),<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>1.0.rand2,<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>0.2)</p>
-<p class="p15">})</p>
-<p class="p15">);</p>
-<p class="p16"><br></p>
-<p class="p17"><br></p>
-<p class="p16"><br></p>
-<p class="p18">n.proxyspace;</p>
-<p class="p16"><br></p>
-<p class="p18"><span class="s12">Ndef</span>(<span class="s13">\duster</span>, { <span class="s12">Dust</span>.kr(4) });</p>
-<p class="p16"><br></p>
-<p class="p18"><span class="s12">Ndef</span>(<span class="s13">\a</span>).ar;</p>
-<p class="p18"><span class="s12">Ndef</span>(<span class="s13">\a</span>).fadeTime = 2;</p>
-<p class="p18"><span class="s12">Ndef</span>(<span class="s13">\a</span>).end;</p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-<p class="p16"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/NdefParamGui.html b/Help/Libraries/JITLib/GUI/NdefParamGui.html
deleted file mode 100644
index b8182a1..0000000
--- a/Help/Libraries/JITLib/GUI/NdefParamGui.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2b30fa}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #2024c7}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2b30fa}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline ; color: #0000ee}
-span.s5 {color: #2a2ff7}
-span.s6 {color: #2024c7}
-span.s7 {color: #008417}
-span.s8 {color: #cd0b0b}
-span.s9 {color: #737373}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NdefParamGui<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>display the settings of a nodeproxy</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="JITGui.html"><span class="s2"><b>JITGui</b></span></a><b> : </b><a href="EnvirGui.html"><span class="s2"><b>EnvirGui</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">NdefParamGui displays all settings and mappings of a nodeproxy, so one can change them flexibly.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Single number get displayed with an EZSlider, and anything else is shown as an EZText (a text field).<span class="Apple-converted-space"> </span></p>
-<p class="p1">Its main use is within <a href="NdefGui.html"><span class="s2">NdefGui</span></a> and <a href="PxMix.html"><span class="s2">PxMix</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="../../../GUI/EZ-GUI/EZText.html"><span class="s4">EZText</span></a></span><span class="s5">, <a href="NdefGui.html"><span class="s2">NdefGui</span></a>, <a href="PxMix.html"><span class="s2">PxMix</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (object, numItems, parent, bounds, options, makeSkip)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>create a new NdefParamGui</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- the nodeproxy whose settings are to be displayed</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems </b>- the number of items to display. If an envir is given, and no num, num is envir.size.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- the parent view to display in; if none is given, a new window is created.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- the bounds within which to display; if none is given, bounds are calculated.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>options - <span class="Apple-tab-span">	</span></b>a list of additional information, e.g. flags about optional buttons.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- flag whether to make a skipjack to manage updates of the envirgui. default is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// simple example</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = </span><span class="s6">NdefParamGui</span><span class="s3">.new(</span><span class="s6">nil</span><span class="s3">, 5);<span class="Apple-tab-span">	</span></span>// empty with 5 slots</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object_(</span><span class="s6">Ndef</span><span class="s3">(</span><span class="s7">\a</span><span class="s3">)); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put in a nodeproxy</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Ndef<span class="s3">(</span><span class="s7">\a</span><span class="s3">, { </span>|freq = 300, amp = 0.2|<span class="s3"> </span>SinOsc<span class="s3">.ar(freq) * amp });</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).set(<span class="s7">\freq</span>, 2000);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">// add a setting</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object_(</span><span class="s6">nil</span><span class="s3">); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put in a nodeproxy</p>
-<p class="p6"><br></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.object_(</span><span class="s6">Ndef</span><span class="s3">(</span><span class="s7">\a</span><span class="s3">)); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put in a nodeproxy</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).set(<span class="s7">\amp</span>, 0.125);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">// add a setting</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Ndef<span class="s3">(</span><span class="s7">\a</span><span class="s3">, { </span>|freq = 300, amp = 0.2|<span class="s3"> </span>SinOsc<span class="s3">.ar(freq) * amp });</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).set(<span class="s7">\freq</span>, 234);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">// add a setting</span></p>
-<p class="p6"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).play</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\lfo</span>, { <span class="s6">LFNoise0</span>.kr([12, 8], 200).sum + 500 });</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).map(<span class="s7">\freq</span>, <span class="s6">Ndef</span>(<span class="s7">\lfo</span>));<span class="Apple-tab-span">	</span>// mapped proxies are shown</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>name_ (name)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>if in its own window, set the window's name</p>
-<p class="p8"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.name = <span class="s9">"Yoohoo"</span>;</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>Multichannel controls are shown in EZText:</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Ndef<span class="s3">(</span><span class="s7">\a</span><span class="s3">, { </span>|freqs = #[300, 303], pan, amp = 0.2, moddd = 0.1|<span class="s3"> </span>SinOsc<span class="s3">.ar(</span>freqs<span class="s3">).sum * amp });</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).play</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).setn(\freqs, [300, 350])</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).setn(\freqs, [330, 350])</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).set(\harm, 123)</p>
-<p class="p6"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).nodeMap.clear</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\lfos</span>, { <span class="s6">LFNoise0</span>.kr([12, 8], 200) + 500 });</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ndef</span>(<span class="s7">\a</span>).map(\freqs, <span class="s6">Ndef</span>(<span class="s7">\lfos)</span>)</p>
-<p class="p6"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.parent.close</p>
-<p class="p6"><br></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// put an NdefParamGui in an existing window - margin becomes 0 at 0</p>
-<p class="p14">(</p>
-<p class="p14">w = <span class="s6">Window</span>().front;<span class="Apple-converted-space"> </span></p>
-<p class="p14">w.addFlowLayout;</p>
-<p class="p11">g = NdefParamGui<span class="s3">(</span>Ndef(\a)<span class="s3">, 3, w);</span></p>
-<p class="p11">NdefParamGui<span class="s3">(</span>Ndef<span class="s3">(</span><span class="s7">\c</span><span class="s3">), 15, w);</span></p>
-<p class="p14">)</p>
-<p class="p14"><span class="Apple-tab-span">	</span>// even<span class="Apple-converted-space"> </span></p>
-<p class="p14">Ndef(\c).set(\otto, 123, \mops, [1,2,3], \kotzt, [0, 6, 0, 6]);</p>
-<p class="p14">Ndef(\c).nodeMap.clear</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/NodeProxyEditor.html b/Help/Libraries/JITLib/GUI/NodeProxyEditor.html
deleted file mode 100644
index 8020409..0000000
--- a/Help/Libraries/JITLib/GUI/NodeProxyEditor.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0b28c6}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2b30fa}
-span.s3 {text-decoration: underline ; color: #2b30fa}
-span.s4 {text-decoration: underline ; color: #1032ee}
-span.s5 {text-decoration: underline ; color: #0000ee}
-span.s6 {color: #1135f9}
-span.s7 {color: #0a25b9}
-span.s8 {font: 9.0px Monaco}
-span.s9 {color: #000000}
-span.s10 {color: #0b28c6}
-span.s11 {color: #00831b}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>NodeProxyEditor has been replaced - please use NdefGui now!</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>NodeProxyEditor</b><span class="s1"><b> </b></span>has been rewritten and renamed <a href="../extras/TdefGui.html"><span class="s2"><b>NdefGui</b></span></a>, which has the same functionality,<span class="Apple-converted-space"> </span></p>
-<p class="p3">but is both more consistent and more flexible.</p>
-<p class="p3">There are some changes to the *new method: instead of</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>*new(proxy, nSliders=16, parent, extras=[\CLR, \reset, \scope, \doc, \end, \fade],</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>monitor, sinks, morph)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>*new (object, numItems = 0, parent, bounds, makeSkip, options)</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>proxy</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is now <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>nSliders</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is now <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>parent <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>is still<b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>parent</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bounds </b>- can be Rect(l, t, w, h) or width at heights</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>makeSkip </b>- an option to build without skipjack.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>extras</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>are now<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>options</b>, and have become more flexible.</p>
-<p class="p4"><br></p>
-<p class="p3">Please see <a href="../extras/NPGui.html"><span class="s3">NdefGui</span></a> for more details.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>//////////////////////////</b></p>
-<p class="p3"><span class="s1"><b>NodeProxyEditor<span class="Apple-converted-space">  </span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>editor for a nodeproxy</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Inherits from:</b> <a href="../../../Core/Object.html"><span class="s4">Object</span></a></p>
-<p class="p4"><br></p>
-<p class="p3">NodeProxyEditor provides controls for handling and editing a node proxy and its monitors (cross-platform graphics).</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>• sliders for numerical settings</p>
-<p class="p3"><span class="Apple-tab-span">	</span>• mapping of kr proxies to parameters<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>• optional controls for playing / monitoring</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s5"><a href="../nodeproxy/NodeProxy.html">NodeProxy</a></span> and <a href="../nodeproxy/Ndef.html"><span class="s6">Ndef</span></a> implement an edit message, which returns a NodeProxyEditor.</p>
-<p class="p3">Overview: <a href="../JITLib.html"><span class="s7">JITLib</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new(proxy, nSliders=16, win, view)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b>Returns a new instance for a given <b>proxy</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>If a window (<b>win</b>) or a composite <b>view</b> is given, it uses this.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b>Example</b><span class="s8"><span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// preparation</p>
-<p class="p11">s.boot;</p>
-<p class="p11">p = <span class="s10">ProxySpace</span>.push(s);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p11">(</p>
-<p class="p12"><span class="s9">~test = { </span>|freq=300, dens=20, amp=0.1, pan|<span class="s9"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s10">Pan2</span>.ar(<span class="s10">Ringz</span>.ar(<span class="s10">Dust</span>.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2), pan)<span class="Apple-converted-space"> </span></p>
-<p class="p11">};</p>
-<p class="p11">)</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// make a NodeProxyEditor</p>
-<p class="p12"><span class="s9">n = </span>NodeProxyEditor<span class="s9">();</span></p>
-<p class="p11">n.proxy_(~test);</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// some configuration options<span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// number of sliders</p>
-<p class="p11">n = <span class="s10">NodeProxyEditor</span>(~test, 6);</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// the top line has a choice of elements:</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\CLR</span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to clear proxy</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\reset</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to reset proxy nodemap</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\scope</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to scope proxy</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\doc</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to document proxy as code</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\end</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to end proxy</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\fade</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">EZNumber</span> for setting fadetime</p>
-<p class="p9"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>not in the default elements:</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\rip</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button to open a new editor on the proxy (used in <span class="s10">ProxyMixer</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\pausR</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a button to toggle pause/resume</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\sendR</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a button to re-send; alt-click does <span class="s10">Rebuild</span></p>
-<p class="p9"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\send</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>just send</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\rebuild</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>just rebuild</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s11">\poll</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>poll the proxy</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// maybe provide later this?<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span><span class="s11">\name</span><span class="s9"> -> { func }; <span class="Apple-tab-span">	</span></span>// add your own element...<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// The default buttons/controls are:</p>
-<p class="p11"><span class="s10">NodeProxyEditor</span>(extras: <span class="s10">nil</span>, monitor: <span class="s10">true</span>, sinks: <span class="s10">true</span>);</p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// these are:</p>
-<p class="p11"><span class="s10">NodeProxyEditor</span>(extras: [<span class="s11">\CLR</span>, <span class="s11">\reset</span>, <span class="s11">\scope</span>, <span class="s11">\doc</span>, <span class="s11">\end</span>, <span class="s11">\fade</span>], monitor: <span class="s10">true</span>, sinks: <span class="s10">true</span>);</p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// if no monitor line, you can add pausR and sendR buttons</p>
-<p class="p11"><span class="s10">NodeProxyEditor</span>(extras: [<span class="s11">\CLR</span>, <span class="s11">\reset</span>, <span class="s11">\pausR</span>, <span class="s11">\sendR</span>, <span class="s11">\scope</span>], monitor: <span class="s10">false</span>, sinks: <span class="s10">false</span>);</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// barebones</p>
-<p class="p11"><span class="s10">NodeProxyEditor</span>(extras: [], monitor: <span class="s10">false</span>);</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// not done yet - presets and morphing</p>
-<p class="p12">NodeProxyEditor<span class="s9">( morph: </span>true<span class="s9">);</span></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// also works with Ndef</p>
-<p class="p11"><span class="s10">Ndef</span>(<span class="s11">\a</span>).ar;<span class="Apple-converted-space"> </span></p>
-<p class="p12">NodeProxyEditor<span class="s9">(</span>Ndef<span class="s9">(</span><span class="s11">\a</span><span class="s9">));</span></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// place in existing window</p>
-<p class="p11">(</p>
-<p class="p13"><span class="s9">w = </span><span class="s10">Window</span><span class="s9">(</span>"testing"<span class="s9">);</span></p>
-<p class="p11">n = <span class="s10">NodeProxyEditor</span>(nSliders: 6, win: w);</p>
-<p class="p11">n.proxy_(~test);</p>
-<p class="p11">)</p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// too many controls: an EZScroller helps.</p>
-<p class="p11">(</p>
-<p class="p12"><span class="s9">~test = { </span>|freq=300, dens=20, amp=0.1, pan, ping=12, tok=13, crak|<span class="s9"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s10">Pan2</span>.ar(<span class="s10">Ringz</span>.ar(<span class="s10">Dust</span>.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2), pan)<span class="Apple-converted-space"> </span></p>
-<p class="p11">};</p>
-<p class="p11"><span class="s10">Spec</span>.add(<span class="s11">\dens</span>, [0.1, 100, <span class="s11">\exp</span>, 0.01, 10]);</p>
-<p class="p11">)</p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// gets specs for slider ranges from global lookup in Spec.specs:</p>
-<p class="p11"><span class="s10">Spec</span>.add(<span class="s11">\dens</span>, [0.1, 100, <span class="s11">\exp</span>, 0.01, 10]);</p>
-<p class="p11">n.fullUpdate;</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9">(<span class="Apple-tab-span">	</span></span>// keys go away if not needed</p>
-<p class="p12"><span class="s9">~test = { </span>|freq=300, dens=20, amp=0.1|<span class="s9"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s10">Pan2</span>.ar(<span class="s10">Ringz</span>.ar(<span class="s10">Dust</span>.ar(dens, amp / (dens.max(1).sqrt)), freq, 0.2))<span class="Apple-converted-space"> </span></p>
-<p class="p11">};</p>
-<p class="p11">)</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9">(<span class="Apple-tab-span">	</span></span>// and are added in order if needed</p>
-<p class="p12"><span class="s9">~test = { </span>|freq=300, intv=0, dens=20, amp=0.1, pan, pok, ting|<span class="s9"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s10">Pan2</span>.ar(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Ringz</span>.ar(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Dust</span>.ar(dens ! 2, amp / (dens.max(1).sqrt)),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * [intv, intv.neg].midiratio, 0.2))<span class="Apple-converted-space"> </span></p>
-<p class="p11">};</p>
-<p class="p11">)</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// changes in settings are shown:</p>
-<p class="p11">~test.set(<span class="s11">\freq</span>, exprand(100.0, 2000.0));</p>
-<p class="p11">~test.playN;</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// mapping kr proxies to controls is shown</p>
-<p class="p11">~lfo = { <span class="s10">LFNoise0</span>.kr(8, 4) };</p>
-<p class="p11">~test.map(<span class="s11">\intv</span>, ~lfo);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11">~test.unmap(<span class="s11">\intv</span>);<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p9"><br></p>
-<p class="p11"><span class="s10">Spec</span>.add(<span class="s11">\intv</span>, <span class="s10">ControlSpec</span>(0, 24, <span class="s11">\lin</span>, 0.01, 0)); n.fullUpdate;</p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// setting a param value unmaps a previous control source</p>
-<p class="p11">~test.set(<span class="s11">\freq</span>, rrand(200, 500), <span class="s11">\intv</span>, rrand(-5.5, 5.5));</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p11"><span class="s10">You</span> can drag and drop proxies between NodeProxyEditors:<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p11">(</p>
-<p class="p10">// p = ProxySpace.push(s.boot);</p>
-<p class="p9"><br></p>
-<p class="p11">l = <span class="s10">NodeProxyEditor</span>(<span class="s10">nil</span>, 3); l.w.bounds_(l.w.bounds.moveBy(0, 120));</p>
-<p class="p11">m = <span class="s10">NodeProxyEditor</span>(<span class="s10">nil</span>, 3); m.w.bounds_(m.w.bounds.moveBy(0, 240));</p>
-<p class="p11">n = <span class="s10">NodeProxyEditor</span>(<span class="s10">nil</span>, 3); n.w.bounds_(n.w.bounds.moveBy(0, 360));</p>
-<p class="p11">o = <span class="s10">NodeProxyEditor</span>(<span class="s10">nil</span>, 3); o.w.bounds_(o.w.bounds.moveBy(0, 480));</p>
-<p class="p9"><br></p>
-<p class="p11"><span class="s10">Spec</span>.add(<span class="s11">\dens</span>, [0.1, 300, <span class="s11">\exp</span>]);</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// make 3 kinds of proxies: using tilde/proxyspace, Ndef, and unnamed.</p>
-<p class="p11">~spacy = {<span class="s10">|dens=5|</span> <span class="s10">Formlet</span>.ar(<span class="s10">Dust</span>.ar(dens ! 2), <span class="s10">LFDNoise0</span>.kr(20 ! 2).lag(0.1).linexp(-1, 1, 300, 5000), 0.003, 0.03)<span class="Apple-converted-space">  </span>};</p>
-<p class="p11"><span class="s10">Ndef</span>(<span class="s11">\ndeffy</span>, { <span class="s10">GrayNoise</span>.ar( 0.1 ! 2) });</p>
-<p class="p11">c = <span class="s10">NodeProxy</span>.audio.source_({ <span class="s10">PinkNoise</span>.ar(0.1 ! 2) });</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>// put one in each editor</p>
-<p class="p11">l.proxy_(~spacy);</p>
-<p class="p11">m.proxy_(<span class="s10">Ndef</span>(<span class="s11">\ndeffy</span>));</p>
-<p class="p11">n.proxy_(c);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11">)</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/PdefAllGui.html b/Help/Libraries/JITLib/GUI/PdefAllGui.html
deleted file mode 100644
index bf528ef..0000000
--- a/Help/Libraries/JITLib/GUI/PdefAllGui.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #2b30fa}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0a26c0}
-span.s7 {color: #0000bf}
-span.s8 {color: #007300}
-span.s9 {color: #bf0000}
-span.s10 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PdefAllGui</b></span><span class="s2"> <span class="Apple-tab-span">	</span></span><b>see all Pdefs and their state.</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from:</b> <a href="JITGui.html"><span class="s3">JITGui</span></a> : TaskProxyAllGui</p>
-<p class="p3"><br></p>
-<p class="p1">PdefAllGui uses PdefGui views to display all Pdefs, or a selection.</p>
-<p class="p4"><span class="s4">See also <a href="TdefAllGui.html"><span class="s5">TdefAllGui</span></a>, <a href="PdefGui.html"><span class="s5">PdefGui</span></a></span></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s6">JITLib</span></a></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new(numItems, parent, bounds, makeSkip, makeEdit)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems </b>- the maximum number of Pdefs that can be shown.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- <span class="Apple-tab-span">	</span>a parent view on which to display. If nil, a new window is created;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>can also be an existing window or a composite view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- <span class="Apple-tab-span">	</span>a desired size and position where to display a JITGui. can be nil,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a point, or a rect. JITGuis know their minimum size (<b>minSize),<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>and if bounds is nil, minSize is used.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if bounds is a point or rect, it will be set to at least minSize.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>With a rect one can also supply a position where to display.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If a point,shown size is the maximum of bounds and minSize<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>///// <b>Not Done Yet, but on the list:<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>options</b> - <span class="Apple-tab-span">	</span>the only option for PdefAllGui will be <b>[\makeEdit]</b><span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- adding a "front" PdefGui that also shows the front Pdef's envir.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>like PxMix and NPGui</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- A flag whether to make a skipjack.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Pdef</span>(<span class="s8">\a</span>, { <span class="s7">|e|</span> 100.do { <span class="s7">|i|</span> i.postln; 0.5.wait } });</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Pdef</span>(<span class="s8">\b</span>,<span class="Apple-converted-space">  </span>{ <span class="s7">|e|</span> 100.do { <span class="s7">|i|</span> <span class="s7">Pdef</span>(<span class="s8">\a</span>).set(<span class="s8">\otto</span>, 8.rand); exprand(0.1, 3.0).wait } });</p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span>t = </span>PdefAllGui<span class="s4">(8);</span></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if you have too many Pdefs, an ezscroller lets you select</p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span><span class="s10">"abcdefghijk"</span>.do { <span class="s7">|ch|</span> <span class="s7">Pdef</span>(ch.asSymbol) };</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you can also filter which ones you see:</p>
-<p class="p13"><span class="s9"><span class="Apple-tab-span">	</span></span><span class="s7">Pdef</span><span class="s4">(</span>\a_otti<span class="s4">);</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s7">Pdef</span><span class="s4">(</span>\a_annerl<span class="s4">);</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s7">Pdef</span><span class="s4">(</span>\a_bebe<span class="s4">);</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or better from gui</p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>t.prefix_(<span class="s10">"a_"</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>t.filtering_(<span class="s7">true</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if prefix is "", it will filter anything with "_" in it.</p>
-<p class="p10"><span class="s9"><span class="Apple-tab-span">	</span></span>t.prefix_(<span class="s10">""</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>t.filtering_(<span class="s7">false</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/PdefEditor.html b/Help/Libraries/JITLib/GUI/PdefEditor.html
deleted file mode 100644
index 37ed79d..0000000
--- a/Help/Libraries/JITLib/GUI/PdefEditor.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {color: #2b30fa}
-span.s2 {text-decoration: underline ; color: #0000ee}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PdefEditor will be replaced - please use PdefGui now!</b></p>
-<p class="p2"><br></p>
-<p class="p3">has been rewritten and renamed <a href="TdefGui.html"><span class="s1"><b>PdefGui</b></span></a>, which has largely the same functionality,<span class="Apple-converted-space"> </span></p>
-<p class="p3">but is more consistent and more flexible.</p>
-<p class="p3">There are some changes to the *new method: instead of</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>*new(px, nVars, height, width, parent, makeWatcher)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>*new (object, numItems, parent, bounds, extras)</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>px</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is now <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>nVars</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is now <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>height &<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>can be<b> </b>put as<b><span class="Apple-tab-span">	</span>bounds: height @ width</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>width</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>parent <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>is still<b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>parent</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>makeWatcher</b><span class="Apple-tab-span">	</span>is now <b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>makeSkip</b></p>
-<p class="p4"><br></p>
-<p class="p3">Please see <a href="TdefGui.html"><span class="s2">PdefGui</span></a> for more details.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/PdefGui.html b/Help/Libraries/JITLib/GUI/PdefGui.html
deleted file mode 100644
index 84af3a6..0000000
--- a/Help/Libraries/JITLib/GUI/PdefGui.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #008417}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #426f13}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1d20b9}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #961e1e}
-p.p19 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p20 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #d40c0b}
-p.p21 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p22 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd0b0b}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #2024c7}
-span.s5 {color: #008417}
-span.s6 {color: #737373}
-span.s7 {color: #1d20b9}
-span.s8 {color: #426f13}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PdefGui</b></span><span class="s2"> <span class="Apple-tab-span">	</span></span><b>a line of editing controls for a Pdef, and optionally its envir.</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: JITGui: TaskProxyGui </b>(like TdefGui)</p>
-<p class="p2"><br></p>
-<p class="p1">A gui showing the Pdef's name, playing state, source state, and envir state.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Optionally, its envir can also be edited.</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s3">See also<b> </b><a href="PdefAllGui.html"><b>PdefAllGui</b></a><b>, </b><a href="TdefGui.html"><b>TdefGui</b></a><b>, </b><a href="TdefAllGui.html"><b>TdefAllGui</b></a><b>.</b></span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>First example:</b></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">g = </span><span class="s4">PdefGui</span><span class="s3">();<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// make a PdefGui<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3">g.object = </span><span class="s4">Pdef</span><span class="s3">(</span><span class="s5">\a</span><span class="s3">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// show when a Pdef is put in</p>
-<p class="p5"><span class="s4">Pdef</span><span class="s3">(</span><span class="s5">\a</span><span class="s3">, Pbind(\note, 12)); <span class="Apple-tab-span">	</span></span>// show whether it has a source</p>
-<p class="p5"><span class="s4">Pdef</span><span class="s3">(</span><span class="s5">\a</span><span class="s3">).play; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// show whether playing, stopped, or ended, and pausable</p>
-<p class="p5"><span class="s4">Pdef</span><span class="s3">(</span><span class="s5">\a</span><span class="s3">).set(</span><span class="s5">\dur</span><span class="s3">, 0.25); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// show whether the Pdef has an envir</p>
-<p class="p6">g.close;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">g = </span><span class="s4">PdefGui</span><span class="s3">(</span><span class="s4">Pdef</span><span class="s3">(</span><span class="s5">\a</span><span class="s3">), 3);<span class="Apple-tab-span">	</span></span>// with an envirgui for 3 items</p>
-<p class="p7"><span class="s4">Pdef</span><span class="s3">(</span>\a<span class="s3">).set(</span>\lofreq<span class="s3">, [1, 10], </span>\str<span class="s3">, </span><span class="s6">"someString"</span><span class="s3">, </span>\oops<span class="s3">, </span>\oneSymbolTooMany<span class="s3">);</span></p>
-<p class="p6"><span class="s4">Pdef</span>(<span class="s5">\a</span>).clear;</p>
-<p class="p6"><span class="s4">Pdef</span>(<span class="s5">\a</span>).envir.clear;</p>
-<p class="p6">g.close;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put it in an existing window - margin is 0 at 0</p>
-<p class="p6">w = <span class="s4">Window</span>("my win", Rect(200, 200, 300, 200)).front;<span class="Apple-converted-space"> </span></p>
-<p class="p6">w.addFlowLayout;</p>
-<p class="p6"><span class="s4">PdefGui</span>(<span class="s4">Pdef</span>(<span class="s5">\a</span>), 0, w);</p>
-<p class="p6"><span class="s4">PdefGui</span>(<span class="s4">Pdef</span>(<span class="s5">\a</span>), 3, w);</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p1"><b>Details on the GUI elements:</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>name button:<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>when selected, typing the delete key will delete its Pdef.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>play/stop button</b> :<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>indicates whether the Pdef is playing:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" >"<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span>if stopped,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" _" <span class="Apple-tab-span">	</span>if playing and active,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" |" <span class="Apple-tab-span">	</span>if it is playing, but the stream has ended.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>pause/resume button</b>:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>only visible if one can pause or resume the Pdef, i.e. while it is playing.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>"paus" is shown when you can pause it,</p>
-<p class="p1"><span class="Apple-tab-span">	</span>"rsum" is shown when you can resume it.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>src button</b>:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>opens a document to edit the source (function) of the Pdef.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>green if a source exists, white if the source is nil.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>env button</b>:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>opens a document to edit the environment of the Pdef,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>which is where one can keep all variables the Pdef uses</p>
-<p class="p1"><span class="Apple-tab-span">	</span>for easy access.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>green if the Pdef has an envir, white if the envir is nil.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Creation Methods</b></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*new (object, numItems, parent, bounds, extras, makeSkip)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a new JITGui that will be watching an object and display its state.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- <span class="Apple-tab-span">	</span>the object to watch<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems </b>- the number of display items to use, e.g. how many fields for text,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or how many EZSliders for single-number parameters.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- <span class="Apple-tab-span">	</span>a parent view on which to display. If nil, a new window is created;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>can also be an existing window or a composite view.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- <span class="Apple-tab-span">	</span>a desired size and position where to display a JITGui. can be nil,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a point, or a rect. JITGuis know their minimum size (<b>minSize),<span class="Apple-converted-space"> </span></b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>and if bounds is nil, minSize is used.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if bounds is a point or rect, it will be set to at least minSize.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>With a rect one can also supply a position where to display.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If a point,shown size is the maximum of bounds and minSize<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>extras - <span class="Apple-tab-span">	</span></b>a list of additional information, e.g. flags about optional buttons.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(this is used is some subclasses)</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- A flag whether to make a skipjack.</p>
-<p class="p11"><br></p>
-<p class="p14"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s7">Pdef</span>(<span class="s8">\a</span>, Pbind(\freq, Prand((1..16) * 55, inf)));</p>
-<p class="p15"><span class="s7">Pdef</span><span class="s3">(</span>\a).play;</p>
-<p class="p6">t = <span class="s7">PdefGui</span>(<span class="s7">Pdef</span>(<span class="s8">\a</span>), 4);</p>
-<p class="p6"><span class="s7">Pdef</span>(<span class="s8">\a</span>).set(<span class="s8">\dur</span>, 0.125, <span class="s8">\amp</span>, 0.05);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s7">Pdef</span>(<span class="s8">\a</span>).stop;</p>
-<p class="p6"><span class="s7">Pdef</span>(<span class="s8">\a</span>).play;</p>
-<p class="p6"><span class="s7">Pdef</span>(<span class="s8">\a</span>).pause;</p>
-<p class="p6"><span class="s7">Pdef</span>(<span class="s8">\a</span>).resume;</p>
-<p class="p2"><br></p>
-<p class="p6">t.object_(<span class="s4">nil</span>);</p>
-<p class="p6">t.object_(<span class="s4">Pdef</span>(<span class="s5">\a</span>));</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p16"><span class="s3">w = </span><span class="s4">Window</span><span class="s3">(</span>"put it in a selfmade window"<span class="s3">).front;</span></p>
-<p class="p6">w.addFlowLayout;</p>
-<p class="p6">w.view.decorator.shift(50, 50);</p>
-<p class="p6"><span class="s4">PdefGui</span>(<span class="s4">Pdef</span>(<span class="s5">\a</span>), 12, w);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s7">Pdef</span>(<span class="s8">\b</span>,<span class="Apple-converted-space">  </span>Pbind(\note, Pxrand((0..7), inf), \dur, 0.125));</p>
-<p class="p6"><span class="s7">Pdef</span>(<span class="s8">\b</span>).play;</p>
-<p class="p17">PdefGui<span class="s3">(</span>Pdef<span class="s3">(</span><span class="s8">\b</span><span class="s3">));</span></p>
-<p class="p2"><br></p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>// see all Pdefs:<span class="Apple-converted-space"> </span></p>
-<p class="p17">PdefAllGui<span class="s3">(16);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p19"><b>Instance Variables</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>object <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a Pdef, or nil</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>numItems<span class="Apple-tab-span">	</span></b>the number of items in the envirGui<span class="Apple-converted-space"> </span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>parent, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the parent view<span class="Apple-converted-space"> </span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>bounds <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the bounds of the <b>zone</b></p>
-<p class="p11"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>zone<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the CompositeView within which the TdfGui is shown</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>nameBut, playBut, pauseBut, srcBut, envBut<span class="Apple-tab-span">	</span></b>the buttons</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>envirGui<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the gui for the Pdef's envir - nil if numItems is 0.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><b>Instance Methods</b></p>
-<p class="p11"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>object_ (obj)<span class="Apple-tab-span">	</span></b>put an object in the gui.<span class="Apple-converted-space"> </span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p13"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// if the jitGui is in its own window, you can:</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>moveTo (h, v)<span class="Apple-tab-span">	</span></b>move it to some specific location.</p>
-<p class="p13"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>clear<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the PdefGui's object to nil</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>close<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>and close its window.</p>
-<p class="p14"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Internal methods:</b></p>
-<p class="p11"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>srcString<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a compileString that recreates the Pdef.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// assume g from above is still there</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.srcString;</p>
-<p class="p14"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>editString (edKey)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a compileString that recreates the Pdef's envir at edKey.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>editStrings (edKeys)<span class="Apple-tab-span">	</span></b>a compileString that recreates the Pdef's envir at edKeys.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Short prose description of method.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>edKey </b>- Explanation of edKey. Default value is nil. Other information.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// assume g from above is still there</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.editString;</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pdef</span>(<span class="s5">\a</span>).set(<span class="s5">\foo</span>, <span class="s5">\bar</span>);</p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.editString(<span class="s5">\foo</span>);</p>
-<p class="p14"><br></p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.editStrings;</p>
-<p class="p14"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>getUsedKeys</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the keys in use in the envir</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.getUsedKeys;</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>openDoc (strings, bounds)<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span></b>open a document with some strings at some location</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.openDoc(g.editStrings);</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>makeEnvirGui</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>make an envirGui within zone - called internally.</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/ProxyMixer.html b/Help/Libraries/JITLib/GUI/ProxyMixer.html
deleted file mode 100644
index 7a81b82..0000000
--- a/Help/Libraries/JITLib/GUI/ProxyMixer.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2024c7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline ; color: #2832ee}
-span.s3 {color: #2b30fa}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline ; color: #2b30fa}
-span.s6 {text-decoration: underline}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #2024c7}
-span.s9 {color: #737373}
-span.s10 {color: #008417}
-span.s11 {color: #cd0b0b}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>ProxyMixer has been updated - some little adaptations to existing<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b>uses may be needed.</b> If you like, you can also replace "ProxyMixer"<span class="Apple-converted-space"> </span></p>
-<p class="p2">with "ProxyMixerOld" to keep using the old style of ProxyMixer.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Old:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>New:</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b>ProxyMixerOld<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ProxyMixer</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>*new(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*new(</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>space,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>object,</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nProxies,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numItems,</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>title, <span class="Apple-tab-span">	</span>//</b>is inferred from <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent</b>, <span class="Apple-tab-span">	</span>// a view to display proxymixer on,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// ProxySpace.asCode<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// if nil, a new window is made.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>where </b>// can be set in bounds<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b>,<span class="Apple-tab-span">	</span>// can be nil for default size,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// or a point for a specific location onscreen,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// or a Rect</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>[makeSkip,<span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>options]</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</b></p>
-<p class="p3"><br></p>
-<p class="p6"><b>//////</b></p>
-<p class="p4"><span class="s1"><b>ProxyMixer<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>mix control for a proxyspace</b></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Inherits from:</b> <a href="../../../Core/Object.html"><span class="s2">JITGui</span></a></p>
-<p class="p5"><br></p>
-<p class="p4">ProxyMixer provides controls for handling and editing the node proxies in a proxyspace and their monitors (cross-platform graphics). It replaces the earlier ProxyMixer class. For Ndefs, use <a href="NdefMix.html"><span class="s3">NdefMix</span></a>.</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s4">See also: <a href="SC://ProxySpace"><span class="s5">ProxySpace</span></a>, <a href="NPGui.html"><span class="s6">NdefGui</span></a><a href="NodeProxyEditor.html"><span class="s6">, </span></a><a href="JITGui.html"><span class="s6">JITGui</span></a><a href="NodeProxyEditor.html"><span class="s6">, </span></a><a href="MonitorGui.html"><span class="s6">MonitorGui</span></a><a href="NodeProxyEditor.html"><span class="s6">, </span></a><a href="NPParamGui.html"><span class="s6">NdefParamGui</span></a></span></p>
-<p class="p4">Overview: <a href="SC://JITLib"><span class="s3">JITLib</span></a></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p8"><b>Creation / Class Methods</b></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>*new(object, numItems, parent, bounds, makeSkip, options)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>object<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the proxyspace to show and control</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>numItems<span class="Apple-tab-span">	</span></b>how many ar and kr proxies can be shown</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>parent:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>by default nil, so a window is made automatically.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if a parent is supplied, the ProxyMixer will be shown there.</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>bounds</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>window bounds - default is nil, so it determines it size.</p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span><b>makeSkip</b><span class="Apple-tab-span">	</span>a flag whether to make make a skijack</p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span><b>options</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>additional settings - currently none provided.</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p8"><b>Example</b><span class="s7"><span class="Apple-tab-span">	</span></span></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">p = <span class="s8">ProxySpace</span>.push(s.boot, p);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s9">"abcde"</span>.do { <span class="s8">|k|</span> p[k.asSymbol].ar };</p>
-<p class="p10">m = <span class="s8">ProxyMixer</span>(p, 8, options: [<span class="s10">\playN</span>]);</p>
-<p class="p10">p.do(<span class="s8">_</span>.play(0));</p>
-<p class="p10">)</p>
-<p class="p11"><br></p>
-<p class="p10">m.object_(<span class="s8">nil</span>);</p>
-<p class="p10">m.object_(p);</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="s9">"abcdefghijk"</span>.do { <span class="s8">|k|</span> p[k.asSymbol].ar };</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="s9">"lmnopqrtuvw"</span>.do { <span class="s8">|k|</span> p[k.asSymbol].kr };</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="s9">"abcdefghijk"</span>.do { <span class="s8">|k|</span> p[k.asSymbol].playN };</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// the top left menu sets which proxies will be shown.</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// existingProxies: even an empty proxy is shown</p>
-<p class="p10">~test.ar;<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// activeProxies: proxy appears when it is alive</p>
-<p class="p13"><span class="s4">~test = { </span>|freq=250, intv=19, timescale=1, curve=0, loopnode=0|<span class="s4"><span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">var</span> env = <span class="s8">EnvGen</span>.kr(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Env</span>({ 1.0.rand2 }!11, {1.0.rand}!10, curve, releaseNode: 9, loopNode: loopnode),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timeScale: timescale);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">var</span> pitch = (env * [1, 0.33, -1] * intv).midiratio * freq;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">Splay</span>.ar(<span class="s8">Formant</span>.ar(pitch, pitch.scramble * 2, pitch.scramble)) * 0.1;</p>
-<p class="p10">};</p>
-<p class="p10">)</p>
-<p class="p10">~test.lag(<span class="s10">\freq</span>, 4);</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// playingProxies : only those that really play are shown.</p>
-<p class="p10">~test.playN(vol: 1);</p>
-<p class="p11"><br></p>
-<p class="p12">// switch back to active proxies...</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the reduce button removes all proxies that are not playing</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// and that are not used as sources in other proxies:</p>
-<p class="p10">~otto = { <span class="s8">|dens=12|</span> <span class="s8">Dust</span>.ar(dens) };</p>
-<p class="p11"><br></p>
-<p class="p10">~otto.clear;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">// remove it</span></p>
-<p class="p10">p.reduce;</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// doc and docSel post the current proxyspace as code</p>
-<p class="p10">p.document;</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ProxyMixer has three preset widths:<span class="Apple-converted-space"> </span></p>
-<p class="p10">m.switchSize(0);<span class="Apple-tab-span">	</span><span class="s11">// ar zone only</span></p>
-<p class="p10">m.switchSize(1);<span class="Apple-tab-span">	</span><span class="s11">// ar + kr</span></p>
-<p class="p12"><span class="s4">m.switchSize(2);<span class="Apple-tab-span">	</span></span>// ar = kr + edit zone</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// R opens a Record utility, see below.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// the line of controls for one proxy and its monitor is<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// a ProxyMonitorGui, so for full details see ProxyMonitorGui.help.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// it displays current volume,<span class="Apple-converted-space"> </span></p>
-<p class="p10">~test.vol_(0.05);<span class="Apple-tab-span">	</span></p>
-<p class="p10">~test.vol_(0.1);<span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// proxy name; play/stop/end control:</p>
-<p class="p10">~test.playN;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">// playN as is</span></p>
-<p class="p10">~test.stop;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">// stop<span class="Apple-converted-space"> </span></span></p>
-<p class="p12"><span class="s4">~test.end;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// option-click on stop : end the monitor and the proxy itself.</p>
-<p class="p12"><span class="s4">~test.playN(vol: 0);<span class="Apple-tab-span">	</span></span>// option-click on play : start playing with volume zero.</p>
-<p class="p11"><br></p>
-<p class="p10">~test.vol_(0.1);</p>
-<p class="p11"><br></p>
-<p class="p10">s.scope(8);</p>
-<p class="p12"><span class="s4">~test.playN(4);<span class="Apple-tab-span">	</span></span>// set proxy's first output channel:</p>
-<p class="p10">~test.playN(0);<span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// the "-=" / "-<" button supports multichannel monitoring,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// see ProxyMonitorGui.help</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>paus/rsum toggles pause and resume:</p>
-<p class="p10">~test.pause;</p>
-<p class="p10">~test.resume;<span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// send button resends the proxy,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// option-click on send rebuilds the proxy</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// (e.g. for lookup in client-site state)</p>
-<p class="p10">~test.send;<span class="Apple-tab-span">	</span></p>
-<p class="p10">~test.send;<span class="Apple-tab-span">	</span></p>
-<p class="p10">~test.send;<span class="Apple-tab-span">	</span></p>
-<p class="p10">~test.rebuild;<span class="Apple-tab-span">	</span></p>
-<p class="p10">~test.rebuild;<span class="Apple-tab-span">	</span></p>
-<p class="p10">~test.rebuild;<span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// the ed button sends this proxy to the editor - see below</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// kr proxies show up in the middle</p>
-<p class="p10">~lfo = { <span class="s8">SinOsc</span>.kr(2) };</p>
-<p class="p10">~lfnoyz0 = { <span class="s8">|lofreq = 0.5, mul=1, add|</span> <span class="s8">LFDNoise0</span>.kr(lofreq, mul, add) };</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the editor zone is a <a href="NodeProxyEditor.html"><span class="s6">NodeProxyEditor</span></a></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// open it and set some params</p>
-<p class="p10">m.switchSize(2);</p>
-<p class="p10">m.editGui.object_(~test);</p>
-<p class="p10">~test.set(<span class="s10">\freq</span>, exprand(80, 1250));<span class="Apple-tab-span">	</span><span class="s11">// set ~tests parameters</span></p>
-<p class="p10">~test.set(<span class="s10">\intv</span>, 1.0.linrand);</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>if you declare global specs for the range of a parameter,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>they can be used in the editor:</p>
-<p class="p10"><span class="s8">Spec</span>.add(<span class="s10">\intv</span>, [0, 36, <span class="s10">\lin</span>]);</p>
-<p class="p10"><span class="s8">Spec</span>.add(<span class="s10">\timescale</span>, [0.001, 10, <span class="s10">\exp</span>]);</p>
-<p class="p10"><span class="s8">Spec</span>.add(<span class="s10">\loopnode</span>, [0, 7, <span class="s10">\lin</span>, 1]);</p>
-<p class="p10"><span class="s8">Spec</span>.add(<span class="s10">\curve</span>, [-10, 10]);</p>
-<p class="p11"><br></p>
-<p class="p10">m.editGui.object_(~test);</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you can map a kr proxy to a control param;</p>
-<p class="p10">~test.map(<span class="s10">\intv</span>, ~lfnoyz0);</p>
-<p class="p10">~test.unmap(<span class="s10">\intv</span>);</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this also works by dragging the kr proxy name<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the field left of the param name.</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>some more tests :</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// if there are too many ar proxies, a scroller appears</p>
-<p class="p12"><span class="s4">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// test too many<span class="Apple-converted-space"> </span></p>
-<p class="p10">10.do { <span class="s8">|i|</span> p[(<span class="s9">"test"</span> ++ i).asSymbol] = {<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">Pan2</span>.ar(<span class="s8">Ringz</span>.ar(<span class="s8">Impulse</span>.ar(exprand(0.5, 4)), exprand(300, 3000), 0.02), 1.0.rand2, 0.2) };<span class="Apple-converted-space"> </span></p>
-<p class="p10">};</p>
-<p class="p10">)</p>
-<p class="p11"><br></p>
-<p class="p10">10.do { <span class="s8">|i|</span> p[(<span class="s9">"test"</span> ++ i).asSymbol].playN(vol: linrand(1.0), fadeTime: exprand(0.01, 5)) };</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>// and the same for kr proxies</p>
-<p class="p10">10.do { <span class="s8">|i|</span> p[(<span class="s9">"kr"</span> ++ i).asSymbol] = { <span class="s8">LFNoise0</span>.kr(exprand(5, 50)) }; };</p>
-<p class="p11"><br></p>
-<p class="p10">p.krProxyNames.do { <span class="s8">|key|</span> p.removeAt(key) };</p>
-<p class="p11"><br></p>
-<p class="p10">p.reduce(method: <span class="s10">\clear</span>);</p>
-<p class="p11"><br></p>
-<p class="p10">p.clean;</p>
-<p class="p11"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/ProxyMixerOld.html b/Help/Libraries/JITLib/GUI/ProxyMixerOld.html
deleted file mode 100644
index 4454e75..0000000
--- a/Help/Libraries/JITLib/GUI/ProxyMixerOld.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0a25b9}
-span.s5 {font: 9.0px Monaco}
-span.s6 {color: #001bb9}
-span.s7 {color: #2c7014}
-span.s8 {color: #1d20b9}
-span.s9 {color: #ad140d}
-span.s10 {text-decoration: underline ; color: #0021e7}
-span.s11 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ProxyMixerOld<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>mix control for a proxyspace</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ProxyMixer has been updated - some little adaptations to existing<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>uses may be needed.</b> If you like, you can also replace "ProxyMixer"<span class="Apple-converted-space"> </span></p>
-<p class="p3">with "ProxyMixerOld" to keep using the old style of ProxyMixer.</p>
-<p class="p4"><b></b><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">ProxyMixer provides controls for handling and editing the node proxies in a proxyspace and their monitors (cross-platform graphics).</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">See also: <a href="../environments/ProxySpace.html"><span class="s3">ProxySpace</span></a>, <a href="NodeProxyEditor.html"><span class="s3">NodeProxyEditor</span></a></span></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s4">JITLib</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(proxyspace, nProxies, title, bounds)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>nProxies: </b>the maximum number of proxies you plan to use</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>title:<span class="Apple-tab-span">	</span></b>window title</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>bounds:</b> window bounds</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6"><b>Example</b><span class="s5"><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p8">p = <span class="s6">ProxySpace</span>.push(s.boot, <span class="s7">\p</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p8">m = <span class="s6">ProxyMixer</span>(p, 8, <span class="s7">\p</span>, <span class="s6">Rect</span>(20, 500, 0,0));</p>
-<p class="p2"><br></p>
-<p class="p8">m = <span class="s8">ProxyMixer</span>(p, 8)</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// the top left menu sets which proxies will be shown.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// existingProxies: even an empty proxy is shown</p>
-<p class="p8">~test.ar;<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// activeProxies: proxy appears when it is alive</p>
-<p class="p10"><span class="s2">~test = { </span>|freq=250, intv=19, timescale=1, curve=0, loopnode=0|<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">var</span> env = <span class="s6">EnvGen</span>.kr(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Env</span>({ 1.0.rand2 }!11, {1.0.rand}!10, curve, releaseNode: 9, loopNode: loopnode),<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timeScale: timescale);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">var</span> pitch = (env * [1, 0.33, -1] * intv).midiratio * freq;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">Splay</span>.ar(<span class="s6">Formant</span>.ar(pitch, pitch.scramble * 2, pitch.scramble)) * 0.1;</p>
-<p class="p8">};</p>
-<p class="p8">)</p>
-<p class="p8">~test.lag(<span class="s7">\freq</span>, 4);</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// playingProxies : only those that really play are shown.</p>
-<p class="p8">~test.playN(vol: 1);</p>
-<p class="p2"><br></p>
-<p class="p9">// switch back to active proxies...</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the reduce button removes all proxies that are not playing</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// and that are not used as sources in other proxies:</p>
-<p class="p8">~otto = { <span class="s6">|dens=12|</span> <span class="s6">Dust</span>.ar(dens) };</p>
-<p class="p2"><br></p>
-<p class="p8">~otto.clear;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// remove it</span></p>
-<p class="p8">p.reduce;</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// doc and docc post the current proxyspace as code</p>
-<p class="p8">p.document;</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// openEdit opens the editor zone, see below;</p>
-<p class="p8">m.openEditZone(1);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// R opens a Record utility, see below.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// the line of controls for one proxy and its monitor is<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// a ProxyMonitorGui, so for full details see ProxyMonitorGui.help.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// it displays current volume,<span class="Apple-converted-space"> </span></p>
-<p class="p8">~test.vol_(0.05);<span class="Apple-tab-span">	</span></p>
-<p class="p8">~test.vol_(0.1);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// proxy name; play/stop/end control:</p>
-<p class="p8">~test.playN;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// playN as is</span></p>
-<p class="p8">~test.stop;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// stop<span class="Apple-converted-space"> </span></span></p>
-<p class="p9"><span class="s2">~test.end;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// option-click on stop : end the monitor and the proxy itself.</p>
-<p class="p9"><span class="s2">~test.playN(vol: 0);<span class="Apple-tab-span">	</span></span>// option-click on play : start playing with volume zero.</p>
-<p class="p2"><br></p>
-<p class="p8">~test.vol_(0.1);</p>
-<p class="p2"><br></p>
-<p class="p8">s.scope(8);</p>
-<p class="p9"><span class="s2">~test.playN(4);<span class="Apple-tab-span">	</span></span>// set proxy's first output channel:</p>
-<p class="p8">~test.playN(0);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// the "-=" / "-<" button supports multichannel monitoring,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// see ProxyMonitorGui.help</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>paus/rsum toggles pause and resume:</p>
-<p class="p8">~test.pause;</p>
-<p class="p8">~test.resume;<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// send button resends the proxy,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// option-click on send rebuilds the proxy</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// (e.g. for lookup in client-site state)</p>
-<p class="p8">~test.send;<span class="Apple-tab-span">	</span></p>
-<p class="p8">~test.send;<span class="Apple-tab-span">	</span></p>
-<p class="p8">~test.send;<span class="Apple-tab-span">	</span></p>
-<p class="p8">~test.rebuild;<span class="Apple-tab-span">	</span></p>
-<p class="p8">~test.rebuild;<span class="Apple-tab-span">	</span></p>
-<p class="p8">~test.rebuild;<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// the ed button sends this proxy to the editor - see below</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// kr proxies show up in the middle</p>
-<p class="p8">~lfo = { <span class="s6">SinOsc</span>.kr(2) };</p>
-<p class="p8">~lfnoyz0 = { <span class="s6">|lofreq, mul=1, add|</span> <span class="s6">LFDNoise0</span>.kr(lofreq, mul, add) };</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the editor zone is a <a href="NodeProxyEditor.html"><span class="s10">NodeProxyEditor</span></a></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// open it and set some params</p>
-<p class="p8">m.openEditZone(1);</p>
-<p class="p8">m.editor.proxy_(~test);</p>
-<p class="p8">~test.set(<span class="s7">\freq</span>, exprand(80, 1250));<span class="Apple-tab-span">	</span><span class="s9">// set ~tests parameters</span></p>
-<p class="p8">~test.set(<span class="s7">\intv</span>, 1.0.linrand);</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>if you declare global specs for the range of a parameter,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>they can be used in the editor:</p>
-<p class="p8"><span class="s6">Spec</span>.add(<span class="s7">\intv</span>, [0, 36, <span class="s7">\lin</span>]);</p>
-<p class="p8"><span class="s6">Spec</span>.add(<span class="s7">\timescale</span>, [0.001, 10, <span class="s7">\exp</span>]);</p>
-<p class="p8"><span class="s6">Spec</span>.add(<span class="s7">\loopnode</span>, [0, 7, <span class="s7">\lin</span>, 1]);</p>
-<p class="p8"><span class="s6">Spec</span>.add(<span class="s7">\curve</span>, [-10, 10]);</p>
-<p class="p2"><br></p>
-<p class="p8">m.editor.proxy_(~test);</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you can map a kr proxy to a control param;</p>
-<p class="p8">~test.map(<span class="s7">\intv</span>, ~lfnoyz0);</p>
-<p class="p8">~test.unmap(<span class="s7">\intv</span>);</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this also works by dragging the kr proxy name<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the field left of the param name.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>some more tests :</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// if there are too many ar proxies, a scroller appears</p>
-<p class="p9"><span class="s2">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// test too many<span class="Apple-converted-space"> </span></p>
-<p class="p8">10.do { <span class="s6">|i|</span> p[(<span class="s11">"test"</span> ++ i).asSymbol] = {<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">Pan2</span>.ar(<span class="s6">Ringz</span>.ar(<span class="s6">Impulse</span>.ar(exprand(0.5, 4)), exprand(300, 3000), 0.02), 1.0.rand2, 0.2) };<span class="Apple-converted-space"> </span></p>
-<p class="p8">};</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p8">10.do { <span class="s6">|i|</span> p[(<span class="s11">"test"</span> ++ i).asSymbol].playN(vol: linrand(1.0), fadeTime: exprand(0.01, 5)) };</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// and the same for kr proxies</p>
-<p class="p8">10.do { <span class="s6">|i|</span> p[(<span class="s11">"kr"</span> ++ i).asSymbol] = { <span class="s6">LFNoise0</span>.kr(exprand(5, 50)) }; };</p>
-<p class="p2"><br></p>
-<p class="p8">p.krProxyNames.do { <span class="s6">|key|</span> p.removeAt(key) };</p>
-<p class="p2"><br></p>
-<p class="p8">p.reduce(method: <span class="s7">\clear</span>);</p>
-<p class="p2"><br></p>
-<p class="p8">p.clean;</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/ProxyMonitorGui.html b/Help/Libraries/JITLib/GUI/ProxyMonitorGui.html
deleted file mode 100644
index 628fbcb..0000000
--- a/Help/Libraries/JITLib/GUI/ProxyMonitorGui.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001db9}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #961e1e}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001db9; min-height: 12.0px}
-span.s1 {color: #001db9}
-span.s2 {color: #000000}
-span.s3 {color: #961e1e}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ProxyMonitorGui<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">is a GUI for controlling the top-level of a nodeproxy and its monitor.<span class="Apple-converted-space"> </span></p>
-<p class="p3">It is e.g. used in ProxyMixer, and NodeProxyEditor, and it is cross-platform.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s1">Server</span>.default = s = <span class="s1">Server</span>.internal;</p>
-<p class="p4">s.boot;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>// make a proxy space and a test proxy</p>
-<p class="p4">(</p>
-<p class="p4">s.scope(8);</p>
-<p class="p4">p = <span class="s1">ProxySpace</span>.push;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">~test = { </span>|freq=1000, dens=5, amp=1, lev=3|<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> freqline = { exprand(0.3, 3) } ! 3 * <span class="s1">XLine</span>.kr(0.125, 1, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">Ringz</span>.ar(<span class="s1">Dust</span>.ar(dens ! 3, dens.reciprocal.sqrt), freq * freqline, 0.1)<span class="Apple-converted-space"> </span></p>
-<p class="p4">};</p>
-<p class="p4">~test.playN(0, vol: 0.1);</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>// make a ProxyMonitorGui</p>
-<p class="p5"><span class="s2">z = </span>ProxyMonitorGui<span class="s2">();</span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// switching between proxies: drag-view displays proxy key<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2">z.proxy = ~otto12345;<span class="Apple-tab-span">	</span></span>// up to 9 letters or so on OSX</p>
-<p class="p4">z.proxy = ~test;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// make audio controls available if proy is audio</p>
-<p class="p4">z.proxy = <span class="s1">nil</span>;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">z.proxy = ~otto; ~otto.kr;<span class="Apple-tab-span">	</span><span class="s3">//<span class="Apple-converted-space"> </span></span></p>
-<p class="p4">z.proxy = ~test;<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>// configuration variants</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// pudgier</p>
-<p class="p4"><span class="s1">ProxyMonitorGui</span>(~test, bounds: 300 at 30);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// place it in an existing window:<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s1">ProxyMonitorGui</span><span class="s2">(~test, </span><span class="s1">Window</span><span class="s2">(</span>"ProxyMonitor", Rect(200, 200, 400, 100)<span class="s2">).front);</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">ProxyMonitorGui</span>(~test, <span class="s1">Window</span>(<span class="s4">"ProxyMonitor"</span>).front, bounds: 350 at 40);</p>
-<p class="p2"><br></p>
-<p class="p4">P<span class="s1">roxyMonitorGui</span>(~test, <span class="s1">Window</span>(<span class="s4">"ProxyMonitor"</span>).front, bounds: Rect(20, 20, 360, 20));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// show level in dB - off by default</p>
-<p class="p4"><span class="s1">ProxyMonitorGui</span>(~test, showLevel: <span class="s1">true</span>, showPlayN: <span class="s1">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// without multichan out button - then uses proxy.play. true = playN by default.</p>
-<p class="p4"><span class="s1">ProxyMonitorGui</span>(~test, showPlayN: <span class="s1">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// show proxy name or not. on by default.</p>
-<p class="p4"><span class="s1">ProxyMonitorGui</span>(~test, showName: <span class="s1">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// show proxy pause and send buttons - true by default</p>
-<p class="p4"><span class="s1">ProxyMonitorGui</span>(~test, showPauseSend: <span class="s1">true</span>, showPlayN: <span class="s1">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// turn off SkipJack view updates - updates are on by default.</p>
-<p class="p4"><span class="s1">ProxyMonitorGui</span>(~test, makeWatcher: <span class="s1">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// minimal:</p>
-<p class="p4"><span class="s1">ProxyMonitorGui</span>.new(~test, bounds: 300 at 40, showPlayN: <span class="s1">false</span>, showPauseSend: <span class="s1">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>// the GUI functions:<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-<p class="p5">ProxyMonitorGui<span class="s2">(~test);</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// left slider is vol</p>
-<p class="p4">~test.vol_(0.1);</p>
-<p class="p4">~test.vol_(0.25);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2">~test.stop;<span class="Apple-tab-span">	</span></span>// play / stop button:</p>
-<p class="p4">~test.playN;<span class="Apple-tab-span">	</span><span class="s3">//<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="s2">~test.end;<span class="Apple-tab-span">	</span></span>// alt-stop fully ends the proxy.</p>
-<p class="p6"><span class="s2">~test.playN(vol: 0);<span class="Apple-tab-span">	</span></span>// alt-playN starts with volume 0.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// number box sets first output channel</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// when you want to play out of adjacent channels.</p>
-<p class="p4">~test.playN(0);<span class="Apple-tab-span">	</span></p>
-<p class="p4">~test.out_(1);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// playing out to multiple channels<span class="Apple-converted-space"> </span></p>
-<p class="p4">~test.playN([0, 2, 5]);<span class="Apple-tab-span">	</span></p>
-<p class="p4">~test.playN([1, 2, 5]);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// switches the button next to it to show a different output shape:</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// ("-<" is multiple outs, "-=" is directly adjacent outs.</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// clicking on that button opens an editing dialog:</p>
-<p class="p6"><span class="s2">~test.playNDialog;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// needs testing with SwingOSC.</p>
-<p class="p2"><br></p>
-<p class="p4">~test.out_(0);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// the pause button pauses and resumes</p>
-<p class="p4">~test.pause;</p>
-<p class="p4">~test.resume;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// snd button re-sends proxy's sound as compiled,</p>
-<p class="p4">~test.send;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// or with option-click, it rebuilds the proxy's sound function,</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// so e.g. normal random numbers or lookups in the lang get remade.</p>
-<p class="p4">~test.rebuild;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">//<span class="Apple-tab-span">	</span>ProxyMonitorGui gets its look from GUI.skin, so you could customize it there,<span class="Apple-converted-space"> </span></p>
-<p class="p3">//<span class="Apple-tab-span">	</span>or pass your own look in:<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-<p class="p5">ProxyMonitorGui(skin: <your look here>)<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-<p class="p2"><br></p>
-<p class="p3">// <span class="Apple-tab-span">	</span>Quick SwingOsc tests.</p>
-<p class="p2"><br></p>
-<p class="p4">g = <span class="s1">SwingOSC</span>.default;<span class="Apple-converted-space"> </span></p>
-<p class="p4">g.boot;</p>
-<p class="p4"><span class="s1">GUI</span>.swing;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">y = </span>ProxyMonitorGui<span class="s2">(~test);</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">GUI</span>.cocoa;</p>
-<p class="p5"><span class="s2">y = </span>ProxyMonitorGui<span class="s2">(~test);</span></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/SkipJack.html b/Help/Libraries/JITLib/GUI/SkipJack.html
deleted file mode 100644
index f7960c0..0000000
--- a/Help/Libraries/JITLib/GUI/SkipJack.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8b2b1d; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco; color: #8b2b1d}
-span.s3 {color: #0000ff}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #000000}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SkipJack</b></span><span class="s2"> </span><b>a utility for background tasks that survive cmd-.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b></b><br></p>
-<p class="p1"><b>*new( updateFunc, dt, stopTest, name, clock, autostart )<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>updateFunc - </b>the function to repeat in the background</p>
-<p class="p1"><b>dt - </b>the time interval at which to repeat. can also be a stream or a function that returns a number</p>
-<p class="p1"><b>stopTest - </b>a test whether to stop the task now</p>
-<p class="p1"><b>name - </b>is only used for posting information</p>
-<p class="p1"><b>clock - </b>the clock that plays the task.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>default is <a href="../../../Scheduling/AppClock.html"><span class="s3">AppClock</span></a>, so SkipJack can call GUI primitives.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>If you need more precise timing, you can supply your own clock, and use defer only where necessary.</p>
-<p class="p1"><b>autostart - </b>when true (default) SkipJack starts automatically as it is created.</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">w = <span class="s4">SkipJack</span>({ <span class="s5">"watch..."</span>.postln; }, 0.5, name: <span class="s5">"test"</span>);</p>
-<p class="p7"><span class="s4">SkipJack</span><span class="s6">.verbose = </span><span class="s4">true</span><span class="s6">;<span class="Apple-tab-span">	</span></span>// post stop/wakeup logs</p>
-<p class="p5"><br></p>
-<p class="p6">w.stop;</p>
-<p class="p6">w.start;</p>
-<p class="p5"><br></p>
-<p class="p7">// <span class="Apple-tab-span">	</span>now try to stop with cmd-. : SkipJack always restarts itself.</p>
-<p class="p8">thisProcess<span class="s6">.stop;</span></p>
-<p class="p5"><br></p>
-<p class="p6">w.stop;</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span>// use stopTest:<span class="Apple-converted-space"> </span></p>
-<p class="p6">a = 5;</p>
-<p class="p6">w = <span class="s4">SkipJack</span>({ <span class="s5">"watch..."</span>.postln; }, 0.5, { a == 10 }, <span class="s5">"test"</span>);</p>
-<p class="p7"><span class="s6">a = 10;<span class="Apple-tab-span">	</span></span>// fulfil stopTest</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">//<span class="Apple-tab-span">	</span>Typical use: SkipJack updates a window displaying the state<span class="Apple-converted-space"> </span></p>
-<p class="p7">//<span class="Apple-tab-span">	</span>of some objects every now and then.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s6">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// example is mac-only</p>
-<p class="p6">d = (a: 12, b: 24);</p>
-<p class="p6">d.win = <span class="s4">SCWindow</span>(<span class="s5">"dict"</span>, <span class="s4">Rect</span>(0,0,200,60)).front;</p>
-<p class="p6">d.views = [<span class="s7">\a</span>, <span class="s7">\b</span>].collect { <span class="s4">|name, i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">SCStaticText</span>(d.win, <span class="s4">Rect</span>(i * 100,0,96,20))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_(<span class="s4">Color</span>.yellow).align_(0).string_(name);</p>
-<p class="p6">};</p>
-<p class="p8"><span class="s6">w = </span>SkipJack<span class="s6">({<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">"..."</span>.postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s7">\a</span>, <span class="s7">\b</span>].do { <span class="s4">|name, i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.views[i].string_(name ++ <span class="s5">":"</span> + d[name])<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>},<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.5,</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ d.win.isClosed },</p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span></span>"showdict"</p>
-<p class="p6">);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s6">d.a = 123;<span class="Apple-tab-span">	</span></span>// updates should be displayed</p>
-<p class="p6">d.b = <span class="s7">\otto</span>;<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6">d.win.close;<span class="Apple-tab-span">	</span></span>// when window closes, SkipJack stops.</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s6">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the same example, but written in x´cross-platform gui style:</p>
-<p class="p6">d = (a: 12, b: 24);</p>
-<p class="p6">d.win = <span class="s4">GUI</span>(<span class="s7">\window</span>).new(<span class="s5">"dict"</span>, <span class="s4">Rect</span>(0,0,200,60)).front;</p>
-<p class="p6">d.views = [<span class="s7">\a</span>, <span class="s7">\b</span>].collect { <span class="s4">|name, i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">GUI</span>(<span class="s7">\staticText</span>).new(d.win, <span class="s4">Rect</span>(i * 100,0,96,20))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.background_(<span class="s4">Color</span>.yellow).align_(0).string_(name);</p>
-<p class="p6">};</p>
-<p class="p8"><span class="s6">w = </span>SkipJack<span class="s6">({<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">"..."</span>.postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s7">\a</span>, <span class="s7">\b</span>].do { <span class="s4">|name, i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.views[i].string_(name ++ <span class="s5">":"</span> + d[name])<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>},<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.5,</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ d.win.isClosed },</p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span></span>"showdict"</p>
-<p class="p6">);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">//<span class="Apple-tab-span">	</span>I prefer this 'lazy' gui idea to a dependency model:<span class="Apple-converted-space"> </span></p>
-<p class="p7">//<span class="Apple-tab-span">	</span>Even when lots of changes happen fast, you don't choke your<span class="Apple-converted-space"> </span></p>
-<p class="p7">//<span class="Apple-tab-span">	</span>cpu on gui updating, you still see some intermediate states.</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span>//<span class="Apple-tab-span">	</span>if you need to get rid of an unreachable skipjack<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s4">SkipJack</span><span class="s6">({ </span>"unreachable, unkillable..."<span class="s6">.postln }, name: </span>"jack"<span class="s6">);</span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s4">SkipJack</span><span class="s6">.stopAll<span class="Apple-tab-span">	</span></span>// do this to stop all;</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s4">SkipJack</span><span class="s6">.stop(</span><span class="s5">"jack"</span><span class="s6">);<span class="Apple-tab-span">	</span></span>// reach it by name and stop</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/TaskProxyGui.html b/Help/Libraries/JITLib/GUI/TaskProxyGui.html
deleted file mode 100644
index f1b3510..0000000
--- a/Help/Libraries/JITLib/GUI/TaskProxyGui.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #2b30fa}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TaskProxyGui</b></span><span class="s2"> <span class="Apple-tab-span">	</span></span><b>a superclass for Guis for PatternProxies.<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: JITGui</b></p>
-<p class="p3"><b></b><br></p>
-<p class="p1"><b>Please see </b><a href="TdefGui.html"><span class="s3"><b>TdefGui</b></span></a><b> and </b><a href="PdefGui.html"><span class="s3"><b>PdefGui</b></span></a><span class="s3"><b> </b></span><span class="s4"><b>for examples!</b></span></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/TdefAllGui.html b/Help/Libraries/JITLib/GUI/TdefAllGui.html
deleted file mode 100644
index f2be1b0..0000000
--- a/Help/Libraries/JITLib/GUI/TdefAllGui.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #2b30fa}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {text-decoration: underline ; color: #0000ee}
-span.s7 {color: #1e26c0}
-span.s8 {color: #0000bf}
-span.s9 {color: #007300}
-span.s10 {color: #bf0000}
-span.s11 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TdefAllGui</b></span><span class="s2"> <span class="Apple-tab-span">	</span></span><b>see all Tdefs and their state.</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from:</b> <a href="JITGui.html"><span class="s3">JITGui</span></a> : TaskProxyAllGui</p>
-<p class="p3"><br></p>
-<p class="p1">TdefAllGui uses TdefGui views to display all Tdefs, or a selection.</p>
-<p class="p4"><span class="s4">See also<span class="Apple-converted-space">  </span><a href="TdefGui.html"><span class="s5">TdefGui</span></a>, <a href="PdefGui.html"><span class="s5">PdefGui</span></a></span><span class="s3">, <a href="PdefAllGui.html"><span class="s6">PdefAllGui</span></a></span></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s7">JITLib</span></a></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new(numItems, parent, bounds, makeSkip, makeEdit)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems </b>- the maximum number of Pdefs that can be shown.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- <span class="Apple-tab-span">	</span>a parent view on which to display. If nil, a new window is created;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>can also be an existing window or a composite view.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- <span class="Apple-tab-span">	</span>a desired size and position where to display a JITGui. can be nil,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a point, or a rect. JITGuis know their minimum size (<b>minSize),<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>and if bounds is nil, minSize is used.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if bounds is a point or rect, it will be set to at least minSize.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>With a rect one can also supply a position where to display.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If a point,shown size is the maximum of bounds and minSize<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>///// <b>Not Done Yet, but on the list:<span class="Apple-converted-space"> </span></b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>options</b> - <span class="Apple-tab-span">	</span>the only option for PdefAllGui will be <b>[\makeEdit]</b><span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- adding a "front" PdefGui that also shows the front Pdef's envir.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>like PxMix and NPGui</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- A flag whether to make a skipjack.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>Examples</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">Tdef</span>(<span class="s9">\a</span>, { <span class="s8">|e|</span> 100.do { <span class="s8">|i|</span> i.postln; 0.5.wait } });</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s8">Tdef</span>(<span class="s9">\b</span>,<span class="Apple-converted-space">  </span>{ <span class="s8">|e|</span> 100.do { <span class="s8">|i|</span> <span class="s8">Tdef</span>(<span class="s9">\a</span>).set(<span class="s9">\otto</span>, 8.rand); exprand(0.1, 3.0).wait } });</p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span>t = </span>TdefAllGui<span class="s4">(8);</span></p>
-<p class="p11"><span class="s8"><span class="Apple-tab-span">	</span></span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if you have too many Tdefs, an ezscroller lets you select</p>
-<p class="p11"><span class="s10"><span class="Apple-tab-span">	</span></span><span class="s11">"abcdefghijk"</span>.do { <span class="s8">|ch|</span> <span class="s8">Tdef</span>(ch.asSymbol) };</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you can also filter which ones you see:</p>
-<p class="p14"><span class="s10"><span class="Apple-tab-span">	</span></span><span class="s8">Tdef</span><span class="s4">(</span>\a_otti<span class="s4">);</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s8">Tdef</span><span class="s4">(</span>\a_hannerl<span class="s4">);</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="s8">Tdef</span><span class="s4">(</span>\a_dede<span class="s4">);</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or better from gui</p>
-<p class="p11"><span class="s10"><span class="Apple-tab-span">	</span></span>t.filtering_(<span class="s8">true</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>t.prefix_(<span class="s11">"a_"</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if prefix is "", it will filter anything with "_" in it.</p>
-<p class="p11"><span class="s10"><span class="Apple-tab-span">	</span></span>t.prefix_(<span class="s11">""</span>);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>t.filtering_(<span class="s8">false</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/TdefEditor.html b/Help/Libraries/JITLib/GUI/TdefEditor.html
deleted file mode 100644
index 9ff0436..0000000
--- a/Help/Libraries/JITLib/GUI/TdefEditor.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {color: #2b30fa}
-span.s2 {text-decoration: underline ; color: #0000ee}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>TdefEditor will be replaced - please use TdefGui now!</b></p>
-<p class="p2"><br></p>
-<p class="p3">has been rewritten and renamed <a href="TdefGui.html"><span class="s1"><b>TdefGui</b></span></a>, which has largely the same functionality,<span class="Apple-converted-space"> </span></p>
-<p class="p3">but is more consistent and more flexible.</p>
-<p class="p3">There are some changes to the *new method: instead of</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>*new(px, nVars, height, width, parent, makeWatcher)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>*new (object, numItems, parent, bounds, extras)</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>px</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is now <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>nVars</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is now <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>height &<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>can be<b> </b>put as<b><span class="Apple-tab-span">	</span>bounds: height @ width</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>width</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>parent <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>is still<b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>parent</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>makeWatcher</b><span class="Apple-tab-span">	</span>is now <b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>makeSkip</b></p>
-<p class="p4"><br></p>
-<p class="p3">Please see <a href="TdefGui.html"><span class="s2">TdefGui</span></a> for more details.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/TdefGui.html b/Help/Libraries/JITLib/GUI/TdefGui.html
deleted file mode 100644
index bb2d5b1..0000000
--- a/Help/Libraries/JITLib/GUI/TdefGui.html
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #008417}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1d20b9; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001db9; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001db9}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #961e1e}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p20 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p21 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #d40c0b}
-p.p22 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #2b30fa}
-span.s4 {color: #000000}
-span.s5 {color: #2024c7}
-span.s6 {color: #008417}
-span.s7 {color: #737373}
-span.s8 {color: #001db9}
-span.s9 {color: #426f0e}
-span.s10 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TdefGui</b></span><span class="s2"> <span class="Apple-tab-span">	</span></span><b>a line of editing controls for a Tdef, and optionally its envir.</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="JITGui.html"><span class="s3"><b>JITGui</b></span></a><b>: TaskProxyGui </b>(like <a href="PdefGui.html"><span class="s3">PdefGui</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p1">A gui showing the Tdef's name, playing state, source state, and envir state.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Optionally, its envir can also be edited.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>First example:</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4">g = </span><span class="s5">TdefGui</span><span class="s4">();<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// make a TdefGui<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s4">g.object = </span><span class="s5">Tdef</span><span class="s4">(</span><span class="s6">\a</span><span class="s4">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// show when a Tdef is put in</p>
-<p class="p4"><span class="s5">Tdef</span><span class="s4">(</span><span class="s6">\a</span><span class="s4">, { </span><span class="s7">"boing"</span><span class="s4">.postln }); <span class="Apple-tab-span">	</span></span>// show whether it has a source</p>
-<p class="p4"><span class="s5">Tdef</span><span class="s4">(</span><span class="s6">\a</span><span class="s4">).play; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// show whether playing, stopped, or ended, and pausable</p>
-<p class="p4"><span class="s5">Tdef</span><span class="s4">(</span><span class="s6">\a</span><span class="s4">).set(</span><span class="s6">\abc</span><span class="s4">, 123); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// show whether the tdef has an envir</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4">g = </span><span class="s5">TdefGui</span><span class="s4">(</span><span class="s5">Tdef</span><span class="s4">(</span><span class="s6">\a</span><span class="s4">), 3);<span class="Apple-tab-span">	</span></span>// with an envirgui for 3 items</p>
-<p class="p5"><span class="s5">Tdef</span><span class="s4">(</span>\a<span class="s4">).set(</span>\a<span class="s4">, 12, </span>\lofreq<span class="s4">, [1, 10], </span>\str<span class="s4">, </span><span class="s7">"someString"</span><span class="s4">, </span>\oops<span class="s4">, </span>\oneSymbolTooMany<span class="s4">);</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put it in an existing window - margin becomes 0 at 0</p>
-<p class="p6">w = <span class="s5">Window</span>().front; w.addFlowLayout;</p>
-<p class="p6"><span class="s5">TdefGui</span>(<span class="s5">Tdef</span>(<span class="s6">\a</span>), 0, w);</p>
-<p class="p6"><span class="s5">TdefGui</span>(<span class="s5">Tdef</span>(<span class="s6">\a</span>), 3, w);</p>
-<p class="p6">)</p>
-<p class="p1"><b>Details on the GUI elements:</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>name button:<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>when selected, typing the delete key will delete its tdef.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>play/stop button</b> :<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>indicates whether the tdef is playing:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" >"<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span>if stopped,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" _" <span class="Apple-tab-span">	</span>if playing and active,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>" |" <span class="Apple-tab-span">	</span>if it is playing, but the stream has ended.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>pause/resume button</b>:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>only visible if one can pause or resume the Tdef, i.e. while it is playing.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>"paus" is shown when you can pause it,</p>
-<p class="p1"><span class="Apple-tab-span">	</span>"rsum" is shown when you can resume it.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>src button</b>:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>opens a document to edit the source (function) of the Tdef.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>green if a source exists, white if the source is nil.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>env button</b>:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>click</b> opens a document to edit the envir of the Tdef,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>option-click</b> opens a new TdefGui with a big enough<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>EnvirGui for the Tdef's envir.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>green if the tdef has an envir, white if the envir is nil.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Creation Methods</b></p>
-<p class="p8"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>*new (object, numItems, parent, bounds, extras, makeSkip)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create a new JITGui that will be watching an object and display its state.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- <span class="Apple-tab-span">	</span>the object to watch<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numItems </b>- the number of display items to use, e.g. how many fields for text,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or how many EZSliders for single-number parameters.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>- <span class="Apple-tab-span">	</span>a parent view on which to display. If nil, a new window is created;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent </b>can also be an existing window or a composite view.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds </b>- <span class="Apple-tab-span">	</span>a desired size and position where to display a JITGui. can be nil,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a point, or a rect. JITGuis know their minimum size (<b>minSize),<span class="Apple-converted-space"> </span></b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>and if bounds is nil, minSize is used.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if bounds is a point or rect, it will be set to at least minSize.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>With a rect one can also supply a position where to display.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If a point,shown size is the maximum of bounds and minSize<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>options - <span class="Apple-tab-span">	</span></b>a list of additional information, e.g. flags about optional buttons.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(this is used is some subclasses)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>makeSkip </b>- A flag whether to make a skipjack. If one uses a TdefGui as part of a<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>larger gui ensemble, one may want to call checkUpdate on all of them<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>together, not with separate skipJacks.</p>
-<p class="p10"><br></p>
-<p class="p13"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s8">Tdef</span>(<span class="s9">\a</span>, { <span class="s8">|e|</span> 100.do { <span class="s8">|i|</span> i.postln; 0.5.wait } });</p>
-<p class="p6">t = <span class="s8">TdefGui</span>(<span class="s8">Tdef</span>(<span class="s9">\a</span>), 4);</p>
-<p class="p6"><span class="s8">Tdef</span>(<span class="s9">\a</span>).set(\freq, 200, \dur, 0.1, <span class="s9">\otto</span>, 12, <span class="s9">\ann</span>, 1234);</p>
-<p class="p6">)</p>
-<p class="p14"><br></p>
-<p class="p6"><span class="s8">Tdef</span>(<span class="s9">\a</span>).stop;</p>
-<p class="p6"><span class="s8">Tdef</span>(<span class="s9">\a</span>).play;</p>
-<p class="p6"><span class="s8">Tdef</span>(<span class="s9">\a</span>).pause;</p>
-<p class="p6"><span class="s8">Tdef</span>(<span class="s9">\a</span>).resume;</p>
-<p class="p2"><br></p>
-<p class="p6">t.object_(<span class="s5">nil</span>);</p>
-<p class="p6">t.object_(<span class="s5">Tdef</span>(<span class="s6">\a</span>));</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p15"><span class="s4">w = </span><span class="s5">Window</span><span class="s4">(</span>"put it in a selfmade window"<span class="s4">).front;</span></p>
-<p class="p6">w.addFlowLayout;</p>
-<p class="p6">w.view.decorator.shift(50, 50);</p>
-<p class="p6"><span class="s5">TdefGui</span>(<span class="s5">Tdef</span>(<span class="s6">\a</span>), 12, w)</p>
-<p class="p6">)</p>
-<p class="p16"><br></p>
-<p class="p6"><span class="s8">Tdef</span>(<span class="s9">\b</span>,<span class="Apple-converted-space">  </span>{ <span class="s8">|e|</span> 100.do { <span class="s8">|i|</span> <span class="s8">Tdef</span>(<span class="s9">\a</span>).set(<span class="s9">\otto</span>, 8.rand); exprand(0.1, 3.0).wait } });</p>
-<p class="p6"><span class="s8">Tdef</span>(<span class="s9">\b</span>).play;</p>
-<p class="p17">TdefGui<span class="s4">(</span>Tdef<span class="s4">(</span><span class="s9">\b</span><span class="s4">));</span></p>
-<p class="p2"><br></p>
-<p class="p18"><span class="s4"><span class="Apple-tab-span">	</span></span>// see all Tdefs:<span class="Apple-converted-space"> </span></p>
-<p class="p17">TdefAllGui<span class="s4">(16);</span></p>
-<p class="p2"><br></p>
-<p class="p19"><span class="s4">See also <a href="TdefAllGui.html"><span class="s10">TdefAllGui</span></a>, <a href="PdefGui.html"><span class="s10">PdefGui</span></a>, <a href="PdefAllGui.html"><span class="s10">PdefAllGui</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p20"><b>Instance Variables</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>object <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a Tdef, or nil</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>numItems<span class="Apple-tab-span">	</span></b>the number of items in the envirGui<span class="Apple-converted-space"> </span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>parent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the parent view<span class="Apple-converted-space"> </span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>bounds <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the bounds of the <b>zone</b></p>
-<p class="p10"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>zone<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the CompositeView within which the TdfGui is shown</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>nameBut, playBut, pauseBut, srcBut, envBut<span class="Apple-tab-span">	</span></b>the buttons</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>envirGui<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the gui for the Tdef's envir - if numItems > 0.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><b>Instance Methods</b></p>
-<p class="p10"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>object_ (obj)<span class="Apple-tab-span">	</span></b>put an object in the gui.<span class="Apple-converted-space"> </span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// if the jitGui is in its own window, you can:</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>moveTo (h, v)<span class="Apple-tab-span">	</span></b>move it to some specific location.</p>
-<p class="p12"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>clear<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the TdefGui's object to nil</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>close<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>and close its window.</p>
-<p class="p13"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b>Internal methods:</b></p>
-<p class="p10"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>srcString<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a compileString that recreates the Tdef.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// assume g from above is still there</p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.srcString;</p>
-<p class="p13"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>editString (edKey)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a compileString that recreates the Tdef's envir at edKey.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>editStrings (edKeys)<span class="Apple-tab-span">	</span></b>a compileString that recreates the Tdef's envir at edKeys.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Short prose description of method.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>edKey </b>- Explanation of edKey. Default value is nil. Other information.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p21"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// assume g from above is still there</p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.editString;</p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Tdef(\a).set(\foo, \bar);</p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.editString(\foo);</p>
-<p class="p13"><br></p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.editStrings;</p>
-<p class="p13"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>getUsedKeys</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the keys in use in the envir</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.getUsedKeys;</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>openDoc (strings, bounds)<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span></b>open a document with some strings at some location.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>used with src button, env button.</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p22"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.openDoc(g.editStrings);</p>
-<p class="p13"><br></p>
-<p class="p13"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>makeEnvirGui</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>make an envirGui within zone.</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/softPut.html b/Help/Libraries/JITLib/GUI/softPut.html
deleted file mode 100644
index 65d78b9..0000000
--- a/Help/Libraries/JITLib/GUI/softPut.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #782828; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2024c7}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2024c7; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #008417}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #2b30fa}
-span.s3 {color: #292def}
-span.s4 {color: #2024c7}
-span.s5 {color: #008417}
-span.s6 {color: #cd0b0b}
-span.s7 {color: #000000}
-span.s8 {color: #737373}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>softPut <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>set a (number) parameter in an environment conditionally</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also </b><a href="softSet.html"><span class="s2"><b>softSet</b></span></a><span class="s2"><b>, </b><a href="softVol_.html"><span class="s3"><b>softVol_</b></span></a></span><b>.</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>changes an existing numerical value for key in a dictionary only<span class="Apple-converted-space">  </span>in two conditions:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>* if the new value is close enough to the current value at that key;</p>
-<p class="p1"><span class="Apple-tab-span">	</span>*or<span class="Apple-converted-space">  </span>if the setting controller knows the previous value and sends it<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>along. the idea here is that if the controller knows it did the last<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value change, it has authority to jump now.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>softPut(param, val, within = 0.025, lastVal, mapped = true, spec)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>param - <span class="Apple-tab-span">	</span></b>the name of the parameter (key) to set</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>val - <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the value to set the param to (can be mapped or unmapped)</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>within<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span></b>the normalized range within which the set is accepted - default is 0.025</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mapped<span class="Apple-tab-span">	</span></b>a flag whether <b>val</b> is mapped (within the range of param.asSpec) or unmapped (0.0-1.0)</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lastVal<span class="Apple-tab-span">	</span></b>the previous value that a control has set - see last examples.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>spec</b><span class="Apple-tab-span">	</span>a ControlSpec can be passed in. if nil, param.asSpec is used.</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>NOTE: if no spec is given, or no value exists yet, softSet simply allows setting.</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">Typical uses would be switching to a new preset, then using a faderbox,<span class="Apple-converted-space"> </span></p>
-<p class="p1">and avoiding sudden controller jumps that could occur (soft takeover).</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">e = (amp: 0.1, dur: 0.2);</p>
-<p class="p5"><span class="s4">Tdef</span>(<span class="s5">\test</span>, {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> dur;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur = e.dur;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(amp: e.amp, dur: dur, degree: 7.rand).play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">e.put(<span class="s5">\amp</span>, 0.03);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// just set it<span class="Apple-tab-span">	</span></p>
-<p class="p5">e.put(<span class="s5">\amp</span>, 0.1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6">e.softPut(\amp, 0.11);<span class="Apple-tab-span">	</span>// small change, OK to set</p>
-<p class="p6">e.put(<span class="s5">\amp</span>, 0.1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6">e.softPut(\amp, 0.15);<span class="Apple-tab-span">	</span>// no bigger change</p>
-<p class="p5">e.softPut(\amp, 0.15, 0.1);<span class="Apple-tab-span">	</span>// bigger change is OK with larger within value</p>
-<p class="p7"><br></p>
-<p class="p6">e.softPut(\amp, 0.01);<span class="Apple-tab-span">	</span>// no</p>
-<p class="p6">e.softPut(\amp, 0.01, lastVal: 0.15);<span class="Apple-tab-span">	</span>// can make big jumps when lastVal is close to current.</p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// no spec for dur exists by default:</p>
-<p class="p5"><span class="Apple-tab-span">	</span>\dur.asSpec</p>
-<p class="p4"><br></p>
-<p class="p5">e.softPut(\dur, 0.05);<span class="Apple-tab-span">	</span>// so this always really sets.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// PatternProxies ( e.g. Tdefs, Pdefs) have a softSet method, which<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// forwards softPut to their envirs:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">Pdef</span>(<span class="s5">\test</span>, <span class="s4">Pbind</span>(<span class="s5">\degree</span>, <span class="s4">Pseq</span>((0..7), <span class="s4">inf</span>))).play;</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">Pdef</span>(<span class="s5">\test</span>).set(<span class="s5">\amp</span>, 0.03)</p>
-<p class="p5"><span class="s4">Pdef</span>(<span class="s5">\test</span>).envir.softPut(<span class="s5">\amp</span>, 0.06); <span class="s6">// no, too big</span></p>
-<p class="p6"><span class="s4">Pdef</span>(<span class="s5">\test</span>).envir.softPut(<span class="s5">\amp</span>, 0.06, 0.1); <span class="s6">// ok with wider range</span></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// equivalent:<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s4">Pdef</span>(<span class="s5">\test</span>).set(<span class="s5">\amp</span>, 0.03)</p>
-<p class="p6"><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\amp</span>, 0.1); <span class="s6">// no, too big</span></p>
-<p class="p5"><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\amp</span>, 0.06, 0.1); <span class="s6">// ok with wider "within"</span></p>
-<p class="p8">Pdef(\test).get(\amp)</p>
-<p class="p9"><br></p>
-<p class="p5"><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\amp</span>, 0.5); <span class="s6">// no!</span></p>
-<p class="p5"><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\amp</span>, 0.5, lastVal: 0.06); <span class="s6">// ok!</span></p>
-<p class="p5"><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\amp</span>, 0.05, lastVal: 0.5); <span class="s6">// ok</span></p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s4">Pdef</span><span class="s7">(</span><span class="s5">\test</span><span class="s7">).softSet(</span><span class="s5">\dur</span><span class="s7">, 0.05); </span>// alsways ok, no spec for dur.</p>
-<p class="p6"><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\dur</span>, 0.1); <span class="s6">// ok<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\dur</span>, 0.05, spec: [0.03, 3, \exp]); <span class="s6">// not OK with that spec</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span>// softPut and softSet can be risky - one can lose a parameter when moving a controller</p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span>// too quickly. So, if we know the last value (e.g. because the same controller<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span>// knows it has set to that value),<span class="Apple-converted-space">  </span>it is OK to jump:</p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span>// example of softSet, softSet which knows lastVal,</p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span>// softVol_ and softVol_ which knows lastVol:</p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s4">Window</span>(<span class="s8">"softSet, softVol"</span>, <span class="s4">Rect</span>(500, 200, 400, 240)).front;</p>
-<p class="p5">w.view.addFlowLayout;</p>
-<p class="p5"><span class="s4">PdefGui</span>(<span class="s4">Pdef</span>(<span class="s5">\test</span>), 2, w, 340 at 80);</p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span>// can lose control if wiggled too fast</p>
-<p class="p11"><span class="s4">EZSlider</span><span class="s7">(w, 340 at 30, </span>\softSetDur<span class="s7">, </span>[0.03, 3, \exp]<span class="s7">, { </span><span class="s4">|sl|</span><span class="s7"><span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\dur</span>, sl.value, 0.05)</p>
-<p class="p5">});</p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span>// knows it was in control</p>
-<p class="p5"><span class="s4">EZSlider</span>(w, 340 at 30, <span class="s5">\knowsLast</span>, <span class="s5">[0.03, 3, \exp]</span>, <span class="s4">Routine</span> { <span class="s4">|sl|</span><span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> newVal, lastVal;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>newVal = sl.value;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pdef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\dur</span>, newVal, 0.05, lastVal: lastVal);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lastVal = newVal;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dummy</span>.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/softSet.html b/Help/Libraries/JITLib/GUI/softSet.html
deleted file mode 100644
index 0c27307..0000000
--- a/Help/Libraries/JITLib/GUI/softSet.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #782727; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0909}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #2b30fa}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #1e22bf}
-span.s7 {color: #007313}
-span.s8 {color: #bf0000}
-span.s9 {color: #bf0909}
-span.s10 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>softSet <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>set a proxy param value conditionally</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also </b><a href="softVol_.html"><b>softVol_</b></a></span><span class="s3"><b>,</b></span><span class="s2"><b> </b><a href="softPut.html"><b>softPut</b></a><b>.</b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>NodeProxy.softSet, Ndef.softSet<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>sets a nodeproxy param value only<span class="Apple-converted-space">  </span>in two conditions:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>* if the new value is close enough to the current param value;</p>
-<p class="p1"><span class="Apple-tab-span">	</span>*or<span class="Apple-converted-space">  </span>if the setting controller knows the previous value and sends it<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>along. the idea here is that if the controller knows it did the last<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value change, it has authority to jump now.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>softSet(param, val, within = 0.025, mapped=false, lastVal, spec)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>param - <span class="Apple-tab-span">	</span></b>the name of the parameter to set</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>val - <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the value to set the param to (can be mapped or unmapped)</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>within<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span></b>the normalized range within which the set is accepted - default is 0.025</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lastVal<span class="Apple-tab-span">	</span></b>the previous value that a control has set - see last examples.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mapped<span class="Apple-tab-span">	</span></b>a flag whether <b>val</b> is mapped (within the range of param.asSpec) or unmapped (0.0-1.0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>spec</b><span class="Apple-tab-span">	</span>a ControlSpec can be passed in. if nil, param.asSpec is used.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>NOTE: if no spec is given, softSet simply allows setting.</b></p>
-<p class="p4"><br></p>
-<p class="p1">Typical uses would be switching to a preset, then using a faderbox,<span class="Apple-converted-space"> </span></p>
-<p class="p1">and avoiding sudden controller jumps that could occur (soft takeover).</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4">Ndef</span>(<span class="s5">\test</span>, { <span class="s4">|freq=200|</span> Splay.ar(<span class="s4">SinOsc</span>.ar(freq * Array.rand(12, 0.95, 1.05))) });</p>
-<p class="p6"><span class="s4">Ndef</span>(<span class="s5">\test</span>).play(vol: 0.1);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s6">Ndef</span>(<span class="s7">\test</span>).gui(4)</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4">Ndef</span>(<span class="s5">\test</span>).set(<span class="s5">\freq</span>, 300);</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 3 midi steps == 0.02362;</p>
-<p class="p6"><span class="s4">Ndef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\freq</span>, 320, 0.03); <span class="s8">// ok</span></p>
-<p class="p6"><span class="s4">Ndef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\freq</span>, 280, 0.03); <span class="s8">// ok</span></p>
-<p class="p7"><span class="s4">Ndef</span><span class="s2">(</span><span class="s5">\test</span><span class="s2">).softSet(</span><span class="s5">\freq</span><span class="s2">, 200, 0.03); </span>// returns false if too big jump</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s4">Ndef</span><span class="s2">(</span>\test<span class="s2">).set(</span>\freq<span class="s2">, </span>600<span class="s2">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// softSet can be risky - one can lose a parameter when moving a controller</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// too quickly. So, if we know the last value (e.g. because the same controller<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// knows it has set to that value),<span class="Apple-converted-space">  </span>it is OK to jump:</p>
-<p class="p6"><span class="s6">Ndef</span>(<span class="s7">\test</span>).softSet(<span class="s7">\freq</span>, 330, 0.03, lastVal: 630);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s6">Ndef</span>(<span class="s7">\test</span>).softSet(<span class="s7">\freq</span>, rrand(300, 350), 0.01);<span class="Apple-tab-span">	</span>// sometimes yes, sometimes no</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// use unmapped, i.e. normalized values to set:</p>
-<p class="p10"><br></p>
-<p class="p6"><span class="s6">Ndef</span>(<span class="s7">\test</span>).set(<span class="s7">\freq</span>, 600);<span class="Apple-tab-span">	</span><span class="s9">// ok</span></p>
-<p class="p6"><span class="s4">Ndef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\freq</span>, 0.5, 0.05, mapped: false);<span class="Apple-tab-span">	</span><span class="s8">// ok</span></p>
-<p class="p6"><span class="s4">Ndef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\freq</span>, 0.45, 0.03, mapped: false);<span class="Apple-tab-span">	</span><span class="s8">// no, too big</span></p>
-<p class="p6"><span class="s6">Ndef</span>(<span class="s7">\test</span>).softSet(<span class="s7">\freq</span>, 0.3, 0.03, mapped: false, lastVal: 0.5);<span class="Apple-tab-span">	</span><span class="s9">// but ok if lastVal is close</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// example of softSet, softSet which knows lastVal,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// softVol_ and softVol_ which knows lastVol:</p>
-<p class="p6">(</p>
-<p class="p6">w = <span class="s4">Window</span>(<span class="s10">"softSet, softVol"</span>, <span class="s4">Rect</span>(500, 200, 400, 240)).front;</p>
-<p class="p6">w.view.addFlowLayout;</p>
-<p class="p11">NdefGui<span class="s2">(</span>Ndef<span class="s2">(</span><span class="s5">\test</span><span class="s2">), 2, w);</span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// can lose control if wiggled too fast</p>
-<p class="p6"><span class="s4">EZSlider</span>(w, 340 at 30, <span class="s5">\softSet</span>, <span class="s4">\freq</span>, { <span class="s4">|sl|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Ndef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\freq</span>, sl.value, 0.05)</p>
-<p class="p6">});</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// knows it was in control</p>
-<p class="p11">EZSlider<span class="s2">(w, 340 at 30, </span><span class="s5">\knowsLast</span><span class="s2">, </span>\freq<span class="s2">, </span>Routine<span class="s2"> { </span>|sl|<span class="s2"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> newVal, lastVal;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop {<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>newVal = sl.value;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Ndef</span>(<span class="s5">\test</span>).softSet(<span class="s5">\freq</span>, newVal, 0.05, lastVal: lastVal);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lastVal = newVal;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dummy</span>.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">});</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// same for volume - not too safe</p>
-<p class="p6"><span class="s4">EZSlider</span>(w, 340 at 30, <span class="s5">\softVol</span>, <span class="s5">\amp</span>, { <span class="s4">|sl|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Ndef</span>(<span class="s5">\test</span>).softVol_(sl.value, 0.05)</p>
-<p class="p6">});</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// safer</p>
-<p class="p6"><span class="s4">EZSlider</span>(w, 340 at 30, <span class="s5">\knowLastV</span>, <span class="s5">\amp</span>, <span class="s4">Routine</span> { <span class="s4">|sl|</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> newVal, lastVal;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop {<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>newVal = sl.value;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Ndef</span>(<span class="s5">\test</span>).softVol_(sl.value, 0.05, lastVal: lastVal);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lastVal = newVal;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dummy</span>.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/GUI/softVol_.html b/Help/Libraries/JITLib/GUI/softVol_.html
deleted file mode 100644
index 888d53d..0000000
--- a/Help/Libraries/JITLib/GUI/softVol_.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #782727; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2b30fa}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0909}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1e22bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #1e22bf}
-span.s4 {color: #007313}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>softVol_ <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>set a nodeproxy's vol conditionally</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>softVol_(param, val, within = 0.025, pause = true, lastVal, spec)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>val - <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the volume value to set to<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>within<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span></b>the normalized range within which the set is accepted - default is 0.025</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pause<span class="Apple-tab-span">	</span></b>a flag whether to pause the nodeproxy when volume is 0.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>waits for 0.2 seconds for volume to go down first.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lastVal<span class="Apple-tab-span">	</span></b>the previous value that the controller has set - can be<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>spec</b><span class="Apple-tab-span">	</span>a ControlSpec can be passed in. if nil, \amp.asSpec is used.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><b>See also </b><a href="softSet.html"><b>softSet</b></a></span><b>,</b><span class="s2"><b> </b><a href="softPut.html"><b>softPut</b></a><b>.</b></span></p>
-<p class="p3"><b></b><br></p>
-<p class="p3"><b></b><br></p>
-<p class="p5"><span class="s3">Ndef</span>(<span class="s4">\test</span>, { <span class="s3">|freq=200|</span> Splay.ar(<span class="s3">SinOsc</span>.ar(freq * Array.rand(12, 0.95, 1.05))) });</p>
-<p class="p5"><span class="s3">Ndef</span>(<span class="s4">\test</span>).play(vol: 0.1);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// example of softSet, softSet which knows lastVal,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// softVol_ and softVol_ which knows lastVol:</p>
-<p class="p5">(</p>
-<p class="p5">w = <span class="s3">Window</span>(<span class="s5">"softVol"</span>, <span class="s3">Rect</span>(500, 200, 400, 240)).front;</p>
-<p class="p5">w.view.addFlowLayout;</p>
-<p class="p8">NdefGui<span class="s2">(</span>Ndef<span class="s2">(</span><span class="s4">\test</span><span class="s2">), 2, w);</span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// same for volume - not too safe</p>
-<p class="p5"><span class="s3">EZSlider</span>(w, 340 at 30, <span class="s4">\softVol</span>, <span class="s4">\amp</span>, { <span class="s3">|sl|</span><span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Ndef</span>(<span class="s4">\test</span>).softVol_(sl.value, 0.05)</p>
-<p class="p5">});</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// safer</p>
-<p class="p5"><span class="s3">EZSlider</span>(w, 340 at 30, <span class="s4">\knowLastV</span>, <span class="s4">\amp</span>, <span class="s3">Routine</span> { <span class="s3">|sl|</span><span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> newVal, lastVal;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>newVal = sl.value;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Ndef</span>(<span class="s4">\test</span>).softVol_(sl.value, 0.05, lastVal: lastVal);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lastVal = newVal;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dummy</span>.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/JITLib.html b/Help/Libraries/JITLib/JITLib.html
deleted file mode 100644
index 1aeaea6..0000000
--- a/Help/Libraries/JITLib/JITLib.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2b30fa}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8e8a7e; min-height: 12.0px}
-span.s1 {font: 3.0px Helvetica}
-span.s2 {color: #416bbd}
-span.s3 {text-decoration: underline ; color: #0041d4}
-span.s4 {color: #0047e4}
-span.s5 {color: #000000}
-span.s6 {color: #6378a5}
-span.s7 {font: 11.0px Georgia}
-span.s8 {font: 12.0px Helvetica; color: #6378a5}
-span.s9 {font: 12.0px Helvetica; text-decoration: underline}
-span.s10 {text-decoration: underline ; color: #0000ee}
-span.s11 {color: #476db9}
-span.s12 {color: #3465c5}
-span.s13 {text-decoration: underline ; color: #4266ac}
-span.s14 {color: #255ece}
-span.s15 {color: #2b30fa}
-span.s16 {text-decoration: underline ; color: #3d64af}
-span.s17 {text-decoration: underline ; color: #2b30fa}
-span.s18 {text-decoration: underline}
-span.s19 {color: #4266ac}
-span.s20 {color: #1d59d3}
-span.s21 {color: #1454d8}
-span.s22 {color: #0024f8}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Just In Time Programming</b></p>
-<p class="p2"><br></p>
-<p class="p3"><i>"Passenger to taxtidriver: take me to number 37. I'll give you the street name when we are there."<span class="Apple-converted-space"> </span></i></p>
-<p class="p3"><i><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(an austrian math teacher's joke)</i></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">Disclaimer: there is no time, really; punctuality is your personal responsibility though.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><i>Just in time programming</i> (or: <i>conversational programming, live coding</i><span class="s1"><i><sup>1</sup></i></span><i>, on-the fly-programming, interactive programming</i>) is a paradigm that includes the programming activity itself in the program's operation. This means a program is not taken as a tool that is made first, then to be productive, but a dynamic construction process of description and conversation – writing code thus becoming a closer part of musical or experimental practice. SuperCollider, being a dynamic programming language, provides several possibilities for modification of a running program - this library attempts to extend, simplify and develop them, mainly by providing abstract placeholders<i> (</i><b><i>proxies</i></b><i>)</i> that can be modified and used in calculations while playing. There is some specific networking classes which are made to simplify the distribution of<span class="Apple-converted-space">  </span>live coding activity.</p>
-<p class="p2"><br></p>
-<p class="p4">JITLib simplifies and unifies some orthogonal aspects of SuperCollider.<span class="Apple-converted-space"> </span></p>
-<p class="p4">It consists of a number of <b><i>placeholders</i></b> (server side and client side) and <b><i>schemes of access</i></b>.</p>
-<p class="p4">These two aspects of space corresponding to <i>inclusion</i> and <i>reference,</i> depend on their context - here the placeholders are like roles which have a certain behaviour and can be fulfilled by certain objects.</p>
-<p class="p4">It is useful to be aware of the three aspects of such a placeholder: a certain set of elements can be their <b>source</b>, they can be used in a set of <b>contexts</b> and have a default source, if none is given.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">Frequently used classes:</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><a href="Patterns/Tdef.html"><span class="s3">Tdef</span></a></span> (for tasks), <a href="environments/ProxySpace.html"><span class="s2">ProxySpace</span></a><span class="s2">, <a href="nodeproxy/NodeProxy.html"><span class="s4">NodeProxy</span></a></span> and <a href="nodeproxy/Ndef.html"><span class="s2">Ndef</span></a> (for synths), <a href="Patterns/Pdef.html"><span class="s2">Pdef</span></a> and <a href="Patterns/Pdefn.html"><span class="s2">Pdefn</span></a> (for patterns).</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p4">For additional functionality, see also <b>JITLib extensions</b> <b>Quark</b>. To install it, evaluate:</p>
-<p class="p6">"JITLib extensions"<span class="s5">.include;</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Tutorial: Interactive Programming with SuperCollider and jitlib</b></p>
-<p class="p7"><br></p>
-<p class="p4">This tutorial focusses on some basic concepts used in JITLib. There are many possibilities,</p>
-<p class="p4">such as server messaging and pattern proxies which are not covered in tutorial form presently.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">content:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>placeholders in sc</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="tutorials/jitlib_basic_concepts_01.html"><span class="s6">jitlib_basic_concepts_01</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>referencing and environments</b> <span class="Apple-tab-span">	</span><a href="tutorials/jitlib_basic_concepts_02.html"><span class="s6">jitlib_basic_concepts_02</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>internal structure of node proxy</b><span class="s7"><b> <span class="Apple-tab-span">	</span></b><a href="tutorials/jitlib_basic_concepts_03.html"><span class="s8">jitlib_basic_concepts_03</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>timing in node proxy</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="tutorials/jitlib_basic_concepts_04.html"><span class="s6">jitlib_basic_concepts_04</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Overview of the different classes and techniques:</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">• One way or style of access is the<b> <i>'def' </i>classes </b>(Pdef, Ndef etc.)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>it binds a symbol to an object in a specific way:</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>Pdef(\name)</b> returns the proxy</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>Pdef(\name, object)</b> sets the source and returns the proxy.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>the rest of the behaviour depends on its use.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span>client side: <span class="Apple-tab-span">	</span><a href="Patterns/Pdef.html"><span class="s9">Pdef</span></a>, <a href="Patterns/Pdefn.html"><span class="s9">Pdefn</span></a>, <a href="Patterns/Tdef.html"><span class="s9">Tdef</span></a>, <a href="Patterns/Pbindef.html"><span class="s9">Pbindef</span></a>, <a href="Patterns/Psym.html"><span class="s9">Psym</span></a>, <a href="Patterns/Pnsym.html"><span class="s9">Pnsym</span></a>, <a href="Patterns/Fdef.html"><span class="s9">Fdef</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>server side: <span class="Apple-tab-span">	</span><a href="nodeproxy/Ndef.html"><span class="s6">Ndef</span></a></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4">• Another way, for server side NodeProxies, is an <b><i>environment</i></b> that returns placeholders on demand:</p>
-<p class="p4"><span class="Apple-tab-span">	</span>ProxySpace.push</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~out = { ...}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>helpfile: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="environments/ProxySpace.html"><span class="s6">ProxySpace</span></a><b> </b>for the use together with other environments, see <a href="tutorials/jitlib_basic_concepts_02.html"><span class="s6">jitlib_basic_concepts_02</span></a></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4">• There is also direct access <b><i>without</i> using the access schemes</b>: NodeProxy, TaskProxy etc. provide it.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>internally the former use these as base classes.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span>client side: <span class="Apple-tab-span">	</span><a href="Patterns/PatternProxy.html"><span class="s9">PatternProxy</span></a><b>, </b><a href="Patterns/EventPatternProxy.html"><span class="s9">EventPatternProxy</span></a>, <a href="Patterns/TaskProxy.html"><span class="s9">TaskProxy</span></a>, <a href="Patterns/PbindProxy.html"><span class="s9">PbindProxy</span></a><b>, </b><a href="Patterns/Pdict.html"><span class="s9">Pdict</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>server side: <span class="Apple-tab-span">	</span><a href="nodeproxy/NodeProxy.html"><span class="s10">NodeProxy</span></a></p>
-<p class="p2"><br></p>
-<p class="p4">• To record all textual changes, <a href="extras/History.html"><span class="s11">History</span></a> is provides navigation and a memory of code.</p>
-<p class="p2"><br></p>
-<p class="p4">• For playing back on multichannel systems, <a href="nodeproxy/Monitor.html"><span class="s12">Monitor</span></a> (used internally) has a <a href="nodeproxy/playN.html"><span class="s12">playN</span></a> method.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">• GUI classes: <span class="Apple-tab-span">	</span>overviews and mixers: <a href="extras/ProxyMixer.html"><span class="s13">ProxyMixer</span></a>, <a href="extras/TdefAllGui.html"><span class="s2">TdefAllGui</span></a>, <a href="extras/PdefAllGui.html"><span class="s2">PdefAllGui</span></a>, <a href="extras/NdefMixer.html"><span class="s14">NdefMixer</span></a></p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(for separate use: <a href="GUI/TdefGui.html"><span class="s9">TdefGui</span></a></span><span class="s11">, <a href="GUI/PdefGui.html"><span class="s15">PdefGui</span></a></span>, <a href="extras/ProxyMonitorGui.html"><span class="s16">MonitorGui</span></a><span class="s11">, <a href="GUI/NdefGui.html"><span class="s17">NdefGui</span></a>, </span><span class="s18">NdefParamGui</span><span class="s5">)<b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Tutorials</b>:</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b><a href="tutorials/proxyspace_examples.html"><span class="s13">proxyspace_examples</span></a> <span class="Apple-tab-span">	</span>(a broad variety of inputs and uses)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><a href="tutorials/jitlib_efficiency.html"><span class="s13">jitlib_efficiency</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(optimising code)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><a href="tutorials/the_lazy_proxy.html"><span class="s13">the_lazy_proxy</span></a><span class="s19"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(how the initialisation works)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><a href="tutorials/jitlib_fading.html"><span class="s13">jitlib_fading</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(how crossfade of code works)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><a href="tutorials/jitlib_asCompileString.html"><span class="s13">jitlib_asCompileString</span></a><span class="Apple-tab-span">	</span>(storing and reproducing proxies)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><a href="tutorials/recursive_phrasing.html"><span class="s13">recursive_phrasing</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(a specific use of Pdef)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="tutorials/jitlib_asCompileString.html"><span class="s20">jitlib_asCompileString</span></a><span class="Apple-tab-span">	</span>(how to reproduce source code from objects)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><a href="tutorials/jitlib_networking.html"><span class="s13">jitlib_networking</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(how to collaborative live code with JITLib)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><a href="tutorials/basic_live_coding_techniques.html"><span class="s6">basic_live_coding_techniques</span></a><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>(live coding without jitlib)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Networking:</b></p>
-<p class="p2"><br></p>
-<p class="p4">• in remote and local networks thanks to sc-architecture node proxies can be <b>used on any server</b>,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>as long as it notifies the client and has a correctly initialized default node.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>note that the client id should be set.</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Internal classes / abstract classes:</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="nodeproxy/BusPlug.html"><span class="s12">BusPlug</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(listener on a bus)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="extras/SkipJack.html"><span class="s12">SkipJack</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(a task that keeps awake across cmd-period)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="environments/LazyEnvir.html"><span class="s12">LazyEnvir</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(and environment that returns proxies)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="environments/EnvironmentRedirect.html"><span class="s12">EnvironmentRedirect</span></a><span class="s12"> </span>(abstract superclass for redirecting environments)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="nodeproxy/EnvGate.html"><span class="s21">EnvGate</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(singleton fade envelope)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="nodeproxy/NodeProxy_roles.html"><span class="s22">NodeProxy_roles</span></a> (adverbial syntax for NodeProxy sources)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">for suggestions / comments contact me</p>
-<p class="p4">Julian Rohrhuber,<span class="Apple-converted-space">  </span>rohrhuber at uni-hamburg.de.</p>
-<p class="p2"><br></p>
-<p class="p4">History and GUI classes are written by Alberto de Campo.</p>
-<p class="p2"><br></p>
-<p class="p4">Thanks a lot for all the feedback and ideas!</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">_____________________________________________________________</p>
-<p class="p4">The research for this project is funded by: <i>German Research Foundation (DFG)<span class="Apple-converted-space"> </span></i></p>
-<p class="p4">and the <i>Future Funds of Styria, Austria.</i></p>
-<p class="p2"><br></p>
-<p class="p4"><i>For Live Coding see: http://toplap.org</i></p>
-<p class="p2"><br></p>
-<p class="p10"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/EventPatternProxy.html b/Help/Libraries/JITLib/Patterns/EventPatternProxy.html
deleted file mode 100644
index e3548ff..0000000
--- a/Help/Libraries/JITLib/Patterns/EventPatternProxy.html
+++ /dev/null
@@ -1,270 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #000000}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EventPatternProxy<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>event stream reference</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: TaskProxy</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">keeps a reference to a stream that can be replaced while playing.</p>
-<p class="p1">Multiple streams are thus handled without creating dependancies.</p>
-<p class="p3"><br></p>
-<p class="p1">related: <a href="Pdef.html"><span class="s3">Pdef</span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*new(source)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a new instance with a pattern (the source).</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the pattern should be an <i>event pattern</i> (see <b>Pdef</b>)</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*default</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a default source, if none is given. the default is a Pbind with resting notes of 1.0 beat duration</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>source_(obj)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the source (a pattern). If a quantization is given, schedule this change to the next beat</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<b>pattern_</b>(..) is equivalent)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>clear</b><span class="Apple-tab-span">	</span>set the source to nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>quant_(beats)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the quantization value. can be an array<span class="Apple-converted-space">  </span>[quant, phase, offset, outset]</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>quant</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get the quantization value</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*defaultQuant_(beats)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the default quantization value for the class. (default: 1.0)</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>fadeTime_(beats)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>when the synthdefs that are used contain an \amp control, the patterns are replaced</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>by crossfading the previous with the new over this time (in beats)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>envir_(event)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>provide a default event for the Pdef. It is used to filter the incoming stream before it</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is<span class="Apple-converted-space">  </span>passed to the source pattern.<span class="Apple-converted-space">  </span>This is similar to NodeProxy-nodeMap.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>When set for the first time, the pattern is rebuilt.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>set(key, val, key2, val2, ...)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set arguments in the default event. If there is none, it is created and the pattern is rebuilt.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><i>a) using as stream reference</i></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>asStream</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns an instance of RefStream, which updates its stream as soon as the pattern</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is changed.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>embedInStream(inval)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>just like any pattern, embeds itself in stream</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><i>b) using as EventStreamPlayer</i></b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>play(clock, protoEvent, quant)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>starts the EventPatternProxy and creates a player.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if you want to play multiple instances, use <b>.fork(clock, quant, protoEvent)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>quant </b>can be an array of [quant, phase, offset, outset]</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>stop</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stops the player</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>player</b><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the current player (if the Pdef is simply used in other streams this is nil)</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>pause / resume / reset / mute / unmute</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>perform player method<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>isPlaying</b><span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns true if Pdef is running.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if a Pdef is playing and its stream ends, it will schedule a stream for playing<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>as soon as a new one is assigned to it.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><i>a) embedding EventPatternProxy in streams:</i></b></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s4">SynthDef</span>(<span class="s5">"Pdefhelp"</span>, { <span class="s4">arg</span> out, freq, sustain=1, amp=1, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">var</span> env, u=1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.03, sustain), 1, doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>5.do { <span class="s4">var</span> d; d = exprand(0.01, 1); u = <span class="s4">SinOsc</span>.ar(d * 300, u, rrand(0.1,1.2) * d, 1) };</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">Pan2</span>.ar(<span class="s4">SinOsc</span>.ar(u + 1 * freq, 0, amp * env), pan));</p>
-<p class="p2"><br></p>
-<p class="p4">}).store;</p>
-<p class="p4">)</p>
-<p class="p4">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p4">#a, b, c, m = { <span class="s4">EventPatternProxy</span>.new } ! 4;</p>
-<p class="p2"><br></p>
-<p class="p4">m.play;</p>
-<p class="p5"><span class="s6">m.source = </span><span class="s4">Pbind</span><span class="s6">(</span>\instrument<span class="s6">, </span>\Pdefhelp<span class="s6">, </span>\dur<span class="s6">, 1, </span>\degree<span class="s6">, 16, </span>\legato<span class="s6">, 0.1);</span></p>
-<p class="p2"><br></p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 5, 4, 3]));</p>
-<p class="p4">b.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.125, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[7, 8, 7, 8]));</p>
-<p class="p4">c.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 1, 2], 2));</p>
-<p class="p2"><br></p>
-<p class="p4">x = <span class="s4">Pseq</span>([a, b, c], <span class="s4">inf</span>).play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">c.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[4, 3, 1, 2]*3));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// infinite loops are scheduled (to ths clock's next beat by default) and released:</p>
-<p class="p2"><br></p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.753, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 5, 4, 3, 2], <span class="s4">inf</span>));</p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.125, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 5, 4, 3] + 1, 1));</p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 5, 4, 3] - 1, 1));</p>
-<p class="p2"><br></p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.125, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 5] - 1, 1));</p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.753, <span class="s7">\degree</span>, <span class="s4">Pshuf</span>(#[0, 5, 4, 3, 2], <span class="s4">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p4">x.stop;</p>
-<p class="p4">m.stop;</p>
-<p class="p2"><br></p>
-<p class="p6">// EventPatternProxy can be used in multiple patterns</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">x = <span class="s4">Ppar</span>([</p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s6">(</span>Pn<span class="s6">(a, </span>inf<span class="s6">),</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\gtranspose</span>, <span class="s4">Pstutter</span>(8, <span class="s4">Pseq</span>(#[0, 2, 0, 3],<span class="s4">inf</span>))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s6">(</span>Pn<span class="s6">(a, </span>inf<span class="s6">),</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\gtranspose</span>, <span class="s4">Pstutter</span>(8, <span class="s4">Pseq</span>(#[7, 4, 0, 3],<span class="s4">inf</span>)),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\dur</span>, 0.6</p>
-<p class="p4"><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s6">(</span>Pn<span class="s6">(a, </span>inf<span class="s6">),</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 5, 4, 3, 2, 3, 2], 1)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">]).play;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.1, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 1, 0, 1, 2], <span class="s4">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.2, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([0, 4], <span class="s4">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.2, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([0, 4, <span class="s4">Prand</span>([6, 8b],2)], <span class="s4">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p4">a.source = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\Pdefhelp</span>, <span class="s7">\dur</span>, 0.1, <span class="s7">\degree</span>, <span class="s4">Pseq</span>(#[0, 1b, 1, 2b, 2, 3, 4b, 4, 5], <span class="s4">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">a.set(</span><span class="s7">\detune</span><span class="s6">, -50); </span>// set environment</p>
-<p class="p4">a.set(<span class="s7">\detune</span>, 0);</p>
-<p class="p2"><br></p>
-<p class="p4">x.stop;</p>
-<p class="p2"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p1"><b><i>b) playing EventPatternProxy</i></b></p>
-<p class="p8"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">(</p>
-<p class="p6">// load a synthdef</p>
-<p class="p4">s.boot;</p>
-<p class="p7">SynthDef<span class="s6">(</span><span class="s5">"gpdef"</span><span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05, amp=0.1, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain), doneAction:2) * amp;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, Pan2.ar(<span class="s4">SinOsc</span>.ar(freq, 0, env), pan))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).store;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">#x, y = {<span class="s4">EventPatternProxy</span>.new} ! 2;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">x.play; </span>// play them. A silent resting pattern is used.</p>
-<p class="p4">y.play;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// assign various patterns to it:</p>
-<p class="p2"><br></p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, 5b, 6], <span class="s4">inf</span>), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, 5b, 6]+1, <span class="s4">inf</span>), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p4">y.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, 5b, 6]-1, <span class="s4">inf</span>), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p4">y.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, 5b]-2, <span class="s4">inf</span>), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p2"><br></p>
-<p class="p6">// using fadeTime:</p>
-<p class="p2"><br></p>
-<p class="p4">y.fadeTime = 8.0;</p>
-<p class="p4">y.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.125, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, 5b, 6]+4.rand, <span class="s4">inf</span>), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p4">y.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, 5b, 6]-2, <span class="s4">inf</span>), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\dur</span>, 1 / 6,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, <span class="s4">Prand</span>([8, 2, 3, 9, 10],1) - 5, 6]+1, <span class="s4">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s6">, </span>\gpdef</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4">)</p>
-<p class="p4">(</p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\dur</span>, 0.25,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, <span class="s4">Prand</span>([8, 2, 3, 9, 10],1), 6], <span class="s4">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s6">, </span>\gpdef<span class="s6">)</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4">)</p>
-<p class="p4">x.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// tempo change</p>
-<p class="p4"><span class="s4">TempoClock</span>.default.tempo = 1.3;</p>
-<p class="p4">y.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, 4, 5, 6]+1, <span class="s4">inf</span>), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p2"><br></p>
-<p class="p6">// drop in ending patterns</p>
-<p class="p2"><br></p>
-<p class="p4">x.play;</p>
-<p class="p4">x.fadeTime = <span class="s4">nil</span>;</p>
-<p class="p2"><br></p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, [7,4], 5, 6]-2), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.125, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, [7,4], 5, 4]-3), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.35, <span class="s7">\degree</span>, <span class="s4">Pseq</span>([3, [7,4], 5, 4, 3]-3), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p4">x.source = <span class="s4">Pbind</span>(<span class="s7">\dur</span>, 0.25, <span class="s7">\degree</span>, <span class="s4">Pshuf</span>([3, [7,4], 5, 6]-2), <span class="s7">\instrument</span>, <span class="s7">\gpdef</span>);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s4">TempoClock</span>.default.tempo = 1.0;</p>
-<p class="p4">x.stop;</p>
-<p class="p4">y.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/Fdef.html b/Help/Libraries/JITLib/Patterns/Fdef.html
deleted file mode 100644
index fc51433..0000000
--- a/Help/Libraries/JITLib/Patterns/Fdef.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco; color: #0000bf}
-span.s3 {text-decoration: underline ; color: #0000ee}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.s7 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Fdef</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>lazy function proxy</b></p>
-<p class="p2"><br></p>
-<p class="p1">Inherits from: <a href="../../../Core/Object.html"><span class="s3">Object</span></a> : <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s3">AbstractFunction</span></a> : <a href="../../../Core/Ref.html"><span class="s3">Ref</span></a> : <a href="../environments/Maybe.html"><span class="s4">Maybe</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Placeholder for functions to calculate with.</p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="SC://Maybe"><span class="s4">Maybe</span></a><span class="s4">.</span></p>
-<p class="p3"><span class="s5">Related:</span><span class="s4"> <a href="Pdef.html"><span class="s3">Pdef</span></a>, <a href="Tdef.html"><span class="s3">Tdef</span></a>, <a href="Pdefn.html"><span class="s3">Pdefn</span></a>, <a href="../nodeproxy/Ndef.html"><span class="s3">Ndef</span></a></span></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s4">JITLib</span></a></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>Fdef(name, func)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>Fdef(name)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>if no instance exists with this <b>name</b>, create a new one, otherwise return the existing one.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>func</b> is given, replace the old func with the new one.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8"><br></p>
-<p class="p9">// example</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\x</span>, { 8 + 9 });</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\y</span>, <span class="s4">Fdef</span>(<span class="s6">\x</span>) - 3);</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\y</span>).value;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\x</span>, 3);</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\y</span>).value;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\x</span>, { <span class="s4">|x=0|</span> x });</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\x</span>).value(8);</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\y</span>).value(8);</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11">z = <span class="s4">Fdef</span>(<span class="s6">\x</span>) * <span class="s4">Fdef</span>(<span class="s6">\y</span>) + { 1.0.rand };</p>
-<p class="p10"><br></p>
-<p class="p11">z.value;</p>
-<p class="p11">z.value(400);</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p9">// sound example</p>
-<p class="p11">(</p>
-<p class="p11">s.boot;</p>
-<p class="p12">SynthDef<span class="s5">(</span><span class="s7">"gpdef"</span><span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05, amp=0.1;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain), doneAction:2) * amp;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p9">// fork a thread that plays some sounds</p>
-<p class="p11">(</p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\freq</span>, 440);</p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\dur</span>, 0.2);</p>
-<p class="p10"><br></p>
-<p class="p11">fork {</p>
-<p class="p11"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s7">"/s_new"</span>, <span class="s7">"gpdef"</span>, -1, 1,1, <span class="s6">\freq</span>, <span class="s4">Fdef</span>(<span class="s6">\freq</span>).value);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Fdef</span>(<span class="s6">\dur</span>).value.wait;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11">};</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p9">// some modifications</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\freq</span>, <span class="s4">Fdef</span>(<span class="s6">\midinote</span>, 60).midicps);</p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\midinote</span>, { [67, 64, 65].choose });</p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\midinote</span>, { [67, 64, 65].choose } + <span class="s4">Fdef</span>(<span class="s6">\offset</span>));</p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\offset</span>, { 4.rand });</p>
-<p class="p11"><span class="s4">Fdef</span>(<span class="s6">\dur</span>, 0.23);</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/PatternProxy.html b/Help/Libraries/JITLib/Patterns/PatternProxy.html
deleted file mode 100644
index 68e6c3d..0000000
--- a/Help/Libraries/JITLib/Patterns/PatternProxy.html
+++ /dev/null
@@ -1,159 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #001bb9}
-span.s4 {color: #0000ff}
-span.s5 {color: #606060}
-span.s6 {color: #000000}
-span.s7 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PatternProxy<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>stream reference</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">keeps a reference to a stream that can be replaced while playing.</p>
-<p class="p1">Multiple streams are thus handled without creating dependancies.</p>
-<p class="p3"><br></p>
-<p class="p1">related: <a href="Pdefn.html"><span class="s3">Pdefn</span></a></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(source)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a new instance with a pattern (the source).</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the pattern should be a <i>value pattern</i> (see <b>Pdefn</b>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for event pattern proxy, see: <a href="EventPatternProxy.html"><span class="s4">EventPatternProxy</span></a></p>
-<p class="p1"><i><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></i>instead of a pattern, a <b>function</b> can be passed in, creating a routine.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*default</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a default source, if none is given. the default is 1.0 (it is not 0.0 in order to make it safe for durations)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>source_(obj)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the source. If a quantization is given, schedule this change to the next beat</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>clear</b><span class="Apple-tab-span">	</span>set the source to nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>quant_</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the quantization value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>quant</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get the quantization value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*defaultQuant_</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the default quantization value for the class. (default: nil)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>condition_(func)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>provide a condition under which the pattern is switched when a new one is inserted.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the stream value and a count is passed into the function</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the methods <b>count_(n) </b>simply counts up to n and switches the pattern then</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>reset</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>switch the pattern immediately. (stuck conditions can be subverted by this)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>embedInStream(inval)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>just like any pattern, embeds itself in stream</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>PatternProxy implements some methods for the benefits of its subclasses Pdefn/Pdef/Tdef which</p>
-<p class="p1"><span class="Apple-tab-span">	</span>are not useful for PatternProxy, EventStreamProxy and TaskProxy.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>envir_(event)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>provide a default environment for the proxy.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If given,<span class="Apple-converted-space">  </span>it is used as an environment for the routine<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>function. When set for the first time, the routine pattern is rebuilt.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>set(key, val, key2, val2, ...)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set arguments in the environment.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If there is none, it is created and the pattern is rebuilt.</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>endless</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a Proutine that plays the proxy endlessly, replacing <b>nil</b> with a <b>default</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value (1). This allows to create streams that idle on until a new pattern is inserted.</p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s3">PatternProxy</span>(<span class="s3">Pseq</span>([1, 2, 3], <span class="s3">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p5">x = <span class="s3">Pseq</span>([0, 0, a], <span class="s3">inf</span>).asStream;</p>
-<p class="p2"><br></p>
-<p class="p5">t = <span class="s3">Task</span>({ loop({ x.next.postln; 0.3.wait }) }).play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">a.source = <span class="s3">Pseq</span>([55, 66, 77], <span class="s3">inf</span>);</p>
-<p class="p5">a.source = <span class="s3">Pseq</span>([55, 66, 77], 1);</p>
-<p class="p2"><br></p>
-<p class="p5">t.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// PatternProxy, like Pdefn can be accessed in multiple streams</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">"Pdefhelp"</span>, { <span class="s3">arg</span> out, freq, sustain=1, amp=1, pan;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> env, u=1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.03, sustain), 1, doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>5.do { <span class="s3">var</span> d; d = exprand(0.01, 1); u = <span class="s3">SinOsc</span>.ar(d * 300, u, rrand(0.1,1.2) * d, 1) };</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">Pan2</span>.ar(<span class="s3">SinOsc</span>.ar(u + 1 * freq, 0, amp * env), pan));</p>
-<p class="p2"><br></p>
-<p class="p5">}).store;</p>
-<p class="p5">s.boot;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s6">x = </span>PatternProxy<span class="s6">.new;</span></p>
-<p class="p5">x.source = <span class="s3">Pseq</span>([0, 3, 2], <span class="s3">inf</span>);</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s3">Pset</span><span class="s6">(</span>\instrument<span class="s6">, </span>\Pdefhelp<span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>Ppar<span class="s6">([</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Pbind</span>(<span class="s7">\degree</span>, x),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Pbind</span>(<span class="s7">\degree</span>, x, <span class="s7">\dur</span>, 1/3)</p>
-<p class="p5">])</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">x.source = <span class="s3">Prand</span>([0, 3, [1s, 4]], <span class="s3">inf</span>);</p>
-<p class="p2"><br></p>
-<p class="p5">x.source = <span class="s3">Pn</span>(<span class="s3">Pshuf</span>([0, 3, 2, 7, 6], 2), <span class="s3">inf</span>);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// if quant is set, the update is done at the next beat or whatever is specified:</p>
-<p class="p2"><br></p>
-<p class="p5">x.quant = 4;</p>
-<p class="p5">x.source = <span class="s3">Pn</span>(<span class="s3">Pseries</span>(0, 1, 8), <span class="s3">inf</span>);</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s6">x.quant = </span><span class="s3">nil</span><span class="s6">; </span>// reactivate immediacy</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">x.source = <span class="s3">Prout</span> {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>4.do { <span class="s3">|i|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[2, 3, 4].choose.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[5, 0, 11].choose.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[6, 3, 4].choose.do { <span class="s3">|j|</span> (i % j).yield };</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/PbindProxy.html b/Help/Libraries/JITLib/Patterns/PbindProxy.html
deleted file mode 100644
index 4c59f2b..0000000
--- a/Help/Libraries/JITLib/Patterns/PbindProxy.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #326e17}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #326e17}
-span.s4 {color: #0019b7}
-span.s5 {color: #5f5f5f}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PbindProxy</b></span><span class="s2"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>incremental event pattern reference</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">keeps a reference to a Pbind in which single keys can be replaced.</p>
-<p class="p1">It plays on when the old stream ended and a new stream is set and schedules the changes to the beat.</p>
-<p class="p2"><br></p>
-<p class="p1">related [<b>Pbindef</b>][<b>Pdef</b>]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(key1, pattern1, key2, pattern2, ... )</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a new instance of PbindProxy with the given patternpairs</p>
-<p class="p2"><br></p>
-<p class="p1"><b>source</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns the wrapper for the Pbind</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>set(key1, pattern1, key2, pattern2, ... )</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the given patternpairs.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>at(key)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return a pattern at that key. this can be used to set quant value individually,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>so different elementary patterns can be quantized differently.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x.at(<span class="s3">\freq</span>).quant = 2;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>quant_(val)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the quant of all elementary patterns</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>quant</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the quant value of the source pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// example:</p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s4">SynthDef</span>(<span class="s5">"Pdefhelp"</span>, { <span class="s4">arg</span> out, freq, sustain=1, amp=1, pan;</p>
-<p class="p3"><span class="s4">var</span> env, u=1;</p>
-<p class="p3">env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.03, sustain), 1, doneAction:2);</p>
-<p class="p3">5.do { <span class="s4">var</span> d; d = exprand(0.01, 1); u = <span class="s4">SinOsc</span>.ar(d * 300, u, rrand(0.1,1.2) * d, 1) };</p>
-<p class="p3"><span class="s4">Out</span>.ar(out, <span class="s4">Pan2</span>.ar(<span class="s4">SinOsc</span>.ar(u + 1 * freq, 0, amp * env), pan));</p>
-<p class="p4"><br></p>
-<p class="p3">}).store;</p>
-<p class="p3">)</p>
-<p class="p3">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s6">x = </span>PbindProxy<span class="s6">.new;</span></p>
-<p class="p8"><span class="s6">x.set(</span>\instrument<span class="s6">, </span>\Pdefhelp<span class="s6">);</span></p>
-<p class="p4"><br></p>
-<p class="p3">x.play;</p>
-<p class="p4"><br></p>
-<p class="p3">x.set(<span class="s3">\degree</span>, <span class="s4">Pseq</span>([0, 2, 5b, 1b], <span class="s4">inf</span>));</p>
-<p class="p3">x.set(<span class="s3">\dur</span>, 0.1);</p>
-<p class="p3">x.set(<span class="s3">\degree</span>, <span class="s4">Pseq</span>([1b, 5, 3, 1b, 6, 2, 5, 0, 3, 0, 2], <span class="s4">inf</span>));</p>
-<p class="p3">x.set(<span class="s3">\legato</span>, <span class="s4">Prand</span>([1.0, 2.4, 0.2], <span class="s4">inf</span>), <span class="s3">\mtranspose</span>, -3);</p>
-<p class="p5"><span class="s6">x.set(</span><span class="s3">\mtranspose</span><span class="s6">, </span><span class="s4">nil</span><span class="s6">); </span>// remove key</p>
-<p class="p6"><br></p>
-<p class="p3">x.set(<span class="s3">\degree</span>, <span class="s4">Pseq</span>([1, 2, 3, 4, 5, 6], 1));</p>
-<p class="p3">x.play;</p>
-<p class="p4"><br></p>
-<p class="p3">x.set( <span class="s3">\degree</span>, <span class="s4">Pseq</span>([1, 2, 3, 4, 5, 6], 3), <span class="s3">\dur</span>, 0.02);</p>
-<p class="p3">x.play;</p>
-<p class="p4"><br></p>
-<p class="p3">x.set(<span class="s3">\degree</span>, <span class="s4">Pseq</span>([1, 2, 3, 4, 5, 6], 3), <span class="s3">\dur</span>, 0.1);</p>
-<p class="p3">x.play;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// embed in other patterns:</p>
-<p class="p5">(</p>
-<p class="p3">x.set(<span class="s3">\degree</span>, <span class="s4">Pseq</span>([1b, 5, 3, 1b, 6, 2, 5, 0, 3, 0, 2], <span class="s4">inf</span>));</p>
-<p class="p7">Ppar<span class="s6">([</span></p>
-<p class="p3">x,</p>
-<p class="p8"><span class="s4">Pbindf</span><span class="s6">(x, </span>\ctranspose<span class="s6">, 4)</span></p>
-<p class="p3">]).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">x.set(<span class="s3">\degree</span>, <span class="s4">Pseq</span>([1b, 5, 1b, 4, 0], <span class="s4">inf</span>), <span class="s3">\dur</span>, 0.4);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/Pbindef.html b/Help/Libraries/JITLib/Patterns/Pbindef.html
deleted file mode 100644
index ce1937b..0000000
--- a/Help/Libraries/JITLib/Patterns/Pbindef.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0024f8}
-span.s4 {color: #0000ff}
-span.s5 {color: #001bb9}
-span.s6 {color: #606060}
-span.s7 {color: #000000}
-span.s8 {color: #2c7014}
-span.s9 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pbindef</b></span><span class="s2"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>incremental event pattern reference definition</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pdef</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Pbindef keeps a reference to a Pbind in which single keys can be replaced, combining <a href="PbindProxy.html"><span class="s3">PbindProxy</span></a> and <a href="Pdef.html"><span class="s3">Pdef</span></a><span class="s3">.</span></p>
-<p class="p1">It plays on when the old stream ended and a new stream is set and schedules the changes to the beat.</p>
-<p class="p2"><br></p>
-<p class="p1">the difference to Pdef is that it allows to incrementally change the elementary patterns (patternpairs)</p>
-<p class="p1">of a Pbind - also of an already existing Pbind inside a Pdef.</p>
-<p class="p2"><br></p>
-<p class="p1">Pbindef inherits most methods from <a href="Pdef.html"><span class="s3">Pdef</span></a><span class="s3">.</span></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s4">JITLib</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(key, paramKey1, pattern1, ... )</b></p>
-<p class="p2"><br></p>
-<p class="p1">store the pattern in the global dictionary of <b>Pdef</b> under key.</p>
-<p class="p1">(if there is already a Pdef there, replace its pattern with the new one. If there is already a <b>Pbindef</b> there, set the parameters only, or add a new one (the whole pattern is replaced).</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(key)</b></p>
-<p class="p2"><br></p>
-<p class="p1">acess the pattern at that key (if none is there, a default pattern is created)</p>
-<p class="p1">see <a href="Pdef.html"><span class="s3">Pdef</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">// example:</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s5">SynthDef</span>(<span class="s6">"Pdefhelp"</span>, { <span class="s5">arg</span> out, freq, sustain=1, amp=1, pan;</p>
-<p class="p5"><span class="s5">var</span> env, u=1;</p>
-<p class="p5">env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0.01, sustain), 1, doneAction:2);</p>
-<p class="p5">5.do { <span class="s5">var</span> d; d = exprand(0.01, 1); u = <span class="s5">SinOsc</span>.ar(d * 300, u, rrand(0.1,1.2) * d, 1) };</p>
-<p class="p5"><span class="s5">Out</span>.ar(out, <span class="s5">Pan2</span>.ar(<span class="s5">SinOsc</span>.ar(u + 1 * freq, 0, amp * env), pan));</p>
-<p class="p4"><br></p>
-<p class="p5">}).store;</p>
-<p class="p5">)</p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s5">Pbindef</span><span class="s7">(</span>\a<span class="s7">, </span>\instrument<span class="s7">, </span>\Pdefhelp<span class="s7">).play;</span></p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([0, 2, 5b, 1b], <span class="s5">inf</span>));</p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\dur</span>, 0.1);</p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([1b, 5, 3, 1b, 6, 2, 5, 0, 3, 0, 2], <span class="s5">inf</span>));</p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\legato</span>, <span class="s5">Prand</span>([1.0, 2.4, 0.2], <span class="s5">inf</span>), <span class="s8">\mtranspose</span>, -3);</p>
-<p class="p6"><span class="s5">Pbindef</span><span class="s7">(</span>\a<span class="s7">, </span>\mtranspose<span class="s7">, </span><span class="s5">nil</span><span class="s7">); </span><span class="s9">// remove key</span></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3, 4, 5, 6], 1));</p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3, 4, 5, 6], 3), <span class="s8">\dur</span>, 0.02);</p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3, 4, 5, 6], 3), <span class="s8">\dur</span>, 0.1);</p>
-<p class="p4"><br></p>
-<p class="p3">// apart from this Pbindef behaves like Pdef:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>).quant = 0.0;</p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3, 4, 5, 6], 1));</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>).stop;</p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\a</span>, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3, 4, 5, 6], 1)); <span class="s9">// does not resume now</span></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s5">Pbindef</span><span class="s7">(</span><span class="s8">\a</span><span class="s7">).playOnce; </span>// play single instance</p>
-<p class="p3"><span class="s5">Pseq</span><span class="s7">([</span><span class="s5">Pbindef</span><span class="s7">(</span><span class="s8">\a</span><span class="s7">), </span><span class="s5">Pdef</span><span class="s7">(</span><span class="s8">\a</span><span class="s7">)]).play; </span>// same here (Pdef(\a) is the same pattern as Pbindef))</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s5">Pbindef</span><span class="s7">(</span><span class="s8">\a</span><span class="s7">) === </span><span class="s5">Pdef</span><span class="s7">(</span><span class="s8">\a</span><span class="s7">) </span>// identical.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">// an already existing Pdef can be incrementally changed</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s5">Pdef</span><span class="s7">(</span>\x<span class="s7">, </span><span class="s5">Pbind</span><span class="s7">(</span>\instrument<span class="s7">, </span>\Pdefhelp<span class="s7">, </span>\dur<span class="s7">, 0.3));</span></p>
-<p class="p5"><span class="s5">Pdef</span>(<span class="s8">\x</span>).play;</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\x</span>, <span class="s8">\degree</span>, 7.rand);</p>
-<p class="p5"><span class="s5">Pbindef</span>(<span class="s8">\x</span>, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([0, 7, 3, 7, 4], <span class="s5">inf</span>), <span class="s8">\dur</span>, <span class="s5">Pn</span>(<span class="s5">Pseries</span>(0.2, -0.02, 10)));</p>
-<p class="p6"><span class="s5">Pbindef</span><span class="s7">(</span>\x<span class="s7">, </span>\stretch<span class="s7">, 2);</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/Pdef.html b/Help/Libraries/JITLib/Patterns/Pdef.html
deleted file mode 100644
index b281cdb..0000000
--- a/Help/Libraries/JITLib/Patterns/Pdef.html
+++ /dev/null
@@ -1,454 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000ee}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {text-decoration: underline ; color: #0000bf}
-span.s7 {color: #1034f0}
-span.s8 {color: #007300}
-span.s9 {color: #bf0000}
-span.s10 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pdef<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>stream reference definition</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from:<span class="Apple-converted-space"> </span></b> <a href="../../../Core/Object.html"><span class="s4">Object</span></a> : <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4">AbstractFunction</span></a> : <a href="../../../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s4">Pattern</span></a> : <a href="PatternProxy.html"><span class="s4">PatternProxy</span></a> : <a href="TaskProxy.html"><span class="s4">TaskProxy</span></a> : <a href="EventPatternProxy.html"><span class="s4">EventPatternProxy</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">Pdef is a class that provides an interface to its superclass <a href="EventPatternProxy.html"><span class="s5">EventPatternProxy</span></a>, keeping a reference to a stream that can be replaced while playing. One pattern may be used in many streams in different places. A change in the pattern definition propagates through all streams.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Pdef(key)</b> returns the instance<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>Pdef(key, pat)</b> stores the pattern and returns the instance, like <a href="Tdef.html"><span class="s5">Tdef</span></a> and <a href="../nodeproxy/Ndef.html"><span class="s5">Ndef</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p1">It can be used to store event Patterns globally. Changes in this global library have immediate effect.</p>
-<p class="p4"><br></p>
-<p class="p1">For <b>non-event patterns</b> <a href="Pdefn.html"><span class="s6">Pdefn</span></a> is used instead.</p>
-<p class="p5">For another use of Pdef see also <a href="../tutorials/recursive_phrasing.html"><span class="s5">recursive_phrasing</span></a></p>
-<p class="p1">Graphical overview over all current Pdefs: <a href="../extras/PdefAllGui.html"><span class="s5">PdefAllGui</span></a></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s7">JITLib</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><b>First Example</b></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\note</span>, <span class="s5">Pbrown</span>(0, 6, 0.1, <span class="s5">inf</span>)));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Pdef</span>(<span class="s8">\x</span>).quant = 0; <span class="s9">// no waiting.</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Pbindf</span>(<span class="s5">Pdef</span>(<span class="s8">\x</span>), <span class="s8">\dur</span>, 0.03).play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Pbindf</span>(<span class="s5">Pdef</span>(<span class="s8">\x</span>), <span class="s8">\dur</span>, 0.1, <span class="s8">\ctranspose</span>, 15).play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Pbindf</span>(<span class="s5">Pdef</span>(<span class="s8">\x</span>), <span class="s8">\dur</span>, 0.3, <span class="s8">\ctranspose</span>, 2).play;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// now change the definition</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\note</span>, <span class="s5">Pseq</span>([0, 3, 5, 7, 9, 11], <span class="s5">inf</span>)));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\freq</span>, <span class="s5">Pseq</span>([1000, 1923, 245.2, 1718] / 1.2 + 0.1, <span class="s5">inf</span>)));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p9"><b>Creation / Class Methods</b></p>
-<p class="p10"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*new(key, pattern)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Store the pattern in a global dictionary under key, replacing its pattern with the new one.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the pattern is a <b>function</b>, Pdef creates a <a href="../../../Streams-Patterns-Events/Patterns/PlazyEnvir.html"><span class="s5">PlazyEnvir</span></a> internall that dynamically creates the pattern returned from the function, applying the arguments from the inevent.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*new(key)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Access the pattern at that key (if none is given, a default silent event is created)</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*default</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default source, if none is given. The default is an Event.silent of 1.0 beat duration.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*removeAll</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Remove all proxies from the global dictionary (*<b>all</b>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*clear</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Clear all proxies, setting their source to silence.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*all</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>*all_(envir)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return the environment (<a href="../../../Collections/IdentityDictionary.html"><span class="s5">IdentityDictionary</span></a>) that stores all Pdefs.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Changing the definition / setting the source</b></p>
-<p class="p1">One pattern may have many streams in different places. A change in the pattern definition Pdef propagates through all streams. The change does not have to be immediate - there is a scheme to schedule when the change becomes effective: a <b>quant</b> and <b>clock</b> (like elsewhere) and a <b>condition</b>.</p>
-<p class="p10"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>quant_(beats)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the quantisation time for beat accurate scheduling.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>quant can be an array <b>[quant, phase, timingOffset, outset]</b>, or just <b>[quant, phase] </b>etc.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>*<b>defaultQuant_(beats)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the default quantisation for new instances (default: 1.0)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This can be an array<span class="Apple-converted-space">  </span>[quant, phase, timingOffset, outset]</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>condition_(func)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Provide a condition under which the pattern is switched when a new one is inserted.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The stream value and a count value is passed into the function.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>count(n)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and update condition that simply counts up to n and switches the pattern then</p>
-<p class="p10"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>reset</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Switch the pattern immediately (stuck conditions can be subverted by this).</p>
-<p class="p10"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>fadeTime_(beats)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>When the synthdefs that are used contain an \amp control, the patterns are replaced by crossfading the previous with the new over this time (in beats)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>envir_(event)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the event for the Pdef. It is used to filter the incoming stream before it is<span class="Apple-converted-space">  </span>passed to the source pattern.<span class="Apple-converted-space">  </span>This is similar to <a href="../nodeproxy/NodeProxy.html"><span class="s5">NodeProxy</span></a>-nodeMap. When set for the first time, the pattern is rebuilt.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>set(key, val, key2, val2, ...)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set arguments in the default event. If there is none, it is created and the pattern is rebuilt.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>map(key, pdefKey, key, pdefKey ...)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Map Pdefn to the keys in the event.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>clear</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the source to nil</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>endless</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a Prout that plays the proxy endlessly, replacing <b>nil</b> with a <b>default</b> value (silent event). This allows to create streams that idle on until a new pattern is inserted.</p>
-<p class="p10"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p9"><b>Pdef as stream reference</b></p>
-<p class="p1">A single Pdef may serve as a definition for multiple streams. These methods show how to fork off separate streams from one instance. Even if they run in different contexts, their definition may still be changed.<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>fork(clock, quant, event)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Play an independent stream in parallel.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>quant </b>can be an array of [quant, phase, offset], or a <a href="../../../Scheduling/Quant.html"><span class="s5">Quant</span></a> value.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>embed(val)</b><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pass a value (typically an <b>event</b>) into the pattern inval, and embed the Pdef in the stream.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>embedInStream(inval)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>just like any pattern, embeds itself in stream</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p9"><b>Pdef as EventStreamPlayer</b></p>
-<p class="p1">For live coding, each Pdef also may control one instance that plays one stream off it. This is an EventStreamPlayer, accessible in the instance variable <b>player</b>.</p>
-<p class="p10"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>play(clock, protoEvent, quant)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Starts the Pdef and creates a player.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>quant </b>can be an array of [quant, phase, offset] or a <a href="../../../Scheduling/Quant.html"><span class="s5">Quant</span></a> value.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>stop</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Stops the player</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>player</b><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the current player (if the Pdef is simply used in other streams this is nil)</p>
-<p class="p10"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>pause / resume / reset / mute / unmute</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Perform this method on the player.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>isPlaying</b><span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns true if player is running. If a Pdef is playing and its stream ends, it will schedule a stream for playing<b> as soon as a new one is assigned to it</b>. If it is stopped by <b>stop</b>, it won't.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p10"><br></p>
-<p class="p9"><b>Example: Pdef as stream reference</b></p>
-<p class="p10"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">SynthDef</span>(<span class="s10">"Pdefhelp"</span>, { <span class="s5">arg</span> out, freq, sustain=1, amp=1, pan;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> env, u=1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0.03, sustain), 1, doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>3.do { <span class="s5">var</span> d; d = exprand(0.01, 1); u = <span class="s5">SinOsc</span>.ar(d * 300, u, rrand(0.1,1.2) * d, 1) };</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">Pan2</span>.ar(<span class="s5">SinOsc</span>.ar(u + 1 * freq, 0, amp * env), pan));</p>
-<p class="p2"><br></p>
-<p class="p7">}).store;</p>
-<p class="p7">)</p>
-<p class="p7">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s5">Pdef</span><span class="s3">(</span>\metronom<span class="s3">, </span><span class="s5">Pbind</span><span class="s3">(</span>\instrument<span class="s3">, </span>\Pdefhelp<span class="s3">, </span>\dur<span class="s3">, 1, </span>\degree<span class="s3">, 16, </span>\legato<span class="s3">, 0.1)).play;</span></p>
-<p class="p2"><br></p>
-<p class="p7">x = <span class="s5">Pseq</span>([<span class="s5">Pdef</span>(<span class="s8">\a</span>), <span class="s5">Pdef</span>(<span class="s8">\b</span>), <span class="s5">Pdef</span>(<span class="s8">\c</span>)], <span class="s5">inf</span>).play;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 5, 4, 3])));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\b</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.125, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[7, 8, 7, 8])));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\c</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 1, 2], 2)));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\c</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[4, 3, 1, 2]*3)));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">// infinite loops are scheduled (to ths clock's next beat by default) and released:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.753, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 5, 4, 3, 2], <span class="s5">inf</span>)));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.125, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 5, 4, 3] + 1, 1)));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 5, 4, 3] - 4, 1)));</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.125, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 5] - 1, 1)));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.753, <span class="s8">\degree</span>, <span class="s5">Pshuf</span>(#[0, 5, 4, 3, 2], <span class="s5">inf</span>)));</p>
-<p class="p2"><br></p>
-<p class="p7">x.stop;</p>
-<p class="p12"><span class="s5">Pdef</span><span class="s3">(</span>\metronom<span class="s3">).stop;</span></p>
-<p class="p2"><br></p>
-<p class="p8">// Pdef can be used in multiple patterns:</p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p7">x = <span class="s5">Ppar</span>([</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s3">(</span>Pn<span class="s3">(</span>Pdef<span class="s3">(</span><span class="s8">\a</span><span class="s3">), </span>inf<span class="s3">),</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\gtranspose</span>, <span class="s5">Pstutter</span>(8, <span class="s5">Pseq</span>(#[0, 2, 0, 3],<span class="s5">inf</span>))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>),</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s3">(</span>Pn<span class="s3">(</span>Pdef<span class="s3">(</span><span class="s8">\a</span><span class="s3">), </span>inf<span class="s3">),</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\gtranspose</span>, <span class="s5">Pstutter</span>(8, <span class="s5">Pseq</span>(#[7, 4, 0, 3],<span class="s5">inf</span>)),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, 0.6</p>
-<p class="p7"><span class="Apple-tab-span">	</span>),</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s3">(</span>Pn<span class="s3">(</span>Pdef<span class="s3">(</span><span class="s8">\a</span><span class="s3">), </span>inf<span class="s3">),</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 5, 4, 3, 2, 3, 2], 1)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">]).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.1, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 1, 0, 1, 2], <span class="s5">inf</span>)));</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s5">Pdef</span><span class="s3">(</span>\a<span class="s3">, </span><span class="s5">Pbind</span><span class="s3">(</span>\instrument<span class="s3">, </span>\Pdefhelp<span class="s3">, </span>\dur<span class="s3">, 0.2, </span>\degree<span class="s3">, </span><span class="s5">Pseq</span><span class="s3">([0, 4], </span><span class="s5">inf</span><span class="s3">)));</span></p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s5">Pdef</span><span class="s3">(</span>\a<span class="s3">, </span><span class="s5">Pbind</span><span class="s3">(</span>\instrument<span class="s3">, </span>\Pdefhelp<span class="s3">, </span>\dur<span class="s3">, 1, </span>\degree<span class="s3">, </span><span class="s5">Pseq</span><span class="s3">([0, 4], </span><span class="s5">inf</span><span class="s3">)));</span></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.2, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([0, 4, <span class="s5">Prand</span>([6, 8b],2)], <span class="s5">inf</span>)));</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.1, <span class="s8">\degree</span>, <span class="s5">Pseq</span>(#[0, 1b, 1, 2b, 2, 3, 4b, 4, 5], <span class="s5">inf</span>)));</p>
-<p class="p2"><br></p>
-<p class="p8">// using a fade time, the above changes are crossfaded</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>).fadeTime = 2;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>, <span class="s5">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\Pdefhelp</span>, <span class="s8">\dur</span>, 0.2, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([0, 4, <span class="s5">Prand</span>([6, 8b],2)], <span class="s5">inf</span>)));</p>
-<p class="p2"><br></p>
-<p class="p8">// ...</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5">Pdef</span><span class="s3">(</span><span class="s8">\a</span><span class="s3">).set(</span><span class="s8">\detune</span><span class="s3">, -50); </span>// set environment</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\a</span>).set(<span class="s8">\detune</span>, 0);</p>
-<p class="p2"><br></p>
-<p class="p7">x.stop;</p>
-<p class="p2"><br></p>
-<p class="p14"><br></p>
-<p class="p9"><b>Example: Pdef as EventStreamPlayer</b></p>
-<p class="p15"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7">(</p>
-<p class="p8">// load a synthdef</p>
-<p class="p7">s.boot;</p>
-<p class="p13">SynthDef<span class="s3">(</span><span class="s10">"gpdef"</span><span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out=0, freq=440, sustain=0.05, amp=0.1, pan;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> env;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0.01, sustain), doneAction:2) * amp;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">Pan2</span>.ar(<span class="s5">SinOsc</span>.ar(freq, 0, env), pan))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).store;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5">Pdef</span><span class="s3">(</span><span class="s8">\x</span><span class="s3">); </span>// creates a Pdef with a default pattern.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5">Pdef</span><span class="s3">(</span><span class="s8">\x</span><span class="s3">).play; </span>// play it. A silent resting pattern is used.</p>
-<p class="p8"><span class="s5">Pdef</span><span class="s3">(</span><span class="s8">\y</span><span class="s3">).play; </span>// play a second one (automatically instantiated)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">// assign various patterns to it:</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s5">Pdef</span><span class="s3">(</span>\x<span class="s3">, </span><span class="s5">Pbind</span><span class="s3">(</span>\dur<span class="s3">, 0.25, </span>\instrument<span class="s3">, </span>\gpdef<span class="s3">));<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, 5b, 6], <span class="s5">inf</span>), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, 5b, 6]+1, <span class="s5">inf</span>), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, 5b, 6]-1, <span class="s5">inf</span>), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, 5b]-2, <span class="s5">inf</span>), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p2"><br></p>
-<p class="p8">// using fadeTime:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>).fadeTime = 8.0;</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.125, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, 5b, 6]+4.rand, <span class="s5">inf</span>), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, 5b, 6]-2, <span class="s5">inf</span>), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p13">Pdef<span class="s3">(</span><span class="s8">\x</span><span class="s3">, </span>Pbind<span class="s3">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, 1 / 6,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, <span class="s5">Prand</span>([8, 2, 3, 9, 10],1) - 5, 6]+1, <span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\gpdef</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>);</p>
-<p class="p7">)</p>
-<p class="p7">(</p>
-<p class="p13">Pdef<span class="s3">(</span><span class="s8">\x</span><span class="s3">, </span>Pbind<span class="s3">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, 0.25,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, <span class="s5">Prand</span>([8, 2, 3, 9, 10],1), 6], <span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\gpdef<span class="s3">)</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>);</p>
-<p class="p7">)</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).stop;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).play;</p>
-<p class="p2"><br></p>
-<p class="p8">// tempo change</p>
-<p class="p7"><span class="s5">TempoClock</span>.default.tempo = 1.3;</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, 4, 5, 6]+1, <span class="s5">inf</span>), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p2"><br></p>
-<p class="p8">// drop in ending patterns</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, [7,4], 5, 6]-2), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.125, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, [7,4], 5, 4]-3), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.35, <span class="s8">\degree</span>, <span class="s5">Pseq</span>([3, [7,4], 5, 4, 3]-3), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\dur</span>, 0.25, <span class="s8">\degree</span>, <span class="s5">Pshuf</span>([3, [7,4], 5, 6]-2), <span class="s8">\instrument</span>, <span class="s8">\gpdef</span>));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">// clear all.</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).clear;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>).clear;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s5">TempoClock</span>.default.tempo = 1.0;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">// GUI example: see also<span class="Apple-converted-space"> </span></p>
-<p class="p16"><span class="s4"><a href="../extras/PdefAllGui.html">PdefAllGui</a></span><span class="s3">(18);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Example: Recursion</b></p>
-<p class="p4"><br></p>
-<p class="p1">Pdefs can be used recursively under the condition that the stream call structure allows it.</p>
-<p class="p1">a structure like the following works:</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s5">Pdef</span><span class="s3">(</span>\x<span class="s3">, </span><span class="s5">Pseq</span><span class="s3">([</span><span class="s5">Pbind</span><span class="s3">(</span>\instrument<span class="s3">, </span>\gpdef<span class="s3">), </span><span class="s5">Pdef</span><span class="s3">(</span>\x<span class="s3">)], </span><span class="s5">inf</span><span class="s3">));<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).play;</p>
-<p class="p4"><br></p>
-<p class="p1">but the following would crash, because .embedInStream is called recursively with no limit:</p>
-<p class="p4"><br></p>
-<p class="p8">// Pdef(\y, Pseq([Pdef(\y), Pbind(\instrument, \gpdef)], inf));</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p9"><b>Example: Quantizing and outset</b></p>
-<p class="p4"><br></p>
-<p class="p1">When quantizing to a larger number of beats, the changes become very slow if one has to wait for the next beat. Providing an <b>outset</b> quant value is a way to make the change so that it appears as if it had been done at the previous grid point already. The stream is fast forwarded to the current position relative to the quant grid.</p>
-<p class="p1">Providing a number larger than zero, the next possible quant point is used as outset.</p>
-<p class="p4"><br></p>
-<p class="p1">For example, if quant is 32, and one has just missed the first beat when changing the pattern,</p>
-<p class="p1">one has to wait for 32 beats until the change happens. Using an outset of 1, it is assumed that you had already</p>
-<p class="p1">changed the pattern at the first beat, the stream is fast forwarded to the time it would be at now if you had done so. The new pattern is inserted at the next beat (outset=1).</p>
-<p class="p4"><br></p>
-<p class="p1"><b>quant can be: [quant, phase, timingOffset, outset]</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Note:</b> This fast forwarding might create a cpu peak if the pattern is very complex/fast or</p>
-<p class="p1">quant is very long. This is hard to avoid, so it simply has to be taken into account.</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p8">// examples</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).quant_([8, 0, 0, 1]);</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>).quant_([8, 0.5, 0, 1]); <span class="s9">// phase: half a beat</span></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).play;</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7)+2, <span class="s5">inf</span>)));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7)-2, <span class="s5">inf</span>)));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7)+2, <span class="s5">inf</span>), <span class="s8">\dur</span>, 0.5));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7).scramble-2, <span class="s5">inf</span>), <span class="s8">\dur</span>, 0.25, <span class="s8">\legato</span>, 0.3));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7), <span class="s5">inf</span>)));</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>([ 1, 5, 6, 7, 0, 3, 2, 4 ], <span class="s5">inf</span>), <span class="s8">\dur</span>, 1));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>([ 0, 2, 2, 4, 0, 4, 0, 4 ], <span class="s5">inf</span>), <span class="s8">\dur</span>, 1));</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s5">Pdef</span><span class="s3">(</span><span class="s8">\x</span><span class="s3">).quant_([8, 1/3, 0, 1]); </span>// phase: 1/6 beat relative to y</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>([ 1, 1, 1, 7, 0, 2, 2, 4 ], <span class="s5">inf</span>), <span class="s8">\legato</span>, 0.1));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>([ 3, 3, 3, 4b ], <span class="s5">inf</span>), <span class="s8">\legato</span>, 0.1));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\y</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7).scramble-4, <span class="s5">inf</span>), <span class="s8">\dur</span>, 0.25, <span class="s8">\legato</span>, 0.3));</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">// some testing</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s5">var</span><span class="s3"> quant = #[8, 0, 0, 1]; </span>// quantise to 8 beats, no phase, insert quant to 1 beat</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).quant_(quant);</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).play;</p>
-<p class="p7"><span class="s5">Routine</span> { loop { 8.do { <span class="s5">|i|</span> (<span class="s10">"uhr:"</span>+i).postln; 1.wait } } }.play(quant:quant);</p>
-<p class="p7"><span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7), <span class="s5">inf</span>)).play(quant:quant);</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7)+2, <span class="s5">inf</span>)).trace(<span class="s8">\degree</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7), <span class="s5">inf</span>) + [0, 3]).trace(<span class="s8">\degree</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7), <span class="s5">inf</span>) + [0, 6], <span class="s8">\dur</span>, 0.5).trace(<span class="s8">\degree</span>));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).fadeTime = 8;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7), <span class="s5">inf</span>)).trace(<span class="s8">\degree</span>));</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7).reverse, <span class="s5">inf</span>) + [0, 6], <span class="s8">\dur</span>, 0.5));</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).fadeTime = <span class="s5">nil</span>;</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).quant = 1;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7), <span class="s5">inf</span>)).trace(<span class="s8">\degree</span>));</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).quant = 8;</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7), <span class="s5">inf</span>)).trace(<span class="s8">\degree</span>));</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p9"><b>Example: Update condition</b></p>
-<p class="p4"><br></p>
-<p class="p1">In order to be able to switch to a new pattern under a certain condition, the instance variable</p>
-<p class="p1"><b><i>condition</i></b> can be set to a function that returns a boolean. Value and a count index are passed to the function.</p>
-<p class="p1">The condition is always valid for the <b><i>next pattern</i></b> inserted. For stuck conditions, the <b>reset</b> message can be used.</p>
-<p class="p4"><br></p>
-<p class="p1">As counting up (such as <i>"every nth event, a swap can happen"</i>) is a common task, there is a method for this,</p>
-<p class="p1">called <b>count(n).</b></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).play;</p>
-<p class="p8"><span class="s5">Pdef</span><span class="s3">(</span><span class="s8">\x</span><span class="s3">).quant = 0; </span>// we don't want quant here.</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..5), <span class="s5">inf</span>), <span class="s8">\dur</span>, 0.3)).condition_({ <span class="s5">|val, i|</span> i.postln % 6 == 0 });</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7) + 5.rand, <span class="s5">inf</span>), <span class="s8">\dur</span>, 0.3)).condition_({ <span class="s5">|val, i|</span> (i % 8).postln == 0 });</p>
-<p class="p2"><br></p>
-<p class="p8">// the above is equivalent to:</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>, <span class="s5">Pbind</span>(<span class="s8">\degree</span>, <span class="s5">Pseq</span>((0..7) + 5.rand, <span class="s5">inf</span>), <span class="s8">\dur</span>, 0.3)).count(8);</p>
-<p class="p2"><br></p>
-<p class="p8">// the value that is sent in is the event, so decisions can be made dependent on the event's fields</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>reset</b></p>
-<p class="p17"><span class="Apple-converted-space"> </span></p>
-<p class="p8">// reset to change immediately:</p>
-<p class="p7"><span class="s5">Pdef</span>(<span class="s8">\x</span>).reset;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/Pdefn.html b/Help/Libraries/JITLib/Patterns/Pdefn.html
deleted file mode 100644
index 68dc0db..0000000
--- a/Help/Libraries/JITLib/Patterns/Pdefn.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #1032ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf1410}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #1135f9}
-span.s5 {color: #0000bf}
-span.s6 {color: #0a26c0}
-span.s7 {color: #017417}
-span.s8 {color: #0b28c6}
-span.s9 {color: #00831b}
-span.s10 {color: #007300}
-span.s11 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pdefn <span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b></span><b>non event stream reference definition</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from:<span class="Apple-converted-space"> </span></b> <a href="../../../Core/Object.html"><span class="s3">Object</span></a> : <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s3">AbstractFunction</span></a> : <a href="../../../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s3">Pattern</span></a> : <a href="PatternProxy.html"><span class="s3">PatternProxy</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">Pdefn provides an interface to its superclass <a href="PatternProxy.html"><span class="s4">PatternProxy</span></a>, keeping a reference to a stream that can be replaced while playing. One pattern may be used in many streams in different places. A change in the pattern definition propagates through all streams.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Pdefn(key)</b> returns the instance,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>Pdefn(key, pat) </b>defines the pattern and returns the instance, like <a href="Pdef.html"><span class="s4">Pdef</span></a>, <a href="Tdef.html"><span class="s4">Tdef</span></a> and <a href="../nodeproxy/Ndef.html"><span class="s4">Ndef</span></a>.</p>
-<p class="p1">It is very similar to <a href="PatternProxy.html"><span class="s5">PatternProxy</span></a></p>
-<p class="p4"><br></p>
-<p class="p1">Pdefn can be used to store value patterns globally (for <b>event patterns</b>, see <a href="Pdef.html"><span class="s5">Pdef</span></a>).</p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s5">JITLib</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>First Example</b></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Pdefn</span>(<span class="s7">\x</span>, <span class="s6">Pbrown</span>(0, 6, 0.1, <span class="s6">inf</span>));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s8">Pbind</span>(<span class="s9">\note</span>, <span class="s8">Pdefn</span>(<span class="s9">\x</span>), <span class="s9">\dur</span>, 0.3).play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s8">Pbind</span>(<span class="s9">\note</span>, <span class="s8">Pdefn</span>(<span class="s9">\x</span>), <span class="s9">\dur</span>, 0.1, <span class="s9">\ctranspose</span>, 15).play;</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// now change the definition</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Pdefn</span>(<span class="s7">\x</span>, <span class="s6">Pseq</span>([0, 3, 5, 7, 9, 11], <span class="s6">inf</span>));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s8">Pdefn</span>(<span class="s9">\x</span>, <span class="s8">Pseq</span>([0, 3, 3, 7], <span class="s8">inf</span>) + <span class="s8">Pseq</span>([0, [0, 3], [0, 5, 7]], <span class="s8">inf</span>));</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10"><b>Creation / Class Methods</b></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>*new(key, pattern)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Store the pattern in a global dictionary under key, replacing its pattern with the new one.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the pattern is a <b>function</b>, Pdef creates a <a href="../../../Streams-Patterns-Events/Patterns/Prout.html"><span class="s4">Prout</span></a><span class="s4"> </span>with this function, passing in the envir, if given(see below).</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>*new(key)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Access the pattern at that key (if none is given, a default silent event is created)</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>*default</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default source, if none is given. The default is a Pattern that returns 1.0 (This is 1 and not 0 to avoid deadlocks when used as a duration pattern. In a sense, 1 is just as generic as 0).</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>*removeAll</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Remove all proxies from the global dictionary (*<b>all</b>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>*clear</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Clear all proxies, setting their source to silence.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>*all</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span>*all_(envir)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return the environment (<a href="../../../Collections/IdentityDictionary.html"><span class="s6">IdentityDictionary</span></a>) that stores all Pdefns.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Pdefn in expressions</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p13">Pdefn<span class="s2">(</span><span class="s10">\c</span><span class="s2">, </span>Pdefn<span class="s2">(</span><span class="s10">\a</span><span class="s2">) + </span>Pdefn<span class="s2">(</span><span class="s10">\b</span><span class="s2">));</span></p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s2">t = </span><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\c</span><span class="s2">).asStream; </span>// create a stream from Pdefn(\c)</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s2">t.value; </span>// default value for a Pdefn is 1, so that it is a good time value default.</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\a</span><span class="s2">, 100); </span>// (re)define Pdefn(\a) as 100</p>
-<p class="p2"><br></p>
-<p class="p6">t.value;</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\b</span><span class="s2">, </span><span class="s5">Pseq</span><span class="s2">([1, 2, 3], </span><span class="s5">inf</span><span class="s2">)); </span>// (re)define Pdefn(\b) as Pseq([1, 2, 3], inf)</p>
-<p class="p2"><br></p>
-<p class="p6">3.do { t.value.postln };</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\c</span><span class="s2">, </span><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\a</span><span class="s2">) * </span><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\b</span><span class="s2">) - </span><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\a</span><span class="s2">)); </span>// (re)define Pdefn(\c)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">8.do { t.value.postln };</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\a</span><span class="s2">, </span><span class="s5">Prand</span><span class="s2">([1, 4, 2], </span><span class="s5">inf</span><span class="s2">));<span class="Apple-converted-space">  </span></span>// (re)define Pdefn(\a)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p15"><b></b><br></p>
-<p class="p5"><b>Embedding Pdefn in other patterns</b></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\x</span>, <span class="s5">Pseq</span>([1, 2, 3], <span class="s5">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p6">x = <span class="s5">Pseq</span>([0, 0, <span class="s5">Pdefn</span>(<span class="s10">\x</span>)], <span class="s5">inf</span>).asStream;</p>
-<p class="p2"><br></p>
-<p class="p6">t = <span class="s5">Task</span>({ loop({ x.next.postln; 0.3.wait }) }).play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\x</span>, <span class="s5">Pseq</span>([55, 66, 77],<span class="s5">inf</span>));</p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\x</span>, <span class="s5">Pseq</span>([55, 66, 77],1));</p>
-<p class="p2"><br></p>
-<p class="p6">t.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p14">// Pdefn can be accessed in multiple streams</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">SynthDef</span>(<span class="s11">"Pdefhelp"</span>, { <span class="s5">arg</span> out, freq, sustain=1, amp=1, pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span> env, u=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0.03, sustain), 1, doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>5.do { <span class="s5">var</span> d; d = exprand(0.01, 1); u = <span class="s5">SinOsc</span>.ar(d * 300, u, rrand(0.1,1.2) * d, 1) };</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">Pan2</span>.ar(<span class="s5">SinOsc</span>.ar(u + 1 * freq, 0, amp * env), pan));</p>
-<p class="p2"><br></p>
-<p class="p6">}).store;</p>
-<p class="p6">s.boot;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\deg</span>, <span class="s5">Pseq</span>([0, 3, 2],<span class="s5">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p16"><span class="s5">Pset</span><span class="s2">(</span>\instrument<span class="s2">, </span>\Pdefhelp<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>Ppar<span class="s2">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s10">\degree</span>, <span class="s5">Pdefn</span>(<span class="s10">\deg</span>), \pan, -0.8),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s10">\degree</span>, <span class="s5">Pdefn</span>(<span class="s10">\deg</span>), <span class="s10">\dur</span>, 1/3, \pan, 0.8)</p>
-<p class="p6">])</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\deg</span>, <span class="s5">Prand</span>([0, 3, [1s, 4]],<span class="s5">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\deg</span>, <span class="s5">Pn</span>(<span class="s5">Pshuf</span>([0, 3, 2, 7, 6],2),<span class="s5">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p13">Pdefn<span class="s2">(</span><span class="s10">\deg</span><span class="s2">, </span>Plazy<span class="s2"> { </span>var<span class="s2"> pat;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pat = [<span class="s5">Pshuf</span>([0, 3, 2, 7, 6],2), <span class="s5">Pseries</span>(0, 1, 11), <span class="s5">Pseries</span>(11, -1, 11)].choose;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pn</span>(pat, <span class="s5">inf</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>When does the definition change?</b></p>
-<p class="p15"><b></b><br></p>
-<p class="p1"><b>Timing</b></p>
-<p class="p2"><br></p>
-<p class="p1">If quant is set, the update is done at the next beat or whatever is specified:</p>
-<p class="p2"><br></p>
-<p class="p17"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\deg</span>).quant = 4;</p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\deg</span>, <span class="s5">Pn</span>(<span class="s5">Pseries</span>(0, 1, 8),<span class="s5">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\deg</span><span class="s2">).quant = </span><span class="s5">nil</span><span class="s2">; </span>// activate immediately again</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p13">Pdefn<span class="s2">(</span><span class="s10">\deg</span><span class="s2">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>5.do { <span class="s5">|i|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[1, 3, 4].choose.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[5, 0, 12].choose.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[14, 3, 4].choose.do { <span class="s5">|j|</span> (i % j).postln.yield };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>update condition</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">In order to be able to switch to a new pattern under a certain condition, the instance variable</p>
-<p class="p1"><b><i>condition</i></b> can be set to a function that returns a boolean. Value and a count index are passed to the function.</p>
-<p class="p1">The condition is always valid for the <b><i>next pattern</i></b> inserted. For stuck conditions, the <b>reset</b> message can be used.</p>
-<p class="p4"><br></p>
-<p class="p1">As counting up (such as <i>"every nth event, a swap can happen"</i>) is a common task, there is a method for this,</p>
-<p class="p1">called <b>count(n).</b></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p6">z = <span class="s5">Pbind</span>(<span class="s10">\degree</span>, <span class="s5">Pdefn</span>(<span class="s10">\x, \</span>), <span class="s10">\dur</span>, 0.25).play;</p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\x</span>, <span class="s5">Pseq</span>((0..5), <span class="s5">inf</span>)).condition_({ <span class="s5">|val, i|</span> i.postln % 6 == 0 });</p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\x</span>, <span class="s5">Pseq</span>((7..0), <span class="s5">inf</span>)).condition_({ <span class="s5">|val, i|</span> i.postln % 8 == 0 });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p14">// the above is equvalent to:</p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\x</span>, <span class="s5">Pseq</span>((7..0), <span class="s5">inf</span>)).count(8);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Reset</b></p>
-<p class="p17"><span class="Apple-converted-space"> </span></p>
-<p class="p14">// reset to change immediately:</p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\x</span>).reset;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\x</span>).stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Functions as arguments to Pdefn</b></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\deg</span>, { loop { yield(0.1.rand.round(0.01) + [2, 3, 9].choose) } });</p>
-<p class="p2"><br></p>
-<p class="p14">// equivalent to:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\deg</span>, <span class="s5">Proutine</span> { loop { yield(0.1.rand.round(0.01) + [2, 3, 9].choose) } });</p>
-<p class="p2"><br></p>
-<p class="p14">// this is not exactly true, see below..</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>The (inner) environment</b></p>
-<p class="p2"><br></p>
-<p class="p14">// set() creates a local environment that overrides the outer currentEnvironment</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\z</span>).set(<span class="s10">\a</span>, 1, <span class="s10">\b</span>, 5);</p>
-<p class="p6">(</p>
-<p class="p13">Pdefn<span class="s2">(</span><span class="s10">\z</span><span class="s2">, { </span>|e|<span class="s2"> <span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop { yield((e.a + e.b) + 0.1.rand.round(0.01)) }<span class="Apple-converted-space"> </span></p>
-<p class="p6">})</p>
-<p class="p14"><span class="s2">); </span>// [1]</p>
-<p class="p2"><br></p>
-<p class="p6">t = <span class="s5">Pdefn</span>(<span class="s10">\z</span>).asStream;</p>
-<p class="p2"><br></p>
-<p class="p6">t.nextN(3);</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p13">Pdefn<span class="s2">(</span><span class="s10">\z</span><span class="s2">, { </span>|e|<span class="s2"> <span class="Apple-converted-space"> </span></span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>//(e.a + e.b) + 0.1.rand.round(0.01) 1</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Pseq</span>([1, 2, e.a], 1)</p>
-<p class="p6">})</p>
-<p class="p6">);<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\z</span>, <span class="s5">Pseq</span>([1, 2, 3], 1));<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">e = <span class="s5">Pdefn</span>(<span class="s10">\z</span>).envir</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\z</span>).set(<span class="s10">\a</span>, 3);</p>
-<p class="p2"><br></p>
-<p class="p6">t.next;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\z</span>).set(<span class="s10">\a</span>, <span class="s5">Pseq</span>([1, 2, 3], <span class="s5">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p6">t.reset;</p>
-<p class="p6">t.nextN(3);</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s5">Pdefn</span><span class="s2">(</span><span class="s10">\z</span><span class="s2">).envir; </span>// post the envir</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p14">// if you want to keep using the currentEnvironment at the same time,<span class="Apple-converted-space"> </span></p>
-<p class="p14">// assign the currentEnvironment to the envir's parent (or proto) field</p>
-<p class="p14">// (this shouldn't be a proxy space of course.)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">Pdefn</span>(<span class="s10">\z</span>).envir.parent = currentEnvironment;</p>
-<p class="p6">~a = 9;</p>
-<p class="p6">~b = 10;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">t.nextN(3);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/Pdict.html b/Help/Libraries/JITLib/Patterns/Pdict.html
deleted file mode 100644
index 355b9f0..0000000
--- a/Help/Libraries/JITLib/Patterns/Pdict.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0019b7}
-span.s5 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pdict</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>pattern that embeds patterns from a dictionary</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Penvir</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(dict, keyPattern, repeats, default)</b></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p5">SynthDescLib<span class="s3">.read;</span></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6">e = (</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a: <span class="s4">Pbind</span>(<span class="s5">\dur</span>, 0.1, <span class="s5">\degree</span>, <span class="s4">Pseq</span>([0, 5, 4, 3, 2])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b: <span class="s4">Pbind</span>(<span class="s5">\dur</span>, 0.06, <span class="s5">\degree</span>, <span class="s4">Pseq</span>([7, 8, 7, 8])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>c: <span class="s4">Pbind</span>(<span class="s5">\dur</span>, 0.3, <span class="s5">\degree</span>, <span class="s4">Pseq</span>([0, 1, 2], 2))</p>
-<p class="p6">);</p>
-<p class="p2"><br></p>
-<p class="p6">x = <span class="s4">Pdict</span>(e, <span class="s4">Pseq</span>([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\a</span>, <span class="s5">\b</span>,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Prand</span>([<span class="s5">\a</span>, <span class="s5">\c</span>])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], 4)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">x.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/Pnsym.html b/Help/Libraries/JITLib/Patterns/Pnsym.html
deleted file mode 100644
index 144b92a..0000000
--- a/Help/Libraries/JITLib/Patterns/Pnsym.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #732d20; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a91616}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0014bc}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #307109}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #002df4}
-span.s4 {color: #001afb}
-span.s5 {color: #000000}
-span.s6 {color: #606060}
-span.s7 {color: #0014bc}
-span.s8 {color: #307109}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pnsym</b></span><span class="s2"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>use a pattern of symbols to embed Pdefn's</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Psym</p>
-<p class="p3"><br></p>
-<p class="p1">for event patterns see <a href="Psym.html"><span class="s3">Psym</span></a></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s4">JITLib</span></a></p>
-<p class="p1">Related: <a href="Pdefn.html"><span class="s4">Pdefn</span></a></p>
-<p class="p3"><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>Pnsym(pattern)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>pattern: </b>a pattern that returns symbols or characters. Arrays are converted to parallel patterns (<a href="../../../Streams-Patterns-Events/Patterns/Ptuple.html"><span class="s4">Ptuple</span></a>).</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>dict:<span class="Apple-converted-space"> </span></b> the dictionary to be used for lookup. By default, this is <b>Pdefn</b>.all, so one can embed Pdefns by name.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>dict_(a dictionary)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>set the dictionary to be used</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// example:</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p5">// load a synthdef</p>
-<p class="p6">s.boot;</p>
-<p class="p7">SynthDef<span class="s5">(</span><span class="s6">"gpdef"</span><span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s7">arg</span> out=0, freq=440, sustain=0.05, amp=0.1, pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s7">EnvGen</span>.kr(<span class="s7">Env</span>.perc(0.01, sustain), doneAction:2) * amp;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(out, <span class="s7">Pan2</span>.ar(<span class="s7">SinOsc</span>.ar(freq, 0, env), pan))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).store;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s7">Pdefn</span>(<span class="s8">\x</span>, <span class="s7">Pn</span>(1, 3));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s7">Pdefn</span>(<span class="s8">\y</span>, <span class="s7">Prand</span>([5, 9, 1], 2));</p>
-<p class="p6"><span class="s7">Pdefn</span>(<span class="s8">\z</span>, <span class="s7">Pdefn</span>(<span class="s8">\y</span>) * 2);</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="s7">Pdef</span><span class="s5">(</span>\play<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>Pbind<span class="s5">(</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s5">, </span>\gpdef<span class="s5">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\harmonic</span>, <span class="s7">Pnsym</span>(<span class="s7">Pseq</span>([<span class="s8">\x</span>, <span class="s8">\x</span>, <span class="s7">Prand</span>([<span class="s8">\x</span>, <span class="s8">\y</span>]), [<span class="s8">\z</span>, <span class="s8">\y</span>], <span class="s8">\y</span>], <span class="s7">inf</span>)).trace,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, 0.2, <span class="s8">\note</span>, 10</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p5">// change root pattern:</p>
-<p class="p6"><span class="s7">Pdefn</span>(<span class="s8">\x</span>, <span class="s7">Pn</span>(2, 3));</p>
-<p class="p6"><span class="s7">Pdefn</span>(<span class="s8">\x</span>, <span class="s7">Pseq</span>([1, 3, 1, 2, 1, 4, 5]));</p>
-<p class="p6"><span class="s7">Pdefn</span>(<span class="s8">\x</span>, <span class="s7">Pseq</span>([1, 3, 1, 2, [1, 3], 4, 5]));</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/Psym.html b/Help/Libraries/JITLib/Patterns/Psym.html
deleted file mode 100644
index c6d2e6a..0000000
--- a/Help/Libraries/JITLib/Patterns/Psym.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #001bb9}
-span.s4 {color: #000000}
-span.s5 {color: #2c7014}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Psym</b></span><span class="s2"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>use a pattern of symbols to embed Pdefs</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: FilterPattern</p>
-<p class="p3"><br></p>
-<p class="p1">for non-event patterns see <a href="Pnsym.html"><span class="s3">Pnsym</span></a></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s3">JITLib</span></a></p>
-<p class="p1">related: <a href="Pdef.html"><span class="s3">Pdef</span></a></p>
-<p class="p3"><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>Psym(pattern, dict)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>pattern: </b>a pattern that returns symbols or characters. Arrays are converted to parallel patterns (<a href="../../../Streams-Patterns-Events/Patterns/Ppar.html"><span class="s3">Ppar</span></a>).<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>dict:<span class="Apple-converted-space"> </span></b> the dictionary to be used for lookup. By default, this is <b>Pdef</b>.all, so one can embed Pdefs by name.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>dict_(a dictionary)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>set the dictionary to be used.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// example:</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p5">// load a synthdef</p>
-<p class="p6">s.boot;</p>
-<p class="p7">SynthDef<span class="s4">(</span><span class="s5">\gpdef</span><span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>{ </span>|out=0, freq=440, sustain=0.05, amp=0.1, pan|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, sustain), doneAction:2) * amp;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">Pan2</span>.ar(<span class="s3">SinOsc</span>.ar(freq, 0, env), pan))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).store;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">Pdef</span>(<span class="s5">\x</span>, <span class="s3">Pbind</span>(<span class="s5">\dur</span>, <span class="s3">Pn</span>(0.25, 3), <span class="s5">\instrument</span>, <span class="s5">\gpdef</span>));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3">Pdef</span>(<span class="s5">\y</span>, <span class="s3">Pchain</span>(<span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Prand</span>([5, 9, 0], <span class="s3">inf</span>), <span class="s5">\legato</span>, <span class="s3">Pseq</span>([0.3, 2.2], <span class="s3">inf</span>)), <span class="s3">Pdef</span>(<span class="s5">\x</span>)));</p>
-<p class="p6"><span class="s3">Pdef</span>(<span class="s5">\z</span>, <span class="s3">Pchain</span>(<span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseq</span>([0, 2, 5, 7, 8, 9], 1)), <span class="s3">Pn</span>(<span class="s3">Pdef</span>(<span class="s5">\y</span>))));</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">Pdef</span>(<span class="s5">\play</span>, <span class="s3">Psym</span>(<span class="s3">Pseq</span>([<span class="s5">\x</span>, <span class="s5">\x</span>, <span class="s3">Prand</span>([<span class="s5">\x</span>, <span class="s5">\y</span>]), <span class="s5">\z</span>, <span class="s5">\y</span>], <span class="s3">inf</span>).trace)).play;</p>
-<p class="p2"><br></p>
-<p class="p5">// change root pattern:</p>
-<p class="p6"><span class="s3">Pdef</span>(<span class="s5">\x</span>, <span class="s3">Pbind</span>(<span class="s5">\dur</span>, <span class="s3">Pn</span>(0.125, 2), <span class="s5">\instrument</span>, <span class="s5">\gpdef</span>));<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3">Pdef</span><span class="s4">(</span>\x<span class="s4">, </span><span class="s3">Pbind</span><span class="s4">(</span>\dur<span class="s4">, </span><span class="s3">Pn</span><span class="s4">(0.125, 3), </span>\instrument<span class="s4">, </span>\gpdef<span class="s4">, </span>\ctranspose<span class="s4">, 2));<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s3">Pdef</span><span class="s4">(</span>\x<span class="s4">, </span><span class="s3">Pbind</span><span class="s4">(</span>\dur<span class="s4">, </span><span class="s3">Pn</span><span class="s4">(0.125, 2), </span>\instrument<span class="s4">, </span>\gpdef<span class="s4">, </span>\ctranspose<span class="s4">, 0));<span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p5">// change sequence:</p>
-<p class="p6"><span class="s3">Pdef</span>(<span class="s5">\play</span>, <span class="s3">Psym</span>(<span class="s3">Prand</span>([<span class="s3">Pseq</span>([<span class="s5">\x</span>, <span class="s5">\y</span>], 5), <span class="s3">Pseq</span>([<span class="s5">\z</span>, <span class="s5">\y</span>], 5)], <span class="s3">inf</span>).trace)).play;</p>
-<p class="p2"><br></p>
-<p class="p5">// use a sequence of characters:</p>
-<p class="p6"><span class="s3">Pdef</span>(<span class="s5">\play</span>, <span class="s3">Psym</span>(<span class="s3">Pseq</span>(<span class="s6">"xxyxxzz"</span>, <span class="s3">inf</span>).trace)).play;</p>
-<p class="p2"><br></p>
-<p class="p5">// play in parallel:</p>
-<p class="p6">(</p>
-<p class="p7">Pdef<span class="s4">(</span><span class="s5">\play</span><span class="s4">, </span>Psym<span class="s4">(</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>Prand<span class="s4">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([[<span class="s5">\x</span>, <span class="s5">\y</span>], <span class="s5">\z</span>], 5),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([[<span class="s5">\z</span>, <span class="s5">\y</span>], <span class="s5">\x</span>, <span class="s5">\x</span>, <span class="s5">\y</span>])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</p>
-<p class="p6"><span class="Apple-tab-span">	</span>, <span class="s3">inf</span>).trace)</p>
-<p class="p6">).play</p>
-<p class="p6">);</p>
-<p class="p2"><br></p>
-<p class="p7">Pdef<span class="s4">(</span><span class="s5">\z</span><span class="s4">, </span>Pchain<span class="s4">(</span>Pbind<span class="s4">(</span><span class="s5">\mtranspose</span><span class="s4">, -5), </span>Pdef<span class="s4">(</span><span class="s5">\y</span><span class="s4">)));</span></p>
-<p class="p6"><span class="s3">Pdef</span>(<span class="s5">\y</span>, <span class="s3">Pchain</span>(<span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseq</span>([4, 3, 4, 2, 4, 1, 4, 0], 1)), <span class="s3">Pdef</span>(<span class="s5">\x</span>)));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">Pdef</span><span class="s4">(</span><span class="s5">\play</span><span class="s4">).stop; </span>// stop it</p>
-<p class="p5"><span class="s3">Pdef</span><span class="s4">.clear; </span>// clear all</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/TaskProxy.html b/Help/Libraries/JITLib/Patterns/TaskProxy.html
deleted file mode 100644
index 95e4c9d..0000000
--- a/Help/Libraries/JITLib/Patterns/TaskProxy.html
+++ /dev/null
@@ -1,283 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #7d261f}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0d2fae}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #1a47e2}
-span.s4 {color: #0d2fae}
-span.s5 {color: #606060}
-span.s6 {color: #000000}
-span.s7 {color: #516a22}
-span.s8 {color: #7d261f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TaskProxy<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>event stream reference</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: PatternProxy</p>
-<p class="p3"><br></p>
-<p class="p1">Keeps a reference to a task (time pattern) that can be replaced while playing.</p>
-<p class="p1">It plays on when the old stream ended and a new stream is set and schedules the changes to the beat.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">related: <a href="Tdef.html"><span class="s3">Tdef</span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*new(source)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a new instance with a function (the source).</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the source should be a <b><i>routine function</i></b> (see <b>Tdef</b>) or a <b><i>pattern</i></b> of time values.</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*default</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a default source, if none is given. the default is a loop that does nothing with a 1.0 beat wait time</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>source_(obj)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the source. If a quantization is given, schedule this change to the next beat</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the object is a <b><i>routine function, </i></b>which is evaluated in a protected way, so that</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>failure will notify the proxy that it has stopped.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The object can also be a <b><i>pattern</i></b> of time values.</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>clear</b><span class="Apple-tab-span">	</span>set the source to nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>quant_(beats)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the quantization value. can be a pair [quant, offset]</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>quant</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get the quantization value</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*defaultQuant_(beats)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the default quantization value for the class. (default: 1.0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>can be a pair [quant, offset]</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>condition_(func)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>provide a condition under which the pattern is switched when a new one is inserted.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the stream value and a count is passed into the function.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the methods <b>count_(n) </b>simply counts up to n and switches the pattern then</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>reset</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>switch the pattern immediately. (stuck conditions can be subverted by this)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>envir_(event)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>provide a default environment for the proxy.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If given,<span class="Apple-converted-space">  </span>it is used as an environment for the routine<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>function. When set for the first time, the routine pattern is rebuilt.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>set(key, val, key2, val2, ...)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set arguments in the environment.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If there is none, it is created and the routine pattern is rebuilt.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>endless</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a Proutine that plays the proxy endlessly, replacing <b>nil</b> with a <b>default</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value (1 s. wait time). This allows to create streams that idle on until a new pattern is inserted.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p1"><b><i>a) using it as stream reference</i></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>source_<span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the routine function / pattern (internally done by *new(key, obj)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>embedInStream(inval)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>just like any stream, embeds itself in stream</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><i>b) using it as EventStreamPlayer</i></b></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>play(clock, protoEvent, quant)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>starts the TaskProxy and creates a player.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if you want to play multiple instances, use <b>.playOnce(clock, protoEvent, quant)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>quant </b>can be an array of [quant, phase]</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>stop</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stops the player</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>player</b><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the current player (if the TaskProxy is simply used in other streams this is nil)</p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>pause / resume / reset / mute / unmute</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>perform player method<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>isPlaying</b><span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns true if TaskProxy is running.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if a TaskProxy is playing and its stream ends, it will schedule a stream for playing<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>as soon as a new one is assigned to it.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b><i>a) using TaskProxy as a player</i></b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// create an empty Tdef and play it.</p>
-<p class="p5">x = <span class="s4">TaskProxy</span>.new;</p>
-<p class="p5">x.play;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">x.source =<span class="Apple-converted-space">  </span>{ loop { <span class="s5">"ggggggggggggggggg9999ggg999ggg999gg"</span>.scramble.postln; 0.5.wait; } };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">x.source = { loop { <span class="s5">"---------////----------------------"</span>.scramble.postln; 0.25.wait; } };</p>
-<p class="p5">x.source = { loop { <span class="s4">thisThread</span>.seconds.postln; 1.wait; } };</p>
-<p class="p5">x.source = { loop { <span class="s4">thisThread</span>.seconds.postln; 1.01.wait; } };</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">TempoClock</span>.default.tempo = 2;</p>
-<p class="p2"><br></p>
-<p class="p5">x.source = { <span class="s5">"the end"</span>.postln };</p>
-<p class="p5">x.source = { <span class="s5">"one more"</span>.postln };</p>
-<p class="p5">x.source = { 10.do { <span class="s5">"ten more"</span>.scramble.postln; 0.25.wait; } };</p>
-<p class="p5">x.source = { loop { <span class="s5">"many more"</span>.scramble.postln; 0.25.wait; } };</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">TempoClock</span>.default.tempo = 1;</p>
-<p class="p2"><br></p>
-<p class="p5">x.stop;</p>
-<p class="p5">x.play;</p>
-<p class="p5">x.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// sound example</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p4">// load a synthdef</p>
-<p class="p5">s.boot;</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s6">(</span>"pdef_grainlet"<span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.3), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).store;</p>
-<p class="p5">)</p>
-<p class="p5">x.play;</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">x.source = {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, rrand(600, 640));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">x.source = {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> x;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s4">Pseries</span>(300, 20, 100).loop.asStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, x.next);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">x.source = {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> x;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s4">Plazy</span> { <span class="s4">Pseries</span>(300 + 300.rand, 10 + 30.rand, 10 + 30.rand) }.loop.asStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, x.next);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// metronome</p>
-<p class="p5">(</p>
-<p class="p7"><span class="s6">y = </span>TaskProxy<span class="s6"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop { s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, 1500); 1.wait; }<span class="Apple-converted-space"> </span></p>
-<p class="p5">};</p>
-<p class="p5">y.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// play ending stream once</p>
-<p class="p5">(</p>
-<p class="p5">x.source = {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> x, dt;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dt = [0.1, 0.125, 0.05].choose;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s4">Plazy</span> { <span class="s4">Pseries</span>(1300 + 300.rand, 110 + 130.rand, 16) }.asStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.do { <span class="s4">arg</span> item;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, item);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dt.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">... and so on ...</p>
-<p class="p2"><br></p>
-<p class="p5">x.stop;</p>
-<p class="p5">y.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b><i>b) embedding TaskProxy into other Tasks / Routines</i></b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">#a, c = { <span class="s4">TaskProxy</span>.new } ! 2;</p>
-<p class="p5">a.source = { <span class="s5">"one"</span>.postln; 1.wait; <span class="s5">"two"</span>.postln };</p>
-<p class="p5">c.source = { <span class="s4">var</span> z; z = <span class="s4">Synth</span>(<span class="s7">\default</span>); 0.5.wait; z.release };</p>
-<p class="p5">r = <span class="s4">Task</span> {</p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>"counting..."<span class="s6">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.embedInStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.embedInStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">"done."</span>.postln;</p>
-<p class="p5">};</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s6">r.play; </span>// play a stream</p>
-<p class="p2"><br></p>
-<p class="p5">c.source = { <span class="s4">var</span> z; z = <span class="s4">Synth</span>(<span class="s7">\default</span>, [<span class="s7">\freq</span>, 300]); 1.5.wait; z.release }; <span class="s8">// change the def</span></p>
-<p class="p2"><br></p>
-<p class="p5">r.reset;</p>
-<p class="p5">r.play;</p>
-<p class="p2"><br></p>
-<p class="p4">// of course TaskProxies can be used in other Tdefs:</p>
-<p class="p5">(</p>
-<p class="p5">b = <span class="s4">TaskProxy</span>.new;</p>
-<p class="p5">b.source = {</p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>"counting..."<span class="s6">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.embedInStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.embedInStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">"done."</span>.postln;</p>
-<p class="p5">};</p>
-<p class="p5">)</p>
-<p class="p5">b.playOnce;</p>
-<p class="p2"><br></p>
-<p class="p4">// if one wants to branch off a stream in a separate thread, asStream is used.</p>
-<p class="p5">(</p>
-<p class="p7">Routine<span class="s6"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.asStream.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.asStream.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.asStream.play;</p>
-<p class="p2"><br></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/Patterns/Tdef.html b/Help/Libraries/JITLib/Patterns/Tdef.html
deleted file mode 100644
index 011deeb..0000000
--- a/Help/Libraries/JITLib/Patterns/Tdef.html
+++ /dev/null
@@ -1,376 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #00831b}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #1135f9}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.s8 {color: #737373}
-span.s9 {color: #606060}
-span.s10 {color: #0b28c6}
-span.s11 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Tdef<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>task reference definition</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from:<span class="Apple-converted-space"> </span></b> <a href="../../../Core/Object.html"><span class="s4">Object</span></a> : <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4">AbstractFunction</span></a> : <a href="../../../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s4">Pattern</span></a> : <a href="PatternProxy.html"><span class="s4">PatternProxy</span></a> : <a href="TaskProxy.html"><span class="s5">TaskProxy</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Pdefn provides an interface to its superclass <a href="TaskProxy.html"><span class="s5">TaskProxy</span></a><span class="s5">.</span>Tdef keeps a reference to a task (<b>time pattern</b>) that can be replaced while playing. It continues playing when the old stream ended and a new stream is set and schedules the changes to the beat. One Tdef may be used in many tasks in different places. A change in the task definition Tdef propagates through all tasks.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Tdef(key) </b>returns the instance</p>
-<p class="p1"><b>Tdef(key, func) </b>defines the task and returns the instance, like <a href="Pdef.html"><span class="s6">Pdef</span></a> and <a href="../nodeproxy/Ndef.html"><span class="s6">Ndef</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s3">See also: <a href="TaskProxy.html"><span class="s4">TaskProxy</span></a>, <a href="../../../Scheduling/Task.html"><span class="s4">Task</span></a>, <a href="../../../Core/Kernel/Routine.html"><span class="s4">Routine</span></a></span></p>
-<p class="p1">Graphical overview over all current Tdefs: <a href="../extras/TdefAllGui.html"><span class="s6">TdefAllGui</span></a><span class="s6">.</span></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s6">JITLib</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>First Example</b></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop { 0.5.wait; <span class="s8">"aaaaaaaaaaaaaazz"</span>.scramble.postln } }).play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop { 0.125.wait; <span class="s8">"aazz"</span>.scramble.postln } });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop { 0.5.wait; (note: 14.rand).play } });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop { 0.5.wait; (note: 14.rand + [0, 3, 6, 7].keep(4.rand)).play } });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\x</span>).stop;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\x</span>).play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\x</span>).clear;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b>Creation / Class Methods</b></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>*new(key, func)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Store the task in a global dictionary under key, replacing its routine function with the new one.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>*new(key)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Access the pattern at that key (if none is given, a default task is created)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>*default</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default source, if none is given. The default task has a function that waits in 1.0 beat steps and does nothing.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>*removeAll</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Remove all proxies from the global dictionary (*<b>all</b>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>*clear</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Clear all proxies, setting their source to silence.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>*all</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>*all_(envir)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set or return the environment (<a href="../../../Collections/IdentityDictionary.html"><span class="s6">IdentityDictionary</span></a>) that stores all instances.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>Changing the definition / setting the source</b></p>
-<p class="p1">One Tdef may have many tasks in different places. A change in the task definition Tdef propagates through all tasks. The change does not have to be immediate - there is a scheme to schedule when the change becomes effective: a <b>quant</b> and <b>clock</b> (like elsewhere) and a <b>condition</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b>quant_(beats)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the quantisation time for beat accurate scheduling.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>quant can be an array <b>[quant, phase, timingOffset, outset]</b>, or just <b>[quant, phase] </b>etc.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>*<b>defaultQuant_(beats)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the default quantisation for new instances (default: 1.0)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This can be an array<span class="Apple-converted-space">  </span>[quant, phase, timingOffset, outset]</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>condition_(func)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Provide a condition under which the pattern is switched when a new one is inserted.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The stream value and a count value is passed into the function.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>count(n)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and update condition that simply counts up to n and switches the pattern then</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>reset</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Switch the task immediately (stuck conditions can be subverted by this).</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>envir_(event)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the environment (an event) for the Tdef. <b>It is passed as first argument into the Task function.</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>set(key, val, key2, val2, ...)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set arguments in the default event. If there is none, it is created and the task routine is rebuilt.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>clear</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the source to nil</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>endless</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a Prout that plays the task endlessly, replacing <b>nil</b> with a <b>default</b> value 1. This allows to create streams that idle on until a new pattern is inserted.</p>
-<p class="p8"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><b>Tdef as stream reference</b></p>
-<p class="p1">A single Tdef may serve as a definition for multiple tasks. These methods show how to fork off separate routines from one instance. Even if they run in different contexts, their definition may still be changed.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>fork(clock, quant, event)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Play an independent task in parallel.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>quant </b>can be an array of [quant, phase, offset], or a <a href="../../../Scheduling/Quant.html"><span class="s6">Quant</span></a> value.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>embed(val)</b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pass a value (typically an <b>event</b>) into the task function, and embed the Tdef in the stream.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>embedInStream(inval)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>just like any pattern, embeds itself in stream</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b>Tdef as EventStreamPlayer</b></p>
-<p class="p1">For live coding, each Tdef also may control one instance that plays one task. This is a PauseStream, accessible in the instance variable <b>player</b>.</p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span>play(clock, protoEvent, quant)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Starts the Tdef and creates a player.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>quant </b>can be an array of [quant, phase, offset] or a <a href="../../../Scheduling/Quant.html"><span class="s6">Quant</span></a> value.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>stop</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Stops the player</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>player</b><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the current player (if the Tdef is simply used in other streams this is nil)</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>pause / resume / reset / mute / unmute</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Perform this method on the player.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>isPlaying</b><span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns true if player is running. If a Tdef is playing and its stream ends, it will schedule a stream for playing<b> as soon as a new one is assigned to it</b>. If it is stopped by <b>stop</b>, it won't.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Example: Tdef as a Task player</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s6">Tdef</span><span class="s3">(</span><span class="s7">\x</span><span class="s3">).play; </span>// create an empty Tdef and play it.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop({ <span class="s9">"ggggggggggggggggg9999ggg999ggg999gg"</span>.scramble.postln; 0.5.wait; }) });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop({ <span class="s9">"---------////----------------------"</span>.scramble.postln; 0.25.wait; }) });</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop({ <span class="s6">thisThread</span>.seconds.postln; 1.wait; }) });</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop({ <span class="s6">thisThread</span>.seconds.postln; 1.01.wait; }) });</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">TempoClock</span>.default.tempo = 2;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, { <span class="s9">"the end"</span>.postln });</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, { <span class="s9">"one more"</span>.postln });</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, { 10.do({ <span class="s9">"ten more"</span>.scramble.postln; 0.25.wait; }) });</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, { loop({ <span class="s9">"lots more"</span>.scramble.postln; 0.25.wait; }) });</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">TempoClock</span>.default.tempo = 1;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>).stop;</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>).play;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>).clear;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10">// sound example</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p11">// load a synthdef</p>
-<p class="p12">s.boot;</p>
-<p class="p13"><span class="s10">SynthDef</span><span class="s3">(</span>\pdef_grainlet<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>{ <span class="s10">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">var</span> env;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s10">EnvGen</span>.kr(<span class="s10">Env</span>.perc(0.01, sustain, 0.3), doneAction:2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Out</span>.ar(out, <span class="s10">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p6">)</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>).play;</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, {<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s9">"/s_new"</span>, <span class="s9">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, rrand(600, 640));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, {<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s6">Pseries</span>(300, 20, 100).loop.asStream;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s9">"/s_new"</span>, <span class="s9">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, x.next);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, {<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s6">Plazy</span>({ <span class="s6">Pseries</span>(300 + 300.rand, 10 + 30.rand, 10 + 30.rand) }).loop.asStream;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s9">"/s_new"</span>, <span class="s9">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, x.next);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p10">// metronome</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\y</span>, { loop({ s.sendMsg(<span class="s9">"/s_new"</span>, <span class="s9">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, 1500); 1.wait; }) }).play;</p>
-<p class="p2"><br></p>
-<p class="p10">// play ending stream once</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>, {<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">var</span> x, dt;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>dt = [0.1, 0.125, 0.05].choose;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s6">Plazy</span>({ <span class="s6">Pseries</span>(1300 + 300.rand, 110 + 130.rand, 16) }).asStream;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.do({ <span class="s6">arg</span> item;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s9">"/s_new"</span>, <span class="s9">"pdef_grainlet"</span>, -1,0,0, <span class="s7">\freq</span>, item);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dt.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p10">// ... and so on ...</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\x</span>).stop;</p>
-<p class="p6"><span class="s6">Tdef</span>.removeAll;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Embed and fork: Tdef within other Tasks / Routines.</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10">// embed plays tdefs in sequence within a task.</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\a</span>, { <span class="s9">"one"</span>.postln; 1.wait; <span class="s9">"two"</span>.postln });</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\c</span>, { <span class="s6">var</span> z; z = <span class="s6">Synth</span>(<span class="s7">\default</span>); 0.5.wait; z.release });</p>
-<p class="p6">r = <span class="s6">Task</span>({</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span></span>"counting..."<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\a</span>).embed;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\c</span>).embed;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s9">"done."</span>.postln;</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s3">r.play; </span>// play a stream</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\c</span>, { <span class="s6">var</span> z; z = <span class="s6">Synth</span>(<span class="s7">\default</span>, [<span class="s7">\freq</span>, 300]); 1.5.wait; z.release }); <span class="s11">// change the def</span></p>
-<p class="p2"><br></p>
-<p class="p6">r.reset;</p>
-<p class="p6">r.play;</p>
-<p class="p2"><br></p>
-<p class="p10">// of course Tdefs can be used in other Tdefs:</p>
-<p class="p6">(</p>
-<p class="p6">Tdef(\a, { 10.do { |i| (" a: " + i).postln; 0.3.wait; } });</p>
-<p class="p6">Tdef(\b, { 15.do { |i| ("\t\t b: " + i).postln; 0.2.wait; } });</p>
-<p class="p6">Tdef(\c, { 5.do { |i| ("\t\t\t\t c: " + i).postln; 0.5.wait; } });</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\d</span>, {</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span></span>"embed - sequence."<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\a</span>).embed;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\b</span>).embed;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Tdef(\c).embed;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s9">"done."</span>.postln;</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\d</span>).play;</p>
-<p class="p2"><br></p>
-<p class="p10">// to start a tdef in its own separate thread, thus branching into parallel threads,<span class="Apple-converted-space"> </span></p>
-<p class="p10">// one can use .fork, or .playOnce</p>
-<p class="p6">(</p>
-<p class="p6">Tdef(\a, { 10.do { |i| (" a: " + i).postln; 0.3.wait; } });</p>
-<p class="p6">Tdef(\b, { 15.do { |i| ("\t\t b: " + i).postln; 0.2.wait; } });</p>
-<p class="p6">Tdef(\c, { 5.do { |i| ("\t\t\t\t c: " + i).postln; 0.5.wait; } });</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\d</span>, {</p>
-<p class="p14"><span class="s3"><span class="Apple-tab-span">	</span></span>"fork - parallel."<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\a</span>).fork;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Tdef</span>(<span class="s7">\b</span>).fork;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Tdef(\c).fork;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s9">"done."</span>.postln;</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Tdef as a time pattern</b></p>
-<p class="p1">Instead of using a Pdefn for time values, it can be useful to use a Tdef. When changing its source, it keeps the stream of values synchronized to its clock.</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p10">// load a synthdef</p>
-<p class="p6">s.boot;</p>
-<p class="p14"><span class="s6">SynthDef</span><span class="s3">(</span>"pdef_grainlet"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s6">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s6">EnvGen</span>.kr(<span class="s6">Env</span>.perc(0.01, sustain, 0.3), doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out, <span class="s6">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).store;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\z</span>, <span class="s6">Pseq</span>([1, 1, 1, 0.5, 0.5], <span class="s6">inf</span>));</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">Pset</span><span class="s3">(</span>\instrument<span class="s3">, </span>\pdef_grainlet<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Ppar</span>([</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\dur</span>, <span class="s6">Tdef</span>(<span class="s7">\z</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\note</span>, <span class="s6">Pseq</span>([1, 3, 2, 1, 0], <span class="s6">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\x</span>, <span class="s6">Pfunc</span> { <span class="s6">TempoClock</span>.default.elapsedBeats.postln } <span class="s11">// posts the onset times</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p16"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">\dur</span><span class="s3">, 4, </span>// reference beat</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\sustain</span>, 0.1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\note</span>, 8</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play(quant:1);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Tdef</span>(<span class="s7">\z</span>, <span class="s6">Prand</span>([1, 1, 0.23, 0.5, 0.5], <span class="s6">inf</span>)); <span class="s11">// exchange time pattern</span></p>
-<p class="p10"><span class="s6">Tdef</span><span class="s3">(</span><span class="s7">\z</span><span class="s3">, </span><span class="s6">Pseq</span><span class="s3">([1, 1, 1, 1], </span><span class="s6">inf</span><span class="s3">)); </span>// pattern stays in sync.</p>
-<p class="p10"><span class="s6">Tdef</span><span class="s3">(</span><span class="s7">\z</span><span class="s3">, </span><span class="s6">Pseq</span><span class="s3">([1, 1, 1, 0.5, 0.5], </span><span class="s6">inf</span><span class="s3">)); </span>// but might be in different order.</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// to avoid this, set quant to an appropriate value.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/environments/EnvironmentRedirect.html b/Help/Libraries/JITLib/environments/EnvironmentRedirect.html
deleted file mode 100644
index 7c63d20..0000000
--- a/Help/Libraries/JITLib/environments/EnvironmentRedirect.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #90281a; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0020f6}
-span.s4 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EnvironmentRedirect</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>base class for environment redirects</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p2"><br></p>
-<p class="p1">Environment that redirects access (<b>put</b>) and assignment (<b>at</b>).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(envir)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create new redirect, if envir is given it is used.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>envir</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return the source environment</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>envir_</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>replace the source environment</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p1">Overriding the following methods, one can redirect where objects go when they are assigned to<span class="Apple-converted-space"> </span></p>
-<p class="p1">the space: <b>at, put, localPut, removeAt.</b></p>
-<p class="p1">This is done for example in<b> </b><a href="LazyEnvir.html"><span class="s3">LazyEnvir</span></a><b> </b>and <a href="ProxySpace.html"><span class="s3">ProxySpace</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">EnvironmentRedirect implements some of the<span class="Apple-converted-space"> </span></p>
-<p class="p1">interface of <a href="../../../Collections/Environment.html"><span class="s4">Environment</span></a>, which it can replace where needed:</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span></span><b>*push, *pop, push, pop, make, use, do, clear, keysValuesDo, keysValuesArrayDo,</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>findKeyForValue, sortedKeysValuesDo, choose, <>know, doesNotUnderstand</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Networking:</b></p>
-<p class="p4"><br></p>
-<p class="p1">EnvironmentRedirect and its subclasses can be used to dispatch assignment over a network.</p>
-<p class="p1">To do this, a <b>dispatch</b> function can be supplied - see<b> </b><a href="../networking/Public.html"><span class="s3">Public</span></a>.</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/environments/LazyEnvir.html b/Help/Libraries/JITLib/environments/LazyEnvir.html
deleted file mode 100644
index 2ec5b69..0000000
--- a/Help/Libraries/JITLib/environments/LazyEnvir.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000ff}
-span.s5 {color: #001bb9}
-span.s6 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LazyEnvir</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>lazy environment</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: EnvironmentRedirect</p>
-<p class="p2"><br></p>
-<p class="p1">Environment with deferred evaluation and default values.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>put(key, val)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sets the value of the reference at <b>key</b></p>
-<p class="p1"><b>at(key)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a reference to the object at <b>key.</b><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">See also: <a href="../../../Collections/Environment.html">Environment</a>, <a href="EnvironmentRedirect.html">EnvironmentRedirect</a>, <a href="ProxySpace.html">ProxySpace</a></span>.</p>
-<p class="p1">General overview: <a href="../JITLib.html"><span class="s4">JITLib</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Consequently, calculations can be done with nonexisting objects which can then be assigned later.</p>
-<p class="p1">Per default, a LazyEnvir returns instances of <a href="Maybe.html"><span class="s4">Maybe</span></a>. See also <a href="../Patterns/Fdef.html"><span class="s4">Fdef</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// examples</p>
-<p class="p4"><br></p>
-<p class="p6">l = <span class="s5">LazyEnvir</span>.push;</p>
-<p class="p4"><br></p>
-<p class="p5">// default objects are created on access</p>
-<p class="p6">~a;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3">~a.value; </span>// defaults to 1</p>
-<p class="p4"><br></p>
-<p class="p5">// operations on placeholders</p>
-<p class="p6">(</p>
-<p class="p6">~c = ~a + ~b;</p>
-<p class="p4"><br></p>
-<p class="p6">~c.value;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// variables can be assigned later</p>
-<p class="p6">(</p>
-<p class="p6">~a = 800;</p>
-<p class="p6">~b = { 1.0.rand };</p>
-<p class="p4"><br></p>
-<p class="p6">~c.value;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// variables can be exchanged later</p>
-<p class="p6">(</p>
-<p class="p6">~b = { 1000.rand };<span class="Apple-converted-space"> </span></p>
-<p class="p6">~c.value;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// making pattern space using LazyEnvir</p>
-<p class="p4"><br></p>
-<p class="p6">a = <span class="s5">LazyEnvir</span>.new;</p>
-<p class="p6">a.proxyClass=<span class="s6">\PatternProxy</span>;</p>
-<p class="p4"><br></p>
-<p class="p6">a.push;</p>
-<p class="p4"><br></p>
-<p class="p6">~x = <span class="s5">Pseq</span>([1, 2, 30], 1);</p>
-<p class="p6">~y = <span class="s5">Pseq</span>([~x], <span class="s5">inf</span>);</p>
-<p class="p4"><br></p>
-<p class="p6">z = ~y.asStream;</p>
-<p class="p4"><br></p>
-<p class="p6">z.next;</p>
-<p class="p6">z.next;</p>
-<p class="p6">z.next;</p>
-<p class="p6">~x = <span class="s5">Pseq</span>([100, 2, 300], 1);</p>
-<p class="p6">z.next;</p>
-<p class="p6">z.next;</p>
-<p class="p6">z.next;</p>
-<p class="p4"><br></p>
-<p class="p6">a.pop;</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/environments/Maybe.html b/Help/Libraries/JITLib/environments/Maybe.html
deleted file mode 100644
index 17aaa84..0000000
--- a/Help/Libraries/JITLib/environments/Maybe.html
+++ /dev/null
@@ -1,285 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #1032ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0a26c0; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0a26c0}
-span.s5 {text-decoration: underline ; color: #1032ee}
-span.s6 {color: #1135f9}
-span.s7 {color: #0000bf}
-span.s8 {color: #bf0000}
-span.s9 {font: 12.0px Helvetica; color: #000000}
-span.s10 {color: #007300}
-span.s11 {text-decoration: underline ; color: #0021e7}
-span.s12 {color: #606060}
-span.s13 {color: #001bb9}
-span.s14 {color: #2c7014}
-span.s15 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Maybe<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>referentially transparent proxy object</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from:</b> <a href="../../../Core/Object.html"><span class="s3">Object</span></a></span><span class="s4"> : <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s5">AbstractFunction</span></a> : <a href="../../../Core/Ref.html"><span class="s6">Ref</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">A Maybe object can contain either nil or some other object, and allows to construct calculations without knowing this other object yet. If the calculation fails, due to a loop or a not yet defined object, Maybe returns nil.</p>
-<p class="p2"><br></p>
-<p class="p1">The name <b>Maybe</b> stems from the programming language Haskell, where it represents a somewhat similar entity. See also: <a href="../Patterns/Fdef.html"><span class="s6">Fdef</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Overview: <a href="../JITLib.html"><span class="s4">JITLib</span></a></p>
-<p class="p5"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>*new(object)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>create a new instance</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object </b>- an object or nil.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// example:</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s7">Maybe</span>.new;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s7">Maybe</span>(a + 6);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value; <span class="s8">// => nil</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = 1;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value; <span class="s8">// => 7</span></p>
-<p class="p7"><br></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>source</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return the contained object</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>source_(obj)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the contained object</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>value_(obj)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the contained object</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span>value(arg1, arg2...)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return the source, or the value of the contained object, if it is a Maybe.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If there is a recursion, return nil.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>apply(arg1, arg2...)</b></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return the value, or the value of the contained object, if it is a Maybe.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This method allows recursion, so that recursive calcualtions can be made.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><b>doesNotUnderstand(selector, ... args) </b>(called by any message that Maybe doesn't understand)</p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns a composition function that, when evaluated, returns the value.</p>
-<p class="p13"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// example:</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s7">Maybe</span>.new;</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.respondsTo(</span><span class="s10">\flop</span><span class="s2">) </span>// false: Maybe constructs a placeholder instead</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s7">Maybe</span>(a.flop);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value; <span class="s8">// => nil</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.value = [1, 2, [2, 3]];</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value;<span class="Apple-tab-span">	</span></span>// => [ [ 1, 2, 2 ], [ 1, 2, 3 ] ]<span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p13">// the following examples use a <a href="LazyEnvir.html"><span class="s11">LazyEnvir</span></a> with a Maybe as a proxy class.</p>
-<p class="p13">// instead of writing a = Maybe.new; a.value = something;<span class="Apple-converted-space"> </span></p>
-<p class="p13">// one can simply write ~a = something.</p>
-<p class="p13">// the Maybe is implictly created for you.</p>
-<p class="p7"><br></p>
-<p class="p15">(</p>
-<p class="p15"><span class="Apple-tab-span">	</span>p.pop.clear;</p>
-<p class="p15"><span class="Apple-tab-span">	</span>p = <span class="s7">LazyEnvir</span>.new;</p>
-<p class="p15"><span class="Apple-tab-span">	</span>p.proxyClass = <span class="s7">Maybe</span>;</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span>p.linkDoc; </span>// here: connect to current doc only.</p>
-<p class="p15">);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p16">// sets</p>
-<p class="p15">~a = <span class="s7">Set</span>[0, 4, 5, 7];</p>
-<p class="p15">~b = <span class="s7">Set</span>[4, 5];</p>
-<p class="p16"><span class="s2">~c = ~a union: ~b; </span>// union of the two sets (note that the shortcut | does not work here.).<span class="Apple-converted-space"> </span></p>
-<p class="p16"><span class="s2">~d = ~a sect: ~b; </span>// intersection of a and b</p>
-<p class="p16"><span class="s2">~c.postcs;</span><span class="s12">""</span><span class="s2">; </span>// post the whole construction</p>
-<p class="p15">~d.postcs;<span class="s12">""</span>;</p>
-<p class="p16"><span class="s2">~c.value; </span>// Set[ 4, 0, 5, 7 ]</p>
-<p class="p16"><span class="s2">~d.value; </span>// Set[ 4, 5 ]</p>
-<p class="p15">~b = <span class="s13">Set</span>[4, 5, 13, 0];</p>
-<p class="p15">~c.value;</p>
-<p class="p16"><span class="s2">~d.value; </span>// Set[ 4, 0, 5 ]</p>
-<p class="p16"><span class="s2">~b.source.add(~w); </span>// add another placeholder</p>
-<p class="p16"><span class="s2">~c.value; </span>// it is part of the union.</p>
-<p class="p16"><span class="s2">~d.value; </span>// but not part of the intersection</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p17">// envirs</p>
-<p class="p15">~a = (note: [1, 2]);</p>
-<p class="p15">~b = (dur: 1);</p>
-<p class="p16"><span class="s2">~c = ~a.putAll(~b) </span>// provisionally put everything into the placholder<span class="Apple-converted-space"> </span></p>
-<p class="p15">~c.value;</p>
-<p class="p15">~a = (note: [1, 2, 4]);</p>
-<p class="p15">~c.value;</p>
-<p class="p15">~d = ~a.at(<span class="s14">\note</span>);</p>
-<p class="p15">~d.value;</p>
-<p class="p15">~a = (note: [7.5]);</p>
-<p class="p15">~d.value; <span class="s15">// [7.5]</span></p>
-<p class="p4"><br></p>
-<p class="p17">// patterns</p>
-<p class="p15">~a = <span class="s13">Pseq</span>([1, 2, 3]);</p>
-<p class="p15">~b = <span class="s13">Pseq</span>([5, ~a, ~a + 10], <span class="s13">inf</span>);</p>
-<p class="p15">~b.value.asStream.nextN(10);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p15">~a = <span class="s13">Prand</span>([100, 200]);</p>
-<p class="p15">~b.value.asStream.nextN(10);</p>
-<p class="p4"><br></p>
-<p class="p18"><br></p>
-<p class="p17">// to do : flop!</p>
-<p class="p4"><br></p>
-<p class="p17">//////////////// deep recursion</p>
-<p class="p4"><br></p>
-<p class="p17">// with normal functions:</p>
-<p class="p15">f = { <span class="s13">|x|</span> if(x <= 1) { 1 } { x * f.(x - 1) } };</p>
-<p class="p15">f.(12)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p15">~faculty = { <span class="s13">|x|</span> if(x == 1) { 1 } { x * ~faculty.(x - 1) } };</p>
-<p class="p17"><span class="s2">~faculty.(12) </span>// doesn't work (=> nil). here we _do_ want recursion ...</p>
-<p class="p4"><br></p>
-<p class="p17">// for explicit recursion use "apply"</p>
-<p class="p15">~faculty = { <span class="s13">|x|</span> if(x == 1) { 1 } { x * ~faculty.apply(x - 1) } };</p>
-<p class="p15">~faculty.(12)</p>
-<p class="p4"><br></p>
-<p class="p16">/*// safety (not yet implemented)</p>
-<p class="p16">Maybe.maxDepth = 1e2; // higher depth is risky..</p>
-<p class="p16">~faculty = { |x|<span class="Apple-converted-space">  </span>x * ~faculty.apply(x - 1)<span class="Apple-converted-space">  </span>}; // infinite recursion</p>
-<p class="p16">~faculty.(12)</p>
-<p class="p19"><br></p>
-<p class="p16">Maybe.maxDepth = nil; // unsafe again.*/</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p17">//////////////// recursion prevention tests</p>
-<p class="p4"><br></p>
-<p class="p15">~b = ~a;</p>
-<p class="p15">~a = ~b;</p>
-<p class="p15">~a.value; <span class="s8">// => nil</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p15">~a = ~b;</p>
-<p class="p15">~b = ~c;</p>
-<p class="p15">~c = ~a;</p>
-<p class="p15">~a.value; <span class="s8">// => nil</span></p>
-<p class="p4"><br></p>
-<p class="p15">~a = ~b + ~c;</p>
-<p class="p15">~c = ~a;</p>
-<p class="p15">~a.value; <span class="s8">// => nil</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p15">~a = ~b;</p>
-<p class="p15">~b = 19;</p>
-<p class="p15">~a.value; <span class="s8">// => 19</span></p>
-<p class="p15">~b.value; <span class="s8">// => 19</span></p>
-<p class="p4"><br></p>
-<p class="p17">// function evaluation and argument passing</p>
-<p class="p4"><br></p>
-<p class="p15">~a = { <span class="s13">|x|</span> x + 2 };</p>
-<p class="p15">~a.value;<span class="Apple-converted-space">  </span><span class="s8">// => nil</span></p>
-<p class="p4"><br></p>
-<p class="p15">~a.value(~c);<span class="Apple-converted-space">  </span><span class="s8">// => nil</span></p>
-<p class="p15">~b = 2000;</p>
-<p class="p15">~a.value(~b); <span class="s8">// => 2002</span></p>
-<p class="p15">~x = [600, 1000];</p>
-<p class="p4"><br></p>
-<p class="p15">(~a + 1).value(~b); <span class="s15">// 2003</span></p>
-<p class="p15">(~a + 1).value(~x); <span class="s15">// [ 603, 1003 ]</span></p>
-<p class="p15">(~a + 1).value({ 8 }); <span class="s15">// binary op func.</span></p>
-<p class="p15">(~a + 1).value({ 5 + 3 }).value <span class="s15">// 11</span></p>
-<p class="p4"><br></p>
-<p class="p15">~a = { <span class="s13">|x|</span> x + 2 + ~b };</p>
-<p class="p15">~a.value(8); <span class="s8">// 2010</span></p>
-<p class="p4"><br></p>
-<p class="p15">~c = <span class="s13">nil</span>;</p>
-<p class="p15">~a = { <span class="s13">|x|</span><span class="Apple-converted-space">  </span>x + 2 + ~c }; <span class="s15">// ~c is undefined.</span></p>
-<p class="p15">~a.value(8); <span class="s8">// => nil</span></p>
-<p class="p4"><br></p>
-<p class="p17"><span class="s2">~c = 100; </span>// define ~c</p>
-<p class="p4"><br></p>
-<p class="p17"><span class="s2">~a.value(8); </span>// now returns a value.</p>
-<p class="p4"><br></p>
-<p class="p17"><span class="s2">~c = ~b; </span>// now recursion?</p>
-<p class="p15">~b = ~a;</p>
-<p class="p17"><span class="s2">~a.value(8); </span>// caught recursion<span class="s2"><span class="Apple-converted-space"> </span></span><span class="s8"> => nil</span></p>
-<p class="p4"><br></p>
-<p class="p15">~c = { 100.rand }; <span class="s15">// ~c is a function</span></p>
-<p class="p4"><br></p>
-<p class="p15">~a.value(8);</p>
-<p class="p15">~a.value(8);</p>
-<p class="p4"><br></p>
-<p class="p15">~c = { ~a + ~b };</p>
-<p class="p17"><span class="s2">~a.value(8);<span class="Apple-tab-span">	</span></span>// ~c is a recursion with ~a<span class="Apple-converted-space"> </span><span class="s2"> </span><span class="s8">=> nil</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p17">// function composition</p>
-<p class="p15">~a = {<span class="s13">|x|</span> x + 1 };</p>
-<p class="p17"><span class="s2">~v = ~a <> ~a <> ~a; </span>// same as: { ~a.(~a.(~a)) }</p>
-<p class="p15">~v.value(0); <span class="s8">// => 3</span></p>
-<p class="p4"><br></p>
-<p class="p15">~a = {<span class="s13">|x|</span> x + 2 };</p>
-<p class="p17"><span class="s2">~v.value(0); </span>// transparent.<span class="Apple-converted-space"> </span><span class="s8"> => 6</span></p>
-<p class="p4"><br></p>
-<p class="p17">// {|x| x }.valueEnvir // doesn't work with current implementation of Function:valueEnvir</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p17">// calculations with functions:</p>
-<p class="p15">~c = 0;</p>
-<p class="p15">~a = { <span class="s13">|ff|</span> { ff = ff + 1; ~c + ff + 2 + ~c } };</p>
-<p class="p15">~x = ~a.value(8);</p>
-<p class="p17"><span class="s2">~x.value; </span>// return 11, 12, 13...</p>
-<p class="p15">~x.value;</p>
-<p class="p15">~x.value;<span class="Apple-converted-space"> </span></p>
-<p class="p15">~c = 100;</p>
-<p class="p17"><span class="s2">~x.value; </span>// return 214, 215 ...</p>
-<p class="p15">~x.value;</p>
-<p class="p4"><br></p>
-<p class="p17">// binary op functions:</p>
-<p class="p15">~c = 0;</p>
-<p class="p15">~a = { <span class="s13">|ff|</span> { [600, 800] } + { ff + 2 + ~c } };</p>
-<p class="p4"><br></p>
-<p class="p15">~x = ~a.value(8);</p>
-<p class="p17"><span class="s2">~x.value; </span>// return [ 610, 810 ]</p>
-<p class="p4"><br></p>
-<p class="p15">~c = { [10, -10].rand };</p>
-<p class="p17"><span class="s2">~x.value; </span>// return random between [ 610..620, 800..810 ]</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/environments/ProxySpace.html b/Help/Libraries/JITLib/environments/ProxySpace.html
deleted file mode 100644
index 1a358f9..0000000
--- a/Help/Libraries/JITLib/environments/ProxySpace.html
+++ /dev/null
@@ -1,229 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Futura; min-height: 15.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 20.0px Futura}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.s7 {font: 9.0px Monaco}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {font: 12.0px Futura}
-span.s10 {font: 13.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ProxySpace</b></span><span class="s2"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>an environment of references on a server<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">superclass: <a href="../../../Core/Object.html"><span class="s4">Object</span></a>: <a href="EnvironmentRedirect.html"><span class="s4">EnvironmentRedirect</span></a> : <a href="LazyEnvir.html"><span class="s4">LazyEnvir</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Generally a <b>proxy</b> is a placeholder for something.<span class="Apple-converted-space">  </span>A node proxy is a placeholder for something <b>playing on a server</b> that writes to a limited number of busses (e.g. a synth or an event stream). NodeProxy objects can be replaced and recombined while they play. Also they can be used to build a larger structure which is used and modified later on. Overview: <a href="../JITLib.html"><span class="s5">JITLib</span></a></p>
-<p class="p4"><br></p>
-<p class="p1">When accessed, ProxySpace returns a<b> </b><a href="../nodeproxy/NodeProxy.html"><span class="s5">NodeProxy</span></a>. A similar class without environment: <a href="../nodeproxy/Ndef.html"><span class="s5">Ndef</span></a></p>
-<p class="p4"><br></p>
-<p class="p1">For more examples see:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span><a href="../tutorials/proxyspace_examples.html"><span class="s4">proxyspace_examples</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span><a href="../tutorials/jitlib_basic_concepts_01.html"><span class="s4">jitlib_basic_concepts_01</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">For GUI overview, see <a href="../extras/ProxyMixer.html"><span class="s5">ProxyMixer</span></a>.</p>
-<p class="p1">See <a href="../nodeproxy/NodeProxy.html"><span class="s5"><b>NodeProxy</b></span></a> for many relevant methods.</p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b>First Example</b></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>p = <span class="s5">ProxySpace</span>.new;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>p.fadeTime = 2; </span>// fadeTime specifies crossfade</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// set the source</p>
-<p class="p7"><span class="Apple-tab-span">	</span>p[<span class="s6">\out</span>] = { <span class="s5">SinOsc</span>.ar([350, 351.3], 0, 0.2) };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>p[<span class="s6">\out</span>] = { <span class="s5">Pulse</span>.ar([350, 351.3] / 4, 0.4) * 0.2 };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>p[<span class="s6">\out</span>] = <span class="s5">Pbind</span>(<span class="s6">\dur</span>, 0.03, <span class="s6">\freq</span>, <span class="s5">Pbrown</span>(0, 1, 0.1, <span class="s5">inf</span>).linexp(0, 1, 200, 350));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>p[<span class="s6">\out</span>] = { <span class="s5">Ringz</span>.ar(p[<span class="s6">\in</span>].ar, [350, 351.3] * 8, 0.2) * 4 };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>p[<span class="s6">\in</span>] = { <span class="s5">Impulse</span>.ar([5, 7]/2, [0, 0.5]) };</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>a.clear(3); </span>// clear after 3 seconds</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b.clear(3);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*new(server, name, clock)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>server</b>: <span class="Apple-tab-span">	</span>a Server object. Note that on remote computers the clock must be in sync.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name</b>: <span class="Apple-tab-span">	</span>a symbol. If a name is given, the proxy space is <b>stored</b> in <b>ProxySpace.all</b> under this name.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clock</b>: <span class="Apple-tab-span">	</span>for event-based or beat-sync playing use a TempoClock.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*push(server, name, clock)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>replace the currentEnvironment with a new ProxySpace and <b>clear</b> the current one, if</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>it is a ProxySpace (this is to avoid piling up proxy spaces).</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>In order to move to another ProxySpace while keeping the current,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>use <b>pop </b>and then <b>push</b> a new one. To have multiple levels of proxy spaces,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>use <b>.new.push;</b></p>
-<p class="p2"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*pop</b></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>restore the previous currentEnvironment</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>Play back and access<span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p1"><span class="s9"><span class="Apple-tab-span">	</span></span><b>play(key, out, numChannels)</b></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>returns a group that plays the <a href="../nodeproxy/NodeProxy.html"><span class="s5">NodeProxy</span></a> at that <b>key</b>. default key: \out</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>out</b>: output channel offset</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels</b>: play this number of channels.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s9"><span class="Apple-tab-span">	</span></span><b>record(key, path, headerFormat, sampleFormat)</b></p>
-<p class="p2"><span class="s8"><b><span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>returns a <a href="../nodeproxy/RecNodeProxy.html"><span class="s5">RecNodeProxy</span></a> that records the NodeProxy at that key</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s10"><span class="Apple-tab-span">	</span></span><b>ar(key, numChannels, offset)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>kr(key, numChannels, offset)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>returns a NodeProxy output that plays the NodeProxy at that key,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>to be used within a function used as input to a node proxy</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s9"><span class="Apple-tab-span">	</span></span><b>wakeUp</b><span class="s9"><span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>when the proxyspace is created without a running server this method can be used</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>to run it (internally this is done by <b>play(key) </b>as well.</p>
-<p class="p10"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s9"><span class="Apple-tab-span">	</span></span><b>fadeTime_</b><span class="Apple-tab-span">	</span>set the fadetime of all proxies as well as the default fade time</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>clock_</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the clock of all proxies as well as the default clock.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>quant_</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the quant of all proxies as well as the default quant.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>free(fadeTime)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>free all proxies (i.e. free also the groups,<span class="Apple-converted-space">  </span>do not stop the monitors)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>release(fadeTime)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>release all proxies (i.e. keep the groups running)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>stop(fadeTime)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stop all proxies (stop only monitors, do not stop synths)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>end(fadeTime)<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>end all proxies (free and stop the monitors)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>clear(fadeTime)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clear the node proxy and remove it from the environment.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this frees all buses. If a fadeTime is given, first fade out, then clear.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*clearAll</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clear all registered spaces</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>add</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add the ProxySpace to the repository (name required)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>remove</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove the ProxySpace from the repository</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p6"><b>Setting the sources:</b></p>
-<p class="p4"><br></p>
-<p class="p13"><br></p>
-<p class="p14"><b><span class="Apple-tab-span">	</span>put(key, obj)</b></p>
-<p class="p14"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Gets the NodeProxy at <b>key</b> (if none exists, returns a new one) and sets its source to <b>obj</b>. For how this works, see also <a href="LazyEnvir.html"><span class="s5">LazyEnvir</span></a> and <a href="../nodeproxy/NodeProxy.html"><span class="s5">NodeProxy</span></a>.</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><b>at(key)</b></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the proxy source object at that key.</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span>The <b>rate</b> and <b>numChannels</b> of the <a href="../nodeproxy/NodeProxy.html"><span class="s5">NodeProxy</span></a> determined in a lazy way from the first object put into this environment (see helpfile). Once it is created it can only be set to a function that returns the same rate and a number of channels equal to the intial one or smaller. For details, see <a href="../tutorials/the_lazy_proxy.html"><span class="s5">the_lazy_proxy</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>"garbage collecting":</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span></span><b>clean(exclude)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>free and remove all proxies that are not needed in order to play the<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ones passed in with 'exclude'. if none are passed in, all proxies</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>that are monitoring (with the .play message) are kept as well as their parents etc.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>reduce(to)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>free all proxies that are not needed in order to play the<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ones passed in with 'to'. if none are passed in, all proxies</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>that are monitored (with the play message) are kept as well as their parents etc.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Coding</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>document(keys)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>creates a new document with the current proxyspace state. This does not allow</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>open functions as proxy sources. see: <a href="../tutorials/jitlib_asCompileString.html"><span class="s5">jitlib_asCompileString</span></a></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>keys</b>: list of keys to document a subset of proxies</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">// ProxySpace returns instances of NodeProxy:</p>
-<p class="p7">a = <span class="s5">NodeProxy</span>(s) <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is equivalent to<span class="Apple-converted-space">  </span>~a;</p>
-<p class="p7">a.source = ...<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is equivalent to<span class="Apple-converted-space">  </span>~a = ...</p>
-<p class="p7">a[3] = ...<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is equivalent to<span class="Apple-converted-space">  </span>~a[3] = ...</p>
-<p class="p4"><br></p>
-<p class="p8">// the two expressions are equivalent:<span class="s8"><span class="Apple-converted-space"> </span></span></p>
-<p class="p7">~out = something;<span class="Apple-converted-space"> </span><span class="s8"> <span class="Apple-converted-space"> </span></span></p>
-<p class="p7">currentEnvironment.put(<span class="s6">\out</span>, something);</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p8">// examples</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">p = </span><span class="s5">ProxySpace</span><span class="s3">.push(s.boot); </span>// use ProxySpace as current environment.</p>
-<p class="p2"><br></p>
-<p class="p7">~out.play;</p>
-<p class="p2"><br></p>
-<p class="p7">~out = { <span class="s5">SinOsc</span>.ar([400, 407] * 0.9, 0, 0.2) };</p>
-<p class="p2"><br></p>
-<p class="p7">~out = { <span class="s5">SinOsc</span>.ar([400, 437] * 0.9, 0, 0.2) * <span class="s5">LFPulse</span>.kr([1, 1.3]) };</p>
-<p class="p2"><br></p>
-<p class="p7">~out = { <span class="s5">SinOsc</span>.ar([400, 437] * 0.9, 0, 0.2) * ~x.kr(2) };</p>
-<p class="p2"><br></p>
-<p class="p7">~x = { <span class="s5">LFPulse</span>.kr([1, 1.3] * <span class="s5">MouseX</span>.kr(1, 30, 1)) };</p>
-<p class="p2"><br></p>
-<p class="p7">~out = { <span class="s5">SinOsc</span>.ar([400, 437] * <span class="s5">Lag</span>.kr(0.1 + ~x, 0.3), 0, 0.2) * ~x };</p>
-<p class="p2"><br></p>
-<p class="p7">p.fadeTime = 5;</p>
-<p class="p2"><br></p>
-<p class="p7">~out = { <span class="s5">SinOsc</span>.ar([400, 437] * 1.1, 0, 0.2) * ~x.kr(2) };</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">p.clear(8); </span>// end and clear all in 8 sec.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">p.pop; </span>// move out.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/BusPlug.html b/Help/Libraries/JITLib/nodeproxy/BusPlug.html
deleted file mode 100644
index a18a84f..0000000
--- a/Help/Libraries/JITLib/nodeproxy/BusPlug.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 17.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #1135f9}
-span.s6 {color: #0b28c6}
-span.s7 {color: #cd1612}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BusPlug<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>a listener on a bus</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from:<span class="Apple-converted-space">  </span></b><a href="../../../Core/Object.html"><span class="s3">Object</span></a> : <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s3">AbstractFunction</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">BusPlug is mainly in use as a basic superclass of NodeProxy, but it can be applied for other things<span class="Apple-converted-space">  </span>as well.</p>
-<p class="p1">Most methods are documented in the <a href="NodeProxy.html"><span class="s4">NodeProxy</span></a> helpfile.</p>
-<p class="p4"><br></p>
-<p class="p1">See also: <a href="../../../ServerArchitecture/Bus.html"><span class="s5">Bus</span></a></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b>*new(server)</b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create a new (neutral) instance on the given server</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>*audio(server, numChannels)</b><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create a new audio rate instance on the given server</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>*control(server, numChannels)</b><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create a new audio rate instance on the given server</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>clear</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Free the bus, end the monitor</p>
-<p class="p7"><br></p>
-<p class="p6"><b>ar(numChannels)</b></p>
-<p class="p6"><b>kr(numChannels)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return a link to my output, which is limited by <b>numChannels</b>. If uninitialized, creates a matching bus. Normally,<b> ar defaults to stereo, kr to mono</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This can be set in the classvars: <b>defaultNumAudio, defaultNumControl</b></p>
-<p class="p4"><br></p>
-<p class="p6"><b>play(out, numChannels, target, multi, vol, fadeTime, addAction)</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Plays from a bus index (<b>out</b>) with a number of channels to another index with a number of channels, within a <b>target</b> (a group, or a server).</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>multi</b>: keep old links and add new one</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>volume</b>: volume at which to monitor</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fadeTime</b>: fade in fade out time</p>
-<p class="p7"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>playN(outs, amps, ins, vol, fadeTime, group, addAction)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of destination channels</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amps<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of<span class="Apple-converted-space">  </span>amplitudes for each channel</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>outs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of source channels</p>
-<p class="p5"><br></p>
-<p class="p6"><b>monitor</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>returns the current monitor (see <a href="Monitor.html"><span class="s4">Monitor</span></a>)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8"><b>Example</b></p>
-<p class="p9"><br></p>
-<p class="p2"><br></p>
-<p class="p10">// using as a control bus listener</p>
-<p class="p2"><br></p>
-<p class="p11">s.boot;</p>
-<p class="p11">z = <span class="s6">Bus</span>.control(s, 16);</p>
-<p class="p11">a = <span class="s6">BusPlug</span>.for(z);</p>
-<p class="p2"><br></p>
-<p class="p11">m = { <span class="s6">Mix</span>(<span class="s6">SinOsc</span>.ar(a.kr(16), 0, 0.1)) }.play;</p>
-<p class="p2"><br></p>
-<p class="p11">z.setn(<span class="s6">Array</span>.rand(16, 300, 320).put(16.rand, rrand(500, 1000)));</p>
-<p class="p11">z.setn(<span class="s6">Array</span>.rand(16, 300, 320).put(16.rand, rrand(500, 1000)));</p>
-<p class="p11">z.setn(<span class="s6">Array</span>.rand(16, 300, 320).put(16.rand, rrand(500, 1000)));</p>
-<p class="p2"><br></p>
-<p class="p11">m.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11">m = { <span class="s6">SinOsc</span>.ar(a.kr(2, <span class="s6">MouseX</span>.kr(0, 19)), 0, 0.1) }.play; <span class="s7">// modulate channel offset</span></p>
-<p class="p2"><br></p>
-<p class="p11">z.setn(<span class="s6">Array</span>.rand(16, 300, 1320).put(16.rand, rrand(500, 1000)));</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11">m.free; z.free;</p>
-<p class="p2"><br></p>
-<p class="p10">// using as a audio monitor</p>
-<p class="p2"><br></p>
-<p class="p11">p = <span class="s6">BusPlug</span>.audio(s,2);</p>
-<p class="p11">d = { <span class="s6">Out</span>.ar(p.index, <span class="s6">PinkNoise</span>.ar([0.1, 0.1])) }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s2">p.play; </span>// monitor whatever plays in p (the execution order does not matter)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11">d.free;</p>
-<p class="p11">d = { <span class="s6">Out</span>.ar(p.index, <span class="s6">PinkNoise</span>.ar([0.1, 0.1])) }.play;</p>
-<p class="p2"><br></p>
-<p class="p11">p.stop;</p>
-<p class="p11">p.play;</p>
-<p class="p2"><br></p>
-<p class="p10">// also p can play to another bus:</p>
-<p class="p2"><br></p>
-<p class="p11">p.stop;</p>
-<p class="p11">p.play(12);</p>
-<p class="p2"><br></p>
-<p class="p10">// listen to that bus for a test:</p>
-<p class="p11">x = { <span class="s6">InFeedback</span>.ar(12,2) }.play;</p>
-<p class="p11">x.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/EnvGate.html b/Help/Libraries/JITLib/nodeproxy/EnvGate.html
deleted file mode 100644
index 1f357b6..0000000
--- a/Help/Libraries/JITLib/nodeproxy/EnvGate.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EnvGate</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>singleton fade envelope</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convenience class for an envelope generator combining fadeTime and gate arguments.</p>
-<p class="p1">Returns an <a href="../../../UGens/Synth control/Envelopes/EnvGen.html"><span class="s2">EnvGen</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(i_level, gate, fadeTime, doneAction, curve)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>i_level</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>initial level of envelope (if set to 1, it starts open)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>gate</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a gate input<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if nil, EnvGate creates a <a href="../../../UGens/Synth control/NamedControl.html"><span class="s2">NamedControl</span></a><span class="s2"> </span>named 'gate'</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>fadeTime</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an input for both attack and decay time</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if nil, EnvGate creates a <a href="../../../UGens/Synth control/NamedControl.html"><span class="s2">NamedControl</span></a> named 'fadeTime' (default time: 0.02)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>doneAction</b><span class="Apple-tab-span">	</span>doneAction of the <a href="../../../UGens/Synth control/Envelopes/EnvGen.html"><span class="s2">EnvGen</span></a> (default: 2)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>curve</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>envelope curve (default: 'sin')</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// examples</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">a = { <span class="s2">LPF</span>.ar(<span class="s2">Saw</span>.ar(200), 600) * <span class="s2">EnvGate</span>.new }.play;</p>
-<p class="p5">a.set(<span class="s3">\fadeTime</span>, 2);</p>
-<p class="p5">a.release;</p>
-<p class="p3"><br></p>
-<p class="p4">// the same as:</p>
-<p class="p5">a.set(<span class="s3">\gate</span>, 0);</p>
-<p class="p3"><br></p>
-<p class="p4">// several env gates can coexist in one synth def.</p>
-<p class="p5">(</p>
-<p class="p5">a = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> sound1 = <span class="s2">LPF</span>.ar(<span class="s2">Saw</span>.ar(80), 600) * <span class="s2">EnvGate</span>.new;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> sound2 = <span class="s2">RLPF</span>.ar(<span class="s2">Saw</span>.ar(200) * 0.5, 6000 * <span class="s2">EnvGate</span>.new + 60, 0.1) * <span class="s2">EnvGate</span>.new;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sound1 + sound2</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p5">a.set(<span class="s3">\fadeTime</span>, 5);</p>
-<p class="p5">a.release;</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/Monitor.html b/Help/Libraries/JITLib/nodeproxy/Monitor.html
deleted file mode 100644
index e201732..0000000
--- a/Help/Libraries/JITLib/nodeproxy/Monitor.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #88281d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #88281c}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #88281c; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd0b0b}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002df4}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #000000}
-span.s5 {color: #072aaf}
-span.s6 {color: #88281d}
-span.s7 {color: #88281c}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Monitor</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>link between busses</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p2"><br></p>
-<p class="p1">For playing contiguous channels to other contiguous busses, one uses <b>play</b>;</p>
-<p class="p1"><span class="Apple-converted-space"> </span>for more complex routings, such as splitting, spreading etc to multiple channels, <b>playN.</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>play(fromIndex, fromNumChannels, toIndex, toNumChannels, target, multi, volume, fadeTime)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>plays from a bus index with a number of channels to another index with a number</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>of channels, within a target group, or a server.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>multi</b>: keep old links and add new one</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>volume</b>: volume at which to monitor</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fadeTime</b>: fade in fade out time</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>playN(outs, amps, ins, vol, fadeTime, target, addAction)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of destination channels</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amps<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of<span class="Apple-converted-space">  </span>amplitudes for each channel</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>ins<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of source channels</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>outs</b>, <b>amps</b> and <b>ins</b> can be nested arrays.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>vol</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>global scaling for amplitudes</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fadeTime</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fade in and out</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>target, addAction</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>where to play (default: server default group)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see also <a href="playN.html"><span class="s2">playN</span></a><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>isPlaying</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns true if the group is still playing</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>stop(fadeTime)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stops within the fadeTime</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>vol_</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the volume</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>out_</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the output index. doesn't work right now.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span></span><b>playToBundle(bundle, ... (same as .play))</b></p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>adds all playing osc messages to the bundle. the bundle should support the message<b> .add</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>//example</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Server.default = s = Server.internal;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.scope(16);</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">Out</span>.ar(87, <span class="s5">SinOsc</span>.ar(<span class="s5">MouseX</span>.kr(40, 10000, 1) * [1, 2, 3], 0, 0.2)) }.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s5">Monitor</span>.new;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.play(87, 3, 1, 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.out = 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.stop(3.0);</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span>x.play(87, 1, 0, 1); </span>// in > out : now mixes down (wrapping)</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span>x.play(89, 1, 0, 2); </span>// in < out : now distributes to 2 channels</p>
-<p class="p5"><span class="s6"><span class="Apple-tab-span">	</span></span>x.stop;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// multiple play</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.play(87, 1, 0, 2, multi:<span class="s5">true</span>);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.play(88, 1, 0, 2, multi:<span class="s5">true</span>);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.play(89, 1, 0, 2, multi:<span class="s5">true</span>);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.stop;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><i>multichannel playing</i></b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">// examples: args are // outs, amps, ins, vol, fadeTime</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">(<span class="Apple-tab-span">	</span>x.playN(</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, 1, 4], <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// to these outs</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.1, 0.4, 0.3], <span class="Apple-tab-span">	</span></span>// with these volumes</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[87, 88, 89]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// from these ins</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p5">)</p>
-<p class="p5">(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.playN(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, [1, 3, 2], 4], <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// outs can be nested: <span class="s7">87 -> 0,<span class="Apple-converted-space">  </span>88 -> [1, 3, 2],<span class="Apple-converted-space">  </span>89 -> 4</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.1, [0.4, 0.2, 0.1], 0.3], // with nested <span class="s7">volumes 0.1, [0.4, 0.2, 0.1], and 0.3</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[87, 88, 89]); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// reading from these ins</p>
-<p class="p5">)<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// can also set global volume and fadetime</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.playN(vol: 0.0, fadeTime:4);<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/Ndef.html b/Help/Libraries/JITLib/nodeproxy/Ndef.html
deleted file mode 100644
index 0a52f7e..0000000
--- a/Help/Libraries/JITLib/nodeproxy/Ndef.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300; min-height: 12.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {text-decoration: underline ; color: #0000ee}
-span.s7 {color: #007300}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {color: #bf0000}
-span.s10 {font: 12.0px Helvetica; color: #000000}
-span.s11 {color: #737373}
-span.s12 {font: 9.0px Monaco; color: #007300}
-span.s13 {font: 12.0px Helvetica; color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ndef<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>node proxy definition</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from:</b> <a href="../../../Core/Object.html"><span class="s4">Object</span></a></span><span class="s5"> : <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s6">AbstractFunction</span></a> :</span><span class="s3"> <a href="BusPlug.html"><span class="s4">BusPlug</span></a></span><span class="s5"> :</span><span class="s3"> <a href="NodeProxy.html"><span class="s4">NodeProxy</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Reference to a proxy, forms an alternative to <a href="../environments/ProxySpace.html"><span class="s5">ProxySpace</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p1">All methods are inherited from <a href="NodeProxy.html"><span class="s5">NodeProxy</span></a></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Ndef(key)</b> returns the instance</p>
-<p class="p1"><b>Ndef(key, obj)</b> stores the object and returns the instance, like <a href="../Patterns/Tdef.html"><span class="s5">Tdef</span></a> and <a href="../Patterns/Pdef.html"><span class="s5">Pdef</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p1">Graphical editor overviewing all current Ndefs: <a href="../extras/NdefMixer.html"><span class="s5">NdefMixer</span></a></p>
-<p class="p1">A general overview: <a href="../JITLib.html"><span class="s5">JITLib</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>First Example</b></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span><span class="s3">(</span><span class="s7">\a</span><span class="s3">).play; </span>// play to hardware output.</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span><span class="s3">(</span><span class="s7">\a</span><span class="s3">).fadeTime = 2; </span>// fadeTime specifies crossfade</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// set the source</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\a</span>, { <span class="s5">SinOsc</span>.ar([350, 351.3], 0, 0.2) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\a</span>, { <span class="s5">Pulse</span>.ar([350, 351.3] / 4, 0.4) * 0.2 });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\a</span>, <span class="s5">Pbind</span>(<span class="s7">\dur</span>, 0.03, <span class="s7">\freq</span>, <span class="s5">Pbrown</span>(0, 1, 0.1, <span class="s5">inf</span>).linexp(0, 1, 200, 350)));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\a</span>, { <span class="s5">Ringz</span>.ar(<span class="s5">Ndef</span>.ar(<span class="s7">\b</span>), [350, 351.3] * 8, 0.2) * 4 });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\b</span>, { <span class="s5">Impulse</span>.ar([5, 7]/2, [0, 0.5]) });</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span><span class="s3">.clear(3); </span>// clear all after 3 seconds</p>
-<p class="p2"><br></p>
-<p class="p8"><br></p>
-<p class="p9"><b>Creation / Class Methods</b></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span><b>*new(key, object)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return a new node proxy and store it in a global ProxySpace under the key. If there is already an Ndef there, replace its object with the new one. The object can be any supported class, see <a href="NodeProxy.html"><span class="s5">NodeProxy</span></a> help.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If key is an association, it is interpreted as <b>key -> server name.<span class="Apple-converted-space"> </span></b> (order changed in SC3.3 !).</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If no name is given, it uses the default server that was default when Ndef was first called. (to change it, see defaultServer_(server)).</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><b>*ar(key, numChannels, offset)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>equivalent to *new(key).ar(numChannels, offset) (see <a href="NodeProxy.html"><span class="s5">NodeProxy</span></a> help for ar method)</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><b>*kr(key, numChannels, offset)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>equivalent to *new(key).kr(numChannels, offset) (see <a href="NodeProxy.html"><span class="s5">NodeProxy</span></a> help for kr method)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span></span><b>*clear</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clear all proxies</p>
-<p class="p12"><br></p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span></span><b>*at(server, key)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return an instance at that key for that server</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>*defaultServer_(a server)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the default server (default: Server.default)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>*all</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the dictionary of all servers, pointing to proxyspaces with Ndefs for each.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>.all;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><b>*dictFor(server)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Return the proxyspace for a given server.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span>.dictFor(s);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p5"><b>Example</b><span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p14"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>).play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>).fadeTime = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>, { <span class="s5">SinOsc</span>.ar([600, 635], 0, <span class="s5">SinOsc</span>.kr(2).max(0) * 0.2) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>, { <span class="s5">SinOsc</span>.ar([600, 635] * 3, 0, <span class="s5">SinOsc</span>.kr(2 * 3).max(0) * 0.2) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>, { <span class="s5">SinOsc</span>.ar([600, 635] * 2, 0, <span class="s5">SinOsc</span>.kr(2 * 3).max(0) * 0.2) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>, <span class="s5">Pbind</span>(<span class="s7">\dur</span>, 0.17, <span class="s7">\freq</span>, <span class="s5">Pfunc</span>({ rrand(300, 700) })) );</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\lfo</span>, { <span class="s5">LFNoise1</span>.kr(3, 400, 800) });</p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span><span class="s3">(</span>\sound<span class="s3">).map(</span>\freq<span class="s3">, </span><span class="s5">Ndef</span><span class="s3">(</span>\lfo<span class="s3">));</span></p>
-<p class="p6"><span class="s7"><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span>(<span class="s7">\sound</span>, { <span class="s5">arg</span> freq; <span class="s5">SinOsc</span>.ar([600, 635] + freq, 0, <span class="s5">SinOsc</span>.kr(2 * 3).max(0) * 0.2) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\lfo</span>, { <span class="s5">LFNoise1</span>.kr(300, 400, 800) });</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span><span class="s3">.clear; </span>//clear all</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><br></p>
-<p class="p5"><b>Simple audio routing with the <<> operator.</b></p>
-<p class="p14"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">(</span></p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span><span class="s3">(</span>\sound<span class="s3">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">RHPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\in1</span>.ar([0, 0]) * <span class="s7">\in2</span>.ar([0, 0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\freq</span>.kr(6000, 2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\rq</span>.kr(0.2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 10</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\a</span>, { <span class="s5">SinOsc</span>.ar(<span class="s5">MouseX</span>.kr(300, 1000, 1) * [1, 1.2], <span class="s7">\phase</span>.ar([0, 0]) * 0.2) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\b</span>, { <span class="s5">LFDNoise3</span>.ar(<span class="s5">MouseY</span>.kr(3, 1000, 1) * [1, 1.2]) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\c</span>, { <span class="s5">LFTri</span>.ar(<span class="s5">MouseY</span>.kr(3, 10, 1) * [1, 1.2]).max(0) });</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>) <<>.in1 <span class="s5">Ndef</span>(<span class="s7">\a</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>) <<>.in2 <span class="s5">Ndef</span>(<span class="s7">\b</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>) <<>.in2 <span class="s5">Ndef</span>(<span class="s7">\c</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\a</span>) <<>.phase <span class="s5">Ndef</span>(<span class="s7">\sound</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\a</span>) <<>.phase <span class="s5">nil</span>; <span class="s9">// unmap</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">Ndef</span><span class="s3">.clear(3);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// clear all Ndefs</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p1"><b>Recursion:</b></p>
-<p class="p4"><br></p>
-<p class="p1">Ndefs can be used recursively.</p>
-<p class="p1">a structure like the following works:</p>
-<p class="p4"><br></p>
-<p class="p16"><br></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>Ndef</span>(<span class="s7">\sound</span>, { <span class="s5">SinOsc</span>.ar([600, 635], <span class="s5">Ndef</span>.ar(<span class="s7">\sound</span>) * 10, <span class="s5">LFNoise1</span>.kr(2).max(0) * 0.2) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>).play;</p>
-<p class="p4"><br></p>
-<p class="p1">This is because there is a feedback delay (the server's <b>block size</b>), usually 64 samples, so that calculation can reiterate over its own outputs. For single sample feedback, see:</p>
-<p class="p4"><br></p>
-<p class="p17"><span class="s5"><span class="Apple-tab-span">	</span>Document</span><span class="s3">.open(</span>"Examples/demonstrations/single_sample_feedback.scd"<span class="s3">)</span></p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p1"><b>Using different servers:</b></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s10"><b><span class="Apple-tab-span">	</span></b></span>// create a new server</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s5">Server</span>(<span class="s7">\foo</span>, <span class="s5">NetAddr</span>(<span class="s11">"127.0.0.1"</span>, 57123)).boot.makeWindow;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>, { <span class="s5">SinOsc</span>.ar([600, 635]) * <span class="s5">SinOsc</span>.kr(2).max(0) * 0.2 }).play; <span class="s9">// play on default</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span> -> <span class="s7">\foo</span>, { <span class="s5">SinOsc</span>.ar([700, 745]) * <span class="s5">SinOsc</span>.kr(2).max(0) * 0.2 }).play;<span class="s9">// play on foo</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// clear definitions</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span> -> <span class="s7">\foo</span>).clear(3);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>).clear(3);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>GUI</b></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>// create a window for a given Ndef</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>).edit</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p19"><span class="s3"><span class="Apple-tab-span">	</span></span>Ndef<span class="s3">(</span><span class="s7">\sound</span><span class="s3">, { </span>|freq = 440, rate = 2|<span class="s3"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq * [1, 1.625]) * <span class="s5">SinOsc</span>.kr(rate).max(0) * 0.2<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// set lags for controls:</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\sound</span>).lag(<span class="s7">\freq</span>, 0.2, <span class="s7">\rate</span>, 0.5);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// create a mixer for all Ndefs:</p>
-<p class="p19"><span class="s3"><span class="Apple-tab-span">	</span></span>NdefMixer<span class="s3">(s);</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Using Associations</b></p>
-<p class="p1">For a complete list, see <a href="NodeProxy.html"><span class="s5">NodeProxy</span></a>, and<span class="s12"> <a href="NodeProxy_roles.html"><span class="s13">NodeProxy_roles</span></a></span></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>// setsrc</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ndef</span>(<span class="s7">\x</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\setsrc<span class="s3"> -> </span><span class="s5">Pbind</span><span class="s3">(</span>\source<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pseq</span>([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s5">LFTri</span>.ar(280 * <span class="s5">Line</span>.kr(1.1, 0.4, rrand(2, 3)) + [0,1]) * 0.1 },</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s5">Pulse</span>.ar(40 + [0,1]) * 0.1 },</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s5">LFTri</span>.ar(<span class="s5">LFTri</span>.kr(1).round(1.0.rand) + 1 * 180 + [0,1], 0.04) * 0.3 },</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\dur</span>, <span class="s5">Prand</span>([3, 2, 4], <span class="s5">inf</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/NodeMap.html b/Help/Libraries/JITLib/nodeproxy/NodeMap.html
deleted file mode 100644
index 756a6e4..0000000
--- a/Help/Libraries/JITLib/nodeproxy/NodeMap.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-span.s1 {font: 13.0px Helvetica}
-span.s2 {color: #091fb1}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.s5 {color: #456c20}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>NodeMap</b></p>
-<p class="p2"><br></p>
-<p class="p3">object to store control values and bus mappings independant of of a specific node.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span><b>set(key1, value1, ...)</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set arguments of a node</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>map(key1, busindex1, ...)</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set bus mappings of a node</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>unset(key1, key2, ...)<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove settings</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>unmap(key1, key2, ...)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove mappings</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>setn(key1, valueArray1, ...) </b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set ranges of controls</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>mapn(key1, busindex1,<span class="Apple-converted-space">  </span>numChan...)</b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>map num busses mappings to node</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>at(index)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return setting at that key.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>sendToNode(aTarget, latency)</b><span class="Apple-tab-span">	</span>apply a setting to a node by sending a bundle</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>send(server, nodeID, latency)</b><span class="Apple-tab-span">	</span>apply a setting to a node by sending a bundle</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span><b>addToBundle(aBundle)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add all my messages to the bundle</p>
-<p class="p6"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p8"><span class="s2">SynthDef</span><span class="s3">(</span>"modsine"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> freq=320, amp=0.2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(freq, 0, amp));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p9">SynthDef<span class="s3">(</span><span class="s4">"lfo"</span><span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> rate=2, busNum=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.kr(busNum, <span class="s2">LFPulse</span>.kr(rate, 0, 0.1, 0.2))<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p10">//start nodes</p>
-<p class="p7">(</p>
-<p class="p7">b = <span class="s2">Bus</span>.control(s,1);</p>
-<p class="p8"><span class="s3">x = </span><span class="s2">Synth</span><span class="s3">(</span>"modsine"<span class="s3">);</span></p>
-<p class="p7">y = <span class="s2">Synth</span>.before(x, <span class="s4">"lfo"</span>, [<span class="s5">\busNum</span>, b]);</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p10">//create some node maps</p>
-<p class="p7">(</p>
-<p class="p7">h = <span class="s2">NodeMap</span>.new;</p>
-<p class="p7">h.set(<span class="s5">\freq</span>, 800);</p>
-<p class="p7">h.map(<span class="s5">\amp</span>, b);</p>
-<p class="p2"><br></p>
-<p class="p7">k = <span class="s2">NodeMap</span>.new;</p>
-<p class="p7">k.set(<span class="s5">\freq</span>, 400);</p>
-<p class="p7">k.unmap(<span class="s5">\amp</span>);</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p10">//apply the maps</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s3">h.sendToNode(x); </span>//the first time a new bundle is made</p>
-<p class="p7">k.sendToNode(x);</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s3">h.sendToNode(x); </span>//the second time the cache is used</p>
-<p class="p7">k.sendToNode(x);</p>
-<p class="p2"><br></p>
-<p class="p7">h.set(<span class="s5">\freq</span>, 600);</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s3">h.sendToNode(x); </span>//when a value was changed, a new bundle is made</p>
-<p class="p2"><br></p>
-<p class="p10">//free all</p>
-<p class="p7">x.free; b.free; y.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/NodeProxy.html b/Help/Libraries/JITLib/nodeproxy/NodeProxy.html
deleted file mode 100644
index ade7bad..0000000
--- a/Help/Libraries/JITLib/nodeproxy/NodeProxy.html
+++ /dev/null
@@ -1,711 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd1612}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd1612; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p19 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #0a26c0; min-height: 14.0px}
-p.p20 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #00831c; min-height: 12.0px}
-p.p22 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0b28c5}
-p.p23 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p24 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Futura; min-height: 15.0px}
-p.p25 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 18.0px Futura}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000ee}
-span.s7 {color: #0a25b9}
-span.s8 {text-decoration: underline ; color: #1032ee}
-span.s9 {color: #1135f9}
-span.s10 {color: #0a26c0}
-span.s11 {color: #0b28c6}
-span.s12 {color: #00831b}
-span.s13 {color: #cd1612}
-span.s14 {font: 12.0px Helvetica; color: #000000}
-span.s15 {color: #0b28c5}
-span.s16 {font: 12.0px Helvetica}
-span.s17 {text-decoration: underline ; color: #0a26c0}
-span.s18 {color: #007300}
-span.s19 {color: #606060}
-span.s20 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NodeProxy</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>a reference on a server<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from:<span class="Apple-converted-space"> </span></b> <a href="../../../Core/Object.html"><span class="s4">Object</span></a></span><span class="s5"> : <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s6">AbstractFunction</span></a> :</span><span class="s3"> <a href="BusPlug.html"><span class="s4">BusPlug</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Generally a <b>proxy</b> is a placeholder for something.<span class="Apple-converted-space">  </span>A node proxy is a placeholder for something <b>playing on a server</b> that writes to a limited number of busses (e.g. a synth or an event stream). NodeProxy objects can be replaced and recombined while they play. Also they can be used to build a larger structure which is used and modified later on. Overview: <a href="../JITLib.html"><span class="s7">JITLib</span></a></p>
-<p class="p4"><br></p>
-<p class="p1">NodeProxy is used internally in <a href="../environments/ProxySpace.html"><span class="s8">ProxySpace</span></a> and it is a superclass of <a href="Ndef.html"><span class="s9">Ndef</span></a>, allowing to easily access and combine a large number of placeholders.</p>
-<p class="p4"><br></p>
-<p class="p1">Graphical editor for a node proxy: <a href="../extras/NodeProxyEditor.html"><span class="s9">NodeProxyEditor</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Note:</b><span class="Apple-converted-space">  </span>NodeProxy plays on a <i>private bus. </i>If you want to<b> hear</b> the output, use <b>play</b> and <b>stop</b>.</p>
-<p class="p1">To free inner players and stop listen:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>end</b></p>
-<p class="p1">Entirely removing all inner settings: <span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>clear</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Further reading:</b></p>
-<p class="p3"><span class="s4"><a href="../tutorials/the_lazy_proxy.html">the_lazy_proxy</a></span></p>
-<p class="p3"><span class="s4"><a href="../tutorials/jitlib_efficiency.html">jitlib_efficienc</a></span><span class="s8">y</span><span class="s10"><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="s4"><a href="../tutorials/jitlib_fading.html">jitlib_fading</a></span></p>
-<p class="p3"><span class="s4"><a href="../tutorials/jitlib_asCompileString.html">jitlib_asCompileString</a></span></p>
-<p class="p3"><span class="s4"><a href="NodeProxy_roles.html">NodeProxy_roles</a></span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><b>First Example</b></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>a = </span><span class="s11">NodeProxy</span><span class="s3">.new.play; </span>// play to hardware output.</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>a.fadeTime = 2; </span>// fadeTime specifies crossfade</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// set the source</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.source = { <span class="s11">SinOsc</span>.ar([350, 351.3], 0, 0.2) };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.source = { <span class="s11">Pulse</span>.ar([350, 351.3] / 4, 0.4) * 0.2 };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.source = <span class="s11">Pbind</span>(<span class="s12">\dur</span>, 0.03, <span class="s12">\freq</span>, <span class="s11">Pbrown</span>(0, 1, 0.1, <span class="s11">inf</span>).linexp(0, 1, 200, 350));</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>b = <span class="s11">NodeProxy</span>.new;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>a.source = { <span class="s11">Ringz</span>.ar(b.ar, [350, 351.3] * 8, 0.2) * 4 };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b.source = { <span class="s11">Impulse</span>.ar([5, 7]/2, [0, 0.5]) };</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>a.clear(3); </span>// clear after 3 seconds</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b.clear(3);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><b>Creation / Class Methods</b></p>
-<p class="p9"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*new(server, rate, numChannels, inputs)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return a new instance of NodeProxy.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server </b>- The server on which to run and where the bus is allocated (default: Server.default)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rate<span class="Apple-converted-space"> </span></b> - If given, proxy is initialized to this rate</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels<span class="Apple-converted-space"> </span></b> - If given, proxy is initialized to this number of channels</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>inputs<span class="Apple-converted-space"> </span></b> - If given, proxy is initialized with the given inputs as objects on subsequent slots.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// new node proxy</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s11">NodeProxy</span>(s, <span class="s12">\audio</span>, 4);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numChannels;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.clear; </span>// remove bus.</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.numChannels; <span class="s13">// nil.</span></p>
-<p class="p4"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*audio(server, numChannels)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return a new audio rate NodeProxy of a given number of channels.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server </b>- The server on which to run and where the bus is allocated (default: Server.default)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels<span class="Apple-converted-space"> </span></b> - If given, proxy is initialized to this number of channels (default: 2)</p>
-<p class="p15"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*control(server, numChannels)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return a new control rate NodeProxy of a given number of channels.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server </b>- The server on which to run and where the bus is allocated (default: Server.default)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels<span class="Apple-converted-space"> </span></b> - If given, proxy is initialized to this number of channels (default: 1)<span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><b>*for(bus)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return a new instance of NodeProxy using a given Bus</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p6"><b>Listening to the output</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>play(outbus, numChannels, target, multi, vol, fadeTime, addAction)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>plays to a bus index (<b>outbus</b>) with a number of channels (<b>numChannels</b>) within a <b>target</b> group, or a server.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>multi</b>: keep old links and add new one</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>vol</b>: volume at which to monitor</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fadeTime</b>: fade in fade out time</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>playN(outs, amps, ins, vol, fadeTime, group, addAction)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of destination channels</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amps<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of<span class="Apple-converted-space">  </span>amplitudes for each channel</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>outs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of source channels</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see <a href="playN.html"><span class="s5">playN</span></a></p>
-<p class="p4"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>stop(fadeTime)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>stop to play out public channels (private channels keep playing as others might listen still) this stops the monitoring. To stop the objects playing, use <b>free, release</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fadeTime: </b>decay time for this action</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>end(fadeTime)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>releases the synths and stops playback</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fadeTime: </b>decay time for this action</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>ar(numChannels)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>kr(numChannels)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return a link to my output, which is limited by [numChannels]</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>causes an uninitialized proxy to create a matching bus.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>normally ar defaults to stereo, kr to mono. this can be set in the classvars:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>defaultNumAudio, defaultNumControl</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Setting the source:</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span>NodeProxy keeps a number of slots which can be sources and are mixed on the same bus.. The default source is the slot 0. All objects can be exchanged while running, and also before and after. Normally, the source is active immediately. If sources are to be exchanged "quietly", set the node proxy to sleep (awake = false), or use the message prime().</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><br></p>
-<p class="p6"><b>Supported sources:</b></p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="NodeProxy.html"><span class="s9">NodeProxy</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>played by reading from the other node proxie's bus.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../Core/Kernel/Function.html"><span class="s9">Function</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>interpreted as ugen function, and plays a <a href="../../../ServerArchitecture/Synth.html"><span class="s9">Synth</span></a>, similar to Function.play.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../Math/SimpleNumber.html"><span class="s9">SimpleNumber</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>write this value to the bus continuously</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../ServerArchitecture/Bus.html"><span class="s9">Bus</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reads from the bus</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../ServerArchitecture/SynthDef.html"><span class="s9">SynthDef</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>plays a <a href="../../../ServerArchitecture/Synth.html"><span class="s9">Synth</span></a> using the SynthDef. This is useful for triggering.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../Core/Symbol.html"><span class="s9">Symbol</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>plays a <a href="../../../ServerArchitecture/Synth.html"><span class="s9">Synth</span></a> from the SynthDef with this name. This is useful for triggering.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s9">Pattern</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>played as event pattern (using <a href="../../../Streams-Patterns-Events/Patterns/Pbind.html"><span class="s9">Pbind</span></a> or other event patterns)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../Streams-Patterns-Events/Stream.html"><span class="s9">Stream</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>played as event stream (a stream returning events)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>nil<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="../../../Core/Nil.html"><span class="s9">Nil</span></a> removes all objects.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../Patterns/Pdef.html"><span class="s9">Pdef</span></a>, <a href="../Patterns/EventPatternProxy.html"><span class="s9">EventPatternProxy</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>played like a stream</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../Scheduling/Task.html"><span class="s9">Task</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>played, no output is assigned.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../Patterns/Tdef.html"><span class="s9">Tdef</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>played like Task</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../../Collections/Event.html"><span class="s9">Event</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>played like in a pattern.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>Associations</b>:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>(\filter -> func)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>filter previous input (with post control)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(\filterIn -> func)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>filter previous input (with pre control)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(\set -> event pattern)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set controls with the event keys of the pattern</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(\setbus -> event pattern)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set bus with an event pattern. Bus value is the \value key of each event.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(\setsrc -> event pattern)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the source with an event pattern. source is the \source key of event.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(\control -> array or number)<span class="Apple-tab-span">	</span>prepare an efficient way to set values by index</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(\mix -> func)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mix audio</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>crucial library:</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../crucial/Players/AbstractPlayer.html"><span class="s9">AbstractPlayer</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>started in a separate bus, mapped to this bus</p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../../crucial/Instr/Instr.html"><span class="s9">Instr</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>converted to player and started</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Definitions for other sources can be added easily.</p>
-<p class="p16"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><b>Setting the source:</b></p>
-<p class="p4"><br></p>
-<p class="p11"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>source_(anObject)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Play a new synth through proxy and release/remove any old ones.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>anObject</b> - can be one of the supported inputs <b>(see above)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>prime(anObject)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set source without starting the synth. To start it, <b>send</b> can be used later. Running synths are released and proxy is initialized if still neutral.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>add(anObject, channelOffset, extraArgs)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Add a new source to the present ones</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>removeAt(index)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove the object at index i and its synths, if they exist.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>removeLast</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Remove the last object and its synths, if they exist.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>put(index, obj, channelOffset, extraArgs, now)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the source by index. Objects can be inserted at any index, only the order of indices is relevant. Internally, NodeProxy uses an <a href="../../../Collections/Order.html"><span class="s9">Order</span></a> to access the sources.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index</b>:<span class="Apple-tab-span">	</span>where the object should be placed in the internal<span class="Apple-converted-space">  </span>order. if <b>-1</b>, all objects are freed</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>obj</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A valid source (see above).</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>channelOffset</b>: using a multichannel setup it can be useful to set this, when the objects numChannels is smaller than the proxy<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>extraArgs</b>: <span class="Apple-tab-span">	</span>Arguments that can be sent with the object directly (not cached)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>now</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if set to false, only prepare the source and do not start the object (see <b>prime</b>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put can be used with the array indexing syntax:<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s11">NodeProxy</span>.new.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[0] = { <span class="s15">SinOsc</span>.ar(<span class="s15">Rand</span>(200, 899)) * 0.1.dup };</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[2] = { <span class="s15">SinOsc</span>.ar(<span class="s15">Rand</span>(200, 899)) * 0.1.dup };</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.sources.do(<span class="s15">_</span>.postcs);</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// using multiple index expands into multiple objects</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a[0..5] = { <span class="s11">SinOsc</span>.ar(<span class="s11">Rand</span>(200, 899)) * 0.1.dup };</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.sources.do(<span class="s11">_</span>.postcs);</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.send; </span>// exchange synths, using the sources as definitions</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.clear;<span class="Apple-converted-space"> </span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>pause</b> - Pause all objects and set proxy to paused</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>resume</b> - <b>I</b>f paused, start all objects<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>rebuild</b> - Rebuild all SynthDefs from sources.</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>orderNodes(nodeProxy, nodeProxy...)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Arrange the order of groups from this to the last. This can be important when external input is filtered in order to <b>minimize latency</b>.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Note that if a <b>parentGroup</b> was provided, the nodes must be in the same parentGroup.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>proxyA <-- proxyB</b><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set proxyA source to proxyB and play proxyA. If proxyB was playing, fade it out. This is convenient in the following situation:</p>
-<p class="p14"><span class="s16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>b = <span class="s11">NodeProxy</span>.new.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.source = { <span class="s11">PinkNoise</span>.ar(0.2.dup) };</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now I want to filter b through a new proxy.</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s11">NodeProxy</span>.new;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a <-- b; a.source = { <span class="s11">HPF</span>.ar(b.ar, 7000) };</p>
-<p class="p14"><span class="s16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a.source = { <span class="s11">HPF</span>.ar(b.ar, 3000) };<span class="s13">// changing the source</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.clear; b.clear;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>proxyA <<> proxyB</b><span class="Apple-tab-span">	</span><b><<> proxyC <<> ...</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Chaining: Map proxyC source to proxyB <b>\in </b>argument, and proxyB to proxyA's in argument.</p>
-<p class="p14"><span class="s16"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s11">NodeProxy</span>.new.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.source = { <span class="s11">RLPF</span>.ar(<span class="s12">\in</span>.ar(0!2), [4600, 7000], 0.1) };</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s11">NodeProxy</span>.new.source_ { <span class="s11">Impulse</span>.ar([5, 7] / 2) };</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a <<> b;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>proxyA <>> proxyB</b><span class="Apple-tab-span">	</span><b><>> proxyC <>> ...</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Inverse of the above.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p18"><b>Release and cleaning up:</b></p>
-<p class="p11"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>free(fadeTime)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Release all running synths and the group. If patterns are playing, stop them.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fadeTime: </b>decay time for this action</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>release(fadeTime)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>release running synths. If patterns are playing, stop them.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fadeTime: </b>decay time for this action</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>clear(fadeTime)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>reset everything to nil, neutralizes rate/numChannels</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if a fadeTime is given, first fade out, then clear.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p18"><b>Accessing Instance and Class Variables</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>sources<span class="Apple-tab-span">	</span></b>Returns an array of all sources</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>source</b><span class="Apple-tab-span">	</span>Returns the first source.</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>server</b><span class="Apple-tab-span">	</span>The node proxy's server (a <a href="../../../ServerArchitecture/Server.html"><span class="s9">Server</span></a>).</p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>bus</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The node proxy's private bus (a <a href="../../../ServerArchitecture/Bus.html"><span class="s9">Bus</span></a>). Because it has a private bus, it is not audible directly - monitoring it by (.play or playN) routs it to the hardware output channels.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>rate</b> - The bus rate (default: nil) The rate and number of channels is determined either when the instance is created (.control/.audio) or by lazy initialisation from the first source (see <a href="../tutorials/the_lazy_proxy.html"><span class="s17">the_lazy_proxy</span></a><span class="s17">)</span><span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>numChannels</b> - The bus numChannels (default: nil)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>isNeutral</b> - true if the proxy has no initialized bus.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>group</b><span class="Apple-tab-span">	</span>The node proxy's group (a <a href="../../../ServerArchitecture/Group.html"><span class="s9">Group</span></a>). This is maintained by the proxy and serves as a context in which all synths are placed.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>parentGroup</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>parentGroup_<span class="Apple-tab-span">	</span></b>Access the parentGroup (default: nil), which can be set to run the proxy's group in another group. This group has to be maintained (kept playing etc.) externally.</p>
-<p class="p4"><br></p>
-<p class="p11"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>clock_</b><span class="Apple-tab-span">	</span>A clock, which can be set to account for different timing schemes, such as beat accurate replacement of sources.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>quant_</b><span class="Apple-tab-span">	</span>A quant value, to specify quantizes replacement of sources. Compatible with the general use of quant in SuperCollider.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>quantize(... proxies)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Synchronize the proxies by resending and adjusting to quant.<span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>monitor</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>monitor_<span class="Apple-tab-span">	</span></b>Access the Monitor object, which plays back the output of the proxy's private bus.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>loaded</b><span class="Apple-tab-span">	</span>Returns true if the object has been initialized on the server, e.g. a synthDef has been stored.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>paused</b><span class="Apple-tab-span">	</span>Returns true if the processes are paused.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>awake_</b><span class="Apple-tab-span">	</span>If set to false (default: true), a change of the source does not start a new synth immediately. This is useful when synths are triggered by <b>spawn</b>, and a change of sound should not duplicate sends.</p>
-<p class="p11"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>fadeTime_(time)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set the crossfade time. See:<span class="Apple-converted-space"> </span><span class="s10"> <a href="../tutorials/jitlib_fading.html"><span class="s8">jitlib_fading</span></a>.</span></p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>*defaultNumAudio_</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>*defaultNumControl_</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the default channel number for audio/control busses</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b>Setting synth controls</b></p>
-<p class="p11"><br></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>set(key, val, ...)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>NodeProxy behaves like its nodeMap (<a href="NodeMap.html"><span class="s9">NodeMap</span></a>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>set</b>,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>setn</b>,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>unset</b>,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>unmap</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>map(key(s), proxy,<span class="Apple-converted-space">  </span>key(s), proxy, .... )</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Map the arguments in keys to the subsequent channels of another proxy<span class="Apple-converted-space">  </span>(keys can be a symbol or a number)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the proxy has <b>multiple channels</b>, subsequent channels of the control, if present, are mapped. Note<span class="Apple-converted-space">  </span>that you should not map to more channels than the control has.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>setn(key, list, ...)</b><span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set ranges of controls</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>run(flag)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pause/unpause all synths in the group</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>xset(key, val, ...)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set with crossfade into new setting</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>x<b>map(keys, proxy)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>map with crossfade into new setting</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>xsetn()</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>untested</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>lag(key, val, ...)<span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the lag values of these args (identical to setRates)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>to remove these settings, use: <b>lag(\key1, nil, key2, nil, ...)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>setRates(key, rate1, ...)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the default rate (\tr, \ir, numerical) for synthDef arg</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rate of <b>nil</b> removes setting</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>controlNames(except)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the <a href="../../../UGens/Synth control/ControlName.html"><span class="s9">ControlName</span></a> objects of all slots, <b>except</b> the names of this list (default: [\out, \i_out, \gate, \fadeTime], which are used internally).</p>
-<p class="p19"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s10"><span class="Apple-tab-span">	</span></span><b>controlKeys(except, noInternalKeys)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns the keys (symbols) of all control names objects of all slots, <b>except</b> the names of this list.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(default: none). If <b>noInternalKeys</b> is true (default: true), it ignores the keys<span class="Apple-converted-space">  </span>[\out, \i_out, \gate, \fadeTime].</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>getKeysValues(keys, except, withDefaults = true, noInternalKeys = true)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Get all key value pairs from both NodeMap (the settings) and default arguments.</p>
-<p class="p19"><br></p>
-<p class="p10"><span class="s10"><span class="Apple-tab-span">	</span></span><b>controlKeysValues(keys, except)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Get all key value pairs from default arguments.</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p18"><b>Bus-like behaviour:</b></p>
-<p class="p10">In some ways, Node Proxy behaves like a <a href="../../../ServerArchitecture/Bus.html"><span class="s9">Bus</span></a>:</p>
-<p class="p20"><br></p>
-<p class="p11"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>line(value, dur)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set my bus to the new value in dur time linearly</p>
-<p class="p10"><span class="Apple-tab-span">	</span>x<b>line(value, dur)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>set my bus to the new value in dur time exponentially</p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>gate(value, dur)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>gate my bus to the level value for dur time</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p18"><b>Sending synths to server</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span>send(extraArgs, index, freeLast)</b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Send a new synth without releasing the old one. If the source is a stream or a pattern, it starts a new one.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>extraArgs:</b> Arguments used to set the synth. the argument list is applied to the synth only.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index</b>:<span class="Apple-tab-span">	</span>What slot to send a new synth with. If nil, uses all. (default: nil)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freeLast</b>: if to free the last synth at that index or not (default: true)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>sendAll(extraArgs, freeLast)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Send all synths, or restart all objects.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>extraArgs:</b> Arguments used to set the synth. the argument list is applied to the synth only.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freeLast</b>: if to free the last synth at that index or not (default: true)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>sendEach(extraArgs, freeLast)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Like send, just iterating seperately over the objects.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>wakeUp<span class="Apple-converted-space"> </span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Until the proxy is not used by any output ( either .play or .ar/.kr ) it is not running on the server. you can wake it up to force it playing. Normally this is not needed.</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>record(path, headerFormat, sampleFormat)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>record output to file (returns a [RecNodeProxy] that you can use for control)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns a [RecNodeProxy]</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p1"><b>GUI</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>edit<span class="Apple-converted-space"> </span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a new instance of <a href="../extras/NodeProxyEditor.html"><span class="s9">NodeProxyEditor</span></a> for this proxy.<span class="Apple-converted-space"> </span></p>
-<p class="p21"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a = <span class="s11">NodeProxy</span>.new;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.edit;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p22"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.source = { </span>|freq = 440, rate = 2|<span class="s3"><span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s15">SinOsc</span>.ar(freq * [1, 1.625]) * <span class="s15">SinOsc</span>.kr(rate).max(0) * 0.2<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b>Examples</b></p>
-<p class="p20"><br></p>
-<p class="p10"><b>For more, see </b><a href="../environments/ProxySpace.html"><span class="s5"><b>ProxySpace</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">///////////////////// using node proxy with ugen functions<span class="Apple-converted-space">  </span>/////////////////////<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p7">a = <span class="s5">NodeProxy</span>.audio(s, 2);</p>
-<p class="p23"><span class="s3">a.play; </span>// play to hardware output, return a group with synths</p>
-<p class="p2"><br></p>
-<p class="p23">// setting the source</p>
-<p class="p7">a.source = { <span class="s5">SinOsc</span>.ar([350, 351.3], 0, 0.2) };</p>
-<p class="p2"><br></p>
-<p class="p23">// the proxy has two channels now:</p>
-<p class="p7">a.numChannels.postln;</p>
-<p class="p7">a.source = { <span class="s5">SinOsc</span>.ar([390, 286] * 1.2, 0, 0.2) };</p>
-<p class="p2"><br></p>
-<p class="p23">// exeeding channels wrap:</p>
-<p class="p7">a.source = { <span class="s5">SinOsc</span>.ar([390, 286, 400, 420, 300] * 1.2, 0, 0.2) };</p>
-<p class="p2"><br></p>
-<p class="p23">// other inputs</p>
-<p class="p7">a.source = { <span class="s5">WhiteNoise</span>.ar([0.01,0.01]) };</p>
-<p class="p7">a.source = 0;</p>
-<p class="p23"><span class="s3">a.source = </span><span class="s18">\default</span><span class="s3">; </span>// synthDef on server</p>
-<p class="p7">a.source = <span class="s5">SynthDef</span>(<span class="s19">"w"</span>, { <span class="s5">arg</span> out=0; <span class="s5">Out</span>.ar(out,<span class="s5">SinOsc</span>.ar([<span class="s5">Rand</span>(430, 600), 600], 0, 0.2)) });</p>
-<p class="p23"><span class="s3">a.source = </span><span class="s5">nil</span><span class="s3">; </span>//<span class="Apple-converted-space">  </span>removes any object</p>
-<p class="p2"><br></p>
-<p class="p23">// feedback</p>
-<p class="p7">a.source = { <span class="s5">SinOsc</span>.ar(a.ar * 7000 * <span class="s5">LFNoise1</span>.kr(1, 0.3, 0.6) + 200, 0, 0.1) };</p>
-<p class="p7">a.source = { <span class="s5">SinOsc</span>.ar(a.ar * 6000 * <span class="s5">MouseX</span>.kr(0, 2) + [100, 104], 0, 0.1) };</p>
-<p class="p2"><br></p>
-<p class="p23">// fadeTime</p>
-<p class="p7">a.fadeTime = 2.0;</p>
-<p class="p7">a.source = { <span class="s5">SinOsc</span>.ar([390, 286] * <span class="s5">ExpRand</span>(1, 3), 0, 0.2) };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">// adding nodes</p>
-<p class="p7">a.add({ <span class="s5">SinOsc</span>.ar([50, 390]*1.25, 0, 0.1) });</p>
-<p class="p7">a.add({ <span class="s5">BrownNoise</span>.ar([0.02,0.02]) });</p>
-<p class="p2"><br></p>
-<p class="p23">// setting nodes at indices:</p>
-<p class="p7">a[0] = { <span class="s5">SinOsc</span>.ar( 700 * <span class="s5">LFNoise1</span>.kr(1, 0.3, 0.6) + 200, 0, 0.1) };</p>
-<p class="p7">a[1] = { <span class="s5">LFPulse</span>.kr(3, 0.3) * <span class="s5">SinOsc</span>.ar(500, 0, 0.1) };</p>
-<p class="p7">a[2] = { <span class="s5">LFPulse</span>.kr(3.5, 0.3) * <span class="s5">SinOsc</span>.ar(600, 0, 0.1) };</p>
-<p class="p7">a[3] = { <span class="s5">SinOsc</span>.ar([1,1.25] * 840, 0, 0.1) };</p>
-<p class="p2"><br></p>
-<p class="p23">// filtering: the first argument is the previous bus content. more args can be used as usual.</p>
-<p class="p7">a[3] = <span class="s18">\filter</span> -> { <span class="s5">arg</span> in; in * <span class="s5">SinOsc</span>.ar(<span class="s5">Rand</span>(100,1000)) };</p>
-<p class="p7">a[2] = <span class="s18">\filter</span> -> { <span class="s5">arg</span> in; in * <span class="s5">MouseY</span>.kr(0,1) };</p>
-<p class="p7">a[8] = <span class="s18">\filter</span> -> { <span class="s5">arg</span> in; in * <span class="s5">MouseX</span>.kr(0,1) };</p>
-<p class="p7">a[4] = <span class="s18">\filter</span> -> { <span class="s5">arg</span> in; in * <span class="s5">SinOsc</span>.ar(<span class="s5">ExpRand</span>(1,5)).max(0) };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">// setting controls</p>
-<p class="p7">a.fadeTime = 2.0;</p>
-<p class="p7">a.source = { <span class="s5">arg</span> f=400; <span class="s5">SinOsc</span>.ar(f * [1,1.2] * rrand(0.9, 1.1), 0, 0.1) };</p>
-<p class="p7">a.set(<span class="s18">\f</span>, rrand(900, 300));</p>
-<p class="p7">a.set(<span class="s18">\f</span>, rrand(1500, 700));</p>
-<p class="p7">a.xset(<span class="s18">\f</span>, rrand(1500, 700)); <span class="s20">// crossfaded setting</span></p>
-<p class="p7">a.source = { <span class="s5">arg</span> f=400; <span class="s5">RLPF</span>.ar(<span class="s5">Pulse</span>.ar(f * [1,1.02] * 0.05, 0.5, 0.2), f * 0.58, 0.2) };</p>
-<p class="p2"><br></p>
-<p class="p23">// control lags</p>
-<p class="p23"><span class="s3">a.lag(</span><span class="s18">\f</span><span class="s3">, 0.5); </span>// the objects are built again internally and sent to the server.</p>
-<p class="p7">a.set(<span class="s18">\f</span>, rrand(1500, 700));</p>
-<p class="p7">a.lag(<span class="s18">\f</span>, <span class="s5">nil</span>);</p>
-<p class="p7">a.set(<span class="s18">\f</span>, rrand(1500, 700));</p>
-<p class="p2"><br></p>
-<p class="p7">a.fadeTime = 1.0;</p>
-<p class="p2"><br></p>
-<p class="p23">// mapping controls to other node proxies</p>
-<p class="p2"><br></p>
-<p class="p7">c = <span class="s5">NodeProxy</span>.control(s, 2);</p>
-<p class="p7">c.source = { <span class="s5">SinOsc</span>.kr([10,20] * 0.1, 0, 150, 1300) };</p>
-<p class="p7">a.map(<span class="s18">\f</span>, c);</p>
-<p class="p7">a[0] = { <span class="s5">arg</span> f=400; <span class="s5">RHPF</span>.ar(<span class="s5">Pulse</span>.ar(f * [1,1.2] * 0.05, 0.5, 0.2), f * 0.58, 0.2) };</p>
-<p class="p7">c.source = { <span class="s5">SinOsc</span>.kr([10,16] * 0.02, 0, 50, 700) };</p>
-<p class="p7">c.source = { <span class="s5">Line</span>.kr(300, 1500, 10) + <span class="s5">SinOsc</span>.kr(20 * [1,2], 0, 100) };</p>
-<p class="p7">a[1] = { <span class="s5">arg</span> f; <span class="s5">LFPar</span>.ar(f % <span class="s5">MouseX</span>.kr(1, 40, 1) * 4 + 360, 0, 0.2) };</p>
-<p class="p2"><br></p>
-<p class="p23">// map multiple channels of one proxy to multiple controls of another</p>
-<p class="p23">// recently changed behaviour!</p>
-<p class="p2"><br></p>
-<p class="p7">a.source = { <span class="s5">arg</span> f=#[400, 400]; <span class="s5">LPF</span>.ar(<span class="s5">Pulse</span>.ar(f[0] * [0.4,1], 0.2, 0.2), f[1] * 3) };</p>
-<p class="p23"><span class="s3">a.map(</span><span class="s18">\f</span><span class="s3">, c); </span>// multichannel proxy c is mapped to multichannel control of a</p>
-<p class="p7">a.source = { <span class="s5">arg</span> f=#[400, 400]; <span class="s5">LPF</span>.ar(<span class="s5">Pulse</span>.ar(f, 0.2, 0.2), f[1]) };</p>
-<p class="p7">a.source = { <span class="s5">arg</span> f=#[400, 400]; <span class="s5">Formant</span>.ar(140, f * 1.5, 100, 0.1)<span class="Apple-converted-space">  </span>};</p>
-<p class="p7">c.source = { <span class="s5">SinOsc</span>.kr([<span class="s5">Line</span>.kr(1, 30, 10), 1], 0, [100, 700], [300, 700]) };</p>
-<p class="p7">c.source = 400;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">c.fadeTime = 5.5;</p>
-<p class="p7">c.source = { <span class="s5">LFNoise0</span>.kr([2.3, 1.0], [100, 700], [300, 1700]) };</p>
-<p class="p7">c.source = { <span class="s5">SinOsc</span>.kr([2.3, 1.0], 0, [100, 700], [300, 1700]) };</p>
-<p class="p7">c.source = 400;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">// behave like a sc2 plug</p>
-<p class="p7">c.gate(1400, 0.1);</p>
-<p class="p7">c.gate(1000, 0.1);</p>
-<p class="p7">c.line(1000, 1);</p>
-<p class="p2"><br></p>
-<p class="p23">// direct access</p>
-<p class="p7">a.lineAt(<span class="s18">\f</span>, 300, 2);</p>
-<p class="p7">a.xlineAt(<span class="s18">\f</span>, 600, 0.3);</p>
-<p class="p7">a.gateAt(<span class="s18">\f</span>, 1600, 0.3);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">// changing nodeMaps</p>
-<p class="p7">a.unmap(<span class="s18">\f</span>);</p>
-<p class="p7">n = a.nodeMap.copy;</p>
-<p class="p7">n.set(<span class="s18">\f</span>, 700);</p>
-<p class="p7">a.fadeToMap(n);</p>
-<p class="p7">n = a.nodeMap.copy;</p>
-<p class="p7">n.set(<span class="s18">\f</span>, 400);</p>
-<p class="p7">a.fadeTime = 1.0;</p>
-<p class="p23"><span class="s3">a.fadeToMap(n, [</span><span class="s18">\f</span><span class="s3">]); </span>// linear interpolation to new map: experimental</p>
-<p class="p23"><span class="s3">a.map(</span><span class="s18">\f</span><span class="s3">, c); </span>// restore mapping</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">// sending envelopes (up to 8 levels)</p>
-<p class="p7">w = <span class="s5">Env</span>.new(<span class="s5">Array</span>.rand(3, 400, 1000),<span class="s5">Array</span>.rand(2, 0.3, 0.001), -4);</p>
-<p class="p7">c.env(w);</p>
-<p class="p7">c.env(w);</p>
-<p class="p7">w = <span class="s5">Env</span>.new(<span class="s5">Array</span>.rand(8, 400, 1000),<span class="s5">Array</span>.rand(7, 0.03, 0.1));</p>
-<p class="p7">c.env(w);</p>
-<p class="p7">c.env(w);</p>
-<p class="p2"><br></p>
-<p class="p23">// stop synthesis, then wake up proxies:</p>
-<p class="p2"><br></p>
-<p class="p23"><span class="s3">a.stop; </span>// stop the monitor</p>
-<p class="p23"><span class="s3">a.play; </span>// start the monitor</p>
-<p class="p23"><span class="s3">a.end;<span class="Apple-tab-span">	</span></span>// release the synths and stop the monitor</p>
-<p class="p23"><span class="s3">c.free;<span class="Apple-converted-space">  </span></span>// free the control proxy c</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">///////////////////// channel offset/object index<span class="Apple-converted-space">  </span>/////////////////////<span class="Apple-converted-space"> </span></p>
-<p class="p24"><br></p>
-<p class="p2"><br></p>
-<p class="p7">a = <span class="s5">NodeProxy</span>.audio(s,2);</p>
-<p class="p7">a.play;</p>
-<p class="p7">a[0] = { <span class="s5">Ringz</span>.ar(<span class="s5">Impulse</span>.ar(5, 0, 0.1), 1260) };</p>
-<p class="p7">a.put(1, { <span class="s5">Ringz</span>.ar(<span class="s5">Impulse</span>.ar(5.3, 0, 0.1), 420) }, 1);</p>
-<p class="p7">a.put(0, { <span class="s5">Ringz</span>.ar(<span class="s5">Dust</span>.ar([1,1]*15.3,<span class="Apple-converted-space">  </span>0.1), 720) }, 1);</p>
-<p class="p7">a.put(1, { <span class="s5">Ringz</span>.ar(<span class="s5">Impulse</span>.ar(5.3, 0, 0.1), 420) }, 1);</p>
-<p class="p7">a.end;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">///////////////////// beat accurate playing<span class="Apple-converted-space">  </span>/////////////////////<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p24"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">a = <span class="s5">NodeProxy</span>.audio(s,2);</p>
-<p class="p7">a.play;</p>
-<p class="p2"><br></p>
-<p class="p7">a.clock = <span class="s5">TempoClock</span>(2.0).permanent_(<span class="s5">true</span>); <span class="s20">// round to every 2.0 seconds</span></p>
-<p class="p7">a.source = { <span class="s5">Ringz</span>.ar(<span class="s5">Impulse</span>.ar(0.5, 0, 0.3), 3000, 0.01) };</p>
-<p class="p7">a[1] = { <span class="s5">Ringz</span>.ar(<span class="s5">Impulse</span>.ar([0.5, 1], 0, 0.3), 1000, 0.01) };</p>
-<p class="p7">a[2] = { <span class="s5">Ringz</span>.ar(<span class="s5">Impulse</span>.ar([3, 5]/2, 0, 0.3), 8000, 0.01) };</p>
-<p class="p7">a[3] = { <span class="s5">Ringz</span>.ar(<span class="s5">Impulse</span>.ar([3, 5]*16, 0, 0.3), 5000, 0.01) * <span class="s5">LFPulse</span>.kr(0.5, 0, 0.05) };</p>
-<p class="p2"><br></p>
-<p class="p7">a.removeLast;</p>
-<p class="p7">a.removeAt(2);</p>
-<p class="p2"><br></p>
-<p class="p7">a.clear;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">///////////////////// using patterns - event streams<span class="Apple-converted-space">  </span>/////////////////////<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p23">// must have 'out' or 'i_out' argument to work properly</p>
-<p class="p7"><span class="s5">SynthDef</span>(<span class="s19">"who"</span>, { <span class="s5">arg</span> freq, gate=1, out=0, ffreq=800, amp=0.1;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> env;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>env = <span class="s5">Env</span>.asr(0.01, amp, 0.5);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">Pan2</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Formant</span>.ar(freq, ffreq, 300, <span class="s5">EnvGen</span>.kr(env, gate, doneAction:2)), <span class="s5">Rand</span>(-1.0, 1.0))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).add;</p>
-<p class="p2"><br></p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p7">s.boot;</p>
-<p class="p7">a = <span class="s5">NodeProxy</span>.audio(s, 2);</p>
-<p class="p7">a.fadeTime = 2;</p>
-<p class="p7">b = <span class="s5">NodeProxy</span>.audio(s,2);</p>
-<p class="p7">b.fadeTime = 3;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p23"><span class="s3">a.play; </span>// monitor output</p>
-<p class="p2"><br></p>
-<p class="p23">// play the pattern silently in b</p>
-<p class="p7">b.source = <span class="s5">Pbind</span>(<span class="s18">\instrument</span>, <span class="s18">\who</span>, <span class="s18">\freq</span>, 500, <span class="s18">\ffreq</span>, 700, <span class="s18">\legato</span>, 0.02);</p>
-<p class="p2"><br></p>
-<p class="p23">// play b out through a:</p>
-<p class="p7">a.source = b;</p>
-<p class="p2"><br></p>
-<p class="p23">// filter b with ring modulation:</p>
-<p class="p7">a.source = {<span class="Apple-converted-space">  </span>b.ar<span class="Apple-converted-space">  </span>* <span class="s5">SinOsc</span>.ar(<span class="s5">SinOsc</span>.kr(0.2, 300, 330))<span class="Apple-converted-space">  </span>}; <span class="s20">// filter the input of the pattern</span></p>
-<p class="p7">a.source = {<span class="Apple-converted-space">  </span>b.ar * <span class="s5">LFCub</span>.ar([2, 8], add: -0.5)<span class="Apple-converted-space">  </span>}; <span class="s20">// filter the input of the pattern</span></p>
-<p class="p2"><br></p>
-<p class="p7">a.source = b;</p>
-<p class="p2"><br></p>
-<p class="p23">// map b to another proxy</p>
-<p class="p7">c = <span class="s5">NodeProxy</span>.control(s, 1).fadeTime_(1);</p>
-<p class="p7">c.source = { <span class="s5">SinOsc</span>.kr(2, 0, 400, 700) };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23">// now one can simply embed a control node proxy into an event pattern.</p>
-<p class="p23">// (this works not for \degree, \midinote, etc.)</p>
-<p class="p23">// embedding in other patterns it will still return itself.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">b.source = <span class="s5">Pbind</span>(<span class="s18">\instrument</span>, <span class="s18">\who</span>, <span class="s18">\freq</span>, 500, <span class="s18">\ffreq</span>, c, <span class="s18">\legato</span>, 0.02);</p>
-<p class="p2"><br></p>
-<p class="p7">c.source = { <span class="s5">SinOsc</span>.kr(<span class="s5">SinOsc</span>.kr(0.2, 0, 10, 10), 0, 400, 700) };</p>
-<p class="p2"><br></p>
-<p class="p7">c.source = { <span class="s5">LFNoise1</span>.kr(5, 1300, 1500) };</p>
-<p class="p7">c.source = { <span class="s5">MouseX</span>.kr(100, 5500, 1) };</p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p7">b.source = <span class="s5">Pbind</span>(</p>
-<p class="p25"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\who<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s18">\freq</span>, <span class="s5">Pseq</span>([600, 350, 300],<span class="s5">inf</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s18">\legato</span>, 0.1,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s18">\ffreq</span>, <span class="s5">Pseq</span>([c, 100, c, 100, 300, 600], <span class="s5">inf</span>), <span class="s20">// use proxy in a pattern</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s18">\dur</span>, <span class="s5">Pseq</span>([1, 0.5, 0.75, 0.25] * 0.4, <span class="s5">inf</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s18">\amp</span>, <span class="s5">Pseq</span>([0.2, 0.2, 0.1, 0.1, 0.2], <span class="s5">inf</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p7">b[2] = <span class="s5">Pbind</span>(<span class="s18">\instrument</span>, <span class="s18">\who</span>, <span class="s18">\freq</span>, 620, <span class="s18">\ffreq</span>, <span class="s5">Prand</span>([500,c],<span class="s5">inf</span>), <span class="s18">\legato</span>, 0.1, <span class="s18">\dur</span>, 0.1);</p>
-<p class="p7">b[3] = <span class="s5">Pbind</span>(<span class="s18">\instrument</span>, <span class="s18">\who</span>, <span class="s18">\ffreq</span>, 5000, <span class="s18">\freq</span>, <span class="s5">Pseq</span>([720, 800],<span class="s5">inf</span>), <span class="s18">\legato</span>, 0.1, <span class="s18">\dur</span>, 0.1, <span class="s18">\amp</span>, 0.01);</p>
-<p class="p7">b[4] = <span class="s5">Pbind</span>(<span class="s18">\instrument</span>, <span class="s18">\who</span>, <span class="s18">\freq</span>, <span class="s5">Pseq</span>([700, 400],<span class="s5">inf</span>), <span class="s18">\legato</span>, 0.1, <span class="s18">\ffreq</span>, 200);</p>
-<p class="p7">b[1] = { <span class="s5">WhiteNoise</span>.ar([0.01,0.01]) };<span class="Apple-converted-space"> </span></p>
-<p class="p7">b[4] = { <span class="s5">arg</span> ffreq=800; <span class="s5">Resonz</span>.ar(<span class="s5">WhiteNoise</span>.ar([1,1]), ffreq, 0.05) };<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p23"><span class="s3">b.map(</span><span class="s18">\ffreq</span><span class="s3">, c); </span>// map the control to the proxy</p>
-<p class="p7">b.removeLast;</p>
-<p class="p7">b.removeLast;</p>
-<p class="p7">a.source = {<span class="Apple-converted-space">  </span>b.ar * <span class="s5">WhiteNoise</span>.ar(0.1, 1)<span class="Apple-converted-space">  </span>};<span class="Apple-converted-space"> </span></p>
-<p class="p7">a.source = {<span class="Apple-converted-space">  </span>b.ar * <span class="s5">WhiteNoise</span>.ar(0.1, 1) + (b.ar * <span class="s5">SinOsc</span>.ar(<span class="s5">SinOsc</span>.kr(0.01, 0, 50, 330)))<span class="Apple-converted-space">  </span>};<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p7">c.source = { <span class="s5">XLine</span>.kr(1900, 10, 10) };</p>
-<p class="p2"><br></p>
-<p class="p23"><span class="s3">a.clear(10); b.clear(10); c.clear(10); </span>// fade out and clear all (free bus, group and synths)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/NodeProxy_roles.html b/Help/Libraries/JITLib/nodeproxy/NodeProxy_roles.html
deleted file mode 100644
index f002d2a..0000000
--- a/Help/Libraries/JITLib/nodeproxy/NodeProxy_roles.html
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {text-decoration: underline ; color: #0021e7}
-span.s2 {color: #000000}
-span.s3 {color: #0024f8}
-span.s4 {color: #0000ff}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.s7 {font: 12.0px Helvetica}
-span.s8 {font: 12.0px Helvetica; color: #000000}
-span.s9 {color: #001bb9}
-span.s10 {color: #2c7014}
-span.s11 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Roles in NodeProxy</b></p>
-<p class="p2"><br></p>
-<p class="p3">Similar to Adverbs (see <a href="../../../Language/J_concepts_in_SC.html"><span class="s1">J Concepts In SC</span></a>), roles allow to specify how a source for a <a href="NodeProxy.html"><span class="s1">NodeProxy</span></a> is being used. A role is an association of a <a href="../../../Core/Symbol.html"><span class="s1">Symbol</span></a> and the new proxy source object.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="NodeProxy.html"><span class="s3">NodeProxy</span></a></span><span class="s3">, <a href="Ndef.html"><span class="s4">Ndef</span></a>, <a href="../environments/ProxySpace.html"><span class="s4">ProxySpace</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3">The below examples can equally be used for Ndef and in ProxySpace.</p>
-<p class="p5"><br></p>
-<p class="p6">// Thus, the following expressions behave in an equivalent way:</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s2">a = </span>NodeProxy<span class="s2">(s);</span></p>
-<p class="p9">a[0] = ...</p>
-<p class="p7"><br></p>
-<p class="p8">ProxySpace<span class="s2">.push(s);</span></p>
-<p class="p9">~a[0] = ...</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s5">Ndef</span>(<span class="s6">\a</span>, ...)<span class="s7"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p10"><b>Existing roles:</b></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>\<b>set -> event pattern</b>:</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the proxy controls with an event pattern of type \set</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s8"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></span>// example:</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a = <span class="s9">NodeProxy</span>(s);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[0] = { <span class="s9">|freq = 440, dt=0.1, rate=2|</span> <span class="s9">Ringz</span>.ar(<span class="s9">Impulse</span>.ar(rate * [1, 1.2]), freq, dt)*0.1 };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[1] = <span class="s10">\set</span> -> <span class="s9">Pbind</span>(</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">\dur</span>, <span class="s9">Prand</span>([1, 0.5], <span class="s9">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">\freq</span>, <span class="s9">Pwhite</span>(200.0, 1000, <span class="s9">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">\rate</span>, <span class="s9">Pstutter</span>(4, <span class="s9">Prand</span>([1, 3, 6, 10], <span class="s9">inf</span>)),</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">\dt</span>, <span class="s9">Pwhite</span>(0.01, 0.1, <span class="s9">inf</span>)</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p14"><span class="Apple-tab-span">	</span>);</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// modify the source in the meanwhile:</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[0] = { <span class="s9">|freq = 440, dt=0.1, rate=2|</span> <span class="s9">Ringz</span>.ar(<span class="s9">Dust</span>.ar(rate * 10.dup), freq, dt)*0.1 };</p>
-<p class="p15"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.clear(3);</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s11"><span class="Apple-tab-span">	</span></span>\<b>setbus -> event pattern</b>:</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the proxy bus with an event pattern of type \c_set</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s8"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></span>// example:</p>
-<p class="p9"><span class="Apple-tab-span">	</span>a = <span class="s5">NodeProxy</span>(s);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b = <span class="s5">NodeProxy</span>(s).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b[0] = { <span class="s5">SinOsc</span>.ar(a.kr(4)).sum * 0.2 };</p>
-<p class="p9"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>a[0] = <span class="s6">\setbus</span> -> <span class="s5">Pbind</span>(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s5">Prand</span>([1, 0.5], <span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\value</span>, <span class="s5">Pfunc</span> { <span class="s5">var</span> z = rrand(300, 4000); [300, 400, z, z + 30.rand2] }</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// modify the other source in the meanwhile:</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b[0] = { <span class="s5">Pulse</span>.ar(a.ar(4)).sum * 0.2 };</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>a.clear; b.clear;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s11"><span class="Apple-tab-span">	</span></span>\<b>setsrc -> event pattern</b>:</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Set the proxy source at the next index with any object, controlled by a pattern.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Note that any existing source at the next index (in the example below it is index 1) is overridden by the procedure.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s8"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></span>// example:</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a = <span class="s9">NodeProxy</span>(s);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>a[0] = <span class="s6">\setsrc</span> -> <span class="s5">Pbind</span>(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s5">Prand</span>([1, 0.5, 2], <span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\source</span>, <span class="s5">Prand</span> ([</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s5">SinOsc</span>.ar(<span class="s5">SinOsc</span>.ar({5.rand}.dup + 4) * 50 + 400 + 50.rand) * 0.1 },</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s5">SinOsc</span>.ar(<span class="s5">LFSaw</span>.ar({5.rand}.dup + 4) * 50 + 400 + 50.rand) * 0.1},</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s5">LFSaw</span>.ar(<span class="s5">SinOsc</span>.ar({5.rand}.dup + 4) * 50 + 400 + 50.rand) * 0.1 },</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s5">LFSaw</span>.ar(<span class="s5">LFSaw</span>.ar({5.rand}.dup + 4) * 50 + 400 + 50.rand) * 0.1 }</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s5">inf</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>);</p>
-<p class="p15"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.clear(3);</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>\<b>filter -> function</b>:</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Filter the audio on the proxy's own bus, using the first argument to pass in the sound.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The function is any valid UGen function, which may be control or audio rate.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default controls are wet++index, where <b>index</b> is the slot of the proxy (default 0), in the example below, the control is \wet1.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s8"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></span>// example:</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a = <span class="s9">NodeProxy</span>(s);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[0] = { <span class="s9">PinkNoise</span>.ar(0.1.dup) };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[1] = <span class="s10">\filter</span> -> { <span class="s9">|in|</span> <span class="s9">RLPF</span>.ar(in, <span class="s9">LFNoise2</span>.kr(1).exprange(300, 1000), 0.1) };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.set(\wet1, 0.2);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.clear(3);<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s11"><span class="Apple-tab-span">	</span></span>\<b>filterIn -> function</b>:</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Like \filter, only that the input is controled by the \wet control, not the output.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// example:</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a = <span class="s9">NodeProxy</span>(s);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[0] = { <span class="s9">PinkNoise</span>.ar(0.1.dup) };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[1] = <span class="s10">\filterIn</span> -> { <span class="s9">|in|</span> <span class="s9">RLPF</span>.ar(in, <span class="s9">LFNoise2</span>.kr(1).exprange(300, 1000), 0.1) };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.set(\wet1, 0.2);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.clear(3);<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s11"><span class="Apple-tab-span">	</span></span>\<b>filterIn -> mix</b>:</p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Mix in the UGen in the function.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// example:</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a = <span class="s9">NodeProxy</span>(s);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[0] = { <span class="s9">PinkNoise</span>.ar(0.1.dup) };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a[1] = <span class="s10">\mix</span> -> { <span class="s9">Dust.ar(30.dup)</span> };</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.set(\mix1, 0.2);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.clear(3);</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><br></p>
-<p class="p10"><b>Adding new roles:</b></p>
-<p class="p2"><br></p>
-<p class="p3">Roles can be added on the fly. They are kept in a dictionary (<b>buildMethods) </b>in AbstractPlayControl. A second dictionary (<b>proxyControlClasses</b>) provides the wrapper class for a given key.</p>
-<p class="p2"><br></p>
-<p class="p3">Here is a new role that allows you to set a control rate node proxy with the help of an event pattern. The new values are in a key namd \value.<span class="Apple-converted-space"> </span></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p13">// add the new role:</p>
-<p class="p14">(</p>
-<p class="p16">AbstractPlayControl<span class="s2">.proxyControlClasses.put(</span><span class="s10">\stream</span><span class="s2">, </span>PatternControl<span class="s2">);</span></p>
-<p class="p14"><span class="s9">AbstractPlayControl</span>.buildMethods.put(<span class="s10">\stream</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#{ <span class="s9">arg</span> pattern, proxy, channelOffset=0, index;</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbindf<span class="s2">(</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pattern,</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\bus<span class="s2">,</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">\id</span>, <span class="s9">Pfunc</span> { proxy.group.nodeID },</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\array<span class="s2">, </span><span class="s9">Pkey</span><span class="s2">(</span>\value<span class="s2">),</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">\out</span>, <span class="s9">Pfunc</span> { proxy.index }</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).buildForProxy( proxy, channelOffset, index )</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p14">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p13">// test:</p>
-<p class="p14">a = <span class="s9">NodeProxy</span>.control(s);</p>
-<p class="p14">a.source = <span class="s10">\stream</span> -> <span class="s9">Pbind</span>(<span class="s10">\value</span>, <span class="s9">Pseq</span>([1, 2, 3], <span class="s9">inf</span>), <span class="s10">\dur</span>, 1.5).trace;</p>
-<p class="p15"><br></p>
-<p class="p16"><span class="s2">b = </span>NodeProxy<span class="s2">(s);</span></p>
-<p class="p14">b.source =<span class="Apple-converted-space">  </span>{ <span class="s9">SinOsc</span>.ar([340, 440] * a.kr) * 0.1 };</p>
-<p class="p14">b.play;</p>
-<p class="p15"><br></p>
-<p class="p14">a.source = <span class="s10">\stream</span> -> <span class="s9">Pbind</span>(<span class="s10">\value</span>, <span class="s9">Pseq</span>([1, 2, 3], <span class="s9">inf</span>) + <span class="s9">Pwhite</span>(0.0, 0.2, <span class="s9">inf</span>), <span class="s10">\dur</span>, 0.05);</p>
-<p class="p14">b.source =<span class="Apple-converted-space">  </span>{ <span class="s9">SinOsc</span>.ar([5.6, 10.3] ** a.kr + 300) * 0.1 };</p>
-<p class="p15"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/ProxySynthDef.html b/Help/Libraries/JITLib/nodeproxy/ProxySynthDef.html
deleted file mode 100644
index 58f0a5b..0000000
--- a/Help/Libraries/JITLib/nodeproxy/ProxySynthDef.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000ff}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ProxySynthDef</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>synth def that wraps ugen graph</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: SynthDef</b></p>
-<p class="p1">(used internally by <a href="NodeProxy.html"><span class="s3">NodeProxy</span></a>)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*new(name, func, rates, prependArgs, makeFadeEnv, channelOffset=0, chanConstraint)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span></b>name, func,<span class="Apple-converted-space">  </span>rates, prependArgs: like in <a href="../../../ServerArchitecture/SynthDef.html"><span class="s3">SynthDef</span></a></p>
-<p class="p1"><span class="Apple-tab-span">	</span>todo: add variants.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>makeFadeEnv</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if true it constructs a fader envelope and adds controls for gate and fadeTime</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>channelOffset</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a constant offset that is added to the out number</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>chanConstraint</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>max numChannels for the synthdef. If ugenfunc returns a larger array, it wraps</p>
-<p class="p3"><br></p>
-<p class="p3"><b></b><br></p>
-<p class="p1"><b>*sampleAccurate_</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>always use <a href="../../../UGens/InOut/OffsetOut.html"><span class="s3">OffsetOut</span></a>, if set to true (default: false)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">for inner workings see <a href="../tutorials/jitlib_fading.html"><span class="s3">jitlib_fading</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// example</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">a = <span class="s4">ProxySynthDef</span>(<span class="s5">"xtest"</span>, { <span class="s4">SinOsc</span>.ar(400) * 0.1 });</p>
-<p class="p5"><br></p>
-<p class="p6">a.send(s);</p>
-<p class="p5"><br></p>
-<p class="p6">x = <span class="s4">Synth</span>(<span class="s5">"xtest"</span>);</p>
-<p class="p6">x.release;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">/*</p>
-<p class="p7"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>if the resulting number of channels is larger than a given channelConstraint,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>it behaves according to the rate: audio rate signals are wrapped around</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a smaller channel size, control rate signals are not (the exceeding channels are left out)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4">*/</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/RecNodeProxy.html b/Help/Libraries/JITLib/nodeproxy/RecNodeProxy.html
deleted file mode 100644
index 16f0c62..0000000
--- a/Help/Libraries/JITLib/nodeproxy/RecNodeProxy.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px Monaco; min-height: 11.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {color: #0033f1}
-span.s2 {color: #0024f8}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {color: #000000}
-span.s6 {color: #606060}
-span.s7 {color: #2c7014}
-span.s8 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>RecNodeProxy</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: NodeProxy</b></p>
-<p class="p4"><br></p>
-<p class="p5">a <a href="NodeProxy.html"><span class="s1">NodeProxy</span></a> that can record</p>
-<p class="p4"><br></p>
-<p class="p3">this is also created from a <a href="NodeProxy.html"><span class="s2">NodeProxy</span></a>, or an <a href="Ndef.html"><span class="s2">Ndef</span></a> with the message record.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="s3">instance creation:</span></b></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*new(server) / *audio(server, numChannels)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>see superclass</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*newFrom(inproxy, numChannels)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>instantiate a new proxy that listens to the in proxy.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="s3">access:</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>open(path, headerformat, sampleformat)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>open new file and initialize buffer on server</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>record(paused)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>start the recording synth, if paused is false start recording immediately</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default: true</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>close</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>stop recording, close file<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>pause/unpause</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>pause recording / unpause recording<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>isRecording</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>see if recording right now</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>wakeUp<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>until the proxy is not used by any output ( either .play or .ar/.kr )</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>it is not running on the server. you can wake it up to force it playing.</p>
-<p class="p4"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b>examples</b></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s4">RecNodeProxy</span>.audio(s, 2);</p>
-<p class="p7">a.source = { <span class="s4">SinOsc</span>.ar([400,500], 0, 0.1) };</p>
-<p class="p8"><span class="s5">a.play; </span>//monitor;</p>
-<p class="p9"><span class="s5">a.open(</span>"xproxySpace.aif"<span class="s5">);</span></p>
-<p class="p7">a.record(<span class="s4">false</span>);</p>
-<p class="p6"><br></p>
-<p class="p7">a.source = { <span class="s4">SinOsc</span>.ar([400,700], 0, 0.1) };</p>
-<p class="p7">a.source = { <span class="s4">SinOsc</span>.ar([410,510], 0, 0.1) };</p>
-<p class="p7">a.source = { <span class="s4">SinOsc</span>.ar([<span class="s4">LFNoise1</span>.kr(80, 100, 300),500], 0, 0.1) };</p>
-<p class="p6"><br></p>
-<p class="p8">//stop recording and close file</p>
-<p class="p7">a.close;</p>
-<p class="p6"><br></p>
-<p class="p8">//monitor off</p>
-<p class="p7">a.stop;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p5"><b>recording from some bus</b></p>
-<p class="p10"><br></p>
-<p class="p7">a = <span class="s4">Bus</span>.audio(s, 2);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s4">SynthDef</span>(<span class="s6">"test"</span>, { <span class="s4">arg</span> out; <span class="s4">Out</span>.ar(out, { <span class="s4">WhiteNoise</span>.ar(0.1) }.dup(2)) }).send(s);</p>
-<p class="p7">x = <span class="s4">Synth</span>(<span class="s6">"test"</span>, [<span class="s7">\out</span>, a]);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">n = <span class="s4">RecNodeProxy</span>.audio(s, 2);</p>
-<p class="p7">n.source = { <span class="s4">InFeedback</span>.ar(a, 2) };</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s5">n.play;</span>//monitor</p>
-<p class="p8"><span class="s5">n.stop;</span>//turn off monitor</p>
-<p class="p6"><br></p>
-<p class="p9"><span class="s5">n.open(</span>"noise.aif"<span class="s5">);</span></p>
-<p class="p7">n.record;</p>
-<p class="p7">n.unpause;</p>
-<p class="p6"><br></p>
-<p class="p7">n.close;</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p5"><b>instance creation from an existent node proxy</b></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">b = <span class="s4">NodeProxy</span>.audio(s, 2);</p>
-<p class="p8"><span class="s5">b.play; </span>//listen to b</p>
-<p class="p7">b.source = { <span class="s4">SinOsc</span>.ar([400,500], 0, 0.1) }; <span class="s8">//play something</span></p>
-<p class="p6"><br></p>
-<p class="p7">r = <span class="s4">RecNodeProxy</span>.newFrom(b);</p>
-<p class="p9"><span class="s5">r.open(</span>"recproxy514.aif"<span class="s5">); </span><span class="s8">//open file</span></p>
-<p class="p8"><span class="s5">r.record; </span>//start recorder (paused)</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s5">r.unpause; </span>//start recording</p>
-<p class="p6"><br></p>
-<p class="p7">b.source = { <span class="s4">SinOsc</span>.ar([430,500], 0, 0.1) };</p>
-<p class="p7">b.source = { <span class="s4">SinOsc</span>.ar([410,510], 0, 0.1) };</p>
-<p class="p7">b.source = { <span class="s4">SinOsc</span>.ar([<span class="s4">LFNoise1</span>.kr(80, 100, 300), 500], 0, 0.1) };</p>
-<p class="p7">r.pause;</p>
-<p class="p7">b.source = { <span class="s4">WhiteNoise</span>.ar(0.01) };</p>
-<p class="p7">r.unpause;</p>
-<p class="p7">r.pause;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8">//stop recording and close file</p>
-<p class="p7">r.close;</p>
-<p class="p8"><span class="s5">b.stop; </span>//stop listen to b</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b>instance creation from an existent node proxy again</b></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">b = <span class="s4">NodeProxy</span>.audio(s, 2);</p>
-<p class="p8"><span class="s5">b.play; </span>//listen to b</p>
-<p class="p7">b.source = { <span class="s4">SinOsc</span>.ar([400,500], 0, 0.1) }; <span class="s8">//play something</span></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s5">r = b.record(</span><span class="s6">"recproxy101.aiff"</span><span class="s5">); </span>//start recorder (paused)</p>
-<p class="p8"><span class="s5">r.unpause; </span>//start recording</p>
-<p class="p8"><span class="s5">r.close;<span class="Apple-converted-space">  </span></span>//end recording, close file</p>
-<p class="p8"><span class="s5">b.stop;<span class="Apple-tab-span">	</span></span>//stop listen</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b>recording from other sources</b></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s4">RecNodeProxy</span>.audio(s, 2);</p>
-<p class="p8"><span class="s5">b = a.index; </span>//get the bus index;</p>
-<p class="p7">a.play; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">//monitor;</span></p>
-<p class="p9"><span class="s5">a.open(</span>"xproxySpace.aif"<span class="s5">);</span></p>
-<p class="p7">a.record;</p>
-<p class="p7">a.unpause;</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p11">Routine<span class="s5">({</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> id;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>id = s.nextNodeID;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"default"</span>, id,0,0, <span class="s7">\out</span>, b, <span class="s7">\freq</span>, rrand(400, 800));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s6">"/n_set"</span>, id, <span class="s7">\gate</span>, 0);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>})</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8">//stop recording and close file</p>
-<p class="p7">a.close;</p>
-<p class="p6"><br></p>
-<p class="p8">//monitor off</p>
-<p class="p7">a.stop;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/TempoBusClock.html b/Help/Libraries/JITLib/nodeproxy/TempoBusClock.html
deleted file mode 100644
index bd82566..0000000
--- a/Help/Libraries/JITLib/nodeproxy/TempoBusClock.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TempoBusClock</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>a clock that synchronizes its tempo with the server</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: TempoClock</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(control, tempo, beats, seconds)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return a new instance.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>control</b> can be anything that responds to the message set(key, val, ...)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>e.g. a Synth or a NodeProxy. The control key set is "tempo"</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>otherwise TempoBusClock works just like a <a href="../../../Scheduling/TempoClock.html"><span class="s2">TempoClock</span></a></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = { <span class="s4">|tempo=1|</span> <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(tempo), [501, 500], 1/tempo) }.play;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>t = </span>TempoBusClock<span class="s3">(a);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Task</span> { loop { <span class="s5">"klink"</span>.postln; 1.wait } }.play(t);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>t.tempo = 1.3;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>t.tempo = 0.5;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>t.tempo = 1.0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// in ProxySpace, a TempoBusClock can be added together with a ~tempo NodeProxy:</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>p = <span class="s4">ProxySpace</span>.push(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>p.makeTempoClock;</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>p.clock; </span>// now the ProxySpace's clock is a TempoBusClock</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~out.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~out = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(~tempo.kr), [501, 500], 1/~tempo.kr) * 0.3 };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>p.clock.tempo = 1.3;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// patterns and tasks are synchronized:</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~out2.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~out2 = <span class="s4">Pbind</span>(<span class="s6">\dur</span>, 1, <span class="s6">\note</span>, <span class="s4">Pwhite</span>(0, 7, <span class="s4">inf</span>));</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>p.clock.tempo = 3;<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>p.clock.tempo = 1;<span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/nodeproxy/playN.html b/Help/Libraries/JITLib/nodeproxy/playN.html
deleted file mode 100644
index f3e5456..0000000
--- a/Help/Libraries/JITLib/nodeproxy/playN.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #001afb}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>playN</b></span><span class="s2"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>distribute audio over multiple non-adjacent channels</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">playN is a multichannel play method for <a href="Monitor.html"><span class="s3">Monitor</span></a> and <a href="NodeProxy.html"><span class="s3">NodeProxy</span></a> (see also: <a href="../environments/ProxySpace.html"><span class="s3">ProxySpace</span></a>, <a href="Ndef.html"><span class="s3">Ndef</span></a>)<span class="Apple-converted-space"> </span></p>
-<p class="p1">that supports playing proxy outputs over <b>non-adjacent channels</b>; somewhat like a splitter/line mixer.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// examples</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4">Server</span>.default = s = <span class="s4">Server</span>.internal;</p>
-<p class="p6">s.boot;</p>
-<p class="p5"><br></p>
-<p class="p6">p = <span class="s4">ProxySpace</span>.push;</p>
-<p class="p6">s.scope(8);</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span>// a 3 channel test sound</p>
-<p class="p6">~test3 = { <span class="s4">SinOsc</span>.ar([2, 3, 5] * 100) * 0.2 };</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span>// compare: play out of 3 adjacent channels</p>
-<p class="p6">~test3.play(3);</p>
-<p class="p6">~test3.play(6);</p>
-<p class="p5"><br></p>
-<p class="p6">~test3.stop;</p>
-<p class="p4"><span class="s5">~test3.play;<span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>play remembers old (series) output settings;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span>// outs</p>
-<p class="p4"><span class="s5">~test3.playN([2, 4,7]) </span>// playN to 3 non-adjacent channels</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span>// set outs, amps and vol:</p>
-<p class="p6">(</p>
-<p class="p6">~test3.playN(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>outs: [2,3,5],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>amps: [0.5, 0.25, 0.125],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>vol: 1</p>
-<p class="p6">);</p>
-<p class="p6">)</p>
-<p class="p6">~test3.vol_(2);</p>
-<p class="p5"><br></p>
-<p class="p6">~test3.stop;</p>
-<p class="p4"><span class="s5">~test3.playN;<span class="Apple-tab-span">	</span></span>// remembers last state.</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if playN has been used, one can set outs while playing.</p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// note: this does not work reliably with the .play method!</p>
-<p class="p6">~test3.monitor.outs_([3,2,1]);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set amps while playing.</p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// note: this does not work with play method!</p>
-<p class="p6">~test3.monitor.amps_(1/[1, 2, 3]).vol_(1);<span class="Apple-tab-span">	</span></p>
-<p class="p6">~test3.playN;<span class="Apple-tab-span">	</span></p>
-<p class="p6">~test3.monitor.outs_([2, 4, 7]);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span>// one can also spread out one channel to several, with given amplitudes:</p>
-<p class="p6">(</p>
-<p class="p6">~test3.playN(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>outs: [1, 3, [5,6,7]],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>amps: [0.5, 0.25, [0.125,0.25, 0.5]],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>vol: 2</p>
-<p class="p6">);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">~test3.stop;</p>
-<p class="p6">~test3.playN;<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// do changes while off:</p>
-<p class="p6">~test3.stop;</p>
-<p class="p6">~test3.monitor.outs_([2, 4, [5,6,3]]);<span class="Apple-tab-span">	</span></p>
-<p class="p6">~test3.monitor.amps_(1/[1, 2, [3,2,1]]);<span class="Apple-tab-span">	</span></p>
-<p class="p6">~test3.playN;<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// most comfortable way to edit - only tested on osx.<span class="Apple-converted-space"> </span></p>
-<p class="p6">~test3.playNDialog;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span>// output mapping can be prepared before playN is used:</p>
-<p class="p6">~test3.clear;</p>
-<p class="p5"><br></p>
-<p class="p6">~test3 = { <span class="s4">SinOsc</span>.ar([2, 3, 5] * 100) * 0.2 };</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5">~test3.vol_(0.5);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// vol can be set already</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span></span>// outs and amps require making a monitor first;</p>
-<p class="p6">~test3.initMonitor;<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p6">~test3.monitor.outs_([3, 5, 6]);</p>
-<p class="p5"><br></p>
-<p class="p6">~test3.monitor.amps_([1, 2, 3]);</p>
-<p class="p5"><br></p>
-<p class="p6">~test3.playN;</p>
-<p class="p5"><br></p>
-<p class="p6">~test3.end;</p>
-<p class="p6">~test3.clear;</p>
-<p class="p5"><br></p>
-<p class="p6">p.clean;</p>
-<p class="p6">p.pop;</p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/audio_rate_mapping.html b/Help/Libraries/JITLib/tutorials/audio_rate_mapping.html
deleted file mode 100644
index 3352e69..0000000
--- a/Help/Libraries/JITLib/tutorials/audio_rate_mapping.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-</style>
-</head>
-<body>
-<p class="p1">// audio mapping in ProxySpace</p>
-<p class="p1">// todo. expand(numChannels) message</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">p = <span class="s1">ProxySpace</span>.push(s.boot);</p>
-<p class="p3">p.fadeTime = 3;</p>
-<p class="p1">// some filters</p>
-<p class="p4"><span class="s2">~f1 = { </span>|a_in=#[0,0], freq=500, dt=0.01|<span class="s2"><span class="Apple-converted-space">  </span></span>Ringz<span class="s2">.ar(a_in, freq, dt) };<span class="Apple-converted-space"> </span></span></p>
-<p class="p3">~f2 = { <span class="s1">|a_in=#[0,0], dt=0.1|</span> <span class="s1">CombL</span>.ar(a_in, 0.5, dt, 15 * dt) };</p>
-<p class="p3">~f3 = { <span class="s1">|a_in=#[0,0], freq=30|</span> a_in * <span class="s1">LFSaw</span>.ar(freq.neg).max(0) };</p>
-<p class="p2"><br></p>
-<p class="p1">// some sources</p>
-<p class="p3">~x1 = { <span class="s1">LFPulse</span>.kr(<span class="s1">SinOsc</span>.kr(0.2).exprange(2, 200)) * <span class="s1">PinkNoise</span>.ar(0.5.dup) };</p>
-<p class="p3">~x2 = { <span class="s1">Dust</span>.ar(<span class="s1">SinOsc</span>.kr(0.2, [0, pi]).exprange(2, 2000)) };</p>
-<p class="p2"><br></p>
-<p class="p1">// the output</p>
-<p class="p3">~out.play;</p>
-<p class="p3">~out = { <span class="s1">|a_in=#[0,0]|</span> a_in };</p>
-<p class="p2"><br></p>
-<p class="p1">// some mappings by hand:</p>
-<p class="p3">~out.mapn(<span class="s3">\a_in</span>, ~x1);</p>
-<p class="p3">~out.xmapn(<span class="s3">\a_in</span>, ~x2);</p>
-<p class="p2"><br></p>
-<p class="p3">~out.xmapn(<span class="s3">\a_in</span>, ~f1); ~f1.xmapn(<span class="s3">\a_in</span>, ~x1);</p>
-<p class="p3">~out.xmapn(<span class="s3">\a_in</span>, ~f2); ~f2.xmapn(<span class="s3">\a_in</span>, ~x1);</p>
-<p class="p3">~out.xmapn(<span class="s3">\a_in</span>, ~f2); ~f2.xmapn(<span class="s3">\a_in</span>, ~x1);</p>
-<p class="p3">~f2.xset(<span class="s3">\dt</span>, 0.01);</p>
-<p class="p2"><br></p>
-<p class="p3">~mx1 = { <span class="s1">MouseX</span>.kr(0.0001, 1, 1) };</p>
-<p class="p3">~f2.xmap(<span class="s3">\dt</span>, ~mx1);</p>
-<p class="p2"><br></p>
-<p class="p3">~out.xmapn(<span class="s3">\a_in</span>, ~f3);<span class="Apple-converted-space">  </span>~f3.xmapn(<span class="s3">\a_in</span>, ~f2); ~f2.xmapn(<span class="s3">\a_in</span>, ~x1);</p>
-<p class="p1">// this should maybe be:</p>
-<p class="p1">// ~f2 --(\a_in)--> ~f3 --(\a_in)--> ~out</p>
-<p class="p2"><br></p>
-<p class="p3">~mx1 = { <span class="s1">LFNoise1</span>.kr(0.1).exprange(0.0001, 1) };</p>
-<p class="p3">~mF = { ~mx1.kr.linexp(0, 1, 1, 10000) };</p>
-<p class="p3">~f3.xmap(<span class="s3">\freq</span>, ~mF);</p>
-<p class="p2"><br></p>
-<p class="p3">~f1.mapn(<span class="s3">\a_in</span>, ~x2);</p>
-<p class="p3">~f2.xmapn(<span class="s3">\a_in</span>, ~f1);</p>
-<p class="p2"><br></p>
-<p class="p3">~f1.xmapn(<span class="s3">\freq</span>, ~mF, <span class="s3">\dt</span>, ~mx1);</p>
-<p class="p2"><br></p>
-<p class="p3">~x2 = { <span class="s1">Impulse</span>.ar(<span class="s1">SinOsc</span>.kr(0.2, [0, pi]).exprange(2, 200)) };</p>
-<p class="p3">~x1 = { <span class="s1">Saw</span>.ar(20, 0.5.dup) * ~x2.ar };</p>
-<p class="p3">~out = ~x1;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">// possible schema:</p>
-<p class="p1">/*</p>
-<p class="p5"><br></p>
-<p class="p1">px.map knows always already the number of channels of a proxy, so can decide whether</p>
-<p class="p1">to use map or mapn. (map always would mean flat mapping).</p>
-<p class="p5"><br></p>
-<p class="p1">px.mapn could do tricky things like:</p>
-<p class="p1">px.mapn(\a_in2, [mono1, mono2])</p>
-<p class="p1">px.mapn(\a_in2, stereo) would still work</p>
-<p class="p1">px.mapn(\a_in2, [stereo, mono]) could use the first of the stereo chans and the mono</p>
-<p class="p1">how to get at the second arg of the stereo in? or it could mix/wrap.</p>
-<p class="p1">--> px.mapn([\a_inx, \a_iny], stereo)</p>
-<p class="p5"><br></p>
-<p class="p1">px.mapn(\a_in, stereo) would take the first of the stereo channels</p>
-<p class="p1">px.map(\a_in, stereo) would use the first of the stereo channels</p>
-<p class="p1">px.mapn(\a_in, [mono, mono]) would use the first channel</p>
-<p class="p5"><br></p>
-<p class="p1">mappings could be saved as is and if the proxy rebuilds with a different channel size, it would unfold?</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p1">*/</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/basic_live_coding_techniques.html b/Help/Libraries/JITLib/tutorials/basic_live_coding_techniques.html
deleted file mode 100644
index b8a79c0..0000000
--- a/Help/Libraries/JITLib/tutorials/basic_live_coding_techniques.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0018f7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-span.s1 {color: #902a19}
-span.s2 {color: #0018f7}
-span.s3 {color: #000000}
-span.s4 {color: #456c20}
-span.s5 {color: #091fb1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2">// basic live coding techniques ("object style")</p>
-<p class="p2">// without the use of JITLib</p>
-<p class="p1"><br></p>
-<p class="p2">// more to come..</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2">// using a simple environment. this looks just like ProxySpace, but works differently.</p>
-<p class="p3"><span class="s1">// for the difference, see <a href="jitlib_basic_concepts_01.html"><span class="s2">jitlib_basic_concepts_01</span></a> and<span class="Apple-converted-space">  </span><a href="jitlib_basic_concepts_02.html"><span class="s2">jitlib_basic_concepts_02</span></a></span></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2"><span class="s3">d = (); </span>// create a new environment</p>
-<p class="p2"><span class="s3">d.push; </span>// push it to current</p>
-<p class="p1"><br></p>
-<p class="p2">// this synthdef can be changed on the fly, but the synth will</p>
-<p class="p2">// not change from this. use expression [1] for replacing a given synth</p>
-<p class="p4">(</p>
-<p class="p5">SynthDef<span class="s3">(</span><span class="s4">\x</span><span class="s3">, { </span>|freq=440|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Ringz</span>.ar(<span class="s5">Dust</span>.ar(40), freq, 0.1)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}).send(s);</p>
-<p class="p4">)</p>
-<p class="p1"><br></p>
-<p class="p2">// send a first synth:</p>
-<p class="p4">~s1 = <span class="s5">Synth</span>(<span class="s4">\x</span>);</p>
-<p class="p1"><br></p>
-<p class="p2">// [1]</p>
-<p class="p2">// now you can play around with these lines, as well as with the synth def above</p>
-<p class="p4">~s1 = <span class="s5">Synth</span>.replace(~s1, <span class="s4">\x</span>, [<span class="s4">\freq</span>, 3000]);<span class="Apple-converted-space"> </span></p>
-<p class="p4">~s1.set(<span class="s4">\freq</span>, 4000);</p>
-<p class="p1"><br></p>
-<p class="p2">// add a bus:</p>
-<p class="p1"><br></p>
-<p class="p4">~b1 = <span class="s5">Bus</span>.control(s);</p>
-<p class="p4">~b1.set(350);</p>
-<p class="p4">~s1.map(<span class="s4">\freq</span>, ~b1);</p>
-<p class="p1"><br></p>
-<p class="p2">// set the bus to different values:</p>
-<p class="p1"><br></p>
-<p class="p4">~b1.set(100);</p>
-<p class="p4">~b1.xline(800, 5);</p>
-<p class="p1"><br></p>
-<p class="p4">~s3 = { <span class="s5">Out</span>.kr(~b1, <span class="s5">MouseX</span>.kr(300, 900, 1)) }; // add some mouse control on the fly</p>
-<p class="p2"><span class="s3">~s3.free; </span>// remove it again.</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2">// finish:</p>
-<p class="p1"><br></p>
-<p class="p4">~b1.free;</p>
-<p class="p4">d.clear;</p>
-<p class="p4">d.pop;</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/jitlib_asCompileString.html b/Help/Libraries/JITLib/tutorials/jitlib_asCompileString.html
deleted file mode 100644
index f388b41..0000000
--- a/Help/Libraries/JITLib/tutorials/jitlib_asCompileString.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2">{ 10 + 6 * ~harry }.asCompileString;</p>
-<p class="p1"><br></p>
-<p class="p3">many objects understand <b>.storeOn</b>, which a way to post their string that is needed</p>
-<p class="p3">to reproduce them by compilation.</p>
-<p class="p3">sometimes one wants to store a certain configuration of a proxy space, which can be done</p>
-<p class="p3">if all functions used are closed functions.</p>
-<p class="p1"><br></p>
-<p class="p4">// an example how ProxySpace can document its current state:</p>
-<p class="p1"><br></p>
-<p class="p2">p = <span class="s1">ProxySpace</span>.push(s);</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2">(</p>
-<p class="p2">~ctl1 = {</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="s1">var</span> z = 1;</p>
-<p class="p2"><span class="Apple-tab-span">	</span>4.do { <span class="s1">|i|</span> z = z * <span class="s1">SinOsc</span>.kr(i.sqrt, i+[0,0.2]) };</p>
-<p class="p2"><span class="Apple-tab-span">	</span>z</p>
-<p class="p2">};</p>
-<p class="p1"><br></p>
-<p class="p2">~ctl2[0] = { <span class="s1">LFNoise2</span>.kr([20,20],20) };</p>
-<p class="p2">~ctl2[1] = { </p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="s1">LFNoise2</span>.kr([20,20],20) * <span class="s1">LFNoise0</span>.kr([20,20],20)</p>
-<p class="p2">};</p>
-<p class="p1"><br></p>
-<p class="p2">~out = {</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(~freq.kr, 0, 0.1)</p>
-<p class="p2">};</p>
-<p class="p1"><br></p>
-<p class="p2">~freq[0] = { ~ctl1.kr(2) + ~ctl2.kr(2) + 400 };</p>
-<p class="p2">~freq[5] = ~ctl1.wrap2(~ctl2) * ~ctl1 / (~ctl2 + ~ctl1);</p>
-<p class="p1"><br></p>
-<p class="p2">~pat = Pbind(\freq, Pfunc({ 1.2.rand }));</p>
-<p class="p2">~z = 9;</p>
-<p class="p2">~out.set(\freq, 760, \ffreq, 20);</p>
-<p class="p2">)</p>
-<p class="p1"><br></p>
-<p class="p2">p.asCompileString;</p>
-<p class="p1"><br></p>
-<p class="p4">// the document message creates a new document which it posts the code into</p>
-<p class="p1"><br></p>
-<p class="p4"><span class="s2">p.document;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// document everything</p>
-<p class="p4"><span class="s2">p.document([</span><span class="s3">\out</span><span class="s2">]); <span class="Apple-tab-span">	</span></span>// document all dependants of ~out</p>
-<p class="p4"><span class="s2">p.document([</span><span class="s3">\ctl1</span><span class="s2">]);<span class="Apple-tab-span">	</span></span>// document all dependants of ~ctl1</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_01.html b/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_01.html
deleted file mode 100644
index e2d720a..0000000
--- a/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_01.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 36.0px Georgia}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #bf0000}
-span.s6 {text-decoration: underline ; color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>some placeholders in supercollider<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b><span class="s1"><b>1</b></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">this helpfile explains some basic concepts of interactive programming<span class="Apple-converted-space"> </span></p>
-<p class="p3">with supercollider and proxy space.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">previous: <a href="../JITLib.html"><span class="s3">JITLib</span></a><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>next: <a href="jitlib_basic_concepts_02.html"><span class="s3">jitlib_basic_concepts_02</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a) What is a proxy?</b></p>
-<p class="p5"><br></p>
-<p class="p3">A proxy is a place holder that is often used<span class="Apple-converted-space">  </span>to operate on something that does not yet exist.</p>
-<p class="p3">For example, an <i>OutputProxy </i>is used to represent multiple outputs of a ugen, even if only</p>
-<p class="p3">one ugen is created eventually.<span class="Apple-converted-space"> </span></p>
-<p class="p3">Any object can have proxy behaviour (it may delegate function calls to different objects for example)<span class="Apple-converted-space"> </span></p>
-<p class="p3">but specially functions and references can be used as operands while they keep their<span class="Apple-converted-space"> </span></p>
-<p class="p3">referential quality.</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s2">see also: <span class="Apple-converted-space">    </span><a href="../../../UGens/Multichannel/OutputProxy.html"><span class="s3">OutputProxy</span></a> <a href="../../../Core/Kernel/Function.html"><span class="s3">Function</span></a> <a href="../../../Core/Ref.html"><span class="s3">Ref</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>using a Ref as a proxy:</b></p>
-<p class="p5"><br></p>
-<p class="p6">// reference example</p>
-<p class="p7"><br></p>
-<p class="p6">// create a new Ref object</p>
-<p class="p8">y = `(<span class="s4">nil</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p6">// you can start to calcuate with y, even if its value is not yet given:</p>
-<p class="p6"><span class="s2">z = y + 10; </span>// returns a function</p>
-<p class="p7"><br></p>
-<p class="p6">// now the source can be set:</p>
-<p class="p8">y.value = 34;</p>
-<p class="p7"><br></p>
-<p class="p6">// the function z can be evaluated now.</p>
-<p class="p8">z.value</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">// the same without a reference does not work:</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">y = </span><span class="s4">nil</span><span class="s2">; </span>// empty y first</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">z = y + 10; </span>// this fails.</p>
-<p class="p7"><br></p>
-<p class="p6">// also an array does not provide this referentiality:</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">y = [</span><span class="s4">nil</span><span class="s2">]; </span>// array with nil as element</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">z = y + 10; </span>// this fails.</p>
-<p class="p7"><br></p>
-<p class="p6">// an environment without sufficient defaults has the same problem:</p>
-<p class="p7"><br></p>
-<p class="p8">currentEnvironment.postln; <span class="s5">// anEnvironment</span></p>
-<p class="p6"><span class="s2">~x; </span>// access the enironment: there is nothing stored: nil</p>
-<p class="p6"><span class="s2">~x = 9; </span>// store something</p>
-<p class="p6"><span class="s2">~x; <span class="Apple-tab-span">	</span></span>// now 9 is stored</p>
-<p class="p6"><span class="s2">~x + 100; </span>// calculate with it</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">currentEnvironment.postln; </span>// the value is stored in the environment</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">~y + ~x; </span>// cause an error: ~y is nil.</p>
-<p class="p8">~y = -90; <span class="s5">// set ~y</span></p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">~y + ~x; </span>// this works.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>using a Function as a proxy:</b></p>
-<p class="p2"><br></p>
-<p class="p6">// a function can serve the same purpose</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">y = </span><span class="s4">nil</span><span class="s2">; </span>// empty y first</p>
-<p class="p6"><span class="s2">z = { y } + 10; </span>// this does not fail, instead it creates a new function, which<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// does not fail when evaluating it after y is set to 34.</p>
-<p class="p7"><br></p>
-<p class="p8">y = 34;</p>
-<p class="p8">z.value;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">see also client side proxies like <a href="../Patterns/Tdef.html"><span class="s4">Tdef</span></a><span class="Apple-converted-space">  </span><a href="../Patterns/Pdefn.html"><span class="s6">Pdefn</span></a><span class="Apple-converted-space">  </span><a href="../Patterns/Pdef.html"><span class="s6">Pdef</span></a><span class="Apple-converted-space">  </span><a href="../Patterns/Fdef.html"><span class="s4">Fdef</span></a></p>
-<p class="p7"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>b) NodeProxy</b></p>
-<p class="p5"><br></p>
-<p class="p3">For interactive programming it can be useful to be able to use something before it is there - it makes evaluation order more flexible and allows to postpone decisions to a later moment. Some preparations have to be done usually - like above, a reference has to be created. In other situations this sort of preparation is not enough, for example if one wants to do maths with running processes on the server.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p3">Audio output on the server has mainly two properties - a <i>calculation rate</i> (audio or control) and a certain <i>number of channels</i>. These are the main static properties of a node proxy, which cannot be changed while it is in use.</p>
-<p class="p5"><br></p>
-<p class="p6">// boot the server</p>
-<p class="p8">s.boot;</p>
-<p class="p7"><br></p>
-<p class="p6">// two proxies on a server. calculation rate is audio rate, number of channels is 2</p>
-<p class="p8">y = <span class="s4">NodeProxy</span>.audio(s, 2);</p>
-<p class="p8">z = <span class="s4">NodeProxy</span>.audio(s, 2);</p>
-<p class="p7"><br></p>
-<p class="p6">// use them in calculation</p>
-<p class="p8">z.play;</p>
-<p class="p8">z.source = y.sin * 0.2;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">// set its source now.</p>
-<p class="p8">y.source = { <span class="s4">Saw</span>.ar([300, 301], 4*pi) };</p>
-<p class="p7"><br></p>
-<p class="p6">// the source can be of various type, one of them would be a number:</p>
-<p class="p8">y.source = 0.0;</p>
-<p class="p7"><br></p>
-<p class="p6">// post the source</p>
-<p class="p8">y.source;</p>
-<p class="p7"><br></p>
-<p class="p6">// end them, free their bus number</p>
-<p class="p8">y.clear;</p>
-<p class="p8">z.clear;</p>
-<p class="p2"><br></p>
-<p class="p3">In order to provide a simple way of creating node proxies, a proxy space can be used.</p>
-<p class="p3">So the above reads like this:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">p = </span><span class="s4">ProxySpace</span><span class="s2">.push(s.boot); </span>// store proxy space in p so it can be accessed easily.</p>
-<p class="p8">~z.play;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">~z = ~y.sin * 0.2;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">~y = { <span class="s4">Saw</span>.ar([300, 301], 4*pi) };</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">// clear the space (all proxies)</p>
-<p class="p8">p.clear;</p>
-<p class="p7"><br></p>
-<p class="p6">// move out of the proxyspace.</p>
-<p class="p8">p.pop;</p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">further readings:<span class="Apple-converted-space">  </span><a href="../nodeproxy/NodeProxy.html"><span class="s3">NodeProxy</span></a> <a href="../environments/ProxySpace.html"><span class="s3">ProxySpace</span></a> <a href="../nodeproxy/Ndef.html"><span class="s3">Ndef</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">next: <a href="jitlib_basic_concepts_02.html"><span class="s3">jitlib_basic_concepts_02</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_02.html b/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_02.html
deleted file mode 100644
index d825f24..0000000
--- a/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_02.html
+++ /dev/null
@@ -1,358 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0018ea}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #852a1a}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #852a1a; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 36.0px Georgia}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #852a1a}
-span.s5 {color: #4f6923}
-span.s6 {color: #0e34af}
-span.s7 {color: #002df4}
-span.s8 {color: #0d3ef4}
-span.s9 {font: 9.0px Monaco; color: #000000}
-span.s10 {text-decoration: underline ; color: #0c3ae3}
-span.s11 {color: #007300}
-span.s12 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>proxy space - basic concepts<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b><span class="s1"><b>2</b></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">external structure of the node proxy, referencing in proxyspace and environments.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">previous: <a href="jitlib_basic_concepts_01.html"><span class="s3">jitlib_basic_concepts_01</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>next: <a href="jitlib_basic_concepts_03.html"><span class="s3">jitlib_basic_concepts_03</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p3">This document covers:</p>
-<p class="p4"><br></p>
-<p class="p3">a) <span class="Apple-tab-span">	</span>normal environment lookup</p>
-<p class="p3">b) <span class="Apple-tab-span">	</span>proxyspace as an environment</p>
-<p class="p3">c) <span class="Apple-tab-span">	</span>using the proxyspace to change processes on the fly</p>
-<p class="p3">d) <span class="Apple-tab-span">	</span>when are the node proxies initialized?</p>
-<p class="p3">e) <span class="Apple-tab-span">	</span>moving out of the proxy space</p>
-<p class="p3">f ) <span class="Apple-tab-span">	</span>using ProxySpace together with other Environments</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a) normal environment lookup</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">currentEnvironment.postln; </span>// anEnvironment (if not, you haven't left it from last helppage..)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~a; </span>// access the environment: there is nothing stored: nil</p>
-<p class="p6"><span class="s2">~a = 9; </span>// store something</p>
-<p class="p6"><span class="s2">~a; <span class="Apple-tab-span">	</span></span>// now 9 is stored</p>
-<p class="p6"><span class="s2">~a + 100; </span>// calculate with it</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">currentEnvironment.postln; </span>// the value is stored in the environment</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~b + ~a; </span>// cause an error: ~b is nil.</p>
-<p class="p7">~b = -90; <span class="s4">// set ~b</span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~b + ~a; </span>// now this works.</p>
-<p class="p2"><br></p>
-<p class="p6">// note that you can always access environments (or ProxySpaces) from outside as well:</p>
-<p class="p2"><br></p>
-<p class="p7">x = currentEnvironment;</p>
-<p class="p6"><span class="s2">x[</span><span class="s5">\a</span><span class="s2">] + x[</span><span class="s5">\b</span><span class="s2">] </span>// equivalent to ~b + ~a</p>
-<p class="p8"><br></p>
-<p class="p6">// or, if "know" is true, you can access named things with message-like syntax:</p>
-<p class="p7">x.know = <span class="s6">true</span>;</p>
-<p class="p7">x.a + x.b;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>further readings: <a href="../../../Collections/Environment.html"><span class="s7">Environment</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>b) a proxyspace as an environment</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">one can replace the current environment with a special type of environment, a ProxySpace.</p>
-<p class="p3">this environment represents processes that play audio on a server.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">p = </span><span class="s6">ProxySpace</span><span class="s2">.new(s); </span>// create a new environment, store it in variable p for now.</p>
-<p class="p6"><span class="s2">p.push;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// push it, so i becomes the current environment.</p>
-<p class="p7">currentEnvironment.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">currentEnvironment === p; <span class="s4">// and they are identical.</span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~x;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// accessing creates a NodeProxy (uninitialized) automatically.</p>
-<p class="p6"><span class="s2">~x + ~y; <span class="Apple-tab-span">	</span></span>// this works immediately, because the lookup does not return nil,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">    </span></span>// but a placeholder (proxy) instead</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">p.postln; </span>// now there are two empty placeholders in the environment.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>c) using the proxyspace to change processes on the fly</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">//<span class="Apple-converted-space">  </span>boot the server</p>
-<p class="p7">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// as soon as a sound function (or any compatible input) is assigned to a proxy</p>
-<p class="p6">// this sound plays on its own private bus (so it is not audible yet.)</p>
-<p class="p7">(</p>
-<p class="p7">~x = {</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s6">RLPF</span>.ar(<span class="s6">Impulse</span>.ar(4) * 20, [850, 950], 0.2)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7">}</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p6">// the proxy has been initialized by its first assignment.</p>
-<p class="p6">// it plays at audio rate (because we have assigned an audio rate ugen function)</p>
-<p class="p6">// and it has two channels (because the function has stereo output)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~x.index; </span>// a nodeproxy owns a private bus, so its signal can be used in diverse ways.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// what is the proxy bus's index? this posts the index to the postwindow<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// before it was .ir(nil), now it is initialized to .ar(2)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~x.bus </span>// what is the proxy's bus?</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~x.play; </span>// now listen to it. a monitor is created (see <a href="../nodeproxy/Monitor.html"><span class="s8">Monitor</span></a>) that plays the signal</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// onto a public bus - by default, this is bus 0, the first audio output bus.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// This monitoring function is independent of the proxy itself.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// for further info see: <a href="jitlib_basic_concepts_03.html"><span class="s8">jitlib_basic_concepts_03</span></a> (part c)</p>
-<p class="p8"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// the sound function can be changed at any time:</p>
-<p class="p7">(</p>
-<p class="p7">~x = {</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">RLPF</span>.ar(<span class="s6">Impulse</span>.ar([5, 7]) * 5, [1450, 1234], 0.2)</p>
-<p class="p7">}</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p6">// You can tune a sound function to your liking very easily</p>
-<p class="p6">// by replacing it with little (or big) variations:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// filter freqs higher:</p>
-<p class="p7">~x = {<span class="Apple-tab-span">	</span><span class="s6">RLPF</span>.ar(<span class="s6">Impulse</span>.ar([5, 7]) * 5, [1800, 2000], 0.2) }</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// same pulse ratio (5/8), different pulse tempo:</p>
-<p class="p7">~x = {<span class="Apple-tab-span">	</span><span class="s6">RLPF</span>.ar(<span class="s6">Impulse</span>.ar([5, 8] * 3.2) * 5, [1800, 2000], 0.2) }</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// different filter:</p>
-<p class="p7">~x = {<span class="Apple-tab-span">	</span><span class="s6">Ringz</span>.ar(<span class="s6">Impulse</span>.ar([5, 8] * 3.2), [1800, 2000], 0.05) }</p>
-<p class="p2"><br></p>
-<p class="p6">// and if you set the proxy's fadeTime, you can create little<span class="Apple-converted-space"> </span></p>
-<p class="p6">// textures by hand:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p7">~x.fadeTime = 3;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// different filter freqs every time:</p>
-<p class="p7">~x = {<span class="Apple-tab-span">	</span><span class="s6">Ringz</span>.ar(<span class="s6">Impulse</span>.ar([5, 8] * rrand(0.5, 1.5)) * 0.5, ({ exprand(200, 4000) } ! 2), 0.05) }</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// here is another proxy:</p>
-<p class="p7">~y = { <span class="s6">Pan2</span>.ar(<span class="s6">Dust</span>.ar(20), 0) };</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~y.bus; </span>// it has two channels, just as the ~x., but it plays on another (private) bus.</p>
-<p class="p2"><br></p>
-<p class="p6">// note that ~y is not audible directly,</p>
-<p class="p6">// but it can be used like a UGen in any other proxy:</p>
-<p class="p7">(</p>
-<p class="p7">~x = {</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s6">RLPF</span>.ar(~y.ar * 8,<span class="Apple-converted-space">  </span>[1450, 1234], 0.2)</p>
-<p class="p7">}</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p6">// when the proxy changes, the result changes dynamically:</p>
-<p class="p2"><br></p>
-<p class="p7">~y = { <span class="s6">Impulse</span>.ar(<span class="s6">MouseX</span>.kr(2, 18, 1)) * [1, 1] };</p>
-<p class="p2"><br></p>
-<p class="p7">~y = { <span class="s6">PinkNoise</span>.ar(<span class="s6">MouseX</span>.kr(0, 0.2) * [1, 1]) };</p>
-<p class="p2"><br></p>
-<p class="p7">~y = { <span class="s6">Impulse</span>.ar([<span class="s6">MouseX</span>.kr(2, 18, 1), <span class="s6">MouseY</span>.kr(2, 18, 1)]) };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// stop listening. the proxies run in the background.</p>
-<p class="p2"><br></p>
-<p class="p7">~x.stop;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">~y.bus; </span>// ~y is playing on a different bus ...</p>
-<p class="p6"><span class="s2">~x.bus; </span>// than ~x.</p>
-<p class="p2"><br></p>
-<p class="p6">// we can also listen to ~y directly:</p>
-<p class="p7">~y.play;</p>
-<p class="p2"><br></p>
-<p class="p6">// to remove a proxy source, nil can be used:</p>
-<p class="p2"><br></p>
-<p class="p7">~y = <span class="s6">nil</span>;</p>
-<p class="p2"><br></p>
-<p class="p6">// stop listening</p>
-<p class="p7">~y.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s9"><span class="Apple-tab-span">	</span></span><span class="s2">further readings: <a href="proxyspace_examples.html"><span class="s10">proxyspace_examples</span></a> <a href="../../../ServerArchitecture/Bus.html"><span class="s3">Bus</span></a> <a href="../../../Core/Kernel/AbstractFunction.html"><span class="s3">AbstractFunction</span></a> <a href="../../../UGens/UGens.html"><span class="s3">UGens</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>d) when are the node proxies initialized?</b></p>
-<p class="p2"><br></p>
-<p class="p3">bus initialization of a node proxy happens as soon as it is used for the first time.</p>
-<p class="p3">later inputs are adjusted to this bus, as far as it is possible.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">~z2 = { <span class="s6">LFNoise0</span>.kr([1, 2, 3, 4]) }; // a four channel control rate proxy</p>
-<p class="p7">~z2.bus.postln;</p>
-<p class="p2"><br></p>
-<p class="p7">~z100 = 0.5; // a constant value creates a single channel control rate proxy.</p>
-<p class="p7">~z100.bus.postln;</p>
-<p class="p2"><br></p>
-<p class="p7">~z34.ar(3) <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// the first access (with a numChannels argument) allocates the bus</p>
-<p class="p7">~z34.bus.postln;<span class="Apple-tab-span">	</span>// a 3 channel audio proxy</p>
-<p class="p2"><br></p>
-<p class="p6">// these initializations can be removed by using clear:</p>
-<p class="p7">~z34.clear;</p>
-<p class="p7">~z34.bus.postln;</p>
-<p class="p2"><br></p>
-<p class="p3">This initialisation happens whenever the proxy is first used. Later, the proxy can</p>
-<p class="p3">be accessed with other rate/numChannels combinations as needed (rates are converted,</p>
-<p class="p3">numChannels are extended by wrapping, sources with too many channels are wrapped).</p>
-<p class="p4"><br></p>
-<p class="p3">Note that this might cause ambiguous initialisation in which case the proxy should</p>
-<p class="p3">be always initialized first. A typical problem is demonstrated here:</p>
-<p class="p2"><br></p>
-<p class="p7">~u.play(0, 2); <span class="Apple-tab-span">	</span>// initialize 2 audio channels (default). 0 is the output bus number.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// if the proxy is not inititialized, play defaults to 2 channels.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// here it is explicitly given only to make it more clear.</p>
-<p class="p7">~u = { <span class="s6">PinkNoise</span>.ar(0.2) }; <span class="s4">// use only one</span></p>
-<p class="p7">~u.numChannels; <span class="s4">// 2 channels</span></p>
-<p class="p7">~u.clear;</p>
-<p class="p2"><br></p>
-<p class="p3">if evaluated the other way round, only one channel is used:</p>
-<p class="p2"><br></p>
-<p class="p7">~u = { <span class="s6">PinkNoise</span>.ar(0.2) }; // initialize 1 audio channel</p>
-<p class="p7">~u.play(0, 2); <span class="Apple-tab-span">	</span>// play 2 channels: the 1 channel is expanded into 2.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// numChannels of .play defaults to the proxy's numChannels.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// here it is explicitly given, so to expand the channels</p>
-<p class="p7">~u.numChannels; <span class="s4">// 1 channel</span></p>
-<p class="p7">~u.clear;</p>
-<p class="p8"><br></p>
-<p class="p3">Thus it can be useful to explicitly initialize proxies that use variable type inputs:</p>
-<p class="p8"><br></p>
-<p class="p7">~b.kr(8); ~c.ar; // explicit initialisation</p>
-<p class="p7">p.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// post the whole proxy space</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>e) moving out of the proxy space:</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// play the audio:</p>
-<p class="p7">~x.play;</p>
-<p class="p2"><br></p>
-<p class="p7">~x = { <span class="s6">PinkNoise</span>.ar(0.5) };</p>
-<p class="p2"><br></p>
-<p class="p6">// p is the proxy space:</p>
-<p class="p7">p.postln;</p>
-<p class="p2"><br></p>
-<p class="p6">// to end all processes in p, use end:</p>
-<p class="p7">p.end(2) // 2 seconds fade out.</p>
-<p class="p2"><br></p>
-<p class="p6">// to remove all bus objects and free them from the bus allocato, use clear:</p>
-<p class="p7">p.clear;</p>
-<p class="p2"><br></p>
-<p class="p7">currentEnvironment.postln;</p>
-<p class="p2"><br></p>
-<p class="p6">// restore original environment:</p>
-<p class="p2"><br></p>
-<p class="p7">p.pop;</p>
-<p class="p2"><br></p>
-<p class="p7">currentEnvironment.postln;</p>
-<p class="p2"><br></p>
-<p class="p7">~a + ~b; // the old values are still here.</p>
-<p class="p8"><br></p>
-<p class="p7">p === currentEnvironment; // this is not the case anymore.</p>
-<p class="p2"><br></p>
-<p class="p6">// remove the content, so the garbage collector can release their memory.</p>
-<p class="p7">p.clear;</p>
-<p class="p2"><br></p>
-<p class="p6">// note that if you use this kind of accessing scheme, the objects are not garbage collected</p>
-<p class="p6">// until the keys are set to nil. This is a common mistake when using normal environments.</p>
-<p class="p2"><br></p>
-<p class="p6">// clear all in the normal environment:</p>
-<p class="p2"><br></p>
-<p class="p7">currentEnvironment.clear;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>f) using ProxySpace together with other Environments</b></p>
-<p class="p2"><br></p>
-<p class="p3">using proxy space as an access scheme for node proxies can get in the way of the</p>
-<p class="p3">normal use of environments as pseudo variables. Here are some ways to cope with this.</p>
-<p class="p4"><br></p>
-<p class="p9">//////////////<span class="Apple-tab-span">	</span>EnvirDocument is currently unavailable ////////////</p>
-<p class="p9">//// if you want to keep using the current environment as usual, you can restrict the</p>
-<p class="p9">//// scope of proxyspace to one document (note: this is mac-only currently)</p>
-<p class="p9">//</p>
-<p class="p9">//EnvirDocument(p, "proxyspace"); <span class="Apple-tab-span">	</span>// to test this, check for currentEnvironment here<span class="Apple-converted-space"> </span></p>
-<p class="p9">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// and in the envir document.</p>
-<p class="p10"><br></p>
-<p class="p9">// you can also access the proxy space and the proxies in it indirectly:</p>
-<p class="p11">p[<span class="s11">\x</span>].play;</p>
-<p class="p11">p[<span class="s11">\x</span>] = { <span class="s12">SinOsc</span>.ar(450, 0, 0.1) };</p>
-<p class="p10"><br></p>
-<p class="p9">// or: when the proxyspace is pushed, you can use a normal environment indirectly:</p>
-<p class="p11">p.push;</p>
-<p class="p11">d = ();</p>
-<p class="p11">d[<span class="s11">\buffer1</span>] = <span class="s12">Buffer</span>.alloc(s, 1024);</p>
-<p class="p9"><span class="s2">d.use { ~buffer1.postln; ~zz = 81; }; </span>// for more than one access to the environment, use .use</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p9">// to access the inner environment of proxy space directly,<span class="Apple-converted-space"> </span></p>
-<p class="p9">// e.g. to check whether a proxy exists, one can use .envir:</p>
-<p class="p10"><br></p>
-<p class="p11">p.envir.postln;</p>
-<p class="p9"><span class="s2">p.envir[</span><span class="s11">\x</span><span class="s2">].postln;<span class="Apple-tab-span">	</span></span>// a proxy with this name exists<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2">p.envir[</span><span class="s11">\nono</span><span class="s2">].postln;<span class="Apple-tab-span">	</span></span>// there is no proxy with this name.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p9">// p[\nono].postln; <span class="Apple-tab-span">	</span>// this access would have created a new proxy called \nono.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">previous: <a href="jitlib_basic_concepts_01.html"><span class="s3">jitlib_basic_concepts_01</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>next: <a href="jitlib_basic_concepts_03.html"><span class="s3">jitlib_basic_concepts_03</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_03.html b/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_03.html
deleted file mode 100644
index 3745dcd..0000000
--- a/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_03.html
+++ /dev/null
@@ -1,329 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #862a1b}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #862a1b; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 36.0px Georgia}
-span.s2 {color: #002df4}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0034af}
-span.s6 {color: #001bb9}
-span.s7 {color: #862a1b}
-span.s8 {font: 12.0px Helvetica; color: #000000}
-span.s9 {font: 9.0px Monaco}
-span.s10 {font: 9.0px Monaco; color: #862a1b}
-span.s11 {font: 12.0px Helvetica}
-span.s12 {color: #4f6823}
-span.s13 {color: #003ef4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>proxyspace - basic concepts<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b><span class="s1"><b>3</b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">internal structure of the node proxy, node order and the parameter context</p>
-<p class="p2"><br></p>
-<p class="p4">a) slots</p>
-<p class="p4">b) fadeTime</p>
-<p class="p4">b) play/stop, send/release, pause/resume, clear</p>
-<p class="p4">c) the parameter context</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">A NodeProxy has two internal contexts in which the objects are inserted:</p>
-<p class="p4">The group, which is on the server, and the nodeMap, which is a client side</p>
-<p class="p4">parameter context. As the group can contain an order of synths, there is</p>
-<p class="p4">a client side representation, in which the source objects are stored (see <a href="../../../Collections/Order.html"><span class="s2">Order</span></a>).</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">previous: <a href="jitlib_basic_concepts_02.html"><span class="s4">jitlib_basic_concepts_02</span></a> <span class="Apple-tab-span">	</span>next: <a href="jitlib_basic_concepts_04.html"><span class="s4">jitlib_basic_concepts_04</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// make new space</p>
-<p class="p7">p = <span class="s5">ProxySpace</span>.push(s.boot);</p>
-<p class="p6"><span class="s3">~z.play; ~y.ar; </span>// explicitly initialize proxies</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>a) NodeProxy slots:</b></p>
-<p class="p2"><br></p>
-<p class="p4">One node proxy can hold several objects in an execution order. The index can be any positive integer.</p>
-<p class="p8"><br></p>
-<p class="p9">// the initial slot (0) is used when assigning directly.</p>
-<p class="p9">// ~y is still unused, we will add it later.</p>
-<p class="p2"><br></p>
-<p class="p7">~z = (~y * pi).sin * 0.1 * { <span class="s6">LFSaw</span>.kr(<span class="s6">LFNoise1</span>.kr(0.1 ! 3).sum * -18).max(0.2) };</p>
-<p class="p2"><br></p>
-<p class="p9">// other slot numbers are accessed by positive integers:</p>
-<p class="p2"><br></p>
-<p class="p7">~y[1] = { <span class="s6">Saw</span>.ar([400, 401.3], 0.4) };</p>
-<p class="p7">~y[0] = { <span class="s6">Saw</span>.ar([300, 301], 0.4) };<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p9">// to remove one of them, nil is used:</p>
-<p class="p2"><br></p>
-<p class="p7">~y[0] = <span class="s6">nil</span>;</p>
-<p class="p2"><br></p>
-<p class="p9">// what is to be found at index 1?</p>
-<p class="p9"><span class="s3">~y.objects[1] </span>// a playing interface</p>
-<p class="p9"><span class="s3">~y.objects[1].source.postcs </span>// the function that was put in.</p>
-<p class="p9"><span class="s3">~y.objects.postcs <span class="Apple-tab-span">	</span></span>// this returns objects in the slots.</p>
-<p class="p9"><span class="s3">~y.source.postcs<span class="Apple-tab-span">	</span></span>// this returns the function in slot 0 only.</p>
-<p class="p2"><br></p>
-<p class="p8"><br></p>
-<p class="p4">multiple assignment</p>
-<p class="p8"><br></p>
-<p class="p6">// the function is assigned to th slots from 1 to 4<span class="Apple-converted-space"> </span></p>
-<p class="p7">~z[1..4] = { <span class="s5">SinOsc</span>.ar(exprand(300, 600), 0, <span class="s5">LFTri</span>.kr({exprand(1, 3)} ! 3).sum.max(0)) * 0.1 };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// the function is assigned to the slots 1, 2 and 3 (subsequent)</p>
-<p class="p7">~z[1..] = [ {<span class="s5">SinOsc</span>.ar(440) * 0.1 }, { <span class="s5">SinOsc</span>.ar(870) * 0.08 }, { <span class="s5">SinOsc</span>.ar(770) * 0.04 }];</p>
-<p class="p2"><br></p>
-<p class="p6">// if no slot is given, all other slots are emptied</p>
-<p class="p7">~z = { <span class="s5">OnePole</span>.ar(<span class="s5">Saw</span>.ar([400, 401.3], 0.3), 0.95) };</p>
-<p class="p2"><br></p>
-<p class="p7">~z.end;</p>
-<p class="p7">~y.end;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>b) fade time:</b></p>
-<p class="p2"><br></p>
-<p class="p6">// setting the fadeTime will allow cross fades.</p>
-<p class="p6">// in case of an audio rate proxy the fade is pseudo-gaussian</p>
-<p class="p6">// in case of a control rate proxy it is linear.</p>
-<p class="p2"><br></p>
-<p class="p7">~z.play;</p>
-<p class="p2"><br></p>
-<p class="p7">~z.fadeTime = 5.0; <span class="s7">// 5 seconds</span></p>
-<p class="p7">~z = { max(<span class="s5">SinOsc</span>.ar([300, 301]), <span class="s5">Saw</span>.ar([304, 304.3])) * 0.1 };</p>
-<p class="p7">~z = { max(<span class="s5">SinOsc</span>.ar(<span class="s5">ExpRand</span>(300, 600)), <span class="s5">Saw</span>.ar([304, 304.3])) * 0.1<span class="Apple-converted-space">  </span>};</p>
-<p class="p2"><br></p>
-<p class="p6">// the fadeTime can be set effectively at any time</p>
-<p class="p7">~z.fadeTime = 0.2;</p>
-<p class="p7">~z = { max(<span class="s5">SinOsc</span>.ar(<span class="s5">ExpRand</span>(3, 160)), <span class="s5">Saw</span>.ar([304, 304.3])) * 0.1 };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">note that the fadeTime is also used for the operations xset and xmap.(see below)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>c) play/stop, send/free, pause/resume</b></p>
-<p class="p3"><br></p>
-<p class="p4">there are a couple of messages a NodeProxy understands that are related to play, stop etc.</p>
-<p class="p4">Here is what they do.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>play/stop</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>this pair of messages is related to the monitoring function of the proxy.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>play starts monitoring, stop ends the monitoring.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><i>if the proxy group is playing</i> (this can be tested with .isPlaying), play will not</p>
-<p class="p4"><span class="Apple-tab-span">	</span>affect the proxie's internal behaviour in any way. Only if it is not playing (e.g because</p>
-<p class="p4"><span class="Apple-tab-span">	</span>one has freed the group by cmd-period) it starts the synths/objects in the proxy.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>Stop never affects the internal state of the proxy.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span>// first hit cmd-period.</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z =<span class="Apple-converted-space">  </span>{ max(<span class="s5">SinOsc</span>.ar(<span class="s5">ExpRand</span>(3, 160)), <span class="s5">Saw</span>.ar([304, 304.3])) * 0.1 };</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.play;<span class="Apple-tab-span">	</span></span>// monitor the proxy</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.stop; </span>// note that now the proxy is still playing, but only in private</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.isPlaying; </span>// is the group playing? yes.</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.monitor.isPlaying; </span>// is the monitor playing? no.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s9"><span class="Apple-tab-span">	</span></span>You can pass a vol argument to play to adjust the monitor volume without</p>
-<p class="p4"><span class="Apple-tab-span">	</span>affecting the proxy internal bus volume.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z.play(vol:0.3);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// while playing you can set the volume also:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z.vol = 0.8;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>send / release</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>this pair of messages controls the synths within the proxy. It does not</p>
-<p class="p4"><span class="Apple-tab-span">	</span>affect the monitoring (see above). send starts a new synth, release releases the synth.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>send</b> by default releases the last synth. if the synth frees itself (doneAction 2) <b>spawn</b> can be used.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// first hit cmd-period.</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.play; </span>// monitor. this starts also the synth, if the group wasn't playing.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z = { <span class="s5">SinOsc</span>.ar(<span class="s5">ExpRand</span>(20, 660) ! 2) * <span class="s5">Saw</span>.ar(<span class="s5">ExpRand</span>(200, 960) ! 2) * 0.1 };</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.release; </span>// release the synth. the current fadeTime is used for fade out</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.send; </span>// send a new synth. the current fadeTime is used for fade in</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.send; </span>// send another synth, release the old</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z.release;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z.stop;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.play; </span>// monitor. as the group was still playing, this does _not_ start the proxy.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s9"><span class="Apple-tab-span">	</span></span>in order to free the synths and the group together,<span class="Apple-converted-space">  </span><b>free</b> is used:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.free; </span>// this does also not affect the monitoring.</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.play; </span>// monitor. as the group was not playing, this starts the proxy.</p>
-<p class="p8"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s10"><span class="Apple-tab-span">	</span></span>in order to free the synths and the group, stop playback, <b>end</b> is used.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.end(3); </span>// end in 3 sec</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>in order to rebuild the synthdef on the server, use <b>rebuild</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>this is of course far less efficient than <i>send</i>, but it can make sense;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>e.g. the synthdef has random elements.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>UGens like<span class="Apple-converted-space">  </span>Rand(300, 400) create new random values on every send,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>while client-side random functions like exprand(1, 1.3) only get built once;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>to force new decisions with these, one can use <b>rebuild</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>~z = {<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Splay.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5"><span class="Apple-tab-span">	</span>SinOsc</span>.ar(Rand(300,400) + ({exprand(1, 1.3)} ! rrand(1, 9)))</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s5">LFCub</span>.ar({exprand(30, 900)} ! rrand(1, 9))</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* LFSaw.kr({exprand(1.0, 8.0)} ! rrand(1, 9)).max(0)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>~z.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z.rebuild;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.send;<span class="Apple-tab-span">	</span></span>// send just creates a new synth - new freq, all else remains the same</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.rebuild; </span>// rebuild the synthdef, re-decide numbers of oscs<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z.end;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4"><b>pause / resume</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>when paused, a node proxy still stays active, but every synth that is started is paused until</p>
-<p class="p4"><span class="Apple-tab-span">	</span>the proxy is resumed again.</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s11"><span class="Apple-tab-span">	</span></span>~z.play;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.pause; </span>// pause the synth.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z = { <span class="s5">SinOsc</span>.ar({<span class="s5">ExpRand</span>(300, 660)} ! 2) * 0.1 }; <span class="Apple-tab-span">	</span><span class="s7">// you can add a new function,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// which is paused.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.resume; </span>// resume playing.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Note that pause/resume causes clicks with audio rate proxies, which do not<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>happen when pauseing control rate proxies.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>clear</b><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>clear removes all synths, the group, the monitor and releases the bus number.</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s11"><span class="Apple-tab-span">	</span></span>~z.clear;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~z.bus; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">// no bus</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>~z.isNeutral; </span>// not initialized.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>note that when other processes use the nodeproxy these are not notified. So clearing has to<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>be done with regard to this.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>d) The parameter context</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">what happens to function arguments?</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y = { <span class="s5">arg</span> freq=500; <span class="s5">SinOsc</span>.ar(freq * [1, 1.1]) * 0.1 };</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4">now the argument 'freq' is a control in the synth (just like in SynthDef) which you can change by the '<b>set</b>' message.</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.set(<span class="s12">\freq</span>, 440);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// unlike in synths, this context is kept and applied to every new synth:</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y = { <span class="s5">arg</span> freq=500; <span class="s5">Formant</span>.ar(50, freq * [1, 1.1], 70) * 0.1 };</p>
-<p class="p3"><br></p>
-<p class="p4"><b>xset</b> is a variant of set, to crossfade the change using the current fadeTime:</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.fadeTime = 3;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.xset(<span class="s12">\freq</span>, 600);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// the same context is applied to all slots:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y[2] = { <span class="s5">arg</span> freq=500; <span class="s5">SinOsc</span>.ar(freq * [1, 1.1]) * LFPulse.kr(Rand(1, 3)) * 0.1 };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.xset(<span class="s12">\freq</span>, 300);</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4">the parameter context also can keep bus mappings. a control can be mapped to any <i>control proxy</i>:</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~c = { <span class="s5">MouseX</span>.kr(300, 800, 1) };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.map(<span class="s12">\freq</span>, ~c);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// also here the context is kept:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y = { <span class="s5">arg</span> freq=500; <span class="s5">Formant</span>.ar(4, freq * [1, 1.1], 70) * 0.1 };</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>xmap </b>is a variant of map, to crossfade the change using the current fadeTime:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.set(<span class="s12">\freq</span>, 440);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.xmap(<span class="s12">\freq</span>, ~c);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">to remove a setting or a mapping, use <b>unmap / unset</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.unmap;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4">also multichannel controls can be mapped to a multichannel proxy using <b>map</b>:</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~c2 =<span class="Apple-converted-space">  </span>{ [<span class="s5">MouseX</span>.kr(300, 800, 1), <span class="s5">MouseY</span>.kr(300, 800, 1)] };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y = { <span class="s5">arg</span> freq=#[440, 550]; <span class="s5">SinOsc</span>.ar(freq) * <span class="s5">SinOsc</span>.ar(freq + 3) * 0.05 };</p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.map(<span class="s12">\freq</span>, ~c2);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">the parameter context can be examined:</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>~y.nodeMap;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>// apart from the parameters explicitly set,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>// it contains the bus index and the fadeTime</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>// for more information, see <a href="../nodeproxy/NodeMap.html"><span class="s13">NodeMap</span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s3">p.clear(8); </span>// clear the whole proxy space, in 8 secs.</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s3">previous: <a href="jitlib_basic_concepts_02.html"><span class="s4">jitlib_basic_concepts_02</span></a> <span class="Apple-tab-span">	</span>next: <a href="jitlib_basic_concepts_04.html"><span class="s4">jitlib_basic_concepts_04</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_04.html b/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_04.html
deleted file mode 100644
index fc32c5b..0000000
--- a/Help/Libraries/JITLib/tutorials/jitlib_basic_concepts_04.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316; min-height: 12.0px}
-span.s1 {font: 36.0px Georgia}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0025b2}
-span.s5 {color: #0000ff}
-span.s6 {color: #982316}
-span.s7 {color: #416d1f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Timing in NodeProxy<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>4</b></span></p>
-<p class="p2"><br></p>
-<p class="p3">Changes that happen to NodeProxy, most importantly setting its source, are normally done</p>
-<p class="p3">whenever the put method is called (or, in ProxySpace, the assignment operation = ).</p>
-<p class="p3">Sometimes it is desirable to time these changes relative to a clock.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">previous: <a href="jitlib_basic_concepts_03.html"><span class="s3">jitlib_basic_concepts_03</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>next: <a href="../JITLib.html"><span class="s3">JITLib</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">a) clock</p>
-<p class="p3">b) quant and offset</p>
-<p class="p3">c) client and server tempo</p>
-<p class="p3">d) sample accurate output</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a) clock</b></p>
-<p class="p2"><br></p>
-<p class="p3">generally, every node proxy can have its own time base, usually</p>
-<p class="p3">a tempo clock. the clock is responsible for the timing of insertion</p>
-<p class="p3">of new functions, per default at the next beat of the clock.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">p = <span class="s4">ProxySpace</span>.push(s.boot);</p>
-<p class="p6">~x.play; ~y.play;</p>
-<p class="p5"><br></p>
-<p class="p7">// these two synths are started at the time when they are inserted:</p>
-<p class="p6">~x = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(1), 400, 0.05).dup };</p>
-<p class="p6">~y = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(1), 600, 0.05).dup };</p>
-<p class="p5"><br></p>
-<p class="p7">// adding a common clock:</p>
-<p class="p6">~x.clock = <span class="s4">TempoClock</span>.default; ~x.quant = 1.0;</p>
-<p class="p6">~y.clock = <span class="s4">TempoClock</span>.default; ~y.quant = 1.0;</p>
-<p class="p5"><br></p>
-<p class="p7">// now they are in sync</p>
-<p class="p6">~x = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(1), 400, 0.05).dup };</p>
-<p class="p6">~y = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(1), 600, 0.05).dup };</p>
-<p class="p5"><br></p>
-<p class="p7">// for simplicity, one can provide a clock and a quant for a whole proxy space:</p>
-<p class="p5"><br></p>
-<p class="p6">p.clock = <span class="s4">TempoClock</span>.default; p.quant = 1.0;</p>
-<p class="p6">~y = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(1), 800, 0.05).dup };</p>
-<p class="p5"><br></p>
-<p class="p6">~z.play;</p>
-<p class="p6">~z = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(1), [500, 514], 0.8).dup * 0.1};</p>
-<p class="p6">~z = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(1), exprand(300, 400 ! 2), 1.8).dup * 0.1 };</p>
-<p class="p6">~z = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(2), exprand(300, 3400 ! 2), 0.08).dup * 0.2 };</p>
-<p class="p6">~z.end;</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">p.clear; </span>// clear all.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>sequence of events:</b></p>
-<p class="p3">When inserting a new function into the proxy, the synthdef is built, sent to the server</p>
-<p class="p3">who sends back a message when it has completed. Then the proxy waits for the next beat to start</p>
-<p class="p3">the synth. When using node proxies with patterns, the patterns are played using the clock as a scheduler.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>b) quant and offset</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">In order to be able to control the offset/quant point of insertion, the 'quant' instance variable can be used,</p>
-<p class="p3">which can be either a number or an array of the form [quant, offset], just like in pattern.play(quant).</p>
-<p class="p5"><br></p>
-<p class="p6">~z.play; ~y.play;</p>
-<p class="p6">~z = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(2), exprand(300, 3400 ! 2), 0.08).dup * 0.2 };</p>
-<p class="p6">~y.quant = [1, 0.3]; // offset of 0.3, quant of 1.0</p>
-<p class="p6">~y = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(1), 600, 0.05).dup };</p>
-<p class="p6">~y.quant = [2, 1/3]; // offset of 1/3, quant of 2.0</p>
-<p class="p6">~y = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(0.5), 600, 0.05).dup };</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">quant and offset scheduling is used for the following operations:</p>
-<p class="p3"><b>play</b>, <b>put</b>, <b>removeAt</b>, <b>setNodeMap</b>, <b>wakeUp</b>, <b>rebuild</b> (and the rebuild operations lag, setRates, bus_)</p>
-<p class="p3">For more information about quantisation<span class="Apple-converted-space">  </span>in SC, see <a href="../../../Scheduling/Quant.html"><span class="s5">Quant</span></a></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>c) connecting client and server tempo</b></p>
-<p class="p5"><br></p>
-<p class="p3">a ProxySpace has the method <b>makeTempoClock</b>, which creates an instance of <a href="../nodeproxy/TempoBusClock.html"><span class="s5">TempoBusClock</span></a></p>
-<p class="p3">together with a node proxy (~tempo) which it keeps in sync.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">p.makeTempoClock(2.0); </span>// create a new tempoclock with 2 beats/sec</p>
-<p class="p6">~y.play; ~x.play;</p>
-<p class="p6">~y.quant = 1; // set the quant back to 1 and the offset to 0</p>
-<p class="p6">~y = { <span class="s4">Ringz</span>.ar(<span class="s4">Impulse</span>.ar(~tempo.kr), 600, 0.05).dup }; <span class="s6">// impulse uses tempo</span></p>
-<p class="p6">~x = <span class="s4">Pbind</span>(<span class="s7">\instrument</span>, <span class="s7">\default</span>, <span class="s7">\freq</span>, <span class="s4">Pseq</span>([300, 400], <span class="s4">inf</span>)); <span class="s6">// pattern uses tempoclock</span></p>
-<p class="p5"><br></p>
-<p class="p6">p.clock.tempo = 1.0; <span class="s6">// set the tempo to 1</span></p>
-<p class="p6">p.clock.tempo = 2.2; // set the tempo to 2.2</p>
-<p class="p5"><br></p>
-<p class="p6">~x.free;</p>
-<p class="p6">~y.free;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>d) sample accurate output</b></p>
-<p class="p2"><br></p>
-<p class="p3">for efficiency, NodeProxy uses a normal Out UGen for writing to its bus. If sample accurate</p>
-<p class="p3">playback is needed (OffsetOut), the ProxySynthDef class variable sampleAccurate can be set to true.</p>
-<p class="p3">Note that for audio through from external sources, this creates a delay for up to one block (e.g. about 1 ms.)</p>
-<p class="p5"><br></p>
-<p class="p9"><br></p>
-<p class="p7">// example</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4">ProxySynthDef</span>.sampleAccurate = <span class="s4">false</span>;</p>
-<p class="p5"><br></p>
-<p class="p6">~x.play;</p>
-<p class="p5"><br></p>
-<p class="p7">// the grain frees itself</p>
-<p class="p6">~x = { <span class="s4">SinOsc</span>.ar(800) * <span class="s4">EnvGen</span>.ar(<span class="s4">Env</span>.perc(0.001, 0.03, 0.4), doneAction:2) };</p>
-<p class="p5"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7">// jittery tone.</p>
-<p class="p6">(</p>
-<p class="p6">r = Routine {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>200.do { <span class="s4">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~x.spawn;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(0.005).wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4">ProxySynthDef</span>.sampleAccurate = <span class="s4">true</span>;</p>
-<p class="p5"><br></p>
-<p class="p7">// steady tone, because sample accurate.</p>
-<p class="p5"><br></p>
-<p class="p6">~x.rebuild;</p>
-<p class="p5"><br></p>
-<p class="p6">r.stop;</p>
-<p class="p5"><br></p>
-<p class="p6">p.clear; // remove all.<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s2">previous: <a href="jitlib_basic_concepts_03.html"><span class="s3">jitlib_basic_concepts_03</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/jitlib_efficiency.html b/Help/Libraries/JITLib/tutorials/jitlib_efficiency.html
deleted file mode 100644
index 97613cf..0000000
--- a/Help/Libraries/JITLib/tutorials/jitlib_efficiency.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Futura}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; color: #000000}
-span.s1 {color: #0000ff}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.s5 {color: #606060}
-span.s6 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">Efficient coding with NodeProxy</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><a href="../nodeproxy/NodeProxy.html">NodeProxy</a></span> (and, in disguise <a href="../environments/ProxySpace.html"><span class="s1">ProxySpace</span></a>) represent "pronouns", placeholders for all kinds</p>
-<p class="p3">of sound producing objects that are able to write to a specific bus on the server.</p>
-<p class="p4"><br></p>
-<p class="p3">To prepare such an object for playing, different objects require different things,</p>
-<p class="p3">some very little, some more. As working with the placeolders does not show directly</p>
-<p class="p3">which actions are very efficient and whic ones are not, it is shown here more in detail.</p>
-<p class="p4"><br></p>
-<p class="p3">This is also important if you want to automate certain processes (e.g. for control by an external interface or a task) - some things (a) are not meant to be used in certain ways and better solutions should be used instead then, others are much more efficient (b, c)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p5">a = <span class="s2">NodeProxy</span>.audio;</p>
-<p class="p6">ProxySpace<span class="s3">.push;</span></p>
-<p class="p7"><br></p>
-<p class="p5">a.source = ... is equivalent to ~a = ...</p>
-<p class="p5">a.add(...) a.put(0,...) a[0] = ... ~a[0] = ... are equivalent in cpu load.</p>
-<p class="p7"><br></p>
-<p class="p8"><b>a) rebuild and send: </b>manual rate</p>
-<p class="p8">the following code requires a rebuild and send of a <span class="s2">SynthDef</span> and is thus most cpu-expensive.</p>
-<p class="p8">though fine for slower use (esp.hand-use) for automatisation it is better to build a synthdef and assign it</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a = { someUGenFunction };<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a = <span class="s2">Patch</span>(instrname, args);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a = <span class="s2">SynthDef</span>(<span class="s4">\name</span>, { someUGenFunction });</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// the same applies to rebuilding the graphs:</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.rebuild</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// this rebuild is also used when setting one of the following properties:</p>
-<p class="p5"><span class="Apple-tab-span">	</span>server, bus, setRates</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b>b) starting synths and tasks</b></p>
-<p class="p8">the following code sends commands to the server to start synths, which is load mainly on the server</p>
-<p class="p8">and depends on the characteristics of the synthdef:</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span>~a = </span><span class="s4">\synthDefName</span><span class="s3">; </span>// the synthdef is already on the server</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a = <span class="s2">Pbind</span>(<span class="s4">\instrument</span>, name, <span class="s4">\freq</span>, ...);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a = <span class="s2">Routine</span>({ loop({ s.sendMsg(<span class="s5">"/s_new"</span>, name, ...)})<span class="Apple-converted-space">  </span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span>~a.refresh; ~a.wakeUp; </span>// waking up a stopped proxy does not require a resend</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span>these resend the synth with new properies</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span>~a.send(...) </span>// directly sends a message. the mapping bundle of the proxy is cached</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.sendAll(...)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// for the following the bundle is recalculated if a new key is assigned.</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if you use the same key with a different value, the bundle is modified</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.xset(...) ~a.xmap(...)<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.nodeMap_(a map)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.fadeToMap(a map)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// synthdefs for these things are on the server already.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.gate, ~a.env, ~a.line, ~a.xline</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// some more calculations have to be made on client side, so if automated, it is better to use</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// the above or a lag in the synth.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.lineAt(key), ~a.xlineAt(key)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b>c) sending messages to running synths: </b>for these the least calculation has to be done</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span>~a.set(</span><span class="s4">\freq</span><span class="s3">, 400, </span><span class="s4">\dt</span><span class="s3">, 0.2); ~a.unset(</span><span class="s4">\freq</span><span class="s3">); </span>// if running the bundle will be recalculated</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.map(<span class="s4">\freq</span>, ~lfo); ~a.unmap(<span class="s4">\freq</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.fadeTime = 2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.gateAt(key)<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// for avoiding bundle recalculation you can directly talk to the group.</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// this setting will not be kept when you exchange the synth</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~a.group.set(<span class="s4">\freq</span>, 500);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><b>switching audio (this can now be done with map!)</b></p>
-<p class="p10"><b>todo: rewrite this part.</b></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span>control rate sources can be easily and efficiently switched using <b>map</b> or <b>xmap</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span>here is an example of how already running audio rate inputs can be switched.</p>
-<p class="p8"><span class="Apple-tab-span">	</span>it is about as efficient as (b) - first example (setting a defname)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>it works only for 1 or 2 channels right now.</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">s.boot;</p>
-<p class="p5">p = <span class="s2">ProxySpace</span>.push(s);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">~out.play;</p>
-<p class="p7"><br></p>
-<p class="p5">~s1 = { <span class="s2">Blip</span>.ar(<span class="s2">Rand</span>(32,15), 100, 0.5) };</p>
-<p class="p5">~s2 = { <span class="s2">SinOsc</span>.ar(740, 0, 0.1) };</p>
-<p class="p5">~s3 = { <span class="s2">Pulse</span>.ar(140, 0.2, 0.1) };</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">~out = {<span class="Apple-converted-space">  </span><span class="s2">Pan2</span>.ar(~mix.ar(1), <span class="s2">MouseX</span>.kr(-1,1)) };</p>
-<p class="p7"><br></p>
-<p class="p5">~mix.read(~s1);</p>
-<p class="p5">~mix.read(~s2);</p>
-<p class="p5">~mix.read(~s3);</p>
-<p class="p7"><br></p>
-<p class="p9">//resetting the source stops reading</p>
-<p class="p5">~mix = <span class="s4">\default</span>;</p>
-<p class="p7"><br></p>
-<p class="p9">//now you can also crossfade audio efficiently:</p>
-<p class="p5">~mix.fadeTime = 1.5;</p>
-<p class="p7"><br></p>
-<p class="p5">~mix.read(~s1);</p>
-<p class="p5">~mix.read(~s2);</p>
-<p class="p5">~mix.read(~s3);</p>
-<p class="p7"><br></p>
-<p class="p9">// automation:</p>
-<p class="p5">(</p>
-<p class="p5">t = <span class="s2">Task</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> dt;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dt = rrand(0.01, 0.3);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~mix.fadeTime = dt;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~mix.read([~s1, ~s2, ~s3].choose);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dt.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s3">t.play(</span>SystemClock<span class="s3">);</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9">// change the sources meanwhile:</p>
-<p class="p5">~s1 = { <span class="s2">Blip</span>.ar(105, 100, 0.2) };</p>
-<p class="p5">~s2 = { <span class="s2">SinOsc</span>.ar(350, 0, 0.1) };</p>
-<p class="p5">~s3 = { <span class="s2">Pulse</span>.ar(60, 0.2, 0.1) };</p>
-<p class="p7"><br></p>
-<p class="p5">~freq = { <span class="s2">MouseX</span>.kr(200, 600, 2) };</p>
-<p class="p7"><br></p>
-<p class="p5">~s1 = { <span class="s2">Blip</span>.ar(~freq.kr * 0.3, 10, 0.2) };</p>
-<p class="p5">~s2 = { <span class="s2">SinOsc</span>.ar(~freq.kr, 0, 0.1) };</p>
-<p class="p5">~s3 = { <span class="s2">Pulse</span>.ar(~freq.kr * 0.2, 0.2, 0.1) };</p>
-<p class="p7"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5">t.stop;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9">// note that when restarting ~out, the inputs have to be woken up.</p>
-<p class="p9">// to avoid this, you can add the inputs to the mix nodeMap parents:</p>
-<p class="p7"><br></p>
-<p class="p5">~mix.nodeMap.parents.putAll( (s1: ~s1, s2: ~s2, s3: ~s3) );</p>
-<p class="p7"><br></p>
-<p class="p9">// also the task can be added to the proxy:</p>
-<p class="p5">(</p>
-<p class="p5">~mix.task = <span class="s2">Routine</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~mix.fadeTime = rrand(0.01, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~mix.read([~s1, ~s2, ~s3].choose);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.2, 0.4].choose.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/jitlib_fading.html b/Help/Libraries/JITLib/tutorials/jitlib_fading.html
deleted file mode 100644
index 543b89a..0000000
--- a/Help/Libraries/JITLib/tutorials/jitlib_fading.html
+++ /dev/null
@@ -1,212 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-span.s1 {color: #0000ff}
-span.s2 {color: #0025b2}
-span.s3 {color: #606060}
-span.s4 {color: #416d1f}
-span.s5 {color: #982316}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Fade envelope generation and crossfading</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s1"><a href="../nodeproxy/NodeProxy.html">NodeProxy</a></span> (<a href="../nodeproxy/ProxySynthDef.html"><span class="s1">ProxySynthDef</span></a>) looks for inner envelopes in your definition function</p>
-<p class="p4">to find out whether <b>a fade envelope is needed or not</b>. In case there is no other inner</p>
-<p class="p4">possibility of freeing the synth, either<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4">a) <span class="Apple-tab-span">	</span>a fade envelope is created (audio / control rate output)</p>
-<p class="p3"><br></p>
-<p class="p4">b) <span class="Apple-tab-span">	</span>the synth is freed directly with no fading (scalar output or doneAction 1)</p>
-<p class="p3"><br></p>
-<p class="p4">c) <span class="Apple-tab-span">	</span>if you provide a gate arg and a doneAction 2 to your ugenGraph function, this is supposed</p>
-<p class="p4"><span class="Apple-tab-span">	</span>to be a fade envelope for the synth</p>
-<p class="p3"><br></p>
-<p class="p4">d) <span class="Apple-tab-span">	</span>if a synthdef name is used, case c) is supposed</p>
-<p class="p3"><br></p>
-<p class="p4">... so in most cases, there is not much to worry about, just these two points ar important,</p>
-<p class="p4">if one wants to use a self releasing synth or a different out ugen:</p>
-<p class="p3"><br></p>
-<p class="p4">e) <span class="Apple-tab-span">	</span>own responsibility:</p>
-<p class="p4"><span class="Apple-tab-span">	</span>if the function creates a ugengraph that can be freed by trigger or other things, it<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>waits for this action instead of the node proxy freeing the synth.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4">f) <span class="Apple-tab-span">	</span>own out channel with 'out' arg: the control ugen with the name 'out' is set to the output channel</p>
-<p class="p4"><span class="Apple-tab-span">	</span>number of the proxy.</p>
-<p class="p5"><br></p>
-<p class="p6">p = <span class="s2">ProxySpace</span>.push(s.boot);</p>
-<p class="p5"><br></p>
-<p class="p6">~out.play;</p>
-<p class="p5"><br></p>
-<p class="p7">// note that you can use this functionality also when using ProxySynthDef directly:</p>
-<p class="p5"><br></p>
-<p class="p6">d = <span class="s2">ProxySynthDef</span>(<span class="s3">"test"</span>, { <span class="s2">arg</span> freq=440; <span class="s2">SinOsc</span>.ar(freq) }).send(s);</p>
-<p class="p6">s.sendMsg(<span class="s3">"/s_new"</span>, <span class="s3">"test"</span>, 1980, 1, 1, <span class="s4">\freq</span>, 340);</p>
-<p class="p6">s.sendMsg(<span class="s3">"/n_set"</span>, 1980, <span class="s4">\freq</span>, 240);</p>
-<p class="p6">s.sendMsg(<span class="s3">"/n_set"</span>, 1980, <span class="s4">\fadeTime</span>, 4);</p>
-<p class="p6">s.sendMsg(<span class="s3">"/n_set"</span>, 1980, <span class="s4">\gate</span>, 0);</p>
-<p class="p5"><br></p>
-<p class="p2"><b>a) automatic fade envelope generation</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// no inner envelope and audio / control rate output</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">PinkNoise</span>.ar([1,1]*0.1) };</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">~kout = { <span class="s2">PinkNoise</span>.kr([1,1]*0.1) };</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p2"><b>b) automatic free instead of crossfade</b></p>
-<p class="p5"><br></p>
-<p class="p7">// inner envelope that cannot free the synth, the synth is freed when a new<span class="Apple-converted-space"> </span></p>
-<p class="p7">// function is assigned.</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">arg</span> t_trig; <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.asr, t_trig) * <span class="s2">PinkNoise</span>.ar([1,1]) };</p>
-<p class="p6">)</p>
-<p class="p6">~out.group.set(<span class="s4">\t_trig</span>, 1);</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">arg</span> t_trig; <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.asr, t_trig) * <span class="s2">SinOsc</span>.ar([1,1]*400) };</p>
-<p class="p6">)</p>
-<p class="p6">~out.group.set(<span class="s4">\t_trig</span>, 1);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// for a scalar output also no fade env is created, but the synth is freed (without fading)</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(<span class="s2">Rand</span>(440,550),0,0.2)) };</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p2"><b>c) custom fade envelope</b></p>
-<p class="p5"><br></p>
-<p class="p7">// when a gate arg is provided, and the env can free the synth, this envelope</p>
-<p class="p7">// is supposed to be the fade envelope for the synth: no extra fade env is created.</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">arg</span> gate=1; <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.asr, gate, doneAction:2) * 0.2 * <span class="s2">SinOsc</span>.ar([1,1]*<span class="s2">Rand</span>(440,550)) };</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p2"><b>d) SynthDef name assignment</b></p>
-<p class="p5"><br></p>
-<p class="p7">// if a symbol is used as input, the defname of a def on the server is supposed</p>
-<p class="p7">// to represent a SynthDef that has a gate, an out input and can free itself.</p>
-<p class="p6">(</p>
-<p class="p6">~out = <span class="s4">\default</span>;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p7">// this is the minimal requirement arguments for such a use (similar to Pbind)</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"test"</span>, { <span class="s2">arg</span> gate=1, out;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Formant</span>.ar(300, 200, 10) * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.asr, gate, doneAction:2))</p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p7">// you can also provide a fadeTime arg, whic is set by the proxy:</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"test"</span>, { <span class="s2">arg</span> gate=1, out, fadeTime=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Formant</span>.ar(Rand(20,40), 600, 10, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.asr(fadeTime,1,fadeTime), gate, doneAction:2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">~out = \test;</p>
-<p class="p6">~out.fadeTime = 3;</p>
-<p class="p5"><br></p>
-<p class="p4">note that the <b>number of channels</b> is your own responsibility when using symbols,<span class="Apple-converted-space"> </span></p>
-<p class="p4">as a symbol carries no channel information!</p>
-<p class="p4">(in all other cases the number of channels is wrapped or expanded to fit the proxy)</p>
-<p class="p5"><br></p>
-<p class="p7">// if the synthdef has a fixed duration envelope, there is a FAILURE /n_set Node not found message.</p>
-<p class="p7">// with no further significance</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">Sy</span>n<span class="s2">thDef</span>(<span class="s3">"test"</span>, { <span class="s2">arg</span> gate=1, out;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Formant</span>.ar(<span class="s2">Rand</span>(20,40), 600, 10, 0.6)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc, gate, doneAction:2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">~out = \test;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p2"><b>e) own free responsibility</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">//inner envelope that can free the synth, no extra fade env is created:</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">arg</span> t_trig; <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.asr, t_trig, doneAction:2) * <span class="s2">PinkNoise</span>.ar([1,1]) };</p>
-<p class="p6">)</p>
-<p class="p6">~out.group.set(<span class="s4">\t_trig</span>, 1); <span class="s5">//end it</span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s6">~out.send; </span>//start a new synth</p>
-<p class="p6">~out.group.set(<span class="s4">\t_trig</span>, 1); <span class="s5">//end it again</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// if there is a ugen that can free the synth, no extra fade env is created either,</p>
-<p class="p7">// but it supposes the synth frees itself, so if a new function is assigned it does</p>
-<p class="p7">// not get freed.</p>
-<p class="p6">(</p>
-<p class="p6">~out = {<span class="Apple-converted-space">  </span><span class="s2">arg t_trig</span>;</p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span>FreeSelf<span class="s6">.kr(</span>t_trig<span class="s6">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">PinkNoise</span>.ar([1,1]*0.3);</p>
-<p class="p6">};</p>
-<p class="p6">)</p>
-<p class="p6">~out.group.set(<span class="s4">\t_trig</span>, 1);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p2"><b>f) own output responsibility</b></p>
-<p class="p5"><br></p>
-<p class="p7">// the arg name 'out' can be used to output through the right channel.</p>
-<p class="p7">// of course with this one can get problems due to a wrong number of channels</p>
-<p class="p7">// or deliberate hacks.</p>
-<p class="p5"><br></p>
-<p class="p7">//left speaker</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">arg</span> out;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">OffsetOut</span>.ar(out, <span class="s2">Impulse</span>.ar(10,0,0.1))</p>
-<p class="p6">}</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p7">//both speakers</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">arg</span> out;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">OffsetOut</span>.ar(out, <span class="s2">Impulse</span>.ar([10, 10],0,0.1))</p>
-<p class="p6">}</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p7">//this plays out into another adjacent bus: this is a possible source of confusion.<span class="Apple-converted-space"> </span></p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s2">arg</span> out;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">OffsetOut</span>.ar(out, <span class="s2">Impulse</span>.ar([10, 10, 10],0,0.1))</p>
-<p class="p6">}</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/jitlib_networking.html b/Help/Libraries/JITLib/tutorials/jitlib_networking.html
deleted file mode 100644
index a9e2663..0000000
--- a/Help/Libraries/JITLib/tutorials/jitlib_networking.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a3220e}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a3220e; min-height: 12.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0028b7}
-span.s3 {color: #606060}
-span.s4 {color: #0000ff}
-span.s5 {font: 12.0px Helvetica; color: #000000}
-span.s6 {color: #000000}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #a3220e}
-span.s9 {font: 9.0px Monaco; color: #a3220e}
-span.s10 {color: #002aff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>networked programming</b><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p3"><i>please note any problems, I'll try to add solutions here.</i></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>1) using ProxySpace with more than one client, with separate bus spaces</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><i>Note:</i> <span class="Apple-tab-span">	</span>if only one client is using a remote server, only step (a) and step (d) are relevant.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The clientID argument can be left out then.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><i>before you start:</i></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remember to synchronize your system clocks. This can be done by:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in OS X: SystemPreferences>Date&Time: set<i> "Set Date & Time automatically"<span class="Apple-converted-space">  </span></i>to true.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in linux: set the ntp clock</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a local time server is better than the apple time server.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if you cannot sync the time, you can set the server latency to nil.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This will break the pattern's functionality though.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a) boot the (remote) server and create a local model</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(you cannot directly boot a remote server instance)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s = <span class="s2">Server</span>(<span class="s3">"serverName"</span>, <span class="s2">NetAddr</span>(hostname, port), clientID);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>serverName</b> <span class="Apple-tab-span">	</span>can be any name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>hostname</b> <span class="Apple-tab-span">	</span>is an ip address, or if you have a name resolution, a network name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>port</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the port on which the server is listening. default is 57110</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clientID</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for each client (each sc-lang) <i>a different integer number has to be given</i><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see <a href="../../../ServerArchitecture/Server.html"><span class="s4">Server</span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b) from each client, initialize the default node and set notify to true:</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> </span><span class="s6"><span class="Apple-tab-span">	</span>s.boot; </span>// this will initialize the tree and start notification</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-tab-span">	</span></span>// if needed, a server window can be created:</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="Apple-tab-span">	</span>s.makeWindow;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c) preallocate a range of busses in each client.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If there is conflicts, increase the number of busses in the server options before booting:<span class="s7"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(s.options.numAudioBusChannels = 1024;)</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> numberOfParticipants, n;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numberOfParticipants = 4;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n = s.options.numAudioBusChannels / numberOfParticipants;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n = n.floor.asInteger * s.clientID;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.audioBusAllocator.alloc(n);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n = s.options.numControlBusChannels / numberOfParticipants;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n = n.floor.asInteger * s.clientID;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.controlBusAllocator.alloc(n);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d) now create a ProxySpace from the server:</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>p = <span class="s2">ProxySpace</span>.push(s);<span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>2) using ProxySpace with more than one client, with a partly shared bus space</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>step a, b like in (1), skip (d)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c) before allocating a number of busses for each client, create shared busses:</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>p = <span class="s2">ProxySpace</span>.push(s);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~shared1.ar(2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~shared2.ar(2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~sharedkr.kr(1); <span class="s8">// or other names.</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>then do (c) like in (1), just take care that the shared busses are taking number space</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>already, so the easiest is to increase the numberOfParticipants by one, so no overrun</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>happens.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>3) writing a chat</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>see example in<b> </b><a href="../networking/Client.html"><span class="s10">Client</span></a></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b>see also </b><a href="../networking/Public.html"><span class="s10">Public</span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/proxyspace_examples.html b/Help/Libraries/JITLib/tutorials/proxyspace_examples.html
deleted file mode 100644
index 9d64a87..0000000
--- a/Help/Libraries/JITLib/tutorials/proxyspace_examples.html
+++ /dev/null
@@ -1,807 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Futura}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Futura}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Futura; min-height: 15.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 8.0px Monaco; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; min-height: 19.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #001bb9}
-span.s2 {color: #2c7014}
-span.s3 {color: #ad140d}
-span.s4 {color: #000000}
-span.s5 {font: 9.0px Monaco}
-span.s6 {font: 12.0px Helvetica; color: #001bb9}
-span.s7 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>proxy space examples</b></p>
-<p class="p2"><br></p>
-<p class="p3">Overview: <a href="../JITLib.html"><span class="s1">JITLib</span></a></p>
-<p class="p3">see also: <a href="../environments/ProxySpace.html"><span class="s1">ProxySpace</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">preparing the environment</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">s.boot;</p>
-<p class="p6">p = <span class="s1">ProxySpace</span>.push(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">playing and monitoring</p>
-<p class="p4"><br></p>
-<p class="p7">// play some output to the hardware busses, this could be any audio rate key.</p>
-<p class="p6">~out.play;</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar([400, 408] * 0.8, 0, 0.2) };</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// replacing the node. the crossfade envelope is created internally.</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar([443, 600 - <span class="s1">Rand</span>(0,200)], 0, 0.2) };</p>
-<p class="p6">~out = { <span class="s1">Resonz</span>.ar(<span class="s1">Saw</span>.ar(40 + [0,0.2], 1), [1200, 1600], 0.1) + <span class="s1">SinOsc</span>.ar(60 * [1,1.1],0,0.2) };</p>
-<p class="p6">~out = { <span class="s1">Pan2</span>.ar(<span class="s1">PinkNoise</span>.ar(0.1), <span class="s1">LFClipNoise</span>.kr(2)) };</p>
-<p class="p4"><br></p>
-<p class="p5">setting the node controls</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">arg</span> rate = 2; <span class="s1">Pan2</span>.ar(<span class="s1">PinkNoise</span>.ar(0.1), <span class="s1">LFClipNoise</span>.kr(rate)) };</p>
-<p class="p6">~out.set(<span class="s2">\rate</span>, 30);</p>
-<p class="p6">~out = { <span class="s1">arg</span> rate = 2; <span class="s1">Pan2</span>.ar(<span class="s1">Dust</span>.ar(2000, 0.2), <span class="s1">LFClipNoise</span>.kr(rate)) };</p>
-<p class="p6">~out.set(<span class="s2">\rate</span>, 2);</p>
-<p class="p4"><br></p>
-<p class="p5">referencing between proxies</p>
-<p class="p4"><br></p>
-<p class="p6">~lfo = { <span class="s1">LFNoise2</span>.kr(30, 300, 500) };</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(~lfo.kr, 0, 0.15)<span class="Apple-converted-space">  </span>};</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(~lfo.kr * [1, 1.2], 0, 0.1) * <span class="s1">Pulse</span>.ar(~lfo.kr * [0.1, 0.125], 0.5) };</p>
-<p class="p6">~lfo = { <span class="s1">LFNoise1</span>.kr(30, 40) + <span class="s1">SinOsc</span>.kr(0.1, 0, 200, 500) };</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(~lfo.kr * [1, 1.2], 0, 0.1)<span class="Apple-converted-space">  </span>};</p>
-<p class="p6">~lfo = 410;</p>
-<p class="p4"><br></p>
-<p class="p8"><br></p>
-<p class="p5">math</p>
-<p class="p4"><br></p>
-<p class="p7">// unary operators</p>
-<p class="p6">~lfo2 = { <span class="s1">SinOsc</span>.kr(0.5, 0, 600, 100)<span class="Apple-converted-space">  </span>};</p>
-<p class="p6">~lfo = ~lfo2.abs;</p>
-<p class="p6">~lfo2 = { <span class="s1">SinOsc</span>.kr(1.3, 0, 600, 100)<span class="Apple-converted-space">  </span>};</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// binary operators</p>
-<p class="p6">~lfo3 = { <span class="s1">LFTri</span>.kr(0.5, 0, 80, 300) };</p>
-<p class="p6">~lfo = ~lfo2 + ~lfo3;</p>
-<p class="p6">~lfo = ~lfo3;</p>
-<p class="p6">~lfo = (~lfo3 / 50).sin * 200 + 500 * { <span class="s1">LFTri</span>.kr(~lfo.kr * 0.0015, 0, 0.1 * ~lfo3.kr / 90, 1) };</p>
-<p class="p6">~lfo3 = { <span class="s1">Mix</span>(~lfo2.kr * [1, 1.2]) };</p>
-<p class="p4"><br></p>
-<p class="p6">currentEnvironment.free; <span class="s3">// free all node proxies</span></p>
-<p class="p7"><span class="s4">~out.stop; </span>// free the playback synth.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">waking up a network of proxies</p>
-<p class="p4"><br></p>
-<p class="p7">// hit cmd-. to stop all nodes</p>
-<p class="p7">// start again</p>
-<p class="p6">~out.play;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p5">feeding back (one buffer size delay)</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar([220, 330], ~out.ar(2).reverse * <span class="s1">LFNoise2</span>.kr(0.5, 4pi), 0.4) };</p>
-<p class="p4"><br></p>
-<p class="p7">// there is no immediacy: hear the buffer size cycle</p>
-<p class="p6">~out = { <span class="s1">Impulse</span>.ar(1 ! 2) + (~out.ar(2) * 0.99) };<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// supercollider 'differential equations'</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(<span class="s1">Slope</span>.ar(~out.ar) * <span class="s1">MouseX</span>.kr(1000, 18000, 1)) * 0.1 + <span class="s1">SinOsc</span>.ar(100, 0, 0.1) };</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s1">var</span> z, zz;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s1">Slope</span>.ar(~out.ar);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>zz = <span class="s1">Slope</span>.ar(z);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(<span class="s1">Rand</span>(300,410), z) *</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(zz * 410)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>* 0.1 + <span class="s1">Decay2</span>.ar(<span class="s1">Pan2</span>.ar(<span class="s1">Dust</span>.ar(600), <span class="s1">MouseX</span>.kr(-1,1)), 0.01, 0.05);</p>
-<p class="p6">}</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">multiple control</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s1">arg</span> freqOffest;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> ctl;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>ctl = <span class="s1">Control</span>.names(<span class="s2">\array</span>).kr(<span class="s1">Array</span>.rand(8, 400, 1000));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(<span class="s1">Mix</span>(<span class="s1">SinOsc</span>.ar(ctl + freqOffest, 0, 0.1 / 8)), <span class="s1">LFNoise0</span>.kr(2))</p>
-<p class="p6">};</p>
-<p class="p6">)<span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p6">~out.setn(<span class="s2">\array</span>, <span class="s1">Array</span>.exprand(8, 400, 2000));</p>
-<p class="p6">~out.set(<span class="s2">\freqOffest</span>, rrand(300,200));</p>
-<p class="p6">~out.map(<span class="s2">\freqOffest</span>, ~lfo);</p>
-<p class="p4"><br></p>
-<p class="p7">// a simpler short form for this is:</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s1">arg</span> freqOffest=0, array = #[ 997, 777, 506, 553, 731, 891, 925, 580 ];</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(<span class="s1">Mix</span>(<span class="s1">SinOsc</span>.ar(array + freqOffest, 0, 0.1 / 8)), <span class="s1">LFNoise0</span>.kr(2))</p>
-<p class="p6">};</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">mixing</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">~out1 = { <span class="s1">SinOsc</span>.ar(600, 0, 0.1) };</p>
-<p class="p6">~out2 = { <span class="s1">SinOsc</span>.ar(500, 0, 0.1) };</p>
-<p class="p6">~out3 = { <span class="s1">SinOsc</span>.ar(400, 0, 0.1) };</p>
-<p class="p6">~out = ~out2 + ~out1 + ~out3;</p>
-<p class="p4"><br></p>
-<p class="p6">~out = ~out1 + ~out2;</p>
-<p class="p6">~out = ~out1;</p>
-<p class="p4"><br></p>
-<p class="p7">// another way is:</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(600, 0, 0.1) };</p>
-<p class="p6">~out.add({ <span class="s1">SinOsc</span>.ar(500, 0, 0.1) });</p>
-<p class="p6">~out.add({ <span class="s1">SinOsc</span>.ar(400, 0, 0.1) });</p>
-<p class="p4"><br></p>
-<p class="p7">// or with direct access:</p>
-<p class="p6">~out[1] = { <span class="s1">SinOsc</span>.ar(500 * 1.2, 0, 0.1) };</p>
-<p class="p6">~out[2] = { <span class="s1">SinOsc</span>.ar(400 * 1.2, 0, 0.1) };</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">restoring / erasing</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">~out.free; </span>// this frees the group, not the play synth x</p>
-<p class="p7"><span class="s4">~out.send; </span>// resends all synths</p>
-<p class="p6">~out.free;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4">~out.send(</span><span class="s1">nil</span><span class="s4">, 1); </span>// this sends at index 1 only<span class="Apple-converted-space"> </span></p>
-<p class="p6">~out.send;</p>
-<p class="p4"><br></p>
-<p class="p7">// removing:</p>
-<p class="p6">~out.removeLast;</p>
-<p class="p6">~out.removeAt(0);</p>
-<p class="p4"><br></p>
-<p class="p7">// cleaning up, freeing the bus:</p>
-<p class="p7"><span class="s4">~out.clear; </span>// this neutralizes the proxy, and frees its bus</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">for more on the proxy slots see:<span class="s5"> <a href="jitlib_basic_concepts_03.html"><span class="s6">jitlib_basic_concepts_03</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">garbage collecting</p>
-<p class="p4"><br></p>
-<p class="p7">// often there are proxies playing that are not used anymore - this is good,</p>
-<p class="p7">// because they might be used again at any time.<span class="Apple-converted-space"> </span></p>
-<p class="p7">// this shows how to free unused proxies, such as ~out1, ~out2. <span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">~out.play;</p>
-<p class="p6">~out = { <span class="s1">Pan2</span>.ar(<span class="s1">SinOsc</span>.ar(~lfo.kr, 0, 0.2), sin(~lfo.kr / 10)) }; <span class="s3">// ~lfo is kept, as its parents.</span></p>
-<p class="p6">~lfo = { <span class="s1">LFNoise2</span>.kr(3, 160, 400) };</p>
-<p class="p4"><br></p>
-<p class="p6">p.keysValuesDo { <span class="s1">arg</span> key, proxy; [key, proxy.isPlaying].postln };</p>
-<p class="p7"><span class="s4">p.reduce; </span>// all monitoring proxies (in this case ~out) are kept running.</p>
-<p class="p7">//<span class="Apple-converted-space">  </span>equivalent: p.reduce(to: [~out]);</p>
-<p class="p6">p.keysValuesDo { <span class="s1">arg</span> key, proxy; [key, proxy.isPlaying].postln };</p>
-<p class="p4"><br></p>
-<p class="p7">// to remove everything else:</p>
-<p class="p6">p.postln;</p>
-<p class="p7"><span class="s4">p.clean; </span>// all monitoring proxies (in this case ~out) are kept.</p>
-<p class="p6">p.postln;</p>
-<p class="p4"><br></p>
-<p class="p7">// after ~out is stopped, it is removed, too:</p>
-<p class="p7"><span class="s4">~out.stop; </span>// stop monitor</p>
-<p class="p6">p.clean;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4">p.postln; </span>// empty space.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">execution order</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// you can .play .kr or .ar also a name that is not yet used.</p>
-<p class="p7">// the rate is guessed as far as possible. on this topic see also: [the_lazy_proxy]</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">~myOut.play; </span>// play some key (audio rate is assumed)</p>
-<p class="p4"><br></p>
-<p class="p7">// the rate is determined from the first access:<span class="Apple-converted-space"> </span></p>
-<p class="p7">// like this ~lfo becomes control rate</p>
-<p class="p4"><br></p>
-<p class="p6">~myOut = { <span class="s1">SinOsc</span>.ar(~freq.kr * 2, 0, 0.1) };<span class="Apple-converted-space"> </span></p>
-<p class="p6">~freq = 900;</p>
-<p class="p6">~freq = { <span class="s1">SinOsc</span>.kr(115, 0, 70, 220) }</p>
-<p class="p4"><br></p>
-<p class="p6">~myOut = { <span class="s1">SinOsc</span>.ar(~otherFreq.ar * 2, 0, 0.1) };</p>
-<p class="p6">~otherFreq = { <span class="s1">SinOsc</span>.ar(115, 0, 70, 220) };</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">currentEnvironment.clear; </span>// clear every<span class="Apple-converted-space">  </span>proxy in this environment and remove them. (same: p.clear)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">setting the xfade time</p>
-<p class="p4"><br></p>
-<p class="p6">~out.play;</p>
-<p class="p4"><br></p>
-<p class="p6">~out.fadeTime = 4;</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(<span class="s1">Rand</span>(800, 300.0) * [1,1.1], 0, 0.1) };</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(<span class="s1">Rand</span>(800, 300.0) * [1,1.1], 0, 0.1) };</p>
-<p class="p6">~out.fadeTime = 0.01;</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(<span class="s1">Rand</span>(800, 300.0) * [1,1.1], 0, 0.1) };</p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(<span class="s1">Rand</span>(800, 300.0) * [1,1.1], 0, 0.1) };</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">~out.free(3);<span class="Apple-converted-space">  </span></span>// release the synths and the group with a given fadeTime without changing proxy time</p>
-<p class="p7"><span class="s4">~out.stop;<span class="Apple-tab-span">	</span></span>// stop monitor</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">setting and mapping arguments</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">~out.play;</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">arg</span> freq=500, ffreq=120; <span class="s1">SinOsc</span>.ar(freq*[1,1.1], <span class="s1">SinOsc</span>.ar(ffreq, 0, pi), 0.2) };</p>
-<p class="p6">~out.set(<span class="s2">\freq</span>, 400 + 100.rand2);</p>
-<p class="p6">~out.set(<span class="s2">\freq</span>, 400 + 100.rand2);</p>
-<p class="p6">~out.set(<span class="s2">\ffreq</span>, 30 + 20.rand2);</p>
-<p class="p7"><span class="s4">~out.unset(</span><span class="s2">\freq</span><span class="s4">, </span><span class="s2">\ffreq</span><span class="s4">);<span class="Apple-converted-space">  </span></span>// remove the setting</p>
-<p class="p6">~out.set(<span class="s2">\ffreq</span>, 30 + 10.rand2, <span class="s2">\freq</span>, 500 + 200.rand2);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// argument settings and mappings are applied to every new function</p>
-<p class="p6">~out = { <span class="s1">arg</span> freq=100, ffreq=20; <span class="s1">SinOsc</span>.ar(freq, <span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.ar(ffreq)*ffreq, 0, pi), 0.2) };</p>
-<p class="p4"><br></p>
-<p class="p7">// mapping to other proxies</p>
-<p class="p6">~lfo = { <span class="s1">SinOsc</span>.kr(0.3, 0, 80, 100) };</p>
-<p class="p6">~out.map(<span class="s2">\ffreq</span>, ~lfo);</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">arg</span> freq=300, ffreq=20; <span class="s1">Pulse</span>.ar(freq * [1, 1.1] + <span class="s1">SinOsc</span>.ar(ffreq, 0, freq), 0.3, 0.1) };</p>
-<p class="p6">~out = { <span class="s1">arg</span> freq=300, ffreq=20; <span class="s1">BPF</span>.ar(<span class="s1">LFSaw</span>.ar(ffreq * [1, 1.1], 0, 1), freq, 0.2) };</p>
-<p class="p4"><br></p>
-<p class="p6">~lfo = { <span class="s1">FSinOsc</span>.kr(0.3, 0, 30, 200) + <span class="s1">FSinOsc</span>.kr(10, 0, 10) };</p>
-<p class="p6">~out = { <span class="s1">arg</span> freq=300, ffreq=20; <span class="s1">SinOsc</span>.ar(freq*[1,1.1], <span class="s1">SinOsc</span>.ar(ffreq, 0, pi), 0.1) };</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// crossfaded setting and mapping: fadeTime is used</p>
-<p class="p6">~out.fadeTime = 2;</p>
-<p class="p6">~out.xset(<span class="s2">\freq</span>, 9000);</p>
-<p class="p6">~out.xset(<span class="s2">\freq</span>, rrand(400, 700));</p>
-<p class="p4"><br></p>
-<p class="p6">~lfo = { <span class="s1">FSinOsc</span>.kr(0.1, 0, 30, 100) };</p>
-<p class="p6">~lfo2 = { <span class="s1">LFClipNoise</span>.kr(3, 100, 200) };</p>
-<p class="p6">~lfo3 = <span class="s1">StreamKrDur</span>(<span class="s1">Pseq</span>([<span class="s1">Prand</span>([530, 600],1), 700, 400, 800, 500].scramble, <span class="s1">inf</span>) / 3, 0.2);</p>
-<p class="p4"><br></p>
-<p class="p6">~out.xmap(<span class="s2">\ffreq</span>, ~lfo2);</p>
-<p class="p6">~out.xmap(<span class="s2">\ffreq</span>, ~lfo);</p>
-<p class="p6">~out.xmap(<span class="s2">\ffreq</span>, ~lfo3);</p>
-<p class="p4"><br></p>
-<p class="p7">// argument rates: just like a synthdef has input 'rates' (like \ir or \tr), a nodeproxy control</p>
-<p class="p7">// can be given a rate. this rate is used for each function passed into the proxy.</p>
-<p class="p4"><br></p>
-<p class="p7">// trigger inputs</p>
-<p class="p6">~out = { <span class="s1">arg</span> trig, dt=1; <span class="s1">Decay2</span>.kr(trig, 0.01, dt) * <span class="s1">Mix</span>(<span class="s1">SinOsc</span>.ar(7000 * [1.2, 1.3, 0.2])) }</p>
-<p class="p6">~out.setRates(<span class="s2">\trig</span>, <span class="s2">\tr</span>);</p>
-<p class="p4"><br></p>
-<p class="p7">// set the group, so the node proxy does not store the new value</p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.1, <span class="s2">\dt</span>, 0.1);<span class="Apple-converted-space"> </span></p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.4, <span class="s2">\dt</span>, 0.31);</p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.13, <span class="s2">\dt</span>, 2);</p>
-<p class="p4"><br></p>
-<p class="p7">// lagging controls:</p>
-<p class="p7"><span class="s4">~out.lag(</span><span class="s2">\xfreq</span><span class="s4">, 1); </span>// equivalent to ~out.setRates(\xfreq, 1);</p>
-<p class="p6">(</p>
-<p class="p6">~out = { <span class="s1">arg</span> trig, dt=1, xfreq=700;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Decay2</span>.kr(trig, 0.01, dt) * <span class="s1">Mix</span>(<span class="s1">SinOsc</span>.ar(xfreq * [1.2, 1.3, 0.2]))<span class="Apple-converted-space"> </span></p>
-<p class="p6">};</p>
-<p class="p6">)</p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.1, <span class="s2">\dt</span>, 1, <span class="s2">\xfreq</span>, rrand(2000,9000));<span class="Apple-converted-space"> </span></p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.1, <span class="s2">\dt</span>, 0.5, <span class="s2">\xfreq</span>, rrand(2000,9000));<span class="Apple-converted-space"> </span></p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.1, <span class="s2">\dt</span>, 1, <span class="s2">\xfreq</span>, rrand(2000,9000));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p7">// changing the lag, the synth is reconstructed with the new lag:</p>
-<p class="p4"><br></p>
-<p class="p6">~out.lag(<span class="s2">\xfreq</span>, 0.01);</p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.1, <span class="s2">\dt</span>, 1, <span class="s2">\xfreq</span>, rrand(2000,9000));<span class="Apple-converted-space"> </span></p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.1, <span class="s2">\dt</span>, 1, <span class="s2">\xfreq</span>, rrand(2000,9000));<span class="Apple-converted-space"> </span></p>
-<p class="p6">~out.group.set(<span class="s2">\trig</span>, 0.1, <span class="s2">\dt</span>, 1, <span class="s2">\xfreq</span>, rrand(2000,9000));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p7">// removing the trig rate:</p>
-<p class="p6">~out.setRates(<span class="s2">\trig</span>, <span class="s1">nil</span>);</p>
-<p class="p4"><br></p>
-<p class="p7">// note that the same works with the i_ and the t_ arguments, just as it does in SynthDef</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s4"><span class="Apple-converted-space">                          </span></span>_____________________________________________________________________________________________</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11">other possible inputs</p>
-<p class="p12"><br></p>
-<p class="p4"><br></p>
-<p class="p5">using a synthdef as input</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// for a more systematic overview see: [jitlib_fading]</p>
-<p class="p4"><br></p>
-<p class="p7">// you have the responsibility for the right number of channels and output rate</p>
-<p class="p7">// you have to supply an 'out' argument so it can be mapped to the right channel.</p>
-<p class="p4"><br></p>
-<p class="p6">~out.play;</p>
-<p class="p6">~out = <span class="s1">SynthDef</span>(<span class="s7">"w"</span>, { <span class="s1">arg</span> out=0; <span class="s1">Out</span>.ar(out,<span class="s1">SinOsc</span>.ar([<span class="s1">Rand</span>(430, 600), 600], 0, 0.2)) });</p>
-<p class="p6">~out = <span class="s1">SynthDef</span>(<span class="s7">"w"</span>, { <span class="s1">arg</span> out=0; <span class="s1">Out</span>.ar(out,<span class="s1">SinOsc</span>.ar([<span class="s1">Rand</span>(430, 600), 500], 0, 0.2)) });</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// if you supply a gate it fades in and out. evaluate this several times</p>
-<p class="p6">(</p>
-<p class="p6">~out = <span class="s1">SynthDef</span>(<span class="s7">"w"</span>, { <span class="s1">arg</span> out=0, gate=1.0;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([<span class="s1">Rand</span>(430, 800), <span class="s1">Rand</span>(430, 800)], 0, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.asr(1,1,1), gate, doneAction:2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p7">// once the SynthDef is sent, it can be assigned by name.<span class="Apple-converted-space"> </span></p>
-<p class="p7">// using this method, a gate argument should be<span class="Apple-converted-space"> </span></p>
-<p class="p7">// provided that releases the synth. (doneAction:2)</p>
-<p class="p7">// this is very efficient, as the def is on the server already.</p>
-<p class="p4"><br></p>
-<p class="p7">// if the synth def is in the synthdesc lib (.add) its gate is detected.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s7">"staub"</span>, { <span class="s1">arg</span> out, gate=1;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Ringz</span>.ar(<span class="s1">Dust</span>.ar(15), <span class="s1">Rand</span>(1, 3) * 3000*[1,1], 0.001)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.asr, gate, doneAction:2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}).add;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">~out = <span class="s2">\staub</span>;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// if you supply an envelope that frees itself, no bundle is sent to free it</p>
-<p class="p6">(</p>
-<p class="p6">~out = <span class="s1">SynthDef</span>(<span class="s7">"w"</span>, { <span class="s1">arg</span> out, lfo, f0=430;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([<span class="s1">Rand</span>(f0, 800), <span class="s1">Rand</span>(f0, 800)]+lfo, 0, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc(0.01, 0.03), doneAction:2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">~out.spawn;</p>
-<p class="p6">~out.spawn([<span class="s2">\f0</span>, 5000]);</p>
-<p class="p6">fork { 5.do { ~out.spawn([<span class="s2">\f0</span>, 5000 + 1000.0.rand]); 0.1.wait; } }</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// when the synth description in the SynthDescLib is found for the symbol,</p>
-<p class="p7">// the proxy can determine whether to release or to free the synth.</p>
-<p class="p7">// so if there is no 'gate' arg provided and the def has a desc, the synth is</p>
-<p class="p7">// freed and not released.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s7">"staub"</span>, { <span class="s1">arg</span> out;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, <span class="s1">Ringz</span>.ar(<span class="s1">WhiteNoise</span>.ar(0.01), 1000 * [1,1], 0.001))<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4">}).add; </span>// store the synth def so it is added to the SynthDescLib</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">~out = <span class="s2">\staub</span>;</p>
-<p class="p7"><span class="s4">~out = </span><span class="s2">\staub</span><span class="s4">; </span>// watching the synth count shows that the old synth is freed.</p>
-<p class="p7"><span class="s4">~out = 0;<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span></span>// now out plays continuous stream of zero.</p>
-<p class="p7"><span class="s4">~out = </span><span class="s1">nil</span><span class="s4">;<span class="Apple-tab-span">	</span></span>// removes object and stops it.</p>
-<p class="p8"><br></p>
-<p class="p5">using patterns</p>
-<p class="p4"><br></p>
-<p class="p7">// example</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s2">\who</span>, { <span class="s1">arg</span> amp=0.1, freq=440, detune=0, gate=1, out=0, ffreq=800;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s1">Env</span>.asr(0.01, amp, 0.5);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, <span class="s1">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Formant</span>.ar(freq + detune, ffreq, 30, <span class="s1">EnvGen</span>.kr(env, gate, doneAction:2)), <span class="s1">Rand</span>(-1.0, 1.0))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).add;</p>
-<p class="p4"><br></p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">~out.play;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">~out = <span class="s1">Pbind</span>(<span class="s2">\instrument</span>, <span class="s2">\who</span>, <span class="s2">\freq</span>, [600, 601], <span class="s2">\ffreq</span>, 800, <span class="s2">\legato</span>, 0.02);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// embed a control node proxy into an event pattern:</p>
-<p class="p7">// this does not work for indirect assignment as \degree, \midinote, etc.,<span class="Apple-converted-space"> </span></p>
-<p class="p7">// because there is calculations in the event! if needed, these can be done in the SynthDef.</p>
-<p class="p4"><br></p>
-<p class="p6">~lfo = { <span class="s1">SinOsc</span>.kr(2, 0, 400, 700) };</p>
-<p class="p6">~out = <span class="s1">Pbind</span>(<span class="s2">\instrument</span>, <span class="s2">\who</span>, <span class="s2">\freq</span>, 500, <span class="s2">\ffreq</span>, ~lfo, <span class="s2">\legato</span>, 0.02);</p>
-<p class="p4"><br></p>
-<p class="p6">~lfo = { <span class="s1">SinOsc</span>.kr(<span class="s1">SinOsc</span>.kr(0.2, <span class="s1">Rand</span>(0,pi), 10, 10), 0, 400, 700) };</p>
-<p class="p4"><br></p>
-<p class="p6">~lfo = { <span class="s1">LFNoise1</span>.kr(5, 1300, 1500) };</p>
-<p class="p6">~lfo = { <span class="s1">MouseX</span>.kr(100, 5500, 1) };</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">~out = <span class="s1">Pbind</span>(</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\who<span class="s4">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\freq</span>, <span class="s1">Pseq</span>([500, 380, 300],<span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\legato</span>, 0.1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\ffreq</span>, <span class="s1">Pseq</span>([~lfo, 100, ~lfo, 100, 300, 550], <span class="s1">inf</span>), <span class="s3">// use it in a pattern</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pseq</span>([1, 0.5, 0.75, 0.125]*0.4, <span class="s1">inf</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p7">// note that when you use a proxy within a non-event pattern it gets embedded as an object,</p>
-<p class="p7">// so this functionality is still standard</p>
-<p class="p4"><br></p>
-<p class="p7">// works only with control rate proxies. multichannel control rate proxies cause</p>
-<p class="p7">// multichannel expansion of the events:</p>
-<p class="p4"><br></p>
-<p class="p6">~lfoStereo = { <span class="s1">LFNoise1</span>.kr([1, 1], 1300, 1500) }; <span class="s3">// 2 channel control rate proxy</span></p>
-<p class="p6">~out = <span class="s1">Pbind</span>(<span class="s2">\instrument</span>, <span class="s2">\who</span>, <span class="s2">\ffreq</span>, ~lfoStereo, <span class="s2">\legato</span>, 0.02).trace;</p>
-<p class="p6">~lfoStereo = { [<span class="s1">MouseX</span>.kr(100, 15500, 1), <span class="s1">SinOsc</span>.kr(<span class="s1">SinOsc</span>.kr(0.2, 0, 10, 10), 0, 400, 700)] }</p>
-<p class="p4"><br></p>
-<p class="p7">// btw: setting the clock will cause the pattern to sync:</p>
-<p class="p6">p.clock = <span class="s1">TempoClock</span>.default;</p>
-<p class="p6">p.clock.tempo = 2.0;</p>
-<p class="p6">p.clock.tempo = 1.0</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// patterns also crossfade, if an \amp arg is defined in the synthdef:</p>
-<p class="p7">// (evaluate a couple of times)</p>
-<p class="p6">~out.fadeTime = 3.0;</p>
-<p class="p6">(</p>
-<p class="p6">~out = <span class="s1">Pbind</span>(</p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\who<span class="s4">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\freq</span>, <span class="s1">Pshuf</span>([500, 380, 200, 510, 390, 300, 300],<span class="s1">inf</span>) * rrand(1.0, 2.0),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\legato</span>, 0.1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\ffreq</span>, <span class="s1">Pshuf</span>([~lfo, 100, ~lfo, 100, 300, 550], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.125 * [1, 2, 3, 2/3].choose</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">using instruments and players</p>
-<p class="p4"><br></p>
-<p class="p7">// pause and resume do not work yet.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// store an instrument</p>
-<p class="p6">(</p>
-<p class="p14">Instr<span class="s4">(</span><span class="s2">\test</span><span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s1">arg</span> dens=520, ffreq=7000; <span class="s1">Ringz</span>.ar(<span class="s1">Dust</span>.ar(dens, [1,1] * 0.1), ffreq, 0.02) }</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">~out = <span class="s1">Patch</span>(<span class="s2">\test</span>, [10, rrand(5000, 8000)]);</p>
-<p class="p6">~out.fadeTime = 3;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">~out = <span class="s1">InstrSpawner</span>({ <span class="s1">arg</span> freq=1900,env,pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(<span class="s1">SinOsc</span>.ar(freq, 0.5pi, 0.3) * <span class="s1">EnvGen</span>.kr(env, doneAction: 2), pan)</p>
-<p class="p6">},[</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Prand</span>([1500, 700, 800, 3000] + 170.rand2, <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Env</span>.perc(0.002,0.01),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Prand</span>([-1,1],<span class="s1">inf</span>)</p>
-<p class="p6">],0.125)</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">~out.clear;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// does not work (yet).</p>
-<p class="p7">//~out.set(\dens, 120);</p>
-<p class="p7">//~out.xset(\dens, 1030);<span class="Apple-converted-space"> </span></p>
-<p class="p7">//~out.unmap(\ffreq);</p>
-<p class="p7">//~out.set(\ffreq, 500);</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p9"><span class="s4"><span class="Apple-converted-space">                          </span></span>_____________________________________________________________________________________________</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11">client side routines</p>
-<p class="p12"><br></p>
-<p class="p5">spawning<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">~out.play;</p>
-<p class="p7"><span class="s4">~out.awake = </span><span class="s1">false</span><span class="s4">; </span>// allow sound object assignment without immediate sending</p>
-<p class="p4"><br></p>
-<p class="p7">// putting an synthdef into the node proxy without playing it right away</p>
-<p class="p7">// the synthdef has an envelope that frees by itself.</p>
-<p class="p6">(</p>
-<p class="p6">~out = <span class="s1">SynthDef</span>(<span class="s7">"a"</span>, { <span class="s1">arg</span> out=0, freq=800, pmf=1.0, pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> env, u;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc(0.001, 0.04, 0.4),doneAction:2); <span class="s3">// envelope</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>u = <span class="s1">SinOsc</span>.ar(freq * <span class="s1">Rand</span>(0.9, 1.1), <span class="s1">SinOsc</span>.ar(pmf, 0, pi), env);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, <span class="s1">Pan2</span>.ar(u, pan))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// create a task to repeatedly send grains</p>
-<p class="p6">(</p>
-<p class="p6">t = <span class="s1">Task</span>.new({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// starts a synth with the current synthdef at index 0</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~out.spawn([<span class="s2">\pmf</span>, [1, 20, 300].choose, <span class="s2">\pan</span>, [0, -1, 1].choose]);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.1, 0.01, 0.25].choose.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">t.start;</p>
-<p class="p6">t.stop;</p>
-<p class="p6">t.start;</p>
-<p class="p4"><br></p>
-<p class="p7">// note: if you want to avoid using interpreter variables (single letter, like "t"),</p>
-<p class="p7">// you can use Tdef for this. (see Tdef.help)</p>
-<p class="p4"><br></p>
-<p class="p7">// set some argument</p>
-<p class="p6">~out.set(<span class="s2">\freq</span>, 300);</p>
-<p class="p6">~out.set(<span class="s2">\freq</span>, 600);</p>
-<p class="p6">~out.map(<span class="s2">\freq</span>, ~lfo);</p>
-<p class="p6">~lfo = { <span class="s1">SinOsc</span>.kr(0.1, 0, 3000, 4000) };</p>
-<p class="p6">~lfo = { <span class="s1">SinOsc</span>.kr(0.1, 0, 600, 700) };</p>
-<p class="p6">~lfo.add({ <span class="s1">Trig</span>.kr(<span class="s1">Dust</span>.kr(1), 0.1) * 3000 });</p>
-<p class="p6">~lfo = 300;</p>
-<p class="p4"><br></p>
-<p class="p7">// change the definition while going along</p>
-<p class="p6">(</p>
-<p class="p6">~out = <span class="s1">SynthDef</span>(<span class="s7">"a"</span>, { <span class="s1">arg</span> out, freq=800;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc(0.01, 0.1, 0.3),doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, <span class="s1">Pulse</span>.ar(freq * <span class="s1">Rand</span>([0.9,0.9], 1.1), 0.5, env) )</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">t.stop;</p>
-<p class="p7"><span class="s4">~out.awake = </span><span class="s1">true</span><span class="s4">; </span>// don't forget this</p>
-<p class="p7">//<span class="Apple-converted-space">  </span>free all synths in this current ProxySpace</p>
-<p class="p6">currentEnvironment.clear;</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p9"><span class="s4"><span class="Apple-converted-space">                          </span></span>_____________________________________________________________________________________________</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p5">granular synthesis: efficient code</p>
-<p class="p4"><br></p>
-<p class="p15">see also [jitlib_efficiency]</p>
-<p class="p4"><br></p>
-<p class="p6">~out.play;</p>
-<p class="p12"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s7">"grain"</span>, { <span class="s1">arg</span> i_out = 0, pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc(0.001, 0.003, 0.2),doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(i_out, <span class="s1">Pan2</span>.ar(<span class="s1">FSinOsc</span>.ar(<span class="s1">Rand</span>(1000,10000)), pan) * env)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p7">// a target for the grains</p>
-<p class="p7"><span class="s4">~someInput.ar(2);<span class="Apple-converted-space">  </span></span>// initialize to 2 channels audio</p>
-<p class="p6">~out = ~someInput;</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">t = <span class="s1">Task</span>({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s7">"/s_new"</span>,<span class="s7">"grain"</span>,-1,0,0,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">\i_out</span><span class="s4">, ~someInput.index, </span>// returns the bus index of the proxy</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\pan</span>, [1, 1, -1].choose * 0.2</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>); <span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.01, 0.02].choose.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p6">t.play;</p>
-<p class="p4"><br></p>
-<p class="p7">// different filters;</p>
-<p class="p4"><br></p>
-<p class="p6">~out.fadeTime = 1.0;</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">BPF</span>.ar(~someInput.ar, <span class="s1">MouseX</span>.kr(100, 18000, 1), 0.1) };</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">CombL</span>.ar(~someInput.ar * (<span class="s1">LFNoise0</span>.ar(2) > 0), 0.2, 0.2, <span class="s1">MouseX</span>.kr(0.1, 5, 1)) };</p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">RLPF</span>.ar(~someInput.ar, <span class="s1">LFNoise1</span>.kr(3, 1000, 1040), 0.05) };</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">t.stop;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// end</p>
-<p class="p4"><br></p>
-<p class="p6">~out.stop;</p>
-<p class="p6">currentEnvironment.clear;</p>
-<p class="p7"><span class="s1">ProxySpace</span><span class="s4">.pop; </span>// restore original environment</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p9"><span class="s4"><span class="Apple-converted-space">                          </span></span>_____________________________________________________________________________________________</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p5">using multiple proxyspaces</p>
-<p class="p5">can be done while the server is not running: with p.wakeUp or p.play</p>
-<p class="p5">the environment can be played back.</p>
-<p class="p12"><br></p>
-<p class="p7">// quit server:</p>
-<p class="p4"><br></p>
-<p class="p6">s.quit;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// create two proxyspaces without a running server</p>
-<p class="p6">(</p>
-<p class="p14"><span class="s4">p = </span>ProxySpace<span class="s4">(s);</span></p>
-<p class="p14"><span class="s4">q = </span>ProxySpace<span class="s4">(s);</span></p>
-<p class="p4"><br></p>
-<p class="p6">p.use({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~out = { <span class="s1">Resonz</span>.ar(~in.ar, ~freq.kr, 0.01) };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~in = { <span class="s1">WhiteNoise</span>.ar(0.5) };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~freq = { <span class="s1">LFNoise2</span>.kr(1, 1000, 2000) };</p>
-<p class="p6">});</p>
-<p class="p4"><br></p>
-<p class="p6">q.use({</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~in = { <span class="s1">Dust</span>.ar(20, 0.1) };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~out = { <span class="s1">Resonz</span>.ar(~in.ar * 450, ~freq.kr, 0.005) };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~freq = { <span class="s1">LFNoise2</span>.kr(1, 400, 2000) };</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p7">// wait for the booted<span class="Apple-converted-space">  </span>server</p>
-<p class="p6">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p7">// play the proxy at \out</p>
-<p class="p6">p.play(<span class="s2">\out</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4">q.play; </span>// out is the default output</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">external access</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">q[<span class="s2">\in</span>][1] = { <span class="s1">Impulse</span>.ar(2, 0, 0.5) }; <span class="s3">// adding a synth at index 1</span></p>
-<p class="p4"><br></p>
-<p class="p7">// equivalent to</p>
-<p class="p6">q.at(<span class="s2">\in</span>).put(1, { <span class="s1">Impulse</span>.ar(7, 0, 0.5) });</p>
-<p class="p8"><br></p>
-<p class="p4"><br></p>
-<p class="p5">connecting two spaces (must be on one server)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">q.use({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~freq =<span class="Apple-converted-space">  </span>100 + p[<span class="s2">\freq</span>] / 2;</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">recording output (see also: [<a href="../nodeproxy/RecNodeProxy.html"><span class="s1">RecNodeProxy</span></a>])</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">r = p.record(<span class="s2">\out</span>, <span class="s7">"proxySpace.aiff"</span>);</p>
-<p class="p4"><br></p>
-<p class="p7">// start recording</p>
-<p class="p6">r.unpause;</p>
-<p class="p4"><br></p>
-<p class="p7">// pause recording</p>
-<p class="p6">r.pause;</p>
-<p class="p4"><br></p>
-<p class="p7">// stop recording</p>
-<p class="p6">r.close;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">push/pop</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// make p the currentEnvironment</p>
-<p class="p6">p.push;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">~freq = 700;</p>
-<p class="p6">~freq = 400;</p>
-<p class="p6">~freq = { p.kr(<span class="s2">\freq</span>) + <span class="s1">LFNoise1</span>.kr(1, 200, 300) % 400 }; <span class="s3">// feedback</span></p>
-<p class="p6">~freq = 400;</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">p.pop; </span>// restore environment</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// make y the currentEnvironment</p>
-<p class="p6">q.push;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">~freq = 1000;</p>
-<p class="p6">~in = { <span class="s1">WhiteNoise</span>.ar(0.01) };</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">q.pop; </span>// restore environment</p>
-<p class="p4"><br></p>
-<p class="p6">q.clear;</p>
-<p class="p6">p.clear;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s4"><span class="Apple-converted-space">                          </span></span>_____________________________________________________________________________________________</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">some more topics</p>
-<p class="p4"><br></p>
-<p class="p5">nodeproxy with numbers as input:</p>
-<p class="p4"><br></p>
-<p class="p6">p = <span class="s1">ProxySpace</span>.push(s.boot);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">~out = { <span class="s1">SinOsc</span>.ar(~a.kr * <span class="s1">Rand</span>(1, 2), 0, 0.1) };</p>
-<p class="p6">~out.play;</p>
-<p class="p4"><br></p>
-<p class="p6">~a = 900;</p>
-<p class="p4"><br></p>
-<p class="p7">// these add up:</p>
-<p class="p6">~a[0] = 440;</p>
-<p class="p6">~a[1] = 220;</p>
-<p class="p6">~a[2] = 20;</p>
-<p class="p4"><br></p>
-<p class="p6">~a.fadeTime = 2;</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">~a[0] = 300; </span>// now there is a crossfade.</p>
-<p class="p6">~a[1] = { <span class="s1">SinOsc</span>.kr(5, 0, 20) };<span class="Apple-converted-space"> </span></p>
-<p class="p6">~a[2] = { <span class="s1">SinOsc</span>.kr(30, 0, 145) };</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// internally a numerical input is approximately replaced by:</p>
-<p class="p7">// (pseudocode)</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s7">"name"</span>, { <span class="s1">arg</span> out, fadeTime;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.kr(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Control</span>.kr(<span class="s1">Array</span>.fill(proxy.numChannels, { the number }))<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGate</span>.new(fadeTime:fadeTime)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6">});</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/recursive_phrasing.html b/Help/Libraries/JITLib/tutorials/recursive_phrasing.html
deleted file mode 100644
index 3871595..0000000
--- a/Help/Libraries/JITLib/tutorials/recursive_phrasing.html
+++ /dev/null
@@ -1,628 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #001bb9}
-span.s2 {color: #000000}
-span.s3 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Recursive phrases and granular composite sounds</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">Pdef can be used as a global storage for event patterns. Here a way is provided by which these</p>
-<p class="p4">definitions can be used as an instrument that consists of several events (a <i>phrase</i>),<span class="Apple-converted-space"> </span></p>
-<p class="p4">such as a cloud of short grains. Furthermore, this scheme can be applied recursively, so that structures like a cloud of clouds can be constructed.</p>
-<p class="p5"><br></p>
-<p class="p4">when the event type <b>\phrase</b> is passed in, the event looks for a pattern in <b>Pdef.all</b> if it can find a definition</p>
-<p class="p4"><span class="Apple-converted-space"> </span>- if it finds one it plays this pattern in the context of the outer pattern's event.</p>
-<p class="p4"><span class="Apple-converted-space"> </span>If there is no definition to be found there, it uses a SynthDef with this name, if present.</p>
-<p class="p5"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>When passing a <i>function</i> to Pdef it creates a PlazyEnvir internally.</p>
-<p class="p4"><span class="Apple-converted-space"> </span>Its function is evaluated in the context of the outer environment (see <a href="../../../Streams-Patterns-Events/Patterns/PlazyEnvir.html"><span class="s1">PlazyEnvir</span></a> ) which should return</p>
-<p class="p4"><span class="Apple-converted-space"> </span>a pattern or a stream.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6">s.boot;</p>
-<p class="p3"><br></p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s3">\pgrain</span><span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s1">arg</span> out = 0, freq=800, sustain=0.001, amp=0.5, pan = 0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> window;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>window = <span class="s1">Env</span>.sine(sustain, amp * <span class="s1">AmpCompA</span>.kr(freq));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(freq),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s1">EnvGen</span>.ar(window, doneAction:2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">).store;</p>
-<p class="p3"><br></p>
-<p class="p8"><span class="s1">SynthDef</span><span class="s2">(</span>\noiseGrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s1">arg</span> out = 0, freq=800, sustain=0.001, amp=0.5, pan = 0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> window;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>window = <span class="s1">Env</span>.perc(0.002, sustain, amp * <span class="s1">AmpCompA</span>.kr(freq));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Ringz</span>.ar(<span class="s1">PinkNoise</span>.ar(0.1), freq, 2.6),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s1">EnvGen</span>.ar(window, doneAction:2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">).store;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep</span>, { <span class="s1">arg</span> sustain=1, n=8, freq=440, ratio=0.1;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, sustain.value / n,</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\freq</span><span class="s2">, </span><span class="s1">Pseq</span><span class="s2">((1..n))<span class="Apple-converted-space">  </span>* ratio + 1 * freq.value </span>// freq is a function, has to be evaluated<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep2</span>, { <span class="s1">arg</span> sustain=1, n=8, freq=440, ratio=0.1;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\noiseGrain<span class="s2">,</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\dur</span><span class="s2">, sustain.value / n,<span class="Apple-converted-space">  </span></span>// sustain is also a function, has to be evaluated<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s1">Pseq</span>((1..n).scramble) * ratio + 1 * freq.value,</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 2</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep3</span>, { <span class="s1">arg</span> freq=440;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s1">Pfunc</span>({ rrand(0.8, 1.3)<span class="Apple-converted-space">  </span>})<span class="Apple-converted-space">  </span>* freq.value,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.3,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, 1.3,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\n</span>, 5</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// the pattern that is found in Pdef.all (or your own defined library) is truncated in time</p>
-<p class="p9">// using the sustain provided by the outer pattern.</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\type</span><span class="s2">, </span><span class="s3">\phrase</span><span class="s2">, </span>// phrase event from global library</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, 15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 4, 6, 3], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>([1.3, 0.2, 0.4],<span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// multichannel expansion is propagated into the subpatterns</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\type</span><span class="s2">, </span><span class="s3">\phrase</span><span class="s2">, </span>// phrase event from global library</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, 15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 0, 6, 3], <span class="s1">inf</span>) + <span class="s1">Prand</span>([0, [0, 3], [0, 5], [0, 15]], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\ratio</span>, <span class="s1">Prand</span>([ 0.1, 0.1, [0.1, -0.1] ], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// various instruments and synthdefs can be used on the same level</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span><span class="s1">Pseq</span><span class="s2">([</span>\sweep<span class="s2">, </span>\default<span class="s2">, </span>\sweep2<span class="s2">, </span>\sweep3<span class="s2">, </span>\pgrain<span class="s2">, </span>\pgrain<span class="s2">], </span><span class="s1">inf</span><span class="s2">),</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 3, 2], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>([1, 0.5], <span class="s1">inf</span>) * 0.7,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\n</span>, <span class="s1">Pseq</span>([4, 6, 25, 10], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\ratio</span>, <span class="s1">Prand</span>([0.03, 0.1, 0.4, -0.1],<span class="s1">inf</span>) + <span class="s1">Pseq</span>([0, 0, [0, 0.02]], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Pseq</span>(#[0.5, 1, 0.5, 0.1, 0.1],<span class="s1">inf</span>)</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">//////// of course also a patten can be used directly in a Pdef<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="s1">Pdef</span><span class="s2">(</span>\sweep<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span><span class="s1">Pseq</span><span class="s2">([</span>\pgrain<span class="s2">, </span>\noiseGrain<span class="s2">],</span><span class="s1">inf</span><span class="s2">),</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>([1, 2, 1, 3, 1, 4, 1, 5]) * 0.05,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Prand</span>([0.5, 0.5, 3],<span class="s1">inf</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p6">)</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// play directly, emebdded in stream (see Pdef.help)</p>
-<p class="p10"><br></p>
-<p class="p6"><span class="s1">Pn</span>(<span class="s1">Pdef</span>(<span class="s3">\sweep</span>), 2).play;</p>
-<p class="p9"><span class="s1">Pdef</span><span class="s2">(</span><span class="s3">\sweep</span><span class="s2">).fork; </span>// play without changing player state (see Pdef.help)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// play within a pattern</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 1b, 4, 2, 3, 1b], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\pan</span>, <span class="s1">Pfunc</span>(#{ 1.0.rand2 })</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">//////// recursion examples //////////</p>
-<p class="p3"><br></p>
-<p class="p9">// the given pattern can be recursively applied to itself<span class="Apple-converted-space"> </span></p>
-<p class="p9">// resulting in selfsimilar sound structures, like lindenmeyer systems (see also Prewrite)</p>
-<p class="p9">// special care is taken so that no infinite loops can happen.</p>
-<p class="p9">// just like with non recursive phrasing, new values override old values,<span class="Apple-converted-space"> </span></p>
-<p class="p9">// any values that are not provided within the pattern definition<span class="Apple-converted-space"> </span></p>
-<p class="p9">// are passed in from the outer event.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep</span>, { <span class="s1">arg</span> dur=1, n=4, freq=440, ratio=0.3;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\dur</span><span class="s2">, dur.value / n,<span class="Apple-tab-span">	</span></span>// now dur is dependant on outer dur.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s1">Pseries</span>(1, 1, <span class="s1">inf</span>) * ratio + 1 * freq.value % 17000</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// no recursion</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>((0..5),<span class="s1">inf</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// no recursion, with legato > 1.0 and varying notes</p>
-<p class="p9">// note how subpatterns are truncated to note length<span class="Apple-converted-space"> </span></p>
-<p class="p9">// provided by outer pattern (in this case determined by legato)</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>((0..5),<span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Pseq</span>([1.2, 2.8, 0.3], <span class="s1">inf</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// to block the proliferation of \legato into the phrase, set \transparency to 0</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\transparency<span class="s2">, 0,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>((0..5),<span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Pseq</span>([1.2, 2.8, 0.3], <span class="s1">inf</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// recursion over one level</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 1, 2, 3], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 1</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// recursion over one level: legato is recursively applied</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 1, 2, 3], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Pseq</span>([0.5, 1, 1.5, 1.8], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 1</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// to block the proliferation of properties such as \legato and \degree</p>
-<p class="p9">// into the phrase, set \transparency to 0.</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 1, 2, 3], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Pseq</span>([0.5, 1, 1.5, 1.8], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 1,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\transparency<span class="s2">, 0</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// recursion over 3 levels: legato is recursively applied</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\degree<span class="s2">, </span><span class="s1">1</span><span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Pseq</span>([0.5, 1, 1.3], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 3,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\n</span>, 3</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// to block the proliferation of \legato into the phrase, set \transparency to a level at which</p>
-<p class="p9">// to stop passing the value.</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\degree<span class="s2">, 1,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Pseq</span>([0.5, 1, 2.3], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 3,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\n</span>, 3,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\transparency</span>, <span class="s1">Pstutter</span>(8, <span class="s1">Prand</span>([0, 1, 2], <span class="s1">inf</span>))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// to modify this recursion, assign values explicitly:</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep</span>, { <span class="s1">arg</span> dur=1, n=4, ratio=0.5, freq=440;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> legato;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = freq.value;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>legato = freq % 200 / 200 * 3 + 0.2;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, dur.value / n,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, legato,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s1">Pseq</span>((1..n) * ratio + 1 * freq)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// recursion over one level: degree is assigned to each phrase,</p>
-<p class="p9">// because freq is calculated internally and overrides degree on the second level</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>((0..10),<span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 1</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// recursion over two levels</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\degree<span class="s2">, 0,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 2</span></p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// recursion over three levels with variable number of grains</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\degree<span class="s2">, -5,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, <span class="s1">Pseq</span>([1, 2, 3],<span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 3</span></p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// "zoom" in</p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 0.2;</p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 1.0;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// recursion over variable levels</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, <span class="s1">Prand</span>([2, 7, 3], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\degree<span class="s2">, -5,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\recursionLevel</span>, <span class="s1">Prand</span>([0, 1, 2],<span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// replace the frequency based pattern with a degree based pattern</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep</span>, { <span class="s1">arg</span> sustain=1, n=8, degree=0, ratio=1;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, sustain.value / n,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>((1..n)) * ratio + 1 + degree.value</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// drunken master</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, <span class="s1">Prand</span>([2, 4, 3, 8], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([-5, 0, -2], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s1">Pseq</span>([1.4, 0.5, 2], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\scale</span>, #[0, 2, 5, 7, 10],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\recursionLevel</span>, <span class="s1">Prand</span>([0, 1, 2],<span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\synthDef<span class="s2">, </span><span class="s1">Prand</span><span class="s2">([</span>\pgrain<span class="s2">, </span>\default<span class="s2">, </span>\noiseGrain<span class="s2">],</span><span class="s1">inf</span><span class="s2">),</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, <span class="s1">Prand</span>([2, 4, 3, 8], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([-5, 0, -2], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, </span><span class="s1">Prand</span><span class="s2">([0, 1],</span><span class="s1">inf</span><span class="s2">)</span></p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// use a different parent event in the inner pattern</p>
-<p class="p6">(</p>
-<p class="p6">e = <span class="s1">Event</span>.default;</p>
-<p class="p6">e.use { ~sustain = { 2.0.exprand(0.05) } };</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep</span>, { <span class="s1">arg</span> sustain=1, n=8, degree=0, ratio=1;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\parent</span><span class="s2">, e, </span>// replace by some other event</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, sustain.value / n,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>((1..n)) * ratio + 1 + degree.value</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, <span class="s1">Prand</span>([2, 4, 3, 8], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([-5, 0, -2], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, </span><span class="s1">Prand</span><span class="s2">([0, 1],</span><span class="s1">inf</span><span class="s2">)</span></p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// pass in a pattern from outside</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep</span>, { <span class="s1">arg</span> sustain=1, n=8, degree=0, ratio=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>n = n.value;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, sustain.value / n,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([ 1, 2, 3, 4, 5 ] * ratio + 1 + degree.value)<span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\n</span><span class="s2">, { </span><span class="s1">Pshuf</span><span class="s2">([2, 4, 3, 8, 16, 32], </span><span class="s1">inf</span><span class="s2">) }, </span>//<span class="Apple-converted-space">  </span>use a function to insulate from embedInStream</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([-5, 0, -2], <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, </span><span class="s1">Prand</span><span class="s2">([0, 1],</span><span class="s1">inf</span><span class="s2">)</span></p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// recursion inside the pattern definition</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\sweep2</span>, { <span class="s1">arg</span> sustain=1, n=2, degree=0, ratio=1;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, sustain.value / n,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>((1..5).scramble * ratio + 1 + degree.value),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 2</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep2<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, 3,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([-5, 0, -2], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// instruments do not crossfade while they play (to make phrasing more efficient).</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sweep<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, 3,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([0, 2b, 3, 4], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 2,</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\legato<span class="s2">, 2</span></p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// change pattern definition while playing:</p>
-<p class="p6">(</p>
-<p class="p8"><span class="s1">Pdef</span><span class="s2">(</span>\sweep<span class="s2">,</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, exprand(0.01, 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, rrand(0.01, 2.0),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\octave</span>, rrand(5, 7)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">)</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// koch "snowflake"</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\koch</span>, { <span class="s1">arg</span> dur=1, freq=440;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, dur.value / 3,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, freq.value * <span class="s1">Pseq</span>([1, 1.2, 1])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\koch<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\synthDef<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 9,</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 2,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, 1.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\koch<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\synthDef<span class="s2">, </span>\pgrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 9,</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 4,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, 1.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\koch</span>, { <span class="s1">arg</span> dur=1, degree=0;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, dur.value / 3,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, degree + <span class="s1">Pseq</span>([0, 2, 0])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// soundfile example</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s3">\play_from_to</span>, { <span class="s1">arg</span> out, bufnum, from=0.0, to=1.0, sustain=1.0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.ar(<span class="s1">Env</span>.linen(0.01, sustain, 0.01), 1, doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">BufRd</span>.ar(1, bufnum,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Line</span>.ar(from, to, sustain) * <span class="s1">BufFrames</span>.kr(bufnum)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * env</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">}).store;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s2">s.sendMsg(</span>"/b_allocRead"<span class="s2">, 170, </span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\poch</span>, { <span class="s1">arg</span> sustain=1.0, from=0.0, to=1.0, n=3;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> step;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sustain = sustain.value;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>step = (to - from) / n;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\play_from_to<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\from</span>, <span class="s1">Pseries</span>(from, step, n),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\to</span>, <span class="s1">Pseries</span>(from, step, n) + step,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, 1.0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, sustain / n</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// this plays it straight</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\poch<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\recursionLevel<span class="s2">, 3,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\from</span>, 0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\to</span>, 1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 3,</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\bufnum<span class="s2">, 170</span></p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p9">// now turn round every middle part of every middle part</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">Pdef</span>(<span class="s3">\poch</span>, { <span class="s1">arg</span> sustain=1.0, from=0.0, to=1.0, n=3;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> step, f, t, i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sustain = sustain.value;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>step = (to - from) / n;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s1">Array</span>.series(n, from, step) +.t [0.0, step];</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = n div: 2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f[i] = f[i].reverse;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\play_from_to<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s3">\from</span>, <span class="s3">\to</span>], <span class="s1">Pseq</span>(f),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, 1.0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, sustain / n</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// varying recursion</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s2">(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\phrase<span class="s2">,</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\poch<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\recursionLevel</span>, <span class="s1">Prand</span>([0, 1, 2, 3], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\from</span>, 0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\to</span>, <span class="s1">Prand</span>([-1, 1], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 3,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, <span class="s1">Prand</span>([1, 2, 3], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\bufnum</span>, 170,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.2</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Libraries/JITLib/tutorials/the_lazy_proxy.html b/Help/Libraries/JITLib/tutorials/the_lazy_proxy.html
deleted file mode 100644
index 22cedd0..0000000
--- a/Help/Libraries/JITLib/tutorials/the_lazy_proxy.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8b2719}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8b2719; min-height: 12.0px}
-span.s1 {color: #0000ff}
-span.s2 {color: #002dad}
-span.s3 {color: #8b2719}
-span.s4 {color: #4b6b25}
-span.s5 {color: #000000}
-</style>
-</head>
-<body>
-<p class="p1"><b>the lazy proxy</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><a href="../nodeproxy/NodeProxy.html">NodeProxy</a></span> (and <a href="../nodeproxy/BusPlug.html"><span class="s1">BusPlug</span></a>) uses a lazy evaluation scheme to derive its appropriate</p>
-<p class="p3">rate and numChannels from the first meaningful input that is assigned to it.</p>
-<p class="p3">see [<a href="../nodeproxy/NodeProxy.html"><span class="s1">NodeProxy</span></a>] and [<a href="../environments/ProxySpace.html"><span class="s1">ProxySpace</span></a>] helpfiles for basic info.</p>
-<p class="p3">So as long as the source is not set, the proxy is <b>neutral</b>:</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">p = <span class="s2">ProxySpace</span>.push;</p>
-<p class="p5">~x.isNeutral;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">as soon as the first time the source is set, it derives its bus arguments from that input</p>
-<p class="p4"><br></p>
-<p class="p5">~x = { <span class="s2">Array</span>.fill(14, { <span class="s2">SinOsc</span>.kr(1.0.rand, 0, 100) }) }; <span class="s3">//~x is now 14 channels control rate</span></p>
-<p class="p5">~x;</p>
-<p class="p4"><br></p>
-<p class="p3">in order to reset these properties, clear is used:</p>
-<p class="p4"><br></p>
-<p class="p5">~x.clear;<span class="Apple-converted-space"> </span></p>
-<p class="p6">//note that no other proxy should be reading from ~x when this is done:</p>
-<p class="p6">//for simplicity nodeproxy currently does not care for its children, only for its parents.</p>
-<p class="p4"><br></p>
-<p class="p3">for a quick initialisation, also defineBus can be used:</p>
-<p class="p4"><br></p>
-<p class="p5">~x.defineBus(<span class="s4">\control</span>, 5);</p>
-<p class="p6">// or in another way:</p>
-<p class="p5">~x.kr(5)</p>
-<p class="p4"><br></p>
-<p class="p3">the properties are also set when some other proxy reads from it:</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s5">~x = { </span><span class="s2">LFPulse</span><span class="s5">.kr * ~b.kr(7) }; </span>//the first arg to kr / ar is the default number of channels</p>
-<p class="p4"><br></p>
-<p class="p3">if no number of channels is passed in, the default value is used:</p>
-<p class="p2"><br></p>
-<p class="p5">~test.ar; <span class="s3">// 2</span></p>
-<p class="p5">~krtest.kr; <span class="s3">// 1</span></p>
-<p class="p4"><br></p>
-<p class="p3">the default can be set in the class NodeProxy:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">NodeProxy</span>.defaultNumAudio = 3;</p>
-<p class="p5"><span class="s2">NodeProxy</span>.defaultNumControl = 13;</p>
-<p class="p4"><br></p>
-<p class="p5">~test3.ar; <span class="s3">// 3</span></p>
-<p class="p5">~krtest3.kr; <span class="s3">// 13</span></p>
-<p class="p7"><br></p>
-<p class="p6">// set them back:</p>
-<p class="p5"><span class="s2">NodeProxy</span>.defaultNumAudio = 2;</p>
-<p class="p5"><span class="s2">NodeProxy</span>.defaultNumControl = 1;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">also if a proxy is used as a map source, control rate is assumed:</p>
-<p class="p4"><br></p>
-<p class="p5">~u;</p>
-<p class="p5">~x.map(<span class="s4">\zzz</span>, ~u);</p>
-<p class="p5">~u;</p>
-<p class="p4"><br></p>
-<p class="p3">when unary or binary operations are performed, the highest rate / numChannels is used</p>
-<p class="p3">to initialize all uninitialized proxies:</p>
-<p class="p4"><br></p>
-<p class="p5">~x.clear;</p>
-<p class="p5">~x.defineBus(<span class="s4">\control</span>, 5);</p>
-<p class="p5">~x = ~e + ~f;</p>
-<p class="p4"><br></p>
-<p class="p5">~x.clear; ~e.clear; ~f.clear;</p>
-<p class="p5">~e.defineBus(<span class="s4">\audio</span>, 1);</p>
-<p class="p5">~x = ~e + ~f.squared + ~r;</p>
-<p class="p5">~x;</p>
-<p class="p4"><br></p>
-<p class="p5">~x.clear; ~e.clear; ~f.clear;</p>
-<p class="p5">~e.defineBus(<span class="s4">\audio</span>, 3);</p>
-<p class="p5">~x = ~e;</p>
-<p class="p2"><br></p>
-<p class="p3">if a rate-1 proxy is used as rate-2 input, the rate is converted</p>
-<p class="p3">and the channels are expanded in the ususal multichannel expansion pattern:</p>
-<p class="p4"><br></p>
-<p class="p5">~f.defineBus(<span class="s4">\control</span>);</p>
-<p class="p5">~f.ar(2);</p>
-<p class="p4"><br></p>
-<p class="p5">~f.defineBus(<span class="s4">\audio</span>);</p>
-<p class="p5">~f.kr(2);</p>
-<p class="p4"><br></p>
-<p class="p6">// if the number of channels passed in is less, it only uses the first n channels</p>
-<p class="p5">~f.defineBus(<span class="s4">\audio</span>, 8);</p>
-<p class="p5">~f.ar(2);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">an offset can be passed in as second argument to ar/kr</p>
-<p class="p4"><br></p>
-<p class="p6">//modulate offset:</p>
-<p class="p5">p = <span class="s2">ProxySpace</span>.push(s.boot);</p>
-<p class="p4"><br></p>
-<p class="p5">~out.play;</p>
-<p class="p5">~src = { <span class="s2">SinOsc</span>.ar(<span class="s2">Array</span>.rand(5, 400, 500.0), <span class="s2">SinOsc</span>.ar(<span class="s2">Array</span>.exprand(5, 2.1, 500.0)), 0.1) };</p>
-<p class="p5">~out = { ~src.ar(1, <span class="s2">MouseX</span>.kr(0, 5)) };</p>
-<p class="p6"><span class="s5">~out = { </span><span class="s2">Mix</span><span class="s5">(~src.ar(3, </span><span class="s2">MouseX</span><span class="s5">.kr(0, 5))) }; </span>//the wrapping offset is moved accordingly</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Linux/EmacsEditor.html b/Help/Linux/EmacsEditor.html
deleted file mode 100644
index 80b1a43..0000000
--- a/Help/Linux/EmacsEditor.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-
-<head>
-  <title>Emacs Editor</title>
-  <meta name="GENERATOR" content="Quanta Plus">
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head>
-<body>
-
-<h1>The Emacs Editor</h1>
-
-Here is a more extensive and elaborate overview of useful shortcuts in the Emacs Editor.
-For a general reference to Emacs shortcut, check out this <A href="http://lpn.rnbhq.org/tools/xemacs/emacs_ref.html">Emacs reference</A>.
-
-<TABLE>
-<tbody valign="top">
-<tr><td>C-g</td><td>Abort current action</td></tr>
-<tr><td>C-h</td><td>General help on emacs</td></tr>
-<tr><td colspan="2" align="center"><strong>Interpreting code</strong></td></tr>
-<tr><td>C-c C-d<br>(C-c C-c)</td><td>Interpret Selection <br>(only if transient-mark-mode is on)</td></tr>
-<tr><td>C-c C-c</td><td>Interpret current line</td></tr>
-<tr><td>C-c C-e</td><td>Evaluate expression (in minibuffer)</td></tr>
-<tr><td>C-M-x</td><td>Interpret defun</td></tr>
-<tr><td>C-c C-f</td><td>Interpret current document</td></tr>
-
-<tr><td colspan="2" align="center"><strong>Control the interpreter</strong></td></tr>
-<tr><td>C-c C-s</td><td>Stop (CmdPeriod) / Main.stop</td></tr>
-<tr><td>C-c C-r</td><td>Main.run</td></tr>
-<tr><td>C-c C-l</td><td>Recompile library</td></tr>
-<tr><td>M-x sclang-stop</td><td>Stop interpreter</td></tr>
-<tr><td>C-c C-p p</td><td>Show server panels</td></tr>
-
-<tr><td colspan="2" align="center"><strong>Postbuffer and workspace</strong></td></tr>
-<tr><td>C-c C-w</td><td>Switch to workspace</td></tr>
-<tr><td>C-c <</td><td>Clear postbuffer</td></tr>
-<tr><td>C-c ></td><td>Show postbuffer</td></tr>
-
-<tr><td colspan="2" align="center"><strong>Help files</strong></td></tr>
-<tr><td>C-M-h</td><td>Show help browser</td></tr>
-<tr><td>C-c C-h</td><td>Open help file. You do not need to select a word before using the shortcut. It will suggest the word at the current cursor position, or lets you type a word in the minibuffer. There is autocompletion by typing <TAB>.</td></tr>
-<tr><td>E</td><td>(in the help browser) open the help file as plain text (in sclang-mode), so it can be edited.</td></tr>
-<tr><td>C-c C-v</td><td>(in the help browser) edit the help file as html code.</td></tr>
-
-<tr><td colspan="2" align="center"><strong>Finding things in class source files</strong></td></tr>
-<tr><td>C-c :</td><td>Find definitions (method or class). Again, you can type the word you want to look for in the minibuffer and it suggests the word at the current cursor position.</td></tr>
-<tr><td>C-c ;</td><td>Find references to (method or class). (ditto)</td></tr>
-<tr><td>C-c C-k</td><td>Open current file at the svn development path location. You need to have set the devpath variable in Platform for this to work properly, e.g.<br>
-thisProcess.platform.devpath = "~/svn/SuperCollider3".standardizePath;
-</td></tr>
-
-<tr><td colspan="2" align="center"><strong>Current code completion and interface</strong></td></tr>
-<tr><td>C-c [</td><td>Dump interface</td></tr>
-<tr><td>C-c {</td><td>Dump full interface</td></tr>
-<tr><td>C-c C-m / C-c RET</td><td>Show method arguments (in minibuffer)</td></tr>
-<tr><td>C-c C-n / M-TAB</td><td>Autocomplete keyword (either puts in the one possible completion, or pops up a buffer with possibilities from which you can choose one)</td></tr>
-
-
-<tr><td colspan="2" align="center"><strong>Files and buffers</strong></td></tr>
-<tr><td>C-x C-f</td><td>Open file or new file</td></tr>
-<tr><td>C-x C-s</td><td>Save file</td></tr>
-<tr><td>C-x C-w</td><td>Save file as</td></tr>
-<tr><td>C-x C-v</td><td>Open another file in this buffer</td></tr>
-<tr><td>C-x i</td><td>Insert a file at cursor position</td></tr>
-<tr><td>C-x b</td><td>Create/switch buffers</td></tr>
-<tr><td>C-x C-b</td><td>Show buffer list</td></tr>
-<tr><td>C-x k</td><td>Kill buffer</td></tr>
-<tr><td>C-z</td><td>Suspend emacs</td></tr>
-<tr><td>C-x C-c</td><td>Close down emacs</td></tr>
-
-<tr><td colspan="2" align="center"><strong>Undo and recovery</strong></td></tr>
-<tr><td>C-x u / C-_</td><td>Undo</td></tr>
-<tr><td>C-x u / C-_</td><td>Redo</td></tr>
-<tr><td>M-x revert-buffer RETURN</td><td>undo all changes since last save</td></tr>
-<tr><td>M-x recover-file RETURN</td><td>Recover text from an autosave-file</td></tr>
-<tr><td>M-x recover-session RETURN</td><td>Recover text from an autosave-files if you edited several files</td></tr>
-
-
-<tr><td colspan="2" align="center"><strong>Editing</strong></td></tr>
-<tr><td>M-w</td><td>Copy</td></tr>
-<tr><td>C-y</td><td>Paste</td></tr>
-<tr><td>C-w</td><td>Cut</td></tr>
-<tr><td>C-x C-o</td><td>Delete blank lines</td></tr>
-
-<tr><td colspan="2" align="center"><strong>Search and replace</strong></td></tr>
-<tr><td>C-s</td><td>Search / find. This allows you to set a string in the mini-buffer. The occurences in the text will be highlighted and you can press C-s again and again to jump to next occurences</td></tr>
-<tr><td>C-r</td><td>Search / find backwards.</td></tr>
-<tr><td>M-%</td><td>Replace and find next</td></tr>
-<tr><td>M-,</td><td>Replace</td></tr>
-
-<tr><td colspan="2" align="center"><strong>Navigating and selecting</strong></td></tr>
-<tr><td>M-g g</td><td>Goto line ...</td></tr>
-<tr><td>C-x a</td><td>Select all</td></tr>
-
-<tr><TD>C-M-f</TD>
-    <TD>zips you forward to matching parenthesis, so if you hover over the opening bracket, hit <br>
-	 C-<space>, C-M-f, C-c C-c you can quickly execute a block.
-   </TD></TR>
-
-<tr><TD>C-M-b</TD>
-    <TD>zips you backward to matching parenthesis. If you are just to the right of
-closing brackets this is handier if you've just finished some code.
-   </TD></TR>
-
-<tr><td>
-    C-f</td><td>	Move forward a character
-</td></tr>
-<tr><td>
-    C-b</td><td>Move backward a character
-</td></tr>
-<tr><td>
-    M-f</td><td>Move forward a word
-</td></tr>
-<tr><td>
-    M-b</td><td>Move backward a word
-</td></tr>
-<tr><td>
-    C-n</td><td>Move to next line
-</td></tr>
-<tr><td>
-    C-p</td><td>Move to previous line
-</td></tr>
-<tr><td>
-    C-a</td><td>Move to beginning of line
-</td></tr>
-<tr><td>
-    C-e</td><td>Move to end of line
-</td></tr>
-<tr><td>
-    M-a</td><td>Move back to beginning of sentence
-</td></tr>
-<tr><td>
-    M-e</td><td>Move forward to end of sentence
-</td></tr>
-<tr><td>
-
-
-<tr><td colspan="2" align="center"><strong>Formatting</strong></td></tr>
-<tr><td> M-x show-paren-mode</td><td>Paren match highlighting. Can also be set from the options menu.</td></tr>
-<tr><td>M-;</td><td>Add comment. If you have a text selected, then that text will become a comment. It will remove the commenting // when you have selected a commented text.</td></tr>
-<tr><td>C-M-j</td><td>Continue the comment on the next line.</td></tr>
-<tr><td>C-u M-;</td><td>Remove comment. This removes the whole comment, so also the text!</td></tr>
-<tr><td>M-x comment-region</td><td>Comments the selected region</td></tr>
-<tr><td>M-x uncomment-region</td><td>Uncomments the selected region</td></tr>
-<tr><td>TAB</td><td>Auto-aligns tabs according to code.</td></tr>
-</tbody>
-</TABLE>
-
-<h2>Marks</h2>
-(info from EmacsWiki)
-
-<p><strong>set-mark-command (`C-SPC')</strong><br>
-
-A nice feature that not all know about is what happens if you feed it with a universal argument: ‘C-u C-SPC’. It’s an easy way to navigate back to your previous editing spots by jumping to the positions stored in the buffer’s local mark ring. Repeated calls will cycle through the ring of marks.
-</p><p>
-If you use TransientMarkMode and you want to set the mark but don’t want to subsequently see the region highlighting, you can use ‘C-SPC C-g’ to set the mark and then deactivate it.
-</p>
-<p><strong>pop-global-mark (`C-x C-SPC')</strong><br>
-
-In addition to the ordinary mark ring that belongs to each buffer, Emacs has a single global mark ring. It records a sequence of buffers in which you have recently set the mark, so you can go back to those buffers.</p>
-<p>
-Setting the mark always makes an entry on the current buffer’s mark ring. If you have switched buffers since the previous mark setting, the new mark position makes an entry on the global mark ring also. The result is that the global mark ring records a sequence of buffers that you have been in, and, for each buffer, a place where you set the mark.
-</p><p>
-‘C-x C-SPC’ (‘pop-global-mark’) jumps to the buffer and position of the latest entry in the global mark ring. It also rotates the ring, so that successive uses of ‘C-x C-SPC’ take you to earlier and earlier buffers.
-</p>
-<h2>Customsing Emacs' behaviour</h2>
-<p>
-You can customize the behaviour of Emacs, by putting things in the startup file of emacs. This file is <code>~/.emacs</code>.
-
-You can define options there, for example:
-</p>
-<pre>
-(custom-set-variables
- '(case-fold-search t)
- '(global-font-lock-mode t nil (font-lock))
- '(sclang-runtime-directory "~/SuperCollider/")
- '(show-paren-mode t nil (paren))
- '(transient-mark-mode t)
-)
-</pre>
-
-<code>nil</code> means that an option is turned off, <code>t</code> or <code>1</code> means that it is turned on.
-
-<TABLE>
-<tr><td><code>'(sclang-eval-line-forward nil)</code></td><td>Configure the text cursor NOT to move after hitting C-c C-c</td></tr>
-</TABLE>
-
-<h3>Customize w3m</h3>
-
-Normally w3m uses the arrow keys to jump between hyperlinks. For browsing SC help files this is not very useful.
-
-<pre>
-(eval-after-load "w3m"
- '(progn
- (define-key w3m-mode-map [left] 'backward-char)
- (define-key w3m-mode-map [right] 'forward-char)
- (define-key w3m-mode-map [up] 'previous-line)
- (define-key w3m-mode-map [down] 'next-line)
- (setq w3m-auto-show 1)
- ))
-</pre>
-
-<h3>Automatically complete brackets and parentheses</h3>
-<pre>
-      (setq skeleton-pair t)
-      (global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
-      (global-set-key (kbd "{") 'skeleton-pair-insert-maybe)
-      (global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
-      (global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
-      (global-set-key (kbd "'") 'skeleton-pair-insert-maybe)
-</pre>
-
-<h3>Scrollwheel support</h3>
-<pre>
-;;; scrollwheel support
-(defun scroll-up-half ()
-  "Scroll up half a page."
-  (interactive)
-  (scroll-up (/ (window-height) 2))
-  )
-
-(defun scroll-down-half ()
-  "Scroll down half a page."
-  (interactive)
-  (scroll-down (/ (window-height) 2))
-  )
-(global-set-key [(mouse-5)] 'scroll-up-half)
-(global-set-key [(mouse-4)] 'scroll-down-half)
-</pre>
-
-
-<h3>Recent files menu</h3>
-<p>
-Recentf is a minor mode that builds a list of recently opened files. This list is is automatically saved across Emacs sessions. You can then access this list through a menu.
-Put this in your `~/.emacs’:</p>
-<pre>
-    (require 'recentf)
-    (recentf-mode 1)
-</pre>
-
-
-<p>
-For adding a shortcut (C-x C-r) to open a recent file add this code as well:
-</p>
-<pre>
-    (defun recentf-open-files-compl ()
-      (interactive)
-      (let* ((all-files recentf-list)
-        (tocpl (mapcar (function
-           (lambda (x) (cons (file-name-nondirectory x) x))) all-files))
-        (prompt (append '("File name: ") tocpl))
-        (fname (completing-read (car prompt) (cdr prompt) nil nil)))
-        (find-file (cdr (assoc-ignore-representation fname tocpl)))))
-
-    (global-set-key "\C-x\C-r" 'recentf-open-files-compl)
-</pre>
-
-
-<h2>More info on Emacs</h2>
-<A href="http://www.emacswiki.org/cgi-bin/wiki">Emacs Wiki</A>
-</body>
-</html>
diff --git a/Help/Linux/EmacsGUI.help.scd b/Help/Linux/EmacsGUI.help.scd
deleted file mode 100644
index b485e3f..0000000
--- a/Help/Linux/EmacsGUI.help.scd
+++ /dev/null
@@ -1,96 +0,0 @@
-/// The Emacs interface actually has some nice options for user interfaces as well. Here are some examples:
-
-// create a buffer:
-p = EmacsBuffer.new;
-
-// show the buffer:
-p.front;
-
-// create a key action for the buffer:
-
-p.defineKey( "hello", { "hey there".postln; } );
-
-// type hello on the window and look at the postbuffer
-p.front;
-
-p.defineKey( "hey there", { "hello".postln; } );
-
-// type hey there and look at the postbuffer
-p.front;
-
-// put some text in the buffer:
-
-p.insert( "this is a really interesting text to read in the buffer" );
-p.front;
-
-// make a newline:
-
-p.newline;
-
-// make a button:
-
-p.button( [ "on", "off", "in between" ], { |v| v.postln; } );
-p.front;
-
-// make a button with a different look:
-p.button( [ "on", "off", "in between" ], { |v| v.postln; }, "******", "+++++" );
-p.front;
-
-// create a close button:
-p.closeButton;
-// clicking it will close the buffer!
-
-p = EmacsBuffer.new;
-
-p.editableField( "write something here", "like this?", { |v| v.postln; } );
-p.front;
-
-// moving the cursor around in the buffer:
-p.gotoBob; // beginning
-p.gotoEob; // end
-p.goto( 5 ); // go to fifth position
-
-// making it a sclang-mode buffer to write code in:
-Emacs.evalLispExpression( p.use( [ 'sclang-mode' ] ).asLispString );
-
-// close it:
-p.free;
-
-//
-
-p = EmacsBuffer.new; // args: name
-p.front;
-
-// making a number box
-n = EmacsNumber.new( p, "number box", [0,5].asSpec, { |v| v.postln; } ); // args: buffer, tag/label, spec, action
-p.front;
-
-// making a button:
-x = EmacsButton( p, [ "on", "off", "in between" ], { |v| v.postln; }, "******", "+++++" );
-// args: buffer, states, action, prefix, suffix
-p.front;
-
-t = EmacsText( p, "hello", 30 ); // args: buffer, string, size, align
-p.front;
-
-p.newline;
-t = EmacsText( p, "helloooo", 30, \right ); // args: buffer, string, size, align
-
-p.newline;
-e = EmacsEditableField( p, "edit field", "edit me" ).action_( { |v| v.postln; } );
-p.front;
-
-b = EmacsPushButton( p, "hello" ).action_( { "do it".postln; } );
-p.front;
-
-// you can disable things:
-
-b.enabled_( false );
-p.front;
-
-
-
-// and last but not least, it provides a class browser:
-
-EmacsClassBrowser.new( EmacsBuffer );
-
diff --git a/Help/Linux/LID.html b/Help/Linux/LID.html
deleted file mode 100644
index 63fa1f4..0000000
--- a/Help/Linux/LID.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #326f17}
-span.s1 {color: #000000}
-span.s2 {color: #0019b7}
-span.s3 {color: #606060}
-span.s4 {color: #326f17}
-span.s5 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">
-=====================================================================<br>
-LID -- Linux Input Device<br>
-=====================================================================</p>
-<p class="p1">
-This class provides a way to access devices in the linux input<br>
-layer, which supports many input devices (mouse, keyboard,<br>
-joystick, gamepad, tablet) and busses (serial, PS/2, USB).</p>
-<p class="p2"><br></p>
-<p class="p3">It is advised to use <a href="../Control/GeneralHID.html"><span class="s2">GeneralHID</span></a> instead, which wraps the HIDDeviceService functionality, and produces crossplatform compatible code.</p>
-<p class="p1">
-=====================================================================<br>
-Opening a device<br>
-=====================================================================</p>
-<p class="p1">
-Input devices are accessed through device nodes, typically<br>
-/dev/input/event[0-9]. When using a userspace daemon like udev,<br>
-meaningful names can be assigned to devices.</p>
-
-<p class="p1">raw device name:</p>
-<p class="p3">
-<span class="s1">d = </span>
-<span class="s2">LID</span><span class="s1">(</span>"/dev/input/event4"<span class="s1">);</span></p>
-<p class="p2"><br></p>
-
-<p class="p1">symbolic device name</p>
-<p class="p3"><span class="s1">d = </span><span class="s2">LID</span><span class="s1">(</span>"/dev/input/trackball"<span class="s1">);</span></p>
-<p class="p2"><br></p>
-
-<p class="p1">device name relative to LID.deviceRoot</p>
-<p class="p3"><span class="s1">d = </span><span class="s2">LID</span><span class="s1">(</span>"gamepad"<span class="s1">);</span></p>
-<p class="p2"><br></p>
-<p class="p1">build a list of the available devices:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">LID</span>.buildDeviceList</p>
-<p class="p2"><br></p>
-<p class="p1">
-buildDeviceList builds a table of the devices found in LID.deviceRoot+"/event",
-trying to open all that it finds, looking up its name and closing them again.
-The result is returned and can later be accessed by LID.deviceList.</p>
-<p class="p1">
-You can query another name than "/event" by passing an argument. (the search will be: LID.deviceRoot++"/"++name++"*")</p>
-
-<p class="p4"><span class="s2">LID</span>.buildDeviceList( <span class="s3">"mouse"</span> );</p>
-<p class="p1">Note: this is likely to give the info that the devices could not be opened, as "mouse"  uses another interface (you can of course access mice via the "event" interface)
-</p>
-<p class="p1">Note: if you cannot open the devices at all, please look in the helpfile for: Linux_udev_setup
-<p class="p1">
-=====================================================================<br>
-Querying device information<br>
-=====================================================================</p>
-<p class="p2"><br></p>
-<p class="p4">
-d.info;<br>
-d.info.name;<br>
-d.info.vendor.asHexString(4);<br>
-d.info.product.asHexString(4);<br>
-</p>
-<p class="p1">
-=====================================================================<br>
-Querying device capabilities<br>
-=====================================================================</p>
-
-<p class="p1">
-Device capabilities are reported as event type and event code mappings. Event type and event code constants can be found in /usr/include/linux/input.h</p>
-<p class="p2"><br></p>
-<p class="p4">
-d.caps;<br>
-d.dumpCaps;</p>
-<p class="p2"><br></p>
-<p class="p1">
-=====================================================================<br>
-Event actions (raw events)<br>
-=====================================================================<br>
-
-<p class="p1">
-The device's 'action' instance variable can be used for event notifications. it is passed the event type, code and current value.</p>
-
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p5"><span class="s1">d.action = { </span>| evtType, evtCode, evtValue |</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[evtType.asHexString(4), evtCode.asHexString(4), evtValue].postln</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p4">d.action = <span class="s2">nil</span>;</p>
-<p class="p2"><br></p>
-
-<p class="p1">
-If a device is detached LID will detect this, and close the device. It will execute a closeAction, which can be defined by the user:
-</p>
-<p class="p2"><br></p>
-<p class="p4">d.closeAction = <span class="s2">{ "device was detached".postln; }</span>;</p>
-<p class="p2"><br></p>
-
-<p class="p1">
-=====================================================================<br>
-Event actions (raw slot events)<br>
-=====================================================================</p>
-<p class="p1">
-When 'action' is nil, actions can be bound to specific events.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">d.slot(0x0001, 0x0120).action = { <span class="s2">| slot |</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[slot.type.asHexString(4), slot.code.asHexString(4), slot.rawValue].postln;</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p2">Relative slots can have deltaActions:</p>
-<p class="p4">d.slot(0x0002, 0x0001).deltaAction = { <span class="s2">| slot |</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[slot.type.asHexString(4), slot.code.asHexString(4), slot.delta].postln;</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p1">
-=====================================================================<br>
-Device specs<br>
-=====================================================================</p>
-<p class="p1">//</p>
-<p class="p1">// Device specs are mappings between event codes and symbolic control</p>
-<p class="p1">// names. New specs can be added to LID.specs via LID>>*register.</p>
-<p class="p2"><br></p>
-<p class="p1">// Add a mouse device spec for a Logitech trackball</p>
-<p class="p4"><span class="s2">LID</span>.register(<span class="s4">'Logitech Trackball'</span>, <span class="s2">LID</span>.mouseDeviceSpec);</p>
-<p class="p2"><br></p>
-<p class="p1">// Add a custom device spec for a Logitech gamepad</p>
-<p class="p4">(</p>
-<p class="p6"><span class="s2">LID</span><span class="s1">.register(</span>'Logitech WingMan RumblePad'<span class="s1">, (</span></p>
-<p class="p1"><span class="s1"><span class="Apple-tab-span">	</span></span>// key</p>
-<p class="p4"><span class="Apple-tab-span">	</span>rumble: #[0x0001, 0x0102],<span class="Apple-tab-span">	</span><span class="s5">// rumble (toggles ff)</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>mode: #[0x0001, 0x0103],<span class="Apple-tab-span">	</span><span class="s5">// mode (switches h and l)</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>a: #[0x0001, 0x0120],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// button a</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>b: #[0x0001, 0x0121],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// button b</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>c: #[0x0001, 0x0122],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// button c</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x: #[0x0001, 0x0123],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// button x</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>y: #[0x0001, 0x0124],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// button y</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>z: #[0x0001, 0x0125],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// button z</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>l: #[0x0001, 0x0126],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// left front button</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>r: #[0x0001, 0x0127],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// right front button</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>s: #[0x0001, 0x0128],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// button s</span></p>
-<p class="p1"><span class="s1"><span class="Apple-tab-span">	</span></span>// abs</p>
-<p class="p4"><span class="Apple-tab-span">	</span>lx: #[0x0003, 0x0000],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// left joystick x</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>ly: #[0x0003, 0x0001],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// left joystick y</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>rx: #[0x0003, 0x0005],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// right joystick x</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>ry: #[0x0003, 0x0006],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// right joystick y</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>hx: #[0x0003, 0x0010],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// hat x</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>hy: #[0x0003, 0x0011],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// hat y</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>slider: #[0x0003, 0x0002]<span class="Apple-tab-span">	</span><span class="s5">// slider</span></p>
-<p class="p4">));</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p1">// =====================================================================</p>
-<p class="p1">// Event actions (symbolic slot events)</p>
-<p class="p1">// =====================================================================</p>
-<p class="p1">//</p>
-<p class="p1">// When a device spec was registered for a given device name, slot</p>
-<p class="p1">// actions can be assigned by using the symbolic control name.</p>
-<p class="p2"><br></p>
-<p class="p4">d[<span class="s4">\a</span>].action = { <span class="s2">| slot |</span> [<span class="s4">\a</span>, slot.value].postln };</p>
-<p class="p2"><br></p>
-<p class="p1">// There is also a default keyboard device spec.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">LID</span>.keyboardDeviceSpec.keys.do { <span class="s2">| key |</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>d[key].action = { <span class="s2">| slot |</span> [key, slot.value].postln }</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p1">// =====================================================================</p>
-<p class="p1">// LED's</p>
-<p class="p1">// =====================================================================</p>
-<p class="p2"><br></p>
-<p class="p1">// some devices have LEDs which can be turned on and off. These show up</p>
-<p class="p1">// with d.caps as events of type 0x0011</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">d = </span><span class="s2">LID</span><span class="s1">(</span>"/dev/input/event0"<span class="s1">);</span></p>
-<p class="p1">// LED's can be turned on:</p>
-<p class="p4">d.setLEDState( 0x0, 1 )</p>
-<p class="p1">// (LED 0x0 should be available on any keyboard)</p>
-<p class="p1">// and off:</p>
-<p class="p4">d.setLEDState( 0x0, 0 )</p>
-<p class="p4">d.close;</p>
-<p class="p2"><br></p>
-<p class="p1">// setLEDState( evtCode, evtValue ): value should be 1 or 0</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">// =====================================================================</p>
-<p class="p1">// Grabbing devices</p>
-<p class="p1">// =====================================================================</p>
-<p class="p1">//</p>
-<p class="p1">// Given proper permissions, devices can be grabbed to prevent use in</p>
-<p class="p1">// other applications (including X). Be careful when grabbing mouse or</p>
-<p class="p1">// keyboard!</p>
-<p class="p2"><br></p>
-<p class="p4">d[<span class="s4">\b</span>].action = { d.ungrab };</p>
-<p class="p4">d.grab;</p>
-<p class="p2"><br></p>
-<p class="p4">d.isGrabbed;</p>
-<p class="p2"><br></p>
-<p class="p1">// =====================================================================</p>
-<p class="p1">// Closing devices</p>
-<p class="p1">// =====================================================================</p>
-<p class="p2"><br></p>
-<p class="p4">d.close;</p>
-<p class="p4"><span class="s2">LID</span>.closeAll;</p>
-<p class="p2"><br></p>
-<p class="p1">// =====================================================================</p>
-</body>
-</html>
diff --git a/Help/Linux/Linux_udev_setup.help.scd b/Help/Linux/Linux_udev_setup.help.scd
deleted file mode 100644
index 9e2ff23..0000000
--- a/Help/Linux/Linux_udev_setup.help.scd
+++ /dev/null
@@ -1,11 +0,0 @@
-In the file
-/etc/udev/udev.rules
-(on Debian /etc/udev/rules.d/50-udev.rules)
-(on Ubuntu this should be in /etc/udev/rules.d/20-names.rules)
-
-make sure there is the following:
-
-KERNEL=="event[0-9]*",          NAME="input/%k",        GROUP="audio"
-
-i.e. add GROUP="audio" to the lines, so that any user in the group "audio" can open the device.
-
diff --git a/Help/Math/Complex.html b/Help/Math/Complex.html
deleted file mode 100644
index 84bddc7..0000000
--- a/Help/Math/Complex.html
+++ /dev/null
@@ -1,234 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #cd1612}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline ; color: #0000ee}
-span.s3 {color: #1135f9}
-span.s4 {color: #001bb9}
-span.s5 {color: #0b28c6}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #0b28c5}
-span.s8 {font: 9.0px Monaco}
-span.s9 {color: #102bc6}
-span.s10 {color: #102ac2}
-span.s11 {color: #cd1713}
-span.s12 {color: #000000}
-span.s13 {color: #102bc5}
-span.s14 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Complex<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>complex number</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>inherits from:</b> <a href="../Core/Object.html"><span class="s2">Object</span></a> :<b> </b><a href="Magnitude.html"><span class="s3">Magnitude</span></a><span class="s3"> :</span><b> </b><a href="Number.html"><span class="s4">Number</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">A class representing complex numbers.</p>
-<p class="p2"><br></p>
-<p class="p1">Note that this is a simplified representation of a complex number, which does not implement the full mathematical notion of a complex number.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Creation</b></p>
-<p class="p3"><br></p>
-<p class="p5"><b>new(real, imag)</b></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Create a new complex number with the given real and imaginary parts.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Complex</span>(2, 5);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.real;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.imag;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Accessing</b></p>
-<p class="p3"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>real</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>real_(val)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The real part of the number.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>imag<span class="Apple-converted-space"> </span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>imag_(val)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The imaginary part of the number.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Math</b></p>
-<p class="p3"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>+ aNumber</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Complex addition.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">Complex</span>(2, 9) + <span class="s7">Complex</span>(-6, 2)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>- aNumber</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Complex subtraction.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">Complex</span>(2, 9) - <span class="s7">Complex</span>(-6, 2)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>* aNumber</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Complex multiplication.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">Complex</span>(2, 9) * <span class="s7">Complex</span>(-6, 2)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>/ aNumber</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Complex division.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">Complex</span>(2, 9) / <span class="s7">Complex</span>(-6, 2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s8"><span class="Apple-tab-span">	</span></span><b>** aNumber</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Complex exponentiation (not implemented for all combinations - some are mathematically ambiguous).</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">Complex</span>(0, 2) ** 6</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.3 ** <span class="s5">Complex</span>(0, 2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">Complex</span>(2, 9) ** 1.2 <span class="s11">// not defined</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s8"><span class="Apple-tab-span">	</span></span><b>exp(aNumber)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Complex exponentiation with base <b>e</b>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exp(<span class="s5">Complex</span>(2, 9))</p>
-<p class="p8"><span class="s12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exp(</span><span class="s5">Complex</span><span class="s12">(0, pi)) == -1 </span>// Euler's formula: true</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>squared</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Complex self multiplication.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>squared(<span class="s7">Complex</span>(2, 1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s8"><span class="Apple-tab-span">	</span></span><b>cubed</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Complex double self multiplication.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>squared(<span class="s7">Complex</span>(2, 1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>< aNumber</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the comparison of just the real parts.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">Complex</span>(2, 9) < <span class="s5">Complex</span>(5, 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>== aNumber</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the comparison assuming that the reals (floats) are fully embedded in the complex numbers<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">Complex</span>(1, 0) == 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Complex</span>(1, 5) == <span class="s5">Complex</span>(1, 5);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>neg</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Negation of both parts.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">Complex</span>(2, 9).neg</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s8"><span class="Apple-tab-span">	</span></span><b>abs</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The absoulte value of a complex number is its magnitude.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s13">Complex</span>(3, 4).abs</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>conjugate</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the complex conjugate.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">Complex</span>(2, 9).conjugate</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Conversion</b></p>
-<p class="p3"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>magnitude</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the distance to the origin.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>rho</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the distance to the origin.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>angle</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the angle in radians.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>phase</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the angle in radians.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>theta</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the angle in radians.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>asPoint</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Convert to a <a href="../Geometry/Point.html"><span class="s3">Point</span></a>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>asPolar</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Convert to a <a href="Polar.html"><span class="s3">Polar</span></a></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>asInteger</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer real part as <a href="Integer.html"><span class="s3">Integer</span></a>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>asFloat</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer real part as <a href="Float.html"><span class="s3">Float</span></a>.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9">// example</p>
-<p class="p6"><br></p>
-<p class="p7">a = <span class="s4">Complex</span>(0, 1);</p>
-<p class="p9"><span class="s12">a * a; </span>// returns Complex(-1, 0);</p>
-<p class="p6"><br></p>
-<p class="p9">// julia set approximation</p>
-<p class="p7">f = { <span class="s4">|z|</span> z * z + <span class="s4">Complex</span>(0.70176, 0.3842) };</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> n = 80, xs = 400, ys = 400, dx = xs / n, dy = ys / n, zoom = 3, offset = -0.5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> field = { <span class="s4">|x|</span> { <span class="s4">|y|</span> <span class="s4">Complex</span>(x / n + offset * zoom, y / n + offset * zoom) } ! n } ! n;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>w = <span class="s4">Window</span>(<span class="s14">"Julia set"</span>, bounds:<span class="s4">Rect</span>(200, 200, xs, ys)).front;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>w.view.background_(<span class="s4">Color</span>.black);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.drawHook = {</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.do { <span class="s4">|x|</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.do { <span class="s4">|y|</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> z = field[x][y];</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = f.(z);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>field[x][y] = z;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pen</span>.color = <span class="s4">Color</span>.gray(z.rho.linlin(-100, 100, 1, 0));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pen</span>.addRect(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Rect</span>(x * dx, y * dy, dx, dy)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pen</span>.fill</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fork({ 6.do { w.refresh; 2.wait } }, <span class="s4">AppClock</span>)</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Math/Float.html b/Help/Math/Float.html
deleted file mode 100644
index 3e1b310..0000000
--- a/Help/Math/Float.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Float<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>floating point number</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="SimpleNumber.html"><span class="s2">SimpleNumber</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">A 64 bit double precision floating point number. Float inherits most of its behaviour from its superclass.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*from32Bits(word)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a new Float from a 32 bit word.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*from64Bits(word)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a new Float from a 64 bit word.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p1">iterates function from 0 to this-1. See also: <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a>, <a href="Integer.html"><span class="s2">Integer</span></a>, <a href="../Collections/Collection.html"><span class="s2">Collection</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>reverseDo(function)</b></p>
-<p class="p1">iterates function from this-1 to 0</p>
-<p class="p2"><br></p>
-<p class="p1"><b>coin</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answers a Boolean which is the result of a random test whose probability of success in a range from<span class="Apple-converted-space"> </span></p>
-<p class="p1">zero to one is this. See also: <a href="../Other Topics/Randomness.html"><span class="s2">Randomness</span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3">0.2.coin; </span>// 20 % chance for true.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isFloat</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer true since this is a Float.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asFloat</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer this since this is a Float.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>as32Bits</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer an Integer which is the bit pattern of this as a 32bit single precision float</p>
-<p class="p2"><br></p>
-<p class="p1"><b>high32Bits</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer an Integer which is the bit pattern of high 32 bits of the 64 bit double precision floating point value</p>
-<p class="p2"><br></p>
-<p class="p1"><b>low32Bits</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer an Integer which is the bit pattern of high 32 bits of the 64 bit double precision floating point value</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asStringPrec(precision)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a string representation of the number, with the desired precision (i.e. number of significant figures).</p>
-<p class="p2"><br></p>
-<p class="p4">// example:</p>
-<p class="p5">pi</p>
-<p class="p5">pi.asStringPrec(3)</p>
-<p class="p5">pi.asStringPrec(6)</p>
-<p class="p5">(pi * 0.0001).asStringPrec(3)</p>
-<p class="p5">7.4.asStringPrec(5)</p>
-<p class="p5">7.4.asStringPrec(50)</p>
-</body>
-</html>
diff --git a/Help/Math/Infinitum.html b/Help/Math/Infinitum.html
deleted file mode 100644
index c0fa3b8..0000000
--- a/Help/Math/Infinitum.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-</style>
-</head>
-<body>
-<p class="p1"><b>Infinitum</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>class Infinitum is removed.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>inf is now a floating point infinity.</b></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Math/Integer.html b/Help/Math/Integer.html
deleted file mode 100644
index 04891a5..0000000
--- a/Help/Math/Integer.html
+++ /dev/null
@@ -1,242 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #0038eb}
-span.s4 {color: #606060}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Integer<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>integer number</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="SimpleNumber.html"><span class="s2">SimpleNumber</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">A 32 bit integer. Integer inherits most of its behaviour from its superclass.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Iteration</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>do(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Executes function for all integers from zero to <b>this</b> minus one.</p>
-<p class="p1"><b>function</b> - a Function which is passed two arguments, both of which are the same</p>
-<p class="p1">integer from zero to this minus one. The reason two arguments are passed is for</p>
-<p class="p1">symmetry with the implementations of do in Collection.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>reverseDo(function)</b></p>
-<p class="p1">Executes function for all integers from<span class="Apple-converted-space">  </span><b>this</b> minus one to zero.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>for(endval, function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Executes function for all integers from <b>this</b> to <b>endval</b>, inclusive.</p>
-<p class="p1"><b>endval</b> - an Integer.</p>
-<p class="p1"><b>function</b> - a Function which is passed two arguments, the first which is an integer from this to</p>
-<p class="p1">endval, and the second which is a number from zero to the number of iterations minus one.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>forBy(endval, step, function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Executes function for all integers from <b>this</b> to<b> endval,</b> inclusive, stepping each time by <b>step</b>.</p>
-<p class="p1"><b>endval</b> - an Integer.</p>
-<p class="p1"><b>step</b> - an Integer.</p>
-<p class="p1"><b>function</b> - a Function which is passed two arguments, the first which is an integer from this to</p>
-<p class="p1">endval, and the second which is a number from zero to the number of iterations minus one.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>collect(function)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return an Array of <b>this</b> size filled by objects generated from evaluating the <b>function</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>collectAs(function, class)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return a Collection of <b>class</b> of <b>this</b> size filled by objects generated from evaluating the <b>function</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>to(hi, step)</b></p>
-<p class="p1">return an <a href="../Collections/Interval.html"><span class="s2">Interval</span></a> from this to hi.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>geom(start, grow)</b></p>
-<p class="p1">return an array with a geometric series of <b>this</b> size from <b>start</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>fib(a, b)</b></p>
-<p class="p1">return an array with a fibonacci series of <b>this</b> size beginning with <b>a</b> and <b>b</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>factors</b></p>
-<p class="p1">return the prime factors as array.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>factorial</b></p>
-<p class="p1">return the factorial of this.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Random Numbers</b></p>
-<p class="p1">see also: <a href="../Other Topics/Randomness.html"><span class="s2">Randomness</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>xrand(exclude)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a random value from zero to <b>this</b>, excluding the value <b>exclude</b>.</p>
-<p class="p1"><b>exclude</b> - an Integer.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>xrand2(exclude)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a random value from <b>this</b>.neg to <b>this,</b> excluding the value <b>exclude.</b></p>
-<p class="p1"><b>exclude</b> - an Integer.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Conversion</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>asAscii</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a Char which has the ASCII value of the receiver.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asDigit</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a Char which represents the receiver as an ASCII digit. For example<span class="Apple-converted-space"> </span></p>
-<p class="p1">5.asDigit returns $5.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asBinaryDigits(numDigits)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer an array with the <b>binary digits</b> (integer 0 or 1). <b>numDigits</b> defaults to 8.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asDigits(base, numDigits)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer an array with the <b>n-ary digits</b>, <b>base</b> defaults to 10.</p>
-<p class="p1">See also the complementary method <a href="../Collections/SequenceableCollection.html"><span class="s3">SequenceableCollection</span></a> <b>convertDigits</b>.</p>
-<p class="p2"><br></p>
-<p class="p4">2007.asDigits;</p>
-<p class="p4">2007.asDigits(2);</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>asBinaryString(numDigits)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a string with the <b>binary digits</b> (0 or 1). <b>numDigits</b> defaults to 8.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asHexString(numDigits)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a string with the <b>hexadecimal digits</b> (integer 0 to F). <b>numDigits</b> defaults to 8.</p>
-<p class="p5"><br></p>
-<p class="p1"><b>asIPString</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer a string in IP format.</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>degreeToKey(scale, stepsPerOctave)</b></p>
-<p class="p1">Interpret <b>this</b> as index into a <b>scale</b> with a given number of steps per ocatve.</p>
-<p class="p2"><br></p>
-<p class="p4">2.degreeToKey([0, 2, 5, 7, 11]);</p>
-<p class="p5"><br></p>
-<p class="p1"><b>grayCode</b></p>
-<p class="p1">Return the gray code for the number.</p>
-<p class="p5"><br></p>
-<p class="p4">2.grayCode</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Binary Representation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>setBit(bitNumber, bool)</b></p>
-<p class="p1">set nth bit to zero (bool = false) or one (bool = true)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>leadingZeroes</b> { _CLZ }</p>
-<p class="p2"><br></p>
-<p class="p1"><b>trailingZeroes</b> { _CTZ }</p>
-<p class="p2"><br></p>
-<p class="p1"><b>numBits</b></p>
-<p class="p1">return number of required bits</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Properties</b></p>
-<p class="p6"><br></p>
-<p class="p1"><b>even</b></p>
-<p class="p1">Answers true if dividable by 2 with no rest</p>
-<p class="p2"><br></p>
-<p class="p1"><b>odd</b></p>
-<p class="p1">Answers true if not dividable by 2 with no rest</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Powers Of Two</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>nextPowerOfTwo</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the next power of two greater than or equal to the receiver.</p>
-<p class="p2"><br></p>
-<p class="p4">13.nextPowerOfTwo.postln;</p>
-<p class="p4">64.nextPowerOfTwo.postln;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isPowerOfTwo</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the whether the receiver is a power of two.</p>
-<p class="p2"><br></p>
-<p class="p4">13.isPowerOfTwo.postln;</p>
-<p class="p4">64.isPowerOfTwo.postln;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Prime Numbers</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>nthPrime</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the nth prime number. The receiver must be from 0 to 6541.</p>
-<p class="p2"><br></p>
-<p class="p4">[0,1,2,3,4,5].collect({ arg i; i.nthPrime; }).postln;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>prevPrime</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the next prime less than or equal to the receiver up to 65521.</p>
-<p class="p2"><br></p>
-<p class="p4">25.prevPrime.postln;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>nextPrime</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the next prime less than or equal to the receiver up to 65521.</p>
-<p class="p2"><br></p>
-<p class="p4">25.nextPrime.postln;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isPrime</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer whether the receiver is prime.</p>
-<p class="p2"><br></p>
-<p class="p4">25.isPrime.postln;</p>
-<p class="p4">13.isPrime.postln;</p>
-<p class="p7"><br></p>
-<p class="p1"><b>indexOfPrime</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the index of a prime number less than or equal to the receiver up to 65521.</p>
-<p class="p1">If the receiver is not a prime, the answer is nil.</p>
-<p class="p2"><br></p>
-<p class="p4">23.indexOfPrime;</p>
-<p class="p4">25.indexOfPrime;</p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Misc</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>pidRunning</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a Boolean for whether or not the specified pid is running.</p>
-<p class="p2"><br></p>
-<p class="p4">p = <span class="s4">"cat"</span>.unixCmd;</p>
-<p class="p8"><span class="s5">p.pidRunning; </span>// cat will stay alive</p>
-<p class="p4">(<span class="s4">"kill"</span> + p).unixCmd</p>
-<p class="p4">p.pidRunning;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>getKeys</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns the bits from the Macintosh GetKeys() Toolbox call. Receiver should be 0 to 3.</p>
-<p class="p2"><br></p>
-<p class="p4">[0.getKeys, 1.getKeys, 2.getKeys, 3.getKeys].postln;</p>
-</body>
-</html>
diff --git a/Help/Math/Magnitude.html b/Help/Math/Magnitude.html
deleted file mode 100644
index f4bd6d0..0000000
--- a/Help/Math/Magnitude.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Magnitude<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>comparable value in a linear continuum</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>inherits from: </b><a href="../Core/Object.html">Object</a></p>
-<p class="p2"><br></p>
-<p class="p1">Magnitudes represent values along a linear continuum which can be compared against each other.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>< aMagnitude</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer a Boolean whether the receiver is less than aMagnitude.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b><= aMagnitude</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer a Boolean whether the receiver is less than or equal to aMagnitude.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>> aMagnitude</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer a Boolean whether the receiver is greater than aMagnitude.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>>= aMagnitude</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer a Boolean whether the receiver is greater than or equal to aMagnitude.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>min(aMagnitude)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the minimum of the receiver and aMagnitude.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>max(aMagnitude)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer the maximum of the receiver and aMagnitude.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>clip(minVal, maxVal)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the receiver is less than minVal then answer minVal, else if the receiver is greater than maxVal then answer maxVal, else answer the receiver.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>inclusivelyBetween(minVal, maxVal)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer whether the receiver is greater than or equal to minVal and less than or equal to maxVal.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>exclusivelyBetween(minVal, maxVal)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Answer whether the receiver is greater than minVal and less than maxVal.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/Math/Number.html b/Help/Math/Number.html
deleted file mode 100644
index 1646049..0000000
--- a/Help/Math/Number.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Number<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>mathematical quantity</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Superclass: </b><a href="../Core/Object.html">Object</a> : <a href="Magnitude.html">Magnitude</a><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">Number represents a mathematical quantity.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Math</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>+ aNumber</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Addition.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>- aNumber</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Subtraction.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>* aNumber</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Multiplication.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>/ aNumber</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Division.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>div(aNumber)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Integer division.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>% aNumber</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Modulo.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>** aNumber</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Exponentiation.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>squared</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>The square of the number.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>cubed</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>The cube of the number.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><b>Polar Coordinate Support</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>rho</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Answer the polar radius of the number.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>theta</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Answer the polar angle of the number.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p6"><b>Complex Number Support</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>real</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Answer the real part of the number.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>imag</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Answer the imaginary part of the number.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p6"><b>Conversion</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>@ aNumber</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Create a new Point whose x coordinate is the receiver and whose y coordinate is aNumber.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>complex(imaginaryPart)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Create a new Complex number whose real part is the receiver with the given imaginary part.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>polar(angle)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Create a new Polar number whose radius is the receiver with the given angle.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p6"><b>Iteration</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>for(endval, function)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Calls function for numbers from <b>this</b> up to <b>endval</b>, inclusive, stepping each time by 1.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>endval</b> - a Number.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>function</b> - a Function which is passed two arguments, the first which is an number from this to</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>endval, and the second which is a number from zero to the number of iterations minus one.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>forBy(endval, step, function)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Calls function for numbers from <b>this </b>up to <b>endval</b> stepping each time by <b>step.</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>endval</b> - a Number.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>step</b> - a Number.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>function</b> - a Function which is passed two arguments, the first which is an number from this to</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>endval, and the second which is a number from zero to the number of iterations minus one.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>forSeries(second, last, function)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Calls function for numbers from <b>this </b>up to <b>endval</b> stepping each time by a step specified by <b>second.</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span>second</b> - a Number.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>last</b> - a Number.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>function</b> - a Function which is passed two arguments, the first which is an number from this to</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>endval, and the second which is a number from zero to the number of iterations minus one.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Math/Polar.html b/Help/Math/Polar.html
deleted file mode 100644
index 951c769..0000000
--- a/Help/Math/Polar.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Polar <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>polar coordinates</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Number.html"><span class="s2">Number</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Represents polar coordinates.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Creation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>new(rho, theta)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Create a new polar coordinate with the given radius, rho, and angle in radians, theta.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Math</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>+ <span class="Apple-converted-space">  </span>- <span class="Apple-converted-space">  </span>* <span class="Apple-converted-space">  </span>/</b></p>
-<p class="p2"><br></p>
-<p class="p1">The math operations of addition, subtraction, multiplication and division are accomplished by</p>
-<p class="p1">first converting to complex numbers.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>scale(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Scale the radius by some value.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>rotate(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Rotate the angle by some value.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>neg</b></p>
-<p class="p2"><br></p>
-<p class="p1">Rotate by pi.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Conversion</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>magnitude</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the radius.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>angle</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the angle in radians</p>
-<p class="p2"><br></p>
-<p class="p1"><b>phase</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the angle in radians</p>
-<p class="p2"><br></p>
-<p class="p1"><b>real</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the real part.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>imag</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer the imaginary part.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asComplex</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert to Complex</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asPoint</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert to Point</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Math/SimpleNumber.html b/Help/Math/SimpleNumber.html
deleted file mode 100644
index ce2e360..0000000
--- a/Help/Math/SimpleNumber.html
+++ /dev/null
@@ -1,715 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {text-decoration: underline}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.s6 {font: 9.0px Monaco}
-span.s7 {font: 12.0px Helvetica}
-span.s8 {color: #ad140d}
-span.s9 {color: #1738f5}
-span.s10 {color: #1135f9}
-span.s11 {color: #0a25b9}
-span.s12 {color: #0b28c5}
-span.s13 {color: #0b28c6}
-span.s14 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SimpleNumber<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>one dimensional value</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Number</b></p>
-<p class="p2"><br></p>
-<p class="p1">Represents numbers which can be represented by a single one dimensional value.</p>
-<p class="p2"><br></p>
-<p class="p1">Most of the Unary and Binary operations are also implemented by <a href="../UGens/Algebraic/UnaryOpUGen.html"><span class="s2">UnaryOpUGen</span></a></p>
-<p class="p1">and <a href="../UGens/Algebraic/BinaryOpUGen.html"><span class="s2">BinaryOpUGen</span></a>, so you can get more examples by looking at the help for those.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Unary Operations</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>neg</b></p>
-<p class="p2"><br></p>
-<p class="p1">negation</p>
-<p class="p2"><br></p>
-<p class="p1"><b>bitNot</b></p>
-<p class="p2"><br></p>
-<p class="p1">ones complement</p>
-<p class="p2"><br></p>
-<p class="p1"><b>abs</b></p>
-<p class="p2"><br></p>
-<p class="p1">absolute value.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>ceil</b></p>
-<p class="p2"><br></p>
-<p class="p1">next larger integer.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>floor</b></p>
-<p class="p2"><br></p>
-<p class="p1">next smaller integer</p>
-<p class="p2"><br></p>
-<p class="p1"><b>frac</b></p>
-<p class="p2"><br></p>
-<p class="p1">fractional part.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sign</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer -1 if negative, +1 if positive or 0 if zero.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>squared</b></p>
-<p class="p2"><br></p>
-<p class="p1">The square of the number.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>cubed</b></p>
-<p class="p2"><br></p>
-<p class="p1">The cube of the number.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sqrt</b></p>
-<p class="p2"><br></p>
-<p class="p1">The square root of the number.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>exp</b></p>
-<p class="p2"><br></p>
-<p class="p1">e to the power of the receiver.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>reciprocal</b></p>
-<p class="p2"><br></p>
-<p class="p1">1 / this</p>
-<p class="p2"><br></p>
-<p class="p1"><b>midicps</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert MIDI note to cycles per second</p>
-<p class="p2"><br></p>
-<p class="p1"><b>cpsmidi</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert cycles per second to MIDI note.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>midiratio</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert an interval in semitones to a ratio.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>ratiomidi</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert a ratio to an interval in semitones.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>ampdb</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert a linear amplitude to decibels.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>dbamp</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert a decibels to a linear amplitude.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>octcps</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert decimal octaves to cycles per second.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>cpsoct</b></p>
-<p class="p2"><br></p>
-<p class="p1">Convert cycles per second to decimal octaves.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>log</b></p>
-<p class="p2"><br></p>
-<p class="p1">Base e logarithm.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>log2</b></p>
-<p class="p2"><br></p>
-<p class="p1">Base 2 logarithm.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>log10</b></p>
-<p class="p2"><br></p>
-<p class="p1">Base 10 logarithm.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sin</b></p>
-<p class="p2"><br></p>
-<p class="p1">Sine.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>cos</b></p>
-<p class="p2"><br></p>
-<p class="p1">Cosine.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>tan</b></p>
-<p class="p2"><br></p>
-<p class="p1">Tangent.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asin</b></p>
-<p class="p2"><br></p>
-<p class="p1">Arcsine.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>acos</b></p>
-<p class="p2"><br></p>
-<p class="p1">Arccosine.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>atan</b></p>
-<p class="p2"><br></p>
-<p class="p1">Arctangent.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sinh</b></p>
-<p class="p2"><br></p>
-<p class="p1">Hyperbolic sine.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>cosh</b></p>
-<p class="p2"><br></p>
-<p class="p1">Hyperbolic cosine.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>tanh</b></p>
-<p class="p2"><br></p>
-<p class="p1">Hyperbolic tangent.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>rand</b></p>
-<p class="p2"><br></p>
-<p class="p1">Random number from zero up to the receiver, exclusive.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>rand2</b></p>
-<p class="p2"><br></p>
-<p class="p1">Random number from -this to +this.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>linrand</b></p>
-<p class="p2"><br></p>
-<p class="p1">Linearly distributed random number from zero to this.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>bilinrand</b></p>
-<p class="p2"><br></p>
-<p class="p1">Bilateral linearly distributed random number from -this to +this.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sum3rand</b></p>
-<p class="p2"><br></p>
-<p class="p1">A random number<span class="Apple-converted-space">  </span>from -this to +this that is the result of summing three uniform random generators</p>
-<p class="p1">to yield a bell-like distribution. This was suggested by Larry Polansky as a poor man's gaussian.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>distort</b></p>
-<p class="p2"><br></p>
-<p class="p1">a nonlinear distortion function.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>softclip</b></p>
-<p class="p2"><br></p>
-<p class="p1">Distortion with a perfectly linear region from -0.5 to +0.5</p>
-<p class="p2"><br></p>
-<p class="p1"><b>scurve</b></p>
-<p class="p2"><br></p>
-<p class="p1">Map receiver in the onto an S-curve.</p>
-<p class="p2"><br></p>
-<p class="p4">((0..100) / 100 ).collect(_.scurve).plot</p>
-<p class="p5"><br></p>
-<p class="p1"><b>ramp</b></p>
-<p class="p2"><br></p>
-<p class="p1">Map receiver onto a ramp starting at 0.</p>
-<p class="p2"><br></p>
-<p class="p4">((-100..100) / 100 ).collect(_.ramp).plot</p>
-<p class="p2"><br></p>
-<p class="p1"><b>coin</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answers a Boolean which is the result of a random test whose probability of success in a range from<span class="Apple-converted-space"> </span></p>
-<p class="p1">zero to one is <span class="s3">this</span>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>even</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer if the number is even.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>odd</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer if the number is odd.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isPositive</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer if the number is >= 0.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isNegative</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer if the number is < 0.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isStrictlyPositive</b></p>
-<p class="p2"><br></p>
-<p class="p1">Answer if the number is > 0.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>booleanValue</b></p>
-<p class="p2"><br></p>
-<p class="p1">return true, if strictly positive ( > 0), otherwise false (see <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>isValidUGenInput</b></p>
-<p class="p2"><br></p>
-<p class="p1">return false if receiver cannot be used in UGen.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>magnitude</b></p>
-<p class="p2"><br></p>
-<p class="p1">returns abolute value (see <a href="Polar.html"><span class="s2">Polar</span></a>, <a href="Complex.html"><span class="s2">Complex</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>angle</b></p>
-<p class="p2"><br></p>
-<p class="p1">returns angle of receiver conceived as <a href="Polar.html"><span class="s2">Polar</span></a> or <a href="Complex.html"><span class="s2">Complex</span></a><span class="s2"> </span>number.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>wait</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>within a routine, yield the number so that the clock can wait for this many beats.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(see <a href="../Core/Kernel/Routine.html"><span class="s2">Routine</span></a>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// create a routine by a function fork</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>fork {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"I did wait"<span class="s4">.postln;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0.rand.wait;</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"No you didn't"<span class="s4">.postln;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(1..).do { <span class="s2">|i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">"yes I did"</span>.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.asFloat.rand.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"no you didn't"<span class="s4">.postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.wait<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p1"><b>waitUntil</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>like wait, only specify a time (measured in beats of the current thread's clock)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(see <a href="../Core/Kernel/Routine.html"><span class="s2">Routine</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sleep</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>make the current thread sleep, until woken up by re-scheduling. (see <a href="../Core/Kernel/Routine.html"><span class="s2">Routine</span></a>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="s6"><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Binary Operations</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>+ aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Addition</p>
-<p class="p2"><br></p>
-<p class="p1"><b>- aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Subtraction</p>
-<p class="p2"><br></p>
-<p class="p1"><b>* aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Multiplication</p>
-<p class="p2"><br></p>
-<p class="p1"><b>/ aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Division</p>
-<p class="p2"><br></p>
-<p class="p1"><b>% aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Modulo</p>
-<p class="p2"><br></p>
-<p class="p1"><b>div(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Integer Division</p>
-<p class="p2"><br></p>
-<p class="p1"><b>** aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Exponentiation</p>
-<p class="p2"><br></p>
-<p class="p1"><b>min(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Minimum</p>
-<p class="p2"><br></p>
-<p class="p1"><b>max(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Maximum</p>
-<p class="p2"><br></p>
-<p class="p1"><b>& aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Bitwise And</p>
-<p class="p2"><br></p>
-<p class="p1"><b>| aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Bitwise Or</p>
-<p class="p2"><br></p>
-<p class="p1"><b>bitXor(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Bitwise Exclusive Or</p>
-<p class="p2"><br></p>
-<p class="p1"><b>bitHammingDistance(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Binary Hamming distance, or the count of bits that are not the same in the two numbers</p>
-<p class="p2"><br></p>
-<p class="p1"><b>bitTest(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns true if bit at index aNumber is set.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>lcm(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Least common multiple</p>
-<p class="p2"><br></p>
-<p class="p1"><b>gcd(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Greatest common divisor</p>
-<p class="p2"><br></p>
-<p class="p1"><b>round(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Round to multiple of aNumber</p>
-<p class="p2"><br></p>
-<p class="p1"><b>trunc(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Truncate to multiple of aNumber</p>
-<p class="p2"><br></p>
-<p class="p1"><b>atan2(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Arctangent of (this/aNumber)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>hypot(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Square root of the sum of the squares.</p>
-<p class="p2"><br></p>
-<p class="p1"><b><< aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Binary shift left.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>>> aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Binary shift right.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>+>> aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Unsigned binary shift right.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>fill(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>ring1(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">(a * b) + a</p>
-<p class="p2"><br></p>
-<p class="p1"><b>ring2(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">((a*b) + a + b)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>ring3(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">(a*a *b)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>ring4(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">((a*a *b) - (a*b*b))</p>
-<p class="p2"><br></p>
-<p class="p1"><b>difsqr(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">(a*a) - (b*b)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sumsqr(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">(a*a) + (b*b)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sqrdif(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">(a - b)**2</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sqrsum(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">(a + b)**2</p>
-<p class="p2"><br></p>
-<p class="p1"><b>absdif(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">(a - b).abs</p>
-<p class="p2"><br></p>
-<p class="p1"><b>amclip(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">0<span class="Apple-converted-space">  </span>when<span class="Apple-converted-space">  </span>b <= 0,<span class="Apple-converted-space">  </span>a*b<span class="Apple-converted-space">  </span>when<span class="Apple-converted-space">  </span>b > 0</p>
-<p class="p2"><br></p>
-<p class="p1"><b>scaleneg(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">a*b when a < 0, otherwise a.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>clip2(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">clips receiver to +/- aNumber</p>
-<p class="p2"><br></p>
-<p class="p1"><b>excess(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns the difference of the receiver and its clipped form: (a - clip2(a,b)).</p>
-<p class="p2"><br></p>
-<p class="p1"><b><! aNumber</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return the receiver. aNumber is ignored.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>asFraction(denominator, fasterBetter)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return an array of denominator and divisor of the nearest and smallest fraction</p>
-<p class="p2"><br></p>
-<p class="p1"><b>rrand(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a random number in the interval ]a, b[. If both a and b are Integer then the result will be an Integer.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>exprand(aNumber)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns an exponentially distributed random number in the interval ]a, b[. Always returns a Float.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>gauss(standardDeviation)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a gaussian distributed random number. Always returns a Float.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">(0..1000).collect { |num| gauss(0.0, num) }.plot;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>nextTimeOnGrid(clock)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Return the next possible multiple of the clock's beats.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>N-ary Operations</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>degreeToKey(scale, stepsPerOctave)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>the value is truncated to an integer and used as an index into an octave repeating table of note values.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>Indices wrap around the table and shift octaves as they do</p>
-<p class="p1"><span class="Apple-tab-span">	</span>stepsPerOctave is 12 by default</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = [0, 1, 5, 9, 11]; <span class="s8">// pentatonic scale</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(1, 2..15).collect { <span class="s2">|i|</span> i.degreeToKey(l, 12) }</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>keyToDegree(scale, stepsPerOctave)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>inverse of degreeToKey.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>stepsPerOctave is 12 by default</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = [0, 1, 5, 9, 11]; <span class="s8">// pentatonic scale</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(60, 61..75).collect { <span class="s2">|i|</span> i.keyToDegree(l, 12) }</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = [0, 1, 5, 9, 11]; <span class="s8">// pentatonic scale</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(60, 61..75).postln.collect { <span class="s2">|i|</span> i.keyToDegree(l, 12).degreeToKey(l) }</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>nearestInList(list)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>returns the value in the collection closest to this</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = [0, 0.5, 0.9, 1];</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(0, 0.05..1).collect { |i| i.nearestInList(l) }</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>nearestInScale(scale, stepsPerOctave)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>returns the value in the collection closest to this, assuming an octave repeating table of note values.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>stepsPerOctave is 12 by default</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = [0, 1, 5, 9, 11]; <span class="s8">// pentatonic scale</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(60, 61..76).collect { |i| i.nearestInScale(l, 12) }</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>partition(parts, min)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>randomly partition a number into parts of at least min size.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>75.partition(8, 3);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>75.partition(75, 1);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>asTimeString(precision, maxDays = 365, dropDaysIfPossible = true)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>returns a string corresponding to the days:hours:minutes:seconds<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>based on the receiver as number of seconds.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>precision</b> is 0.001 (ms) by default</p>
-<p class="p1"><span class="Apple-tab-span">	</span>this format is inspired by ISO 8601 time interval display (truncated representation)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>returns string "ddd:hh:mm:ss:ttt" where t is milliseconds</p>
-<p class="p1"><span class="Apple-tab-span">	</span>see <a href="../Collections/String.html"><span class="s9">String</span></a>:asSecs for complement</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> start = <span class="s2">Main</span>.elapsedTime;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fork { loop { (<span class="s2">Main</span>.elapsedTime - start).asTimeString.postln; 0.05.wait } };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p1"><b>equalWithPrecision(that, precision)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>return true if receiver is closer to <b>that</b> than <b>precision</b>. (default for precision: 0.0001)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>3.1.equalWithPrecision(3.0, 0.05); <span class="s8">// false</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>3.1.equalWithPrecision(3.0, 0.1); <span class="s8">// false</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>3.1.equalWithPrecision(3.0, 0.11); <span class="s8">// true</span></p>
-<p class="p5"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>quantize(quantum, tolerance, strength)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span></b>round the receiver to the <b>quantum</b> (default: 1.0) allowing for a <b>tolerance</b> (default: 0.05).</p>
-<p class="p1"><span class="Apple-tab-span">	</span>How much the value is allowed to differ in the tolerance range is determined by <b>strength</b> (default: 1.0).</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>((0..10) / 10).collect { <span class="s2">|num|</span> num.quantize(1, 0.3, 0.5) }.postcs.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>((0..10) / 10).collect { <span class="s2">|num|</span> num.quantize(1, 0.6, 0.5) }.postcs.plot;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>((0..10) / 10).collect { <span class="s2">|num|</span> num.quantize(1, 1.0, 0.5) }.postcs.plot;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>linlin(inMin, inMax, outMin, outMax, clip)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><span class="s6"><span class="Apple-tab-span">	</span></span>map the receiver from an assumed linear input range (inMin..inMax)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>to a linear output range (outMin..outMax). If the input exceeds the assumed input range.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the input exceeds the input range, the following behaviours are specified by the <b>clip</b> argument:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil</b> (don't clip), <b>\max</b> (clip ceiling), <b>\min</b>, (clip floor), <b>\minmax</b> (clip both - this is default).</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(0..10).collect { <span class="s2">|num|</span> num.linlin(0, 10, -4.3, 100) };<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(0..10).linlin(0, 10, -4.3, 100); <span class="s8">// equivalent.</span></p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>linexp(inMin, inMax, outMin, outMax, clip)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><span class="s6"><span class="Apple-tab-span">	</span></span>map the receiver from an assumed linear input range (inMin..inMax)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>to an exponential output range (outMin..outMax).</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The output range must not include zero.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the input exceeds the input range, the following behaviours are specified by the <b>clip</b> argument:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil</b> (don't clip), <b>\max</b> (clip ceiling), <b>\min</b>, (clip floor), <b>\minmax</b> (clip both - this is default).</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>(0..10).collect { <span class="s2">|num|</span> num.linexp(0, 10, 4.3, 100) };<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(0..10).linexp(0, 10, 4.3, 100); <span class="s8">// equivalent.</span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b>explin(inMin, inMax, outMin, outMax, clip)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><span class="s6"><span class="Apple-tab-span">	</span></span>map the receiver from an assumed exponential input range (inMin..inMax)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>to a linear output range (outMin..outMax). If the input exceeds the assumed input range.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The input range must not include zero.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the input exceeds the input range, the following behaviours are specified by the <b>clip</b> argument:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil</b> (don't clip), <b>\max</b> (clip ceiling), <b>\min</b>, (clip floor), <b>\minmax</b> (clip both - this is default).<span class="s6"><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(1..10).collect { <span class="s2">|num|</span> num.explin(0.1, 10, -4.3, 100) };<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(1..10).explin(0.1, 10, -4.3, 100); <span class="s8">// equivalent.</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p1"><b>expexp(inMin, inMax, outMin, outMax, clip)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><span class="s6"><span class="Apple-tab-span">	</span></span>map the receiver from an assumed exponential input range (inMin..inMax)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>to an exponential output range (outMin..outMax). If the input exceeds the assumed input range.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>Both input range and output range must not include zero.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the input exceeds the input range, the following behaviours are specified by the <b>clip</b> argument:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil</b> (don't clip), <b>\max</b> (clip ceiling), <b>\min</b>, (clip floor), <b>\minmax</b> (clip both - this is default).</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(1..10).collect { <span class="s2">|num|</span> num.expexp(0.1, 10, 4.3, 100) };<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(1..10).expexp(0.1, 10, 4.3, 100); <span class="s8">// equivalent.</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>lincurve(inMin, inMax, outMin, outMax, curve, clip)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><span class="s6"><span class="Apple-tab-span">	</span></span>map the receiver from an assumed linear input range (inMin..inMax)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>to an exponential curve output range (outMin..outMax). A <b>curve</b> is like the curve parameter in <a href="../Control/Env.html"><span class="s10">Env</span></a></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Unlike with linexp, the output range may include zero.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the input exceeds the input range, the following behaviours are specified by the <b>clip</b> argument:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil</b> (don't clip), <b>\max</b> (clip ceiling), <b>\min</b>, (clip floor), <b>\minmax</b> (clip both - this is default).</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>(0..10).collect { <span class="s11">|num|</span> num.lincurve(0, 10, -4.3, 100, -3) };<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(0..10).lincurve(0, 10, -4.3, 100, -3); <span class="s8">// equivalent.</span></p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span></span>// different curves:</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(-4..4).do { <span class="s12">|val|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(0..100).collect(<span class="s12">_</span>.lincurve(0, 100, 0, 1, val)).plot</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>curvelin(inMin, inMax, outMin, outMax, curve, clip)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><span class="s6"><span class="Apple-tab-span">	</span></span>map the receiver from an assumed curve-exponential input range (inMin..inMax)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>to a linear output range (outMin..outMax). If the input exceeds the assumed input range.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>A<b> curve</b> is<span class="Apple-converted-space">  </span>like the curve parameter in <a href="../Control/Env.html"><span class="s10">Env</span></a><span class="s10">.</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Unlike with explin, the input range may include zero.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the input exceeds the input range, the following behaviours are specified by the <b>clip</b> argument:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil</b> (don't clip), <b>\max</b> (clip ceiling), <b>\min</b>, (clip floor), <b>\minmax</b> (clip both - this is default).<span class="s6"><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(1..10).collect { <span class="s11">|num|</span> num.curvelin(0, 10, -4.3, 100, -3) };<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(1..10).curvelin(0, 10, -4.3, 100, -3); <span class="s8">// equivalent.</span></p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span></span>// different curves:</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(-4..4).do { <span class="s13">|val|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(0..100).collect(<span class="s13">_</span>.curvelin(0, 100, 0, 1, val)).plot</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>bilin(inCenter, inMin, inMax, outCenter, outMin, outMax, clip)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><span class="s6"><span class="Apple-tab-span">	</span></span>map the receiver from two assumed linear input ranges (inMin..inCenter) and (inCenter..inMax)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>to two linear output ranges (outMin..outCenter) and (outCenter..outMax).</p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the input exceeds the input range, the following behaviours are specified by the <b>clip</b> argument:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil</b> (don't clip), <b>\max</b> (clip ceiling), <b>\min</b>, (clip floor), <b>\minmax</b> (clip both - this is default).</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var center = 0.5, ctlCenter;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>("bilin", Rect(100, 100, 200, 100)).front;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s2">Slider</span>(w, <span class="s2">Rect</span>(20, 20, 150, 20)).value_(0.5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Slider</span>(w, <span class="s2">Rect</span>(20, 45, 150, 20)).value_(0.5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action = { center = b.value };</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.mouseDownAction = { ctlCenter = a.value };</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.action = {<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value = a.value.bilin(ctlCenter, 0, 1, center, 0, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>biexp(inCenter, inMin, inMax, outCenter, outMin, outMax, clip)</b></p>
-<p class="p5"><br></p>
-<p class="p1"><span class="s6"><span class="Apple-tab-span">	</span></span>map the receiver from two assumed exponential input ranges (inMin..inCenter) and (inCenter..inMax)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>to two linear output ranges (outMin..outCenter) and (outCenter..outMax).</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The input range must not include zero.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the input exceeds the input range, the following behaviours are specified by the <b>clip</b> argument:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil</b> (don't clip), <b>\max</b> (clip ceiling), <b>\min</b>, (clip floor), <b>\minmax</b> (clip both - this is default).<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s14"><span class="Apple-tab-span">	</span></span>// doesn't properly work yet.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> center = 0.5, ctlCenter;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s2">Window</span>(<span class="s5">"biexp"</span>, <span class="s2">Rect</span>(100, 100, 200, 100)).front;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s2">Slider</span>(w, <span class="s2">Rect</span>(20, 20, 150, 20)).value_(0.5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Slider</span>(w, <span class="s2">Rect</span>(20, 45, 150, 20)).value_(0.5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.action = { center = b.value };</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.mouseDownAction = { ctlCenter = a.value + 0.05 };</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.action = {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value = (a.value + 0.1).biexp(ctlCenter, 0.1, 1.1, center, 0, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>lcurve(a, m, n, tau)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>map the receiver onto an L-curve, using the formula: a * (m * exp(x) * rTau + 1) / (n * exp(x) * rTau + 1).</p>
-<p class="p1"><span class="Apple-tab-span">	</span>This is used for smoothing values and limiting them to a range. Defalt values: <b>a = 1; m = 0; tau = 1</b>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(0..1000).normalize(-10, 10).collect { <span class="s2">|num|</span> num.lcurve }.plot;<span class="s7"><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p1"><b>gaussCurve(a, b, c)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>map the receiver onto a gauss function, using the formula: a * (exp(squared(this - b) / (-2.0 * squared(c))))<span class="Apple-tab-span">	</span>Defalt values: <b>a = 1; b = 0; c = 1</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(0..1000).normalize(-10, 10).collect { <span class="s2">|num|</span> num.gaussCurve }.plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>series(second, last)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>return an artithmetic series from <b>this</b> over <b>second</b> to <b>last</b>. This is used in the shortcuts:</p>
-<p class="p1"><span class="Apple-tab-span">	</span>(0..100) or (1, 3 .. 17). if <b>second</b> is nil, it is one magnitude step towards last (1 or -1).</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>series(5, 7, 10);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>series(5, nil, 10);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(5, 7 .. 10)<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>seriesIter(second, last)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>return a <a href="../Core/Kernel/Routine.html"><span class="s2">Routine</span></a> that iterates over the numbers from <b>this</b> to <b>last</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Since this is a lazy operation, <b>last</b> may be <b>inf</b>, generating an endless series<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span>(see also: <a href="../Language/ListComprehensions.html"><span class="s7">ListComprehensions</span></a>)</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>r = seriesIter(0, 5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>r.nextN(8);<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>r.nextN(8);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/More-On-Getting-Help.html b/Help/More-On-Getting-Help.html
deleted file mode 100644
index c3e0080..0000000
--- a/Help/More-On-Getting-Help.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9; min-height: 14.0px}
-span.s1 {color: #001bb9}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {font: 9.0px Monaco}
-span.s5 {font: 9.0px Monaco; color: #001bb9}
-span.s6 {color: #2c7014}
-span.s7 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>More on Getting Help</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><i>Note:</i> This help file uses the key commands for OS X; on other systems, please substitute the <a href="Other Topics/Shortcuts.html"><span class="s1">Shortcuts</span></a> as necessary<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Listed below are a few techniques for tracking down documentation and functionality. <b>Note: </b>If some of the terms used below (e.g. class, method, inheritance, etc.) are unclear to you, you may wish to read the <b>Language</b> helpfiles which are listed in the main help window for detail on some of these concepts. Reading a general tutorial on Object Oriented Programming at some point could also be useful, as could reading a FAQ, etc. about Smalltalk. Smalltalk is the general purpose OOP language upon which the the design of the SuperCollider language is based. Its syntax is different than SC's, but conceptually it has much in common.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>NB: </b>Be sure to check out the Further Info section at the bottom of this page.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Basics<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b></p>
-<p class="p2"><br></p>
-<p class="p3">As you've probably already learned selecting any text and pressing Cmd-d will open the corresponding helpfile. Usually helpfiles are either concept related, or document particular classes. In the SC language classes begin with capital letters. Try Cmd-d on the following (double click on the first word; the stuff after the two slashes is a comment):</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Class</span><span class="s3"> </span>// this is a class</p>
-<p class="p2"><br></p>
-<p class="p3">A few methods also have helpfiles. Methods begin with lower-case letters, as do many other things in the language.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">play </span>// Cmd-d on this will open a helpfile detailing different implementations of this method</p>
-<p class="p2"><br></p>
-<p class="p3">In addition there are a many helpfiles which explain important concepts. Most of these are listed in the main help window (Help.html, which will open if you press Cmd-d with no text selected), or in the overviews listed there. The file called <a href="Tutorials/Tutorial.html"><span class="s1">Tutorial</span></a> is one example.</p>
-<p class="p2"><br></p>
-<p class="p3">Much documentation contains hypertext links to other helpfiles. Click the link to open the corresponding helpfile.</p>
-<p class="p2"><br></p>
-<p class="p3">Note that many helpful methods print information to the 'post window'. Unless you have explicitly changed it (see the Window menu) this is the window which opened when you launched. Pressing Cmd-\ will bring the current post window to the front.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Tracking Down Information</b></p>
-<p class="p2"><br></p>
-<p class="p3">Executing the following</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">Help</span>.gui;</p>
-<p class="p2"><br></p>
-<p class="p3">will open a "help browser" which lists all helpfiles in thematic categories. (Equivalently, press Shift-Cmd-D)</p>
-<p class="p2"><br></p>
-<p class="p3">The helpfile <a href="Other Topics/Undocumented-Classes.html"><span class="s1">Undocumented-Classes</span></a><b> </b>contains a (possibly out of date) list of all classes which have no helpfiles. This can be a good place to start looking for functionality which may already be implemented.</p>
-<p class="p2"><br></p>
-<p class="p3">Looking in class definitions (select any class and press Cmd-j to open its class definition file) can help you to figure out what undocumented methods do.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">Array</span><span class="s3"> </span>// Try Cmd-j on this</p>
-<p class="p2"><br></p>
-<p class="p3">Since many methods use other classes, you may need to continue your search in other class definitions or helpfiles.</p>
-<p class="p2"><br></p>
-<p class="p3">Executing the method dumpInterface on any class will list its class and instance methods and their arguments (if any).</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">Array</span><span class="s3">.dumpInterface; </span>// Look at the post window (the one that opened when you started SC)</p>
-<p class="p2"><br></p>
-<p class="p3">Note that since the SuperCollider language is object-oriented many classes inherit methods from farther up the class hierarchy. (The many subclasses of Collection are a good example of this. See the <a href="Collections/Collections.html"><span class="s1">Collections</span></a> overview for more detail.) It would be impractical and redundant to document every inherited method that a class responds to, so it is important to be able to track down documentation and method definitions. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The method dumpFullInterface applied to any Class will list all class and instance methods that a class responds to, sorted by the class in which they are implemented. This will include inherited methods. Methods overidden in a subclass are listed under the subclass.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">Array</span>.dumpFullInterface;</p>
-<p class="p2"><br></p>
-<p class="p3">This can be a lot of information, so dumpAllMethods or class.dumpAllMethods will show only instance and class methods respectively.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">Array</span><span class="s3">.class.dumpAllMethods; </span>// Only class methods that this responds to (including inherited ones)</p>
-<p class="p7"><span class="s1">Array</span><span class="s3">.dumpAllMethods; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Only instance methods (including inherited ones)</p>
-<p class="p2"><br></p>
-<p class="p3">There is also a graphical Class browser which will show all methods, arguments, subclasses, instance variables and class variables. Using the browser's buttons you can easily navigate to the class' superclass, subclasses, class source, method source, helpfile (if there is one), check references or implementation of methods, or even open a web browser to view the corresponding entry in the online SVN repository. (Note that the web repository is a backup often a day or two behind the status of what is available to developers.)</p>
-<p class="p2"><br></p>
-<p class="p8">SequenceableCollection<span class="s3">.browse;</span></p>
-<p class="p2"><br></p>
-<p class="p3">Selecting any method and pressing Cmd-y will open a window with a list of all the classes that <i>implement</i> that method. (See the <a href="Language/Polymorphism.html"><span class="s1">Polymorphism</span></a><b> </b>helpfile for detail on why different classes might implement methods with the same name.)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s3">select </span>// try it on this method</p>
-<p class="p2"><br></p>
-<p class="p3">Similarly, selecting any text and typing shift-cmd-y will open a window showing all references to the selected text, i.e. each place it is used within the class library. (This will not find methods calls compiled with special byte codes like 'value'.)</p>
-<p class="p2"><br></p>
-<p class="p7">// try it on these</p>
-<p class="p6">asStream<span class="Apple-converted-space"> </span></p>
-<p class="p8">SCWindow</p>
-<p class="p2"><br></p>
-<p class="p3">In the resulting window selecting any class and method and pressing Cmd-j will take you to that method definition in that class definition. For example try selecting <span class="s4">Pattern-select</span> in the window resulting from the previous example. Note that SC supports defining methods in separate files, so a class' methods may be defined in more than one place. If you try Cmd-j on the following you will see that it will open a file called dumpFullInterface.sc rather than one called Class.sc (its main class definition file). The <span class="s4">+ </span><span class="s5">Class</span><span class="s4"> {...</span>. syntax indicates that these are additional methods.</p>
-<p class="p2"><br></p>
-<p class="p6">Class-dumpFullInterface</p>
-<p class="p2"><br></p>
-<p class="p3">If you know that a class responds to a particular message, you can use findRespondingMethod to find out which class it inherits the corresponding method from.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">Array</span><span class="s3">.findRespondingMethodFor(</span><span class="s6">'select'</span><span class="s3">); </span>// you can Cmd-j on the result in the post window</p>
-<p class="p2"><br></p>
-<p class="p3">Similarly, helpFileForMethod will open the helpfile of the class in which the responding method is defined (if the helpfile exists). Note that this does not guarantee that the method is documented therein. As noted above, some documentation is incomplete, and some methods are 'private' or not intended for general use.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">Array</span><span class="s3">.helpFileForMethod(</span><span class="s6">'select'</span><span class="s3">); </span>// this will open the Collection helpfile; scroll down for select</p>
-<p class="p2"><br></p>
-<p class="p3">In general poking around can be a good way to learn about how things work. See <a href="Other Topics/Internal-Snooping.html"><span class="s1">Internal-Snooping</span></a> for more advanced information about how to look 'under the hood.'</p>
-<p class="p9"><br></p>
-<p class="p4"><b>For Further Info</b></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s7">http://supercollider.sourceforge.net/</span></p>
-<p class="p9"><br></p>
-<p class="p3">A good starting place for figuring out how to do something are the numerous files in the Examples folder. The SuperCollider swiki is another good source of tips, examples, and information:</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s7">http://swiki.hfbk-hamburg.de:8888/MusicTechnology/6</span></p>
-<p class="p9"><br></p>
-<p class="p3">To edit or add pages on the swiki use: <span class="Apple-tab-span">	</span>username: sc <span class="Apple-tab-span">	</span>password: sc</p>
-<p class="p2"><br></p>
-<p class="p3">Further help can be obtained by subscribing and sending questions to the sc-users mailing list:</p>
-<p class="p11"><br></p>
-<p class="p10"><span class="s7">http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml</span></p>
-<p class="p9"><br></p>
-<p class="p3">An archive of the list can be searched from this page:</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s7">http://www.listarc.bham.ac.uk/lists/sc-users/search/</span></p>
-<p class="p2"><br></p>
-<p class="p3">Requests for documentation of undocumented methods or classes, as well as reports of errata, omissions, etc. in helpfiles can be sent to the user's list above. Bugs or Feature Requests can be filed here:</p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s7">https://sourceforge.net/tracker2/?group_id=54622</span></p>
-</body>
-</html>
diff --git a/Help/Other Topics/HelpDocsLicensing.html b/Help/Other Topics/HelpDocsLicensing.html
deleted file mode 100644
index 5e7ebb3..0000000
--- a/Help/Other Topics/HelpDocsLicensing.html	
+++ /dev/null
@@ -1,27 +0,0 @@
-<html>
-<head>
-<title>SuperCollider documentation licensing</title>
-<style type="text/css">
-body {padding: 50px; font: 12.0px Helvetica;}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-</style>
-</head>
-
-<body>
-
-<p class="p2"><b>License for SuperCollider Help</b></p>
-
-<p> </p>
-
-<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/"><img alt="Creative Commons License" style="border-width:0" src="ccbysa3_88x31.png" style="float:left;" /></a> <span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type"><a href="../Help.html">SuperCollider help documentation</a></span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-Share Alike 3.0 Unported License</a>.</p>
-
-<p>Executable SuperCollider code remains under the GPL as stated in SuperCollider's main <a href="Licensing.html">license conditions</a>.</p>
-
-<p>To supply attribution for a help document (which may have multiple contributors), unless otherwise indicated you may credit "SuperCollider 3 documentation contributors".</p>
-
-<p> </p>
-
-<p><em>(Note for editors: do not edit this document in Cocoa, please edit the source directly. This is because the HTML source has embedded metadata.)</em></p>
-
-</body>
-</html>
diff --git a/Help/Other Topics/Internal-Snooping.html b/Help/Other Topics/Internal-Snooping.html
deleted file mode 100644
index 628e838..0000000
--- a/Help/Other Topics/Internal-Snooping.html	
+++ /dev/null
@@ -1,204 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0022b8}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9f261f}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {color: #0022b8}
-span.s3 {color: #606060}
-span.s4 {color: #3b6c0f}
-span.s5 {color: #9f261f}
-span.s6 {color: #0016bd}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Snooping around SuperCollider</b></p>
-<p class="p2"><br></p>
-<p class="p3">You can inspect much of the internal structure of the class library and other data structures.</p>
-<p class="p3">This can often be useful for research and debugging purposes.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Class Definitions, Implementations, and References</b></p>
-<p class="p2"><br></p>
-<p class="p3">Selecting the name of any Class (e.g. <b>Object</b>) and typing cmd-j will open its class definition file.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>** Note:</b> Any keypresses that open files identify the files using SuperCollider strings, which may contain only ASCII characters up to code point 127. If any part of the path to your SuperCollider installation contains character codes greater than 127 (such as the old Mac convention of identifying program folders with option-F), automatic file opening will fail.</p>
-<p class="p2"><br></p>
-<p class="p3">Selecting the name of any method (e.g. <b>play</b>) and typing cmd-y will open a window showing all implementations of that method and their arguments. Selecting one of those classes and methods (e.g. <b>Sample:play</b>) and typing cmd-j will open the class definition at that method. (Note that cmd-y only shows implementations, and does not indicate inheritance).</p>
-<p class="p2"><br></p>
-<p class="p3">Selecting any text (e.g. <b>SCWindow </b>or <b>asStream</b>) and typing shift-cmd-y will open a window showing all references to the selected text, i.e. each place it is used within the class library. (This will not find methods calls compiled with special byte codes like 'value'.)</p>
-<p class="p2"><br></p>
-<p class="p3">SC has a graphical Class browser which will show all methods, arguments, subclasses, instance variables and class variables. Using the browser's buttons you can easily navigate to the class' superclass, subclasses, class source, method source, helpfile (if there is one), check references or implementation of methods, or even open a web browser to view the corresponding entry in the online SVN repository.</p>
-<p class="p2"><br></p>
-<p class="p5">SequenceableCollection<span class="s1">.browse;</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Snooping in Classes</b></p>
-<p class="p2"><br></p>
-<p class="p3">The <b>Class</b> help file documents some of these snooping methods.</p>
-<p class="p3">Even though you may access these data structures, if you store things into them, you may break something.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.dumpInterface;<span class="Apple-tab-span">	</span></span>// print all instance methods defined for this class</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.class.dumpInterface;<span class="Apple-tab-span">	</span></span>// print all class methods defined for this class</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">// The following three include inherited methods</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s2">Collection</span>.methods.collect(<span class="s2">_</span>.name);<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// print all instance methods that instances of this class respond to</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s2">Collection</span>.class.methods.collect(<span class="s2">_</span>.name);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// print all class methods that this class responds to</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.dumpFullInterface;<span class="Apple-tab-span">	</span></span>// print all instance and class methods that this class responds to</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.dumpMethodList;<span class="Apple-tab-span">	</span></span>// print instance methods of this class and superclasses, in alpha order</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// also shows from which class the method is inherited</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// does not include Object or Class methods</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// for class methods, do Meta_Collection.dumpMethodList</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.dumpClassSubtree;<span class="Apple-tab-span">	</span></span>// dump all subclasses of this class</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.dumpSubclassList;<span class="Apple-tab-span">	</span></span>// dump all subclasses, in alphabetical order</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SCWindow</span><span class="s1">.instVarNames.dump;<span class="Apple-tab-span">	</span></span>// dump all instance variable names of this class</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SCWindow</span><span class="s1">.classVarNames.dump;<span class="Apple-tab-span">	</span></span>// dump all class variable names of this class</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SCWindow</span><span class="s1">.filenameSymbol.postln;<span class="Apple-tab-span">	</span></span>// the path to the file that defined this class</p>
-<p class="p8"><br></p>
-<p class="p9">(</p>
-<p class="p7">// print all classes whose names start with 'F'</p>
-<p class="p9"><span class="s2">Class</span>.allClasses.do({ <span class="s2">arg</span> class;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>if (class.name.asString.at(0) == $F, { class.name.postln; });</p>
-<p class="p9">})</p>
-<p class="p9">)</p>
-<p class="p8"><br></p>
-<p class="p9">(</p>
-<p class="p7">// find and print all class variable names defined in the system</p>
-<p class="p9"><span class="s2">Class</span>.allClasses.do({ <span class="s2">arg</span> class;</p>
-<p class="p9"><span class="Apple-converted-space">    </span>if (class.classVarNames.notNil, {</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// classVarNames is an Array of Symbols</p>
-<p class="p9"><span class="Apple-converted-space">        </span>class.classVarNames.do({ <span class="s2">arg</span> varname;</p>
-<p class="p9"><span class="Apple-converted-space">            </span>(class.name.asString ++ <span class="s3">" "</span> ++ varname.asString).postln;</p>
-<p class="p9"><span class="Apple-converted-space">        </span>})</p>
-<p class="p9"><span class="Apple-converted-space">    </span>});</p>
-<p class="p9">});</p>
-<p class="p9">)</p>
-<p class="p8"><br></p>
-<p class="p9">(</p>
-<p class="p7">// find and print all methods that contain "ascii"</p>
-<p class="p9"><span class="s2">Class</span>.allClasses.do({ <span class="s2">arg</span> class;</p>
-<p class="p9"><span class="Apple-converted-space">   <span class="Apple-tab-span">	</span></span>class.methods.do({ <span class="s2">arg</span> sel;</p>
-<p class="p9"><span class="Apple-converted-space">   <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>if(sel.name.asString.find(<span class="s3">"ascii"</span>).notNil) {</p>
-<p class="p9"><span class="Apple-converted-space">            <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>(class.name.asString + <span class="s3">"-"</span> + sel.name).postln;</p>
-<p class="p9"><span class="Apple-converted-space">            </span>}</p>
-<p class="p9"><span class="Apple-converted-space">      </span>});</p>
-<p class="p9">}); <span class="s3">""</span></p>
-<p class="p9">)</p>
-<p class="p6"><br></p>
-<p class="p4"><b>Snooping in Methods</b></p>
-<p class="p6"><br></p>
-<p class="p3">Same thing goes here, if you store things into Methods, you may break something.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.findMethod(</span><span class="s4">'select'</span><span class="s1">); </span>// does it have this method?</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Array</span><span class="s1">.findMethod(</span><span class="s4">'select'</span><span class="s1">); </span>// this class doesn't</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">Array</span><span class="s1">.findRespondingMethodFor(</span><span class="s4">'select'</span><span class="s1">); </span>// climb the class tree to find the method</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.findMethod(</span><span class="s4">'select'</span><span class="s1">).dump; </span>// find a method object</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s2">Collection</span>.findMethod(<span class="s4">'select'</span>).argNames.dump; <span class="s5">// dump its argument names</span></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.findMethod(</span><span class="s4">'select'</span><span class="s1">).varNames.dump; </span>// dump its local variable names</p>
-<p class="p8"><br></p>
-<p class="p7">// dump its code. mostly for debugging the compiler.</p>
-<p class="p9"><span class="s2">Collection</span>.findMethod(<span class="s4">'select'</span>).dumpByteCodes;<span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Collection</span><span class="s1">.dumpByteCodes(</span><span class="s4">'select'</span><span class="s1">);<span class="Apple-tab-span">	</span></span>// a shorter version of the above</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">{ 1 + 2 }.dump; </span>// this is a Function</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">{ 1 + 2 }.def.dump;<span class="Apple-tab-span">	</span></span>// get its FunctionDef</p>
-<p class="p8"><br></p>
-<p class="p9">{ 1 + 2 }.def.dumpByteCodes;<span class="Apple-tab-span">	</span><span class="s5">// dump its code.</span></p>
-<p class="p8"><br></p>
-<p class="p6"><br></p>
-<p class="p4"><b>Snooping in Windows</b></p>
-<p class="p10"><br></p>
-<p class="p9">(</p>
-<p class="p11">// create some windows to snoop in</p>
-<p class="p9">5.do({ <span class="s6">arg</span> i;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s6">var</span> w, b;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new(<span class="s3">"snoop "</span> ++ i.asString,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Rect</span>.new( 200 + 400.rand, 69 + 300.rand, 172, 90 ));</p>
-<p class="p9"><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b = <span class="s6">Button</span>.new( w, <span class="s6">Rect</span>.new( 23, 28, 127, 25 ));</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b.states = [[<span class="s3">"BLAM-O"</span>, <span class="s6">Color</span>.red]];</p>
-<p class="p9">}))</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s6">Window</span><span class="s1">.allWindows.dump;<span class="Apple-tab-span">	</span></span>// dump a list of all open SCWindows</p>
-<p class="p8"><br></p>
-<p class="p7">// a little more helpful, dump their names</p>
-<p class="p9"><span class="s6">Window</span>.allWindows.collect({ <span class="s2">arg</span> w; w.name }).postln;<span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p9">(</p>
-<p class="p7">// change background colors of all open windows</p>
-<p class="p9"><span class="s6">Window</span>.allWindows.do({ <span class="s2">arg</span> window;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>window.view.background = <span class="s2">Color</span>.new(0.5 + 0.5.rand, 0.5 + 0.5.rand, 0.5 + 0.5.rand);</p>
-<p class="p9">}))</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s6">Window</span><span class="s1">.closeAll; </span>// close all the windows (This will close the server windows)</p>
-<p class="p8"><br></p>
-<p class="p4"><b>Snooping in SynthDefs</b></p>
-<p class="p6"><br></p>
-<p class="p7">// First execute this:</p>
-<p class="p9">(</p>
-<p class="p12"><span class="s1">f = </span><span class="s2">SynthDef</span><span class="s1">(</span>"Help-SnoopSynthDef"<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">PinkNoise</span>.ar(0.1))</p>
-<p class="p9"><span class="Apple-tab-span">	</span>});</p>
-<p class="p9">)</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">f.dumpUGens;<span class="Apple-tab-span">	</span></span>// get the ugens, listed in order of execution, with rate, index and</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// inputs</p>
-<p class="p8"><br></p>
-<p class="p4"><b>Snooping in the Interpreter</b></p>
-<p class="p2"><br></p>
-<p class="p3">When evaluating text in the interpreter, the variable 'this' always refers to the interpreter.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">this</span><span class="s1">.dump;<span class="Apple-tab-span">	</span></span>// display the values of all the interpreter variables a-z</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">this</span><span class="s1">.clearAll;<span class="Apple-tab-span">	</span></span>// set all variables a-z to nil</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">g = </span><span class="s2">this</span><span class="s1">.compile(</span><span class="s3">"(1 + 2).postln"</span><span class="s1">);<span class="Apple-tab-span">	</span></span>// compile some text into a Function</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">g.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// see, g is a Function</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">g.value;<span class="Apple-tab-span">	</span></span>// evaluate g</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">this</span><span class="s1">.interpret(</span><span class="s3">"(1 + 2).postln"</span><span class="s1">);<span class="Apple-tab-span">	</span></span>// interpret some text</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">this</span><span class="s1">.interpretPrint(</span><span class="s3">"1 + 2"</span><span class="s1">);<span class="Apple-tab-span">	</span></span>// interpret some text and print the result</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Other Topics/Licensing.html b/Help/Other Topics/Licensing.html
deleted file mode 100644
index 6cc6cc9..0000000
--- a/Help/Other Topics/Licensing.html	
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Lucida Grande}
-p.p3 {margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {text-decoration: underline ; color: #0021e7}
-span.s3 {text-decoration: underline ; color: #0039da}
-</style>
-</head>
-<body>
-<p class="p1"><b>SuperCollider Licensing</b><span class="s1"> </span></p>
-<p class="p2">SuperCollider is copyright © James McCartney and many other contributors.</p>
-<p class="p3">SuperCollider is free software: you can redistribute it and/or modify it under the terms of the <b>GNU General Public License</b> as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p>
-<p class="p3">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.<span class="Apple-converted-space">  </span>See the GNU General Public License for more details.</p>
-<p class="p3">You should have received a copy of <a href="../../../COPYING"><span class="s2">the GNU General Public License</span></a> along with this program. If not, see <http://www.gnu.org/licenses/>.</p>
-<p class="p4"><br></p>
-<p class="p3">--</p>
-<p class="p3"><b>Some further notes:</b></p>
-<p class="p3">SuperCollider was originally published under the terms of <b><i>version 2 or later</i></b> of the GPL, but the application now includes some GPL3-licensed code. If you have a need specifically for GPL2 compatibility then it is possible to recompile SuperCollider from source without the GPL3 elements.</p>
-<p class="p3">SuperCollider's help documentation is published under <a href="HelpDocsLicensing.html"><span class="s3">a Creative Commons license</span></a>.</p>
-</body>
-</html>
diff --git a/Help/Other Topics/MultiChannel.html b/Help/Other Topics/MultiChannel.html
deleted file mode 100644
index 5c190be..0000000
--- a/Help/Other Topics/MultiChannel.html	
+++ /dev/null
@@ -1,202 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {color: #a71e12}
-span.s3 {color: #000000}
-span.s4 {font: 9.0px Helvetica}
-span.s5 {color: #606060}
-span.s6 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Multichannel Expansion</b></p>
-<p class="p2"><br></p>
-<p class="p3">Multiple channels of audio are represented as Arrays.</p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6">// one channel</p>
-<p class="p5">{ <span class="s1">Blip</span>.ar(800,4,0.1) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">// two channels</p>
-<p class="p5">{ [ <span class="s1">Blip</span>.ar(800,4,0.1), <span class="s1">WhiteNoise</span>.ar(0.1) ] }.play;</p>
-<p class="p8"><br></p>
-<p class="p3">Each channel of output will go out a different speaker, so your limit here is two for a stereo output. If you have a supported multi channel audio interface or card then you can output as many channels as the card supports.</p>
-<p class="p2"><br></p>
-<p class="p3">All UGens have only a single output. This uniformity facilitates the use of array operations to perform manipulation of multi channel structures.</p>
-<p class="p2"><br></p>
-<p class="p3">In order to implement multichannel output, UGens create a separate UGen known as an <b>OutputProxy</b> for each output. An OutputProxy is just a place holder for the output of a multichannel UGen. OutputProxies are created internally, you never need to create them yourself, but it is good to be aware that they exist so you'll know what they are when you run across them.</p>
-<p class="p2"><br></p>
-<p class="p6">// look at the outputs of Pan2:</p>
-<p class="p5"><span class="s1">Pan2</span>.ar(<span class="s1">PinkNoise</span>.ar(0.1), <span class="s1">FSinOsc</span>.kr(3)).dump;</p>
-<p class="p7"><br></p>
-<p class="p5">play({ <span class="s1">Pan2</span>.ar(<span class="s1">PinkNoise</span>.ar(0.1), <span class="s1">FSinOsc</span>.kr(1)); });</p>
-<p class="p2"><br></p>
-<p class="p3">When an <b>Array</b> is given as an input to a unit generator it causes an array of multiple copies of that unit generator to be made, each with a different value from the input array. This is called multichannel expansion. All but a few special unit generators perform multichannel expansion. Only Arrays are expanded, no other type of Collection, not even subclasses of Array.</p>
-<p class="p8"><br></p>
-<p class="p5">{ <span class="s1">Blip</span>.ar(500,8,0.1) }.play <span class="s2">// one channel</span></p>
-<p class="p7"><br></p>
-<p class="p6">// the array in the freq input causes an Array of 2 Blips to be created :</p>
-<p class="p5">{ <span class="s1">Blip</span>.ar([499,600],8,0.1) }.play <span class="s2">// two channels</span></p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s1">Blip</span><span class="s3">.ar(500,8,0.1).postln </span>// one unit generator created.</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s1">Blip</span><span class="s3">.ar([500,601],8,0.1).postln </span>// two unit generators created.</p>
-<p class="p8"><br></p>
-<p class="p3">Multichannel expansion will propagate through the expression graph. When a unit generator constructor is called with an array of inputs, it returns an array of instances. If that array is the input to another constructor, then another array is created, and so on.</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s1">RLPF</span>.ar(<span class="s1">Saw</span>.ar([100,250],0.05), <span class="s1">XLine</span>.kr(8000,400,5), 0.05) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">// the [100,250] array of frequency inputs to Saw causes Saw.ar to return<span class="Apple-converted-space"> </span></p>
-<p class="p6">// an array of two Saws, that array causes RLPF.ar to create two RLPFs.</p>
-<p class="p6">// Both RLPFs share a single instance of XLine.</p>
-<p class="p8"><br></p>
-<p class="p3">When a constructor is parameterized by two or more arrays, then the number of channels created is equal to the longest array, with parameters being pulled from each array in parallel. The shorter arrays will wrap.</p>
-<p class="p2"><br></p>
-<p class="p3">for example, the following:</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s1">Pulse</span>.ar([400, 500, 600],[0.5, 0.1], 0.2)</p>
-<p class="p8"><br></p>
-<p class="p3">is equivalent to:</p>
-<p class="p8"><br></p>
-<p class="p5">[ <span class="s1">Pulse</span>.ar(400,0.5,0.2), <span class="s1">Pulse</span>.ar(500,0.1,0.2), <span class="s1">Pulse</span>.ar(600,0.5,0.2) ]</p>
-<p class="p8"><br></p>
-<p class="p3">A more complex example based on the Saw example above is given below. In this example, the XLine is expanded to two instances, one going from 8000 Hz to 400 Hz and the other going in the opposite direction from 500 Hz to 7000 Hz. These two XLines are 'married' to the two Saw oscillators and used to parameterize two copies of RLPF. So on the left channel a 100 Hz Saw is filtered from 8000 Hz to 400 Hz and on the right channel a 250 Hz Saw is filtered from 500 Hz to 7000 Hz.</p>
-<p class="p8"><br></p>
-<p class="p5">{ <span class="s1">RLPF</span>.ar(<span class="s1">Saw</span>.ar([100,250],0.05), <span class="s1">XLine</span>.kr([8000,500],[400,7000],5), 0.05) }.play;</p>
-<p class="p8"><br></p>
-<p class="p3"><b>Protecting arrays against expansion</b></p>
-<p class="p3">Some unit generators such as <b>Klank</b> require arrays of values as inputs. Since all arrays are expanded, you need to protect some arrays by a <b>Ref</b> object. A Ref instance is an object with a single slot named 'value' that serves as a holder of an object. Ref.new(object) one way to create a Ref, but there is a syntactic shortcut. The backquote ` is a unary operator that is equivalent to calling Ref.new(something). So to protect arrays that are inputs to a Klank or similar UGens you write:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">Klank</span>.ar(`[[400,500,600],[1,2,1]], z)</p>
-<p class="p2"><br></p>
-<p class="p3">You can still create multiple Klanks by giving it an array of Ref'ed arrays.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">Klank</span>.ar([ `[[400,500,600],[1,2,1]],<span class="Apple-converted-space">  </span>`[[700,800,900],[1,2,1]] ], z)</p>
-<p class="p2"><br></p>
-<p class="p3">is equivalent to:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">[ </span><span class="s1">Klank</span>.ar(`[[400,500,600],[1,2,1]], z),<span class="Apple-converted-space">  </span><span class="s1">Klank</span>.ar(`[[700,800,900],[1,2,1]], z)]</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Reducing channel expansion with Mix</b></p>
-<p class="p3">The <b>Mix</b> object provides the means for reducing multichannel arrays to a single channel.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">Mix</span><span class="s3">.new([a, b, c]) </span>// array of channels</p>
-<p class="p8"><br></p>
-<p class="p3">is equivalent to:</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s3">a + b + c<span class="Apple-converted-space">  </span></span>// mixed to one</p>
-<p class="p8"><br></p>
-<p class="p3">Mix is more efficient than using + since it can perform multiple additions at a time. But the main advantage is that it can deal with situations where the number of channels is arbitrary or determined at runtime.</p>
-<p class="p2"><br></p>
-<p class="p6">// three channels of Pulse are mixed to one channel</p>
-<p class="p5">{ <span class="s1">Mix</span>.new(<span class="Apple-converted-space">  </span><span class="s1">Pulse</span>.ar([400, 501, 600], [0.5, 0.1], 0.1) ) }.play</p>
-<p class="p2"><br></p>
-<p class="p3">Multi channel expansion works differently for Mix. Mix takes one input which is an array (one not protected by a Ref). That array does not cause copies of Mix to be made. All elements of the array are mixed together in a single Mix object. On the other hand if the array contains one or more arrays then multi channel expansion is<span class="Apple-converted-space"> </span></p>
-<p class="p3">performed one level down. This allows you to mix an array of stereo (two element) arrays resulting in one two channel array. For example:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">Mix</span><span class="s3">.new( [ [a, b], [c, d], [e, f] ] ) </span>// input is an array of stereo pairs</p>
-<p class="p2"><br></p>
-<p class="p3">is equivalent to:</p>
-<p class="p2"><br></p>
-<p class="p6">// mixed to a single stereo pair</p>
-<p class="p5">[ <span class="s1">Mix</span>.new( [a, c, e] ), <span class="s1">Mix</span>.new( [b, d, f] ) ]<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Currently it is not recursive. You cannot use Mix on arrays of arrays of arrays.</p>
-<p class="p2"><br></p>
-<p class="p3">Here's a final example illustrating multi channel expansion and Mix. By changing the variable 'n' you can change the number of voices in the patch. How many voices can your machine handle?</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> n;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>n = 8; </span>// number of 'voices'</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s1">Mix</span><span class="s3">.new( </span>// mix all stereo pairs down.</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Pan2</span><span class="s3">.ar( </span>// pan the voice to a stereo position</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">CombL</span><span class="s3">.ar( </span>// a comb filter used as a string resonator</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Dust</span><span class="s3">.ar( </span>// random impulses as an excitation function</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// an array to cause expansion of Dust to n channels</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 1 means one impulse per second on average</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Array</span>.fill(n, 1),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3 </span>// amplitude</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01, </span>// max delay time in seconds</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// array of different random lengths for each 'string'</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Array</span>.fill(n, {0.004.rand+0.0003}),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 </span>// decay time in seconds</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Array</span><span class="s3">.fill(n,{1.0.rand2}) </span>// give each voice a different pan position</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p3"><b>Using flop for multichannel expansion</b></p>
-<p class="p3">The method <i>flop</i> swaps columns and rows, allowing to derive series of argument sets:</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p9">SynthDef<span class="s3">(</span><span class="s5">"help_multichannel"</span><span class="s3">, { </span>|out=0, freq=440, mod=0.1, modrange=20|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFPar</span>.kr(mod, 0, modrange) + freq</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s1">EnvGate</span>(0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).send(s);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> freq, mod, modrange;</p>
-<p class="p7"><br></p>
-<p class="p5">freq = <span class="s1">Array</span>.exprand(8, 400, 5000);</p>
-<p class="p5">mod = <span class="s1">Array</span>.exprand(8, 0.1, 2);</p>
-<p class="p5">modrange = <span class="s1">Array</span>.rand(8, 0.1, 40);</p>
-<p class="p7"><br></p>
-<p class="p5">fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s6">\freq</span>, freq, <span class="s6">\mod</span>, mod, <span class="s6">\modrange</span>, modrange].flop.do { <span class="s1">|args|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>args.postln;</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Synth</span><span class="s3">(</span>"help_multichannel"<span class="s3">, args);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">};</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p3">Similarly, <b>Function-flop</b> returns an unevaluated function that will expand to its arguments when evaluated:</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s5">"blip"</span>, { <span class="s1">|freq|</span> <span class="s1">Out</span>.ar(0, <span class="s1">Line</span>.ar(0.1, 0, 0.05, 1, 0, 2)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>* <span class="s1">Pulse</span>.ar(freq * [1, 1.02])) }).send(s);</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s3">a = { </span>|dur=1, x=1, n=10, freq=400|</p>
-<p class="p5"><span class="Apple-tab-span">	</span>fork { n.do {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(x.coin) { <span class="s1">Synth</span>(<span class="s5">"blip"</span>, [<span class="s6">\freq</span>, freq]) };</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(dur / n).wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>} }</p>
-<p class="p5">}.flop;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">a.value(5, [0.3, 0.3, 0.2], [12, 32, 64], [1000, 710, 700]);</p>
-<p class="p7"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/Other Topics/Non-Realtime-Synthesis.html b/Help/Other Topics/Non-Realtime-Synthesis.html
deleted file mode 100644
index 6e83605..0000000
--- a/Help/Other Topics/Non-Realtime-Synthesis.html	
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0019b7}
-span.s3 {color: #326f17}
-span.s4 {color: #606060}
-span.s5 {color: #0000ff}
-span.s6 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Non-Realtime Synthesis</b></p>
-<p class="p2"><br></p>
-<p class="p3">This documentation is initial.</p>
-<p class="p2"><br></p>
-<p class="p3">SuperCollider 3 supports non-realtime synthesis through the use of binary files of OSC commands.</p>
-<p class="p2"><br></p>
-<p class="p3">First create an OSC command file (i.e. a score)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">f = </span><span class="s2">File</span><span class="s1">(</span>"Cmds.osc"<span class="s1">,</span>"w"<span class="s1">);</span></p>
-<p class="p5"><br></p>
-<p class="p6">// start a sine oscillator at 0.2 seconds.</p>
-<p class="p7">c = [ 0.2, [<span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1001, 0, 0]].asRawOSC;</p>
-<p class="p6"><span class="s1">f.write(c.size); </span>// each bundle is preceeded by a 32 bit size.</p>
-<p class="p6"><span class="s1">f.write(c); </span>// write the bundle data.</p>
-<p class="p5"><br></p>
-<p class="p6">// stop sine oscillator at 3.0 seconds.</p>
-<p class="p7">c = [ 3.0, [<span class="s3">\n_free</span>, 1001]].asRawOSC;</p>
-<p class="p7">f.write(c.size);</p>
-<p class="p7">f.write(c);</p>
-<p class="p5"><br></p>
-<p class="p6">// scsynth stops processing immediately after the last command, so here is</p>
-<p class="p6">// a do-nothing command to mark the end of the command stream.</p>
-<p class="p7">c = [ 3.2, [<span class="s3">0</span>]].asRawOSC;</p>
-<p class="p7">f.write(c.size);</p>
-<p class="p7">f.write(c);</p>
-<p class="p5"><br></p>
-<p class="p7">f.close;</p>
-<p class="p2"><br></p>
-<p class="p6">// the 'NRTsine' SynthDef</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s4">"NRTsine"</span>,{ <span class="s2">arg</span> freq = 440;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s2">SinOsc</span>.ar(freq, 0, 0.2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).writeDefFile;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3">then on the command line (i.e. in Terminal):</p>
-<p class="p2"><br></p>
-<p class="p3">./scsynth -N Cmds.osc _ NRTout.aiff 44100 AIFF int16</p>
-<p class="p2"><br></p>
-<p class="p3">The command line arguments are:</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-converted-space">    </span>-N <cmd-filename> <input-filename> <output-filename> <sample-rate> <header-format> <sample-format> <span class="Apple-tab-span">	</span><...other scsynth arguments></p>
-<p class="p2"><br></p>
-<p class="p3">If you do not need an input sound file, then put "_" for the file name as in the example above.</p>
-<p class="p2"><br></p>
-<p class="p3">For details on other valid arguments to the scsynth app see <a href="../ServerArchitecture/Server-Architecture.html"><span class="s5">Server-Architecture</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3">This could be executed in SC as:</p>
-<p class="p2"><br></p>
-<p class="p4">"./scsynth -N Cmds.osc _ NRTout.aiff 44100 AIFF int16 -o 1"<span class="s1">.unixCmd; </span><span class="s6">// -o 1 is mono output</span></p>
-<p class="p2"><br></p>
-<p class="p3">A more powerful option is to use the <b>Score </b>object, which has convenience methods to create OSC command files and do nrt synthesis. See the <a href="../Control/Score.html"><span class="s5">Score</span></a><b> </b>helpfile for more details.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p7">x = [</p>
-<p class="p5"><br></p>
-<p class="p7">[0.0, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1000, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1413 ]],</p>
-<p class="p7">[0.1, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1001, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 712 ]],</p>
-<p class="p7">[0.2, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1002, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 417 ]],</p>
-<p class="p7">[0.3, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1003, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1238 ]],</p>
-<p class="p7">[0.4, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1004, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 996 ]],</p>
-<p class="p7">[0.5, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1005, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1320 ]],</p>
-<p class="p7">[0.6, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1006, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 864 ]],</p>
-<p class="p7">[0.7, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1007, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1033 ]],</p>
-<p class="p7">[0.8, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1008, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1693 ]],</p>
-<p class="p7">[0.9, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1009, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 410 ]],</p>
-<p class="p7">[1.0, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1010, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1349 ]],</p>
-<p class="p7">[1.1, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1011, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1449 ]],</p>
-<p class="p7">[1.2, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1012, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1603 ]],</p>
-<p class="p7">[1.3, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1013, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 333 ]],</p>
-<p class="p7">[1.4, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1014, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 678 ]],</p>
-<p class="p7">[1.5, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1015, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 503 ]],</p>
-<p class="p7">[1.6, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1016, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 820 ]],</p>
-<p class="p7">[1.7, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1017, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1599 ]],</p>
-<p class="p7">[1.8, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1018, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 968 ]],</p>
-<p class="p7">[1.9, [ <span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1019, 0, 0,<span class="Apple-converted-space">  </span><span class="s3">\freq</span>, 1347 ]],</p>
-<p class="p5"><br></p>
-<p class="p7">[3.0, [<span class="s3">\c_set</span>, 0, 0]]<span class="Apple-converted-space"> </span></p>
-<p class="p7">];</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p3">You can then use Score.write to convert the above to the OSC command file as follows:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">Score</span><span class="s1">.write(x, </span>"score-test.osc"<span class="s1">);</span></p>
-<p class="p4">"./scsynth -N score-test.osc _ score-test.aiff 44100 AIFF int16 -o 1"<span class="s1">.unixCmd;</span></p>
-<p class="p2"><br></p>
-<p class="p3">Score also provides methods to do nrt synthesis directly:</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> f, o;</p>
-<p class="p7">g = [</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[0.1, [<span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1000, 0, 0, <span class="s3">\freq</span>, 440]],<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>[0.2, [<span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1001, 0, 0, <span class="s3">\freq</span>, 660]],</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[0.3, [<span class="s3">\s_new</span>, <span class="s3">\NRTsine</span>, 1002, 0, 0, <span class="s3">\freq</span>, 220]],</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[1, [<span class="s3">\c_set</span>, 0, 0]]</p>
-<p class="p7"><span class="Apple-tab-span">	</span>];</p>
-<p class="p7">o = <span class="s2">ServerOptions</span>.new.numOutputBusChannels = 1; <span class="s6">// mono output</span></p>
-<p class="p4"><span class="s2">Score</span><span class="s1">.recordNRT(g, </span>"help-oscFile.osc"<span class="s1">, </span>"helpNRT.aiff"<span class="s1">, options: o); </span><span class="s6">// synthesize</span></p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/Other Topics/Randomness.html b/Help/Other Topics/Randomness.html
deleted file mode 100644
index e1e7c68..0000000
--- a/Help/Other Topics/Randomness.html	
+++ /dev/null
@@ -1,453 +0,0 @@
-<html><head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #882917}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ba1100}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0027ee}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0027ee}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001fbf}
-span.s1 {color: #000000}
-span.s2 {color: #882917}
-span.s3 {color: #0036ad}
-span.s4 {color: #0042f1}
-span.s5 {color: #001fbf}
-span.s6 {color: #606060}
-span.s7 {color: #4f6926}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {color: #ba1100}
-span.s10 {text-decoration: underline}
-span.s11 {text-decoration: underline ; color: #0000ff}
-span.s12 {text-decoration: underline ; color: #0027ee}
-span.s13 {color: #002aff}
-span.s14 {font: 9.0px Monaco; text-decoration: underline}
-span.s15 {color: #1d7008}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
-<p class="p1"><span class="Apple-style-span" style="font-size: 18px; font-weight: bold; ">Randomness in SC</span><br></p>
-<p class="p1"><br></p>
-<p class="p3">As in any computer program, there are no "truly random" number generators in SC.<span class="Apple-converted-space"> </span></p>
-<p class="p3">They are pseudo-random, meaning they use very complex, but deterministic<span class="Apple-converted-space"> </span></p>
-<p class="p3">algorithms to generate sequences of numbers that are long enough and complicated enough<span class="Apple-converted-space"> </span></p>
-<p class="p3">to seem "random" for human beings. (i.e. the patterns are too complex for us to detect.)</p>
-<p class="p1"><br></p>
-<p class="p3">If you start a random number generator algorithm with the same "seed" number<span class="Apple-converted-space"> </span></p>
-<p class="p3">several times, you get the same sequence of random numbers.<span class="Apple-converted-space"> </span></p>
-<p class="p3">(See example below, <i>randomSeed</i>)</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Create single random numbers:</b></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>1. Between zero and <number>:</b></p>
-<p class="p1"><br></p>
-<p class="p5"><span class="s1">5.rand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// evenly distributed.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">1.0.linrand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// probability decreases linearly from 0 to <number>.</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>2. Between -<number> and <number>:</b></p>
-<p class="p1"><br></p>
-<p class="p5"><span class="s1">5.0.rand2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// evenly distributed.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">10.bilinrand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// probability is highest around 0,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// decreases linearly toward +-<number>.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">1.0.sum3rand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// quasi-gaussian, bell-shaped distribution.</p>
-<p class="p1"><br></p>
-<p class="p3"><b>3. Within a given range:</b></p>
-<p class="p1"><br></p>
-<p class="p5"><span class="s1">rrand(24, 48)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// linear distribution in the given range.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">exprand(0.01, 1)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// exponential distribution;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// both numbers must have the same sign.</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>Test them multiple times with a do loop:</b></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p7">20.do({ 5.rand.postln; });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">// evenly distributed</span></p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">20.do({ 1.0.linrand.postln; });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// probability decreases linearly from 0 to 1.0</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">20.do({ 5.0.rand2.postln; });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">// even</span></p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">20.do({ 10.bilinrand.postln; });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// probability is highest around 0,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// decreases linearly toward +-<number>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7">20.do({ 1.0.sum3rand.postln; });<span class="Apple-tab-span">	</span><span class="s2">// quasi-gaussian, bell-shaped.</span></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>Collect the results in an array:</b></p>
-<p class="p1"><br></p>
-<p class="p7"><span class="s3">Array</span>.fill(10, { 1000.linrand }).postln;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p5">// or more compact:<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7">{ 1.0.sum3rand }.dup(100)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p5">// or:</p>
-<p class="p6"><br></p>
-<p class="p7">({ 1.0.sum3rand } ! 100)</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>You can seed a random generator in order to repeat<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>the same sequence of random numbers:</b></p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p7">5.do({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">thisThread</span>.randSeed = 4;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Array</span>.fill(10, { 1000.linrand}).postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7">});</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// Just to check, no seeding:</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">5.do({ <span class="s3">Array</span>.fill(10, { 1000.linrand }).postln; });</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// see also <a href="../Core/Kernel/randomSeed.html"><span class="s4">randomSeed</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>Demonstrate the various statistical distributions visually, with histograms:</b></p>
-<p class="p1"><br></p>
-<p class="p3">[plot may not work in non-Mac SC3 versions.]</p>
-<p class="p1"><br></p>
-<p class="p7"><span class="s5">Array</span>.fill(500, {<span class="Apple-converted-space">  </span>1.0.rand }).plot(<span class="s6">"Sequence of 500x 1.0.rand"</span>);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s5">Array</span>.fill(500, {<span class="Apple-converted-space">  </span>1.0.linrand }).plot(<span class="s6">"Sequence of 500x 1.0.linrand"</span>);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s5">Array</span>.fill(500, {<span class="Apple-converted-space">  </span>1.0.sum3rand }).plot(<span class="s6">"Sequence of 500x 1.0.sum3rand"</span>);</p>
-<p class="p6"><br></p>
-<p class="p8">// Use a histogram to display how often each (integer)<span class="Apple-converted-space"> </span></p>
-<p class="p8">// occurs in a collection of random numbers, :</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">var</span> randomNumbers, histogram, maxValue = 500, numVals = 10000, numBins = 500;</p>
-<p class="p6"><br></p>
-<p class="p7">randomNumbers = <span class="s5">Array</span>.fill(numVals, { maxValue.rand; });</p>
-<p class="p7">histogram = randomNumbers.histo(numBins, 0, maxValue);</p>
-<p class="p7">histogram.plot(<span class="s6">"histogram for rand 0 - "</span> ++ maxValue);</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>A histogram for linrand:</b></p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">var</span> randomNumbers, histogram, maxValue = 500.0, numVals = 10000, numBins = 500;</p>
-<p class="p6"><br></p>
-<p class="p7">randomNumbers = <span class="s5">Array</span>.fill(numVals, { maxValue.linrand; });</p>
-<p class="p7">histogram = randomNumbers.histo(numBins, 0, maxValue);</p>
-<p class="p7">histogram.plot(<span class="s6">"histogram for linrand 0 - "</span> ++ maxValue);</p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p3"><b>A histogram for bilinrand:</b></p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">var</span> randomNumbers, histogram, minValue = -250, maxValue = 250, numVals = 10000, numBins = 500;</p>
-<p class="p6"><br></p>
-<p class="p7">randomNumbers = <span class="s5">Array</span>.fill(numVals, { maxValue.bilinrand; });</p>
-<p class="p7">histogram = randomNumbers.histo(numBins, minValue, maxValue);</p>
-<p class="p7">histogram.plot(<span class="s6">"histogram for bilinrand"</span> + minValue + <span class="s6">"to"</span> + maxValue);</p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>A histogram for exprand:</b></p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">var</span> randomNumbers, histogram, minValue = 5.0, maxValue = 500, numVals = 10000, numBins = 500;</p>
-<p class="p6"><br></p>
-<p class="p7">randomNumbers = <span class="s5">Array</span>.fill(numVals, { exprand(minValue, maxValue); });</p>
-<p class="p7">histogram = randomNumbers.histo(numBins, minValue, maxValue);</p>
-<p class="p7">histogram.plot(<span class="s6">"histogram for exprand: "</span> ++ minValue ++ <span class="s6">" to "</span> ++ maxValue);</p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>And for sum3rand (cheap quasi-gaussian):</b></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">var</span> randomNumbers, histogram, minValue = -250, maxValue = 250, numVals = 10000, numBins = 500;</p>
-<p class="p6"><br></p>
-<p class="p7">randomNumbers = <span class="s5">Array</span>.fill(numVals, { maxValue.sum3rand; });</p>
-<p class="p7">histogram = randomNumbers.histo(numBins, minValue, maxValue);</p>
-<p class="p7">histogram.plot(<span class="s6">"histogram for sum3rand "</span> ++ minValue ++ <span class="s6">" to "</span> ++ maxValue);</p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3">All of the single-number methods also work for (Sequenceable)Collections,<span class="Apple-converted-space"> </span></p>
-<p class="p3">simply by applying the given random message to each element of the collection:</p>
-<p class="p1"><br></p>
-<p class="p5"><span class="s1">[ 1.0, 10, 100.0, </span><span class="s7">\aSymbol</span><span class="s1"> ].rand.postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// note: Symbols are left as they are.</p>
-<p class="p7"><span class="s3">List</span>[ 10, -3.0, <span class="s7">\aSymbol</span> ].sum3rand.postln;</p>
-<p class="p6"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>Arbitrary random distributions</b></p>
-<p class="p1"><br></p>
-<p class="p3">An <i>integral table</i> can be used to create an arbitrary random distribution quite efficiently. The table</p>
-<p class="p3">building is expensive though. The more points there are in the random table, the more accurate the</p>
-<p class="p3">distribution.</p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">var</span> randomNumbers, histogram, distribution, randomTable, randTableSize=200;</p>
-<p class="p7"><span class="s5">var</span> minValue = -250, maxValue = 250, numVals = 10000, numBins = 500;</p>
-<p class="p6"><br></p>
-<p class="p8">// create some random distribution with values between 0 and 1</p>
-<p class="p7">distribution = <span class="s5">Array</span>.fill(randTableSize,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> i; (i/ randTableSize * 35).sin.max(0) * (i / randTableSize) }</p>
-<p class="p7">);</p>
-<p class="p6"><br></p>
-<p class="p8">// render a randomTable</p>
-<p class="p7">randomTable = distribution.asRandomTable;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p8">// get random numbers, scale them</p>
-<p class="p6"><br></p>
-<p class="p7">randomNumbers = <span class="s5">Array</span>.fill(numVals, { randomTable.tableRand * (maxValue - minValue) + minValue; });<span class="Apple-converted-space"> </span></p>
-<p class="p7">histogram = randomNumbers.histo(numBins, minValue, maxValue);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p9"><span class="s1">histogram.plot(</span>"this is the histogram we got"<span class="s1">);</span></p>
-<p class="p9"><span class="s1">distribution.plot(</span>"this was the histogram we wanted"<span class="s1">);</span></p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Random decisions:</b></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>coin</b> <span class="Apple-tab-span">	</span>simulates a coin toss and results in true or false.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0 is always true, 0.0 is always false, 0.5 is 50:50 chance.</p>
-<p class="p1"><br></p>
-<p class="p7">20.do({ 0.5.coin.postln });</p>
-<p class="p1"><br></p>
-<p class="p3">biased random decision can be simulated bygenerating a single value<span class="Apple-converted-space"> </span></p>
-<p class="p3">and check against a threshhold:</p>
-<p class="p1"><br></p>
-<p class="p7">20.do({ (1.0.linrand > 0.5).postln });</p>
-<p class="p7">20.do({ (exprand(0.05, 1.0) > 0.5).postln });</p>
-<p class="p1"><br></p>
-<p class="p4"><b>Generating Collections of random numbers:</b></p>
-<p class="p1"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// size, minVal, maxVal<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s5">Array</span>.rand(7, 0.0, 1.0).postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p8">// is short for:</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s5">Array</span>.fill(7, { rrand(0.0, 1.0) }).postln;<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// size, minVal, maxVal<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s5">List</span>.linrand(7, 10.0, 15.0).postln;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p8">// is short for:</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s5">List</span>.fill(7, { 10 + 5.0.linrand }).postln;<span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s5">Signal</span>.exprand(10, 0.1, 1);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s5">Signal</span>.rand2(10, 1.0);</p>
-<p class="p6"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Random choice from Collections</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>choose </b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>equal chance for each element.</p>
-<p class="p1"><br></p>
-<p class="p7">10.do({ [ 1, 2, 3 ].choose.postln });<span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>Weighted choice:</b></p>
-<p class="p1"><br></p>
-<p class="p3"><b>wchoose(weights)</b><span class="Apple-tab-span">	</span>An array of weights sets the chance for each element.</p>
-<p class="p1"><br></p>
-<p class="p7">10.do({ [ 1, 2, 3 ].wchoose([0.1, 0.2, 0.7]).postln });<span class="Apple-tab-span">	</span></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Randomize the order of a Collection:<span class="Apple-converted-space"> </span></b><span class="s8"><span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><br></p>
-<p class="p3"><b>scramble</b></p>
-<p class="p1"><br></p>
-<p class="p7"><span class="s5">List</span>[ 1, 2, 3, 4, 5 ].scramble.postln;</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Generate random numbers without duplicates:<span class="Apple-converted-space"> </span></b><span class="s8"><span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><br></p>
-<p class="p7">f = { <span class="s5">|n=8, min=0, max=7|</span> (min..max).scramble.keep(n) };</p>
-<p class="p7">f.value(8, 0, 7)</p>
-<p class="p6"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Randomly group a Collection:<span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><br></p>
-<p class="p3"><b>curdle(probability)</b></p>
-<p class="p1"><br></p>
-<p class="p3">The probability argument sets the chance that two adjacent elements will be separated.</p>
-<p class="p1"><br></p>
-<p class="p7">[ 1, 2, 3, 4, 5, 6, 7, 8 ].curdle(0.2).postln;<span class="Apple-tab-span">	</span><span class="s9">// big groups</span></p>
-<p class="p6"><br></p>
-<p class="p7">[ 1, 2, 3, 4, 5, 6, 7, 8 ].curdle(0.75).postln;<span class="Apple-tab-span">	</span><span class="s9">// small groups</span></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Random signal generators, i.e. UGens:</b></p>
-<p class="p1"><br></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/PinkNoise.html">PinkNoise</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/WhiteNoise.html">WhiteNoise</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/GrayNoise.html">GrayNoise</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/BrownNoise.html">BrownNoise</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/PinkerNoise.html">PinkerNoise</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/ClipNoise.html">ClipNoise</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/LFNoise0.html">LFNoise0</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/LFNoise1.html">LFNoise1</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/LFNoise2.html">LFNoise2</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/LFClipNoise.html">LFClipNoise</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/LFDNoise0.html">LFDNoise0</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/LFDNoise1.html">LFDNoise1</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/LFDNoise3.html">LFDNoise3</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/LFDClipNoise.html">LFDClipNoise</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/Dust.html">Dust</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/Dust2.html">Dust2</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Noise/Crackle.html">Crackle</a></span></p>
-<p class="p11"><span class="s10"><a href="../UGens/Triggers/TWChoose.html">TWChoose<span class="s11"></span></a></span></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>UGens that generate random numbers once, or on trigger:</b></p>
-<p class="p1"><br></p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/Rand.html">Rand</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>uniform distribution of float between (lo, hi), as for numbers.</p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/IRand.html">IRand</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>uniform distribution of integer numbers.</p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/TRand.html">TRand</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>uniform distribution of float numbers, triggered</p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/TIRand.html">TIRand</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>uniform distribution of integer numbers, triggered</p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/LinRand.html">LinRand</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>skewed distribution of float numbers, triggered</p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/NRand.html">NRand</a></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sum of n uniform distributions, approximates gaussian distr. with higher n.</p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/ExpRand.html">ExpRand</a></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponential distribution</p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/TExpRand.html">TExpRand</a></span><span class="Apple-tab-span">	</span>exponential distribution, triggered</p>
-<p class="p3"><span class="s12"><a href="../UGens/Random/CoinGate.html">CoinGate</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>statistical gate for a trigger</p>
-<p class="p3"><span class="s12"><a href="../UGens/Triggers/TWindex.html">TWindex</a></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>triggered weighted choice between a list</p>
-<p class="p1"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Like using randSeed to set the random generatorsfor each thread in sclang, <span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>you can choose which of several random generators on the server to use,</p>
-<p class="p3"><span class="Apple-tab-span">	</span>and you can reset (seed) these random generators:<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Random/RandID.html">RandID</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Random/RandSeed.html">RandSeed</a></span></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><b>UGens that generate random numbers on demand ("Demand UGens"):</b></p>
-<p class="p1"><br></p>
-<p class="p10"><span class="s10"><a href="../UGens/Synth control/Demand Rate/Dwhite.html">Dwhite</a></span></p>
-<p class="p10"><span class="s10"><a href="../UGens/Synth control/Demand Rate/Dbrown.html">Dbrown</a></span></p>
-<p class="p3">Diwhite</p>
-<p class="p3">Dibrown</p>
-<p class="p10"><span class="s10"><a href="../UGens/Synth control/Demand Rate/Drand.html">Drand</a></span></p>
-<p class="p3">Dxrand</p>
-<p class="p1"><br></p>
-<p class="p3">see random patterns with analogous names</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4"><b>Random Patterns:<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p8"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Prand.html">Prand</a></span><span class="s1">([ 1, 2, 3 ], </span><span class="s5">inf</span><span class="s1">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// choose randomly one from a list ( list, numRepeats)</p>
-<p class="p8"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Pxrand.html">Pxrand</a></span><span class="s1">([ 1, 2, 3 ]);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// choose one element from a list, no repeat of previous choice</p>
-<p class="p8"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Pwhite.html">Pwhite</a></span><span class="s1">(24, 72);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// within range [<hi>, <lo>], choose a random value.</p>
-<p class="p8"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Pbrown.html">Pbrown</a></span><span class="s1">(24, 72, 5)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// within range [<hi>, <lo>], do a random walk</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// with a maximum <step> to the next value.</p>
-<p class="p8"><span class="s5">Pgbrown</span><span class="s1">(24, 72, 1.4)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// geometric brownian motion</p>
-<p class="p6"><br></p>
-<p class="p12"><span class="s10"><a href="../Streams-Patterns-Events/Patterns/Plprand.html">Plprand</a></span><span class="s13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></span></p>
-<p class="p12"><span class="s10"><a href="../Streams-Patterns-Events/Patterns/Phprand.html">Phprand<span class="s14"></span></a></span></p>
-<p class="p12"><span class="s10"><a href="../Streams-Patterns-Events/Patterns/Pmeanrand.html">Pmeanrand<span class="s14"></span></a></span></p>
-<p class="p12"><span class="s10"><a href="../Streams-Patterns-Events/Patterns/Pbeta.html">Pbeta<span class="s14"></span></a></span></p>
-<p class="p12"><span class="s10"><a href="../Streams-Patterns-Events/Patterns/Pcauchy.html">Pcauchy<span class="s14"></span></a></span></p>
-<p class="p12"><span class="s10"><a href="../Streams-Patterns-Events/Patterns/Pgauss.html">Pgauss<span class="s14"></span></a></span></p>
-<p class="p12"><span class="s10"><a href="../Streams-Patterns-Events/Patterns/Ppoisson.html">Ppoisson<span class="s14"></span></a></span></p>
-<p class="p12"><span class="s10"><a href="../Streams-Patterns-Events/Patterns/Pexprand.html">Pexprand<span class="s14"></span></a></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Pwrand.html">Pwrand</a></span><span class="s1">([ 1, 2, 3 ], [0.1, 0.3, 0.6], 20);<span class="Apple-tab-span">	</span></span>// choose from a list, probabilities by weights</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Pshuf.html">Pshuf</a></span><span class="s1">([ 1, 2, 3, 4 ], 2);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scramble the list, then repeat that order <repeats> times.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Pwalk.html">Pwalk</a></span>( (0 .. 10), <span class="s5">Prand</span>([ -2,-1, 1, 2], <span class="s5">inf</span>));<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// random walk.<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Pfsm.html">Pfsm</a></span><span class="s1"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// random finite state machine pattern, see its help file.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// see also MarkovSet in MathLib quark</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s12"><a href="../Streams-Patterns-Events/Patterns/Pseed.html">Pseed</a></span><span class="s1">(seed, pattern)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sets the random seed for that stream.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8">// some basic examples</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">Pbind</span>(<span class="s15">\note</span>, <span class="s5">Prand</span>([ 0, 2, 4 ], <span class="s5">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\dur</span>, 0.2</p>
-<p class="p7">).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p13">Pbind<span class="s1">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\note</span>, <span class="s5">Pxrand</span>([ 0, 2, 4 ], <span class="s5">inf</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\dur</span>, 0.2</p>
-<p class="p7">).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p13">Pbind<span class="s1">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\note</span>, <span class="s5">Pwrand</span>([ 0, 2, 4 ], [0.1, 0.3, 0.6], <span class="s5">inf</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\dur</span>, 0.2</p>
-<p class="p7">).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p13">Pbind<span class="s1">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\midinote</span>, <span class="s5">Pwhite</span>(48, 72, <span class="s5">inf</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\dur</span>, 0.2</p>
-<p class="p7">).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p13">Pbind<span class="s1">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\midinote</span>, <span class="s5">Pbrown</span>(48, 72, 5, <span class="s5">inf</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\dur</span>, 0.2</p>
-<p class="p7">).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p13">Pbind<span class="s1">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\midinote</span>, <span class="s5">Pgbrown</span>(48, 72, 0.5, <span class="s5">inf</span>).round,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s15">\dur</span>, 0.2</p>
-<p class="p7">).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-
-
-</body></html>
\ No newline at end of file
diff --git a/Help/Other Topics/Shortcuts.html b/Help/Other Topics/Shortcuts.html
deleted file mode 100644
index b2b59fb..0000000
--- a/Help/Other Topics/Shortcuts.html	
+++ /dev/null
@@ -1,1154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 16.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times; color: #0020de}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 16.0px Times}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times; min-height: 19.0px}
-span.s1 {text-decoration: underline}
-table.t1 {border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080; border-collapse: collapse}
-td.td1 {width: 286.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080}
-td.td2 {width: 251.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080}
-td.td3 {width: 214.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080}
-td.td4 {width: 151.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080}
-td.td5 {width: 248.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080}
-td.td6 {width: 1306.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080}
-</style>
-</head>
-<body>
-<p class="p1"><b>Keyboard Shortcuts for SuperCollider</b></p>
-<table cellspacing="0" cellpadding="0" class="t1">
-<tbody>
-<tr>
-<td valign="top" class="td1">
-<p class="p2"><b>Functions</b></p>
-</td>
-<td valign="top" class="td2">
-<p class="p2"><b>OSX</b></p>
-</td>
-<td valign="top" class="td3">
-<p class="p2"><b>Win (PsyCollider)</b></p>
-</td>
-<td valign="top" class="td4">
-<p class="p3"><a href="http://artfwo.googlepages.com/sced"><b>sced</b></a></p>
-</td>
-<td valign="top" class="td4">
-<p class="p3"><a href="http://www.neisis.net/%7Ealex/scvim/"><b>scvim</b></a></p>
-</td>
-<td valign="top" class="td5">
-<p class="p3"><span class="s1"><a href="../Linux/EmacsEditor.html"><b>Emacs (scel)</b></a></span></p>
-</td>
-</tr>
-<tr>
-<td colspan="6" valign="top" class="td6">
-<p class="p4"><b>Language-Specific Commands:</b></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Interpret Selection</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">enter, ctl-c, ctl-return, shift-return</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-enter</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-e</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">F5</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c C-d / C-c C-c</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Interpret current line</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">enter, ctl-c, ctl-return, shift-return</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-enter</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-e</p>
-</td>
-<td valign="middle" class="td4">
-<p class="p2">F6</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c C-c</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Interactively evaluate expression...</p>
-</td>
-<td valign="top" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c C-e</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Evaluate defun or code-block</p>
-</td>
-<td valign="top" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-M-x</p>
-</td>
-</tr>
-
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Evaluate current document</p>
-</td>
-<td valign="top" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c C-f</p>
-</td>
-</tr>
-
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Stop</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-.</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">alt-.</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">escape</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">F12</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c C-s</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">TempoClock.default.clear</p>
-</td>
-<td valign="middle" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">F7</p>
-</td>
-<td valign="middle" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">s.freeAll</p>
-</td>
-<td valign="middle" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">F8</p>
-</td>
-<td valign="middle" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Run Main-run</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-r</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">alt-r</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c C-r</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Recompile library</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-k</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">alt-k</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p2">:SClangStart</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c C-l</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Stop interpreter</p>
-</td>
-<td valign="top" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p2">:SClangKill</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">M-x sclang-stop</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Clear post window</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-sh-c</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">alt-p</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c <</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Open Help File</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-d</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">F1</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-u</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">K or :SChelp</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c C-h</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Open Class Definition (look up class file, either Class name or Class:method) e.g. Object, Object:dump</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-j</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">alt-j</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-y</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">^k or :SCdef</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c :</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Implementations of (which objects have code that defines methods, e.g. 'play')</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-y</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">alt-y</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c :</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">References to (where in the source files is e.g. the method 'play' used?)</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-sh-Y</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">alt-sh-Y</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-c ;</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p2">Dump interface</p>
-</td>
-<td valign="middle" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td5">
-<p class="p2">C-c [</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p2">Dump full interface</p>
-</td>
-<td valign="middle" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td5">
-<p class="p2">C-c {</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p2">Show method arguments</p>
-</td>
-<td valign="middle" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td5">
-<p class="p2">C-c C-m / C-c RET</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p2">Autocomplete keyword</p>
-</td>
-<td valign="middle" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td5">
-<p class="p2">C-c C-n / M-TAB</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td1">
-<p class="p2">Show server panels</p>
-</td>
-<td valign="middle" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td5">
-<p class="p2">C-c C-p p</p>
-</td>
-</tr>
-<tr>
-<td colspan="6" valign="top" class="td6">
-<p class="p4"><b>Files:</b></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Open text document</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-o</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-o</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-o</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">:e</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-x C-f</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">New text document</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-n</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-n</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-n</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">:enew</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">(open non-existent file w. new name)</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Close text document</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-w</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-w</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-w</p>
-</td>
-<td valign="middle" class="td4">
-<p class="p2">:close</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-x k</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Save text document</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-s</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-s</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-s</p>
-</td>
-<td valign="middle" class="td4">
-<p class="p2">:w</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-x C-s</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Save text document as</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-sh-s</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-sh-s</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-sh-s</p>
-</td>
-<td valign="middle" class="td4">
-<p class="p2">:sav</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-x C-w</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">HTML doc window => code win</p>
-</td>
-<td valign="top" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-t</p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">E</p>
-</td>
-</tr>
-<tr>
-<td colspan="6" valign="top" class="td6">
-<p class="p4"><b>Text Editing:</b></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Undo</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-z</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-z</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-z</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">u</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-x u / C-_</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Redo</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-sh-Z</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-y</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-sh-z</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">^R</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-x u / C-_</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Copy</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-c</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-c</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-c</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">"+y</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">M-w</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Paste</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-v</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-v</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-v</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">"+gP</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-y</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Cut</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-x</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-x</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-x</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">"+x</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-w</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Select all</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-a</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-a</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-a</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ggVG</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-x a</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Select block</p>
-</td>
-<td valign="top" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-b</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Goto line ...</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-,</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-i</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">(linenumber)G</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">M-g g</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Find ...</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-f</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-f</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">/ or *</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-s</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Find next</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-g</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-g</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">*</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-s</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Find previous</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-d</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-sh-g</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">#</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-r</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Replace and find next</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-l</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">M-%</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Replace</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-=</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">ctl-h</p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">M-,</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Copy text style only</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-alt-c</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Paste text style only</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-alt-v</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td colspan="6" valign="top" class="td6">
-<p class="p4"><b>Formatting:</b></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Syntax Colorise</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-'</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">auto</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">auto</p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">auto</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">auto</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Balance (find next matched parens/curly braces and select everything enclosed)</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-sh-B</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-<space>, C-M-f</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Balance backwards (find previous matched parens/curly braces and select everything enclosed)</p>
-</td>
-<td valign="top" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">C-<space>, C-M-b</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Paren match highlight</p>
-</td>
-<td valign="top" class="td2">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p2">auto</p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">auto with option Paren-Match-Highlighting</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Comment (add // in front)</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-/</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-/</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">(select text and) M-;</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Uncomment (remove //s)</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-sh-/</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-sh-/</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">(select text and) M-;</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Indent / Shift left (move selected text by one tab)</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-[</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-t, tab</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p2">TAB (auto-aligns tabs according to code)</p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Unindent / Shift right (by one tab)</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-]</p>
-</td>
-<td valign="top" class="td3">
-<p class="p2">ctl-sh-t, shift-tab</p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Insert (): enclose selected text with (txt)</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-(</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Insert []: enclose selected text with [txt]</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-alt-[</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Insert {}: enclose selected text with {txt}</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-{</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-<tr>
-<td valign="top" class="td1">
-<p class="p2">Insert /* */: enclose selected text with /*txt*/</p>
-</td>
-<td valign="top" class="td2">
-<p class="p2">cmd-*</p>
-</td>
-<td valign="top" class="td3">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="middle" class="td4">
-<p class="p5"><br></p>
-</td>
-<td valign="top" class="td5">
-<p class="p5"><br></p>
-</td>
-</tr>
-</tbody>
-</table>
-</body>
-</html>
diff --git a/Help/Other Topics/Tracing Processes.html b/Help/Other Topics/Tracing Processes.html
deleted file mode 100644
index 34bb15f..0000000
--- a/Help/Other Topics/Tracing Processes.html	
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #606060}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #0000bf}
-span.s9 {color: #0000bf}
-span.s10 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Tracing processes in SC</b></p>
-<p class="p2"><br></p>
-<p class="p3">What goes on in a running system? In SC, various methods help to get information about processes on different levels: server side and client side (in sclang).</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">related:<span class="Apple-converted-space">  </span><a href="../Language/Debugging-tips.html"><span class="s2">Debugging-tips</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Tracing sclang processes:</b></p>
-<p class="p6"><br></p>
-<p class="p3">In order to know more about objects as they are created by processes like tasks or even simply by evaluating a bit of code, one can insert messages like postln and postcs anywhere in the code.</p>
-<p class="p6"><br></p>
-<p class="p7">// calculating the sum of n subsequent squares</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> n = 8, x = 0;</p>
-<p class="p8">(1..n).do { <span class="s3">|num|</span> x = x + num.squared };</p>
-<p class="p8">x</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p7">// what happens while we are doing this?</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> n = 8, x = 0;</p>
-<p class="p8">(1..n).do { <span class="s3">|num|</span> x = x + num.squared.postln; };</p>
-<p class="p8">x</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p7">// or more in detail:</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> n = 8, x = 0;</p>
-<p class="p8">(1..n).do { <span class="s3">|num|</span> [<span class="s4">\before</span>, x].postln; x = x + num.squared; [<span class="s4">\after</span>, x].postln;};</p>
-<p class="p8">x</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p7">// when posting several values, some more verbose posts can be useful.</p>
-<p class="p7">// postf formats a string and inserts values for %-characters.</p>
-<p class="p7">// here separate statements are needed.</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> n = 8, x = 0;</p>
-<p class="p8">(1..n).do { <span class="s3">|num|</span> x = x + num.squared; <span class="s5">"num: % num-squared: % new x: %\n"</span>.postf(num, num.squared, x) };</p>
-<p class="p8">x</p>
-<p class="p8">)<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p7">// in some cases, postln will only post part of the data, or a simplified</p>
-<p class="p7">// representation.</p>
-<p class="p9"><br></p>
-<p class="p7">// n times 200 random numbers</p>
-<p class="p7">// will just add ... etc ... after 123</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> n = 3;</p>
-<p class="p8">(1..n).do { <span class="s3">|num|</span> { 1000.rand }.dup(200).postln };</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p7">// posts the compile string, i.e. the code needed to recreate the receiver (here the array)</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">var</span> n = 3;</p>
-<p class="p8">(1..n).do { <span class="s3">|num|</span> { num.rand }.dup(200).postcs };</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p7">// in streams, tasks and routines, this works just as well:</p>
-<p class="p8">(</p>
-<p class="p8">fork {<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> n = 14;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(1..n).do { <span class="s3">|num|</span><span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ num.rand }.dup(200).postcs;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">}</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8">fork {<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> str = <span class="s3">Routine</span> { <span class="s3">|in|</span> 10.do { in = in.rand.yield } };</p>
-<p class="p8"><span class="Apple-tab-span">	</span>12.0.do { <span class="s3">|i|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>str.next(i).postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">}</p>
-<p class="p8">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p7">// for creating a pattern that once it is used posts its values,</p>
-<p class="p7">// the message trace can be used (in returns a Ptrace)</p>
-<p class="p9"><br></p>
-<p class="p8">a = <span class="s3">Pseq</span>([1, 4, 1, <span class="s3">Pwhite</span>(0, 6, 3), 100, 39], <span class="s3">inf</span>).trace(prefix: <span class="s5">"value: "</span>);</p>
-<p class="p8">b = a.asStream;</p>
-<p class="p8">b.next;</p>
-<p class="p8">b.next;</p>
-<p class="p8">b.next;</p>
-<p class="p8">b.next;</p>
-<p class="p9"><br></p>
-<p class="p7">// in a running stream:</p>
-<p class="p8">(</p>
-<p class="p10">Pbind<span class="s1">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s3">Pseq</span>([1, 4, 1, <span class="s3">Pwhite</span>(0, 6, 3), 100, 39], <span class="s3">inf</span>).trace(prefix: <span class="s5">"value: "</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.2</p>
-<p class="p8">).play</p>
-<p class="p8">);</p>
-<p class="p9"><br></p>
-<p class="p7">// post only a slot of the events</p>
-<p class="p8">(</p>
-<p class="p10">Pbind<span class="s1">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s3">Pseq</span>([1, 4, 1, <span class="s3">Pwhite</span>(0, 6, 3), 100, 39], <span class="s3">inf</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.2</p>
-<p class="p8">).trace(<span class="s4">\degree</span>).play</p>
-<p class="p8">);</p>
-<p class="p6"><br></p>
-<p class="p7">// several slots at once:</p>
-<p class="p8">(</p>
-<p class="p10">Pbind<span class="s1">(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s3">Pseq</span>([1, 4, 1, <span class="s3">Pwhite</span>(0, 6, 3), 100, 39], <span class="s3">inf</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s3">Pwhite</span>(0.2, 0.4, <span class="s3">inf</span>)</p>
-<p class="p8">).trace([<span class="s4">\degree</span>, <span class="s4">\dur</span>], prefix: [<span class="s5">"degree "</span>, <span class="s5">"dur "</span>]).play</p>
-<p class="p8">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Tracing server processes:</b></p>
-<p class="p6"><br></p>
-<p class="p3">Using postln or post on a UGen will only return the UGen, but not the values it produces in a running synth. The poll message creates a Poll UGen which posts at regular intervals when given a time value or as a response to a trigger (see <a href="../UGens/Triggers/Poll.html"><span class="s6">Poll</span></a> helpfile)</p>
-<p class="p6"><br></p>
-<p class="p7">// postln returns only the UGen itself (a MulAdd here)</p>
-<p class="p8">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(0.2, 0, 300, 400).postln) * 0.1 }.play;</p>
-<p class="p9"><br></p>
-<p class="p7">// poll traces the values</p>
-<p class="p8">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(0.2, 0, 300, 400).poll) * 0.1 }.play;</p>
-<p class="p9"><br></p>
-<p class="p7">// using a label:</p>
-<p class="p8">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(0.2, 0, 300, 400).poll(label: <span class="s5">"freq"</span>)) * 0.1 }.play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">For <b>demand ugens</b>, poll does not work - these ugens are called by a Demand or Duty Ugen at certain intervals. The message dpoll creates a Dpoll ugen that posts when they are called (see <a href="../UGens/Synth control/Demand Rate/Dpoll.html"><span class="s6">Dpoll</span></a> helpfile)</p>
-<p class="p6"><br></p>
-<p class="p9"><br></p>
-<p class="p8">{ <span class="s3">SinOsc</span>.ar(<span class="s3">Duty</span>.kr(0.5, 0, (<span class="s3">Dseries</span>(0, 1, <span class="s3">inf</span>) * 200 + 300).dpoll)) * 0.1 }.play;</p>
-<p class="p9"><br></p>
-<p class="p8">{ <span class="s3">SinOsc</span>.ar(<span class="s3">Duty</span>.kr(0.5, 0, (<span class="s3">Dseries</span>(0, 1, <span class="s3">inf</span>) * 200 + 300).dpoll(label: <span class="s5">"freq"</span>))) * 0.1 }.play;</p>
-<p class="p9"><br></p>
-<p class="p6"><br></p>
-<p class="p3">When using the internal server (see <a href="../ServerArchitecture/Server.html"><span class="s7">Server</span></a> help), the <b>scope</b> window can give valuable information about the ongoing sound (see <a href="../GUI/Main-GUI/Stethoscope.html"><span class="s7">Stethoscope</span></a> help):</p>
-<p class="p6"><br></p>
-<p class="p11">// must use internal server</p>
-<p class="p8">s = <span class="s8">Server</span>.internal.boot;</p>
-<p class="p8">{ <span class="s9">SinOsc</span>.ar(<span class="s9">SinOsc</span>.kr(0.2, 0, 300, 400)) * 0.1 }.scope;</p>
-<p class="p9"><br></p>
-<p class="p3">A <a href="../GUI/Main-GUI/FreqScope.html"><span class="s10">FreqScope</span></a> window can be used for observing the spectrum of the output:</p>
-<p class="p9"><br></p>
-<p class="p11">// must use internal server</p>
-<p class="p8"><span class="s3">Server</span>.default = s = <span class="s3">Server</span>.internal.boot;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11">// create a new analyzer</p>
-<p class="p12">FreqScope<span class="s1">.new;</span></p>
-<p class="p9"><br></p>
-<p class="p8">{ <span class="s9">SinOsc</span>.ar(<span class="s9">SinOsc</span>.ar(0.2, 0, 3000, 4000)) * 0.1 }.play;</p>
-<p class="p8">{ <span class="s9">SinOsc</span>.ar(<span class="s9">SinOsc</span>.ar((1..4) * 0.02, 0, 3000, 4000)).sum * 0.1 }.play;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Other Topics/Undocumented-Classes.html b/Help/Other Topics/Undocumented-Classes.html
deleted file mode 100644
index 87e938e..0000000
--- a/Help/Other Topics/Undocumented-Classes.html	
+++ /dev/null
@@ -1,436 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-</style>
-</head>
-<body>
-<p class="p1"><b>Undocumented Classes</b></p>
-<p class="p2"><br></p>
-<p class="p3">Below is an alphabetical list of all classes which have no help files, as of October 17, 2004. This includes classes from the <b>CRUCIAL-LIBRARY</b> and <b>JITLib</b>. Note that many of these are either private classes not intended for direct use, abstract superclasses (such as Clock), or currently non-functioning or vestigal classes (such as the image synthesis classes from SC3d5). Nevertheless this is a good place to look for undocumented functionality. Note that some of these classes are covered in overviews, tutorials, etc.</p>
-<p class="p4"><br></p>
-<p class="p5">AbstractConsole</p>
-<p class="p5">AbstractIn</p>
-<p class="p5">AbstractNodeWatcher</p>
-<p class="p5">AbstractOpPlug</p>
-<p class="p5">AbstractOut</p>
-<p class="p5">AbstractPlayControl</p>
-<p class="p5">AbstractPlayerEffect</p>
-<p class="p5">AbstractSample</p>
-<p class="p5">AbstractSFP</p>
-<p class="p5">AbstractSFPGui</p>
-<p class="p5">AbstractSinglePlayerEffect</p>
-<p class="p5">AnnotatedDebugNodeWatcher</p>
-<p class="p5">Any</p>
-<p class="p5">APF</p>
-<p class="p5">Archive</p>
-<p class="p5">ArgNameLabel</p>
-<p class="p5">Array2D</p>
-<p class="p5">ArraySpec</p>
-<p class="p5">AudioPatchIn</p>
-<p class="p5">AudioPatchOut</p>
-<p class="p5">AudioSpec</p>
-<p class="p5">AutoCompClassBrowser</p>
-<p class="p5">AutoCompClassSearch</p>
-<p class="p5">AutoCompMethodBrowser</p>
-<p class="p5">Balance2</p>
-<p class="p5">BasicNodeWatcher</p>
-<p class="p5">BasicOpUGen</p>
-<p class="p5">BeatClockPlayerGui</p>
-<p class="p5">BinaryOpFailureError</p>
-<p class="p5">BinaryOpPlug</p>
-<p class="p5">BinaryOpXStream</p>
-<p class="p5">BooleanEditorGui</p>
-<p class="p5">BroadcastServer</p>
-<p class="p5">BufAllpassC</p>
-<p class="p5">BufAllpassL</p>
-<p class="p5">BufAllpassN</p>
-<p class="p5">BufCombC</p>
-<p class="p5">BufCombL</p>
-<p class="p5">BufCombN</p>
-<p class="p5">BufDelayC</p>
-<p class="p5">BufDelayL</p>
-<p class="p5">BufDelayN</p>
-<p class="p5">BufferProxySpec</p>
-<p class="p5">BufInfoUGenBase</p>
-<p class="p5">BufSamples</p>
-<p class="p5">BundleNetAddr</p>
-<p class="p5">BusDriver</p>
-<p class="p5">BusSynthDefs</p>
-<p class="p5">CCPlayer</p>
-<p class="p5">CCResponder</p>
-<p class="p5">ClassBrowser</p>
-<p class="p5">ClassGui</p>
-<p class="p5">ClassInspector</p>
-<p class="p5">ClassNameLabel</p>
-<p class="p5">CleanupStream</p>
-<p class="p5">ClientFunc</p>
-<p class="p5">Clip</p>
-<p class="p5">Clock</p>
-<p class="p5">CmdPeriod</p>
-<p class="p5">CollStream</p>
-<p class="p5">CompanderD</p>
-<p class="p5">Condition</p>
-<p class="p5">ControlName</p>
-<p class="p5">ControlPatchIn</p>
-<p class="p5">ControlPatchOut</p>
-<p class="p5">ControlRate</p>
-<p class="p5">CosineWarp</p>
-<p class="p5">CurveWarp</p>
-<p class="p5">CXAbstractLabel</p>
-<p class="p5">CXBundle</p>
-<p class="p5">CXLabel</p>
-<p class="p5">CXObjectInspector</p>
-<p class="p5">CXPlayerControl</p>
-<p class="p5">CXSynthPlayerControl</p>
-<p class="p5">Date</p>
-<p class="p5">DbFaderWarp</p>
-<p class="p5">Dbrown</p>
-<p class="p5">DebugFrame</p>
-<p class="p5">DebugNodeWatcher</p>
-<p class="p5">Def</p>
-<p class="p5">Dgeom</p>
-<p class="p5">Dibrown</p>
-<p class="p5">Diwhite</p>
-<p class="p5">Do</p>
-<p class="p5">DoesNotUnderstandError</p>
-<p class="p5">Done</p>
-<p class="p5">Drand</p>
-<p class="p5">Dseq</p>
-<p class="p5">Dser</p>
-<p class="p5">Dseries</p>
-<p class="p5">Dswitch1</p>
-<p class="p5">DualSeriesEfxGui</p>
-<p class="p5">Dwhite</p>
-<p class="p5">Dxrand</p>
-<p class="p5">Editor</p>
-<p class="p5">EditorGui</p>
-<p class="p5">EnvEditor</p>
-<p class="p5">EnvEditorGui</p>
-<p class="p5">EnvGate</p>
-<p class="p5">EnvirDocument</p>
-<p class="p5">EnvironmentRedirect</p>
-<p class="p5">EnvSpec</p>
-<p class="p5">Error</p>
-<p class="p5">Every</p>
-<p class="p5">Exception</p>
-<p class="p5">ExponentialWarp</p>
-<p class="p5">EZNumber</p>
-<p class="p5">FaderWarp</p>
-<p class="p5">Filter</p>
-<p class="p5">FilterPattern</p>
-<p class="p5">Finalizer</p>
-<p class="p5">FlowLayout</p>
-<p class="p5">Fold</p>
-<p class="p5">FrameInspector</p>
-<p class="p5">FreeSelfWhenDone</p>
-<p class="p5">FuncFilterPattern</p>
-<p class="p5">FuncStream</p>
-<p class="p5">FuncStreamAsRoutine</p>
-<p class="p5">FunctionDefInspector</p>
-<p class="p5">GetFileDialog</p>
-<p class="p5">GetStringDialog</p>
-<p class="p5">Gradient</p>
-<p class="p5">GraphBuilder</p>
-<p class="p5">Harmonics</p>
-<p class="p5">HasItemSpec</p>
-<p class="p5">HasSubject</p>
-<p class="p5">HasSubjectGui</p>
-<p class="p5">HIDDevice</p>
-<p class="p5">HIDDeviceElement</p>
-<p class="p5">HiliteGradient</p>
-<p class="p5">IdentityBag</p>
-<p class="p5">ImageWarp</p>
-<p class="p5">ImmutableError</p>
-<p class="p5">Impulsar</p>
-<p class="p5">InBus</p>
-<p class="p5">InfoUGenBase</p>
-<p class="p5">InRange</p>
-<p class="p5">InRect</p>
-<p class="p5">Insp</p>
-<p class="p5">Inspector</p>
-<p class="p5">InspectorLink</p>
-<p class="p5">InspManager</p>
-<p class="p5">InstrSpawnerGui</p>
-<p class="p5">Instrument</p>
-<p class="p5">IntegerEditor</p>
-<p class="p5">InterfaceDef</p>
-<p class="p5">InterfaceGui</p>
-<p class="p5">IODesc</p>
-<p class="p5">IOStream</p>
-<p class="p5">IsIn</p>
-<p class="p5">IsNil</p>
-<p class="p5">IsOdd</p>
-<p class="p5">KDRMaskTester</p>
-<p class="p5">KeyCodeResponderStack</p>
-<p class="p5">KrNumberEditorGui</p>
-<p class="p5">KrPlayer</p>
-<p class="p5">KrPlayerGui</p>
-<p class="p5">LagControl</p>
-<p class="p5">LagIn</p>
-<p class="p5">LeastChange</p>
-<p class="p5">LibraryBase</p>
-<p class="p5">LimitedWriteStream</p>
-<p class="p5">LinearWarp</p>
-<p class="p5">Lines</p>
-<p class="p5">ListDUGen</p>
-<p class="p5">ListPattern</p>
-<p class="p5">LocalClient</p>
-<p class="p5">Logistic</p>
-<p class="p5">LRUNumberAllocator</p>
-<p class="p5">Message</p>
-<p class="p5">MethodError</p>
-<p class="p5">MethodGui</p>
-<p class="p5">MethodInspector</p>
-<p class="p5">MethodLabel</p>
-<p class="p5">MethodQuote</p>
-<p class="p5">MidEQ</p>
-<p class="p5">Midi2Freq</p>
-<p class="p5">Midi2FreqGui</p>
-<p class="p5">Midi2FreqUGen</p>
-<p class="p5">MIDIClient</p>
-<p class="p5">MIDIEndPoint</p>
-<p class="p5">MIDIFreqPlayer</p>
-<p class="p5">MIDIGatePlayer</p>
-<p class="p5">MIDIHoldsNotes</p>
-<p class="p5">MixedBundle</p>
-<p class="p5">ModalFreqGui</p>
-<p class="p5">ModalFreqUGen</p>
-<p class="p5">Model</p>
-<p class="p5">ModelImplementsGuiBody</p>
-<p class="p5">Module</p>
-<p class="p5">MulAdd</p>
-<p class="p5">MultiplePlayers</p>
-<p class="p5">MultiTrackAudioSpec</p>
-<p class="p5">MultiTrackPlayer</p>
-<p class="p5">MustBeBooleanError</p>
-<p class="p5">NAryOpStream</p>
-<p class="p5">NetAddr</p>
-<p class="p5">NodeIDAllocator</p>
-<p class="p5">NodeMapSetting</p>
-<p class="p5">NoLagControlSpec</p>
-<p class="p5">Not</p>
-<p class="p5">NoteOffResponder</p>
-<p class="p5">NoteOnResponder</p>
-<p class="p5">NotificationRegistration</p>
-<p class="p5">NotNil</p>
-<p class="p5">NotYetImplementedError</p>
-<p class="p5">NumAudioBuses</p>
-<p class="p5">NumberEditorGui</p>
-<p class="p5">NumBuffers</p>
-<p class="p5">NumControlBuses</p>
-<p class="p5">NumInputBuses</p>
-<p class="p5">NumOutputBuses</p>
-<p class="p5">ObjectInspector</p>
-<p class="p5">ObjectNotFound</p>
-<p class="p5">OneShotStream</p>
-<p class="p5">OSCBundle</p>
-<p class="p5">OSCMultiResponder</p>
-<p class="p5">OSCpathDispatcher</p>
-<p class="p5">OSCResponderQueue</p>
-<p class="p5">OSCService</p>
-<p class="p5">OutOfContextReturnError</p>
-<p class="p5">Paddp</p>
-<p class="p5">Paddpre</p>
-<p class="p5">Pair</p>
-<p class="p5">Panner</p>
-<p class="p5">PatchGui</p>
-<p class="p5">PatchIn</p>
-<p class="p5">PatchOut</p>
-<p class="p5">PatternControl</p>
-<p class="p5">PauseSelfWhenDone</p>
-<p class="p5">PauseStream</p>
-<p class="p5">Pbindf</p>
-<p class="p5">Pbinop</p>
-<p class="p5">Pbrown</p>
-<p class="p5">Pconst</p>
-<p class="p5">PeakFollower</p>
-<p class="p5">Peep</p>
-<p class="p5">Pen</p>
-<p class="p5">Pevent</p>
-<p class="p5">PfadeIn</p>
-<p class="p5">PfadeOut</p>
-<p class="p5">Pfindur</p>
-<p class="p5">Pfset</p>
-<p class="p5">Pfunc</p>
-<p class="p5">Pfuncn</p>
-<p class="p5">Pfx</p>
-<p class="p5">Pgeom</p>
-<p class="p5">Pindex</p>
-<p class="p5">Plag</p>
-<p class="p5">PlayButton</p>
-<p class="p5">PlayerAmpGui</p>
-<p class="p5">PlayerBinop</p>
-<p class="p5">PlayerBinopGui</p>
-<p class="p5">PlayerEffectGui</p>
-<p class="p5">PlayerEfxFuncGui</p>
-<p class="p5">PlayerMixerGui</p>
-<p class="p5">PlayerPoolGui</p>
-<p class="p5">PlayerSpec</p>
-<p class="p5">PlayerUnopGui</p>
-<p class="p5">Ploop</p>
-<p class="p5">Pmono</p>
-<p class="p5">PMOsc</p>
-<p class="p5">Pmulp</p>
-<p class="p5">Pmulpre</p>
-<p class="p5">Pnaryop</p>
-<p class="p5">PointArray</p>
-<p class="p5">Polygon</p>
-<p class="p5">PopUp</p>
-<p class="p5">PopUpEditor</p>
-<p class="p5">PopUpEditorGui</p>
-<p class="p5">Position</p>
-<p class="p5">Post</p>
-<p class="p5">PowerOfTwoAllocator</p>
-<p class="p5">PowerOfTwoBlock</p>
-<p class="p5">Ppar</p>
-<p class="p5">Pplayer</p>
-<p class="p5">Pretty</p>
-<p class="p5">PrettyEat</p>
-<p class="p5">PrettyEcho</p>
-<p class="p5">PrettyPrintStream</p>
-<p class="p5">PrettyState</p>
-<p class="p5">PrimitiveFailedError</p>
-<p class="p5">Prout</p>
-<p class="p5">Proutine</p>
-<p class="p5">ProxyNodeMap</p>
-<p class="p5">ProxyNodeMapSetting</p>
-<p class="p5">ProxySynthDef</p>
-<p class="p5">Pseries</p>
-<p class="p5">Psetp</p>
-<p class="p5">Psetpre</p>
-<p class="p5">PSinGrain</p>
-<p class="p5">Pstep2add</p>
-<p class="p5">Pstep3add</p>
-<p class="p5">Pstretch</p>
-<p class="p5">Pstretchp</p>
-<p class="p5">Ptpar</p>
-<p class="p5">Ptrace</p>
-<p class="p5">Punop</p>
-<p class="p5">PV_Add</p>
-<p class="p5">PV_BinScramble</p>
-<p class="p5">PV_BinShift</p>
-<p class="p5">PV_BinWipe</p>
-<p class="p5">PV_BrickWall</p>
-<p class="p5">PV_CopyPhase</p>
-<p class="p5">PV_Diffuser</p>
-<p class="p5">PV_LocalMax</p>
-<p class="p5">PV_MagAbove</p>
-<p class="p5">PV_MagBelow</p>
-<p class="p5">PV_MagClip</p>
-<p class="p5">PV_MagFreeze</p>
-<p class="p5">PV_MagMul</p>
-<p class="p5">PV_MagNoise</p>
-<p class="p5">PV_MagShift</p>
-<p class="p5">PV_MagSmear</p>
-<p class="p5">PV_MagSquared</p>
-<p class="p5">PV_Max</p>
-<p class="p5">PV_Min</p>
-<p class="p5">PV_Mul</p>
-<p class="p5">PV_PhaseShift</p>
-<p class="p5">PV_PhaseShift270</p>
-<p class="p5">PV_PhaseShift90</p>
-<p class="p5">PV_RandComb</p>
-<p class="p5">PV_RandWipe</p>
-<p class="p5">PV_RectComb</p>
-<p class="p5">PV_RectComb2</p>
-<p class="p5">Pwhile</p>
-<p class="p5">Pwhite</p>
-<p class="p5">RadiansPerSample</p>
-<p class="p5">Range</p>
-<p class="p5">RefCopy</p>
-<p class="p5">ResponderArray</p>
-<p class="p5">ResponderClientFunc</p>
-<p class="p5">RingNumberAllocator</p>
-<p class="p5">Router</p>
-<p class="p5">SampleGui</p>
-<p class="p5">SampleSpec</p>
-<p class="p5">SC2compat</p>
-<p class="p5">ScalarPatchIn</p>
-<p class="p5">ScalarPatchOut</p>
-<p class="p5">ScalarSpec</p>
-<p class="p5">SCButtonAdapter</p>
-<p class="p5">Scheduler</p>
-<p class="p5">Schmidt</p>
-<p class="p5">SCKnob</p>
-<p class="p5">ScopeOut</p>
-<p class="p5">ScurryableInstrGateSpawner</p>
-<p class="p5">SCUserView</p>
-<p class="p5">SCViewAdapter</p>
-<p class="p5">SelectorLabel</p>
-<p class="p5">ServerGui</p>
-<p class="p5">SFPGui</p>
-<p class="p5">SharedNodeProxy</p>
-<p class="p5">ShouldNotImplementError</p>
-<p class="p5">Silent</p>
-<p class="p5">SimpleController</p>
-<p class="p5">SimpleKDRUnit</p>
-<p class="p5">SimpleTrigger</p>
-<p class="p5">SimpleTriggerGui</p>
-<p class="p5">SineWarp</p>
-<p class="p5">SinOscFB</p>
-<p class="p5">SlotInspector</p>
-<p class="p5">SoundFileFormats</p>
-<p class="p5">SplayZ</p>
-<p class="p5">StackNumberAllocator</p>
-<p class="p5">StartRow</p>
-<p class="p5">StaticIntegerSpec</p>
-<p class="p5">StaticSpec</p>
-<p class="p5">StreamControl</p>
-<p class="p5">StreamKrDurGui</p>
-<p class="p5">StringInspector</p>
-<p class="p5">SubclassResponsibilityError</p>
-<p class="p5">SymbolArray</p>
-<p class="p5">SynthControl</p>
-<p class="p5">SynthDefControl</p>
-<p class="p5">SynthDescLib</p>
-<p class="p5">SynthlessPlayer</p>
-<p class="p5">TabFileReader</p>
-<p class="p5">Tap</p>
-<p class="p5">TChoose</p>
-<p class="p5">TempoBusClock</p>
-<p class="p5">TempoGui</p>
-<p class="p5">TempoSpec</p>
-<p class="p5">TestDependant</p>
-<p class="p5">Tile</p>
-<p class="p5">TPulse</p>
-<p class="p5">Trapezoid</p>
-<p class="p5">TrigControl</p>
-<p class="p5">TrigSpec</p>
-<p class="p5">TwoWayIdentityDictionary</p>
-<p class="p5">UGenInstr</p>
-<p class="p5">UI</p>
-<p class="p5">UnaryOpPlug</p>
-<p class="p5">UnicodeResponder</p>
-<p class="p5">UniqueID</p>
-<p class="p5">Unix</p>
-<p class="p5">Updater</p>
-<p class="p5">UpdatingScalarPatchOut</p>
-<p class="p5">VariableNameLabel</p>
-<p class="p5">Vibrato</p>
-<p class="p5">Warp</p>
-<p class="p5">WavetableSampleGui</p>
-<p class="p5">Wrap</p>
-<p class="p5">XFade</p>
-<p class="p5">XFader</p>
-<p class="p5">XFader4</p>
-<p class="p5">XFaderN</p>
-<p class="p5">XFaderPlayerGui</p>
-<p class="p5">XIn</p>
-<p class="p5">XInFeedback</p>
-<p class="p5">Xor</p>
-<p class="p5">XPlayPathButton</p>
-<p class="p5">XY</p>
-<p class="p5">ZigZag</p>
-</body>
-</html>
diff --git a/Help/Other Topics/asTarget.html b/Help/Other Topics/asTarget.html
deleted file mode 100644
index 7fdea18..0000000
--- a/Help/Other Topics/asTarget.html	
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.s4 {color: #a71e12}
-span.s5 {color: #606060}
-span.s6 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>asTarget</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Convert to a valid Node Target</b></p>
-<p class="p2"><br></p>
-<p class="p3">The classes listed below implement the method asTarget. This is used widely in the <b>Node</b> classes (<b>Group</b> and <b>Synth</b>) to convert non-Node objects to an appropriate target. This allows nil and instances of <b>Server</b> to be used as targets. This can be useful when writing classes which create nodes internally, but in most cases there should be little need to call asTarget in normal use.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Node</b> - Returns the instance of Node itself. The subclasses of <b>Node</b> (<b>Synth</b> and <b>Group</b>) are valid targets and require no conversion.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Server</b> - Returns a <b>Group</b> object representing the <b>default_group</b> of this instance of <b>Server</b>. Note that this object may not be identical with other objects representing the default group, but will be equivalent.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>s = <span class="s2">Server</span>.default;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>g = s.asTarget; </span>// the default group of s</p>
-<p class="p5"><span class="Apple-tab-span">	</span>h = s.defaultGroup; <span class="s4">// and again</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>g == h; <span class="Apple-tab-span">	</span><span class="s4">// true</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>g === h;<span class="Apple-tab-span">	</span><span class="s4">// false</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Nil</b> - Returns a <b>Group</b> object representing the <b>default_group</b> of the current default <b>Server</b>.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>s = <span class="s2">Server</span>.default;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>g = nil.asTarget;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>g == s.defaultGroup; <span class="s4">// true</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Integer</b> - Returns a <b>Group</b> object representing a group node on the current default <b>Server</b> with this <b>Integer</b> as its node ID number. <b>Note:</b> Although this can be convenient in some cases, it does not create the corresponding node on the default server, nor does it check to make sure that it exists. As well it does not directly access the server's NodeIDAllocator, so duplication of node IDs is possible. For these reasons this method should be used with care. When not dealing with the default Server, Group-basicNew is safer and simpler, as otherwise one needs to set the server instance variable to ensure correct targeting.</p>
-<p class="p2"><br></p>
-<p class="p8">/////// Showing the problems</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>s = <span class="s2">Server</span>.default;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>g = s.nextNodeID.asTarget;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s3">.head(g, </span><span class="s5">"default"</span><span class="s3">); <span class="Apple-tab-span">	</span></span>// but g doesn't exist on the server</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>s.sendMsg(*g.addToHeadMsg); <span class="Apple-tab-span">	</span></span>// now it's sent to the default server, in the default group</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x = <span class="s2">Synth</span>.head(g, <span class="s5">"default"</span>); <span class="Apple-tab-span">	</span><span class="s4">// now this works</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>x.free; g.free;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// if not using the default Server Integer-asTarget can be problematic</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Server</span>.default = <span class="s2">Server</span>.local;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">Server</span><span class="s3">.default.boot; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// quit the default server</p>
-<p class="p7"><span class="Apple-tab-span">	</span>i = <span class="s2">Server</span>.internal; i.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>g = i.nextNodeID.asTarget;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>i.sendMsg(*g.addToHeadMsg);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// seems to work, but...</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s3">.head(g, </span><span class="s5">"default"</span><span class="s3">); <span class="Apple-tab-span">	</span></span>// oops, this goes to the default server, so Group not Found</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>g.server == </span><span class="s2">Server</span><span class="s3">.default;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// true, so that's the problem</p>
-<p class="p7"><span class="Apple-tab-span">	</span>g.server = i;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s3">.head(g, </span><span class="s5">"default"</span><span class="s3">); <span class="Apple-tab-span">	</span></span>// now to the right place</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x.free; g.free;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8">/////// A more practical example</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>s = <span class="s2">Server</span>.default;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s6">\g_new</span>, x = s.nextNodeID);</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// ...</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// now if we need to use Node objects for some reason</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y = <span class="s2">Synth</span>.head(x.asTarget, <span class="s5">"default"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// this is simpler than Group.basicNew(s, x);, providing you're using the default server:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z = <span class="s2">Synth</span>.head(<span class="s2">Group</span>.basicNew(s, x), <span class="s5">"default"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>y.free; z.free; x.asTarget.free;</p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Other Topics/ccbysa3_88x31.png b/Help/Other Topics/ccbysa3_88x31.png
deleted file mode 100644
index f0a944e..0000000
Binary files a/Help/Other Topics/ccbysa3_88x31.png and /dev/null differ
diff --git a/Help/Other Topics/play.html b/Help/Other Topics/play.html
deleted file mode 100644
index 91ddf67..0000000
--- a/Help/Other Topics/play.html	
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-span.s1 {color: #0025b2}
-span.s2 {color: #606060}
-span.s3 {color: #000000}
-span.s4 {font: 9.0px Monaco}
-span.s5 {color: #416d1f}
-span.s6 {color: #0000ff}
-span.s7 {font: 12.0px Helvetica}
-span.s8 {color: #0000bf}
-span.s9 {color: #007300}
-span.s10 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>play</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>start a process</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">this message is of common use in sc. Different objects respond to it in various</p>
-<p class="p3">ways, but the simple meaning is: start a process.</p>
-<p class="p3">It is usually implemented by objects in contributed libraries as well.</p>
-<p class="p4"><br></p>
-<p class="p3">play usually returns the playing object which might not be the same as the one</p>
-<p class="p3">the message was sent to.</p>
-<p class="p4"><br></p>
-<p class="p3">opposite: <b>stop</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>clock.play(stream)</b></p>
-<p class="p3">returns: the clock</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>r = <span class="s1">Routine</span>.new({ <span class="s2">"...playing"</span>.postln; 1.wait; <span class="s2">"ok, that was it"</span>.postln });</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>SystemClock<span class="s3">.play(r);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>routine.play(clock)</b></p>
-<p class="p3">returns: the routine</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Routine</span>.new({ <span class="s2">"...playing"</span>.postln; 1.wait; <span class="s2">"ok, that was it"</span>.postln }).play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>stream.play(clock)</b></p>
-<p class="p3">returns the stream</p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>the stream will loop until it returns nil</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">FuncStream</span>({ <span class="s2">"ok, that was it"</span>.postln; 1 }).play;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>pausestream.play(clock) / task.play(clock)</b></p>
-<p class="p3">returns the stream</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s1">PauseStream</span>.new(<span class="s1">FuncStream</span>.new({ <span class="s2">"ok, that was it"</span>.postln; 1 }));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.stop;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.stop;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s1">Task</span>.new({ loop({ <span class="s2">"ok, that was it"</span>.postln; 1.wait; }) });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.stop;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>pattern.play(clock, protoEvent)</b></p>
-<p class="p3">returns: an <b>EventStreamPlayer</b></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>Pseq<span class="s3">([</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pbind</span>(<span class="s5">\freq</span>, <span class="s1">Pn</span>(500, 1)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pbind</span>(<span class="s5">\dur</span>, <span class="s1">Pn</span>(0.1, 1))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>], 2).play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Playing single Synths from SynthDefs on the server</b></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p3">The following play messages both cause a <a href="../ServerArchitecture/SynthDef.html"><span class="s6">SynthDef</span></a> to be written, send it to the server<span class="Apple-converted-space"> </span></p>
-<p class="p3">and start a synth with it there.</p>
-<p class="p4"><br></p>
-<p class="p3">Note that they should not be used in quickly running automated processes,</p>
-<p class="p3">as there are more efficient alternatives (see <a href="../3vs2/SynthDefsVsSynths.html"><span class="s6">SynthDefsVsSynths</span></a><b>)</b></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>function.play(target, outbus, fadeTime, addAction, args)</b></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3">See <a href="../Core/Kernel/Function.html"><span class="s7">Function</span></a></span></p>
-<p class="p3">returns: a <a href="../ServerArchitecture/Synth.html"><span class="s6">Synth</span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span><b>outbus</b>: on what bus to play (default: 0)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>fadeTime</b>: in what time to fade out when released (defaulr: 0.02)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>addAction</b>: where to add the node (\addToHead by default)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>args</b>: controls to set when starting the synth</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9">a = { <span class="s8">PinkNoise</span>.ar([0.1, 0.1]) }.play;</p>
-<p class="p9">a.release;</p>
-<p class="p10"><br></p>
-<p class="p11">// setting argument</p>
-<p class="p9">a = { <span class="s8">|freq = 500|</span> <span class="s8">HPF</span>.ar(<span class="s8">PinkNoise</span>.ar([1, 1] * 0.4), freq) }.play;</p>
-<p class="p9">a.set(<span class="s9">\freq</span>, 1000)</p>
-<p class="p9">a.release;</p>
-<p class="p10"><br></p>
-<p class="p11">// passing argument with play:</p>
-<p class="p9">a = { <span class="s8">|freq = 500|</span> <span class="s8">HPF</span>.ar(<span class="s8">PinkNoise</span>.ar([1, 1] * 0.4), freq) }.play(args: [<span class="s9">\freq</span>, 10000]);</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11">// note that you can use Out ugens but you do not need to</p>
-<p class="p9">{ <span class="s8">Out</span>.ar(1, <span class="s8">PinkNoise</span>.ar(0.1)) }.play;</p>
-<p class="p9">{ <span class="s8">XOut</span>.ar(0, <span class="s8">MouseX</span>.kr(0,1), <span class="s8">PinkNoise</span>.ar(0.1*[1,1])) }.play; <span class="s10">// mouse x controls level</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>synthDef.play(target, args, addAction)</b></p>
-<p class="p3">returns: a <b>Synth</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Note that you need an <b>out ugen</b> to hear the result.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Examples of how to write to the busses in the helpfiles: <a href="../UGens/InOut/Out.html"><span class="s6">Out</span></a> / <a href="../UGens/InOut/ReplaceOut.html"><span class="s6">ReplaceOut</span></a> / <a href="../UGens/InOut/XOut.html"><span class="s6">XOut</span></a> / <a href="../UGens/InOut/OffsetOut.html"><span class="s6">OffsetOut</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Nevertheless, synths can also run without any writing activity: (see e.g. <a href="../UGens/Triggers/SendTrig.html"><span class="s6">SendTrig</span></a><b>)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Some operations provide an out ugen <b>internally</b>: see for example <b>function.play</b>, which plays out</p>
-<p class="p3"><span class="Apple-tab-span">	</span>to a bus number provided in the argument passed to .play</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">x = SynthDef</span>(<span class="s2">"test"</span>, { arg out, amp=0.1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> sound;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sound = <span class="s1">PinkNoise</span>.ar(amp * [1,1]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sound);</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p12">//set the synth</p>
-<p class="p5">x.set(<span class="s5">\amp</span>, 0.2);</p>
-<p class="p12">//free the synth</p>
-<p class="p5">x.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>note</b>: Synth.play(function), is synonymous. for backwards compatibility with sc2</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Other Topics/usingTheWiki/WikiUsage.html b/Help/Other Topics/usingTheWiki/WikiUsage.html
deleted file mode 100644
index 6d35282..0000000
--- a/Help/Other Topics/usingTheWiki/WikiUsage.html	
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-</style>
-</head>
-<body>
-<p class="p1">_TextWindow_SelectUnderlinedText</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">//////////////////GLOBAL//////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">// open helpfile as usual:</p>
-<p class="p4"><a href="../../Core/Kernel/Function.html">Function</a><span class="s1"> <a href="../../UGens/Oscillators/SinOsc.html">SinOsc</a> <a href="../../Core/Kernel/Class.html">Class</a></span></p>
-<p class="p2"><br></p>
-<p class="p3">// create new page in wiki as usual:</p>
-<p class="p5"><span class="s2">newPage</span></p>
-<p class="p2"><br></p>
-<p class="p3">// create new page in a new subdirectory in wiki as usual (doubleclick):</p>
-<p class="p5"><span class="s2">subdir/newPage</span></p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p3">//////////////////LOCAL//////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p3">// create new LOCAL page, in the directory of this document here</p>
-<p class="p5">(<span class="s2">newPage</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">// run the script in the local directory:</p>
-<p class="p5">(<span class="s2">*runMe</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">// look somethig up in a local subdirectory:</p>
-<p class="p5">(<span class="s2">dir/somepage</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">// create a new page in a local subdirectory:</p>
-<p class="p2"><br></p>
-<p class="p5">(<span class="s2">dir/page2</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">// run the script in the local subdirectory:</p>
-<p class="p5">(<span class="s2">*dir/runMe2</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">// create a page in a new subdirectory (doubleclick):</p>
-<p class="p2"><br></p>
-<p class="p5">(<span class="s2">dir2/myPage</span>)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Other Topics/usingTheWiki/dir/runMe2.html b/Help/Other Topics/usingTheWiki/dir/runMe2.html
deleted file mode 100644
index 38bc2ab..0000000
--- a/Help/Other Topics/usingTheWiki/dir/runMe2.html	
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">s.waitForBoot {</p>
-<p class="p1"><span class="Apple-tab-span">	</span>{ <span class="s1">Saw</span>.ar(<span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>([440, 440, 324, 10000] * 0.4, [4, 2, 1], <span class="s2">\exp</span>), doneAction:2)) * 0.1 }.play</p>
-<p class="p1">}</p>
-</body>
-</html>
diff --git a/Help/Other Topics/usingTheWiki/dir/somepage.html b/Help/Other Topics/usingTheWiki/dir/somepage.html
deleted file mode 100644
index 87b0696..0000000
--- a/Help/Other Topics/usingTheWiki/dir/somepage.html	
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2">// ok, this has worked. this page is in the local dir:</p>
-<p class="p1"><br></p>
-<p class="p3">localWikiLinks/dir/page.rtf</p>
-</body>
-</html>
diff --git a/Help/Other Topics/usingTheWiki/runMe.html b/Help/Other Topics/usingTheWiki/runMe.html
deleted file mode 100644
index 0c09a4a..0000000
--- a/Help/Other Topics/usingTheWiki/runMe.html	
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">s.waitForBoot {</p>
-<p class="p1"><span class="Apple-tab-span">	</span>{ <span class="s1">SinOsc</span>.ar(<span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>([440, 440, 324, 10000], [4, 2, 1], <span class="s2">\exp</span>), doneAction:2)) * 0.1 }.play</p>
-<p class="p1">}</p>
-</body>
-</html>
diff --git a/Help/Platform/Platform.html b/Help/Platform/Platform.html
deleted file mode 100644
index 37afe51..0000000
--- a/Help/Platform/Platform.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0026b4}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b4}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3d6d1d}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b4; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {font: 12.0px Helvetica; color: #000000}
-span.s3 {color: #3d6d1d}
-span.s4 {color: #606060}
-span.s5 {color: #0000ff}
-span.s6 {text-decoration: underline ; color: #0035db}
-span.s7 {color: #0026b4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Platform</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">The Platform class (along with its subclasses) handles things which differ between operating systems (mac/linux/windows/...), to simplify cross-platform aspects of SuperCollider.</p>
-<p class="p2"><br></p>
-<p class="p3">Platform is an <i>abstract class</i> encapsulating various platform dependent constants and properties, such as directories, primitive features and startup files. The platform object is accessible through the 'platform' method of the main process instance:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>thisProcess<span class="s1">.platform</span></p>
-<p class="p2"><br></p>
-<p class="p3">Currently implemented platforms include: OSXPlatform, LinuxPlatform, WindowsPlatform, UnixPlatform.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Platform name and platform dependent actions</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>name</b> - returns the platform name</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*case</b>(... <b>cases</b>)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>perform actions depending on the current platform (name), just like Object:switch:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>Platform<span class="s1">.case(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\osx</span>,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s4">"OSX"</span>.postln },</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\linux</span>,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s4">"Linux"</span>.postln },</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\windows</span>, <span class="Apple-tab-span">	</span>{ <span class="s4">"Windows"</span>.postln }</p>
-<p class="p7"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*ideName</b> - returns a <a href="../Collections/String.html"><span class="s5">String</span></a> indicating which IDE the language believes it is running in. (Often this is determined via the "-i" option to the ./sclang executable.) This is determined when sclang starts and cannot be changed dynamically.</p>
-<p class="p3">The main purpose of this is to include/exclude folders from the class search patch depending on which IDE is in use: for example, if the value of ideName is "scapp" then folders named "scide_scapp" are included and all other folders beginning with "scide_" are excluded. The default value of this is "none". Known IDE names in use are "scapp" (SuperCollider.app on Mac), "scvim" (vim), "scel" (emacs). Others may be used.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Directories and filesystem stuff</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>classLibraryDir</b></p>
-<p class="p3"><b>*classLibraryDir</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- location of the bundled class library</p>
-<p class="p2"><br></p>
-<p class="p3"><b>helpDir</b></p>
-<p class="p3"><b>*helpDir</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- location of the bundled help files</p>
-<p class="p2"><br></p>
-<p class="p3"><b>systemAppSupportDir</b></p>
-<p class="p3"><b>*systemAppSupportDir</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- system application support directory</p>
-<p class="p2"><br></p>
-<p class="p3"><b>userAppSupportDir</b></p>
-<p class="p3"><b>*userAppSupportDir</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- user application support directory</p>
-<p class="p2"><br></p>
-<p class="p3"><b>systemExtensionDir</b></p>
-<p class="p3"><b>*systemExtensionDir<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>- system extension directory (see <a href="../Extending and Customizing SC/Using-Extensions.html"><span class="s6">Using-Extensions</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>userExtensionDir</b></p>
-<p class="p3"><b>*userExtensionDir<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>- user extension directory (see <a href="../Extending and Customizing SC/Using-Extensions.html"><span class="s6">Using-Extensions</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>platformDir</b></p>
-<p class="p3"><b>*platformDir</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- platform specific directory for class files (see <a href="../Extending and Customizing SC/Using-Extensions.html"><span class="s6">Using-Extensions</span></a>)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>pathSeparator</b></p>
-<p class="p3"><b>*pathSeparator</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- platform specific path separator</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Startup files</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>startupFiles</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- files to be loaded on startup</p>
-<p class="p3"><b>loadStartupFiles</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>- (re)load startup files</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Features</b></p>
-<p class="p2"><br></p>
-<p class="p3">Features are abstract symbols that can be declared by extension authors and be checked during runtime in user code. Apart from explicitly declared features, class and primitive names are implicitly declared.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>declareFeature(aSymbol)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Declare <b>aSymbol</b> to be a feature present in the runtime. Class names and primitive names cannot be declared as features.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>hasFeature(aSymbol)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>Return true if the feature <b>aSymbol</b> is present in the runtime system. <b>aSymbol </b>can refer to explicitly declared features as well as class and primitive names.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s7">thisProcess</span>.platform.hasFeature(<span class="s3">\Object</span>);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s7">thisProcess</span><span class="s1">.platform.hasFeature(</span>'_SCWindow_BeginFullScreen'<span class="s1">);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s7">thisProcess</span>.platform.hasFeature(<span class="s3">'_myFuncyPrimitive'</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s7">thisProcess</span><span class="s1">.platform.declareFeature(</span>'superCrazyCompositionSystem'<span class="s1">);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s7">thisProcess</span><span class="s1">.platform.hasFeature(</span>'superCrazyCompositionSystem'<span class="s1">);</span></p>
-<p class="p10"><br></p>
-<p class="p3"><b>when(features, ifFunction, elseFunction)</b></p>
-<p class="p3"><b>*when(features, ifFunction, elseFunction)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>Evaluate <b>ifFunction</b> if all <b>features</b> are present, otherwise evaluate <b>elseFunction</b>.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s7">Platform</span>.when(#[<span class="s3">\Document</span>, <span class="s3">\SCWindow</span>], { <span class="s4">"yeehah!"</span>.postln });</p>
-</body>
-</html>
diff --git a/Help/Scheduling/AppClock.html b/Help/Scheduling/AppClock.html
deleted file mode 100644
index a54e771..0000000
--- a/Help/Scheduling/AppClock.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0029b0; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0029b0}
-span.s1 {color: #0029b0}
-span.s2 {color: #000000}
-span.s3 {color: #0016bd}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>AppClock</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Clock</b></p>
-<p class="p4"><br></p>
-<p class="p5">SystemClock is more accurate, but cannot call Cocoa primitives.</p>
-<p class="p5">AppClock is less accurate (uses NSTimers) but can call Cocoa primitives.</p>
-<p class="p4"><br></p>
-<p class="p5">You will need to use the SystemClock to get accurate/musical scheduling.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><b>*sched(delta,task)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>the float you return specifies the delta to resched the function for</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>AppClock</span>.sched(0.0,{ arg time;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>["AppClock has been playing for ",time]<span class="s2">.postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(0.1,0.9)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>returning <span class="s1">nil</span> will stop the task from being rescheduled</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>AppClock</span>.sched(2.0,{<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"2.0 seconds later"<span class="s2">.postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">nil</span><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><br></p>
-<p class="p5"><b>*clear</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>clear the AppClock's scheduler to stop it</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>AppClock<span class="s2">.clear</span></p>
-<p class="p6"><br></p>
-<p class="p5"><b>*play(task)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span></b>The task/Routine yields a float value indicating the delta (secs) for the AppClock to wait</p>
-<p class="p5"><span class="Apple-tab-span">	</span>until resuming the Routine.</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> w, r;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s3">Window</span>.new(<span class="s4">"trem"</span>, <span class="s3">Rect</span>(512, 256, 360, 130));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s3">Routine</span>({ <span class="s3">arg</span> appClockTime;</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</span>"AppClock has been playing for secs:"<span class="s2">,appClockTime].postln;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>60.do({ <span class="s3">arg</span> i;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.yield;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds = w.bounds.moveBy(10.rand2, 10.rand2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.alpha = cos(i*0.1pi)*0.5+0.5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.yield;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">AppClock</span>.play(r);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>*tick</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>AppClock.tick is called periodically by the SuperCollider application itself.</p>
-<p class="p5"><span class="Apple-tab-span">	</span>This updates the Scheduler and causes any scheduled tasks to be executed.<span class="Apple-converted-space">  </span>You</p>
-<p class="p5"><span class="Apple-tab-span">	</span>should never call this method yourself.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Scheduling/Clock.html b/Help/Scheduling/Clock.html
deleted file mode 100644
index ccb1bb4..0000000
--- a/Help/Scheduling/Clock.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1e456e; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0a26c0}
-span.s3 {color: #1135f9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Clock<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>abstract superclass for clocks</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../../../../../../Users/wanninger/Library/Application Support/SuperCollider/Core/Object.html"><span class="s2"><b>Object</b></span></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">Clock is a general scheduler - see subclasses: <a href="SystemClock.html"><span class="s3">SystemClock</span></a>, <a href="TempoClock.html"><span class="s3">TempoClock</span></a>, <a href="AppClock.html"><span class="s3">AppClock</span></a></p>
-</body>
-</html>
diff --git a/Help/Scheduling/Condition.html b/Help/Scheduling/Condition.html
deleted file mode 100644
index 2897bf3..0000000
--- a/Help/Scheduling/Condition.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0019b7}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Condition</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>block execution of a thread</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*new(test)<span class="Apple-tab-span">	</span></b>create a new instance, set the <b>test</b> variable.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>test<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return the test variable (boolean)</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>wait<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>wait until the condition is true and signalled</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>hang(val)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>wait for <b>val</b> time, regardless of test</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>signal<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>if <b>test</b> is true, reschedule blocked threads</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>unhang<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>resume threads</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p5"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">c = </span>Condition<span class="s3">.new(</span>false<span class="s3">);</span></p>
-<p class="p3"><br></p>
-<p class="p7">Routine<span class="s3"> {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"waited for 1 second"<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"waited for another second, now waiting for you ... "<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>c.wait;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"the condition has stopped waiting."<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"waited for another second"<span class="s3">.postln;</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"waiting for you ... "<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.test = <span class="s4">false</span>;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.wait;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"the condition has stopped waiting."<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">"the end"</span>.postln;</p>
-<p class="p6">}.play;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">// continue</p>
-<p class="p6">(</p>
-<p class="p6">c.test = <span class="s4">true</span>;</p>
-<p class="p6">c.signal;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">// a typical use is a routine that can pause under certin conditions:</p>
-<p class="p6">(</p>
-<p class="p6">c = <span class="s4">Condition</span>.new;</p>
-<p class="p6">fork { loop { 1.wait; <span class="s5">"going"</span>.postln; c.wait } };</p>
-<p class="p6">)</p>
-<p class="p6">c.test = <span class="s4">true</span>; c.signal;</p>
-<p class="p6">c.test = <span class="s4">false</span>;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// the same, using hang</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6">c = <span class="s4">Condition</span>.new;</p>
-<p class="p3"><br></p>
-<p class="p7">Routine<span class="s3"> {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"waited for 1 second"<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"waited for another second, now waiting for you ... "<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>c.hang;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"the condition has stopped waiting."<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"waited for another second"<span class="s3">.postln;</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"waiting for you ... "<span class="s3">.postln;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>c.hang;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>"the condition has stopped waiting."<span class="s3">.postln;</span></p>
-<p class="p6">}.play;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">// continue</p>
-<p class="p6">c.unhang;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Scheduling/Quant.html b/Help/Scheduling/Quant.html
deleted file mode 100644
index ee2b128..0000000
--- a/Help/Scheduling/Quant.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {color: #0029f3}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Quant</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">Represents the standard scheduling model for Routines, Tasks and Patterns. A Quant object stores the parameters needed to calculate the precise time when a Routine/Task/Pattern will start playing on a specified TempoClock.</p>
-<p class="p2"><br></p>
-<p class="p3">The standard scheduling model uses quant and phase to locate the starting time. They are evaluated with reference to the TempoClock's baseBarBeat, which is normally zero but is updated when you change the clock's meter using the clock's setMeterAtBeat method. Thus scheduling still makes sense even after a meter change. See the <a href="TempoClock.html"><span class="s1">TempoClock</span></a> help file for details on its representation of time.</p>
-<p class="p2"><br></p>
-<p class="p3">quant: Quantization granularity. The routine will begin on the next integer multiple of this number after the baseBarBeat. If negative, it indicates the number of bars in the future to schedule (where the bar length is taken from the clock's beatsPerBar variable).</p>
-<p class="p2"><br></p>
-<p class="p3">phase: An offset to push the scheduling time into the middle of the bar. +1 is one beat later, -1 is one beat earlier. A negative phase is legal, but it might result in a scheduling time that is later than the current time, in which case scheduling will be incorrect. It's your responsibility to take this into account.</p>
-<p class="p2"><br></p>
-<p class="p3">timingOffset: For use with patterns only -- this enables patterns to run slightly ahead of their sounding time on the clock, giving you control over the order in which threads execute.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>quant = 1</b> -- schedule for the next whole beat</p>
-<p class="p3"><b>quant = 4, phase = -1</b> -- a one beat pick-up to the next 4/4 barline</p>
-<p class="p2"><br></p>
-<p class="p3">Suppose the clock's meter was 3/4 for 3 bars (starting at 0). Then:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>quant = 3, phase = 1</b> -- would schedule for 1, 4, or 7 beats</p>
-<p class="p2"><br></p>
-<p class="p3">During this time, clock.setMeterAtBeat(4, 9) is executed. Then:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>quant = 4, phase = 0</b> -- would schedule for 9, 13, 17, 21 etc. beats</p>
-<p class="p2"><br></p>
-<p class="p3">Every point in time can be precisely identified this way, and it can be related back easily to the Western concept of meter or time signature.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(quant, phase, timingOffset)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Explicitly create an instance of Quant, which may be used and reused. Phase and offset may be nil, in which case they are treated as 0. If quant is nil, it will schedule for the current time exactly.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Automatic instantiation</b></p>
-<p class="p2"><br></p>
-<p class="p3">Certain objects convert themselves into Quant objects when used with Routine:play, Task:play or Pattern:play.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>4.0</b> (i.e., SimpleNumber) --> Quant(4.0, nil, nil)</p>
-<p class="p3"><b>[4.0, 1.0]</b> (i.e., Array) --> Quant(4.0, 1.0, nil)</p>
-<p class="p3"><b>[4.0, 1.0, 0.1]</b> --> Quant(4.0, 1.0, 0.1)</p>
-<p class="p3"><b>nil</b> --> Quant(nil, nil, nil)</p>
-<p class="p2"><br></p>
-<p class="p3">This simplifies the syntax:</p>
-<p class="p2"><br></p>
-<p class="p3">Routine({ ... }).play(quant: 4.0)<span class="Apple-converted-space">  </span>vs.<span class="Apple-converted-space">  </span>Routine({ ... }).play(quant: Quant(4.0))</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Timing offset in Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">In some cases, you might want two patterns that are sounding at the same time to evaluate in a specific order -- for instance, the second pattern might depend upon data calculated by the first. If they are scheduled on the clock for exactly the same time, you have no control over the order of execution: the second pattern might evaluate first, in which case it would be using stale data for the pattern that should have run first.</p>
-<p class="p2"><br></p>
-<p class="p3">The timing offset is a positive number, usually small, that pushes the scheduling time slightly earlier, guaranteeing that patterns with larger timing offsets will execute earlier than others. The timing offset value is saved in the event prototype, which then delays its messages to the server by exactly that number of beats.</p>
-<p class="p2"><br></p>
-<p class="p3">Two patterns, scheduled for the same quant and phase but with different timing offsets, should sound exactly together.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p5">// timing offset = 0</p>
-<p class="p4">p = <span class="s2">Pbind</span>(<span class="s3">\freq</span>, 440, <span class="s3">\pan</span>, -1, <span class="s3">\delta</span>, 1.0, <span class="s3">\sustain</span>, 0.1).play(quant: [2, 0, 0]);</p>
-<p class="p5">// timing offest = 0.1</p>
-<p class="p4">q = <span class="s2">Pbind</span>(<span class="s3">\freq</span>, 880, <span class="s3">\pan</span>, 1, <span class="s3">\delta</span>, 0.5, <span class="s3">\sustain</span>, 0.1).play(quant: [2, 0, 0.1]);</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p5">// p's nextBeat is x.0 - q's is x.4 or x.9 (e.g., halves of a beat minus 0.1)</p>
-<p class="p4">[p.nextBeat, q.nextBeat]</p>
-<p class="p6"><br></p>
-<p class="p4">p.stop; q.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Extensibility: adding custom scheduling models</b></p>
-<p class="p2"><br></p>
-<p class="p3">While the standard scheduling model should be sufficient for most uses, the point of using an object to encapsulate scheduling details is that you can use a different object to schedule Routines or Patterns differently. (Users are not forced to use the standard scheduling model in every case.)</p>
-<p class="p2"><br></p>
-<p class="p3">If it's a kind of scheduling you expect to use often, you can create a subclass of Quant that implements the following methods:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>*new(...)</b>: create a new instance, with whatever arguments you need</p>
-<p class="p2"><br></p>
-<p class="p3"><b>nextTimeOnGrid(clock)</b>: calculate the exact beat number on the clock</p>
-<p class="p2"><br></p>
-<p class="p3">Your class should also have methods asQuant, offset and offset_. If your class is a subclass of Quant, it will inherit those methods automatically.</p>
-<p class="p2"><br></p>
-<p class="p3">You can also use an Event for one shot scheduling. It should at least have an entry for nextTimeOnGrid, which will usually be a function taking the arguments "self" and "clock" that returns the absolute scheduling time. Any other values needed for that calculation should also be present in the Event.</p>
-<p class="p2"><br></p>
-<p class="p5">// schedule for a random number of beats after the next integer</p>
-<p class="p4"><span class="s2">Pfuncn</span>({ <span class="s2">thisThread</span>.clock.beats.debug(<span class="s4">"scheduled for"</span>); <span class="s2">nil</span> }, 1)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>.play(quant: (</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nextTimeOnGrid: { <span class="s2">|self, clock|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clock.beats.roundUp(1).debug(<span class="s4">"clock beats"</span>) + rrand(self.lo, self.hi).debug(<span class="s4">"rand"</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lo: 0, hi: 4</p>
-<p class="p4"><span class="Apple-tab-span">	</span>));</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Scheduling/Scheduler.html b/Help/Scheduling/Scheduler.html
deleted file mode 100644
index 4e92fe8..0000000
--- a/Help/Scheduling/Scheduler.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.s6 {color: #0025b2}
-span.s7 {color: #416d1f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Scheduler</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>schedules functions to be evaluated in the future</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p3"><br></p>
-<p class="p1">A Scheduler can be used to schedule and reschedule functions to be evaluated at a specific time-point. The Scheduler's time needs to be advanced manually. In most cases you will probably want to use a Clock (e.g. <a href="TempoClock.html"><span class="s2">TempoClock</span></a>, <a href="SystemClock.html"><span class="s2">SystemClock</span></a>, <a href="AppClock.html"><span class="s2">AppClock</span></a>) instead, in which the march of time is handled for you.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*new(clock, drift)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clock</b>: <span class="Apple-tab-span">	</span>a clock, like SystemClock.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>drift</b>: <span class="Apple-tab-span">	</span>if true, it will schedule the events relative to Main.elapsedTime,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>otherwise to the current seconds of the scheduler.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>play(aTask)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>schedules the task to play, with the delta time returned from it.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>sched(delta, aTask)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>schedule the task<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>advance(bySeconds)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>advance time by n seconds. Any task that is scheduled within the new time,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is evaluated, and, if it returns a new time, rescheduled.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>seconds_(newSeconds)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set new time. Any task that is scheduled within the new time,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is evaluated, and, if it returns a new time, rescheduled.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>isEmpty</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns whether the scheduling queue is empty.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>clear</b></p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>clear the scheduling queue</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// example:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">a = </span>Scheduler<span class="s4">(</span>SystemClock<span class="s4">);</span></p>
-<p class="p2"><br></p>
-<p class="p6">a.sched(3, { <span class="s5">"now it is 3 seconds."</span>.postln; <span class="s6">nil</span> });</p>
-<p class="p6">a.sched(5, { <span class="s5">"now it is 5 seconds."</span>.postln; <span class="s6">nil</span> });</p>
-<p class="p6">a.sched(1, { <span class="s5">"now it is 1 second."</span>.postln; <span class="s6">nil</span> });</p>
-<p class="p2"><br></p>
-<p class="p6">a.advance(0.5);</p>
-<p class="p6">a.advance(0.5);</p>
-<p class="p6">a.advance(2);</p>
-<p class="p6">a.advance(2);</p>
-<p class="p2"><br></p>
-<p class="p4">// the beats, seconds and clock are passed into the task function:</p>
-<p class="p6">a.sched(1, { <span class="s6">arg</span> beats, secs, clock; [beats, secs, clock].postln });</p>
-<p class="p6">a.advance(1);</p>
-<p class="p2"><br></p>
-<p class="p4">// the scheduling is relative to "now":</p>
-<p class="p6">a.sched(3, { <span class="s5">"now it was 3 seconds."</span>.postln });</p>
-<p class="p6">a.sched(5, { <span class="s5">"now it was 5 seconds."</span>.postln });</p>
-<p class="p6">a.sched(1, { <span class="s5">"now it was 1 second."</span>.postln });</p>
-<p class="p2"><br></p>
-<p class="p6">a.advance(0.5);</p>
-<p class="p6">a.advance(0.5);</p>
-<p class="p6">a.advance(2);</p>
-<p class="p6">a.advance(2);</p>
-<p class="p2"><br></p>
-<p class="p4">// play a Routine or a task:</p>
-<p class="p6">a.play(<span class="s6">Routine</span> { 5.do { <span class="s6">arg</span> i; i.postln; 1.yield } });</p>
-<p class="p6">a.advance(0.9);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// scheduling tasks</p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p5"><span class="s4">x = </span>Scheduler<span class="s4">(</span>TempoClock<span class="s4">.default);</span></p>
-<p class="p2"><br></p>
-<p class="p5">Task<span class="s4"> {<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">inf</span>.do { <span class="s6">|i|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s5">"next "</span> ++ i ++<span class="Apple-converted-space">  </span><span class="s5">" in task."</span> + <span class="s6">Main</span>.elapsedTime).postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.play(x)</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">x.advance(0.1);</p>
-<p class="p6">x.seconds;</p>
-<p class="p6">x.advance(5);</p>
-<p class="p6">x.seconds;</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p5">Routine<span class="s4"> {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop { x.advance(0.1); 0.1.wait }</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">Task</span> { 5.do {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.advance(1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>2.0.rand.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">x.advance(8.1);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6">Pbind</span>(<span class="s7">\degree</span>, <span class="s6">Pseries</span>(0, 2, 8), <span class="s7">\dur</span>, 0.25).play(x);</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">Task</span> { 5.do {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.advance(0.20);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.0.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Scheduling/Semaphore.html b/Help/Scheduling/Semaphore.html
deleted file mode 100644
index 463a28b..0000000
--- a/Help/Scheduling/Semaphore.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #bf0000}
-span.s5 {color: #0000bf}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Semaphore</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>control parallel execution of threads</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*new(count)<span class="Apple-tab-span">	</span></b>create a new instance, set the maximum number of running threads (default: 1).</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>count<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>determines the number of running threads</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>clear<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>remove any reference to threads, but do not rescedule any pending ones.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>wait<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>stop current thread if already too many are running, otherwise continue.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>signal<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>unblock the semaphore, reschedule next pending thread.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// allow only one thread</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">c = </span>Semaphore<span class="s3">(1);</span></p>
-<p class="p5">fork {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 1> now I am doing something for 10 seconds. Block the semaphore meanwhile."<span class="s3">.postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>10.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.signal;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 1> ok, done. Release the semaphore."<span class="s3">.postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p5">};</p>
-<p class="p5">fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>3.0.rand.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 2> I would like to go on, if I may."<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.wait; <span class="s4">// may I?</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 2> this took until the other thread has released the semaphore. "</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"Blocking for 4 seconds."<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>4.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 2> ok, done. Releasing the semaphore"<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.signal;</p>
-<p class="p5">};</p>
-<p class="p5">fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>4.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 3> I, too, would like to go on, if I may."<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.wait; <span class="s4">// may I?</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 3> this took until both other threads had released the semaphore."<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.signal;</p>
-<p class="p5">};</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// allow two threads at a time.</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">c = </span>Semaphore<span class="s3">(2);</span></p>
-<p class="p5">fork {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 1> now I am doing something for 20 seconds. Block the semaphore."<span class="s3">.postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>10.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 1> ok, done. Releasing the semaphore"<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.signal;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p5">};</p>
-<p class="p5">fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>rrand(3.0, 5.0).wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 2> I would like to go on, if I may."<span class="s3">.postln;</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>if(c.count <= 0) { </span>"thread 3> ok, then I wait ..."<span class="s3">.postln };</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.wait; <span class="s4">// may I?</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 1> ok, going ahead."<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>17.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 2> ok, done. Releasing the semaphore"<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.signal;</p>
-<p class="p5">};</p>
-<p class="p5">fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>6.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 3> I, too, would like to go on, if I may."<span class="s3">.postln;</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>if(c.count <= 0) { </span>"thread 3> ok, then I wait ..."<span class="s3">.postln };</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.wait; <span class="s4">// may I?</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 3> ok, this took until the first thread had released the semaphore. "</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Ok, doing something for 4 seconds. Block the semaphore"<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"Releasing the semaphore."<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.signal;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5">};</p>
-<p class="p5">fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>7.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 4> Me, the fourth one, would like to go on, if I may."<span class="s3">.postln;</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>if(c.count <= 0) { </span>"thread 4> ok, then I wait ..."<span class="s3">.postln };</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.wait; <span class="s4">// may I?</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"thread 4> ok, this took until the third thread had released the semaphore. "</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"Ok, doing something for 3 seconds. Block the semaphore"<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.wait;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>"Releasing the semaphore."<span class="s3">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.signal;</p>
-<p class="p5">};</p>
-<p class="p3"><br></p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// grant exclusive access to data to only one thread</p>
-<p class="p4">// there should never be mixed values in the data array</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s5">var</span> data, useAndModify;</p>
-<p class="p3"><br></p>
-<p class="p5">data = [1, 2, 3];</p>
-<p class="p6"><span class="s3">c = </span>Semaphore<span class="s3">(1);</span></p>
-<p class="p4">// c = Semaphore(2); use this to test how it would behave without exclusive access.</p>
-<p class="p5">useAndModify = { <span class="s5">|newData, who|</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>postln(who + </span>"trying to get blocking access."<span class="s3">);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>if(c.count <= 0) { who + <span class="s6">"ok, then I wait ..."</span>.postln };</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>c.wait; </span>// may I access? if not, I wait. if yes, disallow others.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s6">"\n"</span>.post;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(who + <span class="s6">"continuing..."</span>).postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>data.do({ <span class="s5">|x|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>postln(who + x);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s6">"\n"</span>.post;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>newData.do { <span class="s5">|x, i|</span> data[i] = x };</p>
-<p class="p5"><span class="Apple-tab-span">	</span>postln(who + <span class="s6">"rewriting data to:"</span> + newData);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>postln(who + <span class="s6">"releasing"</span>);</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>c.signal; </span>// allow others access again</p>
-<p class="p5">};</p>
-<p class="p3"><br></p>
-<p class="p4">// e.g. set the values to integers</p>
-<p class="p6"><span class="s3">u = </span>Routine<span class="s3"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">inf</span>.do { <span class="s5">|i|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>useAndModify.value([100, 200, 300], <span class="s6">"thread 1>"</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(1, 3).wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">};</p>
-<p class="p3"><br></p>
-<p class="p4">// e.g. set the values to floats</p>
-<p class="p5">k =<span class="Apple-converted-space">  </span><span class="s5">Routine</span> {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">inf</span>.do { <span class="s5">|i|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>useAndModify.value([pi, 0.5pi, 2pi], <span class="s6">"thread 2>"</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(1, 5).wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">};</p>
-<p class="p5">u.play;</p>
-<p class="p5">k.play;</p>
-<p class="p5">);</p>
-</body>
-</html>
diff --git a/Help/Scheduling/SystemClock.html b/Help/Scheduling/SystemClock.html
deleted file mode 100644
index 0d0299b..0000000
--- a/Help/Scheduling/SystemClock.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0029b0; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0029b0}
-span.s1 {color: #0029b0}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {font: 9.0px Monaco}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {color: #0016bd}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SystemClock</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Clock</b></p>
-<p class="p4"><br></p>
-<p class="p5">SystemClock is more accurate, but cannot call Cocoa primitives.</p>
-<p class="p5">AppClock is less accurate (uses NSTimers) but can call Cocoa primitives.</p>
-<p class="p6"><br></p>
-<p class="p5"><b>*sched(delta,task)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>the float you return specifies the delta to resched the function for</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>SystemClock</span>.sched(0.0,{ arg time; <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>time.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(0.1,0.9)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>returning <span class="s1">nil</span> will stop the task from being rescheduled</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>SystemClock</span>.sched(2.0,{<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"2.0 seconds later"<span class="s2">.postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">nil</span><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><br></p>
-<p class="p5"><b>*clear</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>clear the SystemClock's scheduler to stop it</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>SystemClock<span class="s2">.clear</span></p>
-<p class="p6"><br></p>
-<p class="p5"><b>*schedAbs(time,task)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SystemClock</span>.schedAbs( (<span class="s1">thisThread</span>.seconds + 4.0).round(1.0),{ <span class="s1">arg</span> time;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s3">"the time is exactly "</span> ++ time.asString<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>++ </span>" seconds since starting SuperCollider")<span class="s2">.postln;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>*play(task)</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Calls to the cocoa framework (including all GUI) may not be made directly<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>from actions triggered by SystemClock or incoming socket messages<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(OSCresponder).<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>To get around this, use <span class="s4">{ }.defer</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>This will execute the function using the AppClock and is equivalent to</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s1">AppClock</span>.sched(0, function):</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> w, r;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w = <span class="s6">Window</span>.new(<span class="s3">"trem"</span>, <span class="s1">Rect</span>(512, 256, 360, 130));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.front;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s1">Routine</span>({ arg time;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>60.do({ <span class="s1">arg</span> i;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.yield;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.bounds = w.bounds.moveBy(10.rand2, 10.rand2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.alpha = cos(i*0.1pi)*0.5+0.5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.defer;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.yield;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SystemClock</span>.play(r);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>This example is only to show how to make calls to Cocoa/GUI when<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>scheduling with the SystemClock.</p>
-<p class="p5"><span class="Apple-tab-span">	</span>If you only wish to control the GUI, use AppClock.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Scheduling/Task.html b/Help/Scheduling/Task.html
deleted file mode 100644
index 4baf6e6..0000000
--- a/Help/Scheduling/Task.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #0000ff}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Task<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a pauseable process</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: PauseStream<span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><br></p>
-<p class="p3">Task is a pauseable process. It is implemented by wrapping a PauseStream around a Routine. Most of its methods (start, stop, reset) are inherited from PauseStream.</p>
-<p class="p4"><br></p>
-<p class="p3">Tasks are not 100% interchangeable with Routines.</p>
-<p class="p4"><br></p>
-<p class="p3">- Condition does not work properly inside of a Task.</p>
-<p class="p3">- Stopping a task and restarting it quickly may yield surprising results (see example below), but this is necessary to prevent tasks from becoming unstable if they are started and/or stopped in rapid succession.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Task.new(func, clock)</b></p>
-<p class="p3"><b>func </b>- A <b>Function</b> to be evaluated.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>clock </b>- A Clock in which to play the <b>Routine</b>. If you do not provide a Clock the default is an instance of TempoClock. Remember that methods which call Cocoa primitives (i.e. GUI functions) must be played in AppClock.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>play(argClock, doReset, quant)</b></p>
-<p class="p3"><b>argClock</b> - (optional) Override the clock assigned in Task.new</p>
-<p class="p3"><b>doReset</b> - If true, the task will start over from the beginning. Default is false (task will resume where it was when it was last stopped)</p>
-<p class="p3"><b>quant</b> - see the <a href="Quant.html"><span class="s1">Quant</span></a> helpfile</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Other control methods</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>start(argClock, quant)</b> - Restart the task from the beginning.</p>
-<p class="p3"><b>resume(argClock, quant)</b> - Resume the task where it left off.</p>
-<p class="p3"><b>pause</b> - Stop playing now.</p>
-<p class="p3"><b>stop</b> - Stop playing now. (Pause and stop have the same implementation.)</p>
-<p class="p3"><b>reset</b> - Set the stream to restart from the beginning the next time it's played.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Notifications</b></p>
-<p class="p4"><br></p>
-<p class="p3">Other objects might need to be aware of changes in the state of a task. The following notifications are broadcast to dependents registered with the Task object.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>\userPlayed</b> - Sent at the time the user calls play, start or resume.</p>
-<p class="p3"><b>\playing</b> - Sent at the time the task begins playing on the clock (corresponding to quant).</p>
-<p class="p3"><b>\userStopped</b> - Sent at the time the user calls pause or stop.</p>
-<p class="p3"><b>\stopped</b> - Sent at the time the task is finally removed from the clock (this is the time when the next event would have occurred if the task had not been stopped). If the task function completes on its own, this notification is sent without 'userStopped' being sent previously.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>What happens if you stop and start the task too quickly?</b></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p6">t = <span class="s2">Task</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>50.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.squared.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><br></p>
-<p class="p6">t.start;</p>
-<p class="p6">t.pause;</p>
-<p class="p6">t.resume;</p>
-<p class="p6">t.reset;</p>
-<p class="p6">t.stop;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// unexpected behavior here</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">t = <span class="s2">Task</span>({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>[<span class="s3">"go"</span>, <span class="s2">thisThread</span>.clock.beats].postln;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">inf</span>.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ <span class="s3">"wake up"</span>, i ].postln<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">});</p>
-<p class="p7"><br></p>
-<p class="p6">fork {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>t.start;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>t.stop;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>t.start;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>6.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>t.stop;</p>
-<p class="p6">};</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">[ go, 1702.114411906 ]</p>
-<p class="p6">[ go, 1704.114411906 ]</p>
-<p class="p2"><br></p>
-<p class="p3">Based on the forked thread, you would expect the second "go" line of output to occur 0.2 seconds after the first, but in fact it happens two seconds later (the same amount of time the task waits between iterations). This is because the task must not schedule itself on the clock more than once. When the task is stopped, it remains scheduled until it wakes up again (based on its wait time). If, during this interval, the task were restarted, there would be two references to the task in the scheduler queue -- a situation that is irrecoverable short of stopping everything with command-period.</p>
-<p class="p4"><br></p>
-<p class="p3">As a result, Task should be used for processes that need to start and stop relatively infrequently, but for which maximum stability is required. If you need fine-grained control over when and how the process stops and resumes (as is the case, for instance, with condition), Routine is preferred.</p>
-</body>
-</html>
diff --git a/Help/Scheduling/TempoClock.html b/Help/Scheduling/TempoClock.html
deleted file mode 100644
index ebd9ca9..0000000
--- a/Help/Scheduling/TempoClock.html
+++ /dev/null
@@ -1,242 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1e456e; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -29.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -29.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -29.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -29.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -29.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -29.0px; font: 12.0px Lucida Grande; min-height: 15.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -29.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande; min-height: 15.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {color: #001bb9}
-span.s4 {color: #000000}
-span.s5 {font: 12.0px Helvetica; color: #000000}
-span.s6 {font: 9.0px Monaco}
-span.s7 {font: 12.0px Lucida Grande}
-span.s8 {font: 12.0px Monaco}
-span.s9 {color: #ad140d}
-span.s10 {font: 11.0px Monaco; color: #000000}
-span.s11 {color: #0000bf}
-span.s12 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TempoClock<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>tempo based scheduler</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from the abstract class Clock.</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">TempoClock is a scheduler like SystemClock, but it schedules relative to a <b>tempo</b> in beats per second.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*new(tempo, beats, seconds, queueSize)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>creates a new TempoClock scheduler with the given tempo and starting times. If not supplied, <b>tempo</b> defaults to one, <b>beats</b> defaults to zero and <b>seconds</b> defaults to the current elapsed time since SuperCollider startup. The default <b>queueSize</b> is 256, see <b>queue</b>.</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>t = <span class="s3">TempoClock</span>.new(1, 0, <span class="s3">Main</span>.elapsedTime.ceil);</p>
-<p class="p6"><br></p>
-<p class="p4"><b>stop</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>destroys the scheduler and releases the OS thread running the scheduler.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>clear</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>removes all tasks from the scheduling queue.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>tempo</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the current tempo in beats per second.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>tempo_(newTempo)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>sets the current tempo in beats per second.</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>t.tempo_(2.0); </span>// equivalent to t.tempo = 2.0;</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>t.tempo_(72/60) </span>// 72 beats per minute</p>
-<p class="p6"><br></p>
-<p class="p4"><b>permanent</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns a Boolean value indicating whether the clock will survive cmd-period. false by default.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>permanent_(bool)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>sets whether the clock will survive cmd-period. <b>bool</b> is false by default. If false the clock is stopped (and thus removed) on cmd-period. If true the clock survives cmd-period.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>default</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the permanent default TempoClock instantiated at startup.</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s3">TempoClock</span><span class="s4">.default.beats </span>// beats since default TempoClock was started</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>default_(aTempoClock)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>sets the default TempoClock.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>beats</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the appropriate beat time of the clock from any thread. If the receiver is the clock of the current thread, this returns the current logical time: <span class="s6">thisThread.beats</span>. If the receiver is not the current thread's clock then this translates the current thread's logical time in seconds to this clock's logical time in beats.</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>schedAbs(beat, function)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>schedules a function to be evaluated at a particular <b>beat</b>. If the function returns an Integer or a Float, it will be re-evaluated at the logical time plus the returned value. The function receives a number of default arguments, see <b>play</b> example below.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p4"><b>sched(delta, function)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>schedules a <b>function</b> to be evaluated <b>delta</b> beats from the current logical time in this clock. If the receiver is the clock of the current thread, the delta is applied to the current logical time. If the receiver is not the current thread's clock then the delta is applied to the clock's elapsed time.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>play(task, quant)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>plays task (a function) at the next beat, where <b>quant</b> is 1 by default. Shortcut for <b>schedAbs</b>; see <b>seconds</b> and <b>nextTimeOnGrid </b>for further details on time and quant.</p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span>t.play({<span class="s3">arg</span> beats, time, clock; [beats, time, clock].postln})</p>
-<p class="p6"><br></p>
-<p class="p4"><b>playNextBar(task)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>plays <b>task</b> (a function) at the next bar using <b>schedAbs.</b></p>
-<p class="p10"><br></p>
-<p class="p4"><b>queue</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the scheduling queue Array in the form [beat, function]. The maximum number of items is determined by the clock's queueSize argument upon instantiation. The default queueSize of 256 allows 128 functions to be in the queue at any time.</p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>beatDur</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the duration in seconds of a current whole beat.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>beatsPerBar</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the number of beats per bar. The default is 4.</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>beatsPerBar_(newBeatsPerBar)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b>sets the number of beats per bar. This must be done from within the scheduling thread, e.g.</p>
-<p class="p5"><span class="Apple-tab-span">	</span>t.schedAbs(t.nextBar, {t.beatsPerBar_(3)});</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>bar</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the current <b>bar</b>. See <b>bars2beats </b>for returning beat of current bar.</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>nextBar(beat)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the number of beats at the next bar line relative to the beat argument. If <b>beat</b> is not supplied, returns the beat at which the next bar begins.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>beatInBar</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the current bar beat (as a Float) in relation to <b>beatsPerBar</b>. Values range from 0 to < beatsPerBar.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>baseBar</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns bar at which <b>beatsPerBar</b> was last changed. If beatsPerBar has not been changed since the clock was created, returns 0.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>baseBarBeat</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns beat at which the <b>beatsPerBar</b> was last changed. If beatsPerBar has not been changed since the clock was created, returns 0.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>beats2bars(beats)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns a bar as a float relative to <b>baseBarBeat</b>.</p>
-<p class="p9"><br></p>
-<p class="p4"><b>bars2beats(bar)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span> returns a beat relative to <b>baseBar.</b></p>
-<p class="p7"><span class="s5"><b><span class="Apple-tab-span">	</span></b></span><span class="s4"> t.bars2beats(t.bar) </span>// downbeat of the current bar</p>
-<p class="p6"><br></p>
-<p class="p4"><b>timeToNextBeat(quant)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span> returns the logical time to next beat. <b>quant</b> is 1 by default, relative to <b>baseBarBeat, </b>see<b> nextTimeOnGrid</b>.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>nextTimeOnGrid(quant, phase)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>with default values, returns the next whole beat. <b>quant</b> is 1 by default, phase is 0. quant is relative to <b>baseBarBeat</b>, such that</p>
-<p class="p5"><span class="Apple-tab-span">	</span>t.nextTimeOnGrid(t.beatsPerBar) == t.nextBar <span class="s9">// => true</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Together <b>quant</b> and <b>phase</b> are useful for finding the next <i>n</i> beat in a bar, e.g. nextTimeOnGrid(4, 2) will return the next 3rd beat of a bar (of 4 beats), whereas nextBar-2 may return an elapsed beat.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p4"><b>elapsedBeats</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the current elapsed time in beats. This is equivalent to tempoClock.secs2beats(Main.elapsedTime). It is often preferable to use <b>beats</b> instead of <b>elapsedBeats </b>because beats uses a thread's logical time.</p>
-<p class="p6"><br></p>
-<p class="p4"><b>seconds</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>returns the current elapsed time. (This method is inherited from Clock.)</p>
-<p class="p6"><br></p>
-<p class="p4"><b>beats2secs(beats)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>converts absolute <b>beats</b> to absolute <b>seconds</b>, returning the elapsed time of the clock at the given <b>beats</b>. Only works for times in the current tempo. If the tempo changes any computed time in future will be wrong.</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s4">t.beats2secs(t.beats) </span>// equivalent to t.seconds</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>t</span><span class="s10">.</span><span class="s4">beats2secs(0) </span>// how many seconds after startup did beat 0 occur?</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b>secs2beats(seconds)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span>converts absolute <b>seconds</b> to absolute beats. Only works for times in the current tempo. If the tempo changes any computed time in future will be wrong.</p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p11"><br></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p13"><br></p>
-<p class="p14">////////////////////////</p>
-<p class="p15"><br></p>
-<p class="p14"><span class="s4">t = </span><span class="s11">TempoClock</span><span class="s4">(1); </span>// create a TempoClock</p>
-<p class="p15"><br></p>
-<p class="p14">// schedule an event at next whole beat</p>
-<p class="p16">t.schedAbs(t.beats.ceil, { <span class="s11">arg</span> beat, sec; [beat, sec].postln; 1 });</p>
-<p class="p15"><br></p>
-<p class="p16">t.tempo = 2;</p>
-<p class="p16">t.tempo = 4;</p>
-<p class="p16">t.tempo = 0.5;</p>
-<p class="p16">t.tempo = 1;</p>
-<p class="p15"><br></p>
-<p class="p16">t.clear;</p>
-<p class="p15"><br></p>
-<p class="p16">t.schedAbs(t.beats.ceil, { <span class="s11">arg</span> beat, sec; [beat, sec].postln; 1 });</p>
-<p class="p15"><br></p>
-<p class="p16">t.stop;</p>
-<p class="p15"><br></p>
-<p class="p14">////////////////////////</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p14">// get elapsed time, round up to next second</p>
-<p class="p16">v = <span class="s11">Main</span>.elapsedTime.ceil;</p>
-<p class="p15"><br></p>
-<p class="p14">// create two clocks in a 5:2 relation, starting at time v.</p>
-<p class="p16">t = <span class="s11">TempoClock</span>(1, 0, v);</p>
-<p class="p16">u = <span class="s11">TempoClock</span>(0.4, 0, v);</p>
-<p class="p15"><br></p>
-<p class="p14">// start two functions at beat zero in each clock.</p>
-<p class="p16">t.schedAbs(0, { <span class="s11">arg</span> beat, sec; [<span class="s12">\t</span>, beat, sec].postln; 1 });</p>
-<p class="p16">u.schedAbs(0, { <span class="s11">arg</span> beat, sec; [<span class="s12">\u</span>, beat, sec].postln; 1 });</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16">u.tempo = u.tempo * 3;</p>
-<p class="p16">t.tempo = t.tempo * 3;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16">u.tempo = u.tempo * 1/4;</p>
-<p class="p16">t.tempo = t.tempo * 1/4;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16">t.stop;</p>
-<p class="p16">u.stop;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p14">////////////////////////</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p14">// get elapsed time, round up to next second</p>
-<p class="p16">v = <span class="s11">Main</span>.elapsedTime.ceil;</p>
-<p class="p15"><br></p>
-<p class="p14">// create two clocks, starting at time v.</p>
-<p class="p16">t = <span class="s11">TempoClock</span>(1, 0, v);</p>
-<p class="p16">u = <span class="s11">TempoClock</span>(1, 0, v);</p>
-<p class="p15"><br></p>
-<p class="p14">// start two functions at beat zero in each clock.</p>
-<p class="p14">// t controls u's tempo. They should stay in sync.</p>
-<p class="p16">t.schedAbs(0, { <span class="s11">arg</span> beat, sec; u.tempo = t.tempo * [1,2,3,4,5].choose; [<span class="s12">\t</span>, beat, sec].postln; 1 });</p>
-<p class="p16">u.schedAbs(0, { <span class="s11">arg</span> beat, sec; [<span class="s12">\u</span>, beat, sec].postln; 1 });</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16">u.tempo = u.tempo * 3;</p>
-<p class="p16">t.tempo = t.tempo * 3;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16">u.tempo = u.tempo * 1/4;</p>
-<p class="p16">t.tempo = t.tempo * 1/4;</p>
-<p class="p16">)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p16">(</p>
-<p class="p16">t.stop;</p>
-<p class="p16">u.stop;</p>
-<p class="p16">)</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Buffer.html b/Help/ServerArchitecture/Buffer.html
deleted file mode 100644
index 58fd531..0000000
--- a/Help/ServerArchitecture/Buffer.html
+++ /dev/null
@@ -1,841 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #941f1a}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #941f1a}
-p.p17 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco}
-p.p18 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; color: #941f1a}
-p.p20 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco}
-p.p21 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; color: #606060}
-p.p22 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; color: #426d24}
-p.p23 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0b24ae}
-span.s3 {color: #001ff0}
-span.s4 {font: 12.0px Helvetica}
-span.s5 {color: #000000}
-span.s6 {color: #941f1a}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #426d24}
-span.s9 {color: #606060}
-span.s10 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Buffer<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>client-side representation of a buffer on a server</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p1">A buffer is most often used to hold sampled audio, such as a soundfile loaded into memory, but can be used to hold other types of data as well. It is a globally available array of floating-point numbers on the server. The Buffer class encapsulates a number of common tasks, OSC messages, and capabilities related to server-side buffers – see the examples lower down this document for many examples of using Buffers for sound playback and recording.</p>
-<p class="p2"><br></p>
-<p class="p1">Buffers are commonly used with <a href="../UGens/Playback and Recording/PlayBuf.html"><span class="s2">PlayBuf</span></a>, <a href="../UGens/Playback and Recording/RecordBuf.html"><span class="s2">RecordBuf</span></a>, <a href="../UGens/Playback and Recording/DiskIn.html"><span class="s2">DiskIn</span></a>, <a href="../UGens/Playback and Recording/DiskOut.html"><span class="s2">DiskOut</span></a>, <a href="../UGens/Oscillators/BufWr.html"><span class="s2">BufWr</span></a>, <a href="../UGens/Oscillators/BufRd.html"><span class="s2">BufRd</span></a>, and other <a href="../UGens/UGen.html"><span class="s2">UGens</span></a>. (See their individual help files for more examples.) Buffers can be freed or altered even while being accessed. See <a href="Server-Architecture.html"><span class="s2">Server-Architecture</span></a> for some technical details.</p>
-<p class="p2"><br></p>
-<p class="p1">Buffer objects should not be created or modified within a <a href="SynthDef.html"><span class="s3">SynthDef</span></a>. If this is needed, see <a href="../UGens/InOut/LocalBuf.html"><span class="s3">LocalBuf</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Buffer Numbers and Allocation</b></p>
-<p class="p2"><br></p>
-<p class="p1">Although the number of buffers on a server is set at the time it is booted, memory must still be allocated within the server app before they can hold values. (At boot time all buffers have a size of 0.)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">Server-side buffers are identified by number, starting from 0. When using Buffer objects, buffer numbers are automatically allocated from the Server's bufferAllocator, unless you explicitly supply one. When you call <b>.free</b> on a Buffer object it will release the buffer's memory on the server, and free the buffer number for future reallocation. See <a href="ServerOptions.html"><span class="s2">ServerOptions</span></a> for details on setting the number of available buffers.</p>
-<p class="p2"><br></p>
-<p class="p1">Normally you should not need to supply a buffer number. You should only do so if you are sure you know what you are doing. Similarly, in normal use you should not need to access the buffer number, since instances of Buffer can be used directly as UGen inputs or Synth args.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Multichannel Buffers</b></p>
-<p class="p2"><br></p>
-<p class="p1">Multichannel buffers interleave their data. Thus the actual number of available values when requesting or setting values by index using methods such as set, setn, get, getn, etc., is equal to numFrames * numChannels. Indices start at 0 and go up to (numFrames * numChannels) - 1. In a two channel buffer for instance, index 0 will be the first value of the first channel, index 1 will be the first value of the second channel, index 2 will be the second value of the first channel, and so on.</p>
-<p class="p2"><br></p>
-<p class="p1">In some cases it is simpler to use multiple single channel buffers instead of a single multichannel one.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Completion Messages and Action Functions</b></p>
-<p class="p2"><br></p>
-<p class="p1">Many buffer operations (such as reading and writing files) are asynchronous, meaning that they will take an arbitrary amount of time to complete. Asynchronous commands are passed to a background thread on the server so as not to steal CPU time from the audio synthesis thread. Since they can last an aribitrary amount of time it is convenient to be able to specify something else that can be done immediately on completion. The ability to do this is implemented in two ways in Buffer's various methods: completion messages and action functions.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">A completion message is a second OSC command which is included in the message which is sent to the server. (See <a href="NodeMessaging.html"><span class="s2">NodeMessaging</span></a> for a discussion of OSC messages.) The server will execute this immediately upon completing the first command. An action function is a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will be evaluated when the client receives the appropriate reply from the server, indicating that the previous command is done. Action functions are therefore inherently more flexible than completion messages, but slightly less efficient due to the small amount of added latency involved in message traffic. Action functions are passed the Buffer object as an argument when they are evaluated.</p>
-<p class="p2"><br></p>
-<p class="p1">With Buffer methods that take a completion message, it is also possible to pass in a function that returns an OSC message. As in action functions this will be passed the Buffer as an argument. It is important to understand however that this function will be evaluated after the Buffer object has been created (so that its bufnum and other details are accessible), but <i>before</i> the corresponding message is sent to the server.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Bundling</b></p>
-<p class="p2"><br></p>
-<p class="p1">Many of the methods below have two versions: a regular one which sends its corresponding message to the server immediately, and one which returns the message in an <a href="../Collections/Array.html"><span class="s2">Array</span></a> so that it can be added to a bundle. It is also possible to capture the messages generated by the regular methods using Server's automated bundling capabilities. See <a href="Server.html"><span class="s2">Server</span></a> and <a href="bundledCommands.html"><span class="s2">bundledCommands</span></a> for more details.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Accessing Instance Variables</b></p>
-<p class="p2"><br></p>
-<p class="p5">The following variables have getter methods.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>server</b> - Returns the Buffer's <a href="Server.html"><span class="s2">Server</span></a> object.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>bufnum</b> - Returns the buffer number of the corresponding server-side buffer. In normal use you should not need to access this value, since instances of Buffer can be used directly as UGen inputs or Synth args.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>numFrames</b> - Returns the number of sample frames in the corresponding server-side buffer. Note that multichannel buffers interleave their samples, so when dealing with indices in methods like get and getn, the actual number of available values is numFrames * numChannels.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>numChannels</b> - Returns the number of channels in the corresponding server-side buffer.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>sampleRate</b> - Returns the sample rate of the corresponding server-side buffer.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>path</b> - Returns a string containing the path of a soundfile that has been loaded into the corresponding server-side buffer.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s,44100 * 8.0,2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.bufnum.postln;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Creation with Immediate Memory Allocation</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>*alloc(server, numFrames, numChannels, completionMessage, bufnum)</b></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create and return a Buffer and immediately allocate the required memory on the server. The buffer's values will be initialised to 0.0.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to allocate the buffer. The default is the default <a href="Server.html"><span class="s2">Server</span></a>.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to allocate. Actual memory use will correspond to numFrames * numChannels.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels</b> - The number of channels for the Buffer. The default is 1.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufnum</b> - An explicitly specified buffer number. Generally this is not needed.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Allocate 8 second stereo buffer</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, s.sampleRate * 8.0, 2);</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>*<b>allocConsecutive(numBufs, server, numFrames, numChannels, completionMessage, bufnum)<span class="Apple-converted-space"> </span></b></p>
-<p class="p15"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Allocates a range of consecutively-numbered buffers, for use with UGens like <a href="../UGens/Oscillators/VOsc.html"><span class="s2">VOsc</span></a> and <a href="../UGens/Oscillators/VOsc3.html"><span class="s2">VOsc3</span></a><b> </b>that require a contiguous block of buffers, and returns an array of corresponding Buffer objects.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numBufs</b> - The number of consecutively indexed buffers to allocate.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to allocate the buffers. The default is the default <a href="Server.html"><span class="s2">Server</span></a>.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to allocate in each buffer. Actual memory use will correspond to numFrames * numChannels.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels</b> - The number of channels for each buffer. The default is 1.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed each Buffer and its index in the array as arguments when evaluated.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufnum</b> - An explicitly specified buffer number for the initial buffer. Generally this is not needed.</p>
-<p class="p15"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>N.B.</b> You must treat the array of Buffers as a group. Freeing them individually or resuing them can result in allocation errors. You should free all Buffers in the array at the same time by iterating over it with <b>do</b>.</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// allocate an array of Buffers and fill them with different harmonics</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.allocConsecutive(8, s, 4096, 1, { <span class="s2">|buf, i|</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>buf.sine1Msg((1..((i+1)*6)).reciprocal) <span class="s6">// completion Messages</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = { <span class="s2">VOsc</span>.ar(<span class="s2">SinOsc</span>.kr(0.5, 0).range(b.first.bufnum + 0.1, b.last.bufnum - 0.1),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[440, 441], 0, 0.2) }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.free;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// iterate over the array and free it</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>b.do(<span class="s2">_</span>.free);</p>
-<p class="p15"><br></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*read(server, path, startFrame, numFrames, action, bufnum)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Allocate a buffer and immediately read a soundfile into it. This method sends a query message as a completion message so that the Buffer's instance variables will be updated automatically. <b>N.B.</b> You cannot rely on the buffer's instance variables being instantly updated, as there is a small amount of latency involved. <b>action</b> will be evaluated upon receipt of the reply to the query, so use this in cases where access to instance variables is needed.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to allocate the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path</b> - A <b>String</b> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to read. The default is -1, which will read the whole file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <b>Function</b> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufnum</b> - An explicitly specified buffer number. Generally this is not needed.</p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// read a soundfile</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p21"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s5">.read(s, </span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now play it</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">SynthDef</span>(<span class="s8">\help_Buffer</span>, { <span class="s2">arg</span> out = 0, bufnum;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar( out,</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">PlayBuf</span>.ar(1, bufnum, <span class="s2">BufRateScale</span>.kr(bufnum))</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s,[<span class="s8">\bufnum</span>, b]);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// with an action function</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// note that the vars are not immediately up-to-date</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.read(s, <span class="s9">"sounds/a11wlk01.wav"</span>, action: { <span class="s2">arg</span> buffer;<span class="Apple-converted-space"> </span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s9">"After update:"</span> + buffer.numFrames).postln;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PlayBuf</span>.ar(1, buffer, <span class="s2">BufRateScale</span>.kr(buffer)) }.play;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s9">"Before update:"</span> + b.numFrames).postln;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p18"><br></p>
-<p class="p10"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*readChannel(server, path, startFrame, numFrames, channels, action, bufnum)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>As <b>*read</b> above, but takes an Array of channel indices to read in, allowing one to read only the selected channels.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to allocate the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path</b> - A <b>String</b> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to read. The default is -1, which will read the whole file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>channels</b> - An <b>Array</b> of channels to be read from the soundfile. Indices start from zero. These will be read in the order provided.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <b>Function</b> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufnum</b> - An explicitly specified buffer number. Generally this is not needed.</p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// first a standard read so we can see what's in the file</p>
-<p class="p21"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s5">.read(s, </span>"sounds/SinedPink.aiff"<span class="s5">);</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// "sounds/SinedPink.aiff" contains SinOsc on left, PinkNoise on right</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.plot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Now just the sine</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.readChannel(s, <span class="s9">"sounds/SinedPink.aiff"</span>, channels: [0]);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.plot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Now just the pink noise</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.readChannel(s, <span class="s9">"sounds/SinedPink.aiff"</span>, channels: [1]);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.plot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Now reverse channel order</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.readChannel(s, <span class="s9">"sounds/SinedPink.aiff"</span>, channels: [1, 0]);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.plot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p18"><br></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*readNoUpdate(server, path, startFrame, numFrames, completionMessage, bufnum)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>As <b>*read</b> above, but without the automatic update of instance variables. Call <b>updateInfo </b>(see below) to update the vars.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to allocate the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path</b> - A <b>String</b> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to read. The default is -1, which will read the whole file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufnum</b> - An explicitly specified buffer number. Generally this is not needed.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// with a completion message<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s8">\help_Buffer</span>,{ <span class="s2">arg</span> out=0, bufnum;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar( out,</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">PlayBuf</span>.ar(1,bufnum,<span class="s2">BufRateScale</span>.kr(bufnum))</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = <span class="s2">Synth</span>.basicNew(<span class="s8">\help_Buffer</span>); <span class="s6">// not sent yet</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.readNoUpdate(s,<span class="s9">"sounds/a11wlk01.wav"</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>completionMessage: { <span class="s2">arg</span> buffer;</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// synth add its s_new msg to follow<span class="Apple-converted-space"> </span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// after the buffer read completes</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y.newMsg(s,[<span class="s8">\bufnum</span>, buffer],<span class="s8">\addToTail</span>)</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// note vars not accurate</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.numFrames; <span class="s6">// nil</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.updateInfo;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.numFrames; <span class="s6">// 188893</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// when done...</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y.free;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;<span class="Apple-tab-span">	</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>*cueSoundFile(server, path, startFrame, numChannels, bufferSize, completionMessage)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Allocate a buffer and preload a soundfile for streaming in using <a href="../UGens/Playback and Recording/DiskIn.html"><span class="s2">DiskIn</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to allocate the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path</b> - A <b>String</b> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The frame of the soundfile that <a href="../UGens/Playback and Recording/DiskIn.html"><span class="s2">DiskIn</span></a> will start playing at.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels</b> - The number of channels in the soundfile.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufferSize</b> - This must be a multiple of<span class="Apple-converted-space">  </span>(2 * the server's block size). 32768 is the default and is suitable for most cases.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s8">\help_Buffer_cue</span>,{ <span class="s2">arg</span> out=0,bufnum;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">DiskIn</span>.ar( 1, bufnum )</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.makeBundle(<span class="s2">nil</span>, {</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.cueSoundFile(s,<span class="s9">"sounds/a11wlk01-44_1.aiff"</span>, 0, 1);</p>
-<p class="p22"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = </span><span class="s2">Synth</span><span class="s5">(</span>\help_Buffer_cue<span class="s5">, [</span>\bufnum<span class="s5">, b], s);</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free; y.free;</p>
-<p class="p18"><br></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*loadCollection(server, collection, numChannels, action)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Load a large collection into a buffer on the server. Returns a Buffer object. This is accomplished through writing the collection to a <a href="../Files/SoundFile.html"><span class="s2">SoundFile</span></a> and loading it from there. For this reason this method will only work with a server on your local machine. For a remote server use <b>*sendCollection</b>, below. The file is automatically deleted after loading. This allows for larger collections than <b>setn</b>, below, and is in general the safest way to get a large collection into a buffer. The sample rate of the buffer will be the sample rate of the server on which it is created.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to create the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>collection</b> - A subclass of <a href="../Collections/Collection.html"><span class="s2">Collection</span></a> (i.e. an <a href="../Collections/Array.html"><span class="s2">Array</span></a>) containing <i>only</i> floats and integers. Multi-dimensional arrays will not work.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels </b>- The number of channels that the buffer should have. Note that buffers interleave multichannel data. You are responsible for providing an interleaved collection if needed. Multi-dimensional arrays will not work.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <b>Function</b> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s2">FloatArray</span>.fill(44100 * 5.0, {1.0.rand2}); <span class="s6">// 5 seconds of noise</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.loadCollection(s, a);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// test it</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.get(20000,{<span class="s2">|msg|</span> (msg == a[20000]).postln});</p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// play it</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PlayBuf</span>.ar(1, b, <span class="s2">BufRateScale</span>.kr(b), loop: 0) * 0.5 }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free; x.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// interleave a multi-dimensional array</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = <span class="s2">Signal</span>.sineFill(16384, <span class="s2">Array</span>.fill(200, {0}).add(1));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s2">Array</span>.fill(16384, {1.0.rand2});</p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = [</span><span class="s2">Array</span><span class="s5">.newFrom(l), r]; </span>// a multi-dimensional array</p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = m.lace(32768); </span>// interleave the two collections<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.loadCollection(s, m, 2, {<span class="s2">|buf|</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PlayBuf</span>.ar(2, buf, <span class="s2">BufRateScale</span>.kr(buf), loop: 1) * 0.5 }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.plot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*sendCollection(server, collection, numChannels, wait, action)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Stream a large collection into a buffer on the server using multiple <b>setn</b> messages. Returns a Buffer object. This allows for larger collections than <b>setn</b>, below. This is not as safe as <b>*loadCollection</b>, above, but will work with servers on remote machines. The sample rate of the buffer will be the sample rate of the server on which it is created.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to create the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>collection</b> - A subclass of <a href="../Collections/Collection.html"><span class="s2">Collection</span></a> (i.e. an <a href="../Collections/Array.html"><span class="s2">Array</span></a>) containing <i>only</i> floats and integers. Multi-dimensional arrays will not work.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels </b>- The number of channels that the buffer should have. Note that buffers interleave multichannel data. You are responsible for providing an interleaved collection if needed. Multi-dimensional arrays will not work. See the example in <b>*loadCollection</b>, above, to see how to do this.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>wait</b> - An optional wait time between sending <b>setn</b> messages. In a high traffic situation it may be safer to set this to something above zero, which is the default.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(2000000,{ rrand(0.0,1.0) }); <span class="s6">// a LARGE collection</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.sendCollection(s, a, 1, 0, {<span class="s2">arg</span> buf; <span class="s9">"finished"</span>.postln;});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.get(1999999, {<span class="s2">|msg|</span> (msg == a[1999999]).postln});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*loadDialog(server, startFrame, numFrames, action, bufnum)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>As <b>*read</b> above, but gives you a load dialog window to browse for a file. Cocoa and SwingOSC compatible.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to allocate the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to read. The default is -1, which will read the whole file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <b>Function</b> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufnum</b> - An explicitly specified buffer number. Generally this is not needed.</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p20"><span class="s4"><b><span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.loadDialog(s, action: { <span class="s2">arg</span> buffer;<span class="Apple-converted-space"> </span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PlayBuf</span>.ar(buffer.numChannels, buffer, <span class="s2">BufRateScale</span>.kr(buffer)) }.play;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p12"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b>Creation without Immediate Memory Allocation</b></p>
-<p class="p4"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>*new(server, numFrames, numChannels, bufnum)</b></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create and return a new Buffer object, without immediately allocating the corresponding memory on the server. This combined with 'message' methods can be flexible with bundles.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-converted-space"> </span></b> - The server on which to allocate the buffer. The default is the default <a href="Server.html"><span class="s2">Server</span></a>.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to allocate. Actual memory use will correspond to numFrames * numChannels.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels</b> - The number of channels for the Buffer. The default is 1.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufnum</b> - An explicitly specified buffer number. Generally this is not needed.</p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.new(s, 44100 * 8.0, 2);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = <span class="s2">Buffer</span>.new(s, 44100 * 4.0, 2);</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.query; </span>// numFrames = 0</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(<span class="s2">nil</span>, b.allocMsg, c.allocMsg); <span class="s6">// sent both at the same time</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.query; </span>// now it's right</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.query;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free; c.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>alloc(completionMessage)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>allocMsg(completionMessage)</b></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Allocate the necessary memory on the server for a Buffer previously created with <b>*new</b>, above.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.new(s, 44100 * 8.0, 2);</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.query; </span>// numFrames = 0</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.alloc;</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.query; </span>// numFrames = 352800</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p12"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>allocRead(argpath, startFrame, numFrames, completionMessage)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>allocReadMsg(argpath, startFrame, numFrames, completionMessage)</b></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Read a soundfile into a buffer on the server for a Buffer previously created with <b>*new</b>, above. Note that this will not autoupdate instance variables. Call <b>updateInfo</b> in order to do this.</p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>argpath</b> - A <a href="../Collections/String.html"><span class="s2">String</span></a> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to read. The default is -1, which will read the whole file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.new(s);</p>
-<p class="p21"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.allocRead(</span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PlayBuf</span>.ar(1, b, <span class="s2">BufRateScale</span>.kr(b), loop: 1) * 0.5 }.play;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p12"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>allocReadChannel(argpath, startFrame, numFrames, channels, completionMessage)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>allocReadChannelMsg(argpath, startFrame, numFrames, channels, completionMessage)</b></p>
-<p class="p18"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>As <b>allocRead</b> above, but allows you to specify which channels to read.</p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>argpath</b> - A <a href="../Collections/String.html"><span class="s2">String</span></a> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to read. The default is -1, which will read the whole file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>channels</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a> of channels to be read from the soundfile. Indices start from zero. These will be read in the order provided.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.new(s);</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// read only the first channel (a Sine wave) of a stereo file</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.allocReadChannel(<span class="s9">"sounds/SinedPink.aiff"</span>, channels: [0]);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PlayBuf</span>.ar(1, b, <span class="s2">BufRateScale</span>.kr(b), loop: 1) * 0.5 }.play;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;<span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Instance Methods</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>read(path, fileStartFrame, numFrames, bufStartFrame, leaveOpen, action);</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><b>readMsg(path, fileStartFrame, numFrames, bufStartFrame, leaveOpen, completionMessage);</b></p>
-<p class="p12"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Read a soundfile into an already allocated buffer. Note that if the number of frames in the file is greater than the number of frames in the buffer, it will be truncated. Note that <b>readMsg</b> will not auto-update instance variables. Call <b>updateInfo </b>in order to do this.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>path</b> - A <a href="../Collections/String.html"><span class="s2">String</span></a> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fileStartFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to read. The default is -1, which will read the whole file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufStartFrame</b> - The index of the frame in the buffer at which to start reading. The default is 0, which is the beginning of the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>leaveOpen</b> - A boolean indicating whether or not the Buffer should be left 'open'. For use with <a href="../UGens/Playback and Recording/DiskIn.html"><span class="s2">DiskIn</span></a> you will want this to be true, as the buffer will be used for streaming the soundfile in from disk. (For this the buffer must have been allocated with a multiple of (2 * synth block size).<span class="Apple-converted-space">  </span>A common number is 32768 frames. <b>cueSoundFile</b> below, provides a simpler way of doing this.) The default is false which is the correct value for all other cases.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <b>Function</b> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>readChannel(path, fileStartFrame, numFrames, bufStartFrame, leaveOpen, channels, action);</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><b>readChannelMsg(path, fileStartFrame, numFrames, bufStartFrame, leaveOpen, channels, completionMessage);</b></p>
-<p class="p12"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>As <b>read</b> above, but allows you to specify which channels to read.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>path</b> - A <a href="../Collections/String.html"><span class="s2">String</span></a> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>fileStartFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to read. The default is -1, which will read the whole file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bufStartFrame</b> - The index of the frame in the buffer at which to start reading. The default is 0, which is the beginning of the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>leaveOpen</b> - A boolean indicating whether or not the Buffer should be left 'open'. For use with <a href="../UGens/Playback and Recording/DiskIn.html"><span class="s2">DiskIn</span></a> you will want this to be true, as the buffer will be used for streaming the soundfile in from disk. (For this the buffer must have been allocated with a multiple of (2 * synth block size).<span class="Apple-converted-space">  </span>A common number is 32768 frames. <b>cueSoundFile</b> below, provides a simpler way of doing this.) The default is false which is the correct value for all other cases.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>channels</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a> of channels to be read from the soundfile. Indices start from zero. These will be read in the order provided. The number of channels requested must match this Buffer's <b>numChannels</b>.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>cueSoundFile(path, startFrame, completionMessage)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><b>cueSoundFileMsg(path, startFrame, completionMessage)</b></p>
-<p class="p12"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A convenience method to cue a soundfile into the buffer for use with a <a href="../UGens/Playback and Recording/DiskIn.html"><span class="s2">DiskIn</span></a>. The buffer must have been allocated with a multiple of (2 * the server's block size) frames.<span class="Apple-converted-space">  </span>A common size is 32768 frames.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path</b> - A <a href="../Collections/String.html"><span class="s2">String</span></a> representing the path of the soundfile to be read.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The first frame of the soundfile to read. The default is 0, which is the beginning of the file.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p19"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//create with cueSoundFile class method</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.cueSoundFile(s, <span class="s9">"sounds/a11wlk01-44_1.aiff"</span>, 0, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">DiskIn</span>.ar(1, b) }.play;<span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.close;<span class="Apple-tab-span">	</span></span>// must call close in between cueing</p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now use like named instance method, but different arguments</p>
-<p class="p23"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.cueSoundFile(</span>"sounds/a11wlk01-44_1.aiff"<span class="s5">);<span class="Apple-tab-span">	</span></span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// have to do all this to clean up properly!<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.close; b.free;<span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>write(path, headerFormat, sampleFormat, numFrames, startFrame, leaveOpen, completionMessage)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>writeMsg(path, headerFormat, sampleFormat, numFrames, startFrame, leaveOpen, completionMessage)</b></p>
-<p class="p12"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Write the contents of the buffer to a file. See <a href="../Files/SoundFile.html"><span class="s2">SoundFile</span></a> for information on valid values for <b>headerFormat</b> and <b>sampleFormat</b>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>path</b> - A <b>String</b> representing the path of the soundfile to be written.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If no path is given, Buffer writes into the default recording directory with a generic name.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames </b>- The number of frames to write. The default is -1, which will write the whole buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame</b> - The index of the frame in the buffer from which to start writing. The default is 0, which is the beginning of the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>leaveOpen</b> - A boolean indicating whether or not the Buffer should be left 'open'. For use with <a href="../UGens/Playback and Recording/DiskOut.html"><span class="s2">DiskOut</span></a> you will want this to be true. The default is false which is the correct value for all other cases.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>free(completionMessage)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>freeMsg(completionMessage)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Release the buffer's memory on the server and return the bufferID back to the server's buffer number allocator for future reuse.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>zero(completionMessage)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span><b>zeroMsg(completionMessage)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sets all values in this buffer to 0.0.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>set(index,float ... morePairs)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>setMsg(index,float ... morePairs)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the value in the buffer at <b>index</b> to be equal to <b>float</b>. Additional pairs of indices and floats may be included in the same message. Note that multichannel buffers interleave their sample data, therefore the actual number of available values is equal to numFrames * numChannels. Indices start at 0.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 4, 2);</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.set(0, 0.2, 1, 0.3, 7, 0.4); </span>// set the values at indices 0, 1, and 7.</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.getn(0, 8, {<span class="s2">|msg|</span> msg.postln});</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;<span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>setn(startAt,values ... morePairs)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>setnMsg(startAt,values ... morePairs)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set a contiguous range of values in the buffer starting at the index <b>startAt</b> to be equal to the <a href="../Collections/Array.html"><span class="s2">Array</span></a> of floats or integers, <b>values</b>. The number of values set corresponds to the size of <b>values</b>. Additional pairs of starting indices and arrays of values may be included in the same message. Note that multichannel buffers interleave their sample data, therefore the actual number of available values is equal to numFrames * numChannels. You are responsible for interleaving the data in <b>values</b> if needed. Multi-dimensional arrays will not work. Indices start at 0.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>N.B.</b> The maximum number of values that you can set with a single setn message is 1633 when the server is using UDP as its communication protocol. Use <b>loadCollection</b> and <b>sendCollection</b> to set larger ranges of values.</p>
-<p class="p18"><br></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s,16);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.setn(0, <span class="s2">Array</span>.fill(16, { rrand(0,1) }));</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.getn(0, b.numFrames, {<span class="s2">|msg|</span> msg.postln});</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.setn(0, [1, 2, 3], 4, [1, 2, 3]);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.getn(0, b.numFrames, {<span class="s2">|msg|</span> msg.postln});</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p9"><br></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span><b>loadCollection(collection, startFrame, action)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Load a large collection into this buffer. This is accomplished through writing the collection to a <a href="../Files/SoundFile.html"><span class="s2">SoundFile</span></a> and loading it from there. For this reason this method will only work with a server on your local machine. For a remote server use <b>sendCollection</b>, below. The file is automatically deleted after loading. This allows for larger collections than <b>setn</b>, above, and is in general the safest way to get a large collection into a buffer. The sample rate of the buffer will be the sample rate of the server on which it was created. The number of channels and frames will have been determined when the buffer was allocated. You are responsible for making sure that the size of <b>collection</b> is not greater than <b>numFrames</b>, and for interleaving any data if needed.<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>collection</b> - A subclass of <a href="../Collections/Collection.html"><span class="s2">Collection</span></a> (i.e. an <a href="../Collections/Array.html"><span class="s2">Array</span></a>) containing <i>only</i> floats and integers. Multi-dimensional arrays will not work.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame </b>- The index of the frame at which to start loading the collection. The default is 0, which is the start of the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <b>Function</b> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v = <span class="s2">Signal</span>.sineFill(128, 1.0/[1,2,3,4,5,6]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 128);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.loadCollection(v, action: {<span class="s2">|buf|</span><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PlayBuf</span>.ar(buf.numChannels, buf, <span class="s2">BufRateScale</span>.kr(buf), loop: 1)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 0.2 }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// interleave a multi-dimensional array</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l = <span class="s2">Signal</span>.sineFill(16384, <span class="s2">Array</span>.fill(200, {0}).add(1));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r = <span class="s2">Array</span>.fill(16384, {1.0.rand2});</p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = [</span><span class="s2">Array</span><span class="s5">.newFrom(l), r]; </span>// a multi-dimensional array</p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m = m.lace(32768); </span>// interleave the two collections<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 16384, 2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.loadCollection(m, 0, {<span class="s2">|buf|</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PlayBuf</span>.ar(2, buf, <span class="s2">BufRateScale</span>.kr(buf), loop: 1) * 0.5 }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.plot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s7"><span class="Apple-tab-span">	</span></span><b>sendCollection(collection, startFrame, wait, action)</b></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Stream a large collection into this buffer using multiple <b>setn</b> messages. This allows for larger collections than <b>setn</b>. This is not as safe as <b>loadCollection</b>, above, but will work with servers on remote machines. The sample rate of the buffer will be the sample rate of the server on which it is created.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>collection</b> - A subclass of <a href="../Collections/Collection.html"><span class="s2">Collection</span></a> (i.e. an <a href="../Collections/Array.html"><span class="s2">Array</span></a>) containing <i>only</i> floats and integers. Multi-dimensional arrays will not work.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>startFrame </b>- The index of the frame at which to start streaming in the collection. The default is 0, which is the start of the buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>wait</b> - An optional wait time between sending <b>setn</b> messages. In a high traffic situation it may be safer to set this to something above zero, which is the default.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(2000000,{ rrand(0.0,1.0) });</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 2000000);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = b.sendCollection(a, action: {<span class="s2">arg</span> buf; <span class="s9">"finished"</span>.postln;});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.get(1999999, {<span class="s2">|msg|</span> (msg == a[1999999]).postln});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>get(index, action)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>getMsg(index)</b></p>
-<p class="p12"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Send a message requesting the value in the buffer at <b>index</b>. <b>action</b> is a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will be passed the value as an argument and evaluated when a reply is received.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s,16);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.setn(0, <span class="s2">Array</span>.fill(16, { rrand(0.0, 1.0) }));</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.get(0, {<span class="s2">|msg|</span> msg.postln});</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>getn(index, count, action)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>getMsg(index, count)</b></p>
-<p class="p12"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Send a message requesting the a contiguous range of values of size <b>count</b> starting from <b>index</b>. <b>action</b> is a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will be passed the values in an <b>Array</b> as an argument and evaluated when a reply is received. See <b>setn</b> above for an example.<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>N.B.</b> The maximum number of values that you can get with a single getn message is 1633 when the server is using UDP as its communication protocol. Use <b>loadToFloatArray</b> and <b>getToFloatArray</b> to get larger ranges of values.</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>loadToFloatArray(index, count, action)</b></p>
-<p class="p12"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Write the buffer to a file and then load it into a <a href="../Collections/FloatArray.html"><span class="s2">FloatArray</span></a>. This is safer than <b>getToFloatArray</b> but only works with a server on your local machine. In general this is the safest way to get a large range of values from a server buffer into the client app.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index</b> - The index in the buffer to begin writing from. The default is 0.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>count</b> - The number of values to write. The default is -1, which writes from index until the end of the<span class="Apple-converted-space">  </span>buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <b>Function</b> which will be passed the resulting <a href="../Collections/FloatArray.html"><span class="s2">FloatArray</span></a> as an argument and evaluated when loading is finished.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p23"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s5">.read(s,</span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// same as Buffer.plot</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.loadToFloatArray(action: { <span class="s2">arg</span> array; a = array; {a.plot;}.defer; <span class="s9">"done"</span>.postln;});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p15"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>getToFloatArray(index, count, wait, timeout, action)</b></p>
-<p class="p12"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Stream the buffer to the client using a series of <b>getn</b> messages and put the results into a <a href="../Collections/FloatArray.html"><span class="s2">FloatArray</span></a>. This is more risky than <b>loadToFloatArray</b> but does works with servers on remote machines. In high traffic situations it is possible for data to be lost. If this method has not received all its replies by <b>timeout</b> it will post a warning saying that the method has failed. In general use <b>loadToFloatArray</b> instead wherever possible.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index</b> - The index in the buffer to begin writing from. The default is 0.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>count</b> - The number of values to write. The default is -1, which writes from index until the end of the<span class="Apple-converted-space">  </span>buffer.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>wait</b> - The amount of time in seconds to wait between sending getn messages. Longer times are safer. The default is 0.01 seconds which seems reliable under normal circumstances. A setting of 0 is <i>not</i><b> </b>recommended.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>timeout</b> - The amount of time in seconds after which to post a warning if all replies have not yet been received. the default is 3.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will be passed the resulting <a href="../Collections/FloatArray.html"><span class="s2">FloatArray</span></a> as an argument and evaluated when all replies have been received.</p>
-<p class="p12"><br></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p23"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s5">.read(s,</span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// like Buffer.plot</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.getToFloatArray(wait:0.01,action:{<span class="s2">arg</span> array; a = array; {a.plot;}.defer;<span class="s9">"done"</span>.postln;});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p2"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>normalize(newmax, asWavetable)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>normalizeMsg(newmax, asWavetable)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Normalizes the buffer so that the peak absolute value is <b>newmax</b> (which defaults to 1). If your buffer is in <a href="../Collections/Wavetable.html"><span class="s2">Wavetable</span></a> format then set the <b>asWavetable</b> argument to true.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>fill(startAt, numFrames, value ... more)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>fillMsg(startAt, numFrames, value ... more)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Starting at the index <b>startAt</b>, set the next <b>numFrames</b> to value. Additional ranges may be included in the same message.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>copyData(buf, dstStartAt, srcStartAt, numSamples)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>copyMsg(buf, dstStartAt, srcStartAt, numSamples)</b></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Starting at the index <b>srcSamplePos</b>, copy <b>numSamples</b> samples from this to the destination buffer <b>buf</b> starting at <b>dstSamplePos</b>. If numSamples is negative, the maximum number of samples possible is copied. The default is start from 0 in the source and copy the maximum number possible starting at 0 in the destination.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Note:</b> This method used to be called <b>copy</b>, but this conflicts with the method for object-copying. Therefore Buffer:copy is now intended to create a copy of the client-side Buffer object. Its use for copying buffer data on the server is deprecated. If you see a deprecation warning, the data will still be copied on the server and your code will still work, but you should update your code for the new method name.</p>
-<p class="p12"><br></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s8">\help_Buffer_copy</span>, { <span class="s2">arg</span> out=0, buf;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Line</span>.ar(0, 0, dur: <span class="s2">BufDur</span>.kr(buf), doneAction: 2); <span class="s6">// frees itself</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">PlayBuf</span>.ar(1, buf));</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p21"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s5">.read(s, </span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = <span class="s2">Buffer</span>.alloc(s, 120000);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p18"><br></p>
-<p class="p22"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s5">(</span>\help_Buffer_copy<span class="s5">, [</span>\buf<span class="s5">, b]);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// copy the whole buffer</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.copyData(c);</p>
-<p class="p22"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s5">(</span>\help_Buffer_copy<span class="s5">, [</span>\buf<span class="s5">, c]);</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// copy some samples</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.zero;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.copyData(c, numSamples: 4410);</p>
-<p class="p22"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s5">(</span>\help_Buffer_copy<span class="s5">, [</span>\buf<span class="s5">, c]);</span></p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// buffer "compositing"</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.zero;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.copyData(c, numSamples: 4410);</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.copyData(c, dstStartAt: 4410, numSamples: 15500);</p>
-<p class="p22"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s5">(</span>\help_Buffer_copy<span class="s5">, [</span>\buf<span class="s5">, c]);</span></p>
-<p class="p12"><br></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c.free;</p>
-<p class="p12"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>close(completionMessage)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>closeMsg(completionMessage)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>After using a Buffer with a <a href="../UGens/Playback and Recording/DiskOut.html"><span class="s2">DiskOut</span></a> or <a href="../UGens/Playback and Recording/DiskIn.html"><span class="s2">DiskIn</span></a>, it is necessary to close the soundfile. Failure to do so can cause problems.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>completionMessage </b>- A valid OSC message or a <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which will return one. A Function will be passed this Buffer as an argument when evaluated.</p>
-<p class="p12"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>plot(name, bounds, minval = -1.0, maxval = 1.0, parent)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Plot the contents of the Buffer in a GUI window. OSX only.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>name </b>- The name of the resulting window.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>bounds</b> - An instance of <a href="../Geometry/Rect.html"><span class="s2">Rect</span></a> determining the size of the resulting view.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>minval</b> - the minimum value in the plot</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>maxval</b> - the maximum value in the plot</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>parent</b> - a window to place the plot in. If nil, one will be created for you</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p23"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s5">.read(s,</span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.plot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>play(loop, mul)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Plays the contents of the buffer on the server and returns a corresponding <a href="Synth.html"><span class="s2">Synth</span></a>.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>loop </b>- A Boolean indicating whether or not to loop playback. If false the synth will automatically be freed when done. The default is false.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>mul</b> - A value by which to scale the output. The default is 1.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p23"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s5">.read(s,</span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p16"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.play; </span>// frees itself</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = b.play(<span class="s2">true</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p8"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>query</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sends a b_query message to the server, asking for a description of this buffer. The results are posted to the post window. Does not update instance vars.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><b>updateInfo(action)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Sends a b_query message to the server, asking for a description of this buffer. Upon reply this Buffer's instance variables are automatically updated.</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>action</b> - A <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> to be evaluated once the file has been read and this Buffer's instance variables have been updated. The function will be passed this Buffer as an argument.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.readNoUpdate(s, <span class="s9">"sounds/a11wlk01.wav"</span>);</p>
-<p class="p19"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.numFrames; </span>// incorrect, shows nil</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.updateInfo({<span class="s2">|buf|</span> buf.numFrames.postln; }); <span class="s6">// now it's right</span></p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Buffer Fill Commands</b></p>
-<p class="p18"><br></p>
-<p class="p1">These correspond to the various b_gen OSC Commands, which fill the buffer with values for use. See <a href="Server-Command-Reference.html"><span class="s2">Server-Command-Reference</span></a> for more details.</p>
-<p class="p18"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>gen(genCommand, genArgs, normalize, asWavetable, clearFirst)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>genMsg(genCommand, genArgs, normalize, asWavetable, clearFirst)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This is a generalized version of the commands below.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>genCommand </b>- A <a href="../Collections/String.html"><span class="s2">String</span></a> indicating the name of the command to use. See <a href="Server-Command-Reference.html"><span class="s2">Server-Command-Reference</span></a> for a list of valid command names.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>genArgs</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a> containing the corresponding arguments to the command.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>normalize</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to normalize the buffer to a peak value of 1.0. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>asWavetable</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to write to the buffer in wavetable format so that it can be read by interpolating oscillators. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clearFirst</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to clear the buffer before writing. The default is true.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>sine1(amps, normalize, asWavetable, clearFirst)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>sine1Msg(amps, normalize, asWavetable, clearFirst)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Fill this buffer with a series of sine wave harmonics using specified amplitudes.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amps</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a><b> </b>containing amplitudes for the harmonics. The first float value specifies the amplitude of the first partial, the second float value specifies the amplitude of the second partial, and so on.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>normalize</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to normalize the buffer to a peak value of 1.0. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>asWavetable</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to write to the buffer in wavetable format so that it can be read by interpolating oscillators. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clearFirst</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to clear the buffer before writing. The default is true.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.sine1(1.0 / [1, 2, 3, 4], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">Osc</span>.ar(b, 200, 0, 0.5) }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>sine2(freqs, amps, normalize, asWavetable, clearFirst)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>sine2Msg(freqs, amps, normalize, asWavetable, clearFirst)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Fill this buffer with a series of sine wave partials using specified frequencies and amplitudes.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freqs</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a><b> </b>containing frequencies (in cycles per buffer) for the partials.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amps</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a><b> </b>containing amplitudes for the partials. This should contain the same number of items as freqs.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>normalize</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to normalize the buffer to a peak value of 1.0. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>asWavetable</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to write to the buffer in wavetable format so that it can be read by interpolating oscillators. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clearFirst</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to clear the buffer before writing. The default is true.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p20"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.sine2([1.0, 3], [1, 0.5]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">Osc</span>.ar(b, 200, 0, 0.5) }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>sine3(freqs, amps, phases, normalize, asWavetable, clearFirst)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>sine3Msg(freqs, amps, phases, normalize, asWavetable, clearFirst)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Fill this buffer with a series of sine wave partials using specified frequencies, amplitudes, and initial phases.</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freqs</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a><b> </b>containing frequencies (in cycles per buffer) for the partials.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amps</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a><b> </b>containing amplitudes for the partials. This should contain the same number of items as freqs.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>phases</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a><b> </b>containing initial phase for the partials (in radians). This should contain the same number of items as freqs.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>normalize</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to normalize the buffer to a peak value of 1.0. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>asWavetable</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to write to the buffer in wavetable format so that it can be read by interpolating oscillators. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clearFirst</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to clear the buffer before writing. The default is true.</p>
-<p class="p18"><br></p>
-<p class="p18"><br></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>cheby(amplitudes, normalize, asWavetable, clearFirst)</b></p>
-<p class="p11"><b><span class="Apple-tab-span">	</span>chebyMsg(amplitudes, normalize, asWavetable, clearFirst)</b></p>
-<p class="p12"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Fill this buffer with a series of chebyshev polynomials, which can be defined as: cheby(n) = amplitude<span class="Apple-converted-space">  </span>* cos(n * acos(x)). To eliminate a DC offset when used as a waveshaper, the wavetable is offset so that the center value is zero.<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amplitudes</b> - An <a href="../Collections/Array.html"><span class="s2">Array</span></a><b> </b>containing amplitudes for the harmonics. The first float value specifies the amplitude for n = 1, the second float value specifies the amplitude for n = 2, and so on.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>normalize</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to normalize the buffer to a peak value of 1.0. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>asWavetable</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to write to the buffer in wavetable format so that it can be read by interpolating oscillators. The default is true.</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clearFirst</b> - A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to clear the buffer before writing. The default is true.</p>
-<p class="p12"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 512, 1, {<span class="s2">arg</span> buf; buf.chebyMsg([1,0,1,1,0,1])});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = {<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Shaper</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(300, 0, <span class="s2">Line</span>.kr(0,1,6)),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;<span class="s4"><span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><br></p>
-<p class="p3"><b>Cached Buffers</b></p>
-<p class="p8"><br></p>
-<p class="p1">To assist with automatic updates of buffer information (see <b>updateInfo</b> and <b>*read</b>), buffer objects are cached in a collection associated with the Server object hosting the buffers. Freeing a buffer removes it from the cache; quitting the server clears all the cached buffers. (This also occurs if the server crashes unexpectedly.)</p>
-<p class="p2"><br></p>
-<p class="p1">You may access cached buffers using the following methods.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*cachedBufferAt(server, bufnum)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Access a buffer by its number.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*cachedBuffersDo(server, func)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Iterate over all cached buffers. The iteration is not in any order, but will touch all buffers.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">It may be simpler to access them through the server object:</p>
-<p class="p2"><br></p>
-<p class="p1"><b>myServer.cachedBufferAt(bufnum)</b></p>
-<p class="p1"><b>myServer.cachedBuffersDo(func)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">b = <span class="s2">Buffer</span>.alloc(s, 2048, 1);</p>
-<p class="p16"><span class="s2">Buffer</span><span class="s5">.cachedBufferAt(s, 0);<span class="Apple-tab-span">	</span></span>// assuming b has bufnum 0</p>
-<p class="p7">s.cachedBufferAt(0);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// same result</span></p>
-<p class="p7">s.cachedBuffersDo({ <span class="s2">|buf|</span> buf.postln });</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Bus.html b/Help/ServerArchitecture/Bus.html
deleted file mode 100644
index aaca46d..0000000
--- a/Help/ServerArchitecture/Bus.html
+++ /dev/null
@@ -1,260 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0020b2}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0020b2}
-span.s3 {color: #000000}
-span.s4 {color: #426e1c}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.s7 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Bus<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>representation of a bus on the server</b></p>
-<p class="p2"><br></p>
-<p class="p1">The clientside representation of an audio or control bus on a server.<span class="Apple-converted-space">  </span>Encapsulates all the OSC messages a Bus can receive.<span class="Apple-converted-space">  </span>Manages allocation and deallocation of bus indices so that you don't need to worry about conflicts. The number of control busses, audio busses, and input and output busses is fixed and cannot be changed after the server has been booted. For more information see <a href="ClientVsServer.html"><span class="s2">ClientVsServer</span></a> and <a href="Server-Architecture.html"><span class="s2">Server-Architecture</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">Note that using the <b>Bus</b> class to allocate a multichannel bus does not 'create' a multichannel bus, but rather simply reserves a series of adjacent bus indices with the bus' <a href="Server.html"><span class="s2">Server</span></a> object's bus allocators. abus.index simply returns the first of those indices. When using a Bus with an <a href="../UGens/InOut/In.html"><span class="s2">In</span></a> or <a href="../UGens/InOut/Out.html"><span class="s2">Out</span></a> ugen there is nothing to stop you from reading to or writing from a larger range, or from hardcoding to a bus that has been allocated. You are responsible for making sure that the number of channels match and that there are no conflicts.</p>
-<p class="p3"><br></p>
-<p class="p1">Bus objects should not be created or modified within a <a href="SynthDef.html"><span class="s2">SynthDef</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>Note:</b> The lowest <i>n</i> bus indices are reserved for hardware output and input, where <i>n</i> = server.options.numOutputBusChannels + server.options.numInputBusChannels.</p>
-<p class="p3"><br></p>
-<p class="p1">Hardware output buses: 0 .. (numOutputBusChannels - 1)</p>
-<p class="p1">Hardware input buses: numOutputBusChannels .. (numOutputBusChannels + numInputBusChannels - 1)</p>
-<p class="p1">First private bus index: numOutputBusChannels + numInputBusChannels</p>
-<p class="p3"><br></p>
-<p class="p1">Do not try to use hardware I/O buses as private buses.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Class Methods</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Bus.control(server, numChannels);</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Allocate a control bus on the server. <span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Defaults: default server, 1 channel.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Bus.audio(server, numChannels);</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Allocate an audio bus on the server.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Defaults: default server, 1 channel.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Bus.alloc(rate, server, numChannels);</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Allocate a bus of either rate as specified by the symbols:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\control or \audio</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Bus.new(rate, index, numChannels);</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>This method does not allocate a bus index, but assumes that you</p>
-<p class="p1"><span class="Apple-tab-span">	</span>already have allocated the appropriate bus index and can supply it</p>
-<p class="p1"><span class="Apple-tab-span">	</span>yourself.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Bus.newFrom(bus, offset, numChannels=1);</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>This method creates a new Bus that is a subset of the bus. The bus will be at the same rate as the input bus.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>offset is the index into the given bus. numChannels is the desired number of channels.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>If the combination of offset and numChannels is outside the input bus' range, an error will be thrown.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>index </b>-<b> </b>Get the Bus' index. Normally you should not need to do this since instances of Bus can be passed directly as UGen inputs or Synth args.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>free</b> - Return the bus' indices to the server's bus allocator so they can be reallocated.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>rate</b> - Get the Bus' rate. This is a symbol, either \control or \audio.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>numChannels </b>- Get the Bus' number of channels.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>server</b> - Get the Bus' server object.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>asMap</b> - Returns a symbol consisting of the letter 'c' or 'a' (for control or audio) followed by the bus's index. This may be used when setting a synth node's control inputs to map the input to the control bus. See the <a href="Node.html"><span class="s2">Node</span></a> help file for more information on mapping controls to buses.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6">(</p>
-<p class="p6">a = <span class="s2">Bus</span>.control(s, 1).set(440);</p>
-<p class="p6">b = <span class="s2">Bus</span>.control(s, 1).set(0.01);</p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p7">SynthDef<span class="s3">(</span><span class="s4">\rlpf</span><span class="s3">, { </span>|ffreq, rq|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, <span class="s2">RLPF</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.2), ffreq, rq))</p>
-<p class="p6">}).play(s, [<span class="s4">\ffreq</span>, a.asMap, <span class="s4">\rq</span>, b.asMap]);</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p1"><b>subBus(offset,numChannels) </b>-<b> </b>Get a new Bus that is a subset of this bus (see <b>*newFrom</b>).</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Asynchronous Control Bus Methods</b></p>
-<p class="p3"><br></p>
-<p class="p1">The following commands apply only to control buses and are asynchronous. For synchronous access to control buses one should use the internal server's shared control buses and <a href="../UGens/InOut/SharedIn.html"><span class="s2">SharedIn</span></a> / <a href="../UGens/InOut/SharedOut.html"><span class="s2">SharedOut</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>value_(aFloat) </b>-<b> </b>Set all channels to this float value. This command is asynchronous.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>set(...values) </b>- A list of values for each channel of the control bus.<span class="Apple-converted-space">  </span>The list of values supplied should not be greater than the number of channels. This command is asynchronous.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>setn(values) </b>- As <b>set</b> but takes an array as an argument.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>get(action)</b> - Get the current value of this control bus. This command is asynchronous. <b>action </b>is a function that will be evaluated when the server responds, with the current value of the bus passed as an argument. This will be a float for a single channel bus, or an array of floats for a multichannel bus. The default action posts the bus values.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>getn(count, action)</b> - Get the current values of this control bus. This command is asynchronous. <b>count</b> is the number of channels to read, starting from this bus' first channel. <b>action </b>is a function that will be evaluated when the server responds, with the current values of the bus in an array passed as an argument.</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>conveniences for multichannel buses:<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b>setAt(offset, value1, value2, ... valueN) </b>- set the bus value(s) beginning at offset. asynchronous.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>setnAt(pos, values)</b> - set the bus to the list of values supplied. asynchronous.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>setPairs(index1, value1, index2, value2 ... indexN, valueN)</b> - set the bus values by pairs of index, value, index value. asynchronous</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Using Buses like UGens</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>kr(numChannels, offset),</b></p>
-<p class="p1"><b>ar(numChannels, offset)</b> - use a bus like a UGen. The numChannels and offset arguments can be used to get a subset of the bus.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>By default, all the bus channels are used. E.g. in an 8 channel bus,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.kr will return an In ugen reading from all the 8 channels of the bus;<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.kr(4) will return the first four channels, and<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.kr(2, 5) will return two channels, starting from the bus's channels at index 5 and 6.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>OSC Bundle Methods</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>getMsg</b> - Returns a msg of the type /c_get for use in osc bundles.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>getnMsg(count)</b> - Returns a msg of the type /c_getn for use in osc bundles. <b>count</b> is the number of channels to read, starting from this bus' first channel. The default is this bus' numChannels.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>setMsg(... values)</b> - Returns a msg of the type /c_set for use in osc bundles.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>setnMsg(values)</b> - Returns a msg of the type /c_setn for use in osc bundles. <b>values </b>is a an array of values to which adjacent channels should be set, starting at this bus' first channel.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>fillMsg(value)</b> - Returns a msg of the type /c_fill for use in osc bundles. <b>value </b>is the value to which this bus' channels will be set.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p6">s = <span class="s5">Server</span>.local;</p>
-<p class="p6">s.boot;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6">(</p>
-<p class="p8">// something to play with</p>
-<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">\help_Bus</span>, { <span class="s5">arg</span> out=0,ffreq=100;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s5">RLPF</span>.ar(<span class="s5">LFPulse</span>.ar(<span class="s5">SinOsc</span>.kr(0.2, 0, 10, 21), [0,0.1], 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ffreq, 0.1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.clip2(0.4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, x);</p>
-<p class="p6">}).add;</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">x = </span><span class="s5">Synth</span><span class="s3">(</span>\help_Bus<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p8">// get a bus</p>
-<p class="p6">b = <span class="s5">Bus</span>.control(s);</p>
-<p class="p2"><br></p>
-<p class="p8">// map the synth's second input (ffreq) to read</p>
-<p class="p8">// from the bus' output index</p>
-<p class="p6">x.map(1, b);</p>
-<p class="p2"><br></p>
-<p class="p8">// By setting the bus' value you send a /c_fill message</p>
-<p class="p8">// to each channel of the bus setting it to supplied float value</p>
-<p class="p6">b.value = 100;</p>
-<p class="p6">b.value = 1000;</p>
-<p class="p6">b.value = 30;</p>
-<p class="p2"><br></p>
-<p class="p8">// Since this is a single channel bus this has the same effect</p>
-<p class="p6">b.set(300);</p>
-<p class="p6">b.numChannels.postln;</p>
-<p class="p2"><br></p>
-<p class="p8">// multi-channel:<span class="Apple-converted-space">  </span>b.set(300,350);</p>
-<p class="p8">// Get the current value. This is asynchronous so you can't rely on it happening immediately.</p>
-<p class="p6">(</p>
-<p class="p10"><span class="s3">a = </span>"waiting"<span class="s3">;</span></p>
-<p class="p6">b.get({<span class="s5">arg</span> value; a = value; (<span class="s7">"after the server responds a is set to:"</span> + a).postln;});</p>
-<p class="p6">(<span class="s7">"a is now:"</span> + a).postln;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">x.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// buses can also be used with kr or ar like UGens:<span class="Apple-converted-space"> </span></p>
-<p class="p6">(</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s5">SynthDef</span><span class="s3">(</span>\help_Bus<span class="s3">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span> ffreq = b.kr;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">RLPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">LFPulse</span>.ar(<span class="s5">SinOsc</span>.kr(0.2, 0, 10, 21), [0,0.1], 0.1),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ffreq, 0.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).clip2(0.4)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">b.free; </span>// release it so it may be reallocated!</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>// using and setting multichannel buses:<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6">b = <span class="s5">Bus</span>.control(s, 4);</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">x = </span><span class="s5">SynthDef</span><span class="s3">(</span>\helpBusMulti<span class="s3">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span> freqs = b.kr;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, <span class="s5">Splay</span>.ar(<span class="s5">SinOsc</span>.ar(freqs) * <span class="s5">Decay2</span>.ar(<span class="s5">Dust</span>.ar(10 ! 4), 0.001, 0.1)) * 0.5);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// set bus beginning at index 0:<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// none of these methods checks whether the indexes remain<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// within the bus's range.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6">b.set(234, 345, 456, 567);</p>
-<p class="p6">b.getn;</p>
-<p class="p6">b.setn([100, 200, 300, 400]);</p>
-<p class="p6">b.getn;</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// get to individual channels</p>
-<p class="p6">b.setAt(3, 500);</p>
-<p class="p6">b.getn;</p>
-<p class="p6">b.setAt(1, 300, 400);</p>
-<p class="p6">b.getn;</p>
-<p class="p6">b.setnAt(1, [250, 350]);</p>
-<p class="p6">b.getn;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// set by pairs of index, value ...</p>
-<p class="p6">b.setPairs(3, 600, 0, 200);</p>
-<p class="p6">b.getn;</p>
-<p class="p2"><br></p>
-<p class="p6">b.set(300, 500, 700, 900);</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">(<span class="Apple-tab-span">	</span></span>// just get the first 2 channels</p>
-<p class="p9"><span class="s3">x = </span><span class="s5">SynthDef</span><span class="s3">(</span>\helpBusMulti<span class="s3">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, <span class="s5">SinOsc</span>.ar(b.kr(2)) * 0.2);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p6">b.set(300, 303);</p>
-<p class="p6">x.free;</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">(<span class="Apple-tab-span">	</span></span>// just channels[[2, 3]];</p>
-<p class="p9"><span class="s3">y = </span><span class="s5">SynthDef</span><span class="s3">(</span>\helpBusMulti<span class="s3">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, <span class="s5">LFNoise2</span>.ar(b.kr(2, 2)) * 0.2);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p6">b.setAt(2, 1200);</p>
-<p class="p6">b.setAt(3, 2400);</p>
-<p class="p2"><br></p>
-<p class="p6">y.free;</p>
-<p class="p6">b.free;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/ClientVsServer.html b/Help/ServerArchitecture/ClientVsServer.html
deleted file mode 100644
index 6559960..0000000
--- a/Help/ServerArchitecture/ClientVsServer.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #79331d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #000000}
-span.s2 {color: #0022ac}
-span.s3 {color: #002de6}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Client versus Server Architecture and Operations</b></p>
-<p class="p2"><br></p>
-<p class="p3">The name "SuperCollider" is in fact used to indicate five different things (Figure 1):</p>
-<p class="p3"><span class="Apple-tab-span">	</span>1. an audio server<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>2. an audio programming language</p>
-<p class="p3"><span class="Apple-tab-span">	</span>3. an interpreter for the language, i.e. a program able to interpret it</p>
-<p class="p3"><span class="Apple-tab-span">	</span>4. the interpreter program as a client for the server</p>
-<p class="p3"><span class="Apple-tab-span">	</span>5. the application including the two programs and providing mentioned functionalities</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><img src="attachments/ClientVsServer/structureEn.png" alt="attachments/ClientVsServer/structureEn.png"></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Figure 1. Structure of the SuperCollider application</b></p>
-<p class="p2"><br></p>
-<p class="p3">The SuperCollider application is thus made up of two distinct, autonomous, components, a <i>server</i> and a <i>client</i>. The first is named <i>scsynth</i> (SC-synthesizer), the second <i>sclang</i> (SC-language).</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Description</b></p>
-<p class="p5"><br></p>
-<p class="p3">The SuperCollider application makes use of client/server architecture which separates two functions, respectively one providing and the other requesting services. The client and the server communicate through a network.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><img src="attachments/ClientVsServer/s8kfFC-clientServerEn.png" alt="attachments/ClientVsServer/s8kfFC-clientServerEn.png"></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Figure 2. Client/Server architecture</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3">In Figure 2 a generic network architecture is depicted: A number of clients communicating with a server by exchanging messages through a network. In SuperCollider the client and the server make use of a specific subset of CNMAT's Open Sound Control (OSC) protocol in order to communicate (over TCP or UDP). As a consequence, you will see many references to "OSC messages" in the help files.</p>
-<p class="p2"><br></p>
-<p class="p3">To avoid any possible confusion: The network is defined at an abstract level. This means that the client(s) and the server(s) can be in execution on the same physical machine. This is what normally happens when you use the SuperCollider application: two programs will run on your machine, scsynth and sclang.</p>
-<p class="p2"><br></p>
-<p class="p3">The server app, <i>scsynth</i>, is a lean and efficient command line program dedicated to audio synthesis and processing. It knows nothing about SC code, objects, Object Oriented Programming, or anything else to do with the SC language.</p>
-<p class="p2"><br></p>
-<p class="p3">The client of this server is <i>sclang</i>. Sclang performs two distinct tasks:</p>
-<p class="p3"><b>1.</b> it is the <i>client</i> for the server, i.e. it sends OSC messages to the server.</p>
-<p class="p3">In order to write a letter to server, you need a paper sheet and a mailer: sclang is both.</p>
-<p class="p3"><b>2. </b>it is the <i>interpreter</i> for the SuperCollider programming language, i.e. it allows to the user to write code in the aforementioned language and interactively execute the resulting commands, e.g. to control the audio server. In particular OSC messages can be cumbersome to write, as they share with the server its low-level perspective. The SuperCollider language is a high-level, fully featured object oriented language, allowing the user to gain a much more expressive power than OSC messages. Typically, the interpreter translates the code in SuperCollider language in OSC messages for the server. The user writes poetry (so to speak) in the SuperCollider language which is then paraphrased in OSC prose by the sclang interpreter, to be sent to the server.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">From inside sclang, starting a server app can be accomplished by:</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">s = </span><span class="s2">Server</span><span class="s1">.default; <span class="Apple-tab-span">	</span></span>// create a new Server object and assign it to variable s<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s1">s.boot; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// boot the server app, i.e. tell the server to be ready to work</p>
-<p class="p2"><br></p>
-<p class="p3">The sclang interpreter can send OSC messages to scsynth in two fashions:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>- directly</b>: in this case, sclang offers a thin syntax layer which allows one to deal with raw OSC messages. All the server's functionality is in this case available "by hand" using the .sendMsg method of <a href="../ServerArchitecture/Server.html"><span class="s3">Server</span></a>, and other similar messages.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">n = s.nextNodeID;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// get an available nodeID from the server and assign it to n</p>
-<p class="p7"><span class="s1">s.sendMsg(</span><span class="s4">"/s_new"</span><span class="s1">, </span><span class="s4">"default"</span><span class="s1">, n); <span class="Apple-tab-span">	</span></span>// use the SynthDef "default" to create a synth with ID n<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s1">s.sendMsg(</span><span class="s4">"/n_free"</span><span class="s1">, n);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// release the synth n<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>- indirectly</b>: the language app provides you with convienent OOP functionality to keep track of and manipulate things on the server. The high-level syntax is translated into low-level OSC messages by sclang and sent to the server (<i>language wrapping</i>).</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">x = </span><span class="s2">Synth</span><span class="s1">(</span><span class="s4">"default"</span><span class="s1">);<span class="Apple-tab-span">	</span></span>// create a synth on the default server (s) and allocate an ID for it</p>
-<p class="p7"><span class="s1">x.free;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// free the synth, its ID and resources</p>
-<p class="p6"><br></p>
-<p class="p3">Working this way you have gained certain functionality. It provides a node ID for you automatically, it allows you to control the Synth in syntactically elegant and efficient ways (see the <a href="../ServerArchitecture/Synth.html"><span class="s3">Synth</span></a> and <a href="../ServerArchitecture/Node.html"><span class="s3">Node</span></a> helpfiles), and to access all the advantages of object oriented programming while doing so.<span class="Apple-converted-space">  </span>Encapsulating the complexities and bookeeping greatly reduces the chance of bugs in your own code.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><img src="attachments/ClientVsServer/scEn.png" alt="attachments/ClientVsServer/scEn.png"></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Figure 3. Sclang as a high-level client.</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">Language wrapping allows the user to access complex behaviours from very little code. Figure 3 (ignore for the moment that sclang is represented as a client among other possible ones, see later) schematically represents what happens when you evaluate an audio function like this:</p>
-<p class="p2"><br></p>
-<p class="p7">// assuming the server is already booted</p>
-<p class="p8">{<span class="s2">SinOsc</span>.ar}.play ;</p>
-<p class="p2"><br></p>
-<p class="p3">In this case many server operations are hidden. To understand the<span class="Apple-converted-space">  </span>passages inolved in the evalutation of this code see <a href="../Tutorials/Getting-Started/Functions and Other Functionality.html"><span class="s3">Functions and Other Functionality</span></a><b> </b>and <a href="../Tutorials/Getting-Started/SynthDefs and Synths.html"><span class="s3">SynthDefs and Synths</span></a><span class="s3"> </span>(part of Scott Wilson's tutorial).</p>
-<p class="p2"><br></p>
-<p class="p3">The OOP-style also has a small amount of overhead. It requires clientside CPU cycles and memory to create and manipulate an object. Normally this is not significant, but there may be times when you would prefer to use the less elegant, and less expensive first method, for instance when creating large numbers of grains which will simply play and then deallocate themselves.</p>
-<p class="p2"><br></p>
-<p class="p3">Thus it is possible to create synth nodes on the server without actually creating Synth objects, providing you are willing to do the required housekeeping yourself. The same is true of group nodes, buffers, and buses. A more detailed discussion of these concepts can be found in the <a href="../ServerArchitecture/NodeMessaging.html"><span class="s3">NodeMessaging</span></a> helpfile.</p>
-<p class="p2"><br></p>
-<p class="p3">In conclusion, the crucial thing to remember is the distinction between things like nodes, busses, buffers, and servers and the objects that represent them in the language app (i.e. instances of <a href="../ServerArchitecture/Node.html"><span class="s3">Node</span></a>, <a href="../ServerArchitecture/Bus.html"><span class="s3">Bus</span></a>, <a href="../ServerArchitecture/Buffer.html"><span class="s3">Buffer</span></a>, and <a href="../ServerArchitecture/Server.html"><span class="s3">Server</span></a>; these are referred to as 'Server Abstraction Objects'). Keeping these conceptually distinct will help avoid much confusion.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Pros/Cons</b></p>
-<p class="p2"><br></p>
-<p class="p3">The client/server architecture provides three main advantages:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>stability</b>: if the client crashes, the server keeps on working, i.e. the audio does not stop. This is intuitively relevant for a live situation. Vice versa, the server can crash letting you still manage the situation from the client.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>modularity</b>: synthesis is one thing, control another. Separating the two aspects allows one to (for example) control scsynth from applications besides sclang. The only important thing is that they are able to send the right OSC messages to the server.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>remote control</b>: the client/server network can be external to your computer, e.g. over the Internet. This allows one to control an audio server in Alaska from a client (sclang or other) in India, for example. <span class="Apple-converted-space">   </span></p>
-<p class="p2"><br></p>
-<p class="p3">There are two notable drawbacks:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>latency: </b>The messaging process introduces a small amount of latency. This should not be confused with audio latency which can be quite low. It only means that there is a small, usually insignificant delay between the one side sending a message and the other receiving it and acting upon it. (This can be minimized by using the 'internal' server. See <a href="../ServerArchitecture/Server.html"><span class="s3">Server</span></a> for more detail.)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>asynchronous execution:</b> In some cases the client might need to know that a task on the server (for instance processing a large sound file) has been completed before continuing with another task. Since some tasks take an arbitrary length of time to complete, a reply mechanism is necessary. This can add some complexity to your code, but is in principle not an issue. (See <a href="../Control/OSCresponder.html"><span class="s3">OSCresponder</span></a> and <a href="../Control/OSCresponderNode.html"><span class="s3">OSCresponderNode</span></a>.) Some server abstraction objects such as <a href="../ServerArchitecture/Buffer.html"><span class="s3">Buffer</span></a> provide for this automatically through 'action' functions which wait for completion before executing.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>A final remark for the advanced reader</b></p>
-<p class="p2"><br></p>
-<p class="p3">Apart from sclang, it is possible to control scsynth from any other client which provides for OSC messaging (e.g. from Java, Python, Max/MSP, etc.). For networking, see <a href="../ServerArchitecture/Server-Architecture.html"><span class="s3">Server-Architecture</span></a>, <a href="../Control/NetAddr.html"><span class="s3">NetAddr</span></a>, <a href="../Control/OSCresponder.html"><span class="s3">OSCresponder</span></a>, <a href="../Control/OSCresponderNode.html"><span class="s3">OSCresponderNode</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3">In general however, sclang is the preferable way to communicate with scsynth for three reasons:<span class="Apple-converted-space"> </span></p>
-<p class="p3">- it gives you the expressive power of the SuperCollider language;</p>
-<p class="p3">- the language is explicitly fitted to scsynth's needs (and, more importantly, to musician's ones)<span class="Apple-converted-space"> </span></p>
-<p class="p3">- it allows one to create and load SynthDefs onto scsynth (see <a href="../ServerArchitecture/SynthDef.html"><span class="s3">SynthDef</span></a>), which is a not such an easy task to accomplished in another client app.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Group.html b/Help/ServerArchitecture/Group.html
deleted file mode 100644
index f2c4d64..0000000
--- a/Help/ServerArchitecture/Group.html
+++ /dev/null
@@ -1,301 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #613829}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco; color: #5e6337}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #000000}
-span.s5 {color: #1c3e99}
-span.s6 {color: #5e6337}
-span.s7 {color: #0a2cee}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {color: #1f4bdc}
-span.s10 {color: #0000bf}
-span.s11 {color: #606060}
-span.s12 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Group<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>client-side representation of a group node on the server</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p1"><b>superclass: Node</b></p>
-<p class="p2"><br></p>
-<p class="p1">A Group is the client-side representation of a group node on the server, which is a collection of other nodes organized as a linked list. The Nodes within a Group may be controlled together, and may be both Synths and other Groups. Groups are thus useful for controlling a number of nodes at once, and when used as targets can be very helpful in controlling order of execution. (See <b>Order-of-execution </b>for more details on this topic).</p>
-<p class="p3"><br></p>
-<p class="p1">For more on the crucial distinction between client objects and server nodes, see <b>ClientVsServer</b>. For information on creating nodes without using objects, see <b>NodeMessaging</b>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>N.B. </b>Group is a subclass of <b>Node</b>, and thus many of its most useful and important methods are documented in the <b>Node</b> help file. Please refer to it for more information.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>RootNode and the default group</b></p>
-<p class="p3"><br></p>
-<p class="p1">When a <b>Server</b> is booted there is a top level group with an ID of zero that defines the root of the tree. This is represented by a subclass of Group: <b>RootNode</b>. If the Server was booted from within SCLang (as opposed to from the command line) then a <b>default_group</b> with an ID of 1 will be automatically created. This group is the default enclosing group for all Nodes, i.e. it's what you get if you don't specify. In general you should create new Nodes within the default group of a Server rather than in its RootNode. See <b>Server</b>, <b>default_group</b> and <b>RootNode </b>for more detail.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Bundling</b></p>
-<p class="p3"><br></p>
-<p class="p1">Some of the methods below have two versions: a regular one which sends its corresponding message to the server immediately, and one which returns the message in an <b>Array</b> so that it can be added to a bundle. It is also possible to capture the messages generated by the regular methods using Server's automated bundling capabilities. See <b>Server</b> and <b>bundledCommands</b> for more detail.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Creation with Immediate Instantiation on the Server</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*new(target, addAction)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Group.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>target </b>- A target for this Group. If target is not a Group or <b>Synth</b>, it will be converted as follows: If it is a <b>Server</b>, it will be converted to the <b>default_group</b> of that server. If it is nil, to the <b>default_group</b> of the default <b>Server</b>. <b>Note: </b>A Synth is not a valid target for <span class="s2">\addToHead</span> and <span class="s2">\addToTail</span>.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>addAction</b> - one of the following Symbols:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">\addToHead <span class="Apple-tab-span">	</span></span>- (the default) add at the head of the group specified by <b>target</b></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">\addToTail <span class="Apple-tab-span">	</span></span>- add at the tail of the group specified by <b>target</b></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">\addAfter</span> <span class="Apple-tab-span">	</span>- add immediately after <b>target </b>in its server's node order</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">\addBefore</span> <span class="Apple-tab-span">	</span>- add immediately before <b>target </b>in its server's node order</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\addReplace</span> <span class="Apple-tab-span">	</span>- replace <b>target</b> and take its place in its server's node order</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = </span><span class="s5">Group</span><span class="s4">.new; </span>// add a Group at the head of the default Server's default group</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>h = <span class="s5">Group</span>.new(g, <span class="s6">\addAfter</span>);</p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.queryAllNodes; </span>// note the Group within the default group (ID 1)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.free; h.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6">The following convenience methods correspond to the add actions above:</p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*after(aNode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Group and add it immediately after <b>aNode</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*before(aNode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Group and add it immediately before <b>aNode</b>.</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>*head(aGroup)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Group. If <b>aGroup</b> is a Group add it at the head of that group. If it is a <b>Server</b>, add it at the head of the <b>default_group</b> of that server. If it is nil, add it at the head of the <b>default_group</b> of the default <b>Server.</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><b>*tail(aGroup)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Group. If <b>aGroup</b> is a Group add it at the tail of that group. If it is a <b>Server</b>, add it at the tail of the <b>default_group</b> of that server. If it is nil, add it at the tail of the <b>default_group</b> of the default <b>Server.</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>*replace(nodeToReplace)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Group and use it to replace <b>nodeToReplace</b>, taking its place in its server's node order.</p>
-<p class="p7"><br></p>
-<p class="p4"><b>Creation without Instantiation on the Server</b></p>
-<p class="p3"><br></p>
-<p class="p1">For use in message bundles it is also possible to create a Group object in the client app without immediately creating a group node on the server. Once done one can call methods which create messages to add to a bundle, which when sent to the server will instantiate the group or perform other operations. (See <a href="../UGens/Synth control/Control.html"><span class="s7">Control</span></a>, below.)</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>*basicNew(server, nodeID)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Group object without creating a group node on the server. (This method is inherited from <b>Node</b> and is documented here only for convenience.)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server</b> - An optional instance of <b>Server</b>. If nil this will default to the default <b>Server</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nodeID </b>- An optional node ID number. If not supplied one will be generated by the Server's NodeIDAllocator. Normally you should not need to supply an ID.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = </span><span class="s5">Group</span><span class="s4">.basicNew(s); </span>// Create without sending</p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(</span><span class="s5">nil</span><span class="s4">, g.newMsg;); </span>// Now send a message; create at the head of s' default group</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>newMsg(target, addAction</b>)</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a message of the type <b>g_new</b> which can be bundled. When sent to the server this message will instantiate this group. If target is nil, it will default to the <b>default_group</b> of the Server specified in <b>*basicNew</b> when this Group was created. The default addAction is <span class="s2">\addToHead</span>. (See <b>*new</b> above for details of addActions.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>addToHeadMsg(aGroup)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a message of the type <b>g_new</b> which can be bundled. When sent to the server this message will instantiate this group. If <b>aGroup</b> is a Group it will be added at the head of that group. If it is nil, it will be added at the head of the <b>default_group</b> of this Group's server (as specified when *<b>basicNew</b> was called).</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>addToTailMsg(target)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a message of the type <b>g_new</b> which can be bundled. When sent to the server this message will instantiate this group. If <b>aGroup</b> is a Group it will be added at the tail of that group. If it is nil, it will be added at the tail of the <b>default_group</b> of this Group's server (as specified when *<b>basicNew</b> was called).</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>addBeforeMsg(aNode</b>)</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a message of the type <b>g_new</b> which can be bundled. When sent to the server this message will instantiate this group, immediately before <b>aNode</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>addAfterMsg(aNode</b>)</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a message of the type <b>g_new</b> which can be bundled. When sent to the server this message will instantiate this group, immediately after <b>aNode</b>.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>addReplaceMsg(nodeToReplace</b>)</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a message of the type <b>g_new</b> which can be bundled. When sent to the server this message will instantiate this group, replacing <b>nodeToReplace</b> in the server's node order.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><b>Control and Introspection</b></p>
-<p class="p7"><br></p>
-<p class="p1">For further methods of controlling Groups (set, map, etc.), see the <b>Node</b> help file.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveNodeToHead(aNode)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveNodeToHeadMsg(aNode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Move <b>aNode</b> to the head of this group<span class="Apple-tab-span">	</span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveNodeToTail(aNode)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveNodeToTailMsg(aNode)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>Move <b>aNode</b> to the tail of this group<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>freeAll</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>freeAllMsg</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Free all the nodes in this group, but do not free this group itself.</p>
-<p class="p7"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>deepFree</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>deepFreeMsg</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Free all Synths in the group, and all Synths in any enclosed groups, but do not free this group or any of its enclosed groups.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>dumpTree(postControls)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Post a representation of this group's node subtree. (Sends a message of the type <b>g_dumpTree</b>.) If <b>postControls</b> is true, then the current <a href="../UGens/Synth control/Control.html"><span class="s7">Control</span></a> (arg) values for any synths contained in this group will be posted as well. The default is false.</p>
-<p class="p7"><br></p>
-<p class="p13">// not working yet<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>queryTree(action)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Queries the server for a message describing this group's node subtree. (Sends a message of the type <b>g_queryTree</b>.) This reply is passed to the action function as an argument. See <b>g_queryTree</b> in <a href="Server-Command-Reference.html"><span class="s9">Server-Command-Reference</span></a> or the example below for information on how the reply is structured.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p12"><b>Examples</b></p>
-<p class="p14"><br></p>
-<p class="p15">(</p>
-<p class="p16"><span class="s4">s = </span><span class="s10">Server</span><span class="s4">.default; </span>// just to be sure</p>
-<p class="p15">s.boot;</p>
-<p class="p15">)</p>
-<p class="p14"><br></p>
-<p class="p15">(</p>
-<p class="p15"><span class="s10">SynthDef</span>(<span class="s11">"help-Group-moto-rev"</span>, { <span class="s10">arg</span> out=0,freq=100,ffreq=120;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">var</span> x;</p>
-<p class="p15"><span class="Apple-tab-span">	</span>x = <span class="s10">RLPF</span>.ar(<span class="s10">LFPulse</span>.ar(<span class="s10">SinOsc</span>.kr(0.2, 0, 10, freq), [0,0.1], 0.1),<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ffreq, 0.1).clip2(0.4);</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">Out</span>.ar(out, x);</p>
-<p class="p15">}).add;</p>
-<p class="p14"><br></p>
-<p class="p14"><br></p>
-<p class="p15"><span class="s10">SynthDef</span>(<span class="s11">"help-Group-wah"</span>, { <span class="s10">arg</span> out, rate = 1.5, cfreq = 1400, mfreq = 1200, rq=0.1;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">var</span> zin, zout, q;</p>
-<p class="p14"><br></p>
-<p class="p15"><span class="Apple-tab-span">	</span>zin = <span class="s10">In</span>.ar(out, 2);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>cfreq = <span class="s10">Lag3</span>.kr(cfreq, 0.1);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>mfreq = <span class="s10">Lag3</span>.kr(mfreq, 0.1);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>q <span class="Apple-converted-space">  </span>= <span class="s10">Ramp</span>.kr(rq, 0.1);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>zout = <span class="s10">RLPF</span>.ar(zin, <span class="s10">LFNoise1</span>.kr(rate, mfreq, cfreq), q, 10).distort<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 0.15;</p>
-<p class="p14"><br></p>
-<p class="p16"><span class="s4"><span class="Apple-tab-span">	</span></span>// replace the incoming bus with the effected version</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">ReplaceOut</span>.ar( out , zout );<span class="Apple-converted-space"> </span></p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p15">}).add;</p>
-<p class="p15">)</p>
-<p class="p14"><br></p>
-<p class="p15">g = <span class="s10">Group</span>.new;</p>
-<p class="p14"><br></p>
-<p class="p15">(</p>
-<p class="p15">l = <span class="s10">Array</span>.fill(3,{</p>
-<p class="p16"><span class="s4"><span class="Apple-tab-span">	</span></span>// random freq for each synth, added to g at the head</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s10">Synth</span><span class="s4">(</span>"help-Group-moto-rev"<span class="s4">,[</span>"out"<span class="s4">,0,</span>"freq"<span class="s4">,rrand(10,120)],g,</span><span class="s12">\addToHead</span><span class="s4">);</span></p>
-<p class="p15">});</p>
-<p class="p15">)</p>
-<p class="p14"><br></p>
-<p class="p16">// set all controls that match "ffreq" in all nodes in g to 90</p>
-<p class="p15">g.set(<span class="s11">"ffreq"</span>,300);</p>
-<p class="p14"><br></p>
-<p class="p15">g.set(<span class="s11">"freq"</span>,80);</p>
-<p class="p14"><br></p>
-<p class="p16">// since we stored the Synths in an Array, we can also control them individually</p>
-<p class="p15">(</p>
-<p class="p18"><span class="s4">r = </span>Routine<span class="s4">({</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s10">inf</span>.do({</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>l.do({ <span class="s10">arg</span> node;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>node.set(<span class="s11">"freq"</span>,rrand(10,120));</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0.wait;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p15"><span class="Apple-tab-span">	</span>})</p>
-<p class="p15">});</p>
-<p class="p14"><br></p>
-<p class="p15">r.play;</p>
-<p class="p15">)</p>
-<p class="p14"><br></p>
-<p class="p16">// g is in a group too. Since we didn't specify it's the default group (ID 1) of the default Server</p>
-<p class="p15">g.group.inspect;</p>
-<p class="p14"><br></p>
-<p class="p16">// asking a wah to go order-of-execution after g, in the same group as g.</p>
-<p class="p15">x = <span class="s10">Synth</span>.after(g,<span class="s11">"help-Group-wah"</span>,[<span class="s11">"out"</span>,0]);<span class="Apple-converted-space"> </span></p>
-<p class="p14"><br></p>
-<p class="p16">// now dump my tree to confirm</p>
-<p class="p15">g.dumpTree;</p>
-<p class="p14"><br></p>
-<p class="p15">x.free;</p>
-<p class="p14"><br></p>
-<p class="p16">// free all nodes in g, but not g itself</p>
-<p class="p15">g.freeAll;</p>
-<p class="p14"><br></p>
-<p class="p16">// don't forget the Routine is still running...</p>
-<p class="p15">r.stop;</p>
-<p class="p14"><br></p>
-<p class="p16">// oh, and set l to nil so the Synths and Array can be garbage collected</p>
-<p class="p15">l = <span class="s10">nil</span>;</p>
-<p class="p14"><br></p>
-<p class="p16">// and i'm still on the server, its just my children that were freed</p>
-<p class="p15">g.query;</p>
-<p class="p14"><br></p>
-<p class="p16">// don't need the individual synth objects this time</p>
-<p class="p15">(</p>
-<p class="p15">3.do({</p>
-<p class="p16"><span class="s4"><span class="Apple-tab-span">	</span></span>// random freq for each synth, added to g at the head</p>
-<p class="p17"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s10">Synth</span><span class="s4">(</span>"help-Group-moto-rev"<span class="s4">,[</span>"out"<span class="s4">,0,</span>"freq"<span class="s4">,rrand(10,1200)],g,</span><span class="s12">\addToHead</span><span class="s4">);</span></p>
-<p class="p15">});</p>
-<p class="p15">)</p>
-<p class="p14"><br></p>
-<p class="p16">// now query my tree and post a graph of it (duplicates dumpTree)</p>
-<p class="p16">// msg format is ['/g_querytree.reply', node1-ID, numChildren, defName, child1-ID, numChildren, ...]</p>
-<p class="p16">//(</p>
-<p class="p16">//g.queryTree({|msg|<span class="Apple-converted-space"> </span></p>
-<p class="p16">//<span class="Apple-tab-span">	</span>var i = 1, tabs = 0, dumpFunc;</p>
-<p class="p16">//<span class="Apple-tab-span">	</span>("NODE TREE Group" + msg[1]).postln;</p>
-<p class="p16">//<span class="Apple-tab-span">	</span>if(msg[2] > 0, {</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dumpFunc = {|numChildren|</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tabs = tabs + 1;</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numChildren.do({</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = i + 3;</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tabs.do({ " <span class="Apple-converted-space">  </span>".post });</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>msg[i].post;</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(" " ++ msg[i + 2]).postln;</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(msg[i + 1] > 0, { dumpFunc.value(msg[i + 1]) });<span class="Apple-tab-span">	</span></p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tabs = tabs - 1;</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p16">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dumpFunc.value(msg[2]);</p>
-<p class="p16">//<span class="Apple-tab-span">	</span>});</p>
-<p class="p16">//});</p>
-<p class="p16">//)</p>
-<p class="p14"><br></p>
-<p class="p16">// kill me and my children</p>
-<p class="p15">g.free;</p>
-<p class="p14"><br></p>
-<p class="p16">// see, I'm gone</p>
-<p class="p15">g.query;</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Node.html b/Help/ServerArchitecture/Node.html
deleted file mode 100644
index e9cff46..0000000
--- a/Help/ServerArchitecture/Node.html
+++ /dev/null
@@ -1,285 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #a41c14}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0018b8}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco; color: #a41c14}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e14}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p20 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0018b8}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {color: #606060}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #356f14}
-span.s9 {color: #a41c14}
-span.s10 {font: 14.0px Helvetica}
-span.s11 {font: 9.0px Monaco; color: #356f14}
-span.s12 {color: #0034fd}
-span.s13 {color: #0926b7}
-span.s14 {color: #a71e14}
-span.s15 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Node<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>abstract superclass of Synth and Group</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="Server-Architecture.html"><span class="s3">Server-Architecture</span></a>, <a href="Synth.html"><span class="s3">Synth</span></a>, <a href="Group.html"><span class="s3">Group</span></a>, <a href="RootNode.html"><span class="s3">RootNode</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">This class is the abstract super class of <b>Synth</b> and <b>Group</b>, which represent synth and group nodes on the server.<span class="Apple-converted-space">  </span>Node objects are not made explicitly, but Synth and Group are subclasses, and inherit the methods<span class="Apple-converted-space">  </span>documented below.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Freed Nodes and Node Status</b></p>
-<p class="p2"><br></p>
-<p class="p1">Nodes which you explicitly free using the methods free or release will have their group instance variable set to nil. However Nodes which are automatically freed after a certain time (for instance by an <a href="../UGens/Synth control/Envelopes/EnvGen.html"><span class="s4">EnvGen</span></a> with a doneAction of 2) will not. This keeps the implementation of the classes simple and lightweight. To have the current state of a Node tracked you can register it with an instance of <a href="../Control/NodeWatcher.html"><span class="s4">NodeWatcher</span></a><span class="s4">,</span><span class="s2"> either by calling register on the Node instance or on the NodeWatcher singleton</span>. This will enable two variables, isPlaying and isRunning, which you can use for checking purposes.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Bundling</b></p>
-<p class="p2"><br></p>
-<p class="p1">Many of the methods below have two versions: a regular one which sends its corresponding message to the server immediately, and one which returns the message in an Array so that it can be added to a bundle. It is also possible to capture the messages generated by the regular methods using Server's automated bundling capabilities. See <a href="Server.html"><span class="s4">Server</span></a> and <a href="bundledCommands.html"><span class="s4">bundledCommands</span></a> for more details.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>Accessing Class Variables</b></p>
-<p class="p5"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>*addActions </b>- Returns the list of addActons as an event.<span class="Apple-converted-space">  </span>Useful for<span class="Apple-converted-space">  </span>converting<span class="Apple-converted-space">  </span>addAction symbols to their corresponding integer codes.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Node.addActions.at(\addToTail)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// returns 1</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>Accessing Instance Variables</b></p>
-<p class="p8"><br></p>
-<p class="p1">The following getter methods also have corresponding setters, but they should be used with extreme care and only if you are <i>sure</i> you know what you're doing.</p>
-<p class="p8"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>nodeID </b>- Returns the Node's node ID number. Normally you should not need to access this since instances of Node can be passed directly as UGen inputs or Synth args.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>group<span class="Apple-converted-space"> </span></b> - Returns an instance of <b>Group</b> or <b>RootNode</b> corresponding to this Node's group on the server.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>server</b> - Returns an instance of <b>Server</b> corresponding to this Node's server app.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>isPlaying </b>- Returns a boolean indicating if this node is currently on the server, providing this Node has been registered with a <b>NodeWatcher</b>. <b>N.B. </b>If this Node has not been registered this will likely be false in any case.</p>
-<p class="p9"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>isRunning </b>- Returns a boolean indicating if this node is currently on the server, providing this Node has been registered with a <b>NodeWatcher</b>. <b>N.B. </b>If this Node has not been registered this will likely be false in any case.</p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>Node Commands</b></p>
-<p class="p8"><br></p>
-<p class="p1">See the Node Commands section in <a href="Server-Command-Reference.html"><span class="s4">Server-Command-Reference</span></a><b> </b>for the OSC equivalents of the methods outlined below<b>.</b></p>
-<p class="p2"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>free(sendFlag)<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>freeMsg</b><span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Stop this Node and free it from its parent group on the server.<b> </b>Once a Node has been freed, you cannot restart it. <b>sendFlag</b> is a boolean indicating whether the free message should be sent. If false an <b>n_free</b> message will not be sent to this Node's server, but its isPlaying and isRunning variables will be set to false. The default for <b>sendFlag</b> is true. If this Node is a <b>Group</b> this will free all Nodes within the Group.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s4">Synth</span>(<span class="s6">"default"</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>run(boolean)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>runMsg(boolean)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set the running state of this Node according to a boolean. False will pause the node without freeing it. The default is true. If this Node is a <b>Group</b> this will set the running state of all Nodes within the Group.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s4">SynthDef</span>(<span class="s6">"help-node-set"</span>, {<span class="s4">arg</span> freq = 440, out = 0;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, 0.1));}).play(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.run(<span class="s4">false</span>);</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.run; </span>// default is true</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>set(controlName, value ... moreArgs)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setMsg(controlName, value ... moreArgs)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set controls in this Node to values. Controls are defined in a <b>SynthDef </b>as args or instances of <b>Control</b>. They are specified here using symbols, strings, or indices, and are listed in pairs with values. If this Node is a <b>Group</b> this will set all Nodes within the Group.</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span>SynthDef<span class="s2">(</span><span class="s6">"help-node-set"</span><span class="s2">, {</span>| freq = 440, out = 0 |</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, 0.1));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x.play(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s8">\freq</span>, 880, <span class="s8">\out</span>, 1); <span class="s9">// two pairs</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(0, 660, 1, 0); </span>// freq is the first argument, so it's index is 0. out is index 1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Values that are arrays are sent using the OSC array type-tags ($[ and $]).<span class="Apple-converted-space">  </span>These values will be assigned to subsequent controls in the manner of setn.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span>SynthDef<span class="s2">(</span><span class="s6">"help-node-set"</span><span class="s2">, {</span>| freq = #[440, 450, 460], out = 0 |</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">Mix</span>(<span class="s4">SinOsc</span>.ar(freq, 0, 0.1)));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x.play(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s8">\freq</span>, [1,2,3] * 400 + [1,2,3], <span class="s8">\out</span>, 1); <span class="s9">// two pairs</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s8">\freq</span>, [3] * 400 + [1,2,3], <span class="s8">\out</span>, 1); <span class="s9">// two pairs</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(0, [660, 680, 720], 1, 0); </span>// freq is the first argument, so it's index is 0. out is index 1.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>setn(controlName, values ... moreArgs)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>setnMsg(controlName, values ... moreArgs)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>Set sequential ranges of controls in this Node to values. Controls are defined in a <b>SynthDef </b>as args or instances of <b>Control</b>. They are specified here using symbols, strings, or indices, and are listed in pairs with arrays of values. If this Node is a <b>Group</b> this will setn all Nodes within the Group.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span><span class="s4">SynthDef</span><span class="s2">(</span>"help-node-setn"<span class="s2">, {</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">arg</span> freq1 = 440, freq2 = 440, freq3 = 440, amp1 = 0.05, amp2 = 0.05, amp3 = 0.05;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, <span class="s4">Mix</span>(<span class="s4">SinOsc</span>.ar([freq1, freq2, freq3], 0, [amp1, amp2, amp3])));}).play(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set 3 controls starting from \freq1, and 3 controls starting from \amp1</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.setn(<span class="s8">\freq1</span>, [440, 880, 441], <span class="s8">\amp1</span>, [0.3, 0.1, 0.3]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>fill(controlName, numControls, value ... moreArgs)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>fillMsg(controlName, numControls, value ... moreArgs)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Set sequential ranges of controls in this Node to a single value. Controls are defined in a <b>SynthDef </b>as args or instances of <b>Control</b>. They are specified here using symbols, strings, or indices, and are listed in groups of three along with an integer indicating the number of controls to set, and the value to set them to. If this Node is a <b>Group</b> this will fill all Nodes within the Group.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>map(controlName, bus ... moreArgs)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mapMsg(controlName, bus ... moreArgs)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Map controls in this Node to read from control or audio rate Buses. Controls are defined in a <b>SynthDef </b>as args or instances of <b>Control </b>or its subclasses. They are specified here using symbols, strings, or indices, and are listed in pairs with Bus objects. The number of sequential controls mapped corresponds to the Bus' number of channels. If this Node is a <b>Group</b> this will map all Nodes within the Group. Note that with <b>mapMsg</b> if you mix audio and control rate busses you will get an Array of two messages rather than a single message. Integer bus indices are assumed to refer to control buses. To map a control to an audio bus, you must use a Bus object.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s4">Bus</span>.control(s, 1); b.set(880);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = <span class="s4">Bus</span>.control(s, 1);<span class="Apple-tab-span">	</span>c.set(884);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s4">SynthDef</span>(<span class="s6">"help-Node-map"</span>, { <span class="s4">arg</span> freq1 = 440, freq2 = 440;<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, <span class="s4">SinOsc</span>.ar([freq1, freq2], 0, 0.1));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s);)</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.map(<span class="s8">\freq1</span>, b, <span class="s8">\freq2</span>, c);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free; c.free;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// same as above with a multichannel Bus and Control</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s4">Bus</span>.control(s, 2); b.set(880, 884);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s4">SynthDef</span>(<span class="s6">"help-Node-map2"</span>, { <span class="s4">arg</span> freqs = #[440, 440];<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, <span class="s4">SinOsc</span>.ar(freqs, 0, 0.1));</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s);)</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.map(<span class="s8">\freqs</span>, b);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>mapn(controlName, index, numControls ... moreArgs)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>mapnMsg(controlName, index, numControls ... moreArgs)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Map sequential ranges of controls in this Node to read from control rate Buses. This is similar to map above, but you specify the number of sequential Controls to map. If this Node is a <b>Group</b> this will mapn all Nodes within the Group.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>release(releaseTime)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>releaseMsg(releaseTime)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s10"><b><span class="Apple-tab-span">	</span></b></span>This is a convenience method which assumes that the synth contains an envelope generator (an <b>EnvGen</b>, <b>Linen</b>, or similar <b>UGen</b>) running a sustaining envelope (see <b>Env</b>) and that it's gate argument is set to a control called <span class="s11">\gate</span>. This method will cause the envelope to release. If <b>releaseTime </b>is not nil, it will override the envelope's decay or release time. If this Node is a <b>Group</b> this will release all Nodes within the Group.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>x = { <span class="s4">arg</span> gate=1; <span class="s4">BrownNoise</span>.ar(0.5) * <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.cutoff(1), gate, doneAction:2) }.play;</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.release(5); </span>// overide the Env's specified 1 second release time</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>query</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Sends an <b>n_query</b> message to the server, which will reply with a message containing information about this node and its place in the server's node tree. This information will be printed to the post window. (See also the queryAllNodes method of <b>Server</b>.) "parent" indicates the Node's enclosing group. If "prev" or "next" are equal to -1 that indicates that there are no other nodes in the enclosing group before or after this one, respectively.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>g = <span class="s4">Group</span>.new;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s4">Synth</span>.head(g, <span class="s6">"default"</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.query;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.query;</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.queryAllNodes; </span>// Note the RootNode (ID 0) and the default Group (ID 1)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; g.free;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s7"><span class="Apple-tab-span">	</span></span><b>trace</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Causes a synth to print out the values of the inputs and outputs of its unit generators for one control period to the post window. Causes a group to print the node IDs and names of each node in the group for one control period.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>g = <span class="s4">Group</span>.new;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s4">Synth</span>.head(g, <span class="s6">"default"</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.trace;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g.trace;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; g.free;</p>
-<p class="p17"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s7"><span class="Apple-tab-span">	</span></span><b>register(assumePlaying)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Registers the node at the <a href="../Control/NodeWatcher.html"><span class="s12">NodeWatcher</span></a><span class="s12"> </span>object. This will enable two variables, isPlaying and isRunning, which you can use for checking purposes.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = s.makeBundle(<span class="s13">false</span>, {</p>
-<p class="p18"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = </span><span class="s13">Group</span><span class="s2">.new(s); </span>//create a node object</p>
-<p class="p18"><span class="Apple-tab-span">	</span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.register; </span>// register before creating on the server</p>
-<p class="p19"><span class="s14"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>});</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.isPlaying;</p>
-<p class="p18"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.listSendBundle(nil, b); </span>//start the node on the server</p>
-<p class="p19"><span class="s14"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>a.isPlaying;</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.isRunning;</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.run(<span class="s13">false</span>);</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.isRunning;</p>
-<p class="p18"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.freeAll; </span>//free all nodes</p>
-<p class="p19"><span class="s14"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>a.isPlaying;</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.isRunning;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p20"><b>Changing the order of execution</b></p>
-<p class="p8"><br></p>
-<p class="p1">The following methods can be used to change the Node's place in the order of execution. See the <b>Order-of-execution</b> help file for more information on this important topic. See <b>Server-Command-Reference</b> for the OSC equivalents of these methods.</p>
-<p class="p8"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveAfter(aNode)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveAfterMsg(aNode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Move this Node to be directly after aNode. <b>N.B. n_after</b>, the OSC message which this method encapsulates, allows already freed nodes as targets. This is so that one may attempt a series of moves, with the last successful one taking effect. For this reason this method will fail silently if either the target or this node have already been freed. If you will need to check, you may register the relevant nodes with a <b>NodeWatcher</b>.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveBefore(aNode)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveBeforeMsg(aNode)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Move this Node to be directly before aNode. <b>N.B. n_before</b>, the OSC message which this method encapsulates, allows already freed nodes as targets. This is so that one may attempt a series of moves, with the last successful one taking effect. For this reason this method will fail silently if either the target or this node have already been freed. If you will need to check, you may register the relevant nodes with a <b>NodeWatcher</b>.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveToHead(aGroup)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveToHeadMsg(aGroup)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>aGroup</b> is a <b>Group</b> then this method will move this Node to the head of that Group. If it is nil this will move this Node to the head of the <b>default_group</b> of this Node's <b>Server</b>.</p>
-<p class="p8"><br></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveToTail(aGroup)</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>moveToTailMsg(aGroup)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>aGroup</b> is a <b>Group</b> then this method will move this Node to the tail of that Group. If it is nil this will move this Node to the tail of the <b>default_group</b> of this Node's <b>Server</b>.</p>
-<p class="p8"><br></p>
-<p class="p20"><b>Other Methods</b></p>
-<p class="p8"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>asTarget</b> - Returns this Node. See the <b>asTarget</b> help file for more details.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>printOn(stream)</b> - Prints this Node's Class (Synth or Group) and nodeID on <b>stream</b>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>hash</b> - Returns server.hash bitXor: nodeID.hash</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>== aNode </b>- Returns true if this Node and aNode have the same nodeID and the same Server object, otherwise returns false. Under certain circumstances this Node and aNode might not be the same object, even though this returns true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">g = </span><span class="s4">Group</span><span class="s2">.basicNew(s, 1); </span>// the default group of s</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>h = <span class="s4">Group</span>.basicNew(s, 1); <span class="s9">// and again</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g == h; <span class="Apple-tab-span">	</span><span class="s9">// true</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g === h;<span class="Apple-tab-span">	</span><span class="s9">// false</span></p>
-<p class="p17"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/NodeControl.html b/Help/ServerArchitecture/NodeControl.html
deleted file mode 100644
index ae878f4..0000000
--- a/Help/ServerArchitecture/NodeControl.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>NodeControl</b></p>
-<p class="p2"><br></p>
-<p class="p3">encapsulates in an object a node and an index.<span class="Apple-converted-space">  </span>this object can be held by a client and have its value set without otherwise having to store the details about where the node's input is.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">d = SynthDef</span>(<span class="s2">"help-NodeControl"</span>,{ <span class="s1">arg</span> out=0,freq=400;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> <span class="s1">SinOsc</span>.ar(freq, 0, 0.5)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">});</p>
-<p class="p6">y = d.play; // the synth</p>
-<p class="p4"><br></p>
-<p class="p6">c = NodeControl(y,1);</p>
-<p class="p4"><br></p>
-<p class="p6">c.value = 500;</p>
-<p class="p4"><br></p>
-<p class="p6">c.value = 300;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/NodeMessaging.html b/Help/ServerArchitecture/NodeMessaging.html
deleted file mode 100644
index 84468c7..0000000
--- a/Help/ServerArchitecture/NodeMessaging.html
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #c40000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0010c4}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {color: #606060}
-span.s2 {color: #000000}
-span.s3 {color: #0010c4}
-span.s4 {color: #007200}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Node Messaging</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">The most direct and fast way to send commands to the server is to send messages to the Server object, if you are within sc-lang.<span class="Apple-converted-space">  </span>If you are in a shell you can use <b>sendOSC</b> (available from CNMAT).</p>
-<p class="p4"><br></p>
-<p class="p3">this messaging scheme is explained in detail in<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>Server-Architecture</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>Server-Command-Reference</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>Tutorial</b></p>
-<p class="p4"><br></p>
-<p class="p3">When creating nodes on the server (synths and groups) the only things we need to know are the nodeID and the server (its address to be precise).</p>
-<p class="p4"><br></p>
-<p class="p3">In order to communicate with a synth, one sends messages with its nodeID. If you do not intend to communicate with the node after its creation (and the node will cause itself to end without external messaging), the node id can be set to -1, which is the server's equivalent to nil.</p>
-<p class="p4"><br></p>
-<p class="p3">As soon as you want to pass around the reference to a certain node, assuming that you might not have only one server, it can be useful to create a Synth or Group object. These objects also respond to messages, and when needed can be used to obtain the state of the server side node.</p>
-<p class="p4"><br></p>
-<p class="p3">see <b>Node</b>, <b>Synth</b>, and <b>Group</b> help for more detailed helpfiles on node objects.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// the equivalent of</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = s.nextNodeID;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s1">"/s_new"</span>, <span class="s1">"default"</span>, n);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s1">"/n_free"</span>, n);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">// is<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span>n = </span><span class="s3">Synth</span><span class="s2">(</span>"default"<span class="s2">);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>n.free;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">// when passing arguments:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = s.nextNodeID;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s1">"/s_new"</span>, <span class="s1">"default"</span>, n, 0, 0, <span class="s1">"freq"</span>, 850);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s1">"/n_set"</span>, n, <span class="s1">"freq"</span>, 500);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s1">"/n_free"</span>, n);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">// it is</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = <span class="s3">Synth</span>(<span class="s1">"default"</span>, [<span class="s4">\freq</span>, 850]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n.set(<span class="s4">\freq</span>, 500)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n.free;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">// note that Symbols may be used instead of Strings:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = s.nextNodeID;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\s_new</span>, <span class="s4">\default</span>, n, 0, 0, <span class="s4">\freq</span>, 850);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\n_set</span>, n, <span class="s4">\freq</span>, 500);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\n_free</span>, n);</p>
-<p class="p5"><br></p>
-<p class="p6">// and:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = <span class="s3">Synth</span>(<span class="s4">\default</span>, [<span class="s4">\freq</span>, 850]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n.set(<span class="s4">\freq</span>, 500)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n.free;</p>
-<p class="p5"><br></p>
-<p class="p3">The answer to the question of whether one should work with <b>node objects </b>or <b>directly with messages</b> depends to some extent on context, and to some extent is a matter of personal taste.</p>
-<p class="p4"><br></p>
-<p class="p3">The encapsulation of node objects results in a certain generalization, meaning that other compound objects can respond to the same messages and thus exploit polymorphism. They also provide a certain level of convienence, keeping track of indexes and IDs, etc.</p>
-<p class="p5"><br></p>
-<p class="p3">In certain cases, such as for granular synthesis it is recommended to use messages directly, because there is no benefit to be gained from the node objects (i.e. no need to message them) and they add cpu load to the client side.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s1">"grain"</span><span class="s2">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, <span class="s3">Line</span>.kr(0.1, 0, 0.01, doneAction:2) * <span class="s3">FSinOsc</span>.ar(12000))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>Routine<span class="s2">({<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>20.do({</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s1">"/s_new"</span>, <span class="s1">"grain"</span>, -1);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01.wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p3">In cases where you need to keep track of the synth's state, it is advisable to use node objects and register them with a <b>NodeWatcher</b>. (see helpfile)</p>
-<p class="p4"><br></p>
-<p class="p3">Apart from such cases it is a matter of taste whether you want to use the combination of message and a numerical global representation or an object representation. The two can be mixed, and certain advantages of the object style can be accessed when using messaging style. For instance Server.nextNodeID allows one to use dynamically assigned IDs in messaging style. As a gross generalization, it is probably fair to say that object style is more convienent, but messaging style is more efficient, due to reduce client-side CPU load.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>IMPORTANT NOTE:</b> If you wish to have the functionality of the <b>default_group</b> (e.g. problem free use of Server's record and scope functionality) you should treat ID 1 (the default_group) as the root of your node tree rather than ID 0 (the <b>RootNode</b>). See <b>default_group</b> for more details.</p>
-<p class="p5"><br></p>
-<p class="p3">Note that <b>Function-play</b> and <b>SynthDef-play</b> return a synth object that can be used to send messages to.</p>
-<p class="p5"><br></p>
-<p class="p7">x = { <span class="s3">arg</span> freq=1000; <span class="s3">Ringz</span>.ar(<span class="s3">Crackle</span>.ar(1.95, 0.1), freq, 0.05) }.play(s);</p>
-<p class="p7">x.set(<span class="s4">\freq</span>, 1500);</p>
-<p class="p7">x.free;</p>
-<p class="p5"><br></p>
-<p class="p4"><br></p>
-<p class="p10"><b>Argument lists in node messages</b></p>
-<p class="p4"><br></p>
-<p class="p3">Several node messages accept lists of values to map onto the controls of Synth nodes, as in some of the examples already given:</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\s_new</span>, <span class="s4">\default</span>, n, 0, 0, <span class="s4">\freq</span>, 850);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = <span class="s3">Synth</span>(<span class="s4">\default</span>, [<span class="s4">\freq</span>, 850]);</p>
-<p class="p4"><br></p>
-<p class="p3">Argument lists generally appear as alternating pairs, with the control identifier preceding the value. Usually the control identifier is a name, as above, but it could also be an integer index. (Using integers is slightly faster for the server, but it makes the code harder to read and can introduce bugs if the SynthDef structure changes.) One way to find out control indices is to .add the SynthDef into a SynthDescLib, then get the list of all controls out of the SynthDesc.</p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p9">SynthDef<span class="s2">(</span><span class="s4">\controlList</span><span class="s2">, { </span>|freq = 440, amp = 0.1, detune = #[0.999, 1.001], gate = 1, out = 0|</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span><span class="Apple-tab-span">	</span>sig = <span class="s3">Mix</span>(<span class="s3">Saw</span>.ar(freq * (detune ++ [1]), amp)),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.adsr, gate, doneAction: 2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, (sig * env) ! 2);</p>
-<p class="p7">}).add;</p>
-<p class="p5"><br></p>
-<p class="p9">SynthDescLib<span class="s2">.global[</span><span class="s4">\controlList</span><span class="s2">]</span></p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p3">Prints:</p>
-<p class="p4"><br></p>
-<p class="p7">SynthDesc 'controlList'<span class="Apple-converted-space"> </span></p>
-<p class="p7">Controls:</p>
-<p class="p7">ControlName<span class="Apple-converted-space">  </span>P 0 freq control 440</p>
-<p class="p7">ControlName<span class="Apple-converted-space">  </span>P 1 amp control 0.10000000149012</p>
-<p class="p7">ControlName<span class="Apple-converted-space">  </span>P 2 detune control 0.9990000128746</p>
-<p class="p7">ControlName<span class="Apple-converted-space">  </span>P 3 ? control 1.00100004673</p>
-<p class="p7">ControlName<span class="Apple-converted-space">  </span>P 4 gate control 1</p>
-<p class="p7">ControlName<span class="Apple-converted-space">  </span>P 5 out control 0</p>
-<p class="p7"><span class="Apple-converted-space">   </span>O audio 0 2</p>
-<p class="p4"><br></p>
-<p class="p3">The list shows that the 'freq' control has index 0, 'amp' is 1 and so on. Detune is defined as an "array argument," occupying indices 2-3.</p>
-<p class="p4"><br></p>
-<p class="p3">SynthDefs with a large number of controls may need a little extra code to print the entire list.</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s3">SynthDescLib</span>.global[<span class="s4">\controlList</span>].controls.do(<span class="s3">_</span>.postln); <span class="s1">""</span></p>
-<p class="p4"><br></p>
-<p class="p3">Prior to SuperCollider 3.3, the only way to set array arguments by name was using n_setn (or Node's setn method). Beginning in version 3.3, array arguments can be included in s_new or n_set messages transparently.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Messaging style</b> (note the characters $[ and $] delimiting the array in the list):</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = s.nextNodeID;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\s_new</span>, <span class="s4">\controlList</span>, n, 0, 0, <span class="s4">\detune</span>, $[, 0.95, 1.005, $], <span class="s4">\freq</span>, 220);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\n_set</span>, n, <span class="s4">\gate</span>, 0);</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Object style</b> (the Node object automatically inserts $[ and $] for you):</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = <span class="s3">Synth</span>(<span class="s4">\controlList</span>, [<span class="s4">\detune</span>, [0.95, 1.005], <span class="s4">\freq</span>, 220]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n.set(<span class="s6">\detune</span>, [0.99, 1.01]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n.release;</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Event style:</b></p>
-<p class="p4"><br></p>
-<p class="p3">Supplying an array for an argument in an event already has another meaning: multichannel expansion, in which a separate node is created for each array item. If all items of the array should be sent to the same node, then the array argument should be enclosed in another array level:</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(instrument: <span class="s4">\controlList</span>, freq: 220, detune: [[0.95, 1.005]], sustain: 2).play;</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Order-of-execution.html b/Help/ServerArchitecture/Order-of-execution.html
deleted file mode 100644
index 4d6908c..0000000
--- a/Help/ServerArchitecture/Order-of-execution.html
+++ /dev/null
@@ -1,308 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001de0}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #6f3424}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a31917}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1429a1; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {font: 12.0px Helvetica}
-span.s4 {color: #0728e8}
-span.s5 {color: #1429a1}
-span.s6 {color: #576831}
-span.s7 {color: #0017b3}
-span.s8 {color: #606060}
-span.s9 {color: #0000bf}
-span.s10 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Order of execution<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>See also: </b><a href="Server.html"><span class="s2">Server</span></a>, <a href="Node.html"><span class="s2">Node</span></a>, <a href="Group.html"><span class="s2">Group</span></a>, <a href="default_group.html"><span class="s2">default_group</span></a>, <a href="Bus.html"><span class="s2">Bus</span></a>, <a href="../UGens/InOut/Out.html"><span class="s2">Out</span></a>, <a href="../UGens/InOut/ReplaceOut.html"><span class="s2">ReplaceOut</span></a>, <a href="../UGens/InOut/XOut.html"><span class="s2">XOut</span></a>, <a href="../UGens/InOut/OffsetOut.html"><span class="s2">OffsetOut</span></a>, <a href="../UGens/InOut/In.html"><span class="s2">In</span></a>, <a href="../UGens/InOut/InFeedback.html"><span class="s2">InFeedback</span></a>, <a href="../UGens/InOut/LocalIn.html"><span class="s2">LocalIn</span></a>, <a href="../UGens/InOut/LocalOut.html"><span class="s2">LocalOut</span></a>, <a href="../UGens/InOut/SharedIn.html"><span class="s2">SharedIn</span></a>, <a href="../UGens/InOut/SharedOut.html"><span class="s2">SharedOut</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">Order of execution is one of the most critical and seemingly difficult aspects of using SuperCollider, but in reality it only takes a little thought in the early planning stages to make it work for you.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Order of execution in this context doesn't mean the order in which statements are executed in the language (the client). It refers to the ordering of synth nodes on the server, which corresponds to the order in which their output is calculated each control cycle (blockSize). Whether or not you specify the order of execution, each synth and each group goes into a specific place in the chain of execution.</p>
-<p class="p2"><br></p>
-<p class="p4">If you have on the server:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>synth 1 ---> synth 2<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">... all the unit generators associated with synth 1 will execute before those in synth 2 during each control cycle.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">If you don't have any synths that use In.ar, you don't have to worry about order of execution. It only matters when one synth is reading the output of another.</p>
-<p class="p2"><br></p>
-<p class="p4">The rule is simple: if you have a synth on the server (i.e. an "effect") that depends on the output from another synth (the "source"), the effect must appear later in the chain of nodes on the server than the source.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>source ---> effect<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">If you have:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>effect ---> source<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">The effect synth will not hear the source synth, and you won't get the results you want.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Below is a diagram of a typical server configuration:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><img src="attachments/Order-of-execution/server.png" alt="attachments/Order-of-execution/server.png"></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">On the server external signals can be received by synths from "public" input busses (one in the represented case), while the different synths must be connected to "public" out audio busses (two in the case) in order to output a signal externally to the soundcard (see <a href="Bus.html"><span class="s4">Bus</span></a>). Other busses (both control and audio) are internal. In general, busses can be thought as roughly analogous to sends, busses, or submixes on an analog mixer, or as pipes allowing one to route "flowing" signals. If a synth is connected to a bus at a certain point (thus "flowing" into it)<span class="Apple-converted-space">  </span>a synth taking the signal from the same bus at a subsequent point will take as input the flowing signal (along with anything else previously output to the bus), just as would occur with a water pipe.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Some Notes about Servers and Targets</b></p>
-<p class="p7"><br></p>
-<p class="p4">There is always a default <a href="Server.html"><span class="s4">Server</span></a>, which can be accessed or set through the class method Server.default. At startup this is set to be the local Server, and is also assigned to the interpreter variable s.</p>
-<p class="p2"><br></p>
-<p class="p8">// execute the following and watch the post window</p>
-<p class="p9">s === <span class="s5">Server</span>.default;</p>
-<p class="p9">s === <span class="s5">Server</span>.local;</p>
-<p class="p9"><span class="s5">Server</span>.default = <span class="s5">Server</span>.internal; s === <span class="s5">Server</span>.default;</p>
-<p class="p8"><span class="s5">Server</span><span class="s1">.default = </span><span class="s5">Server</span><span class="s1">.local; </span>// return it to the local server</p>
-<p class="p2"><br></p>
-<p class="p4">When a <a href="Server.html"><span class="s4">Server</span></a> is booted there is a top level group with an ID of 0 that defines the root of the node tree. This is represented by a subclass of <a href="Group.html"><span class="s4">Group</span></a>: <a href="RootNode.html"><span class="s4">RootNode</span></a>. There is also a <a href="default_group.html"><span class="s4">default_group</span></a> with an ID of 1. This group is the default group for all Nodes. This is what you will get if you supply a Server as a target. If you don't specify a target or pass in nil, you will get the default group of the default Server. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">The default group serves an important purpose: It provides a predictable basic Node tree so that methods such as Server:scope and Server:record can function without running into order of execution problems. Thus in general one should create new Nodes within the default group rather than in the RootNode. See <a href="default_group.html"><span class="s4">default_group</span></a> and <a href="RootNode.html"><span class="s4">RootNode</span></a><b> </b>for more detail.</p>
-<p class="p7"><br></p>
-<p class="p6"><b>Controlling order of execution<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4">There are three ways to control the order of execution: using addAction in your synth creation messages, moving nodes, and placing your synths in groups. Using groups is optional, but they are the most effective in helping you organize the order of execution.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Add actions:</b></p>
-<p class="p2"><br></p>
-<p class="p4">By specifying an addAction argument for <b>Synth.new</b> (or SynthDef.play, Function.play, etc.) one can specify the node's placement relative to a target. The target might be a group node, another synth node, or a server.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">As noted above, the default target is the <a href="default_group.html"><span class="s4">default_group</span></a> (the group with <b>nodeID 1</b>) of the default Server.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-converted-space"> </span>The following Symbols are valid addActions for Synth.new: <span class="s6">\addToHead</span>, <span class="s6">\addToTail</span>, <span class="s6">\addBefore</span>, <span class="s6">\addAfter</span>, <span class="s6">\addReplace</span>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>Synth.new(defName, args, target, addAction)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if target is a Synth the<span class="Apple-converted-space">  </span><span class="s6">\addToHead</span>, and <span class="s6">\addToTail</span> methods will apply to that Synths group</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if target is a Server it will resolve to that Server's default group</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if target is nil it will resolve to the default group of the default Server</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p4">For each addAction there is also a corresponding convenience method of class <a href="Synth.html"><span class="s4">Synth</span></a>:</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>Synth.head(aGroup, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add the new synth to the the head of the group specified by aGroup</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if aGroup is a synth node, the new synth will be added to the head of that node's group</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if target is a Server it will resolve to that Server's default group</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if target is nil it will resolve to the default group of the default Server</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>Synth.tail(aGroup, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add the new synth to the the tail of the group specified by aGroup</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if aGroup is a synth node, the new synth will be added to the tail of that node's group</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if target is a Server it will resolve to that Server's default group</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if target is nil it will resolve to the default group of the default Server</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>Synth.before(aNode, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add the new node just before the node specified by aNode.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>Synth.after(aNode, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add the new node just after the node specified by aNode.</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>Synth.replace(synthToReplace, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the new node replaces the node specified by synthToReplace. The target node is freed.</p>
-<p class="p2"><br></p>
-<p class="p4">Using Synth.new without an addAction will result in the default addAction. (You can check the default values for the arguments of any method by looking at a class' source code. See <a href="../Other Topics/Internal-Snooping.html"><span class="s4">Internal-Snooping</span></a> for more details.) Where order of execution matters, it is important that you specify an addAction, or use one of the convenience methods shown above.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Moving nodes:</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>.moveBefore</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>.moveAfter</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>.moveToHead</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>.moveToTail</b></p>
-<p class="p2"><br></p>
-<p class="p4">If you need to change the order of execution after synths and groups have been created, you can do this using move messages.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>~fx = <span class="s7">Synth</span>.tail(s, <span class="s8">"fx"</span>);</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span>~src = </span><span class="s7">Synth</span><span class="s1">.tail(s, </span><span class="s8">"src"</span><span class="s1">);<span class="Apple-converted-space">  </span></span>// effect will not be heard b/c it's earlier</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span>~src.moveBefore(~fx); <span class="Apple-converted-space">  </span></span>// place the source before the effect</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Groups<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4">Groups can be moved in the same way as synths. When you move a group, all the synths in that group move with it. This is why groups are such an important tool for managing order of execution. (See the <b>Group</b> helpfile for details on this and other convenient aspects of Groups.)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Group 1 ---> Group 2</p>
-<p class="p2"><br></p>
-<p class="p4">In the above configuration, all of the synths in group 1 will execute before all of the synths in group 2. This is an easy, easy way to make the order of execution happen the way you want it to.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Determine your architecture, then make groups to support the architecture.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Using order of execution to your advantage<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4">Before you start coding, plan out what you want and decide where the synths need to go.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">A common configuration is to have a routine playing nodes, all of which need to be processed by a single effect. Plus, you want this effect to be separate from other things running at the same time. To be sure, you should place the synth -> effect chain on a private audio bus, then transfer it to the main output.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[Lots of synths] ----> effect ----> transfer</p>
-<p class="p2"><br></p>
-<p class="p4">This is a perfect place to use a group:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Group ( [lots of synths] ) ----> effect ----> transfer</p>
-<p class="p2"><br></p>
-<p class="p4">To make the structure clearer in the code, one can also make a group for the effect (even if there's only one synth in it):</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Group ( [lots of synths] ) ----> Group ( [effect] ) ----> transfer<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">I'm going to throw a further wrench into the example by modulating a parameter (note length) using a control rate synth.</p>
-<p class="p2"><br></p>
-<p class="p4">So, at the beginning of your program:</p>
-<p class="p12"><br></p>
-<p class="p13">s.boot;</p>
-<p class="p14"><br></p>
-<p class="p13">(</p>
-<p class="p15"><span class="s1">l = </span><span class="s9">Bus</span><span class="s1">.control(s, 1);<span class="Apple-converted-space">  </span></span>// get a bus for the LFO--not relevant to order-of-exec</p>
-<p class="p15"><span class="s1">b = </span><span class="s9">Bus</span><span class="s1">.audio(s, 2);<span class="Apple-tab-span">	</span></span>// assuming stereo--this is to keep the src->fx chain separate from</p>
-<p class="p15"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// other similar chains</p>
-<p class="p13">~synthgroup = <span class="s9">Group</span>.tail(s);</p>
-<p class="p13">~fxgroup = <span class="s9">Group</span>.tail(s);</p>
-<p class="p14"><br></p>
-<p class="p15">// now you have synthgroup --> fxgroup within the default group of s</p>
-<p class="p14"><br></p>
-<p class="p15">// make some synthdefs to play with</p>
-<p class="p13"><span class="s9">SynthDef</span>(<span class="s8">"order-of-ex-dist"</span>, { <span class="s9">arg</span> bus, preGain, postGain;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s9">var</span> sig;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>sig = <span class="s9">In</span>.ar(bus, 2);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>sig = (sig * preGain).distort;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s9">ReplaceOut</span>.ar(bus, sig * postGain);</p>
-<p class="p13">}).add;</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s9">SynthDef</span>(<span class="s8">"order-of-ex-pulse"</span>, { <span class="s9">arg</span> freq, bus, ffreq, pan, lfobus;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s9">var</span> sig, noteLen;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>noteLen = <span class="s9">In</span>.kr(lfobus, 1);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>sig = <span class="s9">RLPF</span>.ar(<span class="s9">Pulse</span>.ar(freq, 0.2, 0.5), ffreq, 0.3);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(bus, <span class="s9">Pan2</span>.ar(sig, pan)</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s9">EnvGen</span>.kr(<span class="s9">Env</span>.perc(0.1, 1), timeScale: noteLen, doneAction: 2));</p>
-<p class="p13">}).add;</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s9">SynthDef</span>(<span class="s8">"LFNoise1"</span>, { <span class="s9">arg</span> freq, mul, add, bus;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.kr(bus, <span class="s9">LFNoise1</span>.kr(freq, mul:mul, add:add));</p>
-<p class="p13">}).add;</p>
-<p class="p13">)</p>
-<p class="p14"><br></p>
-<p class="p15">// Place LFO:</p>
-<p class="p14"><br></p>
-<p class="p13">~lfo = <span class="s9">Synth</span>.head(s, <span class="s8">"LFNoise1"</span>, [<span class="s10">\freq</span>, 0.3, <span class="s10">\mul</span>, 0.68, <span class="s10">\add</span>, 0.7, <span class="s10">\bus</span>, l]);</p>
-<p class="p14"><br></p>
-<p class="p15">// Then place your effect:<span class="Apple-converted-space"> </span></p>
-<p class="p14"><br></p>
-<p class="p13">~dist = <span class="s9">Synth</span>.tail(~fxgroup, <span class="s8">"order-of-ex-dist"</span>, [<span class="s10">\bus</span>, b, <span class="s10">\preGain</span>, 8, <span class="s10">\postGain</span>, 0.6]);</p>
-<p class="p14"><br></p>
-<p class="p15">// transfer the results to main out, with level scaling</p>
-<p class="p15">// play at tail of s's default group (note that Function-play also takes addActions!</p>
-<p class="p14"><br></p>
-<p class="p13">~xfer = { <span class="s9">Out</span>.ar(0, 0.25 * <span class="s9">In</span>.ar(b, 2)) }.play(s, addAction: <span class="s10">\addToTail</span>);<span class="Apple-converted-space">   </span></p>
-<p class="p14"><br></p>
-<p class="p15">// And start your routine:</p>
-<p class="p14"><br></p>
-<p class="p13">(</p>
-<p class="p16"><span class="s1">r = </span>Routine<span class="s1">({</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>{</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">Synth</span>.tail(~synthgroup, <span class="s8">"order-of-ex-pulse"</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s10">\freq</span>, rrand(200, 800), <span class="s10">\ffreq</span>, rrand(1000, 15000), <span class="s10">\pan</span>, 1.0.rand2,</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s10">\bus</span>, b, <span class="s10">\lfobus</span>, l]);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.07.wait;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>}.loop;</p>
-<p class="p16"><span class="s1">}).play(</span>SystemClock<span class="s1">);</span></p>
-<p class="p13">)</p>
-<p class="p14"><br></p>
-<p class="p15"><span class="s1">~dist.run(</span><span class="s9">false</span><span class="s1">);<span class="Apple-tab-span">	</span></span>// proves that the distortion effect is doing something</p>
-<p class="p13">~dist.run(<span class="s9">true</span>);</p>
-<p class="p14"><br></p>
-<p class="p15">// to clean up:</p>
-<p class="p13">(</p>
-<p class="p13">r.stop;</p>
-<p class="p13">[~synthgroup, ~fxgroup, b, l, ~lfo, ~xfer].do({ <span class="s9">arg</span> x; x.free });</p>
-<p class="p15"><span class="s1">currentEnvironment.clear; </span>// clear all environment variables</p>
-<p class="p13">)</p>
-<p class="p2"><br></p>
-<p class="p4">Note that in the routine, using a Group for the source synths allows their order to easily be specified relative to each other (they are added with the .tail method), without worrying about their order relative to the effect synth.</p>
-<p class="p2"><br></p>
-<p class="p4">Note that this arrangement prevents errors in order of execution, through the use of a small amount of organizational code. Although straightforward here, this arrangement could easily be scaled to a larger project.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Messaging Style</b></p>
-<p class="p2"><br></p>
-<p class="p4">The above examples are in 'object style'. Should you prefer to work in 'messaging style' there are corresponding messages to all of the methods shown above. See <a href="NodeMessaging.html"><span class="s4">NodeMessaging</span></a>, and <a href="Server-Command-Reference.html"><span class="s4">Server-Command-Reference</span></a> for more details.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Feedback</b></p>
-<p class="p7"><br></p>
-<p class="p4">When the various output ugens (<a href="../UGens/InOut/Out.html"><span class="s4">Out</span></a>, <a href="../UGens/InOut/OffsetOut.html"><span class="s4">OffsetOut</span></a>, <a href="../UGens/InOut/XOut.html"><span class="s4">XOut</span></a>) write data to a bus, they <i>mix</i> it with any data from the current cycle, but <i>overwrite</i> any data from the previous cycle. (<a href="../UGens/InOut/ReplaceOut.html"><span class="s4">ReplaceOut</span></a> overwrites all data regardless.) Thus depending on node order, the data on a given bus may be from the current cycle or be one cycle old. In the case of input ugens (see <a href="../UGens/InOut/In.html"><span class="s4">In</span></a> and <a href="../UGens/InOut/InFeedback.html"><span class="s4">InFeedback</span></a>) <b>In.ar</b> checks the timestamp of any data it reads in and zeros any data from the previous cycle (for use within that synth; the data remains on the bus). This is fine for audio data, as it avoids feedback, but for control data it is useful to be able to read data from any place in the node order. For this reason <b>In.kr</b> also reads data that is older than the current cycle.</p>
-<p class="p2"><br></p>
-<p class="p4">In some cases we might also want to read audio from a node later in the current node order. This is the purpose of <a href="../UGens/InOut/InFeedback.html"><span class="s4">InFeedback</span></a>. The delay introduced by this is at maximum one block size, which equals about 0.0014 sec at the default block size and sample rate.</p>
-<p class="p2"><br></p>
-<p class="p4">The variably mixing and overwriting behaviour of the output ugens can make order of execution crucial when using <b>In.kr</b> or <b>InFeedback.ar</b>. (No pun intended.) For example with a node order like the following the InFeedback ugen in Synth 2 will only receive data from Synth 1 (-> = write out; <- = read in):</p>
-<p class="p2"><br></p>
-<p class="p4">Synth 1 -> busA<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this synth overwrites the output of Synth3 before it reaches Synth 2</p>
-<p class="p4">Synth 2 (with InFeedback) <- busA<span class="Apple-converted-space"> </span></p>
-<p class="p4">Synth 3 -> busA</p>
-<p class="p2"><br></p>
-<p class="p4">If Synth 1 were moved after Synth 2 then Synth 2's InFeedback would receive a mix of the output from Synth 1 and Synth 3. This would also be true if Synth 2 came after Synth1 and Synth 3. In both cases data from Synth 1 and Synth 3 would have the same time stamp (either current or from the previous cycle), so nothing would be overwritten.</p>
-<p class="p2"><br></p>
-<p class="p4">(As well, if any In.ar wrote to busA earlier in the node order than Synth 2, it would zero the bus before Synth 3's data reached Synth 2. This is true even it there were no node before Synth 2 writing to busA.)</p>
-<p class="p2"><br></p>
-<p class="p4">Because of this it is often useful to allocate a separate bus for feedback. With the following arrangement Synth 2 will receive data from Synth3 regardless of Synth 1's position in the node order.</p>
-<p class="p17"><br></p>
-<p class="p4">Synth 1 -> busA</p>
-<p class="p4">Synth 2 (with InFeedback) <- busB<span class="Apple-converted-space"> </span></p>
-<p class="p4">Synth 3 -> busB + busA<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">The following example demonstrates this issue with In.kr:</p>
-<p class="p14"><br></p>
-<p class="p13">(</p>
-<p class="p18"><span class="s9">SynthDef</span><span class="s1">(</span>"help-Infreq"<span class="s1">, { </span><span class="s9">arg</span><span class="s1"> bus;</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(0, <span class="s9">FSinOsc</span>.ar(<span class="s9">In</span>.kr(bus), 0, 0.5));</p>
-<p class="p13">}).add;</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s9">SynthDef</span>(<span class="s8">"help-Outfreq"</span>, { <span class="s9">arg</span> freq = 400, bus;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.kr(bus, <span class="s9">SinOsc</span>.kr(1, 0, freq/40, freq));</p>
-<p class="p13">}).add;</p>
-<p class="p14"><br></p>
-<p class="p13">b = <span class="s9">Bus</span>.control(s,1);</p>
-<p class="p13">)</p>
-<p class="p14"><br></p>
-<p class="p15">// add the first control Synth at the tail of the default server; no audio yet</p>
-<p class="p13">x = <span class="s9">Synth</span>.tail(s, <span class="s8">"help-Outfreq"</span>, [<span class="s10">\bus</span>, b]);</p>
-<p class="p14"><br></p>
-<p class="p15">// add the sound producing Synth BEFORE it; It receives x's data from the previous cycle</p>
-<p class="p13">y = <span class="s9">Synth</span>.before(x, <span class="s8">"help-Infreq"</span>, [<span class="s10">\bus</span>, b]);</p>
-<p class="p14"><br></p>
-<p class="p15">// add another control Synth before y, at the head of the server</p>
-<p class="p15">// It now overwrites x's cycle old data before y receives it</p>
-<p class="p13">z = <span class="s9">Synth</span>.head(s, <span class="s8">"help-Outfreq"</span>, [<span class="s10">\bus</span>, b, <span class="s10">\freq</span>, 800]);</p>
-<p class="p14"><br></p>
-<p class="p15">// get another bus</p>
-<p class="p13">c = <span class="s9">Bus</span>.control(s, 1);</p>
-<p class="p14"><br></p>
-<p class="p15">// now y receives x's data even though z is still there</p>
-<p class="p13">y.set(<span class="s10">\bus</span>, c); x.set(<span class="s10">\bus</span>, c);</p>
-<p class="p14"><br></p>
-<p class="p13">x.free; y.free; z.free;</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/RootNode.html b/Help/ServerArchitecture/RootNode.html
deleted file mode 100644
index 8a76da1..0000000
--- a/Help/ServerArchitecture/RootNode.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-</style>
-</head>
-<body>
-<p class="p1"><b>RootNode</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Group</b></p>
-<p class="p2"><br></p>
-<p class="p3">A RootNode is the Group with the <b>nodeID of 0</b> which is always present on each Server and represents the root of that server's node tree.</p>
-<p class="p2"><br></p>
-<p class="p3">It is always playing, and always running, cannot be freed, or moved anywhere.</p>
-<p class="p2"><br></p>
-<p class="p3">Cacheing is used so that there is always one RootNode per Server.</p>
-<p class="p2"><br></p>
-<p class="p4">s = <span class="s1">Server</span>.local;</p>
-<p class="p5"><br></p>
-<p class="p4">a = <span class="s1">RootNode</span>(s);</p>
-<p class="p4">b = <span class="s1">RootNode</span>(s);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">a === b; </span>// identical object</p>
-<p class="p2"><br></p>
-<p class="p3">sending "/s_new" messages to the server, the target 0 is what is represented by this object.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">s.sendMsg(</span><span class="s3">"/s_new"</span><span class="s2">, </span><span class="s3">"default"</span><span class="s2">, -1, 0, 0);</span>//the last argument is the target id</p>
-<p class="p2"><br></p>
-<p class="p3"><b>IMPORTANT: </b>In general one should NOT add nodes to the RootNode unless one has a specific reason to do so. Instead one should add nodes to the <b>default_group</b>. This provides a known basic node order and protects functionality like Server.record, Server.scope, etc. The default group is the default target for all new nodes, so when using object style nodes will normally not be added to the RootNode unless that is explicitly specified. See <b>default_group</b> for more information.</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Server-Architecture.html b/Help/ServerArchitecture/Server-Architecture.html
deleted file mode 100644
index 75a8100..0000000
--- a/Help/ServerArchitecture/Server-Architecture.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2">SuperCollider 3 Synth Server Architecture</p>
-<p class="p3"><br></p>
-<p class="p4">copyright © 2002 James McCartney</p>
-<p class="p1"><br></p>
-<p class="p2">Introduction</p>
-<p class="p5"><br></p>
-<p class="p6">The SuperCollider 3 Synth Server is a simple but powerful synthesis engine. While synthesis is running, new modules can be created, destroyed and repatched, sample buffers can be created and reallocated. Effects processes can be created and patched into a signal flow dynamically at scheduled times.<span class="Apple-converted-space">  </span>All running modules are ordered in a tree of nodes that define an order of execution. Patching between modules is done through global audio and control buses.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">All commands are received via TCP or UDP using a simplified version of Open Sound Control (OSC). The synth server and its client(s) may be on the same machine or across a network. The synth server does not send or receive MIDI. It is expected that the client will send all control commands. If MIDI is desired, it is up to the client to receive it and convert it to appropriate OSC commands for the synth engine.</p>
-<p class="p5"><br></p>
-<p class="p6">Synth definitions are stored in files generated by the SuperCollider language application. Unit generator definitions are Mach-O bundles (not to be confused with CFBundles). The Unit generator API is a simple C interface.</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2">Main Design Concepts</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Node</b></p>
-<p class="p6">A Node is an addressable node in a tree of nodes run by the synth engine. There are two types, Synths and Groups. The tree defines the order of execution of all Synths. All nodes have an integer ID.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Group</b></p>
-<p class="p6">A Group is a collection of Nodes represented as a linked list. A new Node may be added to the head or tail of the group. The Nodes within a Group may be controlled together. The Nodes in a Group may be both Synths and other Groups. At startup there is a top level group with an ID of zero that defines the root of the tree. If the server was booted from within SCLang (as opposed to from the command line) there will also be a 'default group' with an ID of 1 which is the default target for all new Nodes. See <b>RootNode</b> and <b>default_group</b> for more info.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Synth</b></p>
-<p class="p6">A Synth is a collection of unit generators that run together. They can be addressed and controlled by commands to the synthesis engine. They read input and write output to global audio and control buses. Synths can have their own local controls that are set via commands to the server.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Synth Definition</b></p>
-<p class="p6">Synths are created from Synth Definitions. Synth Definition files are created by the SuperCollider language application and are loaded into the synth server. Synth Definitions are referred to by name.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Audio Buses</b></p>
-<p class="p6">Synths send audio signals to each other via a single global array of audio buses.<span class="Apple-converted-space">  </span>Audio buses are indexed by integers beginning with zero. Using buses rather than connecting synths to each other directly allows synths to connect themselves to the community of other synths without having to know anything about them specifically. The lowest numbered buses get written to the audio hardware outputs. Immediately following the output buses are the input buses, read from the audio hardware inputs. The number of bus channels defined as inputs and outputs do not have to match that of the hardware.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Control Buses</b></p>
-<p class="p6">Synths can send control signals to each other via a single global array of control buses.<span class="Apple-converted-space">  </span>Buses are indexed by integers beginning with zero.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Shared Control Buses</b></p>
-<p class="p6">The internal server (which runs within the same address space as the client app) also has a number of shared control buses to which the client app has synchronous read/write access.<span class="Apple-converted-space">  </span>These buses are indexed by integers beginning with zero.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Buffers</b></p>
-<p class="p6">Buffers are arrays of 32 bit floating point values with a small descriptive header. Buffers are stored in a single global array indexed by integers beginning with zero. Buffers may be safely allocated, loaded and freed while synthesis is running, even while unit generators are using them. Buffers are used for wave tables, sample buffers, delay lines, envelopes, or for any other need which can use an array of floating point values. Sound files may be loaded into or written from buffers.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Unit Generator Definitions</b></p>
-<p class="p6">Unit Generator Definitions are plug-ins loaded automatically when the program starts. They are binary code libraries that are used as building blocks by Synths to build synthesis algorithms. Unit Generator Definitions have names that match the names of SuperCollider language classes used in building Synth Definitions.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p2">Command Line Arguments</p>
-<p class="p1"><br></p>
-<p class="p6">One of -u or -t must be supplied. Both may be supplied.</p>
-<p class="p6">-u <i>udp-port-number</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a port number 0-65535.<span class="Apple-converted-space"> </span></p>
-<p class="p6">-t <i>tcp-port-number</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a port number 0-65535</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">-v <i>verbosity</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Controls the verbosity of server messages. A value of 0 is normal behaviour, -1 suppresses informational</p>
-<p class="p6"><span class="Apple-tab-span">	</span>messages, and -2 suppresses informational and many error messages.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">-a <i>num-audio-bus-channels</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>number of audio bus channels (default = 128).</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The space allocated for audio buses is: (numchannels * (blocksize + 1) * 4)</p>
-<p class="p6">-i <i>num-input-bus-channels</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>number of audio input bus channels (default = 8)</p>
-<p class="p6">-o <i>num-output-bus-channels</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>number of audio output bus channels (default = 8)</p>
-<p class="p6">-c <i>num-control-bus-channels</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>number of control bus channels (default = 4096)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The space allocated for control buses is: (numchannels * 8)</p>
-<p class="p6">-b <i>num-buffers</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>number of sample buffers (default = 1024)</p>
-<p class="p6">-n <i>max-nodes</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>maximum number of nodes (default = 1024)</p>
-<p class="p6">-d <i>max-synth-defs</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>maximum number of synth definitions (default = 1024)</p>
-<p class="p6">-D <i>1 or 0</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>if zero, then synth definitions will not be loaded on start up. (default = 1)</p>
-<p class="p6">-z <i>block-size</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The number of samples in one control period. (default = 64)</p>
-<p class="p6">-Z <i>preferred-hardware-buffer-size</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>If non-zero, it will attempt to set the hardware buffer frame size. (default = 0)</p>
-<p class="p6">-S <i>preferred-sample-rate</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>If non-zero, it will attempt to set the hardware sample rate. (default = 0)</p>
-<p class="p6">-m <i>real-time-memory-size</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The number of kilobytes of real time memory.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>This memory is used to allocate synths and any memory that<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>unit generators themselves allocate. (default = 8192)</p>
-<p class="p6">-r <i>random-number-generators</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The number of seedable random number generators. (default = 64)</p>
-<p class="p6">-w <i>max-interconnect-buffers</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The maximum number of buffers that are allocated for buffers to interconnect<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>unit generators. Sets the limit of complexity of synth defs that can be loaded at<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>runtime. This value will be increased if a more complex synth-def is loaded at<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>start up time, but it cannot be increased once synthesis has begun. (default = 64)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">-l <i>max-logins</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>maximum number of named return addresses stored (default = 64)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>also maximum number of tcp connections accepted</p>
-<p class="p6">-p <i>session-password</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>When using TCP, the session password must be the first command sent.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The default is no password.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>UDP ports never require passwords, so if password protection is desired,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>use TCP.</p>
-<p class="p5"><br></p>
-<p class="p6">-H <i>device-name</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>name of the hardware I/O device. If not provided, the default device is used.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">-I <i>input-streams-enable-string</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Allows turning off input streams that you are not interested in on the device.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>If the string is 01100, for example, then only the second and third input streams</p>
-<p class="p6"><span class="Apple-tab-span">	</span>on the device will be enabled. Turning off streams can reduce CPU load.</p>
-<p class="p5"><br></p>
-<p class="p6">-O <i>output-streams-enable-string</i></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Allows turning off output streams that you are not interested in on the device.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>If the string is 11000, for example, then only the first two output streams</p>
-<p class="p6"><span class="Apple-tab-span">	</span>on the device will be enabled. Turning off streams can reduce CPU load.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">-N <i>cmd-filename input-filename output-filename sample-rate header-format sample-format</i></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Run in non-real-time mode.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The <i>cmd-filename</i> should be a file that contains OSC bundles sorted in<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>ascending time order. If <i>cmd-filename</i> is the underscore character _, then OSC<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>will be streamed from standard input.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The audio input will taken from <i>input-filename</i>.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>If <i>input-filename</i> is the underscore character _, then no input file will be read.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Output will be written to <i>output-filename</i>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The output file's sample rate is specified by <i>sample-rate</i>.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>The output file <i>header-format</i> should be one of: AIFF, WAVE, NeXT.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The output file <i>sample-format</i> should be one of: int16, int24, int32, float, double.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>The number of channels in the output file is specified with the -o argument.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">example:</p>
-<p class="p5"><br></p>
-<p class="p6">scscynth -u 57117 >synth_log &</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Accept commands via UDP on port 57117.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Send output to file "synth_log"</p>
-<p class="p6"><span class="Apple-tab-span">	</span>Run asynchronously: &.</p>
-<p class="p5"><br></p>
-<p class="p6">scsynth -N score.osc _ out.aiff 48000 AIFF int24<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>Run in non real time mode with command file score.osc, no input file, and output file named out.aiff. Sample rate is 48000. Output file header format is aiff, sample format is 24 bit integer.</p>
-<p class="p1"><br></p>
-<p class="p2">Binary Format of Messages</p>
-<p class="p1"><br></p>
-<p class="p6">Messages are similar in format to Open Sound Control messages, except that OSC #bundles may not be nested, and pattern matching of the command name is not performed. When streamed via TCP, Messages are each preceeded by a 32 bit integer giving the length in bytes of the message. UDP datagrams contain this length information already.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Types:</b></p>
-<p class="p6">All values are in network byte order.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>long</b> - a 64 bit integer. Used for time stamps only.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>int</b> - a 32 bit integer.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>float</b> - a 32 bit single precision floating point number.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>double</b> - a 64 bit double precision floating point number.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>string</b> - a string of 8 bit ASCII characters, zero padded to a multiple of 4 bytes.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><b>bytes</b> - a buffer of data preceeded by a 32 bit length field and padded to a multiple of 4 bytes.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Tags:</b></p>
-<p class="p6">Command arguments have single character tags which occur in a tag string to identify their types.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>'i' - an int.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>'f' - a float</p>
-<p class="p6"><span class="Apple-tab-span">	</span>'s' - a string</p>
-<p class="p6"><span class="Apple-tab-span">	</span>'b' - bytes</p>
-<p class="p5"><br></p>
-<p class="p6"><b>a Command consists of:</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>string - the command name. See the Command Reference below.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>string - a string with tags defined by the types of the arguments to follow.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The tag string begins with a comma ',' character.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>...any combination of arguments of types: int, float, string or bytes.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>a Bundle consists of:</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span>time stamp - long. Time stamps are in the same format as defined by Open Sound Control :<span class="Apple-converted-space">  </span>The top 32 bits are seconds since 1900 and the lower 32 bits represent the 32 bit fraction of one second.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>...a series of Commands each preceded by a 32-bit integer byte length.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b>a Message consists of:</b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>using UDP :<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>one Bundle or one Command.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span>using TCP :<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>int - the length in bytes of the following message.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>one Bundle or one Command.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p2">Glossary</p>
-<p class="p5"><br></p>
-<p class="p6"><b>buffer</b> - a header and array of floating point sample data. Buffers are used for sound files, delay lines, arrays of global controls, and arrays of inter-synth patch points.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>group</b> - a linked list of nodes. groups provide ways to control execution of many nodes at once. a group is a kind of node.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>MIDI</b> - a protocol for sending music control data between synthesizers.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>node</b> - an object in a tree of objects executed in a depth first traversal order by the synth engine. There are two types of nodes, synths and groups.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>Open Sound Control</b> - a protocol defined by CNMAT at UCBerkeley for controlling synthesizers. See http://cnmat.cnmat.berkeley.edu/OSC/ .</p>
-<p class="p5"><br></p>
-<p class="p6"><b>OSC</b> - see Open Sound Control.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>synth</b> - a sound processing module. Similar to "voice " in other systems. Synths are referred to by a number.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>synth definition</b> - a definition for creating new synths. similar to "instrument" in other systems.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>TCP</b> - a protocol for streaming data over a network.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>UDP</b> - a protocol for sending datagrams over a network.</p>
-<p class="p5"><br></p>
-<p class="p4">copyright © 2002 James McCartney</p>
-<p class="p3"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Server-Command-Reference.html b/Help/ServerArchitecture/Server-Command-Reference.html
deleted file mode 100644
index c2c5727..0000000
--- a/Help/ServerArchitecture/Server-Command-Reference.html
+++ /dev/null
@@ -1,937 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SuperCollider Server Synth Engine Command Reference</b></p>
-<p class="p2"><br></p>
-<p class="p3">The following is a list of all server commands and their arguments.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Each command has a command number which can be sent to the server as a 32 bit integer instead of an OSC style string. Command numbers are listed at the end of this document.</p>
-<p class="p2"><br></p>
-<p class="p3">If a command's description contains the word <b>Asynchronous</b>, then that command will be passed to a background thread to complete so as not to steal CPU time from the audio synthesis thread. All asynchronous commands send a reply to the client when they are completed. Many asynchronous commands can contain an OSC message or bundle to be executed upon completion.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>eg.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>["/d_load", "synthdefs/void.scsyndef",<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>["/s_new", "void", 1001, 1, 0] // completion message</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Master Controls</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/quit<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>quit program</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>no arguments.</p>
-<p class="p2"><br></p>
-<p class="p3">Exits the synthesis server.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>just before completion.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/notify</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>register to receive notifications from server</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - one to receive notifications, zero to stop receiving them.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">If argument is one, server will remember your return address and send you notifications. if argument is zero, server will stop sending you notifications.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/status<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>query the status</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>no arguments.</p>
-<p class="p2"><br></p>
-<p class="p3">Replies to sender with the following message.</p>
-<p class="p3">/status.reply</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - 1. unused.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of unit generators.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of synths.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of groups.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of loaded synth definitions.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>float - average percent CPU usage for signal processing</p>
-<p class="p3"><span class="Apple-tab-span">	</span>float - peak percent CPU usage for signal processing</p>
-<p class="p3"><span class="Apple-tab-span">	</span>double - nominal sample rate</p>
-<p class="p3"><span class="Apple-tab-span">	</span>double - actual sample rate</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/cmd<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>plug-in defined command</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - command name</p>
-<p class="p3"><span class="Apple-tab-span">	</span>...any arguments</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Commands are defined by plug-ins.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/dumpOSC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>display incoming OSC messages</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - code</p>
-<p class="p2"><br></p>
-<p class="p3">Turns on and off printing of the contents of incoming Open Sound Control messages. This is useful when debugging your command stream.</p>
-<p class="p3">The values for the code are as follows:</p>
-<p class="p3">0 - turn dumping OFF.</p>
-<p class="p3">1 - print the parsed contents of the message.</p>
-<p class="p3">2 - print the contents in hexadecimal.</p>
-<p class="p3">3 - print both the parsed and hexadecimal representations of the contents.<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/sync<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>notify when async commands have completed.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - a unique number identifying this command.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Replies with a /synced message when all asynchronous commands received before this one have completed. The reply will contain the sent unique ID.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/synced, ID </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/clearSched<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clear all scheduled bundles.</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Removes all bundles from the scheduling queue.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/error<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>enable/disable error message posting</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - mode</p>
-<p class="p2"><br></p>
-<p class="p3">Turn on or off error messages sent to the SuperCollider post window. Useful when sending a message, such as /n_free, whose failure does not necessarily indicate anything wrong.</p>
-<p class="p2"><br></p>
-<p class="p3">The values for mode are as follows:</p>
-<p class="p3">0 = turn off error posting until the next ['/error', 1] message.</p>
-<p class="p3">1 = turn on error posting.</p>
-<p class="p2"><br></p>
-<p class="p3">For convenience of client-side methods, you can also suppress errors temporarily, for the scope of a single bundle.</p>
-<p class="p2"><br></p>
-<p class="p3">-1 = turn off locally in the bundle -- error posting reverts to the "permanent" setting for the next message or bundle.</p>
-<p class="p3">-2 = turn on locally in the bundle.</p>
-<p class="p2"><br></p>
-<p class="p3">These "temporary" states accumulate within a single bundle -- so if you have nested calls to methods that use bundle-local error suppression, error posting remains off until all the layers have been unwrapped. If you use ['/error', -1] within a self-bundling method, you should always close it with ['/error', -2] so that subsequent bundled messages will take the correct error posting status. However, even if this is not done, the next bundle or message received will begin with the standard error posting status, as set by modes 0 or 1.</p>
-<p class="p2"><br></p>
-<p class="p3">Temporary error suppression may not affect asynchronous commands in every case.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Synth Definition Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/d_recv</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>receive a synth definition file</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - buffer of data.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><br></p>
-<p class="p3">Loads a file of synth definitions from a buffer in the message. Resident definitions with the same names are overwritten.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/d_load</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>load synth definition</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - pathname of file. Can be a pattern like "synthdefs/perc-*"</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><br></p>
-<p class="p3">Loads a file of synth definitions. Resident definitions with the same names are overwritten.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/d_loadDir<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>load a directory of synth definitions</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - pathname of directory.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Loads a directory of synth definitions files. Resident definitions with the same names are overwritten.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/d_free</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>delete synth definition</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>string - synth def name</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3">Removes a synth definition once all synths using it have ended.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Node Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_free<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delete a node.</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Stops a node abruptly, removes it from its group, and frees its memory. A list of node IDs may be specified. Using this method can cause a click if the node is not silent at the time it is freed.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_run<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>turn node on or off</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - run flag</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">If the run flag set to zero then the node will not be executed.</p>
-<p class="p3">If the run flag is set back to one, then it will be executed.</p>
-<p class="p3">Using this method to start and stop nodes can cause a click if the node is not silent at the time run flag is toggled.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_set<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set a node's control value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float or int - a control value</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Takes a list of pairs of control indices and values and sets the controls to those values. If the node is a group, then it sets the controls of every node in the group.</p>
-<p class="p2"><br></p>
-<p class="p3">This message now supports array type tags ($[ and $]) in the control/value component of the OSC message.<span class="Apple-converted-space">  </span>Arrayed control values are applied in the manner of n_setn (i.e., sequentially starting at the indexed or named control). <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_setn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set ranges of a node's control value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of sequential controls to change (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float or int - a control value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] * M</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Set contiguous ranges of control indices to sets of values. For each range, the starting control index is given followed by the number of controls to change, followed by the values. If the node is a group, then it sets the controls of every node in the group.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_fill<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fill ranges of a node's control value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of values to fill (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float or int - value</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Set contiguous ranges of control indices to single values. For each range, the starting control index is given followed by the number of controls to change, followed by the value to fill. If the node is a group, then it sets the controls of every node in the group.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_map<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>map a node's controls to read from a bus</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - control bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Takes a list of pairs of control names or indices and bus indices and causes those controls to be read continuously from a global control bus. If the node is a group, then it maps the controls of every node in the group. If the control bus index is -1 then any current mapping is undone. Any <b>n_set</b>, <b>n_setn</b> and <b>n_fill</b> command will also unmap the control.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_mapn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>map a node's controls to read from buses</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - control bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of controls to map</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Takes a list of triplets of control names or indices, bus indices, and number of controls to map and causes those controls to be mapped sequentially to buses. If the node is a group, then it maps the controls of every node in the group. If the control bus index is -1 then any current mapping is undone. Any <b>n_set</b>, <b>n_setn</b> and <b>n_fill</b> command will also unmap the control.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_mapa<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>map a node's controls to read from an audio bus</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - control bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Takes a list of pairs of control names or indices and audio bus indices and causes those controls to be read continuously from a global audio bus. If the node is a group, then it maps the controls of every node in the group. If the audio bus index is -1 then any current mapping is undone. Any <b>n_set</b>, <b>n_setn</b> and <b>n_fill</b> command will also unmap the control. For the full audio rate signal, the argument must have its rate set to \ar.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_mapan<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>map a node's controls to read from audio buses</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - control bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of controls to map</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Takes a list of triplets of control names or indices, audio bus indices, and number of controls to map and causes those controls to be mapped sequentially to buses. If the node is a group, then it maps the controls of every node in the group. If the audio bus index is -1 then any current mapping is undone. Any <b>n_set</b>, <b>n_setn</b> and <b>n_fill</b> command will also unmap the control. For the full audio rate signal, the argument must have its rate set to \ar.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_before<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>place a node before another</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - the ID of the node to place (A)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - the ID of the node before which the above is placed (B)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3">Places node A in the same group as node B, to execute immediately before node B.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_after<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>place a node after another</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - the ID of the node to place (A)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - the ID of the node after which the above is placed (B)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3">Places node A in the same group as node B, to execute immediately after node B.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_query<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get info about a node</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3">The server sends an <b>/n_info</b> message for each node to registered clients.<span class="Apple-converted-space"> </span></p>
-<p class="p3">See <b>Node Notifications </b>below for the format of the <b>/n_info</b> message.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_trace<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trace a node</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3">Causes a synth to print out the values of the inputs and outputs of its unit generators for one control period. Causes a group to print the node IDs and names of each node in the group for one control period.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_order<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>move and order a list of nodes</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - add action (0,1,2, 3 or 4 see below)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - add target ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Move the listed nodes to the location specified by the target and add action, and place them in the order specified. Nodes which have already been freed will be ignored.</p>
-<p class="p3"><b>add actions:</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>0 - construct the node order at the head of the group specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>1 - construct the node order at the tail of the group specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>2 - construct the node order just before the node specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>3 - construct the node order<span class="Apple-converted-space">  </span>just after the node specified by the add target ID.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Synth Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/s_new<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a new synth</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - synth definition name</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - synth ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - add action (0,1,2, 3 or 4 see below)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - add target ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float or int - a control value</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Create a new synth from a synth definition, give it an ID, and add it to the tree of nodes. There are four ways to add the node to the tree as determined by the add action argument which is defined as follows:</p>
-<p class="p3"><b>add actions:</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>0 - add the new node to the the head of the group specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>1 - add the new node to the the tail of the group specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>2 - add the new node just before the node specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>3 - add the new node just after the node specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>4 - the new node replaces the node specified by the add target ID. The target node is freed.</p>
-<p class="p3">Controls may be set when creating the synth. The control arguments are the same as for the <b>n_set</b> command.</p>
-<p class="p2"><br></p>
-<p class="p3">If you send <b>/s_new</b> with a synth ID of -1, then the server will generate an ID for you. The server reserves all negative IDs. Since you don't know what the ID is, you cannot talk to this node directly later. So this is useful for nodes that are of finite duration and that get the control information they need from arguments and buses or messages directed to their group. In addition no notifications are sent when there are changes of state for this node, such as /go, /end, /on, /off.</p>
-<p class="p2"><br></p>
-<p class="p3">If you use a node ID of -1 for any other command, such as <b>/n_map</b>, then it refers to the most recently created node by <b>/s_new</b> (auto generated ID or not). This is how you can map<span class="Apple-converted-space">  </span>the controls of a node with an auto generated ID. In a multi-client situation, the only way you can be sure what node -1 refers to is to put the messages in a bundle.</p>
-<p class="p2"><br></p>
-<p class="p3">This message now supports array type tags ($[ and $]) in the control/value component of the OSC message.<span class="Apple-converted-space">  </span>Arrayed control values are applied in the manner of n_setn (i.e., sequentially starting at the indexed or named control). See the <a href="NodeMessaging.html"><span class="s2">NodeMessaging</span></a> helpfile.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/s_get<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get control value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - synth ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Replies to sender with the corresponding <b>/n_set</b> command.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/s_getn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get ranges of control value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - synth ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int or string - a control index or name</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of sequential controls to get (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Get contiguous ranges of controls. Replies to sender with the corresponding <b>/n_setn</b> command.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/s_noid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>auto-reassign synth's ID to a reserved value</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - synth ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This command is used when the client no longer needs to communicate with the synth and wants to have the freedom to reuse the ID. The server will reassign this synth to a reserved negative number. This command is purely for bookkeeping convenience of the client. No notification is sent when this occurs.</p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p6"><b>Group Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/g_new<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a new group</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - new group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - add action (0,1,2, 3 or 4 see below)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - add target ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Create a new group and add it to the tree of nodes.</p>
-<p class="p3">There are four ways to add the group to the tree as determined by the add action argument which is defined as follows (the same as for "/s_new"):</p>
-<p class="p3"><b>add actions:</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>0 - add the new group to the the head of the group specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>1 - add the new group to the the tail of the group specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>2 - add the new group just before the node specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>3 - add the new group just after the node specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>4 - the new node replaces the node specified by the add target ID. The target node is freed.</p>
-<p class="p3">Multiple groups may be created in one command by adding arguments.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/p_new<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a new parallel group</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - new group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - add action (0,1,2, 3 or 4 see below)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - add target ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Create a new parallel group and add it to the tree of nodes. Parallel groups are relaxed groups, their child nodes are evaluated in unspecified order.</p>
-<p class="p3">There are four ways to add the group to the tree as determined by the add action argument which is defined as follows (the same as for "/s_new"):</p>
-<p class="p3"><b>add actions:</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>0 - add the new group to the the head of the group specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>1 - add the new group to the the tail of the group specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>2 - add the new group just before the node specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>3 - add the new group just after the node specified by the add target ID.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>4 - the new node replaces the node specified by the add target ID. The target node is freed.</p>
-<p class="p3">Multiple groups may be created in one command by adding arguments.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/g_head<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add node to head of group</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Adds the node to the head (first to be executed) of the group.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/g_tail<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add node to tail of group</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Adds the node to the tail (last to be executed) of the group.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/g_freeAll<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delete all nodes in a group.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Frees all nodes in the group. A list of groups may be specified.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/g_deepFree<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>free all synths in this group and all its sub-groups.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Traverses all groups below this group and frees all the synths. Sub-groups are not freed. A list of groups may be specified.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/g_dumpTree<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>post a representation of this group's node subtree.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - flag; if not 0 the current control (arg) values for synths will be posted</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Posts a representation of this group's node subtree, i.e. all the groups and synths contained within it, optionally including the current control values for synths.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/g_queryTree<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get a representation of this group's node subtree.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - flag: if not 0 the current control (arg) values for synths will be included</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Request a representation of this group's node subtree, i.e. all the groups and synths contained within it. Replies to the sender with a <b>/g_queryTree.reply </b>message listing all of the nodes contained within the group in the following format:</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - flag: if synth control values are included 1, else 0</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID of the requested group</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of child nodes contained within the requested group</p>
-<p class="p3"><span class="Apple-tab-span">	</span><i>then for each node in the subtree:</i></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of child nodes contained within this node. If -1this is a synth, if >=0 it's a group</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><i>then, if this node is a synth:</i></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>symbol - the SynthDef name for this node.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><i>then, if flag (see above) is true:</i></p>
-<p class="p3"><i><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></i>int - numControls for this synth (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>symbol or int: control name or index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float or symbol: value or control bus mapping symbol (e.g. 'c1')</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] * M</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * the number of nodes in the subtree</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>N.B. </b>The order of nodes corresponds to their execution order on the server. Thus child nodes (those contained within a group) are listed immediately following their parent. See the method Server:queryAllNodes for an example of how to process this reply.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Unit Generator Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/u_cmd<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>send a command to a unit generator</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - unit generator index</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - command name</p>
-<p class="p3"><span class="Apple-tab-span">	</span>...any arguments</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Sends all arguments following the command name to the unit generator to be performed. Commands are defined by unit generator plug ins.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Buffer Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3">Buffers are stored in a global array, indexed by integers starting at zero.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_alloc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>allocate buffer space.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of frames</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of channels (optional. default = 1 channel)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Allocates zero filled buffer to number of channels and samples.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_allocRead<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>allocate buffer space and read a sound file.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - path name of a sound file.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - starting frame in file (optional. default = 0)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of frames to read (optional. default = 0, see below)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Allocates buffer to number of channels of file and number of samples requested, or fewer if sound file is smaller than requested. Reads sound file data from the given starting frame in the file. If the number of frames argument is less than or equal to zero, the entire file is read.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_allocReadChannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>allocate buffer space and read channels from a sound file.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int<span class="Apple-converted-space">  </span>- buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - path name of a sound file</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - starting frame in file</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of frames to read</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>int<span class="Apple-converted-space">  </span>- source file channel index</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N<span class="Apple-converted-space">    </span>N >= 0</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">As b_allocRead, but reads individual channels into the allocated buffer in the order specified.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_read<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>read sound file data into an existing buffer.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - path name of a sound file.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - starting frame in file (optional. default = 0)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of frames to read (optional. default = -1, see below)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - starting frame in buffer (optional. default = 0)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - leave file open (optional. default = 0)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Reads sound file data from the given starting frame in the file and writes it to the given starting frame in the buffer. If number of frames is less than zero, the entire file is read.<span class="Apple-converted-space"> </span></p>
-<p class="p3">If reading a file to be used by DiskIn ugen then you will want to set "leave file open" to one, otherwise set it to zero.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_readChannel<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>read sound file channel data into an existing buffer</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - path name of a sound file</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - starting frame in file</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of frames to read</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - starting frame in buffer</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - leave file open</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>int<span class="Apple-converted-space">  </span>- source file channel index</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N<span class="Apple-converted-space">    </span>N >= 0</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - completion message</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">As b_read, but reads individual channels in the order specified. The number of channels requested must match the number of channels in the buffer.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_write<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>write sound file data.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - path name of a sound file.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - header format.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - sample format.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - number of frames to write (optional. default = -1, see below)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - starting frame in buffer (optional. default = 0)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - leave file open (optional. default = 0)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><br></p>
-<p class="p3">Write a buffer as a sound file.</p>
-<p class="p3">Header format is one of:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>"aiff", "next", "wav", "ircam"", "raw"</p>
-<p class="p3">Sample format is one of:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>"int8", "int16", "int24", "int32", "float", "double", "mulaw", "alaw"</p>
-<p class="p3">Not all combinations of header format and sample format are possible.</p>
-<p class="p3">If number of frames is less than zero, all samples from the starting frame to the end of the buffer are written.</p>
-<p class="p3">If opening a file to be used by DiskOut ugen then you will want to set "leave file open" to one, otherwise set it to zero. If "leave file open" is set to one then the file is created, but no frames are written until the DiskOut ugen does so.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_free<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>free buffer data.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Frees buffer space allocated for this buffer.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_zero<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>zero sample data</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>bytes - an OSC message to execute upon completion. (optional)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Sets all samples in the buffer to zero.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_set<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set sample value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - a sample index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - a sample value</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Takes a list of pairs of sample indices and values and sets the samples to those values.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_setn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set ranges of sample value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - sample starting index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of sequential samples to change (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - a sample value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] * M</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Set contiguous ranges of sample indices to sets of values. For each range, the starting sample index is given followed by the number of samples to change, followed by the values.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_fill<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fill ranges of sample value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - sample starting index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of samples to fill (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - value</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Set contiguous ranges of sample indices to single values. For each range, the starting sample index is given followed by the number of samples to change, followed by the value to fill. This is only meant for setting a few samples, not whole buffers or large sections.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_gen<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>call a command to fill a buffer</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - command name</p>
-<p class="p3"><span class="Apple-tab-span">	</span>.. command arguments</p>
-<p class="p2"><br></p>
-<p class="p3">Plug-ins can define commands that operate on buffers. The arguments after the command name are defined by the command. The currently defined buffer fill commands are listed below in a separate section.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_close</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">After using a buffer with DiskOut, close the soundfile and write header information.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_query</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Responds to the sender with a <b>/b_info</b> message.<span class="Apple-converted-space">  </span>The arguments to <b>/b_info</b> are as follows:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of frames</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of channels</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - sample rate</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_get<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get sample value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - a sample index</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Replies to sender with the corresponding <b>/b_set</b> command.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/b_getn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get ranges of sample value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - starting sample index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of sequential samples to get (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Get contiguous ranges of samples. Replies to sender with the corresponding <b>/b_setn</b> command. This is only meant for getting a few samples, not whole buffers or large sections.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Control Bus Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/c_set<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set bus value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - a bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float or int - a control value</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Takes a list of pairs of bus indices and values and sets the buses to those values.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/c_setn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set ranges of bus value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - starting bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of sequential buses to change (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float or int - a control value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] * M</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Set contiguous ranges of buses to sets of values. For each range, the starting bus index is given followed by the number of channels to change, followed by the values.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/c_fill<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fill ranges of bus value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - starting bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of buses to fill (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float or int - value</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Set contiguous ranges of buses to single values. For each range, the starting sample index is given followed by the number of buses to change, followed by the value to fill.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/c_get<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get bus value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - a bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Takes a list of buses and replies to sender with the corresponding <b>/c_set</b> command.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/c_getn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>get ranges of bus value(s)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - starting bus index</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of sequential buses to get (M)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Get contiguous ranges of buses. Replies to sender with the corresponding <b>/c_setn</b> command.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Non Real Time Mode Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>/nrt_end<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>end real time mode, close file</b></p>
-<p class="p8"><b>not yet implemented</b><span class="s3"><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>no arguments.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This message should be sent in a bundle in non real time mode.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The bundle timestamp will establish the ending time of the file.<span class="Apple-converted-space"> </span></p>
-<p class="p3">This command will end non real time mode and close the sound file.</p>
-<p class="p3">Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p6"><b>Replies to Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3">These messages are sent by the server in reponse to some commands.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/done<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an asynchronous message has completed.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - the name of the command</p>
-<p class="p2"><br></p>
-<p class="p3">Sent in response to all asynchronous commands. Sent only to the sender of the original message.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/fail<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an error occurred.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - the name of the command</p>
-<p class="p3"><span class="Apple-tab-span">	</span>string - the error message.</p>
-<p class="p2"><br></p>
-<p class="p3">There was a problem. Sent only to the sender of the original message.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/late<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a command was received too late.</b></p>
-<p class="p8"><b>not yet implemented</b><span class="s3"><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - the high 32 bits of the original time stamp.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - the low 32 bits of the original time stamp.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - the high 32 bits of the time it was executed.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - the low 32 bits of the time it was executed.</p>
-<p class="p2"><br></p>
-<p class="p3">The command was received too late to be executed on time. Sent only to the sender of the original message.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b>Notifications from Server</b></p>
-<p class="p2"><br></p>
-<p class="p3">These messages are sent as notification of some event to all clients who have registered via the /notify command .</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Node Notifications</b></p>
-<p class="p2"><br></p>
-<p class="p3">All of these have the same arguments:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - the node's parent group ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - previous node ID, -1 if no previous node.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - next node ID, -1 if no next node.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - 1 if the node is a group, 0 if it is a synth</p>
-<p class="p3"><span class="Apple-tab-span">	</span><i>The following two arguments are only sent if the node is a group:</i></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - the ID of the head node, -1 if there is no head node.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - the ID of the tail node, -1 if there is no tail node.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_go<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a node was started</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This command is sent to all registered clients when a node is created.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_end<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a node ended</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This command is sent to all registered clients when a node ends and is deallocated.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_off<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a node was turned off</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This command is sent to all registered clients when a node is turned off.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_on<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a node was turned on</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This command is sent to all registered clients when a node is turned on.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_move<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a node was moved</b></p>
-<p class="p2"><br></p>
-<p class="p3">This command is sent to all registered clients when a node is moved.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/n_info<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reply to /n_query</b></p>
-<p class="p2"><br></p>
-<p class="p3">This command is sent to all registered clients in response to an <b>/n_query</b> command.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Trigger Notification</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This command is sent to all registered clients when a node is moved from one group to another.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>/tr<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a trigger message</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>int - trigger ID</p>
-<p class="p3"><span class="Apple-tab-span">	</span>float - trigger value</p>
-<p class="p2"><br></p>
-<p class="p3">This command is the mechanism that synths can use to trigger events in clients.</p>
-<p class="p3">The node ID is the node that is sending the trigger. The trigger ID and value are determined by inputs to the SendTrig unit generator which is the originator of this message.</p>
-<p class="p2"><br></p>
-<p class="p10">copyright © 2002 James McCartney</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p6"><b>Buffer Fill Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3">These are the currently defined fill routines for use with the <b>/b_gen</b> command.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Wave Fill Commands</b></p>
-<p class="p11"><br></p>
-<p class="p3">There are three defined fill routines for sine waves.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>The flags are defined as follows:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 - normalize - Normalize peak amplitude of wave to 1.0.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 - wavetable - If set, then the buffer is written in wavetable format so that it can be read by interpolating oscillators.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 - clear - if set then the buffer is cleared before new partials are written into it. Otherwise the new partials are summed with the existing contents of the buffer.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>sine1</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - flags, see above</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - partial amplitude</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Fills a buffer with a series of sine wave partials. The first float value specifies the amplitude of the first partial, the second float value specifies the amplitude of the second partial, and so on.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>sine2</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - flags, see above</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - partial frequency (in cycles per buffer)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - partial amplitude</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Similar to sine1 except that each partial frequency is specified explicitly instead of being an integer series of partials. Non-integer partial frequencies are possible.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>sine3</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - flags, see above</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - partial frequency (in cycles per buffer)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - partial amplitude</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - partial phase</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Similar to sine2 except that each partial may have a nonzero starting phase.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>cheby</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - flags, see above</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>float - amplitude</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>] * N</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Fills a buffer with a series of chebyshev polynomials, which can be defined as:</p>
-<p class="p3">cheby(n) = amplitude<span class="Apple-converted-space">  </span>* cos(n * acos(x))</p>
-<p class="p3">The first float value specifies the amplitude for n = 1, the second float value specifies the amplitude for n = 2, and so on. To eliminate a DC offset when used as a waveshaper, the wavetable is offset so that the center value is zero.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Other Commands</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>copy</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - sample position in destination</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - source buffer number</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - sample position in source</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>int - number of samples to copy</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Copy samples from the source buffer to the destination buffer specified in the <b>b_gen</b> command. If the number of samples to copy is negative, the maximum number of samples possible is copied.</p>
-<p class="p3"><b>Asynchronous</b>. Replies to sender with <b>/done </b>when complete.</p>
-<p class="p2"><br></p>
-<p class="p10">copyright © 2002 James McCartney</p>
-<p class="p2"><br></p>
-<p class="p11"><br></p>
-<p class="p3"><b>Command Numbers</b></p>
-<p class="p11"><br></p>
-<p class="p3">These are the currently defined command numbers. More may be added to the end of the list in the future.</p>
-<p class="p11"><br></p>
-<p class="p12">enum<span class="s3"> {</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_none = <span class="s2">0</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_notify = <span class="s2">1</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_status = <span class="s2">2</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_quit = <span class="s2">3</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_cmd = <span class="s2">4</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_d_recv = <span class="s2">5</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_d_load = <span class="s2">6</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_d_loadDir = <span class="s2">7</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_d_freeAll = <span class="s2">8</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_s_new = <span class="s2">9</span>,</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_trace = <span class="s2">10</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_free = <span class="s2">11</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_run = <span class="s2">12</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_cmd = <span class="s2">13</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_map = <span class="s2">14</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_set = <span class="s2">15</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_setn = <span class="s2">16</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_fill = <span class="s2">17</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_before = <span class="s2">18</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_after = <span class="s2">19</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_u_cmd = <span class="s2">20</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_g_new = <span class="s2">21</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_g_head = <span class="s2">22</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_g_tail = <span class="s2">23</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_g_freeAll = <span class="s2">24</span>,</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_c_set = <span class="s2">25</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_c_setn = <span class="s2">26</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_c_fill = <span class="s2">27</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_alloc = <span class="s2">28</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_allocRead = <span class="s2">29</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_read = <span class="s2">30</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_write = <span class="s2">31</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_free = <span class="s2">32</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_close = <span class="s2">33</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_zero = <span class="s2">34</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_set = <span class="s2">35</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_setn = <span class="s2">36</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_fill = <span class="s2">37</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_gen = <span class="s2">38</span>,</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_dumpOSC = <span class="s2">39</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_c_get = <span class="s2">40</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_c_getn = <span class="s2">41</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_get = <span class="s2">42</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_getn = <span class="s2">43</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_s_get = <span class="s2">44</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_s_getn = <span class="s2">45</span>,</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_query = <span class="s2">46</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_query = <span class="s2">47</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_mapn = <span class="s2">48</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_s_noid = <span class="s2">49</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_g_deepFree = <span class="s2">50</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_clearSched = <span class="s2">51</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_sync = <span class="s2">52</span>,</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_d_free = <span class="s2">53</span>,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_allocReadChannel = <span class="s2">54</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_b_readChannel = <span class="s2">55</span>,</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_g_dumpTree = <span class="s2">56</span>,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_g_queryTree = <span class="s2">57</span>,</p>
-<p class="p14"><br></p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-converted-space">     </span>cmd_error = 58,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-converted-space">     </span>cmd_s_newargs = 59,</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_mapa = 60,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_mapan = 61,</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cmd_n_order = 62,</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>NUMBER_OF_COMMANDS = <span class="s2">63</span></p>
-<p class="p13">};</p>
-<p class="p10">copyright © 2002 James McCartney</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Server.html b/Help/ServerArchitecture/Server.html
deleted file mode 100644
index d6d34c2..0000000
--- a/Help/ServerArchitecture/Server.html
+++ /dev/null
@@ -1,435 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a31917}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #6e3533; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #1534aa; min-height: 12.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1739a8}
-span.s3 {color: #000000}
-span.s4 {color: #0017b3}
-span.s5 {color: #a31917}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #606060}
-span.s8 {color: #595959}
-span.s9 {font: 9.0px Monaco}
-span.s10 {color: #35701d}
-span.s11 {color: #0000bf}
-span.s12 {color: #007300}
-span.s13 {color: #bf0000}
-span.s14 {color: #1c46e4}
-span.s15 {text-decoration: underline ; color: #001de0}
-span.s16 {color: #1534aa}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Server</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object representing an sc-server application</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Model</b></p>
-<p class="p2"><br></p>
-<p class="p1">A Server object is the client-side representation of a server app and is used to control the app from the SuperCollider language application. (See <a href="ClientVsServer.html"><span class="s2">ClientVsServer</span></a> for more details on the distinction.) It forwards osc-messages and has a number of allocators that keep track of IDs for nodes, buses and buffers. The server application is a commandline program, so all commands apart from osc-messages are unix commands. The server application represented by a Server object might be running on the same machine as the client (in the same address space as the language application or separately; see below), or it may be running on a remote machine.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">Most of a Server's options are contolled through its instance of <b>ServerOptions</b>. See the <a href="ServerOptions.html"><span class="s2">ServerOptions</span></a> helpfile for more detail.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Paths</b></p>
-<p class="p2"><br></p>
-<p class="p1">Server apps running on the local machine have two unix environment variables: SC_SYNTHDEF_PATH and SC_PLUGIN_PATH. These indicate directories of synthdefs and ugen plugins that will be loaded at startup. These are in addition to the default synthdef/ and plugin/ directories which are hard-coded. These can be set within SC using the getenv and setenv methods of class <a href="../Collections/String.html"><span class="s2">String</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4">// all defs in this directory will be loaded when a local server boots</p>
-<p class="p5">"SC_SYNTHDEF_PATH"<span class="s3">.setenv(</span>"~/scwork/"<span class="s3">.standardizePath);<span class="Apple-converted-space"> </span></span></p>
-<p class="p5">"echo $SC_SYNTHDEF_PATH"<span class="s3">.unixCmd;</span></p>
-<p class="p2"><br></p>
-<p class="p6"><b>The default group</b></p>
-<p class="p2"><br></p>
-<p class="p1">When a Server is booted there is a top level group with an ID of 0 that defines the root of the node tree. (This is represented by a subclass of Group: <b>RootNode</b>.) If the server app was booted from within SCLang (as opposed to from the command line) the method initTree will be called automatically after booting. This will also create a <b>default_group</b> with an ID of 1, which is the default group for all Nodes when using object style. This provides a predictable basic node tree so that methods such as Server-scope, Server-record, etc. can function without running into order of execution problems. The default group is persistent, i.e. it is recreated after a reboot, pressing cmd-., etc. See <a href="RootNode.html"><span class="s2">RootNode</span></a> and <a href="default_group.html"><span class="s2">default_group</span></a> for more information. Note that if a Server has been booted from the command line you must call initTree manually in order to initialize the default group, if you want it. See <b>initTree</b> below.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Local vs. Internal</b></p>
-<p class="p2"><br></p>
-<p class="p1">In general, when working with a single machine one will probably be using one of two Server objects which are created at startup and stored in the class variables <b>local</b> and <b>internal</b>. By default two GUI windows are created to control these. The difference between the two is that the local server runs as a separate application with its own address space, and the internal server runs within the same space as the language/client app. The internal server has the advantage of being able to access shared memory, thus allowing for things like scope windows (see below) and <a href="../UGens/InOut/SharedIn.html"><span class="s2">SharedIn</span></a>/<a href="../UGens/InOut/SharedOut.html"><span class="s2">SharedOut</span></a>. It also minimizes messaging latency. The local server, and any other server apps running on your local machine, have the advantage that if the language app crashes, it (and thus possibly your piece) will continue to run. It is thus an inherently more robust arrangement.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>The default Server</b></p>
-<p class="p7"><br></p>
-<p class="p1">There is always a default Server, which is stored in the class variable <b>default</b>. Any Synths or Groups created without a target will be created on the default server. At startup this is set to be the <b>local</b> server (see above), but can be set to be any Server.</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(name, addr, options, clientID)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>name</b> <b>- </b>a symbol;<span class="Apple-converted-space">  </span>each Server object is stored in one global classvariable under its name.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>addr - </b>an optional instance of <a href="../Control/NetAddr.html"><span class="s2">NetAddr</span></a>, providing host and port. The default is the localhost address <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>using port 57110; the same as the local server.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>options</b> <b>- </b>an optional instance of <b>ServerOptions</b>. If nil, an instance of ServerOptions will be created, using <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the default values.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>clientID - </b>an integer. In multi client situations, every client can be given a separate nodeID range.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The default is 0.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*local - </b>returns the local server, stored in classvar local (created already on initClass)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*internal - </b>returns the internal server, stored in classvar local (created already on initClass)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*default - </b>returns the default server. By default this is the local server (see above)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*default_(aServer) - </b>sets the default Server to be aServer. This will also assign <b>aServer</b> to the interpreter variable 's'.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">Server</span><span class="s3">.default = </span><span class="s4">Server</span><span class="s3">.internal; </span>// set the internal Server to be the default Server</p>
-<p class="p9"><span class="Apple-tab-span">	</span>s.postln; <span class="s5">// internal</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*all</b> - the set of all servers.<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*allRunningServers</b> - the set of all running servers.<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*quitAll - </b>quit all registered servers</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>*killAll - </b>query the system for any sc-server apps and hard quit them</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>*freeAll - </b>free all nodes in all registered servers<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Instance Methods</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>sendMsg(arg1, arg2, arg3, ... argN) - </b>send an osc message to the server.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span></span>s.sendMsg(<span class="s7">"/s_new"</span>, <span class="s7">"default"</span>, s.nextNodeID, 0, 1);</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sendBundle(time, array1, array1, array1, ... arrayN) - </b>send an osc bundle to the server. Since the network may have irregular performance, <b>time</b> allows for the bundle to be evaluated at a specified point in the future. Thus all messages are synchronous relative to each other, but delayed by a constant offset. If such a bundle arrives late, the server replies with a late message but still evaluates it.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span></span>s.sendBundle(0.2, [<span class="s7">"/s_new"</span>, <span class="s7">"default"</span>, x = s.nextNodeID, 0, 1], [<span class="s7">"/n_set"</span>, x, <span class="s7">"freq"</span>, 500]);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>sendRaw(aRawArray)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>listSendMsg([arg1, arg2, arg3, ... argN]) - </b>as sendMsg, but takes an array as argument.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>listSendBundle(time, [array1, array1, array1, ... arrayN]) - </b>as sendBundle, but takes an array as argument. This allows you to collect messages in an array and then send them.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span></span>s.listSendBundle(0.2, [[<span class="s8">"/s_new"</span>, <span class="s8">"default"</span>, x = s.nextNodeID, 0, 1],<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s8">"/n_set"</span>, x, <span class="s8">"freq"</span>, 600]]);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>sendSynthDef(name, dir) - </b>send a synthDef to the server that was written in a local directory</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>loadSynthDef(name, completionMsg, dir) - </b>load a synthDef that resides in the remote directory</p>
-<p class="p2"><br></p>
-<p class="p1"><b>loadDirectory(dir, completionMsg) - </b>load all the SynthDefs in the directory <b>dir</b>. <b>dir</b> is a String which is a valid path.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>nextNodeID - </b>get a unique nodeID.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>nextPermNodeID</b> - get a permanent node ID. This node ID is in a reserved range and will be held until you explicitly free it.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>freePermNodeID</b> - free a permanent node ID for later reuse.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>wait(responseName) - </b>this can be used within a Routine to wait for a server reply</p>
-<p class="p2"><br></p>
-<p class="p1"><b>waitForBoot(func, limit) - </b>evaluate the function <b>func </b>as soon as the server has booted. If it is running, it is evaluated immediately. If it is not running, boot the server and evaluate the function. <b>limit</b> indicates the maximum times to try. (5 times/sec)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>doWhenBooted(func, limit) - </b>evaluate the function as soon as the server has booted. If it is running, it is evaluated immediately. <b>limit </b>is the maximum number of times to try. (5 times/sec)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>boot(startAliveThread) -</b> boot the remote server, create new allocators. <b>startAliveThread</b>: if set to false, the server is not queried to give information for the window. <b>N.B. </b>You cannot locally boot a server app on a remote machine.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>quit - </b>quit the server application</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>reboot - </b>quit and restart the server application</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>freeAll - </b>free all nodes in this server<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>status - </b>query the server status</p>
-<p class="p2"><br></p>
-<p class="p1"><b>notify(flag) - </b>server sends notifications, for example if a node was created, a 'tr' message from a SendTrig, or a /done action. if flag is set to false, these messages are not sent. The default is true.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>dumpOSC(code)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>code</b>:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - turn dumping OFF.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 - print the parsed contents of the message.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 - print the contents in hexadecimal.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3 - print both the parsed and hexadecimal representations of the contents.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>queryAllNodes - </b>Post a representation of this Server's current node tree to the post window. Very helpful for debugging. For local servers this uses g_dumpTree and for remote g_queryTree. See <a href="Group.html"><span class="s2">Group</span></a> and <a href="Server-Command-Reference.html"><span class="s2">Server-Command-Reference</span></a> for more info.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>s.queryAllNodes; </span>// note the root node (ID 0) and the default group (ID 1)</p>
-<p class="p9"><span class="Apple-tab-span">	</span>s.quit;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>ping(numberOfTimes, waitBewteen, completionFunction)</b></p>
-<p class="p1"><span class="s9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>measure the time between server and client, which may vary. the completionFunction is</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>evaluated after numberOfTimes and is passed the resulting maximum.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p1"><b>options - </b>returns this Server's <a href="ServerOptions.html"><span class="s2">ServerOptions</span></a> object. Changes take effect when the server is rebooted.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>options_(aServerOptions) - </b>sets this Server's <a href="ServerOptions.html"><span class="s2">ServerOptions</span></a> object. Changes take effect when the server is rebooted.</p>
-<p class="p11"><br></p>
-<p class="p1"><b>defaultGroup - </b>returns this Server's default group.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>volume -</b> an instance of Volume that runs after the defualt group.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>volume_(level) -</b> sets the Volume of the Server's output to level. Level is in db.</p>
-<p class="p11"><br></p>
-<p class="p1"><b>mute - </b>mute the server's output. This can also be toggled from the Server window with the 'm' key.</p>
-<p class="p11"><br></p>
-<p class="p1"><b>unmute - </b>unmute the server. This can also be toggled from the Server window with the 'm' key.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>reorder(nodeList, target, addAction)</b> - Move the nodes in <b>nodeList</b> to the location specified by <b>target</b> and <b>addAction</b>, placing them there in the order indicated by <b>nodeList</b>. Any nodes which have already been freed will be skipped. Passing nil for target and addAction will result in the location being the head of the default group.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span></span>g = <span class="s4">Group</span>.new;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>x = <span class="s4">Array</span>.fill(5, {<span class="s4">Synth</span>(<span class="s10">\default</span>)});</p>
-<p class="p9"><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>s.reorder(x, g, <span class="s10">\addToTail</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p11"><br></p>
-<p class="p8"><b>Automatic Message Bundling</b></p>
-<p class="p7"><br></p>
-<p class="p1">Server provides support for automatically bundling messages. This is quite convenient in object style, and ensures synchronous execution. See also <b>bundledCommands</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>makeBundle(time, func, bundle) </b>- The Function <b>func </b>is evaluated, and all OSC messages generated by it are deferred and added to a bundle. This method returns the bundle so that it can be further used if needed. If <b>time</b> is set to nil or a number the bundle will be automatically sent and executed after the corresponding delay in seconds<i>. </i>If <b>time </b>is set to false the bundle will not be sent.<span class="Apple-converted-space"> </span><i> </i><b>bundle </b>allows you to pass in a preexisting bundle and continue adding to it. If an error is encountered while evaluating <b>func</b> this method will throw an <b>Error</b> and stop message deferral. Calling <b>sync</b> inside <b>func</b> will split the bundle and wait for asynchronous actions to complete before continuing.</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// send a synth def to server</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s11">SynthDef</span>(<span class="s7">"tpulse"</span>, { <span class="s11">arg</span> out=0,freq=700,sawFreq=440.0;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Out</span>.ar(out, <span class="s11">SyncSaw</span>.ar(freq,<span class="Apple-converted-space">  </span>sawFreq,0.1) )</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// all OSC commands generated in the function contained below will be added to a bundle</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// and executed simultaneously after 2 seconds.</p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.makeBundle(2.0, {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s11">Synth</span>.new(<span class="s7">"tpulse"</span>);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s11">Bus</span>.control.set(440);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.map(<span class="s12">\freq</span>, a);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// don't send</p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = s.makeBundle(<span class="s11">false</span>, {<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s11">PinkNoise</span>.ar(0.1) * <span class="s11">In</span>.kr(0, 1); }.play;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// now pass b as a pre-existing bundle, and start both synths synchronously</p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>s.makeBundle(</span><span class="s11">nil</span><span class="s3">, { </span>// nil executes ASAP</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = { <span class="s11">SinOsc</span>.kr(0.2).abs }.play(x, 0, 0, <span class="s12">\addBefore</span>); <span class="s13">// sine envelope</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>}, b);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>x.free; y.free;</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// Throw an Error</p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>try {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.makeBundle(<span class="s11">nil</span>, {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.farkermartin;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span>} { </span>|error|</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</span>"Look Ma, normal operations resume even though:\n"<span class="s3"> + error.errorString).postln;<span class="Apple-converted-space"> </span></span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s11">FSinOsc</span>.ar(440, 0, 0.2) }.play; <span class="s13">// This works fine</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// use sync</p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.makeBundle(<span class="s11">nil</span>, {</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s11">Buffer</span><span class="s3">.read(s, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sync; </span>// wait until load is done and then send the rest of the bundle</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s11">PlayBuf</span>.ar(1, b) * 0.5 }.play;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>});</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>bind(func) </b>- Just as in <b>makeBundle</b>, the Function <b>func </b>is evaluated, and all OSC messages generated by it are deferred and added to a bundle, which is sent to the server, using the server default latency.</p>
-<p class="p11"><br></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.bind {</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = { <span class="s11">|freq=100|</span> <span class="s11">SinOsc</span>.ar(freq, <span class="s11">LFTri</span>.ar(freq)) * 0.2 }.play;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.set(<span class="s12">\freq</span>, 400);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><br></p>
-<p class="p8"><b>Shared Controls</b></p>
-<p class="p2"><br></p>
-<p class="p1">The internal server has a number of shared control buses. Their values can be set or polled using the methods below.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>getSharedControl(num)</b> - get the current value of a shared control bus. <b>num</b> is the index of the bus to poll. This command is synchronous and only works with the internal server.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>setSharedControl(num, value)</b> - set the current value of a shared control bus to <b>value</b>. <b>num</b> is the index of the bus to set. This command is synchronous and only works with the internal server.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>allocSharedControls(numControls)</b> - set the number of shared control buses. Must be done before the internal server is booted. The default is 1024.</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Persistent Node Trees</b></p>
-<p class="p2"><br></p>
-<p class="p1">The class <a href="../Control/ServerTree.html"><span class="s14">ServerTree</span></a> can be used to store functions which will be evaluated after the server is booted, after all nodes are freed, and after cmd-. is pressed. This allows, for example, for one to create a persistent basic node structure. ServerTree is evaluated in the method <b>initTree</b> after the default group is created, so its existence can be relied upon.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>initTree</b> - This method initializes the <a href="default_group.html"><span class="s2">default_group</span></a> and runs ServerTree. This method is called automatically when you boot a Server from the language. <b>N.B.</b> If you started a server app from the command line you will have to call initTree manually if you need this functionality.</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s6"><span class="Apple-tab-span">	</span></span>s.quit;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>f = {<span class="s11">Group</span>.new(s.defaultGroup); <span class="s7">"Other code can be evaluated too"</span>.postln;};</p>
-<p class="p15"><span class="s3"><span class="Apple-tab-span">	</span></span>ServerTree<span class="s3">.add(f);</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span>s.queryAllNodes; </span>// note the group within the default group</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s11">ServerTree</span>.remove(f);</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s15"><a href="../Control/ServerBoot.html">ServerBoot</a></span> and <a href="../Control/ServerQuit.html"><span class="s14">ServerQuit</span></a> provide similar functionality at boot and quit times.</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Keyboard Shortcuts</b></p>
-<p class="p2"><br></p>
-<p class="p1">when a server window is in focus, these shortcuts can be used:</p>
-<p class="p2"><br></p>
-<p class="p1"><b>space</b>:<span class="Apple-tab-span">	</span>start the server</p>
-<p class="p1"><b>d</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toggle dumpOSC</p>
-<p class="p1"><b>n</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>post a representation of the node tree</p>
-<p class="p1"><b>N<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>post a representation of the node tree and the current control values of any synths</p>
-<p class="p1"><b>s</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scope (internal server only)</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Scope Support</b></p>
-<p class="p2"><br></p>
-<p class="p1">This only works with the internal server, and currently only on OSX.</p>
-<p class="p1">see<b> </b><a href="../GUI/Main-GUI/Stethoscope.html"><span class="s2">Stethoscope</span></a><b> </b>for further details.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>scope(numChannels, index, bufsize, zoom, rate) - </b>Open a scope window showing the output of the Server.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>numChannels </b>- the number of channels to be scoped out. The default is this server's options' numOutputBusChannels.</p>
-<p class="p1"><b>index </b>- the first channel to be output. The default is 0.</p>
-<p class="p1"><b>bufsize </b>- the size of the buffer for the ScopeView. The default is 4096.</p>
-<p class="p1"><b>zoom</b> - a zoom value for the scope's X axis. Larger values show more. The default is 1.</p>
-<p class="p1"><b>rate</b> - whether to display audio or control rate buses (either \audio or \control)</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Recording Support</b></p>
-<p class="p2"><br></p>
-<p class="p1">The following methods are for convenience use. For recording with sample accurate start and stop times you should make your own nodes. See the <a href="../UGens/Playback and Recording/DiskOut.html"><span class="s16">DiskOut</span></a> helpfile for more info. For non-realtime recording, see the <a href="../Other Topics/Non-Realtime-Synthesis.html"><span class="s16">Non-Realtime-Synthesis</span></a> helpfile.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">This functionality is also available through the recording button on the server windows. Pressing it once calls <b>record</b>, and pressing it again calls <b>stopRecording</b> (see below). When doing so the file created will be in your recordings folder and be named for the current date and time. The default location of the recordings folder varies from platform to platform but is always stored in <b>thisProcess.platform.recordingsDir</b>. Setting this variable allows you to change the default.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>NOTE:</b> <b>record</b> creates the recording synth after the Server's default group and uses <b>In.ar</b>. Thus if you add nodes after the recording synth their output will not be captured. To avoid this, either use <b>Node</b> objects (which use the default node as their target) or (when using messaging style) use a target nodeID of 1 .</p>
-<p class="p16"><br></p>
-<p class="p9">s.sendMsg(<span class="s8">"/s_new"</span>, <span class="s8">"default"</span>, s.nextNodeID, 1,1);</p>
-<p class="p2"><br></p>
-<p class="p1">For more detail on this subject see <a href="Order-of-execution.html"><span class="s16">Order-of-execution</span></a><b>,</b> <a href="default_group.html"><span class="s16">default_group</span></a>, and <a href="NodeMessaging.html"><span class="s16">NodeMessaging</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>prepareForRecord(path) - </b>Allocates the necessary buffer, etc. for recording the server's output. (See <b>record</b> below.) <b>path </b>is a String representing the path and name of the output file. If you do not specify a path than a file will be created in your recordings folder (see the note above on this) called SC_thisDateAndTime. Changes to the header or sample format, or to the number of channels must be made BEFORE calling this.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>record(path) - </b>Starts or resumes recording the output. If you have not called prepareForRecord first (see above) then it will be invoked for you (but that adds a slight delay before recording starts for real). The <b>path</b> argument is optional and is passed to <b>prepareForRecord</b> (above).</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>pauseRecording - </b>Pauses recording. Can be resumed by executing record again.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>stopRecording - </b>Stops recording, closes the file, and frees the associated resources. You must call this when finished recording or the output file will be unusable. Cmd-. while recording has the same effect.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>recordNode - </b>Returns the current recording synth so that it can be used as a target. This should only be necessary for nodes which are not created in the default group.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">The following setter methods have corresponding getters. See <a href="../Files/SoundFile.html"><span class="s2">SoundFile</span></a> for information on the various sample and header formats.<span class="Apple-tab-span">	</span>Not all sample and header formats are compatible.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>recChannels_(anInteger) - </b>Sets the number of channels to record. The default is two. Must be called BEFORE prepareForRecord.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>recHeaderFormat_(aString) - </b>Sets the header format of the output file. The default is "aiff". Must be called BEFORE prepareForRecord.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>recSampleFormat_(aString) - </b>Sets the sample format of the output file. The default is "float". Must be called BEFORE prepareForRecord.</p>
-<p class="p2"><br></p>
-<p class="p1">Note that the sampling rate of the ouput file will be the same as that of the server app. This can be set using the Server's <a href="ServerOptions.html"><span class="s2">ServerOptions</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p17"><br></p>
-<p class="p13"><span class="s3">s.boot; </span>// start the server</p>
-<p class="p14"><br></p>
-<p class="p13">// something to record</p>
-<p class="p12">(</p>
-<p class="p5"><span class="s11">SynthDef</span><span class="s3">(</span>"bubbles"<span class="s3">, {</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s11">var</span> f, zout;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>f = <span class="s11">LFSaw</span>.kr(0.4, 0, 24, <span class="s11">LFSaw</span>.kr([8,7.23], 0, 3, 80)).midicps; <span class="s13">// glissando function</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>zout = <span class="s11">CombN</span>.ar(<span class="s11">SinOsc</span>.ar(f, 0, 0.04), 0.2, 0.2, 4); <span class="s13">// echoing sine wave</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s11">Out</span>.ar(0, zout);</p>
-<p class="p12">}).add;</p>
-<p class="p12"><span class="s11">SynthDef</span>(<span class="s7">"tpulse"</span>, { <span class="s11">arg</span> out=0,freq=700,sawFreq=440.0;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s11">Out</span>.ar(out, <span class="s11">SyncSaw</span>.ar(freq,<span class="Apple-converted-space">  </span>sawFreq,0.1) )<span class="Apple-converted-space"> </span></p>
-<p class="p12">}).add;</p>
-<p class="p14"><br></p>
-<p class="p12">)</p>
-<p class="p14"><br></p>
-<p class="p12">x = <span class="s11">Synth</span>.new(<span class="s7">"bubbles"</span>);</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s3">s.prepareForRecord; </span>// you have to call this first</p>
-<p class="p14"><br></p>
-<p class="p12">s.record;</p>
-<p class="p14"><br></p>
-<p class="p12">s.pauseRecording; <span class="s13">// pausable</span></p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s3">s.record </span>// start again</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s3">s.stopRecording; </span>// this closes the file and deallocates the buffer recording node, etc.</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s3">x.free; </span>// stop the synths</p>
-<p class="p14"><br></p>
-<p class="p13">// look in your recordings folder and you'll find a file named for this date and time</p>
-<p class="p10"><br></p>
-<p class="p8"><b>Asynchronous Commands</b></p>
-<p class="p7"><br></p>
-<p class="p1">Server provides support for waiting on the completion of asynchronous OSC commands such as reading or writing soundfiles. <b>N.B. </b>The following methods must be called from within a running <a href="../Core/Kernel/Routine.html"><span class="s2">Routine</span></a>. Explicitly passing in a <a href="../Scheduling/Condition.html"><span class="s2">Condition</span></a> allows multiple elements to depend on different conditions. The examples below should make clear how all this works.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>bootSync(condition) - </b>Boot the Server and wait until it has completed before resuming the thread. <b>condition</b> is an optional instance of <b>Condition</b> used for evaluating this.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sendMsgSync(condition, args) - </b>Send the following message to the<span class="Apple-converted-space">  </span>wait until it has completed before resuming the thread. <b>condition</b> is an optional instance of <a href="../Scheduling/Condition.html"><span class="s2">Condition</span></a> used for evaluating this. <b>args </b>should be one or more valid OSC messages.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>sync(condition, bundles, latency)</b> - Send a /sync message to the server, which will replie with the message /synced when all pending asynchronous commands have been completed. <b>condition</b> is an optional instance of <a href="../Scheduling/Condition.html"><span class="s2">Condition</span></a> used for evaluating this. This may be slightly less safe then <b>sendMsgSync</b> under UDP on a wide area network, as packets may arrive out of order, but on a local network should be okay. Under TCP this should always be safe. <b>bundles</b> is one or more OSC messages which will be bundled before the sync message (thus ensuring that they will arrive before the /sync message). <b>latency </b>allows for the message to be evaluated at a specific point in the future.</p>
-<p class="p17"><br></p>
-<p class="p12">(</p>
-<p class="p15">Routine<span class="s3">.run {</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s11">var</span> c;</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// create a condition variable to control execution of the Routine</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c = <span class="s11">Condition</span>.new;</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.bootSync(c);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s12">\BOOTED</span>.postln;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.sendMsgSync(c, <span class="s7">"/b_alloc"</span>, 0, 44100, 2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.sendMsgSync(c, <span class="s7">"/b_alloc"</span>, 1, 44100, 2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.sendMsgSync(c, <span class="s7">"/b_alloc"</span>, 2, 44100, 2);</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>\b_alloc_DONE<span class="s3">.postln;</span></p>
-<p class="p12">};</p>
-<p class="p12">)</p>
-<p class="p14"><br></p>
-<p class="p12">(</p>
-<p class="p15">Routine<span class="s3">.run {</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s11">var</span> c;</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span></span>// create a condition variable to control execution of the Routine</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c = <span class="s11">Condition</span>.new;</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.bootSync(c);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s12">\BOOTED</span>.postln;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s7">"/b_alloc"</span>, 0, 44100, 2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s7">"/b_alloc"</span>, 1, 44100, 2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s7">"/b_alloc"</span>, 2, 44100, 2);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>s.sync(c);</p>
-<p class="p18"><span class="s3"><span class="Apple-tab-span">	</span></span>\b_alloc_DONE<span class="s3">.postln;</span></p>
-<p class="p12">};</p>
-<p class="p12">)</p>
-<p class="p17"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/ServerOptions.html b/Help/ServerArchitecture/ServerOptions.html
deleted file mode 100644
index d83dce3..0000000
--- a/Help/ServerArchitecture/ServerOptions.html
+++ /dev/null
@@ -1,246 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8b3221}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0036b2}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0049ef}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0024fc}
-span.s6 {font: 9.0px Monaco}
-span.s7 {color: #0036b2}
-span.s8 {color: #606060}
-span.s9 {color: #4c661c}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ServerOptions<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>encapsulates commandline and other options for a Server</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../Core/Object.html"><span class="s2"><b>Object</b></span></a></p>
-<p class="p3"><br></p>
-<p class="p1">ServerOptions encapsulates various options for a server app within an object. This makes it convenient to launch multiple servers with the same options, or to archive different sets of options, etc. Every <a href="Server.html"><span class="s2">Server</span></a> has an instance of ServerOptions created for it if one is not passed as the options argument when the Server object is created. (This is the case for example with the local and internal Servers which are created at startup.)</p>
-<p class="p2"><br></p>
-<p class="p1">A Server's instance of ServerOptions is stored in its <b>options</b> instance variable, which can be accessed through corresponding getter and setter methods.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>N.B.</b> A ServerOptions' instance variables are translated into commandline arguments when a server app is booted. Thus a running Server must be rebooted before changes will take effect. There are also a few commandline options which are not currently encapsulated in ServerOptions. See <a href="Server-Architecture.html"><span class="s2">Server-Architecture</span></a> for more details.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>See also:</b> <a href="Server.html"><span class="s4">Server</span></a>, <a href="Server-Architecture.html"><span class="s4">Server-Architecture</span></a>, and <a href="Server-Command-Reference.html"><span class="s4">Server-Command-Reference</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a new instance of ServerOptions.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*devices</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return an <a href="../Collections/Array.html"><span class="s5">Array</span></a> of <a href="../Collections/String.html"><span class="s5">Strings</span></a> listing the audio devices currently available on the system.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*inDevices</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return an <a href="../Collections/Array.html"><span class="s5">Array</span></a> of <a href="../Collections/String.html"><span class="s5">Strings</span></a> listing the audio devices currently available on the system which have input channels.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*outDevices</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Return an <a href="../Collections/Array.html"><span class="s5">Array</span></a> of <a href="../Collections/String.html"><span class="s5">Strings</span></a> listing the audio devices currently available on the system which have output channels.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-<p class="p9"><b>Accessing Instance and Class Variables (The Options)</b></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>blockSize_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>blockSize</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The number of samples in one control period. The default is 64.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>device_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>device</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A String that allows you to choose a sound device to use as input and output. The default, nil will use the system's default input and output device(s) (more below in the examples).<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>inDevice_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>inDevice</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A String that allows you to choose an input sound device. The default, nil will use the system's default input device (more below in the examples).</p>
-<p class="p8"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>outDevice_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>outDevice</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A String that allows you to choose an output sound device. The default, nil will use the system's default output device (more below in the examples).</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>hardwareBufferSize_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>hardwareBufferSize</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The preferred hardware buffer size. If non-nil the server app will attempt to set the hardware buffer frame size. Not all sizes are valid. See the documentation of your audio hardware for details.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Default value is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>initialNodeID_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>initialNodeID</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>By default, the Server object in the client begins allocating node IDs at 1000, reserving 0-999 for "permanent" nodes. You may change this default here.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>inputStreamsEnabled_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>inputStreamsEnabled</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A <a href="../Collections/String.html"><span class="s2">String</span></a> which allows turning off input streams that you are not interested in on the audio device. If the string is "01100", for example, then only the second and third input streams on the device will be enabled. Turning off streams can reduce CPU load. The default value is nil.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>loadDefs_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>loadDefs</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether or not to load the synth definitions in synthdefs/ (or anywhere set in the environment variable SC_SYNTHDEF_PATH) at startup. The default is true.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxNodes_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxNodes</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The maximum number of nodes. The default is 1024.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>maxSynthDefs_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>maxSynthDefs</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The maximum number of synthdefs. The default is 1024.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>memSize_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>memSize</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The number of kilobytes of real time memory allocated to the server. This memory is used to allocate synths and any memory that unit generators themselves allocate (for instance in the case of delay ugens which do not use buffers, such as <a href="../UGens/Delays/CombN.html"><span class="s2">CombN</span></a>), and is separate from the memory used for buffers. Setting this too low is a common cause of 'exception in real time: alloc failed' errors. The default is 8192.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numAudioBusChannels_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numAudioBusChannels</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The number of audio rate busses, which includes input and output busses. The default is 128.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>numBuffers_ (argNumBuffers)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numBuffers</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The number of global sample buffers available. (See <a href="Buffer.html"><span class="s2">Buffer</span></a>.) The default is 1024.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numControlBusChannels_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numControlBusChannels</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The number of internal control rate busses. The default is 4096.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numInputBusChannels_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numInputBusChannels</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The number of audio input bus channels. This need not correspond to the number of hardware inputs. The default is 8.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>numOutputBusChannels_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numOutputBusChannels</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The number of audio output bus channels. This need not correspond to the number of hardware outputs (this can be useful for instance in the case of recording). The default is 8.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numRGens_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numRGens</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The number of seedable random number generators. The default is 64.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numWireBufs_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>numWireBufs</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The maximum number of buffers that are allocated to interconnect unit generators. (Not to be confused with the global sample buffers represented by Buffer.) This sets the limit of complexity of SynthDefs that can be loaded at runtime. This value will be automatically increased if a more complex def is loaded at startup, but it cannot be increased thereafter without rebooting. The default is 64.</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>outputStreamsEnabled_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>outputStreamsEnabled</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A <a href="../Collections/String.html"><span class="s2">String</span></a> which allows turning off output streams that you are not interested in on the<span class="Apple-converted-space">  </span>audio device. If the string is "11000", for example, then only the first two output streams on the device will be enabled. Turning off streams can reduce CPU load.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>protocol_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>protocol</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A <a href="../Core/Symbol.html"><span class="s2">Symbol</span></a> representing the communications protocol. Either<span class="Apple-converted-space">  </span>\udp or \tcp. The default is udp.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>remoteControlVolume_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>remoteControlVolume</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indicating whether this server should allow its volume to be set remotely. The default value is false.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>sampleRate_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>sampleRate</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The preferred sample rate. If non-nil the server app will attempt to set the sample rate of the hardware. The hardware has to support the sample rate that you choose.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>verbosity_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>verbosity</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Controls the verbosity of server messages. A value of 0 is normal behaviour, -1 suppresses informational messages, and -2 suppresses informational and many error messages. The default is 0.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>zeroConf_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>zeroConf</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A <a href="../Core/Boolean.html"><span class="s2">Boolean</span></a> indication whether or not the server should publish its port using zero configuration networking, to facilitate network interaction. This is true by default; if you find unacceptable delays (beachballing) upon server boot, you can try setting this to false.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>restrictedPaths_(arg1)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>restrictedPaths</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Allows you to restrict the system paths in which scsynth is allowed to read/write files during running. A nil value (the default) means no restriction. Otherwise, set it as a string representing a single path.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><b>Instance Methods</b></p>
-<p class="p8"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>asOptionsString (port)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a <a href="../Collections/String.html"><span class="s2">String</span></a> specifying the options in the format required by the command-line scsynth app.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>port </b>- The port number for the resulting server app. Default value is 57110.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span><b>firstPrivateBus</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns the index of the first audio bus on this server which is not used by the input and output hardware.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p9"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p11">// Get the local server's options</p>
-<p class="p3"><br></p>
-<p class="p12">o = <span class="s7">Server</span>.local.options;</p>
-<p class="p3"><br></p>
-<p class="p11">// Post the number of output channels</p>
-<p class="p3"><br></p>
-<p class="p12">o.numOutputBusChannels.postln;</p>
-<p class="p3"><br></p>
-<p class="p11">// Set them to a new number</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s3">o.numOutputBusChannels = 6; </span>// The next time it boots, this will take effect</p>
-<p class="p3"><br></p>
-<p class="p11">// specify a device</p>
-<p class="p3"><br></p>
-<p class="p11"><span class="s3">o.device =</span><span class="s8">"MOTU Traveler"</span><span class="s3">; <span class="Apple-tab-span">	</span></span>// use a specific soundcard</p>
-<p class="p11"><span class="s3">o.device = </span><span class="s7">nil</span><span class="s3">;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// use the system default soundcard</p>
-<p class="p3"><br></p>
-<p class="p11">// Create a new instance of ServerOptions</p>
-<p class="p3"><br></p>
-<p class="p13"><span class="s3">o = </span>ServerOptions<span class="s3">.new;</span></p>
-<p class="p3"><br></p>
-<p class="p11">// Set the memory size to twice the default</p>
-<p class="p3"><br></p>
-<p class="p12">o.memSize = 4096;</p>
-<p class="p3"><br></p>
-<p class="p11">// Create a new Server on the local machine using o for its options</p>
-<p class="p3"><br></p>
-<p class="p12">t = <span class="s7">Server</span>(<span class="s9">\Local2</span>, <span class="s7">NetAddr</span>(<span class="s8">"127.0.0.1"</span>, 57111), o);</p>
-<p class="p12">t.makeWindow;</p>
-<p class="p12">t.boot;</p>
-<p class="p12">t.quit;</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/ServerTiming.html b/Help/ServerArchitecture/ServerTiming.html
deleted file mode 100644
index dd60788..0000000
--- a/Help/ServerArchitecture/ServerTiming.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0a22ac}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #90261d}
-span.s1 {color: #000000}
-span.s2 {color: #456c26}
-span.s3 {color: #0a22ac}
-span.s4 {color: #90261d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Bundling latency<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">To ensure correct timing of events on the server, OSC messages may be sent with a time stamp, indicating the precise time the sound is expected to hit the hardware output.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">In the SuperCollider language, the time stamp is generated behind the scenes based on a parameter called "<b>latency</b>."<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">To understand how latency works, we need to understand the concepts of <b>logical time</b> and <b>physical time</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Every clock in SuperCollider has both a logical time and physical time.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Physical time:</b> always advances, represents real time.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>Logical time:</b> advances only when a scheduling thread wakes up.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">While a scheduled function or event is executing, logical time holds steady at the "expected" value. That is, if the event is scheduled for 60 seconds exactly, throughout the event's execution, the logical time will be 60 seconds. If the event takes 2 seconds to execute (very rare), at the end of the event, the logical time will still be 60 seconds but the physical time will be 62 seconds. If the next event is to happen 3 seconds after the first began, its logical time will be 63 seconds. Logical time is not affected by fluctuations in system performance.</p>
-<p class="p2"><br></p>
-<p class="p3">This sequencing example illustrates the difference. It's written deliberately inefficiently to expose the problem more clearly. Two copies of the same routine get started at the same time. On a theoretically perfect machine, in which operations take no time, we would hear both channels in perfect sync. No such machine exists, and this is obviously not the case when you listen. The routines also print out the logical time (clock.beats) and physical time (clock.elapsedBeats) just before playing a grain.</p>
-<p class="p2"><br></p>
-<p class="p4">s.boot;</p>
-<p class="p5"><br></p>
-<p class="p6">SynthDef<span class="s1">(</span><span class="s2">\sinGrain</span><span class="s1">, { </span>|out = 0, freq = 440, amp = 0.5, dur = 1|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar(freq, 0, amp) * <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.sine(1), timeScale:dur, doneAction:2));</p>
-<p class="p4">}).add;</p>
-<p class="p5"><br></p>
-<p class="p4">2.do({ <span class="s3">|chan|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> rout;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>rout = <span class="s3">Routine</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> freq;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-tab-span">	</span>freq = 0;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(400, 1000).do({ freq = freq + 1 });</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s3">thisThread</span>.clock.beats, <span class="s3">thisThread</span>.clock.elapsedBeats].postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s2">\sinGrain</span>, [<span class="s2">\out</span>, chan, <span class="s2">\freq</span>, freq, <span class="s2">\dur</span>, 0.005]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.loop;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TempoClock</span>.default.schedAbs(<span class="s3">TempoClock</span>.default.elapsedBeats.roundUp(1), rout);</p>
-<p class="p4">});</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-converted-space">    </span>Left channel <span class="Apple-converted-space">                    </span>Right channel</p>
-<p class="p4">Logical vs Physical time <span class="Apple-converted-space">        </span>Logical vs Physical time</p>
-<p class="p4">95 <span class="Apple-converted-space">        </span>95.001466112<span class="Apple-converted-space">          </span>95 <span class="Apple-converted-space">        </span>95.002988196</p>
-<p class="p4">95.1 <span class="Apple-converted-space">      </span>95.101427968<span class="Apple-converted-space">          </span>95.1 <span class="Apple-converted-space">      </span>95.103152311</p>
-<p class="p4">95.2 <span class="Apple-converted-space">      </span>95.201250057<span class="Apple-converted-space">          </span>95.2 <span class="Apple-converted-space">      </span>95.202905826</p>
-<p class="p4">95.3 <span class="Apple-converted-space">      </span>95.301592755<span class="Apple-converted-space">          </span>95.3 <span class="Apple-converted-space">      </span>95.303724638</p>
-<p class="p4">95.4 <span class="Apple-converted-space">      </span>95.401475486<span class="Apple-converted-space">          </span>95.4 <span class="Apple-converted-space">      </span>95.403289141</p>
-<p class="p5"><br></p>
-<p class="p4">Average physical latency:</p>
-<p class="p4">0.00144247559999830<span class="Apple-converted-space">              </span>.0032120224000039</p>
-<p class="p2"><br></p>
-<p class="p3">Notice that even though the left and right channel patterns were scheduled for exactly the same time, the events don't complete executing at the same time. Further, the Synth(...) call instructs the server to play the synth immediately on receipt, so the right channel will be lagging behind the left by about 2 ms each event--and not by the same amount each time. Timing, then, is always slightly imprecise.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">This version is the same, but it generates each synth with a 1/4 second latency parameter:</p>
-<p class="p2"><br></p>
-<p class="p4">2.do({ <span class="s3">|chan|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> rout;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>rout = <span class="s3">Routine</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> freq;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-tab-span">	</span>freq = 0;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(400, 1000).do({ freq = freq + 1 });</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s3">thisThread</span>.clock.beats, <span class="s3">thisThread</span>.clock.elapsedBeats].postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.makeBundle(0.25, { <span class="s3">Synth</span>(<span class="s2">\sinGrain</span>, [<span class="s2">\out</span>, chan, <span class="s2">\freq</span>, freq, <span class="s2">\dur</span>, 0.005]); });</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.loop;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TempoClock</span>.default.schedAbs(<span class="s3">TempoClock</span>.default.elapsedBeats.roundUp(1), rout);</p>
-<p class="p4">});</p>
-<p class="p2"><br></p>
-<p class="p3">By using makeBundle with a time argument of 0.25, the \s_new messages for the left and right channel are sent with the same timestamp: the clock's current logical time plus the time argument. Note in the table that both channels have the same logical time throughout, so the two channels are in perfect sync.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">These routines are written deliberately badly. If they're made maximally efficient, the synchronization will be tighter even without the latency factor, but it can never be perfect. You'll also see this issue, however, if you have several routines executing and several of them are supposed to execute at the same time. Some will execute sooner than others, but <i>their logical time will all be the same</i>. If they're all using the same amount of latency, you will still hear them at the same time.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">In general, all synths that are triggered by live input (MIDI, GUI, HID) should specify no latency so that they execute as soon as possible. All sequencing routines should use latency to ensure perfect timing.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The latency value should allow enough time for the event to execute and generate the OSC bundle, and for the server to interpret the message and render the audio in time to reach the hardware output on time. If the client and server are on the same machine, this value can be quite low. Running over a network, you must allow more time. (Latency compensates for network timing jitter also.)</p>
-<p class="p2"><br></p>
-<p class="p3">Pbind automatically imports a latency parameter from the server's latency variable. You can set the default latency for event patterns like this:</p>
-<p class="p2"><br></p>
-<p class="p4">myServer.latency = 0.2;<span class="Apple-converted-space">  </span><span class="s4">// 0.2 is the default</span></p>
-<p class="p2"><br></p>
-<p class="p3">Here are three ways to play a synth with the latency parameter:</p>
-<p class="p2"><br></p>
-<p class="p7">// messaging style</p>
-<p class="p7">// s.nextNodeID is how to get the next unused node ID from the server</p>
-<p class="p4">s.sendBundle(latency, [<span class="s2">\s_new</span>, defName, s.nextNodeID, targetID, addAction, arguments]);</p>
-<p class="p5"><br></p>
-<p class="p7">// object style, asking the object for the message</p>
-<p class="p4">synth = <span class="s3">Synth</span>.basicNew(defName, s);</p>
-<p class="p4">s.sendBundle(latency, synth.newMsg(target, arguments, addAction));</p>
-<p class="p5"><br></p>
-<p class="p7">// object style, using automatic bundling</p>
-<p class="p7">// like the previous example, when this finishes you'll have the Synth object in the synth variable</p>
-<p class="p4">s.makeBundle(latency, { synth = <span class="s3">Synth</span>(defName, arguments, target, addAction); });</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Synth-Definition-File-Format.html b/Help/ServerArchitecture/Synth-Definition-File-Format.html
deleted file mode 100644
index 68d90f7..0000000
--- a/Help/ServerArchitecture/Synth-Definition-File-Format.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2">SuperCollider 3 Synth Definition File Format</p>
-<p class="p1"><br></p>
-<p class="p3">copyright © 2002 James McCartney</p>
-<p class="p1"><br></p>
-<p class="p4">Synth definition files are read by the synth server and define collections of unit generators and their connections. These files are currently written by<span class="Apple-converted-space">  </span>the SuperCollider language application, but theoretically could be written by any program. Such a program would need knowledge of the SC unit generators and their characteristics, such as number of inputs and outputs and available calculation rates. The code to write these files is open and available in the SuperCollider language app.</p>
-<p class="p1"><br></p>
-<p class="p5"><b>Basic types<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>All data is stored big endian. All data is packed, not padded or aligned.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>an <b>int32</b> is a 32 bit integer.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>an <b>int16</b> is a 16 bit integer.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>an <b>int8</b> is an 8 bit integer.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a <b>float32</b> is a 32 bit IEEE floating point number.</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a <b>pstring</b> is a pascal format string: a byte giving the length followed by<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>that many bytes.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>File Format<span class="Apple-converted-space"> </span></b></p>
-<p class="p6"><br></p>
-<p class="p4">a <b>synth-definition-file</b> is :</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int32</b> - four byte file type id containing the ASCII characters: "SCgf"</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int32</b> - file version, currently 1.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - number of synth definitions in this file (D).</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<b>synth-definition</b>] * D</p>
-<p class="p4">end</p>
-<p class="p1"><br></p>
-<p class="p4">a <b>synth-definition</b> is :</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>pstring</b> - the name of the synth definition</p>
-<p class="p1"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - number of constants (K)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<b>float32</b>] * K - constant values</p>
-<p class="p1"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - number of parameters (P)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<b>float32</b>] * P - initial parameter values</p>
-<p class="p1"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - number of parameter names (N)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<b>param-name</b>] * N</p>
-<p class="p1"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - number of unit generators (U)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<b>ugen-spec</b>] * U</p>
-<p class="p4">end</p>
-<p class="p1"><span class="Apple-tab-span">	</span></p>
-<p class="p4">a <b>param-name</b> is :</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>pstring</b> - the name of the parameter</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - its index in the parameter array</p>
-<p class="p4">end</p>
-<p class="p1"><br></p>
-<p class="p4">a <b>ugen-spec</b> is :</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>pstring</b> - the name of the SC unit generator class</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int8</b> - calculation rate</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - number of inputs (I)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - number of outputs (O)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - special index</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<b>input-spec</b>] * I</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<b>output-spec</b>] * O</p>
-<p class="p4">end</p>
-<p class="p1"><br></p>
-<p class="p4">an <b>input-spec</b> is :</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int16</b> - index of unit generator or -1 for a constant</p>
-<p class="p4"><span class="Apple-tab-span">	</span>if (unit generator index == -1) {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>int16</b> - index of constant</p>
-<p class="p4"><span class="Apple-tab-span">	</span>} else {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>int16</b> - index of unit generator output</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">end</p>
-<p class="p1"><br></p>
-<p class="p4">an <b>output-spec</b> is :</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>int8</b> - calculation rate</p>
-<p class="p4">end</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p5"><b>Glossary</b></p>
-<p class="p1"><br></p>
-<p class="p4"><b>calculation rate</b> - the rate that a computation is done. There are three rates numbered 0, 1, 2 as follows:<span class="Apple-converted-space"> </span></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>0 = scalar rate</b> - one sample is computed at initialization time only.<span class="Apple-tab-span">	</span><b>1 = control rate</b> - one sample is computed each control period.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>2 = audio rate</b> - one sample is computed for each sample of audio output.</p>
-<p class="p4">Outputs have their own calculation rate. This allows MultiOutUGens to have outputs at different rates. A one output unit generator's calculation rate should match that of its output.</p>
-<p class="p1"><br></p>
-<p class="p4"><b>constant</b> -<span class="Apple-converted-space">  </span>a single floating point value that is used as a unit generator input.</p>
-<p class="p1"><br></p>
-<p class="p4"><b>parameter</b> - a value that can be externally controlled using server commands /s.new, /n.set, /n.setn, /n.fill, /n.map .</p>
-<p class="p1"><br></p>
-<p class="p4"><b>parameter name</b> - a string naming an index in the the parameter array. This allows one to refer to the same semantic value such as 'freq' or 'pan' in different synths<span class="Apple-converted-space">  </span>even though they exist at different offsets in their respective parameter arrays.</p>
-<p class="p1"><br></p>
-<p class="p4"><b>special index</b> - this value is used by some unit generators for a special purpose. For example, UnaryOpUGen and BinaryOpUGen use it to indicate which operator to perform. If not used it should be set to zero.</p>
-<p class="p1"><br></p>
-<p class="p4"><b>synth</b> - a collection of unit generators that execute together. A synth is a type of node.</p>
-<p class="p1"><br></p>
-<p class="p4"><b>synth definition</b> - a specification for creating synths.</p>
-<p class="p1"><br></p>
-<p class="p4"><b>unit generator</b> -<span class="Apple-converted-space">  </span>a basic signal processing module with inputs and outputs. unit generators are connected together to form synths.</p>
-<p class="p1"><br></p>
-<p class="p5"><b>Notes</b></p>
-<p class="p1"><br></p>
-<p class="p4">Unit generators are listed in the order they will be executed. Inputs must refer to constants or previous unit generators. No feedback loops are allowed. Feedback must be accomplished via delay lines or through buses.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><br></p>
-<p class="p4"><b>For greatest efficiency:</b></p>
-<p class="p1"><br></p>
-<p class="p4">Unit generators should be listed in an order that permits efficient reuse of connection buffers, which means that a depth first topological sort of the graph is preferable to breadth first.</p>
-<p class="p1"><br></p>
-<p class="p4">There should be no duplicate values in the constants table.</p>
-<p class="p1"><br></p>
-<p class="p3">copyright © 2002 James McCartney</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Synth.html b/Help/ServerArchitecture/Synth.html
deleted file mode 100644
index 15207fc..0000000
--- a/Help/ServerArchitecture/Synth.html
+++ /dev/null
@@ -1,382 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #a31917}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #0017b3}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a31917}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0017b3}
-span.s3 {font: 9.0px Monaco}
-span.s4 {font: 9.0px Monaco; color: #35701d}
-span.s5 {color: #35701d}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #000000}
-span.s8 {color: #606060}
-span.s9 {color: #a31917}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Synth<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>client-side representation of a synth node on the server</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Node.html"><span class="s2"><b>Node</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1">A Synth is the client-side representation of a synth node on the server. A Synth represents a single sound producing unit.<span class="Apple-converted-space">  </span>What it does is defined in a <b>SynthDef</b>, which specifies what UGens are used and how they are patched together.<span class="Apple-converted-space">  </span>It also specifies what inputs and outputs the Synth will have. A SynthDef is thus a kind of fixed pattern, upon which Synths are be based. (Despite this, a given SynthDef can provide a surprising amount of variation.) For more detail on SynthDefs, their construction, and how to send them to a server, see the <a href="SynthDef.html"><span class="s2"><b>SynthDef</b></span></a> help file.</p>
-<p class="p2"><br></p>
-<p class="p1">For more on the important distinction between client objects and server nodes, see <a href="ClientVsServer.html"><span class="s2"><b>ClientVsServer</b></span></a>. For information on creating nodes without using objects, see <a href="NodeMessaging.html"><span class="s2"><b>NodeMessaging</b></span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>N.B. </b>Synth is a subclass of <b>Node</b>, and thus many of its most useful and important methods are documented in the <a href="Node.html"><span class="s2"><b>Node</b></span></a> help file.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Order of Execution</b></p>
-<p class="p2"><br></p>
-<p class="p1">Order of execution is a crucial issue when creating Synths which interact with each other.</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>sound -><span class="Apple-converted-space">  </span>filter</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">If a sound is to be passed through a filter, the synth that does the filtering must be later in the order of execution than the synth which is its input.<span class="Apple-converted-space">  </span>The computer must calculate a buffer's worth of sound, and then the computer moves on to calculate a buffer's worth of the filtered version of that sound.</p>
-<p class="p2"><br></p>
-<p class="p1">The actual interconnection between synth nodes is accomplished with buses. See <a href="Bus.html"><span class="s2"><b>Bus</b></span></a> and <a href="Server-Architecture.html"><span class="s2"><b>Server-Architecture</b></span></a> for details.</p>
-<p class="p2"><br></p>
-<p class="p1">See the <a href="Order-of-execution.html"><span class="s2"><b>Order-of-execution</b></span></a> help file for a more detailed discussion of this important topic.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Bundling</b></p>
-<p class="p2"><br></p>
-<p class="p1">Some of the methods below have two versions: a regular one which sends its corresponding message to the server immediately, and one which returns the message in an <a href="../Collections/Array.html"><span class="s2"><b>Array</b></span></a> so that it can be added to a bundle. It is also possible to capture the messages generated by the regular methods using Server's automated bundling capabilities. See <a href="Server.html"><span class="s2"><b>Server</b></span></a> and <a href="bundledCommands.html"><span class="s2"><b>bundledCommands</b></span></a> for more details.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Accessing Instance Variables</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>defName </b>- Returns the name of this Synth's SynthDef.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5">For other instance variables see <a href="Node.html"><span class="s2"><b>Node</b></span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Creation with Immediate Instantiation on the Server</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>*new(defName, args: [ arg1, value1, ... argN, valueN<span class="Apple-converted-space">  </span>], target, addAction)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Create and return a new Synth object, and immediately start the corresponding synth node on the server.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>defName </b>- A <a href="../Collections/String.html"><span class="s2"><b>String</b></span></a> or <a href="../Core/Symbol.html"><span class="s2"><b>Symbol</b></span></a> specifying the name of the <b>SynthDef</b> to use in creating the Synth.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>args </b>- An optional array specifying initial values for the SynthDef's arguments (controls). These are specified in pairs of control name or index and value. If names are used they can be specified with either Strings or Symbols. e.g. <span class="s3">[</span><span class="s4">\frequency</span><span class="s3">, 440, </span><span class="s4">\amplitude</span><span class="s3">, 1, ...]</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Values that are arrays are sent using<span class="Apple-converted-space">  </span>OSC array type-tags ($[ and $]).<span class="Apple-converted-space">  </span>These values will<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>be assigned to subsequent controls.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>target </b>- A target for this Synth. If target is not a <a href="Group.html"><span class="s2"><b>Group</b></span></a> or Synth, it will be converted as follows: If it is a <b>Server</b>, it will be converted to the <b>default_group</b> of that server. If it is nil, to the <b>default_group</b> of the default Server. If it is an integer, it is created relative to a group with that id.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Note: </b>A Synth is not a valid target for <span class="s4">\addToHead</span> and <span class="s4">\addToTail</span>.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>addAction</b> - one of the following Symbols:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">\addToHead</span><span class="s3"> <span class="Apple-tab-span">	</span></span>- (the default) add at the head of the group specified by <b>target</b></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">\addToTail</span><span class="s3"> <span class="Apple-tab-span">	</span></span>- add at the tail of the group specified by <b>target</b></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">\addAfter</span> <span class="Apple-tab-span">	</span>- add immediately after <b>target </b>in its server<span class="s5">'s </span>node order</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\addBefore</span><span class="s5"> <span class="Apple-tab-span">	</span></span>- add immediately before <b>target </b>in its server's node order</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\addReplace</span> <span class="Apple-tab-span">	</span>- replace <b>target</b> and take its place in its server's node order</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create a Synth at the head of the default Server's default group</p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// based on the SynthDef "default"</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Synth</span>.new(<span class="s8">"default"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.queryAllNodes; </span>// note the default group (ID 1)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p2"><br></p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Using an arrayed control</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span>SynthDef<span class="s7">(</span><span class="s8">"help-synth"</span><span class="s7">, {</span>| freq = #[440, 450, 460], out = 0 |</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Mix</span>(<span class="s2">SinOsc</span>.ar(freq, 0, 0.1)));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x.play(s, [freq: [500,501,510] ]);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s5">\freq</span>, [1,2,3] * 400 + [1,2,3], <span class="s5">\out</span>, 1); <span class="s9">// two pairs</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s5">\freq</span>, [3] * 400 + [1,2,3], <span class="s5">\out</span>, 1); <span class="s9">// two pairs</span></p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(0, [660, 680, 720], 1, 0); </span>// freq is the first argument, so it's index is 0. out is index 1.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*newPaused(defName, args: [ arg1, value1,... argN, valueN<span class="Apple-converted-space">  </span>], target, addAction)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>As <b>*new</b> above, but creates a node which is paused. This can be started by calling run on it.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Synth</span>.newPaused(<span class="s8">"default"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.queryAllNodes; <span class="s9">// see I'm here</span></p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.run; </span>// true is the default</p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.run(</span><span class="s2">false</span><span class="s7">); </span>// pause me again</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*grain(defName, args: [ arg1, value1, ... argN, valueN<span class="Apple-converted-space">  </span>], target, addAction)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A convenience method which will create a synth node with an node ID of -1. Such a node cannot be messaged after creation. As such this method does not create an object, and returns nil. For details of its arguments see <b>*new</b> above.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5">The following convenience methods correspond to the add actions of <b>Synth.new</b>:</p>
-<p class="p14"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>*after(aNode, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Synth and add it immediately after <b>aNode.</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>*before(aNode, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Synth and add it immediately before <b>aNode.</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span><b>*head(aGroup, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Synth. If <b>aGroup</b> is a <b>Group</b> add it at the head of that group. If it is a <b>Server</b>, add it at the head of the <b>default_group</b> of that server. If it is nil, add it at the head of the <b>default_group</b> of the default server<b>. </b>If it is an integer, it is created relative to a group with that id.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span><b>*tail(aGroup, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Synth. If <b>aGroup</b> is a <b>Group</b> add it at the tail of that group. If it is a <b>Server</b>, add it at the tail of the <b>default_group</b> of that server. If it is nil, add it at the tail of the <b>default_group</b> of the the default server<b>. </b>If it is an integer, it is created relative to a group with that id.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*replace(nodeToReplace, defName, args)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Synth and use it to replace <b>nodeToReplace</b>, taking its place in its server's node order.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Creation without Instantiation on the Server</b></p>
-<p class="p2"><br></p>
-<p class="p1">For use in message bundles it is also possible to create a Synth object in the client app without immediately creating a synth node on the server. Once done one can call methods which create messages to add to a bundle, which when sent to the server will instantiate the synth.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>*basicNew(defName, server, nodeID)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a Synth object without creating a synth node on the server.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>defName </b>- A <b>String</b> or <b>Symbol</b> specifying the name of the <b>SynthDef</b> to use in creating the Synth.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server</b> - An optional instance of <b>Server</b>. If nil this will default to the default <b>Server</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nodeID </b>- An optional node ID number. If not supplied one will be generated by the Server's NodeIDAllocator. Normally you should not need to supply an ID.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s7">.basicNew(</span><span class="s8">"default"</span><span class="s7">, s); </span>// Create without sending</p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(</span><span class="s2">nil</span><span class="s7">, x.newMsg;); </span>// Now send a message; create at the head of s' default group</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>newMsg(target, args, addAction</b>)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a message of the type <b>s_new</b> which can be bundled. When sent to the server this message will instantiate this synth. If target is nil, it will default to the <b>default_group</b> of the Server specified in <b>*basicNew</b> when this Synth was created. The default addAction is <span class="s4">\addToHead</span>. (See <b>*new</b> above for details of addActions and args.)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>addToHeadMsg(aGroup, args)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a message of the type <b>s_new</b> which can be bundled. When sent to the server this message will instantiate this synth. If <b>aGroup</b> is a <b>Group</b> it will be added at the head of that group. If it is nil, it will be added at the head of the <b>default_group</b> of this Synth's server (as specified when *<b>basicNew</b> was called). See <b>*new</b> above for details on <b>args</b>.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>addToTailMsg(aGroup, args)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Returns a message of the type <b>s_new</b> which can be bundled. When sent to the server this message will instantiate this synth. If <b>aGroup</b> is a <b>Group</b> it will be added at the tail of that group. If it is nil, it will be added at the tail of the <b>default_group</b> of this Synth's server (as specified when *<b>basicNew</b> was called). See <b>*new</b> above for details on <b>args</b>.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>addBeforeMsg(aNode, args</b>)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a message of the type <b>s_new</b> which can be bundled. When sent to the server this message will instantiate this synth, immediately before <b>aNode</b>. See <b>*new</b> above for details on <b>args</b>.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>addAfterMsg(aNode, args</b>)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a message of the type <b>s_new</b> which can be bundled. When sent to the server this message will instantiate this synth, immediately after <b>aNode</b>. See <b>*new</b> above for details on <b>args</b>.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>addReplaceMsg(nodeToReplace, args</b>)</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Returns a message of the type <b>s_new</b> which can be bundled. When sent to the server this message will instantiate this synth, replacing <b>nodeToReplace</b> in the server's node order. See <b>*new</b> above for details on <b>args</b>.</p>
-<p class="p4"><br></p>
-<p class="p15"><b>Control</b></p>
-<p class="p4"><br></p>
-<p class="p5">For further methods of controlling Synths (set, map, etc.), see the <a href="Node.html"><span class="s2"><b>Node</b></span></a> helpfile.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>get(index, action)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>getMsg(index)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Query the server for the current value of a <b>Control</b> (argument). <b>index</b> is a control name or index. <b>action</b> is a <a href="../Core/Kernel/Function.html"><span class="s2"><b>Function</b></span></a> which will be evaluated with the value passed as an argument when the reply is received.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s8">"help-Synth-get"</span>, { <span class="s2">arg</span> freq = 440;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(freq, 0, 0.1));</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p16"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s7">(</span>"help-Synth-get"<span class="s7">);</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.set(<span class="s5">\freq</span>, 220 + 440.rand);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.get(<span class="s5">\freq</span>, { <span class="s2">arg</span> value; (<span class="s8">"freq is now:"</span> + value + <span class="s8">"Hz"</span>).postln; });</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>getn(index, count, action)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>getnMsg(index, count)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Query the server for the current values of a sequential range of Controls (arguments). <b>index</b> is a control name or index. <b>count</b> is the number of sequential controls to query, starting at <b>index</b>. <b>action</b> is a <b>Function</b> which will be evaluated with an <b>Array</b> containing the values passed as an argument when the reply is received.<span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p15"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p17"><br></p>
-<p class="p18">// boot the default server</p>
-<p class="p18"><span class="s7">s = </span><span class="s2">Server</span><span class="s7">.default; </span>// just to be sure</p>
-<p class="p13">s.boot;</p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p13">(</p>
-<p class="p18">// send a synth def to server</p>
-<p class="p13"><span class="s2">SynthDef</span>(<span class="s8">"tpulse"</span>, { <span class="s2">arg</span> out = 0,freq = 700, sawFreq = 440.0;<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SyncSaw</span>.ar(freq, sawFreq, 0.1));</p>
-<p class="p13">}).add;</p>
-<p class="p13">)</p>
-<p class="p17"><br></p>
-<p class="p18">// Here the defaults for *new will result in a Synth at the head of the default group</p>
-<p class="p18">// of the default Server. This will use the SynthDef's default arguments;</p>
-<p class="p13">y = <span class="s2">Synth</span>.new(<span class="s8">"tpulse"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p13">y.free;</p>
-<p class="p17"><br></p>
-<p class="p18">// The same done explicitly</p>
-<p class="p13">y = <span class="s2">Synth</span>.new(<span class="s8">"tpulse"</span>, <span class="s2">nil</span>, s, <span class="s5">\addToHead</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p13">y.free;</p>
-<p class="p17"><br></p>
-<p class="p18">// With some arguments</p>
-<p class="p13">y = <span class="s2">Synth</span>.new(<span class="s8">"tpulse"</span>, [<span class="s5">\freq</span>, 350, <span class="s5">\sawFreq</span>, 220]);</p>
-<p class="p13">y.free;</p>
-<p class="p17"><br></p>
-<p class="p18">// make a new synth</p>
-<p class="p19"><span class="s7">y = </span><span class="s2">Synth</span><span class="s7">(</span>"tpulse"<span class="s7">);</span></p>
-<p class="p17"><br></p>
-<p class="p18">// pause</p>
-<p class="p13">y.run(<span class="s2">false</span>);</p>
-<p class="p17"><br></p>
-<p class="p13">y.run(<span class="s2">true</span>);</p>
-<p class="p17"><br></p>
-<p class="p18">// set a control by argument name</p>
-<p class="p13">y.set(<span class="s8">"freq"</span>, 200);</p>
-<p class="p17"><br></p>
-<p class="p18">// or by index</p>
-<p class="p13">y.set(2, 100.0);</p>
-<p class="p17"><br></p>
-<p class="p18">// modulate out to bus number 1 (the right speaker)</p>
-<p class="p13">y.set(0, 1);</p>
-<p class="p17"><br></p>
-<p class="p18">//<span class="Apple-converted-space">  </span>multiple set commands in one message</p>
-<p class="p13">y.set(<span class="s8">"out"</span>, 0, <span class="s8">"freq"</span>,300);</p>
-<p class="p17"><br></p>
-<p class="p18">// free the synth from the server</p>
-<p class="p13">y.free;</p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p18">//////////// Filtering</p>
-<p class="p17"><br></p>
-<p class="p13">(</p>
-<p class="p18">// first collect some things to play with</p>
-<p class="p13"><span class="s2">SynthDef</span>(<span class="s8">"moto-rev"</span>, { <span class="s2">arg</span> out=0;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">var</span> x;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>x = <span class="s2">RLPF</span>.ar(<span class="s2">LFPulse</span>.ar(<span class="s2">SinOsc</span>.kr(0.2, 0, 10, 21), [0,0.1], 0.1),<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100, 0.1).clip2(0.4);</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, x);</p>
-<p class="p13">}).add;</p>
-<p class="p17"><br></p>
-<p class="p13"><span class="s2">SynthDef</span>(<span class="s8">"bubbles"</span>, { <span class="s2">arg</span> out=0;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">var</span> f, zout;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>f = <span class="s2">LFSaw</span>.kr(0.4, 0, 24, <span class="s2">LFSaw</span>.kr([8,7.23], 0, 3, 80)).midicps;<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>zout = <span class="s2">CombN</span>.ar(<span class="s2">SinOsc</span>.ar(f, 0, 0.04), 0.2, 0.2, 4); <span class="s9">// echoing sine wave</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, zout);</p>
-<p class="p13">}).add;</p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p13"><span class="s2">SynthDef</span>(<span class="s8">"rlpf"</span>,{ <span class="s2">arg</span> out=0,ffreq=600,rq=0.1;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">ReplaceOut</span>.ar( out, <span class="s2">RLPF</span>.ar( <span class="s2">In</span>.ar(out), ffreq,rq) )</p>
-<p class="p13">}).add;</p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p13"><span class="s2">SynthDef</span>(<span class="s8">"wah"</span>, { <span class="s2">arg</span> out, rate = 1.5, cfreq = 1400, mfreq = 1200, rq=0.1;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">var</span> zin, zout;</p>
-<p class="p17"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>zin = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>cfreq = <span class="s2">Lag3</span>.kr(cfreq, 0.1);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>mfreq = <span class="s2">Lag3</span>.kr(mfreq, 0.1);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>rq <span class="Apple-converted-space">  </span>= <span class="s2">Ramp</span>.kr(rq, 0.1);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>zout = <span class="s2">RLPF</span>.ar(zin, <span class="s2">LFNoise1</span>.kr(rate, mfreq, cfreq), rq, 10).distort<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 0.15;</p>
-<p class="p17"><br></p>
-<p class="p18"><span class="s7"><span class="Apple-tab-span">	</span></span>// replace the incoming bus with the effected version</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">ReplaceOut</span>.ar( out , zout );<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="Apple-tab-span">	</span></p>
-<p class="p13">}).add;</p>
-<p class="p17"><br></p>
-<p class="p13"><span class="s2">SynthDef</span>(<span class="s8">"modulate"</span>,{ <span class="s2">arg</span> out = 0, freq = 1, center = 440, plusMinus = 110;</p>
-<p class="p13"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.kr(out, <span class="s2">SinOsc</span>.kr(freq, 0, plusMinus, center));</p>
-<p class="p13">}).add;</p>
-<p class="p13">)</p>
-<p class="p17"><br></p>
-<p class="p18">// execute these one at a time</p>
-<p class="p17"><br></p>
-<p class="p18">// y is playing on bus 0</p>
-<p class="p19"><span class="s7">y = </span><span class="s2">Synth</span><span class="s7">(</span>"moto-rev"<span class="s7">,[</span>"out"<span class="s7">,0]);</span></p>
-<p class="p17"><br></p>
-<p class="p18">// z is reading from bus 0 and replacing that; It must be *after* y</p>
-<p class="p13">z = <span class="s2">Synth</span>.after(y,<span class="s8">"wah"</span>,[<span class="s8">"out"</span>,0]);</p>
-<p class="p17"><br></p>
-<p class="p18">// stop the wah-ing</p>
-<p class="p13">z.run(<span class="s2">false</span>);</p>
-<p class="p17"><br></p>
-<p class="p18">// resume the wah-ing</p>
-<p class="p13">z.run(<span class="s2">true</span>);</p>
-<p class="p17"><br></p>
-<p class="p18">// add a rlpf after that, reading and writing to the same buss</p>
-<p class="p13">x = <span class="s2">Synth</span>.after(z,<span class="s8">"rlpf"</span>,[<span class="s8">"out"</span>,0]);</p>
-<p class="p17"><br></p>
-<p class="p18">// create another rlpf after x</p>
-<p class="p13">t = <span class="s2">Synth</span>.after(x,<span class="s8">"rlpf"</span>,[<span class="s8">"out"</span>,0]);</p>
-<p class="p17"><br></p>
-<p class="p13">x.set(<span class="s8">"ffreq"</span>, 400);</p>
-<p class="p17"><br></p>
-<p class="p18"><span class="s7">x.set(</span><span class="s5">\ffreq</span><span class="s7">, 800); </span>// Symbols work for control names too</p>
-<p class="p17"><br></p>
-<p class="p18">// Now let's modulate x's ffreq arg</p>
-<p class="p18">// First get a control Bus</p>
-<p class="p13">b = <span class="s2">Bus</span>.control(s, 1);</p>
-<p class="p17"><br></p>
-<p class="p18">// now the modulator, *before* x</p>
-<p class="p13">m = <span class="s2">Synth</span>.before(x, <span class="s8">"modulate"</span>, [<span class="s5">\out</span>, b]);</p>
-<p class="p17"><br></p>
-<p class="p18">// now map x's ffreq to b</p>
-<p class="p13">x.map(<span class="s8">"ffreq"</span>, b);</p>
-<p class="p17"><br></p>
-<p class="p13">m.set(<span class="s8">"freq"</span>, 4, <span class="s8">"plusMinus"</span>, 20);</p>
-<p class="p17"><br></p>
-<p class="p13">x.free;</p>
-<p class="p13">z.free;</p>
-<p class="p13">m.free;</p>
-<p class="p17"><br></p>
-<p class="p18">// now place another synth after y, on the same bus</p>
-<p class="p18">// they both write to the buss, adding their outputs</p>
-<p class="p13">r = <span class="s2">Synth</span>.after(y,<span class="s8">"bubbles"</span>,[<span class="s8">"out"</span>,0]);</p>
-<p class="p17"><br></p>
-<p class="p13">y.free;</p>
-<p class="p17"><br></p>
-<p class="p13">r.free;</p>
-<p class="p17"><br></p>
-<p class="p18">// look at the Server window</p>
-<p class="p18">// still see 4 Ugens and 1 synth?</p>
-<p class="p18">// you can't hear me, but don't forget to free me</p>
-<p class="p13">t.free;</p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-<p class="p17"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/SynthDef.html b/Help/ServerArchitecture/SynthDef.html
deleted file mode 100644
index cc34f66..0000000
--- a/Help/ServerArchitecture/SynthDef.html
+++ /dev/null
@@ -1,490 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #526c33}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #792724}
-p.p9 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 28.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 28.0px; font: 12.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco; color: #526c33}
-p.p14 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 9.0px Monaco}
-p.p17 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 9.0px Monaco; color: #233aa6}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a31917}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #35701d}
-p.p22 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0017b3}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #3e5ed3}
-span.s3 {color: #3250d0}
-span.s4 {color: #10289e}
-span.s5 {color: #000000}
-span.s6 {color: #526c33}
-span.s7 {color: #2e4cd0}
-span.s8 {color: #2e4bd2}
-span.s9 {font: 12.0px Helvetica}
-span.s10 {color: #5e7b40}
-span.s11 {color: #233aa6}
-span.s12 {color: #3f5ed3}
-span.s13 {color: #304cd0}
-span.s14 {font: 9.0px Monaco; color: #20359b}
-span.s15 {font: 9.0px Monaco}
-span.s16 {color: #335ade}
-span.s17 {color: #007300}
-span.s18 {color: #0017b3}
-span.s19 {color: #35701d}
-span.s20 {color: #a31917}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SynthDef<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>client-side representation of a synth definition</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">The server application uses synth definitions as templates for creating <a href="Synth.html"><span class="s2">Synth</span></a> nodes. (Methods such as <b>Function-play</b>, etc. are simply conveniences which automatically create such a def.) The SynthDef class encapsulates the client-side representation of a given def, and provides methods for creating new defs, writing them to disk, and streaming them to a server.</p>
-<p class="p2"><br></p>
-<p class="p1">SynthDef is one of the more complicated classes in SC and an exhaustive explanation of it is beyond the scope of this document. As such, the examples at the bottom of this document and those found in the various tutorials accessible from <a href="../Help.html"><span class="s2">Help</span></a> may be necessary to make some aspects of its use clear.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>UGen Graph Functions and Special Argument Forms</b></p>
-<p class="p2"><br></p>
-<p class="p1">The core of a def is its <b>unit generator graph function</b>. This is an instance of <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a> which details how the def's unit generators are interconnected, its inputs and outputs, and what parameters are available for external control. In a synth based on the def, arguments to the function will become instances of <a href="../UGens/Synth control/Control.html"><span class="s3">Control</span></a>. These can have default values, or can be set at the time the synth is created. After creation they will be controllable through Node's <b>set</b> and <b>setn</b> methods, or the n_set and n_setn OSC messages.</p>
-<p class="p2"><br></p>
-<p class="p1">There are four special types of arguments, which are treated differently:</p>
-<p class="p2"><br></p>
-<p class="p4"><b>audio rate </b>-<b> </b>Arguments that begin with "a_" (e.g. a_input), or that are specified as <b>\ar</b> in the def's rates argument (see below), will be able to read and audio rate bus when mapped to it with /n_mapa.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>initial rate </b>-<b> </b>Arguments that begin with "i_" (e.g. i_freq), or that are specified as <b>\ir</b> in the def's rates argument (see below), will be static and non-modulatable. They will not respond to /n_set or /n_map. This is slightly more efficient in terms of CPU than a regular arg.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>trigger rate </b>-<b> </b>Arguments that begin with "t_" (e.g. t_trig), or that are specified as <b>\tr</b> in the def's rates argument (see below), will be made as a <b>TrigControl</b>. Setting the argument will create a control-rate impulse at the set value. This is useful for triggers.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>literal arrays</b> -<b> </b>Arguments which have literal arrays as default values (see <a href="../Language/Literals.html"><span class="s2">Literals</span></a>) result in multichannel controls, which can be set as a group with <b>Node-setn</b> or n_setn. When setting such controls <i>no bounds checking is done</i>, so you are responsible for making sure that you set the correct number of arguments.</p>
-<p class="p2"><br></p>
-<p class="p1">See the examples below for more detail on how this works.</p>
-<p class="p2"><br></p>
-<p class="p1">Certain argument names (such as 'out' to specify an out bus) are in such common use that adopting them might be said to constitute 'good style'. One of these, '<b>gate</b>' when used to control the gate input of an <a href="../UGens/Synth control/Envelopes/EnvGen.html"><span class="s3">EnvGen</span></a>, deserves special mention, as it allows one to use Node's <b>release</b> method. See <a href="Node.html"><span class="s2">Node</span></a> for an example and more detail.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Static versus Dynamic Elements</b></p>
-<p class="p2"><br></p>
-<p class="p1">It is important to understand that although a single def can provide a great deal of flexibility through its arguments, etc., it is nevertheless a static entity. A def's UGen graph function (and the SC code within it) is evaluated <i>only</i> when the def is created. Thus 'if' statements, etc. will have no further effect at the time the def is used to create a Synth, and it is important to understand that a UGen graph function should not be designed in the same way as functions in the language, where multiple evaluations can yield different results. It will be evaluated <i>once and only once</i>.</p>
-<p class="p2"><br></p>
-<p class="p1">There are other ways of achieving similar results, however, often using UGens such as <a href="../UGens/Random/Rand.html"><span class="s2">Rand</span></a>. For example, the following def will have a single randomly generated frequency, which will be the same for every Synth based on it:</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s5">(</span>\help_notRand<span class="s5">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(rrand(400, 800), 0, 0.2) * <span class="s4">Line</span>.kr(1, 0, 1, doneAction: 2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).add;</p>
-<p class="p6">)</p>
-<p class="p7"><span class="s5">a = </span><span class="s4">Synth</span><span class="s5">(</span>\help_notRand<span class="s5">);</span></p>
-<p class="p8"><span class="s5">b = </span><span class="s4">Synth</span><span class="s5">(</span><span class="s6">\help_notRand</span><span class="s5">); </span>// the same freq as a</p>
-<p class="p2"><br></p>
-<p class="p1">This one on the other hand will have a different random freq for each Synth created:</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s5">(</span>\help_isRand<span class="s5">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(<span class="s4">Rand</span>(400, 800), 0, 0.2) * <span class="s4">Line</span>.kr(1, 0, 1, doneAction: 2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}).add;</p>
-<p class="p6">)</p>
-<p class="p7"><span class="s5">a = </span><span class="s4">Synth</span><span class="s5">(</span>\help_isRand<span class="s5">);</span></p>
-<p class="p8"><span class="s5">b = </span><span class="s4">Synth</span><span class="s5">(</span><span class="s6">\help_isRand</span><span class="s5">); </span>// a different randomly selected freq</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(name, ugenGraphFunc, rates, prependArgs, variants, metadata)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Create a SynthDef instance, evaluate the ugenGraphFunc and build the ugenGraph.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>name </b>- A <a href="../Collections/String.html"><span class="s2">String</span></a> or <a href="../Core/Symbol.html"><span class="s2">Symbol</span></a> (i.e. "name" or \name). This name will be used to refer to the SynthDef when creating a <a href="Synth.html"><span class="s2">Synth</span></a> based upon it, and should be unique.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>ugenGraphFunc</b> - An instance of <a href="../Core/Kernel/Function.html"><span class="s2">Function</span></a><b> </b>specifying how the def's UGens are interconnected. See the discussion above for information on how the Function's arguments are specified.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>rates</b> - An optional Array of specifications for the ugenGraphFunc's arguments. The order corresponds to the order of arguments. See the examples below to see how these are used.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A specification can be:</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>nil/zero</b><span class="Apple-tab-span">	</span>A standard control rate <a href="../UGens/Synth control/Control.html"><span class="s3">Control</span></a> is created.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\ar</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An audio rate AudioControl is created.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>a float</b><span class="Apple-tab-span">	</span>the Control will have a lag of the specified time. This can be used to create<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>smooth transitions between different values. t_ and i_ args cannot be lagged.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\ir</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The Control can be set only at creation ('initial rate'). See discussion above.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\tr</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The Control is used as a trigger. See discussion above.</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>prependArgs </b>- An optional Array of objects which will be passed as the first arguments to the <b>ugenGraphFunc</b> when it is evaluated. Arguments which receive values in this way will not be converted to instances of <a href="../UGens/Synth control/Control.html"><span class="s3">Control</span></a>. See the *<b>wrap</b> example below for an example of how this can be used.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>variants</b> - An optional <a href="../Collections/Event.html"><span class="s2">Event</span></a> containing default argument settings. These can override the defaults specified in the <b>ugenGraphFunc</b>. When creating a Synth a variant can be requested by appending the defName argument in the form<span class="Apple-converted-space">  </span>'name.variant' or "name.variant". See example below.</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><b>metadata</b> - An optional <a href="../Collections/Event.html"><span class="s7">Event</span></a> containing additional, user-defined information that is relevant to the use of the SynthDef in the client. The SynthDef itself is sent to the server for audio rendering; metadata are strictly client-side descriptive information. Currently the 'specs' key in the event is reserved for ControlSpecs to be associated with SynthDef arguments (this is useful for automatic GUI construction). Metadata can be persisted to disk and loaded automatically as part of a SynthDesc. See the <a href="SynthDesc.html"><span class="s7">SynthDesc</span></a> help file for more details.</p>
-<p class="p10"><br></p>
-<p class="p11"><br></p>
-<p class="p10"><br></p>
-<p class="p9"><b>*wrap(ugenGraphFunc, rates, prependArgs)</b></p>
-<p class="p10"><br></p>
-<p class="p12">Wraps a function within an enclosing synthdef. Arguments to the wrapped function are automatically promoted to be SynthDef controls, using the same rules applied to arguments of the main UGen function. For a very simple example:</p>
-<p class="p11"><br></p>
-<p class="p13"><span class="s5"><span class="Apple-tab-span">	</span>d = </span><span class="s4">SynthDef</span><span class="s5">(</span>\demoWrapping<span class="s5">, { </span><span class="s4">|out|</span></p>
-<p class="p14"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SynthDef</span>.wrap({ <span class="s4">|freq|</span> <span class="s4">SinOsc</span>.ar(freq) }))</p>
-<p class="p14"><span class="Apple-tab-span">	</span>});</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span>d.allControlNames;</p>
-<p class="p10"><br></p>
-<p class="p9">Prints: [ ControlName<span class="Apple-converted-space">  </span>P 0 <b>out</b> control 0, ControlName<span class="Apple-converted-space">  </span>P 1 <b>freq</b> control 0 ]</p>
-<p class="p11"><br></p>
-<p class="p12">The outer function declares the argument 'out', and the wrapped function has 'freq' as its argument. The resulting SynthDef has both arguments as controls, exactly as if the outer function included both as arguments.</p>
-<p class="p11"><br></p>
-<p class="p12">The <b>rates</b> array behaves as described earlier. <b>PrependArgs</b> allows values or unit generators to be passed into the inner function from the enclosing SynthDef context. Any inner function argument that receives a prependArg value (including nil) will use that value, suppressing creation of a control for that argument. The longer example below demonstrates this technique.</p>
-<p class="p11"><br></p>
-<p class="p12">This is very useful for mass-producing SynthDefs that have a common "shell" defining features such as enveloping or triggering mechanisms that apply to different subgraphs of unit generators. The common features need be written only once; the UGens that differ between the SynthDefs are plugged into the supporting architecture.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><b>*synthDefDir</b></p>
-<p class="p9"><b>*synthDefDir_(dir)</b></p>
-<p class="p10"><br></p>
-<p class="p9"><b><span class="Apple-tab-span">	</span></b>Get or set the default directory to which defs are written.</p>
-<p class="p10"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p3"><b>Instance Methods</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>add(libname, completionMsg, keepDef)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Adds the synthdef to the <a href="SynthDescLib.html"><span class="s8">SynthDescLib</span></a> specified by <b>libname</b>, and sends it to the library's servers. No defFile is written; all operations take place in memory. After using this method, the synthdef can be used with event streams as in store(), but without the permanent artifact of a file on disk.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>A server can be added by SynthDescLib.global.addServer(server)</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Note that the "dir" and "mdPlugin" arguments do not exist for this method. Because no file is written, there is no need to specify a directory or write a metadata file.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p16"><span class="s9"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p17"><span class="s5"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s5">(</span><span class="s10">\help_synth</span><span class="s5">, { </span>|out, freq = 800, sustain = 1, amp = 0.1|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">SinOsc</span>.ar(freq, 0, 0.2) * <span class="s11">Line</span>.kr(amp, 0, sustain, doneAction: 2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>*removeAt(name, libname)</b></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Remove the synthdef from the SynthDescLib and from its servers.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>name</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Return this def's name.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>func</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Return this def's ugenGraphFunc.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>variants</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Return an <a href="../Collections/Event.html"><span class="s2">Event</span></a> containing this def's variants.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>Special purpose methods</b></p>
-<p class="p3">(for most purposes, the method <b><i>add</i></b> is recommended)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>writeDefFile(dir)</b><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Writes the def as a file called name.scsyndef in a form readable by a server. Default for <b>dir</b> is synthdefs/. Defs stored in the default directory will be automatically loaded by the local and internal Servers when they are booted.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b>load(server, completionMessage, dir)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b>Write the defFile and send a message to <b>server</b> to load this file. When this asynchronous command is completed, the <b>completionMessage</b> (a valid OSC message) is immediately executed by the server. Default for <b>dir</b> is synthdefs/.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>send(server, completionMessage)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Compile the def and send it to <b>server</b> without writing to disk (thus avoiding that annoying SynthDef buildup). When this asynchronous command is completed, the <b>completionMessage</b> (a valid OSC message) is immediately executed by the server.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>store(libname, dir, completionMessage, mdPlugin)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Write the defFile and store it in the <b>SynthDescLib</b> specified by <b>libname</b>, and send a message to the library's server to load this file. When this asynchronous command is completed, the <b>completionMessage</b> (a valid OSC<span class="Apple-converted-space">  </span>message) is immediately executed by the server. Default for <b>libname</b> is \global, for <b>dir</b> is synthdefs/. This is needed to use defs with the event stream system. See <a href="../Streams-Patterns-Events/Streams.html"><span class="s12">Streams</span></a> and <a href="../Streams-Patterns-Events/Patterns/Pattern.html"><span class="s12">Pattern</span></a>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>mdPlugin (optional) is the metadata plug-in class that will be used to persist metadata. If not supplied, the default plug-in is used. See the <a href="SynthDesc.html"><span class="s13">SynthDesc</span></a> help file for details.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p9"><b>*writeOnce(name, ugenGraphFunc, rates, prependArgs, dir, metadata)</b></p>
-<p class="p10"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p12">Create a new SynthDef and write it to disk, but only if a def file with this name does not already exist. This is useful in class definitions so that the def is not written every time the library is compiled. Note that this will not check for differences, so you will need to delete the defFile to get it to rebuild. Default for <b>dir</b> is to use the path specified by <span class="s14">SynthDef</span><span class="s15">.synthDefDir</span>.</p>
-<p class="p11"><br></p>
-<p class="p1"><b>memStore(libname, completionMsg)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>This method has been deprecated, use <b>add</b> instead.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>play(target, args, addAction)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b>A convenience method which compiles the def and sends it to <b>target's</b> server. When this asynchronous command is completed, it create one synth from this definition, using the argument values specified in the Array <b>args</b>. Returns a corresponding <b>Synth</b> object. For a list of valid <b>addActions</b> see <a href="../../../../../../../Applications/SuperCollider/Help/ServerArchitecture/Synth.html"><span class="s16">Synth</span></a>. The default is <span class="s17">\addToHead</span><span class="s5">.<b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p18"><b>Examples</b></p>
-<p class="p19"><br></p>
-<p class="p1"><b>Basic</b></p>
-<p class="p19"><br></p>
-<p class="p20">// Note that constructions like SynthDef(...) and Synth(...) are short for SynthDef.new(...), etc.</p>
-<p class="p20">// With SynthDef it is common to chain this with calls on the resulting instance,</p>
-<p class="p20">// e.g. SynthDef(...).add or SynthDef(...).play</p>
-<p class="p19"><br></p>
-<p class="p20">// make a simple def and send it to the server</p>
-<p class="p19"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6"><span class="s18">SynthDef</span>(<span class="s19">\SimpleSine</span>, {<span class="s18">|freq = 440|</span> <span class="s18">Out</span>.ar(0, <span class="s18">SinOsc</span>.ar(freq, 0, 0.2)) }).add;</p>
-<p class="p19"><br></p>
-<p class="p20">// the above is essentially the same as the following:</p>
-<p class="p6">d = <span class="s18">SynthDef</span>.new(<span class="s19">\SimpleSine</span>, {<span class="s18">|freq = 440|</span> <span class="s18">Out</span>.ar(0, <span class="s18">SinOsc</span>.ar(freq, 0, 0.2)) });</p>
-<p class="p6">d.add;</p>
-<p class="p19"><br></p>
-<p class="p20">// now make a synth from it, using the default value for freq, then another with a different value</p>
-<p class="p21"><span class="s5">x = </span><span class="s18">Synth</span><span class="s5">(</span>\SimpleSine<span class="s5">);</span></p>
-<p class="p6">y = <span class="s18">Synth</span>(<span class="s19">\SimpleSine</span>, [<span class="s19">\freq</span>, 660]);</p>
-<p class="p19"><br></p>
-<p class="p20">// now change the freq value for x</p>
-<p class="p6">x.set(<span class="s19">\freq</span>, 880);</p>
-<p class="p19"><br></p>
-<p class="p6">x.free; y.free;</p>
-<p class="p19"><br></p>
-<p class="p20">// using the play convenience method</p>
-<p class="p6">x = <span class="s18">SynthDef</span>(<span class="s19">\SimpleSine</span>, {<span class="s18">|freq = 440|</span> <span class="s18">Out</span>.ar(0, <span class="s18">SinOsc</span>.ar(freq, 0, 0.2)) }).play</p>
-<p class="p6">x.free;</p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p1"><b>Argument Rates</b></p>
-<p class="p19"><br></p>
-<p class="p20">// the following two defs are equivalent. The first uses a 't_' arg:</p>
-<p class="p6">(</p>
-<p class="p20"><span class="s18">SynthDef</span><span class="s5">(</span><span class="s19">\trigTest</span><span class="s5">, {</span><span class="s18">|t_trig=0, freq=440|</span><span class="s5"> </span>// t_trig creates a TrigControl</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">Out</span>.ar(0, <span class="s18">SinOsc</span>.ar(freq+[0,1], 0, <span class="s18">Decay2</span>.kr(t_trig, 0.005, 1.0)));</p>
-<p class="p20"><span class="s5">}, [0, 4]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lag the freq by 4 seconds (the second arg), but not t_trig (won't work anyway)</p>
-<p class="p6">);</p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p20">// This second version makes trig a \tr arg by specifying it in the rates array.</p>
-<p class="p6">(</p>
-<p class="p22">SynthDef<span class="s5">(</span><span class="s19">\trigTest2</span><span class="s5">, {</span>|trig=0, freq=440|<span class="s5"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">Out</span>.ar(0, <span class="s18">SinOsc</span>.ar(freq+[0,1], 0, <span class="s18">Decay2</span>.kr(trig, 0.005, 1.0)));</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span>}, [</span><span class="s19">\tr</span><span class="s5">, 4]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lag the freq (lagtime: 4s), \tr creates a TrigControl for trig</p>
-<p class="p6">).add;<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p20">// Different way of writing the same thing</p>
-<p class="p6">(</p>
-<p class="p21"><span class="s18">SynthDef</span><span class="s5">(</span>\trigTest2<span class="s5">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">Out</span>.ar(0, <span class="s18">SinOsc</span>.ar(<span class="s19">\freq</span>.kr(440, 4) + [0,1], 0, <span class="s18">Decay2</span>.kr(<span class="s19">\trig</span>.tr, 0.005, 1.0)));</p>
-<p class="p6">}).add;<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p20">// Using the second version create a synth</p>
-<p class="p6">z = <span class="s18">Synth</span>.head(s, <span class="s19">\trigTest2</span>);</p>
-<p class="p19"><br></p>
-<p class="p20">// now trigger the decay envelope</p>
-<p class="p20"><span class="s5">z.set(</span><span class="s19">\trig</span><span class="s5">, 1); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// you can do this multiple times<span class="Apple-converted-space"> </span></p>
-<p class="p20"><span class="s5">z.set(</span><span class="s19">\trig</span><span class="s5">, 1, </span><span class="s19">\freq</span><span class="s5">, 220); <span class="Apple-tab-span">	</span></span>// hear how the freq lags</p>
-<p class="p6">z.set(<span class="s19">\trig</span>, 1, <span class="s19">\freq</span>, 880);</p>
-<p class="p19"><br></p>
-<p class="p20"><span class="s5">z.free; </span>//free the synth</p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p1"><b>Variants</b></p>
-<p class="p19"><br></p>
-<p class="p20">// create a def with some variants</p>
-<p class="p6">(</p>
-<p class="p22">SynthDef<span class="s5">(</span><span class="s19">\vartest</span><span class="s5">, {</span>|out=0, freq=440, amp=0.2, a = 0.01, r = 1|</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span></span>// the EnvGen with doneAction: 2 frees the synth automatically when done</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">Out</span>.ar(out, <span class="s18">SinOsc</span>.ar(freq, 0, <span class="s18">EnvGen</span>.kr(<span class="s18">Env</span>.perc(a, r, amp), doneAction: 2)));</p>
-<p class="p6">}, variants: (alpha: [a: 0.5, r: 0.5], beta: [a: 3, r: 0.01], gamma: [a: 0.01, r: 4])</p>
-<p class="p6">).add;</p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p20">// now make some synths. First using the arg defaults</p>
-<p class="p21"><span class="s18">Synth</span><span class="s5">(</span>\vartest<span class="s5">);</span></p>
-<p class="p19"><br></p>
-<p class="p20">// now the variant defaults</p>
-<p class="p21"><span class="s18">Synth</span><span class="s5">(</span>'vartest.alpha'<span class="s5">);</span></p>
-<p class="p21"><span class="s18">Synth</span><span class="s5">(</span>'vartest.beta'<span class="s5">);</span></p>
-<p class="p21"><span class="s18">Synth</span><span class="s5">(</span>'vartest.gamma'<span class="s5">);</span></p>
-<p class="p19"><br></p>
-<p class="p20">// override a variant</p>
-<p class="p21"><span class="s18">Synth</span><span class="s5">(</span>'vartest.alpha'<span class="s5">, [</span>\release<span class="s5">, 3, </span>\freq<span class="s5">, 660]);</span></p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p1"><b>Literal Array Arguments</b></p>
-<p class="p2"><br></p>
-<p class="p20">// freqs has a literal array of defaults. This makes a multichannel Control of the same size.</p>
-<p class="p6">(</p>
-<p class="p22">SynthDef<span class="s5">(</span><span class="s19">\arrayarg</span><span class="s5">, { </span>| amp = 0.1, freqs = #[300, 400, 500, 600], gate = 1 |</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">var</span> env, sines;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s18">Linen</span>.kr(gate, 0.1, 1, 1, 2) * amp;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>sines = <span class="s18">SinOsc</span>.ar(freqs +.t [0,0.5]).cubed.sum; <span class="s20">// A mix of 4 oscillators</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">Out</span>.ar(0, sines * env);<span class="Apple-converted-space"> </span></p>
-<p class="p6">}, [0, 0.1, 0]).add;</p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p21"><span class="s5">x = </span><span class="s18">Synth</span><span class="s5">(</span>\arrayarg<span class="s5">);</span></p>
-<p class="p6">x.setn(<span class="s19">\freqs</span>, [440, 441, 442, 443]);</p>
-<p class="p19"><br></p>
-<p class="p20">// Don't accidentally set too many values, or you may have unexpected side effects</p>
-<p class="p20">// The code below inadvertantly sets the gate arg, and frees the synth</p>
-<p class="p6">x.setn(<span class="s19">\freqs</span>, [300, 400, 500, 600, 0]);</p>
-<p class="p19"><br></p>
-<p class="p20">// Mr. McCartney's more complex example</p>
-<p class="p6">(</p>
-<p class="p6">fork {<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p21"><span class="s5"><span class="Apple-tab-span">	</span>z = </span><span class="s18">Synth</span><span class="s5">(</span>\arrayarg<span class="s5">);</span></p>
-<p class="p19"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>10.do {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z.setn(<span class="s19">\freqs</span>, {exprand(200,800.0)} ! 4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(2 ** (0..3).choose * 0.2).wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p19"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>z.set(<span class="s19">\amp</span>, -40.dbamp);</p>
-<p class="p19"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>10.do {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z.setn(<span class="s19">\freqs</span>, {exprand(200,800.0)} ! 4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(2 ** (0..3).choose * 0.2).wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p19"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>z.release;</p>
-<p class="p6">};</p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p1"><b>Wrapping Example: 'factory' production of effects defs</b></p>
-<p class="p19"><br></p>
-<p class="p20">// The makeEffect function below wraps a simpler function within itself and provides</p>
-<p class="p20">// a crossfade into the effect (so you can add it without clicks), control over wet</p>
-<p class="p20">// and dry mix, etc.</p>
-<p class="p20">// Such functionality is useful for a variety of effects, and SynthDef-wrap</p>
-<p class="p20">// lets you reuse the common code.</p>
-<p class="p6">(</p>
-<p class="p20">// the basic wrapper</p>
-<p class="p22"><span class="s5">~makeEffect = {</span>| name, func, lags, numChannels = 2 |</p>
-<p class="p19"><br></p>
-<p class="p22"><span class="s5"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s5">(name, {</span>| i_bus = 0, gate = 1, wet = 1|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s18">var</span> in, out, env, lfo;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = <span class="s18">In</span>.ar(i_bus, numChannels);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s18">Linen</span>.kr(gate, 2, 1, 2, 2); <span class="s20">// fade in the effect</span></p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// call the wrapped function. The in and env arguments are passed to the function</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// as the first two arguments (prependArgs).<span class="Apple-converted-space"> </span></p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Any other arguments of the wrapped function will be Controls.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out = <span class="s18">SynthDef</span>.wrap(func, lags, [in, env]);</p>
-<p class="p19"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s18">XOut</span>.ar(i_bus, wet * env, out);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}, [0, 0, 0.1] ).add;</p>
-<p class="p19"><br></p>
-<p class="p6">};</p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p20">// now make a wah</p>
-<p class="p6">(</p>
-<p class="p22"><span class="s5">~makeEffect.value(</span><span class="s19">\wah</span><span class="s5">, {</span>|in, env, rate = 0.7, ffreq = 1200, depth = 0.8, rq = 0.1|</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span></span>// in and env come from the wrapper. The rest are controls</p>
-<p class="p6"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><span class="s18">var</span> lfo;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>lfo = <span class="s18">LFNoise1</span>.kr(rate, depth * ffreq, ffreq);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">RLPF</span>.ar(in, lfo, rq, 10).distort * 0.15; },</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span>[0.1, 0.1, 0.1, 0.1],<span class="Apple-converted-space">  </span></span>// lags for rate ffreq, depth and rq</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span>2<span class="Apple-tab-span">	</span></span>// numChannels</p>
-<p class="p6">);</p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p20">// now make a simple reverb</p>
-<p class="p6">(</p>
-<p class="p6">~makeEffect.value(<span class="s19">\reverb</span>, {<span class="s18">|in, env|</span></p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span></span>// in and env come from the wrapper.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">var</span> input;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>input = in;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>16.do({ input = <span class="s18">AllpassC</span>.ar(input, 0.04, <span class="s18">Rand</span>(0.001,0.04), 3)});</p>
-<p class="p6"><span class="Apple-tab-span">	</span>input; },</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s18">nil</span><span class="s5">,<span class="Apple-converted-space">  </span></span>// no lags</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span>2<span class="Apple-tab-span">	</span></span>// numChannels</p>
-<p class="p6">);</p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p20">// something to process</p>
-<p class="p6">x = { {<span class="s18">Decay2</span>.ar(<span class="s18">Dust2</span>.ar(3), mul: <span class="s18">PinkNoise</span>.ar(0.2))} ! 2}.play;</p>
-<p class="p19"><br></p>
-<p class="p6">y = <span class="s18">Synth</span>.tail(s, <span class="s19">\wah</span>);</p>
-<p class="p6">z = <span class="s18">Synth</span>.tail(s, <span class="s19">\reverb</span>, [<span class="s19">\wet</span>, 0.5]);</p>
-<p class="p19"><br></p>
-<p class="p20">// we used an arg named gate, so Node-release can crossfade out the effects</p>
-<p class="p6">y.release;<span class="Apple-converted-space"> </span></p>
-<p class="p19"><br></p>
-<p class="p20">// setting gate to zero has the same result</p>
-<p class="p6">z.set(<span class="s19">\gate</span>, 0);</p>
-<p class="p19"><br></p>
-<p class="p6">x.free;</p>
-<p class="p19"><br></p>
-<p class="p19"><br></p>
-<p class="p1"><b>common argument names: <i>out</i> </b>and<b> <i>gate</i></b></p>
-<p class="p2"><br></p>
-<p class="p20">// arguments named 'out' and 'gate' are commonly used to specify an output bus and</p>
-<p class="p20">// EnvGen gate respectively. Although not required, using them can help with consistency</p>
-<p class="p20">// and interchangeability. 'gate' is particularly useful, as it allows for Node's release</p>
-<p class="p20">// method.</p>
-<p class="p6">(</p>
-<p class="p22">SynthDef<span class="s5">(</span><span class="s19">\synthDefTest</span><span class="s5">, {</span>|out, gate=1, freq=440|</p>
-<p class="p20"><span class="s5"><span class="Apple-tab-span">	</span></span>// doneAction: 2 frees the synth when EnvGen is done</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s18">Out</span>.ar(out, <span class="s18">SinOsc</span>.ar(freq) * <span class="s18">EnvGen</span>.kr(<span class="s18">Env</span>.asr(0.1, 0.3, 1.3), gate, doneAction:2));</p>
-<p class="p20"><span class="s5">}).store; </span>// use store for compatibility with pattern example below</p>
-<p class="p6">)</p>
-<p class="p19"><br></p>
-<p class="p20"><span class="s5">x = </span><span class="s18">Synth</span><span class="s5">(</span><span class="s19">\synthDefTest</span><span class="s5">, [</span><span class="s19">\out</span><span class="s5">, 0]); </span>// play out through hardware output bus 0 (see Out.help)</p>
-<p class="p20"><span class="s5">x.release; </span>// releases and frees the synth (if doneAction is > 2; see EnvGen)</p>
-<p class="p19"><br></p>
-<p class="p20">//equivalent:</p>
-<p class="p19"><br></p>
-<p class="p20"><span class="s5">x = </span><span class="s18">Synth</span><span class="s5">(</span><span class="s19">\synthDefTest</span><span class="s5">); </span>// out defaults to zero, if no default arg is given.</p>
-<p class="p6">x.set(<span class="s19">\gate</span>, 0);</p>
-<p class="p19"><br></p>
-<p class="p20">// if value is negative, it overrides the release time, to -1 - gate</p>
-<p class="p21"><span class="s5">x = </span><span class="s18">Synth</span><span class="s5">(</span>\synthDefTest<span class="s5">);</span></p>
-<p class="p20"><span class="s5">x.set(</span><span class="s19">\gate</span><span class="s5">, -5); </span>// 4 second release</p>
-<p class="p19"><br></p>
-<p class="p20">//equivalent:</p>
-<p class="p21"><span class="s5">x = </span><span class="s18">Synth</span><span class="s5">(</span>\synthDefTest<span class="s5">);</span></p>
-<p class="p6">x.release(4);</p>
-<p class="p19"><br></p>
-<p class="p20">// if the out arg is used in a standard way, it can always be changed without knowing the synth def</p>
-<p class="p21"><span class="s5">x = </span><span class="s18">Synth</span><span class="s5">(</span>\synthDefTest<span class="s5">, [</span>\out<span class="s5">, 0]);</span></p>
-<p class="p20"><span class="s5">x.set(</span><span class="s19">\out</span><span class="s5">, 1); </span>//play through channel 1</p>
-<p class="p6">x.release;</p>
-<p class="p19"><br></p>
-<p class="p20">// Another good example of this is with patterns, which can use gate to release notes</p>
-<p class="p6">(</p>
-<p class="p22">Pbind<span class="s5">(</span></p>
-<p class="p21"><span class="s5"><span class="Apple-tab-span">	</span></span>\instrument<span class="s5">, </span>\synthDefTest<span class="s5">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s19">\freq</span>, <span class="s18">Pseq</span>([500, 600, <span class="s18">Prand</span>([200, 456, 345],1)], <span class="s18">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s19">\legato</span>, <span class="s18">Pseq</span>([1.5, 0.2], <span class="s18">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s19">\dur</span>, 0.4,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s19">\out</span>, <span class="s18">Pseq</span>([0, 1], <span class="s18">inf</span>)</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/SynthDesc.html b/Help/ServerArchitecture/SynthDesc.html
deleted file mode 100644
index 60c9893..0000000
--- a/Help/ServerArchitecture/SynthDesc.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 46.0px; text-indent: -28.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001bb9}
-span.s6 {color: #2c7014}
-span.s7 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SynthDesc</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>description of a synth definition</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Contains a description of a SynthDef, including its name, control names and default values.</p>
-<p class="p1">Information is also stored on its outputs and inputs and whether it has a gate control.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">See also: <a href="SynthDef.html"><span class="s4">SynthDef</span></a>, <a href="Synth.html"><span class="s4">Synth</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*read(path, keepDefs, dict)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>adds all synthDescs in a path to a dict<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>SynthDescs are created by <b>SynthDescLib</b>, by reading a compiled synth def file.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">SynthDescLib</span><span class="s3">.global.read(</span>"synthdefs/default.scsyndef"<span class="s3">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SynthDescLib</span>.global.synthDescs.at(<span class="s6">\default</span>)</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">SynthDescLib</span><span class="s3">.global.at(</span><span class="s6">\default</span><span class="s3">) </span>// shortcut, same as line above</p>
-<p class="p4"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>name</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns the name of the SynthDef</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>controlNames</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>returns an array of instances of ControlName, each of which<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>have the following fields: name, index, rate, defaultValue</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SynthDescLib</span>.global.at(<span class="s6">\default</span>).controlNames.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span></span><b>hasGate</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is true if the Synthdef has a gate input</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>canFreeSynth</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is true if the Synth can free itself (via some means, usually a doneAction)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This can be used to decide if to remove a Synth directly via free-message.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SynthDescLib</span>.global.at(<span class="s6">\default</span>).canFreeSynth;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>msgFunc</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the function which is used to create an array of arguments for</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>playing a synth def in patterns</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SynthDescLib</span>.global.synthDescs.at(<span class="s6">\default</span>).msgFunc.postcs;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1">SynthDescs are needed by the event stream system, so when using <b>Pbind</b>, the instruments' default parameters are derived from the SynthDesc.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>aSynthDef.store</b> and <b>aSynthDef.add</b> also create a synthDesc in the global library. <b>.store</b> saves a synthdef file on disk (like .load); <b>.add</b> creates the synthDesc wholly in memory and sends the synthdef to registered servers.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">SynthDef</span>(<span class="s7">"test"</span>, { <span class="s5">arg</span> out, freq, xFade;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">XOut</span>.ar(out, xFade, <span class="s5">SinOsc</span>.ar(freq))<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).store</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">SynthDescLib</span><span class="s3">.global.browse; </span>// browse the properties of SynthDescs</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p8"><b>SynthDescs and SynthDef metadata</b></p>
-<p class="p2"><br></p>
-<p class="p1">Metadata associated with a SynthDef consists of an event (a syntactically shorter form of an identity dictionary) containing information about the SynthDef that is useful to the client, and which cannot be inferred from the binary .scsyndef stream. For example, by listing argument names and ControlSpecs under the 'specs' key in the event, the client can use the specs to build a GUI allowing control over all the SynthDef's inputs, with sensible range mappings. (The "window" button in the SynthDescLib browser does exactly this -- any ControlSpecs listed in the metadata will be used for the corresponding synth input's slider.)</p>
-<p class="p2"><br></p>
-<p class="p1">Currently only the 'specs' key is reserved. Other keys may be used as needed for specific applications. As the use of SynthDef metadata evolves, other keys may be standardized.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Creation and access:</b> Metadata are specified when creating a SynthDef. If the SynthDef is .store'd (or .added'd) into a SynthDescLib, the metadata become part of the SynthDesc as well. Thereafter, the metadata can be accessed through SynthDescLib:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">SynthDescLib</span>.global[<span class="s6">\synthDefName</span>].metadata</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Persistence and metadata plug-ins:</b> Storing a SynthDef into the library with .store persists the SynthDef on disk. Metadata may also be persisted at the same time by using the appropriate metadata plug-in class. The plug-in is responsible for writing a separate metadata file into the synthdefs directory, and reading the file back at the same time that a SynthDesc is created for a .scsyndef file using SynthDesc.read or SynthDescLib.global.read.</p>
-<p class="p2"><br></p>
-<p class="p1">The currently available plug-ins are:</p>
-<p class="p2"><br></p>
-<p class="p9"><b>AbstractMDPlugin:</b> A dummy plug-in, which writes no metadata. This is the default, so that users who are not interested in metadata will not find extra files in the synthdefs directory.</p>
-<p class="p9"><b>TextArchiveMDPlugin:</b> Writes the metadata as a SuperCollider text archive -- metadata.writeArchive(path).</p>
-<p class="p2"><br></p>
-<p class="p1">Other plug-ins may be written at a later date, to support sharing metadata with applications in other languages using formats like JSON (JavaScript Object Notation) or XML.</p>
-<p class="p2"><br></p>
-<p class="p1">You may specify a global default metadata plug-in as follows:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">SynthDesc</span>.mdPlugin = ... plug-in class name ...;</p>
-<p class="p2"><br></p>
-<p class="p1">Metadata are not written when using SynthDef().load(server). This is because SynthDesc exists to describe a SynthDef to the client, whereas SynthDef is really just an abstraction to create a UGen graph for the server.</p>
-<p class="p2"><br></p>
-<p class="p1">Automatic population: You may write a function to populate entries into the metadata automatically, based on the SynthDesc object. This function executes when reading a SynthDesc from disk, when using .add, and before writing a metadata file (in .store).</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">SynthDesc</span>.populateMetadataFunc = { <span class="s5">|synthdesc|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>... do work here ...</p>
-<p class="p6">};</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Synchronization:</b> Whenever a .scsyndef file is written, any existing metadata files will be deleted so that a new .scsyndef file will not exist on disk with out-of-date metadata.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Reading:</b> When reading a SynthDesc, metadata files will be checked and one will be read, regardless of format. (Even if the default SynthDesc.mdPlugin is different from the file format on disk, the disk file will be read using the appropriate plug-in anyway.) There should be only one metadata file at a time. However, in the case of conflicts, the default SynthDesc.mdPlugin will be preferred. The file extension identifies the format.</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Metadata Examples</b></p>
-<p class="p2"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s3">d = </span>SynthDef<span class="s3">(</span><span class="s6">\mdDemo</span><span class="s3">, { </span>|out, freq, cutoff, volume, gate = 1|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span><span class="Apple-tab-span">	</span>sig = <span class="s5">LPF</span>.ar(<span class="s5">Saw</span>.ar(freq, volume), cutoff),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.adsr, gate, doneAction: 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, (sig * env) ! 2)</p>
-<p class="p6">}).add;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s5">SynthDescLib</span>.global[<span class="s6">\mdDemo</span>].makeWindow;</p>
-<p class="p4"><br></p>
-<p class="p7">// Note in the resulting window that Freq has a slider, but Cutoff and Volume do not.</p>
-<p class="p7">// This is because there are no global specs for the argument names 'cutoff' and 'volume'.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// Same SynthDef, but adding metadata</p>
-<p class="p7">// \freq and \amp exist in the global ControlSpec collection -- Spec.specs</p>
-<p class="p7">// They are converted to real ControlSpecs using .asSpec</p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s3">d = </span>SynthDef<span class="s3">(</span><span class="s6">\mdDemo</span><span class="s3">, { </span>|out, freq, cutoff, volume, gate = 1|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span><span class="Apple-tab-span">	</span>sig = <span class="s5">LPF</span>.ar(<span class="s5">Saw</span>.ar(freq, volume), cutoff),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.adsr, gate, doneAction: 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, (sig * env) ! 2)</p>
-<p class="p6">}, metadata: (specs: (cutoff: <span class="s6">\freq</span>, volume: <span class="s6">\amp</span>))).add;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s5">SynthDescLib</span>.global[<span class="s6">\mdDemo</span>].makeWindow;</p>
-<p class="p4"><br></p>
-<p class="p7">// Now cutoff has a slider for frequency and volume has amplitude scaling</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// Store the SynthDef along with metadata</p>
-<p class="p6">d.store(mdPlugin: <span class="s5">TextArchiveMDPlugin</span>);</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s7">"ls %mdDemo.*"</span>.format(<span class="s5">SynthDef</span>.synthDefDir.escapeChar($ )).unixCmd;</p>
-<p class="p4"><br></p>
-<p class="p7">// In addition to .scsyndef, there's also .txarcmeta - "text archive metadata"</p>
-<p class="p4"><br></p>
-<p class="p7">// Load a fresh SynthDesc from disk for it</p>
-<p class="p7">// The SynthDesc.read interface is a bit weird - e will be a dictionary holding the SynthDesc</p>
-<p class="p6">e = <span class="s5">SynthDesc</span>.read(<span class="s5">SynthDef</span>.synthDefDir ++ <span class="s7">"mdDemo.scsyndef"</span>);</p>
-<p class="p4"><br></p>
-<p class="p7">// Metadata have been successfully read from disk!</p>
-<p class="p7">// You could even do the above after recompiling and the MD would be there</p>
-<p class="p6">e[<span class="s6">\mdDemo</span>].metadata</p>
-<p class="p4"><br></p>
-<p class="p6">e[<span class="s6">\mdDemo</span>].makeWindow;</p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/SynthDescLib.html b/Help/ServerArchitecture/SynthDescLib.html
deleted file mode 100644
index 6e8ce03..0000000
--- a/Help/ServerArchitecture/SynthDescLib.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {color: #000000}
-</style>
-</head>
-<body>
-<p class="p1"><b>SynthDescLib</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>see </b><a href="SynthDesc.html"><b>SynthDesc</b></a></span></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/Volume.html b/Help/ServerArchitecture/Volume.html
deleted file mode 100644
index 87f9a3f..0000000
--- a/Help/ServerArchitecture/Volume.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0026e6; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #8a301d; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #034ceb}
-span.s3 {color: #0000ff}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Volume<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>model for the global volume of the synthesis server</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: <a href="../Core/Object.html"><span class="s2">Object</span></a></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Internally used by <a href="Server.html"><span class="s3">Server</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new(server, startBus, numChans, min, max, persist)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Create and return a new instance of Volume for a given <b>server</b>,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ranging from <b>startBus</b> over <b>numChans</b> (usually the server's number of output bus channels).</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>min</b>: minimum volume in decibel (default: -90)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>max</b>: minimum volume in decibel (default: -90)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>persist</b>: whether to persist a reset (default: false)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>play(mute)</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>run the synth that controls the volume. If mute is true, mute the output. (default: false)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>free</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>free the synth that controls the volume.</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>mute</b><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mute output</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>unmute</b><span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>unmute output</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>volume_(aVolume)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the volume (in db)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>lag_ (aLagTime)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the lag time that dampens volume changes</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>setVolumeRange(argMin, argMax)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the volume range</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>gui(window, bounds)</b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a volume gui.</p>
-<p class="p8"><br></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>// examples</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>v = s.volume;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>v.min;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>v.max;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>v.volume = rrand(-50, 5);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>v.setVolumeRange(-90, 8);</p>
-<p class="p13"><span class="Apple-tab-span">	</span>v.mute;</p>
-<p class="p13"><span class="Apple-tab-span">	</span>v.unmute;</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="s4"><span class="Apple-tab-span">	</span></span>// separate window</p>
-<p class="p13"><span class="Apple-tab-span">	</span>v.gui;</p>
-<p class="p14"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/attachments/ClientVsServer/s8kfFC-clientServerEn.png b/Help/ServerArchitecture/attachments/ClientVsServer/s8kfFC-clientServerEn.png
deleted file mode 100644
index 67691bf..0000000
Binary files a/Help/ServerArchitecture/attachments/ClientVsServer/s8kfFC-clientServerEn.png and /dev/null differ
diff --git a/Help/ServerArchitecture/attachments/ClientVsServer/scEn.png b/Help/ServerArchitecture/attachments/ClientVsServer/scEn.png
deleted file mode 100644
index ff14fbf..0000000
Binary files a/Help/ServerArchitecture/attachments/ClientVsServer/scEn.png and /dev/null differ
diff --git a/Help/ServerArchitecture/attachments/ClientVsServer/structureEn.png b/Help/ServerArchitecture/attachments/ClientVsServer/structureEn.png
deleted file mode 100644
index c1ea181..0000000
Binary files a/Help/ServerArchitecture/attachments/ClientVsServer/structureEn.png and /dev/null differ
diff --git a/Help/ServerArchitecture/attachments/Order-of-execution/server.png b/Help/ServerArchitecture/attachments/Order-of-execution/server.png
deleted file mode 100644
index 598e30c..0000000
Binary files a/Help/ServerArchitecture/attachments/Order-of-execution/server.png and /dev/null differ
diff --git a/Help/ServerArchitecture/bundledCommands.html b/Help/ServerArchitecture/bundledCommands.html
deleted file mode 100644
index 4bc65cd..0000000
--- a/Help/ServerArchitecture/bundledCommands.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica; min-height: 23.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #812e25}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9f2423}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #812e25}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0030ae}
-span.s3 {color: #606060}
-span.s4 {color: #52691e}
-span.s5 {color: #812e25}
-span.s6 {color: #0020bb}
-span.s7 {color: #3c6d00}
-span.s8 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Bundled Server Messages</b></p>
-<p class="p2"><br></p>
-<p class="p3">When using the <b>Synth</b>/<b>Node</b>/<b>Group</b> sclang objects there is often a need to construct bundles to send messages together. For example when you want to start a synth that should be mapped instantly to certain buses, or need to ensure that two synths start with precise synchronisation.</p>
-<p class="p4"><br></p>
-<p class="p3">The simplest way to deal with this is through Server's automated bundling support. This allows you to open a bundle into which all osc messages will be collected until it is sent. See <b>Server</b> for details of makeBundle's arguments.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>// send a synth def to server</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s3">"tpulse"</span>, { <span class="s2">arg</span> out=0,freq=700,sawFreq=440.0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SyncSaw</span>.ar(freq,<span class="Apple-converted-space">  </span>sawFreq,0.1) )</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>// all OSC commands generated in the function contained below will be added to a bundle</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>// and executed simultaneously after 2 seconds.</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.makeBundle(2.0, {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Synth</span>.new(<span class="s3">"tpulse"</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s2">Bus</span>.control.set(440);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.map(<span class="s4">\freq</span>, a);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>// don't send</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>b = s.makeBundle(<span class="s2">false</span>, {<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s2">PinkNoise</span>.ar(0.1) * <span class="s2">In</span>.kr(0, 1); }.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>// now pass b as a pre-existing bundle, and start both synths synchronously</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>s.makeBundle(</span><span class="s2">nil</span><span class="s1">, { </span>// nil executes ASAP</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = { <span class="s2">SinOsc</span>.kr(0.2).abs }.play(x, 0, 0, <span class="s4">\addBefore</span>); <span class="s5">// sine envelope</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}, b);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.free; y.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">To send a bundle with the default latency of the server, use the message <b>bind</b>:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.bind {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">SynthDef</span>(<span class="s3">"tpulse2"</span>, { <span class="s6">arg</span> out=0, freq=700, sawFreq=440.0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out, <span class="s6">Pan2</span>.ar(<span class="s6">SyncSaw</span>.ar(freq,<span class="Apple-converted-space">  </span>sawFreq, 0.1), <span class="s6">SinOsc</span>.kr(8)) )</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sync; </span>// wait until synthdef is loaded</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s6">Synth</span>.new(<span class="s3">"tpulse2"</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s6">Bus</span>.control.set(440);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.map(<span class="s7">\freq</span>, a);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.free; x.free;</p>
-<p class="p7"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">In addition to this there are a number of methods which return OSC messages which can be added to a bundle. These are detailed in the helpfiles for <b>Node</b>, <b>Synth</b>, and <b>Group</b>.</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s8"><span class="Apple-tab-span">	</span></span>s.boot;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b = <span class="s2">List</span>.new;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>c = <span class="s2">Bus</span>.control(s, 1).set(660);</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s1">.basicNew(</span><span class="s3">"default"</span><span class="s1">, s); </span>// Create without sending</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b.add(x.newMsg);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>b.add(x.mapMsg(<span class="s4">\freq</span>, c));</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span>b.postln; </span>// here's what it looks like</p>
-<p class="p9"><span class="Apple-tab-span">	</span>s.listSendBundle(1.0, b); <span class="s5">// Execute after 1 second</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>c.set(440);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/cmds.html b/Help/ServerArchitecture/cmds.html
deleted file mode 100644
index b4b2c9e..0000000
--- a/Help/ServerArchitecture/cmds.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0021e7}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Short Overview of Server Commands</b></p>
-<p class="p2"><span class="s1">see also [<a href="Server-Command-Reference.html"><span class="s2">Server-Command-Reference</span></a>]</span></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Server Commands</b></p>
-<p class="p3"><br></p>
-<p class="p5">/quit</p>
-<p class="p5">/notify<span class="Apple-converted-space">  </span>flag</p>
-<p class="p5">/status</p>
-<p class="p5">/cmd_error flag</p>
-<p class="p5">/cmd name args ...</p>
-<p class="p5">/dumpOSC [0: off 1: on 2: hex 3: both]</p>
-<p class="p3"><br></p>
-<p class="p5">/d_recv bytes [complBytes]</p>
-<p class="p5">/d_load path [complBytes]</p>
-<p class="p5">/d_loadDir path [complBytes]</p>
-<p class="p5">/d_free defName ...<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Node:</b></p>
-<p class="p6"><br></p>
-<p class="p5">/n_free nodeID ...</p>
-<p class="p5">/n_run | nodeID flag | ...<span class="Apple-converted-space"> </span></p>
-<p class="p5">/n_set nodeID<span class="Apple-converted-space">  </span>| control value | ...</p>
-<p class="p5">/n_setn nodeID | control numCtl values.. | ...</p>
-<p class="p5">/n_fill nodeID | control numCtl value | ...</p>
-<p class="p5">/n_map<span class="Apple-converted-space">  </span>nodeID | control busIndex | ...</p>
-<p class="p5">/n_mapn nodeID | control busIndex numCtl | ...</p>
-<p class="p5">/n_mapa<span class="Apple-converted-space">  </span>nodeID | control busIndex | ...</p>
-<p class="p5">/n_mapan nodeID | control busIndex numCtl | ...</p>
-<p class="p3"><br></p>
-<p class="p5">/n_before | movedNodeID targetNodeID | ...</p>
-<p class="p5">/n_after | movedNodeID targetNodeID | ...</p>
-<p class="p5">/n_query nodeID ...</p>
-<p class="p5">/n_trace nodeID ...</p>
-<p class="p3"><br></p>
-<p class="p5">addAction:</p>
-<p class="p5">0 add to head</p>
-<p class="p5">1 add to tail</p>
-<p class="p5">2 add before</p>
-<p class="p5">3 add after</p>
-<p class="p5">4 replace</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">alternative syntax for "nodeID"</p>
-<p class="p5">positionArg | nodeID</p>
-<p class="p5">"h" - head of the current group</p>
-<p class="p5">"t" - tail of the current group</p>
-<p class="p5">"u" - up. the parent of the current node.</p>
-<p class="p5">"p" - the previous node.</p>
-<p class="p5">"n" - the next node.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Synth:</b></p>
-<p class="p6"><br></p>
-<p class="p5">/s_new defName nodeID addAction targetNodeID | control value | ...</p>
-<p class="p7"><span class="s1">/s_newargs </span>// to document.</p>
-<p class="p5">/s_get nodeID control ...</p>
-<p class="p5">/s_getn nodeID | control numControls | ...</p>
-<p class="p5">/s_noid nodeID ...</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Group:</b></p>
-<p class="p6"><br></p>
-<p class="p5">/g_new nodeID addAction targetNodeID</p>
-<p class="p5">/g_head | groupID nodeID | ...</p>
-<p class="p5">/g_tail | groupID nodeID | ...</p>
-<p class="p5">/g_freeAll groupID ...</p>
-<p class="p5">/g_deepFree groupID ...</p>
-<p class="p5">/g_dumpTree</p>
-<p class="p5">/g_queryTree</p>
-<p class="p3"><br></p>
-<p class="p4"><b>UGen:</b></p>
-<p class="p6"><br></p>
-<p class="p5">/u_cmd nodeID ugenIndex string arg ...</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Buffer:</b></p>
-<p class="p6"><br></p>
-<p class="p5">/b_alloc bufnum numFrames numChannels [complBytes]</p>
-<p class="p5">/b_allocRead bufnum path startFrame numFrames [complBytes]</p>
-<p class="p5">/b_allocReadChannel<span class="Apple-converted-space">  </span>bufnum path startFrame numFrames channels [complBytes]</p>
-<p class="p5">/b_read bufnum path startFrameFile numFrames startFrameBuf numChannels leaveOpen [complBytes]</p>
-<p class="p5">/b_write bufnum path headerFormat sampleFormat numFrames startFrameBuf leaveOpen [complBytes]<span class="Apple-converted-space"> </span></p>
-<p class="p5">/b_readChannel bufnum path fileStartFrame numFrames bufStartFrame leaveOpen [complBytes]</p>
-<p class="p5">/b_free bufnum<span class="Apple-converted-space">  </span>[complBytes]</p>
-<p class="p5">/b_zero bufnum<span class="Apple-converted-space">  </span>[complBytes]</p>
-<p class="p5">/b_set bufnum | index value | ...</p>
-<p class="p5">/b_setn bufnum | startIndex numSamples values .. | ...</p>
-<p class="p5">/b_fill bufnum | startIndex numSamples value | ...</p>
-<p class="p5">/b_gen<span class="Apple-converted-space">  </span>bufnum command args ...</p>
-<p class="p5">/b_close<span class="Apple-converted-space">  </span>bufnum</p>
-<p class="p5">/b_query<span class="Apple-converted-space">  </span>bufnum ...<span class="Apple-converted-space">  </span>(returns /b_info message: /b_info bufnum numFrames numChannels sampleRate)</p>
-<p class="p5">/b_get bufnum sampleIndex ... (returns corresponding b_set message)</p>
-<p class="p5">/b_getn bufnum startIndex numFrames (returns corresponding b_setn message)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Control Bus:</b></p>
-<p class="p6"><br></p>
-<p class="p5">/c_set | index value | ...</p>
-<p class="p5">/c_setn | startIndex num values .. | ...</p>
-<p class="p5">/c_fill | startIndex num value | ...<span class="Apple-converted-space"> </span></p>
-<p class="p5">/c_get<span class="Apple-converted-space">  </span>index ... (returns corresponding c_set message)</p>
-<p class="p5">/c_getn | startIndex num | ... (returns corresponding c_setn message)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Replies:</b></p>
-<p class="p6"><br></p>
-<p class="p5">/done commandName</p>
-<p class="p5">/fail commandName errorMsg</p>
-<p class="p5">/late timeStamp-hiBits timeStamp-loBits execTime-hiBits execTime-loBits</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Notifications:</b></p>
-<p class="p3"><br></p>
-<p class="p5">all notifications have the same format:</p>
-<p class="p5">cmd nodeID parentNodeID prevNodeID nextNodeID synthFlag (-1:group 0 synth) headNodeID tailNodeID</p>
-<p class="p5">/n_go /n_end /n_on /n_off /n_move /n_info</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Trigger Notifications:</b></p>
-<p class="p6"><br></p>
-<p class="p5">/tr nodeID triggerID value</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Buffer Fill Commands:</b></p>
-<p class="p6"><br></p>
-<p class="p5">flag:<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>1: normalize</p>
-<p class="p5"><span class="Apple-tab-span">	</span>2: wavetable</p>
-<p class="p5"><span class="Apple-tab-span">	</span>4: clear and then write</p>
-<p class="p3"><br></p>
-<p class="p5">sine1 flag partialAmp ...</p>
-<p class="p5">sine2 flag | partialFreq partialAmp |</p>
-<p class="p5">sine3 flag | partialFreq partialAmp partialPhase |</p>
-<p class="p5">cheby flag | amp |</p>
-<p class="p6"><br></p>
-<p class="p5">copy posDest bufNumSrc posSrc numFrames</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Glossary:</b></p>
-<p class="p6"><br></p>
-<p class="p5">flag:<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0 (false)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>1 (true)</p>
-<p class="p5">complBytes:<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>an osc message to evaluate after completion (array): this also means command is asynchronous</p>
-<p class="p5">control:<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>index or name</p>
-<p class="p3"><br></p>
-<p class="p5">-1 is the equivalent of nil</p>
-<p class="p5">'nothing' is replaced by 0</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>CommandNumbers:</b></p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_none = 0,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_notify = 1,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_status = 2,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_quit = 3,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_cmd = 4,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_d_recv = 5,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_d_load = 6,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_d_loadDir = 7,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_d_freeAll = 8,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_s_new = 9,</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_trace = 10,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_free = 11,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_run = 12,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_cmd = 13,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_map = 14,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_set = 15,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_setn = 16,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_fill = 17,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_before = 18,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_after = 19,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_u_cmd = 20,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_g_new = 21,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_g_head = 22,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_g_tail = 23,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_g_freeAll = 24,</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_c_set = 25,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_c_setn = 26,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_c_fill = 27,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_alloc = 28,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_allocRead = 29,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_read = 30,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_write = 31,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_free = 32,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_close = 33,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_zero = 34,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_set = 35,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_setn = 36,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_fill = 37,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_gen = 38,</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_dumpOSC = 39,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_c_get = 40,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_c_getn = 41,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_get = 42,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_getn = 43,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_s_get = 44,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_s_getn = 45,</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_query = 46,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_query = 47,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_mapn = 48,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_s_noid = 49,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_g_deepFree = 50,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_clearSched = 51,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_sync = 52,</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_d_free = 53,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_allocReadChannel = 54,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_b_readChannel = 55,</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_g_dumpTree = 56,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_g_queryTree = 57,</p>
-<p class="p10"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-converted-space">     </span>cmd_error = 58,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-converted-space">     </span>cmd_s_newargs = 59,</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_mapa = 60,</p>
-<p class="p9"><span class="Apple-tab-span">	</span>cmd_n_mapan = 61,</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s1"><span class="Apple-tab-span">	</span></span>NUMBER_OF_COMMANDS<span class="s1"> = 62</span></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/ServerArchitecture/default_group.html b/Help/ServerArchitecture/default_group.html
deleted file mode 100644
index 143ffcc..0000000
--- a/Help/ServerArchitecture/default_group.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-span.s1 {font: 13.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.s4 {color: #326f17}
-span.s5 {text-decoration: underline}
-span.s6 {color: #606060}
-span.s7 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>The default Group<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>id:1</b></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>root node (id:0) [</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default group (id:1)</b></p>
-<p class="p3"><b>]</b></p>
-<p class="p2"><br></p>
-<p class="p4">When a <b>Server</b> is booted there is a top level group with an ID of 0 that defines the root of the node tree. (This is represented by a subclass of Group: <b>RootNode</b>.) If the Server was booted from within SCLang (as opposed to from the command line) a default group with an ID of 1 will be automatically created. This is the default target for all Nodes when using object style and is what you will get if you supply a Server as a target. If you don't specify a target or pass in nil, you will get the default group of the default Server. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Server</span>.default.boot;</p>
-<p class="p6"><span class="s3">a = </span><span class="s2">Synth</span><span class="s3">.new(</span><span class="s4">\default</span><span class="s3">); </span>// creates a synth in the default group of the default Server</p>
-<p class="p6"><span class="s3">a.group; </span>// note the Group ID</p>
-<p class="p2"><br></p>
-<p class="p4">The default group serves an important purpose: It provides a predictable basic Node tree so that methods such as Server-scope, Server-record, etc. can function without running into order of execution problems. In the example below the scoping node will come after the default group.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Server</span>.internal.boot;</p>
-<p class="p7"><br></p>
-<p class="p5">{ <span class="s2">SinOsc</span>.ar(mul: 0.2) }.scope(1);</p>
-<p class="p8"><br></p>
-<p class="p6">// watch the post window;</p>
-<p class="p5"><span class="s2">Server</span>.internal.queryAllNodes;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p6">// our SinOsc synth is within the default group (ID 1)</p>
-<p class="p6">// the scope node comes after the default group, so no problems</p>
-<p class="p9"><br></p>
-<p class="p5"><span class="s2">Server</span>.internal.quit;</p>
-<p class="p2"><br></p>
-<p class="p4">Note that the default group is persistent: It is created in Server's initTree method (executed along with any code stored in its tree instance variable; see <b>Server </b>for more detail) and is recreated upon reboot, after pressing Cmd-., and after all nodes are freed. When using osc messages this means <span class="s5">that a target node of id 1 can always be used</span>:</p>
-<p class="p7"><br></p>
-<p class="p5">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"snd"</span>, 1832,0,1); <span class="s7">// add to head of group 1</span></p>
-<p class="p2"><br></p>
-<p class="p4">The default group can be specifically freed, but there is generally no reason that one would want to do so.</p>
-<p class="p2"><br></p>
-<p class="p4">In general one should add nodes to the default group rather than the RootNode unless one has a specific reason to do so (i.e. adding some new functionality such as recording and scoping which is dependent upon a predictable basic node order). When using object style the default group is the default target for all new nodes, so nodes will normally not be added to the RootNode unless that is explicitly specified. It is of course possible to do so, but it should only be done with a proper understanding of the issues involved.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">For instance, if one were to place an 'effects' synth after the default group and call Server-record or Server-scope, the resulting recording or scope synths may not be correctly ordered:</p>
-<p class="p2"><br></p>
-<p class="p4"><b>default group [</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>source synth1</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>source synth2</b></p>
-<p class="p4"><b>]</b></p>
-<p class="p4"><b>recording synth</b></p>
-<p class="p4"><b>effects synth</b></p>
-<p class="p2"><br></p>
-<p class="p4">In the above example the recording synth might not capture the output of the effects synth since it comes later in the node order.</p>
-<p class="p2"><br></p>
-<p class="p4">A better method in this case is to create a group within the default group and place the effects synth after that.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>default group [</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>source group [</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source synth1</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source synth2</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>]</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>effects synth</b></p>
-<p class="p4"><b>]</b></p>
-<p class="p4"><b>recording synth</b></p>
-<p class="p2"><br></p>
-<p class="p4">See also: <b>RootNode, NodeMessaging </b>and <b>Order-of-execution</b></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_01_Introduction.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_01_Introduction.html
deleted file mode 100644
index 4d553f2..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_01_Introduction.html	
+++ /dev/null
@@ -1,195 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {text-decoration: underline ; color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {text-decoration: underline}
-span.s4 {color: #000000}
-span.s5 {color: #0000bf}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>A Practical Guide to Patterns</b></p>
-<p class="p2"><b>H. James Harkins</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Introduction</b></p>
-<p class="p4"><br></p>
-<p class="p5">Patterns are one of the most powerful elements of the SuperCollider language, but in some ways they can be difficult to approach using only the class-oriented help files. These documents seek to bridge the gap, explaining the conceptual background behind patterns, describing the usage of specific Pattern classes, and proceeding into examples of practical musical tasks written as patterns.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Contents</b></p>
-<p class="p4"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_01_Introduction.html"><span class="s1">PG_01_Introduction</span></a>: Fundamental concepts of patterns and streams</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_02_Basic_Vocabulary.html"><span class="s1">PG_02_Basic_Vocabulary</span></a>: Common patterns to generate streams of single values</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_03_What_Is_Pbind.html"><span class="s1">PG_03_What_Is_Pbind</span></a>: Pattern-based musical sequencing with Pbind and cousins</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_04_Words_to_Phrases.html"><span class="s1">PG_04_Words_to_Phrases</span></a>: Nesting patterns, arranging music in terms of phrases</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_05_Math_on_Patterns.html"><span class="s1">PG_05_Math_on_Patterns</span></a>: Performing math and collection operations on patterns</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_060_Filter_Patterns.html"><span class="s1">PG_06_Filter_Patterns</span></a>: Overview of patterns that modify the behavior of other patterns</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_06a_Repetition_Contraint_Patterns.html"><span class="s1">PG_06a_Repetition_Contraint_Patterns</span></a>: Patterns that repeat values, or cut other patterns off early</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_06b_Time_Based_Patterns.html"><span class="s1">PG_06b_Time_Based_Patterns</span></a>: Patterns using time as the basis for their evaluation</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_06c_Composition_of_Patterns.html"><span class="s1">PG_06c_Composition_of_Patterns</span></a>: Making multiple event patterns act as one</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_06d_Parallel_Patterns.html"><span class="s1">PG_06d_Parallel_Patterns</span></a>: Running multiple event patterns simultaneously</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_06e_Language_Control.html"><span class="s1">PG_06e_Language_Control</span></a>: Patterns that mimic some language-side control structures</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_06f_Server_Control.html"><span class="s1">PG_06f_Server_Control</span></a>: Patterns that manage server-side resources</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_06g_Data_Sharing.html"><span class="s1">PG_06g_Data_Sharing</span></a>: Writing patterns to use information from other patterns</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_07_Value_Conversions.html"><span class="s1">PG_07_Value_Conversions</span></a>: Describes the default event's conversions for pitch, rhythm and amplitude</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_08_Event_Types_and_Parameters.html"><span class="s2">PG_08_Event_Types_and_Parameters</span></a>: Describes the event types defined in the default event, and the parameters they expect.</li>
-</ul>
-<p class="p4"><br></p>
-<p class="p5">The <b>pattern cookbook</b> is a set of examples with explanations.</p>
-<p class="p4"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf"> <a href="PG_Cookbook01_Basic_Sequencing.html"><span class="s3">PG_Cookbook01_Basic_Sequencing</span></a></li>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Playing a predefined note sequence</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">“Multichannel” expansion</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Using custom SynthDefs (including unpitched SynthDefs)</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf"> <a href="PG_Cookbook02_Manipulating_Patterns.html"><span class="s3">PG_Cookbook02_Manipulating_Patterns</span></a></li>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Merging (interleaving) independent streams</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Reading an array forward or backward arbitrarily</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Changing Pbind value patterns on the fly</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf"> <a href="PG_Cookbook03_External_Control.html"><span class="s3">PG_Cookbook03_External_Control</span></a></li>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Control of parameters by MIDI or HID</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Triggering patterns by external control</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_Cookbook04_Sending_MIDI.html"><span class="s1">PG_Cookbook04_Sending_MIDI</span></a>: Sending notes under pattern control to MIDI devices.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf"> <a href="PG_Cookbook05_Using_Samples.html"><span class="s3">PG_Cookbook05_Using_Samples</span></a></li>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Playing a pattern in time with a sampled loop</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Using audio samples to play pitched material</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf"> <a href="PG_Cookbook06_Phrase_Network.html"><span class="s3">PG_Cookbook06_Phrase_Network</span></a></li>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Building a more complicated melody using shorter phrase patterns</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Also illustrates PmonoArtic for portamento with articulation</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf"> <a href="PG_Cookbook07_Rhythmic_Variations.html"><span class="s3">PG_Cookbook07_Rhythmic_Variations</span></a><span class="s4">: An ever-changing drumbeat</span></li>
-</ul>
-<p class="p4"><br></p>
-<p class="p5"><b>Reference material</b></p>
-<p class="p4"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"> <a href="PG_Ref01_Pattern_Internals.html"><span class="s1">PG_Ref01_Pattern_Internals</span></a>: Details of pattern implementation, with guidance on writing new pattern classes</li>
-</ul>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Why patterns?</b></p>
-<p class="p4"><br></p>
-<p class="p5">Patterns describe calculations without explicitly stating every step. They are a higher-level representation of a computational task. While patterns are not ideally suited for every type of calculation, when they are appropriate they free the user from worrying about every detail of the process. Using patterns, one writes <i>what</i> is supposed to happen, rather than <i>how</i> to accomplish it.</p>
-<p class="p4"><br></p>
-<p class="p5">In SuperCollider, patterns are best for tasks that need to produce sequences, or streams, of information. Often these are numbers, but they don't have to be -- patterns can generate any kind of object.</p>
-<p class="p4"><br></p>
-<p class="p5">For a simple example, let's count upward starting from 0. We don't know how high we will need to count; we just know that every time we ask for values, we should get a continually increasing series.</p>
-<p class="p4"><br></p>
-<p class="p5">Writing everything out, it looks like this. <a href="../../Core/Kernel/Routine.html"><span class="s5">Routine</span></a> is used because this is a control structure that can interrupt what it's doing and remember where it was, so that it can pick up again at exactly that point. You can get some numbers out of it, and call it again later and it will keep counting from the last number returned. (This is an example of a <a href="../Stream.html"><span class="s5">Stream</span></a>. You can find more about Streams in <a href="../Streams-Patterns-Events1.html"><span class="s5">Streams-Patterns-Events1</span></a>.)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">a = </span>Routine<span class="s4"> {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">var</span><span class="Apple-tab-span">	</span>i = 0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = i + 1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">};</p>
-<p class="p9"><br></p>
-<p class="p8">a.nextN(10);</p>
-<p class="p4"><br></p>
-<p class="p5">SuperCollider's built-in control structures allow some simplification.</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s4">a = </span>Routine<span class="s4"> {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(0..).do { <span class="s5">|i|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p8">};</p>
-<p class="p9"><br></p>
-<p class="p8">a.nextN(10);</p>
-<p class="p4"><br></p>
-<p class="p5">But wouldn't it be nice just to say, "Give me an infinite series of numbers starting with 0, increasing by 1"? With <a href="../Patterns/Pseries.html"><span class="s5">Pseries</span></a>, you can. (Here, keyword addressing of the arguments is used for clarity, but 'start', 'step' and 'length' can be omitted.)</p>
-<p class="p4"><br></p>
-<p class="p8">a = <span class="s5">Pseries</span>(start: 0, step: 1, length: <span class="s5">inf</span>).asStream;</p>
-<p class="p9"><br></p>
-<p class="p8">a.nextN(10);</p>
-<p class="p4"><br></p>
-<p class="p5">What are the advantages of the pattern representation?</p>
-<p class="p4"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">It's shorter.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">It's tested and it works. You don't have to debug how Pseries works (whereas, if you write a Routine, you might make a mistake and then have to find it.)</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">With the Routine -- especially if it's complicated -- you will have to decipher it when you come back to the code later. The Pattern states the purpose right there in the code.</li>
-</ul>
-<p class="p4"><br></p>
-<p class="p5">What are some disadvantages?</p>
-<p class="p4"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Patterns are a new vocabulary to learn. Until you know a critical mass of them, it can be hard to trust them. That's the purpose of this guide!</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">If there isn't a pattern that does quite what you want, then it might take some ingenuity to combine patterns into new designs. (Custom behaviors can always be written using Proutine.)</li>
-</ul>
-<p class="p4"><br></p>
-<p class="p5">Using patterns for sequencing might seem to be an advanced usage, but for many uses they are easier than the equivalent code written out step by step. They can serve as a bridge for new and advanced users alike, to represent a musical conception more directly with less connective tissue explicitly stated.</p>
-<p class="p4"><br></p>
-<p class="p5">The first step in learning a new language is vocabulary, so the next chapter will concentrate on foundational patterns to generate data streams of nearly every sort.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><b>Patterns versus Streams</b></p>
-<p class="p4"><br></p>
-<p class="p5">Some context that is important to keep in mind throughout this discussion is the difference between patterns and streams. In the most general terms:</p>
-<p class="p4"><br></p>
-<p class="p5"><i>Patterns define behavior; streams execute it.</i></p>
-<p class="p4"><br></p>
-<p class="p5">A pattern is like a blueprint for a building, showing how all the parts fit together. The building doesn't exist until the contractors go and do what the plans specify. When a stream is made from a pattern, it follows the plans laid out in the pattern's blueprint. Rendering the plans into a real-world result does not change the blueprint in any way, but to get the result, the stream has to go through different states.</p>
-<p class="p4"><br></p>
-<p class="p5">A pattern is supposed to describe behavior, and in general, evaluating the pattern (by way of a stream) should not change anything in the Pattern object itself. In computer science terms, patterns are <i>stateless</i>; their definition does not change over time. The stream is what keeps track of where we are in the pattern's evaluation.</p>
-<p class="p4"><br></p>
-<p class="p5">This explains an easy "gotcha" with patterns -- forgetting to turn the pattern into a stream doesn't get the expected result. Since a pattern doesn't have any concept of a current state, calling 'next' on it is meaningless, so 'next' does what it does for most objects: return the receiver object itself. The method 'asStream' creates the stream conforming to the pattern's specification, and calling 'next' on the stream advances to its next state and returns the new value.</p>
-<p class="p4"><br></p>
-<p class="p8">p = <span class="s5">Pseries</span>(0, 1, 10);</p>
-<p class="p10"><span class="s4">p.next;<span class="Apple-tab-span">	</span></span>// always returns the Pseries, not actual numbers</p>
-<p class="p9"><br></p>
-<p class="p8">q = p.asStream;</p>
-<p class="p10"><span class="s4">q.next;<span class="Apple-tab-span">	</span></span>// calling this repeatedly gets the desired increasing integers</p>
-<p class="p4"><br></p>
-<p class="p5">There is a concrete benefit to this strict division of labor. Since the stream does not modify the original pattern, any number of streams can be made from the same blueprint. All of those streams maintain their own independent states, and they can operate concurrently without interfering with each other.</p>
-<p class="p4"><br></p>
-<p class="p8">r = p.asStream;</p>
-<p class="p10"><span class="s4">r.next;<span class="Apple-tab-span">	</span></span>// starts from zero, even though q already gave out some numbers</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s4">q.next;<span class="Apple-tab-span">	</span></span>// resumes where q left off, with no effect from getting values from r</p>
-<p class="p9"><br></p>
-<p class="p8">[q.next, r.next]<span class="Apple-tab-span">	</span><span class="s6">// and so on...</span></p>
-<p class="p4"><br></p>
-<p class="p5">Bear these points in mind as we move to the next subject: getting basic types of data (deterministic and random) out of patterns.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s4">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_02_Basic_Vocabulary.html"><span class="s3">PG_02_Basic_Vocabulary</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><b>Documentation licensing</b></p>
-<p class="p4"><br></p>
-<p class="p5">The initial version of these documents was written December-February 2009 by H. James Harkins. As part of the SuperCollider package, they are released under the Creative Commons CC-BY-SA license. As SuperCollider is an open source project, it is expected (and encouraged) that other users will contribute to the series. Dr. Harkins, however, wishes to retain exclusive rights to revise and republish the original body of work independently of the open-source copy. This excludes material contributed into svn by others. The work may be redistributed at no charge <i>with proper attribution</i>:</p>
-<p class="p4"><br></p>
-<p class="p5">Harkins, Henry James. "A Practical Guide to Patterns." <i>SuperCollider 3.3 Documentation</i>, 2009.</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_02_Basic_Vocabulary.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_02_Basic_Vocabulary.html
deleted file mode 100644
index f23952a..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_02_Basic_Vocabulary.html	
+++ /dev/null
@@ -1,333 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #bf0000}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline ; color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.s7 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Basic Vocabulary: Generating values</b></p>
-<p class="p2"><br></p>
-<p class="p3">Before getting to the really cool things patterns can do, we need to build up a basic vocabulary. We'll start with some words, then move into phrases in the next tutorial.</p>
-<p class="p2"><br></p>
-<p class="p3">Some of the patterns will be demonstrated with a Pbind construct. This is a taste of things to come -- sequencing sonic events using patterns. Don't worry about how Pbind works just yet... all in good time.</p>
-<p class="p2"><br></p>
-<p class="p3">Let's start with a very quick reference of some basic patterns. More complete descriptions follow this list. The list might seem long at first, but concentrate your attention on patterns marked with a star. Those are the most basic, and commonly used. Again, the purpose is to start learning the vocabulary of patterns -- like learning new words when studying a human language.</p>
-<p class="p2"><br></p>
-<p class="p3">This document describes a lot of patterns, but what I call "primary patterns" are the most important. If you are new to patterns, concentrate on these first. You can always come back and look at the rest later.</p>
-<p class="p2"><br></p>
-<p class="p3">For more information on any of these patterns, select the class name and use the help key for your editor to open its help file.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Quick reference</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Primary Patterns</b></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pseq(list, repeats, offset):</b> Play through the entire list 'repeats' times. Like list.do.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Prand(list, repeats):</b> Choose items from the list randomly (same as list.choose).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pxrand(list, repeats):</b> Choose randomly, but never repeat the same item twice.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pshuf(list, repeats):</b> Shuffle the list in random order, and use the same random order 'repeats' times. Like list.scramble.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pwrand(list, weights, repeats):</b> Choose randomly by weighted probabilities (like list.wchoose(weights)).</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pseries(start, step, length):</b> Arithmetic series (addition).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pgeom(start, grow, length):</b> Geometric series (multiplication).</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pwhite(lo, hi, length):</b> Random numbers, equal distribution ("white noise"). Like rrand(lo, hi).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pexprand(lo, hi, length):</b> Random numbers, exponential distribution. Like exprand(lo, hi).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pbrown(lo, hi, step, length):</b> Brownian motion, arithmetic scale (addition).</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pfunc(nextFunc, resetFunc):</b> Get the stream values from a user-supplied function.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Pfuncn(func, repeats):</b> Get values from the function, but stop after 'repeats' items.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s1"><b>* </b></span><b>Proutine(routineFunc):</b> Use the function like a routine. The function should return values using .yield or .embedInStream.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Additional List Patterns</b></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pser(list, repeats, offset):</b> Play through the list as many times as needed, but output only 'repeats' items.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pslide(list, repeats, len, step, start, wrapAtEnd):</b> Play overlapping segments from the list.</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pwalk(list, stepPattern, directionPattern, startPos):</b> Random walk over the list.</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Place(list, repeats, offset):</b> Interlace any arrays found in the main list.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ppatlace(list, repeats, offset):</b> Interlace any patterns found in the main list.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ptuple(list, repeats):</b> Collect the list items into an array as the return value.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Additional Random Number Generators</b></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgbrown(lo, hi, step, length):</b> Brownian motion, geometric scale (multiplication).</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pbeta(lo, hi, prob1, prob2, length):</b> Beta distribution, where prob1 = &#x03B1; (alpha) and prob2 = &#x03B2; (beta).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pcauchy(mean, spread, length):</b> Cauchy distribution.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgauss(mean, dev, length):</b> Guassian (normal) distribution.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Phprand(lo, hi, length):</b> Returns the greater of two equal-distribution random numbers.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Plprand(lo, hi, length):</b> Returns the lesser of two equal-distribution random numbers.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pmeanrand(lo, hi, length):</b> Returns the average of two equal-distribution random numbers, i.e., (x +<span class="Apple-converted-space">  </span>y) / 2.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ppoisson(mean, length):</b> Poisson distribution.</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pprob(distribution, lo, hi, length, tableSize):</b> Arbitrary distribution, based on a probability table.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Functional descriptions of patterns</b></p>
-<p class="p2"><br></p>
-<p class="p5"><b>List Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">The most obvious thing one would want to do with a pattern is to give it a list of values and have it read them out in order. You have a couple of choices, which differ in their handling of the 'repeats' parameter.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pseq(list, repeats, offset):</b> Play through the entire list 'repeats' times.</p>
-<p class="p3"><b>Pser(list, repeats, offset):</b> Play through the list as many times as needed, but output only 'repeats' items.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">Pseq</span><span class="s3">(#[1, 2, 3], 4).asStream.all;<span class="Apple-tab-span">	</span></span>// 12 items = 4 repeats * 3 items</p>
-<p class="p7"><span class="s2">Pser</span>(#[1, 2, 3], 4).asStream.all;<span class="Apple-tab-span">	</span><span class="s1">// 4 items only</span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4"><a href="../Patterns/Pseq.html">Pseq</a></span> is an obvious choice for streaming out known pitch and rhythm values.</p>
-<p class="p2"><br></p>
-<p class="p3">Before playing a Pbind pattern such as this, make sure the server is booted.</p>
-<p class="p2"><br></p>
-<p class="p8">s.boot;</p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pseq</span>(#[0, 0, 4, 4, 5, 5, 4], 1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s5">Pseq</span>(#[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1], 1)</p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3">To stop the examples in this file, use the "stop" keyboard shortcut (cmd-. on Mac OSX, alt-. on Windows, check documentation for other editors). Or:</p>
-<p class="p2"><br></p>
-<p class="p8">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">A variation, <a href="../Patterns/Pslide.html"><span class="s2">Pslide</span></a>, plays overlapping segments of the input list.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pslide(list, repeats, len, step, start, wrapAtEnd)</b></p>
-<p class="p3">repeats: <span class="Apple-tab-span">	</span>number of segments</p>
-<p class="p3">len:<span class="Apple-tab-span">	</span> <span class="Apple-tab-span">	</span>length of each segment</p>
-<p class="p3">step:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is how far to step the start of each segment from previous.</p>
-<p class="p3">start:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>what index to start at.</p>
-<p class="p3">wrapAtEnd: if true (default), indexing wraps around if goes past beginning or end. If false, the pattern stops if it hits a nil element or goes outside the list bounds.</p>
-<p class="p2"><br></p>
-<p class="p3">If step == 1, then the first segment is at 'start', the second at 'start' + 1, and so on.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">Pslide</span>(#[1, 2, 3, 4, 5, 6, 7, 8], 10, 3, 1, 0, <span class="s2">false</span>).asStream.all;</p>
-<p class="p10"><br></p>
-<p class="p6">// or, to show the segments as separate arrays</p>
-<p class="p7"><span class="s2">Pslide</span>(#[1, 2, 3, 4, 5, 6, 7, 8], 10, 3, 1, 0, <span class="s2">false</span>).clump(3).asStream.all;</p>
-<p class="p10"><br></p>
-<p class="p6">// Flock of Seagulls!</p>
-<p class="p7">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pslide</span>((-6, -4 .. 12), 8, 3, 1, 0),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s5">Pseq</span>(#[0.1, 0.1, 0.2], <span class="s5">inf</span>),</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\sustain<span class="s3">, 0.15</span></p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Random-order list patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Prand(list, repeats):</b> Choose items from the list randomly (same as list.choose).</p>
-<p class="p2"><br></p>
-<p class="p6">// Prand: given scale degrees (pentatonic) with equal probability of each</p>
-<p class="p7">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Prand</span>([0, 1, 2, 4, 5], <span class="s5">inf</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.25</p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pxrand(list, repeats):</b> Choose randomly, but never repeat the same item twice in immediate succession.</p>
-<p class="p2"><br></p>
-<p class="p6">// Pxrand: same as above but never repeats a pitch twice in a row</p>
-<p class="p7">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pxrand</span>([0, 1, 2, 4, 5], <span class="s5">inf</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.25</p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pshuf(list, repeats):</b> Shuffle the list in random order, and use the same random order 'repeats' times. Like list.scramble.</p>
-<p class="p2"><br></p>
-<p class="p6">// Pshuf: randomly ordered once and repeated</p>
-<p class="p7">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pshuf</span>([0, 1, 2, 4, 5], <span class="s5">inf</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.25</p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pwrand(list, weights, repeats):</b> Choose randomly, according to weighted probabilities (same as list.wchoose(weights)).</p>
-<p class="p2"><br></p>
-<p class="p6">// Pwrand: these probabilities favor triadic notes from scale degrees</p>
-<p class="p7">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pwrand</span>((0..7), [4, 1, 3, 1, 3, 2, 1].normalizeSum, <span class="s5">inf</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.25</p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pwalk(list, stepPattern, directionPattern, startPos):</b> Random walk over the list. This pattern is a bit more complicated; see its help file for details.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Interlacing values and making arrays</b></p>
-<p class="p2"><br></p>
-<p class="p3">These are opposing operations: interlacing means splitting arrays and merging them into a stream of single values, and arrays can be made out of single-value streams as well.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Place(list, repeats, offset):</b> Take one from each item in the main array item in succession. Hard to explain, easier to see:</p>
-<p class="p2"><br></p>
-<p class="p7">Place([0, [1, 2], [3, 4, 5]], 3).asStream.all;</p>
-<p class="p7">--> [ 0, 1, 3, 0, 2, 4, 0, 1, 5 ]</p>
-<p class="p2"><br></p>
-<p class="p3">If we turn this into a matrix and read vertically, the original arrays are clearly visible:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">Place</span>([0, [1, 2], [3, 4, 5]], 3).clump(3).do(<span class="s2">_</span>.postln);</p>
-<p class="p10"><br></p>
-<p class="p6"><span class="s3">[ 0, 1, 3 ]<span class="Apple-tab-span">	</span></span>// leftmost column: 0 from first Place item</p>
-<p class="p6"><span class="s3">[ 0, 2, 4 ]<span class="Apple-tab-span">	</span></span>// second column: alternates between 1 and 2, from second Place item</p>
-<p class="p6"><span class="s3">[ 0, 1, 5 ]<span class="Apple-tab-span">	</span></span>// third column: 3, 4, 5 from third Place item</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Ppatlace(list, repeats, offset):</b> Take one value from each sub-pattern in order.</p>
-<p class="p2"><br></p>
-<p class="p6">// Hanon exercise</p>
-<p class="p7">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s6">\degree</span><span class="s3">, </span>Ppatlace<span class="s3">([</span></p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">Pseries</span><span class="s3">(0, 1, 8),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// first, third etc. notes</p>
-<p class="p13"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">Pseries</span><span class="s3">(2, 1, 7)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// second, fourth etc. notes</p>
-<p class="p8"><span class="Apple-tab-span">	</span>], <span class="s5">inf</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.25</p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3">That's also a taste of things to come: Patterns can be nested.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Ptuple(list, repeats):</b> Get one value from each item in the array, and return all of them as an array of values.</p>
-<p class="p2"><br></p>
-<p class="p6">// Chords</p>
-<p class="p6">// \degree receives [7, 9, 4], then [6, 7, 4] successively, expanded to chords on the server</p>
-<p class="p7">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\degree<span class="s3">, </span><span class="s5">Ptuple</span><span class="s3">([</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pseries</span>(7, -1, 8),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pseq</span>([9, 7, 7, 7, 4, 4, 2, 2], 1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pseq</span>([4, 4, 4, 2, 2, 0, 0, -3], 1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>], 1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 1</p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Generating values</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Arithmetic and geometric series</b></p>
-<p class="p2"><br></p>
-<p class="p3">Now, let's move to patterns that produce values mathematically, without using a predefined list.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pseries(start, step, length):</b> Arithmetic series, successively adding 'step' to the starting value, returning a total of 'length' items.</p>
-<p class="p3"><b>Pgeom(start, grow, length):</b> Geometric series, successively multiplying the current value by 'grow'.</p>
-<p class="p2"><br></p>
-<p class="p6">// Use Pseries for a scale and Pgeom for an accelerando</p>
-<p class="p7">(</p>
-<p class="p8">p = <span class="s5">Pbind</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s5">Pseries</span>(-7, 1, 15),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s5">Pgeom</span>(0.5, 0.89140193218427, 15)</p>
-<p class="p8">).play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Third-party extension alert:</b> If you want an arithmetic or geometric series to start at one number and end at another specific number, the step size/multiplier must be calculated from the endpoints and the number of items desired. The ddwPatterns quark includes a convenience method, <b>fromEndpoints</b>, for both Pseries and Pgeom that performs this calculation. It's necessary to give an exact number of repeats, at least two and less than infinity.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">p = </span><span class="s2">Pgeom</span><span class="s3">.fromEndpoints(0.5, 0.1, 15);<span class="Apple-tab-span">	</span></span>// error if ddwPatterns not installed</p>
-<p class="p7">p.postcs;</p>
-<p class="p2"><br></p>
-<p class="p3">Prints:</p>
-<p class="p7">Pgeom(0.5, 0.89140193218427, 15)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Random numbers and probability distributions</b></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pwhite(lo, hi, length):</b> Produces 'length' random numbers with equal distribution ('white' refers to white noise).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pexprand(lo, hi, length):</b> Same, but the random numbers have an exponential distribution, favoring lower numbers. This is good for frequencies, and also durations (because you need more notes with a shorter duration to balance the weight of longer notes).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pbrown(lo, hi, step, length):</b> Brownian motion. Each value adds a random step to the previous value, where the step has an equal distribution between -step and +step.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgbrown(lo, hi, step, length):</b> Brownian motion on a geometric scale. Each value multiplies a random step factor to the previous value.</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pbeta(lo, hi, prob1, prob2, length):</b> Beta distribution, where prob1 = &#x03B1; (alpha) and prob2 = &#x03B2; (beta).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pcauchy(mean, spread, length):</b> Cauchy distribution.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgauss(mean, dev, length):</b> Guassian (normal) distribution.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Phprand(lo, hi, length):</b> Returns the greater of two equal-distribution random numbers.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Plprand(lo, hi, length):</b> Returns the lesser of two equal-distribution random numbers.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pmeanrand(lo, hi, length):</b> Returns the average of two equal-distribution random numbers, i.e., (x + y) / 2.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ppoisson(mean, length):</b> Poisson distribution.</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pprob(distribution, lo, hi, length, tableSize):</b> Given an array of relative probabilities across the desired range (a histogram) representing an arbitrary distribution, generates random numbers corresponding to that distribution.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">To see a distribution, make a histogram out of it.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">Pmeanrand</span>(0.0, 1.0, <span class="s2">inf</span>).asStream.nextN(10000).histo(200, 0.0, 1.0).plot;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Catchall Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Not everything is pre-written as a pattern class. These patterns let you embed custom logic.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pfunc(nextFunc, resetFunc):</b> The next value is the return value from evaluating nextFunc. If .reset is called on a stream made from this pattern, resetFunc is evaluated. The stream will run indefinitely until nextFunc returns nil.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pfuncn(func, repeats):</b> Like Pfunc, output values come from evaluating the function. Pfuncn, however, returns exactly 'repeats' values and then stops. The default number of repeats is 1.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Proutine(routineFunc):</b> Use the routineFunc in a routine. The stream's output values are whatever this function .yields. Proutine ends when it yields nil.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Next, we'll look at the central pattern for audio sequencing: <b>Pbind</b>.</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_01_Introduction.html"><span class="s7">PG_01_Introduction</span></a></span></p>
-<p class="p14"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_03_What_Is_Pbind.html"><span class="s7">PG_03_What_Is_Pbind</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_03_What_Is_Pbind.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_03_What_Is_Pbind.html
deleted file mode 100644
index 1c5fe4b..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_03_What_Is_Pbind.html	
+++ /dev/null
@@ -1,256 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-li.li3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0000bf}
-span.s2 {color: #bf0000}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.s5 {text-decoration: line-through}
-span.s6 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-ul.ul1 {list-style-type: disc}
-ul.ul2 {list-style-type: circle}
-</style>
-</head>
-<body>
-<p class="p1"><b>What's that Pbind thing?</b></p>
-<p class="p2"><br></p>
-<p class="p3">Some of the examples in the last tutorial played notes using Pbind, and you might be wondering how it works in general and what else you can do with it.</p>
-<p class="p2"><br></p>
-<p class="p3">In the most general sense, <a href="../Patterns/Pbind.html"><span class="s1">Pbind</span></a> is just a way to give names to values coming out of the types of patterns we just saw. When you ask a Pbind stream for its next value, the result is an object called an <a href="../../Collections/Event.html"><span class="s1">Event</span></a>. Like a <a href="../../Collections/Dictionary.html"><span class="s1">Dictionary</span></a> (which is a superclass of Event), an event is a set of "key-value pairs": each value is named by a key.</p>
-<p class="p2"><br></p>
-<p class="p4">e = (freq: 440, dur: 0.5);<span class="Apple-tab-span">	</span><span class="s2">// an Event</span></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">e.at(</span><span class="s4">\freq</span><span class="s3">)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// access a value by name</p>
-<p class="p7"><span class="s3">e[</span>\freq<span class="s3">]</span></p>
-<p class="p6"><span class="s3">e.freq<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// See IdentityDictionary help for more on this usage</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">e.put(</span><span class="s4">\freq</span><span class="s3">, 880);<span class="Apple-tab-span">	</span></span>// Change a value by name</p>
-<p class="p4">e[<span class="s4">\freq</span>] = 660;</p>
-<p class="p4">e.freq = 220;</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">e.put(</span><span class="s4">\amp</span><span class="s3">, 0.6);<span class="Apple-tab-span">	</span></span>// Add a new value into the event</p>
-<p class="p6"><span class="s3">e.put(</span><span class="s4">\dur</span><span class="s3">, </span><span class="s1">nil</span><span class="s3">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Remove a value</p>
-<p class="p2"><br></p>
-<p class="p3">A Pbind is defined by a list of pairs: keys associated with the patterns that will supply the values for the events.</p>
-<p class="p2"><br></p>
-<p class="p3">Things get interesting when the names associated with Pbind's sub-patterns are also <a href="../../ServerArchitecture/SynthDef.html"><span class="s1">SynthDef</span></a> arguments. Then it becomes possible to play new Synths with Pbind, and feed their inputs with different values on each event.</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Building an event, one key at a time</b></p>
-<p class="p2"><br></p>
-<p class="p3">We can look at the return values from a Pbind by calling next on the stream. Note that it's necessary to pass an empty event into <i>next</i>, so that Pbind has somewhere to put the values.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">p = <span class="s1">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s1">Pseq</span>(#[0, 0, 4, 4, 5, 5, 4], 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>(#[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1], 1)</p>
-<p class="p6"><span class="s3">).asStream;<span class="Apple-tab-span">	</span></span>// remember, you have to make a stream out of the pattern before using it</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">p.next(</span><span class="s1">Event</span><span class="s3">.new);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// shorter: p.next(())</p>
-<p class="p5"><br></p>
-<p class="p6">// Output:</p>
-<p class="p4">( 'degree': 0, 'dur': 0.5 )</p>
-<p class="p4">( 'degree': 0, 'dur': 0.5 )</p>
-<p class="p4">( 'degree': 4, 'dur': 0.5 )</p>
-<p class="p4">( 'degree': 4, 'dur': 0.5 )</p>
-<p class="p2"><br></p>
-<p class="p3">The return events show us what Pbind really does. Each time the next value is requested, it goes through each key-pattern pair and gets the next value from each pattern (actually streams, but Pbind makes streams out of the sub patterns internally). Each value gets put into the event, using the associated key.</p>
-<p class="p2"><br></p>
-<p class="p3">For the first event, the first key is 'degree' and the value is 0. This is placed into the event before moving to the next pair: the event in transition contains ( 'degree': 0 ). Then the next key supplies 0.5 for 'dur', and since there are no more pairs, the event is complete: ( 'degree': 0, 'dur': 0.5 ).</p>
-<p class="p2"><br></p>
-<p class="p9">// User does:</p>
-<p class="p4">p.next(<span class="s1">Event</span>.new);</p>
-<p class="p2"><br></p>
-<p class="p9">// SuperCollider processes:</p>
-<p class="p3">1. \degree stream returns 0</p>
-<p class="p3">2. Put it in the Event: ( 'degree': 0 )</p>
-<p class="p3">3. \dur stream returns 0.5</p>
-<p class="p3">4. Put it in the Event: ( 'degree': 0, 'dur': 0.5 )</p>
-<p class="p3">5. Return the result event.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Note:</b> Dictionaries in SuperCollider are <i>unordered</i> collections. Even though Pbind processes its child streams in the order given, the results can display the keys and values in any order. This does not affect the behavior of playing Events, as we will soon see.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Event, .play and event prototypes</b></p>
-<p class="p2"><br></p>
-<p class="p3">So far we haven't seen anything that produces a note, just data processing: fetching values from patterns and stitching them together into events. The notes come from the difference between Events and regular Dictionaries: Events can do things when you <b>.play</b> them.</p>
-<p class="p2"><br></p>
-<p class="p4">( 'degree': 0, 'dur': 0.5 ).play;</p>
-<p class="p2"><br></p>
-<p class="p3">The action that the event will take is defined in an "event prototype." The prototype must include a function for the 'play' key; this function is executed when .play is called on the event. Also, optionally the prototype can contain default values for a wide variety of parameters.</p>
-<p class="p2"><br></p>
-<p class="p3">Pbind doesn't do much without an event prototype. Fortunately, you don't have to write the prototype on your own. There is a default event, accessed by Event.default, that includes functions for many different server-messaging tasks. If no specific action is requested, the normal action is to play a Synth. That's why playing a Pbind, as in the previous tutorial, with only 'degree' and 'dur' patterns produced notes: each event produces at least one synth by default, and the default event prototype knows how to convert scale degrees into frequencies and 'dur' (duration) into note lengths.</p>
-<p class="p2"><br></p>
-<p class="p3">When a pattern is played, an object called EventStreamPlayer is created. This object reads out the events one by one from the pattern's stream (using a given event prototype as the base), and calls 'play' on each. The 'delta' value in the event determines how many beats to wait until the next event. Play continues until the pattern stops producing events, or you call .stop on the EventStreamPlayer. (Note that calling .stop on the pattern does nothing. Patterns are stateless and cannot play or stop by themselves.)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>To sum up so far:</b> A Pbind's stream generates Events. When an Event is played, it does some work that usually makes noise on the server. This work is defined in an event prototype. The Event class provides a default event prototype that includes powerful options to create and manipulate objects on the server.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Useful Pbind variant: Pmono</b></p>
-<p class="p2"><br></p>
-<p class="p3">Pbind plays separate notes by default. Sometimes, you might need a pattern to act more like a monophonic synthesizer, where it plays just one Synth node and changes its values with each event. If Pbind normally corresponds to Synth.new or /s_new, <a href="../Patterns/Pmono.html"><span class="s1">Pmono</span></a> corresponds to aSynth.set or /n_set.</p>
-<p class="p2"><br></p>
-<p class="p3">Compare the sound of these patterns. Pbind produces an attack on every note, while Pmono glides from pitch to pitch.</p>
-<p class="p2"><br></p>
-<p class="p4">p = <span class="s1">Pbind</span>(<span class="s4">\degree</span>, <span class="s1">Pwhite</span>(0, 7, <span class="s1">inf</span>), <span class="s4">\dur</span>, 0.25, <span class="s4">\legato</span>, 1).play;</p>
-<p class="p4">p.stop;</p>
-<p class="p5"><br></p>
-<p class="p4">p = <span class="s1">Pmono</span>(<span class="s4">\default</span>, <span class="s4">\degree</span>, <span class="s1">Pwhite</span>(0, 7, <span class="s1">inf</span>), <span class="s4">\dur</span>, 0.25).play;</p>
-<p class="p4">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">Articulating phrases is possible with Pmono by chaining several Pmono patterns together in a row, or by using <a href="../Patterns/PmonoArtic.html"><span class="s1">PmonoArtic</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Connecting Event values to SynthDef inputs</b></p>
-<p class="p2"><br></p>
-<p class="p3">Most SynthDefs have <a href="../../UGens/Synth control/Control.html"><span class="s1">Control</span></a> inputs, usually defined by arguments to the UGen function. For example, the default SynthDef (declared in Event.sc) defines five inputs: out, freq, amp, pan and gate.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">SynthDef</span>(<span class="s4">\default</span>, { <span class="s1">arg</span> out=0, freq=440, amp=0.1, pan=0, gate=1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> z;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = <span class="s1">LPF</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.new(<span class="s1">VarSaw</span>.ar(freq + [0, <span class="s1">Rand</span>(-0.4,0.0), <span class="s1">Rand</span>(0.0,0.4)], 0, 0.3)),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">XLine</span>.kr(<span class="s1">Rand</span>(4000,5000), <span class="s1">Rand</span>(2500,3200), 1)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s1">Linen</span>.kr(gate, 0.01, 0.7, 0.3, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">OffsetOut</span>.ar(out, <span class="s1">Pan2</span>.ar(z, pan, amp));</p>
-<p class="p4">}, [<span class="s4">\ir</span>]);</p>
-<p class="p2"><br></p>
-<p class="p3">When an event plays a synth, any values stored in the event under the same name as a SynthDef input will be passed to the new synth. Compare the following:</p>
-<p class="p2"><br></p>
-<p class="p6">// Similar to Synth(\default, [freq: 293.3333, amp: 0.2, pan: -0.7])</p>
-<p class="p4">(freq: 293.3333, amp: 0.2, pan: -0.7).play;</p>
-<p class="p5"><br></p>
-<p class="p6">// Similar to Synth(\default, [freq: 440, amp: 0.1, pan: 0.7])</p>
-<p class="p4">(freq: 440, amp: 0.1, pan: 0.7).play;</p>
-<p class="p2"><br></p>
-<p class="p3">This leads to a key point: <b>The names that you use for patterns in Pbind should correspond to the arguments in the SynthDef being played.</b> The Pbind pattern names determine the names for values in the resulting Event, and those values are sent to the corresponding Synth control inputs.</p>
-<p class="p2"><br></p>
-<p class="p3">The SynthDef to play is named by the 'instrument' key. To play a pattern using a different Synth, simply name it in the pattern.</p>
-<p class="p2"><br></p>
-<p class="p10">SynthDef<span class="s3">(</span><span class="s4">\harpsi</span><span class="s3">, { </span>|outbus = 0, freq = 440, amp = 0.1, gate = 1|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> out;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>out = <span class="s1">EnvGen</span>.ar(<span class="s1">Env</span>.adsr, gate, doneAction: 2) * amp *</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pulse</span>.ar(freq, 0.25, 0.75);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(outbus, out ! 2);</p>
-<p class="p6"><span class="s3">}).add;<span class="Apple-tab-span">	</span></span>// see below for more on .add</p>
-<p class="p5"><br></p>
-<p class="p4">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Use \harpsi, not \default</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\harpsi<span class="s3">,</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s1">Pseries</span>(0, 1, 8),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.25</p>
-<p class="p4">).play;</p>
-<p class="p2"><br></p>
-<p class="p3">It's actually an oversimplification to say that the Pbind names should always match up to SynthDef arguments.</p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3">A Pbind can use some values in the event for intermediate calculations (see <a href="PG_06g_Data_Sharing.html"><span class="s1">PG_06g_Data_Sharing</span></a>). If these intermediate values have names not found in the SynthDef, they are not sent to the server. There is no requirement that every item in an Event must correspond to a SynthDef control.</li>
-<li class="li3">The default event prototype performs some automatic conversions. You might have noticed that the examples so far use 'degree' to specify pitch, but the default SynthDef being played does not have a degree argument. It works because the default event converts degree into 'freq', which is an argument. The most important conversions are for pitch and timing. Timing is simple; pitch is more elaborate. See <a href="PG_07_Value_Conversions.html"><span class="s1">PG_07_Value_Conversions</span></a> for an explanation of these automatic calculations.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>Don't send or load SynthDefs; use .add or .store instead</b></p>
-<p class="p2"><br></p>
-<p class="p3">To send only the relevant values to the new Synth, the Event needs to know what controls exist in the SynthDef. This is done by a library of descriptors for SynthDefs; the descriptor is a <a href="../../ServerArchitecture/SynthDesc.html"><span class="s1">SynthDesc</span></a>, and the library is a <a href="../../ServerArchitecture/SynthDescLib.html"><span class="s1">SynthDescLib</span></a>. The normal methods -- .send(s), .load(s) -- to communicate a SynthDef to the server do not enter it into the library. As a result, SynthDefs sent this way will not work properly with Pbind. Instead, use different methods that <i>store</i> the SynthDef into the library.</p>
-<p class="p2"><br></p>
-<p class="p6">// Save into the library, write a .scsyndef file, and load it on the server</p>
-<p class="p4"><span class="s1">SynthDef</span>(...).store;</p>
-<p class="p5"><br></p>
-<p class="p6">// Save into the library and send the SynthDef to the server (no .scsyndef file)</p>
-<p class="p6">// Make sure the server is booted before doing this</p>
-<p class="p4"><span class="s1">SynthDef</span>(...).add;</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s5">.load(s)</span><span class="Apple-tab-span">	</span>--><span class="Apple-tab-span">	</span>.store</p>
-<p class="p3"><span class="s5">.send(s)</span><span class="Apple-tab-span">	</span>--><span class="Apple-tab-span">	</span>.add</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><b>“Rest” events</b></p>
-<p class="p2"><br></p>
-<p class="p3">The convention to include a rest in the middle of an event pattern is to set the \freq key to a Symbol. Commonly this is \rest, but a backslash by itself is enough to suppress the note on the server. Ligeti's "touches bloquées" technique could be written this way (see <a href="PG_06e_Language_Control.html"><span class="s1">PG_06e_Language_Control</span></a> for an explanation of the conditional <a href="../Patterns/Pif.html"><span class="s1">Pif</span></a>):</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p6">// first, pitches ascending by 1-3 semitones, until 2 octaves are reached</p>
-<p class="p4"><span class="s1">var</span><span class="Apple-tab-span">	</span>pitches = <span class="s1">Pseries</span>(0, <span class="s1">Pconst</span>(24, <span class="s1">Pwhite</span>(1, 3, <span class="s1">inf</span>)), <span class="s1">inf</span>).asStream.all,</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// randomly block 1/3 of those</p>
-<p class="p4"><span class="Apple-tab-span">	</span>mask = pitches.scramble[0 .. pitches.size div: 3];</p>
-<p class="p5"><br></p>
-<p class="p4">p = <span class="s1">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\arpeg</span>, <span class="s1">Pseq</span>(pitches[ .. pitches.size - 2] ++ pitches.reverse[ .. pitches.size - 2], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if the note is found in the mask array, replace it with \rest</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// then that note does not sound</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\note</span>, <span class="s1">Pif</span>(<span class="s1">Pfunc</span> { <span class="s1">|event|</span> mask.includes(event[<span class="s4">\arpeg</span>]) }, <span class="s4">\rest</span>, <span class="s1">Pkey</span>(<span class="s4">\arpeg</span>)),</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>\octave<span class="s3">, 4,</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.125</p>
-<p class="p4">).play;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">If it's the \freq key that determines whether the event as a rest or not, why does it work to use it with \note? As noted, keys like \degree, \note, and \midinote are automatically converted into frequency. The math operations that perform the conversion preserve Symbols intact -- e.g., \rest + 1 == \rest. So the \rest value is passed all the way through the chain of conversions so that \freq in the event ends up receiving \rest.</p>
-<p class="p2"><br></p>
-<p class="p3">Note that it doesn't matter if the SynthDef has a 'freq' argument. It's the event, on the <i>client</i> side, that looks to this key to determine whether to play the note or not. If it is a rest, the server is not involved at all.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Writing SynthDefs for patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">SynthDefs should have a couple of specific features to work well with patterns.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Synths should release themselves</b></p>
-<p class="p2"><br></p>
-<p class="p3">The default event prototype relies on the synth to remove itself from the server when it's finished. This can be done in several ways:</p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3">(Most typical) A gated envelope with a releasing doneAction ( >= 2) in the envelope generator (see <a href="../../UGens/Synth control/Envelopes/UGen-doneActions.html"><span class="s1">UGen-doneActions</span></a> for a complete list). The \harpsi SynthDef above uses this technique. A gated envelope specifies a release node or uses one of the predefined sustaining envelope types: Env.asr, Env.adsr, Env.dadsr. The Env help file offers more detail on gated envelopes.</li>
-<li class="li3">Linen.kr, which is a shortcut for EnvGen.kr(Env([0, susLevel, 0], [attackTime, releaseTime], \lin, releaseNode: 1), gate, doneAction: [2 or higher]). The default SynthDef uses this. The doneAction should be at least 2 to release the node.</li>
-<ul class="ul2">
-<li class="li3"><b>Note:</b> If the release is controlled by a gate, the gate must be represented by the synth argument 'gate'; standard event prototypes expect to be able to control the synth's release using this argument. Also, make sure the gate's default value is greater than 0. Otherwise, the envelope will never start and you will both hear nothing and watch synths pile up on the server.</li>
-</ul>
-<li class="li3">Fixed-duration envelopes (no gate).</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Argument name prefixes</b></p>
-<p class="p2"><br></p>
-<p class="p3">One other subtle point about synth argument names. In a SynthDef, argument names can have the prefix <b>t_</b> to indicate a "trigger control," or <b>i_</b> for an "initial rate" control (meaning that it holds the value set when the Synth is first played). This is described in <a href="../../ServerArchitecture/SynthDef.html"><span class="s1">SynthDef</span></a> help. Pbind and its cousins should leave out the prefixes, e.g.:</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p10">SynthDef<span class="s3">(</span><span class="s4">\trig_demo</span><span class="s3">, { </span>|freq, gate = 1, t_trig = 1|<span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">// t_trig here</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>env = <span class="s1">Decay2</span>.kr(t_trig, 0.01, 0.1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sig = <span class="s1">SinOsc</span>.ar(freq, 0, env)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">Linen</span>.kr(gate, 0.01, 0.1, 0.1, doneAction: 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, sig ! 2)</p>
-<p class="p4">}).add;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p7"><span class="s3">p = </span><span class="s1">Pmono</span><span class="s3">(</span>\trig_demo<span class="s3">,</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\freq</span>, <span class="s1">Pexprand</span>(200, 800, <span class="s1">inf</span>),</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">\trig</span><span class="s3">, 1,<span class="Apple-tab-span">	</span></span>// note that this is NOT t_trig -- just \trig</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\delta</span>, 0.125</p>
-<p class="p4">).play;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_02_Basic_Vocabulary.html"><span class="s6">PG_02_Basic_Vocabulary</span></a></span></p>
-<p class="p11"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_04_Words_to_Phrases.html"><span class="s6">PG_04_Words_to_Phrases</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_04_Words_to_Phrases.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_04_Words_to_Phrases.html
deleted file mode 100644
index 4787ac8..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_04_Words_to_Phrases.html	
+++ /dev/null
@@ -1,250 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #bf0000}
-span.s4 {color: #007300}
-span.s5 {text-decoration: underline ; color: #0000ee}
-span.s6 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>From words to phrases</b></p>
-<p class="p2"><br></p>
-<p class="p3">A single pattern by itself is not so exciting. But patterns can be used together to get more complex results.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Patterns within list patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">We saw list patterns (<a href="../Patterns/Pseq.html"><span class="s1">Pseq</span></a>, <a href="../Patterns/Prand.html"><span class="s1">Prand</span></a>, etc.) that returned numbers from a preset list, either in the order given or rearranged randomly. The list may also include other patterns. When a list pattern encounters another pattern in its list, the inner pattern is <i>embedded</i> into the stream. That is, the inner pattern takes over until it runs out of values to return. Then, control returns to the outer list pattern. This is like calling a function in the middle of another function.</p>
-<p class="p2"><br></p>
-<p class="p3">There is no preset limit to the number of levels of embedding.</p>
-<p class="p2"><br></p>
-<p class="p3">If a single pattern is like a word, a list pattern that uses other patterns could be more like a sentence or phrase. You can alternate between different behaviors, either in a predictable order as in the example below, or randomly by using one of the random-order list patterns.</p>
-<p class="p2"><br></p>
-<p class="p5">// Scale segments, in the sequence: up, up, down (repeat)</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\degree<span class="s2">, </span><span class="s1">Pseq</span><span class="s2">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseries</span>({ rrand(0, 7) }, 1, { rrand(4, 8) }),<span class="Apple-tab-span">	</span><span class="s3">// up (step = 1)</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseries</span>({ rrand(0, 7) }, 1, { rrand(4, 8) }),<span class="Apple-tab-span">	</span><span class="s3">// up (step = 1)</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseries</span>({ rrand(7, 14) }, -1, { rrand(4, 8) })<span class="Apple-tab-span">	</span><span class="s3">// down (step = -1)</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.125</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">But it gets even more fun -- list patterns don't care whether they're enclosing value patterns (as in the previous example) or event patterns. That means you can write a set of Pbind-style patterns, each one representing a phrase, and string them together. This next example is longer, but that's only because of a larger number of phrase patterns. The structure is very simple, though: <b>Pxrand([Pbind(), Pmono(), Pmono()...], inf)</b>. Some of the phrases are written with Pmono to slide between notes.</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p9">SynthDef<span class="s2">(</span><span class="s4">\bass</span><span class="s2">, { </span>|freq = 440, gate = 1, amp = 0.5, slideTime = 0.17, ffreq = 1100, width = 0.15,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>detune = 1.005, preamp = 4|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s1">Env</span>.adsr(0.01, 0.3, 0.4, 0.1);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = <span class="s1">Lag</span>.kr(freq, slideTime);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>sig = <span class="s1">Mix</span>(<span class="s1">VarSaw</span>.ar([freq, freq * detune], 0, width, preamp)).distort * amp</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGen</span>.kr(env, gate, doneAction: 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>sig = <span class="s1">LPF</span>.ar(sig, ffreq);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, sig ! 2)</p>
-<p class="p6">}).add;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 132/60;</p>
-<p class="p6">p = <span class="s1">Pxrand</span>([</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">Pbind</span><span class="s2">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// repeated notes</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\bass<span class="s2">,</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\midinote<span class="s2">, 36,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>([0.75, 0.25, 0.25, 0.25, 0.5], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\legato</span>, <span class="s1">Pseq</span>([0.9, 0.3, 0.3, 0.3, 0.3], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 0.5, <span class="s4">\detune</span>, 1.005</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">Pmono</span><span class="s2">(</span><span class="s4">\bass</span><span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// octave jump</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\midinote</span>, <span class="s1">Pseq</span>([36, 48, 36], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>([0.25, 0.25, 0.5], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 0.5, <span class="s4">\detune</span>, 1.005</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">Pmono</span><span class="s2">(</span><span class="s4">\bass</span><span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// tritone jump</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\midinote</span>, <span class="s1">Pseq</span>([36, 42, 41, 33], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>([0.25, 0.25, 0.25, 0.75], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 0.5, <span class="s4">\detune</span>, 1.005</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">Pmono</span><span class="s2">(</span><span class="s4">\bass</span><span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// diminished triad</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\midinote</span>, <span class="s1">Pseq</span>([36, 39, 36, 42], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>([0.25, 0.5, 0.25, 0.5], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 0.5, <span class="s4">\detune</span>, 1.005</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">], <span class="s1">inf</span>).play(quant: 1);</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Shortcut notation:</b> Just like you can concatenate arrays with ++, you can also concatenate patterns the same way. Writing <b>pattern1 ++ pattern2</b> is the same as writing <b>Pseq([pattern1, pattern2], 1)</b>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Some ways to string together patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Sequentially:</b> Each sub-pattern follows the next in the same order every time. Use <a href="../Patterns/Pseq.html"><span class="s1">Pseq</span></a> or <a href="../Patterns/Pser.html"><span class="s1">Pser</span></a>.</p>
-<p class="p3"><b>Randomized order:</b> Sub-patterns in completely random order (<a href="../Patterns/Prand.html"><span class="s1">Prand</span></a>), random order with no repeats (<a href="../Patterns/Pxrand.html"><span class="s1">Pxrand</span></a>), or random order according to a set of probabilities (<a href="../Patterns/Pwrand.html"><span class="s1">Pwrand</span></a>). <a href="../Patterns/Pshuf.html"><span class="s1">Pshuf</span></a> creates one random ordering and uses it repeatedly.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Direct array indexing:</b> Patterns can be chosen in arbitrary order by index. This gives you more control than Pwrand. Both <a href="../Patterns/Pindex.html"><span class="s1">Pindex</span></a> and <a href="../Patterns/Pswitch.html"><span class="s1">Pswitch</span></a> can be used for this.</p>
-<p class="p2"><br></p>
-<p class="p5">// scale degree segments, every fifth choice is odd-numbered only (descending)</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span><span class="Apple-tab-span">	</span>n = 10,</p>
-<p class="p6"><span class="Apple-tab-span">	</span>scaleSegments = <span class="s1">Array</span>.fill(n, { <span class="s1">|i|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(i.odd) {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseries</span>(11, -1, rrand(5, 10))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseries</span>(rrand(-4, 4), 1, i+2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s1">Pswitch</span>(scaleSegments, <span class="s1">Pseq</span>([<span class="s1">Pwhite</span>(0, n-1, 4), <span class="s1">Pwhite</span>(0, n-1, 1).select(<span class="s1">_</span>.odd)], <span class="s1">inf</span>)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.125</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Finite state machine (Pfsm, Pdfsm):</b> A finite state machine is a way of associating an item with its possible successors. It is closer to a "grammar" than purely random selection. <a href="../Patterns/Pfsm.html"><span class="s1">Pfsm</span></a> defines a finite state machine as a set of possible "entry points," followed by a list of the possible "states" of the machine and, for each state, a list of the possible states that may follow the current state. States may be single values or patterns, meaning that phrases can be linked to other phrases that "make sense" in succession (and unwanted transitions can be prevented).</p>
-<p class="p2"><br></p>
-<p class="p3">If this sounds a bit like a Markov chain, that's because the Pfsm implementation is a special case of a Markov chain where there is an equal probability of choosing the next state from the valid successors. In a Markov chain, the probabilities are weighted according to analysis of a real-world data stream.</p>
-<p class="p2"><br></p>
-<p class="p3">The Pfsm help file includes very good examples of organizing single values and pattern phrases. Also see <a href="PG_Cookbook06_Phrase_Network.html"><span class="s1">PG_Cookbook06_Phrase_Network</span></a> for an application of Pfsm to generate a corny jazz solo.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s5"><a href="../Patterns/Pdfsm.html">Pdfsm</a></span> stands for "deterministic finite state machine," where there is no random selection.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Third-party extension alert:</b> A good Markov chain implementation for SuperCollider exists in the MathLib quark.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Library of named sub-patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">One very effective way to manage phrases is to make a library, or more precisely <a href="../../Collections/Dictionary.html"><span class="s1">Dictionary</span></a>, of sub-patterns, and then call them up one at a time. <a href="../../Libraries/JITLib/Patterns/Psym.html"><span class="s1">Psym</span></a> is the pattern to do this. The advantage here is that you can store the phrases in a separate place, while the pattern that you actually play is much simpler and describes the musical intent at a much higher level.</p>
-<p class="p2"><br></p>
-<p class="p5">// Uses the bass SynthDef above</p>
-<p class="p6">(</p>
-<p class="p6">~phrases = (</p>
-<p class="p6"><span class="Apple-tab-span">	</span>repeated: <span class="s1">Pbind</span>(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\bass<span class="s2">,</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\midinote<span class="s2">, 36,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>([0.75, 0.25, 0.25, 0.25, 0.5], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\legato</span>, <span class="s1">Pseq</span>([0.9, 0.3, 0.3, 0.3, 0.3], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 0.5, <span class="s4">\detune</span>, 1.005</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>octave: <span class="s1">Pmono</span>(<span class="s4">\bass</span>,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\midinote</span>, <span class="s1">Pseq</span>([36, 48, 36], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>([0.25, 0.25, 0.5], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 0.5, <span class="s4">\detune</span>, 1.005</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>tritone: <span class="s1">Pmono</span>(<span class="s4">\bass</span>,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\midinote</span>, <span class="s1">Pseq</span>([36, 42, 41, 33], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>([0.25, 0.25, 0.25, 0.75], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 0.5, <span class="s4">\detune</span>, 1.005</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>dim: <span class="s1">Pmono</span>(<span class="s4">\bass</span>,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\midinote</span>, <span class="s1">Pseq</span>([36, 39, 36, 42], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s1">Pseq</span>([0.25, 0.5, 0.25, 0.5], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 0.5, <span class="s4">\detune</span>, 1.005</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 128/60;</p>
-<p class="p8"><br></p>
-<p class="p5">// the higher level control pattern is really simple now</p>
-<p class="p6">p = <span class="s1">Psym</span>(<span class="s1">Pxrand</span>(#[repeated, octave, tritone, dim], <span class="s1">inf</span>), ~phrases).play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">A complicated pattern with lots of embedding can be hard to read because it's more work to separate note-level details from the larger structure. The pattern choosing the phrases -- <b>Pxrand(#[repeated, octave, tritone, dim], inf)</b> -- is self-explanatory, however, and Psym fills in the details transparently.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Note:</b> Because of some special handling needed for event patterns, there are two versions of Psym. Psym handles event patterns, while <a href="../../Libraries/JITLib/Patterns/Pnsym.html"><span class="s1">Pnsym</span></a> is for value patterns. Think of it this way: Pbind can be contained within Psym, but it contains Pnsym.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>( Psym ( Pbind ( Pnsym ) ) )</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Good:</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>Psym</b>(**, (pattern1: <b>Pbind</b>(**))</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>Pbind</b>(\someValue, <b>Pnsym</b>(**, (pattern1: Pwhite(**)))</p>
-<p class="p2"><br></p>
-<p class="p10"><b>Bad:</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>Pbind</b>(\someValue, <b>Psym</b>(**, (pattern1: Pwhite(**)))</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Switching between patterns for individual values</b></p>
-<p class="p2"><br></p>
-<p class="p3">In the examples above, if a list pattern encounters another pattern in its input values, the subpattern is embedded in its entirety before the list pattern is allowed to continue. Sometimes you might want to get just one value out of the subpattern, and then choose a different subpattern on the next event. Pswitch, Psym and Pnsym have cousins that do exactly this: <a href="../Patterns/Pswitch1.html"><span class="s1">Pswitch1</span></a>, Psym1 and Pnsym1.</p>
-<p class="p2"><br></p>
-<p class="p5">// random pitches in two distinct ranges; use a coin toss to decide which for this event</p>
-<p class="p5">// 70% low, 30% high</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s1">Pswitch1</span>([<span class="s1">Pwhite</span>(7, 14, <span class="s1">inf</span>), <span class="s1">Pwhite</span>(-7, 0, <span class="s1">inf</span>)], <span class="s1">Pfunc</span> { 0.7.coin.binaryValue }),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.25</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">Compare to the following:</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s1">Pswitch</span>([<span class="s1">Pwhite</span>(7, 14, <span class="s1">inf</span>), <span class="s1">Pwhite</span>(-7, 0, <span class="s1">inf</span>)], <span class="s1">Pfunc</span> { 0.7.coin.binaryValue }),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.25</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">With Pswitch, one of the items is chosen from the list and keeps playing until it's finished. But the length of both Pwhite patterns is infinite, so whichever one is chosen first retains control. Pswitch1 does the coin toss on every event and embeds just one item.</p>
-<p class="p2"><br></p>
-<p class="p3">Psym1 and Pnsym1 behave similarly, choosing the name to look up the pattern for each event.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Related: Conditional patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s5"><a href="../Patterns/Pif.html">Pif</a></span> supports this kind of structure: If the next value from a Boolean pattern is true, return the next item from pattern A, otherwise take it from pattern B. Another way to write the Pswitch1 example is to use a Boolean test directly on Pwhite, instead of writing a Pfunc for the coin toss. This might be clearer to read. However, this works only when there are two alternatives. Pswitch1 and Psym1 allow any number of choices.</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// translation: if(0.7.coin) { rrand(-7, 0) } { rrand(7, 14 }</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s1">Pif</span>(<span class="s1">Pwhite</span>(0.0, 1.0, <span class="s1">inf</span>) < 0.7, <span class="s1">Pwhite</span>(-7, 0, <span class="s1">inf</span>), <span class="s1">Pwhite</span>(7, 14, <span class="s1">inf</span>)),<span class="Apple-converted-space">   </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.25</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">We will see in <a href="PG_06e_Language_Control.html"><span class="s1">PG_06e_Language_Control</span></a> that Pif can be used on values that were previously calculated in the Pbind. It adds considerably to the intelligence Pbind can manage, when its value streams are aware of other values in the event.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="s2">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_03_What_Is_Pbind.html"><span class="s6">PG_03_What_Is_Pbind</span></a></span></p>
-<p class="p11"><span class="s2">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_05_Math_on_Patterns.html"><span class="s6">PG_05_Math_on_Patterns</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_05_Math_on_Patterns.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_05_Math_on_Patterns.html
deleted file mode 100644
index 3f90cc4..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_05_Math_on_Patterns.html	
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {color: #bf0000}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.s6 {text-decoration: underline ; color: #0000bf}
-span.s7 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Math on patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Often, there is not a pattern that delivers exactly the desired result by itself. But, other operations can be applied to patterns, to manipulate one pattern's output and turn it into something else.</p>
-<p class="p2"><br></p>
-<p class="p3">Some of these operations look like things you would do to an array, but there is a critical difference. Doing math on an array performs the operation on every array item all at once. By contrast, patterns are "lazy" -- they evaluate one value at the time, only when asked, and they only do as much as they need to do to deliver the next value. An operation on a pattern produces another pattern that remembers the work that is to be done. Making a stream out of the composite pattern creates the structure to perform the operation upon request.</p>
-<p class="p2"><br></p>
-<p class="p3">For example, multiplying a pattern by a number produces a "binary operator pattern": <a href="../Patterns/Pbinop.html"><span class="s1">Pbinop</span></a>. Looking at the Pbinop's variables reveals everything that is needed to reconstruct the operation on demand.</p>
-<p class="p2"><br></p>
-<p class="p4">p = <span class="s2">Pwhite</span>(1, 5, <span class="s2">inf</span>) * 2;<span class="Apple-tab-span">	</span><span class="s3">// a Pbinop</span></p>
-<p class="p5"><br></p>
-<p class="p4">p.operator<span class="Apple-tab-span">	</span><span class="s3">// == '*'</span></p>
-<p class="p6"><span class="s4">p.a<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// == a Pwhite</p>
-<p class="p6"><span class="s4">p.b<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// == 2</p>
-<p class="p2"><br></p>
-<p class="p3">In other words, the multiplication here produces not the result of a single multiplication, but a template for an infinite stream of multiplications to follow.</p>
-<p class="p2"><br></p>
-<p class="p7"><b>Math on patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Not only can patterns generate numbers, but they also support all the standard math operators: unary (abs, reciprocal, etc.), binary (+, -, *, /, **, min, max, etc.) and n-ary (clip, wrap, fold, linlin, linexp, etc.) operators are all valid with patterns.</p>
-<p class="p2"><br></p>
-<p class="p6">// Random integers, 1-5</p>
-<p class="p4"><span class="s2">Pwhite</span>(1, 5, <span class="s2">inf</span>).asStream.nextN(10);</p>
-<p class="p5"><br></p>
-<p class="p6">// Random integers 1-5, multiplied by two gives even integers 2-10</p>
-<p class="p4">(<span class="s2">Pwhite</span>(1, 5, <span class="s2">inf</span>) * 2).asStream.nextN(10);</p>
-<p class="p5"><br></p>
-<p class="p6">// Random integers 1-5, multiplied by 1/4 gives multiples of 1/4 between 0.25 and 1.25</p>
-<p class="p4">(<span class="s2">Pwhite</span>(1, 5, <span class="s2">inf</span>) * 0.25).asStream.nextN(10);</p>
-<p class="p5"><br></p>
-<p class="p6">// Random integers 1-5, with the sign (positive or negative) randomly chosen</p>
-<p class="p4">(<span class="s2">Pwhite</span>(1, 5, <span class="s2">inf</span>) * <span class="s2">Prand</span>(#[-1, 1], <span class="s2">inf</span>)).asStream.nextN(10);</p>
-<p class="p2"><br></p>
-<p class="p3">If a binary operation occurs on two patterns, every time a value is requested from the resulting stream, both of the component streams are asked for a value, and the operator applies to those results. If either stream ends, the binary operator stream also ends.</p>
-<p class="p2"><br></p>
-<p class="p6">// The resulting stream has two values, because the shorter operand stream has two values.</p>
-<p class="p4">(<span class="s2">Pseq</span>([10, 9, 8], 1) + <span class="s2">Pseq</span>([1, 2], 1)).do { |x| x.postln };</p>
-<p class="p2"><br></p>
-<p class="p3">The binary operator adverb '.x' is supported with patterns. (See <a href="../../Language/Adverbs.html"><span class="s1">Adverbs</span></a>.) This adverb is like a nested loop: in streamA +.x streamB, the first value of streamA is added to every value of streamB in succession, then the second value of streamA is added to every streamB value, and so on. This is an easy way to transpose a pattern to different levels successively.</p>
-<p class="p2"><br></p>
-<p class="p6">// Play a major-7th arpeggio, transposed to different scale degrees</p>
-<p class="p6">// Pwhite is the transposer; Pseq is the chord</p>
-<p class="p6">// The chord is like an "inner loop"</p>
-<p class="p4">(</p>
-<p class="p4">p = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">\midinote</span>, <span class="s2">Pwhite</span>(48, 72, <span class="s2">inf</span>) +.x <span class="s2">Pseq</span>(#[0, 4, 7, 11], 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.125</p>
-<p class="p4">).play;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Collection operations on patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Some of the things you can do to arrays also work with patterns.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>collect(func):</b> Applies the function to each return value from the pattern. Good for generic transformations.</p>
-<p class="p3"><b>select(func):</b> Preserve values from the output stream that pass the Boolean test; discard the rest.</p>
-<p class="p3"><b>reject(func):</b> Discard values from the output stream that pass the test; return the rest to the user.</p>
-<p class="p2"><br></p>
-<p class="p6">// Arbitrary/custom operation: Turn each number into a two-digit hex string</p>
-<p class="p4"><span class="s2">Pwhite</span>(0, 255, 20).collect({ <span class="s2">|x|</span> x.asHexString(2) }).do { |x| x.postln };</p>
-<p class="p5"><br></p>
-<p class="p6">// Keep odd numbers in the result (which is now less than 20 items)</p>
-<p class="p4"><span class="s2">Pwhite</span>(0, 255, 20).select({ <span class="s2">|x|</span> x.odd }).do { |x| x.postln };</p>
-<p class="p5"><br></p>
-<p class="p6">// Throw out odd numbers in the result</p>
-<p class="p4"><span class="s2">Pwhite</span>(0, 255, 20).reject({ <span class="s2">|x|</span> x.odd }).do { |x| x.postln };</p>
-<p class="p2"><br></p>
-<p class="p3"><b>clump(n):</b> Calling .clump on an array turns a flat array into a multilevel array. Similarly, .clump on a pattern gets <i>n</i> values from the pattern at once and returns all of them as an array. <i>n</i> can be a number or a numeric pattern.</p>
-<p class="p3"><b>flatten(levels):</b> The reverse operation: if a pattern returns an array, its values will be output one by one.</p>
-<p class="p2"><br></p>
-<p class="p6">// A flat stream becomes an array of 4-item arrays</p>
-<p class="p4"><span class="s2">Pwhite</span>(0, 255, 20).clump(4).do { |x| x.postln };</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// a two-dimensional array</p>
-<p class="p4"><span class="s2">Array</span>.fill(5, { <span class="s2">Array</span>.fill(4, { rrand(1, 5) }) });</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// a pattern reading that array in sequence</p>
-<p class="p4">p = <span class="s2">Pseq</span>(<span class="s2">Array</span>.fill(5, { <span class="s2">Array</span>.fill(4, { rrand(1, 5) }) }), 1);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// the pattern returns several arrays</p>
-<p class="p4">p.do { |x| x.postln };</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// flattening the pattern returns a one-dimensional stream of numbers</p>
-<p class="p4">p.flatten.do { |x| x.postln };</p>
-<p class="p2"><br></p>
-<p class="p3"><b>drop(n):</b> Discard the first n values, and return whatever is left.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">Pseries</span>(1, 1, 20).drop(5).do { |x| x.postln };</p>
-<p class="p2"><br></p>
-<p class="p3"><b>differentiate:</b> Return the difference between successive values: second - first, third - second, and so on.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">Array</span>.geom(20, 1, 1.01).differentiate;</p>
-<p class="p4"><span class="s2">Pgeom</span>(1, 1.01, 20).differentiate.do { <span class="s2">|x|</span> x.postln };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Miscellaneous calculation patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">These are some other numeric calculations that don't exactly fall in the category of math operators.</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pavaroh(pattern, aroh, avaroh, stepsPerOctave):</b> Convert scale degrees to note numbers, with separate ascending and descending scale patterns. Originally written for Indian ragas, it also works well for the western melodic minor scale.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>PdegreeToKey(pattern, scale, stepsPerOctave):</b> Given a pattern yielding scale degrees, convert the degrees into note numbers according to the provided scale and steps per octave. This is done automatically when you use the 'degree' event key, but there might be cases where you would want to do some further math on the note numbers, and it might be necessary to make the conversion explicit.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pdiff(pattern):</b> Returns the difference between the source stream's latest and previous values. Among other uses, this can measure whether a stream is ascending or descending. This is the underlying implementation of the 'differentiate' method discussed just above.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Prorate(proportion, pattern):</b> Splits up a number from 'pattern' according to proportion(s) given by the 'proportion' pattern. This is tricky to explain briefly; see the help file for some good examples.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p6">// Swing notes with Prorate</p>
-<p class="p4">(</p>
-<p class="p4">p = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s2">Pseries</span>(4, <span class="s2">Pwhite</span>(-2, 2, <span class="s2">inf</span>).reject({ <span class="s2">|x|</span> x == 0 }), <span class="s2">inf</span>).fold(-7, 11),</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s5">\dur</span><span class="s4">, </span><span class="s2">Prorate</span><span class="s4">(0.6, 0.5)<span class="Apple-tab-span">	</span></span>// actually yields 0.3, 0.2, 0.3, 0.2...</p>
-<p class="p4">).play;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Calculations based on other event values</b></p>
-<p class="p2"><br></p>
-<p class="p3">In a Pbind, normally the patterns for the various keys calculate independently. But it's possible for one or more child patterns to depend on the result of another pattern inside the same Pbind. This is done with <a href="../Patterns/Pkey.html"><span class="s1">Pkey</span></a>, described in <a href="PG_06g_Data_Sharing.html"><span class="s6">PG_06g_Data_Sharing</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s4">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_04_Words_to_Phrases.html"><span class="s7">PG_04_Words_to_Phrases</span></a></span></p>
-<p class="p8"><span class="s4">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_060_Filter_Patterns.html"><span class="s7">PG_060_Filter_Patterns</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_060_Filter_Patterns.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_060_Filter_Patterns.html
deleted file mode 100644
index 958481a..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_060_Filter_Patterns.html	
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Filter patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Just like filter UGens modify an input signal, filter patterns modify the stream of values coming from a pattern.</p>
-<p class="p2"><br></p>
-<p class="p3">We have already seen some operations that modify a stream of values: math operators (which render as Punop, Pbinop or Pnaryop patterns) and certain collection methods (mainly collect, select and reject). Filter pattern classes can do some other surprising and useful things.</p>
-<p class="p2"><br></p>
-<p class="p3">All filter patterns take at least one source pattern, providing the values/events to be filtered. Some filter patterns are designed for value patterns, others for event patterns. A handful work equally well with both single values and events.</p>
-<p class="p2"><br></p>
-<p class="p3">Following is a categorized overview. See the separate category documents for more detail.</p>
-<p class="p2"><br></p>
-<p class="p4"><a href="PG_06a_Repetition_Contraint_Patterns.html"><b>Repetition and Constraint patterns</b></a></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pclutch(pattern, connected):</b> If the 'connected' pattern is true, Pclutch returns the next value from 'pattern'. If 'connected' is false, the previous pattern value is repeated. It's like a clutch in a car: when engaged, the pattern moves forward; when disconnected, it stays where it is.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pn(pattern, repeats):</b> Embeds the source pattern 'repeats' times: simple repetition. This also works on single values: Pn(1, 5) outputs the number 1 5 times.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pstutter(n, pattern):</b> 'n' and 'pattern' are both patterns. Each value from 'pattern' is repeated 'n' times. If 'n' is a pattern, each value can be repeated a different number of times.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>PdurStutter(n, pattern):</b> Like Pstutter, except the pattern value is divided by the number of repeats (so that the total time for the repeat cycle is the duration value from the source pattern).</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pfin(count, pattern): </b>Returns exactly 'count' values from the source pattern, then stops.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pconst(sum, pattern, tolerance):</b> Output numbers until the sum reaches a predefined limit. The last output value is adjusted so that the sum matches the limit exactly.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pfindur(dur, pattern, tolerance):</b> Like Pconst, but applying the "constrain" behavior to the event's rhythmic values. The source pattern runs up to the specified duration, then stops. This is very useful if you know how long a musical behavior should go on, but the number of events to fill up that time is not known.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Psync(pattern, quant, maxdur, tolerance):</b> Like Pfindur, but does not have a fixed duration limit. Instead, it plays until either it reaches maxdur (in which case it behaves like Pfindur, adjusting the last event so the total duration matches maxdur), or the pattern stops early and the last event is rounded up to the next integer multiple of quant.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><a href="PG_06b_Time_Based_Patterns.html"><b>Time-based patterns</b></a></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ptime(repeats):</b> Returns the amount of time elapsed since embedding.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pstep(levels, durs, repeats):</b> Repeat a 'level' value for its corresponding duration, then move to the next.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pseg(levels, durs, curves, repeats):</b> Similar to Pstep, but interpolates to the next value instead of stepping abruptly at the end of the duration. Interpolation is linear by default, but any envelope segment curve can be used. Levels, durs and curves should be patterns.</li>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Related: Use of <a href="../../Control/Env.html"><span class="s1">Env</span></a> as a pattern.</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><a href="PG_06c_Composition_of_Patterns.html"><b>Adding values into event patterns</b></a></p>
-<p class="p3"><b>(Or, "Pattern Composition")</b></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pbindf(pattern, pairs):</b> Adds new key-value pairs onto a pre-existing Pbind-style pattern.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pchain(patterns):</b> Chains separate Pbind-style patterns together, so that all their key-value pairs go into the same event.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><a href="PG_06d_Parallel_Patterns.html"><b>Parallelizing event patterns</b></a></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ppar(list, repeats):</b> Start each of the event patterns in the 'list' at the same time. When the last one finishes, the Ppar also stops. If repeats > 1, all the subpatterns start over again from the beginning.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ptpar(list, repeats):</b> Here, the list consists of [timeOffset0, pattern0, timeOffset1, pattern1...]. Each pattern starts after the number of beats given as its time offset. The patterns can start at different times relative to each other.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgpar(list, repeats):</b> Like Ppar, but it creates a separate group for each subpattern.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgtpar(list, repeats):</b> This is supposed to be like Ptpar with separate groups for the sub patterns, but the class is currently broken.</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pspawner(routineFunc):</b> The function is used to make a routine. A Spawner object gets passed into this routine, and this object is used to add or remove streams to/from the parallel stream. New patterns can be added in sequence or in parallel.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pspawn(pattern, spawnProtoEvent):</b> Supports most of the features of Pspawner, but uses a pattern to control the Spawner object instead of a routine function.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><a href="PG_06e_Language_Control.html"><b>Language control methods</b></a></p>
-<p class="p2"><br></p>
-<p class="p3">Some patterns mimic language-style control methods: conditionals (Pif), loops (Pwhile) and error cleanup (Pprotect).</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pif(condition, iftrue, iffalse, default):</b> Evaluates a pattern 'condition' that returns true or false. Then, one value is taken from the true or false branch before going back to evaluate the condition again. The 'default' value or pattern comes into play when the true or false branch stops producing values (returns nil). If the default is not given, Pif returns control to the parent upon nil from either branch.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pseed(randSeed, pattern):</b> Random number generators depend on seed values; setting a specific seed produces a repeatable stream of pseudorandom numbers. Pseed sets the random seed before embedding 'pattern', effectively restarting the random number generator at the start of the pattern.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pprotect(pattern, func):</b> Like the 'protect' error handling method, if an error occurs while getting the next value from the pattern, the function will be evaluated before the error interrupts execution.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ptrace(pattern, key, printStream, prefix):</b> For debugging, Ptrace prints every return value. Is your pattern really doing what you think? This will tell you. A Ptrace is created automatically by the 'trace' message: aPattern.trace(key, printStream, prefix) --> Ptrace(aPattern, key, printStream, prefix).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pwhile(func, pattern):</b> Like <a href="../../Language/Control-Structures.html">while</a>: as long as the function evaluates to true, the pattern is embedded. The function is checked once at the beginning and thereafter when the pattern comes to an end. If it's applied to an infinite pattern, there's no looping because the pattern never gives control back.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><a href="PG_06f_Server_Control.html"><b>Server control methods</b></a></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pbus(pattern, dur, fadeTime, numChannels, rate):</b> Creates a private group and bus for the synths played by the pattern. The group and bus are released when the pattern stops. Useful for isolating signals from different patterns.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgroup(pattern):</b> Creates a private group (without private bus) for the pattern's synths.</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pfx(pattern, fxname, pairs)</b></li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pfxb(pattern, fxname, pairs):</b> Both of these patterns play an effect synth at the tail of the target group. This synth should read from the bus identified by the 'out' argument, and write the processed signal onto the same bus using either ReplaceOut or XOut. Pfx uses whatever bus and group are specified in the incoming event. Pfxb allocates a separate bus and group for the effect and the pattern.</li>
-</ul>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pproto(makeFunction, pattern, cleanupFunc):</b> Allocate resources on the server and add references to them into the event prototype used to play 'pattern'. When the pattern stops (or is stopped), the resources can be removed automatically.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><a href="PG_06g_Data_Sharing.html"><b>Data sharing</b></a></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pkey(key):</b> Read the 'key' in the input event, making previously-calculated values available for other streams.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Penvir(envir, pattern, independent):</b> Run the pattern inside a given environment.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pfset(func, pattern):</b> Assign default values into the input event before getting each result event out of the given pattern.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Plambda(pattern, scope):</b> Creates a "function scope" into which values are assigned using Plet, and from which values are retrieved with Pget. Pget is somewhat like Pkey, except that its scope is strictly internal, hidden from the caller. With Pkey, the source values remain present in the event returned to the caller.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_05_Math_on_Patterns.html"><span class="s3">PG_05_Math_on_Patterns</span></a></span></p>
-<p class="p5"><span class="s2">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06a_Repetition_Contraint_Patterns.html"><span class="s3">PG_06a_Repetition_Contraint_Patterns</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_06a_Repetition_Contraint_Patterns.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_06a_Repetition_Contraint_Patterns.html
deleted file mode 100644
index a74976b..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_06a_Repetition_Contraint_Patterns.html	
+++ /dev/null
@@ -1,158 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #606060}
-span.s5 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Repetition and Constraint patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">These are essentially flow of control patterns. Each one takes a source pattern and repeats values from it, or stops the stream early based on a preset constraint.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Repetition patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">These patterns allow you to repeat single values, or (in the case of Pn) entire patterns.</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pclutch(pattern, connected):</b> If the 'connected' pattern is true, <a href="../Patterns/Pclutch.html"><span class="s1">Pclutch</span></a> returns the next value from 'pattern'. If 'connected' is false, the previous pattern value is repeated. It's like a clutch in a car: when engaged, the pattern moves forward; when disconnected, it stays where it is.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pn(pattern, repeats):</b> Embeds the source pattern 'repeats' times: simple repetition. This also works on single values: Pn(1, 5) outputs the number 1 5 times.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pstutter(n, pattern):</b> 'n' and 'pattern' are both patterns. Each value from 'pattern' is repeated 'n' times. If 'n' is a pattern, each value can be repeated a different number of times.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>PdurStutter(n, pattern):</b> Like Pstutter, except the pattern value is divided by the number of repeats (so that the total time for the repeat cycle is the duration value from the source pattern).</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">See also <a href="../Patterns/Pstep.html"><span class="s1">Pstep</span></a>, described in <a href="PG_06b_Time_Based_Patterns.html"><span class="s1">PG_06b_Time_Based_Patterns</span></a>. Pstep can be used like <a href="../Patterns/Pstutter.html"><span class="s1">Pstutter</span></a>, but repetition is controlled by time rather than number of repeats per item.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// play repeated notes with a different rhythmic value per new pitch</p>
-<p class="p5">// using Pstutter</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// making 'n' a separate stream so that degree and dur can share it</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\n</span>, <span class="s1">Pwhite</span>(3, 10, <span class="s1">inf</span>),</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\degree</span><span class="s2">, </span>Pstutter<span class="s2">(</span>Pkey<span class="s2">(</span><span class="s3">\n</span><span class="s2">), </span>Pwhite<span class="s2">(-4, 11, </span>inf<span class="s2">)),</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pstutter</span>(<span class="s1">Pkey</span>(<span class="s3">\n</span>), <span class="s1">Pwhite</span>(0.1, 0.4, <span class="s1">inf</span>)),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\legato<span class="s2">, 0.3</span></p>
-<p class="p6">).play;</p>
-<p class="p9"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p5">// using Pfin / Pn</p>
-<p class="p5">// Pn loops the Pbind infinitely</p>
-<p class="p5">// Plazy builds a new Pbind for each iteration</p>
-<p class="p5">// Pfin cuts off the Pbind when it's time for a new value</p>
-<p class="p9"><br></p>
-<p class="p6">p = <span class="s1">Pn</span>(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Plazy<span class="s2"> {</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pfin</span>(rrand(3, 10), rrand(-4, 11)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, rrand(0.1, 0.4)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>},</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>inf</p>
-<p class="p6">).play;</p>
-<p class="p9"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p5">// using Pclutch</p>
-<p class="p5">// the rule is, when degree changes, dur should change also</p>
-<p class="p5">// if Pdiff returns 0, degree has not changed</p>
-<p class="p5">// so here, nonzero Pdiff values "connect" the clutch and allow a new dur to be generated</p>
-<p class="p5">// otherwise the old one is held</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pstutter</span>(<span class="s1">Pwhite</span>(3, 10, <span class="s1">inf</span>), <span class="s1">Pwhite</span>(-4, 11, <span class="s1">inf</span>)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pclutch</span>(<span class="s1">Pwhite</span>(0.1, 0.4, <span class="s1">inf</span>), <span class="s1">Pdiff</span>(<span class="s1">Pkey</span>(<span class="s3">\degree</span>)).abs > 0),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>\legato<span class="s2">, 0.3</span></p>
-<p class="p6">).play;</p>
-<p class="p9"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p4"><b>Constraint (or interruption) patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Instead of prolonging a stream by repetition, these patterns use different methods to stop a stream dynamically. They are especially useful for modularizing pattern construction. One section of your code might be responsible for generating numeric or event patterns. By using constraint patterns, that part of the code doesn't have to know how many events or how long to play. It can just return an infinite pattern, and another part of the code can wrap it in one of these to stop it based on the appropriate condition.</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pfin(count, pattern): </b>Returns exactly 'count' values from the source pattern, then stops. (<a href="../Patterns/Pfin.html"><span class="s1">Pfin</span></a> has a cousin, Pfinval, that is deprecated.)</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pconst(sum, pattern, tolerance):</b> Output numbers until the sum goes over a predefined limit. The last output value is adjusted so that the sum matches the limit exactly.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pfindur(dur, pattern, tolerance):</b> Like Pconst, but applying the "constrain" behavior to the event's rhythmic values. The source pattern runs up to the specified duration, then stops. This is very useful if you know how long a musical behavior should go on, but the number of events to fill up that time is not known.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p5">// Two variants on the same thing</p>
-<p class="p5">// Use Pconst or Pfindur to create 4-beat segments with randomized rhythm</p>
-<p class="p5">// Pconst and Pfindur both can ensure the total rhythm doesn't go above 4.0</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s2">p = </span>Pn<span class="s2">(</span>Pbind<span class="s2">(</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// always a low C on the downbeat</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([-7, <span class="s1">Pwhite</span>(0, 11, <span class="s1">inf</span>)], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pconst</span>(4, <span class="s1">Pwhite</span>(1, 4, <span class="s1">inf</span>) * 0.25)</p>
-<p class="p6">), <span class="s1">inf</span>).play;</p>
-<p class="p9"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s2">p = </span>Pn<span class="s2">(</span>Pfindur<span class="s2">(4, </span>Pbind<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseq</span>([-7, <span class="s1">Pwhite</span>(0, 11, <span class="s1">inf</span>)], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwhite</span>(1, 4, <span class="s1">inf</span>) * 0.25</p>
-<p class="p6">)), <span class="s1">inf</span>).play;</p>
-<p class="p9"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Psync(pattern, quant, maxdur, tolerance):</b> Like Pfindur, but does not have a fixed duration limit. Instead, it plays until either it reaches maxdur (in which case it behaves like Pfindur, adjusting the last event so the total duration matches maxdur), or the pattern stops early and the last event is rounded up to the next integer multiple of quant. This is hard to explain; a couple of examples might make it clearer.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p5">// in this case, the pattern stops by reaching maxdur</p>
-<p class="p5">// elapsed time = 4</p>
-<p class="p6"><span class="s1">var</span><span class="Apple-tab-span">	</span>startTime;</p>
-<p class="p7"><span class="s2">p = (</span>Psync<span class="s2">(</span>Pbind<span class="s2">(</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\dur</span><span class="s2">, 0.25,<span class="Apple-tab-span">	</span></span>// total duration = infinite</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\time</span>, <span class="s1">Pfunc</span> { startTime = startTime ? (<span class="s1">thisThread</span>.clock.beats.debug(<span class="s4">"time"</span>)) }</p>
-<p class="p6">), 1, 4) ++ <span class="s1">Pfuncn</span>({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">thisThread</span>.clock.beats.debug(<span class="s4">"finish time"</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(<span class="s1">thisThread</span>.clock.beats - startTime).debug(<span class="s4">"elapsed"</span>);</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>nil</p>
-<p class="p6">}, 1)).play;</p>
-<p class="p6">)</p>
-<p class="p9"><br></p>
-<p class="p6">(</p>
-<p class="p5">// in this case, the pattern stops itself before maxdur (4)</p>
-<p class="p5">// the Pbind's duration (1.25) gets rounded up to 2 (next multiple of 1)</p>
-<p class="p6"><span class="s1">var</span><span class="Apple-tab-span">	</span>startTime;</p>
-<p class="p7"><span class="s2">p = (</span>Psync<span class="s2">(</span>Pbind<span class="s2">(</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\dur</span><span class="s2">, </span><span class="s1">Pn</span><span class="s2">(0.25, 5),<span class="Apple-tab-span">	</span></span>// total duration = 0.25 * 5 = 1.25</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">\time</span>, <span class="s1">Pfunc</span> { startTime = startTime ? (<span class="s1">thisThread</span>.clock.beats.debug(<span class="s4">"time"</span>)) }</p>
-<p class="p6">), 1, 4) ++ <span class="s1">Pfuncn</span>({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">thisThread</span>.clock.beats.debug(<span class="s4">"finish time"</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(<span class="s1">thisThread</span>.clock.beats - startTime).debug(<span class="s4">"elapsed"</span>);</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>nil</p>
-<p class="p6">}, 1)).play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s2">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_060_Filter_Patterns.html"><span class="s5">PG_060_Filter_Patterns</span></a></span></p>
-<p class="p10"><span class="s2">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06b_Time_Based_Patterns.html"><span class="s5">PG_06b_Time_Based_Patterns</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_06b_Time_Based_Patterns.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_06b_Time_Based_Patterns.html
deleted file mode 100644
index e2b7306..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_06b_Time_Based_Patterns.html	
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline ; color: #0000bf}
-span.s5 {color: #bf0000}
-span.s6 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Time-based patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">"Time-based patterns" here are value patterns that use time as part of their calculation. Event patterns are naturally time-driven when played on a clock. (Technically it's possible to request events from an event stream without running it in an EventStreamPlayer, but this is not typical usage.)</p>
-<p class="p2"><br></p>
-<p class="p3">Most of these patterns work by remembering the clock's current time at the moment the pattern is embedded into a value stream. The time value used for calculation is, then, the clock's time at the moment of evaluation minus the starting time -- that is, the number of beats elapsed since the patterns started embedding. If the pattern is embedded several times, the starting time is also reset so that the pattern begins again from the beginning.</p>
-<p class="p2"><br></p>
-<p class="p3">There is nothing to prevent using these patterns outside of a scheduling context. In these documents, that context would be an event pattern played on a clock, but streams made from these patterns can be used in scheduled routines or functions as well. Only a scheduling context can ensure precise timing of requests for values.</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ptime(repeats):</b> Returns the amount of time elapsed since embedding. One nice trick with this pattern is to stop a value stream/pattern after a certain amount of time.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">This <a href="../Patterns/Pif.html"><span class="s1">Pif</span></a> pattern uses Ptime to get values from the true branch for exactly 4 beats after the first value is requested. After that, the condition will be false and Pif reverts to the false branch, which is nil. That causes the stream to stop. (This is like <a href="../Patterns/Pfindur.html"><span class="s1">Pfindur</span></a> for event patterns, but Pif/Ptime works for value patterns as well.)</p>
-<p class="p2"><br></p>
-<p class="p4">// This is a really useful trick: like Pfindur but for value patterns</p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pif</span>(<span class="s1">Ptime</span>(<span class="s1">inf</span>) < 4.0, <span class="s1">Pwhite</span>(-4, 11, <span class="s1">inf</span>)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pstep(levels, durs, repeats):</b> Repeat a 'level' value for its corresponding duration, then move to the next.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pseg(levels, durs, curves, repeats):</b> Similar to Pstep, but interpolates to the next value instead of stepping abruptly at the end of the duration. Interpolation is linear by default, but any envelope segment curve can be used. Levels, durs and curves should be patterns.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p4">// curve is 5 - here's what the curve looks like, ascending first then descending</p>
-<p class="p5"><span class="s1">Env</span>(#[0, 1, 0], #[1, 1], 5).plot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// using \note b/c Pseg will give fractional note numbers</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// can't use \degree because it handles non-integers differently</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>\note<span class="s3">, </span><span class="s1">Pseg</span><span class="s3">(</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Pwhite</span><span class="s3">(-7, 19, </span><span class="s1">inf</span><span class="s3">),<span class="Apple-tab-span">	</span></span>// chromatic note numbers</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// alternate version for diatonic numbers</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// PdegreeToKey does the same conversion as \degree --> \note</p>
-<p class="p4">//<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>PdegreeToKey(Pwhite(-4, 11, inf), Pkey(\scale), 12),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pwhite</span>(1, 4, <span class="s1">inf</span>) * 0.5,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.125</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Using envelopes as patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4"><a href="../../Control/Env.html">Env</a></span> supports the stream protocol: 'asStream' turns an Env into a stream, and timed values can be obtained from it using 'next'. The envelope stream returns the value the envelope would have at the elapsed time, in the same way .at(time) returns the envelope value at the specified time.</p>
-<p class="p2"><br></p>
-<p class="p5">e = <span class="s1">Env</span>.linen(1, 1, 1);</p>
-<p class="p5">e.at(2);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// == 1</span></p>
-<p class="p5">e.at(2.5);<span class="Apple-tab-span">	</span><span class="s5">// == 0.5</span></p>
-<p class="p6"><br></p>
-<p class="p4">// print envelope values</p>
-<p class="p5">r = fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>stream = e.asStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>12.do({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream.next.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">};</p>
-<p class="p6"><br></p>
-<p class="p4">// Use an envelope to pan notes from left to right and back</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(-4, 11, 32),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\pan</span>, <span class="s1">Env</span>(#[-1, 1, -1], #[2, 2], <span class="s2">\sin</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.125</p>
-<p class="p5">).play;</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">The releaseNode and loopNode envelope parameters do not take effect, because they are meaningful only when used in a Synth with a gated EnvGen.</p>
-<p class="p2"><br></p>
-<p class="p3">When the envelope ends, the stream will hold the final level indefinitely. The <span class="s1">Pif</span>(<span class="s1">Ptime</span>(<span class="s1">inf</span>) < totalTime, <span class="s1">Env</span>(...)) trick can make it stop instead.</p>
-<p class="p2"><br></p>
-<p class="p4">// Use an envelope to pan notes from left to right and back</p>
-<p class="p4">// Plays one cycle</p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// change to inf: we don't need to know exactly how many events are needed</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(-4, 11, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\pan</span>, <span class="s1">Pif</span>(<span class="s1">Ptime</span>(<span class="s1">inf</span>) <= 4.0, <span class="s1">Env</span>(#[-1, 1, -1], #[2, 2], <span class="s2">\sin</span>)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.125</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p6"><br></p>
-<p class="p4">// To keep looping the envelope, wrap Pif inside Pn</p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(-4, 11, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\pan</span>, <span class="s1">Pn</span>(<span class="s1">Pif</span>(<span class="s1">Ptime</span>(<span class="s1">inf</span>) <= 4.0, <span class="s1">Env</span>(#[-1, 1, -1], #[2, 2], <span class="s2">\sin</span>)), <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.125</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06a_Repetition_Contraint_Patterns.html"><span class="s6">PG_06a_Repetition_Contraint_Patterns</span></a></span></p>
-<p class="p9"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06c_Composition_of_Patterns.html"><span class="s6">PG_06c_Composition_of_Patterns</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_06c_Composition_of_Patterns.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_06c_Composition_of_Patterns.html
deleted file mode 100644
index 660c698..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_06c_Composition_of_Patterns.html	
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {text-decoration: underline ; color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #0000bf}
-span.s7 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Adding values to a base event pattern</b></p>
-<p class="p2"><b>(Or, “Pattern Composition”)</b></p>
-<p class="p3"><br></p>
-<p class="p4">One way to use patterns is to write everything into the pattern up front. This has the advantage of clarity and ease of understanding. Another way is to modularize the behavior by creating smaller, simpler patterns and combining their results into single events that have keys and values from all the component patterns.</p>
-<p class="p3"><br></p>
-<p class="p4">This is related to the computer science concept of "function composition," in which a complex calculation can be written not as a single large function, but as several smaller functions that are then chained together into a single function. Since Functions are normal objects in SuperCollider, it's easy to do an operation on a function that returns a composite function (which may then be used like any other function). <a href="http://en.wikipedia.org/wiki/Function_composition_(computer_science)"><span class="s1">http://en.wikipedia.org/wiki/Function_composition_(computer_science)</span></a></p>
-<p class="p3"><br></p>
-<p class="p4">In mathematics, the <b>·</b> operator represents function composition.</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>f(x) = x + 1</p>
-<p class="p4"><span class="Apple-tab-span">	</span>g(x) = x * 2</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>g · f = g(f(x)) = (x + 1) * 2</p>
-<p class="p3"><br></p>
-<p class="p4">g · f means to evaluate f first, then pass its result to g. The · operator is written as <> in SuperCollider.</p>
-<p class="p3"><br></p>
-<p class="p5">f = { <span class="s2">|x|</span> x + 1 };</p>
-<p class="p5">g = { <span class="s2">|x|</span> x * 2 };</p>
-<p class="p6"><br></p>
-<p class="p5">h = (g <> f);</p>
-<p class="p5">--> a Function</p>
-<p class="p6"><br></p>
-<p class="p5">h.value(1);</p>
-<p class="p7"><span class="s3">--> 4<span class="Apple-tab-span">	</span></span>// == (1+1) * 2</p>
-<p class="p6"><br></p>
-<p class="p5">(f <> g).value(1)</p>
-<p class="p7"><span class="s3">--> 3<span class="Apple-tab-span">	</span></span>// == (1*2) + 1</p>
-<p class="p6"><br></p>
-<p class="p7">// g · f == g(f(x)) -- f is evaluated first, and its result is passed to g</p>
-<p class="p5">g.value(f.value(1));</p>
-<p class="p5">--> 4</p>
-<p class="p3"><br></p>
-<p class="p4">Event patterns can be similarly composed.</p>
-<p class="p3"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pbindf(pattern, pairs):</b> Adds new key-value pairs onto a pre-existing Pbind-style pattern. Pbindf(Pbind(\a, patternA), \b, patternB, \c, patternC) gets the same result as Pbind(\a, patternA, \b, patternB, \c, patternC).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pchain(patterns):</b> Chains separate Pbind-style patterns together, so that all their key-value pairs go into the same event. For example, if one part of your code creates a Pbind instance a = Pbind(\a, patternA) and another part creates b = Pbind(\b, patternB, \c, patternC), you could append \b and \c into the \a result using Pchain(b, a). The subpatterns evaluate in reverse order, in keeping with function composition notation.</li>
-</ul>
-<p class="p3"><br></p>
-<p class="p4">For musical purposes, you could have one part of your code create a pattern defining rhythm and another part defining pitch material, then combine them with <a href="../Patterns/Pchain.html"><span class="s4">Pchain</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p5">~rhythm = <span class="s2">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s2">Pwrand</span>(#[0.125, 0.25, 0.5], #[0.3, 0.5, 0.2], <span class="s2">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\legato</span>, <span class="s2">Pwrand</span>(#[0.1, 0.6, 1.01], #[0.1, 0.3, 0.6], <span class="s2">inf</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5">);</p>
-<p class="p5">~melody = <span class="s2">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s2">Pwhite</span>(-4, 11, <span class="s2">inf</span>)</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p5">p = <span class="s2">Pchain</span>(~melody, ~rhythm).play;</p>
-<p class="p5">p.stop;</p>
-<p class="p3"><br></p>
-<p class="p4">That in itself has some good potential for algorithmic composition. Introducing <a href="../../Libraries/JITLib/Patterns/EventPatternProxy.html"><span class="s4">EventPatternProxy</span></a> into the mix makes it possible to swap different melody and rhythm components in and out on the fly, with no interruption. We can even change the type of pattern (Pbind, Pmono, PmonoArtic) with no ill effect.</p>
-<p class="p3"><br></p>
-<p class="p8"><span class="s3">~rhythm = </span>EventPatternProxy<span class="s3">(</span>Pbind<span class="s3">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s2">Pwrand</span>(#[0.125, 0.25, 0.5], #[0.3, 0.5, 0.2], <span class="s2">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\legato</span>, <span class="s2">Pwrand</span>(#[0.1, 0.6, 1.01], #[0.1, 0.3, 0.6], <span class="s2">inf</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5">));</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s3">~melody = </span>EventPatternProxy<span class="s3">(</span>Pbind<span class="s3">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s2">Pwhite</span>(-4, 11, <span class="s2">inf</span>)</p>
-<p class="p5">));</p>
-<p class="p6"><br></p>
-<p class="p5">p = <span class="s2">Pchain</span>(~melody, ~rhythm).play;</p>
-<p class="p6"><br></p>
-<p class="p5">~melody.source = <span class="s2">PmonoArtic</span>(<span class="s5">\default</span>, <span class="s5">\degree</span>, <span class="s2">Pseries</span>(4, <span class="s2">Prand</span>(#[-1, 1], <span class="s2">inf</span>), <span class="s2">inf</span>).fold(-4, 11));</p>
-<p class="p6"><br></p>
-<p class="p5">~melody.source = <span class="s2">Pbind</span>(<span class="s5">\degree</span>, <span class="s2">Pseries</span>(4, <span class="s2">Pwrand</span>(#[-2, -1, 1, 2], #[0.3, 0.2, 0.2, 0.3], <span class="s2">inf</span>), <span class="s2">inf</span>).fold(-4, 11));</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><b>Pset and cousins</b></p>
-<p class="p3"><br></p>
-<p class="p4">A group of pattern classes allow single event keys to be overwritten, or one addition or multiplication to be performed. Pkey, in combination with the Pchain or Pbindf "pattern composition" classes, can do everything the following classes can do (though this alternate notation may be more convenient in certain cases).</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Pset(name, value, pattern):</b> Get one event from 'pattern', and then put the next value from the 'value' pattern into the 'name' key. If the source pattern specifies a value for the same name, the value from the source will be replaced with the new one.</p>
-<p class="p4"><b>Padd(name, value, pattern):</b> After getting the next event, replace the 'name' value with its existing value + the next number from 'value'.</p>
-<p class="p4"><b>Pmul(name, value, pattern):</b> After getting the next event, replace the 'name' value with its existing value * the next number from 'value'.</p>
-<p class="p3"><br></p>
-<p class="p4">These patterns remain in the library mainly for reasons of backward compatibility, since their behavior can be replicated easily using Pbindf.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Pset</b>(name, value, pattern) == <b>Pbindf</b>(pattern, <b>name, value</b>)</p>
-<p class="p4"><b>Padd</b>(name, value, pattern) == <b>Pbindf</b>(pattern, <b>name, Pkey(name) + value</b>)</p>
-<p class="p4"><b>Pmul</b>(name, value, pattern) == <b>Pbindf</b>(pattern, name, <b>Pkey(name) * value</b>)</p>
-<p class="p3"><br></p>
-<p class="p4">Psetpre, Paddpre, and Pmulpre reverse the order of evaluation. Pchain is able to duplicate this functionality.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Psetpre(name, value, pattern):</b> Get the next 'value' and put it into the event prototype before evaluating 'pattern'.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Psetpre</b>(name, value, pattern) == <b>Pchain</b>(pattern, <b>Pbind(name, value)</b>);</p>
-<p class="p4"><b>Paddpre</b>(name, value, pattern) == <b>Pchain</b>(pattern, <b>Pbind(name, Pkey(name) + value)</b>);</p>
-<p class="p4">Similar for Pmulpre</p>
-<p class="p3"><br></p>
-<p class="p4">A third group -- <a href="../Patterns/Psetp.html"><span class="s6">Psetp</span></a>, <a href="../Patterns/Paddp.html"><span class="s6">Paddp</span></a>, <a href="../Patterns/Pmulp.html"><span class="s6">Pmulp</span></a> -- behave slightly differently, nesting pattern evaluation.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p9"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06b_Time_Based_Patterns.html"><span class="s7">PG_06b_Time_Based_Patterns</span></a></span></p>
-<p class="p9"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06d_Parallel_Patterns.html"><span class="s7">PG_06d_Parallel_Patterns</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_06d_Parallel_Patterns.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_06d_Parallel_Patterns.html
deleted file mode 100644
index 39c9d93..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_06d_Parallel_Patterns.html	
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {text-decoration: underline ; color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.s8 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Parallelizing event patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">There are a couple of different ways to have several patterns playing at the same time. The most obvious is to play them separately. The patterns' events get scheduled independently on their clock(s) and run concurrently. None of these patterns need to have any knowledge of the others. One advantage of this approach is that the patterns can be stopped and started independently.</p>
-<p class="p2"><br></p>
-<p class="p3">The other is to combine them into a parallel stream. The result is a single pattern object that can be played or stopped only as one unit. Some degree of interactive control is lost, but there are times when merging several patterns is necessary -- for instance, converting a pattern into a Score object for NRT rendering.</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ppar(list, repeats):</b> Start each of the event patterns in the 'list' at the same time. When the last one finishes, the <a href="../Patterns/Ppar.html"><span class="s1">Ppar</span></a> also stops. If repeats > 1, all the subpatterns start over again from the beginning.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ptpar(list, repeats):</b> Here, the list consists of [timeOffset0, pattern0, timeOffset1, pattern1...]. Each pattern starts after the number of beats given as its time offset. The patterns can start at different times relative to each other.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgpar(list, repeats):</b> Like Ppar, but it creates a separate group for each subpattern.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pgtpar(list, repeats):</b> This is like Ptpar with separate groups for the subpatterns.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">An excellent example of <a href="../Patterns/Ppar.html"><span class="s2">Ppar</span></a> and <a href="../Patterns/Pseq.html"><span class="s2">Pseq</span></a> used together to structure an entire piece (Kraftwerk's "Spacelab") can be found in <a href="../../../examples/pieces/spacelab.scd"><span class="s3">examples/pieces/spacelab.scd</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Dynamic parallelizing</b></p>
-<p class="p2"><br></p>
-<p class="p3">Ppar and its cousins are good for a fixed set of parallel patterns -- that is, you need to know in advance how many patterns will be parallelized. Once the parallel pattern starts, there is no way to add more streams to it. To keep adding streams, use <a href="../Patterns/Pspawner.html"><span class="s4">Pspawner</span></a> and <a href="../Patterns/Pspawn.html"><span class="s4">Pspawn</span></a>. For the purpose of this overview, some basic features will be illustrated in a couple of simple examples. These classes have more capabilities; refer to their help files for specifics.</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pspawner(routineFunc):</b> The function is run in a Routine. A Spawner object gets passed into this Routine, and this object is used to add or remove streams to/from the parallel stream. New patterns can be added in sequence or in parallel.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pspawn(pattern, spawnProtoEvent):</b> Supports most of the features of Pspawner, but uses a pattern to control the Spawner object instead of a Routine function.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">This example uses <a href="../Patterns/Pspawner.html"><span class="s1">Pspawner</span></a> to trigger overlapping scale segments at different speeds. Unlike Ppar, which could handle a fixed number before stopping, Pspawner can keep going indefinitely.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s5">p = </span><span class="s6">Pspawner</span><span class="s5">({ </span><span class="s6">|sp|</span><span class="s5"><span class="Apple-tab-span">	</span></span>// sp = the Spawner object</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// run a new pattern in parallel</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the pattern is finite</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// after a few events, it stops and the Pspawner forgets about it</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.par(<span class="s6">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\degree</span>, <span class="s6">Pseries</span>(rrand(-5, 7), #[-1, 1].choose, rrand(4, 7)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\pan</span>, rrand(-1.0, 1.0),</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">\dur</span><span class="s5">, rrand(0.1, 0.3)<span class="Apple-tab-span">	</span></span>// duration is chosen once for each pattern</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>));</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// tell the Spawner to wait a bit before the next pattern goes</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// DO NOT use numBeats.wait for this!</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Everything must go through the Spawner</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(rrand(1, 4) * 0.25);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">The same, written using <a href="../Patterns/Pspawn.html"><span class="s1">Pspawn</span></a>:</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p8"><span class="s5">p = </span>Pspawn<span class="s5">(</span>Pbind<span class="s5">(</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s7">\method</span><span class="s5">, </span><span class="s7">\par</span><span class="s5">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// embed patterns in parallel</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// generate the subpattern in a Pfunc (so there's a new pattern each time)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Pfunc returns the pattern without rendering the stream</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// -- important for Pspawn</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// See the Pspawn helpfile for other ways to embed patterns</p>
-<p class="p9"><span class="s5"><span class="Apple-tab-span">	</span></span>\pattern<span class="s5">, </span><span class="s6">Pfunc</span><span class="s5"> {</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s5">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\degree</span>, <span class="s6">Pseries</span>(rrand(-5, 7), #[-1, 1].choose, rrand(4, 7)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">\pan</span>, rrand(-1.0, 1.0),</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">\dur</span><span class="s5">, rrand(0.1, 0.3)<span class="Apple-tab-span">	</span></span>// duration is chosen once for each pattern</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>},</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// The \delta key is used automatically for the spawner.wait() call</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">\delta</span>, <span class="s6">Pwhite</span>(1, 4, <span class="s6">inf</span>) * 0.25</p>
-<p class="p5">)).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s5">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06c_Composition_of_Patterns.html"><span class="s8">PG_06c_Composition_of_Patterns</span></a></span></p>
-<p class="p10"><span class="s5">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06e_Language_Control.html"><span class="s8">PG_06e_Language_Control</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_06e_Language_Control.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_06e_Language_Control.html
deleted file mode 100644
index 4ed76cb..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_06e_Language_Control.html	
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.s5 {font: 10.0px Monaco}
-span.s6 {color: #606060}
-span.s7 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Language control methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">Some patterns mimic language-style control methods: conditionals (<a href="../Patterns/Pif.html"><span class="s1">Pif</span></a>), loops (<a href="../Patterns/Pwhile.html"><span class="s1">Pwhile</span></a>) and error cleanup (<a href="../Patterns/Pprotect.html"><span class="s1">Pprotect</span></a>).</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pif(condition, iftrue, iffalse, default):</b> Evaluates a pattern 'condition' that returns true or false. Then, one value is taken from the true or false branch before going back to evaluate the condition again. The 'default' value or pattern comes into play when the true or false branch stops producing values (returns nil). If the default is not given, Pif returns control to the parent upon nil from either branch.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p4">p = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pwhite</span>(0, 11, <span class="s2">inf</span>),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// odd numbered scale degrees get a shorter rhythmic value</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Pif</span>(<span class="s2">Pkey</span>(<span class="s3">\degree</span>).odd, 0.25, 0.5)</p>
-<p class="p4">).play;</p>
-<p class="p6"><br></p>
-<p class="p4">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pseed(randSeed, pattern):</b> Random number generators depend on seed values; setting a specific seed produces a repeatable stream of pseudorandom numbers. <a href="../Patterns/Pseed.html"><span class="s1">Pseed</span></a> sets the random seed before embedding 'pattern', effectively restarting the random number generator at the start of the pattern.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p4">p = <span class="s2">Pbind</span>(</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the random seed is generated once, when creating the Pattern object</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// so the same random seed is used every time whenever this pattern object plays</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseed</span>(0x7FFFFFFF.rand, <span class="s2">Pseries</span>({ rrand(-7, 0) }, <span class="s2">Pwhite</span>(1, 3, <span class="s2">inf</span>), { rrand(4, 10) })),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.25</p>
-<p class="p4">);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s4">q = p.play;<span class="Apple-tab-span">	</span></span>// uses one seed</p>
-<p class="p8">q.stop;</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s4">r = p.play;<span class="Apple-tab-span">	</span></span>// uses the same seed</p>
-<p class="p8">r.stop;</p>
-<p class="p9"><br></p>
-<p class="p7">// reexecute the p = Pbind... and the seed will be different</p>
-<p class="p6"><br></p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pprotect(pattern, func):</b> Like the 'protect' error handling method, if an error occurs while getting the next value from the pattern, the function will be evaluated before the error interrupts execution.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Ptrace(pattern, key, printStream, prefix):</b> For debugging, Ptrace prints every return value. Is your pattern really doing what you think? This will tell you. A Ptrace is created automatically by the 'trace' message: <span class="s5">aPattern.trace(key, printStream, prefix)</span> --> <span class="s5">Ptrace(aPattern, key, printStream, prefix)</span>.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Pwhile(func, pattern):</b> Like while: as long as the function evaluates to true, the pattern is embedded. The function is checked once at the beginning and thereafter when the pattern comes to an end. If it's applied to an infinite pattern, there's no looping because the pattern never gives control back.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p5">// Pwhile and Ptrace</p>
-<p class="p4">(</p>
-<p class="p4">~go = <span class="s2">true</span>;</p>
-<p class="p4">p = <span class="s2">Pwhile</span>({ ~go }, <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseries</span>({ rrand(-7, 0) }, <span class="s2">Pwhite</span>(1, 3, <span class="s2">inf</span>), { rrand(4, 10) })</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.trace(prefix: <span class="s6">"degree: "</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.25</p>
-<p class="p4">)).play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s4">~go = </span><span class="s2">false</span><span class="s4">;<span class="Apple-tab-span">	</span></span>// will stop the whole pattern when the Pbind comes to an end</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p10"><span class="s4">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06d_Parallel_Patterns.html"><span class="s7">PG_06d_Parallel_Patterns</span></a></span></p>
-<p class="p10"><span class="s4">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06f_Server_Control.html"><span class="s7">PG_06f_Server_Control</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_06f_Server_Control.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_06f_Server_Control.html
deleted file mode 100644
index e9c4591..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_06f_Server_Control.html	
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-li.li3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.s5 {color: #bf0000}
-span.s6 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-ul.ul1 {list-style-type: disc}
-</style>
-</head>
-<body>
-<p class="p1"><b>Server control methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">A handful of filter patterns can isolate signals on a private bus and/or group, and also apply effect synths. A nice feature is that resources allocated at the beginning of the pattern are removed at the end. This is especially useful for effects, where you don't want to have a lot of effect synths left over taking up CPU but not processing audio.</p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>Pbus(pattern, dur, fadeTime, numChannels, rate):</b> Creates a private group and bus for the synths played by the pattern. The group and bus are released when the pattern stops. Useful for isolating signals from different patterns.</li>
-<li class="li3"><b>Pgroup(pattern):</b> Creates a private group (without private bus) for the pattern's synths.</li>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>Pfx(pattern, fxname, pairs)</b></li>
-<li class="li3"><b>Pfxb(pattern, fxname, pairs):</b> Both of these patterns play an effect synth at the tail of the target group. This synth should read from the bus identified by the 'out' argument, and write the processed signal onto the same bus using either ReplaceOut or XOut. Pfx uses whatever bus and group are specified in the incoming event. Pfxb allocates a separate bus and group for the effect and the pattern.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">There are a lot of permutations when it comes to signal routing and effect management, too many to discuss in depth here. Some of the main scenarios are:</p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3">Separate effects that should apply individually: the patterns and effects should be isolated on separate buses. <a href="../Patterns/Pfxb.html"><span class="s1">Pfxb</span></a> handles this isolation automatically: two patterns like <span class="s1">Pfxb</span>(<span class="s1">Pbind</span>(...), <span class="s2">\fxname</span>, <span class="s2">\effectargName</span>, value, <span class="s2">\name</span>, value...) will play on separate buses and their signals will not interfere with each other.</li>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3">Effects that should apply as a chain: both effects should use the same bus, and the effect patterns should be nested to string them together. The outermost effect should use Pfxb to allocate a separate group and bus for this signal chain; inner ones should use <a href="../Patterns/Pfx.html"><span class="s1">Pfx</span></a> to piggyback on the existing bus.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p4">Pfxb<span class="s3">(</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>Pfx<span class="s3">(</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>(event pattern here),</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\synthDefNameOfFirstEffectInChain<span class="s3">,</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>(argument list for the first effect),</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>\synthDefNameOfSecondEffectInChain<span class="s3">,</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>(argument list for the second effect)</p>
-<p class="p3">).play;</p>
-<p class="p2"><br></p>
-<p class="p3">More complex arrangements are possible through nesting, and parallelizing Pfx or Pfxb patterns using <a href="../Patterns/Ppar.html"><span class="s1">Ppar</span></a> and its cousins.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">This example uses Pfxb to isolate a pair of separately-sounding patterns on different buses, and to pass the two signals' streams through separate volume controls. The effect synth, for volume, is kept deliberately simple for the example, but of course it can do any kind of signal processing you like.</p>
-<p class="p2"><br></p>
-<p class="p3">It might seem odd at first to use a gated envelope for an effect, but this is important to keep the signal's integrity. If the gate is not there, the effect synth will be n_free'd (brutally cut off), probably before the nodes played by the source pattern have finished. In this case it would produce a sudden, brief jump in volume at the end. The gate, combined with the one-second release in the envelope, keeps the effect synth around long enough to allow its source synths to become silent first.</p>
-<p class="p2"><br></p>
-<p class="p3">Remember that streams made from patterns don't expose their internals. That means you can't adjust the parameters of an effect synth directly, because you have no way to find out what its node ID is. The example addresses this problem by allocating a couple of control buses for the amplitude values, and mapping the volume synths to those control buses. Then the little GUI needs only to update the control bus values.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">// Demonstrates how Pfxb isolates signals on different buses</p>
-<p class="p7">// The fx synth is a simple volume control here</p>
-<p class="p7">// but it could be more complex</p>
-<p class="p8"><br></p>
-<p class="p9">(</p>
-<p class="p10">SynthDef<span class="s3">(</span><span class="s2">\volumeCtl</span><span class="s3">, { </span>|out, amp = 1, gate = 1|</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig = <span class="s1">In</span>.ar(out, 2) * amp;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>sig = sig * <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>(#[1, 1, 0], #[1, 1], -3, releaseNode: 1), gate, doneAction: 2);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s1">ReplaceOut</span>.ar(out, sig)</p>
-<p class="p9">}).add;</p>
-<p class="p8"><br></p>
-<p class="p9">~vbus1 = <span class="s1">Bus</span>.control(s, 1).set(0.5);</p>
-<p class="p9">~vbus2 = <span class="s1">Bus</span>.control(s, 1).set(0.5);</p>
-<p class="p8"><br></p>
-<p class="p9">~window = <span class="s1">Window</span>.new(<span class="s4">"mixers"</span>, <span class="s1">Rect</span>(10, 100, 320, 60));</p>
-<p class="p9">~window.view.decorator = <span class="s1">FlowLayout</span>(~window.view.bounds, 2 at 2);</p>
-<p class="p9"><span class="s1">EZSlider</span>(~window, 310 at 20, <span class="s4">"low part"</span>, <span class="s2">\amp</span>, { <span class="s1">|ez|</span> ~vbus1.set(ez.value) }, 0.5);</p>
-<p class="p9">~window.view.decorator.nextLine;</p>
-<p class="p9"><span class="s1">EZSlider</span>(~window, 310 at 20, <span class="s4">"high part"</span>, <span class="s2">\amp</span>, { <span class="s1">|ez|</span> ~vbus2.set(ez.value) }, 0.5);</p>
-<p class="p9">~window.front.onClose_({ ~vbus1.free; ~vbus2.free });</p>
-<p class="p9">)</p>
-<p class="p8"><br></p>
-<p class="p9">(</p>
-<p class="p9">p = <span class="s1">Ppar</span>([</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>Pfxb<span class="s3">(</span>Pbind<span class="s3">(</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0, 7, 4, 3, 9, 5, 1, 4], <span class="s1">inf</span>),</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\octave<span class="s3">, 4,</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.5</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>), </span><span class="s2">\volumeCtl</span><span class="s3">, </span><span class="s2">\amp</span><span class="s3">, ~vbus1.asMap),<span class="Apple-tab-span">	</span></span>// map to control bus here</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>Pfxb<span class="s3">(</span>Pbind<span class="s3">(</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(0, 11, <span class="s1">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25</p>
-<p class="p9"><span class="Apple-tab-span">	</span>), <span class="s2">\volumeCtl</span>, <span class="s2">\amp</span>, ~vbus2.asMap)<span class="Apple-tab-span">	</span><span class="s5">// ... and here</span></p>
-<p class="p9">]).play;</p>
-<p class="p9">)</p>
-<p class="p8"><br></p>
-<p class="p9">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Third-party extension alert:</b> Pfx and its cousins work on the philosophy that a signal routing arrangement should be created as needed (when its subpattern is playing) and removed immediately when the pattern is finished. Another approach is to treat signal routing and effects as a persistent infrastructure, created and destroyed under the user's control (not the pattern's). JITLib's proxy system offers some support for this. MixerChannels (in the ddwMixerChannel quark) are a more explicit way. Any pattern can be played on a MixerChannel: <b>aMixer.play(aPattern)</b>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p12"><b>Pproto: Allocating other resources for the duration of a pattern</b></p>
-<p class="p2"><br></p>
-<p class="p3">It's also possible to load sound file or wavetable buffers or play synths as part of the preparation to run a Pbind-style pattern. When the Pbind stops, those resources would be removed automatically from the server.</p>
-<p class="p2"><br></p>
-<p class="p3">The mechanism to do this is a bit unlike most of the other protocols to use the server in SuperCollider. To create the resources, Pproto takes a function in which one or more Event objects contain the instructions to create them. These events should use specific event types, described in Pproto's help file. The pattern is able to clean up the resources because each event has an associated cleanup action (see the event types with cleanup class). Thus, Pproto needs only to remember the events representing the resources, and execute their cleanup actions at the end.</p>
-<p class="p2"><br></p>
-<p class="p3">The Pproto help file has several complex examples that are worth reading. Here is just one simple case that loads the standard a11wlk01.wav sound file and plays fragments from it.</p>
-<p class="p2"><br></p>
-<p class="p9">(</p>
-<p class="p10">SynthDef<span class="s3">(</span><span class="s2">\playbuf</span><span class="s3">, { </span>|bufnum, start, dur = 1, amp = 0.2, out|</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig = <span class="s1">PlayBuf</span>.ar(1, bufnum, <span class="s1">BufRateScale</span>.ir(bufnum), 0, start);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>sig = sig * amp * <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.linen(0.01, dur, 0.01), doneAction: 2);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sig ! 2)</p>
-<p class="p9">}).add;</p>
-<p class="p9">)</p>
-<p class="p8"><br></p>
-<p class="p9">(</p>
-<p class="p9"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p9">p = <span class="s1">Pproto</span>({</p>
-<p class="p9"><span class="Apple-tab-span">	</span>~buf = (type: <span class="s2">\allocRead</span>, path: <span class="s4">"sounds/a11wlk01.wav"</span>).yield;</p>
-<p class="p10"><span class="s3">}, </span>Pbind<span class="s3">(</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\playbuf<span class="s3">,</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// access resources in the protoevent by Pkey</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\bufnum<span class="s3">, </span><span class="s1">Pkey</span><span class="s3">(</span>\buf<span class="s3">),</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pwhite</span>(1, 4, <span class="s1">inf</span>) * 0.25,</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// upper bound of Pwhite is based on duration</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// so that start + (dur * samplerate) never goes past the buffer's end</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s2">\start</span>, <span class="s1">Pwhite</span>(0, 188893 - (<span class="s1">Pkey</span>(<span class="s2">\dur</span>) * 44100), <span class="s1">inf</span>)</p>
-<p class="p9">)).play;</p>
-<p class="p9">)</p>
-<p class="p8"><br></p>
-<p class="p7">// shows a buffer number allocated ('true' ContiguousBlock)</p>
-<p class="p9">s.bufferAllocator.debug;</p>
-<p class="p8"><br></p>
-<p class="p9">p.stop;</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s3">s.bufferAllocator.debug;<span class="Apple-tab-span">	</span></span>// after stop, the buffer is gone</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06e_Language_Control.html"><span class="s6">PG_06e_Language_Control</span></a></span></p>
-<p class="p13"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06g_Data_Sharing.html"><span class="s6">PG_06g_Data_Sharing</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_06g_Data_Sharing.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_06g_Data_Sharing.html
deleted file mode 100644
index 03d2098..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_06g_Data_Sharing.html	
+++ /dev/null
@@ -1,286 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #bf0000}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.s6 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-table.t1 {border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080}
-td.td1 {width: 27.0px; background-color: #cccccc; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080; padding: 2.0px 5.0px 2.0px 5.0px}
-td.td2 {width: 126.0px; background-color: #cccccc; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080; padding: 2.0px 5.0px 2.0px 5.0px}
-td.td3 {width: 276.0px; background-color: #cccccc; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080; padding: 2.0px 5.0px 2.0px 5.0px}
-td.td4 {width: 27.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080; padding: 2.0px 5.0px 2.0px 5.0px}
-td.td5 {width: 126.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080; padding: 2.0px 5.0px 2.0px 5.0px}
-td.td6 {width: 276.0px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080; padding: 2.0px 5.0px 2.0px 5.0px}
-</style>
-</head>
-<body>
-<p class="p1"><b>Sharing data between patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">So far, we've seen patterns that are independent of each other. A single Pbind works on its own information, which is not available to other Pbinds. Also, for instance, the 'degree' pattern in a Pbind is not aware of what the 'dur' pattern is doing. Making these data available adds musical intelligence.</p>
-<p class="p2"><br></p>
-<p class="p3">There are a couple of distinct ways to transmit information from one pattern into another. The first, simpler, technique is to read values from the current event that is already being processed. The second is to pass information from one event pattern into a separate event pattern. Since both are event patterns, they produce different result events and the first technique does not apply.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Reading values from the current event</b></p>
-<p class="p2"><br></p>
-<p class="p3">Within a Pbind, value patterns can easily read from other values that have already been placed into the event. The <a href="../Patterns/Pkey.html"><span class="s1"><b>Pkey</b></span></a> pattern looks up the key in the event currently being processed and returns its value. From there, you can do any other pattern-friendly operation on it: filter patterns, math operators, etc.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pkey(key):</b> Read the 'key' in the input event. Outputs values until the input event doesn't contain the key (i.e., the value is nil). There is no 'repeats' argument. If you need to limit the number of values, wrap Pkey in <a href="../Patterns/Pfin.html"><span class="s1">Pfin</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p5">p = <span class="s1">Pkey</span>(<span class="s2">\a</span>).asStream;</p>
-<p class="p6"><br></p>
-<p class="p7">// The input value is an event with \a = 2, \b = 3; 'next' result is 2</p>
-<p class="p5">p.next((a: 2, b: 3));</p>
-<p class="p6"><br></p>
-<p class="p7">// We can do math on the input event too</p>
-<p class="p5">p = (<span class="s1">Pkey</span>(<span class="s2">\a</span>) * <span class="s1">Pkey</span>(<span class="s2">\b</span>)).asStream;</p>
-<p class="p5">p.next((a: 2, b: 3));<span class="Apple-tab-span">	</span><span class="s3">// returns 6 == 2 * 3</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">In this simple example, staccato vs. legato is calculated based on scale degree: lower notes are longer and higher notes are shorter. That only scratches the surface of this technique!</p>
-<p class="p2"><br></p>
-<p class="p3">Be aware that Pkey can only look backward to keys stated earlier in the Pbind definition. Pbind processes the keys in the order given. In the example, it would not work to put 'legato' first and have it refer to 'degree' coming later, because the degree value is not available yet.</p>
-<p class="p2"><br></p>
-<p class="p7">// something simple - the higher the note, the shorter the length</p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([<span class="s1">Pseries</span>(-7, 1, 14), <span class="s1">Pseries</span>(7, -1, 14)], <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25,</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// \degree is EARLIER in the Pbind</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\legato</span>, <span class="s1">Pkey</span>(<span class="s2">\degree</span>).linexp(-7, 7, 2.0, 0.05)</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Other information storage patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">These patterns represent three different strategies to persist information from one pattern and make it available to others.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Penvir(envir, pattern, independent):</b> The Streams that evaluate patterns are usually Routines, and Routines have the special feature of remembering the Environment that was in force the last time it yielded, and restoring the same environment the next time it's awakened. <a href="../Patterns/Penvir.html"><span class="s1">Penvir</span></a> establishes an environment in which 'pattern' will run. The environment can be initialized with values, or it could be empty at first and populated by elements of its pattern. The environment is separate from the event being processed (actually, the pattern could be either an event or value pattern). Access to the environment depends on function-driven patterns: Pfunc, Pfuncn, Proutine, .collect, .select, .reject, and similar.</p>
-<p class="p2"><br></p>
-<p class="p3">The 'independent' flag specifies whether the environment will be kept separate for each stream made from the Penvir. If true (the default), whenever the Penvir is embedded in a stream, a new environment is created that inherits the initial values provided by 'envir'. If false, the same environment is used for every stream. In that case, the same environment could also be used in different Penvir patterns, and modifications of the environment by one Penvir would carry over to all the others -- hence its usefulness for sharing data.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pfset(func, pattern, cleanupFunc):</b> When embedded, <a href="../Patterns/Pfset.html"><span class="s1">Pfset</span></a> creates an environment and populates it using environment variable assignments in the provided function. For every 'next' call, the values in the preset environment are inserted into the event prototype before evaluating the child pattern. This is one way to set defaults for the pattern. It could also be used to load objects on the server, although this takes some care because the object would be reloaded every time the Pfset is played and you are responsible for freeing objects created this way in the cleanupFunc. (Pproto is another way; see <a href="PG_06f_Server_Control.html"><span class="s1">PG_06f_Server_Control</span></a>.)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p8">SynthDef<span class="s4">(</span><span class="s2">\playbuf</span><span class="s4">, { </span>|bufnum, start, dur = 1, amp = 0.2, out|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig = <span class="s1">PlayBuf</span>.ar(1, bufnum, <span class="s1">BufRateScale</span>.ir(bufnum), 0, start);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = sig * amp * <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.linen(0.01, dur, 0.01), doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sig ! 2)</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p5">p = <span class="s1">Pfset</span>({</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span>~buf = </span><span class="s1">Buffer</span><span class="s4">.read(s, </span>"sounds/a11wlk01.wav"<span class="s4">);</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>0.2.yield;<span class="Apple-tab-span">	</span></span>// sync seems to be incompatible with patterns</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~bufFrames = ~buf.numFrames;</p>
-<p class="p8"><span class="s4">}, </span>Pbind<span class="s4">(</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\playbuf<span class="s4">,</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// access resources in the protoevent by Pkey</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>\bufnum<span class="s4">, </span><span class="s1">Pkey</span><span class="s4">(</span>\buf<span class="s4">),</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pwhite</span>(1, 4, <span class="s1">inf</span>) * 0.25,</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// upper bound of Pwhite is based on duration</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// so that start + (dur * samplerate) never goes past the buffer's end</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\start</span>, <span class="s1">Pwhite</span>(0, <span class="s1">Pkey</span>(<span class="s2">\bufFrames</span>) - (<span class="s1">Pkey</span>(<span class="s2">\dur</span>) * 44100), <span class="s1">inf</span>)</p>
-<p class="p5">), { defer(inEnvir { <span class="s5">"freeing buffer"</span>.postln; ~buf.free }, 1.1) }).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// shows a buffer number allocated ('true' ContiguousBlock)</p>
-<p class="p5">s.bufferAllocator.debug;</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Plambda(pattern, scope):</b> Maintains an 'eventScope' environment, that is attached to events while they're being processed. Values can be assigned into the event scope using Plet(key, pattern, return), and read from scope using Pget(key, default, repeats). Pget is somewhat similar to Pkey, but it has a 'repeats' argument controlling the number of return values as well as a 'default' that will be used if the given key is not found in the event scope.</p>
-<p class="p2"><br></p>
-<p class="p3">A unique feature of <a href="../Patterns/Plambda.html"><span class="s1">Plambda</span></a>/Plet/Pget is the ability for Plet to assign one value to the event scope and return another value to the main event simultaneously. Plet assigns the value from its 'pattern' into the event scope. The 'return' argument is optional; if provided, it gives the value to return back to Pbind.</p>
-<p class="p2"><br></p>
-<p class="p3">Plambda removes the eventScope before returning the final event to the caller. You can see the scope by tracing the inner pattern.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s4">p = </span>Plambda<span class="s4">(</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\a</span>, <span class="s1">Plet</span>(<span class="s2">\z</span>, <span class="s1">Pseries</span>(0, 1, <span class="s1">inf</span>), <span class="s1">Pseries</span>(100, -1, <span class="s1">inf</span>)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\b</span>, <span class="s1">Pget</span>(<span class="s2">\z</span>, 0, <span class="s1">inf</span>) * 2</p>
-<p class="p5"><span class="Apple-tab-span">	</span>).trace(key: <span class="s2">\eventScope</span>, prefix: <span class="s5">"\nscope: "</span>)</p>
-<p class="p5">).asStream;</p>
-<p class="p6"><br></p>
-<p class="p5">p.next(());</p>
-<p class="p2"><br></p>
-<p class="p3">Something similar can be done with Pkey, by using intermediate values in the event that don't correspond to any SynthDef control names. There's no harm in having extra values in the event that its synth will not use; only the required ones are sent to the server. Often this is simpler than Plambda, but there might be cases where Plambda is the only way.</p>
-<p class="p2"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\z</span>, <span class="s1">Pseries</span>(0, 1, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\a</span>, <span class="s1">Pseries</span>(100, -1, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\b</span>, <span class="s1">Pkey</span>(<span class="s2">\z</span>) * 2</p>
-<p class="p5">).asStream;</p>
-<p class="p6"><br></p>
-<p class="p5">p.nextN(5, ()).do(<span class="s1">_</span>.postln);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Communicating values between separate event patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Passing values from one Pbind to another takes a couple of little tricks. First is to store completed events in an accessible location. Neither the Pattern nor the EventStreamPlayer save the finished events; but, calling 'collect' on the pattern attaches a custom action to perform on every result event. Here, we save the event into an environment variable, but it could go into the global library, a declared variable or any other data structure.</p>
-<p class="p2"><br></p>
-<p class="p3">Second, we have to ensure that the source pattern is evaluated before any client patterns that depend on the source's value. The only way to do this is to schedule the source slightly earlier, because items scheduled at the same time on any clock can execute in any order. (There is no priority mechanism to make one thread always run first.) But, this scheduling requirement should not affect audio timing.</p>
-<p class="p2"><br></p>
-<p class="p3">The solution is a timing offset mechanism, which delays the sound of an event by a given number of beats. In the example, the bass pattern is scheduled 0.1 beats before whole-numbered beats (while the chord pattern runs exactly on whole-numbered beats). The bass pattern operates with a timing offset of 0.1, delaying the sound so that it occurs on integer beats. Both patterns sound together in the server, even though their timing is different in the client.</p>
-<p class="p2"><br></p>
-<table cellspacing="0" cellpadding="0" class="t1">
-<tbody>
-<tr>
-<td valign="middle" class="td1">
-<p class="p11"><b>Beat</b></p>
-</td>
-<td valign="middle" class="td2">
-<p class="p11"><b>Client timing</b></p>
-</td>
-<td valign="middle" class="td3">
-<p class="p11"><b>Server timing</b></p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td4">
-<p class="p11"><b>0.9</b></p>
-</td>
-<td valign="middle" class="td5">
-<p class="p3">Bass event calculated</p>
-</td>
-<td valign="middle" class="td6">
-<p class="p3">(bass event delayed by 0.1, nothing happens here)</p>
-</td>
-</tr>
-<tr>
-<td valign="middle" class="td4">
-<p class="p11"><b>1.0</b></p>
-</td>
-<td valign="middle" class="td5">
-<p class="p3">Chord event calculated</p>
-</td>
-<td valign="middle" class="td6">
-<p class="p3">Both bass and chord make sound</p>
-</td>
-</tr>
-</tbody>
-</table>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p6"><br></p>
-<p class="p5">~bass = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(0, 7, <span class="s1">inf</span>),</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">\octave</span><span class="s4">, 3,<span class="Apple-tab-span">	</span></span>// down 2 octaves</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pwhite</span>(1, 4, <span class="s1">inf</span>),</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>\legato<span class="s4">, 1,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.2</p>
-<p class="p5">).collect({ <span class="s1">|event|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~lastBassEvent = event;</p>
-<p class="p5">}).play(quant: <span class="s1">Quant</span>(quant: 1, timingOffset: 0.1));</p>
-<p class="p6"><br></p>
-<p class="p7">// shorter form for the Quant object: #[1, 0, 0.1]</p>
-<p class="p6"><br></p>
-<p class="p5">~chords = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\topNote</span>, <span class="s1">Pseries</span>(7, <span class="s1">Prand</span>(#[-2, -1, 1, 2], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(2, 14),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\bassTriadNotes</span>, <span class="s1">Pfunc</span> { ~lastBassEvent[<span class="s2">\degree</span>] } + #[0, 2, 4],</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// merge triad into topnote</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// raises triad notes to the highest octave lower than top note</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// div: is integer division, so x div: 7 * 7 means the next lower multiple of 7</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>\merge<span class="s4">, (</span><span class="s1">Pkey</span><span class="s4">(</span>\topNote<span class="s4">) - </span><span class="s1">Pkey</span><span class="s4">(</span>\bassTriadNotes<span class="s4">)) div: 7 * 7 + </span><span class="s1">Pkey</span><span class="s4">(</span>\bassTriadNotes<span class="s4">),</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// add topNote to the array if not already there</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s2">\degree</span><span class="s4">, </span>Pfunc<span class="s4"> { </span>|ev|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(ev[<span class="s2">\merge</span>].detect({ <span class="s1">|item|</span> item == ev[<span class="s2">\topNote</span>] }).isNil) {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ev[<span class="s2">\merge</span>] ++ ev[<span class="s2">\topNote</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ev[<span class="s2">\merge</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span>},</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pwrand</span>([<span class="s1">Pseq</span>([0.5, <span class="s1">Pwhite</span>(1, 3, 1), 0.5], 1), 1, 2, 3], #[1, 3, 2, 2].normalizeSum, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.05</p>
-<p class="p5">).play(quant: 1);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">~bass.stop;</p>
-<p class="p5">~chords.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">The chord pattern demonstrates some of the ways higher-level logic can be expressed in patterns. The goal is to transpose the notes of the root position triad over the bass note by octave so that the notes all fall within the octave beneath a top note (chosen by stepwise motion). Pkey(\topNote) - Pkey(\bassTriadNotes) gives the number of transposition steps to bring the triad notes up to the top note; then the transposition steps are truncated to the next lower octave (x div: 7 is integer division producing an octave number; multiplying by 7 gives the number of scale degrees for that octave).</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s4">f = { </span>|topNote, triad|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>x;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = (topNote - triad).debug(<span class="s5">"initial transposition steps"</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = (x div: 7).debug(<span class="s5">"octaves to transpose"</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = (x * 7).debug(<span class="s5">"steps to transpose"</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x + triad</p>
-<p class="p5">};</p>
-<p class="p6"><br></p>
-<p class="p5">f.value(7, #[0, 2, 4]);</p>
-<p class="p3">--> [ 7, 2, 4 ] (first inversion triad)</p>
-<p class="p2"><br></p>
-<p class="p3">Then the transposed array is checked to see if the top note is already a member. If not, it's added so that the melody will always be present.</p>
-<p class="p2"><br></p>
-<p class="p3">Note that lazy operations on patterns define most of this behavior; only the conditional array check had to be written as a function.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">The above example breaks one of the design principles of patterns. Ideally, it should be possible to play a single pattern object many times simultaneously without the different streams interfering with each other. Saving the bass note in one environment variable means that concurrent streams would not work together because they can't both use the same environment variable at the same time. The above approach does, however, allow the two patterns to be stopped and started independently, and new bass-dependent patterns to be added at any time. In some musical scenarios, this kind of flexibility is more important than respecting the pattern design ideal.</p>
-<p class="p2"><br></p>
-<p class="p3">It is possible, using <a href="../Patterns/Ptpar.html"><span class="s1">Ptpar</span></a> and <a href="../Patterns/Penvir.html"><span class="s1">Penvir</span></a>, to create independent environments for event storage as part of the pattern itself. By default, Penvir creates a new copy of its environment for each stream, guaranteeing independence. While the pattern is running, ~lastBassEvent = event saves the event in the stream's copy of the storage environment, and it's available to both Pbinds because both are under control of Penvir (indirectly through Ptpar).</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Penvir</span>((), <span class="s1">Ptpar</span>([</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.0, <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(0, 7, <span class="s1">inf</span>),</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">\octave</span><span class="s4">, 3,<span class="Apple-tab-span">	</span></span>// down 2 octaves</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pwhite</span>(1, 4, <span class="s1">inf</span>),</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\legato<span class="s4">, 1,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.2,</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\timingOffset<span class="s4">, 0.1</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>).collect({ <span class="s1">|event|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~lastBassEvent = event;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1, <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\topNote</span>, <span class="s1">Pseries</span>(7, <span class="s1">Prand</span>(#[-2, -1, 1, 2], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(2, 14),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\bassTriadNotes</span>, <span class="s1">Pfunc</span> { ~lastBassEvent[<span class="s2">\degree</span>] } + #[0, 2, 4],</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\merge<span class="s4">, (</span><span class="s1">Pkey</span><span class="s4">(</span>\topNote<span class="s4">) - </span><span class="s1">Pkey</span><span class="s4">(</span>\bassTriadNotes<span class="s4">)) div: 7 * 7 + </span><span class="s1">Pkey</span><span class="s4">(</span>\bassTriadNotes<span class="s4">),</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">\degree</span><span class="s4">, </span>Pfunc<span class="s4"> { </span>|ev|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(ev[<span class="s2">\merge</span>].detect({ <span class="s1">|item|</span> item == ev[<span class="s2">\topNote</span>] }).isNil) {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ev[<span class="s2">\merge</span>] ++ ev[<span class="s2">\topNote</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ev[<span class="s2">\merge</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pwrand</span>([<span class="s1">Pseq</span>([0.5, <span class="s1">Pwhite</span>(1, 3, 1), 0.5], 1), 1, 2, 3], #[1, 3, 2, 2].normalizeSum, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.05</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">])).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p12"><span class="s4">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06f_Server_Control.html"><span class="s6">PG_06f_Server_Control</span></a></span></p>
-<p class="p12"><span class="s4">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_07_Value_Conversions.html"><span class="s6">PG_07_Value_Conversions</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_07_Value_Conversions.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_07_Value_Conversions.html
deleted file mode 100644
index 2adf226..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_07_Value_Conversions.html	
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 29.0px; text-indent: -29.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 29.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 86.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #000000}
-span.s4 {font: 12.0px Helvetica; text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pitch and rhythm conversions in the default event</b></p>
-<p class="p2"><br></p>
-<p class="p3">Using the default event prototype, pitch and rhythm can be specified in Pbind at different levels depending on the musical requirement. The default event prototype includes logic to convert higher-level abstractions into the physical parameters that are useful for synthesis.</p>
-<p class="p2"><br></p>
-<p class="p3">The descriptions below start with the ending value that will actually be used, following up with the other values that are used in the calculations: e.g., \delta is based on \dur and \stretch. The calculations may be bypassed by providing another value for the calculated item. If your pattern specifies \delta directly, \dur and \stretch are ignored.</p>
-<p class="p2"><br></p>
-<p class="p3">Note also that there is no obligation to use these constructs. The default event prototype is not meant to enforce one model of pitch or rhythm over any other; it simply provides these options, which you may use if they suit the task, or ignore or override if your task calls for something else entirely.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Timing conversions</b></p>
-<p class="p2"><br></p>
-<p class="p3">Rhythm is based on \delta and \sustain event keys. Both of these can be calculated from higher-level abstractions: \dur, \stretch and \legato.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>delta:</b> The number of beats until the next event. You can give the delta pattern directly, or the default event prototype can calculate it for you based on other values:</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>dur:</b> Duration of this event.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>stretch:</b> A multiplier for duration: <i>delta = dur * stretch</i>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>sustain:</b> How many beats to hold this note. After \sustain beats, a release message will be sent to the synth node setting its 'gate' control to 0. Your SynthDef should use 'gate' in an <a href="../../UGens/Synth control/Envelopes/EnvGen.html"><span class="s1">EnvGen</span></a> based on a sustaining envelope (see <a href="../../Control/Env.html"><span class="s1">Env</span></a>), and the EnvGen should have a doneAction (<a href="../../UGens/Synth control/Envelopes/UGen-doneActions.html"><span class="s1">UGen-doneActions</span></a>) that releases the synth at the end. You can give the sustain pattern directly, or the default event prototype can calculate it for you based on:</p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>legato:</b> A fraction of the event's duration for which the synth should sustain. 1.0 means this synth will release exactly at the onset of the next; 0.5 means the last half of the duration will be a rest. Values greater than 1.0 produce overlapping notes. <i>sustain = dur * legato * stretch</i>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Pitch conversions</b></p>
-<p class="p2"><br></p>
-<p class="p3">Pitch handling in the default event is rich, with a large number of options. To use events, it is not necessary to understand all of those options. As the examples have shown, a note-playing pattern produces sensible results even specifying only 'degree'. The other parameters allow you to control how the event gets from \degree to the frequency that is finally passed to the new synth. The default event prototype includes reasonable defaults for all of these.</p>
-<p class="p2"><br></p>
-<p class="p3">To go from the highest level of abstraction down:</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>\degree</b> represents a scale degree. Fractional scale degrees support accidentals: adding 0.1 to an integer scale degree raises the corresponding chromatic note number by a semitone, and subtracting 0.1 lowers the chromatic note number. 0.2 raises or lowers by two semitones, and so on.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>\note</b> is a chromatic note index, calculated from \degree based on a <b>\scale</b> and modal transposition (<b>\mtranspose</b>, scale degrees to raise or lower the note). <b>\note</b> is in equal-tempered units of any number of steps to the octave (<b>\stepsPerOctave</b>).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>\midinote</b> is a 12ET conversion of <b>\note</b>, transposed into the right <b>\octave</b> and applying gamut transposition (<b>\gtranspose</b>, given in stepsPerOctave units). If \stepsPerOctave is anything other than 12, the non-12ET units are scaled into 12 \midinote units per octave.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>\freq</b> is calculated from \midinote by 'midicps'. A chromatic transposition in 12ET units (<b>\ctranspose</b>) is added.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">Most note-playing SynthDefs use 'freq' as an argument. If desired, they may use 'midinote', 'note' or even 'degree'.</p>
-<p class="p2"><br></p>
-<p class="p3">To simplify into rules of thumb:</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">If your material is organized around scales or modes, use <b>\degree</b>.</li>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">If the scale has different ascending and descending patterns, use <b>\note</b> in your Pbind, with the filter pattern <a href="../Patterns/Pavaroh.html"><span class="s1">Pavaroh</span></a>.</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">If your material is organized around equal divisions of the octave (not necessarily 12 divisions), use <b>\note</b> (and <b>\stepsPerOctave</b> for equal temperament other than 12 notes).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">If your material is organized around MIDI note numbers (or 12-tone equal temperament), <b>\midinote</b> will also work.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">If you prefer to give frequencies directly in Hz, use <b>\freq</b>.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">Following is a complete description of all elements of the pitch system. Feel free to use the ones that are of interest, and ignore the rest.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>freq:</b> Frequency in Hz. May be given directly, or calculated based on the following. Pitch may be expressed at any one of several levels. Only one need be used at a time. For instance, if you write pitch in terms of scale degrees, the note, MIDI note and frequency values are calculated automatically for you.</p>
-<p class="p6"><b>ctranspose:</b> Chromatic transposition, in 12ET units. Added to midinote.</p>
-<p class="p6"><b>midinote:</b> MIDI note number; 12 MIDI notes = one octave. This may be fractional if needed. Calculated based on:</p>
-<p class="p7"><b>root:</b> The scale root, given in 12ET MIDI note increments.</p>
-<p class="p7"><b>octave:</b> The octave number for 'note' = 0. The default is 5, mapping note 0 onto MIDI note 60.</p>
-<p class="p7"><b>stepsPerOctave:</b> How many 'note' units map onto the octave. Supports non-12ET temperaments.</p>
-<p class="p7"><b>gtranspose:</b> Non-12ET transposition, in 'note' units. Added to note.</p>
-<p class="p7"><b>note:</b> The note number, in any division of the octave. 0 is the scale root. Calculated based on:</p>
-<p class="p8"><b>degree:</b> Scale degree.</p>
-<p class="p8"><b>scale:</b> Mapping of scale degrees onto semitones. Major, for instance, is [0, 2, 4, 5, 7, 9, 11].</p>
-<p class="p8"><b>stepsPerOctave:</b> (Same as above.)</p>
-<p class="p8"><b>mtranspose:</b> Modal transposition; added to degree.</p>
-<p class="p2"><br></p>
-<p class="p3">See also the <a href="../../Collections/Scale.html"><span class="s1">Scale</span></a> class for a repository of scale configurations, and the possibility of non-ET tuning.</p>
-<p class="p2"><br></p>
-<p class="p9">(</p>
-<p class="p10">// approximate a major scale with a 19TET chromatic scale</p>
-<p class="p9">p = <span class="s1">Pbind</span>(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s2">\scale</span>, #[0, 3, 6, 8, 11, 14, 17],</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\stepsPerOctave<span class="s3">, 19,</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(0, 7, <span class="s1">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.125,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s2">\legato</span>, <span class="s1">Pexprand</span>(0.2, 6.0, <span class="s1">inf</span>)</p>
-<p class="p9">).play;</p>
-<p class="p9">)</p>
-<p class="p12"><br></p>
-<p class="p9">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Amplitude conversion</b></p>
-<p class="p2"><br></p>
-<p class="p3">Finally, you can specify amplitude as <b>\db</b> or <b>\amp</b>. If it's given as \db, the amplitude will be calculated automatically using .dbamp.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_06g_Data_Sharing.html"><span class="s4">PG_06g_Data_Sharing</span></a></span></p>
-<p class="p14"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_08_Event_Types_and_Parameters.html"><span class="s4">PG_08_Event_Types_and_Parameters</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_08_Event_Types_and_Parameters.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_08_Event_Types_and_Parameters.html
deleted file mode 100644
index 6f0bbfa..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_08_Event_Types_and_Parameters.html	
+++ /dev/null
@@ -1,462 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-li.li3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #606060}
-span.s5 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-ul.ul1 {list-style-type: disc}
-ul.ul2 {list-style-type: circle}
-</style>
-</head>
-<body>
-<p class="p1"><b>Event types</b></p>
-<p class="p2"><br></p>
-<p class="p3">A common question is, "Which parameters have special meanings in Pbind?" Perhaps surprisingly, none of them do! That's because Pbind simply puts data into the result event; it doesn't care what the data are.</p>
-<p class="p2"><br></p>
-<p class="p3">The event prototype used when playing the pattern defines the actions to take, and it is here that parameters are defined. Most patterns will play using the default event prototype (Event.default), so this is the source of the parameters that will most typically be used.</p>
-<p class="p2"><br></p>
-<p class="p3">The default event prototype defines a number of "event types," each of which performs a different task. The \type key determines which action is taken, and the significant parameters depend on the event type.</p>
-<p class="p2"><br></p>
-<p class="p3">There are a lot of event types! However, only a few are commonly used. The <b>\note</b> event type is by far the most typical. The others are auxiliary, and most useful when writing patterns to generate a <a href="../../Control/Score.html"><span class="s1">Score</span></a> suitable for non-real-time rendering.</p>
-<p class="p2"><br></p>
-<p class="p3">Before looking at the event types themselves, let's go over some standard parameters used across many event types. (Not every common parameter is used in every event type, but these turn up in lots of places.)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Common parameters</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Timing control</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>\delta:</b> Number of <b>beats</b> until the next event. Calculated from ~dur * ~stretch, if \delta is not given explicitly.</p>
-<p class="p3"><b>\lag:</b> Number of <b>seconds</b> to delay the event's server message(s).</p>
-<p class="p3"><b>\timingOffset:</b> Number of <b>beats</b> to delay the event's server message(s). In conjunction with Quant, this allows control over the order of event preparation between different patterns in the client, without desynchronizing sonic events that should play together. <a href="PG_06g_Data_Sharing.html"><span class="s1">PG_06g_Data_Sharing</span></a> has an example of its use to pass data from a bass pattern to a chord pattern.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>\sustain:</b> Number of beats to wait before releasing a Synth node on the server. The SynthDef must have a 'gate' argument for the explicit release to be sent; otherwise, the pattern assumes the note will release itself using a timed envelope. <b>\sustain</b> is calculated from ~dur * ~legato * ~stretch if not given directly.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Node control</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>\addAction:</b> How to add a synth or group node relative to the given \group in the event. See <a href="../../ServerArchitecture/Synth.html"><span class="s1">Synth</span></a>.</p>
-<p class="p3"><b>\amp:</b> Not formally defined as a special parameter, but this is typically used for Synth amplitude. The SynthDef should have an 'amp' argument and use it to control volume. \amp is optionally calculated from \db.</p>
-<p class="p3"><b>\id:</b> The desired id(s) for newly created Nodes in this event. Normally this is nil, in which case the IDs will be obtained from server.nextNodeID.</p>
-<p class="p3"><b>\instrument:</b> The SynthDef name for which nodes will be created. Only one name should be given (unlike other arguments, which "multichannel expand" to create multiple nodes).</p>
-<p class="p3"><b>\group:</b> The target node relative to which new node(s) will be created. Similar to 'target' in Synth(defName, args, target, addAction).</p>
-<p class="p3"><b>\out:</b> Generally used for the output bus of a Synth. When using Pbus or Pfxb, an audio bus is allocated to isolate the pattern's signal. All events from the pattern receive the new bus number in the <b>\out</b> slot, and SynthDefs being played should use an 'out' argument for the target of output UGens, e.g., Out.ar(out, ...).</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Event Types</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Node control</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>rest:</b> As one would expect, a \rest does nothing except wait the required amount of time until the next event.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>note:</b> This is the default event type, used when \type is not specified. It plays one or more Synth nodes on the server, with an automatic release after \sustain beats if the SynthDef has a 'gate' argument.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing and Node control arguments</b></li>
-<li class="li3"><b>sendGate:</b> Override SynthDef behavior for the 'gate' argument. If the SynthDef as 'gate', setting sendGate = false prevents the release message from being sent. Rarely used.</li>
-<li class="li3"><b>strum:</b> If multiple notes are produced (usually a chord, given by providing an array to one of the pitch parameters), \strum is the number of beats to delay each successive note onset. When using \strum, another key is active, <b>\strumEndsTogether</b>. If false (the default), each strummed node will play for its full duration and the releases will be staggered. If true, the releases will occur at the same time.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// array is "multichannel expanded" into one Synth each</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, #[2, 5, 8, 11, 13, 16],</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\octave<span class="s2">, 3,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 2,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\sustain<span class="s2">, 3,</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// non-zero strum staggers the entrances</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\strum</span>, 0.12</p>
-<p class="p5">).play(quant: 2);</p>
-<p class="p8"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>on:</b> Start a Synth node (or nodes) without releasing. The node ID(s) are in the event's ~id variable. Those IDs can be used with the off, set and kill event types.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing and Node control arguments</b></li>
-<li class="li3"><b>callback:</b> A function that will be executed after creating the nodes. Use this for bookkeeping, to keep track of the node IDs for later use. The function receives the finished event as its argument.</li>
-<li class="li3">(sendGate and strum parameters are not used)</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>off:</b> Release server nodes nicely if possible. If the SynthDef has a 'gate' argument, the gate will be set to 0 or a user-specified value. Otherwise, the nodes are brutally killed with n_free.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3"><b>hasGate:</b> True or false, telling the event whether the SynthDef has a 'gate' argument or not. The default is assumed true.</li>
-<li class="li3"><b>id:</b> The node ID(s) must be given explicitly.</li>
-<li class="li3"><b>gate:</b> By default, the gate will be set to 0. Negative values trigger a "forced release" in EnvGen. See the <a href="../../UGens/Synth control/Envelopes/EnvGen.html"><span class="s1">EnvGen</span></a> help file for details.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>kill:</b> Immediately remove nodes using n_free.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3"><b>id:</b> The node ID(s) must be given explicitly.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>set:</b> Send new values to the control inputs of existing nodes.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3"><b>id:</b> The node ID(s) must be given explicitly. This may be an integer ID or Synth/Group node object.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">There are two ways to specify argument names: by <i>instrument</i> and by <i>argument array</i>.</p>
-<p class="p2"><br></p>
-<p class="p3"><i>By instrument:</i></p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>instrument:</b> The SynthDef name should be given again, so that the event knows which event values are relevant for the nodes.</li>
-<li class="li3"><b>args:</b> By default, the \args key contains the control names for the default synthdef. To take argument names from the instrument name, you must override this default with an empty array (or any non-collection object).</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p9">SynthDef<span class="s2">(</span><span class="s3">\event_set</span><span class="s2">, { </span>|freq = 440, gate = 1, amp = 0.1, lagTime = 0.1,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ffreq = 2000, detune = 1.005, out = 0|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig = <span class="s1">Saw</span>.ar(Lag.kr(freq, lagTime) * [1, detune]).sum * amp</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.adsr, gate, doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sig ! 2);</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">a = </span><span class="s1">Synth</span><span class="s2">(</span>\event_set<span class="s2">);</span></p>
-<p class="p8"><br></p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\set<span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\id</span>, a,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\event_set<span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\args</span>, #[],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s1">Pexprand</span>(200, 600, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwhite</span>(1, 5, <span class="s1">inf</span>) * 0.125</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p5">a.free;</p>
-<p class="p2"><br></p>
-<p class="p3"><i>By argument names:</i></p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>args:</b> Provide a list of the Synth argument names as an array here, e.g. [\freq, \amp, \pan]. There is no need to provide the instrument name this way.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">a = </span><span class="s1">Synth</span><span class="s2">(</span>\event_set<span class="s2">);</span></p>
-<p class="p8"><br></p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\set<span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\id</span>, a,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\args<span class="s2">, #[</span>\freq<span class="s2">],</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s1">Pexprand</span>(200, 600, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwhite</span>(1, 5, <span class="s1">inf</span>) * 0.125</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p5">a.free;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>monoNote</b></p>
-<p class="p3"><b>monoOff</b></p>
-<p class="p3"><b>monoSet:</b> These event types are used internally by Pmono and PmonoArtic. They should not be used directly.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Server control</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>group:</b> Create a new group (or groups).</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing and Node control arguments</b></li>
-</ul>
-<ul class="ul1">
-<li class="li3"><b>id:</b> (Optional) IDs for the new groups. If not specified, the new ID (for one group only) can be found in the event after .play. To create multiple groups, you must provide an array of IDs.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>bus:</b> Set the value of a control bus, or contiguous control buses. This assumes that you already have the bus index.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3"><b>array:</b> The value(s) to send to the bus(es). If it's only one value, it doesn't have to be an array.</li>
-<li class="li3"><b>out:</b> The first bus index to be set. A Bus object can be used.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Buffer control</b></p>
-<p class="p2"><br></p>
-<p class="p3">All of these buffer event types expect the buffer number to be provided. They will not automatically get a buffer number from the server's buffer allocator. A Buffer object is allowed -- you could create the Buffer first using Buffer.alloc or Buffer.new and then use this object in the control events. See also "Event types with cleanup" below for other, user-friendlier Buffer control options.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>alloc:</b> Allocate memory for a buffer on the server. Only one buffer may be allocated per event.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3"><b>bufnum, numchannels, numframes:</b> See the <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a> help file.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>free:</b> Deallocate the buffer's memory on the server.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3">bufnum: Buffer number to free (one only).</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>gen:</b> Generate wavetable data in the buffer, using one of the server's b_gen plug-ins. The Buffer help file has more detail on the standard plug-ins.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3"><b>bufnum</b></li>
-<li class="li3"><b>gencmd:</b> The generator plug-in name: \sine1, \sine2, \sine3, \cheby.</li>
-<li class="li3"><b>genflags:</b> Three flags, associated with numbers: normalize = 1, asWavetable = 2, clearFirst = 4. Add the numbers for the desired flags. Normally the flags are all true, adding up to 7.</li>
-<li class="li3"><b>genarray:</b> Data parameters for the plug-in. See the <a href="../../ServerArchitecture/Server-Command-Reference.html"><span class="s1">Server-Command-Reference</span></a> help file for details on the format for each plug-in.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>load:</b> Allocate buffer memory in the server and load a sound file into it, using b_allocRead.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3"><b>bufnum</b></li>
-<li class="li3"><b>filename:</b> Path to disk file.</li>
-<li class="li3"><b>frame:</b> Starting frame to read (default 0).</li>
-<li class="li3"><b>numframes:</b> Number of frames to read (default 0, which loads the entire file).</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>read:</b> Read a sound file into a buffer already allocated on the server. This event type is good to cue a sound file for use with DiskIn.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b></li>
-<li class="li3"><b>bufnum</b></li>
-<li class="li3"><b>filename:</b> Path to disk file.</li>
-<li class="li3"><b>frame:</b> Starting soundfile frame to read (default 0).</li>
-<li class="li3"><b>numframes:</b> Number of frames to read (default 0, which loads the entire file).</li>
-<li class="li3"><b>bufpos:</b> Starting buffer frame (default 0).</li>
-<li class="li3"><b>leaveOpen:</b> 1 = leave the file open (for DiskIn use). 0 = close the disk file after reading. Default = 0.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Event types with cleanup</b></p>
-<p class="p2"><br></p>
-<p class="p3">These event types uniquely have automatic cleanup event types associated with them. Playing one of these event types allocates a server resource. Later, the resource may be freed by changing the event type to the corresponding cleanup type and playing the event again. While the resource is active, the event can be used as a reference to the resource in other events or Synth messaging.</p>
-<p class="p2"><br></p>
-<p class="p6">// create a buffer</p>
-<p class="p5">b = (type: <span class="s3">\allocRead</span>, path: <span class="s4">"sounds/a11wlk01.wav"</span>).play;</p>
-<p class="p8"><br></p>
-<p class="p5">a = { <span class="s1">PlayBuf</span>.ar(1, b, doneAction: 2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p6">// remove buffer</p>
-<p class="p9">EventTypesWithCleanup<span class="s2">.cleanup(b);</span></p>
-<p class="p2"><br></p>
-<p class="p3">See the Pproto example in <a href="PG_06f_Server_Control.html"><span class="s1">PG_06f_Server_Control</span></a>, showing how these can be used to clean up server objects at the end of a pattern.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>audioBus:</b> Allocate an audio bus index from the server.</p>
-<ul class="ul1">
-<li class="li3"><b>channels:</b> Number of channels to allocate.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>controlBus:</b> Allocate a control bus index from the server.</p>
-<ul class="ul1">
-<li class="li3"><b>channels:</b> Number of channels to allocate.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>buffer:</b> Allocate a buffer number if not specified, and reserve the memory on the server.</p>
-<ul class="ul1">
-<li class="li3"><b>bufNum:</b> (Optional) Buffer number. If not given, a free number will be obtained from the server.</li>
-<li class="li3"><b>numBufs:</b> Number of contiguous buffer numbers to reserve (default = 1).</li>
-<li class="li3"><b>numFrames:</b> Number of frames.</li>
-<li class="li3"><b>numChannels:</b> Number of channels.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>allocRead:</b> Read a disk file into server memory. The file is closed when finished.</p>
-<ul class="ul1">
-<li class="li3"><b>bufNum:</b> (Optional) Buffer number. If not given, a free number will be obtained from the server.</li>
-<li class="li3"><b>path:</b> Path to the sound file on disk.</li>
-<li class="li3"><b>firstFileFrame:</b> Where to start reading in the file.</li>
-<li class="li3"><b>numFrames:</b> Number of frames. If not given, the whole file is read.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>cue:</b> Cue a sound file (generally for use with DiskIn).</p>
-<ul class="ul1">
-<li class="li3"><b>bufNum:</b> (Optional) Buffer number. If not given, a free number will be obtained from the server.</li>
-<li class="li3"><b>path:</b> Path to the sound file on disk.</li>
-<li class="li3"><b>firstFileFrame:</b> Where to start reading in the file.</li>
-<li class="li3"><b>numFrames:</b> Number of frames. If not given, the whole file is read.</li>
-<li class="li3"><b>firstBufferFrame:</b> Where in the buffer to start putting file data.</li>
-<li class="li3"><b>leaveOpen:</b> 1 = leave the file open (for DiskIn use). 0 = close the disk file after reading. Default = 0.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>table:</b> Fill a buffer with preset data. This uses /b_setn to transfer the data, so all of the data must fit into one datagram. It may take some experimentation to find the upper limit.</p>
-<ul class="ul1">
-<li class="li3"><b>bufNum:</b> (Optional) Buffer number. If not given, a free number will be obtained from the server.</li>
-<li class="li3"><b>amps:</b> The values to put into the buffer. These should all be Floats.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>cheby:</b> Generate a Chebyshev transfer function for waveshaping.</p>
-<ul class="ul1">
-<li class="li3"><b>bufNum:</b> (Optional) Buffer number. If not given, a free number will be obtained from the server.</li>
-<li class="li3"><b>numFrames:</b> Number of frames, should be a power of 2.</li>
-<li class="li3"><b>numChannels:</b> Number of channels.</li>
-<li class="li3"><b>genflags:</b> Three flags, associated with numbers: normalize = 1, asWavetable = 2, clearFirst = 4. Add the numbers for the desired flags. Normally the flags are all true, adding up to 7.</li>
-<li class="li3"><b>amps:</b> The amplitude of each partial (i.e., polynomial coefficient).</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>sine1:</b> Mirrors the sine1 method for Buffer, generating a wavetable with an integer-multiple harmonic spectrum using the given partial amplitudes.</p>
-<ul class="ul1">
-<li class="li3"><b>bufNum:</b> (Optional) Buffer number. If not given, a free number will be obtained from the server.</li>
-<li class="li3"><b>numFrames:</b> Number of frames, should be a power of 2.</li>
-<li class="li3"><b>numChannels:</b> Number of channels.</li>
-<li class="li3"><b>genflags:</b> See above.</li>
-<li class="li3"><b>amps:</b> Array of amplitudes for each partial.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>sine2:</b> Like sine1, but the frequency ratio of each partial is also given.</p>
-<ul class="ul1">
-<li class="li3">Same arguments as sine1, plus:</li>
-<li class="li3"><b>freqs:</b> Array of frequencies for each partial. 1.0 is the fundamental frequency; its sine wave occupies the entire buffer duration.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>sine3:</b> Like sine2, but the phase of each partial may also be provided.</p>
-<ul class="ul1">
-<li class="li3">Same arguments as sine1, plus:</li>
-<li class="li3"><b>phases:</b> Array of phases for each partial, given in radians (0.0 - 2pi).</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>MIDI output</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>midi:</b> Sends one of several types of MIDI messages to a MIDIOut object.</p>
-<ul class="ul1">
-<li class="li3"><b>Standard Timing control arguments</b> (except timingOffset, which is not used)</li>
-<li class="li3"><b>midicmd:</b> The type of MIDI message to send. This also determines other arguments that should be present in the event.</li>
-<li class="li3"><b>midiout:</b> The MIDI out object, which connects to one of the MIDI devices listed in MIDIClient.destinations.</li>
-<li class="li3"><b>chan:</b> The MIDI channel number (0-15) on the device that should receive the message. This applies to all midicmds except the global ones (smpte, songPtr, sysex).</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3"><b>Available midicmds</b></p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>noteOn:</b> Starts a note, and optionally stops it. If multiple frequencies are given, one noteOn/noteOff pair is sent for each, and \strum is also supported.</li>
-<ul class="ul2">
-<li class="li3"><b>chan:</b> MIDI channel (0-15).</li>
-<li class="li3"><b>midinote:</b> Note number to trigger. This may be calculated from the standard pitch hierarchy described in <a href="PG_07_Value_Conversions.html"><span class="s1">PG_07_Value_Conversions</span></a> (with the exception that only 12TET can be supported).</li>
-<li class="li3"><b>amp:</b> MIDI velocity = amp / 12.</li>
-<li class="li3"><b>sustain:</b> How many beats to wait before sending the corresponding note off message. If not given directly, it's calculated as ~sustain = ~dur * ~legato * ~stretch (just like the standard \note event type).</li>
-<li class="li3"><b>hasGate:</b> Normally true. If false, the note off message will not be sent.</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>noteOff:</b> Send an explicit note off message (useful if hasGate is set false in the note on event).</li>
-<ul class="ul2">
-<li class="li3"><b>chan:</b> MIDI channel (0-15).</li>
-<li class="li3"><b>midinote:</b> Note number.</li>
-<li class="li3"><b>amp:</b> Release velocity (supported by some synthesizers).</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>allNotesOff:</b> "Panic" message, kills all notes on the channel.</li>
-<ul class="ul2">
-<li class="li3"><b>chan:</b> MIDI channel (0-15).</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>control:</b> Continuous controller message.</li>
-<ul class="ul2">
-<li class="li3"><b>chan:</b> MIDI channel (0-15).</li>
-<li class="li3"><b>ctlNum:</b> Controller number to receive the new value.</li>
-<li class="li3"><b>control:</b> New value (0-127).</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>bend:</b> Pitch bend message.</li>
-<ul class="ul2">
-<li class="li3"><b>chan:</b> MIDI channel (0-15).</li>
-<li class="li3"><b>val:</b> New value (0-16383). 8191 is centered.</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>touch:</b> Aftertouch message.</li>
-<ul class="ul2">
-<li class="li3"><b>chan:</b> MIDI channel (0-15).</li>
-<li class="li3"><b>val:</b> New value (0-127).</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>polyTouch:</b> Poly aftertouch message (not supported by all synthesizers).</li>
-<ul class="ul2">
-<li class="li3"><b>chan:</b> MIDI channel (0-15).</li>
-<li class="li3"><b>midinote:</b> Note number to get the new after touch value. As in note on, it may be calculated from the standard pitch hierarchy.</li>
-<li class="li3"><b>polyTouch:</b> New value (0-127).</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>program:</b> Program change message.</li>
-<ul class="ul2">
-<li class="li3"><b>chan:</b> MIDI channel (0-15).</li>
-<li class="li3"><b>progNum:</b> Program number (0-127).</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>smpte:</b> Send MIDI Time Code messages.</li>
-<ul class="ul2">
-<li class="li3"><b>Arguments:</b> frames, seconds, minutes, hours, frameRate</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>songPtr:</b> Song pointer message.</li>
-<ul class="ul2">
-<li class="li3"><b>songPtr:</b> Pointer value (0-16383).</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li class="li3"><b>sysex:</b> System exclusive messages.</li>
-<ul class="ul2">
-<li class="li3"><b>array:</b> An Int8Array with the sysex bytes in order. <b>Very important:</b> Arrays normally multi-channel expand in patterns. So, you must wrap the Int8Array inside another array to prevent this. Write <span class="s3">[Int8Array[...]]</span>, not just Int8Array[...].</li>
-</ul>
-</ul>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Miscellaneous</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>phrase:</b> See <a href="../../Libraries/JITLib/tutorials/recursive_phrasing.html"><span class="s1">recursive_phrasing</span></a> (JITLib).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>setProperties:</b> Set variables belonging to a given object. One possible use is to control a GUI using a pattern.</p>
-<p class="p3">receiver: The object to be modified.</p>
-<ul class="ul1">
-<li class="li3"><b>args:</b> The list of variable names to set in the receiver. The receiver should have a setter method -- variableName_ -- for each of these. New values will be looked up in the event.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p6">// Visualize Brownian motion</p>
-<p class="p5">w = <span class="s1">Window</span>(<span class="s4">"Brownian motion"</span>, <span class="s1">Rect</span>(10, 100, 500, 50));</p>
-<p class="p5">x = <span class="s1">Slider</span>(w, <span class="s1">Rect</span>(10, 15, 480, 20));</p>
-<p class="p5">w.front;</p>
-<p class="p8"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\type<span class="s2">, </span>\setProperties<span class="s2">,</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\receiver<span class="s2">, x,</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this means, call x.value_() on every event</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\args<span class="s2">, [</span>\value<span class="s2">],</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// and look for the value under \value</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\value</span>, <span class="s1">Pbrown</span>(0, 1, 0.1, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\delta</span>, 0.1</p>
-<p class="p5">).play;</p>
-<p class="p8"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s2">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_07_Value_Conversions.html"><span class="s5">PG_07_Value_Conversions</span></a></span></p>
-<p class="p10"><span class="s2">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook01_Basic_Sequencing.html"><span class="s5">PG_Cookbook01_Basic_Sequencing</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook01_Basic_Sequencing.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook01_Basic_Sequencing.html
deleted file mode 100644
index 9569079..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook01_Basic_Sequencing.html	
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #000000}
-span.s4 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Cookbook: Sequencing basics</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Playing a predefined note sequence</b></p>
-<p class="p4"><br></p>
-<p class="p5">The following are three different ways of playing the same famous fugue subject.</p>
-<p class="p4"><br></p>
-<p class="p5">The first is brute force, listing all the scale degrees mechanically in order. The second and third recognize the A pedal point and use interlacing operations to insert the pedal notes in between the changing notes.</p>
-<p class="p4"><br></p>
-<p class="p5">The example demonstrates the use of the 'scale' and 'root' event keys to define tonality. Root = 2 is D, and the scale defines a natural minor mode. The degree sequence also uses accidentals. Subtracting 0.1 from an integer scale degree flattens the note by a semitone; adding 0.1 raises by a semitone. -0.9 is 0.1 higher than -1; a natural minor scale degree below the tonic is a flat 7, and a half step higher than that is the leading tone.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 84/60;</p>
-<p class="p7"><br></p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\scale</span>, #[0, 2, 3, 5, 7, 8, 10],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\root</span>, 2,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>(#[rest, 4, 3, 4, 2, 4, 1, 4, 0, 4, -0.9, 4, 0, 4, 1, 4, 2, 4,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-3, 4, -1.9, 4, -0.9, 4, 0, 4, -0.9, 4, 0, 4, 1, 4, 2], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\scale</span>, #[0, 2, 3, 5, 7, 8, 10],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\root</span>, 2,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Place</span>([#[rest, 3, 2, 1, 0, -0.9, 0, 1, 2, -3, -1.9, -0.9, 0, -0.9, 0, 1, 2],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(4 ! 16) ++ <span class="s2">\rest</span>], 17),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\scale</span>, #[0, 2, 3, 5, 7, 8, 10],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\root</span>, 2,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Ppatlace</span>([<span class="s1">Pseq</span>(#[rest, 3, 2, 1, 0, -0.9, 0, 1, 2, -3, -1.9, -0.9, 0, -0.9, 0, 1, 2], 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pn</span>(4, 16)], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>“Multichannel” expansion</b></p>
-<p class="p4"><br></p>
-<p class="p5">In a SynthDef, using an array as the input to a UGen expands the UGen into an array of UGens (see <a href="../../Other Topics/MultiChannel.html"><span class="s1">MultiChannel</span></a>). Something similar happens in patterns. Normally a value sent to a Synth node should be a single number, but if it's an array instead, the pattern expands the event to produce <i>multiple synth nodes</i> instead of just one.</p>
-<p class="p4"><br></p>
-<p class="p5">The 'degree' pattern applies a set of chord intervals to a melody that's always on top. It's a compound pattern, Pseries(...) + Prand(...), where Pseries returns a single number and Prand returns an array. As with regular math operations, a number plus an array is an array. If the current Pseries value is 7 and Prand returns [0, -3, -5], the result is [7, 4, 2] and you would hear a C major triad in first inversion.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseries</span>(7, <span class="s1">Pwhite</span>(1, 3, <span class="s1">inf</span>) * <span class="s1">Prand</span>(#[-1, 1], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(0, 14)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ <span class="s1">Prand</span>(#[[0, -2, -4], [0, -3, -5], [0, -2, -5], [0, -1, -4]], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pwrand</span>(#[1, 0.5], #[0.8, 0.2], <span class="s1">inf</span>)</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Using custom SynthDefs (including unpitched SynthDefs)</b></p>
-<p class="p4"><br></p>
-<p class="p5">Patterns have special features to support several styles of pitch organization, but those features are strictly optional. Here we play a SynthDef that has no frequency argument whatsoever.</p>
-<p class="p4"><br></p>
-<p class="p5">Note the use of <b>add</b> to prepare the SynthDef. Without it, most of the SynthDef inputs would not be recognized and the pattern would not send values to them.</p>
-<p class="p4"><br></p>
-<p class="p5">It's worth noting that the pattern runs in beats, whose real duration in seconds depends on the clock's tempo. The SynthDef, however, always measures time in seconds. This example keeps things simple by setting the clock to 1 beat per second. If the tempo needs to be something else, though, the 'time' key should be divided by the tempo:</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\time</span>, <span class="s1">Pkey</span>(<span class="s2">\delta</span>) / <span class="s1">Pfunc</span> { <span class="s1">thisThread</span>.clock.tempo },</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="s3">b = </span><span class="s1">Buffer</span><span class="s3">.read(s, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p7"><br></p>
-<p class="p9">SynthDef<span class="s3">(</span><span class="s2">\stretchedFragments</span><span class="s3">, { </span>|out, bufnum, start, time = 1, stretch = 1, amp = 1, attack = 0.01, decay = 0.05|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig = <span class="s1">PlayBuf</span>.ar(1, bufnum, rate: stretch.reciprocal, startPos: start, doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>sig = <span class="s1">PitchShift</span>.ar(sig, pitchRatio: stretch)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.linen(attack, time, decay), doneAction: 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sig ! 2)</p>
-<p class="p10"><span class="s3">}).add;<span class="Apple-tab-span">	</span></span>// note add! Without this, arguments won't work</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p7"><br></p>
-<p class="p6">p = <span class="s1">Pbind</span>(</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\stretchedFragments<span class="s3">,</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\bufnum<span class="s3">, b,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\start</span>, <span class="s1">Pwhite</span>(0, (b.numFrames * 0.7).asInteger, <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\delta</span>, <span class="s1">Pexprand</span>(0.2, 1.5, <span class="s1">inf</span>),</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\time<span class="s3">, </span><span class="s1">Pkey</span><span class="s3">(</span>\delta<span class="s3">),</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\stretch</span>, <span class="s1">Pexprand</span>(1.0, 4.0, <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.5,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\attack</span>, 0.1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\decay</span>, 0.2</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p10"><span class="s3">b.free;<span class="Apple-tab-span">	</span></span>// be tidy! remember to clean up your Buffer</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p12"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_08_Event_Types_and_Parameters.html"><span class="s4">PG_08_Event_Types_and_Parameters</span></a></span></p>
-<p class="p12"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook02_Manipulating_Patterns.html"><span class="s4">PG_Cookbook02_Manipulating_Patterns</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook02_Manipulating_Patterns.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook02_Manipulating_Patterns.html
deleted file mode 100644
index 5fd4b10..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook02_Manipulating_Patterns.html	
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2b7000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-span.s1 {color: #0016bd}
-span.s2 {color: #2b7000}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.s5 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Manipulating pattern data</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Merging (interleaving) independent streams</b></p>
-<p class="p2"><br></p>
-<p class="p4">Suppose you wanted a pattern that generated pitches in a lower range 70% of the time, and a higher range the other 30%. For purely random patterns, this is simple because the pattern for each range has no memory (the next value does not depend on the previous value in any perceptible way). The random number generator patterns (<a href="../Patterns/Pwhite.html"><span class="s1">Pwhite</span></a>) return one element before yielding control back to the "selector" (<a href="../Patterns/Pwrand.html"><span class="s1">Pwrand</span></a>).</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwrand</span>([<span class="s1">Pwhite</span>(-7, 11, 1), <span class="s1">Pwhite</span>(7, 18, 1)], #[0.7, 0.3], <span class="s1">inf</span>)</p>
-<p class="p2"><br></p>
-<p class="p4">This does not work if the ranges need to keep their own integrity. For that, Pnsym1 is ideal. We create a dictionary with named patterns, each of which maintain their own streams. Then we choose randomly between their names, picking one value from whichever stream is chosen this cycle.</p>
-<p class="p2"><br></p>
-<p class="p4">This use of <a href="../Patterns/Pseries.html"><span class="s1">Pseries</span></a> is essentially a random walk among scale degrees. It has more linear continuity than the equal distribution generated by Pwhite. Even though the higher range interrupts from time to time, the continuity should still be audible.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span><span class="Apple-tab-span">	</span>melodies = (</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lowMelody: <span class="s1">Pseries</span>(4, <span class="s1">Prand</span>(#[-2, -1, 1, 2], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(-7, 11),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>highMelody: <span class="s1">Pseries</span>(14, <span class="s1">Prand</span>(#[-3, -2, 2, 3], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(7, 18)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pnsym1</span>(<span class="s1">Pwrand</span>(#[lowMelody, highMelody], [0.7, 0.3], <span class="s1">inf</span>), melodies),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pwrand</span>(#[0.25, 0.5], #[0.4, 0.6], <span class="s1">inf</span>)</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Reading an array forward or backward arbitrarily</b></p>
-<p class="p2"><br></p>
-<p class="p4">Here's an interesting one. We have an array of possible output values, and we want the pattern to move forward or backward through the array depending on some kind of user input.</p>
-<p class="p2"><br></p>
-<p class="p4">There is actually a pattern that handles this already, based on the standard programming concept of a (random) walk. In a random walk, there is an "observer" who is at a position within an array. The observer moves randomly by some number of steps forward or backward. In the SuperCollider pattern implementation, <a href="../Patterns/Pwalk.html"><span class="s1">Pwalk</span></a>, the steps don't have to be random. So here, we determine the step size from a slider.</p>
-<p class="p2"><br></p>
-<p class="p4">In general, GUI objects should not be used for data storage. The approach here is to save the step size into a variable, and then refer to that variable in the Pwalk pattern.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s1">var</span><span class="s3"><span class="Apple-tab-span">	</span>pitches = (0..14),<span class="Apple-tab-span">	</span></span>// replace with other pitches you want</p>
-<p class="p5"><span class="Apple-tab-span">	</span>move = 0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>window, slider;</p>
-<p class="p6"><br></p>
-<p class="p5">window = <span class="s1">Window</span>.new(<span class="s4">"Mouse Transport"</span>, <span class="s1">Rect</span>(5, 100, 500, 50));</p>
-<p class="p5">slider = <span class="s1">Slider</span>.new(window, <span class="s1">Rect</span>(5, 5, 490, 20))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>.action_({ <span class="s1">|view|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>move = (view.value * 4 - 2).round;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5"><span class="Apple-tab-span">	</span>.value_(0.5);</p>
-<p class="p5">window.front;</p>
-<p class="p6"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Pfunc is the direction to move through the array</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// it could be anything</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="Apple-converted-space">  </span>- could read from MIDI or HID and convert it into a step</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="Apple-converted-space">  </span>- could be a GUI control, as it is here</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwalk</span>(pitches, <span class="s1">Pfunc</span> { move }, 1, 7),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Third-party extension alert:</b> The <a href="../Patterns/Pwalk.html"><span class="s1">Pwalk</span></a> pattern shown here moves forward and backward in a preset array. To do the same thing with the results of a pattern, see <b>Pscratch</b> in the ddwPatterns quark. An especially fun use of Pscratch is to use it on an event pattern like Pbind, skipping around in a series of fully realized note events.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Changing Pbind value patterns on the fly</b></p>
-<p class="p2"><br></p>
-<p class="p4">Patterns are converted into streams to generate values (or events). By design, there is no way to access the internal state of the stream. This means, for Pbind and similar patterns, the streams producing values for the event keys are invisible. So, it isn't possible to reach inside the stream and change them while the pattern is playing.</p>
-<p class="p2"><br></p>
-<p class="p4">What we can do instead is base the Pbind on <b>pattern proxies</b> -- objects that take the place of a pattern. The <a href="../../Libraries/JITLib/Patterns/PatternProxy.html"><span class="s1">PatternProxy</span></a> is a single object that creates a single stream within Pbind, but it looks for its values to the pattern and stream contained inside the proxy. Changing the proxy's pattern replaces the stream, without having to touch the Pbind's closed box.</p>
-<p class="p2"><br></p>
-<p class="p4">In the first example, pattern proxies are held in environment variables, and they can be manipulated through those variables.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">~degree = <span class="s1">PatternProxy</span>(<span class="s1">Pn</span>(<span class="s1">Pseries</span>(0, 1, 8), <span class="s1">inf</span>));</p>
-<p class="p5">~dur = <span class="s1">PatternProxy</span>(<span class="s1">Pn</span>(0.25, <span class="s1">inf</span>));</p>
-<p class="p6"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, ~degree,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, ~dur</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">~degree.source = (<span class="s1">Pexprand</span>(1, 8, <span class="s1">inf</span>) - 1).round;</p>
-<p class="p6"><br></p>
-<p class="p5">~dur.source = <span class="s1">Pwrand</span>(#[0.25, 0.5, 0.75], #[0.5, 0.3, 0.2], <span class="s1">inf</span>);</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">Another way is to use <a href="../../Libraries/JITLib/Patterns/Pdefn.html"><span class="s1">Pdefn</span></a>, which is a global namespace of proxies for value patterns. (Because of the different requirements for handling values and event patterns, there are two namespaces: <a href="../../Libraries/JITLib/Patterns/Pdef.html"><span class="s1">Pdef</span></a> for event patterns like Pbind, and Pdefn for value patterns such as \degree and \dur here.) Storage is all taken care of for you, no need for variables of your own.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">Pdefn</span>(<span class="s2">\degree</span>, <span class="s1">Pn</span>(<span class="s1">Pseries</span>(0, 1, 8), <span class="s1">inf</span>));</p>
-<p class="p5"><span class="s1">Pdefn</span>(<span class="s2">\dur</span>, <span class="s1">Pn</span>(0.25, <span class="s1">inf</span>));</p>
-<p class="p6"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\degree<span class="s3">, </span><span class="s1">Pdefn</span><span class="s3">(</span>\degree<span class="s3">),</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\dur<span class="s3">, </span><span class="s1">Pdefn</span><span class="s3">(</span>\dur<span class="s3">)</span></p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">Pdefn</span>(<span class="s2">\degree</span>, (<span class="s1">Pexprand</span>(1, 8, <span class="s1">inf</span>) - 1).round);</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">Pdefn</span>(<span class="s2">\dur</span>, <span class="s1">Pwrand</span>(#[0.25, 0.5, 0.75], #[0.5, 0.3, 0.2], <span class="s1">inf</span>));</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Third-party extension alert:</b> The ddwChucklib quark defines a third way of doing this, using object prototyping (based on Environments) to create objects that encapsulate all the information needed to perform a musical behavior. Patterns stored in the prototype's variables are automatically available as pattern proxies to the object's pattern, making it easier to create complex, malleable "processes" which can be replicated as separate objects that don't interfere with each other. It's a step toward object-oriented modeling of musical behaviors without requiring hardcoded classes that are specific to one piece or another.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook01_Basic_Sequencing.html"><span class="s5">PG_Cookbook01_Basic_Sequencing</span></a></span></p>
-<p class="p9"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook03_External_Control.html"><span class="s5">PG_Cookbook03_External_Control</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook03_External_Control.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook03_External_Control.html
deleted file mode 100644
index bebdcff..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook03_External_Control.html	
+++ /dev/null
@@ -1,212 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0016bd}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-span.s1 {color: #0016bd}
-span.s2 {color: #000000}
-span.s3 {color: #2b7000}
-span.s4 {color: #606060}
-span.s5 {text-decoration: underline ; color: #001bec}
-span.s6 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pattern control by external device</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Control of parameters by MIDI or HID</b></p>
-<p class="p2"><br></p>
-<p class="p4">To get pattern values from a HID device, use the <a href="../Patterns/PhidKey.html"><span class="s1">PhidKey</span></a> or <a href="../Patterns/PhidSlot.html"><span class="s1">PhidSlot</span></a> pattern.</p>
-<p class="p2"><br></p>
-<p class="p4">For MIDI, the best approach is to save an incoming value into a variable, and then use <a href="../Patterns/Pfunc.html"><span class="s1">Pfunc</span></a> to access the variable for each event.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">~legato = 1;</p>
-<p class="p6"><span class="s2">c = </span>CCResponder<span class="s2">({ </span>|src, chan, num, value|</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~legato = value.linlin(0, 127, 0.1, 2.5)</p>
-<p class="p7"><span class="s2">}, num: 1);<span class="Apple-tab-span">	</span></span>// num: 1 means modwheel</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pwhite</span>(-7, 12, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>([0.25, <span class="s1">Pn</span>(0.125, 2)], #[0.8, 0.2], <span class="s1">inf</span>),</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">\legato</span><span class="s2">, </span><span class="s1">Pfunc</span><span class="s2"> { ~legato }<span class="Apple-tab-span">	</span></span>// retrieves value set by MIDI control</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p5">c.remove;</p>
-<p class="p2"><br></p>
-<p class="p4">If Pfunc {<span class="Apple-converted-space">  </span>} is bothersome in the Pbind, a <a href="../../Libraries/JITLib/Patterns/PatternProxy.html"><span class="s1">PatternProxy</span></a> or <a href="../../Libraries/JITLib/Patterns/Pdefn.html"><span class="s1">Pdefn</span></a> could also serve the purpose.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">~legato = <span class="s1">PatternProxy</span>(1);</p>
-<p class="p6"><span class="s2">c = </span>CCResponder<span class="s2">({ </span>|src, chan, num, value|</p>
-<p class="p5"><span class="Apple-tab-span">	</span>~legato.source = value.linlin(0, 127, 0.1, 2.5)</p>
-<p class="p5">}, num: 1);</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pwhite</span>(-7, 12, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>([0.25, <span class="s1">Pn</span>(0.125, 2)], #[0.8, 0.2], <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, ~legato</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p5">c.remove;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Triggering patterns by external control</b></p>
-<p class="p2"><br></p>
-<p class="p4">Issuing 'play' to a pattern can occur in an action function for many different kinds of objects: GUI, MIDI, OSCresponder, HID actions. This allows triggering patterns from a variety of interfaces.</p>
-<p class="p2"><br></p>
-<p class="p4">It's very unlikely that an action function would be triggered exactly in sync with a clock. If the pattern being played needs to run in time with other patterns, use the 'quant' argument to control its starting time (see <a href="../../Scheduling/Quant.html"><span class="s1">Quant</span></a>).</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Triggering a pattern by a GUI</b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span><span class="Apple-tab-span">	</span>pattern = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseries</span>(7, <span class="s1">Pwhite</span>(1, 3, <span class="s1">inf</span>) * <span class="s1">Prand</span>(#[-1, 1], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(0, 14)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ <span class="s1">Prand</span>(#[[0, -2, -4], [0, -3, -5], [0, -2, -5], [0, -1, -4]], <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>(#[1, 0.5], #[0.8, 0.2], <span class="s1">inf</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>player, window;</p>
-<p class="p8"><br></p>
-<p class="p5">window = <span class="s1">Window</span>.new(<span class="s4">"Pattern trigger"</span>, <span class="s1">Rect</span>(5, 100, 150, 100))</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// onClose is fairly important</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// without it, closing the window could leave the pattern playing</p>
-<p class="p5"><span class="Apple-tab-span">	</span>.onClose_({ player.stop });</p>
-<p class="p5"><span class="s1">Button</span>.new(window, <span class="s1">Rect</span>(5, 5, 140, 90))</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>.states_([[</span>"Pattern GO"<span class="s2">], [</span>"Pattern STOP"<span class="s2">]])</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>.font_(<span class="s1">Font</span>.new(<span class="s4">"Helvetica"</span>, 18))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>.action_({ <span class="s1">|button|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(button.value == 1 and: { player.isNil or: { player.isPlaying.not } }) {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>player = pattern.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>player.stop;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>button.value = 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">window.front;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Triggering a pattern by MIDI</b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span><span class="Apple-tab-span">	</span>pattern = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseries</span>(7, <span class="s1">Pwhite</span>(1, 3, <span class="s1">inf</span>) * <span class="s1">Prand</span>(#[-1, 1], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(0, 14)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ <span class="s1">Prand</span>(#[[0, -2, -4], [0, -3, -5], [0, -2, -5], [0, -1, -4]], <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>(#[1, 0.5], #[0.8, 0.2], <span class="s1">inf</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>player;</p>
-<p class="p8"><br></p>
-<p class="p5">~noteOnResp = <span class="s1">NoteOnResponder</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>if(player.isNil or: { player.isPlaying.not }) {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>player = pattern.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>} {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>player.stop;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p7">// num: 60 limits this responder to listen to middle-C only</p>
-<p class="p7">// but it will pick up that note from any port, any channel</p>
-<p class="p5">}, num: 60);</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p7">// when done</p>
-<p class="p5">~noteOnResp.remove;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Triggering a pattern by signal amplitude</b></p>
-<p class="p2"><br></p>
-<p class="p4">Triggering a pattern based on audio amplitude is a bit trickier -- not because it's harder to play the pattern, but because identifying when the trigger should happen is more involved. The most straightforward way in SuperCollider is to use the <a href="../../UGens/Analysis/Amplitude.html"><span class="s1">Amplitude</span></a> UGen to get the volume of the input signal and compare it to a threshold. Volume can fluctuate rapidly, so the 'releaseTime' argument of Amplitude is set to a high value. This makes the measured amplitude fall more slowly toward the baseline, preventing triggers from being sent too close together.</p>
-<p class="p2"><br></p>
-<p class="p4">The actual threshold depends on the incoming signal, so the example pops up a quick and dirty window to see the measured amplitude and set the threshold and decay accordingly. The synth listens by default to the first hardware input bus, but you can change it the following in the code to use a different input bus:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>inbus: s.options.numOutputBusChannels</p>
-<p class="p2"><br></p>
-<p class="p4">In this configuration, the first trigger starts the pattern and the second trigger stops it. You might want the pattern to play while the input signal is above the threshold, and stop when the signal drops to a quieter level. The comparison amp >= thresh can send a trigger only when the signal goes from softer to lower, so if we want the pattern to stop when the signal becomes quiet, we need to send a trigger when crossing the threshold in both directions.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>amp = <span class="s1">Amplitude</span>.kr(<span class="s1">In</span>.ar(inbus, 1), attackTime: 0.01, releaseTime: decay),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s1">HPZ1</span>.kr(amp >= thresh);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(trig.abs, 1, trig);</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s5"><a href="../../UGens/Filters/HPZ1.html">HPZ1</a></span> is positive if its input rises and negative if it falls. Triggering based on the absolute value, then, sends the trigger on any change. The client responding to the trigger might need to know the direction of change, so we send HPZ1's value back and the client can decide which action to take based on the sign of this value.</p>
-<p class="p2"><br></p>
-<p class="p4">For this example, triggers are measured only when the signal rises above the threshold.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span><span class="Apple-tab-span">	</span>pattern = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseries</span>(7, <span class="s1">Pwhite</span>(1, 3, <span class="s1">inf</span>) * <span class="s1">Prand</span>(#[-1, 1], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(0, 14)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ <span class="s1">Prand</span>(#[[0, -2, -4], [0, -3, -5], [0, -2, -5], [0, -1, -4]], <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>(#[1, 0.5], #[0.8, 0.2], <span class="s1">inf</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>player;</p>
-<p class="p8"><br></p>
-<p class="p7">// Quicky GUI to tune threshold and decay times</p>
-<p class="p5">~w = <span class="s1">Window</span>(<span class="s4">"threshold setting"</span>, <span class="s1">Rect</span>(15, 100, 300, 100))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>.onClose_({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~ampSynth.free;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~ampUpdater.remove;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~oscTrigResp.remove;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>player.stop;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">~w.view.decorator = <span class="s1">FlowLayout</span>(~w.view.bounds, 2 at 2, 2 at 2);</p>
-<p class="p5">~ampView = <span class="s1">EZSlider</span>(~w, 295 at 20, <span class="s4">"amplitude"</span>, <span class="s3">\amp</span>, labelWidth: 80, numberWidth: 60);</p>
-<p class="p5">~ampView.sliderView.canFocus_(<span class="s1">false</span>).enabled_(<span class="s1">false</span>);</p>
-<p class="p5">~ampView.numberView.canFocus_(<span class="s1">false</span>).enabled_(<span class="s1">false</span>);</p>
-<p class="p5"><span class="s1">StaticText</span>(~w, 295 at 5).background_(<span class="s1">Color</span>.gray);</p>
-<p class="p5">~threshView = <span class="s1">EZSlider</span>(~w, 295 at 30, <span class="s4">"threshold"</span>, <span class="s3">\amp</span>, action: { <span class="s1">|ez|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~ampSynth.set(<span class="s3">\thresh</span>, ez.value);</p>
-<p class="p5">}, initVal: 0.4, labelWidth: 80, numberWidth: 60);</p>
-<p class="p5">~decayView = <span class="s1">EZSlider</span>(~w, 295 at 30, <span class="s4">"decay"</span>, #[0.1, 100, <span class="s3">\exp</span>], action: { <span class="s1">|ez|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>~ampSynth.set(<span class="s3">\decay</span>, ez.value);</p>
-<p class="p5">}, initVal: 80.0, labelWidth: 80, numberWidth: 60);</p>
-<p class="p8"><br></p>
-<p class="p5">~w.front;</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s2">~ampSynth = </span>SynthDef<span class="s2">(</span><span class="s3">\ampSynth</span><span class="s2">, { </span>|inbus, thresh = 0.8, decay = 1|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>amp = <span class="s1">Amplitude</span>.kr(<span class="s1">In</span>.ar(inbus, 1), attackTime: 0.01, releaseTime: decay);</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this trigger (id==0) is to update the gui only</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(<span class="s1">Impulse</span>.kr(10), 0, amp);</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this trigger gets sent only when amplitude crosses threshold</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SendTrig</span>.kr(amp >= thresh, 1, 1);</p>
-<p class="p5">}).play(args: [inbus: s.options.numOutputBusChannels, thresh: ~threshView.value, decay: ~decayView.value]);</p>
-<p class="p8"><br></p>
-<p class="p5">~ampUpdater = <span class="s1">OSCpathResponder</span>(s.addr, [<span class="s3">'/tr'</span>, ~ampSynth.nodeID, 0], { <span class="s1">|time, resp, msg|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>defer { ~ampView.value = msg[3] }</p>
-<p class="p5">}).add;</p>
-<p class="p8"><br></p>
-<p class="p5">~oscTrigResp = <span class="s1">OSCpathResponder</span>(s.addr, [<span class="s3">'/tr'</span>, ~ampSynth.nodeID, 1], { <span class="s1">|time, resp, msg|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>if(player.isNil or: { player.isPlaying.not }) {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>player = pattern.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>} {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>player.stop;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s2">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook02_Manipulating_Patterns.html"><span class="s6">PG_Cookbook02_Manipulating_Patterns</span></a></span></p>
-<p class="p10"><span class="s2">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook04_Sending_MIDI.html"><span class="s6">PG_Cookbook04_Sending_MIDI</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook04_Sending_MIDI.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook04_Sending_MIDI.html
deleted file mode 100644
index fd882ed..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook04_Sending_MIDI.html	
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.s6 {color: #007300}
-span.s7 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Sending MIDI out with Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Sending MIDI is the job of the <a href="../../Control/MIDIOut.html"><span class="s1">MIDIOut</span></a> class and the \midi event type. A MIDIOut is created to talk to a hardware device; the MIDI channel is provided when an event is played. MIDIOut's newByName makes it easier to identify a device.</p>
-<p class="p2"><br></p>
-<p class="p3">The \midi event type supports the following commands, chosen in the event by the \midicmd key: <span class="s2">\allNotesOff</span>, <span class="s2">\bend</span>, <span class="s2">\control</span>, <span class="s2">\noteOff</span>, <span class="s2">\noteOn</span>, <span class="s2">\polyTouch</span>, <span class="s2">\program</span>, <span class="s2">\smpte</span>, <span class="s2">\songPtr</span>, <span class="s2">\sysex</span>, <span class="s2">\touch</span>. The default is \noteOn. When playing a note (noteOn), by default the corresponding noteOff message will be sent after the note's sustain time.</p>
-<p class="p2"><br></p>
-<p class="p3">If you want to synchronize events played by a MIDI device and events played by the SuperCollider server, the MIDIOut object's latency must match the server latency. You can set the latency any time to affect all future events.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3">MIDIClient</span><span class="s4">.init;<span class="Apple-tab-span">	</span></span>// if not already done</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// substitute your own device here</p>
-<p class="p6"><span class="s3">var</span><span class="Apple-tab-span">	</span>mOut = <span class="s3">MIDIOut</span>.newByName(<span class="s5">"FastLane USB"</span>, <span class="s5">"Port A"</span>).latency_(<span class="s3">Server</span>.default.latency);</p>
-<p class="p5"><br></p>
-<p class="p6">p = <span class="s3">Pbind</span>(</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>\type<span class="s4">, </span>\midi<span class="s4">,</span></p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this line is optional b/c noteOn is the default</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// just making it explicit here</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>\midicmd<span class="s4">, </span>\noteOn<span class="s4">,</span></p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s6">\midiout</span><span class="s4">, mOut,<span class="Apple-tab-span">	</span></span>// must provide the MIDI target here</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\chan</span>, 0,</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// degree is converted to midinote, not just frequency</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s3">Pwhite</span>(-7, 12, <span class="s3">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s3">Pwrand</span>([0.25, <span class="s3">Pn</span>(0.125, 2)], #[0.8, 0.2], <span class="s3">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\legato</span>, sin(<span class="s3">Ptime</span>(<span class="s3">inf</span>) * 0.5).linexp(-1, 1, 1/3, 3),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\amp</span>, <span class="s3">Pexprand</span>(0.5, 1.0, <span class="s3">inf</span>)</p>
-<p class="p6">).play(quant: 1);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s4">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook03_External_Control.html"><span class="s7">PG_Cookbook03_External_Control</span></a></span></p>
-<p class="p8"><span class="s4">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook05_Using_Samples.html"><span class="s7">PG_Cookbook05_Using_Samples</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook05_Using_Samples.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook05_Using_Samples.html
deleted file mode 100644
index 18ebdb6..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook05_Using_Samples.html	
+++ /dev/null
@@ -1,280 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {text-decoration: underline ; color: #0000bf}
-span.s5 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Using samples</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Playing a pattern in time with a sampled loop</b></p>
-<p class="p2"><br></p>
-<p class="p4">A deceptively complex requirement... here, we will loop the a11wlk01.wav sample between 0.404561 and 3.185917 seconds (chosen for its surprisingly accurate four-beat groove), and overlay synthesized bells emphasizing the meter.</p>
-<p class="p2"><br></p>
-<p class="p4">It might be tempting to loop a <a href="../../UGens/Playback and Recording/PlayBuf.html"><span class="s1">PlayBuf</span></a> so that the loop runs automatically on the server, but it can easily drift out of sync with the client (because of slight deviations in the actual sample rate). Instead, the example defines a SynthDef that plays exactly one repetition of the loop, and repeatedly triggers it once per bar.</p>
-<p class="p2"><br></p>
-<p class="p4">The primary bell pattern accents the downbeat and follows with a randomly generated rhythm. The catch is that we have no assurance that the <a href="../Patterns/Pwrand.html"><span class="s1">Pwrand</span></a> \dur pattern will add up to exactly 4 beats. The <a href="../Patterns/Pfindur.html"><span class="s1">Pfindur</span></a> ("finite duration") pattern cuts off the inner Pbind after 4 beats. This would stop the pattern, except <a href="../Patterns/Pn.html"><span class="s1">Pn</span></a> repeats the Pfindur infinitely, placing the accent in the right place every time.</p>
-<p class="p2"><br></p>
-<p class="p4">The loop actually starts with a half-beat anacrusis, so <a href="../Patterns/Ptpar.html"><span class="s1">Ptpar</span></a> delays the bell patterns by 0.5 beats.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">b = </span><span class="s1">Buffer</span><span class="s2">.read(s, </span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p7"><br></p>
-<p class="p8">// one loop segment</p>
-<p class="p9">SynthDef<span class="s2">(</span><span class="s3">\oneLoop</span><span class="s2">, { </span>|out, bufnum, start, time, amp|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig = <span class="s1">PlayBuf</span>.ar(1, bufnum, startPos: start, loop: 0),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.linen(0.01, time, 0.05, level: amp), doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, (sig * env) ! 2)</p>
-<p class="p5">}).add;</p>
-<p class="p7"><br></p>
-<p class="p9">SynthDef<span class="s2">(</span><span class="s3">\bell</span><span class="s2">, { </span>|out, accent = 0, amp = 0.1, decayScale = 1|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>exc = <span class="s1">PinkNoise</span>.ar(amp)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">Decay2</span>.kr(<span class="s1">Impulse</span>.kr(0), 0.01, 0.05),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sig = <span class="s1">Klank</span>.ar(`[</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s1">ExpRand</span>(400, 1600) } ! 4,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 ! 4,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s1">ExpRand</span>(0.1, 0.4) } ! 4</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], exc, freqscale: accent + 1, decayscale: decayScale);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">DetectSilence</span>.ar(sig, doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sig ! 2)</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">TempoClock</span>.default.tempo = 0.35953685899971 * 4;</p>
-<p class="p7"><br></p>
-<p class="p5">p = <span class="s1">Ptpar</span>([</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0, <span class="s1">Pbind</span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\oneLoop<span class="s2">,</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\bufnum<span class="s2">, b,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.4,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\start</span>, 17841,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\time</span>, 0.35953685899971.reciprocal,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 4</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5, <span class="s1">Pn</span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pfindur<span class="s2">(4,</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\bell<span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\accent</span>, <span class="s1">Pseq</span>([2, <span class="s1">Pn</span>(0, <span class="s1">inf</span>)], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>([0.3, <span class="s1">Pn</span>(0.1, <span class="s1">inf</span>)], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\decayScale</span>, <span class="s1">Pseq</span>([6, <span class="s1">Pn</span>(1, <span class="s1">inf</span>)], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>(#[0.25, 0.5, 0.75, 1], #[2, 3, 1, 1].normalizeSum, <span class="s1">inf</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5, <span class="s1">Pbind</span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\bell<span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\accent</span>, -0.6,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.2,</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\decayScale<span class="s2">, 0.1,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 1</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">], 1).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p4">The use of Ptpar above means that you could stop or start only the whole ball of wax at once, with no control over the three layers. It's no more difficult to play the layers in the independent event stream players, using the quant argument to ensure the proper synchronization. See the <a href="../../Scheduling/Quant.html"><span class="s1">Quant</span></a> help file for details on specifying the onset time of a pattern.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">TempoClock</span>.default.tempo = 0.35953685899971 * 4;</p>
-<p class="p7"><br></p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\oneLoop<span class="s2">,</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\bufnum<span class="s2">, b,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.4,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\start</span>, 17841,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\time</span>, 0.35953685899971.reciprocal,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 4</p>
-<p class="p5">).play(quant: [4, 3.5]);</p>
-<p class="p7"><br></p>
-<p class="p5">q = <span class="s1">Pn</span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>Pfindur<span class="s2">(4,</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\bell<span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\accent</span>, <span class="s1">Pseq</span>([2, <span class="s1">Pn</span>(0, <span class="s1">inf</span>)], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>([0.3, <span class="s1">Pn</span>(0.1, <span class="s1">inf</span>)], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\decayScale</span>, <span class="s1">Pseq</span>([6, <span class="s1">Pn</span>(1, <span class="s1">inf</span>)], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>(#[0.25, 0.5, 0.75, 1], #[2, 3, 1, 1].normalizeSum, <span class="s1">inf</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s1">inf</span>).play(quant: [4, 4]);</p>
-<p class="p7"><br></p>
-<p class="p5">r = <span class="s1">Pbind</span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\bell<span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\accent</span>, -0.6,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.2,</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\decayScale<span class="s2">, 0.1,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 1</p>
-<p class="p5">).play(quant: [4, 4]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">[p, q, r].do(<span class="s1">_</span>.stop);</p>
-<p class="p7"><br></p>
-<p class="p5">b.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Using audio samples to play pitched material</b></p>
-<p class="p2"><br></p>
-<p class="p4">To use an instrument sample in a pattern, you need a SynthDef that plays the sample at a given rate. Here we will use <a href="../../UGens/Playback and Recording/PlayBuf.html"><span class="s1">PlayBuf</span></a>, which doesn't allow looping over a specific region. For that, <a href="../../UGens/Triggers/Phasor.html"><span class="s1">Phasor</span></a> and <a href="../../UGens/Oscillators/BufRd.html"><span class="s1">BufRd</span></a> are probably the best choice. (Third-party extension alert: LoopBuf by Lance Putnam is an alternative - click to download [osx]: <a href="http://www.uweb.ucsb.edu/~ljputnam/files/sc3/LoopBuf.zip"><span class="s4">http://www.uweb.ucsb.edu/~ljputnam/files/sc3/LoopBuf.zip</span></a>.)</p>
-<p class="p2"><br></p>
-<p class="p4">Frequency is controlled by the rate parameter. The sample plays at a given frequency at normal rate, so to play a specific frequency, <b>frequency / baseFrequency</b> gives you the required rate.</p>
-<p class="p2"><br></p>
-<p class="p4">The first example makes a custom protoEvent that calculates rate, as \freq, based on the base frequency. It uses one sample, so it would be best for patterns that will play in a narrow range. Since there isn't an instrument sample in the SuperCollider distribution, we will record a frequency-modulation sample into a buffer before running the pattern.</p>
-<p class="p2"><br></p>
-<p class="p8">// make a sound sample</p>
-<p class="p5">(</p>
-<p class="p5">var<span class="Apple-tab-span">	</span>recorder;</p>
-<p class="p5">fork {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>b = <span class="s1">Buffer</span>.alloc(s, 44100 * 2, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sync;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>recorder = { <span class="s1">|freq = 440|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>initPulse = <span class="s1">Impulse</span>.kr(0),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mod = <span class="s1">SinOsc</span>.ar(freq) * <span class="s1">Decay2</span>.kr(initPulse, 0.01, 3) * 5,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>car = <span class="s1">SinOsc</span>.ar(freq + (mod*freq)) * <span class="s1">Decay2</span>.kr(initPulse, 0.01, 2.0);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">RecordBuf</span>.ar(car, b, loop: 0, doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>car ! 2</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">OSCpathResponder</span>(s.addr, [<span class="s3">'/n_end'</span>, recorder.nodeID], { <span class="s1">|time, resp, msg|</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"done recording"<span class="s2">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>resp.remove;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;<span class="Apple-tab-span">	</span></p>
-<p class="p5">};</p>
-<p class="p9">SynthDef<span class="s2">(</span><span class="s3">\sampler</span><span class="s2">, { </span>|out, bufnum, freq = 1, amp = 1|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>sig = <span class="s1">PlayBuf</span>.ar(1, bufnum, rate: freq, doneAction: 2) * amp;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sig ! 2)</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p8">// WAIT for "done recording" message before doing this</p>
-<p class="p5"><span class="s1">var</span><span class="Apple-tab-span">	</span>samplerEvent = <span class="s1">Event</span>.default.put(<span class="s3">\freq</span>, { ~midinote.midicps / ~sampleBaseFreq });</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pwhite</span>(0, 12, <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>([0.25, <span class="s1">Pn</span>(0.125, 2)], #[0.8, 0.2], <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pexprand</span>(0.1, 0.5, <span class="s1">inf</span>),</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\sampleBaseFreq<span class="s2">, 440,</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\sampler<span class="s2">,</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\bufnum<span class="s2">, b</span></p>
-<p class="p5">).play(protoEvent: samplerEvent);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p5">b.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Multi-sampled instruments</b></p>
-<p class="p2"><br></p>
-<p class="p4">To extend the sampler's range using multiple samples and ensure smooth transitions between frequency ranges, the SynthDef should crossfade between adjacent buffers. A hybrid approach is used here, where Pbind calculates the lower buffer number to use and the SynthDef calculates the crossfade strength. (The calculations could be structured differently, either putting more of them into the SynthDef for convenience in the pattern, or loading them into the pattern and keeping the SynthDef as lean as possible.)</p>
-<p class="p2"><br></p>
-<p class="p4">MIDI note numbers are used for these calculations because it's a linear frequency scale and linear interpolation is easier than the exponential interpolation that would be required when using Hz. Assuming a sorted array, indexInBetween gives the fractional index using linear interpolation. If you need to use frequency in Hz, use this function in place of indexInBetween.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>f = { </span>|val, array|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b, div;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> i = array.indexOfGreaterThan(val);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(i.isNil) { array.size - 1 } {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(i == 0) { i } {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = array[i-1]; b = array[i];</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>div = b / a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(div == 1) { i } {</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// log() / log() == log(val/a) at base (b/a)</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// which is the inverse of exponential interpolation</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>log(val / a) / log(div) + i - 1</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><br></p>
-<p class="p4">But that function isn't needed for this example:</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span><span class="Apple-tab-span">	</span>bufCount;</p>
-<p class="p5">~midinotes = (39, 46 .. 88);</p>
-<p class="p5">bufCount = ~midinotes.size;</p>
-<p class="p7"><br></p>
-<p class="p5">fork {</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// record the samples at different frequencies</p>
-<p class="p5"><span class="Apple-tab-span">	</span>b = <span class="s1">Buffer</span>.allocConsecutive(~midinotes.size, s, 44100 * 2, 1);</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s3">\sampleSource</span><span class="s2">, { </span>|freq = 440, bufnum|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>initPulse = <span class="s1">Impulse</span>.kr(0),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mod = <span class="s1">SinOsc</span>.ar(freq) * <span class="s1">Decay2</span>.kr(initPulse, 0.01, 3) * 5,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>car = <span class="s1">SinOsc</span>.ar(freq + (mod*freq)) * <span class="s1">Decay2</span>.kr(initPulse, 0.01, 2.0);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">RecordBuf</span>.ar(car, bufnum, loop: 0, doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sync;</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// record all 8 buffers concurrently</p>
-<p class="p5"><span class="Apple-tab-span">	</span>b.do({ <span class="s1">|buf, i|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Synth</span>(<span class="s3">\sampleSource</span>, [freq: ~midinotes[i].midicps, bufnum: buf]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">};</p>
-<p class="p9">OSCresponderNode<span class="s2">(s.addr, </span><span class="s3">'/n_end'</span><span class="s2">, { </span>|t, r, m|</p>
-<p class="p5"><span class="Apple-tab-span">	</span>bufCount = bufCount - 1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>if(bufCount == 0) {</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"done recording"<span class="s2">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>r.remove;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5">}).add;</p>
-<p class="p7"><br></p>
-<p class="p9">SynthDef<span class="s2">(</span><span class="s3">\multiSampler</span><span class="s2">, { </span>|out, bufnum, bufBase, baseFreqBuf, freq = 440, amp = 1|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span><span class="Apple-tab-span">	</span>buf1 = bufnum.floor,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>buf2 = buf1 + 1,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>xfade = (bufnum - buf1).madd(2, -1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>basefreqs = <span class="s1">Index</span>.kr(baseFreqBuf, [buf1, buf2]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>playbufs = <span class="s1">PlayBuf</span>.ar(1, bufBase + [buf1, buf2], freq / basefreqs, loop: 0, doneAction: 2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sig = <span class="s1">XFade2</span>.ar(playbufs[0], playbufs[1], xfade, amp);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sig ! 2)</p>
-<p class="p5">}).add;</p>
-<p class="p7"><br></p>
-<p class="p5">~baseBuf = <span class="s1">Buffer</span>.alloc(s, ~midinotes.size, 1, { <span class="s1">|buf|</span> buf.setnMsg(0, ~midinotes.midicps) });</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">TempoClock</span>.default.tempo = 1;</p>
-<p class="p5">p = <span class="s1">Pbind</span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\multiSampler<span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\bufBase</span>, b.first,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\baseFreqBuf</span>, ~baseBuf,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s1">Pseries</span>(0, <span class="s1">Prand</span>(#[-2, -1, 1, 2], <span class="s1">inf</span>), <span class="s1">inf</span>).fold(-11, 11),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pwrand</span>([0.25, <span class="s1">Pn</span>(0.125, 2)], #[0.8, 0.2], <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pexprand</span>(0.1, 0.5, <span class="s1">inf</span>),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// some important conversions</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// identify the buffer numbers to read</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s1">Pfunc</span> { <span class="s1">|ev|</span> ev.use(ev[<span class="s3">\freq</span>]) },</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\bufnum</span>, <span class="s1">Pfunc</span>({ <span class="s1">|ev|</span> ~midinotes.indexInBetween(ev[<span class="s3">\freq</span>].cpsmidi) })</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.clip(0, ~midinotes.size - 1.001)</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p5">b.do(<span class="s1">_</span>.free); ~baseBuf.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p11"><span class="s2">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook04_Sending_MIDI.html"><span class="s5">PG_Cookbook04_Sending_MIDI</span></a></span></p>
-<p class="p11"><span class="s2">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook06_Phrase_Network.html"><span class="s5">PG_Cookbook06_Phrase_Network</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook06_Phrase_Network.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook06_Phrase_Network.html
deleted file mode 100644
index d7bf5b8..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook06_Phrase_Network.html	
+++ /dev/null
@@ -1,204 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Sequencing by a network of phrases</b></p>
-<p class="p1"><b>Articulating notes with PmonoArtic</b></p>
-<p class="p2"><br></p>
-<p class="p3">Two for one here!</p>
-<p class="p2"><br></p>
-<p class="p3">Most conventional synthesizers have a mode where playing a note while the previous note is still sustaining slides from one note to the other. The <a href="../Patterns/PmonoArtic.html"><span class="s1">PmonoArtic</span></a> pattern does this based on the event's sustain value. The delta value is the number of beats until the next event; sustain is the number of beats until the note releases. If sustain is shorter than delta, the note should cut off early and the next event should produce a new synth.</p>
-<p class="p2"><br></p>
-<p class="p3">The example uses <a href="../Patterns/Pfsm.html"><span class="s1">Pfsm</span></a> (finite state machine) to arrange a set of predefined phrases in a partially randomized order. Each phrase is followed by a list pointing to the phrases that could legitimately follow the current phrase. That is, it might make musical sense to go from phrase 1 to phrase 2, but not from 1 to 3. Defining the successors for 1 appropriately makes sure that a nonsense transition will not be made.</p>
-<p class="p2"><br></p>
-<p class="p3">This is a long example, but it's only because there are lots of phrases. The structure is very simple: just a set of phrases chosen in succession by Pfsm.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Third-party extension alert:</b> In this example, the selection of the next phrase is explicitly weighted by repeating array elements, such as #[1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5]. A more elegant way to do this is using the <b>WeighBag</b> class in the MathLib quark.</p>
-<p class="p2"><br></p>
-<p class="p4">// the following are equivalent:</p>
-<p class="p5">a = #[1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5];</p>
-<p class="p5">({ a.choose } ! 100).histo(5, 1, 5);</p>
-<p class="p6"><br></p>
-<p class="p5">a = <span class="s1">WeighBag</span>.with((1..5), #[4, 2, 2, 2, 1]);</p>
-<p class="p5">({ a.wchoose } ! 100).histo(5, 1, 5);</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Example:</b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p4">// this SynthDef has a strong attack, emphasizing the articulation</p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">, { </span>|out, freq = 440, gate = 0.5, plfofreq = 6, mw = 0, ffreq = 2000, rq = 0.3, freqlag = 0.05, amp = 1|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> sig, plfo, fcurve;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>plfo = <span class="s1">SinOsc</span>.kr(plfofreq, mul:mw, add:1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s1">Lag</span>.kr(freq, freqlag) * plfo;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>fcurve = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.adsr(0, 0.3, 0.1, 20), gate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>fcurve = (fcurve - 1).madd(0.7, 1) * ffreq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s1">Mix</span>.ar([<span class="s1">Pulse</span>.ar(freq, 0.9), <span class="s1">Saw</span>.ar(freq*1.007)]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s1">RLPF</span>.ar(sig, fcurve, rq)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.adsr(0.04, 0.2, 0.6, 0.1), gate, doneAction:2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* amp;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, sig ! 2)</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">TempoClock</span>.default.tempo = 128/60;</p>
-<p class="p6"><br></p>
-<p class="p4">// Pmul does only one thing here: take ~amp from each event</p>
-<p class="p4">// and replace it with ~amp * 0.4</p>
-<p class="p5">p = <span class="s1">Pmul</span>(<span class="s3">\amp</span>, 0.4, <span class="s1">Pfsm</span>([</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span>#[0, 3, 1],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// starting places</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([78, 81, 78, 76, 78, 76, 72, 71, 69, 66], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 1.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.3, 1.2, 0.3, 0.2, 0.3, 0.2, 0.3, 0.2, 0.3, 0.2],1 ),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[1, 0.5, 0.75, 0.5, 0.75, 0.5, 0.75, 0.5, 0.75, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, <span class="s1">Pseq</span>([0, 0.03, <span class="s1">Pseq</span>(#[0], <span class="s1">inf</span>)], 1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[1, 2, 3, 4, 7],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([64, 66, 69, 71, 72, 73], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25], 6),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.3, 0.2, 0.2, 0.2, 0.3, 0.2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[1, 0.5, 0.5, 0.5, 0.5, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([69, 71, 69, 66, 64, 69, 71, 69], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.125, 0.625, 0.25, 0.25, 0.25, 0.25, 0.25, 0.75], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.2, 0.64, 0.2, 0.2, 0.2, 0.3, 0.3, 0.75], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[0.5, 0.75, 0.5, 0.5, 0.5, 1, 0.5, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[0, 1, 1, 1, 1, 3, 3, 3, 3, 5],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([72, 73, 76, 72, 71, 69, 66, 71, 69], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 0.25, 0.25, 0.083, 0.083, 0.084, 0.25, 0.25, 0.25], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.3, 0.2, 0.2, 0.1, 0.07, 0.07, 0.2, 0.3, 0.2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[1, 0.5, 0.5, 1, 0.3, 0.3, 0.75, 0.75, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[1, 1, 1, 1, 3, 3, 4, 4, 4],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([64, 66, 69, 71, 72, 73, 71, 69, 66, 71, 69, 66, 64, 69], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 0.25, 0.25, 0.25, 0.125, 0.375, 0.166, 0.166, 0.168,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5, 0.166, 0.166, 0.168, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.3, 0.2, 0.2, 0.2, 0.14, 0.4, 0.2, 0.2, 0.2, 0.6, 0.2, 0.2, 0.2, 0.5],1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[0.5, 0.5, 0.6, 0.8, 1, 0.5, 0.5, 0.5, 0.5, 1,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5, 0.5, 0.5, 0.45], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[0, 1, 1, 1, 1, 3, 3, 5],</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([72, 73, 76, 78, 81, 78, 83, 81, 84, 85], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.125, 1.125], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.3, 0.2, 0.2, 0.2, 0.95, 0.25, 0.95, 0.25, 0.2, 1.13], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[0.7, 0.5, 0.5, 0.5, 0.7, 0.5, 0.8, 0.5, 1, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, <span class="s1">Pseq</span>([<span class="s1">Pseq</span>(#[0], 9), 0.03], 1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[6, 6, 6, 8, 9, 10, 10, 10, 10, 11, 11, 13, 13],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([83, 81, 78, 83, 81, 78, 76, 72, 73, 78, 72, 72, 71], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25, 2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.3, 0.3, 0.2, 0.3, 0.3, 0.3, 0.2, 0.3, 0.2, 0.3, 0.2, 0.3, 2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[0.5, 0.5, 0.5, 0.8, 0.5, 0.5, 0.5, 0.8, 0.5, 0.8, 0.5,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, 0.4], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, <span class="s1">Pseq</span>([<span class="s1">Pseq</span>([0], 12), 0.03], 1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[0, 7, 7, 7, 7, 7, 3, 3, 3, 3],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([69, 71, 72, 71, 69, 66, 64, 69, 71], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 0.25, 0.25, 0.25, 0.166, 0.167, 0.167, 0.25, 0.25], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.2, 0.2, 0.3, 0.2, 0.2, 0.2, 0.14, 0.3, 0.2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[0.5, 0.5, 0.8, 0.5, 0.5, 0.5, 0.5, 0.8, 0.5], 1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[3, 3, 3, 4, 4, 5],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([84, 85, 84, 84, 88, 84, 83, 81, 83, 81, 78, 76, 81, 83], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.125, 0.535, 0.67, 1.92, 0.25, 0.166, 0.167, 0.167,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25, 0.25, 0.25, 0.25, 0.25, 0.25], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.2, 3.12, 0.2, 0.2, 0.2, 0.2, 0.2, 0.15, 0.3, 0.2, 0.2, 0.2,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3, 0.2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[1, 0.8, 0.8, 0.8, 1, 1, 0.8, 0.8, 1, 0.8, 0.8, 0.8,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, 0.8], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, <span class="s1">Pseq</span>([0, 0.005, 0.005, 0.06, <span class="s1">Pseq</span>(#[0], 10)], 1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[10, 10, 10, 11, 11, 11, 11, 12, 12, 12],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// same as #4, 8va</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>(([64, 66, 69, 71, 72, 73, 71, 69, 66, 71, 69, 66, 64, 69]+12), 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 0.25, 0.25, 0.25, 0.125, 0.375, 0.166, 0.166, 0.168,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5, 0.166, 0.166, 0.168, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.3, 0.2, 0.2, 0.2, 0.14, 0.4, 0.2, 0.2, 0.2, 0.6, 0.2, 0.2, 0.2, 0.5],1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[0.5, 0.5, 0.6, 0.8, 1, 0.5, 0.5, 0.5, 0.5, 1,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5, 0.5, 0.5, 0.45], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[11, 11, 11, 11, 11, 12, 12],</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([81, 84, 83, 81, 78, 76, 81, 83], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25], 8),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.2, 0.3, 0.3, 0.2, 0.3, 0.2, 0.3, 0.2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[0.5, 1, 0.5, 0.5, 0.6, 0.5, 0.8, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[0, 9, 9, 11, 11, 12, 12, 12, 12, 12],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// same as #1, 8va</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>(([64, 66, 69, 71, 72, 73]+12), 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25], 6),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.3, 0.2, 0.2, 0.2, 0.3, 0.2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[1, 0.5, 0.5, 0.5, 0.5, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[6, 6, 8, 9, 9, 9, 9, 10, 10, 10, 10, 13, 13, 13],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([78, 81, 83, 78, 83, 84, 78, 84, 85], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25, 1.75], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.2, 0.3, 0.2, 0.2, 0.3, 0.2, 0.2, 0.3, 1.75], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[0.4, 0.8, 0.5, 0.4, 0.8, 0.5, 0.4, 1, 0.8], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, <span class="s1">Pseq</span>([<span class="s1">Pseq</span>([0], 8), 0.03], 1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[8, 13, 13],</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>PmonoArtic<span class="s2">(</span><span class="s3">\sawpulse</span><span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s1">Pseq</span>([88, 84, 83, 81, 83, 81, 78, 76, 81, 83], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s1">Pseq</span>(#[0.25, 0.166, 0.167, 0.167,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25, 0.25, 0.25, 0.25, 0.25, 0.25], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sustain</span>, <span class="s1">Pseq</span>(#[0.2, 0.2, 0.2, 0.15, 0.3, 0.2, 0.2, 0.2,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3, 0.2], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s1">Pseq</span>(#[1, 1, 0.8, 0.8, 1, 0.8, 0.8, 0.8,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, 0.8], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\mw</span>, 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>), #[10]</p>
-<p class="p5">], <span class="s1">inf</span>)).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s2">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook05_Using_Samples.html"><span class="s4">PG_Cookbook05_Using_Samples</span></a></span></p>
-<p class="p8"><span class="s2">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook07_Rhythmic_Variations.html"><span class="s4">PG_Cookbook07_Rhythmic_Variations</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook07_Rhythmic_Variations.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook07_Rhythmic_Variations.html
deleted file mode 100644
index 2ea7984..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_Cookbook07_Rhythmic_Variations.html	
+++ /dev/null
@@ -1,247 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {color: #0000ee}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.s5 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Creating variations on a base rhythmic pattern</b></p>
-<p class="p2"><br></p>
-<p class="p3">Normally patterns are stateless objects. This would seem to rule out the possibility of making on-the-fly changes to the material that pattern is playing. Indeed, modifying an existing pattern object is tricky and not always appropriate (because that approach cannot confine its changes to the one stream making the changes).</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><a href="../Patterns/Plazy.html"><b>Plazy</b></a></span> offers an alternate approach: use a function to generate a new pattern object periodically, and play these patterns in succession, one by one. (Plazy embeds just one pattern; wrapping Plazy in <a href="../Patterns/Pn.html"><span class="s2">Pn</span></a> does it many times.)</p>
-<p class="p2"><br></p>
-<p class="p3">The logic in this example is a bit more involved: for each measure, start with arrays containing the basic rhythmic pattern for each part (kick drum, snare and hi-hat) and insert ornamental notes with different amplitudes and durations. Arrays hold the rhythmic data because this type of rhythm generation calls for awareness of the entire bar (future), whereas patterns generally don't look ahead.</p>
-<p class="p2"><br></p>
-<p class="p3">This suggests an object for data storage that will also encapsulate the unique logic for each part. We saw earlier that <a href="../Patterns/Penvir.html"><span class="s2">Penvir</span></a> maintains a distinct environment for each stream made from the pattern. In other words, Penvir allows more complicated behavior to be modeled using an object that encapsulates both custom logic and the data on which it will operate.</p>
-<p class="p2"><br></p>
-<p class="p3">The specific ornaments to be added are slightly different for the three parts, so there are three environments. Some functions are shared; rather than copy and paste them into each environment, we put them into a separate environment and use that as the parent of the environment for each drum part.</p>
-<p class="p2"><br></p>
-<p class="p3">Most of the logic is in the drum parts' environments, and consist mostly of straightforward array manipulations. Let's unpack the pattern that uses the environments to generate notes:</p>
-<p class="p2"><br></p>
-<p class="p4">~kik = <span class="s2">Penvir</span>(~kikEnvir, <span class="s2">Pn</span>(<span class="s2">Plazy</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~init.value;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~addNotes.value;</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s3">(</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\kik<span class="s3">,</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\preamp</span>, 0.4,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.25,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*(~pbindPairs.value(#[amp, decay2]))</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\freq</span>, <span class="s2">Pif</span>(<span class="s2">Pkey</span>(<span class="s4">\amp</span>) > 0, 1, <span class="s4">\rest</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}), <span class="s2">inf</span>)).play(quant: 4);</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Penvir(~kikEnvir, ...)</b> : Tell the enclosed pattern to run inside the kick drum's environment.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pn(..., inf)</b> : Repeat the enclosed pattern (Plazy) an infinite number of times.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Plazy({ ... })</b> : The function can do anything it likes, as long as it returns some kind of pattern. The first two lines of the function do the hard work, especially ~addNotes.value, calling into the environment to use the rhythm generator code. This changes the data in the environment, which then get plugged into Pbind in the ~pbindPairs.value() line. That pattern will play through; when it ends, Plazy gives control back to its parent -- Pn, which repeats Plazy.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pbindf(..., \freq, ...)</b> : Pbindf adds new values into events coming from a different pattern. This usage is to take advantage of a fact about the default event. If the \freq key is a symbol (rather than a number or array), the event represents a rest and nothing will play on the server. It doesn't matter whether or not the SynthDef has a 'freq' control; a symbol in this space produces a rest. Here it's a simple conditional to produce a rest when amp == 0.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pbind(...)</b> : The meat of the notes: SynthDef name, general parameters, and rhythmic values from the environment. (The * syntax explains the need for Pbindf. The \freq expression must follow the pbindPairs result, but it isn't possible to put additional arguments after *(...). Pbindf allows the inner Pbind to be closed while still accepting additional values.)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Third-party extension alert:</b> This type of hybrid between pattern-style flow of control and object-oriented modeling is powerful but has some limitations, mainly difficulty with inheritance (subclassing). The ddwChucklib quark (which depends on ddwPrototype) expands the object-oriented modeling possibilities while supporting patterns' ability to work with data external to a pattern itself.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p7">// this kick drum doesn't sound so good on cheap speakers</p>
-<p class="p7">// but if your monitors have decent bass, it's electro-licious</p>
-<p class="p5">SynthDef<span class="s3">(</span><span class="s4">\kik</span><span class="s3">, { </span>|basefreq = 50, ratio = 7, sweeptime = 0.05, preamp = 1, amp = 1,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>decay1 = 0.3, decay1L = 0.8, decay2 = 0.15, out|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>fcurve = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>([basefreq * ratio, basefreq], [sweeptime], <span class="s4">\exp</span>)),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>([1, decay1L, 0], [decay1, decay2], -4), doneAction: 2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sig = <span class="s2">SinOsc</span>.ar(fcurve, 0.5pi, preamp).distort * env * amp;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, sig ! 2)</p>
-<p class="p4">}).add;</p>
-<p class="p8"><br></p>
-<p class="p5">SynthDef<span class="s3">(</span><span class="s4">\kraftySnr</span><span class="s3">, { </span>|amp = 1, freq = 2000, rq = 3, decay = 0.3, pan, out|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>sig = <span class="s2">PinkNoise</span>.ar(amp),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, decay), doneAction: 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig = <span class="s2">BPF</span>.ar(sig, freq, rq, env);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Pan2</span>.ar(sig, pan))</p>
-<p class="p4">}).add;</p>
-<p class="p8"><br></p>
-<p class="p4">~commonFuncs = (</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// save starting time, to recognize the last bar of a 4-bar cycle</p>
-<p class="p4"><span class="Apple-tab-span">	</span>init: {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(~startTime.isNil) { ~startTime = <span class="s2">thisThread</span>.clock.beats };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>},</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// convert the rhythm arrays into patterns</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pbindPairs: { <span class="s2">|keys|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>pairs = <span class="s2">Array</span>(keys.size * 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>keys.do({ <span class="s2">|key|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(key.envirGet.notNil) { pairs.add(key).add(<span class="s2">Pseq</span>(key.envirGet, 1)) };</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pairs</p>
-<p class="p4"><span class="Apple-tab-span">	</span>},</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// identify rests in the rhythm array</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// (to know where to stick notes in)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>getRestIndices: { <span class="s2">|array|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>result = <span class="s2">Array</span>(array.size);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>array.do({ <span class="s2">|item, i|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(item == 0) { result.add(i) }</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>result</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">);</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">TempoClock</span>.default.tempo = 104 / 60;</p>
-<p class="p8"><br></p>
-<p class="p4">~kikEnvir = (</p>
-<p class="p4"><span class="Apple-tab-span">	</span>parent: ~commonFuncs,</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// rhythm pattern that is constant in each bar</p>
-<p class="p4"><span class="Apple-tab-span">	</span>baseAmp: #[1, 0, 0, 0,<span class="Apple-converted-space">  </span>0, 0, 0.7, 0,<span class="Apple-converted-space">  </span>0, 1, 0, 0,<span class="Apple-converted-space">  </span>0, 0, 0, 0] * 0.5,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>baseDecay: #[0.15, 0, 0, 0,<span class="Apple-converted-space">  </span>0, 0, 0.15, 0,<span class="Apple-converted-space">  </span>0, 0.15, 0, 0,<span class="Apple-converted-space">  </span>0, 0, 0, 0],</p>
-<p class="p4"><span class="Apple-tab-span">	</span>addNotes: {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>beat16pos = (<span class="s2">thisThread</span>.clock.beats - ~startTime) % 16,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>available = ~getRestIndices.(~baseAmp);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp = ~baseAmp.copy;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~decay2 = ~baseDecay.copy;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if last bar of 4beat cycle, do busier fills</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(beat16pos.inclusivelyBetween(12, 16)) {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>available.scramble[..rrand(5, 10)].do({ <span class="s2">|index|</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// crescendo</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp[index] = index.linexp(0, 15, 0.2, 0.5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~decay2[index] = 0.15;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>available.scramble[..rrand(0, 2)].do({ <span class="s2">|index|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp[index] = rrand(0.15, 0.3);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~decay2[index] = rrand(0.05, 0.1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">);</p>
-<p class="p8"><br></p>
-<p class="p4">~snrEnvir = (</p>
-<p class="p4"><span class="Apple-tab-span">	</span>parent: ~commonFuncs,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>baseAmp: #[0, 0, 0, 0,<span class="Apple-converted-space">  </span>1, 0, 0, 0,<span class="Apple-converted-space">  </span>0, 0, 0, 0,<span class="Apple-converted-space">  </span>1, 0, 0, 0] * 1.5,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>baseDecay: #[0, 0, 0, 0,<span class="Apple-converted-space">  </span>0.7, 0, 0, 0,<span class="Apple-converted-space">  </span>0, 0, 0, 0,<span class="Apple-converted-space">  </span>0.4, 0, 0, 0],</p>
-<p class="p4"><span class="Apple-tab-span">	</span>addNotes: {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>beat16pos = (<span class="s2">thisThread</span>.clock.beats - ~startTime) % 16,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>available = ~getRestIndices.(~baseAmp),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>choice;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp = ~baseAmp.copy;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~decay = ~baseDecay.copy;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(beat16pos.inclusivelyBetween(12, 16)) {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>available.scramble[..rrand(5, 9)].do({ <span class="s2">|index|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp[index] = index.linexp(0, 15, 0.5, 1.8);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~decay[index] = rrand(0.2, 0.4);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>available.scramble[..rrand(1, 3)].do({ <span class="s2">|index|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp[index] = rrand(0.15, 0.3);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~decay[index] = rrand(0.2, 0.4);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">);</p>
-<p class="p8"><br></p>
-<p class="p4">~hhEnvir = (</p>
-<p class="p4"><span class="Apple-tab-span">	</span>parent: ~commonFuncs,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>baseAmp: 15 ! 16,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>baseDelta: 0.25 ! 16,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>addNotes: {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>beat16pos = (<span class="s2">thisThread</span>.clock.beats - ~startTime) % 16,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>available = (0..15),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toAdd;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if last bar of 4beat cycle, do busier fills</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp = ~baseAmp.copy;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~dur = ~baseDelta.copy;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(beat16pos.inclusivelyBetween(12, 16)) {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toAdd = available.scramble[..rrand(2, 5)]</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toAdd = available.scramble[..rrand(0, 1)]</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toAdd.do({ <span class="s2">|index|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp[index] = ~doubleTimeAmps;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~dur[index] = ~doubleTimeDurs;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span>},</p>
-<p class="p4"><span class="Apple-tab-span">	</span>doubleTimeAmps: <span class="s2">Pseq</span>(#[15, 10], 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span>doubleTimeDurs: <span class="s2">Pn</span>(0.125, 2)</p>
-<p class="p4">);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p4">~kik = <span class="s2">Penvir</span>(~kikEnvir, <span class="s2">Pn</span>(<span class="s2">Plazy</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~init.value;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~addNotes.value;</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s3">(</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\kik<span class="s3">,</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\preamp</span>, 0.4,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.25,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*(~pbindPairs.value(#[amp, decay2]))</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// default Event checks \freq --</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// if a symbol like \rest or even just \,</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the event is a rest and no synth will be played</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\freq</span>, <span class="s2">Pif</span>(<span class="s2">Pkey</span>(<span class="s4">\amp</span>) > 0, 1, <span class="s4">\rest</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}), <span class="s2">inf</span>)).play(quant: 4);</p>
-<p class="p8"><br></p>
-<p class="p4">~snr = <span class="s2">Penvir</span>(~snrEnvir, <span class="s2">Pn</span>(<span class="s2">Plazy</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~init.value;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~addNotes.value;</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s3">(</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\kraftySnr<span class="s3">,</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.25,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*(~pbindPairs.value(#[amp, decay]))</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\freq</span>, <span class="s2">Pif</span>(<span class="s2">Pkey</span>(<span class="s4">\amp</span>) > 0, 5000, <span class="s4">\rest</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}), <span class="s2">inf</span>)).play(quant: 4);</p>
-<p class="p8"><br></p>
-<p class="p4">~hh = <span class="s2">Penvir</span>(~hhEnvir, <span class="s2">Pn</span>(<span class="s2">Plazy</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~init.value;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~addNotes.value;</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbindf<span class="s3">(</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\kraftySnr<span class="s3">,</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\rq</span>, 0.06,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\amp</span>, 15,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\decay</span>, 0.04,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*(~pbindPairs.value(#[amp, dur]))</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\freq</span>, <span class="s2">Pif</span>(<span class="s2">Pkey</span>(<span class="s4">\amp</span>) > 0, 12000, <span class="s4">\rest</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}), <span class="s2">inf</span>)).play(quant: 4);</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p7">// stop just before barline</p>
-<p class="p4">t = <span class="s2">TempoClock</span>.default;</p>
-<p class="p4">t.schedAbs(t.nextTimeOnGrid(4, -0.001), {</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[~kik, ~snr, ~hh].do(<span class="s2">_</span>.stop);</p>
-<p class="p4">});</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook06_Phrase_Network.html"><span class="s5">PG_Cookbook06_Phrase_Network</span></a></span></p>
-<p class="p9"><span class="s3">Next:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Ref01_Pattern_Internals.html"><span class="s5">PG_Ref01_Pattern_Internals</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/A Practical Guide/PG_Ref01_Pattern_Internals.html b/Help/Streams-Patterns-Events/A Practical Guide/PG_Ref01_Pattern_Internals.html
deleted file mode 100644
index 2e0ea0c..0000000
--- a/Help/Streams-Patterns-Events/A Practical Guide/PG_Ref01_Pattern_Internals.html	
+++ /dev/null
@@ -1,286 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #bf0000}
-span.s5 {color: #606060}
-span.s6 {text-decoration: underline ; color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #0000bf}
-span.s9 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Inner workings of patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Patterns as streams</b></p>
-<p class="p2"><br></p>
-<p class="p4">As noted, patterns by themselves don't do much. They have to be turned into streams first; then, values are requested from a stream, not from the pattern.</p>
-<p class="p2"><br></p>
-<p class="p4">For most patterns, the stream is an instance of <a href="../../Core/Kernel/Routine.html"><span class="s1">Routine</span></a>. Routines (formally known in computer science as "coroutines") are important because they can yield control back to the caller but still remember exactly where they were, so they can resume in the middle on the next call without having to start over. A few exceptional patterns use FuncStream, which is simply a wrapper around a function that allows a function to act like a stream by responding to 'next' and other Stream methods.</p>
-<p class="p2"><br></p>
-<p class="p4">Every pattern class must respond to 'asStream'; however, most patterns do not directly implement asStream. Instead, they use the generic asStream implementation from <a href="../Patterns/Pattern.html"><span class="s1">Pattern</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>asStream { ^<span class="s2">Routine</span>({ <span class="s2">arg</span> inval; <span class="s2">this</span>.embedInStream(inval) }) }</p>
-<p class="p2"><br></p>
-<p class="p4">This line creates a Routine whose job is simply to embed the pattern into its stream. "Embedding" means for the pattern to do its assigned work, and return control to the parent level when it's finished. When a simple pattern finishes, its parent level is the Routine itself. After 'embedInStream' returns, there is nothing else for the Routine to do, so that stream is over; it can only yield nil thereafter.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">p = </span><span class="s2">Pseries</span><span class="s3">(0, 1, 3).asStream;<span class="Apple-tab-span">	</span></span>// this will yield exactly 3 values</p>
-<p class="p5">4.do { p.next.postln };<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// 4th value is nil</span></p>
-<p class="p2"><br></p>
-<p class="p4">We saw that list patterns can contain other patterns, and that the inner patterns are treated like "subroutines." List patterns do this by calling embedInStream on their list items. Most objects are embedded into the stream just by yielding the object:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// in Object</p>
-<p class="p5"><span class="Apple-tab-span">	</span>embedInStream { ^<span class="s2">this</span>.yield; }</p>
-<p class="p2"><br></p>
-<p class="p4">But if the item is a pattern itself, control enters into the subpattern and stays there until the subpattern ends. Then control goes back to the list pattern to get the next item, which is embedded and so on.</p>
-<p class="p2"><br></p>
-<p class="p5">p = <span class="s2">Pseq</span>([<span class="s2">Pseries</span>(0, 1, 3), <span class="s2">Pgeom</span>(10, 2, 3)], 1).asStream;</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s3">p.next;<span class="Apple-tab-span">	</span></span>// Pseq is embedded; first item is Pseries(0...), also embedded</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Control is now in the Pseries</p>
-<p class="p6"><span class="s3">p.next;<span class="Apple-tab-span">	</span></span>// second item from Pseries</p>
-<p class="p6"><span class="s3">p.next;<span class="Apple-tab-span">	</span></span>// third item from Pseries</p>
-<p class="p6"><span class="s3">p.next;<span class="Apple-tab-span">	</span></span>// no more Pseries items; control goes back to Pseq</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Pseq gets the next item (Pgeom) and embeds it, yielding 10</p>
-<p class="p6"><span class="s3">p.next;<span class="Apple-tab-span">	</span></span>// second item from Pgeom</p>
-<p class="p6"><span class="s3">p.next;<span class="Apple-tab-span">	</span></span>// third item from Pgeom</p>
-<p class="p6"><span class="s3">p.next;<span class="Apple-tab-span">	</span></span>// no more Pgeom items; Pseq has no more items, so it returns to Routine</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Routine has nothing left to do, so the result is nil</p>
-<p class="p2"><br></p>
-<p class="p4">To write a new pattern class, then, the bare minimum required is:</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>Instance variables</b> for the pattern's parameters</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">A <b>*new</b> method to initialize those variables</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">An <b>embedInStream</b> method to do the pattern's work</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p4">One of the simpler pattern definitions in the main library is Prand:</p>
-<p class="p2"><br></p>
-<p class="p8">Prand<span class="s3"> : </span>ListPattern<span class="s3"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>embedInStream { <span class="s2">arg</span> inval;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> item;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>repeats.value.do({ <span class="s2">arg</span> i;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>item = list.at(list.size.rand);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = item.embedInStream(inval);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^inval;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p2"><br></p>
-<p class="p4">This definition doesn't show the instance variables or *new method. Where are they? They are inherited from the superclass, ListPattern.</p>
-<p class="p2"><br></p>
-<p class="p8">ListPattern<span class="s3"> : </span>Pattern<span class="s3"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> <>list, <>repeats=1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>*new { <span class="s2">arg</span> list, repeats=1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (list.size > 0) {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">super</span>.new.list_(list).repeats_(repeats)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}{</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Error</span><span class="s3">(</span>"ListPattern ("<span class="s3"> ++ </span><span class="s2">this</span><span class="s3">.name ++ </span>") requires a non-empty collection; received "</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>++ list ++ <span class="s5">"."</span>).throw;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// some misc. methods omitted in this document</p>
-<p class="p5">}</p>
-<p class="p2"><br></p>
-<p class="p4">Because of this inheritance, Prand simply expresses its behavior as a 'do' loop, choosing 'repeats' items randomly from the list and embedding them into the stream. When the loop is finished, the method returns the input value (see below).</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Streams' input values (inval, inevent)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Before discussing input values in patterns, let's take a step back and discuss how it works for Routines.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s6"><a href="../../Core/Kernel/Routine.html">Routine</a></span>'s 'next' method takes one argument, which is passed into the stream (Routine). The catch is that the routine doesn't start over from the beginning -- if it did, it would lose its unique advantage of remembering its position and resuming on demand. So it isn't sufficient to receive the argument using the routine function's argument variable.</p>
-<p class="p2"><br></p>
-<p class="p4">In reality, when a Routine yields a value, its execution is interrupted after calling 'yield', but before 'yield' returns. Then, when the Routine is asked for its next value, execution resumes by providing a return value from the 'yield' method. (This behavior isn't visible in the SuperCollider code in the class library; 'yield' is a primitive in the C++ backend, which is how it's able to do something that is otherwise impossible in the language.)</p>
-<p class="p2"><br></p>
-<p class="p4">For a quick example, consider a routine that is supposed to multiply the input value by two. First, the wrong way, assuming that everything is done by the function argument 'inval'. In reality, the first inval to come in is 1. Since nothing in the routine changes the value of inval, the routine yields the same value each time.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">r = </span>Routine<span class="s3">({ </span>|inval|</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>yield(inval * 2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">});</p>
-<p class="p7"><br></p>
-<p class="p5">(1..3).do { <span class="s2">|x|</span> r.next(x).postln };</p>
-<p class="p2"><br></p>
-<p class="p4">If, instead, the routine saves the result of 'yield' into the inval variable, the routine becomes aware of the successive input values and returns the expected results.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">r = </span>Routine<span class="s3">({ </span>|inval|</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// here is where the 2nd, 3rd, 4th etc. input values come in</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = yield(inval * 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">});</p>
-<p class="p7"><br></p>
-<p class="p5">(1..3).do { <span class="s2">|x|</span> r.next(x).postln };</p>
-<p class="p2"><br></p>
-<p class="p4">This convention -- receiving the first input value as an argument, and subsequent input values as a result of a method call -- holds true for the embedInStream method in patterns also. The rules are:</p>
-<p class="p2"><br></p>
-<ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">embedInStream takes <b>one argument</b>, which is the first input value.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">When the pattern needs to yield a value directly, or embed an item into the stream, it receives the next input value as the result of 'yield' or 'embedInStream': <b>inval = output.yield</b> or <b>output.embedInStream(inval)</b>.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">When the pattern exits, it must return the last input value, so that the parent pattern will get the input value as the result of its embedInStream call: <b>^inval</b>.</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p4">By following these rules, embedInStream becomes a near twin of yield. Both do essentially the same thing: spit values out to the user, and come back with the next input value. The only difference is that yield can return only one object to the 'next' caller, while embedInStream can yield several in succession.</p>
-<p class="p2"><br></p>
-<p class="p4">Take a moment to go back and look at how Prand's embedInStream method does it.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>embedInStream vs. asStream + next</b></p>
-<p class="p2"><br></p>
-<p class="p4">If a pattern class needs to use values from another pattern, should it evaluate that pattern using embedInStream, or should it make a separate stream (asStream) and pull values from that stream using 'next'? Both approaches are used in the class library.</p>
-<p class="p2"><br></p>
-<p class="p4">embedInStream turns control over to the subpattern completely. The outer pattern is effectively suspended until the subpattern gives control back. This is the intended behavior of most list patterns, for example. There is no opportunity for the parent to do anything to the value yielded back to the caller.</p>
-<p class="p2"><br></p>
-<p class="p4">This pattern demonstrates what it means to give control over to the subpattern. The first pattern in the Pseq list is infinite; consequently, the second subpattern will never execute because the infinite pattern never gives control back to Pseq.</p>
-<p class="p2"><br></p>
-<p class="p5">p = <span class="s2">Pseq</span>([<span class="s2">Pwhite</span>(0, 9, <span class="s2">inf</span>), <span class="s2">Pwhite</span>(100, 109, <span class="s2">inf</span>)], 1).asStream;</p>
-<p class="p6"><span class="s3">p.nextN(20);<span class="Apple-tab-span">	</span></span>// no matter how long you do this, it'll never be > 9!</p>
-<p class="p2"><br></p>
-<p class="p4">asStream should be used if the parent pattern needs to perform some other operation on the yield value before yielding, or if it needs to keep track of multiple child streams at the same time. For instance, Pdiff takes the difference between the current value and last value. Since the subtraction comes between evaluating the child pattern and yielding the difference, the child pattern must be used as a stream.</p>
-<p class="p2"><br></p>
-<p class="p8">Pdiff<span class="s3"> : </span>FilterPattern<span class="s3"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>embedInStream { <span class="s2">arg</span> event;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// here is the stream!</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> stream = pattern.asStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> next, prev = stream.next(event);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>while {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>next = stream.next(event);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>next.notNil;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}{</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// and here is the return value</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>event = (next - prev).yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>prev = next;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^event</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Writing patterns: other factors</b></p>
-<p class="p2"><br></p>
-<p class="p4">Pattern objects are supposed to be <i>stateless</i>, meaning that the pattern object itself should undergo no changes based on any stream running the pattern. (There are some exceptions, such as <a href="../Patterns/Ppatmod.html"><span class="s7">Ppatmod</span></a>, which exists specifically to perform some modification on a pattern object. But, even this special case makes a separate copy of the pattern to be modified for each stream; the original pattern is insulated from the streams' behavior.) <i>Be very careful if you're thinking about breaking this rule</i>, and before doing so, think about whether there might be another way to accomplish the goal without breaking it.</p>
-<p class="p2"><br></p>
-<p class="p4">Because of this rule, <i>all variables reflecting the state of a particular stream should be local to the embedInStream method</i>. If you look through existing pattern classes for examples, you will see in virtually every case that embedInStream does not alter the instance variables defined in the class. It uses them as parameters, but does not change them. Anything that changes while a stream is being evaluated is a local method variable.</p>
-<p class="p2"><br></p>
-<p class="p4">To initialize the pattern's parameters (instance variables), typical practice in the library is to give getter and setter methods to all instance variables, and use the setters in the *new method (or, use ^super.newCopyArgs(...)). It's not typical to have an init method populate the instance variables. E.g.,</p>
-<p class="p2"><br></p>
-<p class="p8">Pn<span class="s3"> : </span>FilterPattern<span class="s3"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> <>repeats;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>*new { <span class="s2">arg</span> pattern, repeats=<span class="s2">inf</span>;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// setter method used here for repeats</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">super</span>.new(pattern).repeats_(repeats)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">...</p>
-<p class="p5">}</p>
-<p class="p2"><br></p>
-<p class="p4">Consider carefully whether a parameter can change in each 'next' call. If so, make a stream from that parameter and call .next(inval) on it for each iteration. Parameters that should not change, such as number of repeats, should call .value(inval) so that a function may be given. <a href="../Patterns/Pwhite.html"><span class="s7">Pwhite</span></a> demonstrates both of these features.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Exercise for the reader:</b> Why does Pwhite(0.0, 1.0, inf) work, even with the asStream and next calls?</p>
-<p class="p2"><br></p>
-<p class="p8">Pwhite<span class="s3"> : </span>Pattern<span class="s3"> {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> <>lo, <>hi, <>length;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>*new { <span class="s2">arg</span> lo=0.0, hi=1.0, length=<span class="s2">inf</span>;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^<span class="s2">super</span>.newCopyArgs(lo, hi, length)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span>storeArgs { ^[lo,hi,length] }</p>
-<p class="p5"><span class="Apple-tab-span">	</span>embedInStream { <span class="s2">arg</span> inval;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lo and hi streams</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> loStr = lo.asStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> hiStr = hi.asStream;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> hiVal, loVal;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// length.value -- functions allowed for length</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// e.g., Pwhite could give a random number of values for each embed</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>length.value.do({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hiVal = hiStr.next(inval);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loVal = loStr.next(inval);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(hiVal.isNil or: { loVal.isNil }) { ^inval };</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = rrand(loVal, hiVal).yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>^inval;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}</p>
-<p class="p7"><br></p>
-<p class="p6">// the plot rises b/c the lo and hi values increase on every 'next' value</p>
-<p class="p5"><span class="s2">Pwhite</span>(<span class="s2">Pseries</span>(0.0, 0.01, <span class="s2">inf</span>), <span class="s2">Pseries</span>(0.2, 0.01, <span class="s2">inf</span>), <span class="s2">inf</span>).asStream.nextN(200).plot;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Cleaning up event pattern resources</b></p>
-<p class="p2"><br></p>
-<p class="p4">Some event patterns create server or other objects that need to be explicitly removed when they come to a stop. This is handled by the <b>EventStreamCleanup</b> object. This class stores a set of functions that will run at the pattern's end. It also uses special keys in the current event to communicate cleanup functions upward to parent patterns, and ultimately to the EventStreamPlayer that executes the events.</p>
-<p class="p2"><br></p>
-<p class="p4">Basic usage involves 4 stages:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>embedInStream { <span class="s2">|inval|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>outputEvent;</p>
-<p class="p7"><br></p>
-<p class="p10"><span class="s3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>// #1 - make the EventStreamCleanup instance</b></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>var<span class="s3"><span class="Apple-tab-span">	</span>cleanup = </span>EventStreamCleanup<span class="s3">.new;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>// #2 - make persistent resource, and add cleanup function</b></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// could be some kind of resource other than a Synth</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth = (... make the Synth here...);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cleanup.addFunction(inval, { <span class="s2">|flag|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(flag) {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth.release</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outputEvent = (... get output event...);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>// #4 - cleanup.exit</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(outputEvent.isNil) { ^cleanup.exit(inval) };</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>// #3 - update the EventStreamCleanup before yield</b></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cleanup.update(outputEvent);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = outputEvent.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p2"><br></p>
-<ol>
-<li style="margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Helvetica">The embedInStream method should create its own instance of EventStreamCleanup. (Alternately, it may receive the cleanup object as the second argument, but it should not assume that the cleanup object will be passed in. It should always check for its existence and create the instance if needed. Note that the pattern should also reimplement asStream as shown.) It's much simpler for the pattern just to create its own instance.</li>
-<li style="margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Helvetica">When the pattern creates the objects that will need to be cleaned up, it should also use the <b>addFunction</b> method on the EventStreamCleanup with a function that will remove the resource(s). (The example above is deliberately oversimplified. In practice, attention to the timing of server actions is important. Several pattern classes give good examples of how to do this, e.g., Pmono, Pfx.) <br>
-<br>
-The flag should be used when removing Synth or Group nodes. Normally the flag is true; but, if the pattern's EventStreamPlayer gets stopped by cmd-., the nodes will already be gone from the server. If your function tries to remove them again, the user will see FAILURE messages from the server and then get confused, thinking that she did something wrong when in fact the error is preventable in the class.</li>
-<li style="margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Helvetica">Before calling .yield with the return event, also call <b>cleanup.update(outputEvent)</b>.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">When embedInStream returns control back to the parent, normally this is done with ^inval. When an EventStreamCleanup is involved, it should be <b>^cleanup.exit(inval)</b>. This executes the cleanup functions and also removes them from EventStreamCleanups at any parent level.</li>
-</ol>
-<p class="p2"><br></p>
-<p class="p4"><b>When does a pattern need an EventStreamCleanup?</b></p>
-<p class="p2"><br></p>
-<p class="p4">If the pattern creates something on the server (bus, group, synth, buffer etc.), it must use an EventStreamCleanup as shown to make sure those resources are properly garbage collected.</p>
-<p class="p2"><br></p>
-<p class="p4">Or, if there is a chance of the pattern stopping before one or more child patterns has stopped on its own, EventStreamCleanup is important so that the pattern is aware of cleanup actions from the children. For example, in a construction like <span class="s8">Pfindur</span>(10, <span class="s8">Pmono</span>(name, pairs...)), Pmono may continue for more than 10 beats, in which case Pfindur will cut it off. The Pmono needs to end its synth, but it doesn't know that a pattern higher up in the chain is making it stop. It becomes the parent's responsibility to clean up after the children. As illustrated above, EventStreamCleanup handles this with only minimal intrusion into normal pattern logic.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s3">Previous:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="PG_Cookbook07_Rhythmic_Variations.html"><span class="s9">PG_Cookbook07_Rhythmic_Variations</span></a></span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/BinaryOpStream.html b/Help/Streams-Patterns-Events/BinaryOpStream.html
deleted file mode 100644
index 603e615..0000000
--- a/Help/Streams-Patterns-Events/BinaryOpStream.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0033f1; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002eaf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {text-decoration: underline ; color: #002fe0}
-span.s6 {color: #002fe0}
-span.s7 {color: #0024f8}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BinaryOpStream<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>two</b><span class="s1"><b> </b></span><b>streams combined by a binary operator<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Stream.html"><span class="s2">Stream</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">see also <a href="UnaryOpStream.html"><span class="s4">UnaryOpStream</span></a></span><span class="s5">,</span><span class="s6"> <a href="NAryOpStream.html"><span class="s7">NAryOpStream</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A BinaryOpStream is created as a result of a binary math operation on a pair</p>
-<p class="p1">of Streams. It is defined to respond to <b>next</b> by returning the result of the math operation</p>
-<p class="p1">on the <b>next</b> value from both streams. It responds to <b>reset</b> by resetting both Streams.</p>
-<p class="p2"><br></p>
-<p class="p5">x = <span class="s2">Routine</span> { 6.do { <span class="s2">arg</span> i; i.yield; } } + 64;</p>
-<p class="p5">x.dump</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = <span class="s2">Routine</span> { 6.do { <span class="s2">arg</span> i; i.yield; } } + 64;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = <span class="s2">Routine</span> { 6.do { <span class="s2">arg</span> i; i.yield; } } + <span class="s2">Routine</span> { (1..7).do { <span class="s2">arg</span> i; (1 / i).yield; } };</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/EventStream.html b/Help/Streams-Patterns-Events/EventStream.html
deleted file mode 100644
index 7e70f28..0000000
--- a/Help/Streams-Patterns-Events/EventStream.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0033f1}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #2c7014}
-</style>
-</head>
-<body>
-<p class="p1"><b>event stream</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">An event stream is a normal <a href="Stream.html"><span class="s1">Stream</span></a> that returns events when called. (see class <a href="../Collections/Event.html"><span class="s1">Event</span></a>)</p>
-<p class="p3">Usually, an event stream requires an event to be passed in, often the default event is used:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">t = </span><span class="s3">Pbind</span><span class="s2">(</span><span class="s4">\x</span><span class="s2">, </span><span class="s3">Pseq</span><span class="s2">([1,2,3])).asStream; </span>// pbind, e.g. creates a stream</p>
-<p class="p5">t.next(<span class="s3">Event</span>.default);</p>
-<p class="p5">t.next(<span class="s3">Event</span>.default);</p>
-<p class="p2"><br></p>
-<p class="p3">An event stream cannot be played directly with a clock, as it returns events and not time values.</p>
-<p class="p3">Therefore, an <a href="EventStreamPlayer.html"><span class="s1">EventStreamPlayer</span></a> is used, which replaces the event by according time value.</p>
-<p class="p2"><br></p>
-<p class="p3">a <b>Pevent</b> can be used to wrap a stream in an event:</p>
-<p class="p2"><br></p>
-<p class="p5">t = <span class="s3">Pevent</span>(<span class="s3">Pbind</span>(<span class="s4">\x</span>, <span class="s3">Pseq</span>([1,2,3])), <span class="s3">Event</span>.default).asStream;</p>
-<p class="p5">t.next;</p>
-<p class="p5">t.next;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/EventStreamPlayer.html b/Help/Streams-Patterns-Events/EventStreamPlayer.html
deleted file mode 100644
index 46fa00d..0000000
--- a/Help/Streams-Patterns-Events/EventStreamPlayer.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0031e6}
-span.s2 {color: #0024f8}
-span.s3 {color: #0000ff}
-</style>
-</head>
-<body>
-<p class="p1"><b>EventStreamPlayer</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: PauseStream</b></p>
-<p class="p2"><br></p>
-<p class="p3">An <b>EventStreamPlayer</b> is used by Event based Patterns. <span class="Apple-converted-space"> </span></p>
-<p class="p3">You do not explictly create an EventStreamPlayers, they are created for you</p>
-<p class="p3">when you call Pattern-play.</p>
-<p class="p2"><br></p>
-<p class="p3">The <b>EventStreamPlayer</b> holds a stream which returns a series of Events, and a protoEvent. At each call to next, it copies the protoEvent, passes that to the stream, and calls <b>play</b> on the <b>Event</b> returned.</p>
-<p class="p2"><br></p>
-<p class="p3">for more on <b>EventStreamPlayer<span class="Apple-converted-space"> </span></b> see <a href="Streams-Patterns-Events4.html"><span class="s1">Streams-Patterns-Events4</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">EventStreamPlayer uses the same control methods and status notifications as <a href="../Scheduling/Task.html"><span class="s2">Task</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>play(argClock, doReset, quant)</b></p>
-<p class="p3"><b>argClock</b> - (optional) Override the clock assigned in Task.new</p>
-<p class="p3"><b>doReset</b> - If true, the task will start over from the beginning. Default is false (task will resume where it was when it was last stopped)</p>
-<p class="p3"><b>quant</b> - see the <a href="../Scheduling/Quant.html"><span class="s3">Quant</span></a> helpfile</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>start(argClock, quant)</b> - Restart the task from the beginning.</p>
-<p class="p3"><b>resume(argClock, quant)</b> - Resume the task where it left off.</p>
-<p class="p3"><b>pause</b> - Stop playing now.</p>
-<p class="p3"><b>stop</b> - Stop playing now. (Pause and stop have the same implementation.)</p>
-<p class="p3"><b>reset</b> - Set the stream to restart from the beginning the next time it's played.</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/History.html b/Help/Streams-Patterns-Events/History.html
deleted file mode 100644
index 6ac7711..0000000
--- a/Help/Streams-Patterns-Events/History.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {text-decoration: underline ; color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #bf0000}
-span.s7 {color: #007300}
-span.s8 {color: #606060}
-span.s9 {color: #0b28c6}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>History</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>keeps a history of interpreted lines of code</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from:</b> <a href="../../../Core/Object.html"><span class="s3">Object</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">History keeps track of all code lines that are being executed, in order to forward them to other players, to easily reuse earlier versions, or to store and reproduce a performance. Since it records everything that is interpreted, there is only one privileged instance of History - <b>History.current.<span class="Apple-converted-space"> </span></b></p>
-<p class="p1">(adc 2006/7)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*start / *end</b><span class="Apple-tab-span">	</span>start/end adding interpreted code to (current) history</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*clear</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>remove all items from<span class="Apple-converted-space">  </span>(current) history</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*enter(obj)</b><span class="Apple-tab-span">	</span>add an entry by hand</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*document</b><span class="Apple-tab-span">	</span>post the history in a new document (as story)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*drop(n)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>drop the newest n lines from history. if n is negative, drop the oldest n lines</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*keep(n)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>keep only the newest n lines from history. if n is negative, keep the oldest n lines</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*saveCS(path, forward)</b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>store history as one compileString</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*loadCS(path, forward)</b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>load a history from (compilestring) file.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*saveStory(path)</b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>store in a file, in historical order as individual code snippets</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*loadStory(path)</b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>read history into current, from a file in story format</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*play(start, end, verbose)</b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>play back current history from start to end line, per default verbose</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*stop</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stop current history playback.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>*<b>rewrite(path, open)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Write a properly formatted code file from a history.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The filename is the original name with<span class="Apple-converted-space">  </span>"_rewritten." appended.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If open is true (default: true), open a text window with the string.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// example use:</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.clear.end;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// clear to start over</p>
-<p class="p5"><span class="s4">History</span><span class="s5">.start; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// starts recording, opens log file</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// execute these lines one by one<span class="Apple-converted-space"> </span></p>
-<p class="p6">1 + 2;</p>
-<p class="p6">p = <span class="s4">ProxySpace</span>.push(s.boot);</p>
-<p class="p6">~a = {<span class="s4">Dust</span>.ar([1,1] * 30 ) * 0.3 }; <span class="s6">//</span></p>
-<p class="p6">~a.play;</p>
-<p class="p6">~a.end;</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.end;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// NOTE: change of interface! History.end ends logging now.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.document; </span>// create a document with all the changes</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s4">History</span>.showLogFile; <span class="s6">//</span></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5">g = </span><span class="s4">History</span><span class="s5">.makeWin(0 at 20); </span>// make a gui window, put it where you like</p>
-<p class="p5"><span class="s5">g = </span><span class="s4">History</span><span class="s5">.makeWin(0 at 20, 5); </span>// lines to see in textview</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.play;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// posts lines by default;</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.play(verbose: </span><span class="s4">false</span><span class="s5">); </span>// just do it, no posting;</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// continue recording</p>
-<p class="p6"><span class="s4">History</span>.start;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5">10 + 200;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// enter 5 more lines</p>
-<p class="p6">p.push;</p>
-<p class="p6">~b = { <span class="s4">|freq=500|</span> <span class="s4">LFDNoise3</span>.ar(freq.dup(2)) * 0.2 };</p>
-<p class="p6">~b.play;</p>
-<p class="p6">~b.set(<span class="s7">\freq</span>, 1000);</p>
-<p class="p6">~b.end(2);</p>
-<p class="p3"><br></p>
-<p class="p7">History<span class="s5">.end;</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// save current history to a file.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s4">History</span><span class="s5">.saveCS(</span>"~/Desktop/TestHist.scd"<span class="s5">);</span></p>
-<p class="p8"><span class="s5">h = </span><span class="s4">History</span><span class="s5">.new.loadCS(</span>"~/Desktop/TestHist.scd"<span class="s5">);</span></p>
-<p class="p6">h.lines.printcsAll; <span class="s8">""</span>;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// under the hood: History.someCommand goes to History.current:</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// History.current is where new codelines always go.</p>
-<p class="p6">h = <span class="s4">History</span>.current;</p>
-<p class="p6">h.lines.printcsAll; <span class="s8">""</span>;</p>
-<p class="p5"><span class="s5">h.lineShorts.printcsAll; </span><span class="s8">""</span><span class="s5">; </span>// lineshorts are for gui display</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.enter(</span><span class="s8">"2 + 2"</span><span class="s5">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// make a simple entry by hand.</p>
-<p class="p6">h.lines.printcsAll; <span class="s8">""</span>;</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// one can edit a history:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.drop(-1); </span>// drop the oldest memory</p>
-<p class="p5"><span class="s4">History</span><span class="s5">.drop(1); </span>// drop the newest memory</p>
-<p class="p3"><br></p>
-<p class="p6">h.keep(9); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>h.lines.printAll; <span class="s8">""</span>;</p>
-<p class="p6">h.drop(3); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>h.lines.printAll; <span class="s8">""</span>;</p>
-<p class="p6">h.removeLast;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>h.lines.printAll;<span class="s8">""</span>;</p>
-<p class="p6">h.removeAt([3, 4]);<span class="Apple-tab-span">	</span>h.lines.printAll;<span class="s8">""</span>;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// more examples</p>
-<p class="p6"><span class="s4">History</span>.clear.start;</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5">1 + 2;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// code lines get stored</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5">(</span><span class="s4">nil</span><span class="s5"> + 2).postln;<span class="Apple-tab-span">	</span></span>// error lines<span class="Apple-converted-space">  </span>are ignored <span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// comment-only line is kept, empty lines not:</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// save and load as text files</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.saveCS; </span>// save as compilestring for reloading.</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// save with name, in forward time order.</p>
-<p class="p8"><span class="s4">History</span><span class="s5">.saveCS(</span>"~/Desktop/testHist.scd"<span class="s5">, forward: </span><span class="s4">true</span><span class="s5">);</span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// load back in from file</p>
-<p class="p6">h = <span class="s4">History</span>.new.loadCS(<span class="s8">"~/Desktop/testHist.scd"</span>, forward: <span class="s4">true</span>);</p>
-<p class="p6">h.lines.postcs; <span class="s8">""</span>;</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// save as human-readable/hand-playable story<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.saveStory<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write all to time-stamped file in historical order</p>
-<p class="p5"><span class="s4">History</span><span class="s5">.saveStory(</span><span class="s8">"~/Desktop/myTestStory.scd"</span><span class="s5">);<span class="Apple-tab-span">	</span></span>// ... with given filename.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s4">History</span><span class="s5">.loadStory(</span><span class="s8">"~/Desktop/myTestStory.scd"</span><span class="s5">);<span class="Apple-tab-span">	</span></span>// load from story format file<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s4">Document</span><span class="s5">.open(</span><span class="s8">"~/Desktop/myTestStory.scd"</span><span class="s5">);<span class="Apple-tab-span">	</span></span>// the story file is human-readable.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// Various Internals</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// make a new instance of History by hand:</p>
-<p class="p6">h = <span class="s4">History</span>([[0, <span class="s7">\me</span>, <span class="s8">"1+2"</span>], [1.234, <span class="s7">\me</span>, <span class="s8">"q = q ? ();"</span>], [3, <span class="s7">\me</span>, <span class="s8">"\"History\".speak"</span>]]);</p>
-<p class="p6">h.lines.printcsAll; <span class="s8">""</span>;</p>
-<p class="p6">h.lineShorts.printcsAll; <span class="s8">""</span>;</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5">h.play;<span class="Apple-tab-span">	</span></span>// play it</p>
-<p class="p6">h.stop;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// string formatting utils</p>
-<p class="p6">h.storyString;</p>
-<p class="p6"><span class="s4">History</span>.formatTime(1234.56);</p>
-<p class="p6"><span class="s4">History</span>.unformatTime(<span class="s8">"0:20:34.56"</span>);</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">History</span>.prettyString(<span class="s8">"</span></p>
-<p class="p8">/* removes line returns at start and end of code strings ... */</p>
-<p class="p9"><br></p>
-<p class="p6"><span class="s8">"</span>).postcs;</p>
-<p class="p5"><span class="s5">)<span class="Apple-tab-span">	</span></span>// convert a line to a short string of n characters for gui display</p>
-<p class="p6"><span class="s4">History</span>.shorten(h.lines.first.postcs, 60).postcs;</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// in networked setups, one may turn off local recording and rely on remote recording:</p>
-<p class="p6"><span class="s4">History</span>.recordLocally</p>
-<p class="p6"><span class="s4">History</span>.localOff</p>
-<p class="p6"><span class="s4">History</span>.recordLocally</p>
-<p class="p6"><span class="s4">History</span>.localOn</p>
-<p class="p6"><span class="s4">History</span>.recordLocally</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// by default, history always logs here (and makes the folder if not there yet):</p>
-<p class="p6"><span class="s4">History</span>.logFolder;</p>
-<p class="p6"><span class="s4">History</span>.showLogFolder;</p>
-<p class="p6"><span class="s4">History</span>.logPath;</p>
-<p class="p5"><span class="s4">History</span><span class="s5">.showLogFile;<span class="Apple-converted-space">  </span></span>// current logfile...</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// todo: optionally, one should be able to turn logging off?</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// filtering lines, to get subsets of all lines by key and/or searchstring:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// get indices for specific keys</p>
-<p class="p8"><span class="s5">h = </span><span class="s4">History</span><span class="s5">([[0, </span><span class="s7">\me</span><span class="s5">, </span>"a=1+2"<span class="s5">], [1, </span><span class="s7">\me</span><span class="s5">, </span>"3+5"<span class="s5">], [1.234, </span><span class="s7">\you</span><span class="s5">, </span>"q = q ? ();"<span class="s5">], [3, </span><span class="s7">\her</span><span class="s5">, </span>"\"Herstory ==== \".speak"<span class="s5">]]);</span></p>
-<p class="p6">h.keys;</p>
-<p class="p6">h.matchKeys(<span class="s7">\me</span>);</p>
-<p class="p6">h.matchKeys(<span class="s7">\you</span>);</p>
-<p class="p6">h.matchKeys(<span class="s7">\her</span>);</p>
-<p class="p5"><span class="s5">h.matchKeys; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// nil if no test</p>
-<p class="p5"><span class="s5">h.matchKeys(</span><span class="s7">\all</span><span class="s5">); <span class="Apple-tab-span">	</span></span>// all keys match</p>
-<p class="p6">h.matchKeys([<span class="s7">\me</span>, <span class="s7">\her</span>])</p>
-<p class="p5"><span class="s5">h.matchKeys(</span><span class="s7">\isidor</span><span class="s5">)<span class="Apple-tab-span">	</span></span>// empty array if no line found</p>
-<p class="p3"><br></p>
-<p class="p6">h.matchString(<span class="s8">"Herst"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p6">h.matchString(<span class="s8">"q"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p6">h.matchString(<span class="s8">"1+"</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s5">h.matchString(</span><span class="s8">"herStory"</span><span class="s5">, </span><span class="s4">false</span><span class="s5">); </span>// ignoreCase is false by default</p>
-<p class="p6">h.matchString(<span class="s8">"herStory"</span>, <span class="s4">true</span>); <span class="s6">// ignoreCase<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5">h.indicesFor([</span><span class="s7">\me</span><span class="s5">, </span><span class="s7">\her</span><span class="s5">], </span><span class="s8">"="</span><span class="s5">);<span class="Apple-converted-space">  </span></span>// indices for line written by \me or \her AND containing "=";</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// searching is only an interface/access feature,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// so please read on at <a href="HistoryGui.htm"><span class="s4">HistoryGui</span></a> help ...<span class="Apple-converted-space"> </span></p>
-<p class="p6">h.makeWin;</p>
-<p class="p4"><br></p>
-<p class="p10"><span class="s9">HistoryGui</span>.openHelpFile;</p>
-<p class="p11"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/NAryOpStream.html b/Help/Streams-Patterns-Events/NAryOpStream.html
deleted file mode 100644
index dd9fdd3..0000000
--- a/Help/Streams-Patterns-Events/NAryOpStream.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NAryOpStream<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>several streams combined by an n-ary operator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Stream.html"><span class="s2">Stream</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">see also: <a href="BinaryOpStream.html">BinaryOpStream</a>, <a href="UnaryOpStream.html">UnaryOpStream</a></span></p>
-<p class="p2"><br></p>
-<p class="p1">A NAryOpStream is created as a result of a n-ary math operation on a Stream.<span class="Apple-converted-space"> </span></p>
-<p class="p1">It is defined to respond to <b>next</b> by returning the result of the math operation</p>
-<p class="p1">on the <b>next</b> value from the stream. It responds to <b>reset</b> by resetting the Stream.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">x = <span class="s4">Routine</span> { 6.do { <span class="s4">arg</span> i; i.yield; } }.wrap(0, 3);</p>
-<p class="p5">x.dump;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = <span class="s4">Routine</span> { 6.do { <span class="s4">arg</span> i; i.yield; } }.wrap(0, 3);</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/NodeEvent.html b/Help/Streams-Patterns-Events/NodeEvent.html
deleted file mode 100644
index 823f6ac..0000000
--- a/Help/Streams-Patterns-Events/NodeEvent.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 15.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NodeEvent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>synth- and group- like interface of Event</b></p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="../Collections/Event.html"><span class="s2">Event</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">The methods <b>Event-synth</b> and <b>Event-group </b>set the parent event of the receiver to specialized events that<b><span class="Apple-converted-space"> </span></b> duplicate the functionality of <a href="../ServerArchitecture/Synth.html"><span class="s2">Synth</span></a> and <a href="../ServerArchitecture/Group.html"><span class="s2">Group</span></a> objects. These objects follow the naming conventions of patterns (i.e., groups and addActions are integer ID's) and have the same stop/play/pause/resume interface as the EventStreamPlayers created by Pattern-play.<span class="Apple-converted-space">  </span>So, they can be used interchangeably with patterns in control schemes and GUI's.</p>
-<p class="p2"><br></p>
-<p class="p1">The following example creates<span class="Apple-converted-space">  </span>a group with nodeID = 2 and plays a synth within it. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>g = (id: 2).group;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>g.play;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>a = (group: 2).synth</p>
-<p class="p3"><span class="Apple-tab-span">	</span>a.play;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>g.release;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>g.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>interface:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>starts synth or group, returns this.delta</p>
-<p class="p1"><b>stop<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if ev[\hasGate] == true set gate to 0, otherwise frees the node</p>
-<p class="p1"><b>pause<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>disables the node</p>
-<p class="p1"><b>resume<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>reenables the node</p>
-<p class="p1"><b>set( key, value)<span class="Apple-tab-span">	</span></b>sets control identified by key to value</p>
-<p class="p1"><b>split<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an array of events, one for each synth or group specified by the receiver</p>
-<p class="p2"><br></p>
-<p class="p1"><b>map(key, busID)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>maps control to control bus</p>
-<p class="p1"><b>before(nodeID)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>moves to immediately before nodeID</p>
-<p class="p1"><b>after(nodeID)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>moves to immediately after nodeID</p>
-<p class="p1"><b>headOf(nodeID)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>moves to immediately to head of nodeID</p>
-<p class="p1"><b>tailOf(nodeID)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>moves to immediately to tail of nodeID</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p1">With the exception of ~server, ~latency, and ~instrument any key in the event can have an array as a<span class="Apple-converted-space"> </span></p>
-<p class="p1">value and the standard rules of multi-channel expansion will be followed. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">// Here is a simple example of its use:</p>
-<p class="p7"><br></p>
-<p class="p3">(</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// define a multiple Group event</p>
-<p class="p3"><span class="Apple-tab-span">	</span>g = (id: [2,3,4,5,6], group: 0, addAction: 1).group ; <span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>g.play; </span>// play it</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// make a Synth event</p>
-<p class="p3"><span class="Apple-tab-span">	</span>b = ( freq: [500,510], group: [2,3]).synth;<span class="Apple-converted-space">           </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>b.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>b.set(<span class="s4">\freq</span>,[1000,1006])</p>
-<p class="p7"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>g.release</p>
-<p class="p7"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>b.play;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>h = g.split;<span class="Apple-tab-span">	</span></span>// split into individual group events</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>c = b.split;<span class="Apple-tab-span">	</span>/</span>/ and synth events</p>
-<p class="p3"><span class="Apple-tab-span">	</span>c[0].set(<span class="s4">\freq</span>,700);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>c[1].set(<span class="s4">\freq</span>,400);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>h[0].stop;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>h[1].stop;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>g.stop;</p>
-<p class="p3">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/FilterPattern.html b/Help/Streams-Patterns-Events/Patterns/FilterPattern.html
deleted file mode 100644
index 0b14d42..0000000
--- a/Help/Streams-Patterns-Events/Patterns/FilterPattern.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FilterPattern<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>abstract class that holds a pattern to be modified</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html">Object</a> : <a href="../../Core/Kernel/AbstractFunction.html">AbstractFunction</a> : <a href="Pattern.html">Pattern</a></span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>FilterPattern(pattern)</b></p>
-<p class="p4"><br></p>
-<p class="p5">// post subclasses:</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">FilterPattern</span>.dumpClassSubtree;</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/ListPattern.html b/Help/Streams-Patterns-Events/Patterns/ListPattern.html
deleted file mode 100644
index 1480f9d..0000000
--- a/Help/Streams-Patterns-Events/Patterns/ListPattern.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ListPattern<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>abstract class that holds a list</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3">Object</span></a> : <a href="../../Core/Kernel/AbstractFunction.html"><span class="s3">AbstractFunction</span></a> : <a href="Pattern.html"><span class="s3">Pattern</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>ListPattern(list, repeats)</b></p>
-<p class="p4"><br></p>
-<p class="p5">// post subclasses:</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s4">ListPattern</span>.dumpClassSubtree;</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Padd.html b/Help/Streams-Patterns-Events/Patterns/Padd.html
deleted file mode 100644
index 18dda7b..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Padd.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {text-decoration: underline ; color: #0000ee}
-span.s4 {color: #2c7014}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Padd<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>add to value of a key in event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Pset.html"><span class="s2">Pset</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Padd(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="Paddp.html"><span class="s3">Paddp</span></a><span class="s2">, <a href="Pmul.html"><span class="s3">Pmul</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Padd</span>(\freq, 801, <span class="s2">Pbind</span>(<span class="s4">\freq</span>, 100));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern or a stream. the resulting stream ends when that incoming stream ends</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Padd</span>(<span class="s4">\freq</span>, <span class="s2">Pseq</span>([401, 801], 2), <span class="s2">Pbind</span>(<span class="s4">\freq, 100</span>));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s5">(</span>\sinegrain<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, gate=1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.asr(0.001, 1, 0.2), gate, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s5">a = </span><span class="s2">Pbind</span><span class="s5">(</span>\dur<span class="s5">, 0.5, </span>\instrument<span class="s5">, </span>\sinegrain<span class="s5">, </span>\freq<span class="s5">, 440);</span></p>
-<p class="p3">b = <span class="s2">Padd</span>(<span class="s4">\freq</span>, <span class="s2">Pseq</span>([10, 30, 100], <span class="s2">inf</span>), a);</p>
-<p class="p3">b.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Paddp.html b/Help/Streams-Patterns-Events/Patterns/Paddp.html
deleted file mode 100644
index e397f75..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Paddp.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Paddp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>add each value of a pattern to value of a key in event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Psetp.html"><span class="s2">Psetp</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Paddp(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">adds a value in an event stream until it ends, repeats this with new values until</p>
-<p class="p1">the value stream ends.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern, a stream or an array. the resulting stream ends when that incoming stream ends.</p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="Pmulp.html"><span class="s2">Pmulp</span></a>, <a href="Padd.html"><span class="s2">Padd</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Paddp</span>(\freq, Pseq([2, 3, pi],inf), <span class="s2">Pbind</span>(<span class="s3">\freq</span>, Pseq([100, 200, 300])));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.02;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain), 1, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pbind</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([500, 600, 700]), <span class="s3">\instrument</span>, <span class="s3">\sinegrain</span>);</p>
-<p class="p3">a = <span class="s2">Paddp</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([30, 90, -100], <span class="s2">inf</span>), a);</p>
-<p class="p3">a.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Paddpre.html b/Help/Streams-Patterns-Events/Patterns/Paddpre.html
deleted file mode 100644
index a086801..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Paddpre.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Paddpre<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>event pattern that adds to existing value of one key</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pset(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">adds a value in an event, before it is passed up the stream.</p>
-<p class="p1">to add to the value after it has been passed to the stream, use <b>Padd</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Paddpre</span>(<span class="s3">\x</span>, 8, <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">(\x:4)</span>).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">Paddpre does not override incoming values:</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Paddpre</span>(<span class="s3">\freq</span>, 302, <span class="s2">Pset</span>(<span class="s3">\freq</span>, 500, <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.3)));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.default).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern or a stream. the resulting stream ends when that incoming stream ends</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Paddpre</span>(<span class="s3">\legato</span>, <span class="s2">Pseq</span>([0.2, 0.4], 2), <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.default).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.02;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain), 1, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s4">a = </span><span class="s2">Pbind</span><span class="s4">(</span>\dur<span class="s4">, 0.5, </span>\instrument<span class="s4">, </span>\sinegrain<span class="s4">);</span></p>
-<p class="p3">b = <span class="s2">Paddpre</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([10, 30, 100], <span class="s2">inf</span>), a);</p>
-<p class="p3">b.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pattern.html b/Help/Streams-Patterns-Events/Patterns/Pattern.html
deleted file mode 100644
index c683cd3..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pattern.html
+++ /dev/null
@@ -1,499 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 12.0px Monaco}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {font: 9.0px Monaco}
-span.s8 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pattern</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: AbstractFunction</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Patterns versus Streams</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>Pattern </b>is an abstract class that is the base for the Patterns library.<span class="Apple-converted-space">  </span>These classes form a <span class="Apple-converted-space"> </span></p>
-<p class="p3">rich and concise score language for music. The series of help files entitled <b>Streams-Patterns-Events<span class="Apple-converted-space"> </span></b></p>
-<p class="p3">gives a detailed introduction. This attemps a briefer characterization.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>A <b>Stream</b> is an object that responds to <span class="s1">next, reset, </span>and <span class="s1">embedInStream. </span>Streams<span class="Apple-converted-space"> </span></p>
-<p class="p3">represent sequences of values that are obtained one at a time by with message <span class="s1">next</span>.<span class="Apple-converted-space">  </span>A <span class="s1">reset</span><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p3">message will cause the stream to restart (many but<span class="Apple-converted-space">  </span>not all streams actually repeat themselves.)<span class="Apple-converted-space"> </span></p>
-<p class="p3">If a stream runs out of<span class="Apple-converted-space">  </span>values it returns <span class="s1">nil</span> in response to <span class="s1">next</span>.<span class="Apple-converted-space">  </span>The message <span class="s1">embedInStream</span></p>
-<p class="p3">allows a stream definition to allow another stream to<span class="Apple-converted-space">  </span>"take over control" of the stream.</p>
-<p class="p3">All objects respond to <span class="s1">next</span> and <span class="s1">reset, </span>most by returning themselves in response to next. <span class="Apple-converted-space"> </span></p>
-<p class="p3">Thus, the number 7 defines a Stream that produces an infinite sequence of 7's. Most objects<span class="Apple-converted-space"> </span></p>
-<p class="p3">respond to <span class="s1">embedInStream </span>with a singleton Stream that returns the object once.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>A <b>Pattern </b>is an object that responds to <span class="s1">asStream </span>and <span class="s1">embedInStream.<span class="Apple-converted-space">  </span>A </span>Pattern</p>
-<p class="p3">defines the behavior of a Stream and creates such streams in response to the messages <span class="s1">asStream.</span></p>
-<p class="p3">The difference between a Pattern and a Stream is similar to the<span class="Apple-converted-space">  </span>difference between a score<span class="Apple-converted-space">  </span>and a<span class="Apple-converted-space"> </span></p>
-<p class="p3">performance of that score or a class and an instance of that class.<span class="Apple-converted-space">  </span>All objects respond to this interface,<span class="Apple-converted-space"> </span></p>
-<p class="p3">most by returning themselves.<span class="Apple-converted-space">  </span>So most objects are patterns that define streams that are an infinite<span class="Apple-converted-space"> </span></p>
-<p class="p3">sequence of the object and embed as singleton streams of that object returned once.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Patterns are defined in terms of other Patterns rather than in terms of specific<span class="Apple-converted-space"> </span></p>
-<p class="p3">values.<span class="Apple-converted-space">  </span>This allows a Pattern of arbitrary complexity to be substituted for a<span class="Apple-converted-space"> </span></p>
-<p class="p3">single value anywhere within a Pattern definition.<span class="Apple-converted-space">  </span>A comparison between a Stream</p>
-<p class="p3">definition and a Pattern will help illustrate the usefulness of Patterns.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>example 1 - Pseq vs. Routine</b></p>
-<p class="p5"><br></p>
-<p class="p3">The<span class="s2"> </span>Pattern class <b>Pseq(array, repetitions) </b>defines a Pattern that will create a Stream that iterates<span class="Apple-converted-space"> </span></p>
-<p class="p3">an array. The class <b>Routine(func, stackSize) </b>defines a single Stream, the function that runs within</p>
-<p class="p3">that stream is defined to perform the array iteration.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Below a stream is created with <b>Pseq </b>and an <span class="s1">asStream</span><b> </b>message and an identical stream is<span class="Apple-converted-space"> </span></p>
-<p class="p3">created directly using <b>Routine</b>.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-converted-space"> </span><b>// a Routine vs a Pattern<span class="Apple-converted-space"> </span></b></p>
-<p class="p3">(</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>a = [-100, 00, 300, 400];<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// the array to iterate</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>p = Pseq(a);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// make the Pattern</p>
-<p class="p3"><span class="Apple-tab-span">	</span>q = p.asStream;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// have the Pattern make a Stream</p>
-<p class="p3"><span class="Apple-tab-span">	</span>r = Routine({ a.do({ arg v; v.yield}) }) ;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// make the Stream directly</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>5.do({ Post << Char.tab << r.next << " " << q.next << Char.nl; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>example 2 - Nesting patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>In example 1, there is little difference between using<span class="Apple-converted-space">  </span>Pseq and Routine.<span class="Apple-converted-space">  </span>But Pseq actually<span class="Apple-converted-space"> </span></p>
-<p class="p3">iterates its array as<span class="Apple-converted-space">  </span>a collection of <i>patterns to be embedded</i>, allowing another Pseq to replace any</p>
-<p class="p3">of the values in the array.<span class="Apple-converted-space">  </span>The Routine, on the other hand,<span class="Apple-converted-space">  </span>needs to be completely<span class="Apple-converted-space"> </span></p>
-<p class="p3">redefined.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="Apple-tab-span">	</span>var routinesA;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>a = [3, Pseq([-100, 00, 300, 400]), Pseq([-100, 00, 300, 400].reverse) ];</p>
-<p class="p3"><span class="Apple-tab-span">	</span>routinesA = [[3], [-100, 00, 300, 400], [-100, 00, 300, 400].reverse];</p>
-<p class="p3"><span class="Apple-tab-span">	</span>p = Pseq(a);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>q = p.asStream;</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>r = Routine({<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>routinesA.do({ arg v;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>v.do({ arg i; i.yield})<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}) ;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>10.do({ Post << Char.tab << r.next << " " << q.next << Char.nl; });</p>
-<p class="p3">)<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>example 3 - Stream-embedInStream</b></p>
-<p class="p2"><br></p>
-<p class="p3">The message <span class="s1">embedInStream</span> is what allows Patterns to do this kind of nesting. Most<span class="Apple-converted-space">  </span>objects<span class="Apple-converted-space"> </span></p>
-<p class="p3">(such as the number 3 below) respond to <span class="s1">embedInStream</span><b> </b>by yielding themselves once and returning.</p>
-<p class="p3">Streams respond to embedInStream by iterating themselves to completion, effectively "taking over" the<span class="Apple-converted-space"> </span></p>
-<p class="p3">calling stream for that time. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">A Routine can perform a pattern simply by replacing calls to <span class="s1">yield </span>with calls to <span class="s1">embedInStream.</span></p>
-<p class="p3">(<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>a = [3, Pseq([-100, 00, 300, 400]), Pseq([-100, 00, 300, 400].reverse) ];</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>r = Routine({ a.do({ arg v; v.<i>embedInStream</i>}) }) ;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>p = Pseq(a);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>q = p.asStream;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>10.do({ Post << Char.tab << r.next << " " << q.next << Char.nl; });</p>
-<p class="p3">)<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3">Of course, there is no concise way to <i>define</i> this stream without using Pseq.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>note: </b>For reasons of efficiency, the implementation of embedInStream assumes that it is called from</p>
-<p class="p3">within a Routine. Consequently, embedInStream should never be called from within the function that</p>
-<p class="p3">defines a FuncStream or a Pfunc (the pattern that creates FuncStreams).</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p6"><b>Event Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>An Event is a Environment with a 'play' method.<span class="Apple-converted-space">  </span>Typically, an Event consists of</p>
-<p class="p3">a collection of key/value pairs that determine what the play method actually does.</p>
-<p class="p3">The values may be any object including functions defined in terms of other named attributes. <span class="Apple-converted-space"> </span></p>
-<p class="p3">Changing those values can generate a succession of sounds sometimes called 'music'...</p>
-<p class="p3">The pattern <b>Pbind </b>connects specific patterns with specific names. Consult its help page for<span class="Apple-converted-space"> </span></p>
-<p class="p3">details.</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Playing Event Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>play(clock, protoEvent, quant)</b></p>
-<p class="p3"><b>clock</b> - The tempo clock that will run the pattern. If omitted, TempoClock.default is used.</p>
-<p class="p3"><b>protoEvent</b> - The event prototype that will be fed into the pattern stream on each iteration. If omitted, event.default is used.</p>
-<p class="p3"><b>quant</b> - see the <a href="../../Scheduling/Quant.html"><span class="s3">Quant</span></a> helpfile</p>
-<p class="p2"><br></p>
-<p class="p3">The play method does not return the pattern itself. Instead, it returns the <a href="../EventStreamPlayer.html"><span class="s3">EventStreamPlayer</span></a> object that actually runs the pattern. Control instructions -- stop, pause, resume, play, reset -- should be addressed to the EventStreamPlayer. (The same pattern can play many times simultaneously, using different EventStreamPlayers.)</p>
-<p class="p2"><br></p>
-<p class="p7">p = <span class="s3">Pbind</span>(...);</p>
-<p class="p7">p.play;</p>
-<p class="p8"><span class="s4">p.stop;<span class="Apple-tab-span">	</span></span>// does not stop because p is not the EventStreamPlayer that is actually playing</p>
-<p class="p9"><br></p>
-<p class="p7">p = <span class="s3">Pbind</span>(...).play;</p>
-<p class="p8"><span class="s4">p.stop;<span class="Apple-tab-span">	</span></span>// DOES stop because p is the EventStreamPlayer</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Recording Event Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">Patterns may be recorded in realtime or non-realtime.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Realtime:</b></p>
-<p class="p3"><b>record(path, headerFormat, sampleFormat, numChannels, dur, fadeTime, clock, protoEvent, server, out)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Opens a disk file for recording and plays the pattern into it.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>path</b> - Disk location for the recorded file. If not given, a filename is generated for you and placed in the default recording directory: thisProcess.platform.recordingsDir.</p>
-<p class="p3"><b>headerFormat</b> - File format, default "AIFF" - see <a href="../../Files/SoundFile.html"><span class="s3">SoundFile</span></a> for supported header and sample formats.</p>
-<p class="p3"><b>sampleFormat</b> - Sample format, default "float"</p>
-<p class="p3"><b>numChannels</b> - Number of channels to recorde, default 2</p>
-<p class="p3"><b>dur</b> - How long to run the pattern before stopping. If nil (default), the pattern will run until it finishes on its own; then recording stops. Or, use cmd-period to stop the recording. If a number is given, the pattern will run for that many beats and then stop (using <a href="Pfindur.html"><span class="s3">Pfindur</span></a>), ending the recording as well.</p>
-<p class="p3"><b>fadeTime</b> - How many beats to allow after the last event before stopping the recording. Default = 0.2.</p>
-<p class="p3"><b>clock</b> - Which clock to use for play. Uses TempoClock.default if not otherwise specified.</p>
-<p class="p3"><b>protoEvent</b> - Which event prototype to use for play. Falls back to Event.default if not otherwise specified.</p>
-<p class="p3"><b>server</b> - Which server to play and record. Server.default if not otherwise specified.</p>
-<p class="p3"><b>out</b> - Output bus to hear the pattern while recording, default = 0.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Non-realtime:</b></span> See the <a href="../../Control/Score.html"><span class="s3">Score</span></a> helpfile, especially "creating Score from a pattern." It can be tricky, because NRT recording launches a new server instance. That server instance is not aware of buffers or other resources loaded into the realtime server you might have been using for tests. The pattern is responsible for (re)loading any resources (buffers, effects etc.). <a href="Pfset.html"><span class="s3">Pfset</span></a> or <a href="Pproto.html"><span class="s3">Pproto</span></a> may be useful.</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>A Summary of Pattern classes</b></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Below are brief examples for<span class="Apple-converted-space">  </span>most of the classes derived from Pattern. These examples</p>
-<p class="p3">all rely on the patterns assigned to the Interpreter variable p, q, and r in the first block of code.</p>
-<p class="p5"><br></p>
-<p class="p10"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">SynthDef</span>(<span class="s5">\cfstring1</span>.postln, { <span class="s3">arg</span> i_out, freq = 360, gate = 1, pan, amp=0.1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> out, eg, fc, osc, a, b, w;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>fc = <span class="s3">LinExp</span>.kr(<span class="s3">LFNoise1</span>.kr(<span class="s3">Rand</span>(0.25, 0.4)), -1, 1, 500, 2000);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>osc = <span class="s3">Mix</span>.fill(8, {<span class="s3">LFSaw</span>.ar(freq * [<span class="s3">Rand</span>(0.99, 1.01), <span class="s3">Rand</span>(0.99, 1.01)], 0, amp) }).distort * 0.2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>eg = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.asr(1, 1, 1), gate, doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>out = eg * <span class="s3">RLPF</span>.ar(osc, fc, 0.1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>#a, b = out;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(i_out, <span class="s3">Mix</span>.ar(<span class="s3">PanAz</span>.ar(4, [a, b], [pan, pan+0.3])));</p>
-<p class="p7">}).add;</p>
-<p class="p9"><br></p>
-<p class="p11"><span class="s3">SynthDef</span><span class="s4">(</span>"sinegrain2"<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out=0, freq=440, sustain=0.05, pan;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> env;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, sustain, 0.3), doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">Pan2</span>.ar(<span class="s3">SinOsc</span>.ar(freq, 0, env), pan))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p9"><br></p>
-<p class="p7">p = <span class="s3">Pbind</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[<span class="s5">\degree</span>, <span class="s5">\dur</span>], <span class="s3">Pseq</span>([[0, 0.1], [2, 0.1], [3, 0.1], [4, 0.1], [5, 0.8]], 1),<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span>\amp<span class="s4">, 0.05, </span>\octave<span class="s4">, 6, </span>\instrument<span class="s4">, </span>\cfstring1<span class="s4">, </span>\mtranspose<span class="s4">, 0);</span></p>
-<p class="p9"><br></p>
-<p class="p12"><span class="s4">q = </span><span class="s3">Pbindf</span><span class="s4">(p, </span>\instrument<span class="s4">, </span>\default<span class="s4"> );</span></p>
-<p class="p9"><br></p>
-<p class="p7">r = <span class="s3">Pset</span>(<span class="s5">\freq</span>, <span class="s3">Pseq</span>([500, 600, 700], 2), q);</p>
-<p class="p9"><br></p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>// EVENT PATTERNS - patterns that generate or require event streams</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// Pbind( ArrayOfPatternPairs )</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span>p = <span class="s3">Pbind</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s5">\degree</span>, <span class="s5">\dur</span>], <span class="s3">Pseq</span>([[0, 0.1], [2, 0.1], [3, 0.1], [4, 0.1], [5, 0.8]], 1),<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\amp<span class="s4">, 0.05, </span>\octave<span class="s4">, 6, </span>\instrument<span class="s4">, </span>\cfstring1<span class="s4">, </span>\mtranspose<span class="s4">, 0);</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>p.play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>//Ppar(arrayOfPatterns, repeats) - play in parallel</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span><span class="s3">Ppar</span>([<span class="s3">Pseq</span>([p], 4), <span class="s3">Pseq</span>([<span class="s3">Pbindf</span>(q, <span class="s5">\ctranspose</span>, -24)], 5)]).play</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>//Ptpar(arrayOfTimePatternPairs, repeats) - play in parallel at different times</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span><span class="s3">Ptpar</span>([1, <span class="s3">Pseq</span>([p], 4), 0, <span class="s3">Pseq</span>([<span class="s3">Pbindf</span>(q, <span class="s5">\ctranspose</span>, -24)], 5)]).play</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// Pbindf( pattern, ArrayOfNamePatternPairs )</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span>q = </span><span class="s3">Pbindf</span><span class="s4">(p, </span>\instrument<span class="s4">, </span>\default<span class="s4"> );</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>q.play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>//Pfset(function, pattern) <span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>// function constructs an event that is passed to the pattern.asStream</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pfset</span>({ ~freq = <span class="s3">Pseq</span>([500, 600, 700], 2).asStream }, q).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>//Pset(name, valPattern, pattern) <span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>// set one field of the event on an event by event basis (<b>Pmul</b>, <b>Padd</b> are similar)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pset</span>(<span class="s5">\freq</span>, <span class="s3">Pseq</span>([500, 600, 700], 2), q).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>//Psetp(name, valPattern, pattern)<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>// set once for each iteration of the pattern (<b>Pmulp</b>, <b>Paddp</b> are similar)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>r = <span class="s3">Pset</span>(<span class="s5">\freq</span>, <span class="s3">Pseq</span>([500, 600, 700], 2), q);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Psetp</span>(<span class="s5">\legato</span>, <span class="s3">Pseq</span>([0.01, 1.1], <span class="s3">inf</span>), r).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>//Psetpre(name, valPattern, pattern)<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>// set before passing the event to the pattern (<b>Pmulpre</b>, <b>Paddpre</b> are similar)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>r = <span class="s3">Psetpre</span>(<span class="s5">\freq</span>, <span class="s3">Pseq</span>([500, 600, 700], 2), q);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Psetp</span>(<span class="s5">\legato</span>, <span class="s3">Pseq</span>([0.01, 1.1], <span class="s3">inf</span>), r).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>//Pstretch(valPattern, pattern)<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>// stretches durations after<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>r = <span class="s3">Psetpre</span>(<span class="s5">\freq</span>, <span class="s3">Pseq</span>([500, 600, 700], 2), q);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pstretch</span>(<span class="s3">Pn</span>(<span class="s3">Env</span>([0.5, 2, 0.5], [10, 10])), <span class="s3">Pn</span>(r)).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pset</span>(<span class="s5">\stretch</span>, <span class="s3">Pn</span>(<span class="s3">Env</span>([0.5, 2, 0.5], [10, 10]) ), <span class="s3">Pn</span>(r)).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>//Pstretchp(valPattern, pattern)<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>// stretches durations after<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>r = <span class="s3">Psetpre</span>(<span class="s5">\freq</span>, <span class="s3">Pseq</span>([500, 600, 700], 2), q);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pstretchp</span>(<span class="s3">Pn</span>(<span class="s3">Env</span>([0.5, 2, 0.5], [10, 10])), r).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// Pfindur( duration, pattern ) - play pattern for duration</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span><span class="s3">Pfindur</span>(2, <span class="s3">Pn</span>(q, <span class="s3">inf</span>)).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// PfadeIn(<span class="Apple-converted-space">  </span>pattern, fadeTime, holdTime, tolerance )</b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span><span class="s3">PfadeIn</span>(<span class="s3">Pn</span>(q), 3, 0).play(quant: 0);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// PfadeOut(<span class="Apple-converted-space">  </span>pattern, fadeTime, holdTime, tolerance )</b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span><span class="s3">PfadeOut</span>(<span class="s3">Pn</span>(q), 3, 0).play(quant: 0);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// Psync( pattern, quantization, dur, tolerance )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// pattern is played for dur seconds (within tolerance), then a rest is played so the next pattern</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p13"><span class="s8"><b><span class="Apple-tab-span">	</span></b></span>Pn<span class="s4">(</span>Psync<span class="s4">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pbind</span>(<span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Pwhite</span>(0.2, 0.5).round(0.2),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\db</span>, <span class="s3">Pseq</span>([-10, -15, -15, -15, -15, -15, -30])</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>), 2, 3</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>//Plag(duration, pattern)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span><span class="s3">Ppar</span>([<span class="s3">Plag</span>(1.2, <span class="s3">Pn</span>(p, 4)), <span class="s3">Pn</span>(<span class="s3">Pbindf</span>(q, <span class="s5">\ctranspose</span>, -24), 5)]).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>// GENERAL PATTERNS that work with both event and value streams</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>//Ptrace(pattern, key, printStream)<span class="Apple-converted-space">  </span>- print the contents of a pattern</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>r = <span class="s3">Psetpre</span>(<span class="s5">\freq</span>, <span class="s3">Pseq</span>([500, 600, 700], 2), q);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Ptrace</span>(r).play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Ptrace</span>(r, <span class="s5">\freq</span>).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s3">var</span> printStream;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>printStream = <span class="s3">CollStream</span>.new;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([<span class="s3">Ptrace</span>(r, <span class="s5">\freq</span>, printStream), <span class="s3">Pfunc</span>({printStream.collection.dump; <span class="s3">nil</span> }) ]).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}.value;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>//Pseed(seed, pattern) - set the seed of the random number generator<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// to force repetion of pseudo-random patterns</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span><span class="s3">Pn</span>(<span class="s3">Pseed</span>(44, <span class="s3">Pbindf</span>(q, <span class="s5">\ctranspose</span>, <span class="s3">Pbrown</span>(-3.0, 3.0, 10) ) ) ).play;</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>//Proutine(function) - on exit, the function must return the last value returned by yield</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// (otherwise, the pattern cannot be reliably manipulated by other patterns)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span></b></span><span class="s3">Proutine</span>({ <span class="s3">arg</span> inval;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = p.embedInStream(inval);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = <span class="s3">Event</span>.silent(4).yield;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = q.embedInStream(inval);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = r.embedInStream(inval);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).play</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>//Pfunc(function) - the function should not have calls to embedInStream, use Proutine instead.</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Pn</span>(<span class="s3">Pbindf</span>(q, <span class="s5">\legato</span>, <span class="s3">Pfunc</span>({ <span class="s3">arg</span> inval; if (inval.at(<span class="s5">\degree</span>)== 5)<span class="Apple-converted-space">  </span>{4} {0.2}; })) ).play</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// the following patterns control the sequencing and repetition of other patterns</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//Pseq(arrayOfPatterns, repeats) - play as a sequence</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Pseq</span>([<span class="s3">Pseq</span>([p], 4), <span class="s3">Pseq</span>([<span class="s3">Pbindf</span>(q, <span class="s5">\ctranspose</span>, -24)], 5)]).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//Pser(arrayOfPatterns, num) - play num patterns from the arrayOfPatterns</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Pser</span>([p, q, r], 5).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//Place(arrayOfPatterns, repeats) - similar to Pseq</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// but array elements that are themselves arrays are iterated<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// embedding the first element on the first repetition, second on the second, etc</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Place</span>([[p, q, r], q, r], 5).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Pn( pattern, patternRepetitions ) - repeat the pattern n times</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Pn</span>(p, 2).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Pfin( eventcount, pattern ) - play n events from the pattern</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Pfin</span>(12, <span class="s3">Pn</span>(p, <span class="s3">inf</span>)).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Pstutter( eventRepetitions, pattern ) - repeat each event from the pattern n times</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pstutter</span>(4, q).play</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//Pwhile(function, pattern)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pwhile</span>({coin(0.5).postln;}, q).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// Pswitch( patternList, selectPattern ) - when a pattern ends, switch according to select</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Pswitch</span>([p, q, r], <span class="s3">Pwhite</span>(0, 100)).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>// Pswitch1( patternList, selectPattern ) - on each event switch according to select</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pn</span>(<span class="s3">Pswitch1</span>([p, q, r], <span class="s3">Pwhite</span>(0, 2))).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>// Prand( patternList, repeats ) -<span class="Apple-converted-space">  </span>random selection from list<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Prand</span>([p, q, r],<span class="Apple-converted-space">  </span><span class="s3">inf</span>).play</p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>// Pxrand( patternList, repeats ) -<span class="Apple-converted-space">  </span>random selection from list without repeats<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pxrand</span>([p, q, r],<span class="Apple-converted-space">  </span><span class="s3">inf</span>).play</p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>// Pwrand( patternList, weights, repeats ) - weighted random selection from list<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pwrand</span>([p, q, r], #[1, 3, 5].normalizeSum, <span class="s3">inf</span>).play</p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>// Pwalk( patternList, stepPattern, directionPattern ) - walk through a list of patterns</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pwalk</span>([p, q, r], 1, <span class="s3">Pseq</span>([-1, 1], <span class="s3">inf</span>)).play</p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>// Pslide(list, repeats, length, step, start)</b></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pslide</span>(#[1, 2, 3, 4, 5], <span class="s3">inf</span>, 3, 1, 0), <span class="s5">\dur</span>, 0.2).play</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>// Pshuf( patternList, repeats ) -<span class="Apple-converted-space">  </span>random selection from list<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pn</span>(<span class="s3">Pshuf</span>([p, q, r, r, p])).play</p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>// Ptuple(list, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s6"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Ptuple</span>([<span class="s3">Pwhite</span>(1, -6), <span class="s3">Pbrown</span>(8, 15, 2)]),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Pfunc</span>({ <span class="s3">arg</span> ev; ev.at(<span class="s5">\degree</span>).last/80 round: 0.1}),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\db</span>, <span class="s3">Pfunc</span>({ if (coin(0.8)) {-25} {-20} })</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).play</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>// the following patterns can alter the values returned by other patterns</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//Pcollect(function, pattern)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pcollect</span>({ <span class="s3">arg</span> inval; inval.use({ ~freq = 1000.rand }); inval}, q).play</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//Pselect(function, pattern)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pselect</span>({ <span class="s3">arg</span> inval; inval.at(<span class="s5">\degree</span>) != 0 }, q).play(quant: 0)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>//Preject(function, pattern)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Preject</span>({ <span class="s3">arg</span> inval; inval.at(<span class="s5">\degree</span>) != 0 }, q).play(quant: 0)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>//Ppatmod(pattern, function, repeats) -</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// function receives the current pattern as an argument and returns the next pattern to be played</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Ppatmod</span>(p, { <span class="s3">arg</span> oldPat; [p, q, r].choose }, <span class="s3">inf</span>).play</p>
-<p class="p2"><br></p>
-<p class="p3"><b>// VALUE PATTERNS: these patterns define or act on streams of numbers</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// Env as a pattern</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pbindf</span>(<span class="s3">Pn</span>(q, <span class="s3">inf</span>), <span class="s5">\ctranspose</span>, <span class="s3">Pn</span>(<span class="s3">Env</span>.linen(3, 0, 0.3, 20), <span class="s3">inf</span>) ).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// Pwhite(lo, hi, length)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pbindf</span>(<span class="s3">Pn</span>(q, <span class="s3">inf</span>), <span class="s5">\ctranspose</span>, <span class="s3">Pwhite</span>(-3.0, 3.0) ).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// Pbrown(lo, hi, step, length)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pbindf</span>(<span class="s3">Pn</span>(q, <span class="s3">inf</span>), <span class="s5">\ctranspose</span>, <span class="s3">Pbrown</span>(-3.0, 3.0, 2) ).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// Pseries(start, step, length)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pbindf</span>(<span class="s3">Pn</span>(q, <span class="s3">inf</span>), <span class="s5">\ctranspose</span>, <span class="s3">Pseries</span>(0, 0.1, 10) ).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// Pgeom(start, step, length)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pbindf</span>(<span class="s3">Pn</span>(q, <span class="s3">inf</span>), <span class="s5">\ctranspose</span>, <span class="s3">Pgeom</span>(1, 1.2, 20) ).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// Pwrap(pattern, lo, hi)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pbind</span>(<span class="s5">\note</span>, <span class="s3">Pwrap</span>(<span class="s3">Pwhite</span>(0, 128), 10, 20).round(2), <span class="s5">\dur</span>, 0.05).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// PdegreeToKey(pattern, scale, stepsPerOctave)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// this reimplements part of pitchEvent (see Event)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Pbindf</span>(<span class="s3">Pn</span>(q, <span class="s3">inf</span>), <span class="s5">\note</span>, <span class="s3">PdegreeToKey</span>(<span class="s3">Pbrown</span>(-8, 8, 2), [0, 2, 4, 5, 7, 9, 11]) ).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// Prewrite(pattern, dict, levels) - see help page for details.</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// (notice use of Env to define a chord progression of sorts...</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">Pbind</span><span class="s4">(</span>\degree<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Prewrite</span>(0, <span class="Apple-tab-span">	</span>(<span class="Apple-tab-span">	</span>0: #[2, 0],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1: #[0, 0, 1],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2: #[1, 0, 1]</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>), 4</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) + <span class="s3">Pn</span>(<span class="s3">Env</span>([4, 0, 1, 4, 3, 4], [6.4, 6.4, 6.4, 6.4, 6.4], <span class="s5">'step'</span>)),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.2).play</p>
-<p class="p9"><br></p>
-<p class="p3"><span class="s7"><span class="Apple-tab-span">	</span></span><b>// PdurStutter( repetitionPattern, patternOfDurations ) -<span class="Apple-converted-space"> </span></b></p>
-<p class="p13"><span class="s8"><b><span class="Apple-tab-span">	</span></b></span>Pbindf<span class="s4">(</span>Pn<span class="s4">(q), </span><span class="s5">\dur</span><span class="s4">, </span>PdurStutter<span class="s4">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>(#[1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 4, 5, 7, 15], <span class="s3">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>(#[0.5], <span class="s3">inf</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// Pstep2add( pat1, pat2 ) <span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// Pstep3add( pat1, pat2, pat3 ) <span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// PstepNadd(pat1, pat2, ...)<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// PstepNfunc(function, patternArray )</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>// combine multiple patterns with depth first traversal</b></p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s8"><b><span class="Apple-tab-span">	</span></b></span>Pbind<span class="s4">(</span></p>
-<p class="p12"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\octave<span class="s4">, 4,<span class="Apple-converted-space"> </span></span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">\degree</span><span class="s4">, </span>PstepNadd<span class="s4">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([1, 2, 3]),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([0, -2, [1, 3], -5]),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pshuf</span>([1, 0, 3, 0], 2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p13"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">\dur</span><span class="s4">, </span>PstepNadd<span class="s4">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([1, 0, 0, 1], 2),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pshuf</span>([1, 1, 2, 1], 2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).loop * (1/8),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\legato</span>, <span class="s3">Pn</span>(<span class="s3">Pshuf</span>([0.2, 0.2, 0.2, 0.5, 0.5, 1.6, 1.4], 4), <span class="s3">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\scale</span>, #[0, 1, 3, 4, 5, 7, 8]</p>
-<p class="p7"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PatternConductor.html b/Help/Streams-Patterns-Events/Patterns/PatternConductor.html
deleted file mode 100644
index bd7b7fb..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PatternConductor.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PatternConductor</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">PatternConductor provides a simple interactive control (supporting play, pause, resume, stop)<span class="Apple-converted-space"> </span></p>
-<p class="p3">for playing pattern, much like Pattern-play.<span class="Apple-converted-space">  </span>However, PatternConductor creates its own clock and</p>
-<p class="p3">directly controls the release of sounding notes as well as their initiation by the pattern.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Class Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>*new(pattern, event, quant)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>tempo_(tempo)</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>Sets the tempo of the PatternConductor</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>play<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b>Play the pattern.<span class="Apple-converted-space">  </span>A TempoClock is created, its tempo is set to the PatternConductor tempo,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>and the pattern is played using that clock.<b> </b>if quant is non-zero, this is synchronized with<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>TempoClock.default at the specified quantization.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>pause(pauseTempo = 0.000001)</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Pause the pattern, sustaining notes indefinitely. <span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a subsequent <b>resume</b> will return to the original tempo (so the notes will<span class="Apple-converted-space">  </span>end as scheduled). <span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a subsequent <b>play</b> will cut-off any sounding notes and resume play at the original tempo.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>stop(stopTempo)<span class="Apple-converted-space"> </span></b> can cut-off or shorten sounding notes, depending on the value of tempo.</p>
-<p class="p3"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>If stopTempo is nil, all notes are cut-off immediately.<span class="Apple-converted-space">  </span>Otherwise, notes end at the specified tempo.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b>example:</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s1"><span class="Apple-converted-space"> </span></span>// a pattern with long notes<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-converted-space">  </span>p = <span class="s2">Pbind</span>(</p>
-<p class="p6"><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\freq</span>, <span class="s2">Pwhite</span>(0,log(32)).exp.round(1) * 36.midicps,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\detune</span>, <span class="s2">Pfunc</span>({ <span class="s2">| ev |</span> ev[<span class="s3">\freq</span>]<span class="Apple-converted-space">  </span>* rand(0.01) }),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\sustain</span>, <span class="s2">Pwhite</span>(log(0.1), log(20)).exp,</p>
-<p class="p6"><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\dur</span>, <span class="s2">Prand</span>([0.1,0.1,0.1,0.1,0.2,1,2],<span class="s2">inf</span>),</p>
-<p class="p6"><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">\db</span>, <span class="s2">Pstep</span>(<span class="s2">Pseq</span>([-20,-30,-25,-30], <span class="s2">inf</span>),0.2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// unrelated cluster pattern running on TempoClock.default</p>
-<p class="p6"><span class="s2">Pbind</span>(<span class="s3">\dur</span>,2, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([(48..60)],20), <span class="s3">\db</span>, -30).play;</p>
-<p class="p7"><br></p>
-<p class="p8">// make a conductor<span class="Apple-tab-span">	</span></p>
-<p class="p6">a = <span class="s2">PatternConductor</span>(p, quant: 2);</p>
-<p class="p6">a.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// now try some interactive control options line by line:</p>
-<p class="p6">a.quant = 0;</p>
-<p class="p6">a.pause;</p>
-<p class="p6">a.resume;</p>
-<p class="p6">a.stop;</p>
-<p class="p6">a.play;</p>
-<p class="p6">a.pause;</p>
-<p class="p6">a.play;</p>
-<p class="p6">a.stop(1000);</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PatternsDocumentedAndNot.html b/Help/Streams-Patterns-Events/Patterns/PatternsDocumentedAndNot.html
deleted file mode 100644
index 82a0488..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PatternsDocumentedAndNot.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {text-decoration: underline}
-span.s2 {font: 9.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">Patterns in bold are included in Pattern tests</p>
-<p class="p1">Patterns underlined have help pages</p>
-<p class="p1">Patterns italicized have been tested but not included in the Pattern tests page.</p>
-<p class="p2"><br></p>
-<p class="p1">[</p>
-<p class="p1"><span class="Apple-converted-space">  </span>FilterPattern</p>
-<p class="p1"><span class="Apple-converted-space">  </span>[</p>
-<p class="p1"><span class="Apple-converted-space">    </span><b>PfadeIn</b></p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ <b>PfadeOut</b> ]</p>
-<p class="p1"><span class="Apple-converted-space">    </span>Pavaroh</p>
-<p class="p1"><b><span class="Apple-converted-space">    </span>PdegreeToKey</b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b>Pseed</b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Prewrite</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b>Ptrace</b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pwrap</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pstutter</span></b></p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ <b><span class="s1">PdurStutter</span></b> ]</p>
-<p class="p1"><span class="Apple-converted-space">    </span><b>Pbindf</b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b>Plag</b></p>
-<p class="p1"><span class="Apple-converted-space">    </span>Pconst</p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Psync</span></b></p>
-<p class="p1"><b><span class="Apple-converted-space">    </span>Pfindur</b></p>
-<p class="p1"><b><span class="Apple-converted-space">    </span></b><b><span class="s1">Pfin</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span>Pplayer</p>
-<p class="p1"><span class="Apple-converted-space">    </span><b>Pstretch</b></p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ <b>Pstretchp</b> ]</p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pset</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span>[</p>
-<p class="p1"><span class="Apple-converted-space">      </span><b>Psetp</b></p>
-<p class="p1"><span class="Apple-converted-space">        </span>[ Pmulp Paddp ]</p>
-<p class="p1"><span class="Apple-converted-space">      </span><span class="s1">Pmul</span></p>
-<p class="p1"><span class="Apple-converted-space">      </span><span class="s1">Padd</span></p>
-<p class="p1"><span class="Apple-converted-space">    </span>]</p>
-<p class="p1"><span class="Apple-converted-space">    </span><b>Psetpre</b></p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ Pmulpre Paddpre ]</p>
-<p class="p1"><span class="Apple-converted-space">    </span>FuncFilterPattern</p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ <b>Pwhile</b> <b>Pfset</b> <b><span class="s1">Preject</span></b><b> </b><b><span class="s1">Pselect</span></b><b> </b><b><span class="s1">Pcollect</span></b> ]</p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pn</span></b></p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ Ploop ]</p>
-<p class="p1"><span class="Apple-converted-space">  </span>]</p>
-<p class="p1"><span class="Apple-converted-space">  </span><span class="s1">Phid</span></p>
-<p class="p1"><span class="Apple-converted-space">  </span><b><span class="s1">Pdict</span></b></p>
-<p class="p1"><span class="Apple-converted-space">  </span><b><span class="s1">Pdefn</span></b></p>
-<p class="p1"><span class="Apple-converted-space">  </span>[</p>
-<p class="p1"><span class="Apple-converted-space">    </span><span class="s1">Tdef</span></p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ <b><span class="s1">Pdef</span></b> ]</p>
-<p class="p1"><span class="Apple-converted-space">  </span>]</p>
-<p class="p1"><span class="Apple-converted-space">  </span><b><span class="s1">Pswitch</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span>[ <b><span class="s1">Pswitch1</span></b> ]</p>
-<p class="p1"><span class="Apple-converted-space">  </span>ListPattern</p>
-<p class="p1"><span class="Apple-converted-space">  </span>[</p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pwalk</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pslide</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Ptuple</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b>Ppar</b></p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ <b>Ptpar</b> ]</p>
-<p class="p1"><span class="Apple-converted-space">    </span><i>Pdfsm</i></p>
-<p class="p1"><span class="Apple-converted-space">    </span><i>Pfsm</i></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pwrand</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pxrand</span></b></p>
-<p class="p1"><b><span class="Apple-converted-space">    </span></b><b><span class="s1">Prand</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pshuf</span></b></p>
-<p class="p1"><span class="Apple-converted-space">    </span><b><span class="s1">Pseq</span></b></p>
-<p class="p1"><span class="Apple-converted-space">      </span>[ <i>Ppatlace</i> <b><span class="s1">Place</span></b> <b><span class="s1">Pser</span></b> ]</p>
-<p class="p1"><span class="Apple-converted-space">  </span>]</p>
-<p class="p1"><span class="Apple-converted-space">  </span>Pindex</p>
-<p class="p1"><span class="Apple-converted-space">  </span><b><span class="s1">Ppatmod</span></b></p>
-<p class="p1"><span class="Apple-converted-space">  </span><i>Plazy</i></p>
-<p class="p1"><span class="Apple-converted-space">  </span>Pstatbalnorm</p>
-<p class="p1"><span class="Apple-converted-space">  </span>Pstatbal</p>
-<p class="p1"><span class="Apple-converted-space">  </span><i>PstepNfunc</i></p>
-<p class="p1"><span class="Apple-converted-space">    </span>[ <i>PstepNadd</i> ]</p>
-<p class="p1"><span class="Apple-converted-space"> </span><b> Pstep3add</b></p>
-<p class="p1"><b><span class="Apple-converted-space">  </span>Pstep2add</b></p>
-<p class="p1"><b><span class="Apple-converted-space">  </span>Pwhite</b></p>
-<p class="p1"><b><span class="Apple-converted-space">  </span>Pbrown</b></p>
-<p class="p1"><b><span class="Apple-converted-space">  </span>Pgeom</b></p>
-<p class="p1"><b><span class="Apple-converted-space">  </span>Pseries</b></p>
-<p class="p1"><span class="Apple-converted-space">  </span><b><span class="s1">Pbind</span></b></p>
-<p class="p1"><span class="Apple-converted-space">  </span><b>Pevent</b></p>
-<p class="p1"><b><span class="Apple-converted-space"> </span></b><i> Pnaryop</i></p>
-<p class="p1"><i><span class="Apple-converted-space">  </span>Pbinop</i></p>
-<p class="p1"><i><span class="Apple-converted-space">  </span>Punop</i></p>
-<p class="p1"><b><span class="Apple-converted-space">  </span></b><b><span class="s1">Pfuncn</span></b></p>
-<p class="p1"><span class="Apple-converted-space">  </span><b>Prout</b></p>
-<p class="p1"><span class="Apple-converted-space">  </span><b>Proutine</b></p>
-<p class="p1"><span class="Apple-converted-space">  </span>Pfunc</p>
-<p class="p2"><span class="Apple-converted-space">  </span></p>
-<p class="p2"><span class="Apple-converted-space">  </span></p>
-<p class="p3"><span class="s2"><span class="Apple-converted-space">  </span></span>The following lists all the Pattern classes where</p>
-<p class="p3">embedInStream uses the default Pattern-embedInStream.</p>
-<p class="p3">These create a new stream whenever embedded.</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">var look;</p>
-<p class="p4"><br></p>
-<p class="p3">look = { arg class;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>class.subclasses.do({arg class;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (class.findMethod(\embedInStream).isNil) {<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>class.postln;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>look.value(class);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3">};</p>
-<p class="p4"><br></p>
-<p class="p3">look.value(Pattern);</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">// base classes support both approaches:</p>
-<p class="p3">FilterPattern</p>
-<p class="p3">FuncFilterPattern</p>
-<p class="p3">ListPattern</p>
-<p class="p4"><br></p>
-<p class="p3">// classes not reimplemented</p>
-<p class="p3">Ptrace</p>
-<p class="p3">Pconst</p>
-<p class="p3">Pdict</p>
-<p class="p3">Pstatbalnorm</p>
-<p class="p3">Pstatbal</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pavaroh.html b/Help/Streams-Patterns-Events/Patterns/Pavaroh.html
deleted file mode 100644
index ac89cd0..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pavaroh.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #416d1f}
-span.s4 {color: #0025b2}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pavaroh<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>applying ascending and descending scales to event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: FilterPattern</p>
-<p class="p2"><br></p>
-<p class="p1">basic classical indian scale pattern<span class="Apple-converted-space"> </span></p>
-<p class="p1">allowing to apply an ascending scale (<b>aroh</b>) and a descending scale (<b>avaroh</b>)</p>
-<p class="p3"><br></p>
-<p class="p1"><b>Pavaroh(keypattern, aroh, avaroh, stepsPerOctave)</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">note that no special pakads (movements) or vakras (twists) are applied.</p>
-<p class="p3"><br></p>
-<p class="p1">the pakad is often a natural consequence of the notes of arohana / avarohana<span class="Apple-converted-space"> </span></p>
-<p class="p1">(ascending and descending structures). This is the purpose of this pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p5">Pbind<span class="s2">(</span><span class="s3">\note</span><span class="s2">, </span>Pavaroh<span class="s2">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1, 2, 3, 2, 5, 4, 3, 4, 2, 1], 2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[0, 2, 3, 6, 7, 9],</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[0, 1, 3, 7, 8, 11]</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.25</p>
-<p class="p4">).play;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">//___indian video game (1)</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s4">SynthDef</span>(<span class="s5">"ivg"</span>, { <span class="s4">arg</span> out, freq=900, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var trig, snd;</p>
-<p class="p4"><span class="Apple-converted-space">               <span class="Apple-tab-span">	</span></span>trig = <span class="s4">Impulse</span>.kr(<span class="s4">LFClipNoise</span>.kr(4, 3, <span class="s4">LFClipNoise</span>.kr(0.2, 2, 7)));</p>
-<p class="p4"><span class="Apple-converted-space">              <span class="Apple-tab-span">	</span></span>snd = <span class="s4">RLPF</span>.ar(</p>
-<p class="p4"><span class="Apple-converted-space">                        <span class="Apple-tab-span">	</span></span><span class="s4">SinOsc</span>.ar(freq, 0, <span class="s4">Decay</span>.kr(trig, 1.8)).distort</p>
-<p class="p4"><span class="Apple-converted-space">                <span class="Apple-tab-span">	</span></span>, 554, 0.3)<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space">                <span class="Apple-tab-span">	</span></span>* 0.1;</p>
-<p class="p4"><span class="Apple-converted-space">              <span class="Apple-tab-span">	</span></span>Out.ar(out, Pan2.ar(snd, pan))</p>
-<p class="p2"><span class="Apple-converted-space">              <span class="Apple-tab-span">	</span></span></p>
-<p class="p4"><span class="Apple-converted-space"> </span>}).send(s);</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="Apple-converted-space">        </span><span class="s4">var</span> aroh, avaroh, synth, str, pat;</p>
-<p class="p2"><span class="Apple-converted-space">        </span></p>
-<p class="p6"><span class="s2"><span class="Apple-converted-space">        </span></span>//gandhari raga.<span class="Apple-converted-space">  </span>vadi: dha (7) samvadi: ga (3)</p>
-<p class="p2"><span class="Apple-converted-space">        </span></p>
-<p class="p4"><span class="Apple-converted-space">        </span>aroh = #[0, 2, 5, 7, 10];</p>
-<p class="p4"><span class="Apple-converted-space">        </span>avaroh =<span class="Apple-converted-space">  </span>#[0, 1, 3, 5, 7, 9, 10];</p>
-<p class="p2"><span class="Apple-converted-space">        </span></p>
-<p class="p4"><span class="Apple-converted-space">        </span>synth = <span class="s4">Synth</span>.head(s, <span class="s3">\ivg</span>);</p>
-<p class="p4"><span class="Apple-converted-space">        </span>pat = <span class="s4">Prand</span>([0, 2, 3, 4, 2, 1, 0, -1, -2], <span class="s4">inf</span>);</p>
-<p class="p4"><span class="Apple-converted-space">        </span>str = <span class="s4">Pavaroh</span>(pat, aroh, avaroh).asStream;</p>
-<p class="p4"><span class="Apple-converted-space">        </span><span class="s4">Routine</span>({</p>
-<p class="p2"><span class="Apple-converted-space">        <span class="Apple-tab-span">	</span></span></p>
-<p class="p4"><span class="Apple-converted-space">        <span class="Apple-tab-span">	</span></span>loop({</p>
-<p class="p4"><span class="Apple-converted-space">        <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>synth.set(<span class="s3">\freq</span>, midicps(str.next + 60) );</p>
-<p class="p4"><span class="Apple-converted-space">        <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>rrand([0.1,1.0].choose, 0.5).wait;</p>
-<p class="p4"><span class="Apple-converted-space">        <span class="Apple-tab-span">	</span></span>});</p>
-<p class="p2"><span class="Apple-converted-space">        <span class="Apple-tab-span">	</span></span></p>
-<p class="p4"><span class="Apple-converted-space">       </span>}).play;</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pbeta.html b/Help/Streams-Patterns-Events/Patterns/Pbeta.html
deleted file mode 100644
index 29fff9a..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pbeta.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9e201b}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3c6d12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0023b7}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #000000}
-span.s6 {color: #3c6d12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pbeta<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values that follow a Eulerian Beta Distribution</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pbeta(lo, hi, prob1, prob2, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo, hi<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lower and upper boundary of values (default: 0.0 and 1.0)</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>prob1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The probability that a value will occur near lo. <1, probability of a value near lo</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>increases. =1, uniform dist. >1 will create a bounded Gaussian-like distribution.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>prob2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The probability that a value will occur near hi. <1, probability of a value near lo</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>increases. =1, uniform dist. >1 will create a bounded Gaussian-like distribution.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Pbeta</span>(0.0, 1.0, 0.1, 0.1, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s3">Window</span>.new(<span class="s4">"Pbetarand"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Pbeta</span>(0.0, 1.0, 1, 1, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s3">Window</span>.new(<span class="s4">"Pbetarand"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);(discrete: true);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Pbeta</span>(0.0, 1.0, 3, 3, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s3">Window</span>.new(<span class="s4">"Pbetarand"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s5">(</span>\help_sinegrain<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pbeta</span>(0.0, 1.0, 0.1, 0.1, <span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pbeta</span>(0.0, 1.0, 1.0, 1.0, <span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pbeta</span>(0.0, 1.0, 3.0, 3.0, <span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pbind.html b/Help/Streams-Patterns-Events/Patterns/Pbind.html
deleted file mode 100644
index a126ebd..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pbind.html
+++ /dev/null
@@ -1,469 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.s7 {color: #001bb9}
-span.s8 {color: #2c7014}
-span.s9 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pbind<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>combine several value patterns to one event stream by binding keys to values</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="Pattern.html"><b>Pattern</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Pbind</b> combines several value streams into one event stream. Each value stream is assigned to one or more keys in the resulting event stream. It specifies a stream of <b>Events</b> in terms of different patterns<i> </i>that are <b>bound </b>to different keys in the Event.</p>
-<p class="p1">The patterns bound to keys are referred to as <i>value patterns</i> and the Pbind itself is termed an <i>event pattern.</i></p>
-<p class="p4"><br></p>
-<p class="p1">The keys used in a Pbind are usually determined by <a href="../../Collections/Event.html"><span class="s3">Event</span></a> 's default mechanism and the controls defined for the <a href="../../ServerArchitecture/SynthDef.html"><span class="s3">SynthDef</span></a> to be played. ( See <b>SynthDef and Event</b> below for a brief discussion of both in relation to Pbind.)</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (key1, pattern1, key2, pattern2 ...)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>The arguments to Pbind are an alternating sequence of keys and patterns.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A pattern can also be bount to an array of keys. In this case, the pattern must specify</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a sequence whose elements are arrays with at least as many elements as there are keys.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p8"><br></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">a = <span class="s4">Pbind</span>(<span class="s5">\x</span>, <span class="s4">Pseq</span>([1, 2, 3]), <span class="s5">\y</span>, <span class="s4">Prand</span>([100, 300, 200], <span class="s4">inf</span>), <span class="s5">\zzz</span>, 99);</p>
-<p class="p10">x = a.asStream;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p11"><span class="s2">x.next(()); </span>// pass in an event ()</p>
-<p class="p10">x.next(());</p>
-<p class="p10">x.next(());</p>
-<p class="p10">x.next(()); <span class="s6">// end: nil</span></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p11">// sound examples</p>
-<p class="p9"><br></p>
-<p class="p11">// using the default synth def</p>
-<p class="p10"><span class="s4">Pbind</span>(<span class="s5">\freq</span>, <span class="s4">Prand</span>([300, 500, 231.2, 399.2], <span class="s4">inf</span>), <span class="s5">\dur</span>, 0.1).play;</p>
-<p class="p10"><span class="s4">Pbind</span>(<span class="s5">\freq</span>, <span class="s4">Prand</span>([300, 500, 231.2, 399.2], <span class="s4">inf</span>), <span class="s5">\dur</span>, <span class="s4">Prand</span>([0.1, 0.3], <span class="s4">inf</span>)).play;</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s4">Pbind</span>(<span class="s5">\freq</span>, <span class="s4">Prand</span>([1, 1.2, 2, 2.5, 3, 4], <span class="s4">inf</span>) * 200, <span class="s5">\dur</span>, 0.1).play;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p11">// a SynthDef</p>
-<p class="p12">SynthDef<span class="s2">(</span><span class="s5">\test</span><span class="s2">, { </span>| out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1 |</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">var</span> audio = <span class="s4">Blip</span>.ar(freq, nharms, amp);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">var</span> env = <span class="s4">Linen</span>.kr(gate, doneAction: 2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">OffsetOut</span>.ar(out, <span class="s4">Pan2</span>.ar(audio, pan, env) );</p>
-<p class="p10">}).add;</p>
-<p class="p10">);</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s4">Pbind</span>(<span class="s5">\instrument</span>, <span class="s5">\test</span>, <span class="s5">\freq</span>, <span class="s4">Prand</span>([1, 1.2, 2, 2.5, 3, 4], <span class="s4">inf</span>) * 200, <span class="s5">\dur</span>, 0.1).play;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p11">// standard syntax, arguments alternate symbols and patterns</p>
-<p class="p10">(</p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s2">(</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\test<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\nharms</span>, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([4, 10, 40], <span class="s4">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1, 1, 2, 1]/10, <span class="s4">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[freq, sustain],<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s4">Ptuple</span>([<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// assignment to multiple keys</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>( (1..16) * 50, 4),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1/10, 0.5, 1, 2], <span class="s4">inf</span>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).play</p>
-<p class="p9"><br></p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p1">It is possible to specify a Pbind with an <a href="../../Collections/Array.html"><span class="s7">Array</span></a> preceded by <b>*</b>. Arrays treat identifiers ending with a colon as <a href="../../Core/Symbol.html"><span class="s7">Symbol</span></a>s, making the syntax of the Pbind specification a bit more concise:</p>
-<p class="p4"><br></p>
-<p class="p10">(</p>
-<p class="p14">//<span class="Apple-tab-span">	</span>Alternative syntax, using a key/pattern array:</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pbind</span>(*[</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instrument:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\test</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nharms:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pseq</span>([4, 10, 40], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pseq</span>([1, 1, 2, 1]/10, <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[freq, sustain],<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s7">Ptuple</span>([</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pseq</span>( (1..16) * 50, 4),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pseq</span>([1/10, 0.5, 1, 2], <span class="s7">inf</span>)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]),<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]).play</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p15"><b>SynthDef and Event</b></p>
-<p class="p4"><br></p>
-<p class="p1">The keys used in a Pbind are determined by the <a href="../../ServerArchitecture/SynthDef.html"><span class="s7"><b>SynthDef</b></span></a><b> </b>used and the structure of the extensive default mechanism provided by <a href="../../Collections/Event.html"><span class="s7"><b>Event</b></span></a><b>. </b>This section provides a brief review of both.</p>
-<p class="p4"><br></p>
-<p class="p1">A <b>SynthDef</b> assigns a name to an interconnection of unit generators to be run as a synth on a server. It also assigns <b>control</b> <b>names</b> to the synth's control inputs. In the following example the SynthDef\test<b> </b>has control inputs <b>out, freq, amp, nharms, pan, </b>and <b>gate</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s8">\test</span><span class="s2">, { </span>| out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1 |</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> audio = <span class="s7">Blip</span>.ar(freq, nharms, amp);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> env = <span class="s7">Linen</span>.kr(gate, doneAction: 2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">OffsetOut</span>.ar(out, <span class="s7">Pan2</span>.ar(audio, pan, env) );</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1">The SynthDef needs to be downloaded to the server upon which it is to be run. Use <b>.add</b> instead of .send to ensure that any patterns using this SynthDef have information about the available control inputs (see <a href="../../ServerArchitecture/SynthDesc.html"><span class="s7">SynthDesc</span></a>). Alternately, <b>.store</b> may be used to save the SynthDef to disk and add the SynthDesc to the library.</p>
-<p class="p4"><br></p>
-<p class="p1">An <b>Event</b> is a Dictionary that specifies an action to be taken in response to <b>play </b>and a time increment to be returned in response to <b>delta</b>. Events can be written as a series of key value pairs enclosed in parentheses. Empty parentheses create an empty event.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p1">By default, Events play synths on a server. Such <i>note events</i> use the following keys:</p>
-<p class="p4"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>instrument <span class="Apple-tab-span">	</span>(\default)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The synthdef to be played</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>variant<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(nil, optional)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The set of variant control defaults to use (see <a href="../../ServerArchitecture/SynthDef.html"><span class="s7">SynthDef</span></a> help)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>server<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>(<b>Server.default</b>)<span class="Apple-tab-span">	</span>The server that plays the synth<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>group<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>( 1</b>)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The new synth's or the synth the new synth is placed before or after</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>addAction<span class="Apple-tab-span">	</span>(0)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>How the synth is placed relative to the target specified by <b>group</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 -> head of group</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 -> tail of group</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 -> before group (could be a Synth)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3 -> after group (could be a Synth)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>delta<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(function)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The time until the next event in a sequence of events, generally specified</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>indirectly through <b>dur</b></p>
-<p class="p4"><br></p>
-<p class="p1">When the Event is played, it creates an OSC command to play a synth. It uses the name assigned to <b>instrument </b>to the select the SynthDef to be played. The SynthDef's control names (found in its SynthDesc) are looked up in the event and the corresponding values included in the command.</p>
-<p class="p4"><br></p>
-<p class="p1">Playing a synth is the normal action taken by an Event. The default event structure defines several other event types that can perform a wide variety of server actions. See the <a href="../../Collections/Event.html"><span class="s7">Event</span></a> help file for a list of event types.</p>
-<p class="p4"><br></p>
-<p class="p1">There are a number of coventional names typically used to identify controls in a synth.</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>output bus index</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>input bus index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(for filters, modulators, etc)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>gate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>envelope gate (not level!) - should default to 1.0, deletes synth when released</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>trig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>envelope gate (not level!) - should default to 1.0, does not delete synth when released</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>panning position</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum<span class="Apple-tab-span">	</span></b>buffer number (used in synths that utilize PlayBuf, DiskIn, etc)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sustain<span class="Apple-tab-span">	</span></b>duration of the synth</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>amplitude of the synth</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freq<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>base pitch of the synth</p>
-<p class="p4"><br></p>
-<p class="p1">Event implements a layered specification scheme for some of these controls. In the following list, the first and leftmost name is the actual control name, names below and indented are more abstract ways to specify the control.</p>
-<p class="p4"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>delta<span class="Apple-tab-span">	</span></b>The time until the next event. Generally determined by:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>dur<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The time until next event in a sequence of events</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>stretch<span class="Apple-tab-span">	</span></b>Scales event timings (i.e. stretch == 2 => durations are twice as long)</p>
-<p class="p4"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sustain<span class="Apple-tab-span">	</span></b>Duration of the synth, typically determined (in stretched time units) by:<span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>legato<span class="Apple-tab-span">	</span></b>The ratio of the synth's duration to the event's duration</p>
-<p class="p4"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>amp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>synth amplitude (typically ranging from 0 to 1), often determined by</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>db<span class="Apple-tab-span">	</span></b>Amplitude in decibels</p>
-<p class="p4"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>detunedFreq<span class="Apple-tab-span">	</span></b>actual "pitch" of a synth, determined by</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>freq + detune</b>; freq is<b> </b>determined by</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<b>midinote</b> + <b>ctranspose).midicps * harmonic; </b>midinote is determined by</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<b>note + gtranspose + root)/stepsPerOctave * octave * 12; </b>note is determined by</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>(degree + mtranspose).degreeToKey(scale, stepsPerOctave)</b><span class="Apple-tab-span">	</span></p>
-<p class="p10">(</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// the SynthDef</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s8">\test</span><span class="s2">, { </span>| out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1 |</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> audio = <span class="s7">Blip</span>.ar(freq, nharms, amp);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> env = <span class="s7">Linen</span>.kr(gate, doneAction: 2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">OffsetOut</span>.ar(out, <span class="s7">Pan2</span>.ar(audio, pan, env) );</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p9"><br></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// Events are written as parantheses enclosing key/value pairs</p>
-<p class="p10"><span class="Apple-tab-span">	</span>(instrument: <span class="s8">\test</span>).play;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>(instrument: <span class="s8">\test</span>, freq: 20, nharms: 50).play;</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p15"><b>The Play Method<span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><br></p>
-<p class="p1">While the play method is actually defined in the class <b>Pattern</b>, it is useful to review it here:</p>
-<p class="p4"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>play (clock, protoEvent, quant)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns an <b>EventStreamPlayer</b><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clock <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The clock that schedules the EventStreamPlayer, defaults to <b>TempoClock.default</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Patterns that change graphics must use <b>AppClock</b>.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>protoEvent </b><span class="Apple-tab-span">	</span>The initial event modified by <b>Pbind</b>, defaults to <b>Event.default</b>.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>quant<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>A quantization value used by clock.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>When a number, the pattern will start at the next even multiple<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>of that number. May also be a <b>Quant, </b>which specifies quantization, time position<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>within that quantization,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and a timingOffset. See <b>Quant </b>for details.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p15"><b>Realtime Control with EventStreamPlayer</b></p>
-<p class="p8"><br></p>
-<p class="p1">The <a href="../EventStreamPlayer.html"><span class="s7">EventStreamPlayer</span></a> provides realtime control through <b>mute</b>, <b>unmute</b>, <b>stop, play </b>and <b>reset</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10"><span class="s7">SynthDef</span>(<span class="s8">\cfstring1</span>, { <span class="s7">arg</span> i_out, freq = 360, gate = 1, pan, amp=0.1;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">var</span> out, eg, fc, osc, a, b, w;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>fc = <span class="s7">LinExp</span>.kr(<span class="s7">LFNoise1</span>.kr(<span class="s7">Rand</span>(0.25, 0.4)), -1, 1, 500, 2000);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>osc = <span class="s7">Mix</span>.fill(8, {<span class="s7">LFSaw</span>.ar(freq * [<span class="s7">Rand</span>(0.99, 1.01), <span class="s7">Rand</span>(0.99, 1.01)], 0, amp) }).distort * 0.2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>eg = <span class="s7">EnvGen</span>.kr(<span class="s7">Env</span>.asr(1, 1, 1), gate, doneAction:2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>out = eg * <span class="s7">RLPF</span>.ar(osc, fc, 0.1);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>#a, b = out;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(i_out, <span class="s7">Mix</span>.ar(<span class="s7">PanAz</span>.ar(4, [a, b], [pan, pan+0.3])));</p>
-<p class="p10">}).add;</p>
-<p class="p9"><br></p>
-<p class="p10">e = <span class="s7">Pbind</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>((0..12), <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, 0.2,<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\cfstring1</p>
-<p class="p14"><span class="s2">).play; </span>// returns an EventStream</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p14"><span class="s2">( </span>// an interactive session</p>
-<p class="p10">e.stop</p>
-<p class="p10">e.play</p>
-<p class="p10">e.reset</p>
-<p class="p9"><br></p>
-<p class="p14"><span class="s2">e.mute; </span>// keeps playing, but replaces notes with rests</p>
-<p class="p9"><br></p>
-<p class="p10">e.unmute;</p>
-<p class="p9"><br></p>
-<p class="p14"><span class="s2">e.reset; </span>// reset the stream.</p>
-<p class="p14"><span class="s2">e.reset; </span>// reset the stream.</p>
-<p class="p14"><span class="s2">e.reset; </span>// reset the stream.</p>
-<p class="p14"><span class="s2">e.reset; </span>// reset the stream.</p>
-<p class="p9"><br></p>
-<p class="p14"><span class="s2">e.pause; </span>// will resume where paused.</p>
-<p class="p9"><br></p>
-<p class="p10">e.play;</p>
-<p class="p9"><br></p>
-<p class="p14"><span class="s2">e.stop; </span>// will reset before resume.</p>
-<p class="p9"><br></p>
-<p class="p10">e.play;</p>
-<p class="p9"><br></p>
-<p class="p10">)</p>
-<p class="p18"><br></p>
-<p class="p1">In addition, the stream the EventStreamPlayer plays can be altered while it is running through the method</p>
-<p class="p1"><b>stream_(aStream)</b>.</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">e.stream = <span class="s7">Pbind</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 1, 2, 4, 6, 3, 4, 8], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, <span class="s7">Prand</span>([0.2, 0.4, 0.8], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\amp</span>, 0.05, <span class="s8">\octave</span>, 5,<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\cfstring1<span class="s2">, </span>\ctranspose<span class="s2">, 0</span></p>
-<p class="p10">).asStream;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">e.stream = <span class="s7">Pbind</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 1, 2, 4, 6, 3, 4, 8], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, <span class="s7">Prand</span>([0.2, 0.4, 0.8], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\amp</span>, 0.05, <span class="s8">\octave</span>, 5,<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\cfstring1<span class="s2">, </span>\ctranspose<span class="s2">, 0</span></p>
-<p class="p10">).asStream;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">e.stream = <span class="s7">Pbind</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pxrand</span>([0, 1, 2, 4, 6, 3, 5, 7, 8], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, <span class="s7">Prand</span>([0.2, 0.4, 0.8], <span class="s7">inf</span>), <span class="s8">\amp</span>, 0.05,<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\octave<span class="s2">, 5, </span>\instrument<span class="s2">, </span>\cfstring1</p>
-<p class="p10">).asStream;</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p15"><b>Additional examples:</b></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10"><span class="s7">SynthDef</span>(<span class="s8">\berlinb</span>, { <span class="s7">arg</span> out=0, freq = 80, amp = 0.01, pan=0, gate=1;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">var</span> synth, env;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>env = <span class="s7">Decay2</span>.kr(gate, 0.05, 8, 0.0003);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>synth = <span class="s7">RLPF</span>.ar(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">LFPulse</span>.ar(freq, 0, <span class="s7">SinOsc</span>.kr(0.12, [0, 0.5pi], 0.48, 0.5)),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * <span class="s7">SinOsc</span>.kr(0.21, 0, 18, 20),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.07</p>
-<p class="p10"><span class="Apple-tab-span">	</span>);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>#a, b = synth*env;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">DetectSilence</span>.ar(a, 0.1, doneAction: 2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(out, amp * <span class="s7">Mix</span>.ar(<span class="s7">PanAz</span>.ar(4, [a, b], [pan, pan+1])));</p>
-<p class="p10">}).add;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">f = <span class="s7">Pbind</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 1, 2, 4, 6, 3, 4, 8], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\dur<span class="s2">, 0.5, </span>\octave<span class="s2">, 3, </span>\instrument<span class="s2">, </span>\berlinb</p>
-<p class="p10">).play;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">f.stream = <span class="s7">Pbind</span>(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 1, 2, 4, 6, 3, 4, 8], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\dur</span>, 0.5, <span class="s8">\octave</span>, [2, 1],<span class="Apple-converted-space"> </span></p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\berlinb<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2})<span class="Apple-converted-space"> </span></p>
-<p class="p10">).asStream;</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Additional arguments</b></p>
-<p class="p1">Here is an example with more bindings. Here we have added a filter with cutoff and resonance arguments.</p>
-<p class="p1">You will need to hit command '.' before executing the next few pbind ex. without having them stack up.</p>
-<p class="p1">also, due to the synthdef's and synthdeclib, if the server is shut down you will have to reload the<span class="Apple-converted-space"> </span></p>
-<p class="p1">synthdef and re-read the synthdesclib.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p10">(</p>
-<p class="p10"><span class="s7">SynthDef</span>(<span class="s8">\acid</span>, { <span class="s7">arg</span> out, freq = 1000, gate = 1, pan = 1, cut = 4000, rez = 0.8, amp = 1;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pan2</span>.ar(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">RLPF</span>.ar(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pulse</span>.ar(freq, 0.05),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cut, rez),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * <span class="s7">EnvGen</span>.kr(<span class="s7">Env</span>.linen(0.01, 1, 0.3), gate, amp, doneAction:2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p10">}).add;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10"><span class="s7">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25, 0.5, 0.25], <span class="s7">inf</span>), <span class="s8">\root</span>, -12,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 3, 5, 7, 9, 11, 5, 1], <span class="s7">inf</span>), <span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2}),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\cut</span>, <span class="s7">Pxrand</span>([1000, 500, 2000, 300], <span class="s7">inf</span>), <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}), <span class="s8">\amp</span>, 0.2).play;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p1">The <b>ListPatterns</b> can be put around Event Streams to create sequences of Event Streams.</p>
-<p class="p10">(</p>
-<p class="p16">Pseq<span class="s2">([</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25, 0.5, 0.25], 4), <span class="s8">\root</span>, -24,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 3, 5, 7, 9, 11, 5, 1], <span class="s7">inf</span>), <span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2}),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\cut</span>, <span class="s7">Pxrand</span>([1000, 500, 2000, 300], <span class="s7">inf</span>), <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}), <span class="s8">\amp</span>, 0.2),<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25], 6), <span class="s8">\root</span>, -24, <span class="s8">\degree</span>, <span class="s7">Pseq</span>([18, 17, 11, 9], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2}), <span class="s8">\cut</span>, 1500, <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}), <span class="s8">\amp</span>, 0.16)</p>
-<p class="p9"><br></p>
-<p class="p10">], <span class="s7">inf</span>).play;</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p1">'<b>Pseq</b>' in the above ex. can be any pattern object:</p>
-<p class="p10">(</p>
-<p class="p16">Prand<span class="s2">([</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25, 0.5, 0.25], 4), <span class="s8">\root</span>, -24,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 3, 5, 7, 9, 11, 5, 1], <span class="s7">inf</span>), <span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2}),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\cut</span>, <span class="s7">Pxrand</span>([1000, 500, 2000, 300], <span class="s7">inf</span>), <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\amp</span>, 0.2),<span class="Apple-converted-space"> </span></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25], 6), <span class="s8">\root</span>, -24, <span class="s8">\degree</span>, <span class="s7">Pseq</span>([18, 17, 11, 9], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2}), <span class="s8">\cut</span>, 1500, <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}), <span class="s8">\amp</span>, 0.16)</p>
-<p class="p9"><br></p>
-<p class="p10">], <span class="s7">inf</span>).play;</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Multichannel Expansion</b></p>
-<p class="p4"><br></p>
-<p class="p1">If we supply an array for any argument, the synth node will<span class="Apple-converted-space"> </span></p>
-<p class="p1">automatically replicate to handle the additional arguments.</p>
-<p class="p1">When we give the 'root' argument an array, we should hear a chord....</p>
-<p class="p4"><br></p>
-<p class="p10">(</p>
-<p class="p16">Pbind<span class="s2">(</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25, 0.5, 0.25], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\root</span>, [-24, -17],<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 3, 5, 7, 9, 11, 5, 1], <span class="s7">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2}), <span class="s8">\cut</span>, <span class="s7">Pxrand</span>([1000, 500, 2000, 300], <span class="s7">inf</span>), <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\amp</span>, 0.2).play;</p>
-<p class="p9"><br></p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p1">Using <a href="../../Libraries/JITLib/Patterns/Pdef.html"><span class="s7">Pdef</span></a> (provided by <a href="../../Libraries/JITLib/JITLib.html"><span class="s7">JITLib</span></a>) makes it easy to replace patterns on the fly:</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p17"><span class="s7">Pdef</span><span class="s2">(</span>\buckyball<span class="s2">).play;</span></p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10"><span class="s7">Pdef</span>(<span class="s8">\buckyball</span>, <span class="s7">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25, 0.5, 0.25], <span class="s7">inf</span>), <span class="s8">\root</span>, [-24, -17],<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 3, 5, 7, 9, 11, [5, 17], 1], <span class="s7">inf</span>), <span class="s8">\pan</span>, <span class="s7">Pfunc</span>({[1.0.rand2, 1.0.rand2]}),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\cut</span>, <span class="s7">Pxrand</span>([1000, 500, 2000, 300], <span class="s7">inf</span>), <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}), <span class="s8">\amp</span>, [0.15, 0.22]));</p>
-<p class="p10">)</p>
-<p class="p10">(</p>
-<p class="p10"><span class="s7">Pdef</span>(<span class="s8">\buckyball</span>, <span class="s7">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25, 0.5, 0.25], <span class="s7">inf</span>), <span class="s8">\root</span>, [-24, -17],<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0b, 3b, 5b, 7b, 9b, 11b, 5b, 0b], <span class="s7">inf</span>), <span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2}),<span class="Apple-converted-space">  </span><span class="s9">//notice the flats</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\cut</span>, <span class="s7">Pxrand</span>([1000, 500, 2000, 300], <span class="s7">inf</span>), <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}), <span class="s8">\amp</span>, 0.2));</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p14">//stop the Pdef</p>
-<p class="p17"><span class="s7">Pdef</span><span class="s2">(</span>\buckyball<span class="s2">).stop;</span></p>
-<p class="p9"><br></p>
-<p class="p14">//start the Pdef</p>
-<p class="p10"><span class="s7">Pdef</span>(<span class="s8">\buckyball</span>).resume;</p>
-<p class="p9"><br></p>
-<p class="p14">//removing the Pdef</p>
-<p class="p10"><span class="s7">Pdef</span>.remove(<span class="s8">\buckyball</span>);</p>
-<p class="p9"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Sending to effects.</b></p>
-<p class="p1">Assignment to effect processors can be achieved by setting the 'out' argument to the desired</p>
-<p class="p1">efx's input bus. The effect Synth must also be created. Synth.new is one way of doing this.</p>
-<p class="p4"><br></p>
-<p class="p10">(</p>
-<p class="p11">// efx synthdef- dig the timing on the delay and the pbind. :-P</p>
-<p class="p10"><span class="s4">SynthDef</span>(<span class="s5">\pbindefx</span>, { <span class="s4">arg</span> out, in, time1=0.25, time2=0.5;<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">var</span> audio, efx;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>audio = <span class="s4">In</span>.ar([20, 21], 2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>efx=<span class="s4">CombN</span>.ar(audio, 0.5, [time1, time2], 10, 1, audio);<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, efx);</p>
-<p class="p10">}).add;</p>
-<p class="p9"><br></p>
-<p class="p11">// create efx synth</p>
-<p class="p10">a = <span class="s4">Synth</span>.after(1, <span class="s5">\pbindefx</span>);</p>
-<p class="p9"><br></p>
-<p class="p11">// if you don't like the beats change to 0.4, 0.24</p>
-<p class="p11">// a.set(\time1, 0.4, \time2, 0.24);</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s4">SynthDef</span>(<span class="s5">\acid</span>, { <span class="s4">arg</span> out, freq = 1000, gate = 1, pan = 0, cut = 4000, rez = 0.8, amp = 1;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pan2</span>.ar(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">RLPF</span>.ar(</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pulse</span>.ar(freq, 0.05),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cut, rez),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.linen(0.02, 1, 0.3), gate, amp, doneAction:2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p10">}).add;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10"><span class="s7">Pbind</span>(<span class="s8">\instrument</span>, <span class="s8">\acid</span>, <span class="s8">\out</span>, 20, <span class="s8">\dur</span>, <span class="s7">Pseq</span>([0.25, 0.5, 0.25], <span class="s7">inf</span>), <span class="s8">\root</span>, [-24, -17],<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\degree</span>, <span class="s7">Pseq</span>([0, 3, 5, 7, 9, 11, 5, 1], <span class="s7">inf</span>), <span class="s8">\pan</span>, <span class="s7">Pfunc</span>({1.0.rand2}),<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s8">\cut</span>, <span class="s7">Pxrand</span>([1000, 500, 2000, 300], <span class="s7">inf</span>), <span class="s8">\rez</span>, <span class="s7">Pfunc</span>({0.7.rand +0.3}), <span class="s8">\amp</span>, 0.12).play;</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pbindf.html b/Help/Streams-Patterns-Events/Patterns/Pbindf.html
deleted file mode 100644
index f14783d..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pbindf.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #0000ff}
-span.s5 {text-decoration: underline}
-span.s6 {text-decoration: underline ; color: #0000ee}
-span.s7 {color: #0000bf}
-span.s8 {color: #007300}
-span.s9 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pbindf<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>bind several value patterns to one existing event stream by binding keys to values</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="Pattern.html"><b>Pattern</b></a></span><span class="s3"><b> : </b><a href="FilterPattern.html"><span class="s4"><b>FilterPattern</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Pbindf</b> adds several value streams into one existing event stream. Each value stream is assigned to one or more keys in the resulting event stream, overriding any values from the input stream.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p1">The patterns bound to keys are referred to as <i>value patterns</i> and the Pbindf itself is termed an <i>event pattern.</i></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2">see also <a href="Pbind.html"><span class="s5">Pbind</span></a></span><span class="s4">, <a href="Pchain.html"><span class="s6">Pchain</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>Creation / Class Methods</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>*new (pattern, key1, pattern1, key2, pattern2 ...)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>The arguments to Pbindf is the initial pattern followed by an alternating sequence of keys and patterns.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A pattern can also be bound to an array of keys.<span class="Apple-converted-space">  </span>In this case, the pattern must specify</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a sequence whose elements are arrays with at least as many elements as there are keys.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p8"><br></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">a = <span class="s7">Pbind</span>(<span class="s8">\x</span>, <span class="s7">Pseq</span>([1, 2, 3]), <span class="s8">\zzz</span>, 9000); <span class="s9">// input stream</span></p>
-<p class="p10">b = <span class="s7">Pbindf</span>(a, <span class="s8">\y</span>, <span class="s7">Prand</span>([100, 300, 200], <span class="s7">inf</span>), <span class="s8">\zzz</span>, 99);</p>
-<p class="p10">x = b.asStream;</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p11"><span class="s2">x.next(()); </span>// pass in an event ()</p>
-<p class="p10">x.next(());</p>
-<p class="p10">x.next(());</p>
-<p class="p10">x.next(()); <span class="s9">// end: nil</span></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p11">// sound examples</p>
-<p class="p9"><br></p>
-<p class="p11">// using the default synth def</p>
-<p class="p10">a = <span class="s7">Pbind</span>(<span class="s8">\dur</span>, 0.1);</p>
-<p class="p10"><span class="s7">Pbindf</span>(a, <span class="s8">\freq</span>, <span class="s7">Prand</span>([300, 500, 231.2, 399.2], <span class="s7">inf</span>)).play;</p>
-<p class="p10"><span class="s7">Pbindf</span>(a, <span class="s8">\freq</span>, <span class="s7">Prand</span>([1, 1.2, 2, 2.5, 3, 4], <span class="s7">inf</span>) * 200).play;</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p11">// a SynthDef</p>
-<p class="p12">SynthDef<span class="s2">(</span><span class="s8">\test</span><span class="s2">, { </span>| out, freq = 440, amp = 0.1, nharms = 10, pan = 0, gate = 1 |</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">var</span> audio = <span class="s7">Blip</span>.ar(freq, nharms, amp);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">var</span> env = <span class="s7">Linen</span>.kr(gate, doneAction: 2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s7">OffsetOut</span>.ar(out, <span class="s7">Pan2</span>.ar(audio, pan, env) );</p>
-<p class="p10">}).add;</p>
-<p class="p10">);</p>
-<p class="p9"><br></p>
-<p class="p13"><span class="s2">a = </span><span class="s7">Pbind</span><span class="s2">(</span>\instrument<span class="s2">, </span>\test<span class="s2">, </span>\dur<span class="s2">, 0.1);</span></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s7">Pbindf</span>(a, <span class="s8">\freq</span>, <span class="s7">Prand</span>([1, 1.2, 2, 2.5, 3, 4], <span class="s7">inf</span>) * 200).play;</p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pbinop.html b/Help/Streams-Patterns-Events/Patterns/Pbinop.html
deleted file mode 100644
index 9b3b9a3..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pbinop.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000ff}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pbinop<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>binary operator pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pbinop(operator, a, b)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that applies the binary operator to the stream values of the receiver</p>
-<p class="p1">Usually, this is the result of applying a binary operator (i.e. a method with one argument) to a pattern.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>operator </b>- operator to be applied</p>
-<p class="p1"><b>a</b> - a pattern (or compatible pattern input)</p>
-<p class="p1"><b>b</b> -<span class="Apple-converted-space">  </span>a pattern (or compatible pattern input)</p>
-<p class="p2"><br></p>
-<p class="p1">examples of binary operators are: +, -, /, *, min, max, hypot ...</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also: </b><a href="Pnaryop.html"><span class="s3">Pnaryop</span></a>, <a href="Punop.html"><span class="s4">Punop</span></a>, <a href="../../Core/BinaryOpFunction.html"><span class="s3">BinaryOpFunction</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">var</span> a;</p>
-<p class="p6">a = <span class="s5">Pbinop</span>(<span class="s6">\hypot</span>, <span class="s5">Pseries</span>(0, 1, 12), <span class="s5">Pseries</span>(3, -1, 12));</p>
-<p class="p6">a.asStream.all;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// this is the same as:</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">var</span> a;</p>
-<p class="p6">a = <span class="s5">Pseries</span>(0, 1, 12).hypot(<span class="s5">Pseries</span>(3, -1, 12));</p>
-<p class="p6">a.asStream.all;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// also written as:</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">var</span> a;</p>
-<p class="p6">a = <span class="s5">Pseries</span>(0, 1, 12) hypot: <span class="s5">Pseries</span>(3, -1, 12);</p>
-<p class="p6">a.asStream.all;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// some common cases:</p>
-<p class="p6"><span class="s5">Pseq</span>([1, 2, 3]) + 2;</p>
-<p class="p6"><span class="s5">Pseq</span>([1, 2, 3]) / <span class="s5">Pseq</span>([3, 4, 5, 6]);</p>
-<p class="p6">max(<span class="s5">Pwhite</span>(-10, 10, <span class="s5">inf</span>), <span class="s5">Pseq</span>([0, 2, 3, 4]));</p>
-<p class="p4"><br></p>
-<p class="p5">// sound example</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s5">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out=0, freq=440, sustain=0.05, amp=0.1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0.01, sustain, 0.2, amp), doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">var</span> a;</p>
-<p class="p6">a = <span class="s5">Pn</span>(<span class="s5">Pbinop</span>(<span class="s6">\hypot</span>, <span class="s5">Pseries</span>(0, 1, 34), <span class="s5">Pseries</span>(3, -1, 34)), <span class="s5">inf</span>).asStream;</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.do { <span class="s5">|val|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a * 200 + 300].postln);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.fork;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p8">Pbind<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.01,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\help_sinegrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\note</span>, <span class="s5">Pn</span>(<span class="s5">Pbinop</span>(<span class="s6">\hypot</span>, <span class="s5">Pwhite</span>(0, 12, 13), <span class="s5">Pseries</span>(3, -1, 12)))</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// these are the same as:</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">var</span> a;</p>
-<p class="p6">a = <span class="s5">Pn</span>(<span class="s5">Pseries</span>(0, 1, 34) hypot: <span class="s5">Pseries</span>(3, -1, 34), <span class="s5">inf</span>).asStream;</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.do { <span class="s5">|val|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a * 200 + 300].postln);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.fork;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p8">Pbind<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.01,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\help_sinegrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">\note</span>, <span class="s5">Pn</span>(<span class="s5">Pwhite</span>(0, 12, 13) hypot: <span class="s5">Pseries</span>(3, -1, 12))</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pbrown.html b/Help/Streams-Patterns-Events/Patterns/Pbrown.html
deleted file mode 100644
index 1ad1a62..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pbrown.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #90241c}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #486b1c}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #002cb2}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #002cb2}
-span.s5 {color: #606060}
-span.s6 {color: #486b1c}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pbrown<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>brownian motion pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pbrown(lo, hi, step, length)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that behaves like a brownian motion.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>lo, hi</b> - lower and upper boundary of values<span class="Apple-converted-space">  </span>(default: 0.0 and 1.0)</p>
-<p class="p1"><b>step</b> - maximum change per step - the distribution is xrand2.<span class="Apple-converted-space">  </span>(default: 0.125)</p>
-<p class="p1"><b>length</b> - number of values produced (default: inf)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="../../UGens/Noise/BrownNoise.html"><span class="s3">BrownNoise</span></a>, <a href="Pgbrown.html"><span class="s3">Pgbrown</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Pbrown</span>(0.0, 1.0, 0.1, <span class="s4">inf</span>);</p>
-<p class="p6">c = a.asStream.nextN(500);</p>
-<p class="p6">w = <span class="s4">Window</span>.new(<span class="s5">"Pbrown"</span>, <span class="s4">Rect</span>(10, 10, 540, 800));</p>
-<p class="p5">// plot the values</p>
-<p class="p6">c.plot(bounds: <span class="s4">Rect</span>(10, 10, 520, 380), discrete: <span class="s4">true</span>, parent: w);</p>
-<p class="p5">// a histogram of the values</p>
-<p class="p6">c.histo(500).plot(bounds: <span class="s4">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Pbrown</span>(0.0, 1.0, 0.2, <span class="s4">inf</span>);</p>
-<p class="p6">a.asStream.nextN(1000).plot;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// sound example</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Pbrown</span>(0.0, 1.0, 0.1, <span class="s4">inf</span>).asStream;</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.fork;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// parallel browninan motions</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a, x, f;</p>
-<p class="p6">a = <span class="s4">Pbrown</span>(0.0, 1.0, 0.1, <span class="s4">inf</span>);</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">f = { </span>|pattern, dt=0.02, min=300, max=900|</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> x = pattern.asStream;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>.grain(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, x.next.linexp(0, 1, min, max), <span class="s6">\sustain</span>, dt]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dt.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.fork;</p>
-<p class="p6">}.flop;</p>
-<p class="p4"><br></p>
-<p class="p5">// 3 parallel motions</p>
-<p class="p6">f.(a, [0.02, 0.08, 0.16]);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pbus.html b/Help/Streams-Patterns-Events/Patterns/Pbus.html
deleted file mode 100644
index aa9901c..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pbus.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pbus</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>isolate a pattern by restricting it to a bus</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pbus(pattern, dur, fadeTime)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Starts a new group and plays the pattern in this group, on a private bus.<span class="Apple-converted-space"> </span></p>
-<p class="p1">The group and the bus is released when the stream has ended.</p>
-<p class="p2"><br></p>
-<p class="p1">This is useful in order to isolate a Pfx.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>dur</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delay to allow inner patterns to decay.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>fadeTime</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fading out the inner pattern after dur over this time</p>
-<p class="p1"><b>numChannels</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of channels of the bus (should match the synthdef) <b>default: 2</b></p>
-<p class="p1"><b>rate</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bus rate (default: 'audio')</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Example:</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">SynthDef</span>(<span class="s3">\echo</span>, { <span class="s2">arg</span> out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">CombL</span>.ar(in * env, maxdtime, dtime, decay, 1, in));</p>
-<p class="p4">}, [<span class="s3">\ir</span>, <span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">SynthDef</span>(<span class="s3">\distort</span>, { <span class="s2">arg</span> out=0, pregain=40, amp=0.2, gate=1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, (<span class="s2">In</span>.ar(out, 2) * pregain).distort * amp);</p>
-<p class="p4">}, [<span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">SynthDef</span>(<span class="s3">\wah</span>, { <span class="s2">arg</span> out=0, gate=1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.4, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">RLPF</span>.ar(in, <span class="s2">LinExp</span>.kr(<span class="s2">LFNoise1</span>.kr(0.3), -1, 1, 200, 8000), 0.1).softclip * 0.8);</p>
-<p class="p4">}, [<span class="s3">\ir</span>, 0]).add;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> p, q, r, o;</p>
-<p class="p4">p = <span class="s2">Pbind</span>(<span class="s3">\degree</span>, <span class="s2">Prand</span>((0..7),12), <span class="s3">\dur</span>, 0.3, <span class="s3">\legato</span>, 0.2);</p>
-<p class="p3"><br></p>
-<p class="p4">q = <span class="s2">Pfx</span>(p, <span class="s3">\echo</span>, <span class="s3">\dtime</span>, 0.2, <span class="s3">\decay</span>, 3);</p>
-<p class="p3"><br></p>
-<p class="p4">r = <span class="s2">Pfx</span>(q, <span class="s3">\distort</span>, <span class="s3">\pregain</span>, 20, <span class="s3">\amp</span>, 0.25);</p>
-<p class="p3"><br></p>
-<p class="p4">o = <span class="s2">Pfx</span>(r, <span class="s3">\wah</span>);</p>
-<p class="p3"><br></p>
-<p class="p5">Ppar<span class="s4">(</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span>[p, q, r, o].collect(</span><span class="s2">Pbus</span><span class="s4">(</span><span class="s2">_</span><span class="s4">)); </span>// play each in a different bus.</p>
-<p class="p4">).play;</p>
-<p class="p4">)<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// compare to playing them together on one bus.</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> p, q, r, o;</p>
-<p class="p4">p = <span class="s2">Pbind</span>(<span class="s3">\degree</span>, <span class="s2">Prand</span>((0..7),12), <span class="s3">\dur</span>, 0.3, <span class="s3">\legato</span>, 0.2);</p>
-<p class="p3"><br></p>
-<p class="p4">q = <span class="s2">Pfx</span>(p, <span class="s3">\echo</span>, <span class="s3">\dtime</span>, 0.2, <span class="s3">\decay</span>, 3);</p>
-<p class="p3"><br></p>
-<p class="p4">r = <span class="s2">Pfx</span>(q, <span class="s3">\distort</span>, <span class="s3">\pregain</span>, 20, <span class="s3">\amp</span>, 0.25);</p>
-<p class="p3"><br></p>
-<p class="p4">o = <span class="s2">Pfx</span>(r, <span class="s3">\wah</span>);</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">Ppar</span>([p, q, r, o]).play;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pcauchy.html b/Help/Streams-Patterns-Events/Patterns/Pcauchy.html
deleted file mode 100644
index 0fa8925..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pcauchy.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pcauchy<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values that follow a Cauchy Distribution</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pcauchy(mean, spread, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>mean<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The mean of the distribution (defaults to 0.0)</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>spread<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The horizontal dispersion of the random values. The distribution is unbounded.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Pcauchy</span>(0.0, 1.0, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Pcauchy"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Pcauchy</span>(0.0, 10.0, inf);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Pbetarand"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pcauchy</span>(0.0, 1.0,<span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pchain.html b/Help/Streams-Patterns-Events/Patterns/Pchain.html
deleted file mode 100644
index 7184b27..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pchain.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #000000}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pchain <span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b></span><b>pass values from stream to<span class="Apple-converted-space">  </span>stream</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: <a href="Pattern.html"><span class="s2">Pattern</span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Pchain(pattern1, pattern2, ... patternN) </b><i><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pattern1 <- pattern2 <- ...patternN</i></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>pattern1, pattern2..</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the patterns to be chained up.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1">Values produceed by the stream of <b>pattern2</b> are used as inval to the stream of <b>pattern1</b>.</p>
-<p class="p1">Therefore pattern1 overrides (or filters) the output of pattern2, and so forth.<span class="Apple-converted-space"> </span></p>
-<p class="p1">This is an equivalent to the composite pattern:<span class="Apple-converted-space">  </span><i>pattern1 <> pattern2 <> ... patternN</i></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span></span><b><> pattern<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>add another pattern to the chain</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// examples</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">Pchain<span class="s4"> (</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\detune</span>, <span class="s5">Pseq</span>([-30, 0, 40], <span class="s5">inf</span>), <span class="s6">\dur</span>, <span class="s5">Prand</span>([0.2, 0.4], <span class="s5">inf</span>)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3], <span class="s5">inf</span>), <span class="s6">\dur</span>, 1)</p>
-<p class="p5">).trace.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// also events can be used directly:</p>
-<p class="p5">(</p>
-<p class="p6">Pchain<span class="s4"> (</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3], <span class="s5">inf</span>)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(detune: [0, 4])</p>
-<p class="p5">).trace.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// compose some more complicated patterns:</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s5">var</span> a, b;</p>
-<p class="p5">a = <span class="s5">Prand</span>([<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\degree</span>, <span class="s5">Pseq</span>([0, 1, 3, 5, 6])),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\dur</span>, <span class="s5">Pshuf</span>([0.4, 0.3, 0.3]), <span class="s6">\degree</span>, <span class="s5">Pseq</span>([3, -1]))<span class="Apple-converted-space"> </span></p>
-<p class="p5">], <span class="s5">inf</span>);</p>
-<p class="p5">b = <span class="s5">Prand</span>([</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\ctranspose</span>, <span class="s5">Pn</span>(1, 4)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\mtranspose</span>, <span class="s5">Pn</span>(2, 7))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>], <span class="s5">inf</span>);</p>
-<p class="p5">c = <span class="s5">Prand</span>([</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\detune</span>, <span class="s5">Pfuncn</span>( { [0, 10.0].rand }, 5), <span class="s6">\legato</span>, 0.2, <span class="s6">\dur</span>, 0.2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s6">\legato</span>, <span class="s5">Pseq</span>([0.2, 0.5, 1.5], 2), <span class="s6">\dur</span>, 0.3)</p>
-<p class="p5">], <span class="s5">inf</span>);</p>
-<p class="p5"><span class="s5">Pchain</span>(a, b, c).trace.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>pattern composition: <span class="Apple-tab-span">	</span><i>pattern <> pattern <> pattern<span class="Apple-converted-space"> </span></i></b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// implicitly, the composition operator <> returns a Pchain when applied to a pattern.</p>
-<p class="p4">// so that a <> b creates a Pchain (a, b).</p>
-<p class="p4">// as seen above, in Pchain(a, b), a specifies (and overrides) b: b is the input to a.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p4">// the above example is equivalent to:</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s5">(Pbind</span>(<span class="s6">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3], <span class="s5">inf</span>)) <> (detune: [0, 4])).trace.play;</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">a = <span class="s5">Pbind</span>(<span class="s6">\degree</span>, <span class="s5">Pseq</span>([1, 2, 3], <span class="s5">inf</span>), <span class="s6">\dur</span>, <span class="s5">Prand</span>([0.2, 0.4], <span class="s5">inf</span>));</p>
-<p class="p5">b = <span class="s5">Pbind</span>(<span class="s6">\detune</span>, <span class="s5">Pseq</span>([-30, 0, [0, 40]], <span class="s5">inf</span>), <span class="s6">\dur</span>, 0.1);</p>
-<p class="p5">c = b <> a;</p>
-<p class="p4"><span class="s4">c.play; </span>// see that the \dur key of a is overridden by b</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// also value streams can be composed</p>
-<p class="p5">(</p>
-<p class="p5">a = <span class="s5">Pfunc</span> { <span class="s5">|x|</span> x + 1.33 };</p>
-<p class="p5">b = <span class="s5">Pfunc</span> { <span class="s5">|x|</span> x * 3 };</p>
-<p class="p5">c = <span class="s5">Pseries</span>(1, 2, <span class="s5">inf</span>);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// post some values from the composite streams:</p>
-<p class="p2"><br></p>
-<p class="p5">t = (a <> b).asStream;</p>
-<p class="p5">10.do { t.value(10).postln };</p>
-<p class="p2"><br></p>
-<p class="p5">t = (a <> b <> c).asStream;</p>
-<p class="p5">10.do { t.value(10).postln };</p>
-<p class="p2"><br></p>
-<p class="p5">t = (b <> c <> a).asStream;</p>
-<p class="p5">10.do { t.value(10).postln };</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pclutch.html b/Help/Streams-Patterns-Events/Patterns/Pclutch.html
deleted file mode 100644
index 26428ae..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pclutch.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pclutch</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sample and hold a pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: FilterPattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pclutch(pattern, connected)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>pattern</b> - any pattern</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>connected - </b>a pattern that returns either a series of [<a href="../../Core/Boolean.html"><span class="s2">Boolean</span></a><span class="s2">s</span>] or the equivalent 0 and 1.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if true (or 1), the pattern plays as usual, if false (or 0), the previous value is kept.<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><b>see also</b>: <a href="../StreamClutch.html"><span class="s4">StreamClutch</span></a>, <a href="Pstutter.html"><span class="s4">Pstutter</span></a>, <a href="../../UGens/Synth control/Latch.html"><span class="s4">Latch</span></a></span></p>
-<p class="p5"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">// example:</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s2">Pclutch</span>(<span class="s2">Pseq</span>([1, 2, 3, 4, 5], 3), <span class="s2">Pseq</span>([0, 0, 1, 0, 0, 0, 1, 1])).asStream.nextN(10);</p>
-<p class="p3"><br></p>
-<p class="p6">// sound example</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> a;</p>
-<p class="p9"><span class="s3">a = </span>Pclutch<span class="s3">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pseq</span>([1, 2, 3, 4, 5], <span class="s2">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pseq</span>([0, 0, 1, 0, <span class="s2">Pn</span>(0, {30.rand}), 0, 1, 1], <span class="s2">inf</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>).asStream;</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next * 200 + 200]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">}.fork;</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pcollect.html b/Help/Streams-Patterns-Events/Patterns/Pcollect.html
deleted file mode 100644
index 1451246..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pcollect.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0025b2}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pcollect<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><b>apply a function to a pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FuncFilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pcollect(func, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">modifies each value by passing it to the function</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pcollect</span>({ arg item; item * 3 }, Pseq(#[1, 2, 3],inf));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">the message collect returns a Pcollect when passed to a pattern</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s3">var</span> a, b;</p>
-<p class="p4">a =<span class="Apple-converted-space">  </span><span class="s3">Pseq</span>(#[1, 2, 3],<span class="s3">inf</span>).collect({ <span class="s3">arg</span> item; item * 3 });</p>
-<p class="p4">a.postln;</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">9.do({ x.next.postln; });</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pconst.html b/Help/Streams-Patterns-Events/Patterns/Pconst.html
deleted file mode 100644
index 176d2d5..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pconst.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pconst<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>constrain the sum of a value pattern<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pconst(sum, pattern, tolerance)</b></p>
-<p class="p2"><br></p>
-<p class="p1">similar to <b>Pfindur</b>, but works with the value directly.</p>
-<p class="p2"><br></p>
-<p class="p1">embeds elements of the <b>pattern</b> into the stream until the sum comes close enough to <b>sum</b>. At that point, the difference between the specified sum and the actual running sum is embedded.</p>
-<p class="p2"><br></p>
-<p class="p1">Be careful if this is used, directly or indirectly, for a note-length parameter! The difference may be very small and this could result in zombie nodes, due to a bug in EnvGen for very short sustain times.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, x;</p>
-<p class="p3">a = <span class="s2">Pconst</span>(5, <span class="s2">Prand</span>([1, 2, 0.5, 0.1], <span class="s2">inf</span>));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.default).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Pconst used as a sequence of pitches</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p7">Pn<span class="s3">(</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s2">Pconst</span>(1, <span class="s2">Prand</span>([1, 0.02, 0.2], <span class="s2">inf</span>)),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s2">Pseries</span>(0, 1, <span class="s2">inf</span>),</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\octave<span class="s3">, 6</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PdegreeToKey.html b/Help/Streams-Patterns-Events/Patterns/PdegreeToKey.html
deleted file mode 100644
index 144523d..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PdegreeToKey.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #000000}
-span.s2 {color: #326f17}
-span.s3 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PdegreeToKey</b></p>
-<p class="p2"><br></p>
-<p class="p3">superclass: FilterPattern</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>PdegreeToKey(keypattern,<span class="Apple-converted-space">  </span>scale,<span class="Apple-converted-space">  </span>stepsPerOctave)</b></p>
-<p class="p4"><br></p>
-<p class="p3">returns a series of notes derived from an index into a scale.</p>
-<p class="p3">if the scale is a pattern, it streams the scales accordingly</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>keypattern</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>integer index into the scale</p>
-<p class="p3"><b>scale</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an array</p>
-<p class="p3"><b>stepsPerOctave</b><span class="Apple-tab-span">	</span>the number of steps per octave in the scale. The default is 12.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">Pbind<span class="s1">(</span><span class="s2">\note</span><span class="s1">, </span>PdegreeToKey<span class="s1">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([1, 2, 3, 2, 5, 4, 3, 4, 2, 1], 2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[0, 2, 3, 6, 7, 9],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>12</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> scales;</p>
-<p class="p5">scales = #[[0, 2, 3, 6, 7, 9], [0, 1, 5, 6, 7, 9, 11], [0, 2, 3]];</p>
-<p class="p6">Pbind<span class="s1">(</span><span class="s2">\note</span><span class="s1">, </span>PdegreeToKey<span class="s1">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([1, 2, 3, 2, 5, 4, 3, 4, 2, 1], 4),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pstutter</span>(3, <span class="s3">Prand</span>(scales, <span class="s3">inf</span>)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>12</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pdfsm.html b/Help/Streams-Patterns-Events/Patterns/Pdfsm.html
deleted file mode 100644
index 2189470..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pdfsm.html
+++ /dev/null
@@ -1,207 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ad140d}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 11.0px Helvetica}
-span.s3 {color: #001bb9}
-span.s4 {color: #000000}
-span.s5 {color: #2c7014}
-span.s6 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pdfsm<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>deterministic finite state machine</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b>ListPattern<span class="s2"><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Pdfsm is a deterministic finite state machine with signal input (written by by ccos).</p>
-<p class="p2"><br></p>
-<p class="p1"><b>list <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a list consisting of the stream which gives input signals to determine state<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>transitions, and then dictionary entries, one for each state, mapping the destinattion</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>state and yield streams to those input signals.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>startState</b><span class="Apple-tab-span">	</span>an integer index for the state to start with. defaults to 0.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>repeats</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an integer giving the number of times the pattern should cycle.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a cycle ends when the <b>signal stream</b> ends or <span class="s3">nil</span> is given for the destination<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>state to a signal value, see below. defaults to 1</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>list structure:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>[</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>signal stream <span class="Apple-tab-span">	</span></b>can be a stream of anything<b> </b>which can serve as a key for</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an associative collection. integers, symbols, etc...</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>asStream is called on this for each repeat.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>states <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>states should be an instance of <a href="../../Collections/IdentityDictionary.html"><span class="s3">IdentityDictionary</span></a>, <a href="../../Collections/Event.html"><span class="s3">Event</span></a></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or some other associative collection</p>
-<p class="p1"><span class="Apple-tab-span">	</span>]</p>
-<p class="p2"><br></p>
-<p class="p1"><b>list syntax:</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>[<span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>signal stream,</b><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>( </span>// state 0,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>signal value</b><span class="Apple-converted-space">  </span>:<span class="Apple-converted-space">  </span>[<b>destination state, return stream or pattern</b>],</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>signal value</b><span class="Apple-converted-space">  </span>:<span class="Apple-converted-space">  </span>[<b>destination state, return stream or pattern</b>]</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>... </span>// state 1 ... N</p>
-<p class="p1"><span class="Apple-tab-span">	</span>]</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">Any number of states can be given, and are indexed by the order in which they are given.</p>
-<p class="p2"><br></p>
-<p class="p1">If the fsm is in state x and it receives a <b>signal value</b> y it looks up y in the state dictionary<span class="Apple-converted-space"> </span></p>
-<p class="p1">supplied for x, if there is no y entry, it looks for a <span class="s5">\default</span> entry and uses that.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">The next state is then set to <b>destination state</b>, and the stream yielded is given by <b>return stream or pattern.</b></p>
-<p class="p1">that is unless the <b>destination state</b> is given as <span class="s3">nil</span>, or if a <b>destination state</b> is given for which you have<b> </b>not<span class="Apple-converted-space"> </span></p>
-<p class="p1">supplied a dictionary - in both cases the current cycle ends and any remaining repeats are executed.</p>
-<p class="p1">If there is no <b>signal value</b> given for a particular signal, and no <span class="s5">\default</span> is supplied then one will get a runtime error.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>p = <span class="s3">Pdfsm</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Pseq</span><span class="s4">( [</span><span class="s5">\foo</span><span class="s4">,</span><span class="s5">\bar</span><span class="s4">], 2 ), </span>// foobar signals<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>( </span>// state 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\foo</span> : [ 1, <span class="s3">Pseq</span>([ 0, 1 ], 2 ) ]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>( </span>// state 1</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\bar</span> : [ 0, 3 ]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space">   </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2</p>
-<p class="p5"><span class="Apple-tab-span">	</span>).asStream;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>11.do({ p.next.postln });</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s4">(</span>\help_Pdfsm1<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar([freq, freq + 0.1.rand2], 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> p;</p>
-<p class="p5">p = <span class="s3">Pdfsm</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Prand</span>([0,1,2],<span class="s3">inf</span>), <span class="Apple-tab-span">	</span><span class="s6">// signalStream</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>IdentityDictionary<span class="s4">[ <span class="Apple-tab-span">	</span></span><span class="s6">// state 0</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 -> [ 2, <span class="s3">Pseq</span>([67,68,69], 2) ],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 -> [ 0, 66 ],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 -> [ 1, 65 ]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>IdentityDictionary<span class="s4">[ <span class="Apple-tab-span">	</span></span><span class="s6">// state 1</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 -> [ 1, <span class="s3">Pseq</span>([69,68,67],2) ],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\default</span> -> [ 0, 70 ]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>IdentityDictionary<span class="s4">[</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 -> [ 0, 71 ],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 -> [ 0, 72 ],</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 -> [ </span><span class="s3">nil</span><span class="s4"> ]<span class="Apple-converted-space">  </span></span>// signalStream is infinitely long,</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// so the fsm only ends because of this nil</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// 2 -> [nil, nil] is also fine</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span>],</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span>1, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// startState</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span>1 <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// repeats<span class="Apple-converted-space"> </span></p>
-<p class="p5">).asStream;</p>
-<p class="p4"><br></p>
-<p class="p8">Routine<span class="s4">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> freq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>while({ (freq = p.next.postln).notNil },{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s5">\help_Pdfsm1</span>, [ <span class="s5">\freq</span>, freq.midicps ]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s4">(</span>\help_Pdfsm2<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> freq, gate=1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> n=8, env, osc;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">Linen</span>.kr( gate, 0.01, 1, 0.03, 2 );</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>osc = {<span class="s3">Mix</span>.fill( n, { <span class="s3">arg</span> i;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">FSinOsc</span>.ar(freq + <span class="s3">Rand</span>(-2.0,2.0), <span class="s3">Rand</span>(0, 0.05pi)) ring4:</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">FSinOsc</span>.ar(freq * (i+1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})}.dup * <span class="s3">FSinOsc</span>.kr(<span class="s3">Rand</span>(1.5,4.5),{<span class="s3">Rand</span>(-0.1pi,0.1pi)}.dup,0.6,env*0.4);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, env * osc / (n*4)<span class="Apple-converted-space">  </span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> n=3, base, penult;</p>
-<p class="p4"><br></p>
-<p class="p5">base = [3,4,4,0];</p>
-<p class="p4"><br></p>
-<p class="p5">for( 1, n, { <span class="s3">arg</span> i;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>penult = <span class="s3">Pbind</span>( <span class="s5">\degree</span>, <span class="s3">Pshuf</span>(base - (i*5), 2), <span class="s5">\dur</span>, <span class="s3">Pseq</span>([0.2],2) );</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>Pset<span class="s4">(</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_Pdfsm2<span class="s4">,</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pdfsm<span class="s4">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Pseq</span><span class="s4">([<span class="Apple-tab-span">	</span></span>// signalStream</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pn</span>(1,22 + i),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pn</span>(0,4),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pn</span>(1,8),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pn</span>(0,3),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Prand</span>([0,1],8),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pn</span>(1,8)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], 3 ),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pn</span>(2,2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], 1 ),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// state 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 : [ 0, <span class="s3">Pbind</span>( <span class="s5">\degree</span>, <span class="s3">Pseq</span>(base - i, 1), <span class="s5">\dur</span>, <span class="s3">Pxrand</span>([0.2,0.3],4) ) ],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 : [ 1, <span class="s3">Pbind</span>(<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s3">Pseq</span>(base.reverse - (i*2), 2),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Pseq</span>([0.2,0.21],1)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 :<span class="Apple-tab-span">	</span>[ 2, penult ]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// state 1</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 : [ 0, <span class="s3">Pbind</span>( <span class="s5">\degree</span>, <span class="s3">Pshuf</span>(base * i.neg, 8), <span class="s5">\dur</span>, <span class="s3">Pseq</span>([0.08],8) ) ],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 : [ 0, <span class="s3">Pbind</span>( <span class="s5">\degree</span>, <span class="s3">Pseq</span>(base - (i*3),3+i), <span class="s5">\dur</span>, <span class="s3">Pseq</span>([0.11],3+i) ) ],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 : [ 2, penult ]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// state 2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\default</span> : [ 2, <span class="s3">Pbind</span>(<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s3">Prand</span>(base - (i*7), 5),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Prand</span>([0.6,0.8],5)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i % 2 <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// startState</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p5">})</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PdurStutter.html b/Help/Streams-Patterns-Events/Patterns/PdurStutter.html
deleted file mode 100644
index 3ef36eb..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PdurStutter.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PdurStutter<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>partition a value into n equal subdivisions</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PdurStutter(stutterPattern, floatPattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A filter pattern designed for a stream of float durations.</p>
-<p class="p2"><br></p>
-<p class="p1">subdivides each duration by each stutter and yields that value stutter times.</p>
-<p class="p1">a stutter of 0 will skip the duration value, a stutter of 1 yields the duration value</p>
-<p class="p1">unaffected.</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5"><span class="s2">a = </span>PdurStutter<span class="s2">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Pseq(#[1,1,1,1,1,2,2,2,2,2,0,1,3,4,0],inf),</p>
-<p class="p4"><span class="Apple-tab-span">	</span>Pseq(#[0.5, 1, 2, 0.25,0.25],inf)</p>
-<p class="p4">);</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">100.do({ x.next.postln; });</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4">)</p>
-<p class="p4">(</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s2">a = </span>PdurStutter<span class="s2">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Pseq(#[1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4],inf),</p>
-<p class="p4"><span class="Apple-tab-span">	</span>Pseq(#[0.5, 1, 2, 0.25,0.25],inf)</p>
-<p class="p4">);</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p6"><br></p>
-<p class="p5">Routine<span class="s2">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Synth.grain</span><span class="s2">(</span>\help_sinegrain<span class="s2">, [</span><span class="s4">\freq</span><span class="s2">, 440]);</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.next.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}).play(TempoClock.default);</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s2">a = </span>PdurStutter<span class="s2">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>(#[1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,0,4,4],<span class="s3">inf</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>(#[0.5, 1, 2, 0.25,0.25],<span class="s3">inf</span>)</p>
-<p class="p4">);</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p5">Routine<span class="s2">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>.grain(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, 440]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.next.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}).play(<span class="s3">TempoClock</span>.default);</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p1">Frequencies like being divided too.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p5"><span class="s2">a = </span>PdurStutter<span class="s2">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>(#[1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,0,4,4],<span class="s3">inf</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>((80 + [ 0, 2, 3, 5, 7, 9, 10 ]).midicps ,<span class="s3">inf</span>)</p>
-<p class="p4">);</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p5">Routine<span class="s2">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>.grain(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, x.next.postln]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}).play(<span class="s3">TempoClock</span>.default);</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">-felix</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Penvir.html b/Help/Streams-Patterns-Events/Patterns/Penvir.html
deleted file mode 100644
index f54fd1a..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Penvir.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Penvir <span class="Apple-converted-space">    <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b></span><b>use an environment when embedding the pattern in a stream</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Penvir(envir, pattern, independent)</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>envir</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an environment with objects to embed</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>pattern</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pattern or stream, ususally a Pfunc, Prout.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>independent</b><span class="Apple-tab-span">	</span>if true (default) streams can write to the environment without influencing other</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>streams created from this pattern.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if false, the streams write to a common namespace.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// examples:</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = (a:8);</p>
-<p class="p6"><span class="s2">y = </span>Penvir<span class="s2">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>x,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Pfunc</span> { ~a * 2 }</p>
-<p class="p5">);</p>
-<p class="p2"><br></p>
-<p class="p5">t = y.asStream;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">t.next;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = (a:8);</p>
-<p class="p6"><span class="s2">y = </span>Penvir<span class="s2">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>x,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Pfunc</span> { ~a = ~a * 2 }</p>
-<p class="p5">);</p>
-<p class="p2"><br></p>
-<p class="p5">t = y.asStream;</p>
-<p class="p5">z = y.asStream;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">t.next;</p>
-<p class="p5">t.next;</p>
-<p class="p4"><span class="s2">x.postln; </span>// x stays unchanged</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pexprand.html b/Help/Streams-Patterns-Events/Patterns/Pexprand.html
deleted file mode 100644
index 9f2ab8b..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pexprand.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pexprand<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values that follow a Exponential Distribution</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pexprand(lo, hi, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo, hi<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lower and upper boundary of values (default: 0.0001 and 1.0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lo and hi should both be positive or negative (their range should not cross 0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pexprand</span>.new(0.0001, 1, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pexprand</span>(0.0001, 1.0,<span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfin.html b/Help/Streams-Patterns-Events/Patterns/Pfin.html
deleted file mode 100644
index cd0e667..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfin.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfin</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>limit number of events embedded in a stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pfin(count, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">embeds <b>count</b> elements of the pattern into the stream</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Note:</b> Pfin is intended for event patterns. After the count elements are embedded, the stream is called with a nil input value so that Pmono, Pfx and others can release resources. Ordinary value patterns should not be called in this case, so for value patterns, you should use <a href="Pfinval.html"><span class="s2">Pfinval</span></a> instead.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pfin</span>(5, <span class="s2">Pseq</span>(#[1, 2, 3],<span class="s2">inf</span>));</p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">9.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Pfin used as a sequence of pitches</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> c, b;</p>
-<p class="p3">c = <span class="s2">Pn</span>(<span class="s2">Pfin</span>({ rrand(3, 5)}, <span class="s2">Pseq</span>([1, 2, 3, 4, 5, 6],<span class="s2">inf</span>)*4+65),<span class="s2">inf</span>);</p>
-<p class="p3">b = c.asStream;</p>
-<p class="p7">Routine<span class="s3">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, b.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.12.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfindur.html b/Help/Streams-Patterns-Events/Patterns/Pfindur.html
deleted file mode 100644
index 1f31208..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfindur.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfindur</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>limit total duration of events embedded in a stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pfindur(dur, pattern, tolerance)</b></p>
-<p class="p2"><br></p>
-<p class="p1">embeds elements of the <b>pattern</b> into the stream until the duration comes close enough to <b>dur</b>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pfindur</span>(5, <span class="s2">Pbind</span>(<span class="s3">\dur</span>, <span class="s2">Prand</span>([1, 2, 0.5, 0.1], <span class="s2">inf</span>)));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.default).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Pfindur used as a sequence of pitches</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> c;</p>
-<p class="p3">c = <span class="s2">Pbind</span>(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Prand</span>([1, 0.02, 0.2], <span class="s2">inf</span>),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_sinegrain<span class="s4">,</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseries</span>(0, 1, <span class="s2">inf</span>),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>\octave<span class="s4">, 6</span></p>
-<p class="p3">);</p>
-<p class="p6"><br></p>
-<p class="p7">Pn<span class="s4">(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Pfindur</span>(1, c)</p>
-<p class="p3">).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfinval.html b/Help/Streams-Patterns-Events/Patterns/Pfinval.html
deleted file mode 100644
index 58cc34f..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfinval.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfinval</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>limit number of items embedded in a stream</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>superclass: Pfin</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Pfinval(count, pattern)</b></p>
-<p class="p3"><br></p>
-<p class="p1">embeds count elements of the pattern into the stream</p>
-<p class="p3"><br></p>
-<p class="p1">Note: Pfinval is not appropriate for wrapping Pmono, Pfx etc. For these types of event patterns, you should use <a href="Pfin.html"><span class="s2">Pfin</span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> a, b;</p>
-<p class="p4">a = <span class="s2">Pfinval</span>(5, <span class="s2">Pseq</span>(#[1, 2, 3],<span class="s2">inf</span>));</p>
-<p class="p4">b = a.asStream;</p>
-<p class="p4">9.do({ b.next.postln; });</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p5"><br></p>
-<p class="p1">Pfinval used as a sequence of pitches</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> c, b;</p>
-<p class="p4">c = <span class="s2">Pn</span>(<span class="s2">Pfinval</span>({ rrand(3, 5)}, <span class="s2">Pseq</span>([1, 2, 3, 4, 5, 6],<span class="s2">inf</span>)*4+65),<span class="s2">inf</span>);</p>
-<p class="p4">b = c.asStream;</p>
-<p class="p8">Routine<span class="s3">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, b.next.midicps]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.12.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}).play;</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pflow.html b/Help/Streams-Patterns-Events/Patterns/Pflow.html
deleted file mode 100644
index 6d816b5..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pflow.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {color: #0000ff}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pflow</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">advances the substream according to a time pattern from moment of embedding in stream</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pflow(timepattern, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">replaced by <b>Pstep(pattern, durpattern): </b>see <a href="Pstep.html"><span class="s1">Pstep</span></a></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfset.html b/Help/Streams-Patterns-Events/Patterns/Pfset.html
deleted file mode 100644
index f5e42e9..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfset.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 16.0px 0.0px; font: 16.0px Times; min-height: 19.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfset<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>insert an environment into the event prototype before evaluating the supplied pattern.</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FuncFilterPattern</b></p>
-<p class="p3"><br></p>
-<p class="p1">Good for setting default values or loading server objects.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>Pfset(func, pattern, cleanupFunc)</b></p>
-<p class="p3"><br></p>
-<p class="p1"><br>
-<b>func:</b> Use environment variable syntax (e.g., ~x = 0) to store values in the internal environment. These values are copied into the event prototype before running the supplied pattern.</p>
-<p class="p1"><br>
-<b>pattern:</b> An event pattern (such as Pbind).</p>
-<p class="p1"><br>
-<b>cleanupFunc:</b> Optional. A function to evaluate when the pattern is stopped, or when the supplied pattern runs out of values. For example, if you loaded a Buffer in the initializer function, you could free it in the cleanupFunc.</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> a, b;</p>
-<p class="p4">a = <span class="s2">Pfset</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~legato = 0.3;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~detune = rrand(0, 30);</p>
-<p class="p4">}, <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p1">Pfset does not override values placed into the event by the inner pattern:</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> a, b;</p>
-<p class="p4">a = <span class="s2">Pfset</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~dur = 0.3;</p>
-<p class="p4">}, <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p1">sound example</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.02;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain), 1, doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5, <span class="s3">\instrument</span>, <span class="s3">\sinegrain</span>, <span class="s3">\x</span>, <span class="s2">Pfunc</span> { rrand(500, 600) });</p>
-<p class="p4">a = <span class="s2">Pfset</span>({ ~freq = { ~x.postln * 2 }; ~legato = 3; },<span class="Apple-converted-space">  </span>a);</p>
-<p class="p4">a.play;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfsm.html b/Help/Streams-Patterns-Events/Patterns/Pfsm.html
deleted file mode 100644
index 06de5b6..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfsm.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.s5 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfsm</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>Finite State Machine</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: ListPatterns</b></p>
-<p class="p2"><br></p>
-<p class="p1">Every state consists of an item and an array of integer indices of possible <b>next states.</b></p>
-<p class="p1">The initial state is chosen at random from the array of <b>entry states.</b></p>
-<p class="p1">That chosen state's item is returned, and the next state is chosen from its array of possible <b>next states</b>.</p>
-<p class="p1">When the end state is chosen, the stream ends.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pfsm(list,repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>list</b>:</p>
-<p class="p1"><span class="Apple-tab-span">	</span>[</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[ entry states ],</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>item, [ next states ],</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>item, [ next states ],</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>...</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>end item (or nil), nil</p>
-<p class="p1"><span class="Apple-tab-span">	</span>]</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-converted-space"> </span>next states: nil<span class="Apple-converted-space">  </span>is terminal</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">(</p>
-<p class="p4"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pfsm</span>([</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[0,1],</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>67, #[0, 0, 3],</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>72, #[2],</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>73, #[0, 2],</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pseq</span>([74, 75, 76, 77]), #[2, 3, 3],</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>nil<span class="s3">, </span>nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s2">inf</span>).asStream;</p>
-<p class="p6">Routine<span class="s3">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, a.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p5"><br></p>
-<p class="p3">(</p>
-<p class="p6">Pfsm<span class="s3">([</span></p>
-<p class="p3">     #[5, 6, 7], <span class="s5">// entry states</span></p>
-<p class="p3">     </p>
-<p class="p7"><span class="s3">    </span>//e1 (== state 0)</p>
-<p class="p3">    <span class="s2">Pbind</span>( <span class="s4">\dur</span>, <span class="s2">Pseq</span>([ 1/8, 3/8 ]), <span class="s4">\midinote</span>, <span class="s2">Pseq</span>([ 86, 75 ]) ),</p>
-<p class="p7"><span class="s3">     </span>//#[1],  // as given in CMJ</p>
-<p class="p7"><span class="s3">     </span>// my de-boredom-ated version..</p>
-<p class="p3">     #[1, 1, 1, 1, 1, 1, 1, 8],</p>
-<p class="p7"><span class="s3">    </span>//e2 (== state 1)</p>
-<p class="p3">    <span class="s2">Pbind</span>( <span class="s4">\dur</span>, 1/2, <span class="s4">\midinote</span>, <span class="s2">Pseq</span>([ 69 ]) ),</p>
-<p class="p3">     #[0, 1],</p>
-<p class="p7"><span class="s3">    </span>//e3 (== state 2)</p>
-<p class="p3">    <span class="s2">Pbind</span>( <span class="s4">\dur</span>, 1/3, <span class="s4">\midinote</span>, <span class="s2">Pseq</span>([ 55, 60, 66 ]) ),</p>
-<p class="p3">     #[0, 1, 2, 2, 2, 2, 3, 3, 3, 3],</p>
-<p class="p7"><span class="s3">    </span>//e4 (== state 3)</p>
-<p class="p3">    <span class="s2">Pbind</span>( <span class="s4">\dur</span>, 1/4, <span class="s4">\midinote</span>, <span class="s2">Pseq</span>([ 81, 80, 77, 76 ]) ),</p>
-<p class="p3">     #[1, 4, 4, 4, 4],</p>
-<p class="p7"><span class="s3">    </span>//e5 (== state 4)</p>
-<p class="p3">    <span class="s2">Pbind</span>( <span class="s4">\dur</span>, <span class="s2">Pseq</span>([1, 2/3, 2/3, 2/3, 1]), <span class="s4">\midinote</span>, <span class="s2">Pseq</span>([ \, 70, 70, 70, \ ]) ),</p>
-<p class="p3">     #[2, 3],</p>
-<p class="p7"><span class="s3">    </span>//e6 (== state 5)</p>
-<p class="p3">    <span class="s2">Pbind</span>( <span class="s4">\dur</span>, 1/4, <span class="s4">\midinote</span>, <span class="s2">Pseq</span>([ 59, 61 ]) ),</p>
-<p class="p3">     #[0, 2, 4, 5, 5, 5, 5, 5, 5, 5],</p>
-<p class="p7"><span class="s3">    </span>//e7 (== state 6)</p>
-<p class="p3">    <span class="s2">Pbind</span>( <span class="s4">\dur</span>, 1/4, <span class="s4">\midinote</span>, <span class="s2">Pseq</span>([ 87, 88 ], 2) ),</p>
-<p class="p3">     #[4, 4, 4, 4, 6, 6, 6, 7, 7, 7],</p>
-<p class="p7"><span class="s3">    </span>//e8 (== state 7)</p>
-<p class="p3">    <span class="s2">Pbind</span>( <span class="s4">\dur</span>, 1, <span class="s4">\midinote</span>, <span class="s2">Pseq</span>([ 56 ]) ),</p>
-<p class="p3">     #[1, 3, 6, 6, 6],</p>
-<p class="p7"><span class="s3">    </span>// terminal state</p>
-<p class="p3">    <span class="s2">nil</span>, <span class="s2">nil</span></p>
-<p class="p3">   ]).play;</p>
-<p class="p3">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfunc.html b/Help/Streams-Patterns-Events/Patterns/Pfunc.html
deleted file mode 100644
index ae8f4c0..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfunc.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfunc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>function pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pfunc(nextFunc, resetFunc)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that returns values from the nextFunc.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>nextFunc </b>- stream function</p>
-<p class="p1"><b>resetFunc </b>-<span class="Apple-converted-space">  </span>function that is called when the stream is reset.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="Pfuncn.html"><span class="s2">Pfuncn</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, x;</p>
-<p class="p5">a = <span class="s2">Pfunc</span>({ exprand(0.1, 2.0) + #[1, 2, 3, 6].choose }, { \reset.postln });</p>
-<p class="p5">x = a.asStream;</p>
-<p class="p5">x.nextN(20).postln;</p>
-<p class="p5">x.reset;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pfunc</span>({ exprand(0.1, 0.3) + #[1, 2, 3, 6, 7].choose }).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.do { <span class="s2">|val|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, val * 100 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfuncn.html b/Help/Streams-Patterns-Events/Patterns/Pfuncn.html
deleted file mode 100644
index 96f64dc..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfuncn.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8f2116}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #002eaf}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfuncn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>function pattern of given length</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pfunc(func, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that returns values from the func.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>func </b>- stream function</p>
-<p class="p1"><b>repeats </b>-<span class="Apple-converted-space">  </span>end after this number of times</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="Pfunc.html"><span class="s2">Pfunc</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> a, b, c;</p>
-<p class="p5">a = <span class="s3">Pfuncn</span>({ exprand(0.1, 2.0) + #[1, 2, 3, 6].choose }, 2);</p>
-<p class="p5">b = <span class="s3">Pfuncn</span>({ #[-2, -3].choose }, 2);</p>
-<p class="p5">Pseq([a, b], inf).asStream.nextN(20).postln;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s5">(</span>\help_sinegrain<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> a, b, c;</p>
-<p class="p5">a = <span class="s4">Pfuncn</span>({ exprand(0.1, 2.0) + #[1, 2, 3, 6].choose }, 2);</p>
-<p class="p5">b = <span class="s4">Pfuncn</span>({ #[-2, -3].choose }, 7);</p>
-<p class="p5">c = <span class="s4">Pseq</span>([a, b], <span class="s4">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>c.do { <span class="s4">|val|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, val * 100 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfx.html b/Help/Streams-Patterns-Events/Patterns/Pfx.html
deleted file mode 100644
index 580b22e..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfx.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfx</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>add an effect synth to the synths of a given event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pfx(pattern, fxname, name, value, name, value, ...)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Puts an effect node on the tail of the current group and releases it when the contained pattern finishes. If a bus is given, it is used as an effect bus. Name value pairs are inserted into the event for starting the effect node. The effect parameters are set from the event.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Example:</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s3">\echo</span>, { <span class="s2">arg</span> out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">CombL</span>.ar(in * env, maxdtime, dtime, decay, 1, in));</p>
-<p class="p3">}, [<span class="s3">\ir</span>, <span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s3">\distort</span>, { <span class="s2">arg</span> out=0, pregain=40, amp=0.2, gate=1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, (<span class="s2">In</span>.ar(out, 2) * pregain).distort * amp);</p>
-<p class="p3">}, [<span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s3">\wah</span>, { <span class="s2">arg</span> out=0, gate=1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.4, 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">RLPF</span>.ar(in, <span class="s2">LinExp</span>.kr(<span class="s2">LFNoise1</span>.kr(0.3), -1, 1, 200, 8000), 0.1).softclip * 0.8);</p>
-<p class="p3">}, [<span class="s3">\ir</span>, 0]).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> p, q, r, o;</p>
-<p class="p3">p = <span class="s2">Pbind</span>(<span class="s3">\degree</span>, <span class="s2">Prand</span>((0..7),12), <span class="s3">\dur</span>, 0.3, <span class="s3">\legato</span>, 0.2);</p>
-<p class="p4"><br></p>
-<p class="p3">q = <span class="s2">Pfx</span>(p, <span class="s3">\echo</span>, <span class="s3">\dtime</span>, 0.2, <span class="s3">\decay</span>, 3);</p>
-<p class="p4"><br></p>
-<p class="p3">r = <span class="s2">Pfx</span>(q, <span class="s3">\distort</span>, <span class="s3">\pregain</span>, 20, <span class="s3">\amp</span>, 0.25);</p>
-<p class="p4"><br></p>
-<p class="p3">o = <span class="s2">Pfx</span>(r, <span class="s3">\wah</span>);</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2">Pseq</span>([p, q, r, o], 2).play;</p>
-<p class="p3">)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pfxb.html b/Help/Streams-Patterns-Events/Patterns/Pfxb.html
deleted file mode 100644
index 755915f..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pfxb.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pfxb</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>add an effect synth to the synths of a given event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Pfx</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pfxb(pattern, fxname, name, value, name, value, ...)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Puts an effect node on the tail of the current group and releases it when the contained pattern finishes. Name value pairs are inserted into the event for starting the effect node. The effect parameters are set from the event.</p>
-<p class="p2"><br></p>
-<p class="p1">In difference to <a href="Pfx.html"><span class="s2">Pfx</span></a>, a <b>private effect bus</b> is provided according to the number of channels in the effect synth def.</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// Examples</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\echo</span>, { <span class="s2">arg</span> out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">CombL</span>.ar(in * env, maxdtime, dtime, decay, 1, in));</p>
-<p class="p6">}, [<span class="s3">\ir</span>, <span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\distort</span>, { <span class="s2">arg</span> out=0, pregain=40, amp=0.2, gate=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, (<span class="s2">In</span>.ar(out, 2) * pregain).distort * amp);</p>
-<p class="p6">}, [<span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\wah</span>, { <span class="s2">arg</span> out=0, gate=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.4, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">RLPF</span>.ar(in, <span class="s2">LinExp</span>.kr(<span class="s2">LFNoise1</span>.kr(0.3), -1, 1, 200, 8000), 0.1).softclip * 0.8);</p>
-<p class="p6">}, [<span class="s3">\ir</span>, 0]).add;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> p, q, r, o;</p>
-<p class="p6">p = <span class="s2">Pbind</span>(<span class="s3">\degree</span>, <span class="s2">Prand</span>((0..7),12), <span class="s3">\dur</span>, 0.3, <span class="s3">\legato</span>, 0.2);</p>
-<p class="p5"><br></p>
-<p class="p6">q = <span class="s2">Pfxb</span>(p, <span class="s3">\echo</span>, <span class="s3">\dtime</span>, 0.2, <span class="s3">\decay</span>, 3);</p>
-<p class="p5"><br></p>
-<p class="p6">r = <span class="s2">Pfxb</span>(q, <span class="s3">\distort</span>, <span class="s3">\pregain</span>, 20, <span class="s3">\amp</span>, 0.25);</p>
-<p class="p5"><br></p>
-<p class="p6">o = <span class="s2">Pfxb</span>(r, <span class="s3">\wah</span>);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">Pseq</span>([p, q, r, o], 2).play;</p>
-<p class="p6">)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// test order of effect chain</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\echo</span>, { <span class="s2">arg</span> out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">CombL</span>.ar(in * env, maxdtime, dtime, decay, 1, in));</p>
-<p class="p6">}, [<span class="s3">\ir</span>, <span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\addbeeps</span>, { <span class="s2">arg</span> out=0, gate=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, (<span class="s2">In</span>.ar(out, 2) + (<span class="s2">LFPulse</span>.kr(1, 0, 0.3) * <span class="s2">SinOsc</span>.ar(1000) * 0.4) ));</p>
-<p class="p6">}, [<span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a;</p>
-<p class="p6">a = <span class="s2">Pbind</span>(<span class="s3">\degree</span>, <span class="s2">Prand</span>((0..7),12), <span class="s3">\dur</span>, 0.3, <span class="s3">\legato</span>, 0.2);</p>
-<p class="p6">a = <span class="s2">Pfxb</span>(a, <span class="s3">\echo</span>, <span class="s3">\dtime</span>, 0.2, <span class="s3">\decay</span>, 3);</p>
-<p class="p6">a = <span class="s2">Pfxb</span>(a, <span class="s3">\addbeeps</span>);</p>
-<p class="p6">a.play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a;</p>
-<p class="p6">a = <span class="s2">Pbind</span>(<span class="s3">\degree</span>, <span class="s2">Prand</span>((0..7),12), <span class="s3">\dur</span>, 0.3, <span class="s3">\legato</span>, 0.2);</p>
-<p class="p6">a = <span class="s2">Pfxb</span>(a, <span class="s3">\addbeeps</span>);</p>
-<p class="p6">a = <span class="s2">Pfxb</span>(a, <span class="s3">\echo</span>, <span class="s3">\dtime</span>, 0.2, <span class="s3">\decay</span>, 3);</p>
-<p class="p6">a.play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pgate.html b/Help/Streams-Patterns-Events/Patterns/Pgate.html
deleted file mode 100644
index 647cf29..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pgate.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pgate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>gated stream advances only when an event key is true</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3">Object</span></a> : <a href="../../Core/Kernel/AbstractFunction.html"><span class="s3">AbstractFunction</span></a> : <a href="Pattern.html"><span class="s3">Pattern</span></a> : <a href="FilterPattern.html"><span class="s4">FilterPattern</span></a> : <a href="Pn.html"><span class="s4">Pn</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Pgate(pattern, n, key)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Pgate advances its subpattern whenever <b>key </b>is true. <span class="Apple-converted-space"> </span></p>
-<p class="p1">Pgate must be used within an Event pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b><span class="Apple-converted-space">  </span><a href="Pn.html"><span class="s4">Pn</span></a></p>
-<p class="p5"><br></p>
-<p class="p6"><b>Examples</b></p>
-<p class="p4"><br></p>
-<p class="p7">// Pn advances Pgate each time its subpattern is repeated</p>
-<p class="p8">(</p>
-<p class="p9">Pbind<span class="s2">(</span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">\degree</span>,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pn</span>(<span class="s4">Pseq</span>((0..7)), <span class="s4">inf</span>, <span class="s5">\step</span>),</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>\mtranspose<span class="s2">,<span class="Apple-tab-span">	</span></span><span class="s4">Pgate</span><span class="s2">(</span><span class="s4">Pwhite</span><span class="s2">(0,5), </span><span class="s4">inf</span><span class="s2">, </span>\step<span class="s2">),</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.2</p>
-<p class="p8">).play</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">// Two different Pgates advanced at two different rates</p>
-<p class="p8">(</p>
-<p class="p9">Pbind<span class="s2">(</span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>foo,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pn</span>(<span class="s4">Pseq</span>((0..3)),<span class="s4">inf</span>,<span class="Apple-converted-space">  </span><span class="s5">\step1</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span>degree,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pn</span>(<span class="s4">Pseq</span>((0..7)), <span class="s4">inf</span>, <span class="s5">\step</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span>mtranspose,<span class="Apple-tab-span">	</span><span class="s4">Pgate</span>(<span class="s4">Pwhite</span>(0,5), <span class="s4">inf</span>, <span class="s5">\step</span>) +<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pgate</span>(<span class="s4">Pseq</span>([0,7,0,-7]), <span class="s4">inf</span>, <span class="s5">\step1</span>),</p>
-<p class="p8"><span class="Apple-tab-span">	</span>dur, 0.2</p>
-<p class="p8">).play</p>
-<p class="p8">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pgauss.html b/Help/Streams-Patterns-Events/Patterns/Pgauss.html
deleted file mode 100644
index 424f5cf..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pgauss.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pgauss<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values that follow a Gaussian Distribution</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pgauss(mean, standardDeviation, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>mean<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The mean of the distribution (defaults to 0.0)</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>standardDeviation<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The spread of values around the mean.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p1">This pattern uses the Box-Müller transform to generate a gaussian distribution from uniformly distributed values:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><i>sqrt(-2 * log(1.0.rand)) * sin(2pi.rand)</i></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pgauss</span>(0.0, 100, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Pgauss"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Pgauss</span>(0.0, 10.0, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Pgauss"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pgauss</span>(0.0, 1.0,<span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pgbrown.html b/Help/Streams-Patterns-Events/Patterns/Pgbrown.html
deleted file mode 100644
index 7e7b089..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pgbrown.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pgbrown<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>geometric brownian motion pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pbrown</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pgbrown(lo, hi, step, length)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that behaves like a geometric brownian motion.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>lo, hi</b> - lower and upper boundary of values<span class="Apple-converted-space">  </span>(default: 0.0 and 1.0)</p>
-<p class="p1"><b>step</b> - maximum multiplication factor per step (omega) - the distribution is xrand2.<span class="Apple-converted-space">  </span>(default: 0.125)</p>
-<p class="p1"><b>length</b> - number of values produced (default: inf)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="../../UGens/Noise/BrownNoise.html"><span class="s3">BrownNoise</span></a>, <a href="Pbrown.html"><span class="s3">Pbrown</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a, b;</p>
-<p class="p6">a = <span class="s4">Pgbrown</span>(0.0, 1.0, 0.2, <span class="s4">inf</span>);</p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">7.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// sound example</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s5">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">var</span> a;</p>
-<p class="p6">a = <span class="s5">Pgbrown</span>(1.0, 2.0, 0.1, <span class="s5">inf</span>).asStream;</p>
-<p class="p8">Routine<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// compare with normal brownian motion:</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">var</span> a;</p>
-<p class="p6">a = <span class="s5">Pbrown</span>(1.0, 2.0, 0.1, <span class="s5">inf</span>).asStream;</p>
-<p class="p8">Routine<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pgeom.html b/Help/Streams-Patterns-Events/Patterns/Pgeom.html
deleted file mode 100644
index 1e8f950..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pgeom.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #001bb9}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pgeom<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>geometric series pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pgeom(start, grow, length)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that behaves like a geometric series.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>start </b>- start value<span class="Apple-converted-space">  </span>(default: 1.0)</p>
-<p class="p1"><b>grow</b> - multiplication factor.<span class="Apple-converted-space">  </span>(default: 1.0)</p>
-<p class="p1"><b>length</b> - number of values produced (default: inf)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="Pseries.html"><span class="s2">Pseries</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> a;</p>
-<p class="p5">a = <span class="s3">Pgeom</span>(1.0, 1.1, <span class="s3">inf</span>);</p>
-<p class="p5">a.asStream.nextN(100).plot;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">// sound example</p>
-<p class="p5">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s5">(</span>\help_sinegrain<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05, amp=0.1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2, amp), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> a;</p>
-<p class="p5">a = <span class="s4">Pgeom</span>(300, 1.03, 70).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.do { <span class="s4">|val|</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s5">(</span>\help_sinegrain<span class="s5">, [</span>\freq<span class="s5">, val]);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p8">Pbind<span class="s5">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.01,</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>\instrument<span class="s5">, </span>\help_sinegrain<span class="s5">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s6">\freq</span>, <span class="s4">Pgeom</span>(800, <span class="s4">Pbrown</span>(0.99, 1.01, 0.01, <span class="s4">inf</span>), <span class="s4">inf</span>)</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pgpar.html b/Help/Streams-Patterns-Events/Patterns/Pgpar.html
deleted file mode 100644
index 6d9cdc3..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pgpar.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pgpar<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>embed event streams in parallel and put each in its own group</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Ppar</b></p>
-<p class="p2"><br></p>
-<p class="p1">Embeds several event streams so that they form a single output stream with all their events in temporal order.</p>
-<p class="p1">When one stream ends, the other streams are further embedded until all have ended.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pgpar(list, repeats)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>list:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>list of patterns or streams</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>repeats:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>repeat the whole pattern n times (default: 1)</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1">In order to fully separate these layers from other synths, use <a href="Pbus.html"><span class="s2">Pbus</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">See <a href="Pgroup.html"><span class="s2">Pgroup</span></a> for a description of the \groupReleaseTime event key.</p>
-<p class="p4"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// an example analogous to the one in the Pfx helpfile</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\echo</span>, { <span class="s2">arg</span> out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">CombL</span>.ar(in * env, maxdtime, dtime, decay, 1, in));</p>
-<p class="p6">}, [<span class="s3">\ir</span>, <span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\distort</span>, { <span class="s2">arg</span> out=0, pregain=40, amp=0.2, gate=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.1, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, (<span class="s2">In</span>.ar(out, 2) * pregain).distort * amp);</p>
-<p class="p6">}, [<span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\wah</span>, { <span class="s2">arg</span> out=0, gate=1, rate=0.3;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 0.4, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">RLPF</span>.ar(in, <span class="s2">LinExp</span>.kr(<span class="s2">LFNoise1</span>.kr(rate), -1, 1, 200, 8000), 0.1).softclip * 0.8);</p>
-<p class="p6">}, [<span class="s3">\ir</span>, 0]).add;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> p, q, r, o;</p>
-<p class="p7">Pbus<span class="s4">(</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>Pgpar<span class="s4">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\degree</span>, <span class="s2">Prand</span>((0..7), <span class="s2">inf</span>), <span class="s3">\dur</span>, 0.3, <span class="s3">\legato</span>, 0.2),</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Pbind</span><span class="s4">(</span>\instrument<span class="s4">, </span>\echo<span class="s4">, </span>\dur<span class="s4">, 3, </span>\legato<span class="s4">, 1.1,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dtime</span>, <span class="s2">Pwhite</span>(0.01, 0.1, <span class="s2">inf</span>), <span class="s3">\decay</span>, 3),</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Pbind</span><span class="s4">(</span>\instrument<span class="s4">, </span>\distort<span class="s4">, </span>\dur<span class="s4">, 1.2, </span>\legato<span class="s4">, 1.1,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\pregain</span>, <span class="s2">Pwhite</span>(1, 20, <span class="s2">inf</span>), <span class="s3">\amp</span>, 0.25),</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Pbind</span><span class="s4">(</span>\instrument<span class="s4">, </span>\wah<span class="s4">, </span>\dur<span class="s4">, 4.0, </span>\legato<span class="s4">, 1.1,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\rate</span>, <span class="s2">Pwhite</span>(0.1, 3, <span class="s2">inf</span>))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>])</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// synthdefs</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">\gap</span>, { <span class="s2">arg</span> out, sustain=1.0, attack=0.0001, decay=0.01, leak;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> level;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>level = <span class="s2">EnvGen</span>.ar(<span class="s2">Env</span>.linen(attack, sustain, decay, 1-leak), doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, level, <span class="s2">Silent</span>.ar ! 2)</p>
-<p class="p6">}).add;</p>
-<p class="p3"><br></p>
-<p class="p8"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p6">}).add;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// play a layered pattern with gaps and overlays</p>
-<p class="p6">(</p>
-<p class="p6">x = <span class="s2">Pbind</span>(</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_sinegrain<span class="s4">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pn</span>(<span class="s2">Plazy</span>({ <span class="s2">Prand</span>([0, 4, 5], 16) + 5.rand })) + <span class="s2">Prand</span>(#[0, [0, 3], [0, 7]], <span class="s2">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Prand</span>([0.25, 0.5, 1.0], <span class="s2">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\scale</span>, #[0, 3, 5, 9, 10]</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">y = <span class="s2">Pbind</span>(</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\gap<span class="s4">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Prand</span>([0.25, 0.5, 1.0], <span class="s2">inf</span>) * <span class="s2">Pstutter</span>(<span class="s2">inf</span>, <span class="s2">Prand</span>([0.25, 1, 2],1)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s2">Prand</span>([0.25, 0.5, 1.0], <span class="s2">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\leak</span>, 0.25</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">a = <span class="s2">Pbus</span>(<span class="s2">Pgpar</span>([x, y, x, y, x, y]));</p>
-<p class="p6">a.play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pgroup.html b/Help/Streams-Patterns-Events/Patterns/Pgroup.html
deleted file mode 100644
index 4e4855f..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pgroup.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #001bb9}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pgroup</b><span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>superclass: </b><a href="FilterPattern.html">FilterPattern</a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Pgroup(pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Starts a new <a href="../../ServerArchitecture/Group.html"><span class="s3">Group</span></a> and plays the pattern in this group.<span class="Apple-converted-space"> </span></p>
-<p class="p4">The group is released when the stream has ended. The group's <b>release</b> is delayed (default 0.1 beats) until after the last note releases. But, Pgroup does not know how long the synths' envelopes last. You can extend the lag by putting the number of beats into the event prototype's \groupReleaseTime key:</p>
-<p class="p2"><br></p>
-<p class="p4">Pgroup(...).play(protoEvent: Event.default.put(\groupReleaseTime, releaseLag));</p>
-<p class="p2"><br></p>
-<p class="p4">Example:</p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> p, q, r, o;</p>
-<p class="p6">p = <span class="s4">Pbind</span>(<span class="s5">\degree</span>, <span class="s4">Prand</span>((0..7),12), <span class="s5">\dur</span>, 0.3, <span class="s5">\legato</span>, 0.2);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4">Pgroup</span>(p).play;</p>
-<p class="p5"><br></p>
-<p class="p7">// post the node structure:</p>
-<p class="p6">fork {</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>3.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p6">}</p>
-<p class="p6">)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Phid.html b/Help/Streams-Patterns-Events/Patterns/Phid.html
deleted file mode 100644
index 2470f73..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Phid.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Phid</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>pattern that polls values from a human device interface (OSX only)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Note: this class is OSX specific. Please use the cross platform versions (based on <A href="../../Control/GeneralHID.html">GeneralHID</A>), <A href="PhidKey.html">PhidKey</A> or <A href="PhidSlot.html">PhidSlot</A>, instead.</p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(element, locID, repeats)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>element</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>one element of the interface of the device, like a button or an axis</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>can be an index or, if the devicespec is present, also a symbol</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>locID</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the index of the device, defaults to 0 (first device)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>repeats</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values to return (defaults to inf)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p4">// while this is running, test your device</p>
-<p class="p5">(</p>
-<p class="p5">a = <span class="s3">Phid</span>(0,0);</p>
-<p class="p5">x = a.asStream;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">Routine</span>({ loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.next.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p5">}) }).play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// using devicespecs:</p>
-<p class="p4">// for example wingman. for other specs see [HIDDeviceService]</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">HIDDeviceService</span><span class="s4">.deviceSpecs.put(</span>'WingMan Action Pad'<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>IdentityDictionary<span class="s4">[</span></p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// buttons</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\a</span> -> 0, <span class="s5">\b</span>-> 1, <span class="s5">\c</span>-> 2,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\x</span>-> 3, <span class="s5">\y</span>-> 4, <span class="s5">\z</span>-> 5,</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">\l</span><span class="s4">-> 6, </span>//front left</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">\r</span><span class="s4">-> 7, </span>//front right</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\s</span>-> 8,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\mode</span>-> 9,</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">\xx</span><span class="s4">-> 10,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//analog controller x axis</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">\yy</span><span class="s4">-> 11,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//analog controller y axis</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\slider</span>-> 12,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\hat</span>-> 13</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// then you can use the named key:</p>
-<p class="p5">(</p>
-<p class="p5">a = <span class="s3">Phid</span>(<span class="s5">\x</span>, 0, inf);</p>
-<p class="p5">x = a.asStream;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">Routine</span>({ loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x.next.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p5">}) }).play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// 'musical' example:</p>
-<p class="p5">(</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\freq</span>, <span class="s3">Pseq</span>([<span class="s3">Phid</span>(<span class="s5">\x</span>,0,8),<span class="s3">Phid</span>(<span class="s5">\y</span>,0,8)],<span class="s3">inf</span>) * 500 + 200,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Phid</span>(<span class="s5">\slider</span>) + 0.02,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\pan</span>, <span class="s3">Phid</span>(<span class="s5">\hat</span>) * 2 - 1</p>
-<p class="p5"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p5">)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PhidKey.html b/Help/Streams-Patterns-Events/Patterns/PhidKey.html
deleted file mode 100644
index 8dcbcd1..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PhidKey.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PhidKey</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>pattern that polls values from a human device interface, based on a named slot</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(key, device, repeats)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>key</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>key defined in the Spec of the device, pointing to a slot like a button or an axis</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>device</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a GeneralHIDDevice, or an element from the GeneralHID.deviceList, which will then be opened by the pattern</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>repeats</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values to return (defaults to inf)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>See also:</b> <a href="../../Control/GeneralHID.html"><span class="s2">GeneralHID</span></a> and <a href="PhidSlot.html"><span class="s2">PhidSlot</span></a></p>
-
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-
-<p class="p4">// example <br>
-
-// build the device list and start the event loop: <br>
-GeneralHID.buildDeviceList; <br>
-GeneralHID.startEventLoop; <br>
- <br>
-// find an Impact game device and open it: <br>
-a = GeneralHID.open( GeneralHID.findBy( 1973 ) ); <br>
-
-// define a spec: <br>
-( <br>
-a.add( \lx, [3,0]); // left x <br>
-a.add( \ly, [3,1]); // left y <br>
-a.add( \rx, [3,2]); // right x <br>
-a.add( \ry, [3,5]); // right y <br>
-); <br>
-
-// or find a spec defined previously for this device: <br>
-c = a.findSpec; <br>
-// set it: <br>
-a.setSpec( c[0] ); <br>
-
-// inspect the spec <br>
-a.spec.map <br>
-a.caps; <br>
-
-// boot the server <br>
-s.boot; <br>
-
-// simple example: <br>
-p = Pbind( <br>
-        \degree, ( PhidKey( \lx, a, inf )*12 ).round(1), <br>
-        \dur, 0.25 <br>
-).play; <br>
-
-p.stop; <br>
-
-// more complex example, showing multichannel expansion and sequences of slots: <br>
-p = Pbind( <br>
-        \degree, ( PhidKey( Pseq([[\lx,\ly],\rx,\ry],inf), a, inf )*12 ).round(1), <br>
-        \dur, 0.25 <br>
-).play; <br>
-
-p.stop; <br>
-
-
-// clean up: close the device and stop the eventloop <br>
-a.close; <br>
-GeneralHID.stopEventLoop; <br>
-</p>
-
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PhidSlot.html b/Help/Streams-Patterns-Events/Patterns/PhidSlot.html
deleted file mode 100644
index 73b3779..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PhidSlot.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PhidSlot</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>pattern that polls values from a human device interface, based on an indexed slot</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(slot, type, device, repeats)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>slot</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index pointing to a slot like a button or an axis</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>type</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index pointing to the type of slot (see GeneralHID for a description of this)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>device</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a GeneralHIDDevice, or an element from the GeneralHID.deviceList, which will then be opened by the pattern</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>repeats</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values to return (defaults to inf)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>See also:</b> <a href="../../Control/GeneralHID.html"><span class="s2">GeneralHID</span></a> and <a href="PhidKey.html"><span class="s2">PhidKey</span></a></p>
-
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">// example <br>
-
-// build the device list and start the event loop: <br>
-GeneralHID.buildDeviceList; <br>
-GeneralHID.startEventLoop; <br>
- <br>
-// find an Impact game device and open it: <br>
-a = GeneralHID.open( GeneralHID.findBy( 1973 ) ); <br>
-
-// inspect the capabilities of this device:<br>
-a.caps; <br>
-
-// boot the server <br>
-s.boot; <br>
-
-// simple example: <br>
-p = Pbind( <br>
-        \degree, ( PhidSlot( 0, 3, a, inf )*12 ).round(1), <br>
-        \dur, 0.25 <br>
-).play; <br>
-
-p.stop; <br>
-
-// more complex example, showing multichannel expansion and sequences of slots: <br>
-p = Pbind( <br>
-        \degree, ( PhidSlot( Pseq([[0,1],2,5],inf), 3, a, inf )*12 ).round(1), <br>
-        \dur, 0.25 <br>
-).play; <br>
-
-// the type argument can also be replaced by an Array or pattern.<br>
-
-p.stop; <br>
-
-
-// clean up: close the device and stop the eventloop <br>
-a.close; <br>
-GeneralHID.stopEventLoop; <br>
-</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Phprand.html b/Help/Streams-Patterns-Events/Patterns/Phprand.html
deleted file mode 100644
index 6eaa675..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Phprand.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Phprand</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values that tend toward hi</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Phprand(lo, hi, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo, hi<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lower and upper boundary of values (default: 0.0 and 1.0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Phprand</span>(0.0, 1.0, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Phprand"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Phprand</span>(0.0, 1.0, <span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// this is equivalent to:</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, max(rrand(0.0, 1.0), rrand(0.0, 1.0)) * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pif.html b/Help/Streams-Patterns-Events/Patterns/Pif.html
deleted file mode 100644
index 3bd2751..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pif.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 20.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0000bf}
-span.s4 {color: #001bb9}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pif <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Pattern-based conditional expression.</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: <a href="Pattern.html"><span class="s2">Pattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pif(condition, iftrue, iffalse, default)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>condition</b>: <span class="Apple-tab-span">	</span>A pattern or stream returning a Boolean value.</p>
-<p class="p1"><b>iftrue</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This stream is evaluated if the Boolean is true.</p>
-<p class="p1"><b>iffalse</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This stream is evaluated if the Boolean is false.</p>
-<p class="p1"><b>default</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>This value (not stream) is returned if "iftrue" or "iffalse" return nil at any time.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">p = <span class="s3">Pif</span>(<span class="s3">Pfunc</span>({ 0.3.coin }), <span class="s3">Pwhite</span>(0, 9, <span class="s3">inf</span>), <span class="s3">Pwhite</span>(100, 109, <span class="s3">inf</span>)).asStream;</p>
-<p class="p3">p.nextN(20);</p>
-<p class="p4"><br></p>
-<p class="p5">// 7 of the 20 values, or roughly 30%, are in the 0-9 range:</p>
-<p class="p4"><br></p>
-<p class="p3">[ 105, 107, 107, 8, 100, 3, 105, 5, 107, 106, 1, 104, 8, 102, 102, 4, 108, 8, 109, 101 ]</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// sound example</p>
-<p class="p3">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s5">(</span>\help_sinegrain<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s3">var</span> a;</p>
-<p class="p3">a = <span class="s3">Pif</span>(<span class="s3">Pfunc</span>({ 0.3.coin }), <span class="s3">Pn</span>(<span class="s3">Pseries</span>(0.5, 0.1, 10)), <span class="s3">Pn</span>(<span class="s3">Pseries</span>(6, -0.1, 10))).asStream;</p>
-<p class="p3">{</p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}</p>
-<p class="p3">}.fork;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pindex.html b/Help/Streams-Patterns-Events/Patterns/Pindex.html
deleted file mode 100644
index 8417cce..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pindex.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pindex</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pattern that indexes into an array</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pindex(list, index, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p1">This allows an <a href="../../Collections/ArrayedCollection.html"><span class="s2">ArrayedCollection</span></a> to be accessed within patterns.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>list</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is the array and <b>index</b> the value to retrieve - both of these arguments can themselves be <a href="Pattern.html"><span class="s2">Pattern</span></a>s.</p>
-<p class="p1"><b>repeats</b> <span class="Apple-tab-span">	</span>specifies the number of repeats.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">// example</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">SynthDef<span class="s3">(</span><span class="s4">\help_pindex</span><span class="s3">, { </span>| out, amp=0.1, freq=440, gate=1 |</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> son = <span class="s2">Saw</span>.ar(freq * [0.99, 1, 1.01]).mean;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>son = son * <span class="s2">EnvGen</span>.ar(<span class="s2">Env</span>.adsr, gate: gate, doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, son.dup * amp);</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> data = [7, 13, 12, 2, 2, 2, 5];</p>
-<p class="p5"><span class="s2">var</span> indices = [0, 0, 2, 0, 4, 6, 7];</p>
-<p class="p6">Pbind<span class="s3">(</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\help_pindex<span class="s3">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">\choice</span>, <span class="s2">Prand</span>(indices, <span class="s2">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s2">Pindex</span>(data, <span class="s2">Pkey</span>(<span class="s4">\choice</span>), <span class="s2">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.7</p>
-<p class="p5">).play</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pkey.html b/Help/Streams-Patterns-Events/Patterns/Pkey.html
deleted file mode 100644
index b682a59..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pkey.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Helvetica; min-height: 24.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 20.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pkey<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>access a key in an event stream</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p1">superclass: <a href="Pattern.html"><span class="s2">Pattern</span></a></p>
-<p class="p3"><br></p>
-<p class="p1">Pkey simplifies backward access to values in an event being processed by <a href="Pbind.html"><span class="s2">Pbind</span></a> or another event pattern.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>*new(key)</b></p>
-<p class="p3"><br></p>
-<p class="p1">The <b>key</b> is the name of the event variable to read from.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// \b should thus take twice the value of \a in each event:</p>
-<p class="p5">p = <span class="s3">Pbind</span>(<span class="s4">\a</span>, <span class="s3">Pwhite</span>(1, 10, <span class="s3">inf</span>), <span class="s4">\b</span>, <span class="s3">Pkey</span>(<span class="s4">\a</span>) * 2).asStream;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s5">p.next(())<span class="Apple-tab-span">	</span></span>// for Pbind, must pass in a default event even if empty</p>
-<p class="p7"><br></p>
-<p class="p5">( <span class="s4">'a'</span>: 10, <span class="s4">'b'</span>: 20 )</p>
-<p class="p5">( <span class="s4">'a'</span>: 2, <span class="s4">'b'</span>: 4 )</p>
-<p class="p5">( <span class="s4">'a'</span>: 5, <span class="s4">'b'</span>: 10 )</p>
-<p class="p5">( <span class="s4">'a'</span>: 4, <span class="s4">'b'</span>: 8 )</p>
-<p class="p5">( <span class="s4">'a'</span>: 2, <span class="s4">'b'</span>: 4 )</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Place.html b/Help/Streams-Patterns-Events/Patterns/Place.html
deleted file mode 100644
index a7f84a1..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Place.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Place</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>interlaced embedding of subarrays</p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="ListPattern.html"><span class="s2">ListPattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Place(list, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p1">returns elements in the list :</p>
-<p class="p1"><span class="Apple-tab-span">	</span>if an element is an array itself,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>it embeds the first element when it comes by first time,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the second element when it comes by the second time</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>...</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the nth when it comes by the nth time.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1">see also: <a href="Ppatlace.html"><span class="s2">Ppatlace</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Place</span>(#[1, [2,5], [3, 6]], inf);</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">8.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">1</p>
-<p class="p3">2</p>
-<p class="p3">3</p>
-<p class="p3">1</p>
-<p class="p3">5</p>
-<p class="p3">6</p>
-<p class="p3">1</p>
-<p class="p3">2</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p1">Place used as a sequence of pitches</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>"help-sinegrain"<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">c = <span class="s2">Place</span>(#[0, 0, [0, 4, 7], [1, 5, 8], [2, 6, 9]], <span class="s2">inf</span>) + 67;</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p7">Routine<span class="s3">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">"help-sinegrain"</span>, [<span class="s5">\freq</span>, x.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.17.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Plambda.html b/Help/Streams-Patterns-Events/Patterns/Plambda.html
deleted file mode 100644
index 77a40f0..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Plambda.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #007300}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Plambda<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>create a<span class="Apple-converted-space">  </span>scope (namespace) for enclosed streams</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>superclass: </b><a href="FilterPattern.html"><span class="s3">FilterPattern</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Plambda(pattern, scope)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pattern:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>an event stream</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scope:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>an event with default bindings (can be nil)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// Plet, Pget and Plambda.</p>
-<p class="p5">// Plet(key, stream, return)</p>
-<p class="p5">// Pget(key, default, repeats)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s4">\sine</span><span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out=0, freq=440, sustain=0.05, pan=0, amp=0.1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(<span class="s5">Rand</span>(0.001, 0.02), sustain, <span class="s5">AmpCompA</span>.kr(freq)*amp), doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">Pan2</span>.ar(<span class="s5">SinOsc</span>.ar(freq), pan, env))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2">a = </span>Plambda<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pseq</span>([</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pfindur<span class="s2">(5,</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>Ppar<span class="s2">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s4">\note</span>, <span class="s5">Plet</span>(<span class="s4">\x</span>, <span class="s5">Prand</span>([1, 5, 1, [10, 14]], <span class="s5">inf</span>)), <span class="s4">\dur</span>, 8/3, <span class="s4">\pan</span>, -1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s4">\note</span>, <span class="s5">Plet</span>(<span class="s4">\y</span>, <span class="s5">Pseq</span>([5, 3, 2, 0, [0, 5, 6, 9]], <span class="s5">inf</span>)), <span class="s4">\dur</span>, 0.5, <span class="s4">\pan</span>,1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s4">\note</span>, <span class="s5">Pseq</span>([<span class="s5">Pget</span>(<span class="s4">\x</span>), <span class="s5">Pget</span>(<span class="s4">\y</span>)], <span class="s5">inf</span>) + 12, <span class="s4">\pan</span>, 0, <span class="s4">\dur</span>, 2/3)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pbind</span>(<span class="s4">\note</span>, <span class="s5">Pget</span>(<span class="s4">\x</span>, 0, 6) + [0, 5], <span class="s4">\dur</span>, <span class="s5">Pstutter</span>(<span class="s5">inf</span>, <span class="s5">Prand</span>([2/3, 1/6])))</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], </span><span class="s5">inf</span><span class="s2">).trace(</span><span class="s4">\eventScope</span><span class="s2">) </span>// internally, the values are shared via \eventScope</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="s2">b = </span><span class="s5">Pbindf</span><span class="s2">(a, </span>\instrument<span class="s2">, </span>\sine<span class="s2">, </span>\legato<span class="s2">, 0.1);</span></p>
-<p class="p6">b.play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// this structure remains parallelizable</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s5">Ppar</span>([b, <span class="s5">Pbindf</span>(b, <span class="s4">\ctranspose</span>, 24, <span class="s4">\dur</span>, <span class="s5">Pkey</span>(<span class="s4">\dur</span>) * 0.25)]).play;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Plazy.html b/Help/Streams-Patterns-Events/Patterns/Plazy.html
deleted file mode 100644
index 0b1a8a1..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Plazy.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Plazy<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>instantiate new patterns from a function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Pattern.html"><span class="s2">Pattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Plazy evaluates a function that returns a pattern and embeds it in a stream.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Plazy(func)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>func:</b> A function that returns a pattern or any other valid pattern input</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">see also: <a href="PlazyEnvir.html"><span class="s4">PlazyEnvir</span></a>, <a href="PlazyEnvirN.html"><span class="s4">PlazyEnvirN</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s2">Plazy</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> x, y;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s2">Array</span>.series(rrand(2, 4), [1, 100].choose, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Pshuf</span>(x,1);</p>
-<p class="p4">});</p>
-<p class="p4">x = <span class="s2">Pn</span>(a, <span class="s2">inf</span>).asStream;</p>
-<p class="p4">30.do({ x.next.postln });</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Plazy used to produce a sequence of pitches:</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s2">Plazy</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> x, y;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s2">Array</span>.series(rrand(2, 4), [1, 5].choose, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x.put(x.size.rand, 8+0.1.rand2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Pseq</span>(x,1);</p>
-<p class="p4">});</p>
-<p class="p4">x = <span class="s2">Pn</span>(a, <span class="s2">inf</span>).asStream;</p>
-<p class="p6"><br></p>
-<p class="p7">Routine<span class="s3">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, (x.next*5+70).midicps]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.13.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}).play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p8">// using event streams</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s2">Plazy</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> x, y;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s2">Array</span>.series(rrand(2, 4), [1, 5].choose, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x.put(x.size.rand, 8+0.1.rand2);</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\help_sinegrain<span class="s3">,</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.12,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s2">Pseq</span>(x, 2)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">});</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="s2">Pn</span>(a, <span class="s2">inf</span>).play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PlazyEnvir.html b/Help/Streams-Patterns-Events/Patterns/PlazyEnvir.html
deleted file mode 100644
index 0df0e19..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PlazyEnvir.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #bf0000}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PlazyEnvir<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>instantiate new patterns from a function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Plazy</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Evaluates a function that returns a pattern and embeds it in a stream.</p>
-<p class="p1">In difference to <a href="Plazy.html"><span class="s2">Plazy</span></a>, the function is evaluated using the environment passed in by the stream</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PlazyEnvir(func)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>func:</b> A function that returns a pattern or any other valid pattern input</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">PlazyEnvir</span>({ <span class="s2">arg</span> a=0, b=1; <span class="s2">Pshuf</span>([a, a, b], 2) }); <span class="s3">// a, b default to 0,1</span></p>
-<p class="p3">x = <span class="s2">Pn</span>(a, <span class="s2">inf</span>).asStream;</p>
-<p class="p4"><br></p>
-<p class="p3">10.do { x.next.postln }; <span class="s2">Post</span>.nl;</p>
-<p class="p3">e = (a:100);</p>
-<p class="p3">10.do { x.next(e).postln }; <span class="s2">Post</span>.nl;</p>
-<p class="p3">e = (a:100, b:200);</p>
-<p class="p3">10.do { x.next(e).postln };</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">PlazyEnvir used to produce a Pbind:</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05, pan=0;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Pan2</span>.ar(<span class="s2">SinOsc</span>.ar(freq, 0, env), pan))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4"><br></p>
-<p class="p3">a = <span class="s2">PlazyEnvir</span>({ <span class="s2">arg</span> g=0, h=0, dur=1;</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span>postf(</span>"g: %, h: %, dur: %\n"<span class="s4">, g, h, dur);</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_sinegrain<span class="s4">,</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, dur,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s2">Pseq</span>([g, g, h, g, h], 2)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">});</p>
-<p class="p4"><br></p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p8">// different variants</p>
-<p class="p3">(a <> (g: 0, h: 3, dur:0.2)).play; <span class="s3">// single stream</span></p>
-<p class="p3">(a <> (g: [0, 4], h: [3, -1], dur:0.2)).play; <span class="s3">// same durations, two streams</span></p>
-<p class="p9"><br></p>
-<p class="p8">// for more about the composition operator <> see: Pchain</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Some parameters, like duration, cannot be used in the form of an array in the Pbind.<span class="Apple-converted-space"> </span></p>
-<p class="p1">For full parallel expansion see <a href="PlazyEnvirN.html"><span class="s2">PlazyEnvirN</span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p9"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PlazyEnvirN.html b/Help/Streams-Patterns-Events/Patterns/PlazyEnvirN.html
deleted file mode 100644
index 0dffa78..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PlazyEnvirN.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8b2719}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0033f1}
-span.s3 {color: #001bb9}
-span.s4 {color: #000000}
-span.s5 {color: #2c7014}
-span.s6 {color: #8b2719}
-span.s7 {color: #0024f8}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PlazyEnvirN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>instantiate new patterns from a function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: PlazyEnvir</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Evaluates a function that returns a pattern and embeds it in a stream.</p>
-<p class="p1">In difference to <a href="Plazy.html"><span class="s2">Plazy</span></a>, the function is evaluated using the environment passed in by the stream.</p>
-<p class="p1">In difference to <a href="PlazyEnvir.html"><span class="s2">PlazyEnvir</span></a>, PlayzEnvirN expands to <b>multiple parallel patterns</b> if the function arguments</p>
-<p class="p1">receive multiple channels. In difference to PlazyEnvir, this works only with event streams.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PlazyEnvirN(func)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>func:</b> A function that returns a pattern or any other valid pattern input</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">// example</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out=0, freq=440, sustain=0.05, pan=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">Pan2</span>.ar(<span class="s3">SinOsc</span>.ar(freq, 0, env), pan))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4"><br></p>
-<p class="p5">a = <span class="s3">PlazyEnvirN</span>({ <span class="s3">arg</span> g=0, h=0, dur=1;</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>postf(</span>"g: %, h: %, dur: %\n"<span class="s4">, g, h, dur);</span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_sinegrain<span class="s4">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, dur,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s3">Pseq</span>([g, g, h, g, h], 2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">});</p>
-<p class="p5">);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">// different variants</p>
-<p class="p5">(a <> (g: 0, h: 3, dur:0.2)).play; <span class="s6">// single stream</span></p>
-<p class="p5">(a <> (g: [0, 4], h: [3, -1], dur:0.2)).play; <span class="s6">// same durations, two streams</span></p>
-<p class="p5">(a <> (g: [0, 4], h: [3, -1], dur: [0.2, 0.3])).play; <span class="s6">// different durations, two streams</span></p>
-<p class="p4"><br></p>
-<p class="p3">// for more about the composition operator <> see: <a href="Pchain.html"><span class="s7">Pchain</span></a></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Plprand.html b/Help/Streams-Patterns-Events/Patterns/Plprand.html
deleted file mode 100644
index f90c97a..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Plprand.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Plprand</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values that tend toward lo</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Plprand(lo, hi, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo, hi<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lower and upper boundary of values (default: 0.0 and 1.0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Plprand</span>(0.0, 1.0, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Plprand"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Plprand</span>(0.0, 1.0, <span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// this is equivalent to:</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, min(rrand(0.0, 1.0), rrand(0.0, 1.0)) * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pmeanrand.html b/Help/Streams-Patterns-Events/Patterns/Pmeanrand.html
deleted file mode 100644
index 3e53de2..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pmeanrand.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9e201b}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3c6d12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0023b7}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #3c6d12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pmeanrand</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values that tend toward ((lo + hi) / 2)<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pmeanrand(lo, hi, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo, hi<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lower and upper boundary of values (default: 0.0 and 1.0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Pmeanrand</span>(0.0, 1.0, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Pmeanrand"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pmeanrand</span>(0.0, 1.0, <span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// this is equivalent to:</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, (rrand(0.0, 1.0) + rrand(0.0, 1.0) * 0.5) * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pmono.html b/Help/Streams-Patterns-Events/Patterns/Pmono.html
deleted file mode 100644
index 2d68e26..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pmono.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pmono</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>monophonic event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Superclass: </b><a href="Pattern.html"><span class="s2"><b>Pattern</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pmono(synthDefName, patternPairs)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Plays one instance of a <a href="../../ServerArchitecture/Synth.html"><span class="s2">Synth</span></a>.<span class="Apple-converted-space">  </span>The pattern pairs define changes in that one synth's controls. This node is created when entering a Pmono, and released when the Pmono terminates. There is just one node for the duration of the entire pattern, and it will sustain through each event. If a monophonic phrase requires staccato notes or re-articulation between some notes, see <a href="PmonoArtic.html"><span class="s2">PmonoArtic</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">If event[<span class="s3">\id</span>] is not nil, Pmono simply directs its pattern changes to that node and does not create an extra synth.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p4">p = <span class="s2">Pmono</span>(<span class="s3">\default</span>, <span class="s3">\dur</span>, 0.2, <span class="s3">\freq</span>, <span class="s2">Pwhite</span>(1,8) * 100 ).play</p>
-<p class="p3"><br></p>
-<p class="p4">p.stop</p>
-<p class="p2"><br></p>
-<p class="p5">// multi channel expansion is supported:</p>
-<p class="p4">p = <span class="s2">Pmono</span>(<span class="s3">\default</span>, <span class="s3">\dur</span>, 0.2, <span class="s3">\freq</span>, <span class="s2">Pwhite</span>(1,8) * 100, <span class="s3">\detune</span>, [0,2,5,1]).play</p>
-<p class="p3"><br></p>
-<p class="p4">p.stop</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// the following example will end after 5 seconds</p>
-<p class="p5">// or you can stop it sooner with a stop message</p>
-<p class="p4">(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>p = <span class="s2">Pfindur</span>(5,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pset</span>(<span class="s3">\detune</span>,<span class="s2">Pwhite</span>(0,1.0) * [0,1,3,7],</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Ppar</span>([</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pmono</span>(<span class="s3">\default</span>, <span class="s3">\dur</span>, 0.2, <span class="s3">\freq</span>, <span class="s2">Pwhite</span>(1,8) * 100 ),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pmono</span>(<span class="s3">\default</span>, <span class="s3">\dur</span>, 0.1, <span class="s3">\freq</span>, <span class="s2">Pwhite</span>(1,8) * 300)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>).play;</p>
-<p class="p4">)</p>
-<p class="p4">p.stop;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Note:</b></p>
-<p class="p1">A related approach is to instantiate a Synth yourself and then set its values by using an <a href="../../Collections/Event.html"><span class="s2">Event</span></a> whose "type" is \set, as illustrated here. The user is responsible for ensuring proper synchronization between between Synth creation and pattern execution.</p>
-<p class="p3"><br></p>
-<p class="p5">// First we create something to control</p>
-<p class="p4">x = {<span class="s2">|freq=440, amp=0.6|</span> <span class="s2">MoogFF</span>.ar(<span class="s2">PinkNoise</span>.ar(amp), freq).dup}.play;</p>
-<p class="p3"><br></p>
-<p class="p5">// In the following pattern, the first two keys are the ones that create the monophonic behaviour:</p>
-<p class="p4">(</p>
-<p class="p4">p = <span class="s2">Pbind</span>(</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">\type</span><span class="s4">, </span><span class="s3">\set</span><span class="s4">,<span class="Apple-tab-span">	</span></span>// This tells it we'll be setting parameters of an existing node...</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">\id</span><span class="s4">, x.nodeID,<span class="Apple-tab-span">	</span></span>// ...and this tells it whose parameters we'll be setting</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\freq</span>, <span class="s2">Pwhite</span>(100, 1000),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.2,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, <span class="s2">Pseq</span>((1,0.99 .. 0.1), <span class="s2">inf</span>)</p>
-<p class="p4">).play;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">p.stop</p>
-<p class="p4">x.free</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>SynthDef variant support</b></p>
-<p class="p2"><br></p>
-<p class="p1">SynthDefs allow alternate sets of default values to be defined (see "Variants" in <a href="../../ServerArchitecture/SynthDef.html"><span class="s2">SynthDef</span></a> help). Most event patterns, such as Pbind, specify the variant using the variant key in the output events. (Note that variants are always optional.) In Pmono, the mechanism is different because the the SynthDef name, including variant suffix, must be known before evaluating the first event. So, the variant suffix is provided in the first Pmono argument:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">Pmono</span><span class="s4">(</span>'<b>synthDefName.variant</b>'<span class="s4">, pairs...)</span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PmonoArtic.html b/Help/Streams-Patterns-Events/Patterns/PmonoArtic.html
deleted file mode 100644
index 2f76b2c..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PmonoArtic.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PmonoArtic<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>partly</b><span class="s1"><b> </b></span><b>monophonic event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Superclass: </b><a href="Pmono.html"><span class="s2"><b>Pmono</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PmonoArtic(synthDefName, patternPairs)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Like Pmono, PmonoArtic plays one synth at a time (where successive events change the parameters of the existing synth node). PmonoArtic, however, allows events to re-articulate and supports staccato in the middle of a monophonic phrase.</p>
-<p class="p2"><br></p>
-<p class="p1">If an event specifies a 'sustain' value shorter than the event delta, it means the synth should not sustain all the way through to the next event. In that case, the node will be released according to 'sustain' and the next event will start a new synth.</p>
-<p class="p2"><br></p>
-<p class="p1">If sustain >= delta, the synth will play through and its parameters will change (just like Pmono).</p>
-<p class="p2"><br></p>
-<p class="p1">Since sustain is calculated as ~dur * ~legato, this means ~legato < 1.0 causes re-articulation while ~legato >= 1.0 causes a slur.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Example:</b></p>
-<p class="p2"><br></p>
-<p class="p3">// This SynthDef has a harder attack than the default, illustrating rearticulation more clearly.</p>
-<p class="p4">(</p>
-<p class="p5">SynthDef<span class="s3">(</span><span class="s4">\sawpulse</span><span class="s3">, { </span>|out, freq = 440, gate = 0.5, plfofreq = 6, mw = 0, ffreq = 2000, rq = 0.3, freqlag = 0.05, amp = 1|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> sig, plfo, fcurve;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>plfo = <span class="s2">SinOsc</span>.kr(plfofreq, mul:mw, add:1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>freq = <span class="s2">Lag</span>.kr(freq, freqlag) * plfo;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>fcurve = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.adsr(0, 0.3, 0.1, 20), gate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>fcurve = (fcurve - 1).madd(0.7, 1) * ffreq;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig = <span class="s2">Mix</span>.ar([<span class="s2">Pulse</span>.ar(freq, 0.9), <span class="s2">Saw</span>.ar(freq*1.007)]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig = <span class="s2">RLPF</span>.ar(sig, fcurve, rq)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.adsr(0.04, 0.2, 0.6, 0.1), gate, doneAction:2)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* amp;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, sig ! 2)</p>
-<p class="p4">}).add;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">p = <span class="s2">PmonoArtic</span>(<span class="s4">\sawpulse</span>, <span class="s4">\dur</span>, 0.2, <span class="s4">\freq</span>, <span class="s2">Pwhite</span>(1,8) * 100, <span class="s4">\legato</span>, <span class="s2">Pwrand</span>(#[0.5, 1.0], #[0.1, 0.9], <span class="s2">inf</span>) ).play;</p>
-<p class="p6"><br></p>
-<p class="p4">p.stop;</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pmul.html b/Help/Streams-Patterns-Events/Patterns/Pmul.html
deleted file mode 100644
index b80d6a1..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pmul.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pmul<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>multiply with value of a key in event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Pset.html"><span class="s2">Pset</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pmul(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="Padd.html"><span class="s2">Padd</span></a>, <a href="Pmulp.html"><span class="s2">Pmulp</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pmul</span>(<span class="s3">\freq</span>, 801, <span class="s2">Pbind</span>(<span class="s3">\freq</span>, 100));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern or a stream. the resulting stream ends when that incoming stream ends</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pmul</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([3, 4, 6], 2), <span class="s2">Pbind</span>(<span class="s3">\freq</span>, 100));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, gate=1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.asr(0.001, 1, 0.2), gate, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s4">a = </span><span class="s2">Pbind</span><span class="s4">(</span>\dur<span class="s4">, 0.5, </span>\instrument<span class="s4">, </span>\sinegrain<span class="s4">, </span>\freq<span class="s4">, 440);</span></p>
-<p class="p3">b = <span class="s2">Pmul</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([1, 2, 3, 4, 5, 6, 7], <span class="s2">inf</span>), a);</p>
-<p class="p3">b.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pmulp.html b/Help/Streams-Patterns-Events/Patterns/Pmulp.html
deleted file mode 100644
index c0c44eb..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pmulp.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pmulp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>multiply with each value of a pattern to value of a key in event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Psetp.html"><span class="s2">Psetp</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pmulp(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">multiplies a value in an event stream until it ends, repeats this with new values until</p>
-<p class="p1">the value stream ends.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern, a stream or an array. the resulting stream ends when that incoming stream ends.</p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="Pmul.html"><span class="s2">Pmul</span></a>, <a href="Paddp.html"><span class="s2">Paddp</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pmulp</span>(\freq, Pseq([2, 3, pi],inf), <span class="s2">Pbind</span>(<span class="s3">\freq</span>, Pseq([100, 200, 300])));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.02;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain), 1, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pbind</span>(<span class="s3">\freq</span>, Pseq([500, 600, 700]), <span class="s3">\instrument</span>, <span class="s3">\</span><span class="s5">sinegrain</span>);</p>
-<p class="p3">a = <span class="s2">Pmulp</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([0.5, 0.9, 0.8], <span class="s2">inf</span>), a);</p>
-<p class="p3">a.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pmulpre.html b/Help/Streams-Patterns-Events/Patterns/Pmulpre.html
deleted file mode 100644
index b11e17e..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pmulpre.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pmulpre<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>multiplies with value of a key in event stream, before it is passed up</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pset(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">multiplies with a value in an event, <b>before it is passed up</b> the stream.</p>
-<p class="p1">to multiply with the value after it has been passed down, use <a href="Pmul.html"><span class="s2">Pmul</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pmulpre</span>(<span class="s3">\note</span>, 2, <span class="s2">Pbind</span>(<span class="s3">\note</span>, Pseq([1, 2, 3])));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.default).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">Pmulpre does not override incoming values:</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pmulpre</span>(\freq, 801, Pset(\freq, 500, <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.2)));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.default).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern or a stream. the resulting stream ends when that incoming stream ends</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pmulpre</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([401, 801], 2), <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.02;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain), 1, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5, <span class="s3">\instrument</span>, <span class="s3">\</span><span class="s5">sinegrain</span>);</p>
-<p class="p3">b = <span class="s2">Pmulpre</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([1, 2, 3], <span class="s2">inf</span>), a);</p>
-<p class="p3">b.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pn.html b/Help/Streams-Patterns-Events/Patterns/Pn.html
deleted file mode 100644
index d23d0da..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pn.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pn</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>repeatedly embed a pattern</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>superclass: </b><a href="FilterPattern.html"><span class="s3">FilterPattern</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pn(pattern, repeats, key)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Repeats the enclosed pattern <b>repeats</b> times.</p>
-<p class="p2"><br></p>
-<p class="p1">If <b>key</b> is non-nil, it sets the value of that key to true whenever it restarts the pattern.</p>
-<p class="p1">This can be used to advance Patterns enclosed by <a href="Pgate.html"><span class="s4">Pgate</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s4">var</span> a, b;</p>
-<p class="p5"><span class="s2">a = </span><span class="s4">Pn</span><span class="s2">(</span><span class="s4">Pseq</span><span class="s2">(#[1, 2, 3], 1), 4);<span class="Apple-tab-span">	</span></span>// repeat pattern four times</p>
-<p class="p4">b = a.asStream;</p>
-<p class="p4">16.do({ b.next.postln; });</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p5">// sound example</p>
-<p class="p4">(</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s4">var</span> a;</p>
-<p class="p4">a = <span class="s4">Pn</span>(<span class="s4">Pshuf</span>([1, 2, 2, 3, 3, 3], 4)).asStream;</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}</p>
-<p class="p4">}.fork;</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pnaryop.html b/Help/Streams-Patterns-Events/Patterns/Pnaryop.html
deleted file mode 100644
index 8f91f23..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pnaryop.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0024f8}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pnaryop<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>n-ary operator pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pnaryop(operator, a, arglist)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that applies the n-ary operator to the stream values of the receiver, taking n-1 streams as arguments. Usually, this is the result of applying an n-ary operator (i.e. a method with more than one argument) to a pattern.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>operator </b>- operator to be applied</p>
-<p class="p1"><b>a</b> - a pattern (or compatible pattern input)</p>
-<p class="p1"><b>arglist</b> - a list of patterns (or compatible pattern inputs)</p>
-<p class="p2"><br></p>
-<p class="p1">examples of n-ary operators are: blend, linlin, linexp, explin, expexp, clip, fold, wrap.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also: </b><a href="Pbinop.html"><span class="s2">Pbinop</span></a>, <a href="Punop.html"><span class="s2">Punop</span></a>, <a href="../../Core/NAryOpFunction.html"><span class="s3">NAryOpFunction</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> a;</p>
-<p class="p5">a = <span class="s4">Pnaryop</span>(<span class="s5">\wrap</span>, <span class="s4">Pseries</span>(0, 1, 12), [3, 7]);</p>
-<p class="p5">a.asStream.all;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// this is the same as:</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> a;</p>
-<p class="p5">a = <span class="s4">Pseries</span>(0, 1, 12).wrap(3, 7);</p>
-<p class="p5">a.asStream.all;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// the scale argument can also be a pattern:</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> a;</p>
-<p class="p5">a = <span class="s4">Pnaryop</span>(<span class="s5">\wrap</span>, <span class="s4">Pseries</span>(0, 1, 12), [<span class="s4">Pseq</span>([3, 4, 5], <span class="s4">inf</span>), <span class="s4">Pseq</span>([9, 7], <span class="s4">inf</span>)]);</p>
-<p class="p5">a.asStream.all;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// common cases:</p>
-<p class="p5"><span class="s4">Pwhite</span>(0, 1, <span class="s4">inf</span>).linexp(0, 1, 200, 1000);</p>
-<p class="p5"><span class="s4">Pwhite</span>(0, 1, <span class="s4">inf</span>).degreeToKey([0, 1, 3, 5, 7, 9, 11], 10);</p>
-<p class="p5">blend(<span class="s4">Pseq</span>([1, 2, 3], <span class="s4">inf</span>), <span class="s4">Pseq</span>([3, 2, 1, 0], <span class="s4">inf</span>), <span class="s4">Pseries</span>(0, 0.01, <span class="s4">inf</span>));<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s6">(</span>\help_sinegrain<span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05, amp=0.1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2, amp), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> a;</p>
-<p class="p5">a = <span class="s4">Pnaryop</span>(<span class="s5">\wrap</span>, <span class="s4">Pseries</span>(0, 1, 12), [3, 7]).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.do { <span class="s4">|val|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, (val + 72) .midicps.postln]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p7">Pbind<span class="s6">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.1,</p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>\instrument<span class="s6">, </span>\help_sinegrain<span class="s6">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\note</span>, <span class="s4">Pnaryop</span>(<span class="s5">\wrap</span>, <span class="s4">Pseries</span>(0, 1, 12), [3, 7]);</p>
-<p class="p3"><br></p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// these are the same as:</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> a;</p>
-<p class="p5">a = <span class="s4">Pseries</span>(0, 1, 12).wrap(3, 7).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.do { <span class="s4">|val|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, (val + 72) .midicps.postln]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p7">Pbind<span class="s6">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.1,</p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>\instrument<span class="s6">, </span>\help_sinegrain<span class="s6">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">\note</span>, <span class="s4">Pwhite</span>(0, 12, <span class="s4">inf</span>).wrap(3, 7);</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Ppar.html b/Help/Streams-Patterns-Events/Patterns/Ppar.html
deleted file mode 100644
index d25b47b..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Ppar.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ppar<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>embed event streams in parallel</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="ListPattern.html"><span class="s2">ListPattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Embeds several event streams so that they form a single output stream with all their events in temporal order.</p>
-<p class="p1">When one stream ends, the other streams are further embedded until all have ended.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ppar(list, repeats)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>list:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>list of patterns or streams</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>repeats:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>repeat the whole pattern n times (default: 1)</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// see the delta values in the resulting events</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a, b, c, t;</p>
-<p class="p6">a = <span class="s2">Pbind</span>(<span class="s3">\x</span>, <span class="s2">Pseq</span>([1, 2, 3, 4]), <span class="s3">\dur</span>, 1);</p>
-<p class="p6">b = <span class="s2">Pbind</span>(<span class="s3">\x</span>, <span class="s2">Pseq</span>([10, 20, 30, 40]), <span class="s3">\dur</span>, 0.4);</p>
-<p class="p6">c = <span class="s2">Ppar</span>([a, b]);</p>
-<p class="p6">t = c.asStream;</p>
-<p class="p6">20.do({ t.next(<span class="s2">Event</span>.default).postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p5">// sound example</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a, b;</p>
-<p class="p6">a = <span class="s2">Pbind</span>(<span class="s3">\note</span>, <span class="s2">Pseq</span>([7, 4, 0], 4), <span class="s3">\dur</span>, <span class="s2">Pseq</span>([1, 0.5, 1.5], <span class="s2">inf</span>));</p>
-<p class="p6">b = <span class="s2">Pbind</span>(<span class="s3">\note</span>, <span class="s2">Pseq</span>([5, 10, 12], 4), <span class="s3">\dur</span>, 1);</p>
-<p class="p6"><span class="s2">Ppar</span>([ a, b ]).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Ppatlace.html b/Help/Streams-Patterns-Events/Patterns/Ppatlace.html
deleted file mode 100644
index af0fdcb..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Ppatlace.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 20.0px Helvetica}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ppatlace</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>interlace streams</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Pseq.html"><span class="s3">Pseq</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Similar to <a href="Place.html"><span class="s3">Place</span></a>, but the list is an array of streams or patterns. The results of each stream will be output in turn.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ppatlace(list, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">// example</p>
-<p class="p4"><br></p>
-<p class="p5">p = <span class="s3">Ppatlace</span>([<span class="s3">Pwhite</span>(1, 5, 5), <span class="s3">Pgeom</span>(10, 1.01, 10)], <span class="s3">inf</span>);</p>
-<p class="p5">x = p.asStream;</p>
-<p class="p5">x.all;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s4">5<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// from Pwhite</p>
-<p class="p3"><span class="s4">10<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// from Pgeom</p>
-<p class="p3"><span class="s4">4<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// from Pwhite</p>
-<p class="p3"><span class="s4">10.1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// etc....</p>
-<p class="p5">5</p>
-<p class="p5">10.201</p>
-<p class="p5">4</p>
-<p class="p5">10.30301</p>
-<p class="p5">2</p>
-<p class="p5">10.4060401</p>
-<p class="p5">10.510100501</p>
-<p class="p5">10.61520150601</p>
-<p class="p5">10.72135352107</p>
-<p class="p5">10.828567056281</p>
-<p class="p5">10.936852726844</p>
-<p class="p6">nil</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Note that the Ppatlace has an infinite number of repeats, but the resulting stream is finite because the member streams are all finite. When the first stream (Pwhite) comes to an end, it is skipped and you see only the second stream until it stops.</p>
-<p class="p2"><br></p>
-<p class="p1">If even one member stream is infinite and Ppatlace has infinite repeats, the Ppatlace stream will also be infinite.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ppatlace as a sequence of pitches:</b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">// interlace two streams</p>
-<p class="p5">(</p>
-<p class="p6">var<span class="s4"> c = </span>Ppatlace<span class="s4">([</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([0, 0, 0, 0, 8, 0, 8], <span class="s3">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseries</span>(1, 1, 32)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>], <span class="s3">inf</span>) + 67;</p>
-<p class="p5">x = c.asStream;</p>
-<p class="p4"><br></p>
-<p class="p6">Routine<span class="s4">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, x.next.midicps, <span class="s5">\dur</span>, 0.2]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.17.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">// a more complicated example:</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s4">c = </span>Ppatlace<span class="s4">([</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>Pxrand<span class="s4">([</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>(#[0, -2, -3, -5, -7], 1), <span class="s3">Pwhite</span>(-12, 4, 3), <span class="s3">Pshuf</span>(#[0, -2, -3, -5, -7], 1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>], <span class="s3">inf</span>),</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>Pxrand<span class="s4">([</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>(#[0, 2, 4, 5, 7], 1), <span class="s3">Pwhite</span>(-4, 12, 3), <span class="s3">Pshuf</span>(#[0, 2, 4, 5, 7], 1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>], <span class="s3">inf</span>)</p>
-<p class="p5">], <span class="s3">inf</span>) + 67;</p>
-<p class="p5">x = c.asStream;</p>
-<p class="p4"><br></p>
-<p class="p6">Routine<span class="s4">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s5">\freq</span>, x.next.midicps, <span class="s5">\dur</span>, 0.2]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.17.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Ppatmod.html b/Help/Streams-Patterns-Events/Patterns/Ppatmod.html
deleted file mode 100644
index a8bbe35..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Ppatmod.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ppatmod</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>modify a given pattern before passing it into the stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Pattern</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ppatmod(pattern, func, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>func - </b>A function that modifies the enclosed pattern and embeds it in the stream.</p>
-<p class="p2"><br></p>
-<p class="p1">see also <a href="Plazy.html"><span class="s2">Plazy</span></a></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">(</p>
-<p class="p4"><span class="s3">a = </span>Ppatmod<span class="s3">(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([0, 0, 0, 0],1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> pat, i;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> list;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>list = pat.list;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pat.list = list.put(list.size.rand, 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}, <span class="s4">inf</span>);</p>
-<p class="p5"><br></p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">30.do({ x.next.postln });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Ppatmod used to modify a pattern that produces a sequence of pitches:</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">(</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s4">Pn</span>(</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Ppatmod<span class="s3">(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([0, 0, 0, 0],1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> pat, i;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> list;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>list = pat.list;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pat.list = list.put(list.size.rand, 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}, 15),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s4">inf</span>).asStream;</p>
-<p class="p5"><br></p>
-<p class="p4">Routine<span class="s3">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, (a.next*5+77).midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.13.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Ppoisson.html b/Help/Streams-Patterns-Events/Patterns/Ppoisson.html
deleted file mode 100644
index a7e57ad..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Ppoisson.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ppoisson<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values that follow a Poisson Distribution (positive integer values)</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ppoisson(mean, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>mean<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>The mean of the distribution (defaults to 1)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Ppoisson</span>(1.0, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Ppoisson"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a, c, w;</p>
-<p class="p5">a = <span class="s2">Ppoisson</span>(10.0, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Ppoisson"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Ppoisson</span>(1.0,<span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, (a.next + 72).midicps]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Ppoisson</span>(7.0,<span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, (a.next + 72).midicps]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pprob.html b/Help/Streams-Patterns-Events/Patterns/Pprob.html
deleted file mode 100644
index 41bc459..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pprob.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #bf0000}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pprob<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>random values with arbitrary probability distribution</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">creates an integral table on instantiation (cpu intensive) which is then used by the streams</p>
-<p class="p3">to generate random values efficiently.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pprob(distribution, lo, hi, length, tableSize)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>distribution</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>desired probability distribution (histogram)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>lo, hi</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>lower and upper bounds of the resulting values</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>length</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>number of values to repeat</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>tableSize</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>resample table to this size. If the size of the distribution is<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>smaller than 64, it is (linearly) resampled to this minimum size</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>distribution_(list)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the distribution, the table is recalculated</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>tableSize_(n)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the resample size, the table is recalculated</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// a consistency test</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> a = <span class="s2">Pprob</span>([0,0,0,0,1,1,1,1,3,3,6,6,9].scramble);</p>
-<p class="p7"><span class="s2">var</span> b = a.asStream;</p>
-<p class="p7">b.nextN(800).sort.plot(<span class="s3">"sorted distribution"</span>);</p>
-<p class="p8"><span class="s4">b.nextN(800).sort.plot(</span>"sorted distribution, again"<span class="s4">);</span></p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// comparison: emulate a linrand</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> a, b, x, y;</p>
-<p class="p7">a = <span class="s2">Pprob</span>([1, 0]);</p>
-<p class="p7">x = <span class="s2">Pfunc</span>({ 1.0.linrand });</p>
-<p class="p4"><br></p>
-<p class="p7">b = a.asStream;</p>
-<p class="p7">y = x.asStream;</p>
-<p class="p4"><br></p>
-<p class="p7">postf(<span class="s3">"Pprob mean: % linrand mean: % \n"</span>, b.nextN(800).mean, y.nextN(800).mean);</p>
-<p class="p4"><br></p>
-<p class="p7">b.nextN(800).sort.plot(<span class="s3">"this is Pprob"</span>);</p>
-<p class="p7">y.nextN(800).sort.plot(<span class="s3">"this is linrand"</span>);</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// compare efficiency</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s4">bench { </span><span class="s2">Pprob</span><span class="s4">([0, 1]) } </span>// this is fairly expensive</p>
-<p class="p7">bench { 16.do { <span class="s2">Pseq</span>([0, 1] ! 32) } }</p>
-<p class="p4"><br></p>
-<p class="p7">x = <span class="s2">Pprob</span>([0, 1]).asStream;</p>
-<p class="p7">y = <span class="s2">Pseq</span>([0, 1], inf).asStream;</p>
-<p class="p4"><br></p>
-<p class="p7">bench { 100.do { x.next } }; <span class="s5">// this very efficient</span></p>
-<p class="p7">bench { 100.do { y.next } };</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// sound example</p>
-<p class="p7">(</p>
-<p class="p9"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> t;</p>
-<p class="p7">a = <span class="s2">Pprob</span>([0, 0, 1, 0, 1, 1, 0, 0], 60, 80);</p>
-<p class="p7">t = a.asStream;</p>
-<p class="p10">Routine<span class="s4">({</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, t.next.midicps]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.01.wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>})</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p7">a.distribution = [0, 1];</p>
-<p class="p7">a.distribution = [1, 0];</p>
-<p class="p7">a.distribution = [0, 0, 0, 0, 1, 0];</p>
-<p class="p7">a.distribution = [0, 1, 0, 0, 0, 0];</p>
-<p class="p4"><br></p>
-<p class="p6">// higher resolution results in a more accurate distribution:</p>
-<p class="p7">a.tableSize = 512;</p>
-<p class="p7">a.tableSize = 2048;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pprotect.html b/Help/Streams-Patterns-Events/Patterns/Pprotect.html
deleted file mode 100644
index c06ad4e..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pprotect.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pprotect<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>evaluate a function when an error occured in the thread</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: FilterPattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pprotect(pattern func)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>pattern<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>any pattern</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>func<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>the function to be evaluated when an error occurs.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The error and the thread are passed as arguments to the function.<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> x;</p>
-<p class="p6"><span class="s2">var</span> func = { <span class="s3">"an error happened"</span>.postln };</p>
-<p class="p6">a = <span class="s2">Pprotect</span>(<span class="s2">Pseq</span>([1, 3, 3, <span class="s2">Pfuncn</span>({ <span class="s2">Error</span>.throw }), 2]), func);</p>
-<p class="p6">x = <span class="s2">Pbind</span>(<span class="s4">\degree</span>, a, <span class="s4">\dur</span>, 0.5).play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pproto.html b/Help/Streams-Patterns-Events/Patterns/Pproto.html
deleted file mode 100644
index 7a32d08..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pproto.html
+++ /dev/null
@@ -1,227 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0010c4}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #c40000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0010c4}
-span.s3 {color: #007200}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pproto<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>provide a proto event for an event stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Pattern.html"><span class="s2">Pattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*new(makeFunction, patternOrPatternArray, cleanupFunction)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Pproto uses the <b>makeFunction</b> to allocate resources (buffers, buses, groups) and create a protoEvent that makes those resources available to a pattern. It is fully compatible with non-realtime synthesis using <b>render</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>makeFunction<span class="Apple-converted-space"> </span></b> "makes" the protoEvent (i.e.protoEvent is currentEnvironment).<span class="Apple-converted-space">  </span>Typically, it defines and yields a sequence of events that create the needed resources using the following eventTypes:</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>\allocRead<span class="Apple-tab-span">	</span>load a file from ~path</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>starting at ~firstFileFrame</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reading ~numFrames sample frames</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\cue<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cue a file for DiskIn, with ~bufferSize frames</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\table<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>load ~amps directly into a buffer</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\sine1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>generate a buffer from ~amps</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\sine2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>generate a buffer from ~freqs, ~amps</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\sine3<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>generate a buffer from ~freqs, ~amps, ~pahses</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\cheby<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>generate a waveshape buffer from ~amps</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\audioBus<span class="Apple-tab-span">	</span>allocate ~channels consecutive audio buses</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\controlBus<span class="Apple-tab-span">	</span>allocate ~channels consecutive control buses</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>\on<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>create a synth</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Note: </b>these eventTypes will allocate their own buffers and buses unless they are specified.<span class="Apple-converted-space">  </span>To support this, the key <b>\bufNum </b>is used rather than <b>\bufnum </b>which has a default value assigned.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">When Pproto ends, these eventTypes will respond to the <b>cleanup </b>call by <b>deallocating any resources they have allocated</b>. Do not assume your buffers, buses etc. will exist after Pproto stops!</p>
-<p class="p2"><br></p>
-<p class="p1">The function yields each event.<span class="Apple-converted-space">  </span>That event is then performed with possible modifications by enclosing patterns and the player (either an EventStreamPlayer or a ScoreStreamPlayer).<span class="Apple-converted-space">  </span>The resultant event is returned to the function where it can be assigned to a key within the protoEvent.</p>
-<p class="p2"><br></p>
-<p class="p1">The patternarray is played using Pfpar, a variant of Ppar that ends when any of its subpatterns end.<span class="Apple-converted-space">  </span>In this way,</p>
-<p class="p1">you can use Pproto to create effects that can be controlled by a pattern that runs in parallel with the note generating pattern and ends together with that note generating pattern (see example 0 below).</p>
-<p class="p2"><br></p>
-<p class="p1">A <b>cleanupFunction</b> that deallocates resources when the pattern ends or is stopped is automatically created. It<span class="Apple-converted-space">  </span>can be replaced with a user defined cleanup if needed.<span class="Apple-converted-space">  </span>This function receives two arguments: <b>proto</b>, the prototype event, and <b>flag</b>, which is set false if all nodes have been freed already by <b>CmdPeriod.</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Example 0, using an effect with parallel control.</b></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">SynthDef</span>(<span class="s3">\echo</span>, { <span class="s2">arg</span> out=0, maxdtime=0.2, dtime=0.2, decay=2, gate=1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 5, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">CombL</span>.ar(in * env, maxdtime, <span class="s2">Lag</span>.kr(dtime, 4), decay, 1, in));</p>
-<p class="p4">}, [<span class="s3">\ir</span>, <span class="s3">\ir</span>, 0.1, 0.1, 0]).add;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">SynthDef</span>(<span class="s3">\fm</span>, { <span class="s2">arg</span> out=0,<span class="Apple-converted-space">  </span>freq, index, decay=2, gate=1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> env, in;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>env = <span class="s2">Linen</span>.kr(gate, 0.05, 1, 5, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">XOut</span>.ar(out, env, <span class="s2">SinOsc</span>.ar(freq, in * index));</p>
-<p class="p4">}).add;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">Pproto<span class="s4">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>~fsynth = ( type: <span class="s3">\on</span>, instrument: <span class="s3">\fm</span>, freq: 4, index: 1, addAction: 1, db: -30).yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~fControl = [<span class="s3">\set</span>, ~fsynth[<span class="s3">\id</span>], ~fsynth[<span class="s3">\msgFunc</span>] ];</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>~synth = ( type: <span class="s3">\on</span>, instrument: <span class="s3">\echo</span>, addAction: 1).yield;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~sControl = [<span class="s3">\set</span>, ~synth[<span class="s3">\id</span>], ~synth[<span class="s3">\msgFunc</span>] ];</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>}, [<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(*[</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[type, id, msgFunc],<span class="Apple-tab-span">	</span><span class="s2">Pkey</span>(<span class="s3">\fControl</span>),</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq:<span class="Apple-tab-span">	</span><span class="s2">Pseg</span>([0,1], 10).linexp(0,1, 0.1, 1000),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index:<span class="Apple-tab-span">	</span><span class="s2">Pseg</span>([0,1], 10).linexp(0,1, 0.1, 100),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur:  0.1,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>]),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(*[</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[type, id, msgFunc],<span class="Apple-tab-span">	</span><span class="s2">Pkey</span>(<span class="s3">\sControl</span>),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dtime:<span class="Apple-tab-span">	</span><span class="s2">Pwhite</span>(0,0.2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>decay:<span class="Apple-tab-span">	</span><span class="s2">Pwhite</span>(0.1,2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur:  1,</p>
-<p class="p4"><span class="Apple-tab-span">	</span>]),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(*[</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instrument: <span class="s3">\default</span>,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq: <span class="s2">Pwhite</span>(1,16) * 100,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur: 0.2,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>db:<span class="Apple-tab-span">	</span>0</p>
-<p class="p4"><span class="Apple-tab-span">	</span>])</p>
-<p class="p4"><span class="Apple-tab-span">	</span>]</p>
-<p class="p4">).play</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Example 1, loading and granulating a sound file.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5">SynthDef<span class="s4">(</span><span class="s5">\help_playbuf</span><span class="s4">, { </span>| out=0, bufnum = 0, rate = 1, startPos = 0, amp = 0.1, sustain = 1, pan = 0, loop = 1|</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> audio;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>rate = rate * <span class="s2">BufRateScale</span>.kr(bufnum);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>startPos = startPos * <span class="s2">BufFrames</span>.kr(bufnum);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">BufRd</span>.ar(1, bufnum, <span class="s2">Phasor</span>.ar(0, rate, startPos, <span class="s2">BufFrames</span>.ir(bufnum)), 1, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">EnvGen</span>.ar(<span class="s2">Env</span>.sine, 1, timeScale: sustain, doneAction: 2) * audio;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">Pan2</span>.ar(audio, pan, amp);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">OffsetOut</span>.ar(out, audio);</p>
-<p class="p4">}).add;</p>
-<p class="p3"><br></p>
-<p class="p4">a = <span class="s2">Pproto</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~newgroup = (type:<span class="Apple-tab-span">	</span><span class="s3">\group</span>).yield;</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span>~sf1 =<span class="Apple-converted-space">  </span></span><span class="s2">SoundFile</span><span class="s4">(</span>"sounds/a11wlk01-44_1.aiff"<span class="s4">).asEvent.yield;</span></p>
-<p class="p7">//<span class="Apple-tab-span">	</span>(type: \on).yield</p>
-<p class="p4">},<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(*[</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instrument:<span class="Apple-tab-span">	</span><span class="s5">\help_playbuf</span>,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pseg</span>([0,0,0.25,0.5, 0.75, 1],10).linexp(0,1,0.01,2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>legato:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>startPos:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pn</span>(<span class="s2">Pseg</span>([0,1], 20), <span class="s2">inf</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rate:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pwhite</span>(1, 1).midiratio,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>group:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pkey</span>(<span class="s3">\newgroup</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pkey</span>(<span class="s3">\sf1</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>])</p>
-<p class="p4">);</p>
-<p class="p4">a.play;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p7">//a.render("sounds/test.aif", 40)</p>
-<p class="p7">//SoundFile.openRead("sounds/test.aif").play</p>
-<p class="p3"><br></p>
-<p class="p1"><b>Example 2, loading a waveform buffer and modifying it in performance</b></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">SynthDef</span>(<span class="s5">\osc</span>,{ <span class="s2">arg</span> out=0, bufnum=0, numbufs = 8, sustain = 1, freq = 500, amp = 0.1, pan = 0;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> audio;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">Osc</span>.ar(bufnum, freq);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">EnvGen</span>.ar(<span class="s2">Env</span>.linen(0.01, 0.90,0.9), 1, timeScale: sustain, doneAction: 2) * audio;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">Pan2</span>.ar(audio, pan, amp);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">OffsetOut</span>.ar(out, audio);</p>
-<p class="p4">}).add;</p>
-<p class="p3"><br></p>
-<p class="p4">b = <span class="s2">Pproto</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~bufnum =<span class="Apple-tab-span">	</span>(type: <span class="s3">\sine1</span>, amps: 1.0/[1,2,3,4,5,6] ).yield;</p>
-<p class="p4">},</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>Ppar<span class="s4">([</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(*[</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instrument: <span class="Apple-tab-span">	</span><span class="s3">\osc</span>,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pwhite</span>(1, 16) * 100,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>detune:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pfunc</span> { <span class="s2">Array</span>.fill(3.rand + 1, {3.0.rand}) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Prand</span>([2,2,2.5,1],10),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>db:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pn</span>(<span class="s2">Pstep</span>([-10, -20, -20, -15, -20, -20, -20], 0.5) ),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>legato:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pwhite</span>(0.0,1).linexp(0,1,0.1, 3)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(*[</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>type:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\sine1</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amps:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pseg</span>(<span class="s2">Pfunc</span>{ <span class="s2">| ev |</span> <span class="s2">Array</span>.fill(10, {1.0.rand}) }, 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numOvertones:<span class="Apple-tab-span">	</span><span class="s2">Pseg</span>(<span class="s2">Pwhite</span>(0, 9), 10).asInteger,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amps:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pfunc</span>{ <span class="s2">| ev |</span> ev[<span class="s3">\amps</span>].copyRange(0, ev[<span class="s3">\numOvertones</span>]) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufNum:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pkey</span>(<span class="s3">\bufnum</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p4"><span class="Apple-tab-span">	</span>])</p>
-<p class="p4">);</p>
-<p class="p4">b.play</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p7">//b.render("sounds/test.aif", 40)</p>
-<p class="p7">//SoundFile.openRead("sounds/test.aif").play</p>
-<p class="p3"><br></p>
-<p class="p1"><b>Example 3, loading a waveshaper buffer and modifying it in performance</b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p4"><span class="s2">SynthDef</span>(<span class="s5">\shaper</span>,{ <span class="s2">arg</span> out=0, bufnum=0, numbufs = 8, sustain = 1, freq = 500, amp = 0.1, pan = 0;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> audio;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">SinOsc</span>.ar(freq);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">EnvGen</span>.ar(<span class="s2">Env</span>.linen(0.4, 0.50,0.9), 1, timeScale: sustain, doneAction: 2) * audio;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">Shaper</span>.ar(bufnum, audio);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>audio = <span class="s2">Pan2</span>.ar(audio, pan, amp);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">OffsetOut</span>.ar(out, <span class="s2">LeakDC</span>.ar(audio));</p>
-<p class="p4">}).add;</p>
-<p class="p3"><br></p>
-<p class="p4">c = <span class="s2">Pproto</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>~bufnum = (type: <span class="s3">\cheby</span>, amps: 1.0/[1,2,3,4,5,6] ).yield;</p>
-<p class="p4">},</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>Ppar<span class="s4">([</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(*[</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>instrument: <span class="Apple-tab-span">	</span><span class="s3">\shaper</span>,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pwhite</span>(1, 16) * 100,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>detune:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pfunc</span> { <span class="s2">Array</span>.fill(3.rand + 1, {3.0.rand}) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Prand</span>([2,2,2.5,1],<span class="s2">inf</span>),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>db:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pn</span>(<span class="s2">Pstep</span>([-10, -20, -20, -15, -20, -20, -20], 0.5) ),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>legato:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pwhite</span>(0.0,1).linexp(0,1,1.1, 5)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(*[</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>type:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\cheby</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amps:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pseg</span>(<span class="s2">Pfunc</span>{ <span class="s2">| ev |</span> <span class="s2">Array</span>.fill(10, {1.0.rand}) }, 4),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p4"><span class="Apple-tab-span">	</span>])</p>
-<p class="p4">);</p>
-<p class="p4">c.play</p>
-<p class="p4">)</p>
-<p class="p7">//c.render("sounds/test.aif", 40)</p>
-<p class="p7">//SoundFile("sounds/test.aif").play</p>
-<p class="p7">//</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Prand.html b/Help/Streams-Patterns-Events/Patterns/Prand.html
deleted file mode 100644
index da207fc..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Prand.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3d6d1d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b4}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0026b4}
-span.s3 {color: #0000ff}
-span.s4 {color: #9d1c12}
-span.s5 {color: #000000}
-span.s6 {color: #3d6d1d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Prand</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>embed values randomly chosen from a list</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="ListPattern.html"><span class="s2">ListPattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Embed one item from the list at random for each repeat.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="Pxrand.html"><span class="s3">Pxrand</span></a>, <a href="Pwrand.html"><span class="s3">Pwrand</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Prand</span>([1, 2, 3, 4, 5], 6);<span class="Apple-tab-span">	</span><span class="s4">// return 6 items</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">7.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// return also a subpattern:</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Prand</span>([1, <span class="s2">Pseq</span>([10, 20, 30]), 2, 3, 4, 5], 6);<span class="Apple-tab-span">	</span><span class="s4">// return 6 items</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">7.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p1">Prand used as a sequence of pitches:</p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p7"><span class="s2">SynthDef</span><span class="s5">(</span>\help_sinegrain<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Prand</span>(#[60, 61, 63, 65, 72], <span class="s2">inf</span>).asStream;</p>
-<p class="p8">Routine<span class="s5">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, a.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Preject.html b/Help/Streams-Patterns-Events/Patterns/Preject.html
deleted file mode 100644
index aa0af33..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Preject.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Preject<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>reject values from a pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FuncFilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Preject(func, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">rejects values for which the function returns true. the value is passed to the function</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">see also: <a href="Pcollect.html"><span class="s3">Pcollect</span></a>, <a href="Pselect.html"><span class="s3">Pselect</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s4">var</span> a, b;</p>
-<p class="p4">a = <span class="s4">Preject</span>({ arg item; item == 1 }, Pseq(#[1, 2, 3],inf));</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">9.do({ x.next.postln; });</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p1">the message reject returns a Preject when passed to a pattern</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s4">var</span> a, b;</p>
-<p class="p4">a =<span class="Apple-converted-space">  </span><span class="s4">Pseq</span>(#[1, 2, 3],<span class="s4">inf</span>).reject({ <span class="s4">arg</span> item; item == 1 });</p>
-<p class="p4">a.postln;</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">9.do({ x.next.postln; });</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Prewrite.html b/Help/Streams-Patterns-Events/Patterns/Prewrite.html
deleted file mode 100644
index 4fbfd46..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Prewrite.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Prewrite<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rewriting system</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>superclass: </b><a href="FilterPattern.html"><span class="s3">FilterPattern</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">Lindenmayer system pattern for selfsimilar structures.</p>
-<p class="p1">Its <b>dictionary (or event)</b> maps one element to an array of child elements.</p>
-<p class="p1">The algorithm replaces iteratively (<b>levels</b> deep) elements by</p>
-<p class="p1">arrays of elements starting with the values in the <b>pattern.</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Prewrite(pattern, dictionary, levels)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>dict:</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>IdentityDictionary[</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>elem1 -> [ otherElements ],</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>elem2 -> [ otherElements ],</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>elem2 -> [ otherElements ]</p>
-<p class="p1"><span class="Apple-tab-span">	</span>]</p>
-<p class="p1">the examples use<span class="Apple-converted-space">  </span>the shortcut for Event.</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">(</p>
-<p class="p5"><span class="s2">a = </span><span class="s4">Prewrite</span><span class="s2">(0, </span>// start with 0</p>
-<p class="p4"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">(</span><span class="Apple-tab-span">	</span>0: #[2,0],</p>
-<p class="p4"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>1: #[0,0,1],</p>
-<p class="p4"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>2: #[1,0,1]</p>
-<p class="p4"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>), 4);</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">30.do({ x.next.postln });</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Prewrite used as a sequence of pitches:</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">(</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s4">Prewrite</span>(0,<span class="Apple-tab-span">	</span>(<span class="Apple-tab-span">	</span>0: #[2,0],</p>
-<p class="p4"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>1: #[0,0,1],</p>
-<p class="p4"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>2: #[1,0,1]</p>
-<p class="p4"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>4).asStream;</p>
-<p class="p8">Routine<span class="s2">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, (a.next * 5 + 70).midicps]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}).play;</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Prorate.html b/Help/Streams-Patterns-Events/Patterns/Prorate.html
deleted file mode 100644
index 4293f0f..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Prorate.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Prorate</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>divide stream proportionally</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">superclass: <a href="FilterPattern.html"><span class="s4">FilterPattern</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(proportions, pattern)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>proportions</b>: <span class="Apple-tab-span">	</span>a pattern that returns either numbers (divides the pattern into pairs)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or arrays of size n which are used to split up the input into n parts.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>pattern</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a numerical pattern</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// examples:</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// divide 1 into various proportions</p>
-<p class="p7">(</p>
-<p class="p7">a = <span class="s5">Prorate</span>(<span class="s5">Pseq</span>([0.35, 0.5, 0.8]), 1);</p>
-<p class="p6"><br></p>
-<p class="p7">x = a.asStream;</p>
-<p class="p6"><br></p>
-<p class="p7">x.nextN(8)</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// divide a pattern into various proportions</p>
-<p class="p7">(</p>
-<p class="p7">a = <span class="s5">Prorate</span>(<span class="s5">Pseq</span>([0.35, 0.5, 0.8]), <span class="s5">Prand</span>([20, 1], <span class="s5">inf</span>));</p>
-<p class="p6"><br></p>
-<p class="p7">x = a.asStream;</p>
-<p class="p6"><br></p>
-<p class="p7">x.nextN(8)</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">// divide 1 into several parts</p>
-<p class="p7">(</p>
-<p class="p7">a = <span class="s5">Prorate</span>(<span class="s5">Pseq</span>([[1, 2], [5, 7], [4, 8, 9]]).collect(<span class="s5">_</span>.normalizeSum), 1);</p>
-<p class="p6"><br></p>
-<p class="p7">x = a.asStream;</p>
-<p class="p6"><br></p>
-<p class="p7">x.nextN(8)</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// sound example</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p8"><span class="s5">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> env;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">var</span> a, x;</p>
-<p class="p9"><span class="s3">a = </span>Prorate<span class="s3">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Prand</span>([2/3, 1/3, [0.3, 0.3, 0.4], [0.6, 0.4]], <span class="s5">inf</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pseq</span>([1, 2, 1, 3, 12], <span class="s5">inf</span>)</p>
-<p class="p7">);</p>
-<p class="p6"><br></p>
-<p class="p7">3.do {</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> x = a.asStream;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> freq = rrand(72, 84).midicps;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">Synth</span><span class="s3">(</span>\help_sinegrain<span class="s3">, [</span>\freq<span class="s3">, freq]);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(0.25 * x.next).wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}.fork;</p>
-<p class="p7">};</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Prout.html b/Help/Streams-Patterns-Events/Patterns/Prout.html
deleted file mode 100644
index 1d2b844..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Prout.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Prout<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>routine pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Prout(func)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a routine from the function.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>func </b>- routine function</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> Proutine, <a href="../../Core/Kernel/Routine.html"><span class="s2">Routine</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">note that there is a shortcut to create a Prout:</p>
-<p class="p2"><br></p>
-<p class="p1"><b>p(func)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Prout</span>({ loop { 1.yield; 2.yield; 7.yield; 10.do { 1.0.rand.yield } }});</p>
-<p class="p5">a.asStream.nextN(100).plot;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Prout</span>({ loop { 1.yield; 2.yield; 7.yield; 10.do { 1.0.rand.yield } }}).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.do { <span class="s2">|val|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, val * 100 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// shortcut:</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p7">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">\freq</span>, p { loop { ([1000, 2000].choose + [100, 200].choose + [10, 20].choose).postln.yield } },</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 0.1</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Proutine.html b/Help/Streams-Patterns-Events/Patterns/Proutine.html
deleted file mode 100644
index fe4b9b5..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Proutine.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Proutine<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>pattern that embeds a routine function<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Proutine(func)</b></p>
-<p class="p2"><br></p>
-<p class="p1">embeds the routine function.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>func </b>- routine function</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="Prout.html"><span class="s2">Prout</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">Proutine is similar to Prout, it only simply embeds the function instead of creating a separate routine. This can be more efficient when used within other patterns.</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pseed.html b/Help/Streams-Patterns-Events/Patterns/Pseed.html
deleted file mode 100644
index e437d12..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pseed.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #001bb9}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pseed</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>set the random seed in subpattern</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">superclass: <a href="FilterPattern.html">FilterPattern</a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">set the random generator seed of the resulting stream.</p>
-<p class="p1">see also: <a href="../../Core/Kernel/randomSeed.html"><span class="s3">randomSeed</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>Pseed(seed, pattern)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>seed: integer number, pattern or stream that return an integer number</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">a = <span class="s4">Pseed</span>(1972, <span class="s4">Prand</span>([1,2,3], <span class="s4">inf</span>));</p>
-<p class="p4"><br></p>
-<p class="p5">b = a.asStream;<span class="Apple-converted-space"> </span></p>
-<p class="p5">10.do({ b.next.post });</p>
-<p class="p4"><br></p>
-<p class="p5">c = a.asStream;<span class="Apple-converted-space"> </span></p>
-<p class="p5">10.do({ c.next.post });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// using a seed pattern as input:</p>
-<p class="p4"><br></p>
-<p class="p5">a = <span class="s4">Pseed</span>(<span class="s4">Pseq</span>([1812, 1912], <span class="s4">inf</span>), <span class="s4">Prand</span>([1,2,3], <span class="s4">5</span>));</p>
-<p class="p4"><br></p>
-<p class="p5">b = a.asStream;<span class="Apple-converted-space"> </span></p>
-<p class="p5">2.do({ 5.do({ b.next.post });<span class="s5">""</span>.postln;<span class="Apple-converted-space">  </span>});</p>
-<p class="p4"><br></p>
-<p class="p5">c = a.asStream;<span class="Apple-converted-space"> </span></p>
-<p class="p5">2.do({ 5.do({ c.next.post });<span class="s5">""</span>.postln;<span class="Apple-converted-space">  </span>});</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// outer thread is independant:</p>
-<p class="p7"><br></p>
-<p class="p5">a = <span class="s4">Pseed</span>(<span class="s4">Prand</span>([1534, 1600, 1798, 1986, 2005], <span class="s4">inf</span>), <span class="s4">Pshuf</span>([1, <span class="s4">Prand</span>([7, 9], 2), 1, 2, 3], 1));</p>
-<p class="p4"><br></p>
-<p class="p6">// returns random streams</p>
-<p class="p5">b = a.asStream;<span class="Apple-converted-space"> </span></p>
-<p class="p5">2.do({ 5.do({ b.next.post });<span class="s5">""</span>.postln;<span class="Apple-converted-space">  </span>});</p>
-<p class="p4"><br></p>
-<p class="p5">c = a.asStream;<span class="Apple-converted-space"> </span></p>
-<p class="p5">2.do({ 5.do({ c.next.post });<span class="s5">""</span>.postln;<span class="Apple-converted-space">  </span>});</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pseg.html b/Help/Streams-Patterns-Events/Patterns/Pseg.html
deleted file mode 100644
index 8e7039c..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pseg.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #af1007}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bba}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bba}
-span.s3 {color: #0000ff}
-span.s4 {color: #000000}
-span.s5 {color: #2c7012}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pseg<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span>timed embedding of values</p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Pstep.html"><span class="s2">Pstep</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pseg(levelpattern, durpattern, curvepattern, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Pseg defines a function of time as a breakpoint envelope using the same parameters as <a href="../../Control/Env.html"><span class="s3">Env</span></a>.<span class="Apple-converted-space">  </span>These patterns<span class="Apple-converted-space"> </span></p>
-<p class="p1">can be used to describe tempo or dynamic variations independent of the rhythmic patterns that express them.</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>levelpattern</b> - The first level is the initial value of the envelope, all subsequent values are interpolated</p>
-<p class="p1"><span class="Apple-tab-span">	</span>If durpattern is nil, then levelpattern specifies the entire envelope by returning arrays of the form:<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[level, dur, curve]</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>durpattern</b> - duration of segments in seconds.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>curvepattern</b> - this parameter determines the shape of the envelope segments.</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The possible values are:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'step' - flat segments</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'linear' - linear segments, the default</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'exponential' - natural exponential growth and decay. In this case, the levels must all be nonzero</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and the have the same sign.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'sine' - sinusoidal S shaped segments.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>'welch' - sinusoidal segments shaped like the sides of a Welch window.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a Float - a curvature value for all segments.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An Array of Floats - curvature values for each segments.</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p5">// change a parameter</p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s4">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">\note</span>,<span class="Apple-converted-space">  </span><span class="s2">Pseg</span>( <span class="s2">Pseq</span>([1, 5],<span class="s2">inf</span>), <span class="s2">Pseq</span>([4, 1],<span class="s2">inf</span>), <span class="s5">\linear</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.1</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7">Pbind<span class="s4">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">\freq</span>,<span class="Apple-converted-space">  </span><span class="s2">Pseg</span>( <span class="s2">Pseq</span>([400, 1500], <span class="s2">inf</span>), <span class="s2">Pseq</span>([4, 4],<span class="s2">inf</span>), <span class="s2">Pseq</span>([<span class="s5">\linear</span>, <span class="s5">\exp</span>],<span class="s2">inf</span>)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.1</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pselect.html b/Help/Streams-Patterns-Events/Patterns/Pselect.html
deleted file mode 100644
index 7be212b..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pselect.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline ; color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pselect<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>select values from a pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FuncFilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pselect(func, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">returns values for which the function returns true. the value is passed to the function</p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="Pcollect.html"><span class="s2">Pcollect</span></a>, <a href="Preject.html"><span class="s3">Preject</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s4">var</span> a, b;</p>
-<p class="p3">a = <span class="s4">Pselect</span>({ arg item; item != 2 }, Pseq(#[1, 2, 3],inf));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">the message select returns a Pselect when passed to a pattern</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s4">var</span> a, b;</p>
-<p class="p3">a =<span class="Apple-converted-space">  </span>Pseq(#[1, 2, 3],inf).select({ arg item; item != 2 });</p>
-<p class="p3">a.postln;</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pseq.html b/Help/Streams-Patterns-Events/Patterns/Pseq.html
deleted file mode 100644
index c4d53bc..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pseq.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #ad140d}
-span.s4 {color: #000000}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pseq</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sequentially embed values in a list</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="ListPattern.html"><span class="s2">ListPattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">cycles over a list of values. The repeats variable gives</p>
-<p class="p1">the number of times to repeat the entire list.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pseq(list, repeats, offset)</b></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pseq</span>([1, 2, 3], 2);<span class="Apple-tab-span">	</span><span class="s3">// repeat twice</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">7.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">Pseq also has an offset argument which gives a starting offset into the list.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pseq</span>([1, 2, 3, 4], 3, 2); <span class="s3">// repeat 3, offset 2</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">13.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p1">You can pass a function for the repeats variable that gets evaluated when the stream is created.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pseq</span>([1, 2], { rrand(1, 3) });<span class="Apple-tab-span">	</span><span class="s3">// repeat 1,2, or 3 times</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">7.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p1">If you specify the value <b>inf</b> for the repeats variable, then it will repeat indefinitely.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pseq</span>([1, 2, 3], <span class="s2">inf</span>);<span class="Apple-tab-span">	</span><span class="s3">// infinite repeat</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">10.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p1">Pseq used as a sequence of pitches:</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pseq</span>(#[60, 61, 63, 65, 72], <span class="s2">inf</span>).asStream;</p>
-<p class="p7">Routine<span class="s4">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pser.html b/Help/Streams-Patterns-Events/Patterns/Pser.html
deleted file mode 100644
index bbb5f56..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pser.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #bf0000}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pser</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>sequentially embed values in a list</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="ListPattern.html"><span class="s2">ListPattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">is like <a href="Pseq.html"><span class="s2">Pseq</span></a>, however the repeats variable gives <b>the number of items </b>returned<span class="Apple-converted-space"> </span></p>
-<p class="p1">instead of the number of complete cycles.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pser</span>([1, 2, 3], 5);<span class="Apple-tab-span">	</span><span class="s3">// return 5 items</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">6.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p1">Pser used as a sequence of pitches:</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pser</span>([<span class="s2">Pser</span>(#[60, 61, 63, 65, 72], 3)], <span class="s2">inf</span>).asStream;</p>
-<p class="p7">Routine<span class="s4">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pseries.html b/Help/Streams-Patterns-Events/Patterns/Pseries.html
deleted file mode 100644
index dbf1317..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pseries.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #001bb9}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pseries<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>artithmetic series pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pseries(start, step, length)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that behaves like an arithmetric series.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>start </b>- start value<span class="Apple-converted-space">  </span>(default: 0)</p>
-<p class="p1"><b>step</b> - addition factor.<span class="Apple-converted-space">  </span>(default: 1)</p>
-<p class="p1"><b>length</b> - number of values produced (default: inf)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="Pgeom.html"><span class="s2">Pgeom</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> a;</p>
-<p class="p5">a = <span class="s3">Pgeom</span>(1.0, 1.1, <span class="s3">inf</span>);</p>
-<p class="p5">a.asStream.nextN(100).plot;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">// sound example</p>
-<p class="p5">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s5">(</span>\help_sinegrain<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> a;</p>
-<p class="p5">a = <span class="s4">Pseries</span>(300, 20, 70).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.do { <span class="s4">|val|</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s5">(</span>\help_sinegrain<span class="s5">, [</span>\freq<span class="s5">, val]);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p8">Pbind<span class="s5">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.01,</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>\instrument<span class="s5">, </span>\help_sinegrain<span class="s5">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s6">\freq</span>, <span class="s4">Pseries</span>(800.0, <span class="s4">Pbrown</span>(-1.0, 3.0, 0.1, <span class="s4">inf</span>), <span class="s4">inf</span>)</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pset.html b/Help/Streams-Patterns-Events/Patterns/Pset.html
deleted file mode 100644
index 0109f1b..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pset.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pset<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>event pattern that sets values of one key</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pset(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Pset sets a value in an event stream. It acts like one key in a <a href="Pbindf.html"><span class="s2">Pbindf</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pset</span>(\freq, 801, <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">Pset overrides incoming values:</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pset</span>(<span class="s3">\freq</span>, 801, <span class="s2">Pbind</span>(<span class="s3">\freq</span>, 108));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern or a stream. the resulting stream ends when that incoming stream ends</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pset</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([401, 801], 2), <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.02;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain), 1, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s4">a = </span><span class="s2">Pbind</span><span class="s4">(</span>\dur<span class="s4">, 0.5, </span>\instrument<span class="s4">, </span>\sinegrain<span class="s4">);</span></p>
-<p class="p3">a = <span class="s2">Pset</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([500, 600, 700], <span class="s2">inf</span>), a);</p>
-<p class="p3">a = <span class="s2">Pset</span>(<span class="s3">\legato</span>, <span class="s2">Pseq</span>([0.01, 1],<span class="s2">inf</span>), a);</p>
-<p class="p3">a.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Psetp.html b/Help/Streams-Patterns-Events/Patterns/Psetp.html
deleted file mode 100644
index 1c556fe..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Psetp.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Psetp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>event pattern that sets values of one key</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Pset</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Psetp(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">sets a value in an event stream until it ends, repeats this with new values until</p>
-<p class="p1">the value stream ends.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern, a stream or an array. the resulting stream ends when that incoming stream ends.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Psetp</span>(\freq, Pseq([801, 1008],inf), <span class="s2">Pbind</span>(<span class="s3">\dur</span>, Pseq([0.5, 0.111, 0.22])));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Psetp overrides incoming values:</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Psetp</span>(\freq, 801, <span class="s2">Pbind</span>(<span class="s3">\freq</span>, 108));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.02;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain), 1, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pbind</span>(<span class="s3">\dur</span>, Pseq([0.5, 0.3, 0.1]), <span class="s3">\instrument</span>, <span class="s3">\</span><span class="s5">sinegrain</span>);</p>
-<p class="p3">a = <span class="s2">Psetp</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([500, 600, 700], <span class="s2">inf</span>), a);</p>
-<p class="p3">a.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Psetpre.html b/Help/Streams-Patterns-Events/Patterns/Psetpre.html
deleted file mode 100644
index 1d7f68b..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Psetpre.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Psetpre<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>set values of one key in an event before it is passed up</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pset(name, value, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">sets a value in an event, before it is passed up the stream.</p>
-<p class="p1">to set the value after it has been passed to the stream, use <a href="Pset.html"><span class="s2">Pset</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Psetpre</span>(<span class="s3">\freq</span>, 801, <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1">Psetpre does not override incoming values:</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Psetpre</span>(\freq, 801, <span class="s2">Pbind</span>(<span class="s3">\freq</span>, 108));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>value</b> can be a pattern or a stream. the resulting stream ends when that incoming stream ends</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Psetpre</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([401, 801], 2), <span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.5));</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">9.do({ x.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">sound example</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.02;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain), 1, doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env * 0.1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s4">a = </span><span class="s2">Pbind</span><span class="s4">(</span>\dur<span class="s4">, 0.5, </span>\instrument<span class="s4">, </span>\sinegrain<span class="s4">);</span></p>
-<p class="p3">a = <span class="s2">Psetpre</span>(<span class="s3">\freq</span>, <span class="s2">Pseq</span>([500, 600, 700], <span class="s2">inf</span>), a);</p>
-<p class="p3">a = <span class="s2">Psetpre</span>(<span class="s3">\legato</span>, <span class="s2">Pseq</span>([0.01, 1],<span class="s2">inf</span>), a);</p>
-<p class="p3">a.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pshuf.html b/Help/Streams-Patterns-Events/Patterns/Pshuf.html
deleted file mode 100644
index e105f96..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pshuf.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #bf0000}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pshuf<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>sequentially embed values in a list in constant, but random order</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: ListPatterns</b></p>
-<p class="p2"><br></p>
-<p class="p1">returns a shuffled version of the <b>list</b> item by item, with n <b>repeats</b>.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pshuf(list, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pshuf</span>([1, 2, 3, 4, 5], 3);<span class="Apple-tab-span">	</span><span class="s3">// repeat 3 times</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">16.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p1">Pshuf used as a sequence of pitches:</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pn</span>(<span class="s2">Pshuf</span>(#[60, 60, 60, 61, 63, 65, 72], 4), <span class="s2">inf</span>).asStream;</p>
-<p class="p7">Routine<span class="s4">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.15.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pslide.html b/Help/Streams-Patterns-Events/Patterns/Pslide.html
deleted file mode 100644
index 8a29d39..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pslide.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0025b2}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pslide</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>slide over a list of values and embed them</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: ListPatterns</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pslide(list, repeats, length, step, start, wrapAtEnd)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>repeats</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of segments</p>
-<p class="p1"><b>length</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>length of each segment</p>
-<p class="p1"><b>step</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>how far to step the start of each segment from previous. step can be negative.</p>
-<p class="p1"><b>start</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>what index to start at.</p>
-<p class="p1"><b>wrapAtEnd</b>: if true (default), indexing wraps around if goes past beginning or end. If false, the pattern stops if it hits a nil element or goes outside the list bounds.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pslide</span>([1, 2, 3, 4, 5], inf, 3, 1, 0);</p>
-<p class="p3">x = a.asStream;</p>
-<p class="p3">13.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Pslide used as a sequence of pitches</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s3">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3">c = <span class="s3">Pslide</span>(#[1, 2, 3, 4, 5], <span class="s3">inf</span>, 3, 1, 0) * 3 + 67;</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p7">Routine<span class="s4">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, x.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.17.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pspawn.html b/Help/Streams-Patterns-Events/Patterns/Pspawn.html
deleted file mode 100644
index f392c62..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pspawn.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pspawn</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Spawns sub-patterns based on parameters in an event pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: AbstractFunction : Pattern : FilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">Pspawn is a pattern-based version of <a href="Pspawner.html"><span class="s2">Pspawner</span></a>. Where Pspawner uses a Routine-style function to determine when and how to spawn child patterns into the result stream, Pspawn uses an event pattern to determine the actions to take.</p>
-<p class="p2"><br></p>
-<p class="p1">Recommended to read the <a href="Pspawner.html"><span class="s2">Pspawner</span></a> help file to become familiar with pattern spawning capabilities.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Important:</b> There are two kinds of events involved in Pspawn:</p>
-<p class="p2"><br></p>
-<p class="p1">- <b>parent</b> events, which specify the pattern to embed, how to embed it (in parallel or sequence), and how long to wait until the next action;</p>
-<p class="p1">- <b>child</b> events, which produce the resulting notes (or take other actions on the server).</p>
-<p class="p2"><br></p>
-<p class="p1">Of these, only the child events are returned to the event stream player during play. The parent events are used strictly internally to control spawning behavior. The parent and child event streams do not mix together. Thus pattern composition (Pchain) and parallelization (Ppar) may be used without special handling. It is up to the user to be aware of whether the parent or child stream should be subject to further manipulation, and put that manipulation in the right place. If it is to affect the child stream, it should enclose the entire Pspawn; for the parent stream, it should be inside Pspawn. (See the examples below.)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Creation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(pattern, spawnProtoEvent)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>pattern:</b> An event pattern (typically Pbind) encapsulating the desired spawning behavior. Parameters in this event are described below.</p>
-<p class="p1"><b>spawnProtoEvent:</b> The event prototype against which the pattern is evaluated. Good for giving default values that should apply to all spawning (parent) events.</p>
-<p class="p2"><br></p>
-<p class="p1">Pspawn uses the following items in the parent pattern:</p>
-<p class="p2"><br></p>
-<p class="p1"><b>method:</b> The action to call on the spawner object. Currently supported: wait, seq, par, suspendAll.</p>
-<p class="p1"><b>delta:</b> How long to wait until the next action.</p>
-<p class="p1"><b>dict:</b> If 'pattern' is given as a symbol (see below), this is the dictionary in which the pattern will be looked up. If not specified, the <a href="../../Libraries/JITLib/Patterns/Pdef.html"><span class="s2">Pdef</span></a> collection will be used.</p>
-<p class="p1"><b>pattern:</b> If 'method' is seq or par, this is a pattern or function to be embedded, according to the following rules.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>'pattern' in the event<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Resulting behavior</b></p>
-<p class="p2"><br></p>
-<p class="p1">A function: <b>{ ... }</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The function should return a pattern; this pattern is spawned.</p>
-<p class="p1">A Ref to a pattern: <b>`Pbind(...)</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The referenced pattern is spawned.</p>
-<p class="p1">A Symbol: <b>\scaleUp</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The pattern is looked up in the event's 'dict'.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Using references to protect patterns from embedding</b></p>
-<p class="p2"><br></p>
-<p class="p1">Normally, when a pattern appears inside another pattern, the subpattern is embedded in the main output stream. It is not visible to the outside world as a pattern in itself; only its values appear.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3">Pseq</span>([<span class="s3">Pwhite</span>(0, 9, 5), <span class="s3">Pwhite</span>(10, 19, 5)], 1).asStream.all;</p>
-<p class="p2"><br></p>
-<p class="p1">When using Pspawn, a sub pattern must be returned directly into the event. To accomplish this, every such pattern should be wrapped in a Ref:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3">Pseq</span>([`<span class="s3">Pwhite</span>(0, 9, 5), `<span class="s3">Pwhite</span>(10, 19, 5)], 1).asStream.all;</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Hint:</b> Pfunc is another good way to wrap patterns, because it simply returns its result values without further embedding. See the first example.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples:</b></p>
-<p class="p2"><br></p>
-<p class="p5">// Play overlapping major scales, up and down</p>
-<p class="p4">(</p>
-<p class="p6"><span class="s4">p = </span>Pspawn<span class="s4">(</span>Pbind<span class="s4">(</span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Pbind returned by Pfunc is not embedded, just placed in the event</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// So, it can be spawned</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">\pattern</span>, <span class="s3">Pfunc</span> { <span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseries</span>(rrand(0, 10), #[-1, 1].choose, rrand(4, 10)), <span class="s5">\dur</span>, 0.125) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">\delta</span>, <span class="s3">Pwhite</span>(1, 5, <span class="s3">inf</span>) * 0.125,</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>\method<span class="s4">, </span>\par</p>
-<p class="p4">)).play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p4">p.stop;</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p5">// Same, using a dictionary of patterns, changing dur rhythm also</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s3">var</span><span class="Apple-tab-span">	</span>patternChoices = (</p>
-<p class="p4"><span class="Apple-tab-span">	</span>up: { <span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseries</span>(rrand(-4, 5), 1, rrand(4, 10)), <span class="s5">\dur</span>, 0.125) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span>down: { <span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseries</span>(rrand(4, 11), -1, rrand(4, 10)), <span class="s5">\dur</span>, 0.125 * 4/3) }</p>
-<p class="p4">);</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s4">p = </span>Pspawn<span class="s4">(</span>Pbind<span class="s4">(</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>\pattern<span class="s4">, </span><span class="s3">Prand</span><span class="s4">([</span>\up<span class="s4">, </span>\down<span class="s4">], </span><span class="s3">inf</span><span class="s4">),</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">\delta</span>, <span class="s3">Pwhite</span>(1, 5, <span class="s3">inf</span>) * 0.125,</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>\method<span class="s4">, </span>\par</p>
-<p class="p4">), (dict: patternChoices)).play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p4">p.stop;</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p5">// Using pattern composition (perhaps gratuitously) to build the parent events</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s3">var</span><span class="Apple-tab-span">	</span>patternChoices = (</p>
-<p class="p4"><span class="Apple-tab-span">	</span>up: { <span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseries</span>(rrand(-4, 5), 1, rrand(4, 10)), <span class="s5">\dur</span>, 0.125) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span>down: { <span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseries</span>(rrand(4, 11), -1, rrand(4, 10)), <span class="s5">\dur</span>, 0.125 * 4/3) }</p>
-<p class="p4">);</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s4">p = </span>Pspawn<span class="s4">(</span>Pchain<span class="s4">(</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\pattern<span class="s4">, </span><span class="s3">Prand</span><span class="s4">([</span>\up<span class="s4">, </span>\down<span class="s4">], </span><span class="s3">inf</span><span class="s4">),</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\method<span class="s4">, </span>\par</p>
-<p class="p4"><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\delta</span>, <span class="s3">Pwhite</span>(1, 5, <span class="s3">inf</span>) * 0.125</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">), (dict: patternChoices)).play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p4">p.stop;</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p5">// Play parallel scales in the left channel and sequentially-arranged scales in the right</p>
-<p class="p5">// This means parallelizing (Ppar) the child streams; thus Ppar surrounds a pair of Pspawns</p>
-<p class="p8"><br></p>
-<p class="p5">// Handling of \pan is interesting: \pan needs to be a property of the patternChoices items</p>
-<p class="p5">// It is NOT a property of the spawning events</p>
-<p class="p5">// To reuse patternChoices, the Pspawns wrap the base patterns in a Pbindf, which adds new values</p>
-<p class="p4">(</p>
-<p class="p4"><span class="s3">var</span><span class="Apple-tab-span">	</span>patternChoices = (</p>
-<p class="p4"><span class="Apple-tab-span">	</span>up: { <span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseries</span>(rrand(-4, 5), 1, rrand(4, 10)), <span class="s5">\dur</span>, 0.125) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span>down: { <span class="s3">Pbind</span>(<span class="s5">\degree</span>, <span class="s3">Pseries</span>(rrand(4, 11), -1, rrand(4, 10)), <span class="s5">\dur</span>, 0.125 * 4/3) }</p>
-<p class="p4">);</p>
-<p class="p8"><br></p>
-<p class="p4">p = <span class="s3">Ppar</span>([</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>Pspawn<span class="s4">(</span>Pbind<span class="s4">(</span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// intermediate value</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\patternKey<span class="s4">, </span><span class="s3">Prand</span><span class="s4">([</span>\up<span class="s4">, </span>\down<span class="s4">], </span><span class="s3">inf</span><span class="s4">),</span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pattern is selected and pan applied here</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\pattern</span>, <span class="s3">Pfunc</span> { <span class="s3">|ev|</span> <span class="s3">Pbindf</span>(ev.dict[ev.patternKey].value, <span class="s5">\pan</span>, -1) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\delta</span>, <span class="s3">Pwhite</span>(1, 5, <span class="s3">inf</span>) * 0.125,</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\method<span class="s4">, </span>\par</p>
-<p class="p4"><span class="Apple-tab-span">	</span>), (dict: patternChoices)),</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>Pspawn<span class="s4">(</span>Pbind<span class="s4">(</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\patternKey<span class="s4">, </span><span class="s3">Prand</span><span class="s4">([</span>\up<span class="s4">, </span>\down<span class="s4">], </span><span class="s3">inf</span><span class="s4">),</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\pattern</span>, <span class="s3">Pfunc</span> { <span class="s3">|ev|</span> <span class="s3">Pbindf</span>(ev.dict[ev.patternKey].value, <span class="s5">\pan</span>, 1) },</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\delta</span>, <span class="s3">Pwhite</span>(1, 5, <span class="s3">inf</span>) * 0.125,</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\method<span class="s4">, </span>\seq</p>
-<p class="p4"><span class="Apple-tab-span">	</span>), (dict: patternChoices)),<span class="Apple-tab-span">	</span></p>
-<p class="p4">]).play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p4">p.stop;</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pspawner.html b/Help/Streams-Patterns-Events/Patterns/Pspawner.html
deleted file mode 100644
index 2e333f5..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pspawner.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pspawner<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>dynamic control of multiple event streams from a Routine</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Proutine.html"><span class="s2">Proutine</span></a></p>
-<p class="p1"><b>related class: Spawner</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pspawner </b>allows a routine to dynamically start and stop subpatterns. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">see also <a href="Pspawn.html"><span class="s2">Pspawn</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pspawner(function)</b></p>
-<p class="p1">The function defines a Routine that receives a <b>Spawner </b>as its sole argument. All control of subpatterns</p>
-<p class="p1">is through the spawner</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Spawner</b> responds to the messages:</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>par(pattern, delta = 0)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Begin an event stream in parallel to the routine. If delta is non-zero, the pattern will begin that many beats</p>
-<p class="p1"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>after 'now', provided that now + delta is later than the next event that the Spawner will generate. The</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>method returns the stream. This may be called from any object</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>seq(pattern)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>run the entire pattern and then return control to the routine</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>wait(dur)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>wait <b>dur </b>seconds and then return control to the routine</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>suspend (stream)<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Find the stream in the Spawner and stop it,<span class="Apple-converted-space">  </span>returns nil if the stream is not found, the stream otherwise</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>suspendAll</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Stop all substreams of the Spawner</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// example 1: a simple Pspawner</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>Pspawner<span class="s3">({ </span>| sp |</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// parallel in-c'ish pulses will run throughout the example</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.par(<span class="s4">Pbind</span>(*[ degree: [0,7], octave: 7, dur: 0.2, db: <span class="s4">Pseq</span>([-20, -24, -22, -24], <span class="s4">inf</span>)]) );</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// scales in sequence with pauses</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.seq(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[ degree: <span class="s4">Pseq</span>((0..7).mirror), dur: 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(0.4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.seq(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Ppar</span>([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[ degree: <span class="s4">Pseq</span>((0..7).mirror), dur: 0.2, octave: 4]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[ degree: <span class="s4">Pseq</span>((0..7).reverse.mirror), dur: 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(3);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.seq(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[ degree: <span class="s4">Pseq</span>((0..7).mirror), dur: 0.2, mtranspose: (0,2..14)])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// scales overlaped at 0.4 second intervals</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.par(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[ degree: <span class="s4">Pseq</span>((0..7).mirror), dur: 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(0.4)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(1.6);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.suspendAll;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).play</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// example 2: create 5 streams at 4 second intervals</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// then delete them in the order they were created</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>Pspawner<span class="s3">({ </span>| sp |</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> streams, stream;</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// start patterns, collect the resultant event streams</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>streams = [2,<span class="Apple-converted-space">  </span>3, 4,<span class="Apple-converted-space">  </span>6, 7, 8].collect { <span class="s4">| i |</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream = sp.par(<span class="s4">Pbind</span>(*[</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>harmonic: i,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ctranspose: <span class="Apple-tab-span">	</span>[0, 1, 3]/40,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>octave:<span class="Apple-tab-span">	</span><span class="s4">Pbrown</span>(2,8,2), dur: 1/i, db: -30</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]) );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now stop those streams one by one</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>streams.do { <span class="s4">| s |</span> sp.suspend(s); sp.wait(4) };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).play</p>
-<p class="p5"><br></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p4">// example 3: define a Pspawner and use Pattern manipulations</p>
-<p class="p7"><span class="s3">p = <span class="Apple-tab-span">	</span></span>Pspawner<span class="s3">({ </span>| sp |<span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.par(<span class="s4">Pbind</span>(*[octave: 5, degree: <span class="s4">Pbrown</span>( -7, 7, 3), dur: 0.2]) );</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.par(<span class="s4">Pbind</span>(*[octave: 5, degree: <span class="s4">Pbrown</span>( -7, 7, 3), dur: 0.1]) );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.par(<span class="s4">Pbind</span>(*[octave: 6, degree: <span class="s4">Pbrown</span>( -7, 7, 3), dur: 0.05]) );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(0.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.par(<span class="s4">Pbind</span>(*[octave: 5, degree: <span class="s4">Pbrown</span>( -7, 7, 3), dur: 0.2]) );</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.suspendAll;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p4">// play the basic patten<span class="Apple-converted-space"> </span></p>
-<p class="p6">( p.play )</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p4">// manipulate it with Pchain</p>
-<p class="p7">Pchain<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[ctranspose: 0 + <span class="s4">Pwhite</span>(-0.1, 0.1)]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[mtranspose:<span class="Apple-tab-span">	</span><span class="s4">Pkey</span>(<span class="s5">\mtranspose</span>) +<span class="Apple-converted-space">  </span><span class="s4">Pstutter</span>(8, <span class="s4">Prand</span>([0,[-3,0,2],[0,2,4,6,8,10]], <span class="s4">inf</span>))<span class="Apple-converted-space">  </span>] ),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Pn</span>(<span class="s4">Pseq</span>([p, (type:<span class="s5">\rest</span>, dur: 0.4)]) ),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(*[</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>db: <span class="s4">Pstep</span>(<span class="s4">Pseq</span>([-10, -13, -13, -11, -13, -13], <span class="s4">inf</span>), 0.1) - 10,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mtranspose: <span class="s4">Pstep</span>(<span class="s4">Pwhite</span>(-7, 7), <span class="s4">Prand</span>([5,4,2],<span class="s4">inf</span>) )</p>
-<p class="p6"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span>])<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-converted-space"> </span>).play(protoEvent: <span class="s4">Event</span>.default)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p4">// example 4: altering the contents of the Pspawner from separate code</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>a = </span>Pspawner<span class="s3">({ </span>|sp |<span class="s3"><span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>c = sp; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// store the Spawner in a global variable</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100.do{ sp.wait(1) }<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.play;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s3">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// c will not be valid until the Pspawner has run</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>b = c.par(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now start a pattern in spawner</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[degree: <span class="s4">Pseq</span>((0..6) ++ (7..1), <span class="s4">inf</span>), dur: 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">)</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>c.suspend(b)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// we can suspend and resume the stream</p>
-<p class="p6"><span class="Apple-tab-span">	</span>c.par(b)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>c.suspend(b)</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>b = c.par(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or just start up a new pattern</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[degree: <span class="s4">Pseq</span>((0..6) ++ (7..1), <span class="s4">inf</span>), dur: 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><br></p>
-<p class="p4">// example 5: Spawner can be used directly in the manner of Pspawner.</p>
-<p class="p4">// This allows external code to access to the spawner whether or not it has run<span class="Apple-tab-span">	</span></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>c = </span>Spawner<span class="s3">({ </span>|sp |<span class="s3"><span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100.do{ sp.wait(1) }<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>b = c.par(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now start a pattern in spawner</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[degree: <span class="s4">Pseq</span>((0..6) ++ (7..1), <span class="s4">inf</span>), dur: 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>c.play;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// in this case, c is always valid</p>
-<p class="p6">)</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>c.suspend(b)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// we can suspend and resume the stream</p>
-<p class="p6"><span class="Apple-tab-span">	</span>c.par(b)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>c.suspend(b)</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>b = c.par(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// or just start up a new pattern</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pbind</span>(*[degree: <span class="s4">Pseq</span>((0..6) ++ (7..1), <span class="s4">inf</span>), dur: 0.2])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>Pspawner<span class="s3">({ </span>| sp |</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(1..5).do { <span class="s4">| i |</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.par(<span class="s4">Pbind</span>(*[</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>octave: i + 2,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>degree:<span class="Apple-tab-span">	</span><span class="s4">Pwhite</span>(0,7), dur: 1/i, db: -30</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]) );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.wait(4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sp.suspendAll;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).play</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pstep.html b/Help/Streams-Patterns-Events/Patterns/Pstep.html
deleted file mode 100644
index 6635e07..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pstep.html
+++ /dev/null
@@ -1,215 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.s6 {color: #2c7014}
-span.s7 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pstep<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>timed embedding of values</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Pattern</b></p>
-<p class="p1">related: <a href="Pseg.html"><span class="s2">Pseg</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pstep(levels, durs, repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Levelpattern can return individual values, arrays, or events. The value returned by levelpattern is</p>
-<p class="p1">returned for the duration returned by durpattern.</p>
-<p class="p2"><br></p>
-<p class="p1">Pstep is good for representing chord progressions, scale progressions, accent patterns, etc.</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5">// select a chord and duration and repeat it for a random time interval</p>
-<p class="p6">p = <span class="s3">Pstep</span>(</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\ctranspose</span>, [0, 4, 7],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\note</span>,<span class="Apple-tab-span">	</span><span class="s3">Pwhite</span>(0, 12),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Prand</span>([0.2, 0.4, 0.8], <span class="s3">inf</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Prand</span>([1, 2, 4], <span class="s3">inf</span>)/4</p>
-<p class="p6">);</p>
-<p class="p6"><span class="s3">Ppar</span>([p, p]).play;</p>
-<p class="p4">)</p>
-<p class="p8">// change degree independant of number of events that have been playing</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p9">Pchain<span class="s4">(</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>Ppar<span class="s4">([</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s2">Pbrown</span>(0, 12, 1),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s2">Pstep</span>( <span class="s2">Pseq</span>([0.1, 0.2, 0.4, 0.8, 1.6], <span class="s2">inf</span>), 3.2)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s2">Pbrown</span>(0, 20, 1),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s2">Pstep</span>( <span class="s2">Pseq</span>([0.1, 0.2, 0.4, 0.8, 1.6], <span class="s2">inf</span>), 4.5)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>]),<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\scale</span>, <span class="s2">Pstep</span>(<span class="s2">Pseq</span>([ [0, 2, 4, 5, 7, 9, 11], [0, 1, 2, 3, 4, 5, 6]], <span class="s2">inf</span>), 5),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\db</span>, <span class="s2">Pstep</span>(<span class="s2">Pseq</span>([2, -2, 0, -2], <span class="s2">inf</span>), 0.25) - 10</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">).play;</p>
-<p class="p3"><br></p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p8">// use a simple pattern<span class="Apple-converted-space"> </span></p>
-<p class="p4">(</p>
-<p class="p7">Pchain<span class="s4">(</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>Ppar<span class="s4">([</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\octave</span>, [5, 6] + <span class="s3">Prand</span>([0, 0, <span class="s5">\r</span>], <span class="s3">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>,<span class="Apple-tab-span">	</span><span class="s3">Proutine</span>({ <span class="s3">| ev |</span> loop { ev = <span class="s3">Pseq</span>(ev[<span class="s5">\degree</span>]).embedInStream } }),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur,</span><span class="Apple-tab-span">	</span><span class="s3">Proutine</span>({ loop { <span class="s3">Pseq</span>([0.2, 0.2, 0.2, 0.2, 0.3].scramble).embedInStream } })</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\octave</span>, 4,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\legato</span>, 1.2,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Proutine</span>({ loop { <span class="s3">Pseq</span>([0.2, 0.2, 0.2, 0.2, 0.3].scramble * 5).embedInStream }})</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>]),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>Pstep<span class="s4">(</span>Pbind<span class="s4">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\db</span>, <span class="s3">Pseq</span>([0, -4, -2, -4, -3, -4, -3, -4], <span class="s3">inf</span>) - 20</p>
-<p class="p6"><span class="Apple-tab-span">	</span>), 0.2),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>Pstep<span class="s4">(</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="Apple-tab-span">	</span><span class="s3">Pfunc</span>({ {10.rand}.dup(10) }),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\scale</span>,<span class="Apple-tab-span">	</span><span class="s3">Pfunc</span>({ {rrand(1, 2)}.dup(7).integrate })</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">).play</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p8">// change one parameter</p>
-<p class="p4">(</p>
-<p class="p9">Pbind<span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s2">Pstep</span>(<span class="s2">Pseq</span>([1, 2, 3, 4, 5]), 1.0).trace,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s2">Pseries</span>(0.1, 0.1, 15)</p>
-<p class="p4">).play;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p8">// change degree independant of number of events that have been playing</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> a, b;</p>
-<p class="p4">a = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s2">Pstep</span>(<span class="s2">Pseq</span>([0, 2b, 3], 1), 1.0),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s2">Prand</span>([0.2, 0.5, 1.1, 0.25, 0.15], <span class="s2">inf</span>)</p>
-<p class="p4">);</p>
-<p class="p4">b = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s2">Pseq</span>([0, 2b, 3], 1),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 2,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span></span>\ctranspose<span class="s4">, -7</span></p>
-<p class="p4">);</p>
-<p class="p4"><span class="s2">Pseq</span>([<span class="s2">Event</span>.silent(1.25), <span class="s2">Ppar</span>([a, b])], <span class="s2">inf</span>).play;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p8">// test tempo changes</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> a, b;</p>
-<p class="p4">a = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s2">Pstep</span>(<span class="s2">Pseq</span>([0, 2b, 3], 1), 1.0),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s2">Prand</span>([0.2, 0.5, 1.1, 0.25, 0.15], 9)</p>
-<p class="p4">);</p>
-<p class="p4">b = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\degree</span>, <span class="s2">Pseq</span>([0, 2b, 3], 1),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 2,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s4"><span class="Apple-tab-span">	</span></span>\ctranspose<span class="s4">, -7</span></p>
-<p class="p4">);</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">Ppar</span>([a, b], <span class="s2">inf</span>).play;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">SystemClock</span>.sched(0, { <span class="s2">TempoClock</span>.default.tempo = [1, 2, 3, 5].choose.postln; 2 });</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">TempoClock</span>.default.tempo = 1.0;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p8">// timing test:</p>
-<p class="p8">// parallel streams</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p6"><span class="s3">var</span> a, b, x;</p>
-<p class="p6"><span class="s3">var</span> times, levels;</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p7">SynthDef<span class="s4">(</span><span class="s5">\pgrain</span><span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out = 0, freq=800, sustain=0.001, amp=0.5, pan = 0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> window;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>window = <span class="s3">Env</span>.sine(sustain, amp);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freq) * <span class="s3">EnvGen</span>.ar(window, doneAction:2),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">).store;</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p6">times = <span class="s3">Pseq</span>([3.4, 1, 0.2, 0.2, 0.2], <span class="s3">inf</span>);</p>
-<p class="p6">levels = <span class="s3">Pseq</span>([0, 1, 2, 3, 4], <span class="s3">inf</span>);</p>
-<p class="p10"><br></p>
-<p class="p6">a = <span class="s3">Pstep</span>(levels, times);</p>
-<p class="p12"><span class="s4">b = </span><span class="s3">Pbind</span><span class="s4">(</span>\instrument<span class="s4">, </span>\pgrain<span class="s4">, </span>\octave<span class="s4">, 7, </span>\dur<span class="s4">, 0.12, </span>\degree<span class="s4">, a);</span></p>
-<p class="p6">x = times;</p>
-<p class="p10"><br></p>
-<p class="p6"><span class="s3">Ppar</span>([b, <span class="s3">Pset</span>(<span class="s5">\mtranspose</span>, 2, b) ]).play;</p>
-<p class="p10"><br></p>
-<p class="p6">b.play;</p>
-<p class="p6">r {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> z = x.asStream; <span class="s7">// direct times</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z.next.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.makeBundle(0.2, {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s5">\pgrain</span>, [<span class="s5">\freq</span>, 3000, <span class="s5">\sustain</span>, 0.01]); <span class="s7">// signal tone</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.play(quant:1)</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PstepNadd.html b/Help/Streams-Patterns-Events/Patterns/PstepNadd.html
deleted file mode 100644
index 32169eb..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PstepNadd.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000ff}
-span.s4 {color: #001bb9}
-span.s5 {color: #000000}
-span.s6 {color: #606060}
-span.s7 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PstepNadd<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>pattern that returns combinatoric sums</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: <a href="PstepNfunc.html"><span class="s3">PstepNfunc</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">combines an arbitrary number of patterns by summing (depth first traversal).</p>
-<p class="p1">when a stream ends it is recreated from its pattern until the top stream ends.</p>
-<p class="p3"><br></p>
-<p class="p1">see also: Pstep3add</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span></span><b>*new(pattern1, pattern2, ... patternN);</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4">//examples</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// comparing PstepNadd and Pstep3add (test)</p>
-<p class="p5">(</p>
-<p class="p5">x = <span class="s4">PstepNadd</span>(<span class="s4">Pseq</span>([1, 2, 3]), <span class="s4">Pseq</span>([10, 20, 30, 40]), <span class="s4">Pseq</span>([100, 200, 300])).asStream;</p>
-<p class="p5">y = <span class="s4">Pstep3add</span>(<span class="s4">Pseq</span>([1, 2, 3]), <span class="s4">Pseq</span>([10, 20, 30, 40]), <span class="s4">Pseq</span>([100, 200, 300])).asStream;</p>
-<p class="p3"><br></p>
-<p class="p5">50.do({ [x.next, y.next].postln });</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// pattern return stream until the longest stream ended<span class="Apple-converted-space"> </span></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s5">x = </span>PstepNadd<span class="s5">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Plazy</span>({ <span class="s6">"pattern1.asStream"</span>.postln; <span class="s4">Pseq</span>([1, 2, 3], 2) }),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Plazy</span>({ <span class="s6">"pattern2.asStream"</span>.postln; <span class="s4">Pshuf</span>([10, 20, 30, 40]) }),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Plazy</span>({ <span class="s6">"pattern3.asStream"</span>.postln; <span class="s4">Pseq</span>([100, 200, 300]) }),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Plazy</span>({<span class="Apple-converted-space">  </span><span class="s4">Pseries</span>(1, 1, 4) * 0.01 })</p>
-<p class="p5"><span class="Apple-tab-span">	</span>).asStream;</p>
-<p class="p5">150.do({ x.next.postln });</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// if the last pattern loops it the combinatorics loop there:</p>
-<p class="p5">x = <span class="s4">PstepNadd</span>(<span class="s4">Pseq</span>([1, 2, 3]), <span class="s4">Pseq</span>([10, 20, 30, 40]), <span class="s4">Pseq</span>([100, 200, 300], <span class="s4">inf</span>)).asStream;</p>
-<p class="p5">50.do({ x.next.postln });</p>
-<p class="p3"><br></p>
-<p class="p4">// if the first pattern loops, the whole iteration loops as if it was used in a Pn(.., inf):</p>
-<p class="p5">x = <span class="s4">PstepNadd</span>(<span class="s4">Pseq</span>([1, 2, 3], <span class="s4">inf</span>), <span class="s4">Pseq</span>([10, 20, 30, 40]), <span class="s4">Pseq</span>([100, 200, 300])).asStream;</p>
-<p class="p5">y = <span class="s4">Pn</span>(<span class="s4">PstepNadd</span>(<span class="s4">Pseq</span>([1, 2, 3]), <span class="s4">Pseq</span>([10, 20, 30, 40]), <span class="s4">Pseq</span>([100, 200, 300])), <span class="s4">inf</span>).asStream;</p>
-<p class="p5">150.do({ [x.next, y.next].postln });</p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6">Pbind<span class="s5">(</span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>\octave<span class="s5">, 4,</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s7">\degree</span><span class="s5">, </span>PstepNadd<span class="s5">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1, 2, 3]),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([0, -2, [1, 3], -5]),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pshuf</span>([1, 0, 3, 0], 2),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1, -1], 5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s7">\dur</span><span class="s5">, </span>PstepNadd<span class="s5">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1, 0, 0, 1], 2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pshuf</span>([1, 1, 2, 1], 2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).loop * (1/8),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">\legato</span>, <span class="s4">Pn</span>(<span class="s4">Pshuf</span>([0.2, 0.2, 0.2, 0.5, 0.5, 1.6, 1.4], 4), <span class="s4">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">\scale</span>, #[0, 1, 3, 4, 5, 7, 8]</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/PstepNfunc.html b/Help/Streams-Patterns-Events/Patterns/PstepNfunc.html
deleted file mode 100644
index 8cc79be..0000000
--- a/Help/Streams-Patterns-Events/Patterns/PstepNfunc.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PstepNfunc<span class="Apple-tab-span">	</span></b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>combinatoric pattern <span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: <a href="Pattern.html"><span class="s3">Pattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">combines an arbitrary number of patterns by evaluating a function (depth first traversal).</p>
-<p class="p1">when a stream ends it is recreated from its pattern until the top stream ends.</p>
-<p class="p3"><br></p>
-<p class="p1">see also: <b>PstepNadd</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span></span><b>*new(func, patternList);</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">//examples</p>
-<p class="p5">(</p>
-<p class="p5">f = { <span class="s4">arg</span> vals;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>vals.postln;</p>
-<p class="p5">};</p>
-<p class="p6"><span class="s5">x = </span>PstepNfunc<span class="s5">(f, [</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1, 2, 3]), <span class="s4">Pseq</span>([4, 5, 6]), <span class="s4">Pseq</span>([7, 8, 9])</p>
-<p class="p5"><span class="Apple-tab-span">	</span>]).asStream;</p>
-<p class="p5">50.do({ x.next });</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5">f = { <span class="s4">arg</span> vals;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> r;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>r = vals.copy.removeAt(0);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>vals.do({ <span class="s4">arg</span> item;<span class="Apple-converted-space">  </span>r = item / r.squared * 10 });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>r</p>
-<p class="p5">};</p>
-<p class="p6"><span class="s5">x = </span>PstepNfunc<span class="s5">(f,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1, 2, 3], inf),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([2, pi, 1]),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([0.1, 3, 0.2, 3])</p>
-<p class="p5"><span class="Apple-tab-span">	</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span>).asStream;</p>
-<p class="p3"><br></p>
-<p class="p5">50.do({ x.next.postln });</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// note that if the last pattern loops it will stick to that one:</p>
-<p class="p5">(</p>
-<p class="p5">f = { <span class="s4">arg</span> vals;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>vals.postln;</p>
-<p class="p5">};</p>
-<p class="p5">x = <span class="s4">PstepNfunc</span>(f, [<span class="s4">Pseq</span>([1, 2, 3]), <span class="s4">Pseq</span>([10, 20, 30, 40]), <span class="s4">Pseq</span>([100, 200, 300], <span class="s4">inf</span>)]).asStream;</p>
-<p class="p5">50.do({ x.next });</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5">f = { <span class="s4">arg</span> vals;</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>vals.inject(1, { arg x, y; x * y })</p>
-<p class="p5">};</p>
-<p class="p6"><span class="s5">x = </span>PstepNfunc<span class="s5">(f,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([1, 2, 3], inf),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([2, pi, 1]),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([0.1, 3, 0.2, 3])</p>
-<p class="p5"><span class="Apple-tab-span">	</span>]</p>
-<p class="p5"><span class="Apple-tab-span">	</span>).asStream;</p>
-<p class="p3"><br></p>
-<p class="p5">50.do({ x.next.postln });</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pstutter.html b/Help/Streams-Patterns-Events/Patterns/Pstutter.html
deleted file mode 100644
index 3537423..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pstutter.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pstutter</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>repeat input stream values</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>superclass: </b><a href="FilterPattern.html"><span class="s3">FilterPattern</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pstutter(n, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p1">repeat each element n times</p>
-<p class="p2"><br></p>
-<p class="p1">n may be a pattern, so the number of times can vary each iteration</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s4">var</span> a, b;</p>
-<p class="p4">a = <span class="s4">Pstutter</span>(2, Pseq([1, 2, 3],inf));</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">13.do({ x.next.postln; });</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p1">Pstutter used as a sequence of pitches</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">c = <span class="s4">Pstutter</span>(3, <span class="s4">Prand</span>([1, 2, 3],<span class="s4">inf</span>)*4+65);</p>
-<p class="p4">x = c.asStream;</p>
-<p class="p8">Routine<span class="s2">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, x.next.midicps]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.12.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}).play;</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pswitch.html b/Help/Streams-Patterns-Events/Patterns/Pswitch.html
deleted file mode 100644
index 936e8ea..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pswitch.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0025b2}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pswitch</b></span> <b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>embed values in a list according to a pattern of indices</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pswitch(list, which)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Pswitch chooses elements from the <b>list</b> by a stream of indices (<b>which</b>) and embeds them in the stream.</p>
-<p class="p1">If the element is itself a pattern, it first completely embeds it before looking for the next index.</p>
-<p class="p2"><br></p>
-<p class="p1">see also <a href="Pswitch1.html"><span class="s2">Pswitch1</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s3">var</span> a, b;</p>
-<p class="p3">a = <span class="s3">Pseq</span>([1, 2, 3], 2);</p>
-<p class="p3">b = <span class="s3">Pseq</span>([65, 76]);</p>
-<p class="p3">c = <span class="s3">Pswitch</span>([a, b, 800], <span class="s3">Pseq</span>([2, 2, 0, 1], <span class="s3">inf</span>));</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p3">24.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Pswitch used as a sequence of pitches:</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s4">SynthDef</span><span class="s5">(</span>\help_sinegrain<span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s4">Pseq</span>([73, 71, 69], 2);</p>
-<p class="p3">b = <span class="s4">Pseq</span>([0, 0, 0, 4, 0]+64);</p>
-<p class="p3">c = <span class="s4">Pswitch</span>([a, b, 75], <span class="s4">Pseq</span>([2, 2, 0, 1], <span class="s4">inf</span>));</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p7">Routine<span class="s5">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s6">\help_sinegrain</span>, [<span class="s6">\freq</span>, x.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.18.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pswitch1.html b/Help/Streams-Patterns-Events/Patterns/Pswitch1.html
deleted file mode 100644
index 2a4d053..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pswitch1.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pswitch1</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>embed values in a list according to a pattern of indices</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pswitch1(list, which)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Pswitch1 chooses elements from the <b>list</b> by a stream of indices (<b>which</b>) and embeds them in the stream.</p>
-<p class="p1">If the element is itself a pattern, it embeds only one of its values for each index, and thus switches between all patterns in the list.</p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="Pswitch.html"><span class="s2">Pswitch</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pseq</span>([1, 2, 3], inf);</p>
-<p class="p3">b = <span class="s2">Pseq</span>([65, 76], inf);</p>
-<p class="p3">c = <span class="s2">Pswitch1</span>([a, b, 800], <span class="s2">Pseq</span>([2, 2, 0, 1], <span class="s2">inf</span>));</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p3">24.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p1">Pswitch used as a sequence of pitches:</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pseq</span>([73, 71, 69], <span class="s2">inf</span>);</p>
-<p class="p3">b = <span class="s2">Pseq</span>([0, 0, 0, 4, 0]+64, <span class="s2">inf</span>);</p>
-<p class="p3">c = <span class="s2">Pswitch1</span>([a, b, 75], <span class="s2">Pseq</span>([2, 2, 0, 1], <span class="s2">inf</span>));</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p7">Routine<span class="s3">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">\help_sinegrain</span>, [<span class="s4">\freq</span>, x.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.18.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Psync.html b/Help/Streams-Patterns-Events/Patterns/Psync.html
deleted file mode 100644
index 7787d3e..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Psync.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #001bb9}
-span.s4 {color: #000000}
-span.s5 {color: #2c7014}
-span.s6 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Psync</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>synchronise and limit pattern duration</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass:<span class="Apple-converted-space">  </span>FilterPattern</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span></span><b>*new(pattern, min, max, tolerance)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>pattern</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a pattern that returns events</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>min</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>beat duration for ending patterns</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>max</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum length of pattern</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>tolerance</b>:<span class="Apple-tab-span">	</span>difference threshhold that a pattern must exceed max to be ended</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5"><span class="s3">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> out=0, freq=440, sustain=0.05, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> env;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, sustain, 0.3), doneAction:2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">Pan2</span>.ar(<span class="s3">SinOsc</span>.ar(freq, 0, env), pan))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">s.boot;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">// example:</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p6">// a fixed duration pattern:</p>
-<p class="p3"><br></p>
-<p class="p4">f = <span class="s3">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.5,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s3">Pn</span>(4,1),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_sinegrain</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6">// this pattern has indetermined length:</p>
-<p class="p4">a = <span class="s3">Prand</span>([</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Pseq</span>([0.02, 0.002, 0.1, 0.1],2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s3">Pseq</span>([9, 7, 5],<span class="s3">inf</span>),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_sinegrain</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Pseq</span>([1, 0.35],2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s3">Pseq</span>([0, [2b,5b]],<span class="s3">inf</span>),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_sinegrain</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Pbind<span class="s4">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s3">Pseq</span>([0.15, 0.25, 1.3],2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\degree</span>, <span class="s3">Pseq</span>([2b,4,5b],<span class="s3">inf</span>),</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s4">, </span>\help_sinegrain</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]);</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s3">Pseq</span>([f, f, a, a], <span class="s3">inf</span>).play; <span class="s6">// play a sequence</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6">// Psync allows to limit the duration of a stream relative to a beat grid</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s4">b = </span><span class="s3">Psync</span><span class="s4">(a, 1, 1); </span>// create a sequence of exactly 1 beat elements</p>
-<p class="p4"><span class="s3">Pseq</span>([f, f, b, b], <span class="s3">inf</span>).play;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s4">b = </span><span class="s3">Psync</span><span class="s4">(a, 1, 2); </span>// create a sequence of elements of either 1 or 2 beats length</p>
-<p class="p4"><span class="s3">Pseq</span>([f, f, b, b], <span class="s3">inf</span>).play;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p6"><span class="s4">b = </span><span class="s3">Psync</span><span class="s4">(a, 2);<span class="Apple-tab-span">	</span></span>// create a sequence of elements with a minimum of 2 beats,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// but with undetermined upper limit</p>
-<p class="p7">Ppar<span class="s4">([</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([f, f, b, b], <span class="s3">inf</span>), <span class="s6">// sequence</span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">Pbind</span><span class="s4">(</span>\instrument<span class="s4">, </span>\help_sinegrain<span class="s4">, </span>\freq<span class="s4">, 1000, </span>\sustain<span class="s4">, 0.01, </span>\dur<span class="s4">, 2) </span><span class="s6">// metronome</span></p>
-<p class="p4">]).play;<span class="Apple-converted-space"> </span></p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Ptime.html b/Help/Streams-Patterns-Events/Patterns/Ptime.html
deleted file mode 100644
index 267da46..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Ptime.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ptime<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>derive relative time</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: Pattern</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">returns time in beats from moment of embedding in stream</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ptime(repeats)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s2">Ptime</span>.new;</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">x.next;<span class="Apple-converted-space"> </span></p>
-<p class="p4">x.next;</p>
-<p class="p4">x.next;</p>
-<p class="p5"><br></p>
-<p class="p6">// post time in a playing event stream</p>
-<p class="p4">(</p>
-<p class="p7">Pbind<span class="s3">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\pfunc</span>, <span class="s2">Ptime</span>.new.trace,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s2">Pseries</span>(0.5, 0.5, 5)</p>
-<p class="p4">).play;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// change degree independant of number of events that have been playing</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> a, b;</p>
-<p class="p4">a = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s2">Pswitch</span>(#[0, 2b, 3], <span class="s2">Ptime</span>(8).round(2) / 2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s2">Prand</span>(#[0.2, 0.5, 1.1, 0.25, 0.15], <span class="s2">inf</span>)</p>
-<p class="p4">);</p>
-<p class="p4">b = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s2">Pseq</span>(#[0, 2b, 3], 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 2,</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\ctranspose<span class="s3">, -7</span></p>
-<p class="p4">);</p>
-<p class="p4"><span class="s2">Pseq</span>([<span class="s2">Event</span>.silent(1.25), <span class="s2">Ppar</span>([a, b])], <span class="s2">inf</span>).play;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// test tempo changes</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> a, b;</p>
-<p class="p4">a = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s2">Pswitch</span>(#[0, 2b, 3], <span class="s2">Ptime</span>(8).round(2) / 2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, <span class="s2">Prand</span>(#[0.2, 0.5, 1.1, 0.25, 0.15], 9)</p>
-<p class="p4">);</p>
-<p class="p4">b = <span class="s2">Pbind</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\degree</span>, <span class="s2">Pseq</span>(#[0, 2b, 3], 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">\dur</span>, 2,</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>\ctranspose<span class="s3">, -7</span></p>
-<p class="p4">);</p>
-<p class="p7">Pn<span class="s3">(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Pfset</span>({ ~tempo = #[1, 2, 4].choose.postln },<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pseq</span>([</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Event</span>.silent(1.25),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Ppar</span>([a, b])</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">).play</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Ptpar.html b/Help/Streams-Patterns-Events/Patterns/Ptpar.html
deleted file mode 100644
index 4d27d93..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Ptpar.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #001bb9}
-span.s4 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ptpar<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>embed event streams in parallel, with time offset</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: ListPatterns</b></p>
-<p class="p2"><br></p>
-<p class="p1">Embeds several event streams so that they form a single output stream with<span class="Apple-converted-space"> </span></p>
-<p class="p1">all their events in temporal order, providing a global <b>offset</b> for each.<span class="Apple-converted-space"> </span></p>
-<p class="p1">When one stream ends, the other streams are further embedded until all have ended.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ptpar(list, repeats)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>list:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>list of pairs of times and patterns: [time, pat, time, pat .. ]</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>repeats:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>repeat the whole pattern n times (default: 1)</p>
-<p class="p2"><br></p>
-<p class="p1">see also <a href="Ppar.html"><span class="s2">Ppar</span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// see the delta values in the resulting events</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s3">var</span> a, b, c, t;</p>
-<p class="p6">a = <span class="s3">Pbind</span>(<span class="s4">\x</span>, <span class="s3">Pseq</span>([1, 2, 3, 4]), <span class="s4">\dur</span>, 1);</p>
-<p class="p6">b = <span class="s3">Pbind</span>(<span class="s4">\x</span>, <span class="s3">Pseq</span>([10, 20, 30, 40]), <span class="s4">\dur</span>, 0.4);</p>
-<p class="p6">c = <span class="s3">Ptpar</span>([0.0, a, 1.3, b]);</p>
-<p class="p6">t = c.asStream;</p>
-<p class="p6">20.do({ t.next(<span class="s3">Event</span>.default).postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p5">// sound example</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s3">var</span> a, b;</p>
-<p class="p6">a = <span class="s3">Pbind</span>(<span class="s4">\note</span>, <span class="s3">Pseq</span>([7, 4, 0], 4), <span class="s4">\dur</span>, <span class="s3">Pseq</span>([1, 0.5, 1.5], <span class="s3">inf</span>));</p>
-<p class="p6">b = <span class="s3">Pbind</span>(<span class="s4">\note</span>, <span class="s3">Pseq</span>([5, 10, 12], 4), <span class="s4">\dur</span>, 1);</p>
-<p class="p6"><span class="s3">Ptpar</span>([ 0.0, a, 1.3, b ]).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Ptuple.html b/Help/Streams-Patterns-Events/Patterns/Ptuple.html
deleted file mode 100644
index 5aee263..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Ptuple.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ptuple</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>combine a list of streams to a stream of lists</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: ListPatterns</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ptuple(list, repeats)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>list: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an Array of Patterns</p>
-<p class="p1"><span class="Apple-tab-span">	</span>repeats: <span class="Apple-tab-span">	</span>an Integer or inf</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">At each iteration, Ptuple returns a tuple (array) combining the output of each of the patterns in the list.<span class="Apple-converted-space">  </span>When any of the patterns returns a nil, Ptuple ends that 'repeat' and restarts all of the streams.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pseq</span>([1, 2, 3], <span class="s2">inf</span>);</p>
-<p class="p3">b = <span class="s2">Pseq</span>([65, 76], <span class="s2">inf</span>);</p>
-<p class="p3">c = <span class="s2">Ptuple</span>([a, a, b], <span class="s2">inf</span>);</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p3">8.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pseq</span>([1, 2, 3], <span class="s2">inf</span>);</p>
-<p class="p4"><span class="s3">b = </span><span class="s2">Pseq</span><span class="s3">([65, 76], 3); </span>// stops after 3 cycles</p>
-<p class="p4"><span class="s3">c = </span><span class="s2">Ptuple</span><span class="s3">([a, a, b], 4); </span>// stops after 4 cycles</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p3">8.do({ x.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p1">Ptuple used as a sequence of pitches (chords)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>\help_sinegrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p7"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pseq</span>([73, 71, 69, 69, 65, 64], <span class="s2">inf</span>);</p>
-<p class="p3">b = <span class="s2">Pseq</span>([0, 0, 0, 4, 0, 3, 2], <span class="s2">inf</span>) + a;</p>
-<p class="p3">c = <span class="s2">Ptuple</span>([a, b], <span class="s2">inf</span>);</p>
-<p class="p3">x = c.asStream;</p>
-<p class="p8">Routine<span class="s3">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> chord;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chord = x.next.postln.midicps;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(instrument: <span class="s4">\help_sinegrain</span>, <span class="s4">freq</span>: chord).play;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p7"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Punop.html b/Help/Streams-Patterns-Events/Patterns/Punop.html
deleted file mode 100644
index 54d811f..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Punop.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Punop<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>unary operator pattern</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Punop(operator, a)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Returns a stream that applies the unary operator to the stream values of the receiver .</p>
-<p class="p1">Usually, this is the result of applying a unary operator (i.e. a method with one argument) to a pattern.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>operator </b>- operator to be applied</p>
-<p class="p1"><b>a</b> - a pattern (or compatible pattern input)</p>
-<p class="p2"><br></p>
-<p class="p1">examples of unary operators are: squared, sqrt, sin, tan ...</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also: </b><a href="Pnaryop.html"><span class="s3">Pnaryop</span></a>, <a href="Pbinop.html"><span class="s3">Pbinop</span></a>, <a href="../../Core/UnaryOpFunction.html"><span class="s3">UnaryOpFunction</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Punop</span>(<span class="s5">\sqrt</span>, <span class="s4">Pseries</span>(0, 1, 12));</p>
-<p class="p6">a.asStream.all;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// this is the same as:</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Pseries</span>(0, 1, 12).sqrt;</p>
-<p class="p6">a.asStream.all;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// some common cases:</p>
-<p class="p6"><span class="s4">Pseq</span>([1, 2, 3]).squared;</p>
-<p class="p6"><span class="s4">Pseq</span>([0.2, 0.5, 0.8]).coin;</p>
-<p class="p6"><span class="s4">Pwhite</span>(-100, 100, <span class="s4">inf</span>).abs;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// sound example</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05, amp=0.1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2, amp), doneAction:2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Pn</span>(<span class="s4">Punop</span>(<span class="s5">\sqrt</span>, <span class="s4">Pseries</span>(0, 1, 12))).asStream;</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.do { <span class="s4">|val|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a * 200 + 300].postln);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.fork;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p8">Pbind<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.01,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\help_sinegrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">\note</span>, <span class="s4">Pn</span>(<span class="s4">Punop</span>(<span class="s5">\sqrt</span>, <span class="s4">Pseries</span>(0, 1, 12)))</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// these are the same as:</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Pn</span>(<span class="s4">Pseries</span>(0, 1, 12).sqrt).asStream;</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.do { <span class="s4">|val|</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a * 200 + 300].postln);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}</p>
-<p class="p6">}.fork;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p8">Pbind<span class="s2">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, 0.1,</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>\instrument<span class="s2">, </span>\help_sinegrain<span class="s2">,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">\note</span>, <span class="s4">Pn</span>(<span class="s4">Pseries</span>(0, 1, 12).sqrt)</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pwalk.html b/Help/Streams-Patterns-Events/Patterns/Pwalk.html
deleted file mode 100644
index 019de4a..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pwalk.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 20.0px Helvetica}
-span.s3 {color: #001bb9}
-span.s4 {color: #ad140d}
-span.s5 {color: #000000}
-span.s6 {color: #606060}
-span.s7 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pwalk</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>A one-dimensional random walk over a list of values that are embedded</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: <a href="ListPattern.html"><span class="s3">ListPattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pwalk(list, stepPattern, directionPattern, startPos)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>list</b> - The items to be walked over.</p>
-<p class="p1"><b>stepPattern</b> - Returns integers that will be used to increment the index into list.</p>
-<p class="p1"><b>directionPattern</b> - Used to determine the behavior at boundaries. When the index crosses a boundary, the next direction is drawn from this stream: 1 means use stepPattern as is, -1 means go in the reverse direction.</p>
-<p class="p2"><br></p>
-<p class="p1">Common patterns:<span class="Apple-tab-span">	</span><b>1</b> -- always wrap around to the other boundary.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Pseq([1, -1], inf)</b> -- go forward first, then backward, then forward again</p>
-<p class="p2"><br></p>
-<p class="p1"><b>startPos</b>: Where to start in the list.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Example:</b></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s3">Pwalk</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Array</span>.series(20, 0, 1),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// integers, 0-19</span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// steps up to 2 in either direction, weighted toward positive</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Pwrand</span>([-2, -1, 0, 1, 2], [0.05, 0.1, 0.15, 1, 0.1].normalizeSum, <span class="s3">inf</span>),</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reverse direction at boundaries</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([1, -1], <span class="s3">inf</span>),</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span>10);<span class="Apple-tab-span">	</span></span>// start in the middle</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">200.do({ x.next.post; <span class="s6">", "</span>.post });</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s5">b = a.copy.directionPattern_(1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this one will always wrap around</p>
-<p class="p4">x = b.asStream;</p>
-<p class="p3"><br></p>
-<p class="p4">200.do({ x.next.post; <span class="s6">", "</span>.post });</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// non-random walk: easy way to do up-and-down arpeggiation</p>
-<p class="p4">s.boot;</p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s3">Pwalk</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[60, 64, 67, 72, 76, 79, 84].midicps,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// C major</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Pseq</span>([1], <span class="s3">inf</span>),</p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s3">Pseq</span><span class="s5">([1, -1], </span><span class="s3">inf</span><span class="s5">),<span class="Apple-tab-span">	</span></span>// turn around at either end</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0);</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s3">SynthDef</span>(<span class="s7">\help_walk</span>, { <span class="s3">arg</span> freq;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, <span class="s3">Saw</span>.ar([freq, freq+1], 0.5) * <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(0.01, 0.1), doneAction:2))</p>
-<p class="p4">}).add;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">r = <span class="s3">Task</span>({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>.new(<span class="s7">\help_walk</span>, [<span class="s7">\freq</span>, x.next]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.loop;</p>
-<p class="p6"><span class="s5">}).play(</span>SystemClock<span class="s5">);</span></p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">r.stop;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pwhile.html b/Help/Streams-Patterns-Events/Patterns/Pwhile.html
deleted file mode 100644
index 22354b1..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pwhile.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pwhile<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>while a condition holds,<span class="Apple-converted-space">  </span>repeatedly embed<span class="Apple-converted-space">  </span>stream</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: FuncFilterPattern</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pwhile(func, pattern)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">z = <span class="s2">true</span>;</p>
-<p class="p4">a = <span class="s2">Pwhile</span>({ z }, <span class="s2">Pseq</span>(#[1, 2, 3]));</p>
-<p class="p4">x = a.asStream;</p>
-<p class="p4">);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">7.do({ x.next.postln; }); </span>// while z == true, the values are embedded</p>
-<p class="p6"><span class="s3">z = </span><span class="s2">false</span><span class="s3">; </span>// set z to false</p>
-<p class="p6"><span class="s3">x.next; </span>// the rest of the stream is still embedded</p>
-<p class="p4">x.next;</p>
-<p class="p6"><span class="s3">x.next; </span>// but then it is not continued.</p>
-<p class="p4">x.next;</p>
-<p class="p4">x.next;</p>
-<p class="p4">x.next;</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pwhite.html b/Help/Streams-Patterns-Events/Patterns/Pwhite.html
deleted file mode 100644
index 50844cc..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pwhite.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9e201b}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3c6d12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0023b7}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #3c6d12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pwhite</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>random values with uniform distribution</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Pattern</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pwhite(lo, hi, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo, hi<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lower and upper boundary of values (default: 0.0 and 1.0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of values produced<span class="Apple-converted-space">  </span>(default: inf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// example</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pwhite</span>(0.0, 1.0, <span class="s2">inf</span>);</p>
-<p class="p5">c = a.asStream.nextN(500);</p>
-<p class="p5">w = <span class="s2">Window</span>.new(<span class="s3">"Pwhite"</span>, <span class="s2">Rect</span>(10, 10, 540, 800));</p>
-<p class="p4">// plot the values</p>
-<p class="p5">c.plot(bounds: <span class="s2">Rect</span>(10, 10, 520, 380), discrete: <span class="s2">true</span>, parent: w);</p>
-<p class="p4">// a histogram of the values</p>
-<p class="p5">c.histo(500).plot(bounds: <span class="s2">Rect</span>(10, 410, 520, 380), parent: w);</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pwhite</span>(0.0, 1.0, <span class="s2">inf</span>);</p>
-<p class="p5">a.asStream.nextN(1000).plot;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> a;</p>
-<p class="p5">a = <span class="s2">Pwhite</span>(0.0, 1.0, <span class="s2">inf</span>).asStream;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// this is equivalent to:</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, rrand(0.0, 1.0) * 600 + 300]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pwrand.html b/Help/Streams-Patterns-Events/Patterns/Pwrand.html
deleted file mode 100644
index bf2982a..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pwrand.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #bf0000}
-span.s4 {color: #000000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pwrand</b></span> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>embed values randomly chosen from a list</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="ListPattern.html"><span class="s2">ListPattern</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">returns one item from the list at random for each repeat, the probability</p>
-<p class="p1">for each item is determined by a list of weights which should sum to 1.0.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pwrand</span>.new([1, 2, 3], [1, 3, 5].normalizeSum, 6);<span class="Apple-tab-span">	</span><span class="s3">// return 6 items</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">7.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p1">Prand used as a sequence of pitches:</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pwrand</span>([60, 61, 63, 65, 72], [10, 2, 3, 1, 3].normalizeSum, <span class="s2">inf</span>).asStream;</p>
-<p class="p7">Routine<span class="s4">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pwrap.html b/Help/Streams-Patterns-Events/Patterns/Pwrap.html
deleted file mode 100644
index de207ff..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pwrap.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pwrap</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>constrain the range of output values by wrapping</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>superclass: </b><a href="FilterPattern.html"><span class="s3">FilterPattern</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pwrap(pattern, lo, hi)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Note</b>: this is equivalent to<b> pattern.wrap(lo, hi)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">see also <a href="../../Math/SimpleNumber.html"><span class="s3">SimpleNumber</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s2">(</span>\help_sinegrain<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s4">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> env;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s4">EnvGen</span>.kr(<span class="s4">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">a = <span class="s4">Pn</span>(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>Pwrap<span class="s2">(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pgeom</span>(200,1.07,96),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>200,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1000.0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>inf</p>
-<p class="p5">);</p>
-<p class="p5">x = a.asStream;</p>
-<p class="p4"><br></p>
-<p class="p7">Routine<span class="s2">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, x.next.debug,<span class="s5">\dur</span>,0.3]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.12.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">- felix</p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Patterns/Pxrand.html b/Help/Streams-Patterns-Events/Patterns/Pxrand.html
deleted file mode 100644
index 1715624..0000000
--- a/Help/Streams-Patterns-Events/Patterns/Pxrand.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #ad140d}
-span.s4 {color: #000000}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pxrand</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>embed values randomly chosen from a list</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">like <a href="Prand.html"><span class="s2">Prand</span></a>, returns one item from the list at random for each repeat, but Pxrand never</p>
-<p class="p1">repeats the same element twice in a row.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">see also: <a href="Pwrand.html"><span class="s2">Pwrand</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">var</span> a, b;</p>
-<p class="p3">a = <span class="s2">Pxrand</span>.new(#[1, 2, 3], 10);<span class="Apple-tab-span">	</span><span class="s3">// return 10 items</span></p>
-<p class="p3">b = a.asStream;</p>
-<p class="p3">11.do({ b.next.postln; });</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p1">Pxrand used as a sequence of pitches:</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s2">SynthDef</span><span class="s4">(</span>\help_sinegrain<span class="s4">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s2">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3">a = <span class="s2">Pxrand</span>(#[60, 61, 63, 65, 72], <span class="s2">inf</span>).asStream;</p>
-<p class="p7">Routine<span class="s4">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s5">\help_sinegrain</span>, [<span class="s5">\freq</span>, a.next.midicps]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">}).play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Stream.html b/Help/Streams-Patterns-Events/Stream.html
deleted file mode 100644
index 91b39a4..0000000
--- a/Help/Streams-Patterns-Events/Stream.html
+++ /dev/null
@@ -1,347 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #416d1f}
-span.s1 {color: #000000}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {color: #0025b2}
-span.s4 {color: #606060}
-span.s5 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Stream</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a></span><b> </b><span class="s1"><b>: </b><a href="../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">Stream is an abstract class that is not used directly.<span class="Apple-converted-space">  </span>The following attempts to document some</p>
-<p class="p4">aspects of the use of Streams for music generation.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Overview</b></p>
-<p class="p2"><br></p>
-<p class="p4">A Stream represents a sequence of values that are obtained incrementally by repeated</p>
-<p class="p4"><b>next </b>messages.<span class="Apple-converted-space">  </span>A Stream can be restarted with a <b>reset </b>message. (Not all streams<span class="Apple-converted-space"> </span></p>
-<p class="p4">actually implement reset semantics.)</p>
-<p class="p2"><br></p>
-<p class="p4">The class Object defines <b>next</b> to return the object itself.<span class="Apple-converted-space">  </span>Thus every object can be viewed</p>
-<p class="p4">as a stream and most simply stream themselves. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Stream </b>is the base class for classes that define streams.</p>
-<p class="p2"><br></p>
-<p class="p4">In SuperCollider, Streams are primarily used for handling text and for generating music.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><b><i>Two Stream classes: FuncStream and Routine</i></b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>FuncStream(nextFunction, resetFunction)</b></p>
-<p class="p2"><br></p>
-<p class="p4">A Function defines a stream consisting of the Function itself, a FuncStream defines a stream</p>
-<p class="p4">that consists of <i>evaluations </i>of<i> </i>its nextFunction.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// Example 1: a Function vs. a FuncStream</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>(<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = { 33.rand };</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s3">FuncStream</span>(f);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ [f.next, x.next].postln });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>// Example 2: the reset function</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(<span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = { 33.rand };</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s3">FuncStream</span>(f, {<span class="s3">thisThread</span>.randSeed_(345)});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.reset;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ [f.next, x.next].postln });</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.reset;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ [f.next, x.next].postln });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Routine(nextFunction, stacksize)</b></p>
-<p class="p2"><br></p>
-<p class="p4">In a FuncStream, the nextFunction runs through to completion for each element of the stream.</p>
-<p class="p4">In a Routine, the nextFunction returns values with <b>yield</b> and resumes execution (when it receives</p>
-<p class="p4">a <b>next<span class="Apple-converted-space"> </span></b> message) at the expression folowing the yield.<span class="Apple-converted-space">  </span>This allows a sequence of expressions in</p>
-<p class="p4">the function definition to represent a sequence of distinct events, like a musical score.</p>
-<p class="p2"><br></p>
-<p class="p10"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// example</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s3">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4.do({ x.next.postln });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p4">Once the nextFunction completes execution, the Routine simply yields nil repeatedly.</p>
-<p class="p4">Control structures (such as <b>do</b> or <b>while</b>) can be used within the nextFunction in a manner analogous</p>
-<p class="p4">to repeat marks in a score</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// example</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s3">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4.do({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1,2,3,4].do({ <span class="s3">arg</span> i; i.yield; });</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>17.do({ x.next.postln });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b><i>Playing streams</i></b></p>
-<p class="p2"><br></p>
-<p class="p4">Because streams respond like functions to the value message,<span class="Apple-converted-space"> </span></p>
-<p class="p4">they can be used as a scheduling task.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// compare:</p>
-<p class="p7"><span class="Apple-tab-span">	</span>// a function, returning 0.5</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">SystemClock</span>.sched(0.0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s4">"***"</span>.postln; 0.5 }</p>
-<p class="p8"><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>// a stream, returning 0.5 and 0.1</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">SystemClock</span>.sched(0.0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Routine</span>({ loop {<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"***"</span>.postln; 0.5.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"_*_"</span>.postln; 0.1.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} })</p>
-<p class="p8"><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>// this is the reason why 'wait' works the same (for numbers) like 'yield'<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">SystemClock</span>.sched(0.0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Routine</span>({ loop {<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"***"</span>.postln; 0.5.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"_*_"</span>.postln; 0.1.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} })</p>
-<p class="p8"><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><br></p>
-<p class="p2"><br></p>
-<p class="p4">Streams that return <b>numbers</b> can be played directly with the <b>play</b> message:</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>play(clock, quant)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>clock</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a Clock, TempoClock by default</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>quant</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>either a number<b> n</b> (quantize to <b>n </b>beats)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or an array<b> [n, m]</b> (quantize to <b>n</b> beats, with offset <b>m</b>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// play at the next beat, with offset 0.4</p>
-<p class="p11"><span class="s1"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>Routine</span>({ loop {<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"***"</span>.postln; 0.5.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"_*_"</span>.postln; 0.1.wait;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>} }).play(quant:[1, 0.4]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p4">Streams that return <b>Events</b> need to be wrapped in an <b>EventStreamPlayer</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p4">The Event's <b>delta</b> (can also be set by <b>dur</b>) is used as a scheduling beats value:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5"><b><span class="Apple-tab-span">	</span></b></span>// play at the next beat, with offset 0.4</p>
-<p class="p11"><span class="s1"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>Routine</span>({ loop {<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"///"</span>.postln; (delta:0.5).yield;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"_/_"</span>.postln; (delta: 0.1).wait;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>} }).asEventStreamPlayer.play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p5"><b><i>Iteration</i></b></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>do (function)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>iterate until a nil is encountered</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>beware:</b> applying do to an endless stream will lock up the interpreter!</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Where <b>do </b>effectively 'plays' a stream by iterating all of its contects,<span class="Apple-converted-space">  </span>the<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>following messages create a stream by filtering another stream in some way.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>collect (function)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>iterate indefinitely</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>reject (function)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return only those elements for which function.value(element) is false</p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>select (function)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return only those elements for which function.value(element) is true</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>dot(function, stream)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return <b>function.value(this.next, stream.next)</b> for each element</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>interlace(function, stream)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>iterate all of stream for each element of this.<span class="Apple-converted-space">  </span>Combine the values using function.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>appendStream(stream)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>append stream after this<b> </b>returns nil. The same like <b>++</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>embedInStream(inval)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>iterate all of this from within whatever Stream definition it is called.</p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>trace(key, printStream, prefix)</b></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>print out the results of a stream while returning the original values</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>key</b>: <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>when streaming events, post only this key.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>printStream</b>: <span class="Apple-tab-span">	</span>printOn this stream (default: Post)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>prefix</b>:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>string added to the printout to separate different streams</p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p2"><br></p>
-<p class="p13"><b><i>Composite Streams</i></b></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p14">Routines can be embedded in each other, using <b>embedInStream</b>:</p>
-<p class="p12"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// example</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>x = <span class="s3">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.do({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1,2,3,4].do({ <span class="s3">arg</span> i; i.yield; });</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span>y = <span class="s3">Routine</span>({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>30.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.embedInStream;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>440.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1910.yield</p>
-<p class="p8"><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span>17.do({ y.next.postln });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p4">Routines can be <b>concatenated</b> just like Streams:</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>x = <span class="s3">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.do({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1,2,3,4].do({ <span class="s3">arg</span> i; i.yield; });</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span>y = <span class="s3">Routine</span>({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>30.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = x ++ y;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>17.do({ z.next.postln });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><br></p>
-<p class="p4">Routines can be combined with the <b>composition</b> operator <b><></b></p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>x = <span class="s3">Routine</span>({ <span class="s3">arg</span> inval;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.do({</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1,2,3,4].do({ <span class="s3">arg</span> i;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(inval.isNil) { <span class="s3">nil</span>.alwaysYield };</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inval = (i * inval).yield;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>y = <span class="s3">Routine</span>({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>30.yield;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4.do { 1.0.rand.yield };</p>
-<p class="p8"><span class="Apple-tab-span">	</span>});</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = x <> y;</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>17.do({ z.value.postln }); </span>// call .value here, as this is a function.</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p4">Composite Streams can be defined as combinations of Streams using the unary and binary<span class="Apple-converted-space"> </span></p>
-<p class="p4">messages.</p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-<p class="p5"><b><i>Unary messages</i></b></p>
-<p class="p15"><br></p>
-<p class="p2"><br></p>
-<p class="p4">Streams support most of the unary messages<span class="Apple-converted-space">  </span>defined in AbstractFunction:</p>
-<p class="p2"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a = <span class="s3">Routine</span>({ 20.do({ 33.rand.yield }) });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>b = <span class="s3">Routine</span>({ [-100,00,300,400].do({ <span class="s3">arg</span> v; v.yield}) });</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>c = b.neg; </span>// define a composite stream<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>// enumerate and perform all of the unary messages<span class="Apple-tab-span">	</span>:<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>[<span class="Apple-converted-space"> </span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\neg<span class="s1">, </span>\reciprocal<span class="s1">, </span>\bitNot<span class="s1">, </span>\abs<span class="s1">, </span>\asFloat<span class="s1">, </span>\asInteger<span class="s1">, </span>\ceil<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\floor<span class="s1">, </span>\frac<span class="s1">, </span>\sign<span class="s1">, </span>\squared<span class="s1">, </span>\cubed<span class="s1">, </span>\sqrt<span class="s1">, </span>\exp<span class="s1">, </span>\midicps<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\cpsmidi<span class="s1">, </span>\midiratio<span class="s1">, </span>\ratiomidi<span class="s1">, </span>\ampdb<span class="s1">, </span>\dbamp<span class="s1">, </span>\octcps<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\cpsoct<span class="s1">, </span>\log<span class="s1">, </span>\log2<span class="s1">, </span>\log10<span class="s1">, </span>\sin<span class="s1">, </span>\cos<span class="s1">, </span>\tan<span class="s1">, </span>\asin<span class="s1">, </span>\acos<span class="s1">, </span>\atan<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\sinh<span class="s1">, </span>\cosh<span class="s1">, </span>\tanh<span class="s1">, </span>\rand<span class="s1">, </span>\rand2<span class="s1">, </span>\linrand<span class="s1">, </span>\bilinrand<span class="s1">, </span>\sum3rand<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\distort<span class="s1">, </span>\softclip<span class="s1">, </span>\coin<span class="s1">, </span>\even<span class="s1">, </span>\odd<span class="s1">, </span>\isPositive<span class="s1">, </span>\isNegative<span class="s1">,</span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\isStrictlyPositive</p>
-<p class="p8"><span class="Apple-tab-span">	</span>]</p>
-<p class="p8"><span class="Apple-tab-span">	</span>.do({ <span class="s3">arg</span> msg;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>postf(<span class="s4">"\n msg: % \n"</span>, msg);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.reset.perform(msg).do({<span class="s3">arg</span> v; v.post; <span class="s4">" "</span>.post;})<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>});<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>nil;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b><i>Binary messages</i></b></p>
-<p class="p2"><br></p>
-<p class="p4">Streams support the following binary messages<span class="Apple-converted-space">  </span>defined in AbstractFunction:</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a = <span class="s3">Routine</span>({ 20.do({ 33.rand.yield }) });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>b = <span class="s3">Routine</span>({ [-100,00,300,400].do({ <span class="s3">arg</span> v; v.yield}) });</p>
-<p class="p8"><span class="Apple-tab-span">	</span>[</p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span></span>'+'<span class="s1"> , </span>'-'<span class="s1"> , </span>'*'<span class="s1">, </span>'/'<span class="s1">, </span>\div<span class="s1">, </span>'%'<span class="s1">, </span>'**'<span class="s1">, </span>\min<span class="s1">, </span>\max<span class="s1">, </span>'<'<span class="s1">, </span>'<='<span class="s1">, </span>'>'<span class="s1">, </span>'>='<span class="s1">, </span>'&'<span class="s1">, </span>'|'<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span></span>\bitXor<span class="s1">, </span>\lcm<span class="s1">, </span>\gcd<span class="s1">, </span>\round<span class="s1">, </span>\trunc<span class="s1">, </span>\atan2<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span></span>\hypot<span class="s1">, </span>'>>'<span class="s1">, </span>'+>>'<span class="s1">, </span>\ring1<span class="s1">, </span>\ring2<span class="s1">, </span>\ring3<span class="s1">, </span>\ring4<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span></span>\difsqr<span class="s1">, </span>\sumsqr<span class="s1">, </span>\sqrdif<span class="s1">, </span>\absdif<span class="s1">, </span>\amclip<span class="s1">,</span></p>
-<p class="p16"><span class="s1"><span class="Apple-tab-span">	</span></span>\scaleneg<span class="s1">, </span>\clip2<span class="s1">, </span>\excess<span class="s1">, </span>'<!'<span class="s1">, </span>\rrand<span class="s1">, </span>\exprand</p>
-<p class="p8"><span class="Apple-tab-span">	</span>]</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.do({ <span class="s3">arg</span> msg;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>postf(<span class="s4">"\n msg: % \n"</span>, msg);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.reset.perform(msg).do({ <span class="s3">arg</span> v; v.post; <span class="s4">" "</span>.post; })<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">nil</span>;</p>
-<p class="p8">)</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/StreamClutch.html b/Help/Streams-Patterns-Events/StreamClutch.html
deleted file mode 100644
index 56df91f..0000000
--- a/Help/Streams-Patterns-Events/StreamClutch.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.s4 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>StreamClutch</b><span class="s1"> <span class="Apple-converted-space">         </span></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: Stream</b></p>
-<p class="p2"><br></p>
-<p class="p4">buffers a streamed value</p>
-<p class="p2"><br></p>
-<p class="p3"><b>StreamClutch.new(pattern, connected)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>pattern</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a pattern or stream to be buffered</p>
-<p class="p3"><b>connected</b><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if true it wil call the next stream value for each time next is called</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if false it returns the last value</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5">//example:</p>
-<p class="p2"><br></p>
-<p class="p6">SynthDescLib<span class="s2">.read;</span></p>
-<p class="p2"><br></p>
-<p class="p7">a = <span class="s3">Pseq</span>([1, 2, 3], <span class="s3">inf</span>);</p>
-<p class="p6"><span class="s2">b = </span>StreamClutch<span class="s2">(a);</span></p>
-<p class="p2"><br></p>
-<p class="p7">6.do({ b.next.postln });</p>
-<p class="p7">b.connected = <span class="s3">false</span>;</p>
-<p class="p7">6.do({ b.next.postln });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">//statistical clutch</p>
-<p class="p7">a = <span class="s3">Pseq</span>([1, 2, 3], <span class="s3">inf</span>);</p>
-<p class="p7">b = <span class="s3">StreamClutch</span>(a, { 0.5.coin });</p>
-<p class="p2"><br></p>
-<p class="p7">12.do({ b.next.postln });</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">//sound example:</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> clutch, pat, decicion;</p>
-<p class="p7">decicion = <span class="s3">Pseq</span>([<span class="s3">Pn</span>(<span class="s3">true</span>,10), <span class="s3">Prand</span>([<span class="s3">true</span>, <span class="s3">false</span>], 10)], <span class="s3">inf</span>).asStream;</p>
-<p class="p7">pat = <span class="s3">Pbind</span>(<span class="s4">\freq</span>, <span class="s3">Pseq</span>([200, [300, 302], 400, 450], <span class="s3">inf</span>), <span class="s4">\dur</span>, 0.3);</p>
-<p class="p7">clutch = <span class="s3">StreamClutch</span>(pat, decicion);</p>
-<p class="p7">clutch.asEventStreamPlayer.play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p5">// independant stepping</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> clutch, pat, decicion;</p>
-<p class="p7">pat = <span class="s3">Pbind</span>(<span class="s4">\freq</span>, <span class="s3">Pseq</span>([200, [300, 302], 400, 450], <span class="s3">inf</span>), <span class="s4">\dur</span>, 0.3);</p>
-<p class="p6"><span class="s2">b = </span>StreamClutch<span class="s2">(pat);</span></p>
-<p class="p7">b.connected = <span class="s3">false</span>;</p>
-<p class="p7">b.asEventStreamPlayer.play;</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p7">b.step;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Streams-Patterns-Events1.html b/Help/Streams-Patterns-Events/Streams-Patterns-Events1.html
deleted file mode 100644
index 7c5100a..0000000
--- a/Help/Streams-Patterns-Events/Streams-Patterns-Events1.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; min-height: 19.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-span.s1 {color: #001bb9}
-span.s2 {color: #000000}
-span.s3 {color: #2c7014}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Understanding Streams, Patterns and Events - Part 1</b></p>
-<p class="p3"><br></p>
-<p class="p4">The SuperCollider Pattern library<span class="Apple-converted-space">  </span>provides a means of specifying dynamic structural transformations of musical processes. It<span class="Apple-converted-space">  </span>provides similar capabilities as one finds in Nyquist, Elody, Siren, Kyma, HMSL, DMix, and Patchwork.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4">By using coroutines and streams rather than eager functional methods it is able to work in a lazy event by event method instead of the all-at-once method of Elody and Siren. It<span class="Apple-converted-space">  </span>provides the kind of dynamic live control found in HMSL but with the more general event models of the others. In Nyquist and Siren certain transformation like Stretch and Transpose are specially coded into the framework. In SuperCollider Patterns, any parameter may have transformations applied to it. The only one treated specially is time, so that parallel streams can be merged.</p>
-<p class="p3"><br></p>
-<p class="p4">In order to understand the framework, a number of concepts must be covered. These concepts are embodied in the classes for Streams, Patterns, and Events. You should learn these concepts in the order presented. The framework is built up in layers. If you skip ahead to get to the cool stuff first, you will have missed some important points.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Streams</b></p>
-<p class="p3"><br></p>
-<p class="p4">A stream represents a lazy sequence of values. The next value in the sequence is obtained by sending the message next to the stream object. The sequence can be restarted from the beginning by sending the message reset to the stream object. A stream can be of finite or infinite length. When a finite length stream has reached the end, it returns nil.</p>
-<p class="p3"><br></p>
-<p class="p4">A stream can be any object that responds to the next and reset messages. Any object that responds to these messages can act as a stream. It happens that the class Object defines next and reset for all objects. In Object, both next and reset are defined to return <span class="s1">'this</span>'. Thus any object is by default a stream that represents an infinite sequence of itself.</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s2">7.next.postln;<span class="Apple-tab-span">	</span></span>// 7 responds to next by returning itself</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Stream and its subclasses</b></p>
-<p class="p3"><br></p>
-<p class="p4">In addition to the default streams implemented by Object, there is a class Stream that provides more functionality such as math operations on streams and filtering of streams.</p>
-<p class="p3"><br></p>
-<p class="p4">A generally useful subclass of Stream is the class FuncStream which allows the user to provide functions to execute in response to next and reset. Here is a FuncStream that represents an infinite random sequence:</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a;</p>
-<p class="p7">a = <span class="s1">FuncStream</span>.new({ #[1, 2, 3, 4].choose });</p>
-<p class="p5"><span class="s2">5.do({ a.next.postln; });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// print 5 values from the stream</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p4">Another useful subclass of Stream is Routine which is a special kind of function that can act like a Stream. Routines are functions that can return a value from the middle and then be resumed<span class="Apple-converted-space">  </span>from that point when called again. The yield message returns a value from the Routine. The next time the Routine is called it begins by returning from the yield and continues from that point. See the Routine help file.</p>
-<p class="p3"><br></p>
-<p class="p4">Here is a Routine that represents a finite sequence of values:</p>
-<p class="p3"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a;</p>
-<p class="p7">a = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.do({ <span class="s1">arg</span> i; i.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="s2">4.do({ a.next.postln; });<span class="Apple-tab-span">	</span></span>// print 4 values from stream</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p4">and another:</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a;</p>
-<p class="p7">a = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.do({ <span class="s1">arg</span> i;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(i+1).do({ <span class="s1">arg</span> j; j.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="s2">8.do({ a.next.postln; });<span class="Apple-tab-span">	</span></span>// print 8 values from stream</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Math operations on Streams</b></p>
-<p class="p3"><br></p>
-<p class="p4">Stream is a subclass of AbstractFunction which means that one can do math operations on streams to produce other streams.</p>
-<p class="p3"><br></p>
-<p class="p4">Applying a unary operator to a stream:</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a, b;</p>
-<p class="p5">// a is a stream that counts from 0 to 9</p>
-<p class="p7">a = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ <span class="s1">arg</span> i; i.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="s2">b = a.squared;<span class="Apple-tab-span">	</span></span>// stream b is a square of the stream a</p>
-<p class="p7">12.do({ b.next.postln; });</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p4">Using a binary operator on a stream:</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a, b;</p>
-<p class="p5">// a is a stream that counts from 0 to 9</p>
-<p class="p7">a = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ <span class="s1">arg</span> i; i.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="s2">b = a + 100;<span class="Apple-tab-span">	</span></span>// add a constant value to stream a</p>
-<p class="p7">12.do({ b.next.postln; });</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p4">Using a binary operator on two streams:</p>
-<p class="p3"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a, b, c;</p>
-<p class="p5">// a is a stream that counts from 0 to 9</p>
-<p class="p7">a = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ <span class="s1">arg</span> i; i.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">// b is a stream that counts from 100 to 280 by 20</p>
-<p class="p7">b = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>forBy (100,280,20, { <span class="s1">arg</span> i; i.yield })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="s2">c = a + b;<span class="Apple-tab-span">	</span></span>// add streams a and b</p>
-<p class="p7">12.do({ c.next.postln; });</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Filtering operations on streams</b></p>
-<p class="p3"><br></p>
-<p class="p4">Streams respond to the messages collect, select, and reject by returning a new Stream.</p>
-<p class="p3"><br></p>
-<p class="p4">The collect message returns a stream that is modified by a function in the same way as the collect message sent to a Collection returns a modified Collection.</p>
-<p class="p3"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a, b;</p>
-<p class="p5">// a is a stream that counts from 0 to 9</p>
-<p class="p7">a = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ <span class="s1">arg</span> i; i.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">// b is a stream that adds 100 to even values</p>
-<p class="p7">b = a.collect({ <span class="s1">arg</span> item; if (item.even, { item + 100 },{ item }); });</p>
-<p class="p7">6.do({ b.next.postln; });</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p4">The select message creates a stream that passes only items that return true from a user supplied function.</p>
-<p class="p3"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a, b;</p>
-<p class="p5">// a is a stream that counts from 0 to 9</p>
-<p class="p7">a = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ <span class="s1">arg</span> i; i.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">// b is a stream that only returns the odd values from stream a</p>
-<p class="p7">b = a.select({ <span class="s1">arg</span> item; item.odd; });</p>
-<p class="p7">6.do({ b.next.postln; });</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p4">The reject message creates a stream that passes only items that return false from a user supplied function.</p>
-<p class="p3"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">var</span> a, b;</p>
-<p class="p5">// a is a stream that counts from 0 to 9</p>
-<p class="p7">a = <span class="s1">Routine</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>10.do({ <span class="s1">arg</span> i; i.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">// b is a stream that only returns the non-odd values from stream a</p>
-<p class="p7">b = a.reject({ <span class="s1">arg</span> item; item.odd; });</p>
-<p class="p7">6.do({ b.next.postln; });</p>
-<p class="p7">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Making Music with Streams</b></p>
-<p class="p3"><br></p>
-<p class="p4">Here is a sound example to show how you might use Streams to generate musical material.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="Apple-tab-span">	</span>s = <span class="s1">Server</span>.local;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SynthDef</span>(<span class="s3">\help_SPE1</span>, { <span class="s1">arg</span> i_out=0, freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> out;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out = <span class="s1">RLPF</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFSaw</span>.ar( freq, mul: <span class="s1">EnvGen</span>.kr( <span class="s1">Env</span>.perc, levelScale: 0.3, doneAction: 2 )),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise1</span>.kr(1, 36, 110).midicps,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// out = [out, DelayN.ar(out, 0.04, 0.04) ];</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4.do({ out = <span class="s1">AllpassN</span>.ar(out, 0.05, [0.05.rand, 0.05.rand], 4) });</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar( i_out, out );</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7">)</p>
-<p class="p7">(</p>
-<p class="p8">// streams as a sequence of pitches</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s4">var</span> stream, dur;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>dur = 1/8;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>stream = <span class="s4">Routine</span>.new({</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (0.5.coin, {</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// run of fifths:<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>24.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>31.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>36.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>43.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>48.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>55.yield;<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(2,5).do({</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// varying arpeggio</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>60.yield;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[63,65].choose.yield;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>67.yield;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[70,72,74].choose.yield;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// random high melody</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(3,9).do({<span class="Apple-converted-space">  </span>#[74,75,77,79,81].choose.yield });</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p9"><span class="Apple-tab-span">	</span>});</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>Routine<span class="s2">({</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_SPE1</span>, [ <span class="s5">\freq</span>, stream.next.midicps ] );</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur.wait; </span>// synonym for yield, used by .play to schedule next occurence</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}).play</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Optional:</b></p>
-<p class="p4">More about Streams can be learned from the book A Little Smalltalk by Timothy Budd. He calls them Generators and shows how they can be used to solve problems like the "eight queens" problem etc.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">To go to the next file:</p>
-<p class="p11"><span class="s6"><a href="Streams-Patterns-Events2.html">Streams-Patterns-Events2</a></span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Streams-Patterns-Events2.html b/Help/Streams-Patterns-Events/Streams-Patterns-Events2.html
deleted file mode 100644
index 6f9843f..0000000
--- a/Help/Streams-Patterns-Events/Streams-Patterns-Events2.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; min-height: 19.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-span.s1 {color: #001bb9}
-span.s2 {color: #000000}
-span.s3 {color: #2c7014}
-span.s4 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Understanding Streams, Patterns and Events - Part 2</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Patterns</b></p>
-<p class="p3"><br></p>
-<p class="p4">Often one wants to be able to create multiple streams from a single stream specification. Patterns are just a way to make multiple Streams<span class="Apple-converted-space">  </span>from a single specification, like a cookie cutter. A pattern can be any object that responds to the asStream message by creating a Stream. Once again there is a default implementation in class Object of asStream that simply returns the receiver as its own stream. Thus any object is by default a pattern that returns itself as a stream when sent the asStream message.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">a = 7.asStream;</p>
-<p class="p6">a.postln;</p>
-<p class="p6">a.next.postln;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Pattern and its subclasses</b></p>
-<p class="p3"><br></p>
-<p class="p4">There is a class named Pattern that provides more functionality for the concept of a pattern.</p>
-<p class="p3"><br></p>
-<p class="p4">Pfunc is a Pattern that returns a FuncStream. The same function arguments are supplied as are supplied to FuncStream.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pfunc</span>.new({ #[1, 2, 3, 4].choose });</p>
-<p class="p7"><span class="s2">b = a.asStream;<span class="Apple-tab-span">	</span></span>// make a stream from the pattern</p>
-<p class="p7"><span class="s2">5.do({ b.next.postln; });<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// print 5 values from the stream</p>
-<p class="p8"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Prout is a Pattern that returns a Routine. The same function argument is supplied as is supplied to Routine.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b, c;</p>
-<p class="p6">a = <span class="s1">Prout</span>.new({<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.do({ <span class="s1">arg</span> i; 3.rand.yield; })<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p7">// make two streams from the pattern</p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">c = a.asStream;</p>
-<p class="p7"><span class="s2">4.do({ b.next.postln; });<span class="Apple-tab-span">	</span></span>// print 4 values from first stream</p>
-<p class="p7"><span class="s2">4.do({ c.next.postln; });<span class="Apple-tab-span">	</span></span>// print 4 values from second stream</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Pseries is a Pattern that generates an arithmetic series.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p7"><span class="s2">a = </span><span class="s1">Pseries</span><span class="s2">.new(10, 3, 8); </span>// stream starts at 10, steps by 3 and has length 8</p>
-<p class="p6">b = a.asStream;</p>
-<p class="p7"><span class="s2">9.do({ b.next.postln; });<span class="Apple-tab-span">	</span></span>// print 9 values from stream</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Pgeom is a Pattern that generates a geometric series.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p7">// stream starts at 10, steps by factor of 3 and has length 8</p>
-<p class="p6">a = <span class="s1">Pgeom</span>.new(10, 3, 8);<span class="Apple-converted-space"> </span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p7"><span class="s2">9.do({ b.next.postln; });<span class="Apple-tab-span">	</span></span>// print 9 values from stream</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Math operations on Patterns</b></p>
-<p class="p3"><br></p>
-<p class="p4">Patterns also respond to math operators by returning patterns that respond to asStream with appropriately modified streams.</p>
-<p class="p3"><br></p>
-<p class="p4">Applying a unary operator to a pattern</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b, c;</p>
-<p class="p7">// a is a pattern whose stream counts from 0 to 9</p>
-<p class="p6">a = <span class="s1">Pseries</span>.new(0,1,10);</p>
-<p class="p7"><span class="s2">b = a.squared;<span class="Apple-tab-span">	</span></span>// pattern b is a square of the pattern a</p>
-<p class="p6">c = b.asStream;</p>
-<p class="p6">12.do({ c.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Using a binary operator on a pattern</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b, c;</p>
-<p class="p7">// a is a pattern whose stream counts from 0 to 9</p>
-<p class="p6">a = <span class="s1">Pseries</span>.new(0,1,10);</p>
-<p class="p7"><span class="s2">b = a + 100;<span class="Apple-tab-span">	</span></span>// add a constant value to pattern a</p>
-<p class="p6">c = b.asStream;</p>
-<p class="p6">12.do({ c.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Filtering operations on patterns</b></p>
-<p class="p3"><br></p>
-<p class="p4">Patterns also respond to the messages collect, select, and reject by returning a new Pattern.</p>
-<p class="p3"><br></p>
-<p class="p4">The collect message returns a Pattern whose Stream is modified by a function in the same way as the collect message sent to a Collection returns a modified Collection.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b, c;</p>
-<p class="p7">// a is a pattern whose stream counts from 0 to 9</p>
-<p class="p6">a = <span class="s1">Pseries</span>.new(0,1,10);</p>
-<p class="p7">// b is a pattern whose stream adds 100 to even values</p>
-<p class="p6">b = a.collect({ <span class="s1">arg</span> item; if (item.even, { item + 100 },{ item }); });</p>
-<p class="p6">c = b.asStream;</p>
-<p class="p6">6.do({ c.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">The select message creates a pattern whose stream passes only items that return true from a user supplied function.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b, c;</p>
-<p class="p7">// a is a pattern whose stream counts from 0 to 9</p>
-<p class="p6">a = <span class="s1">Pseries</span>.new(0,1,10);</p>
-<p class="p7">// b is a pattern whose stream only returns the odd values</p>
-<p class="p6">b = a.select({ <span class="s1">arg</span> item; item.odd; });</p>
-<p class="p6">c = b.asStream;</p>
-<p class="p6">6.do({ c.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">The reject message creates a pattern whose stream passes only items that return false from a<span class="Apple-converted-space"> </span></p>
-<p class="p4">user supplied function.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b, c;</p>
-<p class="p7">// a is a pattern whose stream counts from 0 to 9</p>
-<p class="p6">a = <span class="s1">Pseries</span>.new(0,1,10);</p>
-<p class="p7">// b is a pattern whose stream that only returns the non-odd values</p>
-<p class="p6">b = a.reject({ <span class="s1">arg</span> item; item.odd; });</p>
-<p class="p6">c = b.asStream;</p>
-<p class="p6">6.do({ c.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Making Music with Patterns</b></p>
-<p class="p3"><br></p>
-<p class="p4">Here is a variation of the example given in part 1 that uses a Pattern to create two instances of the random melody stream.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s = <span class="s1">Server</span>.local;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">SynthDef</span>(<span class="s3">\help_SPE2</span>, { <span class="s1">arg</span> i_out=0, sustain=1, freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> out;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out = <span class="s1">RLPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFSaw</span>.ar( freq ),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise1</span>.kr(1, 36, 110).midicps,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s1">EnvGen</span>.kr( <span class="s1">Env</span>.perc, levelScale: 0.3,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timeScale: sustain, doneAction: 2 );</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//out = [out, DelayN.ar(out, 0.04, 0.04) ];</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4.do({ out = <span class="s1">AllpassN</span>.ar(out, 0.05, [0.05.rand, 0.05.rand], 4) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar( i_out, out );</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6">)</p>
-<p class="p6">(</p>
-<p class="p7">// streams as a sequence of pitches</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> pattern, streams, dur, durDiff;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>dur = 1/7;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>durDiff = 3;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>pattern = <span class="s1">Prout</span>.new({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if (0.5.coin, {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[ 24,31,36,43,48,55 ].do({ <span class="s1">arg</span> fifth; fifth.yield });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(2,5).do({</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// varying arpeggio</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>60.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[63,65].choose.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>67.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#[70,72,74].choose.yield;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// random high melody</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(3,9).do({<span class="Apple-converted-space">  </span>#[74,75,77,79,81].choose.yield });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span>streams = [ <span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(pattern - <span class="s1">Pfunc</span>.new({ #[12, 7, 7, 0].choose })).midicps.asStream,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pattern.midicps.asStream</p>
-<p class="p6"><span class="Apple-tab-span">	</span>];</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>Routine<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Synth</span>( <span class="s3">\help_SPE2</span>, [ <span class="s3">\freq</span>, streams.at(0).next, <span class="s3">\sustain</span>, dur * durDiff<span class="Apple-converted-space">  </span>] );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>durDiff.do({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Synth</span>( <span class="s3">\help_SPE2</span>, [ <span class="s3">\freq</span>, streams.at(1).next, <span class="s3">\sustain</span>, dur<span class="Apple-converted-space">  </span>] );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">To go to the next file:</p>
-<p class="p10"><span class="s4"><a href="Streams-Patterns-Events3.html">Streams-Patterns-Events3</a></span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Streams-Patterns-Events3.html b/Help/Streams-Patterns-Events/Streams-Patterns-Events3.html
deleted file mode 100644
index d354dc1..0000000
--- a/Help/Streams-Patterns-Events/Streams-Patterns-Events3.html
+++ /dev/null
@@ -1,399 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; min-height: 19.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b4}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {color: #0026b4}
-span.s2 {color: #000000}
-span.s3 {color: #9d1c12}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Understanding Streams, Patterns and Events - Part 3</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>ListPatterns</b></p>
-<p class="p3"><br></p>
-<p class="p4">ListPatterns are Patterns that iterate over arrays of objects in some fashion. All ListPatterns have in common the instance variables list and repeats. The list variable is some Array to be iterated over. The repeats variable is</p>
-<p class="p4">some measure of the number of times to do something, whose meaning varies from subclass to subclass. The default value for repeats is 1.</p>
-<p class="p3"><br></p>
-<p class="p4">Pseq is a Pattern that cycles over a list of values. The repeats variable gives the number of times to repeat the entire list.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">//////////////////////////////////////////////////////////////</p>
-<p class="p5">// Note: This SynthDef used throughout this document</p>
-<p class="p6">(</p>
-<p class="p6">s = <span class="s1">Server</span>.local;</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">( </span>\help_SPE3_SimpleSine<span class="s2">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">arg</span> freq, sustain=1.0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> osc;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>osc = <span class="s1">SinOsc</span>.ar( [freq,freq+0.05.rand] ) * <span class="s1">EnvGen</span>.ar(<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Env</span>.perc, doneAction: 2, levelScale: 0.3, timeScale: sustain</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,osc);</p>
-<p class="p6">}).add;</p>
-<p class="p6">)</p>
-<p class="p5">//////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pseq</span>.new(#[1, 2, 3], 2);<span class="Apple-tab-span">	</span><span class="s3">// repeat twice</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">7.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Pseq also has an offset argument which gives a starting offset into the list.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pseq</span>.new(#[1, 2, 3, 4], 3, 2); <span class="s3">// repeat 3, offset 2</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">13.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">You can pass a function for the repeats variable that gets evaluated when the stream is created.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pseq</span>.new(#[1, 2], { rrand(1, 3) });<span class="Apple-tab-span">	</span><span class="s3">// repeat 1,2, or 3 times</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">7.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">If you specify the value inf for the repeats variable, then it will repeat indefinitely.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pseq</span>.new(#[1, 2, 3], <span class="s1">inf</span>);<span class="Apple-tab-span">	</span><span class="s3">// infinite repeat</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">10.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Pseq used as a sequence of pitches</b></p>
-<p class="p3"><br></p>
-<p class="p4">Remember that math operations like midicps can be used on streams.</p>
-<p class="p3"><br></p>
-<p class="p4">The alternative Pseq(...).midicps.asStream is also possible because both pattern and stream inherit from AbstractFunction for which midicps is a method. ( midicps converts a midi value to cycles per second or Hz )</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a, d;</p>
-<p class="p6">a = <span class="s4">Pseq</span>(#[60, 61, 63, 65, 67, 63], <span class="s4">inf</span> ).asStream.midicps;</p>
-<p class="p6">d = 0.3;</p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>12.do({</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s2">(</span>\help_SPE3_SimpleSine<span class="s2">, [ </span>\freq<span class="s2">, a.next, </span>\sustain<span class="s2">, d ]);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Pser is like Pseq, however the repeats variable gives the number of items returned instead of the number of complete cycles.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pser</span>.new(#[1, 2, 3], 5);<span class="Apple-tab-span">	</span><span class="s3">// return 5 items</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">6.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Prand returns one item from the list at random for each repeat.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Prand</span>.new(#[1, 2, 3, 4, 5], 6);<span class="Apple-tab-span">	</span><span class="s3">// return 6 items</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">7.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Prand used as a sequence of pitches:</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a, d;</p>
-<p class="p6">a = <span class="s4">Prand</span>(#[60, 61, 63, 65], <span class="s4">inf</span>).midicps.asStream;</p>
-<p class="p6">d = 0.3;</p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>12.do({</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s2">(</span>\help_SPE3_SimpleSine<span class="s2">,[</span>\freq<span class="s2">, a.next]);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Pxrand, like Prand, returns one item from the list at random for each repeat, but Pxrand never repeats the same element twice in a row.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pxrand</span>.new(#[1, 2, 3], 10);<span class="Apple-tab-span">	</span><span class="s3">// return 10 items</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">11.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Pxrand used as a sequence of pitches:</p>
-<p class="p11"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Pxrand</span>(#[60, 61, 63, 65], <span class="s4">inf</span>).midicps.asStream;</p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>12.do({</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s2">(</span>\help_SPE3_SimpleSine<span class="s2">, [</span>\freq<span class="s2">, a.next]);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.8.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Pshuf iterates over the list in scrambled order. The entire scrambled list is repeated in the same order the number of times given by the repeats variable.</p>
-<p class="p11"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pshuf</span>.new(#[1, 2, 3, 4], 3);</p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">13.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Pshuf used as a sequence of pitches:</p>
-<p class="p11"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a, b;</p>
-<p class="p6">a = <span class="s4">Pshuf</span>(#[60, 61, 65, 67], <span class="s4">inf</span>).midicps.asStream;</p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>12.do({</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s2">(</span>\help_SPE3_SimpleSine<span class="s2">,[</span>\freq<span class="s2">, a.next]);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Nesting Patterns</b></p>
-<p class="p3"><br></p>
-<p class="p4">If a Pattern encounters another Pattern in its list, it embeds that pattern in its output. That is, it creates a stream on that pattern and iterates that pattern until it ends before moving on.</p>
-<p class="p3"><br></p>
-<p class="p4">For example here is one pattern nested in another.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Pseq</span>.new([1, <span class="s1">Pseq</span>.new([100,200], 2), 3], 3);<span class="Apple-tab-span">	</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">19.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p11"><br></p>
-<p class="p4">Pseqs nested in a Prand:</p>
-<p class="p11"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">var</span> a, b;</p>
-<p class="p6">a = <span class="s1">Prand</span>.new([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>.new([1, 2], 2),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>.new([3, 4], 2),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>.new([5, 6], 2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>], 3);<span class="Apple-tab-span">	</span></p>
-<p class="p6">b = a.asStream;</p>
-<p class="p6">13.do({ b.next.postln; });</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Nested sequences of pitches:</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Prand</span>([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>(#[60, 61, 63, 65, 67, 63]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Prand</span>(#[72, 73, 75, 77, 79], 6),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pshuf</span>(#[48, 53, 55, 58], 2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>], <span class="s4">inf</span><span class="Apple-converted-space"> </span></p>
-<p class="p6">).midicps.asStream;</p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s2">( </span>\help_SPE3_SimpleSine<span class="s2">, [</span>\freq<span class="s2">, a.next] );</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Math operations on ListPatterns</b></p>
-<p class="p3"><br></p>
-<p class="p4">Pattern b plays pattern a once normally, once transposed up a fifth and once transposed up a fourth.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a, b;</p>
-<p class="p6">a = <span class="s4">Pseq</span>(#[60, 62, 63, 65, 67, 63]);</p>
-<p class="p6">b = <span class="s4">Pseq</span>([ a, a + 7, a + 5], <span class="s4">inf</span>).asStream;</p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>24.do({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>(<span class="s5">\help_SPE3_SimpleSine</span>, [ <span class="s5">\freq</span>, b.next.midicps ]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">Adding two patterns together. The second pattern transposes each fifth note of the first pattern down an octave.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> a;</p>
-<p class="p6">a = <span class="s4">Pseq</span>(#[60, 62, 63, 65, 67, 63], <span class="s4">inf</span>) + <span class="s4">Pseq</span>(#[0, 0, 0, 0, -12], <span class="s4">inf</span>);</p>
-<p class="p6">a = a.asStream.midicps;</p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>25.do({</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s2">(</span>\help_SPE3_SimpleSine<span class="s2">,[</span>\freq<span class="s2">, a.next]);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Making Music with ListPatterns</b></p>
-<p class="p3"><br></p>
-<p class="p4">Here is the same example given in part 2 rewritten to use ListPatterns. It uses nested patterns and results in much more concise code. SuperCollider allows you to write SomeClass.new(params) as SomeClass(params)</p>
-<p class="p4">eliminating the ".new" .<span class="Apple-converted-space">  </span>This can make code like the pattern examples below, which create a lot of objects, more readable.</p>
-<p class="p11"><br></p>
-<p class="p6">(</p>
-<p class="p10"><span class="s4">SynthDef</span><span class="s2">( </span>\help_SPE3_Allpass6<span class="s2">, { </span><span class="s4">arg</span><span class="s2"> freq;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> out, env;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>out = <span class="s4">RLPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">LFSaw</span>.ar( freq, mul: <span class="s4">EnvGen</span>.kr( <span class="s4">Env</span>.perc, levelScale: 0.3, doneAction: 2 ) ),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">LFNoise1</span>.kr(1, 36, 110).midicps,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>6.do({ out = <span class="s4">AllpassN</span>.ar(out, 0.05, [0.05.rand, 0.05.rand], 4) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar( 0, out<span class="Apple-converted-space">  </span>);</p>
-<p class="p6">}).add</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s4">var</span> freqStream;</p>
-<p class="p8"><br></p>
-<p class="p6">freqStream = <span class="s4">Pseq</span>([</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>Prand<span class="s2">([</span></p>
-<p class="p12"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">nil</span><span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// a nil item reached in a pattern causes it to end</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>(#[24, 31, 36, 43, 48, 55]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Pseq</span>([ 60, <span class="s4">Prand</span>(#[63, 65]), 67, <span class="s4">Prand</span>(#[70, 72, 74]) ], { rrand(2, 5) }),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Prand</span>(#[74, 75, 77, 79, 81], { rrand(3, 9) })</p>
-<p class="p6">], <span class="s4">inf</span>).asStream.midicps;</p>
-<p class="p8"><br></p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>( <span class="s5">\help_SPE3_Allpass6</span>, [<span class="s5">\freq</span>, freqStream.next ]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.13.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play;<span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">Here is an example that uses a Pattern to create a rhythmic solo. The values in the pattern specify the amplitudes of impulses fed to the Decay2 generator.</p>
-<p class="p11"><br></p>
-<p class="p6">(</p>
-<p class="p10"><span class="s4">SynthDef</span><span class="s2">( </span>\help_SPE3_Mridangam<span class="s2">, { </span><span class="s4">arg</span><span class="s2"> t_amp;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> out;</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>out = <span class="s4">Resonz</span>.ar(<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">WhiteNoise</span>.ar(70) * <span class="s4">Decay2</span>.kr( t_amp, 0.002, 0.1 ),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>60.midicps,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).distort * 0.4;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar( 0, out<span class="Apple-converted-space">  </span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">DetectSilence</span>.ar( out,<span class="Apple-converted-space">  </span>doneAction: 2 );</p>
-<p class="p6">}).add;</p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s4">SynthDef</span><span class="s2">( </span>\help_SPE3_Drone<span class="s2">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> out;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>out = <span class="s4">LPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Saw</span>.ar([60, 60.04].midicps)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Saw</span>.ar([67, 67.04].midicps),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>108.midicps,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.007</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar( 0, out<span class="Apple-converted-space">  </span>);</p>
-<p class="p6">}).add;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p5">// percussion solo in 10/8</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s1">var</span> stream, pat, amp;</p>
-<p class="p8"><br></p>
-<p class="p6">pat = <span class="s1">Pseq</span>([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.0], 10),</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// intro</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.2, 0.0, 0.0], 2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.0], 2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.2, 0.0, 0.2], 2),</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// solo</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>Prand<span class="s2">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.7, 0.0, 0.2, 0.0, 0.7, 0.0, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.2, 0.0, 0.7, 0.0, 0.2, 0.0, 0.7, 0.0, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.7, 0.0, 0.2, 0.0, 0.7, 0.0, 0.2]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.7, 0.2, 0.2, 0.0, 0.7, 0.0, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.7, 0.0, 0.2, 0.2, 0.7, 0.2, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.2, 0.2, 0.7, 0.2, 0.2, 0.2, 0.7, 0.2, 0.2]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.2, 0.2, 0.7, 0.2, 0.2, 0.2, 0.7, 0.0, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.7, 0.2, 0.2, 0.2, 0.7, 0.0, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.4, 0.0, 0.4, 0.0, 0.4, 0.0, 0.4, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.4, 0.0, 0.0, 0.4, 0.2, 0.4, 0.2]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.2, 0.7, 0.0, 0.2, 0.0, 0.7, 0.0, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.7, 0.0, 0.0, 0.0, 0.7, 0.0, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.7, 0.7, 0.0, 0.0, 0.2, 0.2, 0.2, 0.0, 0.0]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])</p>
-<p class="p6"><span class="Apple-tab-span">	</span>], 30),</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// tehai : 7 beat motif 3 times sharing 1st beat with next 7x3<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// and again the third time:</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// <span class="Apple-converted-space">  </span>123456712345671234567 <span class="Apple-converted-space">                  </span>123456712345671234567</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// <span class="Apple-converted-space">                      </span>123456712345671234567</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// <span class="Apple-converted-space">  </span>! <span class="Apple-converted-space">                  </span>! <span class="Apple-converted-space">                  </span>! <span class="Apple-converted-space">                  </span>!</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// <span class="Apple-converted-space">  </span>1234567890123456789012345678901234567890123456789012345678901</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[2.0, 0.0, 0.2, 0.5, 0.0, 0.2, 0.9,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.5, 0.0, 0.2, 0.5, 0.0, 0.2, 0.9,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.5, 0.0, 0.2, 0.5, 0.0, 0.2], 3),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[5], 1), <span class="s3">// sam</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>(#[0.0], <span class="s1">inf</span>)</p>
-<p class="p6">]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6">stream = pat.asStream;</p>
-<p class="p8"><br></p>
-<p class="p9">Task<span class="s2">({</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s2">(</span>\help_SPE3_Drone<span class="s2">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if( ( amp = stream.next ) > 0,</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ </span><span class="s4">Synth</span><span class="s2">(</span>\help_SPE3_Mridangam<span class="s2">, [ </span>\t_amp<span class="s2">, amp ]) }</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(1/8).wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">}).play</p>
-<p class="p8"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p4">To go to the next file:</p>
-<p class="p14"><span class="s6"><a href="Streams-Patterns-Events4.html">Streams-Patterns-Events4</a></span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Streams-Patterns-Events4.html b/Help/Streams-Patterns-Events/Streams-Patterns-Events4.html
deleted file mode 100644
index 501ee29..0000000
--- a/Help/Streams-Patterns-Events/Streams-Patterns-Events4.html
+++ /dev/null
@@ -1,290 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {color: #007300}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #bf0000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Understanding Streams, Patterns and Events - Part 4</b></p>
-<p class="p1"><br></p>
-<p class="p3">The preceeding sections showed how to use Streams and Patterns to generate complex sequences of values for a single parameter at a time.</p>
-<p class="p4"><br></p>
-<p class="p3">This section covers Environments and Events, which are used to build a symbolic event framework for patterns, allowing you to control all aspects of a composition using patterns.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Environment</b></p>
-<p class="p4"><br></p>
-<p class="p3">An Environment is an IdentityDictionary mapping Symbols to values. There is always one current Environment which is stored in the currentEnvironment class variable of class Object.</p>
-<p class="p4"><br></p>
-<p class="p3">Symbol and value pairs may be put into the current Environment as follows:</p>
-<p class="p4"><br></p>
-<p class="p6">currentEnvironment.put(<span class="s1">\myvariable</span>, 999);</p>
-<p class="p4"><br></p>
-<p class="p3">and retrieved from the current Environment as follows:</p>
-<p class="p4"><br></p>
-<p class="p6">currentEnvironment.at(<span class="s1">\myvariable</span>).postln;</p>
-<p class="p7"><br></p>
-<p class="p3">The compiler provides a shorthand for the two constructs above .</p>
-<p class="p4"><br></p>
-<p class="p6">~myvariable = 888;</p>
-<p class="p4"><br></p>
-<p class="p3">is equivalent to:</p>
-<p class="p4"><br></p>
-<p class="p6">currentEnvironment.put(<span class="s1">\myvariable</span>, 888);</p>
-<p class="p4"><br></p>
-<p class="p3">and:</p>
-<p class="p4"><br></p>
-<p class="p6">~myvariable.postln;</p>
-<p class="p7"><br></p>
-<p class="p3">is equivalent to:</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p6">currentEnvironment.at(<span class="s1">\myvariable</span>).postln;</p>
-<p class="p7"><br></p>
-<p class="p8"><b>Making an Environment</b></p>
-<p class="p4"><br></p>
-<p class="p3">Environment has a class method <b>make</b> which can be used to create an Environment and fill it with values. What <b>make</b> does is temporarily replace the current Environment with a new one, call your function where you fill the Environment with values, then it replaces the previous current Environment and returns you the new one.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a;</p>
-<p class="p6">a = <span class="s2">Environment</span>.make({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~a = 100;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~b = 200;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~c = 300;</p>
-<p class="p6">});</p>
-<p class="p6">a.postln;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8"><b>Using an Environment</b></p>
-<p class="p4"><br></p>
-<p class="p3">The instance method <b>use</b> lets you temporarily replace the current Environment with one you have made. The <b>use</b> method returns the result of your function instead of the Environment like <b>make</b> does.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a;</p>
-<p class="p6">a = <span class="s2">Environment</span>.make({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~a = 10;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~b = 200;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~c = 3000;</p>
-<p class="p6">});</p>
-<p class="p6">a.use({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~a + ~b + ~c</p>
-<p class="p6">}).postln;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p3">There is also a <b>use</b> class method for when you want to make and use the result from an Environment directly.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a;</p>
-<p class="p9"><span class="s3">a = </span>Environment<span class="s3">.use({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~a = 10;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~b = 200;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~c = 3000;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~a + ~b + ~c</p>
-<p class="p6">}).postln;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8"><b>Calling Functions with arguments from the current Environment</b></p>
-<p class="p4"><br></p>
-<p class="p3">It is possible to call a Function and have it look up any unspecified argument values from the current Environment. This is done with the <b>valueEnvir</b> and <b>valueArrayEnvir</b> methods. These methods will, for any unspecified argument value, look in the current Environment for a symbol with the same name as the argument. If the argument is not found then whatever the function defines as the default value for that argument is used.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> f;</p>
-<p class="p10"><br></p>
-<p class="p11">// define a function</p>
-<p class="p6">f = { <span class="s2">arg</span> x, y, z; [x, y, z].postln; };</p>
-<p class="p10"><br></p>
-<p class="p9">Environment<span class="s3">.use({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~x = 7;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~y = 8;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~z = 9;</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.valueEnvir(1, 2, 3);<span class="Apple-tab-span">	</span><span class="s4">// all values supplied</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span>f.valueEnvir(1, 2);<span class="Apple-tab-span">	</span></span>// z is looked up in the current Environment</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span>f.valueEnvir(1);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// y and z are looked up in the current Environment<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span>f.valueEnvir;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// all arguments are looked up in the current Environment</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span>f.valueEnvir(z: 1);<span class="Apple-tab-span">	</span></span>// x and y are looked up in the current Environment</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p3">Here is a somewhat contrived example of how the Environment might be used to manufacture SynthDefs.</p>
-<p class="p3">Even though the three functions below have the freq, amp and pan args declared in different orders it does not matter, because valueEnvir looks them up in the environment.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> a, b, c, n;</p>
-<p class="p10"><br></p>
-<p class="p6">n = 40;</p>
-<p class="p6">a = { <span class="s2">arg</span> freq, amp, pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(<span class="s2">SinOsc</span>.ar(freq), pan, amp);</p>
-<p class="p6">};</p>
-<p class="p6">b =<span class="Apple-converted-space">  </span>{ <span class="s2">arg</span> amp, pan, freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(<span class="s2">RLPF</span>.ar(<span class="s2">Saw</span>.ar(freq), freq * 6, 0.1), pan, amp);</p>
-<p class="p6">};</p>
-<p class="p6">c =<span class="Apple-converted-space">  </span>{ <span class="s2">arg</span> pan, freq, amp;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(<span class="s2">Resonz</span>.ar(<span class="s2">GrayNoise</span>.ar, freq * 2, 0.1), pan, amp * 2);</p>
-<p class="p6">};</p>
-<p class="p10"><br></p>
-<p class="p9">Task<span class="s3">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>n.do({ <span class="s2">arg</span> i;</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s3">(</span>"Help-SPE4-EnvirDef-"<span class="s3"> ++ i.asString, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> out;</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Environment<span class="s3">.use({</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set values in the environment</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~freq = exprand(80, 600);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~amp = 0.1 + 0.3.rand;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~pan = 1.0.rand2;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// call a randomly chosen instrument function<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// with values from the environment</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out = [a,b,c].choose.valueEnvir;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out = <span class="s2">CombC</span>.ar(out, 0.2, 0.2, 3, 1, out);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out = out * <span class="s2">EnvGen</span>.kr(<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.sine, doneAction: 2, timeScale: 1.0 + 6.0.rand, levelScale: 0.3<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar( 0, out );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>( <span class="s5">"Help-SPE4-EnvirDef-"</span> ++ n.rand.asString );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(0.5 + 2.0.rand).wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p1"><br></p>
-<p class="p2"><b>Event</b></p>
-<p class="p4"><br></p>
-<p class="p3">The class Event is a subclass of Environment. Events are mappings of Symbols representing names of parameters for a musical event to their value. This lets you put any information you want into an event.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">The class getter method <b>default</b> retrieves the default prototype event which has been initialized with values for many useful parameters. It represents only one possible event model. You are free to create your own, however it would be good to understand the one provided first so that you can see what can be done.</p>
-<p class="p4"><br></p>
-<p class="p3">A prototype event is a default event which will be transformed by the streams returned by patterns. Compositions produced by event patterns are created entirely from transformations of copies of a single protoEvent.</p>
-<p class="p4"><br></p>
-<p class="p3"><i>It's all a part of the Big Note, but don't tell the pigs and ponies.</i></p>
-<p class="p4"><br></p>
-<p class="p8"><b>Value Patterns, Event Patterns and Pbind</b></p>
-<p class="p4"><br></p>
-<p class="p3">The patterns discussed in parts 2 and 3 are known as "value patterns" because their streams return a single value for each call to <b>next</b>. Here we introduce "event patterns" which once turned into streams, return an Event for each call to <b>next</b>.</p>
-<p class="p4"><br></p>
-<p class="p3">The class <b>Pbind</b> provides a bridge between value patterns and event patterns. It binds symbols in each event to values obtained from a pattern. Pbind takes arguments in pairs, the first of a pair being a Symbol and the second being a value Pattern. Any object can act as a Pattern, so you can use constants as the pattern ( see \amp in the example below ).</p>
-<p class="p4"><br></p>
-<p class="p3">The Pbind stream returns nil whenever the first one of its streams ends.</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s2">Pbind</span>( <span class="s1">\freq</span>, <span class="s2">Pseq</span>([440,880]) ).play</p>
-<p class="p4"><br></p>
-<p class="p3">An event stream is created for a Pattern by sending it the <b>asStream</b> message. What Pbind does is to produce a stream which puts the values for its symbols into the event, possibly overwriting previous bindings to those symbols:</p>
-<p class="p4"><br></p>
-<p class="p6">t<span class="Apple-converted-space">  </span>=<span class="Apple-converted-space">  </span><span class="s2">Pbind</span>( <span class="s1">\freq</span>, <span class="s2">Pseq</span>([440,880]) ).asStream;</p>
-<p class="p6">t.next(<span class="s2">Event</span>.default);</p>
-<p class="p6">t.next(<span class="s2">Event</span>.default);</p>
-<p class="p6">t.next(<span class="s2">Event</span>.default);</p>
-<p class="p4"><br></p>
-<p class="p3">When calling Pattern-play an EventStreamPlayer is automatically generated which handles scheduling as well as passing the protoEvent into the event stream.</p>
-<p class="p4"><br></p>
-<p class="p8"><b>EventStreamPlayer</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>EventStreamPlayer</b> is a subclass of <b>PauseStream</b>. A PauseStream is just a wrapper for a stream allowing<span class="Apple-converted-space">  </span>to play, stop, start it, etc...<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">EventStreamPlayers are initialized using the event stream returned by Pbind-asStream, as well as with a protoEvent. The EventStreamPlayer passes in a <b>protoEvent</b>, at each call to <b>next</b> on the Pbind stream. The Pbind stream copies the event to pass down and back up the tree of pattern streams so that each stream can modify it.</p>
-<p class="p4"><br></p>
-<p class="p3">An EventStreamPlayer is itself a stream which returns scalars (numbers) which are used by the clock to schedule its next invocation. At every call to EventStreamPlayer-next by the clock, the player gets its delta values by querying the Event after it has been returned by the Pbind stream traversal.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Changes in SC3</b></p>
-<p class="p4"><br></p>
-<p class="p3">In SC2, you called asEventStream on an Pattern and you'd get a stream which actually returned events.</p>
-<p class="p4"><br></p>
-<p class="p3">In SC3, if you want an event stream proper you call asStream on the Event Pattern. This will give you a stream of events which you can then use to initialize an EventStreamPlayer object. You don't however need to worry about that because it is usually done for you in Pattern's play method. Also changed is that you do not pass</p>
-<p class="p3">in your protoEvent through the asStream method. It is passed in for you by the EventStreamPlayer at each call</p>
-<p class="p3">to next on the stream.</p>
-<p class="p4"><br></p>
-<p class="p3">Here you can see what the stream returned from a Pbind looks like.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> pattern, stream;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>// bind Symbol xyz to values obtained from a pattern</p>
-<p class="p6">pattern = <span class="s2">Pbind</span>(<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">\xyz</span>, <span class="s2">Pseq</span>([1, 2, 3])<span class="Apple-converted-space"> </span></p>
-<p class="p6">);</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>// create a stream of events for the Pbind pattern.</p>
-<p class="p6">stream = pattern.asStream;</p>
-<p class="p10"><br></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>// event Streams require a prototype event as input.</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>// this example uses an empty Event as a prototype</p>
-<p class="p6">4.do({<span class="Apple-converted-space">  </span>stream.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p3">Here is an example with more bindings.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> pattern, stream;</p>
-<p class="p10"><br></p>
-<p class="p6">pattern = <span class="s2">Pbind</span>(<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">\abc</span>, <span class="s2">Prand</span>([6, 7, 8, 9], <span class="s2">inf</span> ),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">\xyz</span>, <span class="s2">Pseq</span>([1, 2, 3], 2 ),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s1">\uuu</span><span class="s3">, 999 </span>// a constant represents an infinite sequence of itself</p>
-<p class="p6">);</p>
-<p class="p10"><span class="Apple-tab-span">	</span></p>
-<p class="p6">stream = pattern.asStream;</p>
-<p class="p10"><br></p>
-<p class="p6">7.do({<span class="Apple-converted-space">  </span>stream.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p3">The ListPatterns discussed in part 3 can be put around Event Streams to create sequences of Event Streams.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> pattern, stream;</p>
-<p class="p6">pattern =<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pseq<span class="s3">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>( <span class="s1">\abc</span>, <span class="s2">Pseq</span>([1, 2, 3])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>( <span class="s1">\def</span>, <span class="s2">Pseq</span>([4, 5, 6])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>( <span class="s1">\xyz</span>, <span class="s2">Pseq</span>([7, 8, 9]))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>]);<span class="Apple-tab-span">	</span></p>
-<p class="p6">stream = pattern.asStream;</p>
-<p class="p6">10.do({<span class="Apple-converted-space">  </span>stream.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> pattern, stream;</p>
-<p class="p6">pattern =<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Prand<span class="s3">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>( <span class="s1">\abc</span>, <span class="s2">Pseq</span>([1, 2, 3])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>( <span class="s1">\def</span>, <span class="s2">Pseq</span>([4, 5, 6])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>( <span class="s1">\xyz</span>, <span class="s2">Pseq</span>([7, 8, 9]))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>], 3);<span class="Apple-tab-span">	</span></p>
-<p class="p6">stream = pattern.asStream;</p>
-<p class="p6">10.do({<span class="Apple-converted-space">  </span>stream.next(<span class="s2">Event</span>.new).postln; });</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p3">To go to the next file:</p>
-<p class="p13"><a href="Streams-Patterns-Events5.html">Streams-Patterns-Events5</a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Streams-Patterns-Events5.html b/Help/Streams-Patterns-Events/Streams-Patterns-Events5.html
deleted file mode 100644
index 2b37593..0000000
--- a/Help/Streams-Patterns-Events/Streams-Patterns-Events5.html
+++ /dev/null
@@ -1,311 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #000000}
-span.s4 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Understanding Streams, Patterns and Events - Part 5</b></p>
-<p class="p1"><br></p>
-<p class="p2"><b>More about the default Event</b></p>
-<p class="p1"><br></p>
-<p class="p3"><b>protoEvents</b></p>
-<p class="p4"><br></p>
-<p class="p5">The protoEvent contains default values for many useful parameters.</p>
-<p class="p4"><br></p>
-<p class="p5">The default protoEvent is Event.default. It provides default bindings for duration, envelope, instrument, making a very simple Pattern directly playable:</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7">// an endless sequence of middle Cs</p>
-<p class="p6"><span class="s1">Pbind</span>.new.play</p>
-<p class="p6">)</p>
-<p class="p4"><span class="Apple-converted-space">  </span></p>
-<p class="p5">By adding other bindings, you can override the defaults in the protoEvent.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7">// duration 0.25 beats (16th notes)</p>
-<p class="p6"><span class="s1">Pbind</span>( <span class="s2">\dur</span>, 0.25 ).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// specifying the pitch in terms of midinote</p>
-<p class="p7">// see also The pitch model below</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.125,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\legato</span>, 0.2,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\midinote</span>, <span class="s1">Pseq</span>(#[60, 62, 64, 65, 67, 69, 71, 72], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p3"><b>~finish</b></p>
-<p class="p10"><br></p>
-<p class="p5">Event.default contains a function bound to the Symbol 'finish' which is called for each new event generated in order to complete any computations that depend on the other values in the event.<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p3"><b>The pitch model</b></p>
-<p class="p4"><br></p>
-<p class="p5">Event.default implements a multi level pitch model which allows composition using modal scale degrees, equal division note values, midi note values, or frequencies in Hertz. These different ways of specifying the pitch can all be used interchangably.</p>
-<p class="p4"><br></p>
-<p class="p5">The way this works is due to the default values bound to the Symbols of the pitch model.</p>
-<p class="p4"><br></p>
-<p class="p5">The lowest level Symbol in the pitch model is 'freq'. The default binding for 'freq' is a Function which calculates the frequency by getting the value of 'midinote', adding a transpose value and converting it to Hertz using<span class="Apple-converted-space">  </span>midicps.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~freq = {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(~midinote.value + ~ctranspose).midicps;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p11"><br></p>
-<p class="p5">If you compose with 'freq' directly then this default function is overridden.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\freq</span>, <span class="s1">Pseq</span>(#[300, 400, 500, 700, 900], <span class="s1">inf</span>)</p>
-<p class="p6">).play;</p>
-<p class="p6">)</p>
-<p class="p11"><br></p>
-<p class="p5">Event.default's 'finish' function sends the value message to the current binding of 'freq' in order to get the value for the frequency and adds a detune value to it which transposes the frequency in Hertz.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.25,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\detune</span>, -20,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\freq</span>, <span class="s1">Pseq</span>(#[300, 400, 500, 700, 900], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">The next level is 'midinote' which is by default bound to this function:</p>
-<p class="p11"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~midinote = {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(~note.value + ~gtranspose + (~octave * divs) + ~root)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span> * 12.0 / ~stepsPerOctave;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><br></p>
-<p class="p5">This function gets the value bound to 'note' which is a value expressed in some equal temperament, not necessarily 12. It adds a gamut transpose value 'gtranspose', and scales from the number of notes per octave being used into 12 notes per octave MIDI key values. If you compose with 'midinote' directly then that will override this function.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.2,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\midinote</span>, <span class="s1">Pseq</span>([ <span class="s1">Pshuf</span>(#[60, 61, 62, 63, 64, 65, 66, 67], 3) ], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">Another level higher is 'note' which is defined by default by this function:</p>
-<p class="p11"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~note = {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> divs;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>divs = ~stepsPerOctave;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(~degree + ~mtranspose).degreeToKey(~scale, divs);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><br></p>
-<p class="p5">This function derives the note value from the next higher level variables which specify a pitch from a scale. These variables are defined as follows:</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~stepsPerOctave = 12.0;</p>
-<p class="p5">The number of equal divisions of an octave for this tuning. The equal temperament defined by this variable is known as the gamut. If you wanted to work in cents for example you could set this to 1200.0.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~octave = 5.0;</p>
-<p class="p5">The current octave. Middle C is the lowest note in octave 5.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~root = 0.0;</p>
-<p class="p5">The root of the scale given in equal divisions defined by ~stepsPerOctave.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~scale = #[0, 2, 4, 5, 7, 9, 11]; <span class="s4">// diatonic major scale</span></p>
-<p class="p5">A set of scale pitches given in equal divisions defined by ~stepsPerOctave.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~degree = 0;</p>
-<p class="p5">A scale degree index into the ~scale. 0 is the root and the scale wraps in the manner defined by degreeToKey.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~mtranspose = 0;</p>
-<p class="p5">A modal transposition value that is added to the scale degree.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~gtranspose = 0;</p>
-<p class="p5">A gamut transposition value that is added to the gamut pitch.</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~ctranspose = 0;</p>
-<p class="p5">A chromatic transposition value expressed in semitones.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>Pitch model Examples:</b></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7">// a simple scale degree sequence</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// -7 is 8ve below, -3 is a 4th below,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 0 is root, 2 is 3rd above, 4 is 5th above, 7 is 8ve above.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([ <span class="s1">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s1">Pseq</span>([0,1,2,3,4,5,6,7]) ], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// change the octave</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span>\octave<span class="s3">, 4,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([ <span class="s1">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s1">Pseq</span>([0,1,2,3,4,5,6,7]) ], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// change<span class="Apple-converted-space">  </span>the scale</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\scale</span>, [0, 2, 3, 5, 7, 8, 10],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([ <span class="s1">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s1">Pseq</span>([0,1,2,3,4,5,6,7]) ], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// modal transposition</p>
-<p class="p6"><span class="s1">var</span> notes;</p>
-<p class="p6">notes = <span class="s1">Pseq</span>([ <span class="s1">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s1">Pseq</span>([0,1,2,3,4,5,6,7]) ], 1);</p>
-<p class="p9">Pseq<span class="s3">([</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\mtranspose<span class="s3">, 0,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\mtranspose<span class="s3">, 1,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\mtranspose<span class="s3">, 2,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">], <span class="s1">inf</span>).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// chromatic transposition</p>
-<p class="p6"><span class="s1">var</span> notes;</p>
-<p class="p6">notes = <span class="s1">Pseq</span>([ <span class="s1">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s1">Pseq</span>([0,1,2,3,4,5,6,7]) ], 1);</p>
-<p class="p9">Pseq<span class="s3">([</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\ctranspose<span class="s3">, 0,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\ctranspose<span class="s3">, 3,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\ctranspose<span class="s3">, -3,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">], <span class="s1">inf</span>).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// frequency detuning</p>
-<p class="p6"><span class="s1">var</span> notes;</p>
-<p class="p6">notes = <span class="s1">Pseq</span>([ <span class="s1">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s1">Pseq</span>([0,1,2,3,4,5,6,7]) ], 1);</p>
-<p class="p9">Pseq<span class="s3">([</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\detune<span class="s3">, 0,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\detune</span>, 20,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\detune</span>, 40,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">], <span class="s1">inf</span>).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// chords. If an Array of pitches is returned by a Stream for pitch, then a chord</p>
-<p class="p7">// will be played.</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.15,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span>\degree<span class="s3">, </span><span class="s1">Pseq</span><span class="s3">([<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pshuf</span>(#[-7,-3,0,2,4,7], 4)+[0,4],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>( [0,1,2,3,4,5,6,7] )+[0,2]</p>
-<p class="p6"><span class="Apple-tab-span">	</span>], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// composing in non 12 equal temperaments.<span class="Apple-converted-space">  </span>72 tone equal temp.</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span>\stepsPerOctave<span class="s3">, 72,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\note</span>, <span class="s1">Pseq</span>([</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>1/1, 7/6, 3/2, 7/4, 9/8</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>([ [0,16,42,58,84], <span class="s1">Pseq</span>([ 0, 16, 42, 58, 72, 84 ], 2), [0,16,42,58,84] ], 1),</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>1/1, 6/5, 3/2, 9/5, 9/8</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>([ [0,19,42,61,84], <span class="s1">Pseq</span>([ 0, 19, 42, 61, 72, 84 ], 2), [0,19,42,61,84] ], 1),</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>1/1, 5/4, 3/2, 15/8, 9/8</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>([ [0,23,42,65,84], <span class="s1">Pseq</span>([ 0, 23, 42, 65, 72, 84 ], 2), [0,23,42,65,84] ], 1),</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>1/1, 9/7, 3/2, 27/14, 9/8</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>([ [0,26,42,68,84], <span class="s1">Pseq</span>([ 0, 26, 42, 68, 72, 84 ], 2), [0,26,42,68,84] ], 1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pseq</span>([ 1.2, <span class="s1">Pseq</span>([0.15], 12), 1.2], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p3"><b>The duration model</b></p>
-<p class="p4"><br></p>
-<p class="p5">Duration is expressed in beats and is bound to the 'dur' symbol. The sustain time of a note can be expressed directly in beats or by using a legato value which is multiplied by the note duration to get the sustain time.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7">// changing duration</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Pseq</span>([ <span class="s1">Pgeom</span>(0.05, 1.1, 24), <span class="s1">Pgeom</span>(0.5, 0.909, 24) ], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\midinote</span>, <span class="s1">Pseq</span>(#[60, 58], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// changing legato value</p>
-<p class="p9">Pbind<span class="s3">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.2,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\legato</span>, <span class="s1">Pseq</span>([ <span class="s1">Pseries</span>(0.05, 0.05, 40), <span class="s1">Pseries</span>(2.05, -0.05, 40) ], <span class="s1">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">\midinote</span>, <span class="s1">Pseq</span>(#[48, 51, 55, 58, 60, 58, 55, 51], <span class="s1">inf</span>)</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p5">To go to the next file:</p>
-<p class="p13"><a href="Streams-Patterns-Events6.html">Streams-Patterns-Events6</a></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Streams-Patterns-Events6.html b/Help/Streams-Patterns-Events/Streams-Patterns-Events6.html
deleted file mode 100644
index 70bb6ee..0000000
--- a/Help/Streams-Patterns-Events/Streams-Patterns-Events6.html
+++ /dev/null
@@ -1,327 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Understanding Streams, Patterns and Events - Part 6</b></p>
-<p class="p1"><br></p>
-<p class="p2"><b>Parallel Patterns</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Ppar</b></p>
-<p class="p3"><br></p>
-<p class="p5">The <b>Ppar</b> pattern allows you to merge multiple event streams to play in parallel.</p>
-<p class="p3"><br></p>
-<p class="p5">Ppar is a ListPattern and so like most ListPatterns it takes two arguments, a <b>list</b> of event patterns to play in parallel and a <b>repeats</b> count.</p>
-<p class="p3"><br></p>
-<p class="p5">Ppar's child patterns must be event patterns. Using value patterns in a Ppar is an error because value patterns contain no duration data.</p>
-<p class="p3"><br></p>
-<p class="p5">A Ppar is done when all of its subpatterns are done.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7">Ppar<span class="s1">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.2, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([62, 65, 69, 72], <span class="s2">inf</span>)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.4, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([50, 45], <span class="s2">inf</span>))</p>
-<p class="p6">]).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p9">// Ppars can be nested</p>
-<p class="p7">Ppar<span class="s1">([</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>Pbind<span class="s1">(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Prand</span>([0.2, 0.4, 0.6], <span class="s2">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s2">Prand</span>([72, 74, 76, 77, 79, 81], <span class="s2">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\db</span>, -26,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, 1.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>Pseq<span class="s1">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 3.2, <span class="s3">\freq</span>, <span class="s2">Pseq</span>([<span class="s3">\rest</span>]) ),</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Prand<span class="s1">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Ppar</span>([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.2, <span class="s3">\pan</span>,<span class="Apple-converted-space">  </span>0.5, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([60, 64, 67, 64])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.4, <span class="s3">\pan</span>, -0.5, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([48, 43]))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Ppar</span>([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.2, <span class="s3">\pan</span>,<span class="Apple-converted-space">  </span>0.5, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([62, 65, 69, 65])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.4, <span class="s3">\pan</span>, -0.5, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([50, 45]))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Ppar</span>([</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.2, <span class="s3">\pan</span>,<span class="Apple-converted-space">  </span>0.5, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([64, 67, 71, 67])),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>(<span class="s3">\dur</span>, 0.4, <span class="s3">\pan</span>, -0.5, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([52, 47]))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>])</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], 12)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>], <span class="s2">inf</span>)</p>
-<p class="p6">], <span class="s2">inf</span>).play;</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p4"><b>Ptpar</b></p>
-<p class="p3"><br></p>
-<p class="p5">The <b>Ppar</b> pattern starts all of its subpatterns at the same time.</p>
-<p class="p3"><b></b><br></p>
-<p class="p5"><b>Ptpar</b> pattern includes a start time parameter before each subpattern which allow the subpatterns to</p>
-<p class="p5">be started at some time delay within the pattern. The start time is given in beats.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> makePattern, durpat;</p>
-<p class="p8"><br></p>
-<p class="p6">durpat = <span class="s2">Pseq</span>([ <span class="s2">Pgeom</span>(0.05, 1.1, 24), <span class="s2">Pgeom</span>(0.5, 0.909, 24) ], 2);</p>
-<p class="p8"><br></p>
-<p class="p6">makePattern = { <span class="s2">arg</span> note, db, pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>( <span class="s3">\dur</span>, durpat, <span class="s3">\db</span>, db, <span class="s3">\pan</span>, pan, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([note, note-4], <span class="s2">inf</span>) );</p>
-<p class="p6">};</p>
-<p class="p8"><br></p>
-<p class="p7">Ptpar<span class="s1">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.0, makePattern.value(53, -20, -0.9),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>2.0, makePattern.value(60, -23, -0.3),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>4.0, makePattern.value(67, -26,<span class="Apple-converted-space">  </span>0.3),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>6.0, makePattern.value(74, -29,<span class="Apple-converted-space">  </span>0.9)</p>
-<p class="p6">], <span class="s2">inf</span>).play;</p>
-<p class="p8"><br></p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p5">The time argmuents are sent the 'value' message when the Ptpar pattern is started, so you may use functions to specify the times.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> makePattern, durpat;</p>
-<p class="p8"><br></p>
-<p class="p6">durpat = <span class="s2">Pseq</span>([ <span class="s2">Pgeom</span>(0.05, 1.1, 24), <span class="s2">Pgeom</span>(0.5, 0.909, 24) ], 2);</p>
-<p class="p8"><br></p>
-<p class="p6">makePattern = { <span class="s2">arg</span> note, db, pan;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbind</span>( <span class="s3">\dur</span>, durpat, <span class="s3">\db</span>, db, <span class="s3">\pan</span>, pan, <span class="s3">\midinote</span>, <span class="s2">Pseq</span>([note, note-4], <span class="s2">inf</span>) );</p>
-<p class="p6">};</p>
-<p class="p8"><br></p>
-<p class="p7">Ptpar<span class="s1">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ 0.0 }, makePattern.value(53, -20, -0.9),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ 8.0.rand }, makePattern.value(60, -23, -0.3),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ 8.0.rand }, makePattern.value(67, -26,<span class="Apple-converted-space">  </span>0.3),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ 8.0.rand }, makePattern.value(74, -29,<span class="Apple-converted-space">  </span>0.9)</p>
-<p class="p6">], <span class="s2">inf</span>).play;</p>
-<p class="p8"><br></p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><b>FilterPatterns and transformation</b></p>
-<p class="p3"><br></p>
-<p class="p5">FilterPatterns take an existing pattern and apply some modification to its properties.</p>
-<p class="p11"><br></p>
-<p class="p4"><b>Padd, Pmul, Pset, Pstretch</b></p>
-<p class="p3"><br></p>
-<p class="p5">There is a simpler way to write the modal transposition example given in part 5. In fact the earlier examples are setting the values of mtranspose and ctranspose which is not the best way to change those variables, because it wipes out any modifications to them by parent patterns. It is better to take the current value of those properties and add a value to them. The <b>Padd</b> filter takes the current value of a property and adds a value to it.</p>
-<p class="p11"><br></p>
-<p class="p6">(</p>
-<p class="p9">// modal transposition</p>
-<p class="p6"><span class="s2">var</span> pattern;</p>
-<p class="p8"><br></p>
-<p class="p9">// define the basic pattern</p>
-<p class="p6">pattern = <span class="s2">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseq</span>([ <span class="s2">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s2">Pseq</span>([0,1,2,3,4,5,6,7]) ], 1)</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-<p class="p7">Pseq<span class="s1">([</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span>pattern,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// untransposed</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Padd</span><span class="s1">(</span><span class="s3">\mtranspose</span><span class="s1">, 1, pattern),<span class="Apple-tab-span">	</span></span>// modal transpose up 1 degree</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Padd</span><span class="s1">(</span><span class="s3">\mtranspose</span><span class="s1">, 2, pattern)<span class="Apple-tab-span">	</span></span>// modal transpose up 2 degrees</p>
-<p class="p6">], <span class="s2">inf</span>).play</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p5">Similarly, <b>Pmul</b> multiplies the current value of a property by a value.</p>
-<p class="p5"><b>Pset</b> sets the property to a value.</p>
-<p class="p5"><b>Pnot</b> does a logical negation of a property with a Boolean value.</p>
-<p class="p11"><br></p>
-<p class="p5">In order to process duration correctly <b>Pstretch</b> should be used.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p9">// beat stretching using Pstretch</p>
-<p class="p6"><span class="s2">var</span> pattern;</p>
-<p class="p8"><br></p>
-<p class="p9">// define the basic pattern</p>
-<p class="p6">pattern = <span class="s2">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseq</span>([ <span class="s2">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s2">Pseq</span>([0,1,2,3,4,5,6,7]) ], 1)</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-<p class="p7">Pseq<span class="s1">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>pattern,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// normal</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Pstretch</span><span class="s1">(0.5, pattern),<span class="Apple-tab-span">	</span></span>// stretch durations by a factor of 1/2</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Pstretch</span><span class="s1">(2.0, pattern)<span class="Apple-tab-span">	</span></span>// stretch durations by a factor of 2</p>
-<p class="p6">], <span class="s2">inf</span>).play</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Paddp, Pmulp, Psetp, Pstretchp</b></p>
-<p class="p3"><br></p>
-<p class="p5">In fact there is an even shorter version of the modal transposition example. <b>Paddp</b> reads one pattern to get values for adding to a property and plays the second pattern once through modified with each new value.</p>
-<p class="p11"><br></p>
-<p class="p6">(</p>
-<p class="p9">// modal transposition</p>
-<p class="p6"><span class="s2">var</span> pattern;</p>
-<p class="p8"><br></p>
-<p class="p9">// define the basic pattern</p>
-<p class="p6">pattern = <span class="s2">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseq</span>([ <span class="s2">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s2">Pseq</span>([0,1,2,3,4,5,6,7]) ], 1)</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-<p class="p7">Paddp<span class="s1">(</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">\mtranspose</span><span class="s1">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// property to be modified</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Pseq</span><span class="s1">([0,1,2], </span><span class="s2">inf</span><span class="s1">), <span class="Apple-tab-span">	</span></span>// a value pattern as a source of values for adding to mtranspose</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span>pattern<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the pattern to be modified</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p5">Nested modifications:</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p9">// modal transposition</p>
-<p class="p6"><span class="s2">var</span> pat1, pat2;</p>
-<p class="p8"><br></p>
-<p class="p9">// define the basic pattern</p>
-<p class="p6">pat1 = <span class="s2">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.15,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseq</span>([ <span class="s2">Pshuf</span>(#[-7,-3,0,2,4,7], 4), <span class="s2">Pseq</span>([0,1,2,3,4,5,6,7]) ], 1)</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-<p class="p6">pat2 = <span class="s2">Paddp</span>(</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">\mtranspose</span><span class="s1">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// property to be modified</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Pseq</span><span class="s1">([0,1,2]), <span class="Apple-tab-span">	</span></span>// a value pattern as a source of values for adding to mtranspose</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Ppar</span>([<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pat1,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Padd</span>(<span class="s3">\mtranspose</span>, -3, pat1), <span class="s4">// down a 4th</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Padd</span>(<span class="s3">\mtranspose</span>, 2, pat1) <span class="Apple-tab-span">	</span><span class="s4">// up a 3rd</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>])</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-<p class="p7">Pseq<span class="s1">([</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span>pat1,<span class="Apple-tab-span">	</span></span>// unmodified pattern</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span>pat2, <span class="Apple-tab-span">	</span></span>// parallel sequence</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Pstretch</span><span class="s1">(1.5, pat2) <span class="Apple-tab-span">	</span></span>// parallel sequence stretched by 3/2</p>
-<p class="p6">], <span class="s2">inf</span>).play</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p3"><br></p>
-<p class="p5">Another example using Paddp:</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> chord;</p>
-<p class="p6">chord = <span class="s2">Prand</span>([[53, 58, 64],[53, 60, 64],[57,60,65]]);</p>
-<p class="p6"><span class="s2">Paddp</span>(<span class="s3">\ctranspose</span>, <span class="s2">Prand</span>([-1,0,2,4,5], <span class="s2">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>Ppar<span class="s1">([</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Pbind</span><span class="s1">(<span class="Apple-tab-span">	</span></span>// melody part</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Prand</span>([0.2, 0.4, 0.6], <span class="s2">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s2">Pxrand</span>([71, 72, 74, 76, 77, 79], 10),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\db</span>, -26,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, 1.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Pbind</span><span class="s1">(<span class="Apple-tab-span">	</span></span>// harmony part</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\pan</span>, 0.4,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Pseq</span>([0.1, 0.5, 0.4, 0.6], 4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s2">Pseq</span>([chord,<span class="s3">\rest</span>,chord,<span class="s3">\rest</span>], 4)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Pbind</span><span class="s1">(<span class="Apple-tab-span">	</span></span>// bass part</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\pan</span>, -0.4,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.4,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s2">Pseq</span>([38, 45, 38, 36], 4)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>])</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p9">// chromatic transposition</p>
-<p class="p6"><span class="s2">var</span> pattern;</p>
-<p class="p8"><br></p>
-<p class="p9">// define the basic pattern</p>
-<p class="p6">pattern = <span class="s2">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseq</span>([0,1,2,3,4,5,6,7])</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-<p class="p7">Paddp<span class="s1">(</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">\ctranspose</span><span class="s1">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// property to be modified</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Pseries</span><span class="s1">(0,1,12), <span class="Apple-tab-span">	</span></span>// a value pattern as a source of values for multiplying with ctranspose</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span>pattern<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the pattern to be modified</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p9">// beat time stretching</p>
-<p class="p6"><span class="s2">var</span> pattern;</p>
-<p class="p8"><br></p>
-<p class="p9">// define the basic pattern</p>
-<p class="p6">pattern = <span class="s2">Pbind</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, 0.1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\degree</span>, <span class="s2">Pseq</span>([0,1,2,3,4,5,6,7])</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-<p class="p7">Pstretchp<span class="s1">(</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Pseq</span><span class="s1">([1,2,3], </span><span class="s2">inf</span><span class="s1">), <span class="Apple-tab-span">	</span></span>// a value pattern as a source of values for multiplying with stretch</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span>pattern<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the pattern to be modified</p>
-<p class="p6">).play</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p11"><br></p>
-<p class="p4"><b>Pbindf</b></p>
-<p class="p11"><br></p>
-<p class="p5"><b>Pbindf</b> is like <b>Pbind</b> except that it merges all the bound symbols into events that it gets from a subpattern. It takes the same initial arguments in pairs as Pbind does, with an additional pattern to be modified as the last argument.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> pattern;</p>
-<p class="p6">pattern = <span class="s2">Pbind</span>( <span class="s3">\midinote</span>, <span class="s2">Pseq</span>(#[60, 62, 64, 65, 67, 69, 71, 72]) );</p>
-<p class="p8"><br></p>
-<p class="p7">Pseq<span class="s1">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbindf</span>(pattern, <span class="s3">\legato</span>, 0.1, <span class="s3">\dur</span>, 0.2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbindf</span>(pattern, <span class="s3">\legato</span>, 1.0, <span class="s3">\dur</span>, 0.125),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbindf</span>(pattern, <span class="s3">\legato</span>, 2.0, <span class="s3">\dur</span>, 0.3)</p>
-<p class="p6">], <span class="s2">inf</span>).play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">Patterns can be used as the arguments to Pbindf.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> pattern;</p>
-<p class="p6">pattern = <span class="s2">Pbind</span>( <span class="s3">\midinote</span>, <span class="s2">Pseq</span>(#[60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 79]) );</p>
-<p class="p8"><br></p>
-<p class="p7">Pseq<span class="s1">([</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbindf</span>(pattern,<span class="s3">\legato</span>, 0.1, <span class="s3">\dur</span>, <span class="s2">Pgeom</span>(0.3, 0.85, <span class="s2">inf</span>)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbindf</span>(pattern,<span class="s3">\legato</span>, 1.0, <span class="s3">\dur</span>, <span class="s2">Pseq</span>([0.3, 0.15], <span class="s2">inf</span>)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Pbindf</span>(pattern,<span class="s3">\legato</span>, 2.0, <span class="s3">\dur</span>, <span class="s2">Pseq</span>([0.2, 0.2, 0.4], <span class="s2">inf</span>))</p>
-<p class="p6">], <span class="s2">inf</span>).play</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p5">To go to the next file:</p>
-<p class="p12"><a href="Streams-Patterns-Events7.html">Streams-Patterns-Events7</a></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Streams-Patterns-Events7.html b/Help/Streams-Patterns-Events/Streams-Patterns-Events7.html
deleted file mode 100644
index 8f0000c..0000000
--- a/Help/Streams-Patterns-Events/Streams-Patterns-Events7.html
+++ /dev/null
@@ -1,197 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #000000}
-span.s4 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Understanding Streams, Patterns and Events - Part 7</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Practical Considerations</b></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Using your own ~instrument</b></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s2">\help_SPE7_BerlinB</span>, { <span class="s1">arg</span> i_out=0, freq = 80, amp = 0.2, pan=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> out, a, b;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>amp = <span class="s1">Decay2</span>.kr(<span class="s1">Impulse</span>.kr(0), 0.05, 8, amp);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>out = <span class="s1">RLPF</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFPulse</span>.ar(freq, 0, <span class="s1">SinOsc</span>.kr(0.12,[0,0.5pi],0.48,0.5), amp),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * <span class="s1">SinOsc</span>.kr(0.21,0,4,8),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.07</p>
-<p class="p7"><span class="Apple-tab-span">	</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>#a, b = out;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">DetectSilence</span>.ar(a, 0.0001, doneAction: 2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(i_out, <span class="s1">Mix</span>.ar(<span class="s1">PanAz</span>.ar(4, [a, b], [pan, pan+1])));</p>
-<p class="p7">}).add;</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s2">\help_SPE7_CFString1</span>, { <span class="s1">arg</span> i_out, freq = 360, gate = 1, pan, amp=0.1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> out, eg, fc, osc, a, b, w;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>fc = <span class="s1">LinExp</span>.kr(<span class="s1">LFNoise1</span>.kr(<span class="s1">Rand</span>(0.25,0.4)), -1,1,500,2000);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>osc = <span class="s1">Mix</span>.fill(8, { <span class="s1">LFSaw</span>.ar(freq * [<span class="s1">Rand</span>(0.99,1.01),<span class="s1">Rand</span>(0.99,1.01)], 0, amp) }).distort * 0.2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>eg = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.asr(1,1,1), gate, doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>out = eg * <span class="s1">RLPF</span>.ar(osc, fc, 0.1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>#a, b = out;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(i_out, <span class="s1">Mix</span>.ar(<span class="s1">PanAz</span>.ar(4, [a, b], [pan, pan+0.3])));</p>
-<p class="p7">}).add;</p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p9">Pattern-play creates an EventStreamPlayer for you and also supplies a default protoEvent. If you were using your own event model you would just pass in your own protoEvent to the play method.</p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p10">Pbind<span class="s3">(</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span><span class="s1">Prand</span><span class="s3">([</span>\help_SPE7_BerlinB<span class="s3">,</span> \help_SPE7_CFString1<span class="s3">],</span><span class="s1">inf</span><span class="s3">),</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.8,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\octave</span>, 3, <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.03</p>
-<p class="p12"><span class="s3">).play; </span>// this returns an EventStreamPlayer</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p13"><b>Defining your own message bindings</b></p>
-<p class="p1"><br></p>
-<p class="p9">The default event prototype uses a msgFunc to determine which bindings to pass to the server. Synthdefs that have been stored in a SynthDescLib ("synth description library") construct the msgFunc automatically. The default event looks up the instrument name in a SynthDescLib of your choosing (using the \synthLib key). Normally only the global SynthDescLib is used; if \synthLib is empty, the global library is the default.</p>
-<p class="p1"><br></p>
-<p class="p9">You should not send or load synthdefs that you plan to use with patterns. Instead, store them in a SynthDescLib.</p>
-<p class="p1"><br></p>
-<p class="p12">// saves .scsyndef file on disk (like .load), and adds description to the global library</p>
-<p class="p7"><span class="s1">SynthDef</span>(...).store;</p>
-<p class="p8"><br></p>
-<p class="p12">// adds description to the global library; no file is saved (like .send)</p>
-<p class="p7"><span class="s1">SynthDef</span>(...).add;</p>
-<p class="p1"><br></p>
-<p class="p9">If you don't do this, nondefault bindings will be ignored. In that case, you can provide a custom msgFunc manually. Here's an example:</p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s2">\help_SPE4_CFString2</span>, { <span class="s1">arg</span> i_out, freq = 360, gate = 1, pan, amp=0.1, dorkarg=1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> out, eg, fc, osc, a, b, w;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>fc = <span class="s1">LinExp</span>.kr(<span class="s1">LFNoise1</span>.kr(<span class="s1">Rand</span>(0.25,0.4)), -1,1,500,2000);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>osc = <span class="s1">Mix</span>.fill(8, { <span class="s1">LFSaw</span>.ar(freq * [<span class="s1">Rand</span>(0.99,1.01),<span class="s1">Rand</span>(0.99,1.01)], 0, amp * dorkarg ) }).distort * 0.2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>eg = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.asr(1,1,1), gate, doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>out = eg * <span class="s1">RLPF</span>.ar(osc, fc, 0.1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>#a, b = out;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(i_out, <span class="s1">Mix</span>.ar(<span class="s1">PanAz</span>.ar(4, [a, b], [pan, pan+0.3])));</p>
-<p class="p12"><span class="s3">}).send(s);<span class="Apple-tab-span">	</span></span>// change .send(s) to .add</p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p9">As you can see I have added dorkarg to the arglist of the SynthDef from earlier.</p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p10">Pbind<span class="s3">(</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\help_SPE4_CFString2<span class="s3">,</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.4,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\octave</span>, 3, <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.03,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">\dorkarg</span><span class="s3">, </span><span class="s1">Pseq</span><span class="s3">([1,0,1],</span><span class="s1">inf</span><span class="s3">) </span>// silence every second note - doesn't work</p>
-<p class="p7">).play;</p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p9">'dorkarg' is ignored because the SynthDef was not properly .add'd and consequently, the event prototype doesn't know that dorkarg is important.</p>
-<p class="p1"><br></p>
-<p class="p9">You could also supply a \msgFunc that includes dorkarg:</p>
-<p class="p1"><br></p>
-<p class="p7">(</p>
-<p class="p10">Pbind<span class="s3">(</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\help_SPE4_CFString2<span class="s3">,</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.4,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\octave</span>, 3, <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.03,</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">\dorkarg</span><span class="s3">, </span><span class="s1">Pseq</span><span class="s3">([1,0,1],</span><span class="s1">inf</span><span class="s3">), </span>// silence every second note - now works</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\msgFunc</span>, { <span class="s1">arg</span> out = 0, freq = 440, amp = 0.1, pan = 0, vol = 1,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dorkarg = 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s2">\out</span>, out, <span class="s2">\freq</span>, freq, <span class="s2">\amp</span>, amp, <span class="s2">\pan</span>, pan, <span class="s2">\vol</span>, vol,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">\dorkarg</span>, dorkarg];</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">).play;</p>
-<p class="p7">)</p>
-<p class="p1"><br></p>
-<p class="p9">But this is quite clumsy. It is strongly recommended to get into the habit of using .add for all SynthDefs intended for use with Patterns.</p>
-<p class="p1"><br></p>
-<p class="p9">The other option you have if you will be using unspecified bindings, is of course to define an event with the appropriate msgFunc as default. Have a look at Event's source, it's easy, and it's cleaner than passing in the msgFunc every time.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>Manipulating an EventStreamPlayer in Realtime</b></p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p7">p = <span class="s1">Pbind</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pwhite</span>(0,12),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, 0.2,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\help_SPE4_CFString2</p>
-<p class="p7">);</p>
-<p class="p12">// e is an EventStreamPlayer</p>
-<p class="p7">e = p.play;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p12">// you can change the stream at any point in time</p>
-<p class="p7">e.stream = <span class="s1">Pbind</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\degree</span>, <span class="s1">Pseq</span>([0,1,2,4,6,3,4,8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\dur</span>, <span class="s1">Prand</span>([0.2,0.4,0.8],<span class="s1">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.05,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\octave<span class="s3">, 5,<span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\help_SPE7_BerlinB<span class="s3">, </span><span class="s4">// you can also use a symbol<span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\ctranspose<span class="s3">, 0</span></p>
-<p class="p7">).asStream;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7">e.stream = <span class="s1">Pbind</span>(</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span>[</span>\degree<span class="s3">, </span>\dur<span class="s3">], </span><span class="s1">Pseq</span><span class="s3">(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pseq</span>([[0,0.1],[2,0.1],[3,0.1],[4,0.1],[5,0.8]],2),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Ptuple</span>([<span class="s1">Pxrand</span>([6,7,8,9],4), 0.4]),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Ptuple</span>([<span class="s1">Pseq</span>([9,8,7,6,5,4,3,2]), 0.2])</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s1">inf</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">\amp</span>, 0.05,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\octave<span class="s3">, 5,<span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\Help_SPE7_CFString1</p>
-<p class="p7">).asStream;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p9">The following methods are possible because an <a href="EventStreamPlayer.html"><span class="s1">EventStreamPlayer</span></a> is a PauseStream:</p>
-<p class="p4"><br></p>
-<p class="p12"><span class="s3">e.mute; </span>// keeps playing, but replaces notes with rests</p>
-<p class="p8"><br></p>
-<p class="p7">e.unmute;</p>
-<p class="p8"><br></p>
-<p class="p12"><span class="s3">e.reset;<span class="Apple-converted-space">  </span></span>// reset the stream.</p>
-<p class="p8"><br></p>
-<p class="p12"><span class="s3">e.pause;<span class="Apple-converted-space">  </span></span>// will resume where paused.</p>
-<p class="p8"><br></p>
-<p class="p7">e.resume;</p>
-<p class="p8"><br></p>
-<p class="p12"><span class="s3">e.stop;<span class="Apple-converted-space">  </span></span>// will reset before resume.</p>
-<p class="p8"><br></p>
-<p class="p7">e.resume;</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/Streams.html b/Help/Streams-Patterns-Events/Streams.html
deleted file mode 100644
index f826991..0000000
--- a/Help/Streams-Patterns-Events/Streams.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Patterns/Streams Help</b></p>
-<p class="p1"><br></p>
-<p class="p3">Some tutorial overviews:</p>
-<p class="p1"><br></p>
-<p class="p4"><b>[</b><a href="A Practical Guide/PG_01_Introduction.html"><span class="s1"><b>PG_01_Introduction</b></span></a><b>]<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>A Practical Guide to Patterns</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>[</b><a href="Streams-Patterns-Events1.html"><span class="s2"><b>Streams-Patterns-Events1</b></span></a><b>]<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>Streams & Routines<span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><b>[</b><a href="Streams-Patterns-Events2.html"><span class="s2"><b>Streams-Patterns-Events2</b></span></a><b>]<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>Patterns Introduction</b></p>
-<p class="p6"><span class="s3"><b>[</b><a href="Streams-Patterns-Events3.html"><b>Streams-Patterns-Events3</b></a><b>]<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>ListPatterns</b></span></p>
-<p class="p4"><b>[</b><a href="Streams-Patterns-Events4.html"><span class="s2"><b>Streams-Patterns-Events4</b></span></a><b>]<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>Environment & Event</b></p>
-<p class="p6"><span class="s3"><b>[</b><a href="Streams-Patterns-Events5.html"><b>Streams-Patterns-Events5</b></a><b>]<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>Event.default</b></span></p>
-<p class="p4"><b>[</b><a href="Streams-Patterns-Events6.html"><span class="s2"><b>Streams-Patterns-Events6</b></span></a><b>]<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>Parallel Patterns</b></p>
-<p class="p4"><b>[</b><a href="Streams-Patterns-Events7.html"><span class="s2"><b>Streams-Patterns-Events7</b></span></a><b>]<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>Practical Considerations</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">Specific classes:</p>
-<p class="p5"><br></p>
-<p class="p4"><b><span class="s4">ListPatterns</span></b></p>
-<p class="p5"><br></p>
-<p class="p6"><a href="Patterns/Pseq.html"><b>Pseq</b></a></p>
-<p class="p6"><a href="Patterns/Pser.html"><b>Pser</b></a></p>
-<p class="p6"><a href="Patterns/Prand.html"><b>Prand</b></a></p>
-<p class="p6"><a href="Patterns/Pwrand.html"><b>Pwrand</b></a></p>
-<p class="p6"><a href="Patterns/Pxrand.html"><b>Pxrand</b></a></p>
-<p class="p6"><a href="Patterns/Pshuf.html"><b>Pshuf</b></a></p>
-<p class="p6"><a href="Patterns/Place.html"><b>Place</b></a></p>
-<p class="p6"><a href="Patterns/Ptuple.html"><b>Ptuple</b></a></p>
-<p class="p6"><a href="Patterns/Pslide.html"><b>Pslide</b></a></p>
-<p class="p6"><a href="Patterns/Pfsm.html"><b>Pfsm</b></a></p>
-<p class="p6"><a href="Patterns/Place.html"><b>Place</b></a></p>
-<p class="p4"><b>...</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b><span class="s4">FilterPatterns</span></b></p>
-<p class="p5"><br></p>
-<p class="p6"><a href="Patterns/Pseed.html"><b>Pseed</b></a></p>
-<p class="p6"><a href="Patterns/Prewrite.html"><b>Prewrite</b></a></p>
-<p class="p6"><a href="Patterns/Pswitch.html"><b>Pswitch</b></a></p>
-<p class="p6"><a href="Patterns/Pswitch1.html"><b>Pswitch1</b></a></p>
-<p class="p6"><a href="Patterns/Pn.html"><b>Pn</b></a></p>
-<p class="p6"><a href="Patterns/Pstutter.html"><b>Pstutter</b></a></p>
-<p class="p6"><a href="Patterns/Pfin.html"><b>Pfin</b></a></p>
-<p class="p6"><a href="Patterns/Psync.html"><b>Psync</b></a></p>
-<p class="p6"><a href="Patterns/Pcollect.html"><b>Pcollect</b></a></p>
-<p class="p6"><a href="Patterns/Pselect.html"><b>Pselect</b></a></p>
-<p class="p6"><a href="Patterns/Preject.html"><b>Preject</b></a></p>
-<p class="p5"><br></p>
-<p class="p6"><a href="Patterns/PdurStutter.html"><b>PdurStutter</b></a></p>
-<p class="p6"><a href="Patterns/Pconst.html"><b>Pconst</b></a></p>
-<p class="p6"><a href="Patterns/Pwrap.html"><b>Pwrap</b></a></p>
-<p class="p6"><a href="Patterns/PdegreeToKey.html"><b>PdegreeToKey</b></a></p>
-<p class="p6"><a href="Patterns/Pavaroh.html"><b>Pavaroh</b></a></p>
-<p class="p5"><br></p>
-<p class="p4"><b><span class="s4">event stream specific filter patterns</span></b></p>
-<p class="p5"><br></p>
-<p class="p6"><a href="Patterns/Pset.html"><b>Pset</b></a></p>
-<p class="p6"><a href="Patterns/Pfset.html"><b>Pfset</b></a></p>
-<p class="p6"><a href="Patterns/Pmul.html"><b>Pmul</b></a></p>
-<p class="p6"><a href="Patterns/Padd.html"><b>Padd</b></a></p>
-<p class="p6"><a href="Patterns/Psetp.html"><b>Psetp</b></a></p>
-<p class="p6"><a href="Patterns/Pmulp.html"><b>Pmulp</b></a></p>
-<p class="p6"><a href="Patterns/Paddp.html"><b>Paddp</b></a></p>
-<p class="p6"><a href="Patterns/Pfindur.html"><b>Pfindur</b></a></p>
-<p class="p5"><br></p>
-<p class="p4"><b><span class="s4">other Patterns</span></b></p>
-<p class="p5"><br></p>
-<p class="p6"><a href="Patterns/Pwhite.html"><b>Pwhite</b></a></p>
-<p class="p6"><a href="Patterns/Pbrown.html"><b>Pbrown</b></a></p>
-<p class="p6"><a href="Patterns/Ppatmod.html"><b>Ppatmod</b></a></p>
-<p class="p6"><a href="Patterns/Plazy.html"><b>Plazy</b></a></p>
-<p class="p6"><a href="Patterns/Pbind.html"><b>Pbind</b></a></p>
-<p class="p6"><a href="Patterns/Phid.html"><b>Phid</b></a></p>
-<p class="p6"><a href="Patterns/PstepNadd.html"><b>PstepNadd</b></a></p>
-<p class="p6"><a href="Patterns/PstepNfunc.html"><b>PstepNfunc</b></a></p>
-<p class="p5"><br></p>
-<p class="p4"><b><span class="s4">Streams</span></b></p>
-<p class="p5"><br></p>
-<p class="p6"><a href="BinaryOpStream.html"><b>BinaryOpStream</b></a></p>
-<p class="p6"><a href="UnaryOpStream.html"><b>UnaryOpStream</b></a></p>
-<p class="p6"><a href="EventStream.html"><b>EventStream</b></a></p>
-<p class="p6"><a href="EventStreamPlayer.html"><b>EventStreamPlayer</b></a></p>
-<p class="p5"><br></p>
-<p class="p4"><b>to be continued...</b></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/Streams-Patterns-Events/UnaryOpStream.html b/Help/Streams-Patterns-Events/UnaryOpStream.html
deleted file mode 100644
index 0323715..0000000
--- a/Help/Streams-Patterns-Events/UnaryOpStream.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0026b4}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>UnaryOpStream<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>stream modified by a unary operator<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: </b><a href="Stream.html"><span class="s2">Stream</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">see also <a href="BinaryOpStream.html"><span class="s4">BinaryOpStream</span></a></span><span class="s4">,</span> <a href="NAryOpStream.html"><span class="s5">NAryOpStream</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">A UnaryOpStream is created as a result of a unary math operation on a Stream.<span class="Apple-converted-space"> </span></p>
-<p class="p1">It is defined to respond to <b>next</b> by returning the result of the math operation</p>
-<p class="p1">on the <b>next</b> value from the stream. It responds to <b>reset</b> by resetting the Stream.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">x = <span class="s2">Routine</span> { 6.do { <span class="s2">arg</span> i; i.yield; } }.squared;</p>
-<p class="p5">x.dump</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = <span class="s2">Routine</span> { 6.do { <span class="s2">arg</span> i; i.yield; } }.squared;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">x.next.postln;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Buffers.html b/Help/Tutorials/Getting-Started/Buffers.html
deleted file mode 100644
index feeb0a5..0000000
--- a/Help/Tutorials/Getting-Started/Buffers.html
+++ /dev/null
@@ -1,271 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #902a19}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; color: #902a19}
-p.p10 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; color: #606060}
-p.p11 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 9.0px Monaco}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #606060}
-p.p18 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0016e6}
-span.s1 {color: #0018f7}
-span.s2 {color: #000000}
-span.s3 {color: #091fb1}
-span.s4 {color: #902a19}
-span.s5 {color: #606060}
-span.s6 {color: #456c20}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Buffers</b></p>
-<p class="p2"><br></p>
-<p class="p3">Buffers represent server buffers, which are ordered arrays of floats on the server. 'float' is short for floating point number, which means a number with a decimal point, like 1.3. This is in contrast to integers, which are positive or negative whole numbers (or zero), and are written without decimal points. So 1 is an integer, but 1.0 is a float.</p>
-<p class="p2"><br></p>
-<p class="p3">Server buffers can be single or multichannel, and are the usual way of storing data server-side. Their most common use is to hold soundfiles in memory, but any sort of data that can be represented by floats can be stored in a buffer.</p>
-<p class="p2"><br></p>
-<p class="p3">Like busses, the number of buffers is set before you boot a server (using <a href="../../ServerArchitecture/ServerOptions.html"><span class="s1">ServerOptions</span></a>), but before buffers can be used, you need to allocate memory to them, which is an asynchronous step. Also like busses, buffers are numbered, starting from 0. Using Buffer takes care of allocating numbers, and avoids conflicts.</p>
-<p class="p2"><br></p>
-<p class="p3">You can think of buffers as the server-side equivalent of an Array, but without all the elegant OOP functionality. Luckily with Buffer, and the ability to manipulate data in the client app when needed, you can do almost anything you want with buffer data. A server's buffers are global, which is to say that they can be accessed by any synth, and by more than one at a time. They can be written to or even changed in size, <i>while</i> they are being read from.</p>
-<p class="p2"><br></p>
-<p class="p3">Many of Buffer's methods have numerous arguments. Needless to say, for full information see the <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a> help file.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Making a Buffer Object and Allocating Memory</b></p>
-<p class="p2"><br></p>
-<p class="p3">Making a Buffer object and allocating the necessary memory in the server app is quite easy. You can do it all in one step with Buffer's alloc method:</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s3">Buffer</span><span class="s2">.alloc(s, 100, 2); <span class="Apple-tab-span">	</span></span>// allocate 2 channels, and 100 frames<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>b.free;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// free the memory (when you're finished using it)</p>
-<p class="p8"><br></p>
-<p class="p3">The example above allocates a 2 channel buffer with 100 frames. The actual number of values stored is numChannels * numFrames, so in this case there will be 200 floats. So each frame is in this case a pair of values.</p>
-<p class="p2"><br></p>
-<p class="p3">If you'd like to allocate in terms of seconds, rather than frames, you can do so like this:</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>b = <span class="s3">Buffer</span>.alloc(s, s.sampleRate * 8.0, 2); <span class="s4">// an 8 second stereo buffer</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>b.free;</p>
-<p class="p2"><br></p>
-<p class="p3">Buffer's 'free' method frees the memory on the server, and returns the Buffer's number for reallocation. You should not use a Buffer object after doing this.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Using Buffers with Sound Files</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">Buffer has another class method called 'read', which reads a sound file into memory, and returns a Buffer object. Using the UGen PlayBuf, we can play the file.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// read a soundfile</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = </span><span class="s3">Buffer</span><span class="s2">.read(s, </span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// now play it</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s3">SynthDef</span>(<span class="s5">"tutorial-PlayBuf"</span>,{ <span class="s3">arg</span> out = 0, bufnum;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar( out,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">PlayBuf</span>.ar(1, bufnum, <span class="s3">BufRateScale</span>.kr(bufnum))</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).play(s,[<span class="s6">\bufnum</span>, b]);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">PlayBuf.ar has a number of arguments which allow you to control various aspects of how it works. Take a look at the <a href="../../UGens/Playback and Recording/PlayBuf.html"><span class="s1">PlayBuf</span></a> helpfile for details of them all, but for now lets just concern ourselves with the first three, used in the example above.</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s7"><span class="Apple-tab-span">	</span></span>PlayBuf<span class="s2">.ar(</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// number of channels</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// number of buffer to play</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">BufRateScale</span><span class="s2">.kr(bufnum)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// rate of playback</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">Number of channels: When working with PlayBuf you must let it know how many channels any buffer it will read in will have. <i>You cannot make this an argument in the SynthDef and change it later</i>. Why? Remember that SynthDefs must have a fixed number of output channels. So a one channel PlayBuf is <i>always</i> a one channel PlayBuf. If you need versions that can play varying numbers of channels then make multiple SynthDefs or use Function-play.</p>
-<p class="p2"><br></p>
-<p class="p3">Bufffer Number: As noted above, Buffers are numbered, starting from zero. You can get a Buffer's number using its <b>bufnum</b> method, but you will not normally need to do this, since Buffer objects can be passed directly as UGen inputs or Synth args.</p>
-<p class="p2"><br></p>
-<p class="p3">Rate of Playback: A rate of 1 would be normal speed, 2 twice as fast, etc. But here we see a UGen called BufRateScale. What this does is check the samplerate of the the buffer (this is set to correspond to that of the soundfile when it is loaded) and outputs the rate which would correspond to normal speed. This is useful because the soundfile we loaded (a11wlk01.wav) actually has a samplerate of 11025 Hz. With a rate of 1, PlayBuf would play it back using the sampling rate of the server, which is usually 44100 Hz, or four times as fast! BufRateScale thus brings things back to normal.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Streaming a File in From Disk</b></p>
-<p class="p16"><br></p>
-<p class="p3">In some cases, for instance when working with very large files, you might not want to load a sound completely into memory. Instead, you can stream it in from disk a bit at a time, using the UGen DiskIn, and Buffer's 'cueSoundFile' method:</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">SynthDef</span><span class="s2">(</span>"tutorial-Buffer-cue"<span class="s2">,{ </span><span class="s3">arg</span><span class="s2"> out=0,bufnum;</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">DiskIn</span>.ar( 1, bufnum )</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s3">Buffer</span>.cueSoundFile(s,<span class="s5">"sounds/a11wlk01-44_1.aiff"</span>, 0, 1);</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>y = </span><span class="s3">Synth</span><span class="s2">.new(</span>"tutorial-Buffer-cue", <span class="s2">[</span><span class="s6">\bufnum</span><span class="s2">,b], s);</span></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.free; y.free;</p>
-<p class="p2"><br></p>
-<p class="p3">This is not as flexible as PlayBuf (no rate control), but can save memory.</p>
-<p class="p16"><br></p>
-<p class="p4"><b>More on Instance Variables and Action Functions</b></p>
-<p class="p16"><br></p>
-<p class="p3">Now a little more OOP. Remember that individual Objects store data in <i>instance variables</i>. Some instance variables have what are called getter or setter methods, which allow you to get or set their values. We've already seen this in action with Buffer's 'bufnum' method, which is a getter for its buffer number instance variable.</p>
-<p class="p2"><br></p>
-<p class="p3">Buffer has a number of other instance variables with getters which can provide helpful information. The ones we're interested in at the moment are numChannels, numFrames, and sampleRate. These can be particularly useful when working with sound files, as we may not have all this information at our fingertips before loading the file.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// watch the post window</p>
-<p class="p17"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s3">Buffer</span><span class="s2">.read(s, </span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.bufnum;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.numFrames;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.numChannels;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.sampleRate;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p8"><br></p>
-<p class="p3">Now (like with the example using an action function in our Bus-get example; see <b>[Busses]</b>) because of the small messaging latency between client and server, instance variables will not be immediately updated when you do something like read a file into a buffer. For this reason, many methods in Buffer take action functions as arguments. Remember that an action function is just a Function that will be evaluated after the client has received a reply, and has updated the Buffer's vars. It is passed the Buffer object as an argument.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// with an action function</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// note that the vars are not immediately up-to-date</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = <span class="s3">Buffer</span>.read(s, <span class="s5">"sounds/a11wlk01.wav"</span>, action: { <span class="s3">arg</span> buffer;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s5">"numFrames after update:"</span> + buffer.numFrames).postln;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s3">PlayBuf</span>.ar(1, buffer, <span class="s3">BufRateScale</span>.kr(buffer)) }.play;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Note that the next line will execute BEFORE the action function</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s5">"numFrames before update:"</span> + b.numFrames).postln;</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p2"><br></p>
-<p class="p3">In the example above, the client sends the read command to the server app, along with a request for the necessary information to update the Buffer's instance variables. It then cues the action function to be executed when it receives the reply, and continues executing the block of code. That's why the 'Before update...' line executes first.</p>
-<p class="p16"><br></p>
-<p class="p4"><b>Recording into Buffers</b></p>
-<p class="p16"><br></p>
-<p class="p3">In addition to PlayBuf, there's a UGen called RecordBuf, which lets you record into a buffer.</p>
-<p class="p2"><br></p>
-<p class="p15"><span class="Apple-tab-span">	</span>b = <span class="s3">Buffer</span>.alloc(s, s.sampleRate * 5, 1); <span class="s4">// a 5 second 1 channel Buffer</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// record for four seconds</p>
-<p class="p15"><span class="Apple-tab-span">	</span>(</p>
-<p class="p15"><span class="Apple-tab-span">	</span>x = <span class="s3">SynthDef</span>(<span class="s5">"tutorial-RecordBuf"</span>,{ <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> noise;</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>noise = </span><span class="s3">PinkNoise</span><span class="s2">.ar(0.3);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// record some PinkNoise</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">RecordBuf</span><span class="s2">.ar(noise, bufnum); <span class="Apple-tab-span">	</span></span>// by default this loops</p>
-<p class="p15"><span class="Apple-tab-span">	</span>}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// free the record synth after a few seconds</p>
-<p class="p15"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// play it back</p>
-<p class="p15"><span class="Apple-tab-span">	</span>(</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s5">"tutorial-playback"</span>,{ <span class="s3">arg</span> out=0,bufnum=0;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> playbuf;</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>playbuf = <span class="s3">PlayBuf</span>.ar(1,bufnum);</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">FreeSelfWhenDone</span><span class="s2">.kr(playbuf); </span>// frees the synth when the PlayBuf has played through once</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, playbuf);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b]);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3">See the <a href="../../UGens/Playback and Recording/RecordBuf.html"><span class="s1">RecordBuf</span></a> help file for details on all of its options.</p>
-<p class="p16"><br></p>
-<p class="p4"><b>Accessing Data</b></p>
-<p class="p16"><br></p>
-<p class="p3">Buffer has a number of methods to allow you to get or set values in a buffer. Buffer-get and Buffer-set are straightforward to use and take an index as an argument. Multichannel buffers interleave their data, so for a two channel buffer index 0 = frame1-chan1, index 1 = frame1-chan2, index 2 = frame2-chan1, and so on. 'get' takes an action function.</p>
-<p class="p2"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">Buffer</span>.alloc(s, 8, 1);</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>b.set(7, 0.5); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// set the value at 7 to 0.5</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>b.get(7, {</span><span class="s3">|msg|</span><span class="s2"> msg.postln});<span class="Apple-tab-span">	</span></span>// get the value at 7 and post it when the reply is received</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.free;<span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">The methods 'getn' and 'setn' allow you to get and set ranges of adjacent values. 'setn' takes a starting index and an array of values to set, 'getn' takes a starting index, the number of values to get, and an action function.</p>
-<p class="p11"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">Buffer</span>.alloc(s,16);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.setn(0, [1, 2, 3]);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// set the first 3 values</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.getn(0, 3, {<span class="s3">|msg|</span> msg.postln});<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// get them</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.setn(0, <span class="s3">Array</span>.fill(b.numFrames, {1.0.rand}));<span class="Apple-tab-span">	</span><span class="s4">// fill the buffer with random values</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.getn(0, b.numFrames, {<span class="s3">|msg|</span> msg.postln});<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// get them</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p18"><br></p>
-<p class="p3">There is an upper limit on the number of values you can get or set at a time (usually 1633 when using UDP, the default). This is because of a limit on network packet size. To overcome this Buffer has two methods, 'loadCollection' and 'loadToFloatArray' which allow you to set or get large amounts of data by writing it to disk and then loading to client or server as appropriate.</p>
-<p class="p2"><br></p>
-<p class="p15"><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// make some white noise</p>
-<p class="p15"><span class="Apple-tab-span">	</span>v = <span class="s3">FloatArray</span>.fill(44100, {1.0.rand2});</p>
-<p class="p15"><span class="Apple-tab-span">	</span>b = <span class="s3">Buffer</span>.alloc(s, 44100);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><span class="Apple-tab-span">	</span>(</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// load the FloatArray into b, then play it</p>
-<p class="p15"><span class="Apple-tab-span">	</span>b.loadCollection(v, action: {<span class="s3">|buf|</span><span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { <span class="s3">PlayBuf</span>.ar(buf.numChannels, buf, <span class="s3">BufRateScale</span>.kr(buf), loop: 1)<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 0.2 }.play;</p>
-<p class="p15"><span class="Apple-tab-span">	</span>});</p>
-<p class="p15"><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// now get the FloatArray back, and compare it to v; this posts 'true'</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// the args 0, -1 mean start from the beginning and load the whole buffer</p>
-<p class="p15"><span class="Apple-tab-span">	</span>b.loadToFloatArray(0, -1, {<span class="s3">|floatArray|</span> (floatArray == v).postln });</p>
-<p class="p15"><span class="Apple-tab-span">	</span>b.free;</p>
-<p class="p2"><br></p>
-<p class="p3">A FloatArray is just a subclass of Array which can only contain floats.</p>
-<p class="p16"><br></p>
-<p class="p4"><b>Plotting and Playing</b></p>
-<p class="p16"><br></p>
-<p class="p3">Buffer has two useful convenience methods: 'plot' and 'play'.</p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// see the waveform</p>
-<p class="p19"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s3">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>b.plot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// play the contents</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// this takes one arg: loop. If false (the default) the resulting synth is</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span></span>// freed automatically</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>b.play; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// frees itself</p>
-<p class="p14"><span class="s2"><span class="Apple-tab-span">	</span>x = b.play(</span><span class="s3">true</span><span class="s2">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// loops so doesn't free</p>
-<p class="p15"><span class="Apple-tab-span">	</span>x.free; b.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Other Uses For Buffers</b></p>
-<p class="p2"><br></p>
-<p class="p3">In addition to being used for loading in sound files, buffers are also useful for any situation in which you need large and/or globally accessible data sets on the server. One example of another use for them is as a lookup table for waveshaping.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p15"><span class="Apple-tab-span">	</span>b = <span class="s3">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>b.cheby([1,0,1,1,0,1]);</p>
-<p class="p15"><span class="Apple-tab-span">	</span>(</p>
-<p class="p15"><span class="Apple-tab-span">	</span>x = play({<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Shaper</span>.ar(</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b,<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">Line</span>.kr(0,1,6)),</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p15"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p15"><span class="Apple-tab-span">	</span>});</p>
-<p class="p15"><span class="Apple-tab-span">	</span>)</p>
-<p class="p15"><span class="Apple-tab-span">	</span>x.free; b.free;<span class="s8"><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p3">The Shaper UGen performs waveshaping on an input source. The method 'cheby' fills the buffer with a series of chebyshev polynomials, which are needed for this. (Don't worry if you don't understand all this.) Buffer has many similar methods for filling a buffer with different waveforms.</p>
-<p class="p2"><br></p>
-<p class="p3">There are numerous other uses to which buffers can be put. You'll encounter them throughout the documentation.</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p20"><span class="s9"><a href="../../ServerArchitecture/Buffer.html">Buffer</a></span><span class="s2"><b> </b><a href="../../UGens/Playback and Recording/PlayBuf.html"><span class="s8">PlayBuf</span></a><b> </b><a href="../../UGens/Playback and Recording/RecordBuf.html"><span class="s8">RecordBuf</span></a><b> </b><a href="../../ServerArchitecture/SynthDef.html"><span class="s8">SynthDef</span></a><b> </b><a href="../../UGens/Info/BufRateScale.html"><span class="s8">BufRateScale</span></a><b> </b><a href="../../UGens/Oscillators/Shaper.html"><span class="s8">Shaper</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s1">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Busses.html b/Help/Tutorials/Getting-Started/Busses.html
deleted file mode 100644
index 4a65a7a..0000000
--- a/Help/Tutorials/Getting-Started/Busses.html
+++ /dev/null
@@ -1,310 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco; color: #bf0000}
-p.p14 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0016e6}
-span.s1 {color: #1031f7}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #007300}
-span.s6 {color: #0018f7}
-span.s7 {font: 12.0px Helvetica}
-span.s8 {font: 12.0px Helvetica; color: #000000}
-span.s9 {text-decoration: underline}
-span.s10 {font: 12.0px Helvetica; color: #0016e6}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Busses</b></p>
-<p class="p2"><br></p>
-<p class="p3">Now a little bit more about busses on the server. Busses are named after the busses or sends in analog mixing desks, and they serve a similar purpose: Routing signals from one place to another. In SC this means to or from the audio hardware, or between different synths. They come in two types: audio rate and control rate. As you've probably guessed, the former routes audio rate signals and the latter routes control rate signals.</p>
-<p class="p2"><br></p>
-<p class="p3">The control rate busses are fairly simple to understand, each one has an index number, starting from 0.</p>
-<p class="p2"><br></p>
-<p class="p3">Audio rate busses are similar, but require slightly more explanation. A server app will have a certain number of output and input channels. These correspond to the first audio busses, with outputs coming before inputs.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">For example, if we imagine a server with two output channels and two input channels (i.e. stereo in and out) then the first two audio busses (index 0 and index 1) will be the outputs, and the two immediately following those (index 2 and index 3) will be the inputs. Writing audio out to one of the output busses will result in sound being played from your speakers, and reading audio in from the input busses will get sound into SC for things like recording and processing (providing you have a source such as a microphone connected to your computer's or audio interface's inputs).</p>
-<p class="p2"><br></p>
-<p class="p3">The remaining audio busses will be 'private'. These are used simply to send audio and control signals between various synths. Sending audio to a private bus will not result in sound in your speakers unless you reroute it later to one of the output busses. These 'private' busses are often used for things like an 'effects send', i.e. something that requires further processing before it's output.</p>
-<p class="p2"><br></p>
-<p class="p3">The number of control and audio busses available, as well as the number of input and output channels is set at the time the server app is booted.(See <a href="../../ServerArchitecture/ServerOptions.html"><span class="s1">ServerOptions</span></a> for information on how to set the number of input and output channels, and busses.)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Writing to or Reading from Busses</b></p>
-<p class="p2"><br></p>
-<p class="p3">We've already seen Out.ar, which allows you to write (i.e. play out) audio to a bus. Recall that it has two arguments, an index, and an output, which can be an array of UGens (i.e. a multichannel output) or a single UGen.</p>
-<p class="p2"><br></p>
-<p class="p3">To read in from a bus you use another UGen: In. In's 'ar' method also takes two arguments: An index, and the number of channels to read in. If the number of channels is greater than one, than In's output will be an Array. Execute the following examples, and watch the post window:</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">In</span><span class="s2">.ar(0, 1); </span>// this will return 'an OutputProxy'</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">In</span><span class="s2">.ar(0, 4); </span>// this will return an Array of 4 OutputProxies</p>
-<p class="p2"><br></p>
-<p class="p3">An OutputProxy is a special kind of UGen that acts as a placeholder for some signal that will be present when the synth is running. You'll probably never need to deal with one directly, so don't worry about them, just understand what they are so that you'll recognise them when you see them in the post window and elsewhere.</p>
-<p class="p2"><br></p>
-<p class="p3">In and Out also have 'kr' methods, which will read and write control rate signals to and from control rate busses. Note that Out.kr will convert an audio rate signal to control rate (this is called 'downsampling'), but that the reverse is not true: Out.ar needs an audio rate signal as its second arg.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// This throws an error. Can't write a control rate signal to an audio rate bus</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{<span class="s3">Out</span>.ar(0, <span class="s3">SinOsc</span>.kr)}.play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// This will work as the audio rate signal is downsampled to control rate</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Server</span>.internal.boot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{<span class="s3">Out</span>.kr(0, <span class="s3">SinOsc</span>.ar)}.scope;<span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p3">(This limitation is not universal amongst audio rate UGens however, and most will accept control rate signals for some or all of their arguments. Some will even convert control rate inputs to audio rate if needed, filling in the extra values through a process called interpolation.)</p>
-<p class="p2"><br></p>
-<p class="p3">You'll note that when multiple Synths write to the same bus, there output is summed, or in other words, mixed.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"tutorial-args"</span>, { <span class="s3">arg</span> freq = 440, out = 0;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar(freq, 0, 0.2));<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// both write to bus 1, and their output is mixed</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>x = </span><span class="s3">Synth</span><span class="s2">(</span>"tutorial-args"<span class="s2">, [</span>"out"<span class="s2">, 1, </span>"freq"<span class="s2">, 660]);</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span>y = </span><span class="s3">Synth</span><span class="s2">(</span>"tutorial-args"<span class="s2">, [</span>"out"<span class="s2">, 1, </span>"freq"<span class="s2">, 770]);</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creating a Bus Object</b></p>
-<p class="p2"><br></p>
-<p class="p3">There is a handy client-side object to represent server busses: Bus. Given that all you need is an In or Out Ugen and an index to write to a bus, you might wonder what one would need a full-fledged Bus object for. Well, much of the time you don't, particularly if all you're doing is playing audio in and out. But Bus does provide some useful functionality. We'll get to that in a second, but first lets look at how to make one.</p>
-<p class="p2"><br></p>
-<p class="p3">Just as many UGens have ar and kr methods, Bus has two commonly used creation methods: Bus-audio and Bus-control. These each take two arguments: a Server object, and the number of channels.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s3">Bus</span><span class="s2">.control(s, 2); </span>// Get a two channel control Bus</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>c = </span><span class="s3">Bus</span><span class="s2">.audio(s); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Get a one channel private audio Bus (one is the default)</p>
-<p class="p2"><br></p>
-<p class="p3">You may be wondering what a 'two channel' bus is, since we haven't mentioned these before. You should recall that when Out has an Array as its second argument it will write the channels of the Array to consecutive busses. Recall this example from <a href="SynthDefs and Synths.html"><span class="s1">SynthDefs and Synths</span></a>:</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">SynthDef</span><span class="s2">.new(</span>"tutorial-SinOsc-stereo"<span class="s2">, { </span><span class="s3">var</span><span class="s2"> outArray;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outArray = [<span class="s3">SinOsc</span>.ar(440, 0, 0.2), <span class="s3">SinOsc</span>.ar(442, 0, 0.2)];</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Out</span><span class="s2">.ar(0, outArray); </span>// writes to busses 0 and 1<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The truth is that there aren't multichannel busses per se, but Bus objects are able to represent a series of busses with consecutive indices. The <i>encapsulate</i> several adjacent sever-side busses into a single Bus object, allowing you to treat them as a group. This turns out to be rather handy.</p>
-<p class="p2"><br></p>
-<p class="p3">When you're working with so-called 'private' busses (i.e. anything besides the input and output channels; all control busses are 'private') you generally want to make sure that that bus is only used for exactly what you want. The point after all is to keep things separate. You could do this by carefully considering which indices to use, but Bus allows for this to be done automatically. Each Server object has a bus allocator, and when you make a Bus object, it reserves those private indices, and will not give them out again until freed. You can find out the index of a Bus by using its 'index' method. Normally however, you will not need to store this value, as instances of Bus can be passed directly as UGen inputs or Synth args.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>s.reboot; </span>// this will restart the server app and thus reset the bus allocators</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s3">Bus</span><span class="s2">.control(s, 2);<span class="Apple-tab-span">	</span></span>// a 2 channel control Bus</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b.index; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this should be zero</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b.numChannels <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Bus also has a numChannels method</p>
-<p class="p7"><span class="Apple-tab-span">	</span>c = <span class="s3">Bus</span>.control(s);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>c.numChannels;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the default number of channels is 1</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>c.index;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// note that this is 2; b uses 0 and 1</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3">So by using Bus objects to represent adjacent busses, you can guarantee that there won't be a conflict. Since the indices are allocated dyamically, you can change the number of channels of a Bus in your code (for instance because you now need to route a multichannel signal), and you're still guaranteed to be safe. If you were simply 'hard allocating' busses by using index numbers, you might have to adjust them all to make room for an extra adjacent channel, since the indices need to be consecutive! This is a good example of the power of objects: By encapsulating things like index allocation, and providing a <i>layer of abstraction</i>, they can make your code more flexible.</p>
-<p class="p2"><br></p>
-<p class="p3">You can free up the indices used by a Bus by calling its 'free' method. This allows them to be reallocated.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>b = <span class="s3">Bus</span>.control(s, 2);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b.free; </span>// free the indices. You can't use this Bus object after that<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Note that this doesn't actually make the bus on the server go away, it's still there. 'free' just lets the allocator know that you're done using this bus for the moment, and it can freely reallocate its index.</p>
-<p class="p2"><br></p>
-<p class="p3">Now here's another advantage when working with private audio rate busses. As we said above, the first few busses are the output and input channels. So if we want to use the first private bus, all we need to do is add those together, right? Consider our server app with 2 output and 2 input channels. The first private audio bus is index 4. (0, 1, 2, 3 ... 4!) So we write our code, and give the appropriate Out UGen 4 as its index arg.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">But what happens if we later decide to change the number of output channels to 6? Now everything that was written to our private bus is going out one of the output channels! A Server's audio bus allocator will only assign private indices, so if you change the number of input or output channels it will take this into account when you execute your code. Again this makes your code more flexible.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Busses in Action</b></p>
-<p class="p2"><br></p>
-<p class="p3">So here are two examples using busses. The first is with a control rate bus.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"tutorial-Infreq"</span>, { <span class="s3">arg</span> bus, freqOffset = 0;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will add freqOffset to whatever is read in from the bus</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, <span class="s3">SinOsc</span>.ar(<span class="s3">In</span>.kr(bus) + freqOffset, 0, 0.5));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"tutorial-Outfreq"</span>, { <span class="s3">arg</span> freq = 400, bus;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.kr(bus, <span class="s3">SinOsc</span>.kr(1, 0, freq/40, freq));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>b = <span class="s3">Bus</span>.control(s,1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x = <span class="s3">Synth</span>.new(<span class="s4">"tutorial-Outfreq"</span>, [<span class="s5">\bus</span>, b]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y = <span class="s3">Synth</span>.after(x, <span class="s4">"tutorial-Infreq"</span>, [<span class="s5">\bus</span>, b]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z = <span class="s3">Synth</span>.after(x, <span class="s4">"tutorial-Infreq"</span>, [<span class="s5">\bus</span>, b, <span class="s5">\freqOffset</span>, 200]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x.free; y.free; z.free; b.free;</p>
-<p class="p2"><br></p>
-<p class="p3">Both y and z read from the same bus, the latter just modifies the frequency control signal by adding a constant value of 200 to it. This is more efficient than having two separate control oscillators to control frequency. This sort of strategy of connecting together synths, each of which does different things in a larger process, can be very effective in SC.</p>
-<p class="p2"><br></p>
-<p class="p3">Now an example with an audio bus. This is the most complicated example we've seen so far, but should give you some idea of how to start putting all the things we've learned together. The code below will use two Synths as sources, one creating pulses of PinkNoise (a kind of Noise which has less energy at high frequencies than at low), and another creating pulses of Sine Waves. The pulses are created using the UGens <a href="../../UGens/Oscillators/Impulse.html"><span class="s1">Impulse</span></a><b> </b>and <a href="../../UGens/Synth control/Envelopes/Decay2.html"><span class="s6">Decay2</span></a>. These are then reverberated using a chain of <a href="../../UGens/Delays/AllpassC.html"><span class="s1">AllpassC</span></a>, which is a kind of delay.</p>
-<p class="p2"><br></p>
-<p class="p3">Note the construction 16.do({ ... }), below. This makes the chain by evaluating the function 16 times. This is a very powerful and flexible technique, as by simply changing the number, I can change the number of evaluations. See <a href="../../Math/Integer.html"><span class="s1">Integer</span></a><b> </b>for more info on Integer-do.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// the arg direct will control the proportion of direct to processed signal</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"tutorial-DecayPink"</span>, { <span class="s3">arg</span> outBus = 0, effectBus, direct = 0.5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> source;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Decaying pulses of PinkNoise. We'll add reverb later.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(1, 0.25), 0.01, 0.2, <span class="s3">PinkNoise</span>.ar);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will be our main output</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(outBus, source * direct);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will be our effects output</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(effectBus, source * (1 - direct));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"tutorial-DecaySin"</span>, { <span class="s3">arg</span> outBus = 0, effectBus, direct = 0.5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> source;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Decaying pulses of a modulating Sine wave. We'll add reverb later.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(0.3, 0.25), 0.3, 1, <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(0.2, 0, 110, 440)));</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will be our main output</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(outBus, source * direct);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will be our effects output</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(effectBus, source * (1 - direct));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"tutorial-Reverb"</span>, { <span class="s3">arg</span> outBus = 0, inBus;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> input;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input = <span class="s3">In</span>.ar(inBus, 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// a low rent reverb</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// aNumber.do will evaluate it's function argument a corresponding number of times</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// {}.dup(n) will evaluate the function n times, and return an Array of the results</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// The default for n is 2, so this makes a stereo reverb</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>16.do({ input = <span class="s3">AllpassC</span>.ar(input, 0.04, { <span class="s3">Rand</span>(0.001,0.04) }.dup, 3)});</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(outBus, input);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s3">Bus</span><span class="s2">.audio(s,1); </span>// this will be our effects bus</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x = <span class="s3">Synth</span>.new(<span class="s4">"tutorial-Reverb"</span>, [<span class="s5">\inBus</span>, b]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y = <span class="s3">Synth</span>.before(x, <span class="s4">"tutorial-DecayPink"</span>, [<span class="s5">\effectBus</span>, b]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z = <span class="s3">Synth</span>.before(x, <span class="s4">"tutorial-DecaySin"</span>, [<span class="s5">\effectBus</span>, b, <span class="s5">\outBus</span>, 1]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// Change the balance of wet to dry</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>y.set(</span><span class="s5">\direct</span><span class="s2">, 1); </span>// only direct PinkNoise</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>z.set(</span><span class="s5">\direct</span><span class="s2">, 1); </span>// only direct Sine wave</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>y.set(</span><span class="s5">\direct</span><span class="s2">, 0); </span>// only reverberated PinkNoise</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>z.set(</span><span class="s5">\direct</span><span class="s2">, 0); </span>// only reverberated Sine wave</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x.free; y.free; z.free; b.free;</p>
-<p class="p10"><br></p>
-<p class="p3">Note that we could easily have many more source synths being processed by the single reverb synth. If we'd built the reverb into the source synths we'd be duplicating effort. But by using a private bus, we're able to be more efficient.</p>
-<p class="p10"><br></p>
-<p class="p4"><b>More Fun with Control Busses</b></p>
-<p class="p2"><br></p>
-<p class="p3">There are some other powerful things that you can do with control rate busses. For instance, you can map any arg in a running synth to read from a control bus. This means you don't need an In UGen. You can also write constant values to control busses using Bus' 'set' method, and poll values using its 'get' method.<span class="Apple-converted-space"> </span></p>
-<p class="p11"><br></p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// make two control rate busses and set their values to 880 and 884.<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">Bus</span>.control(s, 1); b.set(880);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c = <span class="s3">Bus</span>.control(s, 1);<span class="Apple-tab-span">	</span>c.set(884);</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// and make a synth with two frequency arguments</p>
-<p class="p12"><span class="Apple-tab-span">	</span>x = <span class="s3">SynthDef</span>(<span class="s4">"tutorial-map"</span>, { <span class="s3">arg</span> freq1 = 440, freq2 = 440;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, <span class="s3">SinOsc</span>.ar([freq1, freq2], 0, 0.1));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>}).play(s);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// Now map freq1 and freq2 to read from the two busses</p>
-<p class="p12"><span class="Apple-tab-span">	</span>x.map(<span class="s5">\freq1</span>, b, <span class="s5">\freq2</span>, c);</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// Now make a Synth to write to the one of the busses</p>
-<p class="p12"><span class="Apple-tab-span">	</span>y = {<span class="s3">Out</span>.kr(b, <span class="s3">SinOsc</span>.kr(1, 0, 50, 880))}.play(addAction: <span class="s5">\addToHead</span>);</p>
-<p class="p14"><br></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// free y, and b holds its last value</p>
-<p class="p12"><span class="Apple-tab-span">	</span>y.free;</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// use Bus-get to see what the value is. Watch the post window</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.get({ <span class="s3">arg</span> val; val.postln; f = val; });</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// set the freq2, this 'unmaps' it from c</p>
-<p class="p12"><span class="Apple-tab-span">	</span>x.set(<span class="s5">\freq2</span>, f / 2);</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// freq2 is no longer mapped, so setting c to a different value has no effect</p>
-<p class="p12"><span class="Apple-tab-span">	</span>c.set(200);</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>x.free; b.free; c.free;</p>
-<p class="p2"><br></p>
-<p class="p3">Note that unlike audio rate busses, control rate busses hold their last value until something new is written.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Also note that Bus-get takes a Function (called an action function) as an argument. This is because it takes a small amount of time for the server to get the reply and send it back. The function, which is passed the value (or Array of values in the case of a multichannel bus) as an argument, allows you to do something with the value once its come back.</p>
-<p class="p2"><br></p>
-<p class="p3">This concept of things taking a small amount of time to respond (usually called <i>latency</i>) is quite important to understand. There are a number of other methods in SC which function this way, and it can cause you problems if you're not careful. To illustrate this consider the example below.</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// make a Bus object and set its values<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>b = <span class="s3">Bus</span>.control(s, 1); b.set(880);</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// execute this altogether</p>
-<p class="p12"><span class="Apple-tab-span">	</span>(</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span>f = </span><span class="s3">nil</span><span class="s2">; </span>// just to be sure</p>
-<p class="p12"><span class="Apple-tab-span">	</span>b.get({ <span class="s3">arg</span> val; f = val; });</p>
-<p class="p12"><span class="Apple-tab-span">	</span>f.postln;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>)</p>
-<p class="p14"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span>// f equals nil, but try it again and it's as we expected!</p>
-<p class="p12"><span class="Apple-tab-span">	</span>f.postln;</p>
-<p class="p2"><br></p>
-<p class="p3">So why was f nil the first time but not the second time? The part of the language app which executes your code (called the <i>interpreter</i>), does what you tell it, as fast as it can, when you tell it to. So in the block of code between the parentheses above it sends the 'get' message to the server, schedules the Function to execute when a reply is received, and then moves on to posting f. Since it hasn't received the reply yet f is still nil when it's posted the first time.</p>
-<p class="p2"><br></p>
-<p class="p3">It only takes a tiny amount of time for the server to send a reply, so by the time we get around to executing the last line of code f has been set to 880, as we expected. In the previous example this wasn't a problem, as we were only executing a line at a time. But there will be cases where you will need to execute things as a block, and the action function technique is very useful for that.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Getting it all in the Right Order</b></p>
-<p class="p2"><br></p>
-<p class="p3">In the examples above, you may have wondered about things like Synth.after, and addAction: \addToHead. During each cycle (the period in which a block of samples is calculated) the server calculates things in a particular order, according to its list of running synths.</p>
-<p class="p2"><br></p>
-<p class="p3">It starts with the first synth in its list, and calculates a block of samples for its first UGen. It then takes that and calculates a block of samples for each of its remaining UGens in turn (any of which may take the output of an earlier UGen as an input.) This synth's output is written to a bus or busses, as the case may be. The server then moves on to the next synth in its list, and the process repeats, until all running synths have calculated a block of samples. At this point the server can move on to the next cycle.</p>
-<p class="p2"><br></p>
-<p class="p3">The important thing to understand is that <i>as a general rule</i>, when you are connecting synths together using busses it is important that synths which write signals to busses are earlier in the server's order than synths which read those signals from those busses. For instance in the audio bus example above it was important that the 'reverb' synth is calculated <i>after</i> the noise and sine wave synths that it processes.</p>
-<p class="p2"><br></p>
-<p class="p3">This is a complicated topic, and there are some exceptions to this, but you should be aware that ordering is crucial when interconnecting synths. The file <a href="../../ServerArchitecture/Order-of-execution.html"><span class="s1">Order-of-execution</span></a><b> </b>covers this topic in greater detail.</p>
-<p class="p2"><br></p>
-<p class="p3">Synth-new has two arguments which allow you to specify where in the order a synth is added. The first is a <i>target</i>, and the second is an <i>addAction</i>. The latter specifies the new synth's position in relation to the target.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>x = <span class="s3">Synth</span>(<span class="s4">"default"</span>, [<span class="s5">\freq</span>, 300]);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// add a second synth immediately after x</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y = <span class="s3">Synth</span>(<span class="s4">"default"</span>, [<span class="s5">\freq</span>, 450], x, <span class="s5">\addAfter</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>x.free; y.free;</p>
-<p class="p2"><br></p>
-<p class="p3">A target can be another Synth (or some other things; more on that soon), and an addAction is a symbol. See <a href="../../ServerArchitecture/Synth.html"><span class="s1">Synth</span></a> for a complete list of possible addActions.</p>
-<p class="p2"><br></p>
-<p class="p3">Methods like Synth-after are simply convenient ways of doing the same thing, the difference being that they take a target as their first argument.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span>// These two lines of code are equivalent</p>
-<p class="p7"><span class="Apple-tab-span">	</span>y = <span class="s3">Synth</span>.new(<span class="s4">"default"</span>, [<span class="s5">\freq</span>, 450], x, <span class="s5">\addAfter</span>);</p>
-<p class="p7"><span class="s7"><span class="Apple-tab-span">	</span></span>y = <span class="s3">Synth</span>.after(x, <span class="s4">"default"</span>, [<span class="s5">\freq</span>, 450]);</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p15"><span class="s9"><a href="../../ServerArchitecture/Bus.html">Bus</a></span><span class="s2"><b> </b><a href="../../UGens/InOut/In.html"><span class="s10">In</span></a><b> </b><a href="../../UGens/Multichannel/OutputProxy.html"><span class="s10">OutputProxy</span></a><b> </b><a href="../../ServerArchitecture/Order-of-execution.html"><span class="s10">Order-of-execution</span></a><b> </b><a href="../../ServerArchitecture/Synth.html"><span class="s10">Synth</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Suggested Exercise:</b></p>
-<p class="p10"><br></p>
-<p class="p3">Experiment with interconnecting different synths using audio and control busses. When doing so be mindful of their ordering on the server.</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Groups.html"><span class="s1">Groups</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s1">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/First Steps.html b/Help/Tutorials/Getting-Started/First Steps.html
deleted file mode 100644
index 97c4219..0000000
--- a/Help/Tutorials/Getting-Started/First Steps.html	
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {color: #000000}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {font: 12.0px Helvetica}
-span.s5 {font: 9.0px Monaco; color: #606060}
-span.s6 {color: #bf0000}
-span.s7 {text-decoration: underline}
-span.s8 {font: 12.0px Helvetica; color: #0000bf}
-span.s9 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>First Steps</b></p>
-<p class="p2"><br></p>
-
-<p class="p3">This document is OSX (SCapp) specific in key commands, though the principles extend to all platforms. See the helpfile <a href="../Other Topics/Shortcuts.html">Shortcuts</a> for key commands in other editors.</p>
-<p class="p2"><br></p>
-
-<p class="p3"><b>Hello World, I'm SuperCollider</b></p>
-<p class="p2"><br></p>
-<p class="p4">It is traditional when learning a new programming language to start with a simple program called 'Hello World'. This just makes the program print the text 'Hello World!' to well, wherever it prints text. In SC that's a place called the post window. The post window is the one that opened up when you first started SC, and a bunch of stuff was printed there which looks something like this:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>init_OSC</p>
-<p class="p5"><span class="Apple-tab-span">	</span>compiling class library..</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>NumPrimitives = 587</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>compiling dir: '/Applications/SC3/SCClassLibrary'</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pass 1 done</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Method Table Size 3764776 bytes</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Number of Method Selectors 3184</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Number of Classes 1814</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Number of Symbols 7595</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Byte Code Size 180973</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>compiled 296 files in 1.34 seconds<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>compile done</p>
-<p class="p5"><span class="Apple-tab-span">	</span>RESULT = 256</p>
-<p class="p5"><span class="Apple-tab-span">	</span>Class tree inited in 0.14 seconds</p>
-<p class="p2"><br></p>
-<p class="p4">Don't worry too much about what all that means just now, just keep in mind that this is where SC will send you information. It's also where we'll get the result of our Hello World program, which you can see below:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>"Hello World!"<span class="s1">.postln;</span></p>
-<p class="p2"><br></p>
-<p class="p4">To execute it, simply click to place the cursor on the same line as the code and then press the enter key. Note that the 'enter' key is not the same as the 'return' key. The 'enter' key is the one that is on the number pad. On Mac laptops there is usually a separate enter key down at bottom of the keyboard towards the right, or you can hold down the 'fn' or function key, and press 'return'.<span class="Apple-converted-space">  </span>If you don't have an enter key, then you can use ctrl-Return, Ctrl-c,<span class="Apple-converted-space">  </span>fn-Return( on Some Macs), or Shift-Return. Try this now.</p>
-<p class="p2"><br></p>
-<p class="p4">If all went well, you should see this in the post window.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Hello World!</p>
-<p class="p5"><span class="Apple-tab-span">	</span>Hello World!</p>
-<p class="p2"><br></p>
-<p class="p4">Now let's take a closer look at the code. The first bit, <span class="s2">"Hello World!"</span>, is a kind of <i>Object</i>, called a String. An object is basically just a way of representing something in the computer, for instance a bit of text, or an oscillator, that allows you to control it and send messages to it. More about that later, but for now just understand that a String is a way of representing a bit of text.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">The second bit, <span class="s2">.postln;</span>,<span class="Apple-converted-space">  </span>says 'print me (or a meaningful description of me) to the post window.' Remember postln, it's your friend. You can apply it to almost anything in SC and get something meaningful back. This can be very handy when tracking down bugs in your code.</p>
-<p class="p2"><br></p>
-<p class="p4">Why did it print twice? Well, when you execute code in SC, it always posts the last thing executed. So in this case we didn't really need the <span class="s2">postln </span>bit. But in the following example we would. Select both lines of text by clicking and dragging over them, and then press enter.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>"Hello World!"<span class="s1">.postln;</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>"Hello SC!"<span class="s1">.postln;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4">The first line, 'Hello World' would not have printed if we didn't have the explicit postln. Note also that each line of code ends with a semi-colon. This is how you separate lines of code in SC. If we didn't have a semi-colon between the two lines we would get an error.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">In general when you are meant to execute several lines of code at the same time they will be surrounded by parentheses, as in the example below. This is convenient as it allows you to select the whole block of code by double clicking just inside one of the parentheses. Try it out on the example below.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>"Call me,"<span class="s1">.postln;</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>"Ishmael."<span class="s1">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4">When code is not surrounded by parentheses it is generally intended to be executed one line at a time.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4">Note that each of the lines within the block of code ends with a semi-colon. This is very important when executing multiple lines of code, as it's how SC knows where to separate commands. Without a semi-colon above, you would get an error posted.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>"Call me?"<span class="s1">.postln</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>"Ishmael."<span class="s1">.postln;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p4">Executing the code above results in a 'Parse Error'. With an error of this kind, the dot <span class="s2"> </span>in the error message shows you where SC ran into trouble. Here it happens just after <span class="s5">"Ishmael.".</span></p>
-<p class="p2"><br></p>
-<p class="p5">ERROR: Parse error</p>
-<p class="p5"><span class="Apple-converted-space">   </span>in file 'selected text'</p>
-<p class="p5"><span class="Apple-converted-space">   </span>line 3 char 11 :</p>
-<p class="p5"><span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span>"Ishmael.".postln;</p>
-<p class="p2"><br></p>
-<p class="p4">Usually the problem actually occurs a little before that, so that's where you should look. In this case of course, it's the lack of a semi-colon at the end of the previous line.</p>
-<p class="p2"><br></p>
-<p class="p4">Using semi-colons it's possible to have more than one line of code in the same line of text. This can be handy for execution.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>"Call me "<span class="s1">.post; </span>"Ishmael?"<span class="s1">.postln;</span></p>
-<p class="p2"><br></p>
-<p class="p4">A couple of more notes about the post window. It's very useful to be able to see it, but sometimes it can get hidden behind other windows. You can bring it to the front at any time by holding down the Command key, and pressing \ . The Command key is the one with the apple symbol on it.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">By convention this kind of key sequence is written Cmd<span class="s6"> </span>- \</p>
-<p class="p2"><br></p>
-<p class="p4">As well, sometimes the post window becomes full of stuff and hard to read. You can clear it at any time by pressing Cmd-shift-k (hold down the command key and the shift key, and then press k).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>The World According to SuperCollider</b></p>
-<p class="p2"><br></p>
-<p class="p4">SuperCollider is actually two programs: The language or 'client' app, which is what you're looking at now, and the server, which does the actual synthesis and calculation of audio. The former is a graphical application with menus, document windows, nice GUI features and a sophisticated programming language; and the latter is a mean, lean, efficient UNIX command line application (meaning it runs without a nice modern GUI).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">The two communicate by a protocol called Open Sound Control (OSC), over either UDP or TCP, which are network protocols also used on the internet. Don't think from this that the two applications must run on different computers (they can, which can have definite performance advantages), or that they need to be connected to the internet (although it is possible to have clients and servers in diffferent parts of the world communicating!!). Most of the time they will be running on the same machine, and the 'networking' aspect of things will be relatively transparent for you.</p>
-<p class="p2"><br></p>
-<p class="p4">You can only communicate with the server using OSC messages over the network, but luckily the language app has lots of powerful objects which represent things on the server and allow you to control them easily and elegantly. Understanding how exactly that works is crucial to mastering SC, so we'll be talking about that in some depth.</p>
-<p class="p2"><br></p>
-<p class="p4">But first let's have a little fun, and make some sound...</p>
-<p class="p2"><br></p>
-<p class="p4">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s7"><a href="../How-to-Use-the-Interpreter.html">How-to-Use-the-Interpreter</a></span><span class="s1"><b> </b><a href="../../Language/Literals.html"><span class="s4">Literals</span></a><b> </b><a href="../../Collections/String.html"><span class="s4">String</span></a><b> </b><a href="../../ServerArchitecture/ClientVsServer.html"><span class="s8">ClientVsServer</span></a><b> </b><a href="../../ServerArchitecture/Server-Architecture.html"><span class="s4">Server-Architecture</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Suggested Exercise:</b></p>
-<p class="p9"><br></p>
-<p class="p4">Open a new window by pressing Cmd-n or selecting 'New' from the File menu.Copy some of the posting code from the examples above and paste it into the new document. (The standard Mac Cmd-c and Cmd-v work for copy and paste, or use the Edit menu.) <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">SC will let you edit the help files and documentation, so it's always a good idea to copy text over before changing it so as to avoid accidentally saving altered files!<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Experiment with altering the text between the quotes to print different things to the post window. Do this with both blocks of text wrapped in parentheses, and single lines.</p>
-<p class="p2"><br></p>
-<p class="p4">____________________</p>
-<p class="p2"><br></p>
-<p class="p4">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p4">Click here to go on to the next section: <a href="Start Your Engines.html"><span class="s9">Start Your Engines</span></a></p>
-<p class="p2"><br></p>
-<p class="p4">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s9">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Functions and Other Functionality.html b/Help/Tutorials/Getting-Started/Functions and Other Functionality.html
deleted file mode 100644
index f68287c..0000000
--- a/Help/Tutorials/Getting-Started/Functions and Other Functionality.html	
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #000000}
-span.s5 {font: 9.0px Monaco}
-span.s6 {color: #606060}
-span.s7 {font: 9.0px Monaco; color: #a71e12}
-span.s8 {font: 9.0px Monaco; color: #0019b7}
-span.s9 {color: #a71e12}
-span.s10 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Functions and Other Functionality</b></p>
-<p class="p2"><br></p>
-<p class="p3">The easiest way to get sound from SC is to use a Function. Below is a simple example of this. Execute this (after making sure the server is booted), and when you're sick of it, press Cmd - . (that's hold down the command key and press the period or fullstop key) to stop the sound. This will always stop all sound in SC. You'll be using it a lot, so commit it to memory.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>{ [<span class="s2">SinOsc</span>.ar(440, 0, 0.2), <span class="s2">SinOsc</span>.ar(442, 0, 0.2)] }.play;</p>
-<p class="p2"><br></p>
-<p class="p3">Not too inspiring? Don't worry, we're just getting started, and this is just a simple example to demonstrate Functions and sound. We'll take it apart a bit below.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Before we get to doing that though, let's learn a little about Functions in general.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">A Function is just a reusable bit of code. You define a Function by enclosing code in 'curly brackets': { }. Here's an example:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">f = { </span>"Function evaluated"<span class="s4">.postln; };</span></p>
-<p class="p2"><br></p>
-<p class="p3">The stuff within the curly brackets is what will get executed each time you reuse, or evaluate the Function. Note that this is written like an equation, i.e. <span class="s5">f = {...}</span>. This is not an equation in the mathematical sense, it's what's called an assignment. Basically it allows me to name the Function I've created, by storing it in a variable called '<span class="s5">f</span>'. A variable is just a name representing a slot in which we can store things, such as a Function, a number, a list, etc. Execute the following lines one at a time and watch the post window:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">f = { </span>"Function evaluated"<span class="s4">.postln; };</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>f;</p>
-<p class="p2"><br></p>
-<p class="p3">Both times it should say '<span class="s5">a Function</span>'. Now whenever we want to refer to our Function we can just use the letter f. That's in fact what makes it reusable! Otherwise we'd need to type the Function in every time.</p>
-<p class="p2"><br></p>
-<p class="p3">So how do we reuse it? Execute the following lines one at a time and watch the post window:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span>f = { </span>"Function evaluated"<span class="s4">.postln; };</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value;</p>
-<p class="p2"><br></p>
-<p class="p3">Our Function is an object, (i.e a thing that does something or represents something), which we have defined and stored in the variable '<span class="s5">f</span>'. The bit of code that says '<span class="s5">.value</span>' says evaluate this function now. This is an example of sending a message to an object. This follows the syntax someObject.someMessage. The dot must go in between.</p>
-<p class="p2"><br></p>
-<p class="p3">Now this next bit is a little bit tricky. In a given object, each <i>message</i> calls (calls means executes) a particular <i>method</i>. Different types of objects may have methods with the same name, and thus respond to the same message in different ways. Whoah, get that? Read it again slowly, as this is pretty important:</p>
-<p class="p2"><br></p>
-<p class="p3"><i>Different types of objects may have methods with the same name, and thus respond to the same message in different ways.</i></p>
-<p class="p2"><br></p>
-<p class="p3">What's interesting about this is that the actual methods may differ in what they do, but as long as they implement<span class="Apple-converted-space">  </span>a method with that name, they become interchangeable in your code.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">A good example is 'value'. All objects in SC respond to the message 'value'. When you 'call' a method, it always 'returns' something, such as a value or a result. When you call the method 'value' on a Function it will evaluate and return the result of its last line of code. The example below will return the number 5.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>f = { <span class="s6">"Evaluating..."</span>.postln; 2 + 3; };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Often methods simply return the object itself. This is the case with most objects and the message 'value'. The example below demonstrates this. (Everything to the right of the <span class="s7">//</span> is a 'comment', which means that SC just ignores it. Comments are a good idea to make your code clearer.)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">f = 3;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Here I make f equal to a number</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Post window says: 3, i.e it returns itself</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Still says 3</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f = { 3.0.rand; };<span class="Apple-tab-span">	</span></span>// Here it's a Function.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 3.0.rand means return a random value from 0 to 3.0 exclusive.</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// something different</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// something different</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This means that by using the 'value' method Functions and other objects can be interchangeable in your code. This is an example of <i>polymorphism</i>, which is one of the powerful features of what's called Object Oriented Programming. Polymorphism just means that different objects are interchangeable (at least providing they return something sensible for what you're doing) if they respond to the same message. Object Oriented Programming (or OOP, as it's called for short) just means programming with objects. Simple, yes? Here's another short example showing this in action:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f = { </span><span class="s2">arg</span><span class="s4"> a; a.value + 3 }; </span>// call 'value' on the arg; polymorphism awaits!</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value(3);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 3.value = 3, so this returns 3 + 3 = 6</p>
-<p class="p4"><span class="Apple-tab-span">	</span>g = { 3.0.rand; };</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value(g);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// here the arg is a Function. Cool, huh?</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value(g);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// try it again, different result</p>
-<p class="p2"><br></p>
-<p class="p3">Start to see how this could be useful?</p>
-<p class="p2"><br></p>
-<p class="p3">Functions can also have what are called arguments. These are values which are passed into the Function when it is evaluated. The example below demonstrates how this works. See if you can guess what the result will be before executing it.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f = { <span class="s2">arg</span> a, b;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a - b;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>};</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value(5, 3);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">Arguments are declared at the beginning of the Function, using the keyword '<span class="s8">arg</span>'. You can then refer to them just like variables. When you call value on a Function, you can pass in arguments, in order, by putting them in parentheses: <span class="s5">someFunc.value(arg1, arg2)</span>. This is the same with any method that takes arguments, not just value.</p>
-<p class="p2"><br></p>
-<p class="p3">You can specify different orders by using what are called keyword arguments:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>f = { <span class="s2">arg</span> a, b; a / b; }; <span class="Apple-tab-span">	</span><span class="s9">// '/' means divide</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value(10, 2); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// regular style</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value(b: 2, a: 10); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// keyword style</span></p>
-<p class="p2"><br></p>
-<p class="p3">You can mix regular and keyword style if you like, but the regular args must come first:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>f = { <span class="s2">arg</span> a, b, c, d; (a + b) * c - d };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value(2, c:3, b:4, d: 1); <span class="s9">// 2 + 4 * 3 - 1</span></p>
-<p class="p2"><br></p>
-<p class="p3">(Note that SC has no operator precedence, i.e. math operations are done in order, and division and multiplication are not done first. To force an order use parentheses. e.g. 4 + (2* 8) )</p>
-<p class="p2"><br></p>
-<p class="p3">Sometimes it's useful to set default values for arguments. You can do this like so:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>f = { <span class="s2">arg</span> a, b = 2; a + b; };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value(2); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// 2 + 2</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Default values must be what are called literals. Literals are basically numbers, strings, symbols (more on these later), or collections of them. Don't worry if that doesn't totally make sense, it will become clearer as we go on.</p>
-<p class="p2"><br></p>
-<p class="p3">There is an alternate way to specify args, which is to enclose them within two vertical lines. (On most keyboards the vertical line symbol is Shift-\ ) The following two Functions are equivalent:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>f = { <span class="s2">arg</span> a, b; a + b; };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>g = { <span class="s2">|a, b|</span> a + b; };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value(2, 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>g.value(2, 2);</p>
-<p class="p2"><br></p>
-<p class="p3">Why have two different ways? Well some people like the second one better and consider it a shortcut. SC has a number of syntax shortcuts like this, which can make writing code a little faster. In any case you will encounter both forms, so you need to be aware of them.</p>
-<p class="p2"><br></p>
-<p class="p3">You can also have variables in a Function. These you need to declare at the beginning of the Function, just after the args, using the keyword '<span class="s8">var</span>'.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f = { <span class="s2">arg</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> firstResult, finalResult;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>firstResult = a + b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>finalResult = firstResult * 2;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>finalResult;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>};</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>f.value(2, 3); <span class="Apple-tab-span">	</span></span>// this will return (2 + 3) * 2 = 10</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">Variable and argument names can consist of letters and numbers, but must begin with a lower-case letter and cannot contain spaces.</p>
-<p class="p2"><br></p>
-<p class="p3">Variables are only valid for what is called their scope. The scope of a variable declared in a Function is that Function, i.e. the area between the two curly brackets. Execute these one at a time:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>f = { <span class="s2">var</span> foo; foo = 3; foo; };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f.value;</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>foo;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will cause an error as 'foo' is only valid within f.</p>
-<p class="p2"><br></p>
-<p class="p3">You can also declare variables at the top of any block of code which you execute altogether (i.e. by selecting it all). In such a case that block of code is the variable's scope. Execute the block (in parentheses) and then the last line.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> myFunc;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>myFunc = { <span class="s2">|input|</span> input.postln; };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>myFunc.value(<span class="s6">"foo"</span>); <span class="Apple-tab-span">	</span><span class="s9">// arg is a String</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>myFunc.value(<span class="s6">"bar"</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>myFunc;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// throws an error</p>
-<p class="p9"><br></p>
-<p class="p3">You may be wondering why we haven't needed to declare variables like '<span class="s5">f</span>', and why they don't seem to have any particular scope (i.e. they keep there values even when executing code one line at a time). The letters a to z are what are called interpreter variables. These are pre-declared when you start up SC, and have an unlimited, or 'global', scope. This makes them useful for quick tests or examples. You've already encountered one of these, the variable '<span class="s5">s</span>', which you'll recall by default refers to the localhost server.</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p10"><a href="../../Language/Functions.html">Functions</a><span class="s4"><b> </b><a href="../../Core/Kernel/Function.html"><span class="s1">Function</span></a><b> </b><a href="../../Language/Assignment.html"><span class="s1">Assignment</span></a><b> </b><a href="../../Language/Intro-to-Objects.html"><span class="s1">Intro-to-Objects</span></a><b> </b><a href="../../Language/Literals.html"><span class="s1">Literals</span></a><b> </b><a href="../../Language/Scope.html"><span class="s1">Scope</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Functions and Sound.html"><span class="s10">Functions and Sound</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s10">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Functions and Sound.html b/Help/Tutorials/Getting-Started/Functions and Sound.html
deleted file mode 100644
index 128e426..0000000
--- a/Help/Tutorials/Getting-Started/Functions and Sound.html	
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {color: #0019b7}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 12.0px Helvetica}
-span.s4 {color: #000000}
-span.s5 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>And What About Functions and Sound?</b></p>
-<p class="p2"><br></p>
-<p class="p3">I've probably bored you enough with technical details, so let's get back to making noise, which I assume is why you're reading this after all. Trust me though, all this work will pay off later, and believe it or not, we've already covered a fair amount of the basics of the language, at least in passing.</p>
-<p class="p2"><br></p>
-<p class="p3">Let's go back to our sound example, or rather a slightly simplified version of it. Check that the localhost server is<span class="Apple-converted-space">  </span>running, execute the code below and then press Cmd-. when you've had enough.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s1">SinOsc</span>.ar(440, 0, 0.2) }.play;</p>
-<p class="p2"><br></p>
-<p class="p3">In this case we've created a Function by enclosing some code in curly brackets, and then called the method 'play' on that Function. To Functions 'play' means evaluate yourself and play the result on a server. If you don't specify a server, you'll get the default one, which you'll recall is stored in the variable '<span class="s2">s</span>' and is set at startup to be the localhost server.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">We didn't store the Function in a variable, so it can't be reused. (Well, actually you could just execute the same line of code again, but you know what I mean...) This is often the case when using Function-play, as it is useful as a quick way of getting something to make noise, and is often used for testing purposes. There are other ways of reusing Functions for sounds, which are often better and more efficient as we will see.</p>
-<p class="p2"><br></p>
-<p class="p3">Lets look at what's between the curly brackets. We're taking something called a 'SinOsc' and we're sending it the message ar, with a few arguments. It turns out that SinOsc is an example of something called a <i>class</i>. To understand what a class is, we need to know a little more about OOP and objects.</p>
-<p class="p2"><br></p>
-<p class="p3">In a nutshell, an object is some data, i.e. some information, and a set of operations that you can perform on that data. You might have many different objects of the same type. These are called instances. The type itself is the object's class. For instance we might have a class called Student, and several instances of it, Bob, Dave and Sue. All three will have the same types of data, for instance they might have a bit of data named gpa. The value of each bit of data could be different however. They would also have the same methods to operate on the data. For instance they could have a method called calculateGPA, or something similar.</p>
-<p class="p2"><br></p>
-<p class="p3">An object's class defines its set of data (or <i>instance variables</i> as they are called) and methods. In addition it may define some other methods which only you send only to the class itself, and some data to be used by all of its instances. These are called class methods and class variables.</p>
-<p class="p2"><br></p>
-<p class="p3">All classes begin with upper-case letters, so it's pretty easy to identify them in code.</p>
-<p class="p2"><br></p>
-<p class="p3">Classes are what you use to make objects. They're like a template. You do this through class methods such as 'new', or, in the case of our SinOsc class above, 'ar'. Such methods return an object, an instance, and the arguments affect what its data will be, and how it will behave. Now take another look at the example in question:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s1">SinOsc</span>.ar(440, 0, 0.2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This tells the class SinOsc to make an instance of itself. All SinOscs are an example of what are called unit generators, or UGens. These are objects which produce audio or control signals. SinOsc is a sine wave oscillator. This means that it will produce a signal consisting of a single frequency. A graph of it's waveform would look like this:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><img src="attachments/Functions and Sound/Pasted Graphic.png" alt="attachments/Functions and Sound/Pasted Graphic.png"> <span class="Apple-tab-span">	</span>(don't worry about the 'index' and 'value' stuff; it's not important just now)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">This waveform loops, creating the output signal.<span class="Apple-converted-space">  </span>'ar' means make the instance <i>audio rate</i>. SuperCollider calculates audio in groups of samples, called <i>blocks</i>. Audio rate means that the UGen will calculate a value for each sample in the block. There's another method, 'kr', which means <i>control rate</i>. This means calculate a single value for each block of samples. This can save a lot of computing power, and is fine for (you guessed it) signals which control other UGens, but it's not fine enough detail for synthesizing audio signals.</p>
-<p class="p2"><br></p>
-<p class="p3">The three arguments to SinOsc-ar given in the example determine a few things about the resulting instance. I happen to know that the arguments are frequency, phase, and mul. (We'll get to how I know that in a second.) Frequency is just the frequency of the oscillator in Hertz (Hz), or cycles per second (cps). Phase refers to where it will start in the cycle of its waveform. For SinOsc (but not for all UGens) phase is given in radians. If you don't know what radians are, don't worry, just understand that it's a value between 0 and 2 * pi. (You can look at a trigonometry text if you really want more detail.) So if we made a SinOsc with a phase of (pi * 0.5), or one quarter of the way through its cycle, the waveform would look like this:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><img src="attachments/Functions and Sound/Pasted Graphic 1.png" alt="attachments/Functions and Sound/Pasted Graphic 1.png"></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Make sense? Here are several cycles of the two side by side to make the idea clearer:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><img src="attachments/Functions and Sound/Pasted Graphic 2.png" alt="attachments/Functions and Sound/Pasted Graphic 2.png"></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">So what about 'mul'? Mul is a special argument that almost all UGens have. It's so ubiquitous that it's usually not even explained in the documentation. It just means a value or signal by which the output of the UGen will be multiplied. It turns out that in the case of audio signals, this affects the amplitude of the signal, or how loud it is. The default mul of most UGens is 1, which means that the signal will oscillate between 1 and -1. This is a good default as anything bigger would cause clipping and distortion. A mul of 0 would be effectively silent, as if the volume knob was turned all the way down.</p>
-<p class="p2"><br></p>
-<p class="p3">To make clearer how mul works, here is a graph of two SinOscs, one with the default mul of 1, and one with a mul of 0.25:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><img src="attachments/Functions and Sound/Pasted Graphic 3.png" alt="attachments/Functions and Sound/Pasted Graphic 3.png"></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Get the idea? There's also another similar arg called 'add' (also generally unexplained in the doc), which (you guessed it) is something which is added to the output signal. This can be quite useful for things like control signals. 'add' has a default value of 0, which is why we don't need to specify something for it.</p>
-<p class="p2"><br></p>
-<p class="p3">Okay, with all this in mind, let's review our example, with comments:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>{ <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// Open the Function</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">SinOsc</span><span class="s4">.ar(<span class="Apple-tab-span">	</span></span>// Make an audio rate SinOsc</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>440, <span class="Apple-tab-span">	</span></span>// frequency of 440 Hz, or the tuning A</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// initial phase of 0, or the beginning of the cycle</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2) <span class="Apple-tab-span">	</span></span>// mul of 0.2</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>}.play;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// close the Function and call 'play' on it</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Some More Fun with Functions and UGens</b></p>
-<p class="p2"><br></p>
-<p class="p3">Here's another example of polymorphism, and how powerful it is. When creating Functions of UGens, for many arguments you don't have to use fixed values, you can in fact use other UGens! Below is an example which demonstrates this:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s1">var</span> ampOsc;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ampOsc = <span class="s1">SinOsc</span>.kr(0.5, 1.5pi, 0.5, 0.5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(440, 0, ampOsc);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">Try this. (Again, use Cmd-. to stop the sound.)</p>
-<p class="p2"><br></p>
-<p class="p3">What we've done here is plugged the first SinOsc (a <i>control rate</i> one!) into the mul arg of the second one. So its output is being multiplied by the output of the second one. Now lets look at the first SinOsc's arguments.</p>
-<p class="p2"><br></p>
-<p class="p3">Frequency is set to 0.5 cps, which if you think about it a bit means that it will complete one cycle every 2 seconds. (1 / 0.5 = 2)</p>
-<p class="p2"><br></p>
-<p class="p3">Mul and add are both set to 0.5. Think for a second about what that will do. If by default SinOsc goes between 1 and -1, then a mul of 0.5 will scale that down to between 0.5 and -0.5. Adding 0.5 to that brings it to between 0 and 1, a rather good range for mul!</p>
-<p class="p2"><br></p>
-<p class="p3">The phase of 1.5pi (this just means 1.5 * pi) means 3/4 of the way through its cycle, which if you look at the first graph above you'll see is the lowest point, or in this case, 0. So the ampOsc SinOsc's waveform will look like this:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><img src="attachments/Functions and Sound/Pasted Graphic 4.png" alt="attachments/Functions and Sound/Pasted Graphic 4.png"></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">And what we have in the end is a SinOsc that fades gently in and out. Shifting the phase just means that we start quiet and fade in. We're effectively using ampOsc as what is called an amplitude <i>envelope</i>. There are other ways of doing the same thing, some of them simpler, but this demonstrates the principal.</p>
-<p class="p2"><br></p>
-<p class="p3">Patching together UGens in this way is the basic way that you make sound in SC. For an overview of the various types of UGens available in SC, see <a href="../../UGens/UGens.html"><span class="s5">UGens</span></a> or <a href="../../UGens/Tour_of_UGens.html"><span class="s5">Tour_of_UGens</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p9"><a href="../../Language/Functions.html">Functions</a><span class="s4"><b> </b><a href="../../Core/Kernel/Function.html"><span class="s3">Function</span></a><b> </b><a href="../../UGens/UGens.html"><span class="s3">UGens</span></a> <a href="../../UGens/Tour_of_UGens.html"><span class="s3">Tour_of_UGens</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Suggested Exercise:</b></p>
-<p class="p10"><br></p>
-<p class="p3">Experiment with altering the Functions in the text above. For instance try changing the frequencies of the SinOsc, or making multi-channel versions of things.</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Presented in Living Stereo.html"><span class="s5">Presented in Living Stereo</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s5">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Getting Help.html b/Help/Tutorials/Getting-Started/Getting Help.html
deleted file mode 100644
index b08aebd..0000000
--- a/Help/Tutorials/Getting-Started/Getting Help.html	
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {font: 12.0px Helvetica}
-span.s4 {font: 9.0px Monaco}
-span.s5 {color: #0025b2}
-span.s6 {color: #0024f8}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Getting Help</b></p>
-<p class="p2"><br></p>
-<p class="p3">This is probably a good point to stop and explore some methods of finding further information. You're already familiar with the clickable links that have been used so far in this tutorial. Here's an example:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="../../Help.html"><span class="s2">Help</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3">Clicking on this link will open the main help window, which contains a number of links to other help files. At some point, it would be a good idea to familiarise yourself with some of these. The ones under the headings 'Essential Topics' and 'Language' are of particular import. Again don't worry if everything doesn't immediately make complete sense to you. Learning a computer language is sometimes a little like slowly zeroing in on something, rather than getting it immediately, and some information you can just file away for future reference.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Classes and Methods</b></p>
-<p class="p2"><br></p>
-<p class="p3">By now we've learned enough OOP theory that we know that we have classes, which are like templates for objects, and instances, which are objects which have been created from those templates. We also have class and instance methods, which may take arguments. Class methods do things like create instances (as well as some convenience functions that don't require an actual instance), and instance methods control and manipulate instances. There are also instance variables, which are the data specific to each instance, and class variables, which are data in common between all instances.</p>
-<p class="p2"><br></p>
-<p class="p3">Recall that anything in the code that begins with an uppercase letter is a class. Most classes have help files. If you select a class by double-clicking on it, and press Cmd - d (that's hold down the Cmd key and press the d key) the help file for that class will open if it exists. (If not you'll get the main help window.) Try it with this example below:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc</p>
-<p class="p2"><br></p>
-<p class="p3">You should have gotten a window with a brief description of the class and what it does, a list of some methods, and a description of their arguments. (Remember that 'mul' and 'add' are usually not explained.)</p>
-<p class="p2"><br></p>
-<p class="p3">Beneath that are some examples of the class in action. These can be very useful for making it clear exactly what the class does, and can serve as starting points for your own work. It's a good idea to cut and paste these to a new window, and then play around with modifying them. (Remember that SC won't stop you from saving any modified files, including this tutorial!) This is a great way to learn.</p>
-<p class="p2"><br></p>
-<p class="p3">You may be wondering how to access the helpfiles for Function and Array, since they often appear in code as {...} and [...]. They are also named classes, so by typing in the following, you can also select and Cmd-? on them.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>Function</p>
-<p class="p6"><span class="Apple-tab-span">	</span>Array</p>
-<p class="p2"><br></p>
-<p class="p3">Some methods also have helpfiles, and there are a number of ones on general topics. Most of these are listed in the main help window.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Syntax Shortcuts</b></p>
-<p class="p2"><br></p>
-<p class="p3">Remember the example of Mix(...) vs. Mix.new(...)? SC has a number of such shorthand forms or alternate syntaxes. A common example is the distinction between Functional and receiver notation. This means that the notation <span class="s4">someObject.someMethod(anArg)</span> is equivalent to <span class="s4">someMethod(someObject, anArg)</span>. Here's a concrete example. Both of these do exactly the same thing:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s5">SinOsc</span>.ar(440, 0, 0.2) }.play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>play({ <span class="s5">SinOsc</span>.ar(440, 0, 0.2) });</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p3">You will find numerous other examples of syntax shortcuts throughout SC's documentation. If you see something you don't recognize, a good place to check is <a href="../../Language/Syntax-Shortcuts.html"><span class="s6">Syntax-Shortcuts</span></a>, which gives examples of most of these.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Snooping, etc.</b></p>
-<p class="p9"><br></p>
-<p class="p3">SC has numerous other ways of tracking down information on classes, methods, etc. Most of these won't be too helpful for you at this point, but are good to know about for future use. Information on these can be found in the files <a href="../../More-On-Getting-Help.html"><span class="s6">More-On-Getting-Help</span></a> and <a href="../../Other Topics/Internal-Snooping.html"><span class="s6">Internal-Snooping</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><a href="../../More-On-Getting-Help.html">More-On-Getting-Help</a></span><span class="s1"><b> </b><a href="../../Other Topics/Internal-Snooping.html"><span class="s2">Internal-Snooping</span></a><b> </b><a href="../../Language/Syntax-Shortcuts.html"><span class="s2">Syntax-Shortcuts</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Suggested Exercise:</b></p>
-<p class="p9"><br></p>
-<p class="p3">Go back over the examples in the previous tutorials, and try opening up the helpfiles for the various classes used. Try out the examples, and if you like open up the help files for any unfamiliar classes used in those examples. Get used to Cmd-d, you'll be using it a lot. :-)</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="SynthDefs and Synths.html"><span class="s6">SynthDefs and Synths</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s6">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Getting Started With SC.html b/Help/Tutorials/Getting-Started/Getting Started With SC.html
deleted file mode 100644
index 39a0f6d..0000000
--- a/Help/Tutorials/Getting-Started/Getting Started With SC.html	
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Getting Started With SuperCollider</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>by Scott Wilson and James Harkins</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Table of Contents</b></p>
-<p class="p4"><br></p>
-<p class="p5">In OSX click on the links below to take you to the corresponding document.</p>
-<p class="p4"><br></p>
-<p class="p6"><b>To Begin</b></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Introductory Remarks.html"><span class="s2">Introductory Remarks</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="First Steps.html"><span class="s2">First Steps</span></a></span></p>
-<p class="p7"><br></p>
-<p class="p6"><b>Making Sound</b></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Start Your Engines.html"><span class="s2">Start Your Engines</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Functions and Other Functionality.html"><span class="s2">Functions and Other Functionality</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Functions and Sound.html"><span class="s2">Functions and Sound</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Presented in Living Stereo.html"><span class="s2">Presented in Living Stereo</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Mix it Up.html"><span class="s2">Mix it Up</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Scoping and Plotting.html"><span class="s2">Scoping and Plotting</span></a></span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Getting Help.html"><span class="s2">Getting Help</span></a></span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b>Server Abstractions</b></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="SynthDefs and Synths.html"><span class="s2">SynthDefs and Synths</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Busses.html"><span class="s2">Busses</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Groups.html"><span class="s2">Groups</span></a></span></p>
-<p class="p8"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Buffers.html"><span class="s2">Buffers</span></a></span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p6"><b>Scheduling and Sequencing</b></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><a href="Scheduling Events.html"><span class="s2">Scheduling Events</span></a></span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><a href="Sequencing with Routines and Tasks.html"><span class="s2">Sequencing with Routines and Tasks</span></a></span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><a href="Sequencing with Patterns.html"><span class="s2">Sequencing with Patterns</span></a></span></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Groups.html b/Help/Tutorials/Getting-Started/Groups.html
deleted file mode 100644
index 8e9a629..0000000
--- a/Help/Tutorials/Getting-Started/Groups.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-span.s1 {color: #001bb9}
-span.s2 {color: #000000}
-span.s3 {color: #2c7014}
-span.s4 {color: #ad140d}
-span.s5 {color: #0000ff}
-span.s6 {color: #0000bf}
-span.s7 {text-decoration: underline ; color: #0021e7}
-span.s8 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Groups</b></p>
-<p class="p2"><br></p>
-<p class="p3">Our discussion about the order of synths on the server brings us to the topic of groups. Synths on the server are a type of what are called <i>nodes</i>. There's one other type of node: groups. Groups are simply collections of nodes, and can contain synths, other groups, or combinations of both. They are mostly useful in two ways: First they are very helpful in controlling order, second, they allow you to easily group together nodes and send them messages all at once. As you've probably guessed, there's a handy Server abstraction object to represent group nodes in the client app: Group.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Groups as Ordering Tools</b></p>
-<p class="p2"><br></p>
-<p class="p3">Groups can be quite helpful in terms of controlling order. Like synths they take targets and addActions as arguments, which makes it easy to put them in position.</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = <span class="s1">Group</span>.new;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>h = <span class="s1">Group</span>.before(g);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>g.free; h.free;</p>
-<p class="p2"><br></p>
-<p class="p3">This can be very helpful for things like keeping effects or processing separate from sound sources, and in the right order. Let's reconsider our reverb example from the previous section.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// a stereo version</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">SynthDef</span>(<span class="s3">\tutorial_DecaySin2</span>, { <span class="s1">arg</span> outBus = 0, effectBus, direct = 0.5, freq = 440;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> source;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 1.0.rand2 returns a random number from -1 to 1, used here for a random pan</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s1">Pan2</span>.ar(<span class="s1">Decay2</span>.ar(<span class="s1">Impulse</span>.ar(<span class="s1">Rand</span>(0.3, 1), 0, 0.125), 0.3, 1,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(0.2, 0, 110, freq))), <span class="s1">Rand</span>(-1.0, 1.0));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(outBus, source * direct);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(effectBus, source * (1 - direct));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">SynthDef</span>(<span class="s3">\tutorial_Reverb2</span>, { <span class="s1">arg</span> outBus = 0, inBus;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> input;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input = <span class="s1">In</span>.ar(inBus, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>16.do({ input = <span class="s1">AllpassC</span>.ar(input, 0.04, <span class="s1">Rand</span>(0.001,0.04), 3)});</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(outBus, input);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// now we create groups for effects and synths</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~sources = <span class="s1">Group</span>.new;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~effects = <span class="s1">Group</span>.after(~sources); <span class="Apple-tab-span">	</span><span class="s4">// make sure it's after</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">~bus = </span><span class="s1">Bus</span><span class="s2">.audio(s, 2); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will be our stereo effects bus</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// now synths in the groups. The default addAction is \addToHead</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s1">Synth</span>(<span class="s3">\tutorial_Reverb2</span>, [<span class="s3">\inBus</span>, b], ~effects);</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span>y = </span><span class="s1">Synth</span><span class="s2">(</span>\tutorial_DecaySin2<span class="s2">, [</span>\effectBus<span class="s2">, ~bus, </span>\outBus<span class="s2">, 0], ~sources);</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span>z = </span><span class="s1">Synth</span><span class="s2">(</span>\tutorial_DecaySin2<span class="s2">, [</span>\effectBus<span class="s2">, ~bus, </span>\outBus<span class="s2">, 0, </span>\freq<span class="s2">, 660], ~sources);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// we could add other source and effects synths here</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>~sources.free; ~effects.free; </span>// this frees their contents (x, y, z) as well</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>~bus.free;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// remove references to ~sources and ~effects environment variables:</p>
-<p class="p6"><span class="Apple-tab-span">	</span>currentEnvironment.clear;</p>
-<p class="p2"><br></p>
-<p class="p3">Note that we probably don't care what order the sources and effects are within the groups, all that matters is that all effects synths come after the source synths that they process.</p>
-<p class="p2"><br></p>
-<p class="p3">If you're wondering about the names '~sources' and '~effects', placing a tilde (~) in front of a word is a way of creating an <i>environment variable</i>. For the moment, all you need to know about them is that they can be used in the same way as interpreter variables (you don't need to declare them, and they are persistent), and they allow for more descriptive names. You should consider using <b>variable definitions</b> and <a href="../../Core/Kernel/Function.html"><span class="s5">Function</span></a>s wherever no later direct access is needed – a large number of environment variables may cause bugs that are hard to find. Remember to <b>clear</b> the currentEnvironment (see above) to avoid interference.</p>
-<p class="p2"><br></p>
-<p class="p9">// to be sure, create a new <a href="../../Collections/Environment.html"><span class="s5">Environment</span></a>:</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s6">Environment</span>.new.push;</p>
-<p class="p11"><br></p>
-<p class="p9">// some code..</p>
-<p class="p12"><br></p>
-<p class="p9">// restore old environment</p>
-<p class="p10"><span class="Apple-tab-span">	</span>currentEnvironment.pop;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>All the addActions</b></p>
-<p class="p13"><br></p>
-<p class="p3">At this point it's probably good to cover the remaining add actions. In addition to \addBefore and \addAfter, there is also the (rarely) used \addReplace, and two add actions which apply to Groups: \addToHead and \addToTail. The former adds the receiver to the beginning of the group, so that it will execute first, the latter to the end of the group, so that it will execute last. Like the other addActions, \addToHead and \addToTail have convenience methods called 'head' and 'tail'.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = <span class="s1">Group</span>.new;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>h = </span><span class="s1">Group</span><span class="s2">.head(g);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// add h to the head of g</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>x = </span><span class="s1">Synth</span><span class="s2">.tail(h, </span><span class="s3">\default</span><span class="s2">);<span class="Apple-tab-span">	</span></span>// add x to the tail of h</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>s.queryAllNodes;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will post a representation of the node hierarchy</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free; h.free; g.free;</p>
-<p class="p5"><br></p>
-<p class="p4"><b>'queryAllNodes' and node IDs</b></p>
-<p class="p2"><br></p>
-<p class="p3">Server has a method called 'queryAllNodes' which will post a representation of the server's node tree. You should have seen something like the following in the post window when executing the example above:</p>
-<p class="p2"><br></p>
-<p class="p6">nodes on localhost:</p>
-<p class="p6">a Server</p>
-<p class="p6">Group(0)</p>
-<p class="p6"><span class="Apple-converted-space">        </span>Group(1)</p>
-<p class="p6"><span class="Apple-converted-space">                </span>Group(1000)</p>
-<p class="p6"><span class="Apple-converted-space">                        </span>Group(1001)</p>
-<p class="p6"><span class="Apple-converted-space">                                </span>Synth 1002</p>
-<p class="p5"><span class="Apple-converted-space">                            </span></p>
-<p class="p3">When you see a Group printed here, anything below it and indented to the right is contained within it. The order of nodes is from top to bottom. The numbers you see are what are called node IDs, which are how the server keeps track of nodes. Normally when working with Server abstraction objects you won't need to deal with node IDs as the objects keep track of them, assigning and freeing them when appropriate.</p>
-<p class="p2"><br></p>
-<p class="p3">You may have been wondering why there were four groups posted above when we only created two. The first two, with the IDs 0 and 1, are special groups, called the RootNode and the 'default group'.</p>
-<p class="p13"><br></p>
-<p class="p4"><b>The Root Node and the Default Group</b></p>
-<p class="p13"><br></p>
-<p class="p3">When a server app is booted there is a special group created with a node ID of 0. This represents the top of the server's node tree. There is a special server abstraction object to represent this, called RootNode. In addition there is another group created with an ID of 1, called the default group. This is the default target for all Nodes<span class="Apple-converted-space">  </span>and is what you will get if you supply a Server as a target. If you don't specify a target or pass in nil, you will get the default group of the default Server. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>Server</span>.default.boot;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>a = </span><span class="s1">Synth</span><span class="s2">.new(</span><span class="s3">\default</span><span class="s2">); </span>// creates a synth in the default group of the default Server</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>a.group; </span>// Returns a Group object. Note the ID of 1 (the default group) in the post window</p>
-<p class="p2"><br></p>
-<p class="p3">The default group serves an important purpose: It provides a predictable basic Node tree so that methods such as Server-scope and Server-record (which create nodes which <i>must</i> come after everything else) can function without running into order of execution problems. In the example below the scoping node will come after the default group.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>Server</span>.internal.boot;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s1">SinOsc</span>.ar(mul: 0.2) }.scope(1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// watch the post window;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Server</span>.internal.queryAllNodes;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// our SinOsc synth is within the default group (ID 1)</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// the scope node ('stethoscope') comes after the default group, so no problems</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>Server</span>.internal.quit;</p>
-<p class="p2"><br></p>
-<p class="p3">In general you should add nodes to the default group, or groups contained within it, and <i>not</i> before or after it. When adding an 'effects' synth, for instance, one should resist the temptation to add it after the default group, and instead create a separate source group within the default group. This will prevent problems with scoping or recording.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>default group [</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source group [</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source synth1</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source synth2</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>effects synth</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>]</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>recording synth</b></p>
-<p class="p13"><br></p>
-<p class="p4"><b>Groups as, well, groups...</b></p>
-<p class="p2"><br></p>
-<p class="p3">The other major use of groups is to allow you to easily treat a number of synths as a whole. If you send a 'set' message to a group, it will apply that message to all nodes contained within it.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>g = <span class="s1">Group</span>.new;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// make 4 synths in g</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// 1.0.rand2 returns a random number from -1 to 1.<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>4.do({ { <span class="s1">arg</span> amp = 0.1; <span class="s1">Pan2</span>.ar(<span class="s1">SinOsc</span>.ar(440 + 110.rand, 0, amp), 1.0.rand2) }.play(g); });</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>g.set(</span><span class="s3">\amp</span><span class="s2">, 0.005); </span>// turn them all down</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>g.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Groups, their Inheritance, and More on Tracking Down Help</b></p>
-<p class="p2"><br></p>
-<p class="p3">Now for a little more OOP theory. Both Group and Synth are examples of what are called <i>subclasses</i>. You can think of subclasses as being children of a parent class, called their <i>superclass</i>. All subclasses inherit the methods of their superclass. They may <i>override</i> some methods with their own implementation (taking advantage of <i>polymorphism</i>), but in general subclasses respond to all the methods of their superclass, and some other ones of their own. Some classes are <i>abstract classes</i>, which means that you don't actually make instances of them, they just exist to provide a common set of methods and variables to their subclasses.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">We might for instance imagine an abstract class called Dog, which has a number of subclasses, such as Terrier, BassetHound, etc. These might all have a 'run' method, but not all would need a 'herdSheep' method.</p>
-<p class="p2"><br></p>
-<p class="p3">This way of working has certain advantages: If you need to change an inherited method, you can do so in one place, and all the subclasses which inherit it will be changed too. As well, if you want to extend a class to make your own personal variant or enhanced version, you can automatically get all the functionality of the superclass.</p>
-<p class="p2"><br></p>
-<p class="p3">Inheritance can go back through many levels, which is to say that a class' superclass may also have a superclass. (A class cannot, however have more than one immediate superclass.) All objects in SC in fact inherit from a class called Object, which defines a certain set of methods which all its subclasses either inherit or override.</p>
-<p class="p2"><br></p>
-<p class="p3">Group and Synth are subclasses of the abstract class <a href="../../ServerArchitecture/Node.html"><span class="s1">Node</span></a>. Because of this, some of their methods are defined in Node, and (perhaps more practically important) <i>are documented in Node's helpfile</i>.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">So if you're looking at a helpfile and can't find a particular method that a class responds to, you may need to go to the helpfile for that class' superclass, or farther up the chain. Most classes have their superclass listed at the top of their helpfile. You can also use the following methods for getting this kind of info and tracking down documentation (watch the post window):</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">Group</span><span class="s2">.superclass; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will return 'Node'</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Group</span>.superclass.openHelpFile;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Group</span>.findRespondingMethodFor(<span class="s3">'set'</span>);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// Node-set</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Group</span>.findRespondingMethodFor(<span class="s3">'postln'</span>);<span class="Apple-tab-span">	</span><span class="s4">// Object-postln;</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">Group</span><span class="s2">.helpFileForMethod(</span><span class="s3">'postln'</span><span class="s2">); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// opens class Object help file</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p14"><span class="s7"><a href="../../ServerArchitecture/Group.html">Group</a></span><span class="s2"><b> </b><a href="../../ServerArchitecture/Node.html"><span class="s8">Node</span></a><b> </b><a href="../../ServerArchitecture/default_group.html"><span class="s8">default_group</span></a><b> </b><a href="../../ServerArchitecture/RootNode.html"><span class="s8">RootNode</span></a><b> </b><a href="../../Language/Intro-to-Objects.html"><span class="s8">Intro-to-Objects</span></a><b> </b><a href="../../ServerArchitecture/Order-of-execution.html"><span class="s8">Order-of-execution</span></a><b> </b><a href="../../ServerArchitecture/Synth.html"><span class="s8">Synth</span></a><b> </b><a href="../../More-On-Getting-Help.html"><span class="s8">More-On-Getting-Help</span></a><b> </b><a href="../../Other Topics/Internal-Snooping.html"><span class="s8">Internal-Snooping</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Buffers.html"><span class="s1">Buffers</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s1">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Introductory Remarks.html b/Help/Tutorials/Getting-Started/Introductory Remarks.html
deleted file mode 100644
index e678492..0000000
--- a/Help/Tutorials/Getting-Started/Introductory Remarks.html	
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0022f5}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {text-decoration: underline}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {color: #0019b7}
-span.s4 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Introductory Remarks</b></p>
-<p class="p2"><br></p>
-<p class="p3">The following text is intended to serve as an introduction to SuperCollider 3, an object-oriented language for sound synthesis and digital signal processing (DSP). This tutorial does not assume a background in computer science, but does assume basic familiarity with your computer and its OS, as well as a basic knowledge of acoustics and digital audio. (I'm assuming here that words like frequency and sample will not cause any confusion.)</p>
-<p class="p2"><br></p>
-<p class="p3">The tutorial is written from a Mac OSX perspective, but much of it should apply to linux and windows as well. The parts which specifically differ have mostly to do with GUI aspects (Graphical User Interface).</p>
-<p class="p2"><br></p>
-<p class="p3">I should acknowledge that this tutorial is 'by' me in only a limited sense. In writing it I have drawn freely upon the general documentation, which was written by a number of people. This document is not intended to replace those (often more detailed) sources, and refers the reader to them constantly for further information.</p>
-<p class="p2"><br></p>
-<p class="p3">A full list of those who have contributed to SuperCollider and its documentation can be seen at:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">http://supercollider.sourceforge.net</span></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Links</b></p>
-<p class="p2"><br></p>
-<p class="p3">Within the text, and at the end of each section there might be a list links to other documents, that will look something like this:</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>See also:<b> </b>Some other document</p>
-<p class="p2"><br></p>
-<p class="p3">Most of these are meant to expand upon what you have just read, but some just point you in the direction of further information which you will probably need in the future. Some of the linked documents are written in fairly technical language, and may duplicate information which is presented in this tutorial in a more casual form. Often they are designed as reference documents for people already familiar with SC, so don't worry if everything in them doesn't immediately make sense. You won't need to have seen and/or fully understood them in order to continue with the tutorial.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Code Examples</b></p>
-<p class="p2"><br></p>
-<p class="p3">Code examples within the text are in a different font:</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>{ [<span class="s3">SinOsc</span>.ar(440, 0, 0.2), <span class="s3">SinOsc</span>.ar(442, 0, 0.2)] }.play;</p>
-<p class="p2"><br></p>
-<p class="p3">This is a common convention in documentation of computer languages, and one that is followed throughout SC's doc. The different colours you'll see in code are just to make things clearer, and have no effect on what the code does.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">You are encouraged to copy the code examples to another window and play around with modifying them. This is a time honoured way of learning a new computer language! SC will allow you to mofify the original tutorial documents, but if you do so you should be careful not to save them (for instance if prompted when closing them). It's safest to copy things to a new document before changing them.</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="First Steps.html"><span class="s4">First Steps</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s4">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Mix it Up.html b/Help/Tutorials/Getting-Started/Mix it Up.html
deleted file mode 100644
index a576748..0000000
--- a/Help/Tutorials/Getting-Started/Mix it Up.html	
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {font: 12.0px Helvetica; color: #0000bf}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Mix it Up</b></p>
-<p class="p2"><br></p>
-<p class="p3">We've already seen that multiplication changes the level of something, but what about mixing UGens together? This turns out to be equally simple. All we need is addition:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s1">PinkNoise</span>.ar(0.2) + <span class="s1">SinOsc</span>.ar(440, 0, 0.2) + <span class="s1">Saw</span>.ar(660, 0.2) }.play;</p>
-<p class="p2"><br></p>
-<p class="p3">Saw is another type of oscillator, with a waveform that looks like a sawtooth. Note that we use a low value for mul, thus ensuring that the final output will be between -1 and 1, and not clip.</p>
-<p class="p2"><br></p>
-<p class="p3">There's another handy class called Mix, which will mix an array of channels down to a single channel or an array of arrays of channels down to a single array of channels. Watch the post window to see Mix's results.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// one channel</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s1">Mix</span>.new([<span class="s1">SinOsc</span>.ar(440, 0, 0.2), <span class="s1">Saw</span>.ar(660, 0.2)]).postln }.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// combine two stereo arrays</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = [<span class="s1">SinOsc</span>.ar(440, 0, 0.2), <span class="s1">Saw</span>.ar(662, 0.2)];</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b = [<span class="s1">SinOsc</span>.ar(442, 0, 0.2), <span class="s1">Saw</span>.ar(660, 0.2)];</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>([a, b]).postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">In the first case we get a 'BinaryOpUGen' (in this case this means the two UGens added together), and in the second we get an Array of two BinaryOpUGens.</p>
-<p class="p2"><br></p>
-<p class="p3">Note that in the first example we use Mix.new(...), but in the second we use Mix(...). The latter is a shorthand for the former. 'new' is the most common class method for creating a new object. In some cases objects have more than one class method for creating objects, such as the 'ar' and 'kr' methods of UGens. (Mix, however, is actually<span class="Apple-converted-space">  </span>just a 'convenience' class, and doesn't actually create Mix objects, it just returns the results of its summing, either a BinaryOpUGen or an Array of them.)</p>
-<p class="p2"><br></p>
-<p class="p3">Mix also has another class method called fill, which takes two arguments. The first is a number, which determines how many times the second argument, a Function, will be evaluated. The results of the evaluations will be summed. Confusing? Take a look at the following example:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> n = 8;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s1">Mix</span>.fill(n, { <span class="s1">SinOsc</span>.ar(500 + 500.0.rand, 0, 1 / n) })<span class="Apple-converted-space">  </span>}.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The Function will be evaluated n times, each time creating a SinOsc with a random frequency from 500 to 1000 Hz (500 plus a random number between 0 and 500). The mul arg of each SinOsc is set to 1 / n, thus ensuring that the total amplitude will not go outside -1 and 1. By simply changing the value of n, you can have vastly different numbers of SinOscs! (Try it!) This sort of approach makes this code extremely flexible and reusable.</p>
-<p class="p2"><br></p>
-<p class="p3">Each time the Function is evaluated it is passed the number of times evaluated so far as an argument. So if 'n' is 8 the Function will be passed values from 0 to 7, in sequence, counting up. By declaring an argument within our Function we can use this value.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>// Look at the post window for frequencies and indices</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> n = 8;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.fill(n, { <span class="s1">arg</span> index;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> freq;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = 440 + index;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq.postln;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(freq , 0, 1 / n)<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">By combining addition and multiplication (or indeed almost any mathematical procedure you could imagine!) with the use of classes like Mix, we have the tools we need to combine multichannel sources of sound into complex mixes and submixes.</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s3"><a href="../../UGens/Multichannel/Mix.html">Mix</a></span><span class="s2"><b> </b><a href="../../UGens/Algebraic/BinaryOpUGen.html"><span class="s4">BinaryOpUGen</span></a><b> </b><a href="../../Language/Operators.html"><span class="s5">Operators</span></a><b> </b><a href="../../Language/Syntax-Shortcuts.html"><span class="s5">Syntax-Shortcuts</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Suggested Exercise:</b></p>
-<p class="p9"><br></p>
-<p class="p3">Experiment with altering the Functions in the text above. For instance try changing the frequencies of the SinOsc, or making multi-channel versions of things.</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Scoping and Plotting.html"><span class="s6">Scoping and Plotting</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s6">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Presented in Living Stereo.html b/Help/Tutorials/Getting-Started/Presented in Living Stereo.html
deleted file mode 100644
index 374e1f0..0000000
--- a/Help/Tutorials/Getting-Started/Presented in Living Stereo.html	
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {font: 9.0px Monaco}
-span.s4 {font: 12.0px Helvetica; color: #000000}
-span.s5 {color: #000000}
-span.s6 {color: #606060}
-span.s7 {color: #a71e12}
-span.s8 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Presented in Living Stereo</b></p>
-<p class="p2"><br></p>
-<p class="p3">Okay, but what about our first, unsimplified example? Remember:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>{ [<span class="s2">SinOsc</span>.ar(440, 0, 0.2), <span class="s2">SinOsc</span>.ar(442, 0, 0.2)] }.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This also has two SinOscs, but in a different arrangement, between two square brackets <span class="s3">[]</span>, and with a comma in between. Just like the curly brackets indicate a Function, square brackets define something called an Array. An Array is a type of Collection, which is (you guessed it) a collection of Objects. Collections themselves are Objects, and most types of Collections can hold any types of objects, mixed together, including other Collections! There are many different types of Collections in SC, and you will come to learn that they are one of the SC's most powerful features.</p>
-<p class="p2"><br></p>
-<p class="p3">An Array is a particular type of Collection: An ordered collection of limited maximum size. You can make one as we have above, by putting objects in between two square brackets, with commas in between. You can get the different elements of an Array using the method 'at', which takes an index as an argument. Indices correspond to the order of objects in the Array, and start from 0.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s5">a = [</span><span class="s6">"foo"</span><span class="s5">, </span><span class="s6">"bar"</span><span class="s5">];<span class="Apple-tab-span">	</span></span>// "foo" is at index 0; "bar" is at index 1</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.at(0);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.at(1);</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>a.at(2);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// returns "nil", as there is no object at index 2</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>// there's a shorthand for at that you'll see sometimes:</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">a[0];<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// same as a.at(0);</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">In addition to being used to hold collections of objects, Arrays also have a special use in SC: They are used to implement multichannel audio! If your Function returns an Array of UGens (remember that Functions return the result of their last line of code) then the output will be a number of channels. How many depends on the size of the Array, and each channel will correspond to an element of the Array. So in our example:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>{ [<span class="s2">SinOsc</span>.ar(440, 0, 0.2), <span class="s2">SinOsc</span>.ar(442, 0, 0.2)] }.play;</p>
-<p class="p2"><br></p>
-<p class="p3">What we end up with is stereo output, with a SinOsc at 440Hz in the left channel, and a SinOsc at 442Hz in the right channel. We could have even more channels of output by having a larger array.</p>
-<p class="p2"><br></p>
-<p class="p3">Now watch carefully, because this next bit involves a little slight of hand, but shows another way in which SC makes things very interchangeable. Because the arguments for phase and mul are the same for both SinOscs, we can rewrite the code for our example like this:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>{ <span class="s2">SinOsc</span>.ar([440, 442], 0, 0.2) }.play;</p>
-<p class="p2"><br></p>
-<p class="p3">We've replaced the frequency argument with an Array. This causes something called 'multichannel expansion', which means that if you plug an Array into one of a UGen's arguments, you get an Array of that UGen instead of a single one. Now consider this:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ var freq;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = [[660, 880], [440, 660], 1320, 880].choose;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq, 0, 0.2);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">Try executing it several times, and you'll get different results. 'choose' is just a method which randomly selects one of the elements of the Array. In this case the result may be a single number or another Array. In the case of the latter you'll get stereo output, in the case of the former, monophonic. This sort of thing can make your code very flexible.</p>
-<p class="p2"><br></p>
-<p class="p3">But what if you want to 'pan' something, crossfading it between channels? SC has a number of UGens which do this in various ways, but for now I'll just introduce you to one: Pan2. Pan2 takes an input and a position as arguments and returns an Array of two elements, the left and right or first and second channels. The position arg goes between -1 (left) and 1 (right). Take a look at this example:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s2">Pan2</span>.ar(<span class="s2">PinkNoise</span>.ar(0.2), <span class="s2">SinOsc</span>.kr(0.5)) }.play;</p>
-<p class="p2"><br></p>
-<p class="p3">This uses a SinOsc to control the position (remember it outputs values from -1 to 1, or left to right), but uses a different UGen as the input to the Pan2, something called PinkNoise. This is just a kind of noise generator, and it has a single argument: mul. You can of course also used fixed values for the position arg.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s2">Pan2</span>.ar(<span class="s2">PinkNoise</span>.ar(0.2), -0.3) }.play; <span class="s7">// slightly to the left</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p8"><a href="../../Other Topics/MultiChannel.html">MultiChannel</a><span class="s5"><b> </b><a href="../../Collections/Collections.html"><span class="s1">Collections</span></a><b> </b><a href="../../UGens/Multichannel/Panners/Pan2.html"><span class="s1">Pan2</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Suggested Exercise:</b></p>
-<p class="p10"><br></p>
-<p class="p3">Experiment with altering the Functions in the text above. For instance try changing the frequencies of the SinOsc, or making multi-channel versions of things.</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Mix it Up.html"><span class="s8">Mix it Up</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s8">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Scheduling Events.html b/Help/Tutorials/Getting-Started/Scheduling Events.html
deleted file mode 100644
index 9d50be2..0000000
--- a/Help/Tutorials/Getting-Started/Scheduling Events.html	
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0020de}
-span.s1 {color: #0030dd}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {font: 9.0px Monaco}
-span.s5 {font: 9.0px Monaco; color: #606060}
-span.s6 {color: #000000}
-span.s7 {font: 12.0px Helvetica; color: #0020de}
-span.s8 {color: #0000ff}
-span.s9 {color: #0039cf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Scheduling Events</b></p>
-<p class="p2"><br></p>
-<p class="p3">Music happens over time, and to make effective music, it's necessary to control when things happen. In SuperCollider, this is done by scheduling things on clocks.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Clocks</b></p>
-<p class="p2"><br></p>
-<p class="p3">A clock in SuperCollider has two major functions. It knows what time it is, and it knows what time things are supposed to happen, so that it can wake them up at just the right time.</p>
-<p class="p2"><br></p>
-<p class="p3">Musical sequencing will usually use <a href="../../Scheduling/TempoClock.html"><span class="s1">TempoClock</span></a>, because you can change its tempo and it is also aware of meter changes. Two other kinds of clock exist: <a href="../../Scheduling/SystemClock.html"><span class="s1">SystemClock</span></a>, which always runs in seconds, and <a href="../../Scheduling/AppClock.html"><span class="s1">AppClock</span></a>, which also runs in seconds but has a lower system priority (so it is better for graphic updates and other activities that are not time critical).</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Scheduling</b></p>
-<p class="p2"><br></p>
-<p class="p3">Scheduling means to tell the clock to execute something at some time in the future. So, you need to have the thing to schedule, and a number indicating the time.</p>
-<p class="p2"><br></p>
-<p class="p3">Let's have SuperCollider say hello, 5 seconds from now.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">SystemClock</span>.sched(5, { <span class="s3">"hello"</span>.postln });</p>
-<p class="p2"><br></p>
-<p class="p3">Notice that when you do this, 'SystemClock' prints immediately. Every time you run something in SuperCollider, it has to return a value right away; the method's return value is the clock. Before returning, however, the clock 'remembers' the function, and that you wanted it to run 5 seconds later. And indeed, 'hello' appears in the post window, right on cue. <span class="s4">{ </span><span class="s5">"hello"</span><span class="s4">.postln }</span> is an <i>asynchronous</i> action: it runs <i>after</i> its code block has already returned.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>sched</b> does <i>relative</i> scheduling. The actual time when the function runs is <i>x</i> seconds (or beats, for TempoClock) later than the time the .sched call occurred. It is also possible to schedule for an exact time point, provided you know what time it is on the clock. <b>schedAbs</b> handles <i>absolute</i> scheduling.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span><span class="Apple-tab-span">	</span>timeNow = <span class="s2">TempoClock</span>.default.beats;</p>
-<p class="p5"><span class="s3">"Time is now: "</span>.post; timeNow.postln;</p>
-<p class="p5"><span class="s3">"Scheduling for: "</span>.post; (timeNow + 5).postln;</p>
-<p class="p5"><span class="s2">TempoClock</span>.default.schedAbs(timeNow + 5,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">"Time is later: "</span>.post; <span class="s2">thisThread</span>.clock.beats.postln; <span class="s2">nil</span> });</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p3">Note that we have moved to TempoClock, since this is the most commonly used. While there is only one SystemClock, there can be many TempoClocks all running at different speeds, if need be. One TempoClock is the default, accessed by <b>TempoClock.default</b> -- we will use this throughout. (To save typing, you may wish to assign a TempoClock to a variable, for instance, <b>t = TempoClock.default</b>.)</p>
-<p class="p2"><br></p>
-<p class="p3">For fun, change the tempo and run the last example again:</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span><span class="Apple-tab-span">	</span>timeNow;</p>
-<p class="p6"><span class="s2">TempoClock</span><span class="s6">.default.tempo = 2;<span class="Apple-tab-span">	</span></span>// 2 beats/sec, or 120 BPM</p>
-<p class="p5">timeNow = <span class="s2">TempoClock</span>.default.beats;</p>
-<p class="p5"><span class="s3">"Time is now: "</span>.post; timeNow.postln;</p>
-<p class="p5"><span class="s3">"Scheduling for: "</span>.post; (timeNow + 5).postln;</p>
-<p class="p5"><span class="s2">TempoClock</span>.default.schedAbs(timeNow + 5,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">"Time is later: "</span>.post; <span class="s2">thisThread</span>.clock.beats.postln; <span class="s2">nil</span> });</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p3">Notice that the 'Time is later' message shows up after a shorter delay, but the difference between the two times is still 5.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>What time is it?</b></p>
-<p class="p2"><br></p>
-<p class="p3">Inside a scheduled function, you might want to know which clock is running the function. <b>thisThread.clock</b> tells you this -- don't worry for now about how it knows, just know that you can use this to find out.</p>
-<p class="p2"><br></p>
-<p class="p3">Once you know the clock, you can find out what time it is using <b>beats</b>:</p>
-<p class="p2"><br></p>
-<p class="p7">SystemClock<span class="s6">.beats;</span></p>
-<p class="p5"><span class="s2">TempoClock</span>.default.beats;</p>
-<p class="p7">AppClock<span class="s6">.beats;</span></p>
-<p class="p5"><span class="s2">thisThread</span>.clock.beats;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>What can you schedule?</b></p>
-<p class="p2"><br></p>
-<p class="p3">Suppose we schedule "hello" by itself.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s2">TempoClock</span>.default.sched(5, <span class="s3">"hello"</span>);</p>
-<p class="p2"><br></p>
-<p class="p3">Nothing happens. That's because "hello" is just a value -- it doesn't do anything. The lesson is that it makes sense to schedule objects that will <i>take some action</i>.</p>
-<p class="p2"><br></p>
-<p class="p3">Function</p>
-<p class="p3">Routine</p>
-<p class="p3">Task</p>
-<p class="p2"><br></p>
-<p class="p3">Routines and Tasks will be covered in the next section, and Functions we have already seen. There are some others, but these are the best starting point.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Caution</b></p>
-<p class="p2"><br></p>
-<p class="p3">If you schedule function that returns a number, the clock will treat that number as the amount of time before running the function again.</p>
-<p class="p2"><br></p>
-<p class="p6">// fires many times (but looks like it should fire just once)</p>
-<p class="p5"><span class="s2">TempoClock</span>.default.sched(1, { rrand(1, 3).postln; });</p>
-<p class="p2"><br></p>
-<p class="p3">This will keep going forever, until you stop it with cmd-.</p>
-<p class="p2"><br></p>
-<p class="p3">If you want the function to run only once, make sure to end the function with 'nil':</p>
-<p class="p2"><br></p>
-<p class="p6">// fires once</p>
-<p class="p5"><span class="s2">TempoClock</span>.default.sched(1, { rrand(1, 3).postln; <span class="s2">nil</span> });</p>
-<p class="p2"><br></p>
-<p class="p3">It's easy to return a number by mistake, and get an ongoing activity when you wanted a one-shot action.</p>
-<p class="p2"><br></p>
-<p class="p3">If that number happens to be 0, or negative, something worse happens. The function will run again immediately. And, if the number is always 0, it creates an infinite loop that can lock up SuperCollider.</p>
-<p class="p2"><br></p>
-<p class="p3">That shouldn't scare you off of scheduling -- this is less likely to happen with Routines and Tasks, which you will use more often. But you should be aware of it.</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s6">For more:<span class="Apple-tab-span">	</span><a href="../../Scheduling/SystemClock.html"><span class="s7">SystemClock</span></a><span class="Apple-tab-span">	</span><a href="../../Scheduling/TempoClock.html"><span class="s7">TempoClock</span></a><span class="Apple-tab-span">	</span><a href="../../Scheduling/AppClock.html"><span class="s7">AppClock</span></a></span></p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="../../Core/Kernel/Function.html"><span class="s7">Function</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Sequencing with Routines and Tasks.html"><span class="s8">Sequencing with Routines and Tasks</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s9">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Scoping and Plotting.html b/Help/Tutorials/Getting-Started/Scoping and Plotting.html
deleted file mode 100644
index e8e9d92..0000000
--- a/Help/Tutorials/Getting-Started/Scoping and Plotting.html	
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {color: #0019b7}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Scoping Out Some Plots</b></p>
-<p class="p2"><br></p>
-<p class="p3">Function has two other useful audio related methods. The first you've already seen some results of, Function-plot:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s1">PinkNoise</span>.ar(0.2) + <span class="s1">SinOsc</span>.ar(440, 0, 0.2) + <span class="s1">Saw</span>.ar(660, 0.2) }.plot;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This makes a graph of the signal produced by the output of the Function. You can specify some arguments, such as the duration. The default is 0.01 seconds, but you can set it to anything you want.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s1">PinkNoise</span>.ar(0.2) + <span class="s1">SinOsc</span>.ar(440, 0, 0.2) + <span class="s1">Saw</span>.ar(660, 0.2) }.plot(1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This can be useful to check what's happening, and if you're getting the output you think you're getting.</p>
-<p class="p4"><br></p>
-<p class="p3">The second method, Function-scope, shows an oscilloscope-like display of the Function's output. This only works with what is called the internal server, so you'll need to boot that before it will work. You can do this using the internal server window</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s2"><img src="attachments/Scoping and Plotting/Pasted Graphic.png" alt="attachments/Scoping and Plotting/Pasted Graphic.png"></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">or you can do it in code, like so:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>Server.internal.boot;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">BTW, clicking on the '-> default' button on the localhost or internal server's window sets that server to be the default, and stores it in the variable 's'. Thereafter, that will be the server on which all audio is played, unless you specify another one. Since Function-scope only works with the internal server, however, it will always play on it.</p>
-<p class="p4"><br></p>
-<p class="p3">So let's try to scope some audio:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s1">PinkNoise</span>.ar(0.2) + <span class="s1">SinOsc</span>.ar(440, 0, 0.2) + <span class="s1">Saw</span>.ar(660, 0.2) }.scope;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This should open a window which looks something like this:</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s2"><img src="attachments/Scoping and Plotting/Pasted Graphic 1.png" alt="attachments/Scoping and Plotting/Pasted Graphic 1.png"></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">This also works for multiple channels:</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ [<span class="s1">SinOsc</span>.ar(440, 0, 0.2), <span class="s1">SinOsc</span>.ar(442, 0, 0.2)] }.scope;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Scope also has a zoom argument. Higher values 'zoom out'.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ [<span class="s1">SinOsc</span>.ar(440, 0, 0.2), <span class="s1">SinOsc</span>.ar(442, 0, 0.2)] }.scope(zoom: 10);</p>
-<p class="p4"><br></p>
-<p class="p3">Like Function-plot, Function-scope can be useful for testing purposes, and to see if you're actually getting out what you think you are.</p>
-<p class="p4"><br></p>
-<p class="p8"><b>Scoping on Demand</b></p>
-<p class="p4"><br></p>
-<p class="p3">You can also scope the output of the internal server at any time, by calling 'scope' on it.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ [<span class="s1">SinOsc</span>.ar(440, 0, 0.2), <span class="s1">SinOsc</span>.ar(442, 0, 0.2)] }.play(<span class="s1">Server</span>.internal);</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s1">Server</span><span class="s3">.internal.scope; </span>// you could also use 's' if the internal is the default</p>
-<p class="p10"><br></p>
-<p class="p3">You can do the same thing by clicking on the internal server window and pressing the 's' key.</p>
-<p class="p10"><br></p>
-<p class="p8"><b>Local vs. Internal</b></p>
-<p class="p4"><br></p>
-<p class="p3">If you're wondering what's the difference between the local and the internal servers, it's relatively straightforward: The internal server runs as a process within the client app; basically a program within a program. The main advantage of this is that it allows the two applications to share memory, which allows for things like realtime scoping of audio. The disadvantage is that the two are then interdependent, so if the client crashes, so does the server.</p>
-<p class="p4"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><br></p>
-<p class="p11"><a href="../../Core/Kernel/Function.html">Function</a><span class="s3"><b> </b><a href="../../ServerArchitecture/Server.html"><span class="s2">Server</span></a><b> </b><a href="../../GUI/Main-GUI/Stethoscope.html"><span class="s2">Stethoscope</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p8"><b>Suggested Exercise:</b></p>
-<p class="p10"><br></p>
-<p class="p3">Experiment with scoping and plotting some of the Function examples from earlier sections, or some Functions of your own creation. Try experimenting with different duration or zoom values.</p>
-<p class="p4"><br></p>
-<p class="p3">____________________</p>
-<p class="p4"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p4"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Getting Help.html"><span class="s4">Getting Help</span></a></p>
-<p class="p4"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s4">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Sequencing with Patterns.html b/Help/Tutorials/Getting-Started/Sequencing with Patterns.html
deleted file mode 100644
index 514749b..0000000
--- a/Help/Tutorials/Getting-Started/Sequencing with Patterns.html	
+++ /dev/null
@@ -1,234 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0021be}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #b2140d}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c6f14}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-span.s1 {color: #000000}
-span.s2 {color: #0021be}
-span.s3 {color: #2c6f14}
-span.s4 {text-decoration: underline ; color: #002ff3}
-span.s5 {text-decoration: underline}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #0042e1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Sequencing with Patterns</b></p>
-<p class="p2"><br></p>
-<p class="p3">The previous section demonstrated how to use data routines to generate sequences of synthesis parameters. However, writing a routine with explicit yields is not a very convenient syntax. Since this is an essential part of creating computer music, we really need an easier way.</p>
-<p class="p2"><br></p>
-<p class="p3">Patterns greatly simplify the use of data streams. A pattern is essentially a factory for a stream. The pattern objects includes the data you want to come out of the stream, and the type of pattern determines how the data will be streamed.</p>
-<p class="p2"><br></p>
-<p class="p3">For example, we used this routine to output MIDI note numbers to play a couple of phrases from 'Over the Rainbow.'</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">r = </span>Routine<span class="s1">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[60, 72, 71, 67, 69, 71, 72, 60, 69, 67].do({ <span class="s2">|midi|</span> midi.yield });</p>
-<p class="p5">});</p>
-<p class="p6"><br></p>
-<p class="p5">while { (m = r.next).notNil } { m.postln };</p>
-<p class="p2"><br></p>
-<p class="p3">With patterns, we can express the idea of a stream returning the same values, but more clearly and concisely. Because we don't have to write the yield explicitly, there is nothing in the pattern to distract attention from the data (which are the real concern in composition).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pseq</b> (Pattern-sequence) means simply to spit out the values in the array one by one, in order, as many times as the second argument (here, only once).</p>
-<p class="p2"><br></p>
-<p class="p5">p = <span class="s2">Pseq</span>([60, 72, 71, 67, 69, 71, 72, 60, 69, 67], 1);</p>
-<p class="p5">r = p.asStream;</p>
-<p class="p5">while { (m = r.next).notNil } { m.postln };</p>
-<p class="p2"><br></p>
-<p class="p3">Note that the Pseq is not streamable by itself, but it creates a stream (Routine) when you call asStream on it. This routine can then be used exactly like to any other routine -- the while loop used to read out the stream values is exactly the same for both, even though they are written differently.</p>
-<p class="p2"><br></p>
-<p class="p3">Thus the 'Over the Rainbow' example could be rewritten, with less clutter:</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s2">var</span> midi, dur;</p>
-<p class="p5">midi = <span class="s2">Pseq</span>([60, 72, 71, 67, 69, 71, 72, 60, 69, 67], 1).asStream;</p>
-<p class="p5">dur = <span class="s2">Pseq</span>([2, 2, 1, 0.5, 0.5, 1, 1, 2, 2, 3], 1).asStream;</p>
-<p class="p6"><br></p>
-<p class="p4">SynthDef<span class="s1">(</span><span class="s3">\smooth</span><span class="s1">, { </span>|freq = 440, sustain = 1, amp = 0.5|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>sig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s2">SinOsc</span>.ar(freq, 0, amp) * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.linen(0.05, sustain, 0.1), doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, sig ! 2)</p>
-<p class="p5">}).send(s);</p>
-<p class="p6"><br></p>
-<p class="p5">r = <span class="s2">Task</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>delta;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>while {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta = dur.next;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta.notNil</p>
-<p class="p5"><span class="Apple-tab-span">	</span>} {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s3">\smooth</span>, [freq: midi.next.midicps, sustain: delta]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}).play(quant: <span class="s2">TempoClock</span>.default.beats + 1.0);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p7"><b>What else can patterns do?</b></p>
-<p class="p2"><br></p>
-<p class="p3">The SuperCollider pattern library is large (over 120 classes, not including extension libraries), obviously beyond the scope of a tutorial to cover in depth. But some patterns you'll come back to again and again.</p>
-<p class="p2"><br></p>
-<p class="p3">Many patterns take lists of values and return them in some order.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pseq(list, repeats, offset)</b> -- return the list's values in order</p>
-<p class="p3"><b>Pshuf(list, repeats)</b> -- scramble the list into random order</p>
-<p class="p3"><b>Prand(list, repeats)</b> -- choose from the list's values randomly</p>
-<p class="p3"><b>Pxrand(list, repeats)</b> -- choose randomly, but never return the same list item twice in a row</p>
-<p class="p3"><b>Pwrand(list, weights, repeats)</b> -- like Prand, but chooses values according to a list of probabilities/weights</p>
-<p class="p2"><br></p>
-<p class="p3">Other patterns generate values according to various parameters. In addition to these basic patterns, there is a whole set of random number generators that produce specific distributions, and also chaotic functions.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pseries(start, step, length)</b> -- arithmetic series, e.g., 1, 2, 3, 4, 5</p>
-<p class="p3"><b>Pgeom(start, grow, length)</b> -- geometric series, e.g., 1, 2, 4, 8, 16</p>
-<p class="p3"><b>Pwhite(lo, hi, length)</b> -- random number generator, uses rrand(lo, hi) -- equal distribution</p>
-<p class="p3"><b>Pexprand(lo, hi, length)</b> -- random number generator, uses exprand(lo, hi) -- exponential distribution</p>
-<p class="p2"><br></p>
-<p class="p3">Other patterns modify the output of value patterns. These are called FilterPatterns.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pn(pattern, repeats)</b> -- repeat the pattern as many times as repeats indicates</p>
-<p class="p3"><b>Pstutter(n, pattern)</b> -- repeat individual values from a pattern <i>n</i> times. <i>n</i> may be a numeric pattern itself.</p>
-<p class="p2"><br></p>
-<p class="p3">You can use patterns inside of other patterns. Here, we generate random numbers over a gradually increasing range. The upper bound on the random number generator is a stream that starts at 0.01, then proceeds to 0.02, 0.03 and so on, as the plot shows clearly.</p>
-<p class="p2"><br></p>
-<p class="p5">p = <span class="s2">Pwhite</span>(0.0, <span class="s2">Pseries</span>(0.01, 0.01, <span class="s2">inf</span>), 100).asStream;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// .all pulls from the stream until it returns nil</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// obviously you don't want to do this for an 'inf' length stream!</p>
-<p class="p5">p.all.plot;</p>
-<p class="p2"><br></p>
-<p class="p3">Or, for another example, if you want to order a set of numbers randomly so that all numbers come out before a new order is chosen, use Pn to repeat a Pshuf.</p>
-<p class="p2"><br></p>
-<p class="p5">p = <span class="s2">Pn</span>(<span class="s2">Pshuf</span>([1, 2, 3, 4, 5], 1), <span class="s2">inf</span>).asStream;</p>
-<p class="p8"><span class="s1">p.nextN(15);<span class="Apple-tab-span">	</span></span>// get 15 values from the pattern's stream</p>
-<p class="p2"><br></p>
-<p class="p3">This is just a taste, meant to illustrate the kinds of flexibility you can get with patterns. As with any rich and adaptable structure, the best way is to start with simple cases and gradually extend into more complicated setups.</p>
-<p class="p2"><br></p>
-<p class="p7"><b>Playing notes with a pattern: Pbind</b></p>
-<p class="p2"><br></p>
-<p class="p3">Not only can patterns produce data for notes, but they can also play the notes themselves. 'Over the Rainbow' again.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p4">SynthDef<span class="s1">(</span><span class="s3">\smooth</span><span class="s1">, { </span>|freq = 440, sustain = 1, amp = 0.5|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>sig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s2">SinOsc</span>.ar(freq, 0, amp) * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.linen(0.05, <span class="s2">sustain</span>, 0.1), doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, sig ! 2)</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">p = <span class="s2">Pbind</span>(</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the name of the SynthDef to use for each note</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span>\instrument<span class="s1">, </span>\smooth<span class="s1">,</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// MIDI note numbers -- converted automatically to Hz</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s2">Pseq</span>([60, 72, 71, 67, 69, 71, 72, 60, 69, 67], 1),</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// rhythmic values</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">\</span><span class="s2">dur</span>, <span class="s2">Pseq</span>([2, 2, 1, 0.5, 0.5, 1, 1, 2, 2, 3], 1)</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p3">The first thing to notice is how short, concise and clean the syntax is. Nothing is extra; it focuses all your attention on what is supposed to play and minimizes distractions from program logic.</p>
-<p class="p2"><br></p>
-<p class="p3">The <a href="../../Streams-Patterns-Events/Streams.html"><span class="s4">Streams</span></a> documentation explains how all of this works in detail. The high-level overview goes like this:</p>
-<p class="p2"><br></p>
-<p class="p3">- The Pbind pattern generates Event objects, which contain names and values describing how the note is supposed to sound.</p>
-<p class="p2"><br></p>
-<p class="p3">- It does this by reading through the 'name, pattern' pairs, getting values from each pattern stream in turn and adding the values to the result Event.</p>
-<p class="p2"><br></p>
-<p class="p3">- Then the event is played. It interprets the values according to a set of defaults and rules encoded within the event prototype and performs an action in response. The default action is to play a new synth on the server. You can choose from several other actions defined in the default event prototype, which are documented in the Streams series of help files.</p>
-<p class="p2"><br></p>
-<p class="p3">- To play the synth, the event needs to know which values to pass as arguments to the server. SuperCollider can store information about a synthdef into a library of synthdef descriptions using the <b>add</b> method.</p>
-<p class="p2"><br></p>
-<p class="p3">- The delta value in the event tells SuperCollider how long to wait until playing the next event.</p>
-<p class="p2"><br></p>
-<p class="p3">An introductory tutorial cannot cover all the possibilities. Learning a set of core pattern classes is important; the <a href="../../Streams-Patterns-Events/A%20Practical%20Guide/PG_01_Introduction.html"><span class="s4">Practical Guide to Patterns</span></a> help file series is a more comprehensive introduction. Pattern manipulations, and ways to combine or nest patterns, open up the field to nearly every compositional need.</p>
-<p class="p2"><br></p>
-<p class="p3">For example, we can generate a rhythmic (but not necessarily metric) bassline by choosing randomly from a set of Pbind sequences. (Some of these will use Pmono, which is a variant of Pbind designed to play monophonic synth lines.) While this is a bigger block of code, its structure is fairly simple and it brings together several concepts introduced in the sequencing tutorials. Note that the quant argument to play is used to keep a couple of distinct sequences together on the beat.</p>
-<p class="p2"><br></p>
-<p class="p3">Don't be intimidated by the bassline pattern. At a higher level, it reduces to <b>Pxrand([a, b, c, d], inf)</b>, which simply chooses items randomly without repeating any of them twice in a row. It happens that each item is an event pattern that plays a series of notes, but this doesn't matter to Pxrand. It just chooses an item, plays it through to the end, and then chooses the next, and so forth. Viewed this way, the pattern is an elegant expression of the idea of selecting phrases. The code representation is straightforward to relate to a musical conception.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p4">SynthDef<span class="s1">(</span><span class="s3">\bass</span><span class="s1">, { </span>|freq = 440, gate = 1, amp = 0.5, slideTime = 0.17, ffreq = 1100, width = 0.15,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>detune = 1.005, preamp = 4|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>sig,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s2">Env</span>.adsr(0.01, 0.3, 0.4, 0.1);<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s2">Lag</span>.kr(freq, slideTime);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s2">Mix</span>(<span class="s2">VarSaw</span>.ar([freq, freq * detune], 0, width, preamp)).distort * amp</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">EnvGen</span>.kr(env, gate, doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s2">LPF</span>.ar(sig, ffreq);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, sig ! 2)</p>
-<p class="p5">}).add;</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s2">TempoClock</span>.default.tempo = 132/60;</p>
-<p class="p6"><br></p>
-<p class="p5">p = <span class="s2">Pxrand</span>([</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>Pbind<span class="s1">(</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s1">, </span>\bass<span class="s1">,</span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\midinote<span class="s1">, 36,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Pseq</span>([0.75, 0.25, 0.25, 0.25, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\legato</span>, <span class="s2">Pseq</span>([0.9, 0.3, 0.3, 0.3, 0.3], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.5, <span class="s3">\detune</span>, 1.005</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>Pmono<span class="s1">(</span><span class="s3">\bass</span><span class="s1">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s2">Pseq</span>([36, 48, 36], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Pseq</span>([0.25, 0.25, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.5, <span class="s3">\detune</span>, 1.005</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>Pmono<span class="s1">(</span><span class="s3">\bass</span><span class="s1">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s2">Pseq</span>([36, 42, 41, 33], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Pseq</span>([0.25, 0.25, 0.25, 0.75], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.5, <span class="s3">\detune</span>, 1.005</p>
-<p class="p5"><span class="Apple-tab-span">	</span>),</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>Pmono<span class="s1">(</span><span class="s3">\bass</span><span class="s1">,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\midinote</span>, <span class="s2">Pseq</span>([36, 39, 36, 42], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\dur</span>, <span class="s2">Pseq</span>([0.25, 0.5, 0.25, 0.5], 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">\amp</span>, 0.5, <span class="s3">\detune</span>, 1.005</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">], <span class="s2">inf</span>).play(quant: 1);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p8">// totally cheesy, but who could resist?</p>
-<p class="p5">(</p>
-<p class="p4">SynthDef<span class="s1">(</span><span class="s3">\kik</span><span class="s1">, { </span>|preamp = 1, amp = 1|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>freq = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>([400, 66], [0.08], -3)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sig = <span class="s2">SinOsc</span>.ar(freq, 0.5pi, preamp).distort * amp</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>([0, 1, 0.8, 0], [0.01, 0.1, 0.2]), doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, sig ! 2);</p>
-<p class="p5">}).add;</p>
-<p class="p6"><br></p>
-<p class="p8">// before you play:</p>
-<p class="p8">// what do you anticipate '\delta, 1' will do?</p>
-<p class="p5">k = <span class="s2">Pbind</span>(<span class="s3">\instrument</span>, <span class="s3">\kik</span>, <span class="s3">\delta</span>, 1, <span class="s3">\preamp</span>, 4.5, <span class="s3">\amp</span>, 0.32).play(quant: 1);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">p.stop;</p>
-<p class="p5">k.stop;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Further reading:</b></p>
-<p class="p2"><br></p>
-<p class="p10"><span class="s5"><a href="../../Streams-Patterns-Events/Streams.html">Streams</a></span><span class="s1"><span class="Apple-tab-span">	</span><a href="../../Streams-Patterns-Events/Streams-Patterns-Events1.html"><span class="s6">Streams-Patterns-Events</span></a><span class="Apple-tab-span">	</span><a href="../../Streams-Patterns-Events/A%20Practical%20Guide/PG_01_Introduction.html"><span class="s4">Practical Guide to Patterns</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p7"><b>Suggested exercises:</b></p>
-<p class="p2"><br></p>
-<p class="p3">- Choose a familiar tune and write a Pbind for it, using any synthdef you like.</p>
-<p class="p3">- Add as many phrases as you wish to the bassline sequence in the previous example.</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s7">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Sequencing with Routines and Tasks.html b/Help/Tutorials/Getting-Started/Sequencing with Routines and Tasks.html
deleted file mode 100644
index 6b881f7..0000000
--- a/Help/Tutorials/Getting-Started/Sequencing with Routines and Tasks.html	
+++ /dev/null
@@ -1,264 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.33">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0036ec}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0033dd}
-span.s1 {color: #000000}
-span.s2 {color: #606060}
-span.s3 {color: #001bb9}
-span.s4 {color: #007300}
-span.s5 {color: #0000bf}
-span.s6 {color: #2c7014}
-span.s7 {color: #0024f8}
-span.s8 {color: #0036ec}
-span.s9 {text-decoration: underline ; color: #0021e7}
-span.s10 {font: 12.0px Helvetica}
-span.s11 {text-decoration: underline ; color: #0033dd}
-span.s12 {color: #002bf8}
-span.s13 {color: #003fdc}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Sequencing with Routines and Tasks</b></p>
-<p class="p2"><br></p>
-<p class="p3">When you schedule a function (as in the Scheduling Events tutorial), the function always begins at the beginning and runs through to the end. For sequencing, it's more useful to have a control structure that can run part of the way through, return a value, and then pick up where it left off the next time it's needed. In SuperCollider, this is a Routine.</p>
-<p class="p2"><br></p>
-<p class="p3">Routines can be used for data processing, e.g.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">r = </span>Routine<span class="s1">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">"abcde"</span>.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">"fghij"</span>.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">"klmno"</span>.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">"pqrst"</span>.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">"uvwxy"</span>.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">"z{|}~"</span>.yield;</p>
-<p class="p5">});</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">r.next;<span class="Apple-tab-span">	</span></span>// get the next value from the Routine</p>
-<p class="p5">6.do({ r.next.postln });</p>
-<p class="p2"><br></p>
-<p class="p3">The first time you call next, the routine yields <b>"abcde"</b>. This yield value becomes the result of r.next, and is printed in the post window. On the second next call, execution picks up just after the first yield and continues with the second string, and so forth. When there is nothing more to yield, r.next returns nil.</p>
-<p class="p2"><br></p>
-<p class="p3">We will come back to the use of routines for data generation. More important for sequencing is what happens when you schedule a routine on a clock, and the routine returns time values.</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Scheduling routines</b></p>
-<p class="p2"><br></p>
-<p class="p3">Recall that, when you schedule a function on a clock, numbers returned by the function are treated as time values -- specifically, the amount of time until the function should execute again. The same thing happens with numbers yielded by a routine.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">r = </span>Routine<span class="s1">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span><span class="Apple-tab-span">	</span>delta;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta = rrand(1, 3) * 0.5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">"Will wait "</span>.post; delta.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">});</p>
-<p class="p6"><br></p>
-<p class="p5">r.next;</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3">TempoClock</span>.default.sched(0, r);</p>
-<p class="p6"><br></p>
-<p class="p5">r.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">Now let's replace the posting statements with instructions to play a synth. Preparation:</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p9">SynthDef<span class="s1">(</span><span class="s4">\singrain</span><span class="s1">, { </span>|freq = 440, amp = 0.2, sustain = 1|</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s5">var</span><span class="Apple-tab-span">	</span>sig;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>sig = <span class="s5">SinOsc</span>.ar(freq, 0, amp) * <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(0.01, sustain), doneAction: 2);</p>
-<p class="p11"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s5">Out</span><span class="s1">.ar(0, sig ! 2);<span class="Apple-tab-span">	</span></span>// sig ! 2 is the same as [sig, sig]</p>
-<p class="p10">}).send(s);</p>
-<p class="p12"><br></p>
-<p class="p9"><span class="s1">r = </span>Routine<span class="s1">({</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s5">var</span><span class="Apple-tab-span">	</span>delta;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta = rrand(1, 3) * 0.5;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Synth</span>(<span class="s4">\singrain</span>, [freq: exprand(200, 800), amp: rrand(0.1, 0.5), sustain: delta * 0.8]);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta.yield;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">});</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p3">Scheduling a routine makes a certain sense, but playing a routine seems more intuitive.</p>
-<p class="p2"><br></p>
-<p class="p5">r.play;</p>
-<p class="p6"><br></p>
-<p class="p5">r.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">There you go -- our first sequence.</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Pause and resume: Task</b></p>
-<p class="p2"><br></p>
-<p class="p3">Routines have one sticky little characteristic that can limit their usefulness as musical objects. Once you stop a routine, you can only start it over again from the beginning. There is no way to replay the routine from the point where it was stopped.</p>
-<p class="p2"><br></p>
-<p class="p3">Task is a variation that can be paused and resumed at will. For example, let's iterate over a C major scale. Note that all of SuperCollider's control structures are valid inside a Routine or Task. Note also that we can use 'wait' as a synonym for 'yield'.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">t = <span class="s3">Task</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[60, 62, 64, 65, 67, 69, 71, 72].do({ <span class="s3">|midi|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s6">\singrain</span>, [freq: midi.midicps, amp: 0.2, sustain: 0.1]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.125.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// probably stops in the middle of the scale</p>
-<p class="p5">t.stop;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">t.play;<span class="Apple-tab-span">	</span></span>// should pick up with the next note</p>
-<p class="p6"><br></p>
-<p class="p5">t.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">Task will be used for the remainder of this tutorial.</p>
-<p class="p2"><br></p>
-<p class="p8"><b>When do you want to start?</b></p>
-<p class="p2"><br></p>
-<p class="p3">By default, <b>play</b> applied to a Task starts the Task immediately. Most of the time, many tasks will be running simultaneously, and they should be synchronized. While there might be a virtuoso out there somewhere who can hit the enter key at just right time for precise sync, most of us would prefer a more reliable mechanism.</p>
-<p class="p2"><br></p>
-<p class="p3">Play takes several arguments to control its behavior.</p>
-<p class="p2"><br></p>
-<p class="p5">aRoutine.play(clock, quant)</p>
-<p class="p5">aTask.play(argClock, doReset, quant)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>clock</b> (Routine) or <b>argClock</b> (Task): Which clock should handle scheduling for this sequence</p>
-<p class="p3"><b>doReset</b> (Task only): If true, reset the sequence to the beginning before playing; if false (default), resume</p>
-<p class="p3"><b>quant</b>: A specification of the exact starting time</p>
-<p class="p2"><br></p>
-<p class="p3">The quant argument uses a basic model of two numbers, which can be related to the western concept of meter:</p>
-<p class="p2"><br></p>
-<p class="p3">quant: Corresponds roughly to bar length; the current time is rounded up to the next multiple of this number</p>
-<p class="p3">phase: Position within the bar (0 = beginning of the bar)</p>
-<p class="p2"><br></p>
-<p class="p3">For convenience, if you just want to start at the beginning of the bar, you can give the bar length as a number. An array of two numbers tells SuperCollider the bar length and the phase.</p>
-<p class="p2"><br></p>
-<p class="p3">To see how this works in practice, let's take the C major scale above and play two copies of it slightly offset. We'll slow the rhythm down to 16th-notes (0.25) and start the second one 8th-note into the bar. We will need two tasks to do this, which will be manufactured in a function.</p>
-<p class="p2"><br></p>
-<p class="p5">f = {</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>Task<span class="s1">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[60, 62, 64, 65, 67, 69, 71, 72].do({ <span class="s3">|midi|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s6">\singrain</span>, [freq: midi.midicps, amp: 0.2, sustain: 0.1]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">};</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">t = f.value.play(quant: 4);<span class="Apple-tab-span">	</span></span>// start on next 4-beat boundary</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">u = f.value.play(quant: [4, 0.5]);<span class="Apple-tab-span">	</span></span>// next 4-beat boundary + a half-beat</p>
-<p class="p6"><br></p>
-<p class="p5">t.stop; u.stop;</p>
-<p class="p2"><br></p>
-<p class="p8"><b>Using data routines in note sequencing</b></p>
-<p class="p2"><br></p>
-<p class="p3">The previous example controls the generation of one parameter (pitch) by looping over an array inside the Task. What if you want to control several parameters?</p>
-<p class="p2"><br></p>
-<p class="p3">Remember that routines can also generate data, in addition to their scheduling capabilities. You can refer to as many data routines as you want in your sequence.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">var</span> midi, dur;</p>
-<p class="p5">midi = <span class="s3">Routine</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[60, 72, 71, 67, 69, 71, 72, 60, 69, 67].do({ <span class="s3">|midi|</span> midi.yield });</p>
-<p class="p5">});</p>
-<p class="p5">dur = <span class="s3">Routine</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[2, 2, 1, 0.5, 0.5, 1, 1, 2, 2, 3].do({ <span class="s3">|dur|</span> dur.yield });</p>
-<p class="p5">});</p>
-<p class="p6"><br></p>
-<p class="p4">SynthDef<span class="s1">(</span><span class="s6">\smooth</span><span class="s1">, { </span>|freq = 440, sustain = 1, amp = 0.5|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span><span class="Apple-tab-span">	</span>sig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s3">SinOsc</span>.ar(freq, 0, amp) * <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.linen(0.05, sustain, 0.1), doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, sig ! 2)</p>
-<p class="p5">}).send(s);</p>
-<p class="p6"><br></p>
-<p class="p5">r = <span class="s3">Task</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span><span class="Apple-tab-span">	</span>delta;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>while {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta = dur.next;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta.notNil</p>
-<p class="p5"><span class="Apple-tab-span">	</span>} {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s6">\smooth</span>, [freq: midi.next.midicps, sustain: delta]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delta.yield;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}).play(quant: <span class="s3">TempoClock</span>.default.beats + 1.0);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p3">Note that routines are used for the data, but task is used for play. Also, unlike the previous infinite sequences, this one stops when it runs out of data. That's the purpose of the while loop -- it continues only as long as the 'dur' data stream keeps pumping out values. (See the <a href="../../Language/Control-Structures.html"><span class="s7">Control-Structures</span></a> helpfile for more on <b>while</b>.)</p>
-<p class="p2"><br></p>
-<p class="p3">There must be an easier way to write the data streams -- repeatedly writing the same do loop is certainly inconvenient. In fact, there is such a way, covered in the next tutorial: sequencing with patterns.</p>
-<p class="p2"><br></p>
-<p class="p3">(Here we use quant simply to delay Task onset by one beat.<span class="Apple-converted-space">  </span>This is because it takes some time for the synthdef to be ready for use on the server. Without it, the first note would not be heard.)</p>
-<p class="p2"><br></p>
-<p class="p8"><b>A note on server messaging and timing</b></p>
-<p class="p2"><br></p>
-<p class="p3">Using Synth as in the preceding examples can result in small but sometimes noticeable timing inaccuracies. This is because it takes a short time to transmit OSC messages from your code to the server, and this time is not always constant. SuperCollider deals with this by giving you the option to send the message with a timestamp telling the server exactly when the message should take effect. A <b>latency</b> value is used to calculate the timestamp.</p>
-<p class="p2"><br></p>
-<p class="p3">Latency works by adding itself to the current time on the clock. If all the messages go out with the same latency value, their timing will be precise relative to each other and to the clock. The <a href="../../ServerArchitecture/ServerTiming.html"><span class="s8">ServerTiming</span></a> help file explains in more detail how this works, but you don't really need to know all of that in order to use it. The main point is to use a consistent, small latency value for perfect timing. (A Server object has a latency variable that you can use for consistency.)</p>
-<p class="p2"><br></p>
-<p class="p3">Here's an example illustrating the kinds of inaccuracy you might hear. The inaccuracy may be more or less noticeable on different systems. It uses the \singrain SynthDef above and plays 10 notes per second.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">t = <span class="s3">Task</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s6">\singrain</span>, [freq: exprand(400, 1200), sustain: 0.08]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">t.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">The easiest way to add latency to your outgoing Synths is with the Server <b>makeBundle</b> method. Don't worry about how it works for now -- the important thing is that it uses the first value for latency, and runs the messages produced by the function according to that latency.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">t = <span class="s3">Task</span>({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.makeBundle(s.latency, {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s6">\singrain</span>, [freq: exprand(400, 1200), sustain: 0.08]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">t.stop;</p>
-<p class="p2"><br></p>
-<p class="p3">See also:</p>
-<p class="p2"><br></p>
-<p class="p13"><span class="s9"><a href="../../Core/Kernel/Routine.html">Routine</a></span><span class="s1"><span class="Apple-tab-span">	</span><a href="../../Scheduling/Task.html"><span class="s10">Task</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="../../Scheduling/Quant.html"><span class="s10">Quant</span></a></span></p>
-<p class="p14"><span class="s9"><a href="../../ServerArchitecture/ServerTiming.html">ServerTiming</a></span><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><a href="../../ServerArchitecture/bundledCommands.html"><span class="s11">Bundled Server Messages</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p8"><b>Suggested Exercise:</b></p>
-<p class="p2"><br></p>
-<p class="p3">Make a more interesting SynthDef to replace the \smooth SynthDef. Use more arguments for greater variability. Then change the data streams in the 'Over the Rainbow' example and add new data streams to play a different tune, more expressively.</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Sequencing with Patterns.html"><span class="s12">Sequencing with Patterns</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s13">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/Start Your Engines.html b/Help/Tutorials/Getting-Started/Start Your Engines.html
deleted file mode 100644
index c352831..0000000
--- a/Help/Tutorials/Getting-Started/Start Your Engines.html	
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 9.0px Monaco; color: #002dad}
-span.s4 {color: #002dad}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0033f1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Start Your Engines</b></p>
-<p class="p2"><br></p>
-<p class="p3">Before we can make any sound, we need to start or 'boot' a server application. The easiest way to do this is to use one of the server windows which is automatically created by the client app. These can be found in the bottom left-hand corner of your screen. Look for the one that says 'localhost server'. It should look like this:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><img src="attachments/Start Your Engines/Pasted Graphic.png" alt="attachments/Start Your Engines/Pasted Graphic.png"></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">'localhost' just means on your local computer, as opposed to running on a different computer connected by a network. To start the server click on the 'Boot' button, or click on the window and press the space bar. After a second or two it should look something like this:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><img src="attachments/Start Your Engines/Pasted Graphic_1.png" alt="attachments/Start Your Engines/Pasted Graphic_1.png"></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Notice that the white status box has changed from 'inactive' to 'running', and that the 'Boot' button has changed to 'Quit'. This indicates that the server is running. As well the window provides you with some information about CPU usage, and some other things which probably aren't too clear yet. More about them soon.</p>
-<p class="p2"><br></p>
-<p class="p3">Also take a look at the post window, where SC has given you some info, and let you know that it booted okay:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>booting 57110</p>
-<p class="p5"><span class="Apple-tab-span">	</span>SC_AudioDriver: numSamples=512, sampleRate=44100.000000</p>
-<p class="p5"><span class="Apple-tab-span">	</span>start <span class="Apple-converted-space">  </span>UseSeparateIO?: 0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>PublishPortToRendezvous 0 57110</p>
-<p class="p5"><span class="Apple-tab-span">	</span>SuperCollider 3 server ready..</p>
-<p class="p5"><span class="Apple-tab-span">	</span>notification is on</p>
-<p class="p2"><br></p>
-<p class="p3">If for some reason it had failed to boot, there would be some information indicating that.</p>
-<p class="p2"><br></p>
-<p class="p3">By default you can refer to the localhost server in your code by using the letter <span class="s2">s</span>. You can thus send messages to start and stop it like so:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.quit;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p3">Try this out and then leave the server running. Many examples in the documentation have <span class="s2">s.boot</span> at the beginning, but in general you should make sure the server is running before using any examples that generate audio, or otherwise access the server. In general the examples in this tutorial assume that the server is running.</p>
-<p class="p2"><br></p>
-<p class="p3">You can also refer to the localhost server with the text '<span class="s3">Server</span><span class="s2">.local</span>', for example:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s4">Server</span>.local.boot;</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5"><a href="../../ServerArchitecture/Server.html">Server</a></span></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Functions and Other Functionality.html"><span class="s6">Functions and Other Functionality</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s6">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/SynthDefs and Synths.html b/Help/Tutorials/Getting-Started/SynthDefs and Synths.html
deleted file mode 100644
index 8b97e00..0000000
--- a/Help/Tutorials/Getting-Started/SynthDefs and Synths.html	
+++ /dev/null
@@ -1,200 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {color: #000000}
-span.s2 {color: #0019b7}
-span.s3 {color: #606060}
-span.s4 {font: 12.0px Helvetica; color: #000000}
-span.s5 {font: 9.0px Monaco}
-span.s6 {color: #0000ff}
-span.s7 {color: #a71e12}
-span.s8 {font: 9.0px Monaco; color: #326f17}
-span.s9 {color: #326f17}
-span.s10 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SynthDefs and Synths</b></p>
-<p class="p2"><br></p>
-<p class="p3">Now that we've covered some basic information we're going to start looking at server abstractions, which are<span class="Apple-converted-space">  </span>the various classes in the language app which represent things on the server. When looking at these it is important to understand that these objects are just client-side <i>representations</i> of parts of the server's architecture, and should not be confused with those parts themselves. Server abstraction objects are simply conveniences.</p>
-<p class="p2"><br></p>
-<p class="p3">Distinguishing between the two can be a little confusing, so in general I refer herein to the client-side classes with uppercase names, and the corresponding aspects of server architecture with lowercase names, i.e. Synth vs. synth.</p>
-<p class="p2"><br></p>
-<p class="p3">You've already met one kind of server abstraction, class Server itself. The objects referred to by Server.local and Server.internal (and whichever one is stored in the interpreter variable 's' at any given moment) are instances of Server.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Now it's time to get familiar with the rest of them. The first thing we'll look at is the class SynthDef, which is short for 'synth definition'.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Meet the SynthDef</b></p>
-<p class="p2"><br></p>
-<p class="p3">Up until now we've been using Functions to generate audio. This way of working is very useful for quick testing, and in cases where maximum flexibility is needed. This is because each time we execute the code, the Function is evaluated anew, which means the results can vary greatly.</p>
-<p class="p2"><br></p>
-<p class="p3">The server, however, doesn't understand Functions, or OOP, or the SC language. It wants information on how to create audio output in a special form called a synth definition. A synth defintion is data about UGens and how they're interconnected. This is sent in a kind of special optimised form, called 'byte code', which the server can deal with very efficiently.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Once the server has a synth definition, it's can very efficiently use it to make a number of synths based on it. Synths on the server are basically just things that make or process sound, or produce control signals to drive other synths.</p>
-<p class="p2"><br></p>
-<p class="p3">This relationship between synth definitions and synths is something like that between classes and instances, in that the former is a template for the latter. But remember that the server app knows nothing about OOP.</p>
-<p class="p2"><br></p>
-<p class="p3">Luckily for us there are classes in the language such as SynthDef, which make is easy to create the necessary byte code and send it to the server, and to deal with synth definitions in an object oriented way.</p>
-<p class="p2"><br></p>
-<p class="p3">Whenever you use any of Function's audio creating methods what happens is that a corresponding instance of SynthDef is created 'behind the scenes', so to speak, and the necessary byte code is generated and sent to the server, where a synth is created to play the desired audio. So Function's audio methods provide a kind of convenience for you, so that you don't have to take care of this.</p>
-<p class="p2"><br></p>
-<p class="p3">So how do you make a SynthDef yourself? You use its 'new' method. Let's compare a by now familiar Function based example, and make an equivalent SynthDef. Like Function, SynthDef also has a convenient play method, so we can easily confirm that these two are equivalent.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>//first the Function</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s2">SinOsc</span>.ar(440, 0, 0.2) }.play;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>// now here's an equivalent SynthDef</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>.new(<span class="s3">"tutorial-SinOsc"</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(440, 0, 0.2)) }).play;</p>
-<p class="p2"><br></p>
-<p class="p3">SynthDef-new takes a number of arguments. The first is a name, usually in the form of a String as above. The second is in fact a Function. This argument is called a UGen Graph Function, as it tells the server how to connect together its various UGens.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>SynthDefs vs. Functions</b></p>
-<p class="p2"><br></p>
-<p class="p3">This UGen Graph Function we used in the second example above is similar to the Function we used in the first one, but with one notable difference: It has an extra UGen called Out. Out writes out an ar or kr signal to one of the server's busses, which can be thought of as mixer channels or outputs. We'll discuss busses in greater detail later, but for now just be aware that they're used for playing audio out of the computer, and for reading it in from sources such as microphones.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Out takes two arguments: The first is the index number of the bus to write out on. These start from 0, which on a stereo setup is usually the left output channel. The second is either a UGen or an Array of UGens. If you provide an array (i.e. a multichannel output) then the first channel will be played out on the bus with the indicated index, the second channel on the bus with the indicated index + 1, and so on.</p>
-<p class="p2"><br></p>
-<p class="p3">Here's a stereo example to make clear how this works. The SinOsc with the frequency argument of 440 Hz will be played out on bus 0 (the left channel), and the SinOsc with the frequency argument of 442 Hz will be played out on bus 1 (the right channel).</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">SynthDef</span><span class="s1">.new(</span>"tutorial-SinOsc-stereo"<span class="s1">, { </span><span class="s2">var</span><span class="s1"> outArray;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outArray = [<span class="s2">SinOsc</span>.ar(440, 0, 0.2), <span class="s2">SinOsc</span>.ar(442, 0, 0.2)];</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, outArray)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p3">When you use Function-play an Out UGen is in fact created for you if you do not explicitly create one. The default bus index for this Out UGen is 0.</p>
-<p class="p2"><br></p>
-<p class="p3">Both Function-play and SynthDef-play return another type of object, a Synth, which represents a synth on the server. If you store this object by assigning it to a variable you can control it's behaviour in various ways. For instance the method 'free' causes the synth on the server to stop playing and its memory and cpu resources to be freed.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = { <span class="s2">SinOsc</span>.ar(660, 0, 0.2) }.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>y = <span class="s2">SynthDef</span>.new(<span class="s3">"tutorial-SinOsc"</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(440, 0, 0.2)) }).play;</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>x.free;<span class="Apple-tab-span">	</span></span>// free just x</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>y.free;<span class="Apple-tab-span">	</span></span>// free just y</p>
-<p class="p2"><br></p>
-<p class="p3">This is more flexible than Cmd-., which frees all synths at once.</p>
-<p class="p2"><br></p>
-<p class="p3">SynthDef has two methods which cause the corresponding byte code to be sent to the server app without immediately creating a synth: send and load. The difference between these two is that send streams the definition over the network, and load writes the definiton to disk as a file so that the server can load it. Such a file will have the extension .scsyndef (so for example tutorial-SinOsc.scsyndef), and will be written into the synthdefs/ directory within the main SC directory. This will remain there until you specifically delete it, and will be loaded automatically whenever you boot a server.</p>
-<p class="p2"><br></p>
-<p class="p3">In general should use 'send' unless you're going to reuse the def all the time. It is however sometimes necessary to use 'load' with very large or complicated defs, due to limits on packet size on the network.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">You can create many, many Synths using the same Function or SynthDef, but using SynthDef has certain advantages, as well as certain limitations.</p>
-<p class="p2"><br></p>
-<p class="p3">Once you have a def in a server app, you can create many synths from it with a relatively low overhead of CPU. You can do this with Synth's new method, which takes a def's name as its first argument.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>.new(<span class="s3">"tutorial-PinkNoise"</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">PinkNoise</span>.ar(0.3)) }).send(s);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s1">.new(</span>"tutorial-PinkNoise"<span class="s1">);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>y = </span><span class="s2">Synth</span><span class="s1">.new(</span>"tutorial-PinkNoise"<span class="s1">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free; y.free;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This is more efficient than repeatedly calling play on the same Function, as it saves the effort of evaluating the Function, compiling the byte code, and sending it multiple times. In many cases this saving in CPU usage is so small as to be largely insignificant, but when doing things like 'mass producing' synths, this can be important.</p>
-<p class="p2"><br></p>
-<p class="p3">A corresponding limitation to working with SynthDefs directly is that the UGen Graph Function in a SynthDef is evaluated <i>once and only once</i>. (Remember that the server knows nothing about the SC language.) This means that it is somewhat less flexible. Compare these two examples:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>// first with a Function. Note the random frequency each time 'play' is called.</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f = { <span class="s2">SinOsc</span>.ar(440 + 200.rand, 0, 0.2) };</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = f.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>y = f.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = f.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free; y.free; z.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>// Now with a SynthDef. No randomness!</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s3">"tutorial-NoRand"</span>, { Out.ar(0, <span class="s2">SinOsc</span>.ar(440 + 200.rand, 0, 0.2)) }).send(s);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s1">(</span>"tutorial-NoRand"<span class="s1">);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>y = </span><span class="s2">Synth</span><span class="s1">(</span>"tutorial-NoRand"<span class="s1">);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>z = </span><span class="s2">Synth</span><span class="s1">(</span>"tutorial-NoRand"<span class="s1">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free; y.free; z.free;</p>
-<p class="p2"><br></p>
-<p class="p3">Each time you create a new Synth based on the def, the frequency is the same. This is because the Function (and thus <span class="s5">200.rand</span>) is only evaluated only once, when the SynthDef is created.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Creating Variety with SynthDefs</b></p>
-<p class="p2"><br></p>
-<p class="p3">There are numerous ways of getting variety out of SynthDefs, however. Some things, such as randomness, can be accomplished with various UGens. One example is <a href="../../UGens/Random/Rand.html"><span class="s6">Rand</span></a>, which calculates a random number between low and high values when a synth is first created:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>// With Rand, it works!</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s3">"tutorial-Rand"</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(<span class="s2">Rand</span>(440, 660), 0, 0.2)) }).send(s);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s1">(</span>"tutorial-Rand"<span class="s1">);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>y = </span><span class="s2">Synth</span><span class="s1">(</span>"tutorial-Rand"<span class="s1">);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>z = </span><span class="s2">Synth</span><span class="s1">(</span>"tutorial-Rand"<span class="s1">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free; y.free; z.free;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The <a href="../../UGens/UGens.html"><span class="s6">UGens</span></a><b> </b>overview lists a number of such UGens.</p>
-<p class="p2"><br></p>
-<p class="p3">The most common way of creating variables is through putting arguments into the UGen Graph Function. This allows you to set different values when the synth is created. These are passed in an array as the second argument to Synth-new. The array should contain pairs of arg names and values.</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef</span>(<span class="s3">"tutorial-args"</span>, { <span class="s2">arg</span> freq = 440, out = 0;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, 0.2));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth</span><span class="s1">(</span><span class="s3">"tutorial-args"</span><span class="s1">);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// no args, so default values</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>y = </span><span class="s2">Synth</span><span class="s1">(</span>"tutorial-args"<span class="s1">, [</span>"freq"<span class="s1">, 660]);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">// change freq</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>z = </span><span class="s2">Synth</span><span class="s1">(</span><span class="s3">"tutorial-args"</span><span class="s1">, [</span><span class="s3">"freq"</span><span class="s1">, 880, </span><span class="s3">"out"</span><span class="s1">, 1]);<span class="Apple-tab-span">	</span></span>// change freq and output channel</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free; y.free; z.free;</p>
-<p class="p2"><br></p>
-<p class="p3">This combination of args and UGens means that you can get a lot of mileage out of a single def, but in some cases where maximum flexibility is required, you may still need to use Functions, or create multiple defs.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>More About Synth</b></p>
-<p class="p2"><br></p>
-<p class="p3">Synth understands some methods which allow you to change the values of args after a synth has been created. For now we'll just look at one, 'set'. Synth-set takes pairs of arg names and values.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Server</span>.default = <span class="s2">Server</span>.internal;</p>
-<p class="p6"><span class="s7"><span class="Apple-tab-span">	</span></span>s = <span class="s2">Server</span>.default;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SynthDef.new</span>(<span class="s3">"tutorial-args"</span>, { <span class="s2">arg</span> freq = 440, out = 0;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">SinOsc</span>.ar(freq, 0, 0.2));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>s.scope; </span>// scope so you can see the effect</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>x = </span><span class="s2">Synth.new</span><span class="s1">(</span>"tutorial-args"<span class="s1">);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.set("freq", 660);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.set("freq", 880, "out", 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p10"><br></p>
-<p class="p4"><b>Some Notes on Symbols, Strings, SynthDef and Arg Names</b></p>
-<p class="p2"><br></p>
-<p class="p3">SynthDef names and argument names can be either a String, as we've seen above, or another kind of literal<span class="Apple-converted-space">  </span>called a Symbol. You write symbols in one of two ways, either enclosed in single quotes: <span class="s8">'tutorial-SinOsc'</span><span class="s5"> </span>or preceded by a backslash: <span class="s8">\tutorial-SinOsc</span>. Like Strings Symbols are made up of alpha-numeric sequences. The difference between Strings and Symbols is that all Symbols with the same text are guaranteed to be identical, i.e. the exact same object, whereas with Strings this might not be the case. You can test for this using '==='. Execute the following and watch the post window.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">"a String"</span><span class="s1"> === </span><span class="s3">"a String"</span><span class="s1">; <span class="Apple-tab-span">	</span></span>// this will post false</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s9">\aSymbol</span><span class="s1"> === </span><span class="s9">'aSymbol'</span><span class="s1">;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this will post true</p>
-<p class="p2"><br></p>
-<p class="p3">In general in methods which communicate with the server one can use Strings and Symbols interchangeably, but be aware that this is not necessarily true in general code.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">"this"</span><span class="s1"> === </span><span class="s9">\this</span><span class="s1">; <span class="Apple-tab-span">	</span></span>// this will post false</p>
-<p class="p2"><br></p>
-<p class="p3">For more information see:<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p11"><a href="../../ServerArchitecture/SynthDef.html">SynthDef</a><span class="s1"><b> </b><a href="../../ServerArchitecture/Synth.html"><span class="s10">Synth</span></a><b> </b><a href="../../Collections/String.html"><span class="s10">String</span></a><b> </b><a href="../../Core/Symbol.html"><span class="s10">Symbol</span></a><b> </b><a href="../../Language/Literals.html"><span class="s10">Literals</span></a><b> </b><a href="../../Other Topics/Randomness.html"><span class="s10">Randomness</span></a><b> </b><a href="../../UGens/UGens.html"><span class="s10">UGens</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Suggested Exercise:</b></p>
-<p class="p10"><br></p>
-<p class="p3">Try converting some of the earlier Function based examples, or Functions of your own, to SynthDef versions, adding Out UGens. Experiment with adding and changing arguments both when the synths are created, and afterwards using 'set'.</p>
-<p class="p2"><br></p>
-<p class="p3">____________________</p>
-<p class="p2"><br></p>
-<p class="p3">This document is part of the tutorial <b>Getting Started With SuperCollider</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Click here to go on to the next section: <a href="Busses.html"><span class="s6">Busses</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">Click here to return to the table of Contents: <a href="Getting Started With SC.html"><span class="s6">Getting Started With SC</span></a></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 1.png b/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 1.png
deleted file mode 100644
index 1356022..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 1.png and /dev/null differ
diff --git a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 2.png b/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 2.png
deleted file mode 100644
index fab34f4..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 2.png and /dev/null differ
diff --git a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 3.png b/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 3.png
deleted file mode 100644
index f304cbc..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 3.png and /dev/null differ
diff --git a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 4.png b/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 4.png
deleted file mode 100644
index fb1842c..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic 4.png and /dev/null differ
diff --git a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic.png b/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic.png
deleted file mode 100644
index e99ac93..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Functions and Sound/Pasted Graphic.png and /dev/null differ
diff --git a/Help/Tutorials/Getting-Started/attachments/Scoping and Plotting/Pasted Graphic 1.png b/Help/Tutorials/Getting-Started/attachments/Scoping and Plotting/Pasted Graphic 1.png
deleted file mode 100644
index 69c7c2a..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Scoping and Plotting/Pasted Graphic 1.png and /dev/null differ
diff --git a/Help/Tutorials/Getting-Started/attachments/Scoping and Plotting/Pasted Graphic.png b/Help/Tutorials/Getting-Started/attachments/Scoping and Plotting/Pasted Graphic.png
deleted file mode 100644
index a703431..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Scoping and Plotting/Pasted Graphic.png and /dev/null differ
diff --git a/Help/Tutorials/Getting-Started/attachments/Start Your Engines/Pasted Graphic.png b/Help/Tutorials/Getting-Started/attachments/Start Your Engines/Pasted Graphic.png
deleted file mode 100644
index cb2d29c..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Start Your Engines/Pasted Graphic.png and /dev/null differ
diff --git a/Help/Tutorials/Getting-Started/attachments/Start Your Engines/Pasted Graphic_1.png b/Help/Tutorials/Getting-Started/attachments/Start Your Engines/Pasted Graphic_1.png
deleted file mode 100644
index 4252793..0000000
Binary files a/Help/Tutorials/Getting-Started/attachments/Start Your Engines/Pasted Graphic_1.png and /dev/null differ
diff --git a/Help/Tutorials/How-to-Use-the-Interpreter.html b/Help/Tutorials/How-to-Use-the-Interpreter.html
deleted file mode 100644
index 235e4b6..0000000
--- a/Help/Tutorials/How-to-Use-the-Interpreter.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {font: 12.0px Monaco}
-span.s4 {text-decoration: underline ; color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>How to use the Interpreter</b></p>
-<p class="p2"><br></p>
-<p class="p3">This document is OSX (SCapp) specific in key commands, though the principles extend to all platforms. See the helpfile <a href="../Other Topics/Shortcuts.html">Shortcuts</a> for key commands in other editors. For the emacs sclang interface please also see <a href="../Linux/EmacsEditor.html">emacs specific documentation</a>.</p>
-<p class="p2"><br></p>
-<p class="p3">You can execute any single line expression by clicking anywhere in that line and pressing the <b>'Enter'</b> key.</p>
-<p class="p3"><b>Note that the 'Enter' key is not the same key as 'Return'. </b>If you don't have an enter key, then you can use ctrl-Return, Ctrl-c, fn-Return( on Some Macs), or Shift-Return.</p>
-<p class="p2"><br></p>
-<p class="p3">You will need to start the default server before you can hear any examples. By convention the default server is assigned to the interpreter variable 's'. (At startup the default will be the localhost server.) You can start the server app by pressing the 'Boot' button on the localhost server window, or you can do it in code:</p>
-<p class="p4"><br></p>
-<p class="p5">// execute these lines one at a time by placing the cursor on the line and then pressing 'enter'</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">s.boot; </span>// this boots the default Server. Watch the post window and server window for the result</p>
-<p class="p6"><br></p>
-<p class="p5">// once that's done execute this to make a sound</p>
-<p class="p7">{ <span class="s2">FSinOsc</span>.ar(800, 0, 0.1) }.play;</p>
-<p class="p2"><br></p>
-<p class="p3">(Press and hold Cmd (the Apple key) and then press period to stop the sound started above.)</p>
-<p class="p2"><br></p>
-<p class="p3">In the help files all executable fragments are written in the <span class="s3">Monaco</span> font.</p>
-<p class="p2"><br></p>
-<p class="p3">If an expression has multiple lines you can select all of the lines before typing 'Enter'. Note that this example uses <a href="../GUI/GUI-Tools/GUI.html"><span class="s2">GUI</span></a> objects that are standard in Mac OSX. Windows and Linux platforms can run this using SwingOSC. SwingOSC is installed as part of the Windows package. Linux users might need to download SwingOSC for themselves. <a href="http://www.sciss.de/swingOSC/"><span class="s4">http://www.sciss.de/swingOSC/</span></a></p>
-<p class="p2"><br></p>
-<p class="p5">// Select all 9 of the following lines and press 'Enter':</p>
-<p class="p7">w = <span class="s2">Window</span>.new(<span class="s5">"Fading"</span>).front;<span class="Apple-converted-space"></span></p>
-<p class="p7">r = <span class="s2">Routine</span>({<span class="Apple-converted-space"></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>200.do({<span class="s2">|i|</span><span class="Apple-converted-space"></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.background = <span class="s2">Color</span>.blue(val: 1, alpha: 1 - (i * 0.005));<span class="Apple-converted-space"></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.005.wait;<span class="Apple-converted-space"></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span>w.close;</p>
-<p class="p7">});</p>
-<p class="p7"><span class="s2">AppClock</span>.play(r);</p>
-<p class="p2"><br></p>
-<p class="p3">Some examples do require lines to be executed one at a time, or certain lines to be executed first. By far the most common case of this is booting the server app, as we did at the top of the page. Until the server has completed booting, no sound producing code will work.</p>
-<p class="p2"><br></p>
-<p class="p3">However, most of the examples included with the app have parentheses around lines of code which should be executed at the same time. (This is a convention which should be followed in your own code.) This allows you to double click to the right of the open paren and select the entire expression. Then press 'enter'.</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p5">// ^^^^^^^^ double click above this line ^^^^^^^^</p>
-<p class="p7">play({</p>
-<p class="p5">// Three patches in one...</p>
-<p class="p5"><span class="s1">n = 5;<span class="Apple-tab-span">	</span></span>// number of strings</p>
-<p class="p5"><span class="s1">b = [<span class="Apple-tab-span">	</span></span>// array of possible impulse excitation behaviours</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">Impulse</span>.ar(2 + 0.2.rand, 0.3) }, <span class="s6">// slow phasing</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">Dust</span>.ar(0.5, 0.3) },<span class="Apple-tab-span">	</span><span class="s6">// "wind chimes"</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s2">Impulse</span>.ar(<span class="s2">SinOsc</span>.kr(0.05+0.1.rand, 2pi.rand, 5, 5.2), 0.3) } <span class="s6">// races</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>].choose;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// choose one at random to use for all voices</p>
-<p class="p7"><span class="s2">Mix</span>.new(</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Array</span><span class="s1">.fill(n, {<span class="Apple-tab-span">	</span></span>// n strings tuned randomly to MIDI keys 60-90</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> delayTime;</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// calculate delay based on a random note</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delayTime = 1 / (60 + 30.rand).midicps;<span class="Apple-converted-space"></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">LeakDC</span><span class="s1">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// removes DC buildup</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2"><span class="Apple-tab-span">	</span>CombL</span><span class="s1">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// used as a string resonator</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Decay</span><span class="s1">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// decaying envelope for noise</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.value,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// instantiate an exciter</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.04,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// decay time of excitation</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">PinkNoise</span><span class="s1">.ar(0.2)),<span class="Apple-tab-span">	</span></span>// multiply noise by envelope</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delayTime, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// max delay time</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delayTime,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// actual delay time</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4)), <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// decay time of string</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0.rand2 </span>// random pan position</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}))</p>
-<p class="p7">})</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p3">Again, press Cmd-. to stop the sound. This will stop all audio (and free all nodes on the server) at any time.</p>
-<p class="p2"><br></p>
-<p class="p3">When you're done you can quit the server app by pressing the 'Quit' button on the localhost server window, or do it by executing the following code:</p>
-<p class="p4"><br></p>
-<p class="p7">s.quit;</p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Debugging/1_Debugging.html b/Help/Tutorials/Mark_Polishook_tutorial/Debugging/1_Debugging.html
deleted file mode 100644
index 6ee2e27..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Debugging/1_Debugging.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-</style>
-</head>
-<body>
-<p class="p1"><b>My code doesn't work!</b></p>
-<p class="p2"><br></p>
-<p class="p3">Code doesn't always run as one might hope. In such cases, SuperCollider sometimes tells you why and sometimes it doesn't. When SuperCollider does supply information, it's usually to describe either a syntax or a runtime error.</p>
-<p class="p2"><br></p>
-<p class="p3">When SuperCollider doesn't give information, it's often because the code works but not as expected. Example of this are synths (nodes) that execute in the wrong order (a source placed after, instead of before, an effect) and adding instead of multiplying (biasing an amplitude instead of scaling it).</p>
-<p class="p2"><br></p>
-<p class="p3">For context, here are links that describe debugging (fixing errors in code) in languages other than SuperCollider.</p>
-<p class="p2"><br></p>
-<p class="p3">http://www.elanus.net/book/debugging.html</p>
-<p class="p3">http://www.javaworld.com/javaworld/jw-07-1996/jw-07-javascript.html</p>
-<p class="p3">http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Debug.html</p>
-<p class="p2"><br></p>
-<p class="p4">go to <b>2_Syntax_errors</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Debugging/2_Syntax_errors.html b/Help/Tutorials/Mark_Polishook_tutorial/Debugging/2_Syntax_errors.html
deleted file mode 100644
index 7226a20..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Debugging/2_Syntax_errors.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-</style>
-</head>
-<body>
-<p class="p1"><b>Syntax and grammar</b></p>
-<p class="p2"><br></p>
-<p class="p3">Before it actually runs a program, SuperCollider examines the code to ensure that syntax and grammar are correct. For example, are all variable names and/or keywords spelled correctly in a program? Are statements terminated by semi-colons?<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">If syntax or grammar errors are found, SuperCollider writes a notification to the post window. Such messages are descriptive but terse.</p>
-<p class="p4"><br></p>
-<p class="p3">• ERROR: Parse error</p>
-<p class="p3"><span class="Apple-converted-space">   </span>in file 'selected text'</p>
-<p class="p3"><span class="Apple-converted-space">   </span>line 1 char 2 :</p>
-<p class="p3"><span class="Apple-converted-space">  </span>4,•<span class="Apple-converted-space"> </span></p>
-<p class="p3">-----------------------------------</p>
-<p class="p3">• ERROR: Command line parse failed</p>
-<p class="p3">nil</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Common errors</b></p>
-<p class="p4"><br></p>
-<p class="p3">1. the name of a class or a variable is mispelled</p>
-<p class="p3">2. a variable is used before being declared.</p>
-<p class="p3">3. a parenthesis or a square or curly brace is missing or used in the wrong context</p>
-<p class="p3">4. a required comma or semicolon is missing or used improperly</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3">Two helpful commands in the SuperCollider Edit menu:<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">1. "Go to Line ..." transports you to the line number of your choice. Use this when an error message identifies the line number on which a problem occured.</p>
-<p class="p4"><br></p>
-<p class="p3">2. "Find" searches for words or phrases. Use "Find" to locate code that has been identified in error messages or to replace all instances of an improperly spelled word.</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p6">go to <b>3_Runtime_errors</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Debugging/3_Runtime_errors.html b/Help/Tutorials/Mark_Polishook_tutorial/Debugging/3_Runtime_errors.html
deleted file mode 100644
index 32ba4bc..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Debugging/3_Runtime_errors.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #326f17; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Runtime errors</b></p>
-<p class="p2"><br></p>
-<p class="p3">Runtime errors occur while a program is executing.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p1"><b>Common errors<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">1. an object receives a message which it doesn't understand</p>
-<p class="p3">2. a binary operation (addition, subtraction, multiplication, etc.) can't be performed</p>
-<p class="p3">3. a value other than true or false appears in a conditional (boolean) test</p>
-<p class="p3">4. a file can't be opened (a primitive fails)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p1"><b>Object doesn't understand</b></p>
-<p class="p2"><br></p>
-<p class="p3">In the case of</p>
-<p class="p6"><br></p>
-<p class="p3">3.createRuntimeError</p>
-<p class="p6"><br></p>
-<p class="p3">SuperCollider prints a four-part error notification to the post window. The parts of the notification are ERROR, RECEIVER, ARGS, and CALL STACK, as in</p>
-<p class="p2"><br></p>
-<p class="p3">ERROR: Message 'createRuntimeError' not understood.</p>
-<p class="p3">RECEIVER:</p>
-<p class="p3"><span class="Apple-converted-space">   </span>Integer 3</p>
-<p class="p3">ARGS:</p>
-<p class="p3">Instance of Array {<span class="Apple-converted-space">    </span>(057E7560, gc=01, fmt=01, flg=11, set=00)</p>
-<p class="p3"><span class="Apple-converted-space">  </span>indexed slots [0]</p>
-<p class="p3">}</p>
-<p class="p3">CALL STACK:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>DoesNotUnderstandError-reportError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Nil-handleError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg error = <instance of DoesNotUnderstandError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-throw</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-doesNotUnderstand</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = 3</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg selector = 'createRuntimeError'</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg args = [*0]</p>
-<p class="p3"><span class="Apple-tab-span">	</span>< closed FunctionDef ><span class="Apple-converted-space">  </span>(no arguments or variables)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Interpreter-interpretPrintCmdLine</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Interpreter></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var res = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var func = <instance of Function></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Process-interpretPrintCmdLine</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Main></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">The ERROR section explains what went wrong. The RECEIVER section names the the class of the object to which the message was sent. The ARGS section says how many arguments were included in the message. Read the CALL STACK from the bottom to the top to see where the error happened. Reading from bottom to top means going from</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Process</span>-interpretPrintCmdLine<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">to<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Interpreter</span>-interpretPrintCmdLine<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">to<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Object</span>-doesNotUnderstand</p>
-<p class="p2"><br></p>
-<p class="p3">to</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Object</span>-throw</p>
-<p class="p2"><br></p>
-<p class="p3">to</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Nil</span>-handleError</p>
-<p class="p2"><br></p>
-<p class="p3">to</p>
-<p class="p2"><br></p>
-<p class="p7">DoesNotUnderstandError<span class="s2">-reportError</span></p>
-<p class="p2"><br></p>
-<p class="p3">which is the first line in the stack.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p7">DoesNotUnderstandError<span class="s2">-reportError<span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p3">is the mechanism that prints the error notification to the post window. Select it and press cmd-j to see how it works (how it prints the notification).</p>
-<p class="p6"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p3">Execute</p>
-<p class="p2"><br></p>
-<p class="p3">$a * $b</p>
-<p class="p2"><br></p>
-<p class="p3">to create another runtime error message.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">The ERROR, RECEIVER, ARGS, and CALL STACK headers in the post window explain the problem: Instances of class Char have no knowledge of multiplication.</p>
-<p class="p2"><br></p>
-<p class="p3">ERROR: Message '*' not understood.</p>
-<p class="p3">RECEIVER:</p>
-<p class="p3"><span class="Apple-converted-space">   </span>Character 97 'a'</p>
-<p class="p3">ARGS:</p>
-<p class="p3">Instance of Array {<span class="Apple-converted-space">    </span>(067F5470, gc=C4, fmt=01, flg=00, set=01)</p>
-<p class="p3"><span class="Apple-converted-space">  </span>indexed slots [1]</p>
-<p class="p3"><span class="Apple-converted-space">      </span>0 : Character 98 'b'</p>
-<p class="p3">}</p>
-<p class="p3">CALL STACK:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>DoesNotUnderstandError-reportError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Nil-handleError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg error = <instance of DoesNotUnderstandError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-throw</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of DoesNotUnderstandError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-doesNotUnderstand</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = $a</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg selector = '*'</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg args = [*1]</p>
-<p class="p3"><span class="Apple-tab-span">	</span>< closed FunctionDef ><span class="Apple-converted-space">  </span>(no arguments or variables)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Interpreter-interpretPrintCmdLine</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Interpreter></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var res = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var func = <instance of Function></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Process-interpretPrintCmdLine</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Main></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p1"><b>Unitialized variable (binary operation fails)</b></p>
-<p class="p5"><br></p>
-<p class="p3">Here, the variable a is initialized to an integer and the variable b isn't initialized. Multiplying a (the integer 10)<span class="Apple-converted-space">  </span>by b (nil, the value that SuperCollider uses for unitialized data) will create a runtime error.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4"><span class="s1">var</span><span class="s2"> a = 10;<span class="Apple-tab-span">	</span></span>// a is declared and initialized</p>
-<p class="p4"><span class="s1">var</span><span class="s2"> b;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// b declared but not initialized, so it defaults to nil</p>
-<p class="p2"><br></p>
-<p class="p3">t = <span class="s1">Task</span>({</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>4.do({ <span class="s1">arg</span> item, i;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(i != 3)<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ i.postln } <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// print the value of i if it doesn't equal 3</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ (a * b).postln };<span class="Apple-tab-span">	</span></span>// when i equals 3, do a * b</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ... which is a problem if b is nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">});</p>
-<p class="p3">t.start;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">The printout shows the code ran successfully until the index, i, reached 3, which is when a * b happened. The ERROR, RECEIVER, ARGS, and CALL STACK headers describe the problem.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">a Task</p>
-<p class="p3">0</p>
-<p class="p3">1</p>
-<p class="p3">2</p>
-<p class="p3">ERROR: binary operator '*' failed.</p>
-<p class="p3">RECEIVER:</p>
-<p class="p3"><span class="Apple-converted-space">   </span>nil</p>
-<p class="p3">ARGS:</p>
-<p class="p3">Instance of Array {<span class="Apple-converted-space">    </span>(067D92B0, gc=CC, fmt=01, flg=00, set=01)</p>
-<p class="p3"><span class="Apple-converted-space">  </span>indexed slots [2]</p>
-<p class="p3"><span class="Apple-converted-space">      </span>0 : Integer 10</p>
-<p class="p3"><span class="Apple-converted-space">      </span>1 : nil</p>
-<p class="p3">}</p>
-<p class="p3">CALL STACK:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>DoesNotUnderstandError-reportError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of BinaryOpFailureError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Nil-handleError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg error = <instance of BinaryOpFailureError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-throw</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of BinaryOpFailureError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-performBinaryOpOnSomething</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg aSelector = '*'</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg thing = 10</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg adverb = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Integer-*</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = 10</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg aNumber = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg adverb = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span>< FunctionDef in closed FunctionDef ></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg item = 3</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg i = 3</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Integer-do</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = 4</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg function = <instance of Function></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var i = 3</p>
-<p class="p3"><span class="Apple-tab-span">	</span>< FunctionDef in closed FunctionDef ><span class="Apple-converted-space">  </span>(no arguments or variables)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Routine-prStart</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Routine></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg inval = 758.000000</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>True, false, or other</b></p>
-<p class="p2"><br></p>
-<p class="p3">A value other than true or false in a boolean test, as in</p>
-<p class="p2"><br></p>
-<p class="p3">if(x=4) { <span class="s3">"this is ok"</span>};</p>
-<p class="p2"><br></p>
-<p class="p3">produces</p>
-<p class="p2"><br></p>
-<p class="p3">ERROR: Non Boolean in test.</p>
-<p class="p3">RECEIVER:</p>
-<p class="p3"><span class="Apple-converted-space">   </span>Integer 4</p>
-<p class="p3">CALL STACK:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MethodError-reportError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of MustBeBooleanError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Nil-handleError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg error = <instance of MustBeBooleanError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-throw</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of MustBeBooleanError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-mustBeBoolean</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = 4</p>
-<p class="p3"><span class="Apple-tab-span">	</span>< closed FunctionDef ><span class="Apple-converted-space">  </span>(no arguments or variables)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Interpreter-interpretPrintCmdLine</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Interpreter></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var res = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var func = <instance of Function></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Process-interpretPrintCmdLine</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Main></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Correcting the test clause fixes the problem.</p>
-<p class="p2"><br></p>
-<p class="p3">if(x==4) { <span class="s3">"this is ok"</span>};</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Primitive fails</b></p>
-<p class="p5"><br></p>
-<p class="p3">Asking for the length of a non-existent file creates a runtime error. The notification shows what went wrong (a C code primitive failed).</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s2">f = </span><span class="s1">File</span><span class="s2">(</span>"i_don't_exist"<span class="s2">, </span>"r"<span class="s2">);</span></p>
-<p class="p3">f.length;</p>
-<p class="p2"><br></p>
-<p class="p3">ERROR: Primitive '_FileLength' failed.</p>
-<p class="p3">Failed.</p>
-<p class="p3">RECEIVER:</p>
-<p class="p3">Instance of File {<span class="Apple-converted-space">    </span>(067D9970, gc=C4, fmt=00, flg=00, set=01)</p>
-<p class="p3"><span class="Apple-converted-space">  </span>instance variables [1]</p>
-<p class="p3"><span class="Apple-converted-space">    </span>fileptr : nil</p>
-<p class="p3">}</p>
-<p class="p3">CALL STACK:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>MethodError-reportError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of PrimitiveFailedError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Nil-handleError</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg error = <instance of PrimitiveFailedError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-throw</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of PrimitiveFailedError></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Object-primitiveFailed</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of File></p>
-<p class="p3"><span class="Apple-tab-span">	</span>File-length</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of File></p>
-<p class="p3"><span class="Apple-tab-span">	</span>< closed FunctionDef ><span class="Apple-converted-space">  </span>(no arguments or variables)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Interpreter-interpretPrintCmdLine</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Interpreter></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var res = nil</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var func = <instance of Function></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Process-interpretPrintCmdLine</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>arg this = <instance of Main></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/First_steps/1_Startup.html b/Help/Tutorials/Mark_Polishook_tutorial/First_steps/1_Startup.html
deleted file mode 100644
index e5b9a7e..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/First_steps/1_Startup.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>To begin</b></p>
-<p class="p2"><br></p>
-<p class="p3">Navigate to the<span class="Apple-converted-space">  </span>folder (the directory) in which SuperCollider resides and double-click on it (the red and white balloon icon). An untitled document with text such as</p>
-<p class="p4"><br></p>
-<p class="p3">init_OSC</p>
-<p class="p3">compiling class library..</p>
-<p class="p3"><span class="Apple-tab-span">	</span>NumPrimitives = 548</p>
-<p class="p3"><span class="Apple-tab-span">	</span>compiling dir: '/Applications/SuperCollider3/SCClassLibrary'</p>
-<p class="p3"><span class="Apple-tab-span">	</span>pass 1 done</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Method Table Size 3091264 bytes</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Number of Method Selectors 2880</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Number of Classes 1744</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Number of Symbols 6926</p>
-<p class="p3"><span class="Apple-tab-span">	</span>Byte Code Size 129989</p>
-<p class="p3"><span class="Apple-tab-span">	</span>compiled 299 files in 1.61 seconds<span class="Apple-converted-space"> </span></p>
-<p class="p3">compile done</p>
-<p class="p3">prGetHostByName hostname 127.0.0.1 addr 2130706433</p>
-<p class="p3">RESULT = 256</p>
-<p class="p3">Class tree inited in 0.09 seconds</p>
-<p class="p5"><br></p>
-<p class="p3">appears in the top left of the screen. The document functions as a "Post Window," so-called because SuperCollider uses it to "post" notifications.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Two more windows</b></p>
-<p class="p2"><br></p>
-<p class="p3">On the bottom of the screen are two more windows. One is called "localhost server" and the other is "internal server." Click on the "boot" button on the localhost server. The words "localhost" in the black box of the button turn red and the word "Boot" on the button changes to "Quit." More text, such as</p>
-<p class="p4"><br></p>
-<p class="p3">booting 57110</p>
-<p class="p3">SC_AudioDriver: numSamples=512, sampleRate=44100.000000</p>
-<p class="p3">start <span class="Apple-converted-space">  </span>UseSeparateIO?: 0</p>
-<p class="p3">PublishPortToRendezvous 0 57110</p>
-<p class="p3">SuperCollider 3 server ready..</p>
-<p class="p3">notification is on</p>
-<p class="p4"><br></p>
-<p class="p3">will print to the post window. The localhost server is now ready to be used. Activate the internal server, if you wish, in the same way.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Workspace windows</b></p>
-<p class="p2"><br></p>
-<p class="p3">Open existing SC documents with File->Open... or cmd-o. Use File->New or cmd-n to create new documents.</p>
-<p class="p4"><br></p>
-<p class="p3">SuperCollider documents generally have .sc appended to their file names; however, SuperCollider can<span class="Apple-converted-space">  </span>read and write documents in Rich Text Format (.rtf) and several other formats, as well.</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p7">go to <b>2_Evaluating_code</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/First_steps/2_Evaluating_code.html b/Help/Tutorials/Mark_Polishook_tutorial/First_steps/2_Evaluating_code.html
deleted file mode 100644
index d245d37..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/First_steps/2_Evaluating_code.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p3">This document is OSX (SCapp) specific in key commands, though the principles extend to all platforms. See the helpfile <a href="../Other Topics/Shortcuts.html">Shortcuts</a> for key commands in other editors.</p>
-<p class="p2"><br></p>
-
-<p class="p1"><b>Synthesizing sound</b></p>
-<p class="p2"><br></p>
-<p class="p3">To run (evaluate) one line of code, such as</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">SinOsc</span>.ar([400, 401], 0, 0.1) * <span class="s1">Saw</span>.ar([11, 33], 1) * <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.sine(10)) }.play</p>
-<p class="p2"><br></p>
-<p class="p3">first make sure that the localhost server is booted. Then put the cursor anywhere on the line (shown above) and press <enter>. If you don't have an enter key, then you can use ctrl-Return, Ctrl-c,<span class="Apple-converted-space"> </span>fn-Return( on Some Macs), or Shift-Return. The server will synthesize audio and text that looks something like</p>
-<p class="p2"><br></p>
-<p class="p3">Synth("-613784702" : 1000)</p>
-<p class="p2"><br></p>
-<p class="p3">will appear in the post window.</p>
-<p class="p2"><br></p>
-<p class="p3">Press command-period (cmd-.) to stop synthesis.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">To run more than one line of code, select all the lines and press <enter>.<span class="Apple-converted-space"></span></p>
-<p class="p2"><br></p>
-<p class="p3">To help with the selection process, examples with more than one line often are placed in enclosing parentheses. In such cases, select the text by clicking immediately to the right of the top parenthesis or to the left of the bottom parenthesis. Or, with the cursor to the right of the top parenthesis or the left of the bottom one, press cmd-shift-b.</p>
-<p class="p2"><br></p>
-<p class="p3">Then press enter (to run the example).</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">{</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">RLPF</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in: <span class="s1">Saw</span>.ar([100, 102], 0.15),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq: <span class="s1">Lag</span>.kr(<span class="s1">LFNoise0</span>.kr(4, 700, 1100), 0.1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rq: 0.05</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}.play</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">The server will synthesize audio and text that looks something like</p>
-<p class="p2"><br></p>
-<p class="p3">Synth("-393573063" : 1000)</p>
-<p class="p2"><br></p>
-<p class="p3">will appear in the post window.</p>
-<p class="p2"><br></p>
-<p class="p3">Press command-period (cmd-.) to stop synthesis.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p1"><b>Scoping sound</b></p>
-<p class="p6"><br></p>
-<p class="p3">To scope whatever it is you're synthesizing (create a graphical display of the waveform):</p>
-<p class="p2"><br></p>
-<p class="p3">1. make sure the internal server is running (press its boot button)</p>
-<p class="p3">2. press the default button on the internal server window.</p>
-<p class="p3">3. evaluate your code as described above.</p>
-<p class="p2"><br></p>
-<p class="p3">For example, run</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">SinOsc</span>.ar([400, 401], 0, 0.5) * <span class="s1">Saw</span>.ar([11, 33], 0.5) }.play</p>
-<p class="p2"><br></p>
-<p class="p3">4. then evaluate</p>
-<p class="p2"><br></p>
-<p class="p3">s.scope(2)</p>
-<p class="p2"><br></p>
-<p class="p3">which will produce a window with the title of "stethoscope."</p>
-<p class="p2"><br></p>
-<p class="p3">As a shortcut to steps 2 through 4, send the scope message directly to the example.</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">SinOsc</span>.ar([400, 401], 0, 0.5) * <span class="s1">Saw</span>.ar([11, 33], 0.5) }.scope(2)</p>
-<p class="p2"><br></p>
-<p class="p3">Press cmd-. to stop sound synthesis.<span class="Apple-converted-space"></span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p1"><b>Recording sound</b></p>
-<p class="p6"><br></p>
-<p class="p3">The localhost and the internal server windows have buttons, on the far right, to activate recording. To record, choose the a default server. The button on the default server of your choice intially will say "prepare rec." Press it once and it will say record >. Press it again to start recording.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p7">go to <b>3_Comments</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/First_steps/3_Comments.html b/Help/Tutorials/Mark_Polishook_tutorial/First_steps/3_Comments.html
deleted file mode 100644
index b566d05..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/First_steps/3_Comments.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-</style>
-</head>
-<body>
-<p class="p1"><b>Comments</b></p>
-<p class="p2"><br></p>
-<p class="p3">Comments are descriptive remarks that are meant to be read by humans but ignored by computers. Programmers use comments to annotate how code works or what it does. It's also the case that some find it helpful to write programs by first notating comments and then filling in matching code.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">To write a comment in SuperCollider, either precede text with<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">//</p>
-<p class="p2"><br></p>
-<p class="p3">as in</p>
-<p class="p2"><br></p>
-<p class="p4">// Everything up to the end of the line is a comment</p>
-<p class="p2"><br></p>
-<p class="p3">or place text on one or more lines between</p>
-<p class="p2"><br></p>
-<p class="p3">/* and */</p>
-<p class="p2"><br></p>
-<p class="p3">as in</p>
-<p class="p5"><br></p>
-<p class="p4">/*<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">This<span class="Apple-converted-space"> </span></p>
-<p class="p4">is<span class="Apple-converted-space"> </span></p>
-<p class="p4">a<span class="Apple-converted-space"> </span></p>
-<p class="p4">comment</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="Apple-converted-space"> </span>*/</p>
-<p class="p5"><span class="Apple-converted-space"> </span></p>
-<p class="p3">If (when) evaluated, a comment will return nil, which is the value SuperCollider uses for unitialized data.</p>
-<p class="p5"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><span class="Apple-converted-space"> </span></p>
-<p class="p3">Use Format->Syntax Colorize (or cmd-') to syntax-colorize comments.</p>
-<p class="p5"><span class="Apple-converted-space"> </span></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p6">go to <b>4_Help</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/First_steps/4_Help.html b/Help/Tutorials/Mark_Polishook_tutorial/First_steps/4_Help.html
deleted file mode 100644
index 38e38f0..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/First_steps/4_Help.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8b2719}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #002dad; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8b2719; min-height: 12.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #002dad}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Help</b></p>
-<p class="p2"><br></p>
-<p class="p3">SuperCollider has a built-in help system. To see the main help page, press cmd-d (without first selecting anything). From that page, click on underlined topics or press cmd-d after selecting text. Another useful document is <span class="s1"><b>More-On-Getting-Help.</b></span></p>
-<p class="p2"><br></p>
-<p class="p3">In general, there are help files for classes (capitalized words, such as SinOsc, Array, Nil, etc.). Select the name of a class and press Cmd-d. A help file, if one exists, will open.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>To see every SuperCollider helpfile</b></p>
-<p class="p5"><br></p>
-<p class="p3">evaluate</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">Help</span>.all</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>To see all unit generators helpfiles</b></p>
-<p class="p2"><br></p>
-<p class="p3">evaluate</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">Help</span><span class="s3">(</span>"Help/UGens"<span class="s3">).dumpToDoc(</span>"SuperCollider UGens (Unit Generators)"<span class="s3">)</span></p>
-<p class="p2"><br></p>
-<p class="p3">Each line of text in the document that appears contains a word to which is appended the suffix ".help". Double-click any of the words to select them and press Cmd-D to open the corresponding help file. Omit the ".help" appended to the word when double-clicking</p>
-<p class="p7"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Class definitions, message implementations, and the Find command</b></p>
-<p class="p2"><br></p>
-<p class="p3">To see source code for class definitions, select the name of a class and type cmd-j</p>
-<p class="p2"><br></p>
-<p class="p3">To see how a class or classes implement a particular message, select the message name and press cmd-y.</p>
-<p class="p2"><br></p>
-<p class="p3">Use the Find and Find Next commands, available through the Edit menu, to search for text in the frontmost document</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>grep</b></p>
-<p class="p2"><br></p>
-<p class="p3">Use grep in the Terminal (in the Applications->Utilities folder) to search for all occurences of a given word or phrase. For example, to see all documents that use the LFSaw class, evaluate (in the Terminal application)</p>
-<p class="p2"><br></p>
-<p class="p3">grep -r LFSaw /Applications/SuperCollider_f</p>
-<p class="p2"><br></p>
-<p class="p3">Because lines in the terminal application break according to the size of the window and not through schemes that enhance readability, it may be easier to write grep results to a file, as in</p>
-<p class="p2"><br></p>
-<p class="p4">// change the name of the path (the argument after the '>' sign, as appropriate</p>
-<p class="p3">grep -r LFSaw /Applications/SuperCollider_f/ > /Users/yourHomeDirectory/Desktop/grep_results</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Additional sources</b></p>
-<p class="p2"><br></p>
-<p class="p3">The SuperCollider wiki: http://swiki.hfbk-hamburg.de:8888/MusicTechnology/6</p>
-<p class="p2"><br></p>
-<p class="p3">The SuperCollider users mailing list archive: http://swiki.hfbk-hamburg.de:8888/MusicTechnology/437</p>
-<p class="p2"><br></p>
-<p class="p3">The SuperCollider user or developer lists (or both).</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>http://www.create.ucsb.edu/mailman/listinfo/sc-users</p>
-<p class="p3"><span class="Apple-tab-span">	</span>http://www.create.ucsb.edu/mailman/listinfo/sc-dev</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">David Cottle has a large course on sound synthesis based around SC3.</p>
-<p class="p2"><br></p>
-<p class="p3">A course by Nick Collins:<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>http://www.informatics.sussex.ac.uk/users/nc81/courses/cm1/workshop.html</p>
-<p class="p2"><br></p>
-<p class="p3">The pseudonym tutorial: http://www.psi-o.net/pseudonym/</p>
-<p class="p2"><br></p>
-<p class="p3">The MAT tutorial (UC-Santa Barbara) tutorial: http://www.mat.ucsb.edu/~sc/</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Introductory_tutorial.html b/Help/Tutorials/Mark_Polishook_tutorial/Introductory_tutorial.html
deleted file mode 100644
index b507cd1..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Introductory_tutorial.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<html><head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #942613}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #942613; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande; min-height: 15.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande; color: #0000ff}
-</style>
-</head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
-<p class="p1">For SuperCollider 3</p>
-<p class="p2"><br></p>
-<p class="p1">To access sections of this tutorial, select the chapter title (you can double click) and then ask for help. The help system should then open the appropriate file.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5"><b>First_steps</b></p>
-<p class="p6"><br></p>
-<p class="p7"><a href="First_steps/1_Startup.html"><b>1_Startup</b></a></p>
-<p class="p7"><a href="First_steps/2_Evaluating_code.html"><b>2_Evaluating_code</b></a></p>
-<p class="p7"><a href="First_steps/3_Comments.html"><b>3_Comments</b></a></p>
-<p class="p7"><a href="First_steps/4_Help.html"><b>4_Help</b></a></p>
-<p class="p4"><br></p>
-<p class="p3">///////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p5"><b>Synthesis</b></p>
-<p class="p6"><br></p>
-<p class="p7"><a href="Synthesis/1_The_network.html"><b>1_The_network</b></a></p>
-<p class="p7"><a href="Synthesis/2_Prerequisites.html"><b>2_Prerequisites</b></a></p>
-<p class="p7"><a href="Synthesis/3_SynthDefs.html"><b>3_SynthDefs</b></a></p>
-<p class="p7"><a href="Synthesis/4_Rates.html"><b>4_Rates</b></a></p>
-<p class="p7"><a href="Synthesis/5_Buses.html"><b>5_Buses</b></a></p>
-<p class="p7"><a href="Synthesis/6_Controls.html"><b>6_Controls</b></a></p>
-<p class="p7"><a href="Synthesis/7_Test_functions.html"><b>7_Test_functions</b></a></p>
-<p class="p7"><a href="Synthesis/8_UnaryOp_synthesis.html"><b>8_UnaryOp_synthesis</b></a></p>
-<p class="p7"><a href="Synthesis/9_BinaryOp_synthesis.html"><b>9_BinaryOp_synthesis</b></a></p>
-<p class="p7"><a href="Synthesis/10_Subtractive_synthesis.html"><b>10_Subtractive_synthesis</b></a></p>
-<p class="p7"><a href="Synthesis/11_Groups.html"><b>11_Groups</b></a></p>
-<p class="p7"><a href="Synthesis/12_Playbuf.html"><b>12_Playbuf</b></a></p>
-<p class="p7"><a href="Synthesis/13_Delays_reverbs.html"><b>13_Delays_reverbs</b></a></p>
-<p class="p7"><a href="Synthesis/14_Frequency_modulation.html"><b>14_Frequency_modulation</b></a></p>
-<p class="p7"><a href="Synthesis/15_Scheduling.html"><b>15_Scheduling</b></a></p>
-<p class="p6"><br></p>
-<p class="p1">Please see the Japanese translation by Shigeru Kobayashi</p>
-<p class="p6"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p5"><b>Debugging</b></p>
-<p class="p6"><br></p>
-<p class="p7"><a href="Debugging/1_Debugging.html"><b>1_Debugging</b></a></p>
-<p class="p7"><a href="Debugging/2_Syntax_errors.html"><b>2_Syntax_errors</b></a></p>
-<p class="p7"><a href="Debugging/3_Runtime_errors.html"><b>3_Runtime_errors</b></a></p>
-<p class="p6"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">last revised: August 2, 2004</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">Mark Polishook</p>
-<p class="p1">polishoo at cwu.edu</p>
-<p class="p2"><br></p>
-
-
-</body></html>
\ No newline at end of file
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/0.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/0.html
deleted file mode 100644
index f921381..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/0.html	
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; min-height: 13.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 9.0px Monaco}
-</style>
-</head>
-<body>
-<p class="p1">私がSuperColliderに関するレクチャーを始める前に、みなさんはまず私のSuperColliderについてのバックグラウンドを知りたいと思うかもしれません。</p>
-<p class="p2"><br></p>
-<p class="p1">私は7年前にSuperColliderを使い始めました。私にはある学生がいて、その学生は、ProToolsのようなソフトウェアではできない様なやりかたで録音を加工するということに興味を持っていました。私は彼にSuperCollider 1のデモ版を渡しました。彼は一日それに取り組んだ後、私もそれに取り組むべきだと進言してきました。それから7年間が経ち、私は今でもそれに取り組んでいます(SuperCollider 3になりましたが)。</p>
-<p class="p2"><br></p>
-<p class="p1">今や私は、<span class="s1">SuperCollider</span>が作曲したり音楽を作ったりする時に自分でたてた仮説を検証する際に助けとなることを知っています。SuperColliderは挑戦的です。なぜなら、それは音楽を作るためにプログラミングを勉強するということを要求するからです。とりわけ、SuperColliderは素晴らしいツールだと思います。なぜなら、それを使うには実験と開発に基づくアーティスティックなアプローチが必要だからです。</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s1">3</span>つのレクチャーで私が皆さんにご紹介したいと思っていることの目標はシンプルです。できるかぎり、私は皆さんにSuperColliderについて考えるためのフレームワークを示したいと思っています。そのフレームワークは、プログラミングと音楽に関する美学と哲学に触れることになるでしょう。そして、私は私がSuperColliderで制作した大きなプロジェクトの2つの例についても紹介します。明日議論する最初のプロジェクトはロボット・イン・レジデンスで、レゴ・ロボット、チャターボット、そして音響と映像の合成を含むネットワーク化されたシステムを制御するのにSuperColloderを使っています。</p>
-<p class="p3"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p5">-Mark Polishook, DSP SuperSchool, Ogaki City, Japan, February, 2004</p>
-<p class="p5">polishoo at cwu.edu</p>
-<p class="p5">polishoo at daimi.au.dk</p>
-<p class="p2"><br></p>
-<p class="p1">日本語訳作成</p>
-<p class="p1">小林 茂</p>
-<p class="p1">kotobuki at yapan.org</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/1.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/1.html
deleted file mode 100644
index bad3021..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/1.html	
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; min-height: 13.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 9.0px Osaka}
-span.s4 {color: #000000}
-span.s5 {color: #0019b7}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>1.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>シンセシスとスケジューリングは</b><span class="s1"><b>2</b></span><b>つの独立したプロセスである</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">SuperCollider</span>についてまず知らなければならないことは、それがクライアント/サーバー・モデルを使っているということです。このことが意味することは、私たちはSuperColliderの言語でシンセシスのプロセスを定義するプログラムを書のだくということです。私たちが書いたプログラムが正しい限りにおいては、サーバーは言われた通りのことをするでしょう。サーバーはオーディオを処理し、サウンドをシンセサイズします。</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p5">クライアント/サーバー・モデルによって、シンセシスの定義とシンセシスのスケジューリングを、2つのはっきり分かれた部分に簡単に分けることができます。シンセシスのスケジューリングからシンセシスの定義を分離することにはアドバンテージがあります。</p>
-<p class="p4"><br></p>
-<p class="p5">例えば、シンセシスのプロセスを同時に実行する必要なく、MIDIや、ディスクへのサウンドファイルの読み書きをスケジューリングするのにSuperCollider 3を使うことができます。</p>
-<p class="p6"><br></p>
-<p class="p5">スケジューリングからシンセシスを分離することは、コンピュータ・プログラムにおいてデータと関数を分離するというのにも似たパラダイムを作り出します。そうしたモデルによって、概念化したりプログラムを書くのが簡単になることがよくあります。</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">SuperCollider 3</span>のクライアント/サーバー・アーキテクチャは、分散型のネットワーク化されたコンピューティングのモデルを作り出します。クライアント/サーバー・アーキテクチャによって、複数のコンピュータはネットワークのいたるところでコミュニケートして簡単に一緒に働くことができます。</p>
-<p class="p4"><br></p>
-<p class="p5">ネットワーキングという考え方は、私のこの週末のレクチャーを通して何度も取り上げるテーマです。私の意見では、ローカル、リモート、そして離れたところとネットワークするためにコンピュータを使うということは、創造性と芸術性に新しいモデルを提供するものです。それは、メディアのアーティストであり科学者である私たちが、注意深く取り組まなければならないものです。</p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">まとめると、SuperCollider 3はシンセシスのプロセスをクライアントで定義して、その定義をサーバーで動かすためのプログラムです。</p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p7">////////////</p>
-<p class="p7">// <span class="s3">例</span>1</p>
-<p class="p7">// define a simple synthesis process and schedule one synthesis event (on one machine)</p>
-<p class="p8"><span class="s2">// </span>シンプルなシンセシスのプロセスを定義して、一つのシンセシスのイベントをスケジューリングする(一台のマシン上で)</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">// </span>第1に、サーバーを定義する</p>
-<p class="p7"><span class="s4">s = </span><span class="s5">Server</span><span class="s4">(</span><span class="s6">"thisMachine"</span><span class="s4">, </span><span class="s5">NetAddr</span><span class="s4">(</span><span class="s6">"localhost"</span><span class="s4">, 57110));<span class="Apple-tab-span">	</span></span>// "localhost"<span class="s3">は"127.0.0.1"というIPと同義</span></p>
-<p class="p9"><br></p>
-<p class="p8"><span class="s2">// </span>第2に、シンセシスのエンジンを定義する</p>
-<p class="p10"><span class="s5">SynthDef</span>(<span class="s6">"sine"</span>, { <span class="s5">Out</span>.ar(0, <span class="s5">SinOsc</span>.ar(440, 0, 0.2)) }).send(s);</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">// </span>第3に、シンセシスをスケジューリング(実行)する</p>
-<p class="p10">s.sendMsg(<span class="s6">"s_new"</span>, <span class="s6">"sine"</span>, 1000, 1, 0);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p7">////////////</p>
-<p class="p7">// <span class="s3">例</span>2</p>
-<p class="p8"><span class="s2">// </span>例1と同じプロセスだが、ネットワークを通じて2台のコンピュータがコミュニケートするという点が異なる</p>
-<p class="p4"><br></p>
-<p class="p5">リモート・ネットワークをセットアップするには、以下の様にする。</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">// </span>第1に、サーバーを定義する<span class="s2"> ... </span>コンピュータはインターネット上の「どこか」にある</p>
-<p class="p8"><span class="s2">// </span>この例は有効なIPアドレスを持つ2番目のコンピュータが無ければ動作しない<span class="s2"> ...</span></p>
-<p class="p8"><span class="s2">// </span>第2のコンピュータでは既にサーバーが起動して動作していなければならない ...</p>
-<p class="p11"><span class="s4">s = </span><span class="s5">Server</span><span class="s4">(</span>"thisMachine"<span class="s4">, </span><span class="s5">NetAddr</span><span class="s4">(</span>"... an ip number ..."<span class="s4">, 57110));</span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">// </span>第2に、シンセシスのプロセスを定義する<span class="s2"> ... </span>前の例の二番目のステップと全く同じ</p>
-<p class="p10"><span class="s5">SynthDef</span>(<span class="s6">"sine"</span>, { <span class="s5">Out</span>.ar(0, <span class="s5">SinOsc</span>.ar(440, 0, 0.2)) }).send(s);</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">// </span>第3に、シンセシスのプロセスをスケジュ−リングする<span class="s2"> .... </span>前の例の三番目のステップと全く同じ</p>
-<p class="p10">s.sendMsg(<span class="s6">"s_new"</span>, <span class="s6">"sine"</span>, 1000, 1, 0);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">次のコードは、前の2つの例から持って来たものですが、唯一の違いはローカルとリモートのサーバーは異なるIPアドレスで、そのうちの1つはサーバー・オブジェクトのアーギュメントとして与えられているということです。</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">// </span>ローカル・サーバー</p>
-<p class="p11"><span class="s4">s = </span><span class="s5">Server</span><span class="s4">(</span>"thisMachine"<span class="s4">, </span><span class="s5">NetAddr</span><span class="s4">(</span>"localhost"<span class="s4">, 57110));<span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></span></p>
-<p class="p10"><span class="s5">SynthDef</span>(<span class="s6">"sine"</span>, { <span class="s5">Out</span>.ar(0, <span class="s5">SinOsc</span>.ar(440, 0, 0.2)) }).send(s);</p>
-<p class="p10">s.sendMsg(<span class="s6">"s_new"</span>, <span class="s6">"sine"</span>, 1000, 1, 0);</p>
-<p class="p4"><br></p>
-<p class="p10">vs.</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">// </span>リモート・サーバー</p>
-<p class="p11"><span class="s4">s = </span><span class="s5">Server</span><span class="s4">(</span>"thisMachine"<span class="s4">, </span><span class="s5">NetAddr</span><span class="s4">(</span>"... an ip number ..."<span class="s4">, 57110));</span></p>
-<p class="p8"><span class="s2">// </span>この行を評価する前にリモート・マシンでサーバーが起動している様にする</p>
-<p class="p10"><span class="s5">SynthDef</span>(<span class="s6">"sine"</span>, { <span class="s5">Out</span>.ar(0, <span class="s5">SinOsc</span>.ar(440, 0, 0.2)) }).send(s);</p>
-<p class="p10">s.sendMsg(<span class="s6">"s_new"</span>, <span class="s6">"sine"</span>, 1000, 1, 0);</p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/10.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/10.html
deleted file mode 100644
index 2bac963..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/10.html	
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #a71e12}
-span.s5 {font: 9.0px Osaka; color: #a71e12}
-span.s6 {font: 9.0px Osaka}
-span.s7 {color: #606060}
-span.s8 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>10.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>減算合成とフィルターの使用</b></p>
-<p class="p4"><br></p>
-<p class="p5">減算合成の基本的な考え方はコーヒーをいれることに似ています。つまり、最終的に必要ない成分をフィルターを通じて取り除くということです。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">次の様に.dumpClassSubtreeメッセージをFilterクラスに送ることで、SuperCollider 3のほとんど全てのフィルターのリストが得られます。</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">Filter</span>.dumpClassSubtree;</p>
-<p class="p4"><br></p>
-<p class="p5">これがそのリストです。</p>
-<p class="p4"><br></p>
-<p class="p7">Filter</p>
-<p class="p7">[</p>
-<p class="p7"><span class="Apple-converted-space">  </span>DetectSilence</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Formlet</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Ringz</p>
-<p class="p7"><span class="Apple-converted-space">  </span>SOS</p>
-<p class="p7"><span class="Apple-converted-space">  </span>FOS</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Slew</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Median</p>
-<p class="p7"><span class="Apple-converted-space">  </span>LPZ2</p>
-<p class="p7"><span class="Apple-converted-space">    </span>[ BRZ2 BPZ2 HPZ2 ]</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Slope</p>
-<p class="p7"><span class="Apple-converted-space">  </span>LPZ1</p>
-<p class="p7"><span class="Apple-converted-space">    </span>[ HPZ1 ]</p>
-<p class="p7"><span class="Apple-converted-space">  </span>MidEQ</p>
-<p class="p7"><span class="Apple-converted-space">  </span>BPF</p>
-<p class="p7"><span class="Apple-converted-space">    </span>[ BRF ]</p>
-<p class="p7"><span class="Apple-converted-space">  </span>LPF</p>
-<p class="p7"><span class="Apple-converted-space">    </span>[ HPF ]</p>
-<p class="p7"><span class="Apple-converted-space">  </span>RLPF</p>
-<p class="p7"><span class="Apple-converted-space">    </span>[ RHPF ]</p>
-<p class="p7"><span class="Apple-converted-space">  </span>LeakDC</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Lag</p>
-<p class="p7"><span class="Apple-converted-space">    </span>[ Ramp Lag3 Lag2 ]</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Decay2</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Decay</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Integrator</p>
-<p class="p7"><span class="Apple-converted-space">  </span>TwoPole</p>
-<p class="p7"><span class="Apple-converted-space">    </span>[ APF TwoZero ]</p>
-<p class="p7"><span class="Apple-converted-space">  </span>OnePole</p>
-<p class="p7"><span class="Apple-converted-space">    </span>[ OneZero ]</p>
-<p class="p7"><span class="Apple-converted-space">  </span>Resonz</p>
-<p class="p7">]</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">SuperCollider</span>のヘルプ・システムで<span class="s2">Help/UGens/Filters</span>を調べることでもフィルターのヘルプ・ファイルをみることができます。ヘルプ・ファイルの全てにはそれぞれのフィルターがどのように動作するのかを示す素晴らしい例があります。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">ヒント:次の様にObjectクラスに.dumpClassSubtreeメッセージを送ることで</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">Object</span>.dumpClassSubtree;</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">SuperCollider</span>のそれぞれの単独のクラスのリストが表示されます。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p5">LPF(ローパス・フィルター)を使って入力ソースから高い周波数成分を減算します。</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p9"><span class="s1">SynthDef</span><span class="s3">(</span>"subtractive"<span class="s3">, {</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LPF</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pulse</span>.ar(440, 0.5, 0.1),<span class="Apple-tab-span">	</span><span class="s4">// </span><span class="s5">フィルターをかけるソース</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Line</span><span class="s3">.kr(8000, 660, 6)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="s6">フィルターの周波数をLineでコントロールする</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).load(s);</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="s1">Synth("</span>subtractive<span class="s1">")</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p5">RLFP(レゾナント・ローパス・フィルター)は、高い周波数成分を取り除き、フィルターの(カットオフ・ポイントの)周波数を強調するためによく使います。</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p9"><span class="s1">SynthDef</span><span class="s3">(</span>"passLowFreqs2"<span class="s3">, {</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">RLPF</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Saw</span>.ar([220, 221] + <span class="s1">LFNoise0</span>.kr(1, 100, 200), 0.2),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s1">LFNoise0</span>.kr(4, 600, 2400), <span class="s1">LFNoise0</span>.kr(3, 600, 2400)],</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).load(s);</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">Synth</span><span class="s3">(</span>"passLowFreqs2"<span class="s3">)</span></p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">Rezonz</span>はとても、とても、とても強力なフィルターです。特定の周波数帯域を強調する時に使います。</p>
-<p class="p4"><br></p>
-<p class="p5">カットオフが非常にシャープなためにノイズをピッチに変えてしまいます。</p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s7">"noiseToPitch"</span>, { <span class="s1">arg</span> out = 0, mul = 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Resonz</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">WhiteNoise</span>.ar(mul),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise0</span>.kr(4, 110, 660),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.005, 0.005]</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).load(s);</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p10"><span class="s2">// </span>左右のチャンネルをアクティブ化する</p>
-<p class="p9"><span class="s1">Synth</span><span class="s3">(</span>"noiseToPitch"<span class="s3">, [</span><span class="s8">\out</span><span class="s3">, 0</span><span class="s8">\mul</span><span class="s3">, 1]);</span></p>
-<p class="p7"><span class="s1">Synth</span>(<span class="s7">"noiseToPitch"</span>, [<span class="s8">\out</span>, 1, <span class="s8">\mul</span>, 1]);</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/11.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/11.html
deleted file mode 100644
index 64f39df..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/11.html	
+++ /dev/null
@@ -1,238 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-span.s1 {font: 9.0px Monaco}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {color: #0019b7}
-span.s4 {color: #000000}
-span.s5 {font: 9.0px Osaka}
-span.s6 {font: 9.0px Hiragino Kaku Gothic Pro}
-span.s7 {color: #606060}
-span.s8 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>11.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>複数のSynthDef</b></p>
-<p class="p4"><br></p>
-<p class="p5">ほとんど全てのシンセシス・プロセスは単独のSynthDefの中で指定することができます。しかしながら、複雑な場合には、コンポーネントの部分部分に分解することもできます。</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SuperCollider</span>では、<span class="s1">group</span>がシンセを組み合わせるメカニズムを提供します。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2"><b>Group</b></span><b>はリンク・リスト</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">group</span>の最も重要なアスペクトは、それが参照するノードが順序づけられるということです。順序づけるという考え方は重要です。なぜなら、SuperColliderでは、1つのシンセシスのプロセスが他よりも先に起きるということを保証するということを意味するからです。</p>
-<p class="p7"><br></p>
-<p class="p5">SuperColliderは、ノードを順番に並べるために、リンク・リストというメカニズムを使います。リンク・リストはダイナミックなデータ構造で、簡単にノードを移動することができます。例えば最初のノードを最後にするという様なことができるのです。または、リストの中のある位置にあるノードをリストの中の任意の位置に置くこともできます。リンク・リストの最初のアイテムは常に".head"です。リンク・リストの最後のアイテムは常に".tail"です。</p>
-<p class="p4"><br></p>
-<p class="p5">置きたいと思うところにノードを置くことができるというのは、ディレイやリバーブの様に、ソースをフィルターに送る時には重要です。こうした場合には、ソースのシンセシス・プロセスが亜エフェクトよりも先に行われるというのが重要なのです。</p>
-<p class="p7"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ルートノード</b></p>
-<p class="p4"><br></p>
-<p class="p5">ルートノードはいつもサーバーに存在するグループです。全てのノードは、それがシンセであってもグループであっても、木の葉や枝の様にそれに接続されます。</p>
-<p class="p4"><br></p>
-<p class="p5">1つのシンセしか実行されていない場合、それは次の様にルートノード・グループに接続されています。</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-converted-space">    </span>Group (RootNode, ID 0)</p>
-<p class="p8"><span class="Apple-converted-space">      </span>/</p>
-<p class="p8"><span class="Apple-converted-space">     </span>/<span class="Apple-converted-space"> </span></p>
-<p class="p8">Synth (ID 1000)<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p5">この図の状態を生成するためのコードは</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s3">SynthDef</span><span class="s4">(</span>"ringModulation"<span class="s4">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Mix</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar([440.067, 441.013], 0, 1)<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar([111, 109], 0, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">(</span>"ringModulation"<span class="s4">);</span></p>
-<p class="p4"><br></p>
-<p class="p5">です。</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">ルートノードに二つのシンセが接続されている図は次の様になります。</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-converted-space">    </span>Group (RootNode, ID 0)</p>
-<p class="p8"><span class="Apple-converted-space">      </span>/\</p>
-<p class="p8"><span class="Apple-converted-space">     </span>/<span class="Apple-converted-space">  </span>\</p>
-<p class="p8">Synth<span class="Apple-converted-space">    </span>Synth</p>
-<p class="p8"><span class="Apple-converted-space"> </span>(ID 1000) <span class="Apple-converted-space">  </span>(ID 1001)</p>
-<p class="p4"><br></p>
-<p class="p5">この図の状態を生成するためのコードは</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s3">SynthDef</span><span class="s4">(</span>"pitchFromNoise"<span class="s4">, { </span><span class="s3">arg</span><span class="s4"> out = 0;</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Resonz</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">WhiteNoise</span>.ar(15),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFNoise0</span>.kr(2, 110, 660),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.005</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">(</span>"ringModulation"<span class="s4">);</span></p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">(</span>"pitchFromNoise", [\out, 1]<span class="s4">);</span></p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p5">です。</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">ノードが確実に正しい順序に並べられる様にするというのはユーザーの責任です。そういうわけで、2つのシンセは与えられた順序で評価されなければならないのです。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s3">SynthDef</span><span class="s4">(</span>"firstNode-source"<span class="s4">, {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Saw</span>.ar([200, 201], 0.05)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s3">SynthDef</span><span class="s4">(</span>"secondNode-filter"<span class="s4">, {</span></p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s4">.ar(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LPF</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">In</span>.ar(0, 2),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Lag</span>.kr(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFNoise0</span>.kr([4, 4.001], 500, 1000),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p6">// "firstNode-source"<span class="s5">は最初に実行されなければならない</span></p>
-<p class="p6">//<span class="Apple-converted-space"> </span><span class="s5"> もし </span>"secondNode-filter"<span class="s5">が先に評価されれば、</span>"firstNode-source"<span class="s5">はそれを通して処理されなくなってしまう</span></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">(</span>"firstNode-source"<span class="s4">);</span></p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">(</span>"secondNode-filter"<span class="s4">)</span></p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">この2つのシンセを記述するための安全な方法は次の様になります。</p>
-<p class="p4"><br></p>
-<p class="p10">(</p>
-<p class="p9"><span class="s3">Synth.head</span><span class="s4">(s, </span>"firstNode-source"<span class="s4">);</span></p>
-<p class="p9"><span class="s3">Synth.tail</span><span class="s4">(s, </span>"secondNode-filter"<span class="s4">)</span></p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p5">この例では、適切な順序でシンセを配置するのに.headメッセージと.tailメッセージに頼っています。ここでの適切な順序とは、<span class="s1">"firstNode-source"</span>がルートノード・グループの先頭に、<span class="s1">"secondNode-filter"</span>がルートノード・グループの最後に、ということです。</p>
-<p class="p4"><br></p>
-<p class="p5">それゆえ、<span class="s1">"firstNode-source"</span>はリンクリストの中で<span class="s6">第</span>1番のアイテムになり、<span class="s1">"secondNode-filter"</span>は第2のアイテムになります。この順序付けは2つのシンセの評価順序が変更されたとしても同じです。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">.tail(s, </span>"secondNode-filter"<span class="s4">);</span></p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">.head(s, </span>"firstNode-source"<span class="s4">);</span></p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">先の例を記述するためのよりよい方法は、2つのシンセをそれぞれのグループに配置するということです。</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-converted-space">    </span>Group (RootNode, ID 0)</p>
-<p class="p8"><span class="Apple-converted-space">      </span>/\</p>
-<p class="p8"><span class="Apple-converted-space">     </span>/<span class="Apple-converted-space">  </span>\</p>
-<p class="p8">Group<span class="Apple-converted-space">    </span>Group</p>
-<p class="p8"><span class="Apple-converted-space">  </span>|<span class="Apple-converted-space">        </span>|</p>
-<p class="p8"><span class="Apple-converted-space">  </span>|<span class="Apple-converted-space">        </span>|</p>
-<p class="p8">Synth<span class="Apple-converted-space">   <span class="Apple-tab-span">	</span> </span>Synth</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p6"><span class="s4">~source = </span><span class="s3">Group</span><span class="s4">.head(s);<span class="Apple-tab-span">	</span></span>// <span class="s5">グループをルートノードの先頭に加える</span></p>
-<p class="p6"><span class="s4">~effect = </span><span class="s3">Group</span><span class="s4">.tail(s);<span class="Apple-tab-span">	</span></span>// <span class="s5">グループをルートノードの最後に加える</span></p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p11"><span class="s1">// </span>シンセを適切なグループに追加する</p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">.head(~effect, </span>"secondNode-filter"<span class="s4">);</span></p>
-<p class="p9"><span class="s3">Synth</span><span class="s4">.head(~source, </span>"firstNode-source"<span class="s4">);</span></p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p5">この考え方は、ルートノードに対してシンセではなくグループを求められる順序で結びつけるということです。一度グループがルートノードに求められる順序で結びつけられると、それによってシンセはしかるべきグループに結びつけられるようにできます。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">グループは、シンセを確実に適切な順序で実行するようにするという以外の目的にも用いることができます。例えば、個々のシンセに対してではなく、グループに対して1つのメッセージを送ることで、グループの中の全てのシンセに対して1つのコントロールをセットすることができます。</p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s1">// </span>以下のSynthDefは全て共通のコントロール名(mul)を持つ</p>
-<p class="p8">(</p>
-<p class="p11"><span class="s1">// 3</span>つのSynthDefとグループを作成する</p>
-<p class="p8"><span class="s3">SynthDef</span>(<span class="s7">"synthNumber1"</span>, { <span class="s3">arg</span> mul = 0.2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">BrownNoise</span>.ar(mul) * <span class="s3">LFNoise0</span>.kr([1, 1.01])</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}, [0.1]).load(s);</p>
-<p class="p8"><span class="s3">SynthDef</span>(<span class="s7">"synthNumber2"</span>, { <span class="s3">arg</span> mul = 0.2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">WhiteNoise</span>.ar(mul) * <span class="s3">LFNoise1</span>.kr([2.99, 3])</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}, [0.1]).load(s);</p>
-<p class="p8"><span class="s3">SynthDef</span>(<span class="s7">"synthNumber3"</span>, { <span class="s3">arg</span> mul = 0.2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">PinkNoise</span>.ar(mul) * <span class="s3">LFNoise2</span>.kr([0.79, 0.67])</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p8">}, [0.1]).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p11"><span class="s1">// </span>グループを作成する</p>
-<p class="p8">~myGroup = <span class="s3">Group</span>.new;</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p11"><span class="s1">// 3</span>つのシンセを加える</p>
-<p class="p8"><span class="s3">Synth</span>.head(~myGroup, <span class="s7">"synthNumber1"</span>);</p>
-<p class="p8"><span class="s3">Synth</span>.head(~myGroup, <span class="s7">"synthNumber2"</span>);</p>
-<p class="p8"><span class="s3">Synth</span>.head(~myGroup, <span class="s7">"synthNumber3"</span>);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s1">// 3</span>つのシンセのそれぞれの\mulコントロール、新しい(そして同じ)値にセットする</p>
-<p class="p8">~myGroup.set(<span class="s8">\mul</span>, 0.05)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/12.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/12.html
deleted file mode 100644
index 7859d24..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/12.html	
+++ /dev/null
@@ -1,268 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #902a19}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1; min-height: 12.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #456c20}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #000000}
-span.s3 {color: #091fb1}
-span.s4 {color: #606060}
-span.s5 {color: #456c20}
-span.s6 {font: 9.0px Monaco; color: #000000}
-span.s7 {font: 9.0px Osaka}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>12.<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>複数の部分からなるシンセシス</b></p>
-<p class="p4"><br></p>
-<p class="p5">シンセシスのプロセスを部分に分割することは、モジュラー・デザインとコンポーネントの再利用を促進します。このことが意味するのは、小さく、うまく設計されたタスクを成し遂げる様にSynthDefを作るということには、しばしば〜があるということです。そのようにすることで、複雑なシンセシスのネットワークを構築するためにSynthDefを組み合わせたり、様々な方法で組み替えたりすることが可能になるのです。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">// </span>ディスクからサウンド・ファイルを読み込む</p>
-<p class="p8"><span class="s2">b = </span><span class="s3">Buffer</span><span class="s2">.read(s, </span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>モノのサンプル・プレーヤー<span class="s1"> ... </span>1チャンネルのみ</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s4">"aMonoSamplePlayer"</span>, { <span class="s3">arg</span> bus = 0, bufnum = 0, rateScale = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bus,</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>PlayBuf<span class="s2">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">BufRateScale</span>.kr(bufnum) * rateScale</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.sine(<span class="s3">BufDur</span>.kr(bufnum)))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">// SynthDef</span>をテストする<span class="s1"> ... </span>動く?(はい、大丈夫。左チャンネルで再生する。)</p>
-<p class="p8"><span class="s3">Synth</span><span class="s2">(</span>"aMonoSamplePlayer"<span class="s2">, [</span><span class="s5">\bus</span><span class="s2">, 0, </span><span class="s5">\bufNum</span><span class="s2">, b]);</span></p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">// </span>コンポーネントの再利用の非常にシンプルな例 ...<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s1">// </span>\busアーギュメントを使用して、同じSynthDefから作られたシンセを別のチャンネルにアサインする</p>
-<p class="p7"><span class="s1">// </span>この場合には、1チャンネルのサウンド・ファイルを2チャンネルで再生する</p>
-<p class="p7"><span class="s1">// </span>それぞれのチャンネルの再生レートを変えることで効果を明白にする</p>
-<p class="p6"><span class="s3">Synth</span>(<span class="s4">"aMonoSamplePlayer"</span>, [<span class="s5">\bus</span>, 0, <span class="s5">\bufNum</span>, b, <span class="s5">\rateScale</span>, 0.99]);</p>
-<p class="p6"><span class="s3">Synth</span>(<span class="s4">"aMonoSamplePlayer"</span>, [<span class="s5">\bus</span>, 1, <span class="s5">\bufNum</span>, b, <span class="s5">\rateScale</span>, 1.01])</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p10">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3"><b>どのようにして情報を取得するか</b></p>
-<p class="p4"><br></p>
-<p class="p5">前の例では<span class="s1">BufRateScale</span>とBufDurというUGenを使って、PlayBufがサウンド・ファイルをプレイするレートと、PlayBufに適用されるエンベロープの長さをコントロールしています。</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">BufRateScale</span>はサウンド・ファイルが録音されたときのレートでプレイバックされることを保証します。BufDurはバッファの長さを返します。これら両方のクラスはInfoUGenbaseまたはBufInfoUGenBaseを継承するUGenのファミリーです。</p>
-<p class="p4"><br></p>
-<p class="p5">そのようなUGenの完全なリストを表示するためのコードがこれです。</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s3">InfoUGenBase</span>.dumpClassSubtree</p>
-<p class="p4"><br></p>
-<p class="p5">このコードを実行すると次の様に表示されます。</p>
-<p class="p4"><br></p>
-<p class="p6">InfoUGenBase</p>
-<p class="p6">[</p>
-<p class="p6"><span class="Apple-converted-space">  </span>NumRunningSynths</p>
-<p class="p6"><span class="Apple-converted-space">  </span>NumBuffers</p>
-<p class="p6"><span class="Apple-converted-space">  </span>NumControlBuses</p>
-<p class="p6"><span class="Apple-converted-space">  </span>NumAudioBuses</p>
-<p class="p6"><span class="Apple-converted-space">  </span>NumInputBuses</p>
-<p class="p6"><span class="Apple-converted-space">  </span>NumOutputBuses</p>
-<p class="p6"><span class="Apple-converted-space">  </span>ControlRate</p>
-<p class="p6"><span class="Apple-converted-space">  </span>RadiansPerSample</p>
-<p class="p6"><span class="Apple-converted-space">  </span>SampleDur</p>
-<p class="p6"><span class="Apple-converted-space">  </span>SampleRate</p>
-<p class="p6">]</p>
-<p class="p6">InfoUGenBase</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s3">BufInfoUGenBase</span>.dumpClassSubtree</p>
-<p class="p4"><br></p>
-<p class="p5">このコードを実行すると次の様に表示されます。</p>
-<p class="p4"><br></p>
-<p class="p6">BufInfoUGenBase</p>
-<p class="p6">[</p>
-<p class="p6"><span class="Apple-converted-space">  </span>BufChannels</p>
-<p class="p6"><span class="Apple-converted-space">  </span>BufDur</p>
-<p class="p6"><span class="Apple-converted-space">  </span>BufSamples</p>
-<p class="p6"><span class="Apple-converted-space">  </span>BufFrames</p>
-<p class="p6"><span class="Apple-converted-space">  </span>BufRateScale</p>
-<p class="p6"><span class="Apple-converted-space">  </span>BufSampleRate</p>
-<p class="p6">]</p>
-<p class="p6">BufInfoUGenBase</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p10">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>実行の順序</b></p>
-<p class="p4"><br></p>
-<p class="p5">もう一度、次の例はどのようにしてシンセをソースとエフェクトのグループに配置するのかを示します。2つのグループは2つのシンセが適切な順序で実行されることを保証します。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">// </span>エンベロープなしのフィルター ー永遠にとどまる</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s4">"soundFileFilter"</span>, { <span class="s3">arg</span> bus = 0, freq = 440, rq = 0.05;</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s2">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bus,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">BPF</span>.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// a bandpass filter</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">In</span>.ar(0, 2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[freq * 0.99, freq * 1.5],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rq</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p6">)</p>
-<p class="p11"><br></p>
-<p class="p7"><span class="s1">// </span>2つのグループを作成する。1つはソース用、他の1つはエフェクト用</p>
-<p class="p6">(</p>
-<p class="p6">~source = <span class="s3">Group</span>.head(s);</p>
-<p class="p6">~effect = <span class="s3">Group</span>.tail(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>シンセをそれぞれ適切なグループの先頭に追加する</p>
-<p class="p7"><span class="s1">// </span>シンセを適切なグループの最後に追加しても同じ結果になる</p>
-<p class="p6">(</p>
-<p class="p8"><span class="s3">Synth</span><span class="s2">.head(~effect, </span>"soundFileFilter", [\out, 0, \freq, 500.rrand(1000), \rq, 0.04.rrand(0.1)]<span class="s2">);</span></p>
-<p class="p6"><span class="s3">Synth</span>.head(~source, <span class="s4">"aMonoSamplePlayer"</span>, [<span class="s5">\bus</span>, 0, <span class="s5">\bufNum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p10">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3"><b>サンプルをループする</b></p>
-<p class="p4"><br></p>
-<p class="p5">サウンド・ファイルを何度も何度も繰り返し再生するには、<span class="s1">PlayBuf</span>のloopアーギュメント(コントロール)を使います。</p>
-<p class="p4"><br></p>
-<p class="p5">しかし、PlayBufのインスタンスのloopアーギュメントに任せてファイル全体をループする代わりに、正確な繰り返しが起きる様にスケジューリングすることで、より細かくコントロールすることもできます。</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p10">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p12"><br></p>
-<p class="p5">この例は3つのSynthDefを使用しています。第1のSynthDefはサンプル・プレーヤーで、バッファ全体を永遠にループし続けます。第2のSynthDefはその入力をリング変調します。第3のSynthDefはその入力に対してローパス・フィルターを適用します。</p>
-<p class="p4"><br></p>
-<p class="p5">3つのシンセはチェーンを形成します。第1のシンセはソース・シンセです。第2と第3のシンセは、それぞれのソースに対して処理を加えます。つまり、ソースに対して振幅変調を加え、振幅変調を行ったソースに対してローパス・フィルターをかけます。</p>
-<p class="p4"><br></p>
-<p class="p5">処理の順序、つまり振幅変調とローパス・フィルターのどちらが最初でどちらが2番目かは任意です。それはどちらの方法でも定義することができます。</p>
-<p class="p12"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">// </span>サウンド・ファイルを読み込む</p>
-<p class="p8"><span class="s2">b = </span><span class="s3">Buffer</span><span class="s2">.read(s, </span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>サウンド・ファイル全体をループ再生するサンプル・プレーヤーを定義する</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s4">"aLoopingSamplePlayer"</span>, { <span class="s3">arg</span> outBus = 0, bufnum = 0, rateScale = 1, mul = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outBus,</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>PlayBuf<span class="s2">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">BufRateScale</span>.kr(bufnum) * rateScale + <span class="s3">LFNoise1</span>.kr(2.reciprocal, 0.05),</p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop: 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">// </span>停止することなくサウンド・ファイルを繰り返し再生する</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mul</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>オーディオ・ソースに振幅変調を適用する</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s4">"ampMod"</span>, { <span class="s3">arg</span> inBus = 0, outBus = 0, modFreq = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outBus,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s3">In</span>.ar(inBus, 1) * <span class="s3">SinOsc</span>.kr(modFreq), <span class="s3">In</span>.ar(inBus, 1) * <span class="s3">SinOsc</span>.kr(modFreq - 0.02)]</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>オーディオ・ソースにローパス・フィルターを適用する</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s4">"aLowPassFilter"</span>, { <span class="s3">arg</span> inBus = 0, outBus = 0, freq = 300, freqDev = 50, boost = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outBus,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">RLPF</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">In</span>.ar(inBus, 2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Lag</span>.kr(<span class="s3">LFNoise0</span>.kr(1, freqDev, freq), 1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>boost</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>2つのグループを定義する。1つはソースのためで、他方はエフェクトのため</p>
-<p class="p6">(</p>
-<p class="p6">~source = <span class="s3">Group</span>.head(s);</p>
-<p class="p6">~effect = <span class="s3">Group</span>.tail(~s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">// </span>ソース・グループにサンプル・プレーヤーを追加する</p>
-<p class="p6"><span class="s3">Synth</span>.head(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~source,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">"aLoopingSamplePlayer"</span>, [<span class="s5">\outBus</span>, 3, <span class="s5">\bufNum</span>, b, <span class="s5">\rateScale</span>, 1, <span class="s5">\mul</span>, 0.051]);</p>
-<p class="p7"><span class="s1">// </span>エフェクト・グループの先頭に振幅変調シンセを追加する</p>
-<p class="p6"><span class="s3">Synth</span>.head(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~effect,</p>
-<p class="p13"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s4">"ampMod"</span><span class="s2">, [</span>\inBus<span class="s2">, 3, </span>\outBus<span class="s2">, 5, </span>\modFreq<span class="s2">, 1]);</span></p>
-<p class="p7"><span class="s1">// </span>エフェクト・グループの最後にフィルタリングを追加する</p>
-<p class="p6"><span class="s3">Synth</span>.tail(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~effect,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">"aLowPassFilter"</span>, [<span class="s5">\inBus</span>, 5, <span class="s5">\outBus</span>, 0, <span class="s5">\boost</span>, 5])</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">このシンセシスのネットワークを文字による図で表すと、この様になります。</p>
-<p class="p4"><br></p>
-<p class="p6">Group (RootNode, ID 0)</p>
-<p class="p6"><span class="Apple-converted-space">      </span>/\</p>
-<p class="p6"><span class="Apple-converted-space">     </span>/<span class="Apple-converted-space">  </span>\</p>
-<p class="p10"><span class="s2">~source<span class="Apple-converted-space">  </span>~effects<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ~source<span class="s7">と</span>~effects<span class="s7">はグループ</span></p>
-<p class="p6"><span class="Apple-converted-space"> </span>|<span class="Apple-converted-space">        </span>|<span class="Apple-converted-space">      </span>\</p>
-<p class="p6"><span class="Apple-converted-space"> </span>|<span class="Apple-converted-space">        </span>| <span class="Apple-converted-space">      </span>\</p>
-<p class="p6"><span class="Apple-converted-space"> </span>synth<span class="Apple-converted-space">    </span>synth<span class="Apple-converted-space">    </span>synth<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-converted-space">  </span></p>
-<p class="p4"><br></p>
-<p class="p10">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">ここでは、シンセとグループの配置は同じです。一部のアーギュメント(コントロール)を変えることでエフェクトの音色が劇的に変わります。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">~source = <span class="s3">Group</span>.head(s);</p>
-<p class="p6">~effect = <span class="s3">Group</span>.tail(~s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p9">(</p>
-<p class="p6"><span class="s3">Synth</span>.head(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~source,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">"aLoopingSamplePlayer"</span>, [<span class="s5">\</span>outBus, 3, <span class="s5">\bufNum</span>, b, <span class="s5">\rateScale</span>, 1, <span class="s5">\mul</span>, 0.051]);</p>
-<p class="p6"><span class="s3">Synth</span>.head(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~effect,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">"ampMod"</span>, [<span class="s5">\inBus</span>, 3, <span class="s5">\</span>outBus, 5, <span class="s5">\modFreq</span>, 1000]);</p>
-<p class="p6">Synth.tail(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>~effect,</p>
-<p class="p6"><span class="Apple-tab-span">	</span>"aLowPassFilter", [\inBus, 5, \outBus, 0, \freq, 500, \freqDev, 200, \boost, 7])</p>
-<p class="p6">)</p>
-<p class="p14"><br></p>
-<p class="p10">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/13.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/13.html
deleted file mode 100644
index 17c2cfc..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/13.html	
+++ /dev/null
@@ -1,312 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #0019b7}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {font: 9.0px Monaco; color: #000000}
-span.s7 {color: #df2818}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>13.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>時間ベースのフィルター</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Delay</span>、CombそしてAlpassといったUGenは時間ベースのエフェクトを生成します。これは空間や位置の感覚を与えるリバーブなどのエフェクトを作るのに適しています。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// 2</span>つのSynthDef。第1のSynthDefはグレインを生成し、第2のSynthDefはそれらを遅らせる</p>
-<p class="p7"><span class="s1">//<span class="Apple-converted-space"> </span></span> グレインを生成するSynthDefは左チャンネル</p>
-<p class="p7"><span class="s1">// </span>グレインを遅らせるSynthDefは右チャンネル</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">SynthDef</span>(<span class="s3">"someGrains"</span>, { arg centerFreq = 777, freqDev = 200, grainFreq = 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">var</span> gate;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>gate = <span class="s2">Impulse</span>.kr(grainFreq);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise0</span>.kr(4, freqDev, centerFreq),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EnvGen</span>.kr(<span class="s2">Env.sine(0.1)</span>, gate, 0.1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">SynthDef</span>(<span class="s3">"aDelay"</span>, { arg delay = 0.25;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">DelayN</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">In</span>.ar(0, 1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delay,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delay</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>グレインをテストして ... オフにしなさい</p>
-<p class="p7">// 全て左チャンネルだけ ... グッド!</p>
-<p class="p9"><span class="s2">Synth</span><span class="s4">(</span>"someGrains"<span class="s4">);</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>2つのグループを作成。第<span class="s1">1</span>はソース、第<span class="s1">2</span>はエフェクト。</p>
-<p class="p8">(</p>
-<p class="p8">~source = <span class="s2">Group</span>.head(s);</p>
-<p class="p8">~effects = <span class="s2">Group</span>.tail(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>グレインをディレイに配置する ... ソースは左でディレイをかけられたソースは右</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">Synth</span>.head(~source, <span class="s3">"someGrains"</span>);</p>
-<p class="p8"><span class="s2">Synth</span>.head(~effects, <span class="s3">"aDelay"</span>);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>フィードバック・フィルター</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Comb</span>やAllpassフィルターは、自分の出力を入力にフィードバックするUGenの例です。Allpassフィルターは一般的にCombフィルターと比較した場合に音はあまり違って聞こえません。しかしながら、Allpassフィルターはそれを通過する信号の位相を変えます。このため、これはUGenのネットワーク中で用いる時に便利なのです。</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>インターナル・サーバーを起動!!</p>
-<p class="p7"><span class="s1">// </span>最初はCombフィルターで次がAllpassフィルター(パラメータは同じ)。両者を比較せよ。</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span>Co</span>m<span class="s2">bN</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(500.rrand(1000), 0, 0.2) * <span class="s2">Line</span>.kr(1, 0, 0.1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}.scope;</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>前の例とそんなに大きな違いは無い</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>AllpassN<span class="s4">.ar(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(500.rrand(1000), 0, 0.2) * <span class="s2">Line</span>.kr(1, 0, 0.1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}.scope;</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>最初は<span class="s1">Comb</span>フィルターで次が<span class="s1">Allpass</span>フィルター(パラメータは同じ)。両者を比較せよ。</p>
-<p class="p7"><span class="s1">// </span>2つの例はもっと短いディレイ・タイムを持つ<span class="s1"> ... 0.1</span>秒</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">CombN</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(500.rrand(1000), 0, 0.2) * <span class="s2">Line</span>.kr(1, 0, 0.1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.025,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}.scope;<span class="Apple-tab-span">	</span></p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>ディレイ・タイムを短くすると、allpassフィルターはcombフィルターよりより広がって聞こえるようになる</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span></span>AllpassN<span class="s4">.ar(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(500.rrand(1000), 0, 0.2) * <span class="s2">Line</span>.kr(1, 0, 0.1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.025,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}.scope</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3"><b>リバーブレーション</b></p>
-<p class="p4"><br></p>
-<p class="p5">次の例は、<span class="s1">James McCartney</span>によるもので、.playではなく.scopeを使っているということと、変数が関数の中で宣言されているという変更を加えています。この例は<span class="s1">SuperCollider 2</span>の配布物の中の一部分のドキュメントであった<span class="s5"><b>01 Why SuperCollider</b></span>からのものです。</p>
-<p class="p4"><br></p>
-<p class="p5">これは事実上<span class="s1">Schroeder</span>のリバーブの実装で、信号はCombフィルターの並列バンクを通過し、連続したいくつかのAllpassフィルターを通るというものです。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8">var s, z, y;</p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s1">// </span>ランダムな10ボイス分のサイン波のパーカッション・サウンド:</p>
-<p class="p8">s = <span class="s2">Mix</span>.ar(<span class="s2">Array</span>.fill(10, { <span class="s2">Resonz</span>.ar(<span class="s2">Dust</span>.ar(0.2, 50), 200 + 3000.0.rand, 0.003)}) );</p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s1">// </span>リバーブのプリ・ディレイ・タイム:</p>
-<p class="p8">z = <span class="s2">DelayN</span>.ar(s, 0.048);</p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s1">// </span>並列に7つの長さを変調されたcombによるディレイ:</p>
-<p class="p8">y = <span class="s2">Mix</span>.ar(<span class="s2">Array</span>.fill(7,{ <span class="s2">CombL</span>.ar(z, 0.1, <span class="s2">LFNoise1</span>.kr(0.1.rand, 0.04, 0.05), 15) }));<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s1">// 4</span>つのallpassによるディレイの2つの並列したチェーン(合計8個):</p>
-<p class="p8">4.do({ y = <span class="s2">AllpassN</span>.ar(y, 0.050, [0.050.rand, 0.050.rand], 1) });</p>
-<p class="p7"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s1">// </span>オリジナルのサウンドをリバーブに加えてそれを再生:</p>
-<p class="p8">s+(0.2*y)</p>
-<p class="p8">}.scope<span class="Apple-converted-space"> </span></p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>コンポーネント</b></p>
-<p class="p4"><br></p>
-<p class="p5">次の例は、<span class="s5"><b>01 Why SuperCollider</b></span>ドキュメントの、つい先ほど説明したばかりのシンセシスのプロセスを、小さくシンプルな部分に分割する方法を示します。それはまた信号を並列にフィルタリングする方法("combs"のSynthDefを参照)と、信号をシリーズでフィルタリングする方法("allpass"のSynthDefを参照)を示します。この例はまた、どのようにシンセが実行されるたびにランダムに生成されるコントロール値を使うのかということをデモするものです。</p>
-<p class="p4"><br></p>
-<p class="p5">この例はまた、便宜上、どのようにして複数チャンネルのオーディオを任意の数のバスに広げることができるのかということを示します。つまり、バスに渡ってオーディオを広げるバスのアサインはSynthDefの中で固定されているものの、簡単にコントロールにアサインすることができるということです。</p>
-<p class="p4"><br></p>
-<p class="p5">前の例をより小さな部分に分解することのアドバンテージは、オーディオ・バスに送られる最初の要素にならなければならない<span class="s7">、</span>ソースのオーディオを除いて、残りの部分は任意の順序に組み替え直すことができるということです。</p>
-<p class="p4"><br></p>
-<p class="p10">(</p>
-<p class="p9"><span class="s2">SynthDef</span><span class="s4">(</span>"filteredDust"<span class="s4">, {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.arFill(10, { <span class="s2">Resonz</span>.ar(<span class="s2">Dust</span>.ar(0.2, 50), <span class="s2">Rand</span>(200, 3200), 0.003) })</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s2">SynthDef</span><span class="s4">(</span>"preDelay"<span class="s4">, {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">DelayN</span>.ar(<span class="s2">In</span>.ar(2, 1), 0.048, 0.048)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p10">SynthDef<span class="s4">(</span><span class="s3">"combs"</span><span class="s4">, {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.arFill(7, { <span class="s2">CombL</span>.ar(<span class="s2">In</span>.ar(4, 1), 0.1, <span class="s2">LFNoise1</span>.kr(<span class="s2">Rand</span>(0, 0.1), 0.04, 0.05), 15) })</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">SynthDef</span>(<span class="s3">"allpass"</span>, { <span class="s2">arg</span> gain = 0.2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">var</span> source;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>source = <span class="s2">In</span>.ar(6, 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>4.do({ source = <span class="s2">AllpassN</span>.ar(source, 0.050, [<span class="s2">Rand</span>(0, 0.05), <span class="s2">Rand</span>(0, 0.05)], 1) });</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source * gain</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">SynthDef</span>(<span class="s3">"theMixer"</span>, { arg gain = 1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.ar([<span class="s2">In</span>.ar(2, 1), <span class="s2">In</span>.ar(8, 2)]) * gain</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7">// それぞれの行が実行されると、それぞれは最後のノードになる。結果は、<span class="s1">"filteredDust"</span>が最初のノードになり、</p>
-<p class="p7">// <span class="s1">"theMixer"</span>が最後のノードになる。これは我々が望んだ通りである。</p>
-<p class="p8">(</p>
-<p class="p9"><span class="s2">Synth</span><span class="s4">.tail(s, </span>"filteredDust"<span class="s4">);</span></p>
-<p class="p8"><span class="s2">Synth</span>.tail(s, <span class="s3">"preDelay"</span>);</p>
-<p class="p8"><span class="s2">Synth</span>.tail(s, <span class="s3">"combs"</span>);</p>
-<p class="p8"><span class="s2">Synth</span>.tail(s, <span class="s3">"allpass"</span>);</p>
-<p class="p8"><span class="s2">Synth</span>.tail(s, <span class="s3">"theMixer"</span>);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">または、グループを使って前の例のシンセの実行の順序をコントロールします。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p8">~source = <span class="s2">Group</span>.tail(s);</p>
-<p class="p8">~proc1 = <span class="s2">Group</span>.tail(s);</p>
-<p class="p8">~proc2 = <span class="s2">Group</span>.tail(s);</p>
-<p class="p8">~proc3 = <span class="s2">Group</span>.tail(s);</p>
-<p class="p8">~final = <span class="s2">Group</span>.tail(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>以下のノードは、上で並べた通りに、グループにアサインされる</p>
-<p class="p7"><span class="s1">// </span>それゆえ、これらは正しい順序で実行される</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">Synth</span>.head(~final, <span class="s3">"theMixer"</span>);</p>
-<p class="p8"><span class="s2">Synth</span>.head(~proc3, <span class="s3">"allpass"</span>);</p>
-<p class="p8"><span class="s2">Synth</span>.head(~proc2, <span class="s3">"combs"</span>);</p>
-<p class="p8"><span class="s2">Synth</span>.head(~proc1, <span class="s3">"preDelay"</span>);</p>
-<p class="p8"><span class="s2">Synth</span>.head(~source, <span class="s3">"filteredDust"</span>);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p5">上に示した様に正しい順序にグループを配置することはそれにアサインされるシンセもまた正しい順序になるということを保証します。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p5">参考までに、以下はSuperCollider 2の配布物からの(James McCartheyによる)01 Why SuperColliderドキュメントの完全なテキストです。</p>
-<p class="p2"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p11"><span class="s5"> <span class="Apple-tab-span">	</span></span><b>SuperCollider 2.0</b></p>
-<p class="p2"><br></p>
-<p class="p11"><b>Why SuperCollider 2.0 ?</b></p>
-<p class="p2"><br></p>
-<p class="p1">SuperCollider version 2.0 is a new programming language. <b>Why invent a new language</b></p>
-<p class="p1"><b>and not use an existing language?</b> Computer music composition is a specification problem.</p>
-<p class="p1">Both sound synthesis and the composition of sounds are complex problems and demand a<span class="Apple-converted-space"> </span></p>
-<p class="p1">language which is highly expressive in order to deal with that complexity. Real time signal<span class="Apple-converted-space"> </span></p>
-<p class="p1">processing is a problem demanding an efficient implementation with bounded time operations.</p>
-<p class="p1">There was no language combining the features I wanted and needed for doing digital music<span class="Apple-converted-space"> </span></p>
-<p class="p1">synthesis. The SuperCollider language is most like Smalltalk. Everything is an object. It has</p>
-<p class="p1">class objects, methods, dynamic typing, full closures, default arguments, variable</p>
-<p class="p1">length argument lists, multiple assignment, etc. The implementation provides fast,</p>
-<p class="p1">constant time method lookup, real time garbage collection, and stack allocation of most</p>
-<p class="p1">function contexts while maintaining full closure semantics.<span class="Apple-converted-space"> </span></p>
-<p class="p1">The SuperCollider virtual machine is designed so that it can be run at interrupt level.</p>
-<p class="p1">There was no other language readily available that was high level, real time and</p>
-<p class="p1">capable of running at interrupt level.</p>
-<p class="p2"><br></p>
-<p class="p1">SuperCollider version 1.0 was completely rewritten to make it both more expressive</p>
-<p class="p1">and more efficient. This required rethinking the implementation in light of the experience</p>
-<p class="p1">of the first version. It is my opinion that the new version has benefitted significantly</p>
-<p class="p1">from this rethink. It is not simply version 1.0 with more features.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Why use a text based language rather than a graphical language?</b><span class="Apple-converted-space"> </span></p>
-<p class="p1">There are at least two answers to this. <b>Dynamism:</b> Most graphical synthesis environments<span class="Apple-converted-space"> </span></p>
-<p class="p1">use statically allocated unit generators. In SuperCollider, the user can create structures which</p>
-<p class="p1">spawn events dynamically and in a nested fashion. Patches can be built dynamically and</p>
-<p class="p1">parameterized not just by floating point numbers from a static score, but by other</p>
-<p class="p1">graphs of unit generators as well. Or you can construct patches algorithmically on the fly.</p>
-<p class="p1">This kind of fluidity is not possible in a language with statically allocated unit generators.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>Brevity:</b> In SuperCollider, symmetries in a patch can be exploited by either multichannel<span class="Apple-converted-space"> </span></p>
-<p class="p1">expansion or programmatic patch building. For example, the following short program<span class="Apple-converted-space"> </span></p>
-<p class="p1">generates a patch of 49 unit generators. In a graphical program this might require a significant<span class="Apple-converted-space"> </span></p>
-<p class="p1">amount of time and space to wire up. Another advantage is that the size of the patch below can<span class="Apple-converted-space"> </span></p>
-<p class="p1">be easily expanded or contracted just by changing a few constants.</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// 10 voices of a random sine percussion sound :</p>
-<p class="p8">s = <span class="s2">Mix</span>.ar(<span class="s2">Array</span>.fill(10, { <span class="s2">Resonz</span>.ar(<span class="s2">Dust</span>.ar(0.2, 50), 200 + 3000.0.rand, 0.003)}) );</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// reverb predelay time :</p>
-<p class="p8">z = <span class="s2">DelayN</span>.ar(s, 0.048);</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// 7 length modulated comb delays in parallel :</p>
-<p class="p8">y = <span class="s2">Mix</span>.ar(<span class="s2">Array</span>.fill(7,{ <span class="s2">CombL</span>.ar(z, 0.1, <span class="s2">LFNoise1</span>.kr(0.1.rand, 0.04, 0.05), 15) }));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// two parallel chains of 4 allpass delays (8 total) :</p>
-<p class="p8">4.do({ y = <span class="s2">AllpassN</span>.ar(y, 0.050, [0.050.rand, 0.050.rand], 1) });</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span>// add original sound to reverb and play it :</p>
-<p class="p8">s+(0.2*y)</p>
-<p class="p8">}.play )</p>
-<p class="p4"><br></p>
-<p class="p1">Graphical synthesis environments are becoming a dime a dozen. It seems like a new one</p>
-<p class="p1">is announced every month. None of them have the dynamic flexibility of SuperCollider's<span class="Apple-converted-space"> </span></p>
-<p class="p1">complete programming environment. Look through the SuperCollider help files and examples<span class="Apple-converted-space"> </span></p>
-<p class="p1">and see for yourself.</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/14.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/14.html
deleted file mode 100644
index 602a7bb..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/14.html	
+++ /dev/null
@@ -1,204 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #326f17}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Hiragino Kaku Gothic Pro}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #0019b7}
-span.s3 {color: #606060}
-span.s4 {color: #000000}
-span.s5 {color: #326f17}
-span.s6 {font: 9.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>14.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>キャリアとモジュレータ</b></p>
-<p class="p4"><br></p>
-<p class="p5">最もシンプルな形式では、1980年代から有名で、ヤマハのDX7も採用した周波数変調(FM)シンセシスは、1つのオシレータを使って他のオシレータの周波数を変調するというものです。FMシンセシスでの変調をかけるためのオシレータは、通常はオーディオ・レートで動作する様に指定され、その振幅はエンベロープや他のオシレータ、すなわち低周波のオシレータ、によって形作られます。</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">FM</span>合成では、音色はキャリアに対するモジュレータの効果によって異なります。このため、モジュレータは通常オーディオレートで動作する様に指定されます。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"fm1"</span>, { <span class="s2">arg</span> bus = 0, freq = 440, carPartial = 1, modPartial = 1, index = 3, mul = 0.05;</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>// </span>インデックスの値は通常は0から24まで</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>// carPartial :: modPartial => car/mod ratio</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> mod;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> car;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>mod = <span class="s2">SinOsc</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * modPartial,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * index * <span class="s2">LFNoise1</span>.kr(5.reciprocal).abs</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>car = <span class="s2">SinOsc</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq * carPartial) + mod,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mul</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bus,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>car</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p9"><span class="s2">Synth</span><span class="s4">(</span><span class="s3">"fm1"</span><span class="s4">, [</span>\bus<span class="s4">, 0, </span>\freq<span class="s4">, 440, </span>\carPartial<span class="s4">, 1, </span>\modPartial<span class="s4">, 2.4]);</span></p>
-<p class="p6"><span class="s2">Synth</span>(<span class="s3">"fm1"</span>, [<span class="s5">\bus</span>, 1, <span class="s5">\freq</span>, 442, <span class="s5">\carPartial</span>, 1, <span class="s5">\modPartial</span>, 2.401]);</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>周波数変調とリバーブ</b></p>
-<p class="p11"><br></p>
-<p class="p7"><span class="s1">// </span>これは(SC2の配布物の中の)"01 Why SuperCollider document"からのリバーブ</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"preDelay"</span>, { <span class="s2">arg</span> inbus = 2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">DelayN</span>.ar(<span class="s2">In</span>.ar(inbus, 1), 0.048, 0.048)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p12">SynthDef<span class="s4">(</span><span class="s3">"combs"</span><span class="s4">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.arFill(7, { <span class="s2">CombL</span>.ar(<span class="s2">In</span>.ar(4, 1), 0.1, <span class="s2">LFNoise1</span>.kr(<span class="s2">Rand</span>(0, 0.1), 0.04, 0.05), 15) })</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"allpass"</span>, { <span class="s2">arg</span> gain = 0.2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> source;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>source = <span class="s2">In</span>.ar(6, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>4.do({ source = <span class="s2">AllpassN</span>.ar(source, 0.050, [<span class="s2">Rand</span>(0, 0.05), <span class="s2">Rand</span>(0, 0.05)], 1) });</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source * gain</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"theMixer"</span>, { arg gain = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.ar([<span class="s2">In</span>.ar(2, 1), <span class="s2">In</span>.ar(8, 2)]) * gain</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p6">)</p>
-<p class="p13"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">Synth</span>(<span class="s3">"fm1"</span>, [<span class="s5">\bus</span>, 2, <span class="s5">\freq</span>, 440, <span class="s5">\carPartial</span>, 1, <span class="s5">\modPartial</span>, 1.99, <span class="s5">\mul</span>, 0.071]);</p>
-<p class="p6"><span class="s2">Synth</span>(<span class="s3">"fm1"</span>, [<span class="s5">\bus</span>, 2, <span class="s5">\freq</span>, 442, <span class="s5">\carPartial</span>, 1, <span class="s5">\modPartial</span>, 2.401, <span class="s5">\mul</span>, 0.071]);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"preDelay"</span>);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"combs"</span>);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"allpass"</span>);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"theMixer"</span>, [<span class="s5">\gain</span>, 0.64]);</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p14"><br></p>
-<p class="p3"><b>コンポーネント</b></p>
-<p class="p4"><br></p>
-<p class="p15"><span class="s6">"fm"</span>のSynthDefを、1つのSynthDefはモジュレータ、1つのSynthDefはキャリアという2つの部分に分割する、ことでより機能性が高まる。キャリアのシグナルを2つまたはそれ以上のモジュレータで加工することができる。</p>
-<p class="p14"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"carrier"</span>, { <span class="s2">arg</span> inbus = 2, outbus = 0, freq = 440, carPartial = 1, index = 3, mul = 0.2;</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>// </span>インデックスの値は通常は0から24まで</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>// carPartial :: modPartial => car/mod ratio</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> mod;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> car;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>mod = <span class="s2">In</span>.ar(inbus, 1);</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outbus,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar((freq * carPartial) + mod, 0, mul);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"modulator"</span>, { <span class="s2">arg</span> outbus = 2, freq, modPartial = 1, index = 3;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outbus,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq * modPartial, 0, freq)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise1</span>.kr(<span class="s2">Rand</span>(3, 6).reciprocal).abs<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> freq = 440;</p>
-<p class="p7"><span class="s1">// </span>左チャンネルのためのモジュレータ</p>
-<p class="p6"><span class="s2">Synth</span>.head(s, <span class="s3">"modulator"</span>, [<span class="s5">\outbus</span>, 2, <span class="s5">\freq</span>, freq, <span class="s5">\modPartial</span>, 0.649, <span class="s5">\index</span>, 2]);</p>
-<p class="p6"><span class="s2">Synth</span>.head(s, <span class="s3">"modulator"</span>, [<span class="s5">\outbus</span>, 2, <span class="s5">\freq</span>, freq, <span class="s5">\modPartial</span>, 1.683, <span class="s5">\index</span>, 2.31]);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>右チャンネルのためのモジュレータ</p>
-<p class="p6"><span class="s2">Synth</span>.head(s, <span class="s3">"modulator"</span>, [<span class="s5">\outbus</span>, 4, <span class="s5">\freq</span>, freq, <span class="s5">\modPartial</span>, 0.729, <span class="s5">\index</span>, 1.43]);</p>
-<p class="p6"><span class="s2">Synth</span>.head(s, <span class="s3">"modulator"</span>, [<span class="s5">\outbus</span>, 4, <span class="s5">\freq</span>, freq, <span class="s5">\modPartial</span>, 2.19, <span class="s5">\index</span>, 1.76]);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>左と右のチャンネルのためのキャリア</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"carrier"</span>, [<span class="s5">\inbus</span>, 2, <span class="s5">\outbus</span>, 0, <span class="s5">\freq</span>, freq, <span class="s5">\carPartial</span>, 1]);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"carrier"</span>, [<span class="s5">\inbus</span>, 4, <span class="s5">\outbus</span>, 1, <span class="s5">\freq</span>, freq, <span class="s5">\carPartial</span>, 0.97]);</p>
-<p class="p6">)</p>
-<p class="p14"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p14"><br></p>
-<p class="p3"><b>コンポーネントとリバーブ</b></p>
-<p class="p4"><br></p>
-<p class="p5">この例は前に定義されたリバーブと2つのシンセ定義(モジュレータが1つのSynthDefで他方はキャリア)で説明したモデルを組み合わせています。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">var</span> freq;</p>
-<p class="p7"><span class="s1">// </span>キャリアとモジュレータのためのランダムな基本周波数を生成する</p>
-<p class="p6">freq = 330.0.rrand(500);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>左チャンネルのためのモジュレータ</p>
-<p class="p6"><span class="s2">Synth</span>.head(s, <span class="s3">"modulator"</span>, [<span class="s5">\outbus</span>, 60, <span class="s5">\freq</span>, freq, <span class="s5">\modPartial</span>, 0.649, <span class="s5">\index</span>, 2]);</p>
-<p class="p6"><span class="s2">Synth</span>.head(s, <span class="s3">"modulator"</span>, [<span class="s5">\outbus</span>, 60, <span class="s5">\freq</span>, freq, <span class="s5">\modPartial</span>, 1.683, <span class="s5">\index</span>, 2.31]);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>右チャンネルのためのモジュレータ</p>
-<p class="p6"><span class="s2">Synth</span>.head(s, <span class="s3">"modulator"</span>, [<span class="s5">\outbus</span>, 62, <span class="s5">\freq</span>, freq, <span class="s5">\modPartial</span>, 1.11, <span class="s5">\index</span>, 1.43]);</p>
-<p class="p6"><span class="s2">Synth</span>.head(s, <span class="s3">"modulator"</span>, [<span class="s5">\outbus</span>, 62, <span class="s5">\freq</span>, freq, <span class="s5">\modPartial</span>, 0.729, <span class="s5">\index</span>, 1.76]);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>左と右のチャンネルのためのキャリア</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"carrier"</span>, [<span class="s5">\inbus</span>, 60, <span class="s5">\outbus</span>, 100, <span class="s5">\freq</span>, freq, <span class="s5">\carPartial</span>, 1]);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"carrier"</span>, [<span class="s5">\inbus</span>, 62, <span class="s5">\outbus</span>, 100, <span class="s5">\freq</span>, freq+1, <span class="s5">\carPartial</span>, 2.91]);</p>
-<p class="p14"><br></p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"preDelay"</span>, [<span class="s5">\inbus</span>, 100]);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"combs"</span>);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"allpass"</span>);</p>
-<p class="p6"><span class="s2">Synth</span>.tail(s, <span class="s3">"theMixer"</span>, [<span class="s5">\gain</span>, 0.2]);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/15.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/15.html
deleted file mode 100644
index d105d06..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/15.html	
+++ /dev/null
@@ -1,226 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; min-height: 13.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.s4 {color: #606060}
-span.s5 {color: #a71e12}
-span.s6 {font: 9.0px Osaka; color: #a71e12}
-span.s7 {font: 9.0px Osaka}
-span.s8 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>15.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ルーチンとクロック</b></p>
-<p class="p4"><br></p>
-<p class="p5">クロックは、SuperColliderの中で自動のアルゴリズミックなスケジュ−リングを生成する際に使うメカニズムを提供します。クロックはルーチン、タスク、そしてパターンを再生します。</p>
-<p class="p4"><br></p>
-<p class="p5">パターンとタスクはルーチンから作られます。</p>
-<p class="p4"><br></p>
-<p class="p5">ルーチンに対する最初のアーギュメント(そして通常は唯一のアーギュメント)は関数です。</p>
-<p class="p4"><br></p>
-<p class="p5">これが関数の一例です。</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s1">// </span>関数を実行するには.valueメッセージを送る</p>
-<p class="p7"><span class="s2">f = { </span>"hello, world"<span class="s2"> };</span></p>
-<p class="p8">f.value;</p>
-<p class="p4"><br></p>
-<p class="p5">これはルーチンの中に関数を配置したものです。.yieldメッセージを送ることで関数の中の式を評価します。</p>
-<p class="p4"><br></p>
-<p class="p8">r = <span class="s3">Routine</span>({ <span class="s4">"hello, world"</span>.yield.postln });</p>
-<p class="p4"><br></p>
-<p class="p5">ルーチンを実行するには、評価して下さい。</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s1">// </span>ルーチンを評価するには、.nextメッセージを送る</p>
-<p class="p8">r.next;</p>
-<p class="p4"><br></p>
-<p class="p5">もう一度やってみましょう。</p>
-<p class="p4"><br></p>
-<p class="p8">r.next;</p>
-<p class="p4"><br></p>
-<p class="p5">これは一度ルーチンが"yield"(受け渡す)すると、関数の中にさらなるコードがあるか、resetメッセージを受け取らない限り、終了することを示します。</p>
-<p class="p4"><br></p>
-<p class="p8">r.reset;</p>
-<p class="p8">r.next</p>
-<p class="p4"><br></p>
-<p class="p9">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">この引用では、ルーチンに.nextメッセージが送られると、3つの表現(文字列)を順番に引き渡すことを引き起こします。例えば、nextメッセージが送られると、文字列が引き渡され、nextメッセージが送られると、文字列が引き渡さるという様にです。</p>
-<p class="p10"><br></p>
-<p class="p8">(</p>
-<p class="p8">r = <span class="s3">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>"hello, world"<span class="s2">.yield;</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>"what a world"<span class="s2">.yield;</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>"i am a world"<span class="s2">.yield;</span></p>
-<p class="p8">});</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p5">上の例での最後の.nextメッセージはnilを返すでしょう。最後の表現が引き渡されると、ルーチンはリセットされるまで常にnilを返します。</p>
-<p class="p4"><br></p>
-<p class="p8">r.next;</p>
-<p class="p8">r.next;</p>
-<p class="p8">r.next;</p>
-<p class="p8">r.next;</p>
-<p class="p4"><br></p>
-<p class="p9">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">このルーチンを.doメッセージを使って書き直すと、loopを作ります。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p8">r = <span class="s3">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> array;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>array = [ </span>"hello, world"<span class="s2">, </span>"what a world"<span class="s2">, </span>"i am a world"<span class="s2"> ];</span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>3.do({ array.choose.yield })</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p8">});</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p5">このdo loopをルーチンの中のループよりももう1回多く実行すると、前の例と同じ様に、3つの文字列とnilを返します。</p>
-<p class="p4"><br></p>
-<p class="p8">4.do({ r.next.postln });</p>
-<p class="p4"><br></p>
-<p class="p9">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">次に、このルーチンを.waitメッセージを含む形で書き直します。.waitメッセージは、その数字が示す秒単位で指定した時間だけ、ルーチンを「プレイ」するクロックを一時停止させます。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p8">r = <span class="s3">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> array;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>array = [ </span>"hello, world"<span class="s2">, </span>"what a world"<span class="s2">, </span>"i am a world"<span class="s2"> ];</span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>3.do({ 1.wait; array.choose.postln })</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p8">});</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p5">以下のコードが示す様に、ルーチンに.resetメッセージを追加します。このようにして、ルーチンは常に再スタートできる様になります。そして、クロックとともにルーチンをプレイします。</p>
-<p class="p4"><br></p>
-<p class="p5">以下のコードはSuperColliderがイベントをスケジューリングする時に使用する3つのクロックを示します。</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3">SystemClock</span>.play(r.reset);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// </span><span class="s6">最も正確</span></p>
-<p class="p8"><span class="s3">AppClock</span>.play(r.reset);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// GUI</span><span class="s6">で使用する</span></p>
-<p class="p9"><span class="s3">TempoClock</span><span class="s2">.new.play(r.reset);<span class="Apple-tab-span">	</span></span>// <span class="s7">主に拍でスケジューリングするために使われる</span></p>
-<p class="p4"><br></p>
-<p class="p9">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">または、そのプロセスを省略することができ、その場合にはデフォルトとしてTempoClockが使用されます。</p>
-<p class="p4"><br></p>
-<p class="p8">r.reset.play</p>
-<p class="p4"><br></p>
-<p class="p9">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>ルーチンを用いたシンセシスのスケジューリング</b></p>
-<p class="p4"><br></p>
-<p class="p5">ルーチンの中にシンセを入れます。シンセの中のSynthDefが必ずエンベロープを持つ様にし、そのエンベロープのdoneActionパラメータを2にセットします。これによって、エンベロープが終了した後に、そのシンセのために必要とされていたメモリが解放されます。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p11">SynthDef<span class="s2">(</span><span class="s4">"fm2"</span><span class="s2">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">arg</span> bus = 0, freq = 440, carPartial = 1, modPartial = 1, index = 3, mul = 0.2, ts = 1;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>// </span>インデックスの値は通常0から24まで</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// carPartial :: modPartial => car/mod ratio</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> mod;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> car;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>mod = <span class="s3">SinOsc</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * modPartial,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * index * <span class="s3">LFNoise1</span>.kr(5.reciprocal).abs</p>
-<p class="p8"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>car = <span class="s3">SinOsc</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq * carPartial) + mod,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mul</p>
-<p class="p8"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bus,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>car * <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.sine(1), doneAction: 2, timeScale: ts)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p11"><span class="s2">r = </span>Routine<span class="s2">({</span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>12.do({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>(<span class="s4">"fm2"</span>, [<span class="s8">\freq</span>, 400.0.rrand(1200), <span class="s8">\carPartial</span>, 0.5.rrand(2), <span class="s8">\ts</span>, 0.1.rrand(4)]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>})</p>
-<p class="p8">});</p>
-<p class="p8">)</p>
-<p class="p8">r.reset.play;</p>
-<p class="p4"><br></p>
-<p class="p9">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">ルーチンの中で引き起こされたシンセを、ルーチンの外側で実行するエコー・エフェクト・ユニットを通してプレイします。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"echoplex"<span class="s2">, {</span></p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s2">.ar(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">CombN</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">In</span>.ar(0, 1),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.35,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s3">Rand</span>(0.05, 0.3), <span class="s3">Rand</span>(0.05, 0.3)],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// </span>シンセが生成されるたびにランダムな値を生成する</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s1">// ~source</span>グループをルートノードの先頭に追加し、<span class="s1">~effects</span>グループをる−とノードの最後に追加する</p>
-<p class="p8">~source = <span class="s3">Group</span>.head(s);</p>
-<p class="p8">~effect = <span class="s3">Group</span>.tail(s);</p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s2">r = </span>Routine<span class="s2">({</span></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>// </span>ループはinf.doと同じ。例えば、永遠に実行される無限ループを生成する。</p>
-<p class="p8"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Synth</span><span class="s2">.head(<span class="Apple-tab-span">	</span></span>// ~source<span class="s7">グループの先頭にシンセを追加する</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~source,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">"fm2"</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\outbus</span>, 0, <span class="s8">\freq</span>, 400.0.rrand(1200), <span class="s8">\modPartial</span>, 0.3.rrand(2.0),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\carPartial</span>, 0.5.rrand(11), <span class="s8">\ts</span>, 0.1.rrand(0.2)]</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>})</p>
-<p class="p8">});</p>
-<p class="p9">// 2<span class="s7">つの</span>echoplexes<span class="s7">ーこれらを</span>~effects<span class="s7">グループの先頭に順に追加する</span></p>
-<p class="p8"><span class="s3">Synth</span>.head(~effect, <span class="s4">"echoplex"</span>);</p>
-<p class="p8"><span class="s3">Synth</span>.head(~effect, <span class="s4">"echoplex"</span>);</p>
-<p class="p8">)</p>
-<p class="p6"><span class="s1">// </span>ルーチンをプレイする</p>
-<p class="p8">r.reset.play;</p>
-<p class="p4"><br></p>
-<p class="p9">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/2.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/2.html
deleted file mode 100644
index 916a39f..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/2.html	
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {font: 9.0px Monaco}
-</style>
-</head>
-<body>
-<p class="p1"><b>2.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>シンセシス</b></p>
-<p class="p4"><br></p>
-<p class="p5">私たちは、SuperColliderが、シンセシスの定義とシンセシスのスケジューリングということに関してクライアント/サーバー・モデルに沿っているということを知っています。今はシンセシスの定義にフォーカスしましょう。つまり、どのようにしてサーバーで実行するためのシンセのエンジンを作るのかを調べてみましょう。</p>
-<p class="p4"><br></p>
-<p class="p5">このことをするに当たって、考えるべきことが3つあります。</p>
-<p class="p4"><br></p>
-<p class="p5">第1に、オブジェクト指向プログラミングに関する基本的な事項について知っておく必要があります。そして、SuperCollider言語の文法と構文についてもいくらか知っておく必要があります。原理的には、この様な知識というのは簡単に身につけることができます。そのためにしなければならないことは、SuperColliderのドキュメントを読み、いくつかの例を勉強するということです。</p>
-<p class="p4"><br></p>
-<p class="p5">第2に、デジタル信号処理に関する知識も必要です。原理的には、こうした知識を身につけることも簡単です。必要なのはCurtis Roadsの「<span class="s1">Computer Music Tutorial</span>(訳本:コンピュータ音楽—歴史・テクノロジー・アート)」のような良い本だけです。</p>
-<p class="p4"><br></p>
-<p class="p5">第3に、私たちが音楽的、美学的に何を最終的に成し遂げたいのかを知る必要があります。この知識を得るためには疑問を投げかける必要があります。そうした質問とは、例えば次の様なものです。なぜ、アーティストとしてSuperColliderのようなツールを使うのでしょうか?私たちが作る音楽やアートを通じて何を表現しようとしているのでしょうか?</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/3.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/3.html
deleted file mode 100644
index 5e057b4..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/3.html	
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; min-height: 13.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 9.0px Osaka}
-span.s4 {color: #000000}
-span.s5 {color: #a71e12}
-span.s6 {font: 9.0px Osaka; color: #a71e12}
-span.s7 {color: #606060}
-span.s8 {color: #0019b7}
-span.s9 {font: 12.0px Hiragino Kaku Gothic Pro}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>3.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>SynthDefs</b></span><b>には2つの重要な部分がある</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">SynthDefs</span>は、SuperColliderでシンセサイザーのエンジンを作るのに使うクラスです。</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">SynthDefs</span>には2つの重要な部分があります。それは、名前と関数です。SuperColliderの用語では、関数はしばしば<span class="s2">ugenGraphFunc</span>と呼ばれます。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">ugenGraphFunc</span>という言葉は、ユニット・ジェネレータを、一種のデータ構造であるグラフの形式で記述する関数、という考え方から来ています。SuperColliderは、関数の中に見つけたコードに基づいてグラフを生成します。これは、実際には、グラフという考え方がどのように機能するのかということに関しては、それを使う場合には知らなくてもいいということを意味します。</p>
-<p class="p4"><br></p>
-<p class="p5">しかし、グラフに関するさらなる背景を説明するために、<span class="s2">http://www.nist.gov/dads/HTML/graph.html</span>でのグラフに関する議論を引用します。</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p5">「グラフはロードマップの様なものです。都市は頂点です。都市から都市への道路はエッジです。(道路のジャンクションや分岐はどうでしょう?ジャンクションもまた頂点と見なすことができます。もしそれらを頂点としてカウントしたくないのであれば、道路は2つ以上の都市を結ぶでしょう。つまり、厳密にいえば、ハイパーグループにはハイパーエッジがあるのです。もしそれぞれの1組の都市の間に1本以上の道路を許可したいのであれば、代わりにマルチグラフがあります。これはあなたがどのように定義したいのか次第です)。</p>
-<p class="p4"><br></p>
-<p class="p5">グラフに関する他の考え方とは、線によって接続された点の集まりというものです。かなり昔に数学者は普通の人々に話しかけるのを辞めてしまったため、グラフの中の点は頂点と呼ばれ、点に接続された線はエッジと呼ばれます。重要なのはエッジと頂点、つまり、点とそれらの間の接続です。与えられた点の位置や与えられた線の真直度は問題ではありません。かくして、点はどこにもなることができ、それらをつなぐ線は無限に伸縮性があります。さらに、数学的なグラフは、比較表や、xとy軸のある図や、株価のレポートのくねった線ではありません。グラフとは単純に点とそれらの間の線なのです。すみません、頂点とエッジです。」</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p6">// synthdef<span class="s3">のテンプレート</span> ... <span class="s3">疑似コードを含む</span></p>
-<p class="p7">SynthDef<span class="s4">(</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>"i am a synthdef"<span class="s4">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">// </span><span class="s6">第1アーギュメントは名前</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>{ .... i am a ugenGraphFunc ... }<span class="Apple-tab-span">	</span><span class="s5">// </span><span class="s6">第2アーギュメントはUGen</span></p>
-<p class="p9">)</p>
-<p class="p4"><br></p>
-<p class="p5">次の数行のコードは実際のSuperColliderのコードのテンプレートを示します。synthdefの第1アーギュメントは名前で、第2アーギュメントが関数です。</p>
-<p class="p4"><br></p>
-<p class="p9">(</p>
-<p class="p7">SynthDef<span class="s4">(</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s7">"aSynthDef"</span><span class="s4">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// SynthDef<span class="s3">の名前</span></p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span>{ <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ugenGraphFunc</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">arg</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Out</span>.ar(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">SinOsc</span>.ar(freq, 0, 0.1)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}</p>
-<p class="p9">).load(s);</p>
-<p class="p9">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p1"><b>SynthDef</b><span class="s9"><b>ブラウザー</b></span></p>
-<p class="p4"><br></p>
-<p class="p5">典型的には、<span class="s2">ugenGraphFunc</span>は2、3の重要なコンポーネントを含みます。これらにはugen(ユニット・ジェネレータ)、control(コントロール)、input(入力)そしてoutput(出力)が含まれます。</p>
-<p class="p4"><br></p>
-<p class="p5">ブラウザー・ウィンドウでそのようなことを見るためには、次のコードを実行してみて下さい。</p>
-<p class="p4"><br></p>
-<p class="p9">(</p>
-<p class="p9"><span class="s8">SynthDescLib</span>.global.read;</p>
-<p class="p9"><span class="s8">SynthDescLib</span>.global.browse;</p>
-<p class="p9">)</p>
-<p class="p4"><br></p>
-<p class="p5">このコードによって作られるブラウザー・ウィンドウは6つのボックスを含み、全ての以前に定義されたSynthDefの名前を示します。それぞれの名前を選択して、それに関連づけられた<span class="s2">ugenGraphFunc </span>ugen、control、inputとoutputを表示することができます。</p>
-<p class="p4"><br></p>
-<p class="p5">あらかじめ定義されたSynthDefとは、以前に.loadメッセージが送られたものということです。この結果、SuperColliderはあらかじめロードされたSynthDefを起動時に読み込むます。</p>
-<p class="p10"><br></p>
-<p class="p5">.loadメッセージによってSynthDefはディスクに書き込まれ、アクティブなサーバーに送られます。これに対して、.sendメッセージは、最初に定義をディスクに書き込むことなしに、ネットワークを通じてサーバーにSynthDefを送ります。</p>
-<p class="p4"><br></p>
-<p class="p5">ニュース速報!:つい最近、新しいメッセージー.storeが定義されました。.storeメッセージは.loadまたは.sendよりも望ましい場合があります。SynthDefをディスクに書き込むことに加えて、SynthDefブラウザー・ウィンドウとかつ/またはパターン・クラスからアクセスできるライブラリに配置します。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p1"><b>ugenGraphFunc</b><span class="s9"><b>のコンポーネント</b></span></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">SynthDef</span>ブラウザーは定義されたSynthDefを表示します。先ほどの「aSynthDef」は4つのugenから構成されています。それには1つのcontrolがあります。それにはinputがありません。そしてそれには1つのoutputがあります。</p>
-<p class="p4"><br></p>
-<p class="p5">ブラウザーで表示される様に、4つのugenは<span class="s2">Control</span>、<span class="s2">SinOsc</span>、<span class="s2">BinaryOpUGen</span>そして<span class="s2">Out</span>それぞれのインスタンスを含みます。この例では、このSynthDefを完全に機能する様にするために、SuperColliderはControlと<span class="s2">BinaryOpUGen</span>のインスタンスをインストールしています。他の全てのugenは指定したときだけ存在します。</p>
-<p class="p4"><br></p>
-<p class="p5">このSynthDefの1つのコントロールは「freq」で、これはシンセが生成される時、あるいはサーバー上にある時であればいつでも使うことのできるアーギュメントです。ブラウザーは「aSynth」には入力が無いことを示しています。これが意味するのは、このSynthDefがInクラスのインスタンスを使っていないということです。</p>
-<p class="p4"><br></p>
-<p class="p5">ブラウザーは、このSynthDefがチャンネル0に1チャンネル分の出力を指定しているということをも示します。</p>
-<p class="p4"><br></p>
-<p class="p5">ブラウザーで表示されている他のSynthDefに関して、どのように構築されているのか調べてみて下さい。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/4.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/4.html
deleted file mode 100644
index 3257b9e..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/4.html	
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0019b7}
-span.s4 {color: #a71e12}
-span.s5 {font: 9.0px Osaka; color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">4.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>(ユニット・ジェネレータの)コントロールのレート</b></p>
-<p class="p2"><br></p>
-<p class="p4">いくつかのSuperColliderのugenは、後に.arメッセージが続けられているということに気づいているでしょう。例えば、次の様に</p>
-<p class="p2"><br></p>
-<p class="p5">SinOsc<span class="s1">.kr</span></p>
-<p class="p2"><br></p>
-<p class="p4">というものもあれば、他のugenは、次の様に.arメッセージを使うということもあります。</p>
-<p class="p2"><br></p>
-<p class="p5">SinOsc<span class="s1">.ar</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>オーディオ・レート</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">.ar</span>メッセージを持つugenはオーディオ・レートで動作します。デフォルトでは、一秒間あたり44,100サンプルです。</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s3">SinOsc</span>.ar(440, 0, 1);</p>
-<p class="p2"><br></p>
-<p class="p4">耳に聞こえるオーディオ・チェーンの一部分である場合にはいつでも、.arメッセージをユニット・ジェネレータに送ります。</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Control rate</b></p>
-<p class="p7"><br></p>
-<p class="p3"><b>コントロール・レート</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">.kr</span>メッセージが後に続くugenはコントロール・レートで動作します。デフォルトでは、コントロール・レートのugenは、オーディオ・レートのugenが生成する64サンプルごとに1回だけ生成します。</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s3">SinOsc</span>.kr(440, 0, 1);</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">.kr</span>メッセージをユニット・ジェネレータに送るのは、それら(ユニット・ジェネレータ)をモジュレータ、すなわち、オーディオ信号を形作るまたはコントロールするもの、として使いたいときだけです。</p>
-<p class="p2"><br></p>
-<p class="p4">コントロール・レート・シグナルは、一方のオーディオ・レートと比較して計算負荷が低くなります。オーディオ・レートのugenのパラメータを変調するために使う場合には、変化のレートが異なるにも関わらず、ほとんどスムーズに聞こえます。</p>
-<p class="p2"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4">これは1つのUGenがオーディオ・レートで動作し、他のUGenがコントロール・レートで動作するという一例です。</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p9"><span class="s3">SynthDef</span><span class="s1">(</span>"anExample"<span class="s1">, {</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[440, 443] + <span class="s3">SinOsc</span>.kr([7, 8], 0, 7), <span class="s4">// </span><span class="s5">コントロール・レートは</span><span class="s4">CPU</span><span class="s5">サイクルをセーブする</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">Synth</span><span class="s1">(</span>"anExample"<span class="s1">)</span></p>
-<p class="p2"><br></p>
-<p class="p4">コントロール・レートで動作するこの<span class="s2">SinOsc</span>ーSinOsc.kr([7, 8], 0, 7)ーのインスタンスは、オーディオ・レートで聞くSinOscの周波数を変調します。</p>
-<p class="p2"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4">将来的には、増加し続けるコンピュータの速度によって(完全に廃止されてしまわない限りは)オーディオ・レートとコントロール・レートを使い分ける必要性は減るでしょう。コントロール・レートでugenを使うことにより、オーディオ・レートでデータを生成する様な厳密さが要求されない場合には、処理にかかる負荷を抑えることができます。</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/5.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/5.html
deleted file mode 100644
index f6e6c1f..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/5.html	
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Hiragino Kaku Gothic Pro}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.s4 {font: 9.0px Monaco; color: #000000}
-span.s5 {font: 9.0px Helvetica}
-span.s6 {color: #606060}
-span.s7 {font: 9.0px Osaka}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>5.<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>バスにオーディオを乗せる</b></p>
-<p class="p4"><br></p>
-<p class="p5">デフォルトでは、SuperColliderはオーディオに対して128のバスを持ちます。バスは配列の中の要素として存在します。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s1">// </span>オーディオ・バス(チャンネル)の配列</p>
-<p class="p8">[ channel0, channel1, channel2, channel3, channel4, ... , ..., ..., etc., ... channel127 ]</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">オーディオ・バスにデータを乗せるには、オーディオ・レートで動作する<span class="s1">Out</span>というugenを使います。</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s2">SynthDef</span><span class="s3">(</span>"dataForABus"<span class="s3">, {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">// 1</span>チャンネル分のオーディオをバス0に書き込む</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(100, 0.1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s2">Synth</span><span class="s3">(</span>"dataForABus"<span class="s3">);</span></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>ブラウザーが示す様に、</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p7"><span class="s1">// </span>評価してみて下さい</p>
-<p class="p8"><span class="s2">SynthDescLib</span>.global.read;</p>
-<p class="p8"><span class="s2">SynthDescLib</span>.global.browse;</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p5">この例は(1チャンネル分の)オーディオ出力をチャンネル0に乗せます。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>バスからオーディオを取得する</b></p>
-<p class="p4"><br></p>
-<p class="p10">オーディオ・バスからデータを取得するには、<span class="s5">.ar</span>メッセージをInというugenに送ります。</p>
-<p class="p2"><br></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s2">SynthDef</span><span class="s3">(</span>"dataFromABus"<span class="s3">, {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-tab-span">	</span></span><span class="s1">//</span> 左チャンネルはオーディオ・バスから入力を得る</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">In</span>.ar(0, 1),<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0.2),<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).load(s);</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p6"><span class="s2">Synth</span><span class="s3">(</span><span class="s6">"dataForABus"</span><span class="s3">);<span class="Apple-tab-span">	</span></span>// <span class="s7">チャンネル</span>0<span class="s7">にノコギリ波をシンセサイズする</span></p>
-<p class="p6"><span class="s2">Synth</span><span class="s3">(</span><span class="s6">"dataFromABus"</span><span class="s3">);<span class="Apple-tab-span">	</span></span>// <span class="s7">それをチャンネル</span>1<span class="s7">のサイン波で変調する</span></p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p10">さらに詳しくは、SuperColliderのヘルプ・システムで<span class="s5"><b>Out</b></span>と<span class="s5"><b>In</b></span>を参照して下さい。</p>
-<p class="p2"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/6.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/6.html
deleted file mode 100644
index eddfa41..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/6.html	
+++ /dev/null
@@ -1,165 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; min-height: 13.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #606060}
-span.s4 {color: #326f17}
-span.s5 {font: 9.0px Monaco; color: #0019b7}
-span.s6 {font: 9.0px Monaco; color: #000000}
-span.s7 {font: 9.0px Helvetica}
-span.s8 {color: #000000}
-span.s9 {color: #a71e12}
-span.s10 {font: 9.0px Osaka; color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>6.</b></p>
-<p class="p2"><br></p>
-<p class="p3">SynthDefのプロパティに関する議論を続けるために、次を評価してみて下さい。</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s1">SynthDescLib</span>.global.read;</p>
-<p class="p4"><span class="s1">SynthDescLib</span>.global.browse;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3">そして、それぞれのシンセのためのコントロールをリスと表示するボックスに注目して下さい。</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p6"><b>コントロールは(大抵は)アーギュメントである</b></p>
-<p class="p2"><br></p>
-<p class="p3">シンセが生成される時や、動作中に情報を与えたいと思う時には、SynthDefにコントロールをセットします。このための最も一般的な方法は、1つ、またはそれ以上のアーギュメントをSynthDefに含めるということです。</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">次の例では、それぞれのアーギュメントはデフォルト値を持ちます。そのような場合には、もし必要なところにアーギュメントを与えるのを忘れたとしても、SynthDefが自動的に供給します。加えて、シンセが生成される時に必要となるものを示すアーギュメントに対するデフォルト値は、コードがより読みやすくします。</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p7"><span class="s2">// </span>デフォルト値を持つ<span class="s2">2</span>つのアーギュメント</p>
-<p class="p4"><span class="s1">SynthDef</span>(<span class="s3">"withControls"</span>, { <span class="s1">arg</span> freq = 440, mul = 0.22;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([freq, freq+1], 0, mul)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}).load(s);</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">Synth</span>(<span class="s3">"withControls"</span>, [<span class="s4">\freq</span>, 440, <span class="s4">\mul</span>, 0.1]);</p>
-<p class="p2"><br></p>
-<p class="p3">配列の中のアイテムはSynthDefのコントロールに渡される値です。</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">配列の中にそれぞれのコントロールを書く場合には、次の様にシンボル(バックスラッシュの後に名前が続く)を用いることもできますし、</p>
-<p class="p8"><br></p>
-<p class="p4"><span class="s1">Synth</span>(<span class="s3">"withControls"</span>, [<span class="s4">\freq</span>, 440, <span class="s4">\mul</span>, 0.1]);</p>
-<p class="p8"><br></p>
-<p class="p3">または、次の様に文字列(引用符の中に名前)を用いることもでき、</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">Synth</span>(<span class="s3">"withControls"</span>, [<span class="s4">"freq"</span>, 440, <span class="s4">"mul"</span>, 0.1]);</p>
-<p class="p2"><br></p>
-<p class="p3">その後に値が続きます。</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">いずれの場合でも、そのパターンは、</p>
-<p class="p2"><br></p>
-<p class="p4">[ controlName, value, controlName, value].</p>
-<p class="p2"><br></p>
-<p class="p3">です。</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">シンセにコントロールを渡す第3の方法もあります。前の例のシンセは次の様に書くこともできます。</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">Synth</span>(<span class="s3">"withControls"</span>, [0, 440, 1, 0.1]);</p>
-<p class="p2"><br></p>
-<p class="p3">このパターンは次の様になります。</p>
-<p class="p2"><br></p>
-<p class="p4">[ controlIndex, value, controlIndex, value].</p>
-<p class="p2"><br></p>
-<p class="p3">この手法のディスアドバンテージは、コントロールをインデックス番号として表現するのは説明的ではなく、それゆえに名前をシンボルまたは文字列として与えるよりも読みにくくなるでしょう。</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p6"><b>コントロールはリセットすることもできる</b></p>
-<p class="p2"><br></p>
-<p class="p3">次の例は、シンセが生成された後に(動作中に)どのようにしてコントロールをリセットすることができるのかということを示しています。</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s1">SynthDef</span>(<span class="s3">"resetMyControls"</span>, { <span class="s1">arg</span> freq = 440, mul = 0.22;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([freq, freq+1], 0, mul)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}).load(s);</p>
-<p class="p4">)</p>
-<p class="p9"><br></p>
-<p class="p4"><span class="s1">~aSynth = Synth</span>(<span class="s3">"resetMyControls"</span>, [<span class="s4">\freq</span>, 440, <span class="s4">\mul</span>, 0.06]);</p>
-<p class="p4">~aSynth.set(\freq, 600, \mul, 0.25);</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">aSynth</span>の前の~はグローバル変数を定義します。このようにすることの主なアドバンテージは、次の様に明示的に宣言する必要がないということです。</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s5">var</span><span class="s6"> aSynth; </span><span class="s2">// '~'</span>のない変数はまず宣言しなければならない!!</p>
-<p class="p2"><br></p>
-<p class="p3">もっと正確に言えば、~という文字は「aSynth」という変数をcurrentEnvironmentという名前で知られるオブジェクトのインスタンスの中に配置します。詳しくは、SuperColliderのヘルプ・システムで<span class="s7"><b>Environment</b></span>というドキュメントを参照して下さい。</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">SynthDef</span>はコントロールのそれぞれにラグ・タイムを定義することができます。<span class="s2">ugenGraphFunc</span>の後に配列として書くラグは、あるコントロール値から他のコントロール値にスムーズに変化する時間を指定します。</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s1">SynthDef</span>(<span class="s3">"controlsWithLags"</span>, { <span class="s1">arg</span> freq = 440, mul = 0.22;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([freq, freq+1], 0, mul)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}, [1, 1]).load(s);</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">~aSynth = Synth</span>(<span class="s3">"controlsWithLags"</span>, [<span class="s4">\freq</span>, 550, <span class="s4">\mul</span>, 0.1]);</p>
-<p class="p4">~aSynth.set(\freq, 600, \mul, 0.5);</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p10"><br></p>
-<p class="p3"><span class="s2">SynthDef</span>の中にラグタイムの配列を含めるというオプションがあるということは、前に議論した<span class="s2">SynthDef</span>のテンプレートは再定義されなければならないということを意味します。</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s2">// </span>前のSynthDefのためのテンプレート。ラグタイムの配列なし。</p>
-<p class="p11">SynthDef<span class="s8">(</span></p>
-<p class="p12"><span class="s8"><span class="Apple-tab-span">	</span></span>"i am a synthdef"<span class="s8">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s9">// </span><span class="s10">第1アーギュメントは名前</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ .... i am a ugenGraphFunc ... }<span class="Apple-tab-span">	</span><span class="s9">// </span><span class="s10">第2アーギュメントは</span><span class="s9">ugenGraphFunc</span></p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">// </span>ラグタイムの配列付きで再定義したSynthDefのためのテンプレート</p>
-<p class="p7"><span class="s2">// </span>ラグタイムの配列のためのクラス定義は<span class="s2">'rates'</span>と呼ぶ</p>
-<p class="p11">SynthDef<span class="s8">(</span></p>
-<p class="p12"><span class="s8"><span class="Apple-tab-span">	</span></span>"i am a synthdef"<span class="s8">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s9">// </span><span class="s10">名前</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ .... i am a ugenGraphFunc ... },<span class="Apple-tab-span">	</span><span class="s9">// ugenGraphFunc</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ ... lagTimes ... ]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// rates</span></p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3">どちらのテンプレートを用いるかという選択はユーザー次第です。もし、SynthDefにラグタイムを含める必要があるのであれば、第2のテンプレート、すなわち、レートの配列を含むもの、を使います。</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/7.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/7.html
deleted file mode 100644
index 8a934c0..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/7.html	
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>7.<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>いつ1つのSynthDefを用いるか ... いつ2つまたはそれ以上のSynthDefを用いるか</b></p>
-<p class="p4"><br></p>
-<p class="p5">多くのシンセシスのプロセスでは、シンプルな場合には、単独のSynthDefで定義することができます。 もっと複雑な場合には、グループの中でコンポーネントとしてコラボレートする複数のSynthDefを使う様に書くのがベストです。</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>関数と.scopeメッセージ</b></p>
-<p class="p4"><br></p>
-<p class="p5">シンプルなシンセシスのプロセスを試してみる簡単な方法は、関数の中で実行してみるということで、これはSynthDefを定義してそれをシンセの中でエンジンとして使うというよりも簡単です。この様な方法でコードを開発している時、後のある時点で、コードをテスト用の関数からSynthDefに変換することができます。</p>
-<p class="p4"><br></p>
-<p class="p5">実際には、.playと.scopeメッセージは関数に送ることができ、そうすることでこの手法は有益なものになります。なぜなら、.scopeメッセージは関数の中でそのコードを実行し、定義されたシンセシスのプロセスによって生成される波形を視覚的な表現として表示するからです。</p>
-<p class="p4"><br></p>
-<p class="p7">The .scope message ONLY works with the internal server - which means that the internal server must be turned on to use it. This can be done manually, by pressing the boot button on the internal server, or through code, as in</p>
-<p class="p4"><br></p>
-<p class="p5">しかしながら、<span class="s1">.scope</span>メッセージはインターナル・サーバーに対してしか機能しません。つまり、これを使うためにはインターナル・サーバーがオンになっていなければならないということです。これを手動でやるためには、インターナル・サーバーのbootボタンを押すか、コードとして次の様に実行します。</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s2">Server</span>.internal.boot;</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">この例を実行してスコープ・ウィンドウに注目して下さい。</p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>SinOsc</span>.ar([440.067, 441.013], 0, 1)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar([111, 109], 0, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.scope;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">これは同じシンセシスのプロセスをSnythDefとして表現したものです。以下に示す様に、上の例で関数の中に書かれているコードが、単にそのままOutの第2アーギュメントになっているということに注目して下さい。</p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p8"><span class="s2">SynthDef</span><span class="s3">(</span>"ringMod"<span class="s3">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar([440.067, 441.013], 0, 1) * <span class="s2">SinOsc</span>.ar([111, 109], 0, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).load(s);</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">Synth</span><span class="s3">(</span>"ringMod"<span class="s3">)</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/8.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/8.html
deleted file mode 100644
index cb85f7b..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/8.html	
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 12.0px Hiragino Kaku Gothic Pro}
-span.s4 {font: 9.0px Osaka}
-</style>
-</head>
-<body>
-<p class="p1"><b>8.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>1つの、ただ1つのUGen</b></p>
-<p class="p4"><br></p>
-<p class="p5">最も簡単なシンセシスのプロセスはただ1つのUGenを実行するものです。例えば、</p>
-<p class="p4"><br></p>
-<p class="p6">{ <span class="s1">Saw</span>.ar(500, 0.1) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p5">または</p>
-<p class="p4"><br></p>
-<p class="p6">{ <span class="s1">Formlet</span>.ar(<span class="s1">Saw</span>.ar(22), 400, 0.01, 0.11, 0.022) }.scope</p>
-<p class="p4"><br></p>
-<p class="p5">です。</p>
-<p class="p4"><br></p>
-<p class="p5">様々なUGenのための<span class="s2">SuperCollider</span>のヘルプ・ドキュメントのほとんどがそのような例を示してくれるでしょう。</p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>マルチ・チャンネルへの拡張</b></p>
-<p class="p4"><br></p>
-<p class="p5">任意のアーギュメント(コントロール)スロットに配列を与えることで、1つのUGenを2チャンネルに拡張できます。</p>
-<p class="p4"><br></p>
-<p class="p6">{ <span class="s1">Saw</span>.ar([500, 933], 0.1) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p5">同じことを他の(長い)書き方で書くと次の様になります。</p>
-<p class="p4"><br></p>
-<p class="p6">{ [ <span class="s1">Saw</span>.ar(500, 0.1), <span class="s1">Saw</span>.ar(933, 0.1)] }.scope;</p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>UnaryOpUGen</b><span class="s3"><b>の探求</b></span></p>
-<p class="p4"><br></p>
-<p class="p5">UGenにメッセージを送ることで、多くのシンセシス・プロセスを生成することができます。UnaryOpsフォルダの中のSuperColliderヘルプ・システムの中に、多くの単項演算に関するヘルプファイルがあります。</p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">これを</p>
-<p class="p4"><br></p>
-<p class="p6">{ <span class="s1">SinOsc</span>.ar(500, 0, 0.5) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p5">次のものと比較してみて下さい。</p>
-<p class="p4"><br></p>
-<p class="p6">{ <span class="s1">SinOsc</span>.ar(500, 0, 0.5).distort }.scope;</p>
-<p class="p4"><br></p>
-<p class="p5">.distortメッセージ(<span class="s2">UGen</span>に送られたメッセージ)は単項演算です。.distortメッセージがSinOsc UGenの出力を変調しているのが聞こえるでしょう。これによってより多くのパーシャルが生まれます。</p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">質問:.distortメッセージはどこから来ているのでしょうか?</p>
-<p class="p4"><br></p>
-<p class="p5">答え:それは<span class="s2">AbstractFunction</span>の中で定義されています。UGenクラスは<span class="s2">AbstractFunction</span>のサブクラスです。原理的には、<span class="s2">AbstractFunction</span>の中で定義されている全てのメソッドがUGenに適用できるはずです。</p>
-<p class="p4"><br></p>
-<p class="p5">以下のものを</p>
-<p class="p4"><br></p>
-<p class="p6">{ <span class="s1">SinOsc</span>.ar(500, 0, 0.5) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p5">次のものと比較してみて下さい。</p>
-<p class="p4"><br></p>
-<p class="p7">// .cubed<span class="s4">は単項演算の一つ</span></p>
-<p class="p6">{ <span class="s1">SinOsc</span>.ar(500, 0, 0.5).cubed }.scope;</p>
-<p class="p4"><br></p>
-<p class="p7">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/9.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/9.html
deleted file mode 100644
index 3f51783..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/I. Synthesis/9.html	
+++ /dev/null
@@ -1,302 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Hiragino Kaku Gothic Pro}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; min-height: 13.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Osaka; color: #a71e12}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.s4 {font: 9.0px Osaka; color: #a71e12}
-span.s5 {font: 9.0px Osaka}
-span.s6 {font: 9.0px Monaco; color: #a71e12}
-span.s7 {color: #606060}
-span.s8 {color: #000000}
-span.s9 {color: #326f17}
-span.s10 {font: 9.0px Monaco; color: #000000}
-span.s11 {font: 12.0px Helvetica}
-span.s12 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>9.<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>2項演算</b></p>
-<p class="p4"><br></p>
-<p class="p5">1つのUGenの後にオペレータとオペランドが続く2項演算は、通常は、単項演算によって生成されるよりもより複雑なシンセシス・プロセスを作り出します。</p>
-<p class="p4"><br></p>
-<p class="p5">2項演算の例としては、ほんのいくつか例を挙げると、加算、乗算、減算、割算といったものがあります。</p>
-<p class="p4"><br></p>
-<p class="p5">一般的なパターンは</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>OBJECT OPERATOR OPERAND</p>
-<p class="p4"><br></p>
-<p class="p5">オブジェクト オペレータ オペランド</p>
-<p class="p7"><br></p>
-<p class="p5">であり、例えば次の様に</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>2 * 3</p>
-<p class="p4"><br></p>
-<p class="p5">オブジェクト、2項演算子、オペランド、となります。</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">UGen</span>に対して適用することのできる2項演算の多くのリストを見るには、<span class="s1">SuperCollider</span>のヘルプ・システムでHelp/BinaryOpsを参照して下さい。</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ミキシング=加算</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">2</span>つ、またはそれ以上の<span class="s1">UGen</span>をミックスするには加算します。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span>// 2</span>つのノコギリ波をミックスする</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(500, 0.05)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// </span><span class="s4">オブジェクト</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// </span><span class="s4">オペレータ</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(600, 0.06)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// </span><span class="s4">オペランド</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p5">加算の結果は<span class="s1">1</span>つの<span class="s1">BinaryOpUGen</span>になります。</p>
-<p class="p10"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">次の例は、3つのUGenが加算を通して合体することによって何が起きるのかを示します。最初に、2つのUGenが1つのBinarOpUGenに合体します。その結果に加算演算子ともう1つのUGen(オペランド)が続き、もう1つのBinaryOpUGenを生成します。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>// <span class="s5">最初の</span>2<span class="s5">つの</span>UGen<span class="s5">は</span>1<span class="s5">つの</span>BinaryOpUGen<span class="s5">に合体する</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(500, 0.05)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>+</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(600, 0.06)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>+</p>
-<p class="p5"><span class="s6"><span class="Apple-tab-span">	</span>// </span><span class="s3">このUGenは</span><span class="s1">BinaryOpUGen</span>に対するオペランドと‘+’オペレータ</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(700, 0.07)</p>
-<p class="p6">}.scope;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">MixというUGenを用いることで前の例と同じ結果になります。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span>// </span>ミックスしたいUGenを配列の中に入れる</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(500, 0.05),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(600, 0.06),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(700, 0.06)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.scope</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">もしくは、Mix.arFillを使って似た様な結果を生成することもできます。この関数が実行される時には毎回、アーギュメントiはインクリメントされます。つまり、1回目に関数が実行される時にはiは0に等しく、2回目には1、3回目には2、という様になります。</p>
-<p class="p4"><br></p>
-<p class="p6">{ <span class="s2">Mix</span>.arFill(3, { <span class="s2">arg</span> i; <span class="s2">Saw</span>.ar(500 + ((i+1) * 100), 0.05) }) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p11"><br></p>
-<p class="p3"><b>スケーリング=掛算</b></p>
-<p class="p4"><br></p>
-<p class="p5">低い周波数のオシレータを用いる次の例は、<span class="s1">WhiteNoise</span>ジェネレータに対してエンベロープを適用します。これは、1つのUGenを他のUGenと掛算することにより、双方をスケーリングするということをデモするものです。</p>
-<p class="p4"><br></p>
-<p class="p6">{ <span class="s2">WhiteNoise</span>.ar(0.1) * <span class="s2">SinOsc</span>.kr(1, 1) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p5">次の例は、2つのノイズを生成するUgenがサイン波でスケーリングされて<span class="s1">BinaryOpUGen</span>を生成し、それがまた別の<span class="s1">BinaryOpUGen</span>に加算されるというものです。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>// ... <span class="s5">汽車のまね?</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s2">WhiteNoise</span>.ar(0.1) * <span class="s2">SinOsc</span>.kr(1, 1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s2">BrownNoise</span>.ar(0.1) * <span class="s2">SinOsc</span>.kr(2, 1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p6">)</p>
-<p class="p10"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3"><b>エンベロープ</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">UGen</span>の任意のアスペクト、例えば、周波数、位相、振幅といったものをダイナミックに変調するにはエンベロープを使います。</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">// </span>振幅を変調する</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(440, 0, 0.1) * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.sine(1), doneAction: 2) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">doneAction</span>アーギュメント(コントロール)を2にセットすると、SuperColliderはSinOscとEnvGenのインスタンスを保持するために要求されていたメモリを解放することを確約します。アーギュメントがキーワードのスタイルで与えられていることに注意して下さい。キーワードのスタイルとは、アーギュメントの名前の後にコロン(‘:’)が続き、コロンの後に値が続く、というものです。</p>
-<p class="p10"><br></p>
-<p class="p5">キーワードはコードをより読みやすいものにします。また、これによってアーギュメントを任意の順番で書くことができる様になります。</p>
-<p class="p10"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">EnvGen</span>の<span class="s1">timeScale</span>アーギュメント(コントロール)は、エンベロープの継続時間を変調します。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s7">"timeScale"</span>, { <span class="s2">arg</span> ts = 1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0, 0.4) * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.sine(1), doneAction: 2, timeScale: ts)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).load(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s2">Synth</span><span class="s8">(</span><span class="s7">"timeScale"</span><span class="s8">, [</span><span class="s9">\ts</span><span class="s8">, 0.1]); </span>// timeScale<span class="s5">コントロールはエンベロープの継続時間</span></p>
-<p class="p10"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">//<span class="Apple-converted-space">  </span>... </span>エンベロープの時間をシンセが作られるたびに毎回違ったものにスケーリングする</p>
-<p class="p6">(</p>
-<p class="p12"><span class="s8">r = </span>Routine<span class="s8">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s7">"timeScale"</span>, [<span class="s9">\ts</span>, 0.01.rrand(0.3)]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p6">r.play</p>
-<p class="p10"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>加算合成</b></p>
-<p class="p4"><br></p>
-<p class="p5">加算合成とはその名が示す通りのものです。コンポーネントはお互いに加えられ(または合計され)ます。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p9"><span class="s10">{<span class="Apple-tab-span">	</span></span><span class="s1">// </span>関数を12回実行する</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> n = 12;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.arFill(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[67.0.rrand(2000), 67.0.rrand(2000)],</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.reciprocal * 0.75</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>*</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(11, 6), doneAction: 2)</p>
-<p class="p6">}.scope</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3"><b>それぞれのコンポーネントにエンベロープを与える</b></p>
-<p class="p4"><br></p>
-<p class="p5">加算合成に期待されて来たこととは、求められる周波数成分に従ってサイン波を加算することで、想像しうるサウンドを生成または再現することができるということでした。</p>
-<p class="p4"><br></p>
-<p class="p5">加算合成の問題点とは、サウンドの正確な周波数成分を知る必要があるということで、それには必要とされる数のサイン波のそれぞれが理想的なエンベロープで制御されることによって初めて可能になるのです。</p>
-<p class="p4"><br></p>
-<p class="p5">どちらにせよ、前の例のそれぞれのコンポーネントに別々のエンベロープを与えることによって、より微妙なテクスチャーを生成することができます。</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-tab-span">	</span><span class="s2">var</span> n = 12;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.arFill(</p>
-<p class="p8"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// n<span class="s5">個のサイン波を生成する</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">SinOsc</span><span class="s8">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="s5">それぞれが</span>low.rrand(high)<span class="s5">の範囲内で起こりうる周波数</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[67.0.rrand(2000), 67.0.rrand(2000)],<span class="Apple-tab-span">	</span><span class="s3">// ... </span><span class="s4">実数の値</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.reciprocal<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="s5">それぞれのサイン波の振幅をスケーリングする</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// n</span><span class="s4">の値に従って</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p8"><span class="s8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">EnvGen</span><span class="s8">.kr(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="s5">サイン波のそれぞれにエンベロープを与える</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.sine(2.0.rrand(17)),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 0 <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// </span><span class="s4">サウンド全体が完了した時にだけ</span></p>
-<p class="p9"><span class="s10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">// </span>エンベロープを解放する(なぜ?)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="s10"><span class="Apple-tab-span">	</span>*<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">// </span>パッチ全体に対してエンベロープを与える</p>
-<p class="p12"><span class="s8"><span class="Apple-tab-span">	</span></span>EnvGen<span class="s8">.kr(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.perc(11, 6),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>levelScale: 0.75</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6">}.scope</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">(もしくは<span class="s11"><b>Klang</b></span> ugenを用いることで同じ様な結果が得られます)</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>リング変調</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">2</span>つのUGenを掛算することでリング変調を生成します。</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">// </span>キャリアの振幅を低周波オシレータ(LFO)で変調</p>
-<p class="p6">{ <span class="s2">SinOsc.ar(440, 0, 0.571)</span> * <span class="s2">SinOsc</span>.kr(2.reciprocal) }.scope</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">// LFO</span>の周波数を可聴帯域にすることで追加の周波数成分を生成する</p>
-<p class="p12"><span class="s8">{ </span>SinOsc.ar(440, 0, 0.571)<span class="s8"> * </span>SinOsc<span class="s8">.kr(880) }.scope</span></p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">// </span>低周波のオシレータ(lfo)でモジュレータの振幅を変調する</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span>{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0, 0.571)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s12"><span class="Apple-tab-span">	</span></span><span class="s8"><span class="Apple-tab-span">	</span>(</span><span class="s2">SinOsc</span><span class="s8">.kr(880)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="s5">モジュレータとlfoを括弧の中に包み込む</span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>* <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// </span><span class="s4">なぜ?</span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.kr([6.99, 8.01].reciprocal)</p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span>}.scope</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3"><b>振幅変調</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">2</span>つのUGenを掛算する際にモジュレータの値を正の値に制限することで、<span class="s1">Charles Dodge</span>が「クラシック」振幅変調と呼ぶものを生成します。</p>
-<p class="p4"><br></p>
-<p class="p5">モジュレーター、もし低周波のオシレータである場合には、その出力が正の値に制限されているか正の値に制限されていないかの違いは、変調の振幅のみに表れます。UGenを正の値のみに制限するために.absメッセージを使っています。</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">// </span>低周波のオシレータ(lfo)でキャリアの振幅を変調する</p>
-<p class="p6">{ <span class="s2">SinOsc.ar(440, 0, 0.571)</span> * <span class="s2">SinOsc</span>.kr(2.reciprocal).abs }.scope</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">// lfo</span>を用いてモジュレータの振幅を変調する</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span>{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0, 0.571)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s12"><span class="Apple-tab-span">	</span></span><span class="s8"><span class="Apple-tab-span">	</span>(</span><span class="s2">SinOsc</span><span class="s8">.kr(880).abs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// <span class="s5">モジュレータとlfoを括弧の中に包み込む</span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>* <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// </span><span class="s4">なぜ?</span></p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.kr([6.99, 8.01].reciprocal)</p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="s11"><span class="Apple-tab-span">	</span></span>}.scope</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">モジュレータの出力を正の値に制限して低周波のオシレータの周波数を上げることにより、(サイドバンドを生成することによって)著しく音色が変化させます。</p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">// lfo</span>の周波数を可聴帯域にして.absメッセージをモジュレータに適用する</p>
-<p class="p12"><span class="s8">{ </span>SinOsc.ar(440, 0, 0.571)<span class="s8"> * </span>SinOsc<span class="s8">.kr(880).abs }.scope</span></p>
-<p class="p4"><br></p>
-<p class="p9"><span class="s1">// </span>前の例をリング変調(.absメッセージの無いもの)と比較せよ</p>
-<p class="p9"><span class="s1">// ... </span>何が違うだろう?</p>
-<p class="p12"><span class="s8">{ </span>SinOsc.ar(440, 0, 0.571)<span class="s8"> * </span>SinOsc<span class="s8">.kr(880) }.scope</span></p>
-<p class="p4"><br></p>
-<p class="p8">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/README (Japanese) b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/README (Japanese)
deleted file mode 100644
index 9a67014..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis (Japanese version)/README (Japanese)	
+++ /dev/null
@@ -1,12 +0,0 @@
-ComposingƒtƒHƒ‹ƒ_[‚Ì’†‚É'clips'‚Æ‚¢‚¤ƒtƒHƒ‹ƒ_[‚ª‚ ‚è‚Ü‚·B‚»‚̃tƒHƒ‹ƒ_[‚Ì’†‚É‚Í‚Q‚‚̃TƒEƒ“ƒhEƒtƒ@ƒCƒ‹‚ª‚ ‚èASuperColliderƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Æ“¯‚¶ƒfƒBƒŒƒNƒgƒŠ‚É’u‚©‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·B
-
-PerformanceƒtƒHƒ‹ƒ_[‚Ì’†‚ÌHIDDeviceResponder.sc‚ÍDefault LibraryƒtƒHƒ‹ƒ_[‚Ì’†‚É’u‚©‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·iSuperCollider‚͍ăRƒ“ƒpƒCƒ‹‚ðŽÀs‚·‚é•K—v‚ª‚ ‚è‚Ü‚·jB
-
-- Mark Polishook
-polishoo at cwu.edu
-polishoo at daimi.au.dk
-
-“ú–{Œê–ó
-¬—с@–Î
-kotobuki at yapan.org
-¦“ú–{Œê–ó‚ɊԈႢ‚È‚Ç‚ðŒ©‚Â‚¯‚ç‚ꂽê‡‚ɂ́Akotobuki at yapan.org‚܂с[ƒ‹‚É‚Ä‚²˜A—‚ð‚¢‚½‚¾‚¯‚Ü‚µ‚½‚çK‚¢‚Å‚·B
\ No newline at end of file
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/10_Subtractive_synthesis.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/10_Subtractive_synthesis.html
deleted file mode 100644
index 86d1e13..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/10_Subtractive_synthesis.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Filtering</b></p>
-<p class="p2"><br></p>
-<p class="p3">The basic idea of subtractive synthesis is similar to making coffee: something goes through a filter to remove unwanted components from the final product.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>The .dumpClassSubtree message</b></p>
-<p class="p2"><br></p>
-<p class="p3">Get a list of ugen filters in SuperCollider 3, by sending the .dumpClassSubtree message to the Filter class, as in</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Filter</span>.dumpClassSubtree;</p>
-<p class="p2"><br></p>
-<p class="p3">(<span class="s1">Object</span>.dumpClassSubtree prints all SuperCollider classes)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">The list of Filters, as of 19.5.04, includes</p>
-<p class="p2"><br></p>
-<p class="p3">[</p>
-<p class="p3"><span class="Apple-converted-space">  </span>DetectSilence</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Formlet</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Ringz</p>
-<p class="p3"><span class="Apple-converted-space">  </span>SOS</p>
-<p class="p3"><span class="Apple-converted-space">  </span>FOS</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Slew</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Median</p>
-<p class="p3"><span class="Apple-converted-space">  </span>LPZ2</p>
-<p class="p3"><span class="Apple-converted-space">    </span>[ BRZ2 BPZ2 HPZ2 ]</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Slope</p>
-<p class="p3"><span class="Apple-converted-space">  </span>LPZ1</p>
-<p class="p3"><span class="Apple-converted-space">    </span>[ HPZ1 ]</p>
-<p class="p3"><span class="Apple-converted-space">  </span>MidEQ</p>
-<p class="p3"><span class="Apple-converted-space">  </span>BPF</p>
-<p class="p3"><span class="Apple-converted-space">    </span>[ BRF ]</p>
-<p class="p3"><span class="Apple-converted-space">  </span>LPF</p>
-<p class="p3"><span class="Apple-converted-space">    </span>[ HPF ]</p>
-<p class="p3"><span class="Apple-converted-space">  </span>RLPF</p>
-<p class="p3"><span class="Apple-converted-space">    </span>[ RHPF ]</p>
-<p class="p3"><span class="Apple-converted-space">  </span>LeakDC</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Lag</p>
-<p class="p3"><span class="Apple-converted-space">    </span>[ Ramp Lag3 Lag2 ]</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Decay2</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Decay</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Integrator</p>
-<p class="p3"><span class="Apple-converted-space">  </span>TwoPole</p>
-<p class="p3"><span class="Apple-converted-space">    </span>[ APF TwoZero ]</p>
-<p class="p3"><span class="Apple-converted-space">  </span>OnePole</p>
-<p class="p3"><span class="Apple-converted-space">    </span>[ OneZero ]</p>
-<p class="p3"><span class="Apple-converted-space">  </span>Resonz</p>
-<p class="p3">]</p>
-<p class="p2"><br></p>
-<p class="p3">Look in Help/UGens/Filters in the SuperCollider help system to see filter help files and numerous examples.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p3">Use LPF, a low-pass filter to subtract high-frequency content from an input source.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"subtractive"<span class="s2">, {</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LPF</span>.ar(</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Pulse</span><span class="s2">.ar(440, 0.5, 0.1),<span class="Apple-tab-span">	</span></span>// the source to be filtered</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Line</span><span class="s2">.kr(8000, 660, 6)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// control the filter frequency with a line</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s1">Synth("</span>subtractive<span class="s1">")</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">RLPF, a resonant low-pass filter, removes high-frequency content and emphasizes the cutoff frequency.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"passLowFreqs2"<span class="s2">, {</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">RLPF</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Saw</span>.ar([220, 221] + LFNoise0.kr(1, 100, 200), 0.2),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s1">LFNoise0</span>.kr(4, 600, 2400), <span class="s1">LFNoise0</span>.kr(3, 600, 2400)],</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">Synth</span><span class="s2">(</span>"passLowFreqs2"<span class="s2">)</span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Resonz is a very, very, very strong filter. Use it to emphasize a frequency band.</p>
-<p class="p2"><br></p>
-<p class="p3">Transform noise into pitch with a sharp cutoff.</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s3">"noiseToPitch"</span>, { <span class="s1">arg</span> out = 0, mul = 1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Resonz</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">WhiteNoise</span>.ar(mul),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise0</span>.kr(4, 110, 660),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.005, 0.005]</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p4">// activate left and right channels</p>
-<p class="p3"><span class="s1">Synth</span>(<span class="s3">"noiseToPitch"</span>, [<span class="s4">\out</span>, 0, <span class="s4">\mul</span>, 1]);</p>
-<p class="p3"><span class="s1">Synth</span>(<span class="s3">"noiseToPitch"</span>, [<span class="s4">\out</span>, 1, <span class="s4">\mul</span>, 1]);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p9">go to <b>11_Compound_synthesis</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/11_Groups.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/11_Groups.html
deleted file mode 100644
index eca1713..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/11_Groups.html
+++ /dev/null
@@ -1,308 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {font: 12.0px Helvetica}
-span.s4 {color: #326f17}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">The simplest synthesis processes use a single ugen.</p>
-<p class="p2"><br></p>
-<p class="p1">{ <span class="s1">Saw</span>.ar(500, 0.1) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p1">or</p>
-<p class="p2"><br></p>
-<p class="p1">{ <span class="s1">Formlet</span>.ar(<span class="s1">Saw</span>.ar(22), 400, 0.01, 0.11, 0.022) }.scope</p>
-<p class="p2"><br></p>
-<p class="p1">Most of the SuperCollider help documents for the UGens show other such examples. Evaluate the following line to see a list of all UGen help files.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Help</span><span class="s2">(</span>"Help/UGens"<span class="s2">).dumpToDoc(</span>"SuperCollider UGens (Unit Generators)"<span class="s2">)</span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p1">Many synthesis processes, because they use more than a few ugens, are often best divided into component parts. This can make code modular, resusable, and easier to read.</p>
-<p class="p2"><br></p>
-<p class="p1">The <span class="s3"><b>Group</b></span> class, which is the means to specify a collection of nodes, provides a mechanism through which to control several synths at once.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Groups are linked lists</b></p>
-<p class="p2"><br></p>
-<p class="p1">The important technical feature of groups is that the nodes they contain are items in a linked list. A linked list is a data structure that makes it easy to order and reorder nodes. The first item in a linked list is the "head" and the last item is the "tail."</p>
-<p class="p2"><br></p>
-<p class="p1">Groups, through their head and tail mechanisms, allow synths to be placed in order so one synth verifiably executes before another, eg, the head synth runs before the tail synth. The ability to order synths is essential when sending source audio through an effect, such as a reverb or a filter.</p>
-<p class="p2"><br></p>
-<p class="p1">Another feature of groups is they allow synths to receive messages from a single point of control, eg, one message to the group goes to all of nodes that belong to the group.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p6"><b>Nodes, linked lists, trees</b></p>
-<p class="p2"><br></p>
-<p class="p1">See the <span class="s3"><b>Server-Architecture</b></span> document for a definition of a node in SuperCollider or look to the Wikipedia for a general discussion of nodes, linked lists, and trees.</p>
-<p class="p2"><br></p>
-<p class="p1">http://en.wikipedia.org/wiki/Node</p>
-<p class="p1">http://en.wikipedia.org/wiki/Linked_list</p>
-<p class="p1">http://en.wikipedia.org/wiki/Tree_data_structure</p>
-<p class="p7"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p6"><b>RootNode and default_group</b></p>
-<p class="p2"><br></p>
-<p class="p1">By default, the localhost and internal servers each boot with two predefined groups: the <span class="s3"><b>RootNode</b></span> and the <span class="s3"><b>default_group </b></span>(see their help files). To see this, start the localhost server and then evaluate</p>
-<p class="p2"><br></p>
-<p class="p1">s.queryAllNodes;</p>
-<p class="p2"><br></p>
-<p class="p1">The next two lines</p>
-<p class="p2"><br></p>
-<p class="p1">Group(0)</p>
-<p class="p1"><span class="Apple-converted-space">        </span>Group(1)</p>
-<p class="p2"><span class="Apple-converted-space">        </span></p>
-<p class="p1">will appear in the transcript window.</p>
-<p class="p2"><span class="Apple-converted-space">        </span></p>
-<p class="p1">Group(0) is the rootnode group and Group(1) is the default_group. Group(1) is indented to show that it branches from Group(0).</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">New synths are attached by default to the head of the default_group.</p>
-<p class="p2"><br></p>
-<p class="p4">// 1st, evaluate a synthdef</p>
-<p class="p1">(</p>
-<p class="p3"><span class="s1">SynthDef</span><span class="s2">(</span>"ringModulation"<span class="s2">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([440.067, 441.013], 0, 1)<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([111, 109], 0, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">// 2nd, make a synth</p>
-<p class="p8">(</p>
-<p class="p3"><span class="s1">Synth</span><span class="s2">(</span>"ringModulation"<span class="s2">);</span></p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">// 3rd, tell the server to list its nodes</p>
-<p class="p1">(</p>
-<p class="p1">s.queryAllNodes;</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">Group(0)</p>
-<p class="p1"><span class="Apple-converted-space">        </span>Group(1)</p>
-<p class="p1"><span class="Apple-converted-space">                </span>Synth 1003</p>
-<p class="p2"><span class="Apple-converted-space">                </span></p>
-<p class="p1">will appear in the transcript window. It shows Group(0) as the rootnode, Group(1) as the branching default_node and Synth 1003 (or some such number) as a leaf attached to the default_node.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">Rootnode - Group(0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>|</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>|</p>
-<p class="p1">default_node - Group(1)</p>
-<p class="p1"><span class="Apple-converted-space">      </span>/</p>
-<p class="p1"><span class="Apple-converted-space">     </span>/ <span class="Apple-converted-space"> </span></p>
-<p class="p1">Synth 1003<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">An example with two synths.</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">// 1st, evaluate a synthdef</p>
-<p class="p1">(</p>
-<p class="p3"><span class="s1">SynthDef</span><span class="s2">(</span>"pitchFromNoise"<span class="s2">, { </span><span class="s1">arg</span><span class="s2"> out = 0;</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Resonz</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">WhiteNoise</span>.ar(15),</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise0</span>.kr(2, 110, 660),</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.005</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">// 2nd, make 2 synths<span class="Apple-converted-space"> </span></p>
-<p class="p1">(</p>
-<p class="p3"><span class="s1">Synth</span><span class="s2">(</span>"ringModulation"<span class="s2">);</span></p>
-<p class="p3"><span class="s1">Synth</span><span class="s2">(</span>"pitchFromNoise"<span class="s2">, [</span><span class="s4">\out</span><span class="s2">, 1]);</span></p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">// 3rd, tell the server to list its nodes</p>
-<p class="p1">(</p>
-<p class="p1">s.queryAllNodes;</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">The printout in the transcript window</p>
-<p class="p2"><br></p>
-<p class="p1">Group(0)</p>
-<p class="p1"><span class="Apple-converted-space">        </span>Group(1)</p>
-<p class="p1"><span class="Apple-converted-space">                </span>Synth 1005</p>
-<p class="p1"><span class="Apple-converted-space">                </span>Synth 1004</p>
-<p class="p2"><span class="Apple-converted-space">                </span></p>
-<p class="p1">shows that Group(0) is the rootnode and Group(1) is the default_node.</p>
-<p class="p2"><br></p>
-<p class="p1">Synth 1005 and 1004 (or similar such numbers) are leaves attached to the default_node. Synth 1005 is first in the list because of the way nodes are attached, by default, to the head of a list: Synth 1004, the "ringModulation" synth, was evaluated first and attached to the head of Group(1). Then Synth 1005, the "pitchFromNoise"s synth, was evaluated and placed at the head of the list (in front of Synth 1004).</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Rootnode - Group(0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>|</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>|</p>
-<p class="p1"><span class="Apple-converted-space"> </span>default_node - Group(1)</p>
-<p class="p1"><span class="Apple-converted-space">      </span>/ <span class="Apple-converted-space">    </span>\</p>
-<p class="p1"><span class="Apple-converted-space">     </span>/ <span class="Apple-converted-space">      </span>\</p>
-<p class="p1">Synth 1005<span class="Apple-converted-space">  </span>Synth 1004</p>
-<p class="p1">(head)<span class="Apple-tab-span">	</span> <span class="Apple-converted-space">  </span>(tail)</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p1">It's the responsibility of the user to make sure that nodes on the server are ordered properly. For this reason, the two synths below must be evaluated in the order in which they're given - because the first synth is source material for the second synth, a filter that processes its input.</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p3"><span class="s1">SynthDef</span><span class="s2">(</span>"firstNode-source"<span class="s2">, {</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Saw</span>.ar([200, 201], 0.05)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">SynthDef</span><span class="s2">(</span>"secondNode-filter"<span class="s2">, {</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s2">.ar(</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LPF</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">In</span>.ar(0, 2),</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Lag</span>.kr(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise0</span>.kr([4, 4.001], 500, 1000),</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">// evaluate "secondNode-filter" first</p>
-<p class="p4">// "firstNode-source" will go at the head of default_node</p>
-<p class="p1">(</p>
-<p class="p3"><span class="s1">Synth</span><span class="s2">(</span>"secondNode-filter"<span class="s2">);</span></p>
-<p class="p3"><span class="s1">Synth</span><span class="s2">(</span>"firstNode-source"<span class="s2">);</span></p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p1">s.queryAllNodes;</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">Or, use .head and .tail messages to attach the the nodes to the default_group).</p>
-<p class="p2"><br></p>
-<p class="p8">(</p>
-<p class="p3"><span class="s1">Synth.head</span><span class="s2">(s, </span>"firstNode-source"<span class="s2">);</span></p>
-<p class="p3"><span class="s1">Synth.tail</span><span class="s2">(s, </span>"secondNode-filter"<span class="s2">)</span></p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p1">s.queryAllNodes;</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">Or, assign the synths to groups.</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p4"><span class="s2">~source = </span><span class="s1">Group</span><span class="s2">.head(s);<span class="Apple-tab-span">	</span></span>// attach the group to the head of the default_node</p>
-<p class="p4"><span class="s2">~effect = </span><span class="s1">Group</span><span class="s2">.tail(s);<span class="Apple-tab-span">	</span></span>// attach the group to the tail of the default_node</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p4">// add the synths to the appropriate groups</p>
-<p class="p3"><span class="s1">Synth</span><span class="s2">.head(~effect, </span>"secondNode-filter"<span class="s2">);</span></p>
-<p class="p3"><span class="s1">Synth</span><span class="s2">.head(~source, </span>"firstNode-source"<span class="s2">);</span></p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">The idea is that the groups are attached first to the default_group in the desired order. The synths can then be evaluated in any order as long as they're attached to the appropriate group.</p>
-<p class="p2"><br></p>
-<p class="p4">// run the code to see a diagram of the nodes</p>
-<p class="p1">(</p>
-<p class="p1">s.queryAllNodes;</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Rootnode</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>|</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>|</p>
-<p class="p1"><span class="Apple-converted-space"> </span>default_node</p>
-<p class="p1"><span class="Apple-converted-space">      </span>/\</p>
-<p class="p1"><span class="Apple-converted-space">     </span>/<span class="Apple-converted-space">  </span>\</p>
-<p class="p1">Group<span class="Apple-converted-space">    </span>Group</p>
-<p class="p1"><span class="Apple-converted-space">  </span>|<span class="Apple-converted-space">        </span>|</p>
-<p class="p1"><span class="Apple-converted-space">  </span>|<span class="Apple-converted-space">        </span>|</p>
-<p class="p1">Synth<span class="Apple-converted-space">   <span class="Apple-tab-span">	</span> </span>Synth</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">Set a control for all of the synths in a group.</p>
-<p class="p2"><br></p>
-<p class="p4">// each of the synthdefs below has a control for amplitude (mul)</p>
-<p class="p1">(</p>
-<p class="p4">// build 3 synthdefs and a group</p>
-<p class="p1"><span class="s1">SynthDef</span>(<span class="s5">"synthNumber1"</span>, { <span class="s1">arg</span> mul = 0.2;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">BrownNoise</span>.ar(mul) * <span class="s1">LFNoise0</span>.kr([1, 1.01])</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>}, [0.1]).load(s);</p>
-<p class="p1"><span class="s1">SynthDef</span>(<span class="s5">"synthNumber2"</span>, { <span class="s1">arg</span> mul = 0.2;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">WhiteNoise</span>.ar(mul) * <span class="s1">LFNoise1</span>.kr([2.99, 3])</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>}, [0.1]).load(s);</p>
-<p class="p1"><span class="s1">SynthDef</span>(<span class="s5">"synthNumber3"</span>, { <span class="s1">arg</span> mul = 0.2;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">PinkNoise</span>.ar(mul) * <span class="s1">LFNoise2</span>.kr([0.79, 0.67])</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p1">}, [0.1]).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p4">// make a group</p>
-<p class="p1">~myGroup = <span class="s1">Group</span>.new;</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p4">// attach 3 synths</p>
-<p class="p1"><span class="s1">Synth</span>.head(~myGroup, <span class="s5">"synthNumber1"</span>);</p>
-<p class="p1"><span class="s1">Synth</span>.head(~myGroup, <span class="s5">"synthNumber2"</span>);</p>
-<p class="p1"><span class="s1">Synth</span>.head(~myGroup, <span class="s5">"synthNumber3"</span>);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">// set the \mul control of each of the 3 synths in the group</p>
-<p class="p1">~myGroup.set(<span class="s4">\mul</span>, 0.01.rrand(0.2))</p>
-<p class="p2"><br></p>
-<p class="p4">// execute to see a diagram of the nodes</p>
-<p class="p1">(</p>
-<p class="p1">s.queryAllNodes;</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p7"><br></p>
-<p class="p9">go to <b>12_Playbuf</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/12_Playbuf.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/12_Playbuf.html
deleted file mode 100644
index 62f486b..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/12_Playbuf.html
+++ /dev/null
@@ -1,217 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #456c20}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #000000}
-span.s2 {color: #091fb1}
-span.s3 {color: #606060}
-span.s4 {color: #456c20}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">Breaking synthesis processes into parts that accomplish small well-defined tasks encourages modular design and component reuse (the oop mantra).</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p3">// read a soundfile from disk</p>
-<p class="p4"><span class="s1">b = </span><span class="s2">Buffer</span><span class="s1">.read(s, </span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p2"><br></p>
-<p class="p3">// a samplePlayer in mono ... one channel only</p>
-<p class="p1"><span class="s2">SynthDef</span>(<span class="s3">"aMonoSamplePlayer"</span>, { <span class="s2">arg</span> bus = 0, bufnum = 0, rateScale = 1;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bus,</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>PlayBuf<span class="s1">.ar(</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">BufRateScale</span>.kr(bufnum) * rateScale</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.sine(<span class="s2">BufDur</span>.kr(bufnum)))</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p3">// test the synthdef ... does it work? (yes, it's fine. it plays on the left channel)</p>
-<p class="p4"><span class="s2">Synth</span><span class="s1">(</span>"aMonoSamplePlayer"<span class="s1">, [</span><span class="s4">\bus</span><span class="s1">, 0, </span><span class="s4">\bufNum</span><span class="s1">, b]);</span></p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p3">// a simple example of component reuse ... use the \bus argument to assign synths built from</p>
-<p class="p3">// the same synthdef to different channels</p>
-<p class="p3">// in this case, play a 1-channel soundfile on 2 channels</p>
-<p class="p3">// a different playback rate for each channel makes the effect more obvious</p>
-<p class="p1"><span class="s2">Synth</span>(<span class="s3">"aMonoSamplePlayer"</span>, [<span class="s4">\bus</span>, 0, <span class="s4">\bufNum</span>, b, <span class="s4">\rateScale</span>, 0.99]);</p>
-<p class="p1"><span class="s2">Synth</span>(<span class="s3">"aMonoSamplePlayer"</span>, [<span class="s4">\bus</span>, 1, <span class="s4">\bufNum</span>, b, <span class="s4">\rateScale</span>, 1.01])</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p7"><b>Information</b></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p1">The BufRateScale and the BufDur ugens, as shown in the previous example, control the rate at which PlayBuf plays the soundfile and the length of the envelope applied to the playbuf.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">BufRateScale and BufDur are of a family of ugens that inherit from InfoUGenBase or BufInfoUGenBase.</p>
-<p class="p2"><br></p>
-<p class="p1">To see the complete list of such ugens, evaluate</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s2">InfoUGenBase</span>.dumpClassSubtree</p>
-<p class="p2"><br></p>
-<p class="p1">It returns</p>
-<p class="p2"><br></p>
-<p class="p1">InfoUGenBase</p>
-<p class="p1">[</p>
-<p class="p1"><span class="Apple-converted-space">  </span>NumRunningSynths</p>
-<p class="p1"><span class="Apple-converted-space">  </span>NumBuffers</p>
-<p class="p1"><span class="Apple-converted-space">  </span>NumControlBuses</p>
-<p class="p1"><span class="Apple-converted-space">  </span>NumAudioBuses</p>
-<p class="p1"><span class="Apple-converted-space">  </span>NumInputBuses</p>
-<p class="p1"><span class="Apple-converted-space">  </span>NumOutputBuses</p>
-<p class="p1"><span class="Apple-converted-space">  </span>ControlRate</p>
-<p class="p1"><span class="Apple-converted-space">  </span>RadiansPerSample</p>
-<p class="p1"><span class="Apple-converted-space">  </span>SampleDur</p>
-<p class="p1"><span class="Apple-converted-space">  </span>SampleRate</p>
-<p class="p1">]</p>
-<p class="p1">InfoUGenBase</p>
-<p class="p2"><br></p>
-<p class="p1">Evaluate</p>
-<p class="p8"><br></p>
-<p class="p1"><span class="s2">BufInfoUGenBase</span>.dumpClassSubtree</p>
-<p class="p2"><br></p>
-<p class="p1">and it returns</p>
-<p class="p2"><br></p>
-<p class="p1">BufInfoUGenBase</p>
-<p class="p1">[</p>
-<p class="p1"><span class="Apple-converted-space">  </span>BufChannels</p>
-<p class="p1"><span class="Apple-converted-space">  </span>BufDur</p>
-<p class="p1"><span class="Apple-converted-space">  </span>BufSamples</p>
-<p class="p1"><span class="Apple-converted-space">  </span>BufFrames</p>
-<p class="p1"><span class="Apple-converted-space">  </span>BufRateScale</p>
-<p class="p1"><span class="Apple-converted-space">  </span>BufSampleRate</p>
-<p class="p1">]</p>
-<p class="p1">BufInfoUGenBase</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p7"><b>Loop a sample</b></p>
-<p class="p8"><br></p>
-<p class="p1">The next example uses three synthsdefs to make a chain. The first synthdef is a sample player that loops through a buffer. The second synthdef ring modulates its input. The third synthdef applies a lowpass filter.</p>
-<p class="p8"><br></p>
-<p class="p5">(</p>
-<p class="p3">// read a soundfile</p>
-<p class="p4"><span class="s1">b = </span><span class="s2">Buffer</span><span class="s1">.read(s, </span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p2"><br></p>
-<p class="p3">// define a sample player that will loop over a soundfile</p>
-<p class="p1"><span class="s2">SynthDef</span>(<span class="s3">"aLoopingSamplePlayer"</span>, { <span class="s2">arg</span> outBus = 0, bufnum = 0, rateScale = 1, mul = 1;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outBus,</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>PlayBuf<span class="s1">.ar(</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">BufRateScale</span>.kr(bufnum) * rateScale + <span class="s2">LFNoise1</span>.kr(2.reciprocal, 0.05),</p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop: 1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// play the soundfile over and over without stopping</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mul</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p2"><br></p>
-<p class="p3">// apply amplitude modulation to an audio source</p>
-<p class="p1"><span class="s2">SynthDef</span>(<span class="s3">"ampMod"</span>, { <span class="s2">arg</span> inBus = 0, outBus = 0, modFreq = 1;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outBus,</p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-tab-span">	</span></span>// In.ar ugen reads from an audio bus</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">In</span>.ar(inBus, 1) * <span class="s2">SinOsc</span>.kr(modFreq),<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">In</span>.ar(inBus, 1) * <span class="s2">SinOsc</span>.kr(modFreq - 0.02)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p2"><br></p>
-<p class="p3">// apply a low pass filter to an audio source</p>
-<p class="p1"><span class="s2">SynthDef</span>(<span class="s3">"aLowPassFilter"</span>, { <span class="s2">arg</span> inBus = 0, outBus = 0, freq = 300, freqDev = 50, boost = 1;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outBus,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">RLPF</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">In</span>.ar(inBus, 2),</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Lag</span>.kr(<span class="s2">LFNoise0</span>.kr(1, freqDev, freq), 1),</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>boost<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>LFPulse.kr(1, [0.25, 0.75], [0.5, 0.45])</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>In.ar(inBus, 2)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p3">// define 2 groups, 1 for source material and the other for effects</p>
-<p class="p1">(</p>
-<p class="p1">~source = <span class="s2">Group</span>.head(s);</p>
-<p class="p1">~effect = <span class="s2">Group</span>.tail(~s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p3">// add the samplePlayer to the source group</p>
-<p class="p1">~theSource = <span class="s2">Synth</span>.head(</p>
-<p class="p1"><span class="Apple-tab-span">	</span>~source,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s3">"aLoopingSamplePlayer"</span>, [<span class="s4">\outBus</span>, 3, <span class="s4">\bufNum</span>, b, <span class="s4">\rateScale</span>, 1, <span class="s4">\mul</span>, 0.051]);</p>
-<p class="p3">// add an amplitude modulation synth to the head of the effects group</p>
-<p class="p1">~fx1 = <span class="s2">Synth</span>.head(</p>
-<p class="p1"><span class="Apple-tab-span">	</span>~effect,</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">"ampMod"</span><span class="s1">, [</span>\inBus<span class="s1">, 3, </span>\outBus<span class="s1">, 5, </span>\modFreq<span class="s1">, 1]);</span></p>
-<p class="p3">// add filtering to the tail of the effects group</p>
-<p class="p1">~fx2 = <span class="s2">Synth</span>.tail(</p>
-<p class="p1"><span class="Apple-tab-span">	</span>~effect,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s3">"aLowPassFilter"</span>, [<span class="s4">\inBus</span>, 5, <span class="s4">\outBus</span>, 0, <span class="s4">\boost</span>, 5])</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p3">// examine the nodes</p>
-<p class="p1">(</p>
-<p class="p1">s.queryAllNodes;</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p3">// a diagram</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-converted-space">    </span>RootNode</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>|</p>
-<p class="p1"><span class="Apple-converted-space">  </span>default_node</p>
-<p class="p1"><span class="Apple-converted-space">      </span>/\</p>
-<p class="p1"><span class="Apple-converted-space">     </span>/<span class="Apple-converted-space">  </span>\</p>
-<p class="p3"><span class="s1">~source<span class="Apple-converted-space">  </span>~effects<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ~source and ~effects are groups</p>
-<p class="p1"><span class="Apple-converted-space"> </span>|<span class="Apple-converted-space">        </span>|<span class="Apple-converted-space">      </span>\</p>
-<p class="p1"><span class="Apple-converted-space"> </span>|<span class="Apple-converted-space">        </span>| <span class="Apple-converted-space">      </span>\</p>
-<p class="p1"><span class="Apple-converted-space"> </span>synth<span class="Apple-converted-space">    </span>synth<span class="Apple-converted-space">    </span>synth<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">// Changing argument (control) values effects timbre</p>
-<p class="p1">(</p>
-<p class="p1"><span class="Apple-converted-space"> </span>~theSource.set(<span class="s4">\rateScale</span>, 0.95.rrand(1.05), <span class="s4">\mul</span>, 0.051.rrand(0.07));</p>
-<p class="p1"><span class="Apple-converted-space"> </span>~fx1.set(<span class="s4">\modFreq</span>, 800.0.rrand(1200));</p>
-<p class="p1"><span class="Apple-converted-space"> </span>~fx2.set(\freq, 500.rrand(700), \freqDev, 180.rrand(210), \boost, 7);</p>
-<p class="p1">)</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p10"><br></p>
-<p class="p11">go to <b>13_Delays_reverbs</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/13_Delays_reverbs.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/13_Delays_reverbs.html
deleted file mode 100644
index 95a9772..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/13_Delays_reverbs.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.s3 {color: #000000}
-span.s4 {color: #a71e12}
-span.s5 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Time-based filters</b></p>
-<p class="p2"><br></p>
-<p class="p3">The Delay, Comb, and Allpass family of ugens create time-based effects to give a sense of location and space.</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">// 2 synthdefs - the 1st to make grains and the 2nd to delay them</p>
-<p class="p4"><br></p>
-<p class="p5">// the synthdef that makes the grains is on the left channel</p>
-<p class="p5">// the synthdef that delays the grains is on the right channel</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"someGrains"</span>, { arg centerFreq = 777, freqDev = 200, grainFreq = 2;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> gate;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>gate = <span class="s1">Impulse</span>.kr(grainFreq);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise0</span>.kr(4, freqDev, centerFreq),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">EnvGen</span>.kr(<span class="s1">Env.sine(0.1)</span>, gate, 0.1)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"aDelay"</span>, { arg delay = 0.25;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">DelayN</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">In</span>.ar(0, 1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delay,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delay</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////</p>
-<p class="p5">// test the grains ... and then turn them off</p>
-<p class="p5">// ... they're all on the left channel ... good!</p>
-<p class="p6"><span class="s1">Synth</span><span class="s3">(</span>"someGrains"<span class="s3">);</span></p>
-<p class="p5">////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">// make 2 groups, the 1st for sources and the 2nd for effects</p>
-<p class="p3">(</p>
-<p class="p3">~source = <span class="s1">Group</span>.head(s);</p>
-<p class="p3">~effects = <span class="s1">Group</span>.tail(s);</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// place grains into the delay ... source is on the left and delayed source is on the right</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s1">Synth</span>.head(~source, <span class="s2">"someGrains"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.head(~effects, <span class="s2">"aDelay"</span>);</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>Feedback filters</b></p>
-<p class="p4"><br></p>
-<p class="p3">Comb and Allpass filters are examples of ugens that feed some of their output back into their input. Allpass filters change the phase of signals passed through them. For this reason, they're useful even though don't seeem to differ much from comb filters.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p7"><br></p>
-<p class="p5">/////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5">// TURN ON THE INTERNAL SERVER!!</p>
-<p class="p5">// first a comb filter and then an allpass with (with the same parameters) - compare them</p>
-<p class="p5">/////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p5">// comb example</p>
-<p class="p3">(</p>
-<p class="p3">{</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">CombN</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(500.rrand(1000), 0, 0.2) * <span class="s1">Line</span>.kr(1, 0, 0.1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}.scope;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// allpass example - not much difference from the comb example</p>
-<p class="p3">(</p>
-<p class="p3">{</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>AllpassN<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(500.rrand(1000), 0, 0.2) * <span class="s1">Line</span>.kr(1, 0, 0.1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}.scope;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">/////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5">//<span class="Apple-converted-space"> </span></p>
-<p class="p5">// first a comb example and then an allpass</p>
-<p class="p5">// both examples have the same parameters</p>
-<p class="p5">// the 2 examples have relatively short delay times ... 0.1 seconds</p>
-<p class="p3"><span class="s4">/</span>/</p>
-<p class="p5">/////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// comb</p>
-<p class="p3">(</p>
-<p class="p3">{</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">CombN</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(500.rrand(1000), 0, 0.2) * <span class="s1">Line</span>.kr(1, 0, 0.1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.025,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}.scope;<span class="Apple-tab-span">	</span></p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// allpass ... what's the difference between this example and the comb filter?</p>
-<p class="p3">(</p>
-<p class="p3">{</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>AllpassN<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(500.rrand(1000), 0, 0.2) * <span class="s1">Line</span>.kr(1, 0, 0.1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.025,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}.scope</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Reverberation</b></p>
-<p class="p4"><br></p>
-<p class="p3">The next example is by James McCartney. It comes from the <span class="s5"><b>01 Why SuperCollider</b></span> document that was part of the SuperCollider2 distribution.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">The example is more or less a Schroeder reverb - a signal passed through a parallel bank of comb filters which then pass through a series of allpass filters.</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">{</p>
-<p class="p3">var s, z, y;</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// 10 voices of a random sine percussion sound :</p>
-<p class="p3">s = <span class="s1">Mix</span>.ar(<span class="s1">Array</span>.fill(10, { <span class="s1">Resonz</span>.ar(<span class="s1">Dust</span>.ar(0.2, 50), 200 + 3000.0.rand, 0.003)}) );</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// reverb predelay time :</p>
-<p class="p3">z = <span class="s1">DelayN</span>.ar(s, 0.048);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// 7 length modulated comb delays in parallel :</p>
-<p class="p3">y = <span class="s1">Mix</span>.ar(<span class="s1">Array</span>.fill(7,{ <span class="s1">CombL</span>.ar(z, 0.1, <span class="s1">LFNoise1</span>.kr(0.1.rand, 0.04, 0.05), 15) }));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// two parallel chains of 4 allpass delays (8 total) :</p>
-<p class="p3">4.do({ y = <span class="s1">AllpassN</span>.ar(y, 0.050, [0.050.rand, 0.050.rand], 1) });</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// add original sound to reverb and play it :</p>
-<p class="p3">s+(0.2*y)</p>
-<p class="p3">}.scope<span class="Apple-converted-space"> </span></p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p1"><b>Components</b></p>
-<p class="p4"><br></p>
-<p class="p3">The following shows one way to divide the JMC example into components.</p>
-<p class="p4"><br></p>
-<p class="p8">(</p>
-<p class="p6"><span class="s1">SynthDef</span><span class="s3">(</span>"filteredDust"<span class="s3">, {</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.arFill(10, { <span class="s1">Resonz</span>.ar(<span class="s1">Dust</span>.ar(0.2, 50), <span class="s1">Rand</span>(200, 3200), 0.003) })</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s1">SynthDef</span><span class="s3">(</span>"preDelay"<span class="s3">, {</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">DelayN</span>.ar(<span class="s1">In</span>.ar(2, 1), 0.048, 0.048)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p8">SynthDef<span class="s3">(</span><span class="s2">"combs"</span><span class="s3">, {</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.arFill(7, { <span class="s1">CombL</span>.ar(<span class="s1">In</span>.ar(4, 1), 0.1, <span class="s1">LFNoise1</span>.kr(<span class="s1">Rand</span>(0, 0.1), 0.04, 0.05), 15) })</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"allpass"</span>, { <span class="s1">arg</span> gain = 0.2;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> source;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>source = <span class="s1">In</span>.ar(6, 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>4.do({ source = <span class="s1">AllpassN</span>.ar(source, 0.050, [<span class="s1">Rand</span>(0, 0.05), <span class="s1">Rand</span>(0, 0.05)], 1) });</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source * gain</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"theMixer"</span>, { arg gain = 1;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.ar([<span class="s1">In</span>.ar(2, 1), <span class="s1">In</span>.ar(8, 2)]) * gain</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5">// as each line is executed, it becomes the tail node. the result is that</p>
-<p class="p5">// "filteredDust" is the first node and<span class="Apple-converted-space">  </span>"theMixer" is the last node ...</p>
-<p class="p5">// ... exactly what we need</p>
-<p class="p3">(</p>
-<p class="p6"><span class="s1">Synth</span><span class="s3">.tail(s, </span>"filteredDust"<span class="s3">);</span></p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"preDelay"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"combs"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"allpass"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"theMixer"</span>);</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">s.queryAllNodes;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4"><br></p>
-<p class="p3">Or, use groups to control the order of execution.</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">~source = <span class="s1">Group</span>.tail(s);</p>
-<p class="p3">~proc1 = <span class="s1">Group</span>.tail(s);</p>
-<p class="p3">~proc2 = <span class="s1">Group</span>.tail(s);</p>
-<p class="p3">~proc3 = <span class="s1">Group</span>.tail(s);</p>
-<p class="p3">~final = <span class="s1">Group</span>.tail(s);</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// the nodes, below, are assigned to the groups, as ordered above,</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s1">Synth</span>.head(~final, <span class="s2">"theMixer"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.head(~proc3, <span class="s2">"allpass"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.head(~proc2, <span class="s2">"combs"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.head(~proc1, <span class="s2">"preDelay"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.head(~source, <span class="s2">"filteredDust"</span>);</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">s.queryAllNodes;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">For context, here, below, is the complete text of the <span class="s5"><b>01 Why SuperCollider</b></span> document (by James McCartney) from the SuperCollider 2 distribution.</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s5"> <span class="Apple-tab-span">	</span></span><b>SuperCollider 2.0</b></p>
-<p class="p2"><br></p>
-<p class="p9"><b>Why SuperCollider 2.0 ?</b></p>
-<p class="p2"><br></p>
-<p class="p1">SuperCollider version 2.0 is a new programming language. <b>Why invent a new language</b></p>
-<p class="p1"><b>and not use an existing language?</b> Computer music composition is a specification problem.</p>
-<p class="p1">Both sound synthesis and the composition of sounds are complex problems and demand a<span class="Apple-converted-space"> </span></p>
-<p class="p1">language which is highly expressive in order to deal with that complexity. Real time signal<span class="Apple-converted-space"> </span></p>
-<p class="p1">processing is a problem demanding an efficient implementation with bounded time operations.</p>
-<p class="p1">There was no language combining the features I wanted and needed for doing digital music<span class="Apple-converted-space"> </span></p>
-<p class="p1">synthesis. The SuperCollider language is most like Smalltalk. Everything is an object. It has</p>
-<p class="p1">class objects, methods, dynamic typing, full closures, default arguments, variable</p>
-<p class="p1">length argument lists, multiple assignment, etc. The implementation provides fast,</p>
-<p class="p1">constant time method lookup, real time garbage collection, and stack allocation of most</p>
-<p class="p1">function contexts while maintaining full closure semantics.<span class="Apple-converted-space"> </span></p>
-<p class="p1">The SuperCollider virtual machine is designed so that it can be run at interrupt level.</p>
-<p class="p1">There was no other language readily available that was high level, real time and</p>
-<p class="p1">capable of running at interrupt level.</p>
-<p class="p2"><br></p>
-<p class="p1">SuperCollider version 1.0 was completely rewritten to make it both more expressive</p>
-<p class="p1">and more efficient. This required rethinking the implementation in light of the experience</p>
-<p class="p1">of the first version. It is my opinion that the new version has benefitted significantly</p>
-<p class="p1">from this rethink. It is not simply version 1.0 with more features.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Why use a text based language rather than a graphical language?</b><span class="Apple-converted-space"> </span></p>
-<p class="p1">There are at least two answers to this. <b>Dynamism:</b> Most graphical synthesis environments<span class="Apple-converted-space"> </span></p>
-<p class="p1">use statically allocated unit generators. In SuperCollider, the user can create structures which</p>
-<p class="p1">spawn events dynamically and in a nested fashion. Patches can be built dynamically and</p>
-<p class="p1">parameterized not just by floating point numbers from a static score, but by other</p>
-<p class="p1">graphs of unit generators as well. Or you can construct patches algorithmically on the fly.</p>
-<p class="p1">This kind of fluidity is not possible in a language with statically allocated unit generators.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>Brevity:</b> In SuperCollider, symmetries in a patch can be exploited by either multichannel<span class="Apple-converted-space"> </span></p>
-<p class="p1">expansion or programmatic patch building. For example, the following short program<span class="Apple-converted-space"> </span></p>
-<p class="p1">generates a patch of 49 unit generators. In a graphical program this might require a significant<span class="Apple-converted-space"> </span></p>
-<p class="p1">amount of time and space to wire up. Another advantage is that the size of the patch below can<span class="Apple-converted-space"> </span></p>
-<p class="p1">be easily expanded or contracted just by changing a few constants.</p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p3">{</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// 10 voices of a random sine percussion sound :</p>
-<p class="p3">s = <span class="s1">Mix</span>.ar(<span class="s1">Array</span>.fill(10, { <span class="s1">Resonz</span>.ar(<span class="s1">Dust</span>.ar(0.2, 50), 200 + 3000.0.rand, 0.003)}) );</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// reverb predelay time :</p>
-<p class="p3">z = <span class="s1">DelayN</span>.ar(s, 0.048);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// 7 length modulated comb delays in parallel :</p>
-<p class="p3">y = <span class="s1">Mix</span>.ar(<span class="s1">Array</span>.fill(7,{ <span class="s1">CombL</span>.ar(z, 0.1, <span class="s1">LFNoise1</span>.kr(0.1.rand, 0.04, 0.05), 15) }));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// two parallel chains of 4 allpass delays (8 total) :</p>
-<p class="p3">4.do({ y = <span class="s1">AllpassN</span>.ar(y, 0.050, [0.050.rand, 0.050.rand], 1) });</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// add original sound to reverb and play it :</p>
-<p class="p3">s+(0.2*y)</p>
-<p class="p3">}.play )</p>
-<p class="p4"><br></p>
-<p class="p1">Graphical synthesis environments are becoming a dime a dozen. It seems like a new one</p>
-<p class="p1">is announced every month. None of them have the dynamic flexibility of SuperCollider's<span class="Apple-converted-space"> </span></p>
-<p class="p1">complete programming environment. Look through the SuperCollider help files and examples<span class="Apple-converted-space"> </span></p>
-<p class="p1">and see for yourself.</p>
-<p class="p2"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p10">go to <b>14_Frequency_modulation</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/14_Frequency_modulation.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/14_Frequency_modulation.html
deleted file mode 100644
index 6565b51..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/14_Frequency_modulation.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #326f17}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.s3 {color: #000000}
-span.s4 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Carriers and modulators</b></p>
-<p class="p2"><br></p>
-<p class="p3">In its simplest form, frequency modulation (FM) synthesis - famous since the Yamaha DX7 of the 1980's - uses one oscillator to modulate the frequency of another. The modulating oscillator in FM synthesis usually runs at the audio rate and its amplitude often is shaped by an envelope or other controller, such as a low frequency oscillator.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"fm1"</span>, { <span class="s1">arg</span> bus = 0, freq = 440, carPartial = 1, modPartial = 1, index = 3, mul = 0.05;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// index values usually are between 0 and 24</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// carPartial :: modPartial => car/mod ratio</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> car;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>mod = <span class="s1">SinOsc</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * modPartial,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * index * <span class="s1">LFNoise1</span>.kr(5.reciprocal).abs</p>
-<p class="p3"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>car = <span class="s1">SinOsc</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq * carPartial) + mod,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mul</p>
-<p class="p3"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bus,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>car</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p5"><span class="s1">Synth</span><span class="s3">(</span><span class="s2">"fm1"</span><span class="s3">, [</span>\bus<span class="s3">, 0, </span>\freq<span class="s3">, 440, </span>\carPartial<span class="s3">, 1, </span>\modPartial<span class="s3">, 2.4]);</span></p>
-<p class="p3"><span class="s1">Synth</span>(<span class="s2">"fm1"</span>, [<span class="s4">\bus</span>, 1, <span class="s4">\freq</span>, 442, <span class="s4">\carPartial</span>, 1, <span class="s4">\modPartial</span>, 2.401]);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">s.queryAllNodes;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>FM synthesis and reverb</b></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">// ... a reverb adapted from the "01 Why SuperCollider document" in the SC2 distribution</p>
-<p class="p8">(</p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"preDelay"</span>, { arg inbus = 2;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">DelayN</span>.ar(<span class="s1">In</span>.ar(inbus, 1), 0.048, 0.048)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p2"><br></p>
-<p class="p8">SynthDef<span class="s3">(</span><span class="s2">"combs"</span><span class="s3">, {</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>6,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.arFill(7, { <span class="s1">CombL</span>.ar(<span class="s1">In</span>.ar(4, 1), 0.1, <span class="s1">LFNoise1</span>.kr(<span class="s1">Rand</span>(0, 0.1), 0.04, 0.05), 15) })</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"allpass"</span>, { <span class="s1">arg</span> gain = 0.2;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> source;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>source = <span class="s1">In</span>.ar(6, 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>4.do({ source = <span class="s1">AllpassN</span>.ar(source, 0.050, [<span class="s1">Rand</span>(0, 0.05), <span class="s1">Rand</span>(0, 0.05)], 1) });</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>8,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source * gain</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"theMixer"</span>, { arg gain = 1;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s3">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.ar([<span class="s1">In</span>.ar(2, 1), <span class="s1">In</span>.ar(8, 2)]) * gain</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p9"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s1">Synth</span>(<span class="s2">"fm1"</span>, [<span class="s4">\bus</span>, 2, <span class="s4">\freq</span>, 440, <span class="s4">\carPartial</span>, 1, <span class="s4">\modPartial</span>, 1.99, <span class="s4">\mul</span>, 0.071]);</p>
-<p class="p3"><span class="s1">Synth</span>(<span class="s2">"fm1"</span>, [<span class="s4">\bus</span>, 2, <span class="s4">\freq</span>, 442, <span class="s4">\carPartial</span>, 1, <span class="s4">\modPartial</span>, 2.401, <span class="s4">\mul</span>, 0.071]);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"preDelay"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"combs"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"allpass"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"theMixer"</span>, [<span class="s4">\gain</span>, 0.64]);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">s.queryAllNodes;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p10"><br></p>
-<p class="p1"><b>Components</b></p>
-<p class="p2"><br></p>
-<p class="p3">Dividing the "fm" synth def into two pieces, a synthdef for a modulator and a synthdef for the carrier, gives more functionality - carrier signals can shaped by two or more modulators.</p>
-<p class="p10"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"carrier"</span>, { <span class="s1">arg</span> inbus = 2, outbus = 0, freq = 440, carPartial = 1, index = 3, mul = 0.2;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// index values usually are between 0 and 24</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// carPartial :: modPartial => car/mod ratio</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> car;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>mod = <span class="s1">In</span>.ar(inbus, 1);</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outbus,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar((freq * carPartial) + mod, 0, mul);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">SynthDef</span>(<span class="s2">"modulator"</span>, { <span class="s1">arg</span> outbus = 2, freq, modPartial = 1, index = 3;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outbus,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(freq * modPartial, 0, freq)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise1</span>.kr(<span class="s1">Rand</span>(3, 6).reciprocal).abs<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s1">var</span> freq = 440;</p>
-<p class="p4">// modulators for the left channel</p>
-<p class="p3"><span class="s1">Synth</span>.head(s, <span class="s2">"modulator"</span>, [<span class="s4">\outbus</span>, 2, <span class="s4">\freq</span>, freq, <span class="s4">\modPartial</span>, 0.649, <span class="s4">\index</span>, 2]);</p>
-<p class="p3"><span class="s1">Synth</span>.head(s, <span class="s2">"modulator"</span>, [<span class="s4">\outbus</span>, 2, <span class="s4">\freq</span>, freq, <span class="s4">\modPartial</span>, 1.683, <span class="s4">\index</span>, 2.31]);</p>
-<p class="p2"><br></p>
-<p class="p4">// modulators for the right channel</p>
-<p class="p3"><span class="s1">Synth</span>.head(s, <span class="s2">"modulator"</span>, [<span class="s4">\outbus</span>, 4, <span class="s4">\freq</span>, freq, <span class="s4">\modPartial</span>, 0.729, <span class="s4">\index</span>, 1.43]);</p>
-<p class="p3"><span class="s1">Synth</span>.head(s, <span class="s2">"modulator"</span>, [<span class="s4">\outbus</span>, 4, <span class="s4">\freq</span>, freq, <span class="s4">\modPartial</span>, 2.19, <span class="s4">\index</span>, 1.76]);</p>
-<p class="p2"><br></p>
-<p class="p4">// left and right channel carriers</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"carrier"</span>, [<span class="s4">\inbus</span>, 2, <span class="s4">\outbus</span>, 0, <span class="s4">\freq</span>, freq, <span class="s4">\carPartial</span>, 1]);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"carrier"</span>, [<span class="s4">\inbus</span>, 4, <span class="s4">\outbus</span>, 1, <span class="s4">\freq</span>, freq, <span class="s4">\carPartial</span>, 0.97]);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">s.queryAllNodes;</p>
-<p class="p3">)</p>
-<p class="p10"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p10"><br></p>
-<p class="p1"><b>Reverberation and frequency modulation</b></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s1">var</span> freq;</p>
-<p class="p4">// generate a random base frequency for the carriers and the modulators</p>
-<p class="p3">freq = 330.0.rrand(500);</p>
-<p class="p2"><br></p>
-<p class="p4">// modulators for the left channel</p>
-<p class="p3"><span class="s1">Synth</span>.head(s, <span class="s2">"modulator"</span>, [<span class="s4">\outbus</span>, 60, <span class="s4">\freq</span>, freq, <span class="s4">\modPartial</span>, 0.649, <span class="s4">\index</span>, 2]);</p>
-<p class="p3"><span class="s1">Synth</span>.head(s, <span class="s2">"modulator"</span>, [<span class="s4">\outbus</span>, 60, <span class="s4">\freq</span>, freq, <span class="s4">\modPartial</span>, 1.683, <span class="s4">\index</span>, 2.31]);</p>
-<p class="p2"><br></p>
-<p class="p4">// modulators for the right channel</p>
-<p class="p3"><span class="s1">Synth</span>.head(s, <span class="s2">"modulator"</span>, [<span class="s4">\outbus</span>, 62, <span class="s4">\freq</span>, freq, <span class="s4">\modPartial</span>, 1.11, <span class="s4">\index</span>, 1.43]);</p>
-<p class="p3"><span class="s1">Synth</span>.head(s, <span class="s2">"modulator"</span>, [<span class="s4">\outbus</span>, 62, <span class="s4">\freq</span>, freq, <span class="s4">\modPartial</span>, 0.729, <span class="s4">\index</span>, 1.76]);</p>
-<p class="p2"><br></p>
-<p class="p4">// left and right channel carriers</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"carrier"</span>, [<span class="s4">\inbus</span>, 60, <span class="s4">\outbus</span>, 100, <span class="s4">\freq</span>, freq, <span class="s4">\carPartial</span>, 1]);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"carrier"</span>, [<span class="s4">\inbus</span>, 62, <span class="s4">\outbus</span>, 100, <span class="s4">\freq</span>, freq+1, <span class="s4">\carPartial</span>, 2.91]);</p>
-<p class="p10"><br></p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"preDelay"</span>, [<span class="s4">\inbus</span>, 100]);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"combs"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"allpass"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(s, <span class="s2">"theMixer"</span>, [<span class="s4">\gain</span>, 0.2]);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">s.queryAllNodes;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p11">go to <b>15_Scheduling</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/15_Scheduling.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/15_Scheduling.html
deleted file mode 100644
index 7f2cc5f..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/15_Scheduling.html
+++ /dev/null
@@ -1,261 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Routines and clocks</b></p>
-<p class="p2"><br></p>
-<p class="p3">Use clocks to create automated, algorithmic scheduling. Among the things that clocks "play" are routines, tasks, and patterns.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">To see how a clock "plays" a routine, first examine how a function works in a routine.</p>
-<p class="p2"><br></p>
-<p class="p3">The first argument (and usually the only argument) to a routine is a function.</p>
-<p class="p2"><br></p>
-<p class="p4">// template for a routine</p>
-<p class="p5"><span class="s1">Routine</span><span class="s2">({ </span>".... code within curly braces is a function .... "<span class="s2">});</span></p>
-<p class="p2"><br></p>
-<p class="p3">A .yield message to an expression in a function (in a routine) returns a value.</p>
-<p class="p2"><br></p>
-<p class="p3">r = <span class="s1">Routine</span>({ <span class="s3">"hello, world"</span>.yield.postln });</p>
-<p class="p2"><br></p>
-<p class="p4">// to evaluate a routine, send a .next message</p>
-<p class="p4">// it will "hand over" the value of the expression to which the .yield message is attached</p>
-<p class="p3">r.next;</p>
-<p class="p2"><br></p>
-<p class="p3">Evaluate (again)</p>
-<p class="p2"><br></p>
-<p class="p3">r.next;</p>
-<p class="p2"><br></p>
-<p class="p3">The routine above returns nil when its evaluated a second time. This is because once a routine "yields" and if there's no additional code after the .yield message, the routine is finished, over, and done - unless it receives a reset message. Then it can start over again.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">r.next;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// returns nil</p>
-<p class="p4"><span class="s2">r.reset;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reset the routine</p>
-<p class="p4"><span class="s2">r.next;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// it works!</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">r = <span class="s1">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>"hello, world"<span class="s2">.yield;</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>"what a world"<span class="s2">.yield;</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>"i am a world"<span class="s2">.yield;</span></p>
-<p class="p3">});</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">The first three .next messages return a string. The fourth .next message returns nil.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">r.next;<span class="Apple-tab-span">	</span></span>// returns a string</p>
-<p class="p4"><span class="s2">r.next;<span class="Apple-tab-span">	</span></span>// returns a string</p>
-<p class="p4"><span class="s2">r.next;<span class="Apple-tab-span">	</span></span>// returns a string</p>
-<p class="p4"><span class="s2">r.next;<span class="Apple-tab-span">	</span></span>// returns nil</p>
-<p class="p2"><br></p>
-<p class="p3">Reset the routine.</p>
-<p class="p2"><br></p>
-<p class="p3">r.reset;</p>
-<p class="p2"><br></p>
-<p class="p3">r.next;</p>
-<p class="p3">r.next;</p>
-<p class="p3">r.next;</p>
-<p class="p3">r.next;</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Use a .do message in a routine to make a loop.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">r = <span class="s1">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// setup code</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> array;</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>array = [ </span>"hello, world"<span class="s2">, </span>"what a world"<span class="s2">, </span>"i am a world"<span class="s2"> ];</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// the loop</p>
-<p class="p3"><span class="Apple-tab-span">	</span>3.do({ array.choose.yield })</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">});</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">Evaluate the routine one more time than the loop in the routine allows.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">4.do({ r.next.postln });</p>
-<p class="p2"><br></p>
-<p class="p3">The routine returned three strings followed by nil.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Scheduling routines</b></p>
-<p class="p2"><br></p>
-<p class="p3">Rewrite the routine so that it includes a .wait message.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">r = <span class="s1">Routine</span>({<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> array;</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>array = [ </span>"hello, world"<span class="s2">, </span>"what a world"<span class="s2">, </span>"i am a world"<span class="s2"> ];</span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>3.do({<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait; <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pause for 1 second</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>array.choose.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">});</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">Then "play" the routine, eg, send it a .play message.</p>
-<p class="p2"><br></p>
-<p class="p3">r.play</p>
-<p class="p2"><br></p>
-<p class="p3">Append a .reset message to the routine so that it can start over.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">r.reset.play;</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Clocks and the convenience of .play</b></p>
-<p class="p2"><br></p>
-<p class="p3">When a routine receives a .play message, control (of the routine) is redirected to a clock. The clock uses the receiver of the .wait message as a unit of time to schedule ("play") the routine.</p>
-<p class="p2"><br></p>
-<p class="p3">SuperCollider has three clocks, each of which has a help file.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">SystemClock</span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the most accurate</p>
-<p class="p4"><span class="s1">AppClock</span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// for use with GUIs</p>
-<p class="p4"><span class="s1">TempoClock</span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// to schedule in beats</p>
-<p class="p2"><br></p>
-<p class="p3">The .play message is a convenience that allows one to write</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">r.reset.play;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// reset the routine before playing it</p>
-<p class="p2"><br></p>
-<p class="p3">instead of<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">SystemClock<span class="s2">.play(r)<span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Scheduling synths with routines</b></p>
-<p class="p7"><br></p>
-<p class="p3">Enclose synths within routines. It's often the case that the synthdef used by the synth in routines should have an envelope with a doneAction parameter set to 2 (to deallocate the memory needed for the synth after its envelope has finished playing).</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4">// DEFINE A SYNTHDEF</p>
-<p class="p6">SynthDef<span class="s2">(</span><span class="s3">"fm2"</span><span class="s2">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">arg</span> bus = 0, freq = 440, carPartial = 1, modPartial = 1, index = 3, mul = 0.2, ts = 1;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// index values usually are between 0 and 24</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// carPartial :: modPartial => car/mod ratio</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> car;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>mod = <span class="s1">SinOsc</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * modPartial,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq * index * <span class="s1">LFNoise1</span>.kr(5.reciprocal).abs</p>
-<p class="p3"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>car = <span class="s1">SinOsc</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(freq * carPartial) + mod,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mul</p>
-<p class="p3"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bus,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>car * <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.sine(1), doneAction: 2, timeScale: ts)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4">// DEFINE A ROUTINE</p>
-<p class="p6"><span class="s2">r = </span>Routine<span class="s2">({</span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>12.do({</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Synth<span class="s2">(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">"fm2"</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>\bus, 2.rand, <span class="s4">\freq</span>, 400.0.rrand(1200),<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\carPartial</span>, 0.5.rrand(2), <span class="s4">\ts</span>, 0.5.rrand(11)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"".postln.postln.postln.postln.postln;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">});</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">// PLAY THE ROUTINE</p>
-<p class="p3">r.reset.play;</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Process synths spawned in a routine through effects that run outside of the routine.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4">// DEFINE A SYNTHDEF</p>
-<p class="p5"><span class="s1">SynthDef</span><span class="s2">(</span>"echoplex"<span class="s2">, {</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>ReplaceOut<span class="s2">.ar(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">CombN</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">In</span>.ar(0, 1),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.35,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s1">Rand</span>(0.05, 0.3), <span class="s1">Rand</span>(0.05, 0.3)],<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// generate random values every time a synth is created</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p2"><br></p>
-<p class="p4">// DEFINE GROUPS TO CONTROL ORDER-OF-EXECUTION</p>
-<p class="p4">// attach a ~source group to the head of the rootnode and<span class="Apple-converted-space"> </span></p>
-<p class="p4">// an ~effects group to the tail of the rootenode</p>
-<p class="p3">~source = <span class="s1">Group</span>.head(s);</p>
-<p class="p3">~effect = <span class="s1">Group</span>.tail(s);</p>
-<p class="p2"><br></p>
-<p class="p4">// DEFINE A ROUTINE</p>
-<p class="p6"><span class="s2">r = </span>Routine<span class="s2">({</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// loop is the same as inf.do, eg, create an infinite loop that runs forever</p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Synth</span><span class="s2">.head(<span class="Apple-tab-span">	</span></span>// attach the synth to the head of the ~source group</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>~source,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">"fm2"</span>,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\outbus</span>, 0, <span class="s4">\freq</span>, 400.0.rrand(1200), <span class="s4">\modPartial</span>, 0.3.rrand(2.0),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">\carPartial</span>, 0.5.rrand(11), <span class="s4">\ts</span>, 0.1.rrand(0.2)]</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.queryAllNodes;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">});</p>
-<p class="p2"><br></p>
-<p class="p4">// TURN ON EFFECTS</p>
-<p class="p3"><span class="s1">Synth</span>.head(~effect, <span class="s3">"echoplex"</span>);</p>
-<p class="p3"><span class="s1">Synth</span>.tail(~effect, <span class="s3">"echoplex"</span>);</p>
-<p class="p3">)</p>
-<p class="p4">// PLAY THE ROUTINE</p>
-<p class="p3">r.reset.play;</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/1_The_network.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/1_The_network.html
deleted file mode 100644
index 87f8afe..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/1_The_network.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #000000}
-span.s2 {color: #0019b7}
-span.s3 {color: #606060}
-span.s4 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Networks and client/server</b></p>
-<p class="p2"><br></p>
-<p class="p3">SuperCollider 3 uses a client/server model to operate across a network. What this means is that users write client programs that ask a server to do something, that is, they request service. Such requests can occur locally on one computer or they can be distributed remotely among two or more computers. Whether the computers are in the same room or separated across the world makes no difference as long as they're connected on a network.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Client programs in SuperCollider typically specify synthesis definition (how a particular sound will be made) and synthesis scheduling (when a particular sound will be made). In turn, a SuperCollider server (or servers) synthesizes audio according to client instructions.</p>
-<p class="p2"><br></p>
-<p class="p3">To summarize, clients request; servers respond.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Client/server examples</b></p>
-<p class="p2"><br></p>
-<p class="p4">// EX. 1 - execute each line, one at a time</p>
-<p class="p4">// define a synthesis process and make a client request to a server</p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4">// define a server with a name and an address</p>
-<p class="p4"><span class="s1">s = </span><span class="s2">Server</span><span class="s1">(</span><span class="s3">"aServer"</span><span class="s1">, </span><span class="s2">NetAddr</span><span class="s1">(</span><span class="s3">"127.0.0.1"</span><span class="s1">, 56789));<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// "localhost" is a synonym for an ip of <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// "127.0.0.1"</p>
-<p class="p4">// start the server</p>
-<p class="p3">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p4">// define a synthesis engine</p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s3">"sine"</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(440, 0, 0.2)) }).send(s);</p>
-<p class="p2"><br></p>
-<p class="p4">// schedule (run) synthesis</p>
-<p class="p3">s.sendMsg(<span class="s3">"s_new"</span>, <span class="s3">"sine"</span>, n = s.nextNodeID, 0, 1);</p>
-<p class="p2"><br></p>
-<p class="p4">// stop the synth (delete it)</p>
-<p class="p3">s.sendMsg(<span class="s3">"/n_free"</span>, n);</p>
-<p class="p2"><br></p>
-<p class="p4">// (optionally) stop the server</p>
-<p class="p3">s.quit;</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4">// EX. 2</p>
-<p class="p4">// the same as in above, except on 2 computers across a network</p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4">// define a (remote) server; it represents a computer "somewhere" on the internet"</p>
-<p class="p4">// the ip number has to be valid and the server, wherever it is, has to be running</p>
-<p class="p4">// servers cannot be booted remotely, eg, a program on one machine can't boot a server on another</p>
-<p class="p4">// this example assumes the server on the remote machine was booted from within</p>
-<p class="p4">// supercollider and not from the terminal</p>
-<p class="p5"><span class="s1">s = </span><span class="s2">Server</span><span class="s1">(</span>"aServer"<span class="s1">, </span><span class="s2">NetAddr</span><span class="s1">(</span>"... an ip number ..."<span class="s1">, 56789));</span></p>
-<p class="p2"><br></p>
-<p class="p4">// define a synthesis engine ... exactly as in the previous example</p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s3">"sine"</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(440, 0, 0.2)) }).send(s);</p>
-<p class="p2"><br></p>
-<p class="p4">// schedule synthesis ... exactly as in the previous example</p>
-<p class="p3">s.sendMsg(<span class="s3">"s_new"</span>, <span class="s3">"sine"</span>, n = s.nextNodeID, 0, 1);</p>
-<p class="p2"><br></p>
-<p class="p4">// stop the synth (delete it)</p>
-<p class="p3">s.sendMsg(<span class="s3">"/n_free"</span>, n);</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p4">// EX. 3</p>
-<p class="p4">// client/server on one computer vs. client server on two computers</p>
-<p class="p4">// the previous examples without comments</p>
-<p class="p4">// they're identical except that</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>the example that runs on one computer explicitly boots the server</p>
-<p class="p4">//<span class="Apple-tab-span">	</span>the example on 2 computers _assumes the server "somewhere" on the internet is booted</p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4">// on one computer</p>
-<p class="p5"><span class="s1">s = </span><span class="s2">Server</span><span class="s1">(</span>"aServer"<span class="s1">, </span><span class="s2">NetAddr</span><span class="s1">(</span>"localhost"<span class="s1">, 56789));<span class="Apple-tab-span">	</span></span></p>
-<p class="p3">s.boot;</p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s3">"sine"</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(440, 0, 0.2)) }).send(s);</p>
-<p class="p3">s.sendMsg(<span class="s3">"s_new"</span>, <span class="s3">"sine"</span>, n = s.nextNodeID, 0, 1);</p>
-<p class="p3">s.sendMsg(<span class="s3">"/n_free"</span>, n);</p>
-<p class="p2"><br></p>
-<p class="p3">vs.</p>
-<p class="p2"><br></p>
-<p class="p4">// on two computers ... the server has to have a valid ip address</p>
-<p class="p5"><span class="s1">s = </span><span class="s2">Server</span><span class="s1">(</span>"aServer"<span class="s1">, </span><span class="s2">NetAddr</span><span class="s1">(</span>"... an ip number ..."<span class="s1">, 56789));</span></p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s3">"sine"</span>, { <span class="s2">Out</span>.ar(0, <span class="s2">SinOsc</span>.ar(440, 0, 0.2)) }).send(s);</p>
-<p class="p3">s.sendMsg(<span class="s3">"s_new"</span>, <span class="s3">"sine"</span>, n = s.nextNodeID, 0, 1);</p>
-<p class="p3">s.sendMsg(<span class="s3">"/n_free"</span>, n);</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p1"><b>Localhost and internal servers</b></p>
-<p class="p2"><br></p>
-<p class="p3">The previous examples define server objects. But, for the most part, this isn't necessary as SuperCollider defines two such objects, the localhost and internal servers, at startup. They're represented by windows at the bottom of the screen. Each of the windows has a boot button to start its respective server.</p>
-<p class="p2"><br></p>
-<p class="p3">See the <span class="s4"><b>ClientVsServer, Server, </b></span>and<span class="s4"><b> ServerOptions</b></span> and <span class="s4"><b>Tutorial</b></span> documents in the SuperCollider help system for further information.</p>
-<p class="p6"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p7">Go to <b>2_Prerequisites</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/2_Prerequisites.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/2_Prerequisites.html
deleted file mode 100644
index 5ed1913..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/2_Prerequisites.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-</style>
-</head>
-<body>
-<p class="p1">We know that SuperCollider applies a client/server model to audio synthesis and processing. Let's focus on synthesis definition. Some things to consider:</p>
-<p class="p2"><br></p>
-<p class="p3"><b>DSP</b></p>
-<p class="p2"><br></p>
-<p class="p1">First, we require knowledge of digital signal processing. A reference, such as the "Computer Music Tutorial," (MIT Press) can be helpful. A source on the internet is "The Scientist and Engineer's Guide to Digital Signal Processing" at</p>
-<p class="p2"><br></p>
-<p class="p1">http://www.dspguide.com/</p>
-<p class="p2"><br></p>
-<p class="p3"><b>OOP</b></p>
-<p class="p2"><br></p>
-<p class="p1">Second, we need to know how to use the SuperCollider language to express synthesis algorithms. This means learning about object-oriented programming in general and about the grammar and syntax of the SuperCollider language in particular. A book about Smalltalk, the object-oriented computer language that SuperCollider closely resembles, can be helpful. Two books about Smalltalk on the www are<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">"The Art and Science of Smalltalk"<span class="Apple-converted-space"> </span></p>
-<p class="p1">(http://www.iam.unibe.ch/~ducasse/FreeBooks/Art/artMissing186187Fix1.pdf)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">and<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">Smalltalk by Example<span class="Apple-converted-space"> </span></p>
-<p class="p1">(http://www.iam.unibe.ch/~ducasse/FreeBooks/ByExample/).</p>
-<p class="p2"><br></p>
-<p class="p1">The SuperCollider documentation and numerous sites across the internet, such as the swiki at<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">http://swiki.hfbk-hamburg.de:8888/MusicTechnology/6</p>
-<p class="p2"><br></p>
-<p class="p1">explain and show how the SuperCollider language works.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p3">go to <b>3_SynthDefs</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/3_SynthDefs.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/3_SynthDefs.html
deleted file mode 100644
index af57d6f..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/3_SynthDefs.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #000000}
-span.s2 {color: #606060}
-span.s3 {color: #0019b7}
-span.s4 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SynthDefs<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3">Use the SynthDef class to build the engines for synths that will run on the server. The engines, which can be saved to disk and reused, are analogous to presets on commercial hardware and software synthesizers.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">When notated as code in client programs, the engines have two essential parts: a name and a function. In the jargon of SuperCollider, the function is called a ugenGraphFunc.</p>
-<p class="p2"><br></p>
-<p class="p3">The term ugenGraphFunc derives from the notion of a graph, which is the data structure that SuperCollider uses to organize unit generators. SuperCollider constructs the graph for you from the code it finds in your function which means that don't have to know how a graph works or that it even exists.</p>
-<p class="p2"><br></p>
-<p class="p3">If you wish to know more about graphs, visit the Wikipedia at<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">http://en.wikipedia.org/wiki/Graph_(data_structure).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Or, go to</p>
-<p class="p2"><br></p>
-<p class="p3">http://www.nist.gov/dads/HTML/graph.html</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Template</b></p>
-<p class="p2"><br></p>
-<p class="p3">Here's a template for a synthdef showing that it consists of a name and a ugenGraphFunc</p>
-<p class="p2"><br></p>
-<p class="p5">SynthDef<span class="s1">(</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">"aSynthDef"</span><span class="s1">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the 1st argument is the name</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span>{ .... i am a ugenGraphFunc ... }<span class="Apple-tab-span">	</span></span>// the 2nd argument is the ugenGraphFunc</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">To make the template functional<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">1. put code into the ugenGraphFunc</p>
-<p class="p3">2. send a .load message to the synthdef</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p5">SynthDef<span class="s1">(</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">"aSynthDef"</span><span class="s1">, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the name of the synthdef</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span>{ <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the ugenGraphFunc with actual code</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">arg</span> freq;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freq, 0, 0.1)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}</p>
-<p class="p3">).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>The .load message and the variable 's'</b></p>
-<p class="p2"><br></p>
-<p class="p3">The .load message writes synthdefs to disk and also sends them to the default server. The default server is defined by SuperCollider at startup time (as the localhost server) at which point it's also assigned to the variable 's'.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>The .send message and a remote server</b></p>
-<p class="p2"><br></p>
-<p class="p3">On the other hand, .send message,<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">SynthDef</span>( .... ).send(s);</p>
-<p class="p2"><br></p>
-<p class="p3">instead of a .load message<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3">SynthDef</span>( .... ).load(s);</p>
-<p class="p2"><br></p>
-<p class="p3">is another way to get a synthdef to a server. The .send message, unlike the .load message, doesn't first write the synthdef to disk; instead it just transmits the synthdef directly to the server. This is therefore the message to use to define a synthdef on one computer but send it to another.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s3">var</span> aServer;</p>
-<p class="p3">aServer =<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>Server<span class="s1">(</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>"aRemoteServerOnAnotherMachine"<span class="s1">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">NetAddr</span><span class="s1">(</span><span class="s2">"... an ip # ..."</span><span class="s1">, 57110)<span class="Apple-tab-span">	</span></span>// a server on another computer</p>
-<p class="p3"><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="s3">SynthDef</span>( .... ).send(aServer);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>SynthDef browsers</b></p>
-<p class="p7"><br></p>
-<p class="p3">Use the synthdef browser to examine synthdefs that have been written to disk.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4">// a synthdef browswer</p>
-<p class="p3"><span class="s3">SynthDescLib</span>.global.read;</p>
-<p class="p3"><span class="s3">SynthDescLib</span>.global.browse;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">The middle box (in the top row) shows the names of synthsdefs. Each name, when selected, causes the other boxes to display the ugens, controls, and inputs and outputs for a particular synthdef.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The box labeled "SynthDef controls" is useful because it shows the arguments that can be passed to a given synthdef.</p>
-<p class="p7"><br></p>
-<p class="p3">The browser shows that the synthdef defined above - "aSynthDef" - is composed from four ugens, one control, no inputs, and one output. The four ugens include instances of Control, SinOsc, BinaryOpUGen, and Out classes.</p>
-<p class="p2"><br></p>
-<p class="p3">The one control is "freq". A control is an argument that a synth can use when it is created or at any time while it (the synth) exists on the server. The browser also shows that "aSynth" has no inputs (which means that it doesn't use data from audio or control buses) and that it sends one channel of audio out to an audio Bus.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p3">For further context, see the <span class="s4"><b>SynthDef</b></span>, <span class="s4"><b>In</b></span>, <span class="s4"><b>Out</b></span>, <span class="s4"><b>SinOsc</b></span>, <span class="s4"><b>Control</b></span>, <span class="s4"><b>BinaryOpUGen</b></span> files in the SuperCollider help system.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p9">go to <b>4_Rates</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/4_Rates.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/4_Rates.html
deleted file mode 100644
index f88742b..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/4_Rates.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Audio rate</b></p>
-<p class="p2"><br></p>
-<p class="p3">Ugens to which an .ar message is sent run at the audio rate, by default, at 44,100 samples per second. Send the .ar message to unit generators when they're part of the audio chain that will be heard. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">SinOsc</span>.ar(440, 0, 1);</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p1"><b>Control rate</b></p>
-<p class="p2"><br></p>
-<p class="p3">Ugens to which a .kr message is appended run at the control rate.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">SinOsc</span>.kr(440, 0, 1);</p>
-<p class="p2"><br></p>
-<p class="p3">By default, control rate ugens generate one sample value for every sixty-four sample values made by an audio rate ugen. Control rate ugens thus use fewer resources and are less computationally expensive than their audio rate counterparts.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Use control rate ugens as modulators, that is, as signals that shape an audio signal.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Here, a control rate SinOsc modulates the frequency of the audio rate Pulse wave.</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"anExample"<span class="s2">, {</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pulse</span>.ar(</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[220, 221.5] + </span><span class="s1">SinOsc</span><span class="s2">.kr([7, 8], 0, 7), </span>// the control rate conserves CPU cycles</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.35,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">Synth</span><span class="s2">(</span>"anExample"<span class="s2">)</span></p>
-<p class="p2"><br></p>
-<p class="p3">Type command-period (cmd-.) to stop synthesis.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p8">Go to <b>5_Buses</b></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/5_Buses.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/5_Buses.html
deleted file mode 100644
index d641489..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/5_Buses.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {font: 12.0px Helvetica}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2">By default, SuperCollider has 128 buses for audio signals and 4096 for control signals. The buses, which are items in an array, are what SuperCollider uses to represent audio and control rate data.</p>
-<p class="p3"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p3"><br></p>
-<p class="p4">// the array of audio buses (channels)</p>
-<p class="p2">[ channel0, channel1, channel2, channel3, channel4, ... , ..., ..., etc., ... channel127 ]</p>
-<p class="p3"><br></p>
-<p class="p4">// the array of control buses (channels)</p>
-<p class="p2">[ channel0, channel1, channel2, channel3, channel4, ... , ..., ..., etc., ... channel4095 ]</p>
-<p class="p3"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p3"><br></p>
-<p class="p5"><b>Placing audio into a bus</b></p>
-<p class="p3"><br></p>
-<p class="p2">Use an<span class="s1"> Out</span> ugen at the audio rate to put data into an audio bus.</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"dataForABus"<span class="s2">, {</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write 1 channel of audio into bus 0</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Saw</span>.ar(100, 0.1)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2">}).load(s);</p>
-<p class="p2">)</p>
-<p class="p3"><br></p>
-<p class="p7"><span class="s1">Synth</span><span class="s2">(</span>"dataForABus"<span class="s2">);</span></p>
-<p class="p3"><br></p>
-<p class="p2">A SynthDef browser</p>
-<p class="p3"><br></p>
-<p class="p2">(</p>
-<p class="p2"><span class="s1">SynthDescLib</span>.global.read;</p>
-<p class="p2"><span class="s1">SynthDescLib</span>.global.browse;</p>
-<p class="p2">)</p>
-<p class="p3"><br></p>
-<p class="p2">shows 1 channel of output on channel 0.</p>
-<p class="p3"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p3"><br></p>
-<p class="p5"><b>Getting audio from a bus</b></p>
-<p class="p3"><br></p>
-<p class="p2">Send an .ar message to an In ugen to get data from an audio bus.</p>
-<p class="p8"><br></p>
-<p class="p2">(</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"dataFromABus"<span class="s2">, {</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-tab-span">	</span></span>// the left channel gets input from an audio bus</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">In</span>.ar(0, 1),<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(440, 0.2),<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2">}).load(s);</p>
-<p class="p2">)</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p4"><span class="s1">Synth</span><span class="s2">(</span><span class="s3">"dataForABus"</span><span class="s2">);<span class="Apple-tab-span">	</span></span>// synthesize a sawtooth wave on channel 0</p>
-<p class="p4"><span class="s1">Synth</span><span class="s2">(</span><span class="s3">"dataFromABus"</span><span class="s2">);<span class="Apple-tab-span">	</span></span>// pair it with a sine wave on channel 1</p>
-<p class="p2">)</p>
-<p class="p3"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p3"><br></p>
-<p class="p5"><b>Control rate buses</b></p>
-<p class="p1"><br></p>
-<p class="p2">Use In.kr and Out.kr to read from or write to control buses.</p>
-<p class="p8"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p2">For additional information, see the <span class="s4"><b>Out</b></span>, <span class="s4"><b>In,<span class="Apple-converted-space"> </span></b></span> and<span class="s4"><b> Bus</b></span> files in the SuperCollider help system.</p>
-<p class="p8"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p9"><br></p>
-<p class="p10">go to <b>6_Controls</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/6_Controls.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/6_Controls.html
deleted file mode 100644
index 94346bf..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/6_Controls.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #326f17}
-span.s5 {font: 12.0px Helvetica}
-span.s6 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">Evaluate</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p1"><span class="s1">SynthDescLib</span>.global.read;</p>
-<p class="p1"><span class="s1">SynthDescLib</span>.global.browse;</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">and examine the box that lists the controls for each synth.</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Controls (usually) are arguments</b></p>
-<p class="p2"><br></p>
-<p class="p1">Use controls, which most often are defined as arguments in a ugenGraphFunc, to give information to a synth, either when it is created and/or after it is running. Supply default values to the arguments to make code more readable and to protect against user error (such as forgetting to supply a value to an argument).</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p3">// 3 arguments (controls) with default values</p>
-<p class="p5">SynthDef<span class="s2">(</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>"withControls"<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>{ <span class="s1">arg</span> freq = 440, beatFreq = 1, mul = 0.22;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([freq, freq+beatFreq], 0, mul)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p3">// items in the array are passed to the controls in Synth when it's created</p>
-<p class="p1">z = <span class="s1">Synth</span>(<span class="s3">"withControls"</span>, [<span class="s4">\freq</span>, 440, <span class="s4">\beatFreq</span>, 1, <span class="s4">\mul</span>, 0.1]);</p>
-<p class="p2"><br></p>
-<p class="p3">// evaluate this line after the synth is running to reset its controls</p>
-<p class="p1">z.set(<span class="s4">\freq</span>, 700, <span class="s4">\beatFreq</span>, 2, <span class="s4">\mul</span>, 0.2);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">Write controls names and appropriate values in the array given as an argument to a synth. Control names can be given as symbols (a unique name within the SuperCollider system).</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s1">Synth</span>(<span class="s3">"withControls"</span>, [<span class="s4">\freq</span>, 440, \beatFreq, 0.5, <span class="s4">\mul</span>, 0.1]);</p>
-<p class="p2"><br></p>
-<p class="p1">or as as strings (an array of characters)</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s1">Synth</span>(<span class="s3">"withControls"</span>, [<span class="s4">"freq"</span>, 440, "beatFreq", 0.5, <span class="s4">"mul"</span>, 0.1]);</p>
-<p class="p2"><br></p>
-<p class="p1">Either way, the pattern is<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">[ controlName, value, controlName, value, controlName, value].</p>
-<p class="p2"><br></p>
-<p class="p1">See the <span class="s5"><b>Symbol</b></span> and <span class="s5"><b>String</b></span> files in the SuperCollider help system.</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">A third way to pass controls to a synth is as</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s1">Synth</span>(<span class="s3">"withControls"</span>, [0, 440, 1, 1, 2, 0.1]);</p>
-<p class="p2"><br></p>
-<p class="p1">In this case, the pattern is</p>
-<p class="p2"><br></p>
-<p class="p1">[ controlIndex, value, controlIndex, value, controlIndex].</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4"><b>To adjust a control</b></p>
-<p class="p2"><br></p>
-<p class="p1">Use the .set message to change the value of a control while a synth is running.</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p1"><span class="s1">SynthDef</span>(<span class="s3">"resetMyControls"</span>, { <span class="s1">arg</span> freq = 440, mul = 0.22;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([freq, freq+1], 0, mul)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}).load(s);</p>
-<p class="p1">)</p>
-<p class="p7"><br></p>
-<p class="p1"><span class="s1">~aSynth = Synth</span>(<span class="s3">"resetMyControls"</span>, [<span class="s4">\freq</span>, 440, <span class="s4">\mul</span>, 0.06]);</p>
-<p class="p1">~aSynth.set(\freq, 600, \mul, 0.25);</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Global variables</b></p>
-<p class="p2"><br></p>
-<p class="p1">The '~' character before aSynth in the previous example defines a global variable. An advantage to using a global variable is that it doesn't have to be declared explicitly, as in</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">var</span><span class="s2"> aSynth; </span>// variables without the '~' MUST first be declared!!</p>
-<p class="p2"><br></p>
-<p class="p1">More precisely, the ~ character puts a variable named 'aSynth' into an instance of an object known as the currentEnvironment. For further information, see the <span class="s5"><b>Environment</b></span> document in the SuperCollider help system.</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Lag times</b></p>
-<p class="p2"><br></p>
-<p class="p1">Use an array of lag times to state how long it takes to glide smoothly from one control value to another. Write the lag times in an array and place it in the synthdef after the ugenGraphFunc, as in</p>
-<p class="p2"><br></p>
-<p class="p1">(</p>
-<p class="p1"><span class="s1">SynthDef</span>(<span class="s3">"controlsWithLags"</span>, { <span class="s1">arg</span> freq1 = 440, freq2 = 443, mul = 0.12;</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([freq1, freq2], 0, mul)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>)</p>
-<p class="p1">}, [4, 5]).load(s);</p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s1">~aSynth = Synth</span>(<span class="s3">"controlsWithLags"</span>, [<span class="s4">\freq1</span>, 550, \freq2, 344, <span class="s4">\mul</span>, 0.1]);</p>
-<p class="p1">~aSynth.set(\freq1, 600, \freq2, 701, \mul, 0.05);</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p4"><b>SynthDef templates</b></p>
-<p class="p2"><br></p>
-<p class="p1">The array of lagtimes means that the synthdef template with two components (discussed in <span class="s5"><b>3_SynthDefs</b></span>)</p>
-<p class="p8"><br></p>
-<p class="p3">// a template for a synthdef with two components</p>
-<p class="p5">SynthDef<span class="s2">(</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">aSynth"</span><span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 1st arsgument is a name</p>
-<p class="p1"><span class="Apple-tab-span">	</span>{ .... i am a ugenGraphFunc ... }<span class="Apple-tab-span">	</span><span class="s6">// 2nd argument is a ugenGraphFunc</span></p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p1">can be revised to include three components.</p>
-<p class="p2"><br></p>
-<p class="p3">// a re-defined template for a synthdef _with an array of lagtimes</p>
-<p class="p3">// the class definition for the lagtime array calls it 'rates'</p>
-<p class="p5">SynthDef<span class="s2">(</span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>"aSynth"<span class="s2">,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">// name</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>{ .... i am a ugenGraphFunc ... },<span class="Apple-tab-span">	</span><span class="s6">// ugenGraphFunc</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>[ ... lagTimes ... ]<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// rates</span></p>
-<p class="p1">)</p>
-<p class="p2"><br></p>
-<p class="p3">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p8"><br></p>
-<p class="p9">go to <b>7_Test_functions</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/7_Test_functions.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/7_Test_functions.html
deleted file mode 100644
index e71beae..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/7_Test_functions.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Functions and .scope messages</b></p>
-<p class="p2"><br></p>
-<p class="p3">An easy way to audition synthesis processes is to test them within a function. To do this, append a .scope or a .play message to a function. The .scope message, which works only with the internal server, displays a visual representation of a sound wave.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Boot (turn on) the internal server<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p2"><br></p>
-<p class="p3">Run this example, and look at the scope window.</p>
-<p class="p2"><br></p>
-<p class="p4">// test a synthesis process in a function</p>
-<p class="p3">(</p>
-<p class="p3"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span>SinOsc</span>.ar([440.067, 441.013], 0, 1)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([111, 109], 0, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Code can be transfered from a test function into a synthdef. In the following example, the code from the function (above) is the second argument to the Out ugen.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s1">SynthDef</span><span class="s2">(</span>"ringMod"<span class="s2">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([440.067, 441.013], 0, 1)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar([111, 109], 0, 0.2)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">Synth</span><span class="s2">(</span>"ringMod"<span class="s2">)</span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Multi-channel expansion</b></p>
-<p class="p2"><br></p>
-<p class="p3">Expand a ugen to two channels with an array in any of the argument (control) slots.</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">Saw</span>.ar([500, 933], 0.1) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p3">Another (longer) way to write the same thing is<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">{ [ <span class="s1">Saw</span>.ar(500, 0.1), <span class="s1">Saw</span>.ar(933, 0.1)] }.scope;</p>
-<p class="p2"><br></p>
-<p class="p3">Expand a ugen to three channels by adding values to the array.</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">Saw</span>.ar([500, 933, 2033], 0.1) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p4">// 4 channels</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">Saw</span>.ar([500, 933, 2033, 895], 0.1) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p7"><br></p>
-<p class="p8">go to <b>8_UnaryOp_synthesis</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/8_UnaryOp_synthesis.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/8_UnaryOp_synthesis.html
deleted file mode 100644
index ef91b19..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/8_UnaryOp_synthesis.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #0019b7}
-</style>
-</head>
-<body>
-<p class="p1"><b>Unary messages</b></p>
-<p class="p2"><br></p>
-<p class="p3">Some synthesis processes can be initiated with a unary message (a message with no arguments).</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">For example, compare</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">SinOsc</span>.ar(500, 0, 0.5) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p3">to</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">SinOsc</span>.ar(500, 0, 0.5).distort }.scope;</p>
-<p class="p2"><br></p>
-<p class="p3">The .distort message modulates the SinOsc to create more partials.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Q: Where does the .distort message come from?</p>
-<p class="p2"><br></p>
-<p class="p3">A: It's defined in the AbstractFunction class. The UGen class is a subclass of the AbstractFunction class. The idea is that all classes inherit methods defined in their superclasses; all ugens thus inherit from AbstractFunction).</p>
-<p class="p2"><br></p>
-<p class="p3">Compare</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s1">SinOsc</span>.ar(500, 0, 0.5) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p3">to</p>
-<p class="p2"><br></p>
-<p class="p4">// .cubed is a unary operation</p>
-<p class="p3">{ <span class="s1">SinOsc</span>.ar(500, 0, 0.5).cubed }.scope;</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">See the files in the UnaryOps folder in the SuperCollider help system<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p6">go to <b>9_BinaryOpSynthesis</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/9_BinaryOp_synthesis.html b/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/9_BinaryOp_synthesis.html
deleted file mode 100644
index bb7b663..0000000
--- a/Help/Tutorials/Mark_Polishook_tutorial/Synthesis/9_BinaryOp_synthesis.html
+++ /dev/null
@@ -1,279 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Lucida Grande}
-span.s1 {color: #000000}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.s4 {color: #606060}
-span.s5 {color: #326f17}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Binary messages</b></p>
-<p class="p2"><br></p>
-<p class="p3">The pattern for a binary message is</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>RECEIVER OPERATOR OPERAND</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">For example</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>2 * 3</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">is a receiver (the object to which a message is sent), a binary operator, and an operand.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Mixing = addition</b></p>
-<p class="p2"><br></p>
-<p class="p3">Use addition (a binary operation) to mix two or more ugens.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// mix 2 sawtooth waves</p>
-<p class="p3"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(500, 0.05)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// receiver</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// operator</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(600, 0.06)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// operand</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4">// mix 3 unit generators.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(500, 0.05)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// receiver</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// operator</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(600, 0.06)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// operand</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// when evaluated produce<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// a BinaryOpUGen</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this BinaryOpUGen is then a receiver for an</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// addition operator followed by</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(700, 0.07)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// an operand</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Rewrite the previous example with the Mix ugen.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.ar(</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// the ugens that will be mixed go into an array</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(500, 0.05),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(600, 0.06),<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(700, 0.06)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p3">}.scope</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">Or use Mix.arFill to create the same result.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s2">Mix</span>.arFill(3, { <span class="s2">arg</span> i; <span class="s2">Saw</span>.ar(500 + (i * 100), 0.05) }) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p3">Every time the function is evaluated, the argument i is incremented. So i equals 0 the first time the function is evaluated, i equals 1 the second time, i equals 2, the third time, and so on.</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5"><br></p>
-<p class="p1"><b>Scaling = multiplication</b></p>
-<p class="p2"><br></p>
-<p class="p3">Apply an envelope, in the form of a low-frequency sine wave, to a WhiteNoise generator.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s2">WhiteNoise</span>.ar(0.1) * <span class="s2">SinOsc</span>.kr(1, 1) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// scaling and mixing</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>// ... imitates a train?</p>
-<p class="p3"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s2">WhiteNoise</span>.ar(0.1) * <span class="s2">SinOsc</span>.kr(1, 1))</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(<span class="s2">BrownNoise</span>.ar(0.1) * <span class="s2">SinOsc</span>.kr(2, 1))</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p3">)</p>
-<p class="p6"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p1"><b>Envelopes</b></p>
-<p class="p2"><br></p>
-<p class="p3">Dynamically modulate any parameter in a ugen (such as frequency, phase, or amplitude) with an envelope.</p>
-<p class="p2"><br></p>
-<p class="p4">// modulate amplitude</p>
-<p class="p3">{ <span class="s2">SinOsc</span>.ar(440, 0, 0.1) * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.sine(1), doneAction: 2) }.scope;</p>
-<p class="p2"><br></p>
-<p class="p3">Setting the doneAction argument (control) to 2 insures that after the envelope reaches its endpoint, SuperCollider will release the memory it used for the instances of the SinOsc and the EnvGen.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p1"><b>Keyword arguments</b></p>
-<p class="p2"><br></p>
-<p class="p3">Keywords make code easier to read and they allow arguments to be presented in any order. Here, the doneAction and the timeScale arguments are expressed in keyword style.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s2">SynthDef</span>(<span class="s4">"timeScale"</span>, { <span class="s2">arg</span> ts = 1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0, 0.4)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">EnvGen</span>.kr(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.sine(1),<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timeScale: ts<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale the duration of an envelope</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">}).load(s);</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">Synth</span><span class="s1">(</span><span class="s4">"timeScale"</span><span class="s1">, [</span><span class="s5">\ts</span><span class="s1">, 0.1]); </span>// timeScale controls the duration of the envelope</p>
-<p class="p6"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p4">// scale the duration of the envelope for every new synth</p>
-<p class="p3">(</p>
-<p class="p7"><span class="s1">r = </span>Routine<span class="s1">({</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">"timeScale"</span>, [<span class="s5">\ts</span>, 0.01.rrand(0.3)]);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5.wait;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>})</p>
-<p class="p3">});</p>
-<p class="p3">)</p>
-<p class="p3">r.play</p>
-<p class="p6"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Additive Synthesis</b></p>
-<p class="p2"><br></p>
-<p class="p3">Additive synthesis is as its name says. Components are added (mixed) together.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4"><span class="s1">{<span class="Apple-tab-span">	</span></span>// evaluate the function 12 times</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> n = 12;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.arFill(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[67.0.rrand(2000), 67.0.rrand(2000)],</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.reciprocal * 0.75</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>*</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(11, 6), doneAction: 2)</p>
-<p class="p3">}.scope</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Envelopes</b></p>
-<p class="p2"><br></p>
-<p class="p3">The promise of additive synthesis is that one can add sine waves to create any sound that can be imagined.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The problem of additive synthesis is that each and every sine wave and their envelopes have to be specified explicitly.</p>
-<p class="p2"><br></p>
-<p class="p3">Create nuanced textures by scaling sine waves with envelopes and then mixing the result.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">{<span class="Apple-tab-span">	</span><span class="s2">var</span> n = 12;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.arFill(</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// generate n sine waves</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">SinOsc</span><span class="s1">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// each with a possible frequency between</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[67.0.rrand(2000), 67.0.rrand(2000)],<span class="Apple-tab-span">	</span></span>// low.rrand(high) ... floating point values</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>n.reciprocal<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale the amplitude of each sine wave</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// according to the value of n</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">EnvGen</span><span class="s1">.kr(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put an envelope on each of the sine waves</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.sine(2.0.rrand(17)),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 0 <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// deallocate envelopes only when the</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// entire sound is complete (why?)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span>*<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// put an envelope over the whole patch</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>EnvGen<span class="s1">.kr(</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Env</span>.perc(11, 6),<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>levelScale: 0.75</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">}.scope</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3">(Or use the <span class="s6"><b>Klang</b></span> ugen to produce a similar effect).</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ring modulation</b></p>
-<p class="p2"><br></p>
-<p class="p3">Multiply two UGens.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s1">{ </span>SinOsc.ar(440, 0, 0.571)<span class="s1"> * </span>SinOsc<span class="s1">.kr(880) }.scope</span></p>
-<p class="p2"><br></p>
-<p class="p4">// use an lfo to modulate the amplitude of the modulator</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0, 0.571)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span><span class="s1"><span class="Apple-tab-span">	</span>(</span><span class="s2">SinOsc</span><span class="s1">.kr(880)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// wrap the modulator and the lfo in parenthese</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>* <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// why ... ?</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.kr([6.99, 8.01].reciprocal)</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>}.scope</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Amplitude modulation</b></p>
-<p class="p2"><br></p>
-<p class="p3">Multiply two UGens and restrict the value of the modulator to positive values (use the .abs message to calculate 'absolute' value) to create what Charles Dodge calls "classic" amplitude modulation.</p>
-<p class="p2"><br></p>
-<p class="p4">// use an lfo to modulate the amplitude of the modulator</p>
-<p class="p3">(</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0, 0.571)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>*<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s7"><span class="Apple-tab-span">	</span></span><span class="s1"><span class="Apple-tab-span">	</span>(</span><span class="s2">SinOsc</span><span class="s1">.kr(880).abs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// wrap the modulator and the lfo in parenthese</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>* <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// why ... ?</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.kr([6.99, 8.01].reciprocal)</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>}.scope</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p3">Compare "classic" amplitude modulation and ring modulation</p>
-<p class="p2"><br></p>
-<p class="p4">// "classic"</p>
-<p class="p7"><span class="s1">{ </span>SinOsc.ar(440, 0, 0.571)<span class="s1"> * </span>SinOsc<span class="s1">.kr(880).abs }.scope</span></p>
-<p class="p2"><br></p>
-<p class="p4">// "ring"</p>
-<p class="p4">// ... what's the difference?</p>
-<p class="p7"><span class="s1">{ </span>SinOsc.ar(440, 0, 0.571)<span class="s1"> * </span>SinOsc<span class="s1">.kr(880) }.scope</span></p>
-<p class="p2"><br></p>
-<p class="p4">////////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p8">go to <b>10_Subtractive_synthesis</b></p>
-</body>
-</html>
diff --git a/Help/Tutorials/Tutorial.html b/Help/Tutorials/Tutorial.html
deleted file mode 100644
index 52079a5..0000000
--- a/Help/Tutorials/Tutorial.html
+++ /dev/null
@@ -1,417 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {font: 14.0px Helvetica}
-span.s4 {text-decoration: underline ; color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #606060}
-span.s7 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SuperCollider 3 Server Tutorial</b></p>
-<p class="p2"><br></p>
-<p class="p3">To follow this tutorial you should read</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="../ServerArchitecture/Server-Architecture.html"><b>Server-Architecture</b></a></span></p>
-<p class="p3">and</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="../ServerArchitecture/Server-Command-Reference.html"><b>Server-Command-Reference</b></a></span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p3">There are two parts to SuperCollider. One part is the language application and another is a synthesis server that can run either inside the language application, or as a separate program on the same machine, or run on a different computer across a network connection. The language application sends command messages to the server using a subset of the Open Sound Control protocol.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Booting a Server</b></p>
-<p class="p2"><br></p>
-<p class="p3">In order to run sound we need to start a server running. The easiest way to start a server is to click on one of the "Start Server" buttons in the server windows. Sometimes though it is useful to start a server programmatically. To do this we need to get or create a server object and tell it to "boot". Two servers, internal and local, are predefined.</p>
-<p class="p2"><br></p>
-<p class="p3">The internal server runs in the same process as the SuperCollider application. It is internal to the program itself.</p>
-<p class="p2"><br></p>
-<p class="p6">// set the interpreter variable s to the internal server object.</p>
-<p class="p7">s = <span class="s2">Server</span>.internal;</p>
-<p class="p8"><br></p>
-<p class="p3"><span class="s3"><b>VERY IMPORTANT: </b></span>This line must be executed for the variable 's' to be set. The mechanics are different depending on your platform. The MacOSX standard is to place the cursor anywhere on this line and press the "Enter" key on the numeric keypad. Pressing the main return key does not execute code! This allows you to write code fragments of multiple lines. To execute a multi-line block of code, select the block and press "Enter." For convenience, a code block can be enclosed in parentheses, and the entire block selected by double-clicking just inside either parenthesis. (For instructions in other editors (e.g. on Linux or Windows), consult the documentation specific to that platform. See also the helpfile <a href="../Other Topics/Shortcuts.html"><span class="s4">Shortcuts</span></a> for key commands in other editors.)If you don't have an enter key, then you can use ctrl-Return, Ctrl-c, fn-Return( on Some Macs), or Shift-Return.</p>
-<p class="p2"><br></p>
-<p class="p3">The local server runs on the same machine as the SuperCollider application, but is a separate program, 'scsynth'. <b>Note:</b> By default the interpreter variable s is set to the local server at startup. For further information see the <a href="../ServerArchitecture/Server.html"><span class="s2"><b>Server</b></span></a> helpfile.</p>
-<p class="p2"><br></p>
-<p class="p6">// set the interpreter variable s to the local server object.</p>
-<p class="p7">s = <span class="s2">Server</span>.local;</p>
-<p class="p2"><br></p>
-<p class="p3">To boot the server you send it the boot message.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">s</span>.boot;</p>
-<p class="p2"><br></p>
-<p class="p3">To quit the server send it the quit message.</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s2">s</span>.quit;</p>
-<p class="p2"><br></p>
-<p class="p3">We can also create a server to run. To create a server object we need to provide the IP address or the server and a port number. Port numbers are somewhat arbitrary but they should not conflict with common protocols like telnet, ftp http, etc. The IP address 127.0.0.1 is defined to mean the local host. This is the IP address to use for running a server on your own machine.</p>
-<p class="p2"><br></p>
-<p class="p6">// create a server object that will run on the local host using port #58009</p>
-<p class="p7">s = <span class="s2">Server</span>(<span class="s5">\myServer</span>, <span class="s2">NetAddr</span>(<span class="s6">"127.0.0.1"</span>, 58009));</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s1">s.boot; </span>//start the server</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s1">s.quit; </span>// quit the server</p>
-<p class="p2"><br></p>
-<p class="p3">It is not possible to boot a server on a remote machine, but if you have one running already or you know of one running, you can send messages to it. You create the server object using the IP address of the machine running the server and the port it is using.</p>
-<p class="p2"><br></p>
-<p class="p6">// create a server object for talking to the server running on a machine having</p>
-<p class="p6">// IP address 192.168.0.47 using port #57110</p>
-<p class="p7">s = <span class="s2">Server</span>(<span class="s5">\myServer</span>, <span class="s2">NetAddr</span>(<span class="s6">"192.168.0.47"</span>, 57110));</p>
-<p class="p2"><br></p>
-<p class="p5"><b>Making Sound</b></p>
-<p class="p2"><br></p>
-<p class="p3">(note: This tutorial uses raw OSC commands as described in <a href="../ServerArchitecture/Server-Command-Reference.html"><span class="s2"><b>Server-Command-Reference</b></span></a><b>, </b>rather than the classes <a href="../ServerArchitecture/Synth.html"><span class="s2"><b>Synth</b></span></a> and <a href="../ServerArchitecture/Group.html"><span class="s2"><b>Group</b></span></a>. See those helpfiles also for some simpler ways of working with Synths. This tutorial explains the basic underlying design of Synths and SynthDefs).</p>
-<p class="p2"><br></p>
-<p class="p3">Now lets make some audio.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">s = </span><span class="s2">Server</span><span class="s1">.local; </span>// assign it to interpreter variable 's'</p>
-<p class="p2"><br></p>
-<p class="p3">Boot it.</p>
-<p class="p2"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p3">Create a SynthDef. A SynthDef is a description of a processing module that you want to run on the server. It can read audio from the server's audio buses, read control from the control buses and write control or audio back to buses. Here we will create a sine oscillator and send it to audio bus zero.</p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"sine"</span>, { <span class="s2">arg</span> freq=800;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> osc;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>osc = <span class="s2">SinOsc</span>.ar(freq, 0, 0.1); <span class="s7">// 800 Hz sine oscillator</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Out</span><span class="s1">.ar(0, osc); </span>// send output to audio bus zero.</p>
-<p class="p6"><span class="s1">}).writeDefFile; </span>// write the def to disk in the default directory synthdefs/</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p3">Send the SynthDef to the server.</p>
-<p class="p2"><br></p>
-<p class="p7">s.sendSynthDef(<span class="s6">"sine"</span>);</p>
-<p class="p8"><br></p>
-<p class="p3">Start the sound. The <b>/s_new</b> command creates a new Synth which is an instance of the "sine" SynthDef. Each synth running on the server needs to have a unique ID. The simplest and safest way to do this is to get an ID from the server's NodeIDAllocator. This will automatically allow IDs to be reused, and will prevent conflicts both with your own nodes, and with nodes created automatically for purposes such as visual scoping and recording. Each synth needs to be installed in a Group. We install it in group one which is the default group. There is a group zero, called the RootNode, which contains the default group, but it is generally best not to use it as doing so can result in order of execution issues with automatically created nodes such as those mentioned above. (For more detail see the <a href="../ServerArchitecture/default_group.html"><span class="s2"><b>default_group</b></span></a>, <a href="../ServerArchitecture/RootNode.html"><span class="s2"><b>RootNode</b></span></a>, and <a href="../ServerArchitecture/Order-of-execution.html"><span class="s2"><b>Order-of-execution</b></span></a> helpfiles.)</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, x = s.nextNodeID, 1, 1);</p>
-<p class="p2"><br></p>
-<p class="p3">Stop the sound.</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, x);</p>
-<p class="p8"><br></p>
-<p class="p3">Stop the server.</p>
-<p class="p8"><br></p>
-<p class="p7">s.quit;</p>
-<p class="p8"><br></p>
-<p class="p3">SynthDef has two methods which send the def automatically, load which writes it to disk, and send which sends it without writing it to disk. The latter can be useful to avoid clutter on your drive.</p>
-<p class="p2"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"sine"</span>, { <span class="s2">arg</span> freq=800;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> osc;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>osc = <span class="s2">SinOsc</span>.ar(freq, 0, 0.1); <span class="s7">// 800 Hz sine oscillator</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Out</span><span class="s1">.ar(0, osc); </span>// send output to audio bus zero.</p>
-<p class="p6"><span class="s1">}).load(s); </span>// write to disk and send</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"sine"</span>, { <span class="s2">arg</span> freq=800;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> osc;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>osc = <span class="s2">SinOsc</span>.ar(freq, 0, 0.1); <span class="s7">// 800 Hz sine oscillator</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Out</span><span class="s1">.ar(0, osc); </span>// send output to audio bus zero.</p>
-<p class="p6"><span class="s1">}).send(s); </span>// send without writing</p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p5"><b>Using Arguments</b></p>
-<p class="p9"><br></p>
-<p class="p3">It is useful to be able to specify parameters of a synth when it is created. Here a frequency argument is added to the sine SynthDef so that we can create it</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s1">s = </span><span class="s2">Server</span><span class="s1">.local; </span>// assign it to interpreter variable 's'</p>
-<p class="p2"><br></p>
-<p class="p7">s.boot;</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"sine"</span>, { arg freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> osc;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>osc = <span class="s2">SinOsc</span>.ar(freq, 0, 0.1); <span class="s7">// 800 Hz sine oscillator</span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Out</span><span class="s1">.ar(0, osc); </span>// send output to audio bus zero.</p>
-<p class="p7">}).add;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3">Play a 900 Hz sine wave.</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, x = s.nextNodeID, 1, 1, "freq", 900);</p>
-<p class="p2"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, x);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3">Play a 1000 Hz sine wave.</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, y = s.nextNodeID, 1, 1, "freq", 1000);</p>
-<p class="p2"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, y);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3">Playing three voices at once</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, x = s.nextNodeID, 1, 1, <span class="s6">"freq"</span>, 800);</p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, y = s.nextNodeID, 1, 1, <span class="s6">"freq"</span>, 1001);</p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, z = s.nextNodeID, 1, 1, <span class="s6">"freq"</span>, 1202);</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, x);</p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, y);</p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, z);</p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p3">Playing three voices at once using bundles. Bundles allow you to send multiple messages with a time stamp. The messages in the bundle will be scheduled to be performed together. The time argument to sendBundle is an offset into the future from the current thread's logical time.</p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7">s.sendBundle(0.2,</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, x = s.nextNodeID, 1, 1, <span class="s6">"freq"</span>, 800],</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, y = s.nextNodeID, 1, 1, <span class="s6">"freq"</span>, 1001],</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, z = s.nextNodeID, 1, 1, <span class="s6">"freq"</span>, 1202]);</p>
-<p class="p7">s.sendBundle(1.2, [<span class="s6">"/n_free"</span>, x],[<span class="s6">"/n_free"</span>, y],[<span class="s6">"/n_free"</span>, z]);</p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p5"><b>Controlling a Synth</b></p>
-<p class="p9"><br></p>
-<p class="p3">You can send messages to update the values of a Synth's arguments.</p>
-<p class="p2"><br></p>
-<p class="p3">Play a 900 Hz sine wave.</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, x = s.nextNodeID, 1, 1, "freq", 900);</p>
-<p class="p2"><br></p>
-<p class="p3">Change the frequency using the <b>/n_set</b> command. You send the node ID, the parameter name and the value.</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_set"</span>, x, "freq", 800);</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_set"</span>, x, "freq", 700);</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, x);</p>
-<p class="p9"><br></p>
-<p class="p5"><b>Adding an Effect Dynamically</b></p>
-<p class="p9"><br></p>
-<p class="p3">You can dynamically add and remove an effect to process another synth. In order to do this, the effect has to be added after the node to be processed.</p>
-<p class="p9"><br></p>
-<p class="p7">(</p>
-<p class="p6">// define a noise pulse</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"tish"</span>, { <span class="s2">arg</span> freq = 1200, rate = 2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> osc, trg;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trg = <span class="s2">Decay2</span>.ar(<span class="s2">Impulse</span>.ar(rate,0,0.3), 0.01, 0.3);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>osc = {<span class="s2">WhiteNoise</span>.ar(trg)}.dup;</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s2">Out</span><span class="s1">.ar(0, osc); </span>// send output to audio bus zero.</p>
-<p class="p7">}).add;</p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p7">(</p>
-<p class="p6">// define an echo effect</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"echo"</span>, { <span class="s2">arg</span> delay = 0.2, decay = 4;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> in;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(0,2);</p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span></span>// use ReplaceOut to overwrite the previous contents of the bus.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">ReplaceOut</span>.ar(0, <span class="s2">CombN</span>.ar(in, 0.5, delay, decay, 1, in));</p>
-<p class="p7">}).add;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p6">// start the pulse</p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"tish"</span>, x = s.nextNodeID, 1, 1, <span class="s5">\freq</span>, 200, <span class="s5">\rate</span>, 1.2);</p>
-<p class="p8"><br></p>
-<p class="p6">// add an effect</p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"echo"</span>, y = s.nextNodeID, 1, 1);</p>
-<p class="p8"><br></p>
-<p class="p6">// stop the effect</p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, y);</p>
-<p class="p8"><br></p>
-<p class="p6">// add an effect (time has come today.. hey!)</p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"echo"</span>, z = s.nextNodeID, 1, 1, <span class="s5">\delay</span>, 0.1, <span class="s5">\decay</span>, 4);</p>
-<p class="p8"><br></p>
-<p class="p6">// stop the effect</p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, z);</p>
-<p class="p8"><br></p>
-<p class="p6">// stop the pulse</p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, x);</p>
-<p class="p9"><br></p>
-<p class="p3">This works because we added the effect after the other node. Sometimes you will need to use groups or /n_after to insure that an effect gets added after what it is supposed to process.</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p5"><b>Mapping an Argument to a Control Bus</b></p>
-<p class="p9"><br></p>
-<p class="p7">(</p>
-<p class="p6">// define a control</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"line"</span>, { <span class="s2">arg</span> i_bus=10, i_start=1000, i_end=500, i_time=1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">ReplaceOut</span>.kr(i_bus, <span class="s2">Line</span>.kr(i_start, i_end, i_time, doneAction: 2));</p>
-<p class="p7">}).add</p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p3">Play a 900 Hz sine wave.</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"sine"</span>, x = s.nextNodeID, 1, 1, "freq", 900);</p>
-<p class="p2"><br></p>
-<p class="p3">Put a frequency value on the control bus.</p>
-<p class="p2"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/c_set"</span>, 10, x);</p>
-<p class="p2"><br></p>
-<p class="p3">Map the node's freq argument to read from control bus #10.</p>
-<p class="p2"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_map"</span>, x, <span class="s5">\freq</span>, 10);</p>
-<p class="p8"><br></p>
-<p class="p3">Change the value on the control bus.</p>
-<p class="p8"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/c_set"</span>, 10, 1200);</p>
-<p class="p8"><br></p>
-<p class="p3">Start a control process that writes to bus #10.</p>
-<p class="p3">The EnvGen doneAction will free this node automatically when it finishes.</p>
-<p class="p2"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/s_new"</span>, <span class="s6">"line"</span>, s.nextNodeID, 0, 1);</p>
-<p class="p2"><br></p>
-<p class="p3">Free the node.</p>
-<p class="p2"><br></p>
-<p class="p7">s.sendMsg(<span class="s6">"/n_free"</span>, x);</p>
-<p class="p8"><br></p>
-<p class="p9"><br></p>
-<p class="p5"><b>Sequencing with Routines</b></p>
-<p class="p9"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> space,offset,timer, saw, envsaw, sampler, delay;</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"saw"</span>,{ <span class="s2">arg</span> out=100, pan=0, trig=0.0, freq=500, amp=1, cutoff=10000, rezz=1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = Lag.kr(freq,0.1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="s2">Pan2</span>.ar(<span class="s2">RLPF</span>.ar(<span class="s2">Saw</span>.ar(<span class="s2">[freq,freq*2]</span>,amp),cutoff,rezz),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).load(s);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"envsaw"</span>,{ <span class="s2">arg</span> out=100, pan=0, sustain=0.5, freq=500, amp=1, cutoff=10000, rezz=1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.01, sustain, 0.2), doneAction:0, gate:amp);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="s2">Pan2</span>.ar(<span class="s2">RLPF</span>.ar(<span class="s2">Saw</span>.ar(<span class="s2">Lag</span>.kr(freq,0.1),env),cutoff,rezz)*amp,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).load(s);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"delay"</span>, { <span class="s2">arg</span> out=0, delay = 0.4, decay = 14;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> in;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s2">In</span>.ar(out,2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">CombN</span>.ar(in, 0.5, delay, decay, 1, in));</p>
-<p class="p7">}).load(s);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"sampler"</span>,{ <span class="s2">arg</span> sample, trig=1,rate=1.0,out=0,bufnum=0,pan=0,amp=1, sustain=0.25;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> env;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>env = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc(0.001, sustain, 0.001), doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">PlayBuf</span>.ar(1,bufnum,rate,<span class="s2">InTrig</span>.kr(trig),0,0)*amp,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).load(s);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">Tempo</span>.bpm = 120;</p>
-<p class="p7">timer=<span class="s2">BeatSched</span>.new;</p>
-<p class="p7">offset = <span class="s2">Tempo</span>.tempo.reciprocal;</p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s1">space = </span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p8"><br></p>
-<p class="p7">saw=<span class="s2">Synth</span>(<span class="s6">"saw"</span>);</p>
-<p class="p10"><span class="s1">delay=</span><span class="s2">Synth.after</span><span class="s1">(saw,</span>"delay", [\decay, 20]<span class="s1">);</span></p>
-<p class="p8"><br></p>
-<p class="p7">timer.sched(0,{</p>
-<p class="p11"><span class="Apple-tab-span">	</span>var r;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>r=Routine</span>({ <span class="s2">var</span> wait, freq, cutoff,rezz;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>wait = <span class="s2">Pseq</span>([2],<span class="s2">inf</span>).asStream;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s2">Pseq</span>([30,40,42,40],<span class="s2">inf</span>).asStream;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>cutoff = Pfunc({500.rand2+1000}).asStream;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>rezz = 0.5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">inf</span>.do({saw.set(<span class="s6">"freq"</span>, freq.next.midicps, <span class="s6">"cutoff"</span>, cutoff.next, <span class="s6">"rezz"</span>, rezz, <span class="s6">"amp"</span>, 0.1, <span class="s6">"out"</span>, 0);</p>
-<p class="p7">(wait.next*offset).wait});});</p>
-<p class="p7">timer.sched(0,r);</p>
-<p class="p7">});</p>
-<p class="p8"><br></p>
-<p class="p7">timer.sched(0,{</p>
-<p class="p11"><span class="Apple-tab-span">	</span>var r;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>r=Routine</span>({ <span class="s2">var</span> wait, rate;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>wait = <span class="s2">Pseq</span>([0.25],<span class="s2">inf</span>).asStream;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>rate = Pfunc({0.5.rand}).asStream;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">inf</span>.do({<span class="s2">Synth</span>.before(delay, <span class="s6">"sampler"</span>, [<span class="s5">\bufnum</span>, space, <span class="s5">\trig</span>, 1, <span class="s5">\amp</span>,0.1, <span class="s5">\rate</span>, <span class="s2">rate.next</span>, <span class="s5">\sustain</span>, wait.next]);</p>
-<p class="p7">(wait.next*offset).wait});});</p>
-<p class="p7">timer.sched(0,r);</p>
-<p class="p7">});</p>
-<p class="p8"><br></p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p5"><b>Sequencing with Patterns</b></p>
-<p class="p7">(</p>
-<p class="p6">//sappy emo electronica example...</p>
-<p class="p7"><span class="s2">Tempo</span>.bpm = 120;</p>
-<p class="p10"><span class="s2">SynthDef</span><span class="s1">(</span>"patternefx_Ex"<span class="s1">, { </span><span class="s2">arg</span><span class="s1"> out, in;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> audio, efx;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>audio = <span class="s2">In</span>.ar([20,21],2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>efx=<span class="s2">CombN</span>.ar(audio, 0.5, [0.24,0.4], 2, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar([0,1], audio+efx);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).load(s);</p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s2">Synth</span><span class="s1">.new(</span>"patternefx_Ex"<span class="s1">);</span></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"pattern_Ex"</span>, { <span class="s2">arg</span> out, freq = 1000, gate = 1, pan = 0, cut = 4000, rez = 0.8, amp = 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">RLPF</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pulse</span>.ar(freq,0.05),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cut, rez),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.linen(0.01, 1, 0.3), gate, amp, doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).load(s);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s6">"bass_Ex"</span>, { <span class="s2">arg</span> out, freq = 1000, gate = 1, pan = 0, cut = 4000, rez = 0.8, amp = 1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">RLPF</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq,0.05),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cut, rez),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan) * <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.linen(0.01, 1, 0.3), gate, amp, doneAction:2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).load(s);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s2">SynthDescLib</span>.global.read;</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p11">Pseq<span class="s1">([</span></p>
-<p class="p8"><br></p>
-<p class="p11">Ptpar<span class="s1">([</span></p>
-<p class="p7">0,<span class="s2">Pbind</span>(<span class="s5">\instrument</span>,<span class="s5">\pattern_Ex</span>, <span class="s5">\out</span>, 20, <span class="s5">\dur</span>,<span class="s2">Pseq</span>([2],16), <span class="s5">\root</span>,[-24,-17], <span class="s5">\degree</span>,<span class="s2">Pseq</span>([0,3,5,7,9,11,5,1],2), <span class="Apple-tab-span">	</span><span class="s5">\pan</span>,1,<span class="s5">\cut</span>,<span class="s2">Pxrand</span>([1000,500,2000,300],16), <span class="s5">\rez</span>,<span class="s2">Pfunc</span>({0.7.rand +0.3}), <span class="s5">\amp</span>,0.12),</p>
-<p class="p8"><br></p>
-<p class="p7">0.5,<span class="s2">Pbind</span>(<span class="s5">\instrument</span>,<span class="s5">\pattern_Ex</span>, <span class="s5">\out</span>, 20, <span class="s5">\dur</span>,<span class="s2">Pseq</span>([<span class="s2">Pseq</span>([2],15),1.5],1), <span class="s5">\root</span>,-12, <span class="s5">\degree</span>,<span class="s2">Pseq</span>([0,3,5,7,9,11,5,1],2), <span class="s5">\pan</span>,-1,<span class="s5">\cut</span>,2000, <span class="s5">\rez</span>,0.6, <span class="s5">\amp</span>,0.1);</p>
-<p class="p7">]),</p>
-<p class="p8"><br></p>
-<p class="p11">Ptpar<span class="s1">([</span></p>
-<p class="p7">0,<span class="s2">Pbind</span>(<span class="s5">\instrument</span>,<span class="s5">\pattern_Ex</span>, <span class="s5">\out</span>, 20, <span class="s5">\dur</span>,2, <span class="s5">\root</span>,[-24,-17], <span class="s5">\degree</span>,<span class="s2">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s2">inf</span>), <span class="Apple-tab-span">	</span><span class="s5">\pan</span>,1,<span class="s5">\cut</span>,<span class="s2">Pxrand</span>([1000,500,2000,300],<span class="s2">inf</span>), <span class="s5">\rez</span>,<span class="s2">Pfunc</span>({0.7.rand +0.3}), <span class="s5">\amp</span>,0.12),</p>
-<p class="p8"><br></p>
-<p class="p12"><span class="s1">0,</span><span class="s2">Pbind</span><span class="s1">(</span>\instrument<span class="s1">,</span>\bass_Ex<span class="s1">, </span>\dur<span class="s1">,1, </span>\root<span class="s1">,-24, </span>\degree<span class="s1">,</span><span class="s2">Pseq</span><span class="s1">([0],</span><span class="s2">inf</span><span class="s1">), </span>\pan<span class="s1">,0, </span>\cut<span class="s1">,128, </span>\rez<span class="s1">,0.1, </span>\amp<span class="s1">,0.3),</span></p>
-<p class="p8"><br></p>
-<p class="p7">0.5,<span class="s2">Pbind</span>(<span class="s5">\instrument</span>,<span class="s5">\pattern_Ex</span>, <span class="s5">\out</span>, 20, <span class="s5">\dur</span>,2, <span class="s5">\root</span>,-12, <span class="s5">\degree</span>,<span class="s2">Pseq</span>([0,3,5,7,9,11,5,1],<span class="s2">inf</span>), <span class="s5">\pan</span>,-1,<span class="s5">\cut</span>,2000, <span class="s5">\rez</span>,0.6, <span class="s5">\amp</span>,0.1);</p>
-<p class="p7">]);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">]).play;</p>
-<p class="p8"><br></p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/Tutorials/UGens-and-Synths.html b/Help/Tutorials/UGens-and-Synths.html
deleted file mode 100644
index fde9632..0000000
--- a/Help/Tutorials/UGens-and-Synths.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #a71e12}
-span.s5 {font: 9.0px Helvetica; color: #000000}
-</style>
-</head>
-<body>
-<p class="p1"><b>Unit Generators and Synths</b></p>
-<p class="p2"><br></p>
-<p class="p3">A unit generator is an object that processes or generates sound. There are many classes of unit generators, all of which derive from the class <b>UGen</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">Unit generators in SuperCollider can have many inputs, but always have a single output. Unit generator classes which would naturally have several outputs such as a panner, return an array of unit generators when instantiated. The convention of having only a single output per unit generator allows the implementation of multiple channels by using arrays of unit generators. (See <b>MultiChannel </b>for more details.)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Instantiation. Audio Rate, Control Rate</b></p>
-<p class="p2"><br></p>
-<p class="p3">A unit generator is created by sending the 'ar' or 'kr' message to the unit generator's class object. The 'ar' message creates a unit generator that runs at audio rate. The 'kr' message creates a unit generator that runs<span class="Apple-converted-space"> </span></p>
-<p class="p3">at control rate. Control rate unit generators are used for low frequency or slowly changing control signals. Control rate unit generators produce only a single sample per control cycle and therefore use less processing power than audio rate unit generators.</p>
-<p class="p2"><br></p>
-<p class="p3">The input parameters for a unit generator are given in the documentation for that class.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">FSinOsc</span><span class="s2">.ar(800, 0.0, 0.2); </span>// create a sine oscillator at 800 Hz, phase 0.0, amplitude 0.2</p>
-<p class="p2"><br></p>
-<p class="p3">A unit generator's signal inputs can be other unit generators, scalars, or arrays of unit generators and scalars.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>SynthDefs and Synths</b></p>
-<p class="p2"><br></p>
-<p class="p3">In order to play a unit generator one needs to compile it in a <b>SynthDef</b> and play it on the server in a <b>Synth</b>. A synth node is a container for one or more unit generators that execute together. A SynthDef is like a kind of pattern for creating synth nodes on the server.</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s2">s.boot; </span>// boot the local server</p>
-<p class="p7"><br></p>
-<p class="p5">// compile and send this def</p>
-<p class="p8"><span class="s1">SynthDef</span>.new(<span class="s3">"FSinOsc-test"</span>, { <span class="s1">Out</span>.ar(0, <span class="s1">FSinOsc</span>.ar(800, 0, 0.2)) }).send(s); <span class="s4">// out channel 0</span></p>
-<p class="p9"><br></p>
-<p class="p5">// now create a Synth object which represents a synth node on the server</p>
-<p class="p10"><span class="s2">x = </span><span class="s1">Synth</span><span class="s2">.new(</span>"FSinOsc-test"<span class="s2">);</span></p>
-<p class="p7"><br></p>
-<p class="p5">// free the synth</p>
-<p class="p8">x.free;</p>
-<p class="p9"><br></p>
-<p class="p3">The synth node created above could also be created using 'messaging style', thus saving the overhead of a clientside Synth object:</p>
-<p class="p9"><br></p>
-<p class="p8">n = s.nextNodeID;</p>
-<p class="p10"><span class="s2">s.sendMsg(</span>"/s_new"<span class="s2">, </span>"FSinOsc-test"<span class="s2">, n);</span></p>
-<p class="p8">s.sendMsg(<span class="s3">"/n_free"</span>, n);</p>
-<p class="p2"><br></p>
-<p class="p3">Because any expression returns its value, we can nest the first two lines above for convenience. (See <b>Expression-Sequence</b> for more detail.)</p>
-<p class="p2"><br></p>
-<p class="p8">s.sendMsg(<span class="s3">"/s_new"</span>, <span class="s3">"FSinOsc-test"</span>, n = s.nextNodeID;);</p>
-<p class="p8">s.sendMsg(<span class="s3">"/n_free"</span>, n);</p>
-<p class="p2"><br></p>
-<p class="p3">It is VERY important and useful to understand the messaging structure which underlies the clientside Synth, Group, Buffer, and Bus objects. See <b>NodeMessaging</b>,<b> Tutorial</b>, and <b>ClientVsServer</b> for more detail.</p>
-<p class="p2"><br></p>
-<p class="p3">As a convenience the 'play' method of class <b>Function</b> will compile a SynthDef and create and play a synth using the function for you. With this method an <b>Out</b> ugen will be created for you if you do not do so explicitly.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s5">{ </span><span class="s1">FSinOsc</span><span class="s2">.ar(800, 0, 0.2) }.play; </span>// create and play a sine oscillator at 800 Hz</p>
-<p class="p9"><br></p>
-<p class="p4"><b>Building Patches</b></p>
-<p class="p2"><br></p>
-<p class="p3">You can do math operations on unit generators and the result will be another unit generator. Doing math on unit generators is not doing any signal calculation itself - it is building the network of unit generators that will execute once they are played in a Synth. This is the essential thing to understand: Synthesis networks, or in other words signal flow graphs are created by executing expressions of unit generators. The following expression creates a flow graph whose root is an instance of <b>BinaryOpUGen</b> which performs the '+' operation. Its inputs are the <b>FSinOsc</b> and <b>BrownNoise</b> unit generators.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">FSinOsc</span><span class="s2">.ar(800, 0.0, 0.2) + </span><span class="s1">BrownNoise</span><span class="s2">.ar(0.2); </span>// press enter and look at the post window</p>
-<p class="p9"><br></p>
-<p class="p8">{<span class="s1">FSinOsc</span>.ar(800, 0.0, 0.2) + <span class="s1">BrownNoise</span>.ar(0.2)}.play; <span class="s4">// play it</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Algebraic/BasicOpUGen.html b/Help/UGens/Algebraic/BasicOpUGen.html
deleted file mode 100644
index 4d76846..0000000
--- a/Help/UGens/Algebraic/BasicOpUGen.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BasicOpUgen</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>common superclass to operations on UGen</p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>operator<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns the operator</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span>see <a href="UnaryOpUGen.html">UnaryOpUGen</a>, <a href="BinaryOpUGen.html">BinaryOpUGen</a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Algebraic/BinaryOpUGen.html b/Help/UGens/Algebraic/BinaryOpUGen.html
deleted file mode 100644
index 0331403..0000000
--- a/Help/UGens/Algebraic/BinaryOpUGen.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #0024f8}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0000ff}
-span.s7 {color: #ad140d}
-span.s8 {color: #606060}
-span.s9 {color: #8b2719}
-span.s10 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BinaryOpUgen</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>apply a binary operation to the values of an input ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">BinaryOpUGens are created as the result of a binary operator applied to a UGen.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>(<span class="s2">SinOsc</span>.ar(200) * <span class="s2">ClipNoise</span>.ar).dump;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>(<span class="s2">SinOsc</span>.ar(200).thresh(0.5)).dump;</p>
-<p class="p2"><br></p>
-<p class="p1">The use of the binary operators <b>*</b> and <b>thresh</b> above each instantiate a BinaryOpUGen. The operators themselves<span class="Apple-converted-space">  </span>(which are methods) are not to be confused with the resulting BinaryOpUGen (which is an object).<span class="Apple-converted-space"> </span></p>
-<p class="p1">When operating on UGens instead of numbers, what results is not a result of the calculation, but a structure that represents that calculation. For the immediate operations on numbers, see for example <a href="../../Math/SimpleNumber.html"><span class="s3">SimpleNumber</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">There are helpfiles for each the different operators, listed below. Examples for unary operations on UGens are to be found in UGen's superclass <a href="../../Core/Kernel/AbstractFunction.html"><span class="s3">AbstractFunction</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">The following operators have their own helpfiles:</p>
-<p class="p2"><br></p>
-<p class="p4"><a href="../../BinaryOps/addition.html"><b>+</b></a><span class="s4"><b> </b><a href="../../BinaryOps/subtraction.html"><b>-</b></a><b> </b><a href="../../BinaryOps/multiplication.html"><b>*</b></a><b> </b><a href="../../BinaryOps/division.html"><b>/</b></a><b> </b><a href="../../BinaryOps/exponentiation.html"><b>**</b></a><b> </b><a href="../../BinaryOps/absdif.html"><b>absdif</b></a><b> </b><a href="../../BinaryOps/amclip.html"><b>amclip</b></a><b> </b><a href="../../BinaryOps/atan2.html"><b>atan2</b></a><b> </b><a href="../../BinaryOps/clip2.html"><b>clip2</b></a><b> </b><a href="../../BinaryOps/difsqr.html"><b>difsqr</b></a><b> </b><a href="../../BinaryOps/excess.html"><b>excess</b></a><b> </b><a href="../../BinaryOps/fold2.html"><b>fold2</b></a><b> </b><a href="../../BinaryOps/hypot.html"><b>hypot</b></a><b> </b><a href="../../BinaryOps/hypotApx.html"><b>hypotApx</b></a><b> </b><a href="../../BinaryOps/max.html"><b>max</b></a><b> </b><a href="../../BinaryOps/min.html"><b>min</b></a><b> </b><a href="../../BinaryOps/ring1.html"><b>ring1</b></a><b> </b><a href="../../BinaryOps/ring2.html"><b>ring2</b></a><b> </b><a href="../../BinaryOps/ring3.html"><b>ring3</b></a><b> </b><a href="../../BinaryOps/ring4.html"><b>ring4</b></a><b> </b><a href="../../BinaryOps/round.html"><b>round</b></a><b> </b><a href="../../BinaryOps/scaleneg.html"><b>scaleneg</b></a><b> </b><a href="../../BinaryOps/sqrdif.html"><b>sqrdif</b></a><b> </b><a href="../../BinaryOps/sqrsum.html"><b>sqrsum</b></a><b> </b><a href="../../BinaryOps/sumsqr.html"><b>sumsqr</b></a><b> </b><a href="../../BinaryOps/thresh.html"><b>thresh</b></a><b> </b><a href="../../BinaryOps/trunc.html"><b>trunc</b></a><b> </b><a href="../../BinaryOps/wrap2.html"><b>wrap2</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(selector, a, b)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return a new instance that applies the operator (<b>selector</b>)<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>to the ugens (<b>a and b</b>)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>normally, this is implicitly called when applying a unary operator to a UGen.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><b>See also:</b> <a href="UnaryOpUGen.html"><span class="s5">UnaryOpUGen</span></a></span></p>
-<p class="p1"><b>Structually related:</b> <a href="../../Core/BinaryOpFunction.html"><span class="s6">BinaryOpFunction</span></a>, <a href="../../Streams-Patterns-Events/Patterns/Pbinop.html"><span class="s6">Pbinop</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Examples</b></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>a = </span><span class="s2">WhiteNoise</span><span class="s4">.ar; </span>// a WhiteNoise</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>b = a + 2; </span>// a BinaryOpUGen.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>b.operator; <span class="s7">// +</span></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>// sound example</p>
-<p class="p3"><span class="Apple-tab-span">	</span>(</p>
-<p class="p3"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> a = <span class="s2">LFSaw</span>.ar(300);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> b = <span class="s2">LFSaw</span>.ar(329.1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a % b * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)<span class="s7"><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>The comparison operators</b></p>
-<p class="p2"><br></p>
-<p class="p1">The operators >, >=, <, and <= are particularly useful for triggering. They should not be confused with their use in conditionals. Compare</p>
-<p class="p9"><br></p>
-<p class="p3">if(1 > 0) { <span class="s8">"1 is greater than 0"</span>.postln }; <span class="s9">// > returns a boolean</span></p>
-<p class="p9"><br></p>
-<p class="p1">with</p>
-<p class="p9"><br></p>
-<p class="p7">// trigger an envelope</p>
-<p class="p3">(</p>
-<p class="p3">{</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>trig = <span class="s2">SinOsc</span>.ar(1) > 0.1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.perc, trig, doneAction: 0) * <span class="s2">SinOsc</span>.ar(440,0,0.1)</p>
-<p class="p3">}.play</p>
-<p class="p7"><span class="s4">) </span>// > outputs 0 or 1</p>
-<p class="p9"><br></p>
-<p class="p1">See the individual helpfiles ( <a href="../../BinaryOps/greaterthan.html"><span class="s3">></span></a>, <a href="../../BinaryOps/greaterorequalthan.html"><span class="s3">>=</span></a>, <a href="../../BinaryOps/lessthan.html"><span class="s3"><</span></a>, <a href="../../BinaryOps/lessorequalthan.html"><span class="s3"><=</span></a><span class="s3"> </span>) for more detail.</p>
-<p class="p6"><br></p>
-<p class="p1">Since the equality operator (<b>==</b>) is used to distingush objects including UGens, it cannot be used to create a BinaryOpUGen by application. Instead, to get a trigger value each time two signals are the same (instead of just finding out whether two UGens are the same), one can instantiate a BinaryOpUGen directly:</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>(</p>
-<p class="p3"><span class="Apple-tab-span">	</span>{</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> a = <span class="s2">SinOsc</span>.ar(1).round(0.1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> b = <span class="s2">SinOsc</span>.ar(1.2).round(0.1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">BinaryOpUGen</span>(<span class="s10">'=='</span>, a, b) * 0.1</p>
-<p class="p3"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Algebraic/UnaryOpUGen.html b/Help/UGens/Algebraic/UnaryOpUGen.html
deleted file mode 100644
index 609cd9c..0000000
--- a/Help/UGens/Algebraic/UnaryOpUGen.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {text-decoration: underline}
-span.s7 {color: #0000bf}
-span.s8 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>UnaryOpUGen</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>apply a unary operation to the values of an input ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">UnaryOpUGens are created as the result of a unary operator applied to a <a href="../UGen.html"><span class="s2">UGen</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>(<span class="s3">SinOsc</span>.ar(200).abs).dump;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>(<span class="s3">LFSaw</span>.ar(200).sin).dump;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">As in the examples given here, you don't usually need to instantiate UnaryOpUGen youself.<span class="Apple-converted-space"> </span></p>
-<p class="p1">Examples for unary operations on UGens are to be found in UGen's superclass <a href="../../Core/Kernel/AbstractFunction.html"><span class="s4">AbstractFunction</span></a>. They include: <a href="../../UnaryOps/neg.html"><span class="s2"><b>neg</b></span></a><b>, </b><a href="../../UnaryOps/abs.html"><span class="s2"><b>abs</b></span></a><b>, </b><a href="../../UnaryOps/ceil.html"><span class="s2"><b>ceil</b></span></a><b>, </b><a href="../../UnaryOps/floor.html"><span class="s2"><b>floor</b></span></a><b>, </b><a href="../../UnaryOps/frac.html"><span class="s2"><b>frac</b></span></a><b>, </b><a href="../../UnaryOps/squared.html"><span class="s2"><b>squared</b></span></a><b>, </b><a href="../../UnaryOps/cubed.html"><span class="s2"><b>cubed</b></span></a><b>, </b><a href="../../UnaryOps/sqrt.html"><span class="s2"><b>sqrt</b></span></a><b>, </b><a href="../../UnaryOps/exp.html"><span class="s2"><b>exp</b></span></a><b>, </b><a href="../../UnaryOps/log.html"><span class="s2"><b>log</b></span></a><b>, </b><a href="../../UnaryOps/log2.html"><span class="s2"><b>log2</b></span></a><b>, </b><a href="../../UnaryOps/log10.html"><span class="s2"><b>log10</b></span></a><b>, </b><a href="../../UnaryOps/sin.html"><span class="s2"><b>sin</b></span></a><b>, </b><a href="../../UnaryOps/cos.html"><span class="s2"><b>cos</b></span></a><b>, scurve, </b><a href="../../UnaryOps/distort.html"><span class="s2"><b>distort</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(selector, a)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return a new instance that applies the operator (<b>selector</b>) to the ugen (<b>a</b>)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s5"><b>See also:</b> <a href="BinaryOpUGen.html"><span class="s6">BinaryOpUGen</span></a></span></p>
-<p class="p1"><b>Structurally related:</b> <a href="../../Core/UnaryOpFunction.html"><span class="s4">UnaryOpFunction</span></a>, <a href="../../Streams-Patterns-Events/Patterns/Punop.html"><span class="s4">Punop</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Examples</b><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>a = </span><span class="s7">WhiteNoise</span><span class="s5">.ar; </span>// a WhiteNoise</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>b = a.squared; </span>// a UnaryOpUGen.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>b.operator; <span class="s8">// squared</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// sound example</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s7">var</span> a = <span class="s7">LFSaw</span>.ar(300).range(0, 2pi); a.sin * 0.1 }.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// Plotting the "abs" unary operator (via the server):</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>{ <span class="s7">SinOsc</span>.ar(300).abs }.plot</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Analysis/Amplitude.html b/Help/UGens/Analysis/Amplitude.html
deleted file mode 100644
index 1c09f51..0000000
--- a/Help/UGens/Analysis/Amplitude.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Amplitude<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>amplitude follower</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Amplitude.kr(in, attackTime, releaseTime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Tracks the peak amplitude of a signal.</p>
-<p class="p3"><b>in</b> - input signal.</p>
-<p class="p3"><b>attackTime</b> - 60dB convergence time for following attacks.</p>
-<p class="p3"><b>releaseTime</b> - 60dB convergence time for following decays.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// use input amplitude to control SinOsc frequency</p>
-<p class="p5">{</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Amplitude<span class="s2">.kr(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Blip</span>.ar(3, 20) * <span class="s3">LFNoise1</span>.kr(0.1).range(0, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">MouseX</span>.kr(0.001, 1, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">MouseY</span>.kr(0.001, 1, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1200,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>400</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.3)</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// use input amplitude to control Pulse amplitude - use headphones to prevent feedback.</p>
-<p class="p5">{ <span class="s3">Pulse</span>.ar(90, 0.3, <span class="s3">Amplitude</span>.kr(<span class="s3">SoundIn</span>.ar(0))) }.play;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// use input amplitude to control SinOsc frequency - use headphones to prevent feedback.</p>
-<p class="p5">{</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>Amplitude<span class="s2">.kr(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SoundIn</span>.ar(0),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1200,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>400</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.3)</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Analysis/Compander.html b/Help/UGens/Analysis/Compander.html
deleted file mode 100644
index 1966ef1..0000000
--- a/Help/UGens/Analysis/Compander.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {text-decoration: underline}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Compander<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>compressor, expander, limiter, gate, ducker</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Compander.ar(in, control, thresh, slopeBelow, slopeAbove,<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clampTime, relaxTime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">General purpose (hard-knee) dynamics processor.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b>: The signal to be compressed / expanded / gated.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>control</b>: The signal whose amplitude determines the gain applied to the input signal. Often the same as in (for standard gating or compression) but should be different for ducking.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>thresh</b>: Control signal amplitude threshold, which determines the break point between slopeBelow and slopeAbove. Usually 0..1. The control signal amplitude is calculated using RMS.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>slopeBelow</b>: Slope of the amplitude curve below the threshold. If this slope > 1.0, the amplitude will drop off more quickly the softer the control signal gets; when the control signal is close to 0 amplitude, the output should be exactly zero -- hence, noise gating. Values < 1.0 are possible, but it means that a very low-level control signal will cause the input signal to be amplified, which would raise the noise floor.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>slopeAbove</b>: Same thing, but above the threshold. Values < 1.0 achieve compression (louder signals are attenuated); > 1.0, you get expansion (louder signals are made even louder). For 3:1 compression, you would use a value of 1/3 here.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>clampTime</b>: The amount of time it takes for the amplitude adjustment to kick in fully. This is usually pretty small, not much more than 10 milliseconds (the default value). I often set it as low as 2 milliseconds (0.002).</p>
-<p class="p2"><br></p>
-<p class="p3"><b>relaxTime</b>: The amount of time for the amplitude adjustment to be released. Usually a bit longer than clampTime; if both times are too short, you can get some (possibly unwanted) artifacts.</p>
-<p class="p2"><br></p>
-<p class="p3">If any of this is confusing, see <span class="s1">http://en.wikipedia.org/wiki/Audio_level_compression</span></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p5">// example signal to process</p>
-<p class="p4">play({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> z;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = <span class="s2">Decay2</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Impulse</span>.ar(8, 0,<span class="s2">LFSaw</span>.kr(0.3, 0, -0.3, 0.3)),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s2">Mix</span>.ar(<span class="s2">Pulse</span>.ar([80,81], 0.3)))</p>
-<p class="p4">})</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p5">// noise gate</p>
-<p class="p4">play({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> z;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = <span class="s2">Decay2</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Impulse</span>.ar(8, 0,<span class="s2">LFSaw</span>.kr(0.3, 0, -0.3, 0.3)),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s2">Mix</span>.ar(<span class="s2">Pulse</span>.ar([80,81], 0.3)));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Compander</span>.ar(z, z,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>thresh: <span class="s2">MouseX</span>.kr(0.1, 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slopeBelow: 10,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slopeAbove: 1,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clampTime: 0.01,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>relaxTime: 0.01</p>
-<p class="p4"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4">})</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p5">// compressor</p>
-<p class="p4">play({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> z;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = <span class="s2">Decay2</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Impulse</span>.ar(8, 0,<span class="s2">LFSaw</span>.kr(0.3, 0, -0.3, 0.3)),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s2">Mix</span>.ar(<span class="s2">Pulse</span>.ar([80,81], 0.3)));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Compander</span>.ar(z, z,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>thresh: <span class="s2">MouseX</span>.kr(0.1, 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slopeBelow: 1,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slopeAbove: 0.5,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clampTime: 0.01,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>relaxTime: 0.01</p>
-<p class="p4"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4">})</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p5">// limiter</p>
-<p class="p4">play({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> z;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = <span class="s2">Decay2</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Impulse</span>.ar(8, 0,<span class="s2">LFSaw</span>.kr(0.3, 0, -0.3, 0.3)),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s2">Mix</span>.ar(<span class="s2">Pulse</span>.ar([80,81], 0.3)));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Compander</span>.ar(z, z,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>thresh: <span class="s2">MouseX</span>.kr(0.1, 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slopeBelow: 1,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slopeAbove: 0.1,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clampTime: 0.01,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>relaxTime: 0.01</p>
-<p class="p4"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4">})</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p5">// sustainer</p>
-<p class="p4">play({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> z;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = <span class="s2">Decay2</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Impulse</span>.ar(8, 0,<span class="s2">LFSaw</span>.kr(0.3, 0, -0.3, 0.3)),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s2">Mix</span>.ar(<span class="s2">Pulse</span>.ar([80,81], 0.3)));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Compander</span>.ar(z, z,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>thresh: <span class="s2">MouseX</span>.kr(0.1, 1),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slopeBelow: 0.1,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slopeAbove: 1,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clampTime: 0.01,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>relaxTime: 0.01</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)*0.1;</p>
-<p class="p4">})</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Analysis/Pitch.html b/Help/UGens/Analysis/Pitch.html
deleted file mode 100644
index b82625b..0000000
--- a/Help/UGens/Analysis/Pitch.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {color: #4e6a26}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pitch<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>autocorrelation pitch follower</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>#freq, hasFreq = Pitch.kr(in, initFreq, minFreq, maxFreq, execFreq, maxBinsPerOctave, median, ampThreshold, peakThreshold, downSample, clar)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">This is a better pitch follower than <b>ZeroCrossing</b>, but more costly of CPU. For most purposes the default settings can be used and only <b>in</b> needs to be supplied. Pitch returns two values (via an Array of OutputProxys, see the OutputProxy help file), a <b>freq</b> which is the pitch estimate and <b>hasFreq</b>, which tells whether a pitch was found. Some vowels are still problematic, for instance a wide open mouth sound somewhere between a low pitched short <span class="s1">'a'</span><span class="Apple-converted-space">  </span>sound as in <span class="s1">'sat'</span>, and long <span class="s1">'i'</span> sound as in <span class="s1">'fire'</span>, contains enough overtone energy to confuse the algorithm.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples: (use headphones!)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">s = <span class="s2">Server</span>.local;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>"pitchFollow1"<span class="s3">,{</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> in, amp, freq, hasFreq, out;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s2">Mix</span>.new(<span class="s2">SoundIn</span>.ar([0,1]));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>amp = <span class="s2">Amplitude</span>.kr(in, 0.05, 0.05);</p>
-<p class="p5"><span class="Apple-tab-span">	</span># freq, hasFreq = <span class="s2">Pitch</span>.kr(in, ampThreshold: 0.02, median: 7);</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>//freq = Lag.kr(freq.cpsmidi.round(1).midicps, 0.05);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s2">Mix</span>.new(<span class="s2">VarSaw</span>.ar(freq * [0.5,1,2], 0, <span class="s2">LFNoise1</span>.kr(0.3,0.1,0.1), amp));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>6.do({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out = <span class="s2">AllpassN</span>.ar(out, 0.040, [0.040.rand,0.040.rand], 2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,out)</p>
-<p class="p5">}).play(s);</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>"pitchFollow2"<span class="s3">,{</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> in, amp, freq, hasFreq, out;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s2">Mix</span>.new(<span class="s2">SoundIn</span>.ar([0,1]));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>amp = <span class="s2">Amplitude</span>.kr(in, 0.05, 0.05);</p>
-<p class="p5"><span class="Apple-tab-span">	</span># freq, hasFreq = <span class="s2">Pitch</span>.kr(in, ampThreshold: 0.02, median: 7);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s2">CombC</span>.ar(<span class="s2">LPF</span>.ar(in, 1000), 0.1, (2 * freq).reciprocal, -6).distort * 0.05;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>6.do({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>out = <span class="s2">AllpassN</span>.ar(out, 0.040, [0.040.rand,0.040.rand], 2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,out);</p>
-<p class="p5">}).play(s);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>How it works:</b></p>
-<p class="p3">The pitch follower executes periodically at the rate specified by <b>execFreq </b>in cps. <b>execFreq</b> is clipped to be between <b>minFreq</b> and <b>maxFreq</b> . First it detects whether the input peak to peak amplitude is above the <b>ampThreshold</b>. If it is not then no pitch estimation is performed, <b>hasFreq</b> is set to zero and <b>freq</b> is held at its previous value. It performs an autocorrelation on the input and looks for the first peak after the peak around the lag of zero that is above <b>peakThreshold</b> times the amplitude of the peak at lag zero.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">If the <b>clar</b> argument is greater than zero (it is zero by default) then <b>hasFreq</b> is given additional detail. Rather than simply being 1 when a pitch is detected, it is a "clarity" measure in the range between zero and one. (Technically, it's the height of the autocorrelation peak normalised by the height of the zero-lag peak.) It therefore gives a kind of measure of "purity" of the pitched signal.</p>
-<p class="p2"><br></p>
-<p class="p3">Using a <b>peakThreshold</b> of one half does a pretty good job of eliminating overtones, and finding the first peak above that threshold rather than the absolute maximum peak does a good job of eliminating estimates that are actually multiple periods of the wave.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The autocorrelation is done coarsely at first using a maximum of <b>maxBinsPerOctave</b> lags until the peak is located. Then a fine resolution search is performed until the peak is found. (Note that maxBinsPerOctave does NOT affect the final pitch resolution; a fine resolution search is always performed. Setting maxBinsPerOctave larger will cause the coarse search to take longer, and setting it smaller will cause the fine search to take longer.)</p>
-<p class="p2"><br></p>
-<p class="p3">The three values around the peak are used to find a fractional lag value for the pitch. If the pitch frequency is higher than <b>maxFreq</b>, or if no peak is found above <b>minFreq</b>, then <b>hasFreq</b> is set to zero and <b>freq</b> is held at its previous value.</p>
-<p class="p2"><br></p>
-<p class="p3">It is possible to put a median filter of length <b>median</b> on the output estimation so that outliers and jitter can be eliminated. This will however add latency to the pitch estimation for new pitches, because the median filter will have to become half filled with new values before the new one becomes the median value. If median is set to one then that is equivalent to no filter, which is the default.</p>
-<p class="p2"><br></p>
-<p class="p3">When an in range peak is found, it is inserted into the median filter, a new pitch is read out of the median filter and output as <b>freq</b>, and <b>hasFreq</b> is set to one.</p>
-<p class="p2"><br></p>
-<p class="p3">It is possible to down sample the input signal by an integer factor <b>downSample </b>in order to reduce CPU overhead. This will also reduce the pitch resolution.</p>
-<p class="p2"><br></p>
-<p class="p3">Until Pitch finds a pitch for the first time, it will output <b>initFreq</b>.</p>
-<p class="p2"><br></p>
-<p class="p3">None of these settings are time variable.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Default Argument values:</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>initFreq = 440.0</p>
-<p class="p3"><span class="Apple-tab-span">	</span>minFreq = 60.0</p>
-<p class="p3"><span class="Apple-tab-span">	</span>maxFreq = 4000.0</p>
-<p class="p3"><span class="Apple-tab-span">	</span>execFreq = 100.0</p>
-<p class="p3"><span class="Apple-tab-span">	</span>maxBinsPerOctave = 16</p>
-<p class="p3"><span class="Apple-tab-span">	</span>median = 1</p>
-<p class="p3"><span class="Apple-tab-span">	</span>ampThreshold = 0.01</p>
-<p class="p3"><span class="Apple-tab-span">	</span>peakThreshold = 0.5</p>
-<p class="p3"><span class="Apple-tab-span">	</span>downSample = 1</p>
-<p class="p3"><span class="Apple-tab-span">	</span>clar = 0</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Analysis/RunningSum.html b/Help/UGens/Analysis/RunningSum.html
deleted file mode 100644
index 934afa7..0000000
--- a/Help/UGens/Analysis/RunningSum.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 21.0px Helvetica}
-span.s2 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>RunningSum<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>running sum over n frames</b></p>
-<p class="p2"><br></p>
-<p class="p1">A running sum over a user specified number of samples, useful for running RMS power windowing.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*ar(in, numsamp)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>in<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Input signal</p>
-<p class="p1"><b>numsamp</b> <span class="Apple-tab-span">	</span>How many samples to take the running sum over<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(initialisation time only, not modulatable. default: <b>40</b>)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// distorts of course - would need scaling<span class="Apple-tab-span">	</span></p>
-<p class="p5">{ <span class="s2">RunningSum</span>.ar(<span class="s2">SoundIn</span>.ar) }.play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// Running Average over x samples<span class="Apple-tab-span">	</span></p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>var</span> x = 100;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">RunningSum</span>.ar(<span class="s2">LFSaw</span>.ar, x) * (x.reciprocal)</p>
-<p class="p5"><span class="Apple-converted-space"> </span>}.play</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4">// RMS Power</p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>var</span> input, numsamp;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>input = <span class="s2">LFSaw</span>.ar;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>numsamp = 30;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(<span class="s2">RunningSum</span>.ar(input.squared, numsamp) / numsamp).sqrt</p>
-<p class="p5">}.play</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// shortcut in class</p>
-<p class="p5">{ <span class="s2">RunningSum</span>.rms(<span class="s2">SoundIn</span>.ar) }.play<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// play around</p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>var</span> input, numsamp, power;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>numsamp = 500;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>input = <span class="s2">SoundIn</span>.ar;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>power = <span class="s2">MouseX</span>.kr(0.1, 4);</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(<span class="s2">RunningSum</span>.ar(input ** power, numsamp)/numsamp) ** (power.reciprocal)</p>
-<p class="p5">}.play</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Analysis/Slope.html b/Help/UGens/Analysis/Slope.html
deleted file mode 100644
index 252cdb9..0000000
--- a/Help/UGens/Analysis/Slope.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Slope<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>slope of signal</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Slope.ar(in, mul, add)</b></p>
-<p class="p3"><b>Slope.kr(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Measures the rate of change per second of a signal.</p>
-<p class="p3">Formula implemented is:</p>
-<p class="p2"><br></p>
-<p class="p4">out[i] = (in[i] - in[i-1]) * sampling_rate</p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal to measure.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> a, b, c, scale;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>a = </span><span class="s1">LFNoise2</span><span class="s2">.ar(2000);<span class="Apple-tab-span">	</span></span>// quadratic noise</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s1">Slope</span><span class="s2">.ar(a);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// first derivative produces line segments</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>c = </span><span class="s1">Slope</span><span class="s2">.ar(b);<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// second derivative produces constant segments</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>scale = 0.0002;<span class="Apple-tab-span">	</span></span>// needed to scale back to +/- 1.0</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[a, b * scale, c * scale.squared]</p>
-<p class="p5">}.plot</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p3">For another example of Slope see<b> [hypot]</b>.</p>
-</body>
-</html>
diff --git a/Help/UGens/Analysis/ZeroCrossing.html b/Help/UGens/Analysis/ZeroCrossing.html
deleted file mode 100644
index 055ec1a..0000000
--- a/Help/UGens/Analysis/ZeroCrossing.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ZeroCrossing<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>zero crossing frequency follower</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ZeroCrossing.ar(in)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Outputs a frequency based upon the distance between interceptions of the X axis. The X intercepts are determined via linear interpolation so this gives better than just integer wavelength resolution. This is a very crude pitch follower, but can be useful in some situations.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(1, 0, 600,700), 0, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[a, <span class="s1">ZeroCrossing</span>.ar(a) * 0.0005]</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/CuspL.html b/Help/UGens/Chaos/CuspL.html
deleted file mode 100644
index 04ba823..0000000
--- a/Help/UGens/Chaos/CuspL.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 7.0px Helvetica}
-span.s3 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>CuspL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>cusp map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>CuspL.ar(freq, a, b, xi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>a, b</b> - equation variables</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><br></p>
-<p class="p1">A linear-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>x<span class="s2"><sub>n+1</sub></span> = a - b*sqrt(|x<span class="s2"><sub>n</sub></span>|)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// vary frequency</p>
-<p class="p5">{ <span class="s3">CuspL</span>.ar(<span class="s3">MouseX</span>.kr(20, <span class="s3">SampleRate</span>.ir), 1.0, 1.99) * 0.3 }.play(s);</p>
-<p class="p3"><br></p>
-<p class="p4">// mouse-controlled params</p>
-<p class="p5">{ <span class="s3">CuspL</span>.ar(<span class="s3">SampleRate</span>.ir/4, <span class="s3">MouseX</span>.kr(0.9,1.1,1), <span class="s3">MouseY</span>.kr(1.8,2,1)) * 0.3 }.play(s);</p>
-<p class="p3"><br></p>
-<p class="p4">// as a frequency control</p>
-<p class="p5">{ <span class="s3">SinOsc</span>.ar(<span class="s3">CuspL</span>.ar(<span class="s3">40</span>, <span class="s3">MouseX</span>.kr(0.9,1.1,1), <span class="s3">MouseY</span>.kr(1.8,2,1))*800+900)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/CuspN.html b/Help/UGens/Chaos/CuspN.html
deleted file mode 100644
index d9f9727..0000000
--- a/Help/UGens/Chaos/CuspN.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>CuspN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cusp map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>CuspN.ar(freq, a, b, xi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A non-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = a - b*sqrt(|x<span class="s1"><sub>n</sub></span>|)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// vary frequency</p>
-<p class="p6">{ <span class="s2">CuspN</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir), 1.0, 1.99) * 0.3 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// mouse-controlled params</p>
-<p class="p6">{ <span class="s2">CuspN</span>.ar(<span class="s2">SampleRate</span>.ir/4, <span class="s2">MouseX</span>.kr(0.9,1.1,1), <span class="s2">MouseY</span>.kr(1.8,2,1)) * 0.3 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// as a frequency control</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(<span class="s2">CuspN</span>.ar(<span class="s2">40</span>, <span class="s2">MouseX</span>.kr(0.9,1.1,1), <span class="s2">MouseY</span>.kr(1.8,2,1))*800+900)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/FBSineC.html b/Help/UGens/Chaos/FBSineC.html
deleted file mode 100644
index 88032c1..0000000
--- a/Help/UGens/Chaos/FBSineC.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FBSineC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>feedback sine with chaotic phase indexing</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>FBSineC.ar(freq, im, fb, a, c, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>im</b> - index multiplier amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>fb</b> - feedback amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>a<span class="Apple-converted-space"> </span></b> - phase multiplier amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>c</b> - phase increment amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p4"><br></p>
-<p class="p3">A cubic-interpolating sound generator based on the difference equations:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = sin(im*y<span class="s1"><sub>n</sub></span> + fb*x<span class="s1"><sub>n</sub></span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>y<span class="s1"><sub>n+1</sub></span> = (ay<span class="s1"><sub>n</sub></span> + c) % 2pi</p>
-<p class="p4"><br></p>
-<p class="p3">This uses a linear congruential function to drive the phase indexing of a sine wave.<span class="Apple-converted-space">  </span>For<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>im</b> = 1, <b>fb</b> = 0, and <b>a</b> = 1 a normal sinewave results.</p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">FBSineC</span>.ar(<span class="s2">SampleRate</span>.ir/4) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// increase feedback</p>
-<p class="p6">{ <span class="s2">FBSineC</span>.ar(<span class="s2">SampleRate</span>.ir, 1, <span class="s2">Line</span>.kr(0.01, 4, 10), 1, 0.1) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// increase phase multiplier</p>
-<p class="p6">{ <span class="s2">FBSineC</span>.ar(<span class="s2">SampleRate</span>.ir, 1, 0, <span class="s2">XLine</span>.kr(1, 2, 10), 0.1) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// modulate frequency and index multiplier</p>
-<p class="p6">{ <span class="s2">FBSineC</span>.ar(<span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4), <span class="s2">LFNoise2</span>.kr(1,16,17), 1, 1.005, 0.7) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">{ </span>FBSineC<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 32, 33),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.5),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.05, 1.05),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.3, 0.3)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/FBSineL.html b/Help/UGens/Chaos/FBSineL.html
deleted file mode 100644
index 8dd9dbf..0000000
--- a/Help/UGens/Chaos/FBSineL.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FBSineL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>feedback sine with chaotic phase indexing</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>FBSineL.ar(freq, im, fb, a, c, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>im</b> - index multiplier amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>fb</b> - feedback amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>a<span class="Apple-converted-space"> </span></b> - phase multiplier amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>c</b> - phase increment amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p4"><br></p>
-<p class="p3">A linear-interpolating sound generator based on the difference equations:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = sin(im*y<span class="s1"><sub>n</sub></span> + fb*x<span class="s1"><sub>n</sub></span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>y<span class="s1"><sub>n+1</sub></span> = (ay<span class="s1"><sub>n</sub></span> + c) % 2pi</p>
-<p class="p4"><br></p>
-<p class="p3">This uses a linear congruential function to drive the phase indexing of a sine wave.<span class="Apple-converted-space">  </span>For<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>im</b> = 1, <b>fb</b> = 0, and <b>a</b> = 1 a normal sinewave results.</p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">FBSineL</span>.ar(<span class="s2">SampleRate</span>.ir/4) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// increase feedback</p>
-<p class="p6">{ <span class="s2">FBSineL</span>.ar(<span class="s2">SampleRate</span>.ir, 1, <span class="s2">Line</span>.kr(0.01, 4, 10), 1, 0.1) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// increase phase multiplier</p>
-<p class="p6">{ <span class="s2">FBSineL</span>.ar(<span class="s2">SampleRate</span>.ir, 1, 0, <span class="s2">XLine</span>.kr(1, 2, 10), 0.1) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// modulate frequency and index multiplier</p>
-<p class="p6">{ <span class="s2">FBSineL</span>.ar(<span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4), <span class="s2">LFNoise2</span>.kr(1,16,17), 1, 1.005, 0.7) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">{ </span>FBSineL<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 32, 33),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.5),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.05, 1.05),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.3, 0.3)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/FBSineN.html b/Help/UGens/Chaos/FBSineN.html
deleted file mode 100644
index ed09fb4..0000000
--- a/Help/UGens/Chaos/FBSineN.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FBSineN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>feedback sine with chaotic phase indexing</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>FBSineN.ar(freq, im, fb, a, c, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>im</b> - index multiplier amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>fb</b> - feedback amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>a<span class="Apple-converted-space"> </span></b> - phase multiplier amount</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>c</b> - phase increment amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p4"><br></p>
-<p class="p3">A non-interpolating sound generator based on the difference equations:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = sin(im*y<span class="s1"><sub>n</sub></span> + fb*x<span class="s1"><sub>n</sub></span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>y<span class="s1"><sub>n+1</sub></span> = (ay<span class="s1"><sub>n</sub></span> + c) % 2pi</p>
-<p class="p4"><br></p>
-<p class="p3">This uses a linear congruential function to drive the phase indexing of a sine wave.<span class="Apple-converted-space">  </span>For<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>im</b> = 1, <b>fb</b> = 0, and <b>a</b> = 1 a normal sinewave results.</p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">FBSineN</span>.ar(<span class="s2">SampleRate</span>.ir/4) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// increase feedback</p>
-<p class="p6">{ <span class="s2">FBSineN</span>.ar(<span class="s2">SampleRate</span>.ir, 1, <span class="s2">Line</span>.kr(0.01, 4, 10), 1, 0.1) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// increase phase multiplier</p>
-<p class="p6">{ <span class="s2">FBSineN</span>.ar(<span class="s2">SampleRate</span>.ir, 1, 0, <span class="s2">XLine</span>.kr(1, 2, 10), 0.1) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// modulate frequency and index multiplier</p>
-<p class="p6">{ <span class="s2">FBSineN</span>.ar(<span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4), <span class="s2">LFNoise2</span>.kr(1,16,17), 1, 1.005, 0.7) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">{ </span>FBSineN<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 32, 33),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.5),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.05, 1.05),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.3, 0.3)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/GbmanL.html b/Help/UGens/Chaos/GbmanL.html
deleted file mode 100644
index 80b8021..0000000
--- a/Help/UGens/Chaos/GbmanL.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 6.0px Helvetica}
-span.s3 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>GbmanL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>gingerbreadman map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>GbmanL.ar(freq, xi, yi, mul, add)</b></p>
-<p class="p1"><b>GbmanL.kr(freq, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p3"><br></p>
-<p class="p1">A linear-interpolating sound generator based on the difference equations:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>x<span class="s2"><sub>n+1</sub></span> = 1 - y<span class="s2"><sub>n</sub></span> + |x<span class="s2"><sub>n</sub></span>|</p>
-<p class="p1"><span class="Apple-tab-span">	</span>y<span class="s2"><sub>n+1</sub></span> = x<span class="s2"><sub>n</sub></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p1">The behavior of the system is dependent only on its initial conditions and cannot</p>
-<p class="p1">be changed once it's started.</p>
-<p class="p2"><br></p>
-<p class="p1">Reference:</p>
-<p class="p1">Devaney, R. L. "The Gingerbreadman." Algorithm 3, 15-16, Jan. 1992.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// default initial params</p>
-<p class="p5">{ <span class="s3">GbmanL</span>.ar(<span class="s3">MouseX</span>.kr(20, <span class="s3">SampleRate</span>.ir)) * 0.1 }.play(s);</p>
-<p class="p3"><br></p>
-<p class="p4">// different initial params</p>
-<p class="p5">{ <span class="s3">GbmanL</span>.ar(<span class="s3">MouseX</span>.kr(20, <span class="s3">SampleRate</span>.ir), -0.7, -2.7) * 0.1 }.play(s);</p>
-<p class="p3"><br></p>
-<p class="p4">// wait for it...</p>
-<p class="p5">{ <span class="s3">GbmanL</span>.ar(<span class="s3">MouseX</span>.kr(20, <span class="s3">SampleRate</span>.ir), 1.2, 2.0002) * 0.1 }.play(s);</p>
-<p class="p3"><br></p>
-<p class="p4">// as a frequency control</p>
-<p class="p5">{ <span class="s3">SinOsc</span>.ar(<span class="s3">GbmanL</span>.ar(40)*400+500)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/GbmanN.html b/Help/UGens/Chaos/GbmanN.html
deleted file mode 100644
index 33ab055..0000000
--- a/Help/UGens/Chaos/GbmanN.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>GbmanN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gingerbreadman map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>GbmanN.ar(freq, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p4"><br></p>
-<p class="p3">A non-interpolating sound generator based on the difference equations:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = 1 - y<span class="s1"><sub>n</sub></span> + |x<span class="s1"><sub>n</sub></span>|</p>
-<p class="p3"><span class="Apple-tab-span">	</span>y<span class="s1"><sub>n+1</sub></span> = x<span class="s1"><sub>n</sub></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The behavior of the system is only dependent on its initial conditions.</p>
-<p class="p2"><br></p>
-<p class="p3">Reference:</p>
-<p class="p3">Devaney, R. L. "The Gingerbreadman." Algorithm 3, 15-16, Jan. 1992.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">GbmanN</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir)) * 0.1 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// change initial params</p>
-<p class="p6">{ <span class="s2">GbmanN</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir), -0.7, -2.7) * 0.1 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// wait for it...</p>
-<p class="p6">{ <span class="s2">GbmanN</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir), 1.2, 2.0002) * 0.1 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// as a frequency control</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(<span class="s2">GbmanN</span>.ar(40)*400+500)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/HenonC.html b/Help/UGens/Chaos/HenonC.html
deleted file mode 100644
index 92a3cee..0000000
--- a/Help/UGens/Chaos/HenonC.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>HenonC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hénon map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>HenonC.ar(freq, a, b, x0, x1, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>x0</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>x1</b> - second value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A cubic-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+2</sub></span> = 1 - ax<span class="s1"><sub>n+1</sub><sup>2</sup></span> + bx<span class="s1"><sub>n</sub></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This equation was discovered by French astronomer Michel Hénon while studying the orbits of stars</p>
-<p class="p3">in globular clusters.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">HenonC</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// mouse-control of params</p>
-<p class="p6">{ <span class="s2">HenonC</span>.ar(<span class="s2">SampleRate</span>.ir/4, <span class="s2">MouseX</span>.kr(1,1.4), <span class="s2">MouseY</span>.kr(0,0.3)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">HenonC</span>.ar(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SampleRate<span class="s3">.ir/8,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.2, 1.2),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.15, 0.15)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// as a frequency control</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(<span class="s2">HenonC</span>.ar(40, <span class="s2">MouseX</span>.kr(1,1.4), <span class="s2">MouseY</span>.kr(0,0.3))*800+900)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/HenonL.html b/Help/UGens/Chaos/HenonL.html
deleted file mode 100644
index d9b4684..0000000
--- a/Help/UGens/Chaos/HenonL.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>HenonL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hénon map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>HenonL.ar(freq, a, b, x0, x1, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>x0</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>x1</b> - second value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A linear-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+2</sub></span> = 1 - ax<span class="s1"><sub>n+1</sub><sup>2</sup></span> + bx<span class="s1"><sub>n</sub></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This equation was discovered by French astronomer Michel Hénon while studying the orbits of stars</p>
-<p class="p3">in globular clusters.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">HenonL</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// mouse-control of params</p>
-<p class="p6">{ <span class="s2">HenonL</span>.ar(<span class="s2">SampleRate</span>.ir/4, <span class="s2">MouseX</span>.kr(1,1.4), <span class="s2">MouseY</span>.kr(0,0.3)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">HenonL</span>.ar(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SampleRate<span class="s3">.ir/8,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.2, 1.2),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.15, 0.15)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// as a frequency control</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(<span class="s2">HenonL</span>.ar(40, <span class="s2">MouseX</span>.kr(1,1.4), <span class="s2">MouseY</span>.kr(0,0.3))*800+900)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/HenonN.html b/Help/UGens/Chaos/HenonN.html
deleted file mode 100644
index 09e6253..0000000
--- a/Help/UGens/Chaos/HenonN.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>HenonN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hénon map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>HenonN.ar(freq, a, b, x0, x1, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>x0</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>x1</b> - second value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A non-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+2</sub></span> = 1 - ax<span class="s1"><sub>n+1</sub><sup>2</sup></span> + bx<span class="s1"><sub>n</sub></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">This equation was discovered by French astronomer Michel Hénon while studying the orbits of stars</p>
-<p class="p3">in globular clusters.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">HenonN</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// mouse-control of params</p>
-<p class="p6">{ <span class="s2">HenonN</span>.ar(<span class="s2">SampleRate</span>.ir/4, <span class="s2">MouseX</span>.kr(1,1.4), <span class="s2">MouseY</span>.kr(0,0.3)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">HenonN</span>.ar(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SampleRate<span class="s3">.ir/8,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.2, 1.2),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 0.15, 0.15)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// as a frequency control</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(<span class="s2">HenonN</span>.ar(40, <span class="s2">MouseX</span>.kr(1,1.4), <span class="s2">MouseY</span>.kr(0,0.3))*800+900)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/LatoocarfianC.html b/Help/UGens/Chaos/LatoocarfianC.html
deleted file mode 100644
index b822b2f..0000000
--- a/Help/UGens/Chaos/LatoocarfianC.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {text-decoration: underline}
-span.s2 {font: 8.3px Helvetica}
-span.s3 {color: #0019b7}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LatoocarfianC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>latoocarfian chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LatoocarfianC.ar(freq, a, b, c, d, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b, c, d</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p2"><br></p>
-<p class="p3">A cubic-interpolating sound generator based on a function given in Clifford Pickover's<span class="Apple-converted-space"> </span></p>
-<p class="p3">book <span class="s1">Chaos In Wonderland</span>, pg 26.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The function is:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s2"><sub>n+1</sub></span> = sin(by<span class="s2"><sub>n</sub></span>) + c*sin(bx<span class="s2"><sub>n</sub></span>)</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>y<span class="s2"><sub>n+1</sub></span> = sin(ay<span class="s2"><sub>n</sub></span>) + d*sin(ax<span class="s2"><sub>n</sub></span>)</p>
-<p class="p4"><br></p>
-<p class="p3">According to Pickover, parameters <b>a</b> and <b>b</b> should be in the range from -3 to +3,</p>
-<p class="p3">and parameters <b>c</b> and <b>d</b> should be in the range from 0.5 to 1.5.</p>
-<p class="p3">The function can, depending on the parameters given, give continuous chaotic</p>
-<p class="p3">output, converge to a single value (silence)<span class="Apple-converted-space">  </span>or oscillate in a cycle (tone).</p>
-<p class="p3">This UGen is experimental and not optimized currently, so is rather hoggish of CPU.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// default initial params</p>
-<p class="p7">{ <span class="s3">LatoocarfianC</span>.ar(<span class="s3">MouseX</span>.kr(20, <span class="s3">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p5"><br></p>
-<p class="p6">// randomly modulate all params</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s4">{ </span>LatoocarfianC<span class="s4">.ar(</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>SampleRate<span class="s4">.ir/4,</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,1.5,1.5),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,1.5,1.5),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,0.5,1.5),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,0.5,1.5)</p>
-<p class="p7">) * 0.2 }.play(s);</p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/LatoocarfianL.html b/Help/UGens/Chaos/LatoocarfianL.html
deleted file mode 100644
index ad038f4..0000000
--- a/Help/UGens/Chaos/LatoocarfianL.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {text-decoration: underline}
-span.s2 {font: 8.3px Helvetica}
-span.s3 {color: #0019b7}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LatoocarfianL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>latoocarfian chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LatoocarfianL.ar(freq, a, b, c, d, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b, c, d</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p2"><br></p>
-<p class="p3">A linear-interpolating sound generator based on a function given in Clifford Pickover's<span class="Apple-converted-space"> </span></p>
-<p class="p3">book <span class="s1">Chaos In Wonderland</span>, pg 26.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The function is:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s2"><sub>n+1</sub></span> = sin(by<span class="s2"><sub>n</sub></span>) + c*sin(bx<span class="s2"><sub>n</sub></span>)</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>y<span class="s2"><sub>n+1</sub></span> = sin(ay<span class="s2"><sub>n</sub></span>) + d*sin(ax<span class="s2"><sub>n</sub></span>)</p>
-<p class="p4"><br></p>
-<p class="p3">According to Pickover, parameters <b>a</b> and <b>b</b> should be in the range from -3 to +3,</p>
-<p class="p3">and parameters <b>c</b> and <b>d</b> should be in the range from 0.5 to 1.5.</p>
-<p class="p3">The function can, depending on the parameters given, give continuous chaotic</p>
-<p class="p3">output, converge to a single value (silence)<span class="Apple-converted-space">  </span>or oscillate in a cycle (tone).</p>
-<p class="p3">This UGen is experimental and not optimized currently, so is rather hoggish of CPU.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// default initial params</p>
-<p class="p7">{ <span class="s3">LatoocarfianL</span>.ar(<span class="s3">MouseX</span>.kr(20, <span class="s3">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p5"><br></p>
-<p class="p6">// randomly modulate all params</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s4">{ </span>LatoocarfianL<span class="s4">.ar(</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>SampleRate<span class="s4">.ir/4,</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,1.5,1.5),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,1.5,1.5),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,0.5,1.5),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,0.5,1.5)</p>
-<p class="p7">) * 0.2 }.play(s);</p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/LatoocarfianN.html b/Help/UGens/Chaos/LatoocarfianN.html
deleted file mode 100644
index 7eaf4e1..0000000
--- a/Help/UGens/Chaos/LatoocarfianN.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {text-decoration: underline}
-span.s2 {font: 8.3px Helvetica}
-span.s3 {color: #0019b7}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LatoocarfianN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>latoocarfian chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LatoocarfianN.ar(freq, a, b, c, d, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b, c, d</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p2"><br></p>
-<p class="p3">A non-interpolating sound generator based on a function given in Clifford Pickover's<span class="Apple-converted-space"> </span></p>
-<p class="p3">book <span class="s1">Chaos In Wonderland</span>, pg 26.<span class="Apple-converted-space"> </span></p>
-<p class="p3">The function is:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s2"><sub>n+1</sub></span> = sin(by<span class="s2"><sub>n</sub></span>) + c*sin(bx<span class="s2"><sub>n</sub></span>)</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>y<span class="s2"><sub>n+1</sub></span> = sin(ay<span class="s2"><sub>n</sub></span>) + d*sin(ax<span class="s2"><sub>n</sub></span>)</p>
-<p class="p4"><br></p>
-<p class="p3">According to Pickover, parameters <b>a</b> and <b>b</b> should be in the range from -3 to +3,</p>
-<p class="p3">and parameters <b>c</b> and <b>d</b> should be in the range from 0.5 to 1.5.</p>
-<p class="p3">The function can, depending on the parameters given, give continuous chaotic</p>
-<p class="p3">output, converge to a single value (silence)<span class="Apple-converted-space">  </span>or oscillate in a cycle (tone).</p>
-<p class="p3">This UGen is experimental and not optimized currently, so is rather hoggish of CPU.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// default initial params</p>
-<p class="p7">{ <span class="s3">LatoocarfianN</span>.ar(<span class="s3">MouseX</span>.kr(20, <span class="s3">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p5"><br></p>
-<p class="p6">// randomly modulate all params</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s4">{ </span>LatoocarfianN<span class="s4">.ar(</span></p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span>SampleRate<span class="s4">.ir/4,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,1.5,1.5),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,1.5,1.5),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,0.5,1.5),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.kr(2,0.5,1.5)</p>
-<p class="p7">) * 0.2 }.play(s);</p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/LinCongC.html b/Help/UGens/Chaos/LinCongC.html
deleted file mode 100644
index 66fe57a..0000000
--- a/Help/UGens/Chaos/LinCongC.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LinCongC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>linear congruential chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LinCongC.ar(freq, a, c, m, xi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a</b> - multiplier amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>c</b> - increment amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>m</b> - modulus amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A cubic-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = (ax<span class="s1"><sub>n</sub></span> + c) % m</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The output signal is automatically scaled to a range of [-1, 1].</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">LinCongC</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">{ </span>LinCongC<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.5, 1.4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// as frequency control...</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p7">SinOsc<span class="s3">.ar(</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>LinCongC<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>40,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 1),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 500, 600</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p6">) * 0.4 }.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/LinCongL.html b/Help/UGens/Chaos/LinCongL.html
deleted file mode 100644
index 67d0763..0000000
--- a/Help/UGens/Chaos/LinCongL.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LinCongL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>linear congruential chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LinCongL.ar(freq, a, c, m, xi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a</b> - multiplier amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>c</b> - increment amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>m</b> - modulus amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A linear-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = (ax<span class="s1"><sub>n</sub></span> + c) % m</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The output signal is automatically scaled to a range of [-1, 1].</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">LinCongL</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">{ </span>LinCongL<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.5, 1.4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// as frequency control...</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p7">SinOsc<span class="s3">.ar(</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>LinCongL<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>40,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 1),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 500, 600</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p6">) * 0.4 }.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/LinCongN.html b/Help/UGens/Chaos/LinCongN.html
deleted file mode 100644
index ba828a8..0000000
--- a/Help/UGens/Chaos/LinCongN.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LinCongN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>linear congruential chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LinCongN.ar(freq, a, c, m, xi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a</b> - multiplier amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>c</b> - increment amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>m</b> - modulus amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A non-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = (ax<span class="s1"><sub>n</sub></span> + c) % m</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">The output signal is automatically scaled to a range of [-1, 1].</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// default initial params</p>
-<p class="p6">{ <span class="s2">LinCongN</span>.ar(<span class="s2">MouseX</span>.kr(20, <span class="s2">SampleRate</span>.ir)) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">{ </span>LinCongN<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(1, 1e4, 1e4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.5, 1.4),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// as frequency control...</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p7">SinOsc<span class="s3">.ar(</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>LinCongN<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>40,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 1),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1, 0.1, 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise2</span>.kr(0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 500, 600</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p6">) * 0.4 }.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/LorenzL.html b/Help/UGens/Chaos/LorenzL.html
deleted file mode 100644
index 8a634eb..0000000
--- a/Help/UGens/Chaos/LorenzL.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LorenzL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lorenz chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LorenzL.ar(freq, s, r, b, h, xi, yi, zi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>s, r, b </b>- equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>h</b> - integration time step</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>zi</b> - initial value of z</p>
-<p class="p4"><br></p>
-<p class="p3">A strange attractor discovered by Edward N. Lorenz while studying mathematical models of the atmosphere.</p>
-<p class="p3">The system is composed of three ordinary differential equations:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x' = s(y - x)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>y' = x(r - z) - y</p>
-<p class="p3"><span class="Apple-tab-span">	</span>z' = xy - bz</p>
-<p class="p4"><br></p>
-<p class="p3">The time step amount <b>h </b>determines the rate at which the ODE is evaluated.<span class="Apple-converted-space">  </span>Higher values will increase the</p>
-<p class="p3">rate, but cause more instability.<span class="Apple-converted-space">  </span>A safe choice is the default amount of 0.05.</p>
-<p class="p4"><br></p>
-<p class="p5">// vary frequency</p>
-<p class="p6">{ <span class="s1">LorenzL</span>.ar(<span class="s1">MouseX</span>.kr(20, <span class="s1">SampleRate</span>.ir)) * 0.3 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// randomly modulate params</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2">{ </span>LorenzL<span class="s2">.ar(</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>SampleRate<span class="s2">.ir,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">LFNoise0</span>.kr(1, 2, 10),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">LFNoise0</span>.kr(1, 20, 38),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">LFNoise0</span>.kr(1, 1.5, 2)</p>
-<p class="p6">) * 0.2 }.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// as a frequency control</p>
-<p class="p6">{ <span class="s1">SinOsc</span>.ar(<span class="s1">Lag</span>.ar(<span class="s1">LorenzL</span>.ar(<span class="s1">MouseX</span>.kr(1, 200)),3e-3)*800+900)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/QuadC.html b/Help/UGens/Chaos/QuadC.html
deleted file mode 100644
index 2074d49..0000000
--- a/Help/UGens/Chaos/QuadC.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>QuadC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>general quadratic map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>QuadC.ar(freq, a, b, c, xi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b, c</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A cubic-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = ax<span class="s1"><sub>n</sub><sup>2</sup></span> + bx<span class="s1"><sub>n</sub></span> + c</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p5">// default params</p>
-<p class="p6">{ <span class="s2">QuadC</span>.ar(<span class="s2">SampleRate</span>.ir/4) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// logistic map<span class="Apple-converted-space"> </span></p>
-<p class="p5">// equation: x1 = -r*x0^2 + r*x0</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">var</span> r;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>r = <span class="s2">MouseX</span>.kr(3.5441, 4);<span class="Apple-tab-span">	</span><span class="s3">// stable range</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">QuadC</span>.ar(<span class="s2">SampleRate</span>.ir/4, r.neg, r, 0, 0.1) * 0.4;</p>
-<p class="p6">}.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// logistic map as frequency control</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">var</span> r;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>r = <span class="s2">MouseX</span>.kr(3.5441, 4);<span class="Apple-tab-span">	</span><span class="s3">// stable range</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(<span class="s2">QuadC</span>.ar(40, r.neg, r, 0, 0.1, 800, 900)) * 0.4;</p>
-<p class="p6">}.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/QuadL.html b/Help/UGens/Chaos/QuadL.html
deleted file mode 100644
index ecad792..0000000
--- a/Help/UGens/Chaos/QuadL.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>QuadL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>general quadratic map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>QuadL.ar(freq, a, b, c, xi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b, c</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A linear-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = ax<span class="s1"><sub>n</sub><sup>2</sup></span> + bx<span class="s1"><sub>n</sub></span> + c</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p5">// default params</p>
-<p class="p6">{ <span class="s2">QuadL</span>.ar(<span class="s2">SampleRate</span>.ir/4) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// logistic map<span class="Apple-converted-space"> </span></p>
-<p class="p5">// equation: x1 = -r*x0^2 + r*x0</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">var</span> r;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>r = <span class="s2">MouseX</span>.kr(3.5441, 4);<span class="Apple-tab-span">	</span><span class="s3">// stable range</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">QuadL</span>.ar(<span class="s2">SampleRate</span>.ir/2, r.neg, r, 0, 0.1) * 0.4;</p>
-<p class="p6">}.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// logistic map as frequency control</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">var</span> r;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>r = <span class="s2">MouseX</span>.kr(3.5441, 4);<span class="Apple-tab-span">	</span><span class="s3">// stable range</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(<span class="s2">QuadL</span>.ar(40, r.neg, r, 0, 0.1, 800, 900)) * 0.4;</p>
-<p class="p6">}.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/QuadN.html b/Help/UGens/Chaos/QuadN.html
deleted file mode 100644
index 501e014..0000000
--- a/Help/UGens/Chaos/QuadN.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 8.3px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>QuadN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>general quadratic map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>QuadN.ar(freq, a, b, c, xi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>a, b, c</b> - equation variables</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p4"><br></p>
-<p class="p3">A non-interpolating sound generator based on the difference equation:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s1"><sub>n+1</sub></span> = ax<span class="s1"><sub>n</sub><sup>2</sup></span> + bx<span class="s1"><sub>n</sub></span> + c</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p5">// default params</p>
-<p class="p6">{ <span class="s2">QuadN</span>.ar(<span class="s2">SampleRate</span>.ir/4) * 0.2 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// logistic map<span class="Apple-converted-space"> </span></p>
-<p class="p5">// equation: x1 = -r*x0^2 + r*x0</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">var</span> r;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>r = <span class="s2">MouseX</span>.kr(3.5441, 4);<span class="Apple-tab-span">	</span><span class="s3">// stable range</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">QuadN</span>.ar(<span class="s2">SampleRate</span>.ir/2, r.neg, r, 0, 0.1) * 0.4;</p>
-<p class="p6">}.play(s);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// logistic map as frequency control</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s2">var</span> r;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>r = <span class="s2">MouseX</span>.kr(3.5441, 4);<span class="Apple-tab-span">	</span><span class="s3">// stable range</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(<span class="s2">QuadN</span>.ar(40, r.neg, r, 0, 0.1, 800, 900)) * 0.4;</p>
-<p class="p6">}.play(s);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/StandardL.html b/Help/UGens/Chaos/StandardL.html
deleted file mode 100644
index c2317f8..0000000
--- a/Help/UGens/Chaos/StandardL.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 7.0px Helvetica}
-span.s4 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>StandardL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>standard map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>StandardL.ar(freq, k, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>k</b> - perturbation amount</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p3"><br></p>
-<p class="p1">A linear-interpolating sound generator based on<span class="s2"> </span>the difference equations:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>x<span class="s3"><sub>n+1</sub></span> = (x<span class="s3"><sub>n</sub></span> + y<span class="s3"><sub>n+1</sub></span>) % 2pi</p>
-<p class="p1"><span class="Apple-tab-span">	</span>y<span class="s3"><sub>n+1</sub></span> = (y<span class="s3"><sub>n</sub></span> + ksin(x<span class="s3"><sub>n</sub></span>)) % 2pi</p>
-<p class="p3"><br></p>
-<p class="p1">The standard map is an area preserving map of a cylinder discovered by the plasma<span class="Apple-converted-space"> </span></p>
-<p class="p1">physicist Boris Chirikov.</p>
-<p class="p1">.</p>
-<p class="p4">// vary frequency</p>
-<p class="p5">{ <span class="s4">StandardL</span>.ar(<span class="s4">MouseX</span>.kr(20, <span class="s4">SampleRate</span>.ir)) * 0.3 }.play(s);</p>
-<p class="p3"><br></p>
-<p class="p4">// mouse-controlled param</p>
-<p class="p5">{ <span class="s4">StandardL</span>.ar(<span class="s4">SampleRate</span>.ir/2, <span class="s4">MouseX</span>.kr(0.9,4)) * 0.3 }.play(s);</p>
-<p class="p3"><br></p>
-<p class="p4">// as a frequency control</p>
-<p class="p5">{ <span class="s4">SinOsc</span>.ar(<span class="s4">StandardL</span>.ar(40, <span class="s4">MouseX</span>.kr(0.9,4))*800+900)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/Chaos/StandardN.html b/Help/UGens/Chaos/StandardN.html
deleted file mode 100644
index 197b602..0000000
--- a/Help/UGens/Chaos/StandardN.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 9.0px Monaco}
-span.s2 {font: 8.3px Helvetica}
-span.s3 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>StandardN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>standard map chaotic generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>StandardN.ar(freq, k, xi, yi, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - iteration frequency in Hertz</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>k</b> - perturbation amount</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>xi</b> - initial value of x</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>yi</b> - initial value of y</p>
-<p class="p4"><br></p>
-<p class="p3">A non-interpolating sound generator based on<span class="s1"> </span>the difference equations:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>x<span class="s2"><sub>n+1</sub></span> = (x<span class="s2"><sub>n</sub></span> + y<span class="s2"><sub>n+1</sub></span>) % 2pi</p>
-<p class="p3"><span class="Apple-tab-span">	</span>y<span class="s2"><sub>n+1</sub></span> = (y<span class="s2"><sub>n</sub></span> + ksin(x<span class="s2"><sub>n</sub></span>)) % 2pi</p>
-<p class="p4"><br></p>
-<p class="p3">The standard map is an area preserving map of a cylinder discovered by the plasma<span class="Apple-converted-space"> </span></p>
-<p class="p3">physicist Boris Chirikov.</p>
-<p class="p3">.</p>
-<p class="p5">// vary frequency</p>
-<p class="p6">{ <span class="s3">StandardN</span>.ar(<span class="s3">MouseX</span>.kr(20, <span class="s3">SampleRate</span>.ir)) * 0.3 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// mouse-controlled param</p>
-<p class="p6">{ <span class="s3">StandardN</span>.ar(<span class="s3">SampleRate</span>.ir/2, <span class="s3">MouseX</span>.kr(0.9,4)) * 0.3 }.play(s);</p>
-<p class="p4"><br></p>
-<p class="p5">// as a frequency control</p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(<span class="s3">StandardN</span>.ar(40, <span class="s3">MouseX</span>.kr(0.9,4))*800+900)*0.4 }.play(s);</p>
-</body>
-</html>
diff --git a/Help/UGens/ChaosGen.html b/Help/UGens/ChaosGen.html
deleted file mode 100644
index 664cfc7..0000000
--- a/Help/UGens/ChaosGen.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial; background-color: #f9f9f9; min-height: 15.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial; background-color: #f9f9f9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ChaosGen<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>UGens that cause chaos</b></p>
-<p class="p2"><br></p>
-<p class="p3">"ChaosGen" is an <i>abstract class</i> - in other words, a class that you do not use directly. Instead, use one of its subclasses. Various things inherit from this abstract class, including <a href="Chaos/HenonN.html"><span class="s2">HenonN</span></a>, <a href="Chaos/LinCongL.html"><span class="s2">LinCongL</span></a>, <a href="Chaos/LatoocarfianL.html"><span class="s2">LatoocarfianL</span></a>, <a href="Chaos/GbmanL.html"><span class="s2">GbmanL</span></a>, <a href="Chaos/CuspL.html"><span class="s2">CuspL</span></a>, <a href="Chaos/StandardL.html"><span class="s2">StandardL</span></a>, and more.</p>
-<p class="p2"><br></p>
-<p class="p3">These chaotic UGens generally each represent a deterministic set of equations, which can take different starting parameters. The equations define a system whose evolution over time is highly sensitive to initial conditions, and can exhibit highly intricate behaviour.</p>
-<p class="p2"><br></p>
-<p class="p3">To learn more, start here: <span class="s3">http://en.wikipedia.org/wiki/Chaos_theory</span></p>
-<p class="p2"><br></p>
-<p class="p3">To see all classes which derive from the ChaosGen class, run this line:</p>
-<p class="p4"><span class="s4">ChaosGen</span>.allSubclasses.do(<span class="s4">_</span>.postln)</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/AllpassC.html b/Help/UGens/Delays/AllpassC.html
deleted file mode 100644
index 2ef1e8b..0000000
--- a/Help/UGens/Delays/AllpassC.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000ff}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>AllpassC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>all pass delay line with cubic interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>AllpassC.ar(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>AllpassC.kr(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">All pass delay line with cubic interpolation. See also <a href="AllpassN.html"><span class="s1">AllpassN</span></a> which uses no interpolation, and <a href="AllpassL.html"><span class="s1">AllpassL</span></a> which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="BufAllpassC.html">BufAllpassC</a>.</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p2"><br></p>
-<p class="p5">// Since the allpass delay has no audible effect as a resonator on</p>
-<p class="p5">// steady state sound ...<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s3">AllpassC</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.1), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">// ...these examples add the input to the effected sound and compare variants so that you can hear</p>
-<p class="p5">// the effect of the phase comb:</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassN</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p7">}.play)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassL</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p7">}.play)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassC</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p7">}.play)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">// used as an echo - doesn't really sound different than Comb,</p>
-<p class="p5">// but it outputs the input signal immediately (inverted) and the echoes</p>
-<p class="p5">// are lower in amplitude.</p>
-<p class="p7">{ <span class="s3">AllpassC</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.2, <span class="s3">WhiteNoise</span>.ar), 0.2, 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/AllpassL.html b/Help/UGens/Delays/AllpassL.html
deleted file mode 100644
index 1aeef8c..0000000
--- a/Help/UGens/Delays/AllpassL.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000ff}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>AllpassL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>all pass delay line with linear interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>AllpassL.ar(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>AllpassL.kr(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">All pass delay line with linear interpolation. See also <a href="AllpassN.html"><span class="s1">AllpassN</span></a> which uses no interpolation, and <a href="AllpassC.html"><span class="s1">AllpassC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">See also <a href="BufAllpassL.html">BufAllpassL</a>.</span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p4"><br></p>
-<p class="p6">// Since the allpass delay has no audible effect as a resonator on</p>
-<p class="p6">// steady state sound ...<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s3">AllpassC</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.1), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">// ...these examples add the input to the effected sound and compare variants so that you can hear</p>
-<p class="p6">// the effect of the phase comb:</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassN</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p8">}.play)</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassL</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p8">}.play)</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassC</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p8">}.play)</p>
-<p class="p7"><br></p>
-<p class="p6">// used as an echo - doesn't really sound different than Comb,</p>
-<p class="p6">// but it outputs the input signal immediately (inverted) and the echoes</p>
-<p class="p6">// are lower in amplitude.</p>
-<p class="p8">{ <span class="s3">AllpassL</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.2, <span class="s3">WhiteNoise</span>.ar), 0.2, 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/AllpassN.html b/Help/UGens/Delays/AllpassN.html
deleted file mode 100644
index e3c6e12..0000000
--- a/Help/UGens/Delays/AllpassN.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000ff}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>AllpassN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>all pass delay line with no interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>AllpassN.ar(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>AllpassN.kr(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">All pass delay line with no interpolation. See also <a href="AllpassC.html"><span class="s1">AllpassC</span></a> which uses cubic interpolation, and <a href="AllpassL.html"><span class="s1">AllpassL</span></a> which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">See also <a href="BufAllpassN.html">BufAllpassN</a>.</span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p4"><br></p>
-<p class="p6">// Since the allpass delay has no audible effect as a resonator on</p>
-<p class="p6">// steady state sound ...<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s3">AllpassC</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.1), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">// ...these examples add the input to the effected sound and compare variants so that you can hear</p>
-<p class="p6">// the effect of the phase comb:</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassN</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p8">}.play)</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassL</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p8">}.play)</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z + <span class="s3">AllpassC</span>.ar(z, 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p8">}.play)</p>
-<p class="p7"><br></p>
-<p class="p6">// used as an echo - doesn't really sound different than Comb,</p>
-<p class="p6">// but it outputs the input signal immediately (inverted) and the echoes</p>
-<p class="p6">// are lower in amplitude.</p>
-<p class="p8">{ <span class="s3">AllpassN</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.2, <span class="s3">WhiteNoise</span>.ar), 0.2, 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufAllpassC.html b/Help/UGens/Delays/BufAllpassC.html
deleted file mode 100644
index 143f179..0000000
--- a/Help/UGens/Delays/BufAllpassC.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0018f7}
-span.s2 {color: #091fb1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>BufAllpassC<span class="Apple-tab-span">	</span>buffer based all pass delay line with cubic interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BufAllpassC.ar(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>BufAllpassC.kr(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">All pass delay line with cubic interpolation which uses a buffer for its internal memory. See also <a href="BufAllpassN.html"><span class="s1">BufAllpassN</span></a> which uses no interpolation, and <a href="BufAllpassL.html"><span class="s1">BufAllpassL</span></a> which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="AllpassC.html"><span class="s1">AllpassC</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>buf</b> - buffer number.</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p4"><br></p>
-<p class="p5">// allocate buffer</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p7"><br></p>
-<p class="p5">// Since the allpass delay has no audible effect as a resonator on</p>
-<p class="p5">// steady state sound ...<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufAllpassC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.1), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// ...these examples add the input to the effected sound and compare variants so that you can hear</p>
-<p class="p5">// the effect of the phase comb:</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassN</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassL</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassC</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p5">// used as an echo - doesn't really sound different than Comb,</p>
-<p class="p5">// but it outputs the input signal immediately (inverted) and the echoes</p>
-<p class="p5">// are lower in amplitude.</p>
-<p class="p6">{ <span class="s2">BufAllpassN</span>.ar(b, <span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufAllpassL.html b/Help/UGens/Delays/BufAllpassL.html
deleted file mode 100644
index 610c69a..0000000
--- a/Help/UGens/Delays/BufAllpassL.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0018f7}
-span.s2 {color: #091fb1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>BufAllpassL<span class="Apple-tab-span">	</span>buffer based all pass delay line with linear interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BufAllpassL.ar(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>BufAllpassL.kr(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">All pass delay line with linear interpolation which uses a buffer for its internal memory. See also <a href="BufAllpassN.html"><span class="s1">BufAllpassN</span></a> which uses no interpolation, and <a href="BufAllpassC.html"><span class="s1">BufAllpassC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="AllpassL.html"><span class="s1">AllpassL</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>buf</b> - buffer number.</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p4"><br></p>
-<p class="p5">// allocate buffer</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p7"><br></p>
-<p class="p5">// Since the allpass delay has no audible effect as a resonator on</p>
-<p class="p5">// steady state sound ...<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufAllpassC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.1), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// ...these examples add the input to the effected sound and compare variants so that you can hear</p>
-<p class="p5">// the effect of the phase comb:</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassN</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassL</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassC</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p5">// used as an echo - doesn't really sound different than Comb,</p>
-<p class="p5">// but it outputs the input signal immediately (inverted) and the echoes</p>
-<p class="p5">// are lower in amplitude.</p>
-<p class="p6">{ <span class="s2">BufAllpassL</span>.ar(b, <span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufAllpassN.html b/Help/UGens/Delays/BufAllpassN.html
deleted file mode 100644
index f593fd0..0000000
--- a/Help/UGens/Delays/BufAllpassN.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0018f7}
-span.s2 {color: #091fb1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>BufAllpassN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>buffer based all pass delay line with no interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BufAllpassN.ar(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>BufAllpassN.kr(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">All pass delay line with no interpolation which uses a buffer for its internal memory. See also <a href="BufAllpassC.html"><span class="s1">BufAllpassC</span></a> which uses cubic interpolation, and <a href="BufAllpassL.html"><span class="s1">BufAllpassL</span></a> which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="AllpassN.html"><span class="s1">AllpassN</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>buf</b> - buffer number.</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p4"><br></p>
-<p class="p5">// allocate buffer</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p7"><br></p>
-<p class="p5">// Since the allpass delay has no audible effect as a resonator on</p>
-<p class="p5">// steady state sound ...<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufAllpassC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.1), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// ...these examples add the input to the effected sound and compare variants so that you can hear</p>
-<p class="p5">// the effect of the phase comb:</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassN</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassL</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s2">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z + <span class="s2">BufAllpassC</span>.ar(b, z, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2)</p>
-<p class="p6">}.play)</p>
-<p class="p7"><br></p>
-<p class="p5">// used as an echo - doesn't really sound different than Comb,</p>
-<p class="p5">// but it outputs the input signal immediately (inverted) and the echoes</p>
-<p class="p5">// are lower in amplitude.</p>
-<p class="p6">{ <span class="s2">BufAllpassN</span>.ar(b, <span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufCombC.html b/Help/UGens/Delays/BufCombC.html
deleted file mode 100644
index 6a82642..0000000
--- a/Help/UGens/Delays/BufCombC.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0018f7}
-span.s2 {color: #091fb1}
-</style>
-</head>
-<body>
-<p class="p1"><b>BufCombC buffer based comb delay line with cubic interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BufCombC.ar(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>BufCombC.kr(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Comb delay line with cubic interpolation which uses a buffer for its internal memory. See also <a href="BufCombN.html"><span class="s1">BufCombN</span></a> which uses no interpolation, and <a href="BufCombL.html"><span class="s1">BufCombL</span></a> which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="CombC.html"><span class="s1">CombC</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>buf</b> - buffer number.</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p4"><br></p>
-<p class="p5">// These examples compare the variants, so that you can hear the difference in interpolation</p>
-<p class="p4"><br></p>
-<p class="p5">// allocate buffer</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p7"><br></p>
-<p class="p5">// Comb used as a resonator. The resonant fundamental is equal to<span class="Apple-converted-space"> </span></p>
-<p class="p5">// reciprocal of the delay time.</p>
-<p class="p6">{ <span class="s2">BufCombN</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufCombL</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufCombC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// with negative feedback:</p>
-<p class="p6">{ <span class="s2">BufCombN</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufCombL</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufCombC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// used as an echo.<span class="Apple-converted-space"> </span></p>
-<p class="p6">{ <span class="s2">BufCombC</span>.ar(b, <span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufCombL.html b/Help/UGens/Delays/BufCombL.html
deleted file mode 100644
index d3bcfd0..0000000
--- a/Help/UGens/Delays/BufCombL.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #0018f7}
-span.s2 {color: #0000bf}
-</style>
-</head>
-<body>
-<p class="p1"><b>BufCombL buffer based comb delay line with linear interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BufCombL.ar(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>BufCombL.kr(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Comb delay line with linear interpolation which uses a buffer for its internal memory. See also <a href="BufCombN.html"><span class="s1">BufCombN</span></a> which uses no interpolation, and <a href="BufCombC.html"><span class="s1">BufCombC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="CombL.html"><span class="s1">CombL</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>buf</b> - buffer number.</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p5"><br></p>
-<p class="p6">// These examples compare the variants, so that you can hear the difference in interpolation</p>
-<p class="p7"><br></p>
-<p class="p6">// allocate buffer</p>
-<p class="p8">b = <span class="s2">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p7"><br></p>
-<p class="p6">// Comb used as a resonator. The resonant fundamental is equal to<span class="Apple-converted-space"> </span></p>
-<p class="p6">// reciprocal of the delay time.</p>
-<p class="p8">{ <span class="s2">BufCombN</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s2">BufCombL</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s2">BufCombC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">// with negative feedback:</p>
-<p class="p8">{ <span class="s2">BufCombN</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s2">BufCombL</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s2">BufCombC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">// used as an echo.<span class="Apple-converted-space"> </span></p>
-<p class="p8">{ <span class="s2">BufCombL</span>.ar(b, <span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufCombN.html b/Help/UGens/Delays/BufCombN.html
deleted file mode 100644
index d56556a..0000000
--- a/Help/UGens/Delays/BufCombN.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0018f7}
-span.s2 {color: #091fb1}
-</style>
-</head>
-<body>
-<p class="p1"><b>BufCombN buffer based comb delay line with no interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BufCombN.ar(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>BufCombN.kr(buf, in, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Comb delay line with no interpolation which uses a buffer for its internal memory. See also <b>[BufCombL]</b> which uses linear interpolation, and <a href="BufCombC.html"><span class="s1">BufCombC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="CombN.html"><span class="s1">CombN</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>buf</b> - buffer number.</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p4"><br></p>
-<p class="p5">// These examples compare the variants, so that you can hear the difference in interpolation</p>
-<p class="p4"><br></p>
-<p class="p5">// allocate buffer</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p7"><br></p>
-<p class="p5">// Comb used as a resonator. The resonant fundamental is equal to<span class="Apple-converted-space"> </span></p>
-<p class="p5">// reciprocal of the delay time.</p>
-<p class="p6">{ <span class="s2">BufCombN</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufCombL</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufCombC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// with negative feedback:</p>
-<p class="p6">{ <span class="s2">BufCombN</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufCombL</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">BufCombC</span>.ar(b, <span class="s2">WhiteNoise</span>.ar(0.01), <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// used as an echo.<span class="Apple-converted-space"> </span></p>
-<p class="p6">{ <span class="s2">BufCombN</span>.ar(b, <span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufDelayC.html b/Help/UGens/Delays/BufDelayC.html
deleted file mode 100644
index 32ab046..0000000
--- a/Help/UGens/Delays/BufDelayC.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0042e3}
-span.s3 {color: #0026b4}
-span.s4 {color: #001bb9}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufDelayC<span class="Apple-tab-span">	</span></b></span><b>buffer based simple delay line with cubic interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BufDelayC.ar(buf, in, delaytime, mul, add)</b></p>
-<p class="p1"><b>BufDelayC.kr(buf, in, delaytime, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Simple delay line with cubic interpolation which uses a buffer for its internal memory. See also <a href="BufDelayN.html"><span class="s2">BufDelayN</span></a> which uses no interpolation, and <a href="BufDelayL.html"><span class="s2">BufDelayL</span></a> which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p3"><br></p>
-<p class="p1">See also <a href="DelayC.html"><span class="s2">DelayC</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>buf</b> - buffer number.</p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p1"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// allocate buffer</p>
-<p class="p6">b = <span class="s3">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p7">// Dust randomly triggers Decay to create an exponential<span class="Apple-converted-space"> </span></p>
-<p class="p7">// decay envelope for the WhiteNoise input source</p>
-<p class="p6">{</p>
-<p class="p6"><span class="s4">var</span> z = <span class="s4">Decay</span>.ar(<span class="s4">Dust</span>.ar(1,0.5), 0.3, <span class="s4">WhiteNoise</span>.ar);</p>
-<p class="p7"><span class="s4">BufDelayC</span><span class="s5">.ar(b, z, 0.2, 1, z); </span>// input is mixed with delay via the add input</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufDelayL.html b/Help/UGens/Delays/BufDelayL.html
deleted file mode 100644
index 773b95d..0000000
--- a/Help/UGens/Delays/BufDelayL.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002bf0}
-span.s3 {color: #001bb9}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufDelayL<span class="Apple-tab-span">	</span></b></span><b>buffer based simple delay line with linear interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BufDelayL.ar(buf, in, delaytime, mul, add)</b></p>
-<p class="p1"><b>BufDelayL.kr(buf, in, delaytime, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Simple delay line with linear interpolation which uses a buffer for its internal memory. See also <a href="BufDelayN.html"><span class="s2">BufDelayN</span></a> which uses no interpolation, and <a href="BufDelayC.html"><span class="s2">BufDelayC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>See also:</b> <a href="DelayL.html"><span class="s2">DelayL</span></a></p>
-<p class="p3"><br></p>
-<p class="p1"><b>buf</b> - buffer number.</p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p1"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// allocate buffer</p>
-<p class="p6">b = <span class="s3">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p5">// Dust randomly triggers Decay to create an exponential<span class="Apple-converted-space"> </span></p>
-<p class="p5">// decay envelope for the WhiteNoise input source</p>
-<p class="p6">{</p>
-<p class="p6">z = <span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.3, <span class="s3">WhiteNoise</span>.ar);</p>
-<p class="p5"><span class="s3">BufDelayL</span><span class="s4">.ar(b, z, 0.2, 1, z); </span>// input is mixed with delay via the add input</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/BufDelayN.html b/Help/UGens/Delays/BufDelayN.html
deleted file mode 100644
index ba6ec33..0000000
--- a/Help/UGens/Delays/BufDelayN.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #842d1c}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #842d1c; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #002bf0}
-span.s3 {color: #0029ac}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufDelayN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>buffer based simple delay line with no interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BufDelayN.ar(buf, in, delaytime, mul, add)</b></p>
-<p class="p1"><b>BufDelayN.kr(buf, in, delaytime, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Simple delay line with no interpolation which uses a buffer for its internal memory. See also <a href="BufDelayL.html"><span class="s2">BufDelayL</span></a> which uses linear interpolation, and <a href="BufDelayC.html"><span class="s2">BufDelayC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p3"><br></p>
-<p class="p1">See also <a href="DelayN.html"><span class="s2">DelayN</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>buf</b> - buffer number.</p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p1"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>Warning:</b> For reasons of efficiency, the effective 
-buffer size is limited to the previous power of two. So, if 44100 
-samples are allocated, the maximum delay would be 32768 samples.</p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// allocate buffer</p>
-<p class="p6">b = <span class="s3">Buffer</span>.alloc(s,44100,1);</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p5">// Dust randomly triggers Decay to create an exponential<span class="Apple-converted-space"> </span></p>
-<p class="p5">// decay envelope for the WhiteNoise input source</p>
-<p class="p6">{</p>
-<p class="p6">z = <span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.3, <span class="s3">WhiteNoise</span>.ar);</p>
-<p class="p5"><span class="s3">BufDelayN</span><span class="s4">.ar(b, z, 0.2, 1, z); </span>// input is mixed with delay via the add input</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/CombC.html b/Help/UGens/Delays/CombC.html
deleted file mode 100644
index 61550a3..0000000
--- a/Help/UGens/Delays/CombC.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0000ff}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>CombC<span class="Apple-tab-span">	</span>comb delay line with cubic interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>CombC.ar(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>CombC.kr(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Comb delay line with cubic interpolation. See also <a href="CombN.html"><span class="s1">CombN</span></a> which uses no interpolation, and <a href="CombL.html"><span class="s1">CombL</span></a> which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="BufCombC.html"><span class="s1">BufCombC</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p4"><br></p>
-<p class="p5">// These examples compare the variants, so that you can hear the difference in interpolation</p>
-<p class="p6"><br></p>
-<p class="p5">// Comb used as a resonator. The resonant fundamental is equal to<span class="Apple-converted-space"> </span></p>
-<p class="p5">// reciprocal of the delay time.</p>
-<p class="p7">{ <span class="s2">CombN</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">CombL</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">CombC</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p5">// with negative feedback:</p>
-<p class="p7">{ <span class="s2">CombN</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">CombL</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">CombC</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p5">// used as an echo.<span class="Apple-converted-space"> </span></p>
-<p class="p7">{ <span class="s2">CombC</span>.ar(<span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/CombL.html b/Help/UGens/Delays/CombL.html
deleted file mode 100644
index 15ccdc8..0000000
--- a/Help/UGens/Delays/CombL.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0000ff}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>CombL<span class="Apple-tab-span">	</span>comb delay line with linear interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>CombL.ar(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>CombL.kr(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Comb delay line with linear interpolation. See also <a href="CombN.html"><span class="s1">CombN</span></a> which uses no interpolation, and <a href="CombC.html"><span class="s1">CombC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="BufCombL.html"><span class="s1">BufCombL</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p4"><br></p>
-<p class="p5">// These examples compare the variants, so that you can hear the difference in interpolation</p>
-<p class="p6"><br></p>
-<p class="p5">// Comb used as a resonator. The resonant fundamental is equal to<span class="Apple-converted-space"> </span></p>
-<p class="p5">// reciprocal of the delay time.</p>
-<p class="p7">{ <span class="s2">CombN</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">CombL</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">CombC</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p5">// with negative feedback:</p>
-<p class="p7">{ <span class="s2">CombN</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">CombL</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s2">CombC</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p8"><br></p>
-<p class="p5">// used as an echo.<span class="Apple-converted-space"> </span></p>
-<p class="p7">{ <span class="s2">CombL</span>.ar(<span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/CombN.html b/Help/UGens/Delays/CombN.html
deleted file mode 100644
index df74070..0000000
--- a/Help/UGens/Delays/CombN.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0000ff}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>CombN<span class="Apple-tab-span">	</span>comb delay line with no interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>CombN.ar(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p3"><b>CombN.kr(in, maxdelaytime, delaytime, decaytime, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Comb delay line with no interpolation. See also <a href="CombL.html"><span class="s1">CombL</span></a> which uses linear interpolation, and <a href="CombC.html"><span class="s1">CombC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p4"><br></p>
-<p class="p3">See also <a href="BufCombN.html"><span class="s1">BufCombN</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. If this time is negative then the feedback</p>
-<p class="p3">coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.</p>
-<p class="p4"><br></p>
-<p class="p5">// These examples compare the variants, so that you can hear the difference in interpolation</p>
-<p class="p4"><br></p>
-<p class="p5">// Comb used as a resonator. The resonant fundamental is equal to<span class="Apple-converted-space"> </span></p>
-<p class="p5">// reciprocal of the delay time.</p>
-<p class="p6">{ <span class="s2">CombN</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">CombL</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">CombC</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// with negative feedback:</p>
-<p class="p6">{ <span class="s2">CombN</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">CombL</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s2">CombC</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.01), 0.01, <span class="s2">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// used as an echo.<span class="Apple-converted-space"> </span></p>
-<p class="p6">{ <span class="s2">CombN</span>.ar(<span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(1,0.5), 0.2, <span class="s2">WhiteNoise</span>.ar), 0.2, 0.2, 3) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/DelTapRd.htm b/Help/UGens/Delays/DelTapRd.htm
deleted file mode 100644
index 00e97b3..0000000
--- a/Help/UGens/Delays/DelTapRd.htm
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #bf0000}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DelTapWr<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>write to a buffer for a DelTapRd UGen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>phase = DelTapWr.ar(buffer, in )</b></p>
-<p class="p1"><b>phase = DelTapWr.kr(buffer, in )</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>buffer</b> - the buffer to write signal into. Max delay time is based on buffer size.</p>
-<p class="p1"><b>in</b> - the signal to write to the buffer.</p>
-<p class="p1"><b>phase - </b>DelTapWr outputs its current sample value for use in the <b>phase</b> argument in DelTapRd</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s1"><b>DelTapRd<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>tap a delay line from a DelTapWr UGen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>DelTapRd.ar(buffer, phase, delTime, interp, mul, add )</b></p>
-<p class="p1"><b>DelTapRd.kr(buffer, phase, delTime, interp, mul, add )</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>buffer</b> - buffer where DelTapWr has written signal.<span class="Apple-converted-space">  </span>Max delay time is based on buffer size.</p>
-<p class="p1"><b>phase</b> - the current phase of the DelTapWr UGen. This is the output of DelTapWr.</p>
-<p class="p1"><b>delTime</b> - A delay time in seconds.</p>
-<p class="p1"><b>interp</b> - the kind of interpolation to be used. 1 is none, 2 is linear, 4 is cubic.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4">// a Buffer for the UGens to use, one second at the current sample rate</p>
-<p class="p5">b = <span class="s2">Buffer</span>.alloc(s, s.sampleRate * 1, 1);</p>
-<p class="p6"><br></p>
-<p class="p4">// write a signal into a delay, tap it at mutiple times</p>
-<p class="p5"><span class="s2">SynthDef</span>(<span class="s3">\test</span>, {<span class="s2">arg</span> buffer;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> src, tapPhase, tap1, tap2, tap3;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>src = <span class="s2">WhiteNoise</span>.ar(0.2) * <span class="s2">Decay</span>.kr(<span class="s2">Dust</span>.kr(3), 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>tapPhase = <span class="s2">DelTapWr</span>.ar(buffer, src);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#tap1, tap2, tap3 = <span class="s2">DelTapRd</span>.ar(buffer, tapPhase,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.2, 0.27, 0.303],<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s4">// tap times</span></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></span>// no interp</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1.0, 0.4, 0.2] <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// muls for each tap</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, [src + tap2, tap1 + tap3])</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5">x = <span class="s2">Synth</span>(<span class="s3">\test</span>, [<span class="s3">\buffer</span>, b]);</p>
-<p class="p5">x.free;</p>
-<p class="p5">b.free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">// a Buffer for the UGens to use</p>
-<p class="p5">b = <span class="s2">Buffer</span>.alloc(s, 44100, 1);</p>
-<p class="p6"><br></p>
-<p class="p4">// write a signal into a delay, tap it at mutiple times</p>
-<p class="p5"><span class="s2">SynthDef</span>(<span class="s3">\write</span>, {<span class="s2">arg</span> buffer, cout;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> src, tapPhase, tap1, tap2, tap3;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>src = <span class="s2">WhiteNoise</span>.ar(0.2) * <span class="s2">Decay</span>.kr(<span class="s2">Dust</span>.kr(3), 0.7);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>tapPhase = <span class="s2">DelTapWr</span>.ar(buffer, src);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.kr(cout, tapPhase);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2">SynthDef</span>(<span class="s3">\readFilt</span>, {<span class="s2">arg</span> buffer, cin;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> phase, src, filt;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>phase = <span class="s2">In</span>.kr(cin);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>src = <span class="s2">DelTapRd</span>.ar(buffer, phase, [0.01, 0.2]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>filt = <span class="s2">BPF</span>.ar(src, 880, 0.01) * 10;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, filt);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5">c = <span class="s2">Bus</span>.control;</p>
-<p class="p6"><br></p>
-<p class="p5">x = <span class="s2">Synth</span>(<span class="s3">\write</span>, [<span class="s3">\buffer</span>, b, <span class="s3">\cout</span>, c]);</p>
-<p class="p7"><span class="s5">y = </span><span class="s2">Synth</span><span class="s5">(</span>\readFilt<span class="s5">, [</span>\buffer<span class="s5">, b, </span>\cin<span class="s5">, c]);</span></p>
-<p class="p6"><br></p>
-<p class="p5">x.free;</p>
-<p class="p5">b.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/DelTapWr.htm b/Help/UGens/Delays/DelTapWr.htm
deleted file mode 100644
index c17b1d4..0000000
--- a/Help/UGens/Delays/DelTapWr.htm
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.33">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #bf0000}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DelTapWr<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>write to a buffer for a DelTapRd UGen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>phase = DelTapWr.ar(buffer, in )</b></p>
-<p class="p1"><b>phase = DelTapWr.kr(buffer, in )</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p1"><b>buffer</b> - the buffer to write signal into. Max delay time is based on buffer size.</p>
-<p class="p1"><b>in</b> - the signal to write to the buffer.</p>
-<p class="p1"><b>phase - </b>DelTapWr outputs its current sample value for use in the <b>phase</b> argument in DelTapRd</p>
-<p class="p2"><b></b><br></p>
-<p class="p1"><span class="s1"><b>DelTapRd<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>tap a delay line from a DelTapWr UGen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>DelTapRd.ar(buffer, phase, delTime, interp, mul, add )</b></p>
-<p class="p1"><b>DelTapRd.kr(buffer, phase, delTime, interp, mul, add )</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>buffer</b> - buffer where DelTapWr has written signal.<span class="Apple-converted-space">  </span>Max delay time is based on buffer size.</p>
-<p class="p1"><b>phase</b> - the current phase of the DelTapWr UGen. This is the output of DelTapWr.</p>
-<p class="p1"><b>delTime</b> - A delay time in seconds.</p>
-<p class="p1"><b>interp</b> - the kind of interpolation to be used. 1 is none, 2 is linear, 4 is cubic.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4">// a Buffer for the UGens to use</p>
-<p class="p5">b = <span class="s2">Buffer</span>.alloc(s, 44100, 1);</p>
-<p class="p3"><br></p>
-<p class="p4">// write a signal into a delay, tap it at mutiple times</p>
-<p class="p5"><span class="s2">SynthDef</span>(<span class="s3">\test</span>, {<span class="s2">arg</span> buffer;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> src, tapPhase, tap1, tap2, tap3;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>src = <span class="s2">WhiteNoise</span>.ar(0.2) * <span class="s2">Decay</span>.kr(<span class="s2">Dust</span>.kr(3), 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>tapPhase = <span class="s2">DelTapWr</span>.ar(buffer, src);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#tap1, tap2, tap3 = <span class="s2">DelTapRd</span>.ar(buffer, tapPhase,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.2, 0.27, 0.303],<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span></span><span class="s4">// tap times</span></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></span>// no interp</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1.0, 0.4, 0.2] <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">// muls for each tap</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, [src + tap2, tap1 + tap3])</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5">x = <span class="s2">Synth</span>(<span class="s3">\test</span>, [<span class="s3">\buffer</span>, b]);</p>
-<p class="p5">x.free;</p>
-<p class="p5">b.free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">// a Buffer for the UGens to use</p>
-<p class="p7">b = <span class="s2">Buffer</span>.alloc(s, 44100, 1);</p>
-<p class="p3"><br></p>
-<p class="p4">// write a signal into a delay, tap it at mutiple times</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">\write</span>, {<span class="s2">arg</span> buffer, cout;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> src, tapPhase, tap1, tap2, tap3;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>src = <span class="s2">WhiteNoise</span>.ar(0.2) * <span class="s2">Decay</span>.kr(<span class="s2">Dust</span>.kr(3), 0.7);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>tapPhase = <span class="s2">DelTapWr</span>.ar(buffer, src);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>Out.kr(cout, tapPhase);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p7">SynthDef(\readFilt, {arg buffer, cin;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>var phase, src, filt;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>phase = In.kr(cin);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>src = DelTapRd.ar(buffer, phase, [0.01, 0.2]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>filt = BPF.ar(src, 880, 0.01) * 10;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>Out.ar(0, filt);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p7">c = Bus.control;</p>
-<p class="p3"><br></p>
-<p class="p7">x = <span class="s2">Synth</span>(<span class="s3">\write</span>, [<span class="s3">\buffer</span>, b, \cout, c]);</p>
-<p class="p7">y = Synth(\readFilt, [\buffer, b, \cin, c]);</p>
-<p class="p3"><br></p>
-<p class="p7">x.free;</p>
-<p class="p7">b.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/Delay1.html b/Help/UGens/Delays/Delay1.html
deleted file mode 100644
index ed53942..0000000
--- a/Help/UGens/Delays/Delay1.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Delay1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>single sample delay</b></p>
-<p class="p2"><br></p>
-<p class="p1">Delays the input by 1 sample.</p>
-<p class="p1"><b>Delay1.ar(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input to be delayed.</p>
-<p class="p2"><br></p>
-<p class="p1"><i>Note:</i> for audio-rate signals the delay is 1 audio frame, and for control-rate signals the delay is 1 control period.</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">plot {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> z;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = <span class="s2">Dust</span>.ar(1000);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>[z, z - </span><span class="s2">Delay1</span><span class="s3">.ar(z)] <span class="Apple-tab-span">	</span></span>// [ original, subtract delayed from original ]</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">scope {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> z = <span class="s2">LFNoise1</span>.ar(290);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>[z, </span><span class="s2">Delay1</span><span class="s3">.ar(z) > z] </span>// [original, 1 if rising, else 0]</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/Delay2.html b/Help/UGens/Delays/Delay2.html
deleted file mode 100644
index 0ff0148..0000000
--- a/Help/UGens/Delays/Delay2.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Delay2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two sample delay</b></p>
-<p class="p2"><br></p>
-<p class="p3">Delays the input by 2 samples.</p>
-<p class="p3"><b>Delay2.ar(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input to be delayed.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">plot({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> z;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s1">Dust</span>.ar(1000);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>[z, z - </span><span class="s1">Delay2</span><span class="s2">.ar(z)] <span class="Apple-tab-span">	</span></span>// [ original, subtract delayed from original ]</p>
-<p class="p5">}))</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/DelayC.html b/Help/UGens/Delays/DelayC.html
deleted file mode 100644
index 7dfe2e6..0000000
--- a/Help/UGens/Delays/DelayC.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; color: #000000; min-height: 22.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DelayC <span class="Apple-tab-span">	</span></b></span><b>simple delay line with cubic interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>DelayC.ar(in, maxdelaytime, delaytime, mul, add)</b></p>
-<p class="p1"><b>DelayC.kr(in, maxdelaytime, delaytime, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Simple delay line with cubic interpolation. See also <a href="DelayN.html"><span class="s2">DelayN</span></a> which uses no interpolation, and <a href="DelayL.html"><span class="s2">DelayL</span></a> which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p3"><br></p>
-<p class="p1">See also <a href="BufDelayC.html"><span class="s2">BufDelayC</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p1"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p1"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5">// Dust randomly triggers Decay to create an exponential<span class="Apple-converted-space"> </span></p>
-<p class="p5">// decay envelope for the WhiteNoise input source</p>
-<p class="p4">{</p>
-<p class="p4">z = <span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.3, <span class="s3">WhiteNoise</span>.ar);</p>
-<p class="p5"><span class="s3">DelayC</span><span class="s4">.ar(z, 0.2, 0.2, 1, z); </span>// input is mixed with delay via the add input</p>
-<p class="p4">}.play</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p5">// recursive application of delay.</p>
-<p class="p4">{</p>
-<p class="p4">z = <span class="s3">Decay2</span>.ar(<span class="s3">Dust</span>.ar(1, 0.5), 0.01, 0.1, <span class="s3">Saw</span>.ar(100 + [0, 1]));</p>
-<p class="p4">5.do { <span class="s3">|i|</span> z = <span class="s3">DelayC</span>.ar(<span class="s3">RLPF</span>.ar(z, <span class="s3">Rand</span>(100, 3000), 0.03), 1, 1 / (2**i), 1, z * 0.5) };</p>
-<p class="p4">z</p>
-<p class="p4">}.play</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/DelayL.html b/Help/UGens/Delays/DelayL.html
deleted file mode 100644
index 211b85b..0000000
--- a/Help/UGens/Delays/DelayL.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; color: #000000; min-height: 22.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DelayL<span class="Apple-tab-span">	</span></b></span><b>simple delay line with linear interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>DelayL.ar(in, maxdelaytime, delaytime, mul, add)</b></p>
-<p class="p1"><b>DelayL.kr(in, maxdelaytime, delaytime, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Simple delay line with linear interpolation. See also <a href="DelayN.html"><span class="s2">DelayN</span></a> which uses no interpolation, and <a href="DelayC.html"><span class="s2">DelayC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p3"><br></p>
-<p class="p1">See also <a href="BufDelayL.html"><span class="s2">BufDelayL</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p1"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p1"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5">// Dust randomly triggers Decay to create an exponential<span class="Apple-converted-space"> </span></p>
-<p class="p5">// decay envelope for the WhiteNoise input source</p>
-<p class="p4">{</p>
-<p class="p4">z = <span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.3, <span class="s3">WhiteNoise</span>.ar);</p>
-<p class="p5"><span class="s3">DelayL</span><span class="s4">.ar(z, 0.2, 0.2, 1, z); </span>// input is mixed with delay via the add input</p>
-<p class="p4">}.play</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p5">// recursive application of delay.</p>
-<p class="p4">{</p>
-<p class="p4">z = <span class="s3">Decay2</span>.ar(<span class="s3">Dust</span>.ar(1, 0.5), 0.01, 0.1, <span class="s3">Saw</span>.ar(100 + [0, 1]));</p>
-<p class="p4">5.do { <span class="s3">|i|</span> z = <span class="s3">DelayL</span>.ar(<span class="s3">RLPF</span>.ar(z, <span class="s3">Rand</span>(100, 3000), 0.03), 1, 1 / (2**i), 1, z * 0.5) };</p>
-<p class="p4">z</p>
-<p class="p4">}.play</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/DelayN.html b/Help/UGens/Delays/DelayN.html
deleted file mode 100644
index 35e3e84..0000000
--- a/Help/UGens/Delays/DelayN.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; color: #000000; min-height: 22.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DelayN</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>simple delay line with no interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>DelayN.ar(in, maxdelaytime, delaytime, mul, add)</b></p>
-<p class="p1"><b>DelayN.kr(in, maxdelaytime, delaytime, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Simple delay line with no interpolation. See also <a href="DelayL.html"><span class="s2">DelayL</span></a> which uses linear interpolation, and <a href="DelayC.html"><span class="s2">DelayC</span></a> which uses cubic interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.</p>
-<p class="p3"><br></p>
-<p class="p1">See also <a href="BufDelayN.html"><span class="s2">BufDelayN</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p1"><b>maxdelaytime</b> - the maximum delay time in seconds. used to initialize the delay buffer size.</p>
-<p class="p1"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5">// Dust randomly triggers Decay to create an exponential<span class="Apple-converted-space"> </span></p>
-<p class="p5">// decay envelope for the WhiteNoise input source</p>
-<p class="p4">{</p>
-<p class="p4">z = <span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.3, <span class="s3">WhiteNoise</span>.ar);</p>
-<p class="p5"><span class="s3">DelayN</span><span class="s4">.ar(z, 0.2, 0.2, 1, z); </span>// input is mixed with delay via the add input</p>
-<p class="p4">}.play</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p5">// recursive application of delay.</p>
-<p class="p4">{</p>
-<p class="p4">z = <span class="s3">Decay2</span>.ar(<span class="s3">Dust</span>.ar(1, 0.5), 0.01, 0.1, <span class="s3">Saw</span>.ar(100 + [0, 1]));</p>
-<p class="p4">5.do { |i| z = <span class="s3">DelayN</span>.ar(<span class="s3">RLPF</span>.ar(z, <span class="s3">Rand</span>(100, 3000), 0.03), 1, 1 / (2**i), 1, z * 0.5) };</p>
-<p class="p4">z</p>
-<p class="p4">}.play</p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/MultiTap.html b/Help/UGens/Delays/MultiTap.html
deleted file mode 100644
index f2606fd..0000000
--- a/Help/UGens/Delays/MultiTap.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #091fb1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><span class="s1"><b>MultiTap<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>multiple tap delay</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>MultiTap.ar(timesArray, levelsArray, in, mul, add, bufnum)</b></p>
-<p class="p5"><br></p>
-<p class="p4">This is a wrapper<span class="Apple-converted-space">  </span>which creates a multiple tap delay line using <b>RecordBuf</b> and <b>PlayBuf</b>.</p>
-<p class="p4"><b>timesArray </b>- a Ref to an Array of delay times in seconds.</p>
-<p class="p4"><b>levelsArray</b> - a Ref to an Array of amplitudes.</p>
-<p class="p4"><b>in</b> - the input signal.</p>
-<p class="p4"><b>bufnum</b> - the number of the buffer to use for the delay. This must be at least as long as the longest tap time.</p>
-<p class="p1"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s, s.sampleRate);</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">MultiTap</span>.ar(`[0.1, 0.2, 0.3, 0.4], `[0.1, 0.2, 0.4, 0.8],<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Decay</span>.ar(<span class="s2">Dust</span>.ar(2), 0.1, <span class="s2">PinkNoise</span>.ar), bufnum: b)</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p1"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/PingPong.html b/Help/UGens/Delays/PingPong.html
deleted file mode 100644
index 8f6300a..0000000
--- a/Help/UGens/Delays/PingPong.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #091fb1}
-span.s2 {color: #606060}
-span.s3 {color: #456c20}
-</style>
-</head>
-<body>
-<p class="p1"><b>PingPong<span class="Apple-converted-space">  </span>ping pong delay</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PingPong.ar(bufnum, inputArray, delayTime, feedback, rotate)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Bounces sound between a number of outputs ...<span class="Apple-converted-space">  </span>like a ping-pong ball.</p>
-<p class="p3">PingPong is actually a compound built upon <b>RecordBuf</b> and <b>PlayBuf</b>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>bufnum</b> - first index of a multi channel buffer .</p>
-<p class="p3"><b>inputArray</b> - an array of audio inputs, the same size as your buffer.</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds..</p>
-<p class="p3"><b>feedback</b> - feedback coefficient.</p>
-<p class="p3"><b>rotate</b> - default 1: which rotates the inputArray by one step.<span class="Apple-converted-space">  </span>(left -> right, right -> left)</p>
-<p class="p3"><span class="Apple-converted-space"> </span>rotation of 0 (or 2) would result in no rotation to the inputArray</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">s = <span class="s1">Server</span>.local;</p>
-<p class="p5">s.waitForBoot({</p>
-<p class="p4"><br></p>
-<p class="p5">b = <span class="s1">Buffer</span>.alloc(s,44100 * 2, 2);</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">"help-PingPong"</span>,{ <span class="s1">arg</span> out=0,bufnum=0,feedback=0.5,delayTime=0.2;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space"> </span><span class="s1">var</span> left, right;</p>
-<p class="p5"><span class="Apple-converted-space"> </span>left = <span class="s1">Decay2</span>.ar(<span class="s1">Impulse</span>.ar(0.7, 0.25), 0.01, 0.25,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span><span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(3.7,0,200,500)));</p>
-<p class="p5"><span class="Apple-converted-space"> </span>right = <span class="s1">Decay2</span>.ar(<span class="s1">Impulse</span>.ar(0.5, 0.25), 0.01, 0.25,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span><span class="s1">Resonz</span>.ar(<span class="s1">PinkNoise</span>.ar(4), <span class="s1">SinOsc</span>.kr(2.7,0,1000,2500), 0.2));</p>
-<p class="p4"><span class="Apple-converted-space">  </span></p>
-<p class="p5"><span class="Apple-converted-space"> </span><span class="s1">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-converted-space">  </span><span class="s1">PingPong</span>.ar(bufnum, [left,right], delayTime, feedback, 1)</p>
-<p class="p5"><span class="Apple-converted-space"> </span>)</p>
-<p class="p5">}).play(s,[<span class="s3">\out</span>, 0, <span class="s3">\bufnum</span>, b,\feedback,0.5,\delayTime,0.1]);</p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">s = <span class="s1">Server</span>.local;</p>
-<p class="p5">s.waitForBoot({</p>
-<p class="p4"><br></p>
-<p class="p5">b = <span class="s1">Buffer</span>.alloc(s,44100 * 2, 2);</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">"help-PingPong"</span>,{ <span class="s1">arg</span> out=0,bufnum=0;</p>
-<p class="p5"><span class="Apple-converted-space"> </span><span class="s1">var</span> left, right;</p>
-<p class="p5"><span class="Apple-converted-space"> </span>left = <span class="s1">Decay2</span>.ar(<span class="s1">Impulse</span>.ar(0.7, 0.25), 0.01, 0.25,</p>
-<p class="p5"><span class="Apple-converted-space">  </span><span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(3.7,0,200,500)));</p>
-<p class="p5"><span class="Apple-converted-space"> </span>right = <span class="s1">Decay2</span>.ar(<span class="s1">Impulse</span>.ar(0.5, 0.25), 0.01, 0.25,</p>
-<p class="p5"><span class="Apple-converted-space">  </span><span class="s1">Resonz</span>.ar(<span class="s1">PinkNoise</span>.ar(4), <span class="s1">SinOsc</span>.kr(2.7,0,1000,2500),</p>
-<p class="p5">0.2));</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-converted-space"> </span><span class="s1">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-converted-space">  </span><span class="s1">PingPong</span>.ar(bufnum, [left,right] *<span class="Apple-converted-space">  </span><span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>([1, 1, 0], [2, 0.1])),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">   </span>0.1, 0.8, 1)</p>
-<p class="p5"><span class="Apple-converted-space"> </span>)</p>
-<p class="p5">}).play(s,[<span class="s3">\out</span>, 0, <span class="s3">\bufnum</span>, b]);</p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/PitchShift.html b/Help/UGens/Delays/PitchShift.html
deleted file mode 100644
index 2690805..0000000
--- a/Help/UGens/Delays/PitchShift.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PitchShift</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PitchShift.ar(in, windowSize, pitchRatio, pitchDispersion, timeDispersion, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">A time domain granular pitch shifter.</p>
-<p class="p3">Grains have a triangular amplitude envelope and an overlap of 4:1.</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>windowSize</b> - the size of the grain window in seconds. This value cannot be modulated.</p>
-<p class="p3"><b>pitchRatio</b> - the ratio of the pitch shift. Must be from 0.0 to 4.0.</p>
-<p class="p3"><b>pitchDispersion</b> - the maximum random deviation of the pitch from the pitchRatio.</p>
-<p class="p3"><b>timeDispersion</b> - a random offset of from zero to timeDispersion seconds is added to the delay</p>
-<p class="p3">of each grain. Use of some dispersion can alleviate a hard comb filter effect due to uniform</p>
-<p class="p3">grain placement. It can also be an effect in itself. timeDispersion can be no larger than windowSize.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s1">Blip</span>.ar(800, 6, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">PitchShift</span>.ar(z, 0.02, <span class="s1">Line</span>.kr(0.1,4,20), 0, 0.0001)</p>
-<p class="p5">}))</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7">// pitch shift input - USE HEADPHONES to prevent feedback.</p>
-<p class="p5">play({</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>PitchShift<span class="s2">.ar(</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">SoundIn</span><span class="s2">.ar([0,1]),<span class="Apple-tab-span">	</span></span>// stereo audio input</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// grain size</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">MouseX</span><span class="s2">.kr(0,2),<span class="Apple-tab-span">	</span></span>// mouse x controls pitch shift ratio</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pitch dispersion</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.004<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// time dispersion</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}))</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7">// use PitchShift to granulate input - USE HEADPHONES to prevent feedback.</p>
-<p class="p7">// upper left corner is normal playback. x = pitch dispersion, y = time dispersion</p>
-<p class="p5"><span class="s1">var</span> grainSize;</p>
-<p class="p5">grainSize = 0.5;</p>
-<p class="p5">play({</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>PitchShift<span class="s2">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SoundIn</span>.ar([0,1]),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>grainSize,<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// nominal pitch rate = 1</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">MouseX</span><span class="s2">.kr(0,1), <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// pitch dispersion</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">MouseY</span>.kr(0, grainSize)<span class="Apple-tab-span">	</span><span class="s3">// time dispersion</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}))</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/Pluck.html b/Help/UGens/Delays/Pluck.html
deleted file mode 100755
index 61c59b4..0000000
--- a/Help/UGens/Delays/Pluck.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-  <meta http-equiv="Content-Style-Type" content="text/css">
-  <title></title>
-  <meta name="Generator" content="Cocoa HTML Writer">
-  <meta name="CocoaVersion" content="824.42">
-  <style type="text/css">
-    p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-    p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-    p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-    p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-    p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-    p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-    p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-    p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-    p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-    span.s1 {font: 18.0px Helvetica}
-    span.s2 {color: #0000bf}
-    span.Apple-tab-span {white-space:pre}
-  </style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pluck<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>a Karplus-Strong UGen</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>Pluck.ar(in, trig, maxdelaytime, delaytime, decaytime, coef, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - an excitation signal</p>
-<p class="p3"><b>trig </b>- upon a negative to positive transition, the excitation signal will be fed into the delay line</p>
-<p class="p3"><b>maxdelaytime</b> - the max delay time in seconds (initializes the internal delay buffer).</p>
-<p class="p3"><b>delaytime</b> - delay time in seconds.</p>
-<p class="p3"><b>decaytime</b> - time for the echoes to decay by 60 decibels. Negative times emphasize odd partials.</p>
-<p class="p3"><b>coef</b> - the coef of the internal OnePole filter. Values should be between -1 and +1 (larger values will</p>
-<p class="p3"><span class="Apple-tab-span">	</span>be unstable... so be careful!).</p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7">// excitation signal is WhiteNoise, triggered twice a second with varying OnePole coef</p>
-<p class="p5">(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="s2">Pluck</span>.ar(<span class="s2">WhiteNoise</span>.ar(0.1), <span class="s2">Impulse</span>.kr(2), 440.reciprocal, 440.reciprocal, 10,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>coef:<span class="s2">MouseX</span>.kr(-0.999, 0.999))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play(s)</p>
-<p class="p5">)</p>
-<p class="p5">s.quit;</p>
-<p class="p7">// a group of angry fretless mandolin players</p>
-<p class="p5">(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> freq, numparts;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numparts = 50;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s2">SinOsc</span>.kr(<span class="s2">Array</span>.fill(numparts, {<span class="s2">Rand</span>(0.05, 0.2)}),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Array</span>.fill(numparts, {<span class="s2">Rand</span>(0, 1.0)})).range(1000, 3000);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LeakDC</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pluck</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">WhiteNoise</span>.ar(0.1).dup(numparts),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Impulse</span>.kr(<span class="s2">Array</span>.fill(numparts, {<span class="s2">Rand</span>(10, 12)})),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>100.reciprocal, freq.reciprocal, 2, Rand(0.01, 0.2), mul: 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Array.fill(numparts, {<span class="s2">Rand</span>.new(-1.0, 1.0)}))</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.sum</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play(s);</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Delays/Tap.html b/Help/UGens/Delays/Tap.html
deleted file mode 100644
index 42e7b78..0000000
--- a/Help/UGens/Delays/Tap.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0522ef}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Tap<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>A single tap into a delayline</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Tap.ar(bufnum, numChannels, delaytime)</b></p>
-<p class="p2"><br></p>
-<p class="p1">The Tap UGen allows a single tap at a delay into a buffer.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>bufnum</b> - the index of the buffer to use</p>
-<p class="p1"><b>numChannels </b>- number of channels of the buffer</p>
-<p class="p1"><b>delaytime </b>- tap delay; cannot be modulated<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="../Playback and Recording/PlayBuf.html"><span class="s2">PlayBuf</span></a> (Tap uses the PlayBuf UGen internally).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// Create a buffer.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s3">b=</span><span class="s4">Buffer</span><span class="s3">.alloc(s, s.sampleRate, 1); </span>//enough space for one second of mono audio <span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">// Write to the Buffer with BufWr, read using two Taps, one for each ear!</p>
-<p class="p6">(</p>
-<p class="p7">SynthDef<span class="s3">(</span><span class="s5">\helpTap</span><span class="s3">, {</span>|bufnum|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> source, capture;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>source= </span><span class="s4">SoundIn</span><span class="s3">.ar(0); </span>//use headphones to avoid feedback</p>
-<p class="p6"><span class="Apple-tab-span">	</span>capture= <span class="s4">BufWr</span>.ar(source, bufnum, <span class="s4">Phasor</span>.ar(0,1, 0, <span class="s4">BufFrames</span>.ir(bufnum),1));</p>
-<p class="p5"><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">Out</span><span class="s3">.ar(0, </span><span class="s4">Tap</span><span class="s3">.ar(bufnum, 1, [0.1,0.9])); </span>//multichannel expansion, so one tap each ear <span class="Apple-converted-space"> </span></p>
-<p class="p6">}).send(s);<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s3">x=</span><span class="s4">Synth</span><span class="s3">(</span>\helpTap<span class="s3">,[</span>\bufnum<span class="s3">, b]);</span></p>
-<p class="p5"><br></p>
-<p class="p6">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/Convolution.html b/Help/UGens/FFT/Convolution.html
deleted file mode 100644
index d8e29b0..0000000
--- a/Help/UGens/FFT/Convolution.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0033f1}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Convolution<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>real-time convolver</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Convolution.ar(in, kernel, framesize, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Strict convolution of two continuously changing inputs. Also see [<a href="Convolution2.html"><span class="s2">Convolution2</span></a>] for a cheaper CPU cost alternative for the case of a fixed kernel which can be changed with a trigger message.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1">See Steven W Smith, The Scientist and Engineer's Guide to Digital Signal Processing:<span class="Apple-converted-space"> </span></p>
-<p class="p1">chapter 18:<span class="Apple-converted-space"> </span><span class="s3"> http:// www.dspguide.com/ch18.htm</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>in</b> - processing target</p>
-<p class="p1"><b>kernel</b> - processing kernel.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>framesize</b>- size of FFT frame, must be a power of two</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="s4">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>input = <span class="s4">SoundIn</span>.ar(0);<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>kernel = <span class="s4">Mix</span>.ar(<span class="s4">LFSaw</span>.ar([300,500,800,1000]*<span class="s4">MouseX</span>.kr(1.0,2.0),0,0.25));</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span></span>// must have power of two framesize</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">Convolution</span>.ar(input,kernel, 1024, 0.5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p5">// must have power of two framesize - FFT size will be sorted by Convolution to be double this</p>
-<p class="p5">// maximum is currently a = 8192 for FFT of size 16384</p>
-<p class="p4">a = 2048;</p>
-<p class="p5">// kernel buffer</p>
-<p class="p4">g = <span class="s4">Buffer</span>.alloc(s, a, 1);</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p5">// random impulse response</p>
-<p class="p4">g.set(0, 1.0);</p>
-<p class="p4">100.do { <span class="s4">arg</span> i; g.setn(a.rand, 1.0.rand) };</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input = <span class="s4">SoundIn</span>.ar(0);<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>kernel = <span class="s4">PlayBuf</span>.ar(1, g, <span class="s4">BufRateScale</span>.kr(g), 1, 0, 1);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4"><span class="Apple-tab-span">	</span>Convolution</span>.ar(input, kernel, a, 0.5);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/Convolution2.html b/Help/UGens/FFT/Convolution2.html
deleted file mode 100644
index 9d5e856..0000000
--- a/Help/UGens/FFT/Convolution2.html
+++ /dev/null
@@ -1,204 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d2217}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 10.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline}
-span.s3 {color: #000000}
-span.s4 {color: #0025b4}
-span.s5 {color: #0019ba}
-span.s6 {color: #2b6f11}
-span.s7 {color: #3c6d1b}
-span.s8 {color: #0000ff}
-span.s9 {color: #0000bf}
-span.s10 {color: #007300}
-span.s11 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Convolution2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>real-time convolver</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Convolution2.ar(in, kernel, trigger, framesize, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Strict convolution with fixed kernel which can be updated using a trigger signal.</p>
-<p class="p3"><br></p>
-<p class="p1">See Steven W Smith, The Scientist and Engineer's Guide to Digital Signal Processing:<span class="Apple-converted-space"> </span></p>
-<p class="p1">chapter 18: <span class="s2">http:// www.dspguide.com/ch18.htm</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>in</b> - processing target</p>
-<p class="p1"><b>kernel</b> - buffer index for the fixed kernel, may be modulated in combination with the trigger</p>
-<p class="p1"><b>trigger</b> - update the kernel on a change from < = 0 to >0</p>
-<p class="p1"><b>framesize </b>- size of FFT frame, must be a power of two. Convolution uses twice this number internally, maximum value you can give this argument is 2^16 = 65536. Note that it gets progressively more expensive to run for higher powers! 512, 1024, 2048, 4096 standard.</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s3">See also <a href="Convolution2L.html"><span class="s2">Convolution2L</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">(</span>// allocate three buffers</p>
-<p class="p6">b = <span class="s4">Buffer</span>.alloc(s, 2048);</p>
-<p class="p6">c = <span class="s4">Buffer</span>.alloc(s, 2048);</p>
-<p class="p6">d = <span class="s4">Buffer</span>.alloc(s, 2048);</p>
-<p class="p2"><br></p>
-<p class="p6">b.zero;</p>
-<p class="p6">c.zero;</p>
-<p class="p6">d.zero;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6">50.do({ <span class="s4">|it|</span> c.set(20*it+10, 1.0.rand); });</p>
-<p class="p6">3.do({ <span class="s4">|it|</span> b.set(400*it+100, 1); });</p>
-<p class="p6">20.do({ <span class="s4">|it|</span> d.set(40*it+20, 1); });</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">\conv_test</span>, { <span class="s5">arg</span> kernel, t_trig = 0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span> input;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>input = <span class="s5">Impulse</span>.ar(1);</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// must have power of two framesize</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, <span class="s5">Convolution2</span>.ar(input, kernel, t_trig, 2048, 0.5));</p>
-<p class="p6">}).add</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">x = <span class="s4">Synth</span>(<span class="s6">\conv_test</span>, [<span class="s7">\kernel</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p5">// changing the buffer number:</p>
-<p class="p6">x.set(<span class="s7">\kernel</span>, c);</p>
-<p class="p5"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p6">x.set(<span class="s7">\kernel</span>, d);</p>
-<p class="p5"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p6">d.zero;</p>
-<p class="p5"><span class="s3">40.do({ </span><span class="s4">|it|</span><span class="s3"> d.set(20*it+10, 1); });</span>// changing the buffers' contents</p>
-<p class="p5"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p6">x.set(<span class="s7">\kernel</span>, b);</p>
-<p class="p5"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// // next example</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">b = </span><span class="s4">Buffer</span><span class="s3">.read(s, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s4">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>input = <span class="s4">SoundIn</span>.ar(0);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// must have power of two framesize</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, <span class="s4">Convolution2</span>.ar(input, b, 0, 512, 0.5));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// another example</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p5">// must have power of two framesize- FFT size will be sorted by Convolution2 to be double this</p>
-<p class="p5">// maximum is currently a = 8192 for FFT of size 16384</p>
-<p class="p6">a = 2048;</p>
-<p class="p6">s = <span class="s4">Server</span>.local;<span class="Apple-converted-space"> </span></p>
-<p class="p5">// kernel buffer</p>
-<p class="p6">g = <span class="s4">Buffer</span>.alloc(s, a, 1);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6">g.set(0, 1.0);</p>
-<p class="p6">100.do({<span class="s4">arg</span> i; g.set(a.rand, (i+1).reciprocal)});</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p5">// random impulse response</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> input, inputAmp, threshhold, gate;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>input = <span class="s4">SoundIn</span>.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>inputAmp = <span class="s4">Amplitude</span>.kr(input);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>threshhold = 0.02;<span class="Apple-tab-span">	</span></span>// noise gating threshold</p>
-<p class="p6"><span class="Apple-tab-span">	</span>gate = <span class="s4">Lag</span>.kr(inputAmp > threshhold, 0.01);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, <span class="s4">Convolution2</span>.ar(input*gate, g, 0, a, 0.5));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// one more example</p>
-<p class="p6">(</p>
-<p class="p6">b = <span class="s4">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p6">b.sine1(1.0/[1, 2, 3, 4, 5, 6], <span class="s4">true</span>, <span class="s4">true</span>, <span class="s4">true</span>);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s4">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>input = <span class="s4">SoundIn</span>.ar(0);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// must have power of two framesize</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, <span class="s4">Convolution2</span>.ar(input, b, 0, 512, 0.5));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1">Instead of triggering the kernel update yourself, as in the first example, you can use a UGen trigger signal to do so. In the next example, we use two <b>Convolution2</b> UGens in order to continuously and smoothly change the impulse response: <a href="../Playback and Recording/RecordBuf.html"><span class="s8">RecordBuf</span></a> is used to record a random frequency <a href="../Oscillators/Saw.html"><span class="s8">Saw</span></a> oscillator every <b>trigPeriod</b> seconds. Right after the recording (<b>trigPeriod</b> gets delayed by the buffer duration <a href="../Info/BufDur.html"><span class="s8">BufDur</span></a>, using the <a href="../Triggers/TDelay.html"><span class="s8">TDelay</span></a> UGen) the two convolution UGens alternatingly update their kernels (using two triggers <b>convTrigs</b>). At the frequency of the kernel updates a crossfader <a href="../Multichannel/Panners/XFade2.html"><span class="s8">XFade2</span></a> moves between <b>conv1</b> and <b>conv2</b>, using a triangle oscillator <a href="../Oscillators/LFTri.html"><span class="s8">LFTri</span></a> at half the trigger frequency as a panning input. The result is a constantly shifting spectral colorization of the <a href="../Noise/Dust.html"><span class="s8">Dust</span></a> impulses:</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6">fork { <span class="s9">var</span> buf;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>buf = <span class="s9">Buffer</span>.alloc( s, 2048, 1, <span class="s9">_</span>.zeroMsg );</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = { <span class="s9">arg</span> i_kernel, density = 100, trigPeriod = 5.0, cutOff = 1000, minFreq = 200, maxFreq = 2000;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">var</span> input, trigFreq, recTrig, irSig, convTrig, convTrigs, bufFrames, conv1, conv2;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= <span class="s9">LPF</span>.ar( <span class="s9">Dust</span>.ar( density ), cutOff );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trigFreq<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= trigPeriod.reciprocal;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>recTrig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= <span class="s9">Impulse</span>.kr( trigFreq );</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>irSig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= <span class="s9">Saw</span>.ar( <span class="s9">TExpRand</span>.kr( minFreq, maxFreq, recTrig ), 0.4 );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">RecordBuf</span>.ar( irSig, i_kernel, recTrig, loop: 0, trigger: recTrig );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convTrig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= <span class="s9">TDelay</span>.kr( recTrig, <span class="s9">BufDur</span>.ir( i_kernel ));</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// split updates across two triggers. Note that [ 1, 0 ] creates</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// a <a href="../../Other Topics/MultiChannel.html"><span class="s8">MultiChannel</span></a> expansion!</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convTrigs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= <span class="s9">PulseDivider</span>.kr( convTrig, 2, [ 1, 0 ]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufFrames<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>= <span class="s9">BufFrames</span>.ir( i_kernel );</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create the two alternatingly updated convolution ugens</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>#conv1, conv2<span class="Apple-tab-span">	</span>= <span class="s9">Convolution2</span>.ar( input, i_kernel, convTrigs, bufFrames );</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">XFade2</span>.ar( conv1, conv2, <span class="s9">LFTri</span>.kr( trigFreq * 0.5, 1 )) ! 2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play( s, [ <span class="s10">\i_kernel</span>, buf ]);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// automatically free buffer when synth ends</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s9">Updater</span>( x.register, { <span class="s9">arg</span> node, what; if( what == <span class="s10">\n_end</span>, { buf.free })});</p>
-<p class="p6">}</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">x.set( <span class="s10">\trigPeriod</span>, 0.1 );<span class="Apple-tab-span">	</span><span class="s11">// fast changes</span></p>
-<p class="p6">x.set( <span class="s10">\trigPeriod</span>, 10.0 );<span class="Apple-tab-span">	</span><span class="s11">// slow changes</span></p>
-<p class="p10"><span class="s3">x.free;<span class="Apple-tab-span">	</span></span>// delete synth (and buffer successively)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/Convolution2L.html b/Help/UGens/FFT/Convolution2L.html
deleted file mode 100644
index a336899..0000000
--- a/Help/UGens/FFT/Convolution2L.html
+++ /dev/null
@@ -1,198 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline ; color: #0044d4}
-span.s5 {color: #001bb9}
-span.s6 {color: #007300}
-span.s7 {color: #2c7014}
-span.s8 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Convolution2L<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>real-time convolver with linear interpolation</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Convolution2L.ar(in, kernel, trigger, framesize, crossfade, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Strict convolution with fixed kernel which can be updated using a trigger signal. There is a linear crossfade between the buffers upon change.</p>
-<p class="p3"><br></p>
-<p class="p1">See Steven W Smith, The Scientist and Engineer's Guide to Digital Signal Processing:<span class="Apple-converted-space"> </span></p>
-<p class="p1">chapter 18: <span class="s2">http:// www.dspguide.com/ch18.htm</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>in</b> - processing target</p>
-<p class="p1"><b>kernel</b>- buffer index for the fixed kernel, may be modulated in combination with the trigger</p>
-<p class="p1"><b>trigger</b> - update the kernel on a change from <=0 to >0</p>
-<p class="p1"><b>framesize </b>- size of FFT frame, must be a power of two. Convolution uses twice this number internally, maximum value you can give this argument is 2^16=65536. Note that it gets progressively more expensive to run for higher powers! 512, 1024, 2048, 4096 standard.</p>
-<p class="p1"><b>crossfade</b> - The number of periods over which a crossfade is made. The default is 1. This must be an integer.</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s3">See also <a href="Convolution2.html"><span class="s4">Convolution2</span></a> and <a href="StereoConvolution2L.html"><span class="s2">StereoConvolution2L</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s = <span class="s5">Server</span>.local.boot;</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3">(</span>// allocate three buffers</p>
-<p class="p5">b = <span class="s5">Buffer</span>.alloc(s, 2048);</p>
-<p class="p5">c = <span class="s5">Buffer</span>.alloc(s, 2048);</p>
-<p class="p5">d = <span class="s5">Buffer</span>.alloc(s, 2048);</p>
-<p class="p2"><br></p>
-<p class="p5">b.zero;</p>
-<p class="p5">c.zero;</p>
-<p class="p5">d.zero;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">50.do({ <span class="s5">|it|</span> c.set(20*it+10, 1.0.rand); });</p>
-<p class="p5">3.do({ <span class="s5">|it|</span> b.set(400*it+100, 1); });</p>
-<p class="p5">20.do({ <span class="s5">|it|</span> d.set(40*it+20, 1); });</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s5">SynthDef</span>(<span class="s6">\conv_test</span>, { <span class="s5">arg</span> kernel, t_trig=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">var</span> input;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>input=<span class="s5">Impulse</span>.ar(1);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// must have power of two framesize</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, <span class="s5">Convolution2L</span>.ar(input, kernel, t_trig, 2048, 1, 0.5));</p>
-<p class="p5">}).add</p>
-<p class="p2"><br></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">x = <span class="s5">Synth</span>(<span class="s6">\conv_test</span>, [<span class="s7">\kernel</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p6">// changing the buffer number:</p>
-<p class="p5">x.set(<span class="s7">\kernel</span>, c);</p>
-<p class="p6"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p5">x.set(<span class="s7">\kernel</span>, d);</p>
-<p class="p6"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">d.zero;</p>
-<p class="p6"><span class="s3">40.do({ </span><span class="s5">|it|</span><span class="s3"> d.set(20*it+10, 1); });</span>// changing the buffers' contents</p>
-<p class="p6"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">x.set(<span class="s7">\kernel</span>, b);</p>
-<p class="p6"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">x.free;</p>
-<p class="p2"><br></p>
-<p class="p6">// longer crossfade</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s8">SynthDef</span>( <span class="s6">\conv_test2</span>, { <span class="s8">arg</span> kernel, t_trig=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s8">var</span> input;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>input=<span class="s8">Impulse</span>.ar(1);</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// must have power of two framesize</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s8">Out</span>.ar(0, <span class="s8">Convolution2L</span>.ar(input, kernel, t_trig, 2048, 5, 0.5));</p>
-<p class="p5">}).add</p>
-<p class="p2"><br></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3">x = </span><span class="s8">Synth</span><span class="s3">(</span>\conv_test2<span class="s3">, [</span>\kernel<span class="s3">, b]);</span></p>
-<p class="p2"><br></p>
-<p class="p6">// changing the buffer number:</p>
-<p class="p5">x.set(<span class="s7">\kernel</span>, c);</p>
-<p class="p6"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p5">x.set(<span class="s7">\kernel</span>, d);</p>
-<p class="p6"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">d.zero;</p>
-<p class="p6"><span class="s3">40.do({ </span><span class="s5">|it|</span><span class="s3"> d.set(20*it+10, 1); });</span>// changing the buffers' contents</p>
-<p class="p6"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">x.set(<span class="s7">\kernel</span>, b);</p>
-<p class="p6"><span class="s3">x.set(</span><span class="s7">\t_trig</span><span class="s3">, 1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">x.free;</p>
-<p class="p2"><br></p>
-<p class="p6">// // next example</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">b = </span><span class="s5">Buffer</span><span class="s3">.read(s, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>input= <span class="s5">SoundIn</span>.ar(0);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// must have power of two framesize</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Convolution2L</span>.ar(input, b, 0, 512, 1, 0.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// another example</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">// must have power of two framesize- FFT size will be sorted by Convolution2 to be double this</p>
-<p class="p6">// maximum is currently a=8192 for FFT of size 16384</p>
-<p class="p5">a=2048;</p>
-<p class="p6">// kernel buffer</p>
-<p class="p5">g = <span class="s5">Buffer</span>.alloc(s, a, 1);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">g.set(0, 1.0);</p>
-<p class="p5">100.do({<span class="s5">arg</span> i; g.set(a.rand, (i+1).reciprocal)});</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">// random impulse response</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">var</span> input, inputAmp, threshhold, gate;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>input = <span class="s5">SoundIn</span>.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>inputAmp = <span class="s5">Amplitude</span>.kr(input);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>threshhold = 0.02;<span class="Apple-tab-span">	</span></span>// noise gating threshold</p>
-<p class="p5"><span class="Apple-tab-span">	</span>gate = <span class="s5">Lag</span>.kr(inputAmp > threshhold, 0.01);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Convolution2L</span>.ar(input*gate, g, 0, a, 1, 0.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// one last example</p>
-<p class="p5">(</p>
-<p class="p5">b = <span class="s5">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p5">b.sine1(1.0/[1, 2, 3, 4, 5, 6], <span class="s5">true</span>, <span class="s5">true</span>, <span class="s5">true</span>);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>input=<span class="s5">SoundIn</span>.ar(0);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// must have power of two framesize</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Convolution2L</span>.ar(input, b, 0, 512, 1, 0.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/Convolution3.html b/Help/UGens/FFT/Convolution3.html
deleted file mode 100644
index 2c0b951..0000000
--- a/Help/UGens/FFT/Convolution3.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Convolution3<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>real-time time-based convolver</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Convolution3.ar(in, kernel, trigger, framesize, mul, add)</b></p>
-<p class="p3"><b>Convolution3.kr(in, kernel, trigger, framesize, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Strict convolution with fixed kernel which can be updated using a trigger signal. The convolution is performed in the time domain, which is highly inefficient, and probably only useful for either very short kernel sizes, or for control rate signals.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - processing target</p>
-<p class="p3"><b>kernel</b> - buffer index for the fixed kernel, may be modulated in combination with the trigger</p>
-<p class="p3"><b>trigger</b> - update the kernel on a change from <=0 to >0</p>
-<p class="p3"><b>framesize </b>- size of FFT frame, does not have to be a power of two.<span class="Apple-converted-space">   </span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p3">See <a href="Convolution2.html">Convolution2</a> and <a href="Convolution2L.html">Convolution2L</a> for more efficient convolution UGens.</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/FFT Overview.html b/Help/UGens/FFT/FFT Overview.html
deleted file mode 100644
index f661467..0000000
--- a/Help/UGens/FFT/FFT Overview.html	
+++ /dev/null
@@ -1,233 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-span.s1 {color: #084ce0}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #ad140d}
-span.s5 {color: #2c7014}
-span.s6 {color: #0042e3}
-span.s7 {color: #113ca0}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {font: 12.0px Helvetica; color: #000000}
-span.s10 {color: #606060}
-span.s11 {font: 9.0px Monaco; color: #113ca0}
-span.s12 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FFT Overview</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>FFT and IFFT</b></p>
-<p class="p2"><br></p>
-<p class="p4">SuperCollider implements a number of UGens supporting FFT based processing. The most basic of these are <a href="FFT.html"><span class="s1">FFT</span></a> and <a href="IFFT.html"><span class="s1">IFFT</span></a><b> </b>which convert data between the time and frequency domains:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><b>FFT(buffer, input)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span>IFFT(buffer)</b></p>
-<p class="p2"><br></p>
-<p class="p4">FFT stores spectral data in a local buffer (see <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a>) in the following order: DC, nyquist, real 1f, imag 1f, real 2f, imag 2f, ... real (N-1)f, imag (N-1)f, where f is the frequency corresponding to the window size, and N is the window size / 2.</p>
-<p class="p2"><br></p>
-<p class="p4">The buffer's size must correspond to a power of 2, and must also be a multiple of SC's block size. The window size is equivalent to the buffer size, and the window overlap defaults to 2. Both FFT and IFFT use a Sine window by default, the combination of which (i.e. raised sine, that is, sine squared) is a Hanning window.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Phase Vocoder UGens and Spectral Processing</b></p>
-<p class="p2"><br></p>
-<p class="p4">In between an FFT and an IFFT one can chain together a number of Phase Vocoder UGens (i.e. 'PV_...') to manipulate blocks of spectral data before reconversion. The process of buffering the appropriate amount of audio, windowing, conversion, overlap-add, etc. is handled for you automatically.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s2">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = <span class="s2">WhiteNoise</span>.ar(0.8);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s2">FFT</span>(<span class="s2">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s2">PV_RandComb</span>(chain, 0.95, <span class="s2">Impulse</span>.kr(0.4));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">IFFT</span>(chain);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p4">PV Ugens write their output data <i>in place</i>, i.e. back into the same buffer from which they read. PV UGens which require two buffers write their data into the first buffer, usually called 'bufferA'.</p>
-<p class="p5"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>d = </span><span class="s2">Buffer</span><span class="s3">.read(s,</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s2">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inA = <span class="s2">LFSaw</span>.ar([100, 150], 0, 0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inB = <span class="s2">PlayBuf</span>.ar(1, d, <span class="s2">BufRateScale</span>.kr(d), loop: 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chainA = <span class="s2">FFT</span>(<span class="s2">LocalBuf</span>(2048), inA);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chainB = <span class="s2">FFT</span>(<span class="s2">LocalBuf</span>(2048), inB);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s2">PV_MagMul</span>(chainA, chainB); <span class="s4">// writes into bufferA</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1 * <span class="s2">IFFT</span>(chain);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.free;</p>
-<p class="p2"><br></p>
-<p class="p4">Because each PV UGen overwrites the output of the previous one, it is necessary to copy the data to an additional buffer at the desired point in the chain in order to do parallel processing of input without using multiple FFT UGens. <a href="PV_Copy.html"><span class="s1">PV_Copy</span></a> allows for this.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s3">.alloc(s,2048,1); </span>// use global buffers for plotting the data</p>
-<p class="p6"><span class="Apple-tab-span">	</span>c = <span class="s2">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>//// proof of concept</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = { <span class="s2">var</span> inA, chainA, chainB;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inA = <span class="s2">LFClipNoise</span>.ar(100);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chainA = <span class="s2">FFT</span>(b, inA);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chainB = <span class="s2">PV_Copy</span>(chainA, c); <span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">IFFT</span><span class="s3">(chainA) - </span><span class="s2">IFFT</span><span class="s3">(chainB); </span>// cancels to zero so silent!</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// IFFTed frames contain the same windowed output data</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.plot(<span class="s5">\b</span>, <span class="s2">Rect</span>(200, 430, 700, 300), <span class="s2">nil</span>, <span class="s2">nil</span>); c.plot(<span class="s5">\c</span>, <span class="s2">Rect</span>(200, 100, 700, 300), <span class="s2">nil</span>, <span class="s2">nil</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>[b, c].do(<span class="s2">_</span>.free);</p>
-<p class="p2"><br></p>
-<p class="p4">Note that PV UGens convert as needed between cartesian (complex) and polar representations, therefore when using multiple PV UGens it may be impossible to know in which form the values will be at any given time. FFT produces complex output (see above), so while the following produces a reliable magnitude plot:</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>b = </span><span class="s2">Buffer</span><span class="s3">.alloc(s,1024); </span>// use global buffers for plotting the data</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = { <span class="s2">FFT</span>(b, <span class="s2">LFSaw</span>.ar(4000)); 0.0 }.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.getn(0, 1024, { <span class="s2">arg</span> buf;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> z, x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = buf.clump(2).flop;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = [<span class="s2">Signal</span>.newFrom(z[0]), <span class="s2">Signal</span>.newFrom(z[1])];</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s2">Complex</span>(z[0], z[1]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{x.magnitude.plot}.defer</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.free; b.free;</p>
-<p class="p2"><br></p>
-<p class="p4">any Synth using PV UGens might not.</p>
-<p class="p2"><br></p>
-<p class="p4">It is possible to manipulate the FFT data directly within a synth graph (if there doesn't already exist a PV UGen which will do what you want), using the methods <a href="pvcalc.html"><span class="s6">pvcalc</span></a>, <a href="pvcalc2.html"><span class="s6">pvcalc2</span></a>, <a href="pvcollect.html"><span class="s6">pvcollect</span></a>. Here's an example which uses the <a href="../../Collections/SequenceableCollection.html"><span class="s6">SequenceableCollection</span></a> methods <i>clump</i> and <i>flop</i> to rearrange the order of the spectral bins:</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>c = </span><span class="s2">Buffer</span><span class="s3">.read(s,</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span><span class="s2">var</span> in, numFrames=2048, chain, v;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>in = <span class="s2">PlayBuf</span>.ar(1, c, loop: 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>chain = <span class="s2">FFT</span>(<span class="s2">LocalBuf</span>(numFrames), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>chain = chain.pvcalc(numFrames, {<span class="s2">|mags, phases|</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">      </span></span>/* Play with the mags and phases, then return them */</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">      </span>[mags, phases].flop.clump(2).flop.flatten</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span>}, tobin: 250);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-converted-space">  </span><span class="s2">Out</span>.ar(0, 0.5 * <span class="s2">IFFT</span>(chain).dup);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free; c.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Multichannel Expansion with FFT UGens</b></p>
-<p class="p2"><br></p>
-<p class="p4">Care must be taken when using multichannel expansion with FFT UGens, as they require separate buffers. Code such as this can be deceptive:</p>
-<p class="p2"><br></p>
-<p class="p6">chain = <span class="s7">FFT</span>(bufnum, {<span class="s7">WhiteNoise</span>.ar(0.2)}.dup);</p>
-<p class="p2"><br></p>
-<p class="p4">The above may seem to work, but does not. It does result in two FFT UGens, but as they both write to the same buffer, the second simply overwrites the data from the first, thus wasting CPU and accomplishing nothing.</p>
-<p class="p2"><br></p>
-<p class="p4">When using multichannel expansion with FFT UGens it is necessary to ensure that each one writes to a different buffer. Here's an example of one way to do this:</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2">SynthDef</span><span class="s3">(</span>"help-multichannel FFT"<span class="s3">, { </span><span class="s2">arg</span><span class="s3"> out=0; </span><span class="s4">// bufnum is an array</span></p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s2">var</span> in, chain;</p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span>in = [<span class="s2">SinOsc</span>.ar(200, 0, 0.2), <span class="s2">WhiteNoise</span>.ar(0.2)];</p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><span class="s3">chain = </span><span class="s2">FFT</span><span class="s3">(</span><span class="s2">LocalBuf</span><span class="s3">([2048, 2048]), in); </span>// each FFT has a different buffer</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// now we can multichannel expand as normal</p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span>chain = <span class="s2">PV_BrickWall</span>(chain, <span class="s2">SinOsc</span>.kr(-0.1));</p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s2">Out</span>.ar(out, <span class="s2">IFFT</span>(chain));</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p8">// or using global buffers</p>
-<p class="p2"><br></p>
-<p class="p6">b = {<span class="s2">Buffer</span>.alloc(s,2048,1)}.dup;</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s10">"help-multichannel FFT"</span>, { <span class="s2">arg</span> out=0, bufnum= #[0, 1]; <span class="s4">// bufnum is an array</span></p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s2">var</span> in, chain;</p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span>in = [<span class="s2">SinOsc</span>.ar(200, 0, 0.2), <span class="s2">WhiteNoise</span>.ar(0.2)];</p>
-<p class="p8"><span class="s9"><span class="Apple-tab-span">	</span></span><span class="s3">chain = </span><span class="s2">FFT</span><span class="s3">(bufnum, in); </span>// each FFT has a different buffer</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// now we can multichannel expand as normal</p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span>chain = <span class="s2">PV_BrickWall</span>(chain, <span class="s2">SinOsc</span>.kr(-0.1));</p>
-<p class="p6"><span class="s8"><span class="Apple-tab-span">	</span></span><span class="s2">Out</span>.ar(out, <span class="s2">IFFT</span>(chain));</p>
-<p class="p6">}).play(s,[<span class="s5">\bufnum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">Note that dup on a UGen just makes a reference to that UGen, because UGen defines -copy to simply return the receiver. (See <a href="../UGen.html"><span class="s1">UGen</span></a> for more detail.)</p>
-<p class="p2"><br></p>
-<p class="p6">a = SinOsc.ar;</p>
-<p class="p6">a.dup[1] === a</p>
-<p class="p5"><br></p>
-<p class="p6">true</p>
-<p class="p2"><br></p>
-<p class="p4">Code like <span class="s11">IFFT</span><span class="s12">(chain).dup</span> is found throughout the PV help files , and is just a convenient way to copy a mono signal to stereo, without further computation.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">See also <a href="../../Other Topics/MultiChannel.html"><span class="s8">MultiChannel</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV and FFT UGens in the Standard Library</b></p>
-<p class="p2"><br></p>
-<p class="p4">The following PV UGens are included in the standard SC distribution:</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="FFT.html"><span class="s1">FFT</span></a><span class="Apple-tab-span">	</span>Fast Fourier Transform</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="IFFT.html"><span class="s1">IFFT</span></a><span class="Apple-tab-span">	</span>Inverse Fast Fourier Transform</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_Add.html"><span class="s1">PV_Add</span></a><span class="Apple-tab-span">	</span>complex addition</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_BinScramble.html"><span class="s1">PV_BinScramble</span></a><span class="Apple-tab-span">	</span>scramble bins</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_BinShift.html"><span class="s1">PV_BinShift</span></a><span class="Apple-tab-span">	</span>shift and stretch bin position</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_BinWipe.html"><span class="s1">PV_BinWipe</span></a><span class="Apple-tab-span">	</span>combine low and high bins from two inputs</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><a href="PV_BrickWall.html"><span class="s8">PV_BrickWall</span></a><span class="Apple-tab-span">	</span>zero bins</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_ConformalMap.html"><span class="s1">PV_ConformalMap</span></a><span class="Apple-tab-span">	</span>complex plane attack<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_Copy.html"><span class="s1">PV_Copy</span></a><span class="Apple-tab-span">	</span>copy an FFT buffer</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_CopyPhase.html"><span class="s1">PV_CopyPhase</span></a><span class="Apple-tab-span">	</span>copy magnitudes and phases</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_Diffuser.html"><span class="s1">PV_Diffuser</span></a><span class="Apple-tab-span">	</span>random phase shifting</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><a href="PV_HainsworthFoote.html"><span class="s8">PV_HainsworthFoote</span></a></span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><a href="PV_JensenAndersen.html"><span class="s8">PV_JensenAndersen</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_LocalMax.html"><span class="s1">PV_LocalMax</span></a><span class="Apple-tab-span">	</span>pass bins which are a local maximum</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagAbove.html"><span class="s1">PV_MagAbove</span></a><span class="Apple-tab-span">	</span>pass bins above a threshold</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagBelow.html"><span class="s1">PV_MagBelow</span></a><span class="Apple-tab-span">	</span>pass bins below a threshold</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagClip.html"><span class="s1">PV_MagClip</span></a><span class="Apple-tab-span">	</span>clip bins to a threshold</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagFreeze.html"><span class="s1">PV_MagFreeze</span></a><span class="Apple-tab-span">	</span>freeze magnitudes</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagMul.html"><span class="s1">PV_MagMul</span></a><span class="Apple-tab-span">	</span>multiply magnitudes</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagDiv.html"><span class="s1">PV_MagDiv</span></a><span class="Apple-tab-span">	</span>division of magnitudes</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagNoise.html"><span class="s1">PV_MagNoise</span></a><span class="Apple-tab-span">	</span>multiply magnitudes by noise</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagShift.html"><span class="s1">PV_MagShift</span></a><span class="Apple-tab-span">	</span>shift and stretch magnitude bin position</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagSmear.html"><span class="s1">PV_MagSmear</span></a><span class="Apple-tab-span">	</span>average magnitudes across bins</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_MagSquared.html"><span class="s1">PV_MagSquared</span></a><span class="Apple-tab-span">	</span>square magnitudes</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_Max.html"><span class="s1">PV_Max</span></a><span class="Apple-tab-span">	</span>maximum magnitude</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_Min.html"><span class="s1">PV_Min</span></a><span class="Apple-tab-span">	</span>minimum magnitude</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_Mul.html"><span class="s1">PV_Mul</span></a><span class="Apple-tab-span">	</span>complex multiply</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_PhaseShift.html"><span class="s1">PV_PhaseShift</span></a><span class="Apple-tab-span">	</span>shift phase of all bins</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_PhaseShift270.html"><span class="s1">PV_PhaseShift270</span></a><span class="Apple-tab-span">	</span>shift phase by 270 degrees</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_PhaseShift90.html"><span class="s1">PV_PhaseShift90</span></a><span class="Apple-tab-span">	</span>shift phase by 90 degrees</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_RandComb.html"><span class="s1">PV_RandComb</span></a><span class="Apple-tab-span">	</span>pass random bins</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_RandWipe.html"><span class="s1">PV_RandWipe</span></a><span class="Apple-tab-span">	</span>crossfade in random bin order</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_RectComb.html"><span class="s1">PV_RectComb</span></a><span class="Apple-tab-span">	</span>make gaps in spectrum</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="PV_RectComb2.html"><span class="s1">PV_RectComb2</span></a><span class="Apple-tab-span">	</span>make gaps in spectrum</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="UnpackFFT.html"><span class="s6">UnpackFFT</span></a>, <a href="PackFFT.html"><span class="s6">PackFFT</span></a>, <a href="Unpack1FFT.html"><span class="s6">Unpack1FFT</span></a><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>"unpacking" components used in <a href="pvcalc.html"><span class="s6">pvcalc</span></a>, <a href="pvcalc2.html"><span class="s6">pvcalc2</span></a>, <a href="pvcollect.html"><span class="s6">pvcollect</span></a> (can also be used on their own)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/FFT.html b/Help/UGens/FFT/FFT.html
deleted file mode 100644
index 33e3422..0000000
--- a/Help/UGens/FFT/FFT.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #0021e7}
-span.s5 {text-decoration: underline}
-span.s6 {color: #ad140d}
-span.s7 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FFT<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Fast Fourier Transform</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../PV_ChainUGen.html"><span class="s4"><b>PV_ChainUGen</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>FFT.new(buffer, input, hop, wintype, active, winsize)</b></p>
-<p class="p2"><br></p>
-<p class="p1">The fast fourier transform analyzes the frequency content of a signal, which can be useful for audio analysis or for frequency-domain sound processing (phase vocoder).</p>
-<p class="p2"><br></p>
-<p class="p1"><b>buffer</b> - The buffer where a frame will be held. Its size must be a power of two. LocalBuf is useful here, because processes should not share data between synths. (Note: most PV UGens operate on this data in place. Use PV_Copy for parallel processing.)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>input</b> - the signal to be analyzed. The signal's rate determines the rate at which the input is read.</p>
-<p class="p2"><br></p>
-<p class="p1">Only the above two arguments are required. The remaining arguments allow for custom FFT analyses for specialised situations:</p>
-<p class="p2"><br></p>
-<p class="p1"><b>hop</b> - the amount of offset from one FFT analysis frame to the next, measured in multiples of the analysis frame size. This can range between zero and one, and the default is 0.5 (meaning each frame has a 50% overlap with the preceding/following frames).</p>
-<p class="p1"><b>wintype</b> - defines how the data is windowed:</p>
-<p class="p1"><span class="Apple-tab-span">	</span>-1 is for <b><i>rectangular</i></b> windowing, simple but typically not recommended;<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>0 (the default) is for <b><i>Sine</i></b> windowing, typically recommended for phase-vocoder work;<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>1 is for <b><i>Hann</i></b> windowing, typically recommended for analysis work.</p>
-<p class="p1"><b>active</b> - is a simple control allowing FFT analysis to be active (>0) or inactive (<=0). This is mainly useful for signal analysis processes which are only intended to analyse at specific times rather than continuously</p>
-<p class="p1"><b>winsize</b> - the windowed audio frames are usually the same size as the buffer. If you wish the FFT to be <i>zero-padded</i> then you can specify a window size smaller than the actual buffer size (e.g. window size 1024 with buffer size 2048). Both values must still be a power of two. Leave this at its default of zero for no zero-padding.</p>
-<p class="p2"><br></p>
-<p class="p1">FFT uses a local buffer for holding the buffered audio. The buffer size must be a multiple of the control block size as well as being a power of two.</p>
-<p class="p2"><br></p>
-<p class="p1">Note that for phase-vocoder usage, changing the hop or wintype settings from their defaults will typically result in unnatural sound when used in combination with IFFT, due to windowing artifacts. (A hop of 0.25, with Hann windowing, can be a useful combination for phase-vocoder work.)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><b>See also:</b> <a href="FFT Overview.html"><span class="s5">FFT Overview</span></a>, <a href="IFFT.html"><span class="s5">IFFT</span></a>, <a href="PV_Copy.html"><span class="s5">PV_Copy</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"help-noopFFT"<span class="s2">, { </span><span class="s3">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.05);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain.inspect; <span class="s6">// its an FFT</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">IFFT</span><span class="s2">(chain) </span>// inverse FFT</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"help-sineFFT"<span class="s2">, { </span><span class="s3">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(<span class="s3">SinOsc</span>.kr(0.08,0,6,6.2).squared, 0, 100,800));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">IFFT</span>(chain));</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"help-magAbove"<span class="s2">, { </span><span class="s3">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(<span class="s3">SinOsc</span>.kr(0.08,0,6,6.2).squared, 0, 100,800));</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>//in = WhiteNoise.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagAbove</span>(chain, 310);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain));</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s7">"help-brick"</span>, { <span class="s3">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_BrickWall</span>(chain, <span class="s3">SinOsc</span>.kr(0.1));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">IFFT</span>(chain));</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"help-randcomb"<span class="s2">, { </span><span class="s3">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.8);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_RandComb</span>(chain, 0.95, <span class="s3">Impulse</span>.kr(0.4));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">IFFT</span>(chain));</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"help-rectcomb"<span class="s2">, { </span><span class="s3">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_RectComb</span>(chain, 8, <span class="s3">LFTri</span>.kr(0.097,0,0.4,0.5),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFTri</span>.kr(0.24,0,-0.5,0.5));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">IFFT</span>(chain));</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"help-magFreeze"<span class="s2">, { </span><span class="s3">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(<span class="s3">LFNoise1</span>.kr(5.2,250,400));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// moves in and out of freeze</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagFreeze</span>(chain, <span class="s3">SinOsc</span>.kr(-0.2) );<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain));</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/FFTTrigger.html b/Help/UGens/FFT/FFTTrigger.html
deleted file mode 100644
index 1ce7647..0000000
--- a/Help/UGens/FFT/FFTTrigger.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 15.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FFTTrigger<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Outputs the necessary signal for FFT chains, without doing an FFT on a signal</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>FFTrigger(buffer, hop, polar)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>buffer - a buffer to condition for FFT use</p>
-<p class="p1"><span class="Apple-tab-span">	</span>hop - the hop size for timing triggers (defaults to 0.5)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>polar - a flag. If 0.0, the buffer will be prepared for complex data, if > 0.0, polar data is set up.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3">(</p>
-<p class="p3">s.boot.doWhenBooted{</p>
-<p class="p3"><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, 512);</p>
-<p class="p3">};</p>
-<p class="p3">)</p>
-<p class="p4">// Reminder: This isn't the intended typical usage! It's OK to do this though.</p>
-<p class="p3">(</p>
-<p class="p3">x = {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> mags, phases, chain, sig;</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// Create simple undulating magnitudes</p>
-<p class="p3"><span class="Apple-tab-span">	</span>mags = {<span class="s2">FSinOsc</span>.kr(<span class="s2">ExpRand</span>(0.1, 1)).range(0, 1)}.dup(100);</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// Then give them a "rolloff" to make the sound less unpleasant</p>
-<p class="p3"><span class="Apple-tab-span">	</span>mags = mags<span class="Apple-converted-space">  </span>* ((1, 0.99 .. 0.01).squared);</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// Let's turn the bins on and off at different rates, I'm *sure* that'll sound interesting</p>
-<p class="p3"><span class="Apple-tab-span">	</span>mags = mags * {<span class="s2">LFPulse</span>.kr(2 ** <span class="s2">IRand</span>(-3, 5)).range(0, 1)}.dup(100);</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// Let's ignore phase for now</p>
-<p class="p3"><span class="Apple-tab-span">	</span>phases = 0.dup(100);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>chain = <span class="s2">FFTTrigger</span>(b, 0.5);</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span></span>// Now we can do the packing</p>
-<p class="p3"><span class="Apple-tab-span">	</span>chain = <span class="s2">PackFFT</span>(chain, 512, [mags, phases].flop.flatten, 0, 99, 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>sig = <span class="s2">IFFT</span>(chain);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, sig.dup);</p>
-<p class="p3">}.play(s);</p>
-<p class="p3">)</p>
-<p class="p3">x.free;</p>
-<p class="p3">b.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/IFFT.html b/Help/UGens/FFT/IFFT.html
deleted file mode 100644
index 85f0a10..0000000
--- a/Help/UGens/FFT/IFFT.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline ; color: #084eea}
-span.s4 {text-decoration: underline ; color: #104fd4}
-span.s5 {color: #001bb9}
-span.s6 {color: #ad140d}
-span.s7 {color: #1857d5}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>IFFT<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Inverse Fast Fourier Transform</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>IFFT.new(chain, wintype, winsize)</b></p>
-<p class="p1"><b>IFFT.ar(chain, wintype, winsize)</b></p>
-<p class="p1"><b>IFFT.kr(chain, wintype, winsize)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">The fast fourier transform analyzes the frequency content of a signal. The IFFT UGen converts this <i>frequency-domain</i> information back into <i>time-domain</i> audio data. Most often this is used as the end of a process which begins with FFT, followed by frequency-domain processing using PV (phase-vocoder) UGens, followed by IFFT.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>chain</b> - The FFT "chain" signal coming originally from an FFT UGen, perhaps via other PV UGens.</p>
-<p class="p1"><b>wintype</b> - defines how the data is windowed:</p>
-<p class="p1"><span class="Apple-tab-span">	</span>-1 is for <b><i>rectangular</i></b> windowing, simple but typically not recommended;<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>0 (the default) is for <b><i>Sine</i></b> windowing, typically recommended for phase-vocoder work;<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>1 is for <b><i>Hann</i></b> windowing, typically recommended for analysis work.</p>
-<p class="p1"><b>winsize</b> - can be used to account for zero-padding, in the same way as the FFT UGen.</p>
-<p class="p2"><br></p>
-<p class="p1">The IFFT UGen converts the FFT data in-place (in the original FFT buffer) and overlap-adds the result to produce a continuous signal at its output.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="FFT Overview.html"><span class="s3">FFT Overview</span></a>, <a href="FFT.html"><span class="s4">FFT</span></a>, <a href="PV_Copy.html"><span class="s4">PV_Copy</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s5">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s5">WhiteNoise</span>.ar(0.05);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s5">FFT</span>(<span class="s5">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain.inspect; <span class="s6">// its an FFT</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">IFFT</span><span class="s2">(chain) </span>// inverse FFT</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p1">See <a href="FFT.html"><span class="s7">FFT</span></a> for more examples.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_Add.html b/Help/UGens/FFT/PV_Add.html
deleted file mode 100644
index b136941..0000000
--- a/Help/UGens/FFT/PV_Add.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {color: #0000bf}
-span.s6 {color: #606060}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_Add<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>complex addition</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_Add(bufferA,<span class="Apple-converted-space">  </span>bufferB)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Complex Addition: RealA + RealB, ImagA + ImagB</p>
-<p class="p3"><b>bufferA</b> - fft buffer A.</p>
-<p class="p3"><b>bufferB</b> - fft buffer B.</p>
-<p class="p4"><span class="s2">See also <a href="FFT Overview.html"><span class="s3">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">d = </span><span class="s4">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p8"><span class="s5">SynthDef</span>(<span class="s6">"help-add"</span>, { <span class="s5">arg</span> out=0, soundBufnum;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>inA = <span class="s5">PlayBuf</span>.ar(1, <span class="s2">soundBufnum</span>, <span class="s5">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s5">PlayBuf</span>.ar(1, <span class="s2">soundBufnum</span>, <span class="s5">BufRateScale</span>.kr(soundBufnum) * 0.5, loop: 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chainA = <span class="s5">FFT</span>(<span class="s5">LocalBuf</span>(2048), inA);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chainB = <span class="s5">FFT</span>(<span class="s5">LocalBuf</span>(2048), inB);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s5">PV_Add</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.1 * <span class="s5">IFFT</span>(chain).dup);</p>
-<p class="p8">}).play(s, [<span class="s7">\soundBufnum</span>, d]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">d.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_BinScramble.html b/Help/UGens/FFT/PV_BinScramble.html
deleted file mode 100644
index ca3adef..0000000
--- a/Help/UGens/FFT/PV_BinScramble.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0029ac}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_BinScramble<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>scramble bins</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_BinScramble(buffer,<span class="Apple-converted-space">  </span>wipe,<span class="Apple-converted-space">  </span>width,<span class="Apple-converted-space">  </span>trig)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Randomizes the order of the bins.</p>
-<p class="p3">The trigger will select a new random ordering.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>wipe</b> - scrambles more bins as wipe moves from zero to one.</p>
-<p class="p3"><b>width</b> - a value from zero to one, indicating the maximum randomized distance of a bin from its</p>
-<p class="p3">original location in the spectrum.</p>
-<p class="p3"><b>trig</b> - a trigger selects a new random ordering.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p6"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p8">// trig with MouseY</p>
-<p class="p9"><span class="s4">SynthDef</span>(<span class="s5">"help-binScramble"</span>, { <span class="s4">arg</span> out=0, bufnum=0, soundBufnum=2;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>in = <span class="s4">PlayBuf</span>.ar(1, soundBufnum, <span class="s4">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), in);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_BinScramble</span>(chain, <span class="s4">MouseX</span>.kr , 0.1, <span class="s4">MouseY</span>.kr > 0.5 );<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, 0.5 * <span class="s4">IFFT</span>(chain).dup);</p>
-<p class="p9">}).play(s,[<span class="s6">\out</span>, 0, <span class="s6">\bufnum</span>, b, <span class="s6">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_BinShift.html b/Help/UGens/FFT/PV_BinShift.html
deleted file mode 100644
index 47f424e..0000000
--- a/Help/UGens/FFT/PV_BinShift.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_BinShift<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>shift and stretch bin position</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_BinShift(buffer,<span class="Apple-converted-space">  </span>stretch,<span class="Apple-converted-space">  </span>shift)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Shift and scale the positions of the bins.<span class="Apple-converted-space"> </span></p>
-<p class="p3">Can be used as a very crude frequency shifter/scaler.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>stretch</b> - scale bin location by factor.</p>
-<p class="p3"><b>shift</b> - add an offset to bin position.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">SynthDef</span><span class="s1">(</span>"help-binStretch"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">LFSaw</span>.ar(200, 0, 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_BinShift</span>(chain, <span class="s3">MouseX</span>.kr(0.25, 4, <span class="s4">\exponential</span>) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s4">\out</span>, 0]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">"help-binStretch2"</span>, { <span class="s3">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_BinShift</span>(chain, <span class="s3">MouseX</span>.kr(0.25, 4, <span class="s4">\exponential</span>) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">SynthDef</span><span class="s1">(</span>"help-binShift"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">LFSaw</span>.ar(200, 0, 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_BinShift</span>(chain, 1, <span class="s3">MouseX</span>.kr(-128, 128) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s4">\out</span>, 0]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">"help-binShift2"</span>, {<span class="Apple-converted-space">  </span><span class="s3">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_BinShift</span>(chain, 1, <span class="s3">MouseX</span>.kr(-128, 128) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_BinWipe.html b/Help/UGens/FFT/PV_BinWipe.html
deleted file mode 100644
index b61e0bb..0000000
--- a/Help/UGens/FFT/PV_BinWipe.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {color: #2c7014}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_BinWipe<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>combine low and high bins from two inputs</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../PV_ChainUGen.html"><b>PV_ChainUGen</b></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_BinWipe(bufferA,<span class="Apple-converted-space">  </span>bufferB, wipe)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Copies low bins from one input and the high bins of the other.</p>
-<p class="p1"><b>bufferA</b> - fft buffer A.</p>
-<p class="p1"><b>bufferB</b> - fft buffer B.</p>
-<p class="p1"><b>wipe</b> - can range between -1 and +1.</p>
-<p class="p1">if wipe == 0 then the output is the same as inA.</p>
-<p class="p1">if<span class="Apple-converted-space">  </span>wipe > 0 then it begins replacing with bins from inB from the bottom up.<span class="Apple-converted-space"> </span></p>
-<p class="p1">if<span class="Apple-converted-space">  </span>wipe < 0 then it begins replacing with bins from inB from the top down.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="FFT Overview.html"><span class="s3">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><span class="s2">d = </span><span class="s4">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s4">SynthDef</span><span class="s2">(</span>"help-binWipe"<span class="s2">, { </span><span class="s4">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s4">WhiteNoise</span>.ar(0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB = <span class="s4">LFSaw</span>.ar(100, 0, 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_BinWipe</span>(chainA, chainB, <span class="s4">MouseX</span>.kr(-1, 1));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, 0.5 * <span class="s4">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">SynthDef</span>(<span class="s6">"help-binWipe2"</span>, { <span class="s4">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s4">WhiteNoise</span>.ar(0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB = <span class="s4">PlayBuf</span>.ar(1, soundBufnum, <span class="s4">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_BinWipe</span>(chainA, chainB, <span class="s4">MouseX</span>.kr(-1, 1));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, 0.5 * <span class="s4">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\soundBufnum</span>, d]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">d.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_BrickWall.html b/Help/UGens/FFT/PV_BrickWall.html
deleted file mode 100644
index 8b9f864..0000000
--- a/Help/UGens/FFT/PV_BrickWall.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #0021e7}
-span.s5 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_BrickWall<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>partially zero bins</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../PV_ChainUGen.html"><span class="s4"><b>PV_ChainUGen</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_BrickWall(buffer,<span class="Apple-converted-space">  </span>wipe)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Clears bins above or below a cutoff point.</p>
-<p class="p1"><b>buffer</b> - fft buffer.</p>
-<p class="p1"><b>wipe</b> - can range between -1 and +1.</p>
-<p class="p1">if wipe == 0 then there is no effect.</p>
-<p class="p1">if<span class="Apple-converted-space">  </span>wipe > 0 then it acts like a high pass filter, clearing bins from the bottom up.<span class="Apple-converted-space"> </span></p>
-<p class="p1">if<span class="Apple-converted-space">  </span>wipe < 0 then it acts like a low pass filter, clearing bins from the top down.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">See also <a href="FFT Overview.html"><span class="s5">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_BrickWall</span>(chain, <span class="s3">SinOsc</span>.kr(0.1));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">IFFT</span>(chain)</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_ConformalMap.html b/Help/UGens/FFT/PV_ConformalMap.html
deleted file mode 100644
index 8ba5da6..0000000
--- a/Help/UGens/FFT/PV_ConformalMap.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #001bb9}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_ConformalMap<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>complex plane attack<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_ConformalMap(buffer, real, imag)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Applies the conformal mapping z -> (z-a)/(1-za*) to the phase vocoder bins z with a given by the real and imag inputs to the UGen.</p>
-<p class="p4"><br></p>
-<p class="p3">ie, makes a transformation of the complex plane so the output is full of phase vocoder artifacts but may be musically fun. Usually keep |a|<1 but you can of course try bigger values to make it really noisy. a=0 should give back the input mostly unperturbed.</p>
-<p class="p4"><br></p>
-<p class="p3">See http://mathworld.wolfram.com/ConformalMapping.html</p>
-<p class="p4"><br></p>
-<p class="p3"><b>buffer</b> - buffer number of buffer to act on, passed in through a chain (see examples below).</p>
-<p class="p3"><b>real</b> - real part of a.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>imag</b> - imaginary part of a.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// examples</p>
-<p class="p6"><br></p>
-<p class="p8">(</p>
-<p class="p9">{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(450) * 0.1;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_ConformalMap</span>(chain, <span class="s3">MouseX</span>.kr(-1.0,1.0), <span class="s3">MouseY</span>.kr(-1.0,1.0));</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s3">IFFT</span>(chain).dup;</p>
-<p class="p9">}.play;</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// microphone input - use headphones to prevent feedback</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>in = <span class="s4">SoundIn</span>.ar(0, 0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_ConformalMap</span>(chain, <span class="s4">MouseX</span>.kr(-1.0,1.0), <span class="s4">MouseY</span>.kr(-1.0,1.0));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">IFFT</span>(chain).dup;</p>
-<p class="p8">}.play;</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain, signal;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>var real = <span class="s4">MouseX</span>.kr(0.01,2.0, <span class="s5">'exponential'</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>var imag = <span class="s4">MouseY</span>.kr(0.01,10.0, <span class="s5">'exponential'</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>in = <span class="s4">Mix</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">LFSaw</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.kr(<span class="s4">Array</span>.rand(3, 0.1, 0.5), 0, 10, [1, 1.1, 1.5, 1.78, 2.45, 6.7] * 220),</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.3</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_ConformalMap</span>(chain, real, imag);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>signal = <span class="s4">IFFT</span>(chain);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(<span class="s4">CombN</span>.ar(signal, 0.1, 0.1, 10, 0.5) + signal).dup;</p>
-<p class="p8">}.play;</p>
-<p class="p8">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_Conj.html b/Help/UGens/FFT/PV_Conj.html
deleted file mode 100644
index f74bd22..0000000
--- a/Help/UGens/FFT/PV_Conj.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #002aba}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_Conj<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>complex conjugate</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../PV_ChainUGen.html"><b>PV_ChainUGen</b></a><b> : </b><a href="PV_MagSquared.html"><b>PV_MagSquared</b></a></p>
-<p class="p2"><br></p>
-<p class="p4"><b>PV_Conj.new(chain)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Converts the FFT frames to their complex conjugate (i.e. reverses the sign of their imaginary part). This is not usually a useful audio effect in itself, but may be a component of other analysis or transformation processes...</p>
-<p class="p2"><br></p>
-<p class="p4"><b>chain</b> - fft chain.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">See also: <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">b = <span class="s3">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6">c = <span class="s3">Buffer</span>.read(s,"sounds/a11wlk01.wav");</p>
-<p class="p6">d = <span class="s3">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="s4">SynthDef</span>(<span class="s5">\help_pvconj</span>, {<span class="Apple-converted-space">  </span><span class="s4">arg</span> out=0, bufnum=0, soundBufnum=2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>in = <span class="s4">PlayBuf</span>.ar(1, soundBufnum, <span class="s4">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(bufnum, in);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_Conj</span>(chain);</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span>// Original is left, conj is right</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, 0.3 * [in, <span class="s4">IFFT</span>(chain)]);<span class="Apple-converted-space"> </span></p>
-<p class="p8">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="s4">SynthDef</span>(<span class="s5">\help_pvconj2</span>, {<span class="Apple-converted-space">  </span><span class="s4">arg</span> out=0, bufnum=0, soundBufnum=2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chainA, chainB;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>in = <span class="s4">PlayBuf</span>.ar(1, soundBufnum, <span class="s4">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chainA = <span class="s4">FFT</span>(bufnum, in);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chainB = <span class="s4">PV_Copy</span>(chainA, d);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chainB = <span class="s4">PV_Conj</span>(chainB);</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span></span>// Now we have the original and conjugate, what happens if we add them?</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, 0.3 * (<span class="s4">IFFT</span>(<span class="s4">PV_Add</span>(chainA, chainB)).dup));<span class="Apple-converted-space"> </span></p>
-<p class="p8">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_Copy.html b/Help/UGens/FFT/PV_Copy.html
deleted file mode 100644
index d6cc6ae..0000000
--- a/Help/UGens/FFT/PV_Copy.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {text-decoration: underline}
-span.s7 {color: #0000bf}
-span.s8 {color: #007300}
-span.s9 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_Copy<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>copy an FFT buffer</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../PV_ChainUGen.html"><span class="s4"><b>PV_ChainUGen</b></span></a><b> : </b><a href="PV_MagMul.html"><span class="s5"><b>PV_MagMul</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_Copy(bufferA,<span class="Apple-converted-space">  </span>bufferB)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Copies the spectral frame in bufferA to bufferB at that point in the chain of PV UGens. This allows for parallel processing of spectral data without the need for multiple FFT UGens, and to copy out data at that point in the chain for other purposes. bufferA and bufferB must be the same size.</p>
-<p class="p1"><b>bufferA</b> - source buffer.</p>
-<p class="p1"><b>bufferB</b> - destination buffer.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">See also <a href="FFT Overview.html"><span class="s6">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">s.waitForBoot {</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>d = </span><span class="s7">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//// crossfade between original and magmul-ed whitenoise</p>
-<p class="p4">(</p>
-<p class="p4">x = { <span class="s7">var</span> in, in2, chain, chainB, chainC;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s7">PlayBuf</span>.ar(1, d, <span class="s7">BufRateScale</span>.kr(d), loop: 1) * 2;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in2 = <span class="s7">WhiteNoise</span>.ar;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s7">FFT</span>(<span class="s7">LocalBuf</span>(2048), in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainB = <span class="s7">FFT</span>(<span class="s7">LocalBuf</span>(2048), in2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainC = <span class="s7">PV_Copy</span>(chain, <span class="s7">LocalBuf</span>(2048));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainB = <span class="s7">PV_MagMul</span>(chainB, chainC);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s7">XFade2</span>.ar(<span class="s7">IFFT</span>(chain), <span class="s7">IFFT</span>(chainB) * 0.1, <span class="s7">SinOsc</span>.kr(0.1, 1.5pi));</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p4">x.free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//// as previous but with Blip for 'vocoder' cross synthesis effect</p>
-<p class="p4">(</p>
-<p class="p4">x = { <span class="s7">var</span> in, in2, chain, chainB, chainC;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s7">PlayBuf</span>.ar(1, d, <span class="s7">BufRateScale</span>.kr(d), loop: 1) * 2;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in2 = <span class="s7">Blip</span>.ar(100, 50);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s7">FFT</span>(<span class="s7">LocalBuf</span>(2048), in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainB = <span class="s7">FFT</span>(<span class="s7">LocalBuf</span>(2048), in2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainC = <span class="s7">PV_Copy</span>(chain, <span class="s7">LocalBuf</span>(2048));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainB = <span class="s7">PV_MagMul</span>(chainB, chainC);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s7">XFade2</span>.ar(<span class="s7">IFFT</span>(chain), <span class="s7">IFFT</span>(chainB) * 0.1, <span class="s7">SinOsc</span>.ar(0.1));</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p4">x.free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//// Spectral 'pan'</p>
-<p class="p4">(</p>
-<p class="p4">x = { <span class="s7">var</span> in, chain, chainB, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s7">PlayBuf</span>.ar(1, d, <span class="s7">BufRateScale</span>.kr(d), loop: 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s7">FFT</span>(<span class="s7">LocalBuf</span>(2048), in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainB = <span class="s7">PV_Copy</span>(chain, <span class="s7">LocalBuf</span>(2048));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pan = <span class="s7">MouseX</span>.kr(0.001, 1.001, <span class="s8">'exponential'</span>) - 0.001;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s7">PV_BrickWall</span>(chain, pan);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainB = <span class="s7">PV_BrickWall</span>(chainB, -1 + pan); <span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5 * <span class="s7">IFFT</span>([chain, chainB]);</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p4">x.free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4">s.waitForBoot {</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s7">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>c = <span class="s7">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>d = </span><span class="s7">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>e = <span class="s7">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>f = <span class="s7">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//// proof of concept</p>
-<p class="p4">(</p>
-<p class="p4">x = { <span class="s7">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>inA = <span class="s7">LFClipNoise</span>.ar(100);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainA = <span class="s7">FFT</span>(b, inA);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chainB = <span class="s7">PV_Copy</span>(chainA, c); <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s7">IFFT</span><span class="s2">(chainA) - </span><span class="s7">IFFT</span><span class="s2">(chainB); </span>// cancels to zero so silent!</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p4">x.free;</p>
-<p class="p7">// IFFTed frames contain the same windowed output data</p>
-<p class="p4">b.plot(<span class="s8">\b</span>, <span class="s7">Rect</span>(200, 430, 700, 300)); c.plot(<span class="s8">\c</span>, <span class="s7">Rect</span>(200, 100, 700, 300));</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//// Multiple Magnitude plots</p>
-<p class="p4">(</p>
-<p class="p4">x = { <span class="s7">var</span> in, chain, chainB, chainC;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s7">WhiteNoise</span>.ar;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s7">FFT</span>(b, in);</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s7">PV_Copy</span><span class="s2">(chain, </span><span class="s7">LocalBuf</span><span class="s2">(2048)); </span>// initial spectrum</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s7">PV_RectComb</span>(chain, 20, 0, 0.2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s7">PV_Copy</span>(chain, <span class="s7">LocalBuf</span>(2048)); <span class="s9">// after comb</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>2.do({chain = <span class="s7">PV_MagSquared</span>(chain)});<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s7">PV_Copy</span><span class="s2">(chain, </span><span class="s7">LocalBuf</span><span class="s2">(2048)); </span>// after magsquared</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.00001 * <span class="s7">Pan2</span>.ar(<span class="s7">IFFT</span>(chain));</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p4">x.free;</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4">c.getToFloatArray(action: { <span class="s7">arg</span> array;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s7">var</span> z, x;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = array.clump(2).flop;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// Initially data is in complex form</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = [<span class="s7">Signal</span>.newFrom(z[0]), <span class="s7">Signal</span>.newFrom(z[1])];</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s7">Complex</span>(z[0], z[1]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{x.magnitude.plot(<span class="s8">'Initial'</span>, <span class="s7">Rect</span>(200, 560, 700, 200))}.defer</p>
-<p class="p4">});</p>
-<p class="p4">e.getToFloatArray(action: { <span class="s7">arg</span> array;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s7">var</span> z, x;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = array.clump(2).flop;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// RectComb doesn't convert, so it's still complex</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = [<span class="s7">Signal</span>.newFrom(z[0]), <span class="s7">Signal</span>.newFrom(z[1])];</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s7">Complex</span>(z[0], z[1]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{x.magnitude.plot(<span class="s8">'After RectComb'</span>, <span class="s7">Rect</span>(200, 330, 700, 200))}.defer</p>
-<p class="p4">});</p>
-<p class="p4">f.getToFloatArray(action: { <span class="s7">arg</span> array;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s7">var</span> z, x;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = array.clump(2).flop;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// MagSquared converts to Polar</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s7">Signal</span>.newFrom(z[0]); <span class="s9">// magnitude first</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>{x.plot(<span class="s8">'After MagSquared'</span>, <span class="s7">Rect</span>(200, 100, 700, 200))}.defer</p>
-<p class="p4">})</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">[b, c, d, e, f].do(<span class="s7">_</span>.free); <span class="s9">// free the buffers</span></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_CopyPhase.html b/Help/UGens/FFT/PV_CopyPhase.html
deleted file mode 100644
index 65d40fa..0000000
--- a/Help/UGens/FFT/PV_CopyPhase.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_CopyPhase<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>copy magnitudes and phases</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_CopyPhase(bufferA,<span class="Apple-converted-space">  </span>bufferB)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Combines magnitudes of first input and phases of the second input.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>bufferA</b> - fft buffer A.</p>
-<p class="p3"><b>bufferB</b> - fft buffer B.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s1">(</span>"help-copyPhase"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(<span class="s3">SinOsc</span>.kr(0.08, 0, 6, 6.2).squared, 0, 100, 800));<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_CopyPhase</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s4">\out</span>, 0]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">d = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">"help-copyPhase2"</span>, { <span class="s3">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(<span class="s3">SinOsc</span>.kr(0.08, 0, 6, 6.2).squared, 0, 100, 800));</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chainA = </span>FFT(LocalBuf(2048)<span class="s1">, inA);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chainB = </span>FFT(LocalBuf(2048)<span class="s1">, inB);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_CopyPhase</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\soundBufnum</span>, d]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">d.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_Diffuser.html b/Help/UGens/FFT/PV_Diffuser.html
deleted file mode 100644
index 2a14270..0000000
--- a/Help/UGens/FFT/PV_Diffuser.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.s8 {color: #0000bf}
-span.s9 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_Diffuser<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>random phase shifting</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../PV_ChainUGen.html"><span class="s4"><b>PV_ChainUGen</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_Diffuser(buffer,<span class="Apple-converted-space">  </span>trig)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Adds a different constant random phase shift to each bin.</p>
-<p class="p1">The trigger will select a new set of random phases.</p>
-<p class="p1"><b>buffer</b> - fft buffer.</p>
-<p class="p1"><b>trig</b> - a trigger selects a new set of random values.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">See also <a href="FFT Overview.html"><span class="s5">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p4">s.boot;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p6">// trig with MouseY</p>
-<p class="p7"><span class="s6">SynthDef</span><span class="s2">(</span>"help-diffuser"<span class="s2">, { </span><span class="s6">arg</span><span class="s2"> out=0;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s6">Mix</span>.ar(<span class="s6">SinOsc</span>.ar(200 * (1..10), 0, <span class="s6">Array</span>.fill(10, {rrand(0.1, 0.2)}) ));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s6">FFT</span>(<span class="s6">LocalBuf</span>(2048), in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s6">PV_Diffuser</span>(chain, <span class="s6">MouseY</span>.kr > 0.5 );<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out, 0.5 * <span class="s6">IFFT</span>(chain).dup);</p>
-<p class="p4">}).play(s,[<span class="s7">\out</span>, 0]);</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2">d = </span><span class="s8">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p6">// trig with MouseY</p>
-<p class="p4"><span class="s6">SynthDef</span>(<span class="s9">"help-diffuser2"</span>, { <span class="s6">arg</span> out=0, soundBufnum=2;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s6">PlayBuf</span>.ar(1, soundBufnum, <span class="s6">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s6">FFT</span>(<span class="s6">LocalBuf</span>(2048), in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s6">PV_Diffuser</span>(chain, <span class="s6">MouseY</span>.kr > 0.5 );<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out, 0.5 * <span class="s6">IFFT</span>(chain).dup);</p>
-<p class="p4">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\soundBufnum</span>, d]);</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">d.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_Div.html b/Help/UGens/FFT/PV_Div.html
deleted file mode 100644
index 6b8beef..0000000
--- a/Help/UGens/FFT/PV_Div.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bec}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9c221b}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b6}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9c221b; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {text-decoration: underline ; color: #0039dd}
-span.s5 {color: #0033f5}
-span.s6 {color: #0016bd}
-span.s7 {color: #0026b6}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_Div<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>complex division</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_Div(bufferA,<span class="Apple-converted-space">  </span>bufferB)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Complex division.</p>
-<p class="p3"><b>bufferA</b> - fft buffer A.</p>
-<p class="p3"><b>bufferB</b> - fft buffer B.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="PV_Mul.html"><span class="s3">PV_Mul</span></a>, <a href="PV_MagDiv.html"><span class="s3">PV_MagDiv</span></a>, <a href="FFT Overview.html"><span class="s4">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>Example</b></p>
-<p class="p3">In this example we estimate the transfer function of the <a href="../Filters/LPF.html"><span class="s5">LPF</span></a> UGen. The transfer function is estimated by dividing the FFT of the output, by the FFT of the input, and looking at the magnitudes in the result.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">s.waitForBoot {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">var</span> fftsize = 16384;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b = <span class="s6">Buffer</span>.alloc(s, fftsize)</p>
-<p class="p6">}</p>
-<p class="p6">);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">x = {</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// Any input should theoretically be OK, white noise is a good choice</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>var<span class="s2"> son = </span>WhiteNoise<span class="s2">.ar;</span></p>
-<p class="p7">//<span class="Apple-tab-span">	</span>var son = Impulse.ar;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> out = <span class="s7">LPF</span>.ar(son, <span class="s7">MouseX</span>.kr(100, 10000, 1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> fft1 = <span class="s7">FFT</span>(<span class="s7">LocalBuf</span>(b.numFrames), son, wintype: 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> fft2 = <span class="s7">FFT</span>(b, out, wintype: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// As with most PV_ ugens, the result is *actually* stored in the first fft buf</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> result = <span class="s7">PV_Div</span>(fft2, fft1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(0, out.dup * 0.1);</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p9"><br></p>
-<p class="p7">// Now we can grab the FFT buffer and peek at the magnitudes</p>
-<p class="p6">(</p>
-<p class="p6">w = <span class="s6">Window</span>.new.front;</p>
-<p class="p6">t = <span class="s6">Task</span>{loop{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.1.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.loadToFloatArray(action: {<span class="s6">|data|</span> {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.view.children.do(<span class="s6">_</span>.remove);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>w.refresh;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>data[2..].clump(2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.collect {<span class="s6">|a|</span> (a[0].squared + a[1].squared)}</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.collect {<span class="s6">|a|</span> if(a.isNaN){ 0.post }{ a } }</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.plot(parent: w)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.defer});</p>
-<p class="p6">}}.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_HainsworthFoote.html b/Help/UGens/FFT/PV_HainsworthFoote.html
deleted file mode 100644
index 41927ac..0000000
--- a/Help/UGens/FFT/PV_HainsworthFoote.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 22.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #001bb9}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_HainsworthFoote</b></p>
-<p class="p2"><br></p>
-<p class="p3">FFT onset detector based on work described in<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Hainsworth, S. (2003) Techniques for the Automated Analysis of Musical Audio. PhD, University of Cambridge engineering dept. See especially p128. The Hainsworth metric is a modification of the Kullback Liebler distance.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The onset detector has general ability to spot spectral change, so may have some ability to track chord changes<span class="Apple-converted-space">  </span>aside from obvious transient jolts, but there's no guarantee it won't be confused by frequency modulation artifacts.<span class="Apple-converted-space">   </span></p>
-<p class="p2"><br></p>
-<p class="p3">Hainsworth metric on it's own gives good results but Foote might be useful in some situations: experimental.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*ar(buffer, proph=0.0, propf=0.0, threshold=1.0, waittime=0.04)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>buffer-</b> FFT buffer to read from</p>
-<p class="p2"><br></p>
-<p class="p3"><b>proph-</b> What strength of detection signal from Hainsworth metric to use.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>propf-</b> What strength of detection signal from Foote metric to use. The Foote metric is normalised to [0.0,1.0]</p>
-<p class="p2"><br></p>
-<p class="p3"><b>threshold-</b> Threshold hold level for allowing a detection</p>
-<p class="p2"><br></p>
-<p class="p3"><b>waittime-</b> If triggered, minimum wait until a further frame can cause another spot (useful to stop multiple detects on heavy signals)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// Examples</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">// just Hainsworth metric with low threshold</p>
-<p class="p8">// external sound in</p>
-<p class="p9">(</p>
-<p class="p9">{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s3">var</span> source1, signal, detect;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>source1 = <span class="s3">SoundIn</span>.ar(0);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>detect = <span class="s3">PV_HainsworthFoote</span>.ar(<span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), source1), 1.0, 0.0);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>signal = <span class="s3">SinOsc</span>.ar([440,445], 0, <span class="s3">Decay</span>.ar(0.1 * detect, 0.1));</p>
-<p class="p10"><span class="s1"><span class="Apple-tab-span">	</span></span>signal</p>
-<p class="p9">}.play;<span class="Apple-tab-span">	</span></p>
-<p class="p9">)<span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p11"><br></p>
-<p class="p8">// spot note transitions<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12">(</p>
-<p class="p12">{</p>
-<p class="p12"><span class="Apple-converted-space"> </span><span class="s4">var</span> source1, signal, detect;</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>source1 = <span class="s4">LFSaw</span>.ar(<span class="s4">LFNoise0</span>.kr(1, 90, 400), 0, 0.5);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>detect = <span class="s4">PV_HainsworthFoote</span>.ar(<span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), source1), 1.0, 0.0, 0.9, 0.5);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>signal = <span class="s4">SinOsc</span>.ar(440, 0, <span class="s4">Decay</span>.ar(0.1 * detect, 0.1));</p>
-<p class="p12"><span class="Apple-tab-span">	</span>[source1, signal];</p>
-<p class="p12">}.play;<span class="Apple-tab-span">	</span></p>
-<p class="p12">)</p>
-<p class="p11"><br></p>
-<p class="p8">// not so sucessful with this test sound:<span class="Apple-converted-space"> </span></p>
-<p class="p8">// mouse y is difficulty, mouse x is threshold</p>
-<p class="p12">(</p>
-<p class="p12">{</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s4">var</span> source1, detect, difficulty, rate, trig, n = 20;</p>
-<p class="p12"><span class="Apple-tab-span">	</span>rate = <span class="s4">LFNoise1</span>.kr(0.3).exprange(1, 5);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>difficulty = <span class="s4">MouseY</span>.kr(0, 1);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(rate);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>source1 = { <span class="s4">|i|</span></p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> t = <span class="s4">CoinGate</span>.kr(1 - difficulty, trig);</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(<span class="s4">TExpRand</span>.kr(300, 1000, t) * (i + 1)) * <span class="s4">TRand</span>.kr(0, 1, t)<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span">	</span>}.dup(10).sum;</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// source1 = source1 * Decay.kr(trig, 0.5);</p>
-<p class="p12"><span class="Apple-tab-span">	</span>detect = <span class="s4">PV_HainsworthFoote</span>.ar(<span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), source1), threshold: <span class="s4">MouseX</span>.kr(0.01, 1.0));</p>
-<p class="p12"><span class="Apple-tab-span">	</span><span class="s4">WhiteNoise</span>.ar * <span class="s4">Decay</span>.ar(detect, 0.1) + (source1 * 0.2);</p>
-<p class="p12">}.play;<span class="Apple-tab-span">	</span></p>
-<p class="p12">)</p>
-<p class="p11"><br></p>
-<p class="p11"><br></p>
-<p class="p6">// tests using sound in</p>
-<p class="p7"><br></p>
-<p class="p6">// Foote solo - never triggers with threshold over 1.0, threshold under mouse control</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p9">(</p>
-<p class="p9">{</p>
-<p class="p9"><span class="Apple-converted-space"> </span><span class="s3">var</span> source1, signal, detect;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>source1 = <span class="s3">SoundIn</span>.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>detect = <span class="s3">PV_HainsworthFoote</span>.ar(<span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), source1), 0.0, 1.0,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">MouseX</span>.kr(0.0,1.1), 0.02);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>signal = <span class="s3">SinOsc</span>.ar(440, 0, <span class="s3">Decay</span>.ar(0.1 * detect, 0.1));</p>
-<p class="p9"><span class="Apple-tab-span">	</span>[source1, signal];</p>
-<p class="p9">}.play;<span class="Apple-tab-span">	</span></p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">// compare to Amplitude UGen</p>
-<p class="p9">(</p>
-<p class="p9">{</p>
-<p class="p9"><span class="Apple-converted-space"> </span><span class="s3">var</span> source1, signal, detect;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>source1= <span class="s3">SoundIn</span>.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>detect= (<span class="s3">Amplitude</span>.ar(source1)) > (<span class="s3">MouseX</span>.kr(0.0,1.1));</p>
-<p class="p9"><span class="Apple-tab-span">	</span>signal = <span class="s3">SinOsc</span>.ar(440, 0, <span class="s3">Decay</span>.ar(0.1 * detect, 0.1));</p>
-<p class="p9"><span class="Apple-tab-span">	</span>[source1, signal];</p>
-<p class="p9">}.play;<span class="Apple-tab-span">	</span></p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_JensenAndersen.html b/Help/UGens/FFT/PV_JensenAndersen.html
deleted file mode 100644
index bdb6eac..0000000
--- a/Help/UGens/FFT/PV_JensenAndersen.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 22.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #5a653b}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_JensenAndersen</b></p>
-<p class="p2"><br></p>
-<p class="p3">FFT feature detector for onset detection based on work described in<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">Jensen,K. & Andersen, T. H. (2003). Real-time Beat Estimation Using Feature Extraction.<span class="Apple-converted-space"> </span></p>
-<p class="p4">In Proceedings of the Computer Music Modeling and Retrieval Symposium, Lecture Notes in Computer Science. Springer Verlag.</p>
-<p class="p2"><br></p>
-<p class="p3">First order derivatives of the features are taken. Threshold may need to be set low to pick up on changes.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*ar(buffer, propsc=0.25, prophfe=0.25, prophfc=0.25, propsf=0.25, threshold=1.0, waittime=0.04)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>buffer-</b> FFT buffer to read from.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>propsc-</b> Proportion of spectral centroid feature.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>prophfe-</b> Proportion of high frequency energy feature.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>prophfc-</b> Proportion of high frequency content feature.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>propsf-</b> Proportion of spectral flux feature.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>threshold-</b> Threshold level for allowing a detection</p>
-<p class="p2"><br></p>
-<p class="p3"><b>waittime-</b> If triggered, minimum wait until a further frame can cause another spot (useful to stop multiple detects on heavy signals)</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// Examples</p>
-<p class="p7"><br></p>
-<p class="p8">// external sound in<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9">(</p>
-<p class="p9">{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s3">var</span> source1, detect;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>source1 = <span class="s3">SoundIn</span>.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>detect = <span class="s3">PV_JensenAndersen</span>.ar(<span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), source1), threshold:<span class="s3">MouseX</span>.kr(0.1,1.0));</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar([440, 445], 0, <span class="s3">Decay</span>.ar(0.1 * detect, 0.1));</p>
-<p class="p9">}.play;<span class="Apple-tab-span">	</span></p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// using test sound:<span class="Apple-converted-space"> </span></p>
-<p class="p8">// mouse y is difficulty, mouse x is threshold</p>
-<p class="p9">(</p>
-<p class="p9">{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s3">var</span> source1, detect, difficulty, rate;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>rate = <span class="s3">LFNoise1</span>.kr(0.3).exprange(1, 5);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>difficulty = <span class="s3">MouseY</span>.kr(0.01, 0.4, 1);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>source1 = <span class="s3">Decay</span>.ar(<span class="s3">Impulse</span>.ar(rate), 0.5 / rate, 1 - difficulty, difficulty);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>source1 = source1 * <span class="s3">PinkNoise</span>.ar(1.dup);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>detect = <span class="s3">PV_JensenAndersen</span>.ar(<span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), source1), threshold: <span class="s3">MouseX</span>.kr(0.1,1.0));</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar([440, 445], 0, <span class="s3">Decay</span>.ar(0.1 * detect, 0.1)) + source1;</p>
-<p class="p9">}.play;<span class="Apple-tab-span">	</span></p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_LocalMax.html b/Help/UGens/FFT/PV_LocalMax.html
deleted file mode 100644
index 2088bd9..0000000
--- a/Help/UGens/FFT/PV_LocalMax.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.s8 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_LocalMax<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>pass bins which are a local maximum</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../PV_ChainUGen.html"><span class="s4"><b>PV_ChainUGen</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_LocalMax(buffer,<span class="Apple-converted-space">  </span>threshold)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Passes only bins whose magnitude is above a threshold and above their nearest neighbors.</p>
-<p class="p1"><b>buffer</b> - fft buffer.</p>
-<p class="p1"><b>threshold</b> - magnitude threshold.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">See also <a href="FFT Overview.html"><span class="s5">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p4">s.boot;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p6"><span class="s6">SynthDef</span><span class="s2">(</span>"help-localMax"<span class="s2">, { </span><span class="s6">arg</span><span class="s2"> out=0;</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s6">Mix</span>.arFill(3, { <span class="s6">LFSaw</span>.ar(exprand(100, 500), 0, 0.1); });</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s6">FFT</span>(<span class="s6">LocalBuf</span>(2048), in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s6">PV_LocalMax</span>(chain, <span class="s6">MouseX</span>.kr(0, 50));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out, 0.5 * <span class="s6">IFFT</span>(chain).dup);</p>
-<p class="p4">}).play(s,[<span class="s7">\out</span>, 0]);</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">d = </span><span class="s6">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s6">SynthDef</span>(<span class="s8">"help-localMax2"</span>, { <span class="s6">arg</span> out=0, soundBufnum=2;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s6">PlayBuf</span>.ar(1, soundBufnum, <span class="s6">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s6">FFT</span>(<span class="s6">LocalBuf</span>(2048), in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s6">PV_LocalMax</span>(chain, <span class="s6">MouseX</span>.kr(0, 100));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out, 0.5 * <span class="s6">IFFT</span>(chain).dup);</p>
-<p class="p4">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\soundBufnum</span>, d]);</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">d.free;</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagAbove.html b/Help/UGens/FFT/PV_MagAbove.html
deleted file mode 100644
index a73fb14..0000000
--- a/Help/UGens/FFT/PV_MagAbove.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #842d1c}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0029ac}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0029ac}
-span.s4 {color: #606060}
-span.s5 {color: #4e6a26}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_MagAbove<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pass bins above a threshold</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_MagAbove(buffer, threshold)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Passes only bins whose magnitude is above a threshold.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>threshold</b> - magnitude threshold.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">SynthDef</span><span class="s1">(</span>"help-magAbove"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(<span class="s3">SinOsc</span>.kr(0.08, 0, 6, 6.2).squared, 0, 100, 800));</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>//in = WhiteNoise.ar(0.2);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chain = </span>FFT(LocalBuf(2048)<span class="s1">, in);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagAbove</span>(chain, 310);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">SynthDef</span><span class="s1">(</span>"help-magAbove2"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chain = </span>FFT(LocalBuf(2048)<span class="s1">, in);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagAbove</span>(chain, <span class="s3">MouseX</span>.kr(0, 10));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p6"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p9"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magAbove3"</span>, { <span class="s3">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chain = </span>FFT(LocalBuf(2048)<span class="s1">, in);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagAbove</span>(chain, <span class="s3">MouseX</span>.kr(0, 310));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p9"><br></p>
-<p class="p5">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagBelow.html b/Help/UGens/FFT/PV_MagBelow.html
deleted file mode 100644
index 281d29a..0000000
--- a/Help/UGens/FFT/PV_MagBelow.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0016e6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #091fb1}
-span.s4 {color: #606060}
-span.s5 {color: #456c20}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_MagBelow<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pass bins below a threshold</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_MagBelow(buffer, threshold)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Passes only bins whose magnitude is below a threshold.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>threshold</b> - magnitude threshold.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">(</p>
-<p class="p5">b = <span class="s3">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magBelow"</span>, { <span class="s3">arg</span> out=0, bufnum=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(<span class="s3">SinOsc</span>.kr(0.08, 0, 6, 6.2).squared, 0, 100, 800));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(bufnum, in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagBelow</span>(chain, 10);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magBelow2"</span>, { <span class="s3">arg</span> out=0, bufnum=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(bufnum, in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagBelow</span>(chain, <span class="s3">MouseX</span>.kr(0, 7));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magBelow3"</span>, { <span class="s3">arg</span> out=0, bufnum=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(bufnum, in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagBelow</span>(chain, <span class="s3">MouseX</span>.kr(0, 310));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">b.free; c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagClip.html b/Help/UGens/FFT/PV_MagClip.html
deleted file mode 100644
index 31f64b9..0000000
--- a/Help/UGens/FFT/PV_MagClip.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0016e6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #091fb1}
-span.s4 {color: #606060}
-span.s5 {color: #456c20}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_MagClip<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clip bins to a threshold</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_MagClip(buffer,<span class="Apple-converted-space">  </span>threshold)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Clips bin magnitudes to a maximum threshold.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>threshold</b> - magnitude threshold.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">(</p>
-<p class="p5">b = <span class="s3">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magClip"</span>, { <span class="s3">arg</span> out=0, bufnum=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">Mix</span>.arFill(3, { <span class="s3">LFSaw</span>.ar(exprand(100, 500), 0, 0.1); });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(bufnum, in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagClip</span>(chain, <span class="s3">MouseX</span>.kr(0, 15));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magClip2"</span>, { <span class="s3">arg</span> out=0, bufnum=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(bufnum, in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagClip</span>(chain, <span class="s3">MouseX</span>.kr(0, 50));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">b.free; c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagDiv.html b/Help/UGens/FFT/PV_MagDiv.html
deleted file mode 100644
index 6816b9b..0000000
--- a/Help/UGens/FFT/PV_MagDiv.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0030a7}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0030a7}
-span.s4 {color: #606060}
-span.s5 {color: #54682b}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_MagDiv<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>division of magnitudes</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_MagDiv(bufferA,<span class="Apple-converted-space">  </span>bufferB, <span class="Apple-converted-space">  </span>zeroed)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Divides magnitudes of two inputs and keeps the phases of the first input.</p>
-<p class="p3"><b>bufferA</b> - fft buffer A.</p>
-<p class="p3"><b>bufferB</b> - fft buffer B.</p>
-<p class="p3"><b>zeroed</b> - number to use when bins are zeroed out, i.e. causing division by zero (defaults to 0.0001)</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s1">(</span>"help-magMul"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB = <span class="s3">LFSaw</span>.ar(100, 0, 0.2);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chainA = </span>FFT(LocalBuf(2048)<span class="s1">, inA);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chainB = </span>FFT(LocalBuf(2048)<span class="s1">, inB);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagDiv</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magMul2"</span>, { <span class="s3">arg</span> out=0, soundBufnum=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">LFSaw</span>.ar([100, 150], 0, 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chainA = </span>FFT(LocalBuf(2048)<span class="s1">, inA);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chainB = </span>FFT(LocalBuf(2048)<span class="s1">, inB);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagDiv</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.1 * <span class="s3">IFFT</span>(chain));</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">c.free;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagFreeze.html b/Help/UGens/FFT/PV_MagFreeze.html
deleted file mode 100644
index 1bdf387..0000000
--- a/Help/UGens/FFT/PV_MagFreeze.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0016e6}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_MagFreeze<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freeze magnitudes</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_MagFreeze(buffer, freeze)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Freezes magnitudes at current levels when freeze > 0.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>freeze</b> - if freeze > 0 then magnitudes are frozen at current levels.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">(</p>
-<p class="p5">b = <span class="s3">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magFreeze"</span>, { <span class="s3">arg</span> out=0, bufnum=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(<span class="s3">LFNoise1</span>.kr(5.2,250,400));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(bufnum, in);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>// moves in and out of freeze</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagFreeze</span>(chain, <span class="s3">SinOsc</span>.kr(0.2) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b]);</p>
-<p class="p7"><br></p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p8">//trig with MouseY</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magFreeze2"</span>, { <span class="s3">arg</span> out=0, bufnum=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(bufnum, in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagFreeze</span>(chain, <span class="s3">MouseY</span>.kr > 0.5 );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\bufnum</span>, b, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">b.free; c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagMul.html b/Help/UGens/FFT/PV_MagMul.html
deleted file mode 100644
index 3823cf4..0000000
--- a/Help/UGens/FFT/PV_MagMul.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.s7 {color: #001bb9}
-span.s8 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_MagMul<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>multiply magnitudes</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../PV_ChainUGen.html"><b>PV_ChainUGen</b></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_MagMul(bufferA,<span class="Apple-converted-space">  </span>bufferB)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Multiplies magnitudes of two inputs and keeps the phases of the first input.</p>
-<p class="p1"><b>bufferA</b> - fft buffer A.</p>
-<p class="p1"><b>bufferB</b> - fft buffer B.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="FFT Overview.html"><span class="s4">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s5">SynthDef</span>(<span class="s6">\help_magMul</span>, { <span class="s5">arg</span> out=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>inA = <span class="s5">WhiteNoise</span>.ar(0.2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>inB = <span class="s5">LFSaw</span>.ar(100, 0, 0.2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainA = <span class="s5">FFT</span>(<span class="s5">LocalBuf</span>(2048), inA);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainB = <span class="s5">FFT</span>(<span class="s5">LocalBuf</span>(2048), inB);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s5">PV_MagMul</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, 0.5 * <span class="s5">IFFT</span>(chain).dup);</p>
-<p class="p7">}).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s2">c = </span><span class="s7">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s5">SynthDef</span>(<span class="s6">\help_magMul</span>, { <span class="s5">arg</span> out=0, soundBufnum=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>inA = <span class="s5">LFSaw</span>.ar([100, 150], 0, 0.2); <span class="s8">// stereo signal ...</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>inB = <span class="s5">PlayBuf</span>.ar(1, soundBufnum, <span class="s5">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainA = <span class="s5">FFT</span>({ <span class="s5">LocalBuf</span>(2048) }.dup, inA); <span class="s8">// ... needs two buffers.</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainB = <span class="s5">FFT</span>(<span class="s5">LocalBuf</span>(2048), inB);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s5">PV_MagMul</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.1 * <span class="s5">IFFT</span>(chain));</p>
-<p class="p7">}).play(s, [<span class="s6">\out</span>, 0, <span class="s6">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagNoise.html b/Help/UGens/FFT/PV_MagNoise.html
deleted file mode 100644
index a4fa904..0000000
--- a/Help/UGens/FFT/PV_MagNoise.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0030a7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0030a7}
-span.s5 {color: #54682b}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_MagNoise<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>multiply magnitudes by noise</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../PV_ChainUGen.html"><b>PV_ChainUGen</b></a><b> : </b><a href="PV_MagSquared.html"><b>PV_MagSquared</b></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_MagNoise.new(buffer)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Magnitudes are multiplied with noise.</p>
-<p class="p1"><b>buffer</b> - fft buffer.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="FFT Overview.html"><span class="s3">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s2">(</span>"help-magNoise"<span class="s2">, { </span><span class="s4">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s4">SinOsc</span>.ar(<span class="s4">SinOsc</span>.kr(<span class="s4">SinOsc</span>.kr(0.08, 0, 6, 6.2).squared, 0, 100, 800));</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span>chain = </span>FFT(LocalBuf(2048)<span class="s2">, in);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_MagNoise</span>(chain);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, 0.5 * <span class="s4">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">c = </span><span class="s4">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">SynthDef</span>(<span class="s6">"help-magNoise2"</span>, {<span class="Apple-converted-space">  </span><span class="s4">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s4">PlayBuf</span>.ar(1, soundBufnum, <span class="s4">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span>chain = </span>FFT(LocalBuf(2048)<span class="s2">, in);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_MagNoise</span>(chain);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, 0.5 * <span class="s4">IFFT</span>(chain).dup);<span class="Apple-converted-space"> </span></p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagShift.html b/Help/UGens/FFT/PV_MagShift.html
deleted file mode 100644
index 3b353a4..0000000
--- a/Help/UGens/FFT/PV_MagShift.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_MagShift<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>shift and stretch magnitude bin position</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_MagShift(buffer,<span class="Apple-converted-space">  </span>stretch,<span class="Apple-converted-space">  </span>shift)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Shift and stretch the positions of only the magnitude of the bins.<span class="Apple-converted-space"> </span></p>
-<p class="p3">Can be used as a very crude frequency shifter/scaler.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>stretch</b> - scale bin location by factor.</p>
-<p class="p3"><b>shift</b> - add an offset to bin position.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s1">(</span>"help-magStretch"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">LFSaw</span>.ar(200, 0, 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagShift</span>(chain, <span class="s3">MouseX</span>.kr(0.25, 4, <span class="s4">\exponential</span>) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">"help-magStretch2"</span>, { <span class="s3">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagShift</span>(chain, <span class="s3">MouseX</span>.kr(0.25, 4, <span class="s4">\exponential</span>) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s1">(</span>"help-magShift"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">LFSaw</span>.ar(200, 0, 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagShift</span>(chain, 1, <span class="s3">MouseX</span>.kr(-128, 128) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">"help-magShift2"</span>, {<span class="Apple-converted-space">  </span><span class="s3">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagShift</span>(chain, 1, <span class="s3">MouseX</span>.kr(-128, 128) );<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagSmear.html b/Help/UGens/FFT/PV_MagSmear.html
deleted file mode 100644
index 5d3d15f..0000000
--- a/Help/UGens/FFT/PV_MagSmear.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_MagSmear<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>average magnitudes across bins</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_MagSmear(buffer,<span class="Apple-converted-space">  </span>bins)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Average a bin's magnitude with its neighbors.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>bins</b> - number of bins to average on each side of bin. As this number rises, so will CPU usage.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p9"><span class="s3">SynthDef</span><span class="s1">(</span>"help-magSmear"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>in = <span class="s3">LFSaw</span>.ar(500, 0, <span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(2,0,0.2), 0.01, 2));</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagSmear</span>(chain, <span class="s3">MouseX</span>.kr(0, 100));<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p8">}).play;</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p9"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">SynthDef</span>(<span class="s4">"help-magSmear2"</span>, { <span class="s3">arg</span> out=0, soundBufnum=2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagSmear</span>(chain, <span class="s3">MouseX</span>.kr(0, 100));<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p8">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p8">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_MagSquared.html b/Help/UGens/FFT/PV_MagSquared.html
deleted file mode 100644
index ea57056..0000000
--- a/Help/UGens/FFT/PV_MagSquared.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0029ac}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0029ac}
-span.s4 {color: #606060}
-span.s5 {color: #4e6a26}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_MagSquared<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>square magnitudes</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_MagSquared(buffer)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Squares the magnitudes and renormalizes to previous peak. This makes weak bins weaker.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-magSquared"</span>, {<span class="Apple-converted-space">  </span><span class="s3">arg</span> out=0, bufnum=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>chain = </span>FFT(LocalBuf(2048),<span class="s1"> in);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagSquared</span>(chain);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, 0.003 * <span class="s3">IFFT</span>(chain).dup);<span class="Apple-converted-space"> </span></p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_Max.html b/Help/UGens/FFT/PV_Max.html
deleted file mode 100644
index 9e363b3..0000000
--- a/Help/UGens/FFT/PV_Max.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #001bb9}
-span.s4 {color: #ad140d}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_Max<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum magnitude</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_Max(bufferA,<span class="Apple-converted-space">  </span>bufferB)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Output copies bins with the maximum magnitude of the two inputs.</p>
-<p class="p3"><b>bufferA</b> - fft buffer A.</p>
-<p class="p3"><b>bufferB</b> - fft buffer B.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">Saw</span>.ar(<span class="s3">LFNoise1</span>.kr(2).exprange(10, 1000));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">Pulse</span>.ar(<span class="s3">LFNoise1</span>.kr(2).exprange(10, 1000));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_Max</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1 * <span class="s3">IFFT</span>(chain).dup;</p>
-<p class="p5">}.play</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// 2-channel version:</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">Saw</span>.ar(<span class="s3">LFNoise1</span>.kr(2).exprange(10, 1000)); <span class="s4">// same saw through different pulses</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">Pulse</span>.ar(<span class="s3">LFNoise1</span>.kr(2.dup).exprange(10, 1000));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048.dup), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048.dup), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_Max</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p5">}.play</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">\help_max</span>, { <span class="s3">arg</span> out=0, soundBufnum1=0, soundBufnum2 = 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">PlayBuf</span>.ar(1, soundBufnum1, <span class="s3">BufRateScale</span>.kr(soundBufnum1), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">PlayBuf</span>.ar(1, soundBufnum2, <span class="s3">BufRateScale</span>.kr(soundBufnum2), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_Max</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).store;</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s1">q = q ? (); </span>// use global dictionary</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>q[</span><span class="s5">\bufferA</span><span class="s1">] = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">CocoaDialog</span><span class="s1">.getPaths({ </span><span class="s3">arg</span><span class="s1"> paths; </span>// get a second soundfile;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>paths.do({ <span class="s3">arg</span> p;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q[<span class="s5">\bufferB</span>] = <span class="s3">Buffer</span>.read(s, p);</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Synth</span><span class="s1">(</span>\help_max<span class="s1">, [</span>\out<span class="s1">, 0, </span>\soundBufnum1<span class="s1">, q[</span>\bufferA<span class="s1">], </span>\soundBufnum2<span class="s1">, q[</span>\bufferB<span class="s1">]]);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">},{</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>"cancelled"<span class="s1">.postln;</span></p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">q[<span class="s5">\bufferA</span>].free;</p>
-<p class="p5">q[<span class="s5">\bufferB</span>].free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_Min.html b/Help/UGens/FFT/PV_Min.html
deleted file mode 100644
index e7e134e..0000000
--- a/Help/UGens/FFT/PV_Min.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #bf0000}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_Min<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>minimum magnitude</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_Min(bufferA,<span class="Apple-converted-space">  </span>bufferB)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Output copies bins with the minimum magnitude of the two inputs.</p>
-<p class="p3"><b>bufferA</b> - fft buffer A.</p>
-<p class="p3"><b>bufferB</b> - fft buffer B.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">Saw</span>.ar(<span class="s3">LFNoise1</span>.kr(2).exprange(10, 1000));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">Pulse</span>.ar(<span class="s3">LFNoise1</span>.kr(2).exprange(10, 1000));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_Min</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1 * <span class="s3">IFFT</span>(chain).dup;</p>
-<p class="p5">}.play</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// stereo version:</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">Saw</span>.ar(<span class="s3">LFNoise1</span>.kr(2).exprange(10, 1000)); <span class="s4">// same saw through different pulses</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">Pulse</span>.ar(<span class="s3">LFNoise1</span>.kr(2.dup).exprange(10, 1000));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048.dup), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048.dup), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_Min</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p5">}.play</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">\help_max</span>, { <span class="s3">arg</span> out=0, soundBufnum1=0, soundBufnum2 = 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">PlayBuf</span>.ar(1, soundBufnum1, <span class="s3">BufRateScale</span>.kr(soundBufnum1), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">PlayBuf</span>.ar(1, soundBufnum2, <span class="s3">BufRateScale</span>.kr(soundBufnum2), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_Min</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).store;</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s1">q = q ? (); </span>// use global dictionary</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span>q[</span><span class="s5">\bufferA</span><span class="s1">] = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">CocoaDialog</span><span class="s1">.getPaths({ </span><span class="s3">arg</span><span class="s1"> paths; </span>// get a second soundfile;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>paths.do({ <span class="s3">arg</span> p;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q[<span class="s5">\bufferB</span>] = <span class="s3">Buffer</span>.read(s, p);</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Synth</span><span class="s1">(</span>\help_max<span class="s1">, [</span>\out<span class="s1">, 0, </span>\soundBufnum1<span class="s1">, q[</span>\bufferA<span class="s1">], </span>\soundBufnum2<span class="s1">, q[</span>\bufferB<span class="s1">]]);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">},{</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>"cancelled"<span class="s1">.postln;</span></p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">q[<span class="s5">\bufferA</span>].free;</p>
-<p class="p5">q[<span class="s5">\bufferB</span>].free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_Mul.html b/Help/UGens/FFT/PV_Mul.html
deleted file mode 100644
index f17e898..0000000
--- a/Help/UGens/FFT/PV_Mul.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #0000bf}
-span.s5 {color: #bf0000}
-span.s6 {color: #0029ac}
-span.s7 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_Mul<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>complex multiply</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_Mul(bufferA,<span class="Apple-converted-space">  </span>bufferB)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Complex Multiplication: (RealA * RealB) - (ImagA * ImagB), (ImagA * RealB) + (RealA * ImagB)</p>
-<p class="p3"><b>bufferA</b> - fft buffer A.</p>
-<p class="p3"><b>bufferB</b> - fft buffer B.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="FFT Overview.html"><span class="s3">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inA = <span class="s4">Saw</span>.ar(<span class="s4">LFNoise1</span>.kr(2).exprange(10, 1000));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s4">Pulse</span>.ar(<span class="s4">LFNoise1</span>.kr(2).exprange(10, 1000));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chainA = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), inA);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chainB = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), inB);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_Mul</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.03 * <span class="s4">IFFT</span>(chain).dup;</p>
-<p class="p6">}.play</p>
-<p class="p6">);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// stereo version:</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inA = <span class="s4">Saw</span>.ar(<span class="s4">LFNoise1</span>.kr(2).exprange(10, 1000)); <span class="s5">// same saw through different pulses</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s4">Pulse</span>.ar(<span class="s4">LFNoise1</span>.kr(2.dup).exprange(10, 1000));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chainA = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048.dup), inA);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chainB = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048.dup), inB);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_Mul</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.03 * <span class="s4">IFFT</span>(chain);</p>
-<p class="p6">}.play</p>
-<p class="p6">);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">SynthDef</span>(<span class="s7">"help-mul"</span>, { <span class="s6">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inA = <span class="s6">SinOsc</span>.ar(500, 0, 0.5);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s6">SinOsc</span>.ar(<span class="s6">Line</span>.kr(100, 400, 5), 0, 0.5);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chainA = <span class="s6">FFT</span>(<span class="s4">LocalBuf</span>(2048), inA);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chainB = <span class="s6">FFT</span>(<span class="s4">LocalBuf</span>(2048), inB);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s6">PV_Mul</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.5 * <span class="s6">IFFT</span>(chain).dup);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s6">SynthDef</span>(<span class="s7">"help-mul2"</span>, { <span class="s6">arg</span> out=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inA = <span class="s6">SinOsc</span>.ar(500, 0, 0.5) * <span class="s6">Line</span>.kr;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inB = <span class="s6">LFNoise1</span>.ar(20);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chainA = <span class="s6">FFT</span>(<span class="s4">LocalBuf</span>(2048), inA);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chainB = <span class="s6">FFT</span>(<span class="s4">LocalBuf</span>(2048), inB);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>chain = <span class="s6">PV_Mul</span>(chainA, chainB);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.5 * <span class="s6">IFFT</span>(chain).dup);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_PhaseShift.html b/Help/UGens/FFT/PV_PhaseShift.html
deleted file mode 100644
index 24510d2..0000000
--- a/Help/UGens/FFT/PV_PhaseShift.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {color: #ad140d}
-span.s6 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_PhaseShift<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>shift phase of all bins</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../PV_ChainUGen.html"><b>PV_ChainUGen</b></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_PhaseShift(buffer, shift)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>buffer</b> - fft buffer.</p>
-<p class="p1"><b>shift</b> - phase shift in radians.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="FFT Overview.html"><span class="s3">FFT Overview</span></a>.</span></p>
-<p class="p5"><br></p>
-<p class="p6">// internal server for scoping</p>
-<p class="p7"><span class="s4">Server</span>.default = s = <span class="s4">Server</span>.internal; s.boot;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s4">SinOsc</span>.ar(500);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), in);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_PhaseShift</span>(chain, <span class="s4">LFNoise2</span>.kr(1, pi, pi));<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.2 * [in, <span class="s4">IFFT</span>(chain)]; <span class="Apple-converted-space"> </span></p>
-<p class="p7">}.scope;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s4">Impulse</span>.ar(130);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), in);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_PhaseShift</span>(chain, <span class="s4">LFNoise2</span>.kr(1, pi, pi));<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.2 * [in, <span class="s4">IFFT</span>(chain)]; <span class="Apple-converted-space"> </span></p>
-<p class="p7">}.scope(zoom: 9);</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">b = <span class="s4">Buffer</span>.alloc(s, 2048);</p>
-<p class="p7">c = <span class="s4">Buffer</span>.alloc(s, 2048);</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chainA, chainB;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s4">SinOsc</span>.ar(500);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainA = <span class="s4">FFT</span>(b, in);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainB = <span class="s4">PV_Copy</span>(chainA, c);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>chainB = </span><span class="s4">PV_PhaseShift</span><span class="s2">(chainB, pi); </span>// shifted by 180 degrees</p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.2 * <span class="s4">IFFT</span>([chainA, chainB]);<span class="Apple-converted-space">  </span><span class="s5">// normal, shifted</span></p>
-<p class="p7">}.scope;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{ <span class="s4">var</span> in, chain, chainB, pan;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s4">PlayBuf</span>.ar(1, d, <span class="s4">BufRateScale</span>.kr(d), loop: 1) * 2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(b, in);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainB = <span class="s4">PV_Copy</span>(chain, c);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>pan = <span class="s4">MouseX</span>.kr(0.001, 1.001, <span class="s6">'exponential'</span>) - 0.001;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_BrickWall</span>(chain, pan);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainB = <span class="s4">PV_BrickWall</span>(chainB, -1 + pan); <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.5 * <span class="s4">IFFT</span>([chain, chainB]);</p>
-<p class="p7">}.scope;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// LocalBuf does not work for PV_PhaseShift and PV_Copy yet. Reason still unclear.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chainA, chainB;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s4">SinOsc</span>.ar(500);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainA = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), in);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainB = <span class="s4">PV_Copy</span>(chainA, <span class="s4">LocalBuf</span>(2048));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.2 * <span class="s4">IFFT</span>([chainA, chainB]);<span class="Apple-converted-space">  </span><span class="s5">// normal, shifted</span></p>
-<p class="p7">}.scope;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chainA, chainB;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s4">SinOsc</span>.ar(500);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainA = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), in);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chainB = <span class="s4">PV_Copy</span>(chainA, <span class="s4">LocalBuf</span>(2048));</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span>chainB = </span><span class="s4">PV_PhaseShift</span><span class="s2">(chainB, pi); </span>// shifted by 180 degrees</p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.2 * <span class="s4">IFFT</span>([chainA, chainB]);<span class="Apple-converted-space">  </span><span class="s5">// normal, shifted</span></p>
-<p class="p7">}.scope;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">d = </span><span class="s4">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{ <span class="s4">var</span> in, chain, chainB, pan;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s4">PlayBuf</span>.ar(1, d, <span class="s4">BufRateScale</span>.kr(d), loop: 1) * 2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), in);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>//chainB = PV_Copy(chain, LocalBuf(2048));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>pan = <span class="s4">MouseX</span>.kr(0.001, 1.001, <span class="s6">'exponential'</span>) - 0.001;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_BrickWall</span>(chain, pan);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>//chainB = PV_BrickWall(chainB, -1 + pan); <span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>//0.5 * IFFT([chain, chainB]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.5 * <span class="s4">IFFT</span>(chain)</p>
-<p class="p7">}.scope;</p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_PhaseShift270.html b/Help/UGens/FFT/PV_PhaseShift270.html
deleted file mode 100644
index 825c29c..0000000
--- a/Help/UGens/FFT/PV_PhaseShift270.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #002eaf}
-span.s5 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_PhaseShift270<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>shift phase by 270 degrees<span class="Apple-tab-span">	</span></b><span class="s1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../PV_ChainUGen.html"><b>PV_ChainUGen</b></a><b> : </b><a href="PV_MagSquared.html"><b>PV_MagSquared</b></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_PhaseShift270.new(buffer)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Shift phase of all bins by 270 degrees.</p>
-<p class="p1"><b>buffer</b> - fft buffer</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="FFT Overview.html"><span class="s3">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">Server</span>.internal.boot;</p>
-<p class="p6"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">var</span> in, fft, fft2, shifted;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s5">SinOsc</span>.ar(500, 0, 0.4);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>fft = <span class="s5">FFT</span>(<span class="s5">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>fft2 = <span class="s5">FFT</span>(<span class="s5">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>shifted = <span class="s5">PV_PhaseShift270</span>(fft);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">IFFT</span>(fft2), <span class="s5">IFFT</span>(shifted)]; <span class="Apple-converted-space"> </span></p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_PhaseShift90.html b/Help/UGens/FFT/PV_PhaseShift90.html
deleted file mode 100644
index 7f41a2b..0000000
--- a/Help/UGens/FFT/PV_PhaseShift90.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_PhaseShift90<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>shift phase by 90 degrees<span class="Apple-tab-span">	</span></b><span class="s1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../PV_ChainUGen.html"><b>PV_ChainUGen</b></a><b> : </b><a href="PV_MagSquared.html"><b>PV_MagSquared</b></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_PhaseShift90.new(buffer)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Shift phase of all bins by 90 degrees.</p>
-<p class="p1"><b>buffer</b> - fft buffer</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also <a href="FFT Overview.html"><span class="s3">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">Server</span>.internal.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, fft, fft2, shifted;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s4">SinOsc</span>.ar(500, 0, 0.4);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>fft = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>fft2 = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>shifted = <span class="s4">PV_PhaseShift90</span>(fft);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s4">IFFT</span>(fft2), <span class="s4">IFFT</span>(shifted)]; <span class="Apple-converted-space"> </span></p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_RandComb.html b/Help/UGens/FFT/PV_RandComb.html
deleted file mode 100644
index 569b4bf..0000000
--- a/Help/UGens/FFT/PV_RandComb.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_RandComb<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pass random bins</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_RandComb(buffer, wipe, trig)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Randomly clear bins.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>wipe</b> - clears bins from input in a random order as wipe goes from 0 to 1.</p>
-<p class="p3"><b>trig</b> - a trigger selects a new random ordering.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s1">(</span>"help-randcomb"<span class="s1">, { </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.8);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_RandComb</span>(chain, 0.95, <span class="s3">Impulse</span>.kr(0.4));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">c = </span><span class="s3">Buffer</span><span class="s1">.read(s, </span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p8">// trig with MouseY</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">"help-randcomb2"</span>, { <span class="s3">arg</span> out=0, soundBufnum=2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1, soundBufnum, <span class="s3">BufRateScale</span>.kr(soundBufnum), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_RandComb</span>(chain, <span class="s3">MouseY</span>.kr, <span class="s3">Impulse</span>.kr(0.4));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).play(s,[<span class="s5">\out</span>, 0, <span class="s5">\soundBufnum</span>, c]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">c.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_RandWipe.html b/Help/UGens/FFT/PV_RandWipe.html
deleted file mode 100644
index faac285..0000000
--- a/Help/UGens/FFT/PV_RandWipe.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {text-decoration: underline}
-span.s6 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_RandWipe<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>crossfade in random bin order</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../PV_ChainUGen.html"><span class="s4"><b>PV_ChainUGen</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PV_RandWipe(bufferA,<span class="Apple-converted-space">  </span>bufferB,<span class="Apple-converted-space">  </span>wipe,<span class="Apple-converted-space">  </span>trig)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Cross fades between two sounds by copying bins in a random order.</p>
-<p class="p1"><b>bufferA</b> - fft buffer A.</p>
-<p class="p1"><b>bufferB</b> - fft buffer B.</p>
-<p class="p1"><b>wipe</b> - copies bins from bufferB in a random order as wipe goes from 0 to 1.</p>
-<p class="p1"><b>trig</b> - a trigger selects a new random ordering.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">See also <a href="FFT Overview.html"><span class="s5">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// trig with MouseY</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s6">var</span> inA, chainA, inB, chainB, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s6">Mix</span>.fill(6, { <span class="s6">LFSaw</span>.ar(exprand(200, 1000), 0, 0.1) });<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB = <span class="s6">Mix</span>.fill(6, {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">LFPulse</span>.ar(exprand(80, 400), 0, 0.2, <span class="s6">SinOsc</span>.kr(4.0.linrand, 0, 0.2).max(0))<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s6">FFT</span>(<span class="s6">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s6">FFT</span>(<span class="s6">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s6">PV_RandWipe</span>(chainA, chainB, <span class="s6">MouseX</span>.kr, <span class="s6">MouseY</span>.kr > 0.5);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5 * <span class="s6">IFFT</span>(chain).dup;</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_RectComb.html b/Help/UGens/FFT/PV_RectComb.html
deleted file mode 100644
index a96bb77..0000000
--- a/Help/UGens/FFT/PV_RectComb.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.s4 {color: #0029ac}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_RectComb<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>make gaps in spectrum</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_RectComb(buffer, numTeeth,<span class="Apple-converted-space">  </span>phase,<span class="Apple-converted-space">  </span>width)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Makes a series of gaps in a spectrum.</p>
-<p class="p3"><b>buffer</b> - fft buffer.</p>
-<p class="p3"><b>numTeeth</b> - number of teeth in the comb.</p>
-<p class="p3"><b>phase</b> - starting phase of comb pulse.</p>
-<p class="p3"><b>width</b> - pulse width of comb.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_RectComb</span>(chain, 8, <span class="s3">LFTri</span>.kr(0.097, 0, 0.4, 0.5),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFTri</span>.kr(0.24, 0, -0.5, 0.5));<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">IFFT</span>(chain).dup;</p>
-<p class="p7">}.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">{</span><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s4">WhiteNoise</span>.ar(0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_RectComb</span>(chain,<span class="Apple-converted-space">  </span><span class="s4">MouseX</span>.kr(0, 32), <span class="s4">MouseY</span>.kr, 0.2);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">IFFT</span>(chain).dup;</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PV_RectComb2.html b/Help/UGens/FFT/PV_RectComb2.html
deleted file mode 100644
index 3df52fe..0000000
--- a/Help/UGens/FFT/PV_RectComb2.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #001bb9}
-span.s4 {color: #0029ac}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PV_RectComb2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>make gaps in spectrum</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PV_RectComb2(bufferA,<span class="Apple-converted-space">  </span>bufferB,<span class="Apple-converted-space">  </span>numTeeth,<span class="Apple-converted-space">  </span>phase,<span class="Apple-converted-space">  </span>width)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Alternates blocks of bins between the two inputs.</p>
-<p class="p3"><b>bufferA</b> - fft buffer A.</p>
-<p class="p3"><b>bufferB</b> - fft buffer B.</p>
-<p class="p3"><b>numTeeth</b> - number of teeth in the comb.</p>
-<p class="p3"><b>phase</b> - starting phase of comb pulse.</p>
-<p class="p3"><b>width</b> - pulse width of comb.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">See also <a href="FFT Overview.html"><span class="s2">FFT Overview</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">Saw</span>.ar(<span class="s3">LFNoise1</span>.kr(2).exprange(10, 1000));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">Pulse</span>.ar(<span class="s3">LFNoise1</span>.kr(2).exprange(10, 1000));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_RectComb2</span>(chainA, chainB, <span class="s4">MouseX</span>.kr(0, 32), <span class="s4">MouseY</span>.kr, 0.3);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1 * <span class="s3">IFFT</span>(chain).dup;</p>
-<p class="p5">}.play</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">d = </span><span class="s4">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s5">\rectcomb_max</span>, { <span class="s3">arg</span> out=0, soundBufnum1=0, soundBufnum2 = 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> inA, chainA, inB, chainB, chain ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inA = <span class="s3">PlayBuf</span>.ar(1, soundBufnum1, <span class="s3">BufRateScale</span>.kr(soundBufnum1), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>inB =<span class="Apple-converted-space">  </span><span class="s3">PlayBuf</span>.ar(1, soundBufnum2, <span class="s3">BufRateScale</span>.kr(soundBufnum2), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainA = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inA);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chainB = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(2048), inB);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_RectComb2</span>(chainA, chainB, <span class="s4">MouseX</span>.kr(0, 32), <span class="s4">MouseY</span>.kr, 0.3);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,<span class="Apple-converted-space">  </span>0.5 * <span class="s3">IFFT</span>(chain).dup);</p>
-<p class="p5">}).store;</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p8"><span class="s1">q = q ? (); </span>// use global dictionary</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span>q[</span><span class="s5">\bufferA</span><span class="s1">] = </span><span class="s3">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span><span class="s3">CocoaDialog</span><span class="s1">.getPaths({ </span><span class="s3">arg</span><span class="s1"> paths; </span>// get a second soundfile;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>paths.do({ <span class="s3">arg</span> p;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q[<span class="s5">\bufferB</span>] = <span class="s3">Buffer</span>.read(s, p);</p>
-<p class="p9"><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Synth</span><span class="s1">(</span>\rectcomb_max<span class="s1">, [</span>\out<span class="s1">, 0, </span>\soundBufnum1<span class="s1">, q[</span>\bufferA<span class="s1">], </span>\soundBufnum2<span class="s1">, q[</span>\bufferB<span class="s1">]]);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">},{</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>"cancelled"<span class="s1">.postln;</span></p>
-<p class="p5">});</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">q[<span class="s5">\bufferA</span>].free;</p>
-<p class="p5">q[<span class="s5">\bufferB</span>].free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PackFFT.html b/Help/UGens/FFT/PackFFT.html
deleted file mode 100644
index dce933e..0000000
--- a/Help/UGens/FFT/PackFFT.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 15.0px Helvetica}
-span.s2 {color: #002bf0}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PackFFT<span class="Apple-tab-span">	</span></b></span><b>Pack separate demand-rate FFT bin streams into an FFT chain buffer</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>PackFFT(chain, bufsize, magsphases)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Takes an array of magnitudes and phases, and packs them into an <a href="FFT.html"><span class="s2">FFT</span></a> buffer ready for transforming back into time-domain audio using <a href="IFFT.html"><span class="s2">IFFT</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">Most people won't need to use this directly - instead, use <a href="pvcollect.html"><span class="s2">pvcollect</span></a>, <a href="pvcalc.html"><span class="s2">pvcalc</span></a>, or <a href="pvcalc2.html"><span class="s2">pvcalc2</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p1">The input data is <b>magsphases</b>, which should be a flat array containing magnitude and phase of all bins in ascending order.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>e.g. [mag0, phase0, mag1, phase1, mag2, phase2, ... magN, phaseN]</p>
-<p class="p1">This input is typically demand-rate.</p>
-<p class="p2"><br></p>
-<p class="p1">This is technically similar to <a href="../Synth control/Demand Rate/Demand.html"><span class="s2">Demand</span></a> or <a href="../Synth control/Demand Rate/Duty.html"><span class="s2">Duty</span></a> in that it calls demand-rate UGens further up the graph to process the values, eventually calling <a href="UnpackFFT.html"><span class="s2">UnpackFFT</span></a>. These two ends of the process must in most cases see the same chain...! Otherwise behaviour is undefined and, who knows, possibly unpleasant.</p>
-<p class="p2"><br></p>
-<p class="p1">Optional parameters: <b>frombin</b> and <b>tobin</b> allow you to fill the supplied data only into a subset of the FFT bins (i.e. a single delimited frequency band), and if you do this, you can also optionally set <b>zeroothers</b> to 1 to zero all the magnitudes outside this band (otherwise they stay intact).</p>
-<p class="p2"><br></p>
-<p class="p1">For usage examples, see <a href="UnpackFFT.html"><span class="s2">UnpackFFT</span></a>, but also <a href="pvcollect.html"><span class="s2">pvcollect</span></a>, <a href="pvcalc.html"><span class="s2">pvcalc</span></a>, <a href="pvcalc2.html"><span class="s2">pvcalc2</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Here's an unusual example which uses PackFFT <i>without</i> using UnpackFFT first - essentially creating our FFT data from scratch.</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// Reminder: This isn't the intended typical usage! It's OK to do this though.</p>
-<p class="p5">(</p>
-<p class="p5">x = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> mags, phases, chain, sig;</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// Create simple undulating magnitudes</p>
-<p class="p5"><span class="Apple-tab-span">	</span>mags = {<span class="s3">FSinOsc</span>.kr(<span class="s3">ExpRand</span>(0.1, 1)).range(0, 1)}.dup(100);</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// Then give them a "rolloff" to make the sound less unpleasant</p>
-<p class="p5"><span class="Apple-tab-span">	</span>mags = mags<span class="Apple-converted-space">  </span>* ((1, 0.99 .. 0.01).squared);</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// Let's turn the bins on and off at different rates, I'm *sure* that'll sound interesting</p>
-<p class="p5"><span class="Apple-tab-span">	</span>mags = mags * {<span class="s3">LFPulse</span>.kr(2 ** <span class="s3">IRand</span>(-3, 5)).range(0, 1)}.dup(100);</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// Let's ignore phase for now</p>
-<p class="p5"><span class="Apple-tab-span">	</span>phases = 0.dup(100);</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// We need to create an FFT chain to feed our data in to.</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// The easiest way is to do an FFT on some signal which we then ignore!</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(<span class="s3">LocalBuf</span>(512), <span class="s3">FSinOsc</span>.ar);</p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// Now we can do the packing</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s3">PackFFT</span>(chain, 512, [mags, phases].flop.flatten, 0, 99, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s3">IFFT</span>(chain);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, sig.dup);</p>
-<p class="p5">}.play(s);</p>
-<p class="p5">)</p>
-<p class="p5">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/PartConv.html b/Help/UGens/FFT/PartConv.html
deleted file mode 100644
index 2e23676..0000000
--- a/Help/UGens/FFT/PartConv.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #90251e}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #000000}
-span.s2 {color: #001bb9}
-span.s3 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PartConv<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>real-time partitioned convolution</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PartConv.ar(in, fftsize, irbufnum, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Partitioned convolution. Various additional buffers must be supplied.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">Mono impulse response only! If inputting multiple channels, you'll need independent PartConvs, one for each channel.</p>
-<p class="p4"><br></p>
-<p class="p3">But the charm is: impulse response can be as large as you like (CPU load increases with IR size. Various tradeoffs based on fftsize choice, due to rarer but larger FFTs. This plug-in uses amortisation to spread processing and avoid spikes).</p>
-<p class="p4"><br></p>
-<p class="p3">Normalisation factors difficult to anticipate; convolution piles up multiple copies of the input on top of itself, so can easily overload.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - processing target</p>
-<p class="p3"><b>fftsize</b>- spectral convolution partition size (twice partition size). You must ensure that the blocksize divides the partition size and there are at least two blocks per partition (to allow for amortisation)</p>
-<p class="p3"><b>irbufnum</b>- Prepared buffer of spectra for each partition of the inpulse response</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// preparation; essentially, allocate an impulse response buffer, then follow a special buffer preparation step to set up the data the plugin needs. Different options are provided commented out for loading impulse responses from soundfiles.</p>
-<p class="p6">(</p>
-<p class="p5"><span class="s1">~fftsize=2048; </span>// also 4096 works on my machine; 1024 too often and amortisation too pushed, 8192 more high load FFT</p>
-<p class="p2"><br></p>
-<p class="p6">s.waitForBoot {</p>
-<p class="p2"><br></p>
-<p class="p6">{</p>
-<p class="p6"><span class="s2">var</span> ir, irbuffer, bufsize;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>// // MONO ONLY</p>
-<p class="p5"><span class="Apple-tab-span">	</span>// pre-existing impulse response sound files<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>// (could also use any general soundfile too for cross-synthesis effects)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>// irbuffer= Buffer.read(s, "/Volumes/data/audio/ir/ir2.wav");</p>
-<p class="p5"><span class="Apple-tab-span">	</span>// irbuffer= Buffer.read(s, "/Volumes/data/audio/ir/ir.wav");</p>
-<p class="p5"><span class="Apple-tab-span">	</span>// this is a two second long hall IR</p>
-<p class="p5"><span class="Apple-tab-span">	</span>// irbuffer= Buffer.read(s, "/Volumes/data/audio/ir/bighall2.wav");</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>// synthesise the honourable 'Dan Stowell' impulse response</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>ir = ([1] ++0.dup(100) ++ ((1, 0.99998 .. 0).collect{<span class="s2">|f|</span> f =</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f.squared.squared; f = if(f.coin){0}{f.squared}; f =</p>
-<p class="p6"><span class="Apple-tab-span">	</span>if(0.5.coin){0-f}{f} } * 0.1)).normalizeSum;</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>// ir.plot;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>irbuffer = <span class="s2">Buffer</span>.loadCollection(s, ir);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sync;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>bufsize= <span class="s2">PartConv</span>.calcBufSize(~fftsize, irbuffer);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span></span>// ~numpartitions= PartConv.calcNumPartitions(~fftsize, irbuffer);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~irspectrum= <span class="s2">Buffer</span>.alloc(s, bufsize, 1);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>~irspectrum.preparePartConv(irbuffer, ~fftsize);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sync;<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>irbuffer.free; </span>// don't need time domain data anymore, just needed spectral version</p>
-<p class="p6">}.fork;</p>
-<p class="p2"><br></p>
-<p class="p6">};</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s1">~target= </span><span class="s2">Buffer</span><span class="s1">.read(s, </span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p5">// ~target= Buffer.read(s, "sounds/break");</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6">input= <span class="s2">PlayBuf</span>.ar(1, ~target, loop:1);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">Out</span>.ar(0, <span class="s2">PartConv</span>.ar(input, ~fftsize, ~irspectrum.bufnum, 0.5));</p>
-<p class="p6"><span class="Apple-converted-space"> </span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// convolve with live input</p>
-<p class="p6">(</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6">input= <span class="s2">SoundIn</span>.ar(0);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">Out</span>.ar(0, <span class="s2">PartConv</span>.ar(input, ~fftsize, ~irspectrum.bufnum));</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// should get back original impulse response (once every four seconds)</p>
-<p class="p6">(</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">var</span> input, kernel;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6">input= <span class="s2">Impulse</span>.ar(0.25);<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">Out</span>.ar(0, <span class="s2">PartConv</span>.ar(input, ~fftsize, ~irspectrum.bufnum));</p>
-<p class="p6"><span class="Apple-converted-space"> </span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9">// only free buffers once you're finished with examples</p>
-<p class="p9">// if you free whilst PartConv is still running, the server won't crash, but PartConv output will go to zero abruptly</p>
-<p class="p6">(</p>
-<p class="p10">~irspectrum.free;</p>
-<p class="p10">~target.free;</p>
-<p class="p10">currentEnvironment.clear;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/SpecCentroid.html b/Help/UGens/FFT/SpecCentroid.html
deleted file mode 100644
index 68b7dd1..0000000
--- a/Help/UGens/FFT/SpecCentroid.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a32011}
-span.s1 {color: #0d2bf0}
-span.s2 {color: #0018f7}
-span.s3 {color: #0a20b3}
-span.s4 {color: #0012b9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SpecCentroid<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Spectral centroid</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>SpecCentroid.kr(chain)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Given an <a href="FFT.html"><span class="s1">FFT</span></a> <b>chain</b>, this measures the <i>spectral centroid</i>, which is the weighted mean frequency, or the "centre of mass" of the spectrum. (DC is ignored.)</p>
-<p class="p2"><br></p>
-<p class="p3">This can be a useful indicator of the perceptual <i>brightness</i> of a signal.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Example</b></p>
-<p class="p2"><br></p>
-<p class="p3">A <a href="../Oscillators/Blip.html"><span class="s2">Blip</span></a> oscillator is ideal for demonstrating this because the number of harmonics is directly manipulated: as the number of harmonics increases, the centroid is pushed higher. In the example, left-to-right changes the number of harmonics, but up-to-down changes the fundamental pitch; note the different effects of these two on the centroid.</p>
-<p class="p2"><br></p>
-<p class="p4">s.boot;</p>
-<p class="p4">b = <span class="s3">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p4">(</p>
-<p class="p4">x = {</p>
-<p class="p4"><span class="s4">var</span> in, chain, freq, rq, centroid;</p>
-<p class="p5"><br></p>
-<p class="p6">//freq = LFPar.kr(0.3).exprange(100, 1000);</p>
-<p class="p4">freq = <span class="s4">MouseY</span>.kr(1000, 100, 1);</p>
-<p class="p5"><br></p>
-<p class="p4">in = <span class="s4">Blip</span>.ar(freq, <span class="s4">MouseX</span>.kr(1, 100, 1));</p>
-<p class="p5"><br></p>
-<p class="p4">chain = <span class="s4">FFT</span>(b, in);</p>
-<p class="p5"><br></p>
-<p class="p4">centroid = <span class="s4">SpecCentroid</span>.kr(chain);</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s4">Out</span>.ar(0, in.dup * 0.1);</p>
-<p class="p4">centroid.poll(10);</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/SpecFlatness.html b/Help/UGens/FFT/SpecFlatness.html
deleted file mode 100644
index 8d7d9f7..0000000
--- a/Help/UGens/FFT/SpecFlatness.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #1531e8}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #bf0000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SpecFlatness<span class="Apple-tab-span">	</span>Spectral Flatness measure</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>SpecFlatness.kr(chain)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Given an <a href="FFT.html"><span class="s1">FFT</span></a> chain this calculates the <i>Spectral Flatness</i> measure, defined as a power spectrum's geometric mean divided by its arithmetic mean. This gives a measure which ranges from approx 0 for a pure sinusoid, to approx 1 for white noise.</p>
-<p class="p4"><br></p>
-<p class="p3">The measure is calculated linearly. For some applications you may wish to convert the value to a decibel scale - an example of such conversion is shown below.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p5">s = <span class="s2">Server</span>.internal.boot;</p>
-<p class="p5">b = <span class="s2">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">{ </span>// Example - vary mixture of white noise and pure tone with the mouse</p>
-<p class="p5"><span class="s2">var</span> in, chain, flat, flatdb, flatdbsquish;</p>
-<p class="p5">in = <span class="s2">XFade2</span>.ar(<span class="s2">WhiteNoise</span>.ar, <span class="s2">SinOsc</span>.ar, <span class="s2">MouseX</span>.kr(-1,1));</p>
-<p class="p5">chain = <span class="s2">FFT</span>(b, in);</p>
-<p class="p5"><span class="s2">Out</span>.ar(0, in * 0.1);</p>
-<p class="p6"><br></p>
-<p class="p5">flat = <span class="s2">SpecFlatness</span>.kr(chain);</p>
-<p class="p6"><br></p>
-<p class="p5">flatdb = 10 * flat.log; <span class="s4">// Convert to decibels</span></p>
-<p class="p5">flatdbsquish = <span class="s2">LinLin</span>.kr(flatdb, -45, -1.6, 0, 1).max(-10); <span class="s4">// Rescale db roughly to 0...1.</span></p>
-<p class="p6"><br></p>
-<p class="p5">flat.poll(10, <span class="s5">"flatness: "</span>);</p>
-<p class="p5">flatdb.poll(10, <span class="s5">"flatness (db): "</span>);</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s2">Out</span>.kr(0, [flat, flatdbsquish]);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7"><span class="s3">{ </span>// Now try with your own voice</p>
-<p class="p5"><span class="s2">var</span> in, chain;</p>
-<p class="p5">in = <span class="s2">SoundIn</span>.ar([0,1]).mean;</p>
-<p class="p5">chain = <span class="s2">FFT</span>(b, in);</p>
-<p class="p5"><span class="s2">Out</span>.kr(0, [in, <span class="s2">SpecFlatness</span>.kr(chain).poll(1, <span class="s5">"flatness: "</span>)]);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/SpecPcile.html b/Help/UGens/FFT/SpecPcile.html
deleted file mode 100644
index d7dfa40..0000000
--- a/Help/UGens/FFT/SpecPcile.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000}
-span.s1 {color: #0522ef}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {font: 9.0px Monaco}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SpecPcile<span class="Apple-tab-span">	</span>Find a percentile of FFT magnitude spectrum</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>SpecPcile.kr(chain, fraction)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Given an <a href="FFT.html"><span class="s1">FFT</span></a> chain this calculates the cumulative distribution of the frequency spectrum, and outputs the frequency value which corresponds to the desired percentile.</p>
-<p class="p4"><br></p>
-<p class="p3">For example, to find the frequency at which 90% of the spectral energy lies below that frequency, you want the 90-percentile, which means the value of <i>fraction</i> should be 0.9. The 90-percentile or 95-percentile is often used as a measure of <b><i>spectral roll-off</i></b>.</p>
-<p class="p4"><br></p>
-<p class="p3">The optional third argument <b>interpolate</b> specifies whether interpolation should be used to try and make the percentile frequency estimate more accurate, at the cost of a little higher CPU usage. Set it to 1 to enable this.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Examples:</b></p>
-<p class="p2"><br></p>
-<p class="p5">s = <span class="s2">Server</span>.internal.boot;<span class="Apple-converted-space"> </span></p>
-<p class="p5">b = <span class="s2">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6"><br></p>
-<p class="p7">// Simple demo with filtering white noise, and trying to infer the cutoff freq.</p>
-<p class="p7">// Move the mouse.</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="s2">var</span> in, chain, realcutoff, estcutoff;</p>
-<p class="p5">realcutoff = <span class="s2">MouseX</span>.kr(0.00001,22050);</p>
-<p class="p5">in = <span class="s2">LPF</span>.ar(<span class="s2">WhiteNoise</span>.ar, realcutoff);</p>
-<p class="p5">chain = <span class="s2">FFT</span>(b, in);</p>
-<p class="p5">estcutoff = <span class="s2">Lag</span>.kr(<span class="s2">SpecPcile</span>.kr(chain, 0.9), 1);</p>
-<p class="p5">realcutoff.poll(<span class="s2">Impulse</span>.kr(1), <span class="s3">"real cutoff"</span>);</p>
-<p class="p5">estcutoff.poll(<span class="s2">Impulse</span>.kr(1), <span class="s3">"estimated cutoff"</span>);</p>
-<p class="p5"><span class="s2">Out</span>.ar(0, in);</p>
-<p class="p5"><span class="s2">Out</span>.kr(0, estcutoff * 22050.0.reciprocal);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// Audio input - try different vowel/long-consonant sounds and see what comes out.</p>
-<p class="p7">// Specifically, change from "ssss" through to "aaaa" through to "wwww".</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="s2">var</span> in, chain, perc;</p>
-<p class="p5">in = <span class="s2">SoundIn</span>.ar([0,1]).mean;</p>
-<p class="p5">chain = <span class="s2">FFT</span>(b, in);</p>
-<p class="p7">//Out.ar(0, in * 0.1);</p>
-<p class="p8"><span class="s4">perc = </span><span class="s2">SpecPcile</span>.kr(chain, 0.5);</p>
-<p class="p7"><span class="s2">Out</span><span class="s5">.ar(1, </span><span class="s2">LPF</span><span class="s5">.ar(</span><span class="s2">WhiteNoise</span><span class="s5">.ar, perc)); </span>//NB Outputting to right channel - handy on PowerBooks</p>
-<p class="p5"><span class="s2">Out</span>.kr(0, perc * 22050.0.reciprocal);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/StereoConvolution2L.html b/Help/UGens/FFT/StereoConvolution2L.html
deleted file mode 100644
index 83b972d..0000000
--- a/Help/UGens/FFT/StereoConvolution2L.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #003dea}
-span.s3 {text-decoration: underline}
-span.s4 {text-decoration: underline ; color: #0040d6}
-span.s5 {color: #000000}
-span.s6 {color: #001bb9}
-span.s7 {color: #0000bf}
-span.s8 {color: #007300}
-span.s9 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>StereoConvolution2L<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>stereo real-time convolver with linear interpolation</b></p>
-<p class="p1">add</p>
-<p class="p1"><b>StereoConvolution2L.ar(in, kernelL, kernelR, trigger, framesize, crossfade, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Strict convolution with fixed kernel which can be updated using a trigger signal. There is a linear crossfade between the buffers upon change.</p>
-<p class="p1">Like <a href="Convolution2L.html"><span class="s2">Convolution2L</span></a>, but convolves with two buffers and outputs a stereo signal. This saves one FFT transformation per period, as compared to using two copies of <b>Convolution2L</b>.</p>
-<p class="p1">Useful applications could include stereo reverberation or HRTF convolution.</p>
-<p class="p3"><br></p>
-<p class="p1">See Steven W Smith, The Scientist and Engineer's Guide to Digital Signal Processing:<span class="Apple-converted-space"> </span></p>
-<p class="p1">chapter 18:<span class="Apple-converted-space"> </span><span class="s3"> http:// www.dspguide.com/ch18.htm</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>in</b> - processing target</p>
-<p class="p1"><b>kernelL</b> - buffer index for the fixed kernel of the left channel, may be modulated in combination with the trigger</p>
-<p class="p1"><b>kernelR </b>- buffer index for the fixed kernel of the right channel, may be modulated in combination with the trigger</p>
-<p class="p1"><b>trigger</b> - update the kernel on a change from <=0 to >0</p>
-<p class="p1"><b>framesize </b>- size of FFT frame, must be a power of two. Convolution uses twice this number internally, maximum value you can give this argument is 2^16=65536. Note that it gets progressively more expensive to run for higher powers! 512, 1024, 2048, 4096 standard.</p>
-<p class="p1"><b>crossfade</b> - The number of periods over which a crossfade is made. The default is 1. This must be an integer.</p>
-<p class="p3"><br></p>
-<p class="p1">See also <a href="Convolution2.html"><span class="s4">Convolution2</span></a> and <a href="Convolution2L.html"><span class="s2">Convolution2L</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s5">(</span>//allocate three buffers</p>
-<p class="p5">b = <span class="s6">Buffer</span>.alloc(s,2048);</p>
-<p class="p5">c = <span class="s6">Buffer</span>.alloc(s,2048);</p>
-<p class="p5">d = <span class="s6">Buffer</span>.alloc(s,2048);</p>
-<p class="p2"><br></p>
-<p class="p5">b.zero;</p>
-<p class="p5">c.zero;</p>
-<p class="p5">d.zero;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">50.do({ <span class="s6">|it|</span> c.set(20*it+10, 1.0.rand); });</p>
-<p class="p5">3.do({ <span class="s6">|it|</span> b.set(400*it+100, 1); });</p>
-<p class="p5">20.do({ <span class="s6">|it|</span> d.set(40*it+20, 1); });</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s7">SynthDef</span>(<span class="s8">\conv_test</span>, { <span class="s7">arg</span> kernel1, kernel2, t_trig=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">var</span> input;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>input=<span class="s7">Impulse</span>.ar(1);</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>//must have power of two framesize</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(0,<span class="s7">StereoConvolution2L</span>.ar(input,kernel1, kernel2,t_trig,2048, 1, 0.5));</p>
-<p class="p5">}).add</p>
-<p class="p2"><br></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">x = <span class="s6">Synth</span>(<span class="s8">\conv_test</span>, [<span class="s9">\kernel1</span>,b,<span class="s9">\kernel2</span>,c]);</p>
-<p class="p2"><br></p>
-<p class="p4">// changing the buffer number:</p>
-<p class="p5">x.set(<span class="s9">\kernel1</span>,d);</p>
-<p class="p4"><span class="s5">x.set(</span><span class="s9">\t_trig</span><span class="s5">,1); </span>// after this trigger, the change will take effect.</p>
-<p class="p5">x.set(<span class="s9">\kernel2</span>,d);</p>
-<p class="p4"><span class="s5">x.set(</span><span class="s9">\t_trig</span><span class="s5">,1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">d.zero;</p>
-<p class="p4"><span class="s5">40.do({ </span><span class="s6">|it|</span><span class="s5"> d.set(20*it+10, 1); });</span>// changing the buffers' contents</p>
-<p class="p4"><span class="s5">x.set(</span><span class="s9">\t_trig</span><span class="s5">,1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">x.set(<span class="s9">\kernel1</span>,b);</p>
-<p class="p4"><span class="s5">x.set(</span><span class="s9">\t_trig</span><span class="s5">,1); </span>// after this trigger, the change will take effect.</p>
-<p class="p2"><br></p>
-<p class="p5">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/Unpack1FFT.html b/Help/UGens/FFT/Unpack1FFT.html
deleted file mode 100644
index 5825051..0000000
--- a/Help/UGens/FFT/Unpack1FFT.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0029b1; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-span.s1 {font: 15.0px Helvetica}
-span.s2 {color: #002bf0}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #606060}
-span.s6 {font: 12.0px Helvetica; color: #0021e7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Unpack1FFT<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Unpack a single value (magnitude or phase) from an FFT chain</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Unpack1FFT(chain, bufsize, binindex, whichmeasure=0)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Takes an <a href="FFT.html"><span class="s2">FFT</span></a> chain and extracts a single scalar value as a demand-rate stream. To call it you need a "demander" which fires whenever the FFT chain fires - this is normally achieved using <a href="PackFFT.html"><span class="s2">PackFFT</span></a> but can also be done using <a href="../Synth control/Demand Rate/Demand.html"><span class="s2">Demand</span></a>. <b>chain</b> is an FFT chain, <b>bufsize</b> is the size of the expected input FFT frames, <b>binindex</b> is the integer index of the bin you want to query, and <b>whichmeasure</b> is 0 for magnitude and 1 for phase. None of these arguments can be modulated.</p>
-<p class="p2"><br></p>
-<p class="p1"><b><i>Note:</i></b> The main purpose of this UGen is as a component in <a href="pvcollect.html"><span class="s2">pvcollect</span></a>, <a href="pvcalc.html"><span class="s2">pvcalc</span></a>, and <a href="pvcalc2.html"><span class="s2">pvcalc2</span></a> processes. You're welcome to use it on its own - the example below shows basic usage. But most people won't typically need to use it directly.</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">s.boot.doWhenBooted{</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>c = </span><span class="s4">Buffer</span><span class="s3">.read(s,</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p7">// Let's extract the DC component - i.e. the magnitude at index zero.</p>
-<p class="p4">(</p>
-<p class="p4">x = {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">var</span> fftsize = 1024;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">var</span> sig, chain, unp;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig = <span class="s4">PlayBuf</span>.ar(1, c, <span class="s4">BufRateScale</span>.kr(c), loop: 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(fftsize), sig);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>unp = <span class="s4">Unpack1FFT</span>(chain, b.numFrames, 0, 0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// Demand some data from the unpacker</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">Demand</span>.kr(chain>=0, 0, unp).poll(chain>=0, <span class="s5">"unpacked value"</span>);</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(sig*0.1).dup;</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p4">x.free;</p>
-<p class="p8"><br></p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">See also: <a href="UnpackFFT.html"><span class="s6">UnpackFFT</span></a>, <a href="PackFFT.html"><span class="s6">PackFFT</span></a>, <a href="pvcollect.html"><span class="s6">pvcollect</span></a>, <a href="pvcalc.html"><span class="s6">pvcalc</span></a>, <a href="pvcalc2.html"><span class="s6">pvcalc2</span></a></span></p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/UnpackFFT.html b/Help/UGens/FFT/UnpackFFT.html
deleted file mode 100644
index 2eb5100..0000000
--- a/Help/UGens/FFT/UnpackFFT.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 15.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>UnpackFFT<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Unpack an FFT chain into separate demand-rate FFT bin streams</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>#magsphases = UnpackFFT(chain, bufsize)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Takes an <a href="FFT.html"><span class="s2">FFT</span></a> chain and separates the magnitude and phase data into separate demand-rate streams, for arithmetic manipulation etc. Note that you do have to decide your FFT buffer size in advance, since this determines how many values the UGen will output. Output is a list from DC up to Nyquist of [mag[0], phase[0], mag[1], phase[1], ... mag[nyquist], phase[nyquist]].</p>
-<p class="p2"><br></p>
-<p class="p1">This is technically a demand-rate UGen. The actual "demand" is usually created by PackFFT later on in the graph, which requests the values in order to re-pack the data. This allows for processing to occur imbetween...</p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="PackFFT.html"><span class="s2">PackFFT</span></a>, <a href="Unpack1FFT.html"><span class="s2">Unpack1FFT</span></a>, and <a href="pvcollect.html"><span class="s2">pvcollect</span></a> <a href="pvcalc.html"><span class="s2">pvcalc</span></a> <a href="pvcalc2.html"><span class="s2">pvcalc2</span></a> which provide convenient ways to process audio in the frequency domain.</p>
-<p class="p2"><br></p>
-<p class="p1">The helpfile for <a href="pvcollect.html"><span class="s2">pvcollect</span></a> includes notes on efficiency considerations.</p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p3">s.boot.doWhenBooted {</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span>var </span>fftsize = 1024;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>b = <span class="s2">Buffer</span>.alloc(s, fftsize, 1);</p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span>c = </span><span class="s2">Buffer</span><span class="s3">.read(s,</span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p3">}</p>
-<p class="p3">)</p>
-<p class="p5"><br></p>
-<p class="p6">// This one just drags out various the values and posts them - a little bit pointless!</p>
-<p class="p3">(</p>
-<p class="p3">x = {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> sig, chain, unp;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>sig = <span class="s2">SinOsc</span>.ar;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>sig = <span class="s2">PlayBuf</span>.ar(1, c, <span class="s2">BufRateScale</span>.kr(c), loop: 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>chain = <span class="s2">FFT</span>(b, sig);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// Using the frombin & tobin args makes it much more efficient, limiting analysis to the bins of interest</p>
-<p class="p3"><span class="Apple-tab-span">	</span>unp = <span class="s2">UnpackFFT</span>(chain, b.numFrames, frombin: 0, tobin: 4);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// Demand some data from the unpacker.</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// NOTE: At present, Demand.kr is unable to handle more than 32 inputs,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// so using frombin & tobin to limit the number of bins is compulsory.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Demand</span>.kr(chain>=0, 0, unp).collect{<span class="s2">|anunp, index|</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>anunp.poll(chain>=0, if(index % 2 == 0,<span class="Apple-converted-space">  </span><span class="s4">"Magnitude"</span>, <span class="s4">"Phase"</span>)+(index/2).floor);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>(sig*0.1).dup;</p>
-<p class="p3">}.play(s);</p>
-<p class="p3">)</p>
-<p class="p3">x.free;</p>
-<p class="p5"><br></p>
-<p class="p6">// Now a simple frequency-domain manipulation, square-rooting the magnitudes AND phases.</p>
-<p class="p3">(</p>
-<p class="p3">x = {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">var</span> in, chain, magsphases;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>in = <span class="s2">PlayBuf</span>.ar(1, c, <span class="s2">BufRateScale</span>.kr(c), loop: 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>chain = <span class="s2">FFT</span>(b, in);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>magsphases = <span class="s2">UnpackFFT</span>(chain, b.numFrames);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>magsphases = magsphases.collect(<span class="s2">_</span>.sqrt);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">PackFFT</span>(chain, b.numFrames, magsphases);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, 0.25 * <span class="s2">IFFT</span>(chain).dup);</p>
-<p class="p3">}.play(s);</p>
-<p class="p3">)</p>
-<p class="p3">x.free;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p1">See <a href="pvcollect.html"><span class="s2">pvcollect</span></a> <a href="pvcalc.html"><span class="s2">pvcalc</span></a> <a href="pvcalc2.html"><span class="s2">pvcalc2</span></a> for more interesting examples.</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/pvcalc.html b/Help/UGens/FFT/pvcalc.html
deleted file mode 100644
index 59e5d40..0000000
--- a/Help/UGens/FFT/pvcalc.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a81914}
-span.s1 {color: #1630ea}
-span.s2 {color: #000000}
-span.s3 {color: #1024b0}
-span.s4 {color: #0910ba}
-span.s5 {color: #a81914}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>pvcalc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Process the bins of an FFT chain</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>chain = chain.pvcalc(numframes, func, frombin, tobin, zeroothers)</b></p>
-<p class="p2"><br></p>
-<p class="p3">pvcalc applies function <b>func</b> to the frequency-domain data of an FFT chain. <b>func</b> should be a function that takes two arrays as inputs (magnitude, and phase) and returns a resulting pair of arrays [magnitude, phase].</p>
-<p class="p2"><br></p>
-<p class="p3"><b>frombin</b>, <b>tobin</b>, and <b>zeroothers</b> are optional arguments which limit the processing to a specified integer range of FFT bins. If <b>zeroothers</b> is set to 1 then bins outside of the range being processed are silenced.</p>
-<p class="p2"><br></p>
-<p class="p3">See <a href="pvcollect.html"><span class="s1">pvcollect</span></a> for discussion of efficiency considerations. See also <a href="pvcalc2.html"><span class="s1">pvcalc2</span></a>, <a href="UnpackFFT.html"><span class="s1">UnpackFFT</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">s.boot.doWhenBooted{</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>c = </span><span class="s3">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4">x = {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain, v;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s4">PlayBuf</span>.ar(1, c, <span class="s4">BufRateScale</span>.kr(c), loop: 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(1024), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = chain.pvcalc(1024, {<span class="s4">|mags, phases|</span></p>
-<p class="p7">//////// Try uncommenting each of these lines in turn and re-running the synth:</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[mags * {1.5.rand}.dup(mags.size), phases + {pi.rand}.dup(phases.size)]; <span class="s5">// Arbitrary filter, arbitrary phase shift</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mags.reverse, phases.reverse]; // Upside-down!</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mags.differentiate, phases.differentiate]; // Differentiate along frequency axis</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mags[30..] ++ mags[..30], phases[30..] ++ phases[..30]]; // ".rotate" doesn't work directly, but this is equivalent</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}, frombin: 0, tobin: 250, zeroothers: 0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, 0.5 * <span class="s4">IFFT</span>(chain).dup);</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p4">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/pvcalc2.html b/Help/UGens/FFT/pvcalc2.html
deleted file mode 100644
index 285d545..0000000
--- a/Help/UGens/FFT/pvcalc2.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #1630ea}
-span.s2 {color: #000000}
-span.s3 {color: #1024b0}
-span.s4 {color: #0910ba}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>pvcalc2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Process the bins of two FFT chains</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>chain = chain.pvcalc2(chain2, numframes, func, frombin, tobin, zeroothers)</b></p>
-<p class="p2"><br></p>
-<p class="p3">pvcalc2 is just like <a href="pvcalc.html"><span class="s1">pvcalc</span></a> but can combine two FFT chains together. See <a href="pvcalc.html"><span class="s1">pvcalc</span></a> for more information.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>func</b> should be a function that takes four arrays as inputs (magnitudes1, phases1, magnitudes2, phases2) and returns a resulting pair of arrays [magnitude, phase].</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Example</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">s.boot.doWhenBooted {</p>
-<p class="p5"><span class="s2">c = </span><span class="s3">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p4">}</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4">x = {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">var</span> fftsize = 1024;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain, in2, chain2, out;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s4">PlayBuf</span>.ar(1, c, <span class="s4">BufRateScale</span>.kr(c), loop: 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(fftsize), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// in2 = <span class="s4">PlayBuf</span>.ar(1, e, <span class="s4">BufRateScale</span>.kr(e), loop: 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>// JMcC babbling brook</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in2 = ({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">RHPF</span>.ar(<span class="s4">OnePole</span>.ar(<span class="s4">BrownNoise</span>.ar, 0.99), <span class="s4">LPF</span>.ar(<span class="s4">BrownNoise</span>.ar, 14)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 400 + 500, 0.03, 0.003)}!2)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ ({<span class="s4">RHPF</span>.ar(<span class="s4">OnePole</span>.ar(<span class="s4">BrownNoise</span>.ar, 0.99), <span class="s4">LPF</span>.ar(<span class="s4">BrownNoise</span>.ar, 20)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 800 + 1000, 0.03, 0.005)}!2</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 4;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain2 = <span class="s4">FFT</span>(<span class="s4">LocalBuf</span>(fftsize), in2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = chain.pvcalc2(chain2, fftsize, {<span class="s4">|mags, phases, mags2, phases2|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[mags * mags2 / 10, phases2 + phases]</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}, frombin: 0, tobin: 125, zeroothers: 0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>out = <span class="s4">IFFT</span>(chain);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, 0.5 * out.dup);</p>
-<p class="p4">}.play(s);</p>
-<p class="p4">)</p>
-<p class="p4">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/FFT/pvcollect.html b/Help/UGens/FFT/pvcollect.html
deleted file mode 100644
index a3ca213..0000000
--- a/Help/UGens/FFT/pvcollect.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0b15e8}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #6f2f21}
-span.s1 {color: #1e45de}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #2c4693}
-span.s5 {color: #1735a5}
-span.s6 {color: #0910ba}
-span.s7 {color: #6f2f21}
-span.s8 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-ul.ul1 {list-style-type: disc}
-</style>
-</head>
-<body>
-<p class="p1"><b>pvcollect<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Process each bin of an FFT chain, separately</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>chain = chain.pvcollect(numframes, func, frombin, tobin, zeroothers)</b></p>
-<p class="p2"><br></p>
-<p class="p3">pvcollect applies function <b>func</b> to each bin of an <a href="FFT.html"><span class="s1">FFT</span></a> chain. <b>func</b> should be a function that takes <i>magnitude, phase, index</i> as inputs and returns a resulting [magnitude, phase].</p>
-<p class="p2"><br></p>
-<p class="p3">The "index" is the integer bin number, starting at 0 for DC. You can optionally ignore the phase and only return a single (magnitude) value, in which case the phase is assumed to be left unchanged.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>frombin</b>, <b>tobin</b>, and <b>zeroothers</b> are optional arguments which limit the processing to a specified integer range of FFT bins. If <b>zeroothers</b> is set to 1 then bins outside of the range being processed are silenced.</p>
-<p class="p2"><br></p>
-<p class="p3">Note that this procedure can be relatively CPU-heavy, depending on how you use it. See "efficiency considerations" below.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also: <a href="pvcalc.html"><span class="s3">pvcalc</span></a>, <a href="pvcalc2.html"><span class="s3">pvcalc2</span></a>, <a href="UnpackFFT.html"><span class="s3">UnpackFFT</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">s.boot.doWhenBooted{</p>
-<p class="p6"><span class="s2">c = </span><span class="s4">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">var</span> in, chain, v;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s5">PlayBuf</span>.ar(1, c, <span class="s5">BufRateScale</span>.kr(c), loop: 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = <span class="s6">FFT</span>(<span class="s6">LocalBuf</span>(1024), in);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>v = <span class="s5">LFPar</span>.kr(0.5).range(0.1, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>chain = chain.pvcollect(1024, {<span class="s5">|mag, phase, index|</span></p>
-<p class="p8">//////// Try uncommenting each of these lines in turn and re-running the synth:</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//mag;</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mag, phase];</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mag, phase] / 3;</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mag, phase].sqrt;</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mag, 3.14.rand];</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mag, LFNoise0.kr.range(0, 3.14)];</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mag * Dseq([1, 0, 0, 1, 1, 0, 1, 0].stutter(8), 999999999999)]; // Can even use Demand ugens! One val demanded each frame</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//[mag.sqrt, 3.14.rand];</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//if(index % 7 == 0, mag, 0); // Comb filter</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//if(LFNoise0.kr(10) > 0.5, mag, 0);</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//mag + DelayN.kr(mag, 1, v); // Spectral delay</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if((index-<span class="s5">LFPar</span>.kr(0.1).range(2, 1024/20)).abs < 10, mag, 0); <span class="s7">// Swept bandpass</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}, frombin: 0, tobin: 250, zeroothers: 0);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, 0.5 * <span class="s5">IFFT</span>(chain).dup);</p>
-<p class="p5">}.play(s);</p>
-<p class="p5">)</p>
-<p class="p5">x.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Efficiency considerations</b></p>
-<p class="p2"><br></p>
-<p class="p3">Using pvcollect (or its components, UnpackFFT & PackFFT) is usually less efficient than using a single "PV_" unit generator to process an FFT chain, because it involves the creation of quite a large graph of demand-rate unit generators.</p>
-<p class="p2"><br></p>
-<p class="p3">If you wish to reduce the CPU impact of using this approach, try the following:</p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Use the <b>frombin</b> and <b>tobin</b> arguments to limit the number of FFT bins that will be included in the calculation. Often the lower FFT bins contain the loudest and/or most relevant information, so perhaps your effect sounds very similar if you ignore the higher-up bins (either leave them unprocessed, or discard them by setting the <b>zeroothers</b> argument to 1, which has the effect of a band-pass frequency-domain filter).</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Use a smaller FFT buffer size.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Avoid creating ugens inside your calculation function if at all possible. For example, a deterministic ugen such as <span class="s8">LFPar.kr(0.5, 0, 1)</span> will be replicated <i>once for each bin</i> if specified inside the function, despite the fact that the output is always the same. Define it outside the calculation function and then reference it by variable name.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">Avoid unused calculations! For example, uncommenting all the different lines in the above will waste effort because many values will be calculated but not used. This cannot be optimised away during compilation. It is particularly important because all calculations are duplicated (once for each bin) so can have a significant impact on efficiency.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica">If you find yourself calling pvcollect on an FFT chain more than once in series, you should definitely try to combine your processing into a single pvcollect function, to avoid unneccessary unpacking-then-packing-then-unpacking-then-packing.</li>
-</ul>
-</body>
-</html>
diff --git a/Help/UGens/Filter.html b/Help/UGens/Filter.html
deleted file mode 100644
index 1e1abed..0000000
--- a/Help/UGens/Filter.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial; background-color: #f9f9f9; min-height: 15.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial; background-color: #f9f9f9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ae1a19}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024fc}
-span.s3 {color: #001bbc}
-span.s4 {color: #0016bd}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Filter<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>UGens that filter things</b></p>
-<p class="p2"><br></p>
-<p class="p3">"Filter" is an <i>abstract class</i> - in other words, a class that you do not use directly. Instead, use one of its subclasses. Many common filters inherit from this abstract class, including <a href="Filters/LPF.html"><span class="s2">LPF</span></a>, <a href="Filters/HPF.html"><span class="s2">HPF</span></a>, <a href="Filters/MoogFF.html"><span class="s2">MoogFF</span></a>, <a href="Filters/Ringz.html"><span class="s2">Ringz</span></a>, <a href="Synth control/Integrator.html"><span class="s2">Integrator</span></a>, <a href="Filters/Median.html"><span class="s2">Median</span></a>, <a href="Filters/LeakDC.html"><span class="s2">LeakDC</span></a>... and many more.</p>
-<p class="p2"><br></p>
-<p class="p3">To see all classes which derive from the Filter class, run this line:</p>
-<p class="p4"><span class="s3">Filter</span>.allSubclasses.do(<span class="s3">_</span>.postln)</p>
-<p class="p2"><br></p>
-<p class="p3">The Filter class also provides a simple way to visualise the frequency-wise effect of applying a filter:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4">Stethoscope</span><span class="s5">.defaultServer.boot </span>// boot the server that will be scoped</p>
-<p class="p4"><span class="s4">MoogFF</span>.scopeResponse</p>
-<p class="p4"><span class="s4">HPF</span>.scopeResponse</p>
-<p class="p4"><span class="s4">BRF</span>.scopeResponse</p>
-<p class="p4"><span class="s4">Median</span>.scopeResponse</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/AmpComp.html b/Help/UGens/Filters/AmpComp.html
deleted file mode 100644
index c2a2c7a..0000000
--- a/Help/UGens/Filters/AmpComp.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {font: 12.0px Helvetica}
-span.s4 {color: #0024f8}
-span.s5 {color: #0025b2}
-span.s6 {color: #000000}
-span.s7 {color: #606060}
-span.s8 {color: #416d1f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>AmpComp</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>basic psychoacoustic amplitude compensation</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span>implements the (optimized) formula: <span class="Apple-tab-span">	</span></span>compensationFactor = (root / freq) ** exp<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Higher frequencies are normally perceived as louder, which AmpComp compensates.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>see also <a href="AmpCompA.html"><span class="s4">AmpCompA</span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ar(freq, root, exp)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(freq, root, exp)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir(freq, root, exp)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>freq</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input frequency value. For freq == root, the output is 1.0.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>root</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>root freq relative to which the curve is calculated (usually lowest freq)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default value: C (60.midicps)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>exp</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponent: how steep the curve decreases for increasing freq (see plots below)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default value 0.3333</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Note that for frequencies <b>very much smaller than root </b>the amplitudes can become very high.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>In this case limit the freq with <b>freq.max(minval)</b>, or use AmpCompA.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// compare a sine without compensation</p>
-<p class="p4"><br></p>
-<p class="p7">{ <span class="s5">SinOsc</span>.ar(<span class="s5">MouseX</span>.kr(300, 15000, 1)) * 0.1 }.play;</p>
-<p class="p4"><br></p>
-<p class="p6">// with one that uses amplitude compensation</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s5">MouseX</span>.kr(300, 15000, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1 * <span class="s5">AmpComp</span>.kr(freq, 300)<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// different sounds cause quite different loudness perception,<span class="Apple-converted-space"> </span></p>
-<p class="p6">// and the desired musical behavior can vary, so the exponent can be tuned:</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s5">MouseX</span>.kr(300, 15000, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Pulse</span>.ar(freq) * 0.1 * <span class="s5">AmpComp</span>.kr(freq, 300, 1.3)<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">// the curves:</p>
-<p class="p4"><br></p>
-<p class="p7">// exp = 0.3333</p>
-<p class="p7">(200,210..10000).collect {<span class="s5">|freq|</span> (200/freq) ** 0.3333 }.plot;</p>
-<p class="p4"><br></p>
-<p class="p6">// nearly linear for semitone steps:</p>
-<p class="p4"><br></p>
-<p class="p7">(48..72).midicps.collect {<span class="s5">|freq|</span> (48.midicps/freq) ** 0.3333 }.plot;<span class="Apple-converted-space"> </span></p>
-<p class="p7">{ <span class="s5">AmpComp</span>.ar(<span class="s5">Line</span>.ar(48, 72, 1).midicps, 48.midicps) }.plot(1.0);</p>
-<p class="p4"><br></p>
-<p class="p6">// exp = 1.2</p>
-<p class="p7">(200,210..10000).collect {<span class="s5">|freq|</span> (200/freq) ** 1.2 }.plot;</p>
-<p class="p7">(48..72).midicps.collect {<span class="s5">|freq|</span> (200/freq) ** 1.2 }.plot;</p>
-<p class="p7">{ <span class="s5">AmpComp</span>.ar(<span class="s5">Line</span>.ar(48, 72, 1).midicps, 48.midicps, 1.2) }.plot(1.0);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// amplitude compensation in frequency modulation</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s5">MouseX</span>.kr(300, 15000, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = freq * <span class="s5">SinOsc</span>.ar(<span class="s5">MouseY</span>.kr(3, 200, 1), 0, 0.5, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1 * <span class="s5">AmpComp</span>.ar(freq, 300)<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">// without amplitude compensation</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">var</span> freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s5">MouseX</span>.kr(300, 15000, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = freq * <span class="s5">SinOsc</span>.ar(<span class="s5">MouseY</span>.kr(3, 200, 1), 0, 0.5, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">// in granular synthesis:</p>
-<p class="p7">(</p>
-<p class="p8">SynthDef<span class="s6">(</span><span class="s7">"pgrain"</span><span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out = 0, sustain=0.01, amp=0.5, pan = 0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var freq = MouseX.kr(300, 7000, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var window = <span class="s5">Env</span>.sine(sustain, amp * <span class="s5">AmpComp</span>.ir(freq));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s5">EnvGen</span>.ar(window, doneAction:2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">).send(s);</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">// send grains</p>
-<p class="p7">(</p>
-<p class="p7">fork {</p>
-<p class="p7"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(0.1, [<span class="s8">\s_new</span>, <span class="s8">\pgrain</span>, -1,1,1]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.02.wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>};</p>
-<p class="p7">}</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// try different synth defs:</p>
-<p class="p5"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// without AmpComp:</p>
-<p class="p4"><br></p>
-<p class="p7">(</p>
-<p class="p8">SynthDef<span class="s6">(</span><span class="s7">"pgrain"</span><span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out = 0, sustain=0.01, amp=0.5, pan = 0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> freq = <span class="s5">MouseX</span>.kr(300, 7000, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> window = <span class="s5">Env</span>.sine(sustain, amp);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s5">EnvGen</span>.ar(window, doneAction:2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">).send(s);</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">// with AmpCompA</p>
-<p class="p7">(</p>
-<p class="p8">SynthDef<span class="s6">(</span><span class="s7">"pgrain"</span><span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out = 0, sustain=0.01, amp=0.5, pan = 0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> freq = <span class="s5">MouseX</span>.kr(300, 7000, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> window = <span class="s5">Env</span>.sine(sustain, amp * <span class="s5">AmpCompA</span>.ir(freq));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Pan2</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s5">EnvGen</span>.ar(window, doneAction:2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}</p>
-<p class="p7">).send(s);</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/AmpCompA.html b/Help/UGens/Filters/AmpCompA.html
deleted file mode 100644
index d2bd16d..0000000
--- a/Help/UGens/Filters/AmpCompA.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000ff}
-span.s4 {color: #0019b7}
-span.s5 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>AmpCompA</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>ANSI A-weighting curve</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>basic psychoacoustic amplitude compensation</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Higher frequencies are normally perceived as louder, which AmpCompA compensates.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Following the measurings by Fletcher and Munson, the ANSI standard describes<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>a function for loudness vs. frequency.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Note that this curve is only valid for standardized amplitude. [1]</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>For a simpler but more flexible curve, see <a href="AmpComp.html"><span class="s3">AmpComp</span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ar(freq, root, minAmp, rootAmp)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(freq, root, minAmp, rootAmp)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir(freq, root, minAmp, rootAmp)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>freq</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input frequency value. For freq == root, the output is rootAmp. (default freq 0 Hz)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>root</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>root freq relative to which the curve is calculated (usually lowest freq) (default 0 Hz)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>default value: C (60.midicps)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>minAmp</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amplitude at the minimum point of the curve (around 2512 Hz) (default -10dB)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>rootAmp</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amplitude at the root frequency. (default 1)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span></span>apart from <i>freq</i>, the values are not modulatable</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// compare a sine without compensation</p>
-<p class="p3"><br></p>
-<p class="p6">{ <span class="s4">SinOsc</span>.ar(<span class="s4">MouseX</span>.kr(300, 15000, 1)) * 0.1 }.play;</p>
-<p class="p3"><br></p>
-<p class="p5">// with one that uses amplitude compensation</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = <span class="s4">MouseX</span>.kr(300, 15000, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.3 * <span class="s4">AmpCompA</span>.kr(freq)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// adjust the minimum and root amp<span class="Apple-converted-space"> </span></p>
-<p class="p5">// (in this way one can flatten out the curve for higher amplitudes)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = <span class="s4">MouseX</span>.kr(300, 18000, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Formant</span>.ar(300, freq, 20, 0.1) * <span class="s4">AmpCompA</span>.kr(freq, 300, 0.6, 0.3)</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p5">// the curve:</p>
-<p class="p3"><br></p>
-<p class="p6">{ <span class="s4">AmpCompA</span>.ar(<span class="s4">Line</span>.ar(48, 120, 1).midicps, 48.midicps) }.plot(1.0);</p>
-<p class="p3"><br></p>
-<p class="p5">// freqs:</p>
-<p class="p3"><br></p>
-<p class="p6">{ <span class="s4">AmpCompA</span>.ar(<span class="s4">Line</span>.ar(0, 20000, 1)) }.plot(1.0);</p>
-<p class="p3"><br></p>
-<p class="p5">// compare with AmpComp (exponential decay)</p>
-<p class="p3"><br></p>
-<p class="p6">{ <span class="s4">AmpComp</span>.ar(<span class="s4">Line</span>.ar(48, 120, 1).midicps, 48.midicps) }.plot(1.0);</p>
-<p class="p4"><br></p>
-<p class="p5">// freqs:</p>
-<p class="p3"><br></p>
-<p class="p6">{ <span class="s4">AmpComp</span>.ar(<span class="s4">Line</span>.ar(40, 20000, 1), 40) }.plot(1.0);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// amplitude compensation in frequency modulation (using Fletscher-Munson curve)</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = <span class="s4">MouseX</span>.kr(300, 15000, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = freq * <span class="s4">SinOsc</span>.ar(<span class="s4">MouseY</span>.kr(3, 200, 1), 0, 0.5, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1 * <span class="s4">AmpCompA</span>.ar(freq, 300)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p5">// amplitude compensation in frequency modulation (using AmpComp exponential decay)</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = <span class="s4">MouseX</span>.kr(300, 15000, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = freq * <span class="s4">SinOsc</span>.ar(<span class="s4">MouseY</span>.kr(3, 200, 1), 0, 0.5, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1 * <span class="s4">AmpComp</span>.ar(freq, 300)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// without amplitude compensation</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = <span class="s4">MouseX</span>.kr(300, 15000, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = freq * <span class="s4">SinOsc</span>.ar(<span class="s4">MouseY</span>.kr(3, 200, 1), 0, 0.5, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p1">[1] Function freq -> dB,<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>derived from <span class="s5">http://www.beis.de/Elektronik/AudioMeasure/WeightingFilters.html</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>and modified to map freq -> amp</p>
-<p class="p3"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s4">var</span> k =<span class="Apple-converted-space">  </span>3.5041384e16;</p>
-<p class="p6">var c1 = 424.31867740601;</p>
-<p class="p6">var c2 = 11589.093052022;</p>
-<p class="p6">var c3 = 544440.67046057;</p>
-<p class="p6">var c4 = 148698928.24309;</p>
-<p class="p6">f = {<span class="s4">|f|</span></p>
-<p class="p6"><span class="Apple-converted-space">  </span><span class="s4">var</span> r = squared(f);</p>
-<p class="p6"><span class="Apple-converted-space">  </span><span class="s4">var</span> m1 = pow(r,4);</p>
-<p class="p6"><span class="Apple-converted-space">  </span><span class="s4">var</span> n1 = squared(c1 + r);</p>
-<p class="p6"><span class="Apple-converted-space">  </span><span class="s4">var</span> n2 = c2 + r;</p>
-<p class="p6"><span class="Apple-converted-space">  </span><span class="s4">var</span> n3 = c3 + r;</p>
-<p class="p6"><span class="Apple-converted-space">  </span><span class="s4">var</span> n4 = squared(c4 + r);</p>
-<p class="p6"><span class="Apple-converted-space">  </span><span class="s4">var</span> level = k * m1 / (n1 * n2 * n3 * n4);</p>
-<p class="p6"><span class="Apple-converted-space">  </span>sqrt(level)</p>
-<p class="p6"><span class="Apple-converted-space"> </span>};</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BAllPass.html b/Help/UGens/Filters/BEQSuite/BAllPass.html
deleted file mode 100644
index bb5624a..0000000
--- a/Help/UGens/Filters/BEQSuite/BAllPass.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BAllPass<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>All Pass Filter.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BAllPass.ar(in, freq, rq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed.</p>
-<p class="p3"><b>freq</b> - center frequency.</p>
-<p class="p3"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p4"><br></p>
-<p class="p3">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p3">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p4"><br></p>
-<p class="p3">see also: <b>SOS, BLowPass, BLowPass4, BHiPass, BHiPass4, BPeakEQ, BLowShelf, BHiShelf, BBandPass, BBandStop</b></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">z = { </span>// thru</p>
-<p class="p7">BAllPass<span class="s2">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">SoundIn</span>.ar([0,1]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">MouseX</span>.kr(10,18000,<span class="s4">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.8, <span class="s5">// rq</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s5">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-<p class="p8"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">z = { </span>// like a bandpass</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> sig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sig = <span class="s3">SoundIn</span>.ar([0,1]), * 0.5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BAllPass</span>.ar(sig, <span class="s3">MouseX</span>.kr(10,18000,<span class="s4">\exponential</span>), 0.8) + sig.neg</p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BBandPass.html b/Help/UGens/Filters/BEQSuite/BBandPass.html
deleted file mode 100644
index b6ab8ae..0000000
--- a/Help/UGens/Filters/BEQSuite/BBandPass.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BBandPass<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>Band Pass Filter.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BBandPass.ar(in, freq, bw, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed.</p>
-<p class="p3"><b>freq</b> - center frequency.</p>
-<p class="p3"><b>bw</b> - the bandwidth in octaves between -3 dB frequencies</p>
-<p class="p2"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p4"><br></p>
-<p class="p3">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p3">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p2"><br></p>
-<p class="p3">see also:<span class="s2"> </span><b>SOS, BLowPass, BLowPass4, BHiPass, BHiPass4, BPeakEQ, BLowShelf, BHiShelf, BBandStop, BAllPass.</b></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">(</p>
-<p class="p5">z = {</p>
-<p class="p6">BBandPass<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(20,20000,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.0, 10.0, <span class="s5">\linear</span>), <span class="s6">// bw</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">z = {</p>
-<p class="p6">BBandPass<span class="s3">.ar(</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>WhiteNoise<span class="s3">.ar ! 2,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(20,20000,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.0, 10.0, <span class="s5">\linear</span>), <span class="s6">// bw</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BBandStop.html b/Help/UGens/Filters/BEQSuite/BBandStop.html
deleted file mode 100644
index 8521659..0000000
--- a/Help/UGens/Filters/BEQSuite/BBandStop.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BBandStop<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>Band reject filter.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BBandStop.ar(in, freq, bw, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed.</p>
-<p class="p3"><b>freq</b> - center frequency.</p>
-<p class="p3"><b>bw</b> - the bandwidth in octaves between -3 dB frequencies</p>
-<p class="p2"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p4"><br></p>
-<p class="p3">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p3">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p2"><br></p>
-<p class="p3">see also:<span class="s2"> </span><b>SOS, BLowPass, BLowPass4, BHiPass, BHiPass4, BPeakEQ, BLowShelf, BHiShelf, BBandPass, BAllPass.</b></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">(</p>
-<p class="p5">z = {</p>
-<p class="p6">BBandStop<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(20,20000,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.0, 10.0, <span class="s5">\linear</span>), <span class="s6">// bw</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">z = {</p>
-<p class="p6">BBandStop<span class="s3">.ar(</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>WhiteNoise<span class="s3">.ar ! 2,</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(20,20000,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.0, 10.0, <span class="s5">\linear</span>), <span class="s6">// bw</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p8"><span class="s3">z = { </span>// drill...</p>
-<p class="p6">BBandStop<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(1000) ! 2,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(800,1200,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.0, 10.0, <span class="s5">\linear</span>), <span class="s6">// bw</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.1); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p8"><span class="s3">z = { </span>// nada</p>
-<p class="p6">BBandStop<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(1000) ! 2,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>1000,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.0, 10.0, <span class="s5">\linear</span>), <span class="s6">// bw</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BEQSuite.html b/Help/UGens/Filters/BEQSuite/BEQSuite.html
deleted file mode 100644
index b7804e2..0000000
--- a/Help/UGens/Filters/BEQSuite/BEQSuite.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>B Equalization Suite<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><a href="BLowPass.html"><b>BLowPass</b></a></span><b><span class="Apple-tab-span">	</span></b>12dB/oct rolloff - 2nd order resonant Low Pass Filter.</p>
-<p class="p3"><span class="s1"><a href="BLowPass4.html"><b>BLowPass4</b></a></span><b><span class="Apple-tab-span">	</span></b>24dB/oct rolloff - 4th order resonant<span class="Apple-converted-space">  </span>Low Pass Filter (pseudo UGen)</p>
-<p class="p3"><span class="s1"><a href="BHiPass.html"><b>BHiPass</b></a></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>12dB/oct rolloff - 2nd order resonant<span class="Apple-converted-space">  </span>Hi Pass Filter.</p>
-<p class="p3"><span class="s1"><a href="BHiPass4.html"><b>BHiPass4</b></a></span><b><span class="Apple-tab-span">	</span></b>24dB/oct rolloff - 4th order resonant<span class="Apple-converted-space">  </span>Hi Pass Filter (pseudo UGen)</p>
-<p class="p3"><span class="s1"><a href="BPeakEQ.html"><b>BPeakEQ</b></a></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Parametric Equalizer.</p>
-<p class="p3"><span class="s1"><a href="BLowShelf.html"><b>BLowShelf</b></a></span><b><span class="Apple-tab-span">	</span></b>Low resonant Shelf</p>
-<p class="p3"><span class="s1"><a href="BHiShelf.html"><b>BHiShelf</b></a></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>High resonant Self</p>
-<p class="p3"><span class="s1"><a href="BBandPass.html"><b>BBandPass</b></a></span><b><span class="Apple-tab-span">	</span></b>Band Pass Filter</p>
-<p class="p3"><span class="s1"><a href="BBandStop.html"><b>BBandStop</b></a></span><b><span class="Apple-tab-span">	</span></b>Band Reject Filter</p>
-<p class="p3"><span class="s1"><a href="BAllPass.html"><b>BAllPass</b></a></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>All Pass Filter</p>
-<p class="p2"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<a href="../SOS.html"><span class="s1"><b>SOS</b></span></a>) biquad UGen.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p3">SC3 port and coding - blackrain 06.17.2005</p>
-<p class="p3">SC3 plugin UGens - Joshua Parmenter 06.22.2005</p>
-<p class="p2"><br></p>
-<p class="p3">Some ideas from <i>"Cookbook formulae for audio EQ biquad filter coefficients"</i> by Robert Bristow-Johnson.</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BHiPass.html b/Help/UGens/Filters/BEQSuite/BHiPass.html
deleted file mode 100644
index 6cc2c1e..0000000
--- a/Help/UGens/Filters/BEQSuite/BHiPass.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 15.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0021e7}
-span.s5 {font: 9.0px Monaco; color: #000000}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #001bb9}
-span.s8 {color: #2c7014}
-span.s9 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BHiPass</b></span><span class="s2"><b><span class="Apple-tab-span">	</span></b></span><b>12db/oct rolloff - 2nd order resonant<span class="Apple-converted-space">  </span>Hi Pass Filter.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../../Filter.html"><span class="s4"><b>Filter</b></span></a><b> : </b><a href="BEQSuite.html"><b>BEQSuite</b></a></p>
-<p class="p4"><br></p>
-<p class="p1"><b>BHiPass.ar(in, freq, rq, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - cutoff frequency.</p>
-<p class="p1"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>*sc(dummy, freq, rq)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>calculate filter coefficients.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p2"><br></p>
-<p class="p1">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p1">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s3">see also:</span><span class="s5"> <a href="../SOS.html"><span class="s6"><b>SOS</b></span></a></span><span class="s3"><b>, </b><a href="BLowPass.html"><b>BLowPass</b></a><b>, </b><a href="BLowPass4.html"><b>BLowPass4</b></a><b>, </b><a href="BHiPass4.html"><b>BHiPass4</b></a><b>, </b><a href="BPeakEQ.html"><b>BPeakEQ</b></a><b>, </b><a href="BLowShelf.html"><b>BLowShelf</b></a><b>, </b><a href="BHiShelf.html"><b>BHiShelf</b></a><b>, </b><a href="BBandPass.html"><b>BBandPass</b></a><b>, </b><a href="BBandStop.html"><b>BBandStop</b></a><b>, </b><a href="BAllPass.html"><b>BAllPass</b></a><b>.</b></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6">(</p>
-<p class="p6">z = {</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>BHiPass<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SoundIn</span>.ar([0,1]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseX</span>.kr(10,20000,<span class="s8">\exponential</span>), <span class="s9">// cutoff freq.</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseY</span>.kr(0.0, 1.0, <span class="s8">\linear</span>), <span class="s9">// rq</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5); <span class="s9">// mul</span></p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p6">z.release;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BHiPass4.html b/Help/UGens/Filters/BEQSuite/BHiPass4.html
deleted file mode 100644
index a8adc0c..0000000
--- a/Help/UGens/Filters/BEQSuite/BHiPass4.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BHiPass4<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>24db/oct rolloff - 4th order resonant<span class="Apple-converted-space">  </span>Hi Pass Filter. [1]</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BHiPass4.ar(in, freq, rq, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed</p>
-<p class="p3"><b>freq</b> - cutoff frequency.</p>
-<p class="p3"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.</p>
-<p class="p2"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p2"><br></p>
-<p class="p3">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p3">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p2"><br></p>
-<p class="p3">[1] this is a pseudo UGen. BHiPass4 is built by cascading 2 SOS sections.</p>
-<p class="p2"><br></p>
-<p class="p3">see also:<span class="s2"> </span><b>SOS, BLowPass, BLowPass4, BHiPass, BPeakEQ, BLowShelf, BHiShelf, BBandPass, BBandStop, BAllPass.</b></p>
-<p class="p5"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6">(</p>
-<p class="p6">z = {</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>BHiPass4<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(10,20000,<span class="s5">\exponential</span>), <span class="s6">// cutoff freq.</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.1, 1.0, <span class="s5">\linear</span>), <span class="s6">// rq</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p6">}.play)</p>
-<p class="p6">z.release;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BHiShelf.html b/Help/UGens/Filters/BEQSuite/BHiShelf.html
deleted file mode 100644
index 7b06596..0000000
--- a/Help/UGens/Filters/BEQSuite/BHiShelf.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BHiShelf<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>Hi Shelf.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BHiShelf.ar(in, freq, rs, db, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed.</p>
-<p class="p3"><b>freq</b> - center frequency.</p>
-<p class="p3"><b>rs</b> - the reciprocal of S.<span class="Apple-converted-space">  </span>Shell boost/cut slope. When S = 1, the shelf slope is as steep as it can be and remain monotonically increasing or decreasing gain with frequency.<span class="Apple-converted-space">  </span>The shelf slope, in<span class="Apple-converted-space">  </span>dB/octave, remains proportional to S for all other values for a fixed <b>freq/SampleRate.ir</b> and <b>db</b>.</p>
-<p class="p3"><b>db </b>- gain. boost/cut the center frequency in dBs.</p>
-<p class="p4"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p2"><br></p>
-<p class="p3">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p3">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p2"><br></p>
-<p class="p3">see also:<span class="s2"> </span><b>SOS, BLowPass, BLowPass4, BHiPass, BHiPass4, BPeakEQ, BLowShelf, BBandPass, BBandStop, BAllPass.</b></p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">z = { </span>// toy around with boost/cut</p>
-<p class="p7">BHiShelf<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(2200,18000,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>1.0,<span class="Apple-converted-space">  </span><span class="s6">// rs</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(18.0, -18.0, <span class="s5">\linear</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-<p class="p8"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">z = { </span>// toy around with rs</p>
-<p class="p7">BHiShelf<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(2200,18000,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.1, 1.0, <span class="s5">\linear</span>),<span class="Apple-converted-space">  </span><span class="s6">// rs</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span>6,<span class="Apple-tab-span">	</span></span>// db</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BLowPass.html b/Help/UGens/Filters/BEQSuite/BLowPass.html
deleted file mode 100644
index 112d344..0000000
--- a/Help/UGens/Filters/BEQSuite/BLowPass.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 15.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0021e7}
-span.s5 {font: 9.0px Monaco; color: #000000}
-span.s6 {font: 12.0px Helvetica}
-span.s7 {color: #001bb9}
-span.s8 {color: #2c7014}
-span.s9 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BLowPass</b></span><span class="s2"><b><span class="Apple-tab-span">	</span></b></span><b>12db/oct rolloff - 2nd order resonant Low Pass Filter.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../../Filter.html"><span class="s4"><b>Filter</b></span></a><b> : </b><a href="BEQSuite.html"><b>BEQSuite</b></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BLowPass.ar(in, freq, rq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - cutoff frequency.</p>
-<p class="p1"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*sc(dummy, freq, rq)</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>calculate filter coefficients.</p>
-<p class="p2"><br></p>
-<p class="p1">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p4"><br></p>
-<p class="p1">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p1">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s3">see also:</span><span class="s5"> <a href="../SOS.html"><span class="s6"><b>SOS</b></span></a></span><span class="s3"><b>, </b><a href="BLowPass4.html"><b>BLowPass4</b></a><b>, </b><a href="BHiPass.html"><b>BHiPass</b></a><b>, </b><a href="BHiPass4.html"><b>BHiPass4</b></a><b>, </b><a href="BLowShelf.html"><b>BLowShelf</b></a><b>, </b><a href="BHiShelf.html"><b>BHiShelf</b></a><b>, </b><a href="BBandPass.html"><b>BBandPass</b></a><b>, </b><a href="BBandStop.html"><b>BBandStop</b></a><b>, </b><a href="BAllPass.html"><b>BAllPass</b></a><b>.</b></span></p>
-<p class="p2"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6">(</p>
-<p class="p6">z = {</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>BLowPass<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SoundIn</span>.ar([0,1]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseX</span>.kr(10,20000,<span class="s8">\exponential</span>), <span class="s9">// cutoff freq.</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseY</span>.kr(0.0, 1.0, <span class="s8">\linear</span>), <span class="s9">// rq</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5); <span class="s9">// mul</span></p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p6">z.release;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BLowPass4.html b/Help/UGens/Filters/BEQSuite/BLowPass4.html
deleted file mode 100644
index 1dec61b..0000000
--- a/Help/UGens/Filters/BEQSuite/BLowPass4.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BLowPass4</b></span><b><span class="Apple-tab-span">	</span>24db/oct rolloff - 4th order resonant Low Pass Filter. [1]</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BLowPass4.ar(in, freq, rq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed</p>
-<p class="p3"><b>freq</b> - cutoff frequency.</p>
-<p class="p3"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.</p>
-<p class="p4"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p4"><br></p>
-<p class="p3">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p3">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p4"><br></p>
-<p class="p3">[1] this is a composite pseudo UGen. BLowPass4 is built by cascading 2 SOS sections.</p>
-<p class="p4"><br></p>
-<p class="p3">see also:<span class="s2"> </span><b>SOS, BLowPass, BHiPass, BHiPass4, BPeakEQ, BLowShelf, BHiShelf, BBandPass, BBandStop, BAllPass.</b></p>
-<p class="p5"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6">(</p>
-<p class="p6">z = {</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>BLowPass4<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(10,20000,<span class="s5">\exponential</span>), <span class="s6">// cutoff freq.</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">MouseY</span><span class="s3">.kr(0.1, 1.0, </span><span class="s5">\linear</span><span class="s3">), </span>// rq - compensate for 2 biquad sections.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p6">}.play)</p>
-<p class="p6">z.release;</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BLowShelf.html b/Help/UGens/Filters/BEQSuite/BLowShelf.html
deleted file mode 100644
index af4ef43..0000000
--- a/Help/UGens/Filters/BEQSuite/BLowShelf.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BLowShelf<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>Low Shelf.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BLowShelf.ar(in, freq, rs, db, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed.</p>
-<p class="p3"><b>freq</b> - center frequency.</p>
-<p class="p3"><b>rs</b> - the reciprocal of S.<span class="Apple-converted-space">  </span>Shell boost/cut slope. When S = 1, the shelf slope is as steep as it can be and remain monotonically increasing or decreasing gain with frequency.<span class="Apple-converted-space">  </span>The shelf slope, in<span class="Apple-converted-space">  </span>dB/octave, remains proportional to S for all other values for a fixed <b>freq/SampleRate.ir</b> and <b>db</b>.</p>
-<p class="p3"><b>db </b>- gain. boost/cut the center frequency in dBs.</p>
-<p class="p2"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p4"><br></p>
-<p class="p3">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p3">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p4"><br></p>
-<p class="p3">see also:<span class="s2"> </span><b>SOS, BLowPass, BLowPass4, BHiPass, BHiPass4, BPeakEQ, BHiShelf, BBandPass, BBandStop, BAllPass.</b></p>
-<p class="p2"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">z = { </span>// toy around with boost/cut</p>
-<p class="p7">BLowShelf<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(40,6000,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>1.0,<span class="Apple-converted-space">  </span><span class="s6">// rs</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(24.0, -24.0, <span class="s5">\linear</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-<p class="p8"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">z = { </span>// toy around with rs</p>
-<p class="p7">BLowShelf<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(20,6000,<span class="s5">\exponential</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(0.1, 1.0, <span class="s5">\linear</span>),<span class="Apple-converted-space">  </span><span class="s6">// rs</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>6,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p5">}.play)</p>
-<p class="p5">z.release;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BEQSuite/BPeakEQ.html b/Help/UGens/Filters/BEQSuite/BPeakEQ.html
deleted file mode 100644
index dbce859..0000000
--- a/Help/UGens/Filters/BEQSuite/BPeakEQ.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BPeakEQ<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>parametric equalizer.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BPeakEQ.ar(in, freq, rq, db, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed</p>
-<p class="p3"><b>freq</b> - center frequency.</p>
-<p class="p3"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.</p>
-<p class="p3"><b>db </b>- boost/cut the center frequency (in dBs).</p>
-<p class="p2"><br></p>
-<p class="p3">The B equalization suite is based on the Second Order Section (<b>SOS</b>) biquad UGen.</p>
-<p class="p4"><br></p>
-<p class="p3">note: Biquad coefficient calculations imply certain amount of CPU overhead. These plugin UGens contain optimizations such that the coefficients get updated only when there has been a change to one of</p>
-<p class="p3">the filter's parameters. This can cause spikes in CPU performance and should be considered when using several of these units.</p>
-<p class="p4"><br></p>
-<p class="p3">see also:<span class="s2"> </span><b>SOS, BLowPass, BLowPass4, BHiPass, BHiPass4, BLowShelf, BHiShelf, BBandPass, BBandStop, BAllPass.</b></p>
-<p class="p5"><br></p>
-<p class="p6">s.boot;</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">z = { </span>// toy with boost/cut</p>
-<p class="p8">BPeakEQ<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(20,20000,<span class="s5">\exponential</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.8,<span class="Apple-converted-space">  </span><span class="s6">// rq</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(12.0, -12.0, <span class="s5">\linear</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p6">}.play)</p>
-<p class="p6">z.release;</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3">z = { </span>// toy with rq</p>
-<p class="p8">BPeakEQ<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">SoundIn</span>.ar([0,1]),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(20,20000,<span class="s5">\exponential</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(10, 0.4, <span class="s5">\linear</span>),<span class="Apple-converted-space">  </span><span class="s6">// rq</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>6, </span>// boost/cut - +6dB</p>
-<p class="p6"><span class="Apple-tab-span">	</span>0.5); <span class="s6">// mul</span></p>
-<p class="p6">}.play)</p>
-<p class="p6">z.release;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BPF.html b/Help/UGens/Filters/BPF.html
deleted file mode 100644
index f46a3be..0000000
--- a/Help/UGens/Filters/BPF.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BPF<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>2nd order Butterworth bandpass filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BPF.ar(in, freq, rq, mul, add)</b></p>
-<p class="p1"><b>BPF.kr(in, freq, rq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A second order Butterworth bandpass filter.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - centre frequency in Hertz.</p>
-<p class="p1"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// modulate filter frequency with a sine</p>
-<p class="p6">{ <span class="s3">BPF</span>.ar(<span class="s3">Saw</span>.ar(200, 0.5), <span class="s3">SinOsc</span>.kr(<span class="s3">XLine</span>.kr(0.7, 300, 20), 0, 3600, 4000), 0.3) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// modulate filter frequency with the cursor position</p>
-<p class="p6">{ <span class="s3">BPF</span>.ar(<span class="s3">Saw</span>.ar(200, 0.5), <span class="s3">MouseX</span>.kr(100, 10000, 1), 0.3) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// BPF on control signals:</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="Apple-tab-span">	</span><span class="s3">var</span> vib = <span class="s3">BPF</span>.kr(<span class="s3">PinkNoise</span>.kr, <span class="s3">MouseX</span>.kr(1, 100, 1), 0.3) * 10;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(vib * 200 + 600) * 0.2 }.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BPZ2.html b/Help/UGens/Filters/BPZ2.html
deleted file mode 100644
index e3b3bcd..0000000
--- a/Help/UGens/Filters/BPZ2.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #000000; min-height: 11.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BPZ2</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two zero fixed midpass</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="LPZ2.html"><span class="s6"><b>LPZ2</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BPZ2.ar(in, mul, add)</b></p>
-<p class="p1"><b>BPZ2.kr(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A special case fixed filter. Implements the formula:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = 0.5 * (in(i) - in(i-2))</p>
-<p class="p2"><br></p>
-<p class="p1">This filter cuts out 0 Hz and the Nyquist frequency.</p>
-<p class="p1">Compare:</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s7">WhiteNoise</span>.ar(0.25) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s7">BPZ2</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.25)) }.play;</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BRF.html b/Help/UGens/Filters/BRF.html
deleted file mode 100644
index 70f0dff..0000000
--- a/Help/UGens/Filters/BRF.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BRF<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>2nd order Butterworth band reject filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="BPF.html"><span class="s6"><b>BPF</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BRF.ar(in, freq, rq, mul, add)</b></p>
-<p class="p1"><b>BRF.kr(in, freq, rq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A second order low pass filter.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - centre frequency in Hertz.</p>
-<p class="p1"><b>rq</b> - the reciprocal of Q. bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s7">BRF</span>.ar(<span class="s7">Saw</span>.ar(200, 0.1), <span class="s7">FSinOsc</span>.kr(<span class="s7">XLine</span>.kr(0.7, 300, 20), 0, 3800, 4000), 0.3) }.play;</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s7">BRF</span>.ar(<span class="s7">Saw</span>.ar(200, 0.5), <span class="s7">MouseX</span>.kr(100, 10000, 1), 0.3) }.play;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// BRF on control signals:</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="Apple-tab-span">	</span><span class="s7">var</span> vib = <span class="s7">BRF</span>.kr(<span class="s7">SinOsc</span>.kr([1, 3, 10], 0, [1, 0.5, 0.25]).sum, <span class="s7">MouseX</span>.kr(1, 10, 1), 0.3);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(vib * 200 + 600) * 0.2 }.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/BRZ2.html b/Help/UGens/Filters/BRZ2.html
deleted file mode 100644
index 20e4664..0000000
--- a/Help/UGens/Filters/BRZ2.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BRZ2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>two zero fixed midcut</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="LPZ2.html"><span class="s6"><b>LPZ2</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BRZ2.ar(in, mul, add)</b></p>
-<p class="p1"><b>BRZ2.kr(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A special case fixed filter. Implements the formula:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = 0.5 * (in(i) + in(i-2))</p>
-<p class="p2"><br></p>
-<p class="p1">This filter cuts out frequencies around 1/2 of the Nyquist frequency.</p>
-<p class="p5"><br></p>
-<p class="p6">// Compare<span class="s7">:</span></p>
-<p class="p2"><br></p>
-<p class="p7">{ <span class="s8">WhiteNoise</span>.ar(0.25) }.play;</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s8">BRZ2</span>.ar(<span class="s8">WhiteNoise</span>.ar(0.25)) }.play;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Changed.html b/Help/UGens/Filters/Changed.html
deleted file mode 100644
index 038077a..0000000
--- a/Help/UGens/Filters/Changed.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ee}
-span.s4 {color: #0026b4}
-span.s5 {color: #0021e7}
-span.s6 {color: #002fe0}
-span.s7 {color: #0000ff}
-span.s8 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Changed<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>triggers when a value changes</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><span class="s4"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s6"><b>UGen</b></span></a></span><span class="s6"><b> : </b><a href="../Filter.html"><span class="s7"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Changed.ar(in, thresh)</b></p>
-<p class="p1"><b>Changed.kr(in, thresh)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A special case fixed filter. Implements the formula:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = abs(in(i) - in(i-1)) > thresh</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// detect changes in a signal:</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s8">var</span> changingSignal = <span class="s8">LFNoise0</span>.ar(1000);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s8">var</span> changed = <span class="s8">Changed</span>.ar(changingSignal);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[changingSignal, changed]</p>
-<p class="p7">}.plot2</p>
-<p class="p7">);</p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Clip.html b/Help/UGens/Filters/Clip.html
deleted file mode 100644
index 12afe83..0000000
--- a/Help/UGens/Filters/Clip.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0020b4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Clip<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clip a signal outside given thresholds</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Clip.ar(in, lo, hi)</b></p>
-<p class="p3"><b>Clip.kr(in, lo, hi)</b></p>
-<p class="p4"><br></p>
-<p class="p3">This differs from the <b>BinaryOpUGen</b> <b>clip2</b> in that it allows one to set both low and high thresholds.</p>
-<p class="p3"><b>in</b> - signal to be clipped</p>
-<p class="p3"><b>lo</b> - low threshold of clipping. Must be less then hi.</p>
-<p class="p3"><b>hi</b> - high threshold of clipping. Must be greater then lo.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s1">Clip</span>.ar(<span class="s1">SinOsc</span>.ar(440, 0, 0.2), -0.07, 0.07) }.scope;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/DynKlank.html b/Help/UGens/Filters/DynKlank.html
deleted file mode 100644
index 041c793..0000000
--- a/Help/UGens/Filters/DynKlank.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DynKlank<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dynamic bank of resonators</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>DynKlank.ar(specificationsArrayRef, input, freqscale, freqoffset, decayscale)</b></p>
-<p class="p1"><b>DynKlank.kr(specificationsArrayRef, input, freqscale, freqoffset, decayscale)</b></p>
-<p class="p2"><br></p>
-<p class="p1">DynKlank is a bank of resonators which can be used to simulate the resonant modes of an object. Each mode is given a ring time, which is the time for the mode to decay by 60 dB.</p>
-<p class="p2"><br></p>
-<p class="p1">Unlike <a href="Klank.html"><span class="s2">Klank</span></a>, the parameters in <b>specificationsArrayRef</b> can be changed after it has been started.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>specificationsArrayRef</b> - a Ref to an Array of three Arrays :</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>frequencies</b> - an Array of filter frequencies.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>amplitudes</b> - an Array of filter amplitudes, or nil. If nil, then amplitudes default to 1.0</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>ring</b> <b>times</b> - an Array of 60 dB decay times for the filters.</p>
-<p class="p1">All subarrays, if not nil, should have the same length.</p>
-<p class="p1"><b>input</b> - the excitation input to the resonant filter bank.</p>
-<p class="p1"><b>freqscale</b> - a scale factor multiplied by all frequencies at initialization time.</p>
-<p class="p1"><b>freqoffset</b> - an offset added to all frequencies at initialization time.</p>
-<p class="p1"><b>decayscale</b> - a scale factor multiplied by all ring times at initialization time.</p>
-<p class="p3"><br></p>
-<p class="p4">s.boot;</p>
-<p class="p3"><br></p>
-<p class="p4">{ <span class="s2">DynKlank</span>.ar(`[[800, 1071, 1153, 1723], <span class="s2">nil</span>, [1, 1, 1, 1]], <span class="s2">Impulse</span>.ar(2, 0, 0.1)) }.play;</p>
-<p class="p3"><br></p>
-<p class="p4">{ <span class="s2">DynKlank</span>.ar(`[[800, 1071, 1353, 1723], <span class="s2">nil</span>, [1, 1, 1, 1]], <span class="s2">Dust</span>.ar(8, 0.1)) }.play;</p>
-<p class="p3"><br></p>
-<p class="p4">{ <span class="s2">DynKlank</span>.ar(`[[800, 1071, 1353, 1723], <span class="s2">nil</span>, [1, 1, 1, 1]], <span class="s2">PinkNoise</span>.ar(0.007)) }.play;</p>
-<p class="p3"><br></p>
-<p class="p4">{ <span class="s2">DynKlank</span>.ar(`[[200, 671, 1153, 1723], <span class="s2">nil</span>, [1, 1, 1, 1]], <span class="s2">PinkNoise</span>.ar([0.007,0.007])) }.play;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5">// change freqs and ringtimes with mouse</p>
-<p class="p4">{<span class="Apple-tab-span">	</span><span class="s2">var</span> freqs, ringtimes;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>freqs = [800, 1071, 1153, 1723] * <span class="s2">MouseX</span>.kr(0.5, 2, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>ringtimes = [1, 1, 1, 1] * <span class="s2">MouseY</span>.kr(0.1, 10, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">DynKlank</span>.ar(`[freqs, <span class="s2">nil</span>, ringtimes ], <span class="s2">Impulse</span>.ar(2, 0, 0.1))</p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5">// set them from outside later:</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>'help-dynKlank'<span class="s3">, {</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> freqs, ringtimes, signal;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>freqs = <span class="s2">Control</span>.names([<span class="s4">\freqs</span>]).kr([800, 1071, 1153, 1723]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>ringtimes = <span class="s2">Control</span>.names([<span class="s4">\ringtimes</span>]).kr([1, 1, 1, 1]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>signal = <span class="s2">DynKlank</span>.ar(`[freqs, <span class="s2">nil</span>, ringtimes ], <span class="s2">Impulse</span>.ar(2, 0, 0.1));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, signal);</p>
-<p class="p4">}).add;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s3">a = </span><span class="s2">Synth</span><span class="s3">(</span>'help-dynKlank'<span class="s3">);</span></p>
-<p class="p3"><br></p>
-<p class="p4">a.setn(<span class="s4">\freqs</span>, <span class="s2">Array</span>.rand(4, 500, 2000));</p>
-<p class="p4">a.setn(<span class="s4">\ringtimes</span>, <span class="s2">Array</span>.rand(4, 0.2, 4) );</p>
-<p class="p3"><br></p>
-<p class="p5">// create multichannel controls directly with literal arrays:</p>
-<p class="p4">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>'help-dynKlank'<span class="s3">, {</span><span class="s2">|<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>freqs (#[100, 200, 300, 400]),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>amps (#[1, 0.3, 0.2, 0.05]),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>rings (#[1, 1, 1, 2])|</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, <span class="s2">DynKlank</span>.ar(`[freqs, amps, rings], <span class="s2">WhiteNoise</span>.ar * 0.001))</p>
-<p class="p4">}).add</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p6"><span class="s3">a = </span><span class="s2">Synth</span><span class="s3">(</span>'help-dynKlank'<span class="s3">);</span></p>
-<p class="p3"><br></p>
-<p class="p4">a.setn(<span class="s4">\freqs</span>, <span class="s2">Array</span>.rand(4, 500, 2000));</p>
-<p class="p4">a.setn(<span class="s4">\amps</span>, <span class="s2">Array</span>.exprand(4, 0.01, 1));</p>
-<p class="p3"><br></p>
-<p class="p4">{ <span class="s2">Out</span>.kr(102, <span class="s2">MouseX</span>.kr(1, 2) * <span class="s2">Array</span>.rand(4, 500, 2000)) }.play;</p>
-<p class="p4">a.mapn(<span class="s4">\freqs</span>, 102, 4);</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/FOS.html b/Help/UGens/Filters/FOS.html
deleted file mode 100644
index d978edb..0000000
--- a/Help/UGens/Filters/FOS.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FOS<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>first order filter section</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../Filter.html"><b>Filter</b></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>FOS.ar(in, a0, a1, b1, mul, add)</b></p>
-<p class="p1"><b>FOS.kr(in, a0, a1, b1, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A standard first order filter section. Filter coefficients are given directly rather than calculated for you.</p>
-<p class="p1">Formula is equivalent to:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = (a0 * in(i)) + (a1 * in(i-1)) + (b1 * out(i-1))</p>
-<p class="p2"><br></p>
-<p class="p1">Examples:</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7">// same as OnePole</p>
-<p class="p6">{<span class="Apple-tab-span">	</span><span class="s4">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">LFTri</span>.ar(0.4, 0, 0.99);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">FOS</span>.ar(<span class="s4">LFSaw</span>.ar(200, 0, 0.2), 1 - x.abs, 0.0, x)</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// same as OneZero</p>
-<p class="p6">{<span class="Apple-tab-span">	</span><span class="s4">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">LFTri</span>.ar(0.4, 0, 0.99);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">FOS</span>.ar(<span class="s4">LFSaw</span>.ar(200, 0, 0.2), 1 - x.abs, x, 0.0)</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p7">// same as OnePole, kr</p>
-<p class="p6">{<span class="Apple-tab-span">	</span><span class="s4">var</span> x, ctl;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s4">LFTri</span>.kr(0.2, 0, 0.99);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>ctl = <span class="s4">FOS</span>.kr(<span class="s4">LFSaw</span>.kr(8, 0, 0.2), 1 - x.abs, 0.0, x);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">LFTri</span>.ar(ctl * 200 + 500);</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Fold.html b/Help/UGens/Filters/Fold.html
deleted file mode 100644
index ec981ad..0000000
--- a/Help/UGens/Filters/Fold.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0020b4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Fold<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fold a signal outside given thresholds</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Fold.ar(in, lo, hi)</b></p>
-<p class="p3"><b>Fold.kr(in, lo, hi)</b></p>
-<p class="p4"><br></p>
-<p class="p3">This differs from the <b>BinaryOpUGen</b> <b>fold2</b> in that it allows one to set both low and high thresholds.</p>
-<p class="p3"><b>in</b> - signal to be folded</p>
-<p class="p3"><b>lo</b> - low threshold of folding. Sample values < lo will be folded. lo must be less then hi.</p>
-<p class="p3"><b>hi</b> - high threshold of folding. Sample values > hi will be folded. hi must be greater then lo.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s1">Fold</span>.ar(<span class="s1">SinOsc</span>.ar(440, 0, 0.2), -0.1, 0.1) }.scope;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Formlet.html b/Help/UGens/Filters/Formlet.html
deleted file mode 100644
index 5a2f919..0000000
--- a/Help/UGens/Filters/Formlet.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #001bb9}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Formlet<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>FOF-like filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../Filter.html"><b>Filter</b></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Formlet.ar(in, freq, attacktime, decaytime, mul, add)</b></p>
-<p class="p1"><b>Formlet.kr(in, freq, attacktime, decaytime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">This is a resonant filter whose impulse response is like that of a sine wave with a <a href="../Synth control/Envelopes/Decay2.html"><span class="s4">Decay2</span></a> envelope over it.</p>
-<p class="p1">It is possible to control the attacktime and decaytime.</p>
-<p class="p2"><br></p>
-<p class="p1">Formlet is equivalent to:</p>
-<p class="p2"><br></p>
-<p class="p1">Ringz(in, freq, decaytime) - Ringz(in, freq, attacktime)</p>
-<p class="p2"><br></p>
-<p class="p1">Note that if attacktime == decaytime then the signal cancels out and if attacktime > decaytime</p>
-<p class="p1">then the impulse response is inverted.</p>
-<p class="p2"><br></p>
-<p class="p1">The great advantage to this filter over FOF is that there is no limit to the number of overlapping</p>
-<p class="p1">grains since the grain is just the impulse response of the filter.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - resonant frequency in Hertz</p>
-<p class="p1"><b>attackTime</b> - 60 dB attack time in seconds.</p>
-<p class="p1"><b>decayTime</b> - 60 dB decay time in seconds.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s4">Formlet</span>.ar(<span class="s4">Impulse</span>.ar(20, 0.5), 1000, 0.01, 0.1) }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s4">Formlet</span>.ar(<span class="s4">Blip</span>.ar(<span class="s4">XLine</span>.kr(10,400,8), 1000, 0.1), 1000, 0.01, 0.1) }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// modulating formant frequency</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> in;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s4">Blip</span>.ar(<span class="s4">SinOsc</span>.kr(5,0,20,300), 1000, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Formlet</span>.ar(in, <span class="s4">XLine</span>.kr(1500,700,8), 0.005, 0.04);</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// mouse control of frequency and decay time.</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> in;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s4">Blip</span>.ar(<span class="s4">SinOsc</span>.kr(5,0,20,300), 1000, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Formlet</span>.ar(in,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(700,2000,<span class="s5">1</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.005, <span class="s4">MouseX</span>.kr(0.01,0.2,<span class="s5">1</span>));</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// mouse control of frequency and decay time.</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> freq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s4">Formlet</span>.kr(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dust</span>.kr(10 ! 2),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">MouseY</span>.kr(7,200,<span class="s5">1</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.005, <span class="s4">MouseX</span>.kr(0.1,2,<span class="s5">1</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>SinOsc.ar(freq * 200 + [500, 600] - 100) * 0.2</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/FreqShift.html b/Help/UGens/Filters/FreqShift.html
deleted file mode 100644
index 2b1f849..0000000
--- a/Help/UGens/Filters/FreqShift.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19; min-height: 12.0px}
-span.s1 {color: #091fb1}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #902a19}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FreqShift<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Frequency Shifter</b></p>
-<p class="p1">add</p>
-<p class="p2"><b>FreqShift.ar(input, shift, phase, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p2">FreqShift implements single sideband amplitude modulation, also known as frequency shifting, but not to be confused with pitch shifting.<span class="Apple-converted-space">  </span>Frequency shifting moves all the components of a signal by a fixed amount but does not preserve the original harmonic relationships.</p>
-<p class="p3"><br></p>
-<p class="p2"><b>input</b> - audio input</p>
-<p class="p2"><b>shift</b> - amount of shift in cycles per second</p>
-<p class="p2"><b>phase </b>- phase of the frequency shift (0 - 2pi)<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><b>Examples</b></p>
-<p class="p3"><br></p>
-<p class="p4">// shifting a 100Hz tone by 1 Hz rising to 500Hz</p>
-<p class="p5">{<span class="s1">FreqShift</span>.ar(<span class="s1">SinOsc</span>.ar(100),<span class="s1">XLine</span>.kr(1,500,5),0,[0.5,0.5])}.play(s);</p>
-<p class="p6"><br></p>
-<p class="p4">// shifting a complex tone by 1 Hz rising to 500Hz</p>
-<p class="p5">{<span class="s1">FreqShift</span>.ar(<span class="s1">Klang</span>.ar(`[[101,303,606,808]]),<span class="s1">XLine</span>.kr(1,500,10),0,[0.25,0.25])}.play(s);</p>
-<p class="p6"><br></p>
-<p class="p4">// modulating shift and phase</p>
-<p class="p5">{<span class="s1">FreqShift</span>.ar(<span class="s1">SinOsc</span>.ar(10),<span class="s1">LFNoise2</span>.ar(0.3,1500),<span class="s1">SinOsc</span>.ar(500).range(0,2pi),[0.5,0.5])}.play(s);</p>
-<p class="p6"><br></p>
-<p class="p4">// the ubiquitous houston example</p>
-<p class="p5">(</p>
-<p class="p7"><span class="s2">b = </span><span class="s1">Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p5">{<span class="s1">FreqShift</span>.ar(<span class="s1">PlayBuf</span>.ar(1,b,<span class="s1">BufRateScale</span>.kr(b),loop:1),<span class="s1">LFNoise0</span>.kr(0.45,1000),0,[1,1])}.play(s);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p4">// shifting bandpassed noise</p>
-<p class="p5">{<span class="s1">FreqShift</span>.ar(<span class="s1">BPF</span>.ar(<span class="s1">WhiteNoise</span>.ar(1),1000,0.001),<span class="s1">LFNoise0</span>.kr(5.5,1000),0,[32,32])}.play(s);</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><b>More Examples </b>(send a SynthDef, run the routine then send a different SynthDef)</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">(</span>// simple detune & pitchmod via FreqShift</p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s3">"frqShift1"</span>,{<span class="s1">arg</span> frq,detune=1.5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> e1,left,right;<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>e1 = <span class="s1">EnvGen</span>.ar(<span class="s1">Env</span>.new([0,1,0],[1,2.3]),1,doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>left = <span class="s1">SinOsc</span>.ar(frq,0,e1); <span class="s4">// original tone</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>left = left + <span class="s1">FreqShift</span>.ar(left,frq*detune); <span class="s4">// shift and add back to original<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>right = <span class="s1">FreqShift</span>.ar(left,<span class="s1">SinOsc</span>.kr(3.23,0,5));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, [left,right] * 0.25);</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">(</span>// the routine</p>
-<p class="p8"><span class="s2">r = </span>Routine<span class="s2">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> table,pitch;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>table = [0,2,4,5,7,9,11,12];</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">inf</span>.do{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pitch = (48+(12*2.rand) + table.choose).midicps;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s3">"s_new"</span>,<span class="s3">"frqShift1"</span>,-1,1,1,<span class="s3">"frq"</span>,pitch);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="s2">(</span>// shift pulse wave in opposite directions</p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s3">"frqShift1"</span>,{<span class="s1">arg</span> frq,detune=0.15;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> e1,snd,left,right;<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>e1 = <span class="s1">EnvGen</span>.ar(<span class="s1">Env</span>.new([0,1,0],[0.02,3.2]),1,doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>snd = <span class="s1">Pulse</span>.ar(frq,<span class="s1">SinOsc</span>.kr(2.3).range(0.2,0.8),e1); <span class="s4">// original tone</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>left = <span class="s1">FreqShift</span>.ar(snd,<span class="s1">XLine</span>.kr(-0.1,-200,2)); <span class="s4">// shift and add back to original<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>right = <span class="s1">FreqShift</span>.ar(snd,<span class="s1">XLine</span>.kr(0.1,200,2));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, [left,right] * 0.25);</p>
-<p class="p5">}).add</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="s2">(</span>// FreqShift >> feedback >>> FreqShift</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"frqShift1"<span class="s2">,{</span><span class="s1">arg</span><span class="s2"> frq;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> e1,snd,snd2,in;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s1">FreqShift</span>.ar(<span class="s1">InFeedback</span>.ar(0,1)*3.2,<span class="s1">XLine</span>.ar(0.01,frq*1.5,1)); <span class="s4">// shift the feedback</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>e1 = <span class="s1">Env</span>.new([0,1,0],[0.02,2.98]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>snd = <span class="s1">SinOsc</span>.ar(frq,0,<span class="s1">EnvGen</span>.ar(e1,1,doneAction:2));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>snd2 = <span class="s1">FreqShift</span>.ar(snd+in,<span class="s1">SinOsc</span>.ar(4.24,0.5,3),0,0.5); <span class="s4">// subtle modulating shift</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">OffsetOut</span>.ar([0,1], <span class="s1">Limiter</span>.ar(snd2+snd * 0.5,1,0.005));</p>
-<p class="p5">}).add;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="s2">r.stop; </span>// stop old routine</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="s2">(</span>// ssllooww columbia tuned shift detune</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s1">b = Buffer</span><span class="s2">.read(s,</span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s3">"frqShift1"</span>,{<span class="s1">arg</span> frq, bufnum;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> e1,snd,left,right;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>e1 = <span class="s1">Env</span>.new([0,1,0],[3,1],-4);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>snd = <span class="s1">PlayBuf</span>.ar(1, bufnum, <span class="s1">BufRateScale</span>.kr(bufnum) * 0.01, loop:1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>left = <span class="s1">FreqShift</span>.ar(snd,frq*2,0,<span class="s1">EnvGen</span>.ar(e1,1,doneAction:2)); <span class="s4">// subtle shift of the output</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>right = <span class="s1">FreqShift</span>.ar(snd,frq*3,0,<span class="s1">EnvGen</span>.ar(e1,1,doneAction:2));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, [left,right] * 3);</p>
-<p class="p5">}).add;</p>
-<p class="p4"><span class="s2">(</span>// the routine</p>
-<p class="p8"><span class="s2">r = </span>Routine<span class="s2">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> table,pitch;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>table = [0,2,4,5,7,9,11,12];</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">inf</span>.do{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pitch = (48+(12*2.rand) + table.choose).midicps;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s3">"s_new"</span>,<span class="s3">"frqShift1"</span>,-1,1,1, <span class="s3">"frq"</span>, pitch, <span class="s3">"bufnum"</span>, b);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5">).play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/HPF.html b/Help/UGens/Filters/HPF.html
deleted file mode 100644
index b09d0fd..0000000
--- a/Help/UGens/Filters/HPF.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>HPF<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>2nd order Butterworth highpass filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="LPF.html"><span class="s6"><b>LPF</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>HPF.ar(in, freq, mul, add)</b></p>
-<p class="p1"><b>HPF.kr(in, freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A second order high pass filter.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - cutoff frequency.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s7">HPF</span>.ar(<span class="s7">Saw</span>.ar(200,0.1), <span class="s7">FSinOsc</span>.kr(<span class="s7">XLine</span>.kr(0.7, 300, 20), 0, 3600, 4000), 5) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="Apple-tab-span">	</span><span class="s7">var</span> ctl = <span class="s7">HPF</span>.kr(<span class="s7">LFSaw</span>.kr(5), <span class="s7">SinOsc</span>.kr(<span class="s7">XLine</span>.kr(0.07,30,20), 0, 35, 40)) ;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(ctl * 200 + 500) * 0.1;</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="Apple-tab-span">	</span><span class="s7">var</span> ctl = <span class="s7">HPF</span>.kr(<span class="s7">LFSaw</span>.kr(5,0.1), <span class="s7">MouseX</span>.kr(2, 200, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(ctl * 200 + 400) * 0.1;</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/HPZ1.html b/Help/UGens/Filters/HPZ1.html
deleted file mode 100644
index bec8d80..0000000
--- a/Help/UGens/Filters/HPZ1.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #000000; min-height: 11.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>HPZ1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two point difference filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="LPZ1.html"><span class="s6"><b>LPZ1</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>HPZ1.ar(in, mul, add)</b></p>
-<p class="p1"><b>HPZ1.kr(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A special case fixed filter. Implements the formula:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = 0.5 * (in(i) - in(i-1))</p>
-<p class="p2"><br></p>
-<p class="p1">which is a two point differentiator.</p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="HPZ2.html"><span class="s6">HPZ2</span></a></p>
-<p class="p2"><br></p>
-<p class="p5">// Compare:</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s7">WhiteNoise</span>.ar(0.25) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s7">HPZ1</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.25)) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// HPZ1 is useful to detect changes in a signal:</p>
-<p class="p5">// see also <a href="HPZ2.html"><span class="s6">HPZ2</span></a></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> changingSignal = <span class="s7">LFNoise0</span>.ar(1000);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> hpz1 = <span class="s7">HPZ1</span>.ar(changingSignal);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>[hpz1, hpz1 > 0, hpz1.abs > 0]<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.plot</p>
-<p class="p6">);</p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/HPZ2.html b/Help/UGens/Filters/HPZ2.html
deleted file mode 100644
index 750de7e..0000000
--- a/Help/UGens/Filters/HPZ2.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #000000; min-height: 11.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>HPZ2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two zero fixed highpass</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="LPZ2.html"><span class="s6"><b>LPZ2</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>HPZ2.ar(in, mul, add)</b></p>
-<p class="p1"><b>HPZ2.kr(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A special case fixed filter. Implements the formula:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = 0.25 * (in(i) - (2*in(i-1)) + in(i-2))</p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="HPZ1.html"><span class="s6">HPZ1</span></a></p>
-<p class="p2"><br></p>
-<p class="p5">// Compare:</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s7">WhiteNoise</span>.ar(0.25) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s7">HPZ2</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.25)) }.play;</p>
-<p class="p8"><br></p>
-<p class="p5">// HPZ2 is useful to detect changes in a signal:</p>
-<p class="p5">// see also <a href="HPZ1.html">HPZ1</a></p>
-<p class="p9">(</p>
-<p class="p9">{<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s7">var</span> changingSignal = <span class="s7">LFNoise0</span>.ar(1000);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s7">var</span> hpz1 = <span class="s7">HPZ2</span>.ar(changingSignal);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>[hpz1, hpz1 > 0]<span class="Apple-converted-space"> </span></p>
-<p class="p9">}.plot</p>
-<p class="p9">);</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Klank.html b/Help/UGens/Filters/Klank.html
deleted file mode 100644
index 8208330..0000000
--- a/Help/UGens/Filters/Klank.html
+++ /dev/null
@@ -1,283 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0000ff}
-span.s2 {color: #0025b2}
-span.s3 {color: #982316}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.s6 {color: #416d1f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Klank<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bank of resonators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Klank.ar(specificationsArrayRef, input, freqscale, freqoffset, decayscale)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Klank is a bank of fixed frequency resonators which can be used to simulate the resonant modes of an object. Each mode is given a ring time, which is the time for the mode to decay by 60 dB.</p>
-<p class="p2"><br></p>
-<p class="p3">The parameters in <b>specificationsArrayRef</b> can't be changed after it has been started.<span class="Apple-converted-space"> </span></p>
-<p class="p3">For a modulatable but less efficient version, see <a href="DynKlank.html"><span class="s1">DynKlank</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>specificationsArrayRef</b> - a Ref to an Array of three Arrays :</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>frequencies</b> - an Array of filter frequencies.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>amplitudes</b> - an Array of filter amplitudes, or nil. If nil, then amplitudes default to 1.0</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>ring</b> <b>times</b> - an Array of 60 dB decay times for the filters.</p>
-<p class="p3">All subarrays, if not nil, should have the same length.</p>
-<p class="p3"><b>input</b> - the excitation input to the resonant filter bank.</p>
-<p class="p3"><b>freqscale</b> - a scale factor multiplied by all frequencies at initialization time.</p>
-<p class="p3"><b>freqoffset</b> - an offset added to all frequencies at initialization time.</p>
-<p class="p3"><b>decayscale</b> - a scale factor multiplied by all ring times at initialization time.</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s2">Klank</span>.ar(`[[800, 1071, 1153, 1723], <span class="s2">nil</span>, [1, 1, 1, 1]], <span class="s2">Impulse</span>.ar(2, 0, 0.1)) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s2">Klank</span>.ar(`[[800, 1071, 1353, 1723], <span class="s2">nil</span>, [1, 1, 1, 1]], <span class="s2">Dust</span>.ar(8, 0.1)) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s2">Klank</span>.ar(`[[800, 1071, 1353, 1723], <span class="s2">nil</span>, [1, 1, 1, 1]], <span class="s2">PinkNoise</span>.ar(0.007)) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s2">Klank</span>.ar(`[[200, 671, 1153, 1723], <span class="s2">nil</span>, [1, 1, 1, 1]], <span class="s2">PinkNoise</span>.ar([0.007,0.007])) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Klank</span>.ar(`[<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Array</span>.rand(12, 800.0, 4000.0),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// frequencies</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">nil</span><span class="s4">,<span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></span>// amplitudes (default to 1.0)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Array</span>.rand(12, 0.1, 2)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// ring times</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s2">Decay</span>.ar(<span class="s2">Impulse</span>.ar(4), 0.03, <span class="s2">ClipNoise</span>.ar(0.01)))</p>
-<p class="p5">})</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// a synth def that has 4 partials</p>
-<p class="p5">(</p>
-<p class="p5">s = <span class="s2">Server</span>.local;</p>
-<p class="p5"><span class="s2">SynthDef</span>(<span class="s5">"help-Control"</span>, { <span class="s2">arg</span> out=0,i_freq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> klank, n, harm, amp, ring;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// harmonics</p>
-<p class="p5"><span class="Apple-tab-span">	</span>harm = <span class="s2">Control</span>.names([<span class="s6">\harm</span>]).ir(<span class="s2">Array</span>.series(4,1,1).postln);</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// amplitudes</p>
-<p class="p5"><span class="Apple-tab-span">	</span>amp = <span class="s2">Control</span>.names([<span class="s6">\amp</span>]).ir(<span class="s2">Array</span>.fill(4,0.05));</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// ring times</p>
-<p class="p5"><span class="Apple-tab-span">	</span>ring = <span class="s2">Control</span>.names([<span class="s6">\ring</span>]).ir(<span class="s2">Array</span>.fill(4,1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>klank = <span class="s2">Klank</span>.ar(`[harm,amp,ring], {<span class="s2">ClipNoise</span>.ar(0.003)}.dup, i_freq);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, klank);</p>
-<p class="p5">}).send(s);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// nothing special yet, just using the default set of harmonics.</p>
-<p class="p5">a = <span class="s2">Synth</span>(<span class="s5">"help-Control"</span>,[<span class="s6">\i_freq</span>, 300]);</p>
-<p class="p5">b = <span class="s2">Synth</span>(<span class="s5">"help-Control"</span>,[<span class="s6">\i_freq</span>, 400]);</p>
-<p class="p5">c = <span class="s2">Synth</span>(<span class="s5">"help-Control"</span>,[<span class="s6">\i_freq</span>, 533.33]);</p>
-<p class="p5">d = <span class="s2">Synth</span>(<span class="s5">"help-Control"</span>,[<span class="s6">\i_freq</span>, 711.11]);</p>
-<p class="p6"><br></p>
-<p class="p5">a.free;</p>
-<p class="p5">b.free;</p>
-<p class="p5">c.free;</p>
-<p class="p5">d.free;</p>
-<p class="p6"><br></p>
-<p class="p7">// in order to set the harmonics amps and ring times at</p>
-<p class="p7">// initialization time we need to use an OSC bundle.</p>
-<p class="p5">(</p>
-<p class="p5">s.sendBundle(<span class="s2">nil</span>,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/s_new"</span>, <span class="s5">"help-Control"</span>, 2000, 1, 0, <span class="s6">\i_freq</span>, 500], <span class="s3">// start note</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/n_setn"</span>, 2000, <span class="s5">"harm"</span>, 4, 1, 3, 5, 7] <span class="s3">// set odd harmonics</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">s.sendMsg(<span class="s5">"/n_free"</span>, 2000);</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">s.sendBundle(<span class="s2">nil</span>,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/s_new"</span>, <span class="s5">"help-Control"</span>, 2000, 1, 0, <span class="s6">\i_freq</span>, 500], <span class="s3">// start note</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// set geometric series harmonics</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/n_setn"</span>, 2000, <span class="s5">"harm"</span>, 4] ++ <span class="s2">Array</span>.geom(4,1,1.61)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">s.sendMsg(<span class="s5">"/n_free"</span>, 2000);</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7">// set harmonics, ring times and amplitudes</p>
-<p class="p5">s.sendBundle(<span class="s2">nil</span>,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/s_new"</span>, <span class="s5">"help-Control"</span>, 2000, 1, 0, <span class="s6">\i_freq</span>, 500], <span class="s3">// start note</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/n_setn"</span>, 2000, <span class="s5">"harm"</span>, 4, 1, 3, 5, 7], <span class="s3">// set odd harmonics</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/n_setn"</span>, 2000, <span class="s5">"ring"</span>, 4] ++ <span class="s2">Array</span>.fill(4,0.1), <span class="s3">// set shorter ring time</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/n_setn"</span>, 2000, <span class="s5">"amp"</span>, 4] ++ <span class="s2">Array</span>.fill(4,0.2) <span class="s3">// set louder amps</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">s.sendMsg(<span class="s6">\n_trace</span>, 2000);</p>
-<p class="p5">s.sendMsg(<span class="s5">"/n_free"</span>, 2000);</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p7">// same effect as above, but packed into one n_setn command</p>
-<p class="p5">s.sendBundle(<span class="s2">nil</span>,</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/s_new"</span>, <span class="s5">"help-Control"</span>, 2000, 1, 0, <span class="s6">\i_freq</span>, 500], <span class="s3">// start note</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[<span class="s5">"/n_setn"</span>, 2000, <span class="s5">"harm"</span>, 4, 1, 3, 5, 7,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">"ring"</span>, 4] ++ <span class="s2">Array</span>.fill(4,0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>++ [<span class="s5">"amp"</span>, 4] ++ <span class="s2">Array</span>.fill(4,0.2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">s.sendMsg(<span class="s5">"/n_free"</span>, 2000);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">//////////////////////////////////////////////////////////////////////</p>
-<p class="p6"><br></p>
-<p class="p7">//-- overlap texture</p>
-<p class="p5">(</p>
-<p class="p9">SynthDef<span class="s4">(</span><span class="s5">"help-KlankOverlapTexture"</span><span class="s4">, {</span>|out = 0, freqs = #[0,0,0,0,0,0,0,0,0,0,0,0], rings = #[0,0,0,0,0,0,0,0,0,0,0,0], atk = 5, sus = 8, rel = 5, pan = 0|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> e = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.linen(atk, sus, rel, 1, 4), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> i = <span class="s2">Decay</span>.ar(<span class="s2">Impulse</span>.ar(<span class="s2">Rand</span>(0.8, 2.2)), 0.03, <span class="s2">ClipNoise</span>.ar(0.01));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> z = <span class="s2">Klank</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>`[freqs, <span class="s2">nil</span>, rings],<span class="Apple-tab-span">	</span><span class="s3">// specs</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// input</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Pan2</span>.ar(z*e, pan));</p>
-<p class="p5">}).send(s);</p>
-<p class="p6"><br></p>
-<p class="p9"><span class="s4">r = </span>Routine<span class="s4">{</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> sustain = 8, transition = 3, overlap = 4;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> period = transition*2+sustain/overlap;</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>0.5.wait;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//wait for the synthdef to be sent to the server</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">inf</span>.do{</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s4">(</span>"help-KlankOverlapTexture"<span class="s4">, [</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\atk</span>, transition,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\sus</span>, sustain,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\rel</span>, transition,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\pan</span>, 1.0.rand2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]).setn(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\freqs</span>, {200.0.rrand(4000)}.dup(12),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\rings</span>, {0.1.rrand(2)}.dup(12)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>period.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">};</p>
-<p class="p5">r.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s4">r.stop;<span class="Apple-tab-span">	</span></span>//stop spawning new synths</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//-- frequency and decay scaling</p>
-<p class="p5">(</p>
-<p class="p9">SynthDef<span class="s4">(</span><span class="s5">"help-KlankScaling"</span><span class="s4">, {</span>|out = 0, freq = 0, rings = #[0,0,0,0,0,0,0,0,0,0,0,0], pan = 0|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> e = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>(#[1, 1, 0], #[0.4, 0.01]), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> i = <span class="s2">Decay</span>.ar(<span class="s2">Impulse</span>.ar(0), 0.03, <span class="s2">ClipNoise</span>.ar(0.01));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> z = <span class="s2">Klank</span>.ar(</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>`[(1..12), </span><span class="s2">nil</span><span class="s4">, rings],<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// specs (partials, amplitudes, ringtimes)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// input</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale to this frequency</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// frequency offset</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">MouseX</span><span class="s4">.kr(0.2, 3)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale decay times</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Pan2</span>.ar(z*e, pan));</p>
-<p class="p5">}).send(s);</p>
-<p class="p6"><br></p>
-<p class="p9"><span class="s4">r = </span>Routine<span class="s4">{</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> sustain = 8, transition = 3;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> mode = #[0, 2, 4, 5, 7, 9, 11, 12, 14, 16, 17, 19, 21, 23, 24];</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>0.5.wait;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//wait for the synthdef to be sent to the server</p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span>inf<span class="s4">.do{</span>|i|</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s4">(</span>"help-KlankScaling"<span class="s4">, [</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\freq</span>, (72 + (mode @@ i)).midicps</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]).setn(<span class="s6">\rings</span>, {0.1.rrand(2)}.dup(12));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">};</p>
-<p class="p5">r.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">r.stop;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//-- overlap texture 2</p>
-<p class="p5">(</p>
-<p class="p9">SynthDef<span class="s4">(</span><span class="s5">"help-KlankOverlapTexture2"</span><span class="s4">, {</span>|out = 0, freqs = #[0,0,0,0,0,0,0,0,0,0,0,0], rings = #[0,0,0,0,0,0,0,0,0,0,0,0], atk = 5, sus = 8, rel = 5, pan = 0|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> e = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.linen(atk, sus, rel, 1, 4), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> i = <span class="s2">BrownNoise</span>.ar(0.0012);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> z = <span class="s2">Klank</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>`[freqs, <span class="s2">nil</span>, rings],<span class="Apple-tab-span">	</span><span class="s3">// specs</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// input</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Pan2</span>.ar(z*e, pan));</p>
-<p class="p5">}).send(s);</p>
-<p class="p6"><br></p>
-<p class="p9"><span class="s4">r = </span>Routine<span class="s4">{</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> sustain = 6, transition = 4, overlap = 5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> period = transition*2+sustain/overlap;</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>0.5.wait;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//wait for the synthdef to be sent to the server</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">inf</span>.do{</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s4">(</span>"help-KlankOverlapTexture2"<span class="s4">, [</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\atk</span>, transition,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\sus</span>, sustain,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\rel</span>, transition,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\pan</span>, 1.0.rand2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]).setn(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\freqs</span>, {6000.0.linrand+80}.dup(12),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\rings</span>, {0.1.rrand(3)}.dup(12)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>period.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">};</p>
-<p class="p5">r.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">r.stop;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//-- overlap texture 3</p>
-<p class="p5">(</p>
-<p class="p9">SynthDef<span class="s4">(</span><span class="s5">"help-KlankOverlapTexture3"</span><span class="s4">, {</span>|out = 0, freqs = #[0,0,0,0,0,0,0,0,0,0,0,0], rings = #[0,0,0,0,0,0,0,0,0,0,0,0], pan = 0|</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> e = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>(#[1, 1, 0], #[18, 3]), doneAction:2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> i = <span class="s2">Decay</span>.ar(<span class="s2">Impulse</span>.ar(<span class="s2">Rand</span>(0.2, 0.6)), 0.8, <span class="s2">ClipNoise</span>.ar(0.001));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> z = <span class="s2">Klank</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>`[freqs, <span class="s2">2</span>, rings],<span class="Apple-tab-span">	</span><span class="s3">// specs</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// input</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Pan2</span>.ar(z*e, pan));</p>
-<p class="p5">}).send(s);</p>
-<p class="p6"><br></p>
-<p class="p9"><span class="s4">r = </span>Routine<span class="s4">{</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>0.5.wait;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//wait for the synthdef to be sent to the server</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">inf</span>.do{</p>
-<p class="p10"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s4">(</span>"help-KlankOverlapTexture3"<span class="s4">, [</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\pan</span>, 1.0.rand2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>]).setn(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\freqs</span>, {12000.0.linrand+80}.dup(12),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\rings</span>, {3.rrand(10)}.dup(12)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}</p>
-<p class="p5">};</p>
-<p class="p5">r.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">r.stop;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/LPF.html b/Help/UGens/Filters/LPF.html
deleted file mode 100644
index cf1128f..0000000
--- a/Help/UGens/Filters/LPF.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LPF<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>2nd order Butterworth lowpass filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LPF.ar(in, freq, mul, add)</b></p>
-<p class="p1"><b>LPF.kr(in, freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A second order low pass filter.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - cutoff frequency.</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s7">LPF</span>.ar(<span class="s7">Saw</span>.ar(200, 0.1), <span class="s7">SinOsc</span>.kr(<span class="s7">XLine</span>.kr(0.7, 300, 20), 0, 3600, 4000)) }.play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// control rate version is still erratic sometimes:</p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s7">var</span> ctl = <span class="s7">LPF</span>.kr(<span class="s7">LFPulse</span>.kr(8), <span class="s7">SinOsc</span>.kr(<span class="s7">XLine</span>.kr(1, 30, 5)) + 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(ctl * 200 + 400) * 0.2<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s7">var</span> ctl = <span class="s7">LPF</span>.kr(<span class="s7">LFPulse</span>.kr(8), <span class="s7">MouseX</span>.kr(2, 50, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(ctl * 200 + 400)<span class="Apple-converted-space"> </span><span class="s2"> * 0.2</span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/LPZ1.html b/Help/UGens/Filters/LPZ1.html
deleted file mode 100644
index 2a65298..0000000
--- a/Help/UGens/Filters/LPZ1.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #000000; min-height: 11.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LPZ1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two point average filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LPZ1.ar(in, mul, add)</b></p>
-<p class="p1"><b>LPZ1.kr(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A special case fixed filter. Implements the formula:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = 0.5 * (in(i) + in(i-1))</p>
-<p class="p2"><br></p>
-<p class="p1">which is a two point averager.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p5">// Compare:</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s7">WhiteNoise</span>.ar(0.25) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s7">LPZ1</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.25)) }.play;</p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/LPZ2.html b/Help/UGens/Filters/LPZ2.html
deleted file mode 100644
index 1b3fdce..0000000
--- a/Help/UGens/Filters/LPZ2.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LPZ2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>two zero fixed lowpass</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../Filter.html"><b>Filter</b></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LPZ2.ar(in, mul, add)</b></p>
-<p class="p1"><b>LPZ2.kr(in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A special case fixed filter. Implements the formula:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = 0.25 * (in(i) + (2*in(i-1)) + in(i-2))</p>
-<p class="p2"><br></p>
-<p class="p5">// Compare:</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s4">WhiteNoise</span>.ar(0.25) }.play;</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s4">LPZ2</span>.ar(<span class="s4">WhiteNoise</span>.ar(0.25)) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Lag.html b/Help/UGens/Filters/Lag.html
deleted file mode 100644
index c27945b..0000000
--- a/Help/UGens/Filters/Lag.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline ; color: #0021e7}
-span.s3 {color: #0000ff}
-span.s4 {color: #000000}
-span.s5 {color: #0025b2}
-span.s6 {color: #982316}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Lag<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>exponential lag</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Lag.ar(in, lagTime, mul, add)</b></p>
-<p class="p1"><b>Lag.kr(in, lagTime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">This is essentially the same as <b>OnePole</b> except that instead of supplying the coefficient directly, it is calculated from a 60 dB lag time. This is the time required for the filter to converge to within 0.01 % of a value. This is useful for smoothing out control signals.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>lagTime</b> - 60 dB lag time in seconds. <br>
-<br>
-See also <a href="LagUD.html"><span class="s2">LagUD</span></a>, <a href="Ramp.html"><span class="s3">Ramp</span></a></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5">// used to lag pitch</p>
-<p class="p4">{</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s5">SinOsc</span><span class="s4">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sine wave</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">Lag</span><span class="s4">.kr(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lag the modulator</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">LFPulse</span>.kr(4, 0, 0.5, 50, 400),<span class="Apple-tab-span">	</span><span class="s6">// frequency modulator</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Line</span>.kr(0, 1, 15)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// modulate lag time</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span></span>// phase</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3<span class="Apple-tab-span">	</span></span>// sine amplitude</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p4">}.play</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Lag2.html b/Help/UGens/Filters/Lag2.html
deleted file mode 100644
index 5f120a6..0000000
--- a/Help/UGens/Filters/Lag2.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {text-decoration: underline ; color: #0000bf}
-span.s8 {color: #0000bf}
-span.s9 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Lag2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>exponential lag</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="Lag.html"><span class="s6"><b>Lag</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Lag2.ar(in, lagTime, mul, add)</b></p>
-<p class="p1"><b>Lag2.kr(in, lagTime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Lag2 is equivalent to Lag.kr(Lag.kr(in, time), time), thus resulting in a smoother transition. This saves on CPU as you only have to calculate the decay factor once instead of twice. See <b>Lag</b> for more details.</p>
-<p class="p1"><br>
-See also <a href="Lag2UD.html"><span class="s7">Lag2UD</span><span class="s4"><br>
-</span></a></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>lagTime</b> - 60 dB lag time in seconds.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// used to lag pitch</p>
-<p class="p5">{</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s8">SinOsc</span><span class="s2">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sine wave</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">Lag2</span><span class="s2">.kr(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lag the modulator</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">LFPulse</span>.kr(4, 0, 0.5, 50, 400),<span class="Apple-tab-span">	</span><span class="s9">// frequency modulator</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Line</span>.kr(0, 1, 15)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// modulate lag time</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span></span>// phase</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3<span class="Apple-tab-span">	</span></span>// sine amplitude</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Lag2UD.html b/Help/UGens/Filters/Lag2UD.html
deleted file mode 100644
index 4e60360..0000000
--- a/Help/UGens/Filters/Lag2UD.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {text-decoration: underline ; color: #0000bf}
-span.s8 {color: #0000bf}
-span.s9 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Lag2UD<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>exponential lag</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="Lag.html"><span class="s6"><b>Lag</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Lag2UD.ar(in, lagTimeU, lagTimeD, mul, add))</b></p>
-<p class="p1"><b>Lag2UD.kr(in, lagTimeU, lagTimeD, mul, add))</b></p>
-<p class="p2"><br></p>
-<p class="p1">Lag2 is equivalent to Lag.kr(Lag.kr(in, time), time), thus resulting in a smoother transition. This saves on CPU as you only have to calculate the decay factor once instead of twice. See <b>Lag</b> for more details.</p>
-<p class="p1"><br>
-See also <a href="Lag2.html"><span class="s7">Lag2</span></a></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>lagTimeU</b> - 60 dB lag time in seconds for the upgoing signal.</p>
-<p class="p1"><b>lagTimeD</b> - 60 dB lag time in seconds for the downgoing signal.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// used to lag pitch</p>
-<p class="p7"><span class="s2"><span class="Apple-converted-space">       </span></span><span class="s8">SynthDef</span><span class="s2">( </span>\lag2ud_help<span class="s2">,</span></p>
-<p class="p8"><span class="Apple-converted-space">      </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s8">arg</span> freq=300,lagup=1, lagdown=5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Out</span>.ar( 0,</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">SinOsc</span><span class="s2">.ar( </span>// sine wave</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">Lag2UD</span><span class="s2">.kr( </span>// lag the frequency</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lagup,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lagdown</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, </span>// phase</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2 </span>// sine amplitude</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s2">x = </span><span class="s8">Synth</span><span class="s2">.new( </span><span class="s9">\lag2ud_help</span><span class="s2"> ); </span>// create the synth</p>
-<p class="p8"><span class="Apple-converted-space">      </span></p>
-<p class="p6"><span class="s2">x.set( </span><span class="s9">\freq</span><span class="s2">, 500 ); </span>// set the frequency to a higher value (takes 1 second)</p>
-<p class="p6"><span class="s2">x.set( </span><span class="s9">\freq</span><span class="s2">, 100 ); </span>// set the frequency to a lower value (takes 5 seconds)</p>
-<p class="p5">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Lag3.html b/Help/UGens/Filters/Lag3.html
deleted file mode 100644
index 989d92e..0000000
--- a/Help/UGens/Filters/Lag3.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {text-decoration: underline ; color: #0000bf}
-span.s8 {color: #0000bf}
-span.s9 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Lag3<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>exponential lag</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="Lag.html"><span class="s6"><b>Lag</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Lag3.ar(in, lagTime, mul, add)</b></p>
-<p class="p1"><b>Lag3.kr(in, lagTime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Lag3 is equivalent to Lag.kr(Lag.kr(Lag.kr(in, time), time), time), thus resulting in a smoother transition. This saves on CPU as you only have to calculate the decay factor once instead of three times. See <b>Lag</b> for more details.</p>
-<p class="p1"><br>
-See also <a href="Lag3UD.html"><span class="s7">Lag3UD</span><span class="s4"><br>
-</span></a></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>lagTime</b> - 60 dB lag time in seconds.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// used to lag pitch</p>
-<p class="p5">{</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s8">SinOsc</span><span class="s2">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sine wave</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s8">Lag3</span><span class="s2">.kr(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lag the modulator</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">LFPulse</span>.kr(4, 0, 0.5, 50, 400),<span class="Apple-tab-span">	</span><span class="s9">// frequency modulator</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Line</span>.kr(0, 1, 15)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">// modulate lag time</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span></span>// phase</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3<span class="Apple-tab-span">	</span></span>// sine amplitude</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Lag3UD.html b/Help/UGens/Filters/Lag3UD.html
deleted file mode 100644
index 87caf55..0000000
--- a/Help/UGens/Filters/Lag3UD.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2b6f11}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {text-decoration: underline ; color: #002ee1}
-span.s2 {color: #000000}
-span.s3 {color: #0019ba}
-span.s4 {color: #2b6f11}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Lag3UD<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponential lag</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Lag3UD.ar(in, lagTimeU, lagTimeD, mul, add))</b></p>
-<p class="p3"><b>Lag3UD.kr(in, lagTimeU, lagTimeD, mul, add))</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Lag3UD is equivalent to LagUD.kr(LagUD.kr(LagUD.kr(in, timeU, timeD), timeU, timeD), timeU, timeD), thus resulting in a smoother transition. This saves on CPU as you only have to calculate the decay factor once instead of three times. See <b>LagUD</b> for more details.</p>
-<p class="p3"><br>
-See also <a href="Lag3.html"><span class="s1">Lag3</span></a></p>
-<p class="p3"><b>in</b> - input signal</p>
-<p class="p3"><b>lagTimeU</b> - 60 dB lag time in seconds for the upgoing signal.</p>
-<p class="p3"><b>lagTimeD</b> - 60 dB lag time in seconds for the downgoing signal.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// used to lag pitch</p>
-<p class="p7"><span class="s2"><span class="Apple-converted-space">       </span></span><span class="s3">SynthDef</span><span class="s2">( </span>\lag3ud_help<span class="s2">,</span></p>
-<p class="p8"><span class="Apple-converted-space">      </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">arg</span> freq=300,lagup=1, lagdown=5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar( 0,</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">SinOsc</span><span class="s2">.ar( </span>// sine wave</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Lag3UD</span><span class="s2">.kr( </span>// lag the frequency</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lagup,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lagdown</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, </span>// phase</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2 </span>// sine amplitude</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s2">x = </span><span class="s3">Synth</span><span class="s2">.new( </span><span class="s4">\lag3ud_help</span><span class="s2"> ); </span>// create the synth</p>
-<p class="p8"><span class="Apple-converted-space">      </span></p>
-<p class="p6"><span class="s2">x.set( </span><span class="s4">\freq</span><span class="s2">, 500 ); </span>// set the frequency to a higher value (takes 1 second)</p>
-<p class="p6"><span class="s2">x.set( </span><span class="s4">\freq</span><span class="s2">, 100 ); </span>// set the frequency to a lower value (takes 5 seconds)</p>
-<p class="p5">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/LagUD.html b/Help/UGens/Filters/LagUD.html
deleted file mode 100644
index 90733d9..0000000
--- a/Help/UGens/Filters/LagUD.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times; min-height: 19.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d281b}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #3b6c19}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Lucida Grande}
-span.s1 {text-decoration: underline ; color: #0837db}
-span.s2 {color: #000000}
-span.s3 {color: #0024b5}
-span.s4 {font: 9.0px Lucida Grande}
-span.s5 {font: 9.0px Lucida Grande; color: #000000}
-span.s6 {font: 9.0px Monaco}
-span.s7 {color: #3b6c19}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LagUD<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponential lag</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LagUD.ar(in, lagTimeU, lagTimeD, mul, add))</b></p>
-<p class="p3"><b>LagUD.kr(in, lagTimeU, lagTimeD, mul, add))</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">This is essentially the same as <b>Lag</b> except that you can supply a different 60 dB time for when the signal goes up, from when the signal goes down. This is useful for smoothing out control signals, where "fade in" should be different from "fade out".</p>
-<p class="p3"><br>
-See also <a href="Lag.html"><span class="s1">Lag</span></a></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal</p>
-<p class="p3"><b>lagTimeU</b> - 60 dB lag time in seconds for the upgoing signal.</p>
-<p class="p3"><b>lagTimeD</b> - 60 dB lag time in seconds for the downgoing signal.</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">( </span>// used to lag pitch</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">( </span>\lagud_help<span class="s2">,</span></p>
-<p class="p8">{<span class="Apple-tab-span">	</span> <span class="s3">arg</span> freq=300,lagup=1, lagdown=5;</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="s3">Out</span>.ar( 0,</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">SinOsc</span><span class="s2">.ar( </span>// sine wave</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">LagUD</span><span class="s2">.kr( </span>// lag the frequency</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>freq,</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>lagup,</p>
-<p class="p8"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>lagdown</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">),</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">0, </span>// phase</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">0.2 </span>// sine amplitude</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">)</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>);</p>
-<p class="p8">}).send(s);</p>
-<p class="p8">)</p>
-<p class="p6"><span class="s2">x = </span><span class="s3">Synth</span><span class="s2">.new( </span><span class="s7">\lagud_help</span><span class="s2"> ); </span>// create the synth</p>
-<p class="p6"><span class="s2">x.set( </span><span class="s7">\freq</span><span class="s2">, 500 ); </span>// set the frequency to a higher value (takes 1 second)</p>
-<p class="p6"><span class="s2">x.set( </span><span class="s7">\freq</span><span class="s2">, 100 ); </span>// set the frequency to a lower value (takes 5 seconds)</p>
-<p class="p8">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/LeakDC.html b/Help/UGens/Filters/LeakDC.html
deleted file mode 100644
index 43fd620..0000000
--- a/Help/UGens/Filters/LeakDC.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LeakDC<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>remove DC offset</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LeakDC.ar(in, coef, mul, add)</b></p>
-<p class="p1"><b>LeakDC.kr(in, coef, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">This filter removes a DC offset from a signal.</p>
-<p class="p1"><b>in</b> - input signal.</p>
-<p class="p1"><b>coef</b> - leak coefficient. Defaults to 0.995 for audiorate and 0.9 for controlrate.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s7">Server</span>.internal.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s7">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s7">LFPulse</span>.ar(800, 0.5, 0.5, 0.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[a, <span class="s7">LeakDC</span>.ar(a, 0.995)]</p>
-<p class="p5">}.scope(bufsize: 22050)</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Limiter.html b/Help/UGens/Filters/Limiter.html
deleted file mode 100644
index 0fff4a0..0000000
--- a/Help/UGens/Filters/Limiter.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Limiter<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>peak limiter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Limiter.ar(in, level, dur)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Limits the input amplitude to the given level. Limiter will not overshoot</p>
-<p class="p3">like Compander will, but it needs to look ahead in the audio. Thus there is a<span class="Apple-converted-space"> </span></p>
-<p class="p3">delay equal to twice the lookAheadTime.</p>
-<p class="p3">Limiter, unlike Compander, is completely transparent for an in range signal.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - the signal to be processed.</p>
-<p class="p3"><b>level</b> - the peak output amplitude level to which to normalize the input.</p>
-<p class="p3"><b>dur</b> - aka lookAheadTime. The buffer delay time. Shorter times will produce smaller delays</p>
-<p class="p3">and quicker transient response times, but may introduce amplitude modulation artifacts.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// example signal to process</p>
-<p class="p5"><span class="s1">Synth</span>.play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> z;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s1">Decay2</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Impulse</span>.ar(8, <span class="s1">LFSaw</span>.kr(0.25, -0.6, 0.7)),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s1">FSinOsc</span>.ar(500));</p>
-<p class="p5">}, 0.8)</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">Synth</span>.play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> z;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s1">Decay2</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Impulse</span>.ar(8, <span class="s1">LFSaw</span>.kr(0.25, -0.6, 0.7)),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s1">FSinOsc</span>.ar(500));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[z, <span class="s1">Limiter</span>.ar(z, 0.4, 0.01)]</p>
-<p class="p5">}, 0.5)</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/LinExp.html b/Help/UGens/Filters/LinExp.html
deleted file mode 100644
index 72977b9..0000000
--- a/Help/UGens/Filters/LinExp.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LinExp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert a linear range to an exponential range</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LinExp.ar(in, srclo, srchi, dstlo, dsthi)</b></p>
-<p class="p3"><b>LinExp.kr(in, srclo, srchi, dstlo, dsthi)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Converts a linear range of values to an exponential range of values.</p>
-<p class="p3">The dstlo and dsthi arguments must be nonzero and have the same sign.</p>
-<p class="p3"><b>in</b> - input to convert.</p>
-<p class="p3"><b>srclo</b> - lower limit of input range.</p>
-<p class="p3"><b>srchi</b> - upper limit of input range.</p>
-<p class="p3"><b>dstlo</b> - lower limit of output range.</p>
-<p class="p3"><b>dsthi</b> - upper limit of output range.</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// compare:</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">SinOsc</span>.kr(<span class="s1">Line</span>.kr(1, 10, 10));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(mod * 400 + 500) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">SinOsc</span>.kr(<span class="s1">Line</span>.kr(1, 10, 10));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(<span class="s1">LinExp</span>.kr(mod, -1,1, 100, 900)) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p6">// modulating destination values.</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">LFNoise2</span>.ar(80);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(<span class="s1">LinExp</span>.ar(mod, -1,1, <span class="s1">MouseX</span>.kr(200, 8000, 1), <span class="s1">MouseY</span>.kr(200, 8000, 1))) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>linexp</b> and <b>exprange</b> can be used to create a LinExp implicitly from a ugen, mapping its output values from linear range to an exponential one. The rate is derived from the ugen.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// linexp</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">LFNoise2</span>.ar(80);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(mod.linexp(-1,1, <span class="s1">MouseX</span>.kr(200, 8000, 1), <span class="s1">MouseY</span>.kr(200, 8000, 1))) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p6">// exprange</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">LFNoise2</span>.ar(80).exprange(<span class="s1">MouseX</span>.kr(200, 8000, 1), <span class="s1">MouseY</span>.kr(200, 8000, 1));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(mod) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/LinLin.html b/Help/UGens/Filters/LinLin.html
deleted file mode 100644
index 71db930..0000000
--- a/Help/UGens/Filters/LinLin.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LinLin<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>map a linear range to another linear range</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LinLin.ar(in, srclo, srchi, dstlo, dsthi)</b></p>
-<p class="p3"><b>LinLin.kr(in, srclo, srchi, dstlo, dsthi)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input to convert.</p>
-<p class="p3"><b>srclo</b> - lower limit of input range.</p>
-<p class="p3"><b>srchi</b> - upper limit of input range.</p>
-<p class="p3"><b>dstlo</b> - lower limit of output range.</p>
-<p class="p3"><b>dsthi</b> - upper limit of output range.</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// examples:</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">SinOsc</span>.kr(<span class="s1">Line</span>.kr(1, 10, 10));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(<span class="s1">LinLin</span>.kr(mod, -1,1, 100, 900)) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// modulating destination values.</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">LFNoise2</span>.ar(80);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(<span class="s1">LinLin</span>.ar(mod, -1,1, <span class="s1">MouseX</span>.kr(200, 8000, 1), <span class="s1">MouseY</span>.kr(200, 8000, 1))) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// modulating source and destination values.</p>
-<p class="p7">(</p>
-<p class="p8">{<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">LFNoise2</span>.ar(80);</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LinLin</span>.ar(mod,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.kr(0.2), <span class="s1">SinOsc</span>.kr(0.2543),<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">MouseX</span>.kr(200, 8000, 1), <span class="s1">MouseY</span>.kr(200, 8000, 1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p8">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><b>linlin</b> and <b>range</b> can be used to create a LinLin implicitly from a ugen, mapping its output values from linear range to an exponential one. The rate is derived from the ugen.</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">// linlin</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">LFNoise2</span>.ar(80);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(mod.linlin(-1,1, <span class="s1">MouseX</span>.kr(200, 8000, 1), <span class="s1">MouseY</span>.kr(200, 8000, 1))) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// range</p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> mod = <span class="s1">LFNoise2</span>.ar(80).range(<span class="s1">MouseX</span>.kr(200, 8000, 1), <span class="s1">MouseY</span>.kr(200, 8000, 1));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(mod) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Median.html b/Help/UGens/Filters/Median.html
deleted file mode 100644
index ef78fa6..0000000
--- a/Help/UGens/Filters/Median.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #0021e7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Median<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>median filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../Filter.html"><span class="s4"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Median.ar(length, in, mul, add)</b></p>
-<p class="p1"><b>Median.kr(length, in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Returns the median of the last <b>length</b> input points.<span class="Apple-converted-space"> </span></p>
-<p class="p1">This non linear filter is good at reducing impulse noise<span class="Apple-converted-space">  </span>from a signal.</p>
-<p class="p1"><b>length</b> - number of input points in which to find the median. Must be an odd number from 1 to 31.</p>
-<p class="p1">If length is 1 then Median has no effect.</p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p4"><br></p>
-<p class="p5">// a signal with impulse noise.</p>
-<p class="p6">{ <span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">Dust2</span>.ar(100, 0.9) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// after applying median filter</p>
-<p class="p6">{ <span class="s3">Median</span>.ar(3, <span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">Dust2</span>.ar(100, 0.9)) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// The median length can be increased for longer duration noise.</p>
-<p class="p8"><br></p>
-<p class="p5">// a signal with longer impulse noise.</p>
-<p class="p6">{ <span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">LPZ1</span>.ar(<span class="s3">Dust2</span>.ar(100, 0.9)) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// length 3 doesn't help here because the impulses are 2 samples long.</p>
-<p class="p6">{ <span class="s3">Median</span>.ar(3, <span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">LPZ1</span>.ar(<span class="s3">Dust2</span>.ar(100, 0.9))) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// length 5 does better</p>
-<p class="p6">{ <span class="s3">Median</span>.ar(5, <span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">LPZ1</span>.ar(<span class="s3">Dust2</span>.ar(100, 0.9))) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5">// long Median filters begin chopping off the peaks of the waveform</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s3">SinOsc</span>.ar(1000, 0, 0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>[x, <span class="s3">Median</span>.ar(31, x)]</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p5">// another noise reduction application:</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s3">Synth</span>.play({ <span class="s3">WhiteNoise</span>.ar(0.1) + <span class="s3">SinOsc</span>.ar(800,0,0.1) });</p>
-<p class="p7"><br></p>
-<p class="p5">// use Median filter for high frequency noise</p>
-<p class="p6"><span class="s3">Synth</span>.play({ <span class="s3">Median</span>.ar(31, <span class="s3">WhiteNoise</span>.ar(0.1) + <span class="s3">SinOsc</span>.ar(800,0,0.1)) });</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p5">// use LeakDC for low frequency noise</p>
-<p class="p6"><span class="s3">Synth</span>.play({<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">LeakDC</span>.ar(<span class="s3">Median</span>.ar(31, <span class="s3">WhiteNoise</span>.ar(0.1) + <span class="s3">SinOsc</span>.ar(800,0,0.1)), 0.9)</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/MidEQ.html b/Help/UGens/Filters/MidEQ.html
deleted file mode 100644
index f9052df..0000000
--- a/Help/UGens/Filters/MidEQ.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>MidEQ<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>parametric filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>MidEQ.ar(in, freq, rq, db, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Attenuates or boosts a frequency band.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal to be processed</p>
-<p class="p3"><b>freq</b> - center frequency of the band in Hertz.</p>
-<p class="p3"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>db</b> - amount of boost (db > 0) or attenuation (db < 0) of the frequency band. <span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// mixer parametric eq as wahwah</p>
-<p class="p7">{ <span class="s1">MidEQ</span>.ar(<span class="s1">Saw</span>.ar(200,0.2), <span class="s1">FSinOsc</span>.kr(1, 0, 24, 84).midicps, 0.3, 12) }.play</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">// notch filter</p>
-<p class="p7">(</p>
-<p class="p7">{ <span class="s1">var</span> in;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-converted-space">  </span>in = <span class="s1">PinkNoise</span>.ar(0.2) + <span class="s1">SinOsc</span>.ar(600, 0, 0.1);</p>
-<p class="p7"><span class="Apple-converted-space">  </span><span class="s1">MidEQ</span>.ar(in, <span class="s1">SinOsc</span>.kr(0.2, 0.5pi) * 2 + 600, 0.01, -24)<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">/////</p>
-<p class="p6">// first start the synth</p>
-<p class="p7">(</p>
-<p class="p9"><span class="s2">x = {</span>| freq=400, db=0, rq=0.1 |</p>
-<p class="p7"><span class="Apple-tab-span">	</span> <span class="s1">var</span> in;</p>
-<p class="p7"><span class="Apple-tab-span">	</span> in =<span class="Apple-converted-space">  </span><span class="s1">SinOsc</span>.ar([ 400, 420 ], 0, 0.4);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span> <span class="s1">MidEQ</span>.ar(in, freq, <span class="s1">Lag</span>.kr(rq, 0.3), db)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>}.play</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p6">// now play with its parameters to hear how the filter affects two frequencies<span class="Apple-converted-space"> </span></p>
-<p class="p6">// that are very close to each other</p>
-<p class="p4"><br></p>
-<p class="p7">x.set(\<span class="s3">db</span>, -12)</p>
-<p class="p7">x.set(<span class="s3">\rq</span>, 0.1)<span class="Apple-converted-space"> </span></p>
-<p class="p7">x.set(<span class="s3">\rq</span>, 0.03)<span class="Apple-converted-space"> </span></p>
-<p class="p7">x.set(<span class="s3">\freq</span>, 410)<span class="Apple-converted-space"> </span></p>
-<p class="p7">x.set(<span class="s3">\freq</span>, 420)<span class="Apple-converted-space"> </span></p>
-<p class="p7">x.set(<span class="s3">\freq</span>, 400)<span class="Apple-converted-space"> </span></p>
-<p class="p7">x.set(<span class="s3">\freq</span>, 500)<span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/MoogFF.html b/Help/UGens/Filters/MoogFF.html
deleted file mode 100755
index 36dfa5a..0000000
--- a/Help/UGens/Filters/MoogFF.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #9d1c12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0026b4}
-span.s3 {color: #002fe0}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MoogFF<span class="Apple-tab-span">	</span></b></span><b>Moog VCF implementation, designed by Federico Fontana</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>MoogFF.ar(in, freq, gain, reset)</b></p>
-<p class="p2"><br></p>
-<p class="p3">A digital implementation of the Moog VCF (filter).</p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>in</b> - the input signal</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - the cutoff frequency</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>gain</b> - the filter resonance gain, between zero and 4</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>reset</b> - when greater than zero, this will reset the state of the digital filters at the beginning of a computational block.</p>
-<p class="p2"><br></p>
-<p class="p3">The design of this filter is described in the conference paper Fontana, F. (2007) <b><i>Preserving the Digital Structure of the Moog VCF</i></b>. In Proc. ICMC07, Copenhagen, 25-31 August 2007</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p3">s.boot;</p>
-<p class="p4">// Play it with the mouse...</p>
-<p class="p3">x = { <span class="s2">MoogFF</span>.ar(<span class="s2">WhiteNoise</span>.ar(01.1), <span class="s2">MouseY</span>.kr(100, 10000, 1), <span class="s2">MouseX</span>.kr(0, 4)) }.play(s);</p>
-<p class="p3">x.free;</p>
-<p class="p2"><br></p>
-<p class="p4">// Mmmm, throbby</p>
-<p class="p3">x = { <span class="s2">MoogFF</span>.ar(<span class="s2">Pulse</span>.ar([40,121],[0.3,0.7]),<span class="s2">SinOsc</span>.kr(<span class="s2">LFNoise0</span>.kr(0.42).range(0.001,2.2)).range(30,4200), 0.83 * 4)}.play(s);</p>
-<p class="p3">x.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><i>Original Java code created by F. Fontana - August 2007 - </i><a href="mailto:federico.fontana at univr.it"><span class="s3"><i>federico.fontana at univr.it</i></span></a></p>
-<p class="p5"><i>Ported to C++ for SuperCollider by Dan Stowell</i></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/MulAdd.html b/Help/UGens/Filters/MulAdd.html
deleted file mode 100644
index 4650529..0000000
--- a/Help/UGens/Filters/MulAdd.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #952415}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0a20b3}
-span.s4 {color: #000000}
-span.s5 {color: #0d2bf0}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MulAdd<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Multiply and add to a signal</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>MulAdd(in, mul, add)</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>or</p>
-<p class="p3"><b>in.madd(mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Multiplies the signal by <b>mul</b> and adds <b>add</b>. This UGen is very efficient (it performs various optimisation checks, for example). It is used very heavily throughout SuperCollider to perform multiply and add operations on the server; in fact it is<span class="Apple-converted-space">  </span>what "really" performs the mul and add arguments found in many UGens.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>See also:</b> The discussion of mul and add arguments in the <a href="../UGen.html"><span class="s2">UGen</span></a> help file.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p2"><br></p>
-<p class="p4">s.boot;</p>
-<p class="p5"><br></p>
-<p class="p6">// The mul and add arguments of SinOsc themselves use MulAdd!</p>
-<p class="p6">// These two examples will create precisely the same synth graph:</p>
-<p class="p4">x = { <span class="s3">SinOsc</span>.ar(440, 0, 0.1, 0.05) }.play(s);</p>
-<p class="p6"><span class="s4">x.trace; </span>// You should see a "MulAdd" in the trace</p>
-<p class="p4">x.free;</p>
-<p class="p5"><br></p>
-<p class="p4">x = { <span class="s3">MulAdd</span>(<span class="s3">SinOsc</span>.ar(440, 0), 0.1, 0.05) }.play(s);</p>
-<p class="p4">x.trace;</p>
-<p class="p4">x.free;</p>
-<p class="p5"><br></p>
-<p class="p6">// In fact this will produce the same graph too - the separate multiply and add are optimised into one MulAdd</p>
-<p class="p4">x = { <span class="s3">SinOsc</span>.ar(440, 0) * 0.1 + 0.05 }.play(s);</p>
-<p class="p4">x.trace;</p>
-<p class="p4">x.free;</p>
-<p class="p2"><br></p>
-<p class="p3">(Note: the "trace" message is described in the helpfile for <a href="../../ServerArchitecture/Node.html"><span class="s5">Node</span></a>.)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Normalizer.html b/Help/UGens/Filters/Normalizer.html
deleted file mode 100644
index 677e20e..0000000
--- a/Help/UGens/Filters/Normalizer.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Normalizer<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>flattens dynamics</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Normalizer.ar(in, level, dur)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Normalizes the input amplitude to the given level. Normalize will not overshoot</p>
-<p class="p3">like Compander will, but it needs to look ahead in the audio. Thus there is a<span class="Apple-converted-space"> </span></p>
-<p class="p3">delay equal to twice the lookAheadTime.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - the signal to be processed.</p>
-<p class="p3"><b>level</b> - the peak output amplitude level to which to normalize the input.</p>
-<p class="p3"><b>dur</b> - aka lookAheadTime. The buffer delay time. Shorter times will produce smaller delays</p>
-<p class="p3">and quicker transient response times, but may introduce amplitude modulation artifacts.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// example signal to process</p>
-<p class="p5"><span class="s1">Synth</span>.play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> z;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s1">Decay2</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Impulse</span>.ar(8, <span class="s1">LFSaw</span>.kr(0.25, -0.6, 0.7)),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s1">FSinOsc</span>.ar(500));</p>
-<p class="p5">}, 0.8)</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">Synth</span>.play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> z;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s1">Decay2</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Impulse</span>.ar(8, <span class="s1">LFSaw</span>.kr(0.25, -0.6, 0.7)),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001, 0.3, <span class="s1">FSinOsc</span>.ar(500));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[z, <span class="s1">Normalizer</span>.ar(z, 0.4, 0.01)]</p>
-<p class="p5">}, 0.5)</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/OnePole.html b/Help/UGens/Filters/OnePole.html
deleted file mode 100644
index ca4d630..0000000
--- a/Help/UGens/Filters/OnePole.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Courier; color: #000000; min-height: 11.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>OnePole<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>one pole filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>OnePole.ar(in, coef, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A one pole filter. Implements the formula :</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = ((1 - abs(coef)) * in(i)) + (coef * out(i-1))</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>coef</b> - feedback coefficient. Should be between -1 and +1</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s7">OnePole</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), 0.95) }.play</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s7">OnePole</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), -0.95) }.play</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s7">OnePole</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), <span class="s7">Line</span>.kr(-0.99, 0.99, 10)) }.play</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/OneZero.html b/Help/UGens/Filters/OneZero.html
deleted file mode 100644
index 2a047a6..0000000
--- a/Help/UGens/Filters/OneZero.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #000000; min-height: 11.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>OneZero</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>one zero filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b> : </b><a href="OnePole.html"><span class="s6"><b>OnePole</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>OneZero.ar(in, coef, mul, add)</b></p>
-<p class="p1"><b>OneZero.kr(in, coef, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A one zero filter. Implements the formula :</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = ((1 - abs(coef)) * in(i)) + (coef * in(i-1))</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>coef</b> - feed forward coefficient. +0.5 makes a two point averaging filter (see also <a href="LPZ1.html"><span class="s6">LPZ1</span></a>),<span class="Apple-converted-space"> </span></p>
-<p class="p1">-0.5 makes a differentiator (see also <a href="HPZ1.html"><span class="s6">HPZ1</span></a>),<span class="Apple-converted-space">  </span>+1 makes a single sample delay (see also <a href="../Delays/Delay1.html"><span class="s6">Delay1</span></a>),<span class="Apple-converted-space"> </span></p>
-<p class="p1">-1 makes an inverted single sample delay.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s7">OneZero</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), 0.5) }.play</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s7">OneZero</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), -0.5) }.play</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s7">OneZero</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), <span class="s7">Line</span>.kr(-0.5, 0.5, 10)) }.play</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/RHPF.html b/Help/UGens/Filters/RHPF.html
deleted file mode 100644
index c83e2e4..0000000
--- a/Help/UGens/Filters/RHPF.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #000000}
-span.s2 {color: #0026b4}
-span.s3 {color: #0021e7}
-span.s4 {color: #002fe0}
-span.s5 {color: #0000ff}
-span.s6 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>RHPF</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s2"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s3"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a></span><span class="s4"><b> : </b><a href="../Filter.html"><span class="s5"><b>Filter</b></span></a><b> : </b><a href="RLPF.html"><span class="s5"><b>RLPF</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>RHPF.ar(in, freq, q, mul, add)</b></p>
-<p class="p4"><b>RHPF.kr(in, freq, q, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p4">A resonant high pass filter.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>in</b> - input signal to be processed</p>
-<p class="p4"><b>freq</b> - cutoff frequency.</p>
-<p class="p4"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">// modulate cutoff frequency</p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s6">RHPF</span>.ar(<span class="s6">Saw</span>.ar(200,0.1), <span class="s6">FSinOsc</span>.kr(<span class="s6">XLine</span>.kr(0.7,300,20), 0, 3600, 4000), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">// filter a modulator</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">{ <span class="Apple-tab-span">	</span><span class="s6">var</span> ctl = <span class="s6">RHPF</span>.kr(<span class="s6">LFSaw</span>.kr(2), <span class="s6">SinOsc</span>.kr(<span class="s6">XLine</span>.kr(0.07,30,20), 0, 35, 40), 0.05);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s6">SinOsc</span>.ar(ctl * 200 + 500) * 0.2;</p>
-<p class="p8">}.play;</p>
-<p class="p8">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/RLPF.html b/Help/UGens/Filters/RLPF.html
deleted file mode 100644
index 135b1e4..0000000
--- a/Help/UGens/Filters/RLPF.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>RLPF<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>resonant low pass filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1">A resonant low pass filter.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>RLPF.ar(in, freq, rq, mul, add)</b></p>
-<p class="p1"><b>RLPF.kr(in, freq, rq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - cutoff frequency.</p>
-<p class="p1"><b>rq</b> - the reciprocal of Q.<span class="Apple-converted-space">  </span>bandwidth / cutoffFreq.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="RHPF.html"><span class="s6">RHPF</span></a>, <a href="LPF.html"><span class="s6">LPF</span></a></p>
-<p class="p4"><br></p>
-<p class="p5">// modulate cutoff frequency</p>
-<p class="p6">{ <span class="s7">RLPF</span>.ar(<span class="s7">Saw</span>.ar(200, 0.1), <span class="s7">FSinOsc</span>.kr(<span class="s7">XLine</span>.kr(0.7, 300, 20), 0, 3600, 4000), 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">// filter a modulator</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s7">var</span> ctl = <span class="s7">RLPF</span>.ar(<span class="s7">Saw</span>.ar(5, 0.1), 25, 0.03);</p>
-<p class="p6"><span class="Apple-converted-space"> </span><span class="s7">SinOsc</span>.ar(ctl * 200 + 400) * 0.2;</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s7">var</span> ctl = <span class="s7">RLPF</span>.ar(<span class="s7">Saw</span>.ar(5, 0.1), <span class="s7">MouseX</span>.kr(2, 200, 1), <span class="s7">MouseY</span>.kr(0.01, 1, 1));</p>
-<p class="p6"><span class="Apple-converted-space"> </span><span class="s7">SinOsc</span>.ar(ctl * 200 + 400) * 0.2;</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Ramp.html b/Help/UGens/Filters/Ramp.html
deleted file mode 100644
index fa9a308..0000000
--- a/Help/UGens/Filters/Ramp.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #001bb9}
-span.s5 {color: #ad140d}
-span.s6 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ramp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>linear lag</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../Filter.html"><b>Filter</b></a><b> : </b><a href="Lag.html"><b>Lag</b></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ramp.ar(in, lagTime, mul, add)</b></p>
-<p class="p1"><b>Ramp.kr(in, lagTime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">This is similar to <a href="Lag.html"><span class="s4">Lag</span></a> but with a linear rather than exponential lag. This is useful for smoothing out control signals.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>lagTime</b> - 60 dB lag time in seconds.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s4">Server</span>.internal.boot;</p>
-<p class="p5">(</p>
-<p class="p6">// used to lag pitch</p>
-<p class="p5">{</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s4">SinOsc</span><span class="s2">.ar(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sine wave</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">Ramp</span><span class="s2">.kr(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lag the modulator</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">LFPulse</span>.kr(4, 0, 0.5, 50, 400),<span class="Apple-tab-span">	</span><span class="s5">// frequency modulator</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Line</span>.kr(0, 1, 15)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">// modulate lag time</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span></span>// phase</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3<span class="Apple-tab-span">	</span></span>// sine amplitude</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p6">// Compare</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">var</span> pulse;</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pulse = <span class="s4">LFPulse</span>.kr(8.772);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.kr(0,[<span class="s4">Ramp</span>.kr(pulse, 0.025), <span class="s4">Lag</span>.kr(pulse, 0.025), pulse]);</p>
-<p class="p5">}.play(<span class="s4">Server</span>.internal);</p>
-<p class="p5"><span class="s4">Server</span>.internal.scope(3, bufsize: 44100, rate: <span class="s6">\control</span>, zoom: 40);</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Resonz.html b/Help/UGens/Filters/Resonz.html
deleted file mode 100644
index 9210b62..0000000
--- a/Help/UGens/Filters/Resonz.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Resonz<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>resonant filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Resonz.ar(in, freq, rq, mul, add)</b></p>
-<p class="p1"><b>Resonz.kr(in, freq, rq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A two pole resonant filter with zeroes at z = +/- 1. Based on K. Steiglitz,<span class="Apple-converted-space">  </span>"A Note on Constant-Gain<span class="Apple-converted-space"> </span></p>
-<p class="p1">Digital Resonators," <i>Computer Music Journal</i>, vol 18, no. 4, pp. 8-10, Winter 1994.</p>
-<p class="p2"><b></b><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - resonant frequency in Hertz</p>
-<p class="p1"><b>rq</b> - bandwidth ratio (reciprocal of Q). rq = bandwidth / centerFreq</p>
-<p class="p1">The reciprocal of Q is used rather than Q because it saves a divide operation inside the unit generator.</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s7">Resonz</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), 2000, 0.1) }.play</p>
-<p class="p5"><br></p>
-<p class="p6">// modulate frequency</p>
-<p class="p4">{ <span class="s7">Resonz</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), <span class="s7">XLine</span>.kr(1000,8000,10), 0.05) }.play</p>
-<p class="p5"><br></p>
-<p class="p6">// modulate bandwidth</p>
-<p class="p4">{ <span class="s7">Resonz</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), 2000, <span class="s7">XLine</span>.kr(1, 0.001, 8)) }.play</p>
-<p class="p5"><br></p>
-<p class="p6">// modulate bandwidth opposite direction</p>
-<p class="p4">{ <span class="s7">Resonz</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.5), 2000, <span class="s7">XLine</span>.kr(0.001, 1, 8)) }.play</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Ringz.html b/Help/UGens/Filters/Ringz.html
deleted file mode 100644
index 91d099f..0000000
--- a/Help/UGens/Filters/Ringz.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Courier; min-height: 11.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ringz<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>ringing filter</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Ringz.ar(in, freq, decaytime, mul, add)</b></p>
-<p class="p1"><b>Ringz.kr(in, freq, decaytime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Ringz is the same as <a href="Resonz.html"><span class="s6">Resonz</span></a>, except that instead of a resonance parameter, the bandwidth is</p>
-<p class="p1">specified in a 60dB ring decay time. One Ringz is equivalent to one component of the <a href="Klank.html"><span class="s6">Klank</span></a> UGen.</p>
-<p class="p2"><b></b><br></p>
-<p class="p2"><b></b><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - resonant frequency in Hertz</p>
-<p class="p1"><b>decaytime</b> - the 60 dB decay time of the filter</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="DynKlank.html"><span class="s6">DynKlank</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s7">Ringz</span>.ar(<span class="s7">Dust</span>.ar(3, 0.3), 2000, 2) }.play</p>
-<p class="p5"><br></p>
-<p class="p4">{ <span class="s7">Ringz</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.005), 2000, 0.5) }.play</p>
-<p class="p6"><br></p>
-<p class="p7">// modulate frequency</p>
-<p class="p4">{ <span class="s7">Ringz</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.005), <span class="s7">XLine</span>.kr(100,3000,10), 0.5) }.play</p>
-<p class="p6"><br></p>
-<p class="p4">{ <span class="s7">Ringz</span>.ar(<span class="s7">Impulse</span>.ar(6, 0, 0.3),<span class="Apple-converted-space">  </span><span class="s7">XLine</span>.kr(100,3000,10), 0.5) }.play</p>
-<p class="p6"><br></p>
-<p class="p7">// modulate ring time</p>
-<p class="p4">{ <span class="s7">Ringz</span>.ar(<span class="s7">Impulse</span>.ar(6, 0, 0.3),<span class="Apple-converted-space">  </span>2000, <span class="s7">XLine</span>.kr(4, 0.04, 8)) }.play</p>
-<p class="p6"><br></p>
-<p class="p7">// modulate ring time opposite direction</p>
-<p class="p4">{ <span class="s7">Ringz</span>.ar(<span class="s7">Impulse</span>.ar(6, 0, 0.3), 2000, <span class="s7">XLine</span>.kr(0.04, 4, 8)) }.play</p>
-<p class="p8"><br></p>
-<p class="p5"><br></p>
-<p class="p9">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s7">var</span> exciter;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>exciter = <span class="s7">WhiteNoise</span>.ar(0.001);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s7">Mix</span>.arFill(10, {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Ringz</span>.ar(exciter,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">XLine</span>.kr(exprand(100.0,5000.0), exprand(100.0,5000.0), 20),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}.play</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/SOS.html b/Help/UGens/Filters/SOS.html
deleted file mode 100644
index 6bcab55..0000000
--- a/Help/UGens/Filters/SOS.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SOS<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>second order filter section (biquad)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../Filter.html"><b>Filter</b></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>SOS.ar(in, a0, a1, a2, b1, b2, mul, add)</b></p>
-<p class="p1"><b>SOS.kr(in, a0, a1, a2, b1, b2, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A standard second order filter section. Filter coefficients are given directly rather than calculated for you.</p>
-<p class="p1">Formula is equivalent to:</p>
-<p class="p2"><br></p>
-<p class="p4">out(i) = (a0 * in(i)) + (a1 * in(i-1)) + (a2 * in(i-2))<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>+ (b1 * out(i-1)) + (b2 * out(i-2))</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// example: same as TwoPole</p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> rho, theta, b1, b2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>theta = <span class="s4">MouseX</span>.kr(0.2pi, pi);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>rho = <span class="s4">MouseY</span>.kr(0.6, 0.99);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b1 = 2.0 * rho * cos(theta);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b2 = rho.squared.neg;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">SOS</span>.ar(<span class="s4">LFSaw</span>.ar(200, 0, 0.1), 1.0, 0.0, 0.0, b1, b2)</p>
-<p class="p7">}.play</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> rho, theta, b1, b2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>theta = <span class="s4">MouseX</span>.kr(0.2pi, pi);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>rho = <span class="s4">MouseY</span>.kr(0.6, 0.99);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b1 = 2.0 * rho * cos(theta);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b2 = rho.squared.neg;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">SOS</span>.ar(<span class="s4">WhiteNoise</span>.ar(0.1 ! 2), 1.0, 0.0, 0.0, b1, b2)</p>
-<p class="p7">}.play</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p6">// example with SOS.kr kr as modulator</p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">var</span> rho, theta, b1, b2, vib;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>theta = <span class="s4">MouseX</span>.kr(0.2pi, pi);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>rho = <span class="s4">MouseY</span>.kr(0.6, 0.99);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b1 = 2.0 * rho * cos(theta);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>b2 = rho.squared.neg;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>vib = <span class="s4">SOS</span>.kr(<span class="s4">LFSaw</span>.kr(3.16), 1.0, 0.0, 0.0, b1, b2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>SinOsc.ar( vib * 200 + 600) * 0.2</p>
-<p class="p7">}.play</p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/TwoPole.html b/Help/UGens/Filters/TwoPole.html
deleted file mode 100644
index 5c69356..0000000
--- a/Help/UGens/Filters/TwoPole.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TwoPole</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two pole filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>TwoPole.ar(in, freq, radius, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A two pole filter. This provides lower level access to setting of pole location.<span class="Apple-converted-space"> </span></p>
-<p class="p1">For general purposes Resonz is better.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - frequency of pole angle.</p>
-<p class="p1"><b>radius</b> - radius of pole. Should be between 0 and +1</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// examples</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s7">TwoPole</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.005), 2000, 0.95) }.play</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s7">TwoPole</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.005), <span class="s7">XLine</span>.kr(800,8000,8), 0.95) }.play</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s7">TwoPole</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.005), <span class="s7">MouseX</span>.kr(800,8000,1), 0.95) }.play</p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/TwoZero.html b/Help/UGens/Filters/TwoZero.html
deleted file mode 100644
index 305092d..0000000
--- a/Help/UGens/Filters/TwoZero.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TwoZero<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>two zero filter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="TwoPole.html"><span class="s6"><b>TwoPole</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>TwoZero.ar(in, freq, radius, mul, add)</b></p>
-<p class="p1"><b>TwoZero.kr(in, freq, radius, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A two zero filter.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>in</b> - input signal to be processed</p>
-<p class="p1"><b>freq</b> - frequency of zero angle.</p>
-<p class="p1"><b>radius</b> - radius of zero.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s7">TwoZero</span>.ar(<span class="s7">WhiteNoise</span>.ar(0.125), <span class="s7">XLine</span>.kr(20, 20000, 8), 1) }.play</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Filters/Wrap.html b/Help/UGens/Filters/Wrap.html
deleted file mode 100644
index 97ce41f..0000000
--- a/Help/UGens/Filters/Wrap.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0026b1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Wrap<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>wrap a signal outside given thresholds</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Wrap.ar(in, lo, hi)</b></p>
-<p class="p3"><b>Wrap.kr(in, lo, hi)</b></p>
-<p class="p4"><br></p>
-<p class="p3">This differs from the <b>BinaryOpUGen</b> <b>wrap2</b> in that it allows one to set both low and high thresholds.</p>
-<p class="p3"><b>in</b> - signal to be wrapped</p>
-<p class="p3"><b>lo</b> - low threshold of wrapping. Must be less then hi.</p>
-<p class="p3"><b>hi</b> - high threshold of wrapping. Must be greater then lo.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s1">Wrap</span>.ar(<span class="s1">SinOsc</span>.ar(440, 0, 0.2), -0.15, 0.15) }.scope;</p>
-</body>
-</html>
diff --git a/Help/UGens/Generators/Granular/GrainBuf.html b/Help/UGens/Generators/Granular/GrainBuf.html
deleted file mode 100644
index c0de71a..0000000
--- a/Help/UGens/Generators/Granular/GrainBuf.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.11">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4d4d4d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #75151a}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #5a1c20}
-span.s1 {color: #0011a8}
-span.s2 {color: #000000}
-span.s3 {color: #0014a5}
-span.s4 {color: #3f5c0f}
-span.s5 {color: #0019a1}
-span.s6 {color: #495915}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>GrainBuf<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Granular synthesis with sound stored in a buffer</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>GrainBuf.ar(numChannels, trigger, dur, sndbuf, rate, pos, interp, pan, envbufnum, maxGrains, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>numChannels</b> - the number of channels to output. If 1, mono is returned and pan is ignored.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>trigger </b>- a kr or ar trigger to start a new grain. If ar, grains after the start of the synth are sample accurate.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>The following args are polled at grain creation time</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>dur</b> - size of the grain (in seconds).</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>sndbuf</b> - the buffer holding a mono audio signal. If using multi-channel files, use Buffer.readChannel.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>rate</b> - the playback rate of the sampled sound</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>pos</b> - the playback position for the grain to start with (0 is beginning, 1 is end of file)</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>interp -<i> </i></b>the interpolation method used for pitchshifting grains. 1 = no interpolation. 2 = linear.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 = cubic interpolation (more computationally intensive).</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pan</b> -<span class="Apple-converted-space">  </span>Determines where to pan the output. If numChannels = 1, no panning is done.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If numChannels = 2, panning is similar to Pan2.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if numChannels > 2, pannins is the same as PanAz.<span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>envbufnum</b> - the buffer number containing a singal to use for the grain envelope. -1 uses a built-in<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Hann envelope.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>maxGrains </b>- the maximum number of overlapping grains that can be used at a given time. This value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is set at the UGens init time and can't be modified. Defaults to 512. This can be set lower for more</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>efficient use of memory.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*WARNING*</b> The above parameter is new (post SC 3.3.1) and has the potential to break code written</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><= 3.3.1. This parameter is BEFORE the mul slot, and you may need to update code to account</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for this difference.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples:</b></p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> winenv;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s2">b = </span><span class="s3">Buffer</span><span class="s2">.read(s, </span>"sounds/a11wlk01-44_1.aiff"<span class="s2">);</span></p>
-<p class="p7">// a custom envelope<span class="Apple-converted-space"> </span></p>
-<p class="p5">winenv = <span class="s1">Env</span>([0, 1, 0], [0.5, 0.5], [8, -8]);</p>
-<p class="p5">z = <span class="s1">Buffer</span>.sendCollection(s, winenv.discretize, 1);</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s4">\buf_grain_test</span>, {<span class="s1">arg</span> gate = 1, amp = 1, sndbuf, envbuf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> pan, env, freqdev;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// use mouse x to control panning</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">MouseX</span>.kr(-1, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Env</span>([0, 1, 0], [1, 1], <span class="s4">\sin</span>, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gate,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>levelScale: amp,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">GrainBuf</span>.ar(2, <span class="s1">Impulse</span>.kr(10), 0.1, sndbuf, <span class="s1">LFNoise1</span>.kr.range(0.5, 2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>LFNoise2.kr(0.1).range(0, 1), 2, pan, envbuf) * env)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p4"><br></p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p8">// use built-in env</p>
-<p class="p5">x = <span class="s5">Synth</span>(<span class="s6">\buf_grain_test</span>, [\sndbuf, b, <span class="s6">\envbuf</span>, -1])</p>
-<p class="p4"><br></p>
-<p class="p8">// switch to the custom env</p>
-<p class="p5">x.set(<span class="s6">\envbuf</span>, z)</p>
-<p class="p5">x.set(<span class="s6">\envbuf</span>, -1);</p>
-<p class="p4"><br></p>
-<p class="p5">x.set(<span class="s4">\gate</span>, 0);</p>
-</body>
-</html>
diff --git a/Help/UGens/Generators/Granular/GrainFM.html b/Help/UGens/Generators/Granular/GrainFM.html
deleted file mode 100644
index 08adfa1..0000000
--- a/Help/UGens/Generators/Granular/GrainFM.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.11">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #840d15}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #65191d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #445a11}
-span.s1 {color: #0000ab}
-span.s2 {color: #345e0b}
-span.s3 {color: #000000}
-span.s4 {color: #0011a4}
-span.s5 {color: #445a11}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>GrainFM<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Granular synthesis with frequency modulated<span class="Apple-converted-space"> </span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sine tones</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>GrainFM.ar(numChannels, trigger, dur, carfreq, modfreq, index, pan, envbufnum, maxGrains, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>numChannels</b> - the number of channels to output. If 1, mono is returned and pan is ignored.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>trigger </b>- a kr or ar trigger to start a new grain. If ar, grains after the start of the synth are sample accurate.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>The following args are polled at grain creation time</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>dur</b> - size of the grain.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>carfreq</b> - the carrier freq of the grain generators internal oscillator</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>modfreq</b> - the modulating freq of the grain generators internal oscillator</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>index - </b>the index of modulation</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pan</b> -<span class="Apple-converted-space">  </span>Determines where to pan the output. If numChannels = 1, no panning is done.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If numChannels = 2, panning is similar to Pan2.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if numChannels > 2, pannins is the same as PanAz.<span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>envbufnum</b> - the buffer number containing a singal to use for the grain envelope. -1 uses a built-in<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Hanning envelope.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>maxGrains </b>- the maximum number of overlapping grains that can be used at a given time. This value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is set at the UGens init time and can't be modified. Defaults to 512. This can be set lower for more</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>efficient use of memory.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*WARNING*</b> The above parameter is new (post SC 3.3.1) and has the potential to break code written</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><= 3.3.1. This parameter is BEFORE the mul slot, and you may need to update code to account</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for this difference.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples:</b></p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> winenv;</p>
-<p class="p6">// a custom envelope<span class="Apple-converted-space"> </span></p>
-<p class="p5">winenv = <span class="s1">Env</span>([0, 1, 0], [0.5, 0.5], [8, -8]);</p>
-<p class="p5">z = <span class="s1">Buffer</span>.sendCollection(s, winenv.discretize, 1);</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">\fm_grain_test</span>, {<span class="s1">arg</span> gate = 1, amp = 1, envbuf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> pan, env, freqdev;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// use mouse x to control panning</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">MouseX</span>.kr(-1, 1);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// use WhiteNoise and mouse y to control deviation from center pitch</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freqdev = <span class="s1">WhiteNoise</span>.kr(<span class="s1">MouseY</span>.kr(0, 400));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Env</span>([0, 1, 0], [1, 1], <span class="s2">\sin</span>, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gate,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>levelScale: amp,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">GrainFM</span>.ar(2, <span class="s1">Impulse</span>.kr(10), 0.1, 440 + freqdev, 200, <span class="s1">LFNoise1</span>.kr.range(1, 10),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan, envbuf) * env)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p4"><br></p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p7">// use built-in env</p>
-<p class="p8"><span class="s3">x = </span><span class="s4">Synth</span><span class="s3">(</span>\fm_grain_test<span class="s3">, [</span>\envbuf<span class="s3">, -1])</span></p>
-<p class="p4"><br></p>
-<p class="p7">// switch to the custom env</p>
-<p class="p5">x.set(<span class="s5">\envbuf</span>, z)</p>
-<p class="p5">x.set(<span class="s5">\envbuf</span>, -1);</p>
-<p class="p4"><br></p>
-<p class="p5">x.set(<span class="s2">\gate</span>, 0);</p>
-</body>
-</html>
diff --git a/Help/UGens/Generators/Granular/GrainIn.html b/Help/UGens/Generators/Granular/GrainIn.html
deleted file mode 100644
index 6e9498e..0000000
--- a/Help/UGens/Generators/Granular/GrainIn.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.11">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #b20000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #65191d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #445a11}
-span.s1 {color: #0000b2}
-span.s2 {color: #0a6300}
-span.s3 {color: #000000}
-span.s4 {color: #0011a4}
-span.s5 {color: #445a11}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>GrainIn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Granulate an input signal</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>GrainIn.ar(numChannels, trigger, dur, in, pan, envbufnum, maxGrains, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>numChannels</b> - the number of channels to output. If 1, mono is returned and pan is ignored.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>trigger </b>- a kr or ar trigger to start a new grain. If ar, grains after the start of the synth are sample accurate.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>The following args are polled at grain creation time</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>dur</b> - size of the grain.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>in</b> - the input to granulate</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pan</b> -<span class="Apple-converted-space">  </span>Determines where to pan the output. If numChannels = 1, no panning is done.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If numChannels = 2, panning is similar to Pan2.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if numChannels > 2, pannins is the same as PanAz.<span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>envbufnum</b> - the buffer number containing a singal to use for the grain envelope. -1 uses a built-in<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Hanning envelope.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>maxGrains </b>- the maximum number of overlapping grains that can be used at a given time. This value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is set at the UGens init time and can't be modified. Defaults to 512. This can be set lower for more</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>efficient use of memory.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*WARNING*</b> The above parameter is new (post SC 3.3.1) and has the potential to break code written</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><= 3.3.1. This parameter is BEFORE the mul slot, and you may need to update code to account</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for this difference.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples:</b></p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> winenv;</p>
-<p class="p6">// a custom envelope<span class="Apple-converted-space"> </span></p>
-<p class="p5">winenv = <span class="s1">Env</span>([0, 1, 0], [0.5, 0.5], [8, -8]);</p>
-<p class="p5">z = <span class="s1">Buffer</span>.sendCollection(s, winenv.discretize, 1);</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">\in_grain_test</span>, {<span class="s1">arg</span> gate = 1, amp = 1, envbuf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> pan, env;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// use mouse x to control panning</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">MouseX</span>.kr(-1, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Env</span>([0, 1, 0], [1, 1], <span class="s2">\sin</span>, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gate,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>levelScale: amp,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">GrainIn</span>.ar(2, <span class="s1">Impulse</span>.kr(32), 1, <span class="s1">PinkNoise</span>.ar * 0.05, pan, envbuf) * env)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p4"><br></p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p7">// use built-in env</p>
-<p class="p8"><span class="s3">x = </span><span class="s4">Synth</span><span class="s3">(</span>\in_grain_test<span class="s3">, [</span>\envbuf<span class="s3">, -1])</span></p>
-<p class="p4"><br></p>
-<p class="p7">// switch to the custom env</p>
-<p class="p5">x.set(<span class="s5">\envbuf</span>, z)</p>
-<p class="p5">x.set(<span class="s5">\envbuf</span>, -1);</p>
-<p class="p4"><br></p>
-<p class="p5">x.set(\gate, 0);</p>
-</body>
-</html>
diff --git a/Help/UGens/Generators/Granular/GrainSin.html b/Help/UGens/Generators/Granular/GrainSin.html
deleted file mode 100644
index 542c04c..0000000
--- a/Help/UGens/Generators/Granular/GrainSin.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.11">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #6f0012}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #501016}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #35490f}
-span.s1 {color: #00009a}
-span.s2 {color: #294d0a}
-span.s3 {color: #000000}
-span.s4 {color: #000093}
-span.s5 {color: #35490f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>GrainSin<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Granular synthesis with sine tones</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>GrainSin.ar(numChannels, trigger, dur, freq, pan, envbufnum, maxGrains, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>numChannels</b> - the number of channels to output. If 1, mono is returned and pan is ignored.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>trigger </b>- a kr or ar trigger to start a new grain. If ar, grains after the start of the synth are sample accurate.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>The following args are polled at grain creation time</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>dur</b> - size of the grain.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freq</b> - the input to granulate</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pan</b> -<span class="Apple-converted-space">  </span>Determines where to pan the output. If numChannels = 1, no panning is done.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If numChannels = 2, panning is similar to Pan2.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if numChannels > 2, pannins is the same as PanAz.<span class="Apple-tab-span">	</span></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>envbufnum</b> - the buffer number containing a singal to use for the grain envelope. -1 uses a built-in<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Hanning envelope.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>maxGrains </b>- the maximum number of overlapping grains that can be used at a given time. This value</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>is set at the UGens init time and can't be modified. Defaults to 512. This can be set lower for more</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>efficient use of memory.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>*WARNING*</b> The above parameter is new (post SC 3.3.1) and has the potential to break code written</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><= 3.3.1. This parameter is BEFORE the mul slot, and you may need to update code to account</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for this difference.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples:</b></p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> winenv;</p>
-<p class="p6">// a custom envelope<span class="Apple-converted-space"> </span></p>
-<p class="p5">winenv = <span class="s1">Env</span>([0, 1, 0], [0.5, 0.5], [8, -8]);</p>
-<p class="p5">z = <span class="s1">Buffer</span>.sendCollection(s, winenv.discretize, 1);</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">\sin_grain_test</span>, {<span class="s1">arg</span> gate = 1, amp = 1, envbuf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> pan, env, freqdev;</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// use mouse x to control panning</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">MouseX</span>.kr(-1, 1);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// use WhiteNoise and mouse y to control deviation from center pitch</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freqdev = <span class="s1">WhiteNoise</span>.kr(<span class="s1">MouseY</span>.kr(0, 400));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Env</span>([0, 1, 0], [1, 1], <span class="s2">\sin</span>, 1),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gate,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>levelScale: amp,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">GrainSin</span>.ar(2, <span class="s1">Impulse</span>.kr(10), 0.1, 440 + freqdev, pan, envbuf) * env)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p4"><br></p>
-<p class="p5">)</p>
-<p class="p5">s.scope</p>
-<p class="p7">// use built-in env</p>
-<p class="p8"><span class="s3">x = </span><span class="s4">Synth</span><span class="s3">(</span>\sin_grain_test<span class="s3">, [</span>\envbuf<span class="s3">, -1])</span></p>
-<p class="p4"><br></p>
-<p class="p7">// switch to the custom env</p>
-<p class="p5">x.set(<span class="s5">\envbuf</span>, z)</p>
-<p class="p5">x.set(<span class="s5">\envbuf</span>, -1);</p>
-<p class="p4"><br></p>
-<p class="p5">x.set(<span class="s2">\gate</span>, 0);</p>
-<p class="p4"><span class="Apple-converted-space">  </span></p>
-</body>
-</html>
diff --git a/Help/UGens/Generators/PhysicalModels/Ball.html b/Help/UGens/Generators/PhysicalModels/Ball.html
deleted file mode 100644
index feea5dd..0000000
--- a/Help/UGens/Generators/PhysicalModels/Ball.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Ball</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>physical model of bouncing object</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">models the path of a bouncing object that is reflected by a vibrating surface<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*ar(in, g, damp, friction)</b></p>
-<p class="p1"><b>*kr(in, g, damp, friction)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>in</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>modulated surface level</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>g</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gravity</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>damp</b><span class="Apple-tab-span">	</span>damping on impact</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>friction<span class="Apple-tab-span">	</span></b>proximity from which on attraction to surface starts</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// examples</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse x controls switch of level</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> f, sf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sf = <span class="s3">K2A</span>.ar(<span class="s3">MouseX</span>.kr > 0.5) > 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s3">Ball</span>.ar(sf, <span class="s3">MouseY</span>.kr(0.01, 20, 1), 0.01);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = f * 10 + 500;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(f, 0, 0.2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse x controls modulation rate</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls gravity</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> f, sf, g;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sf = <span class="s3">LFNoise0</span>.ar(<span class="s3">MouseX</span>.kr(1, 100, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s3">MouseY</span>.kr(0.1, 10, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s3">Ball</span>.ar(sf, g, 0.01, 0.01);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = f * 140 + 500;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(f, 0, 0.2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// the general german police choir</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse x controls damping</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls gravity</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> f, sf, g;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sf = <span class="s3">LFPulse</span>.ar(0.6, 0.2, 0.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s3">MouseY</span>.kr(0.1, 10, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s3">MouseX</span>.kr(0.0001, 1, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s3">Ball</span>.ar(sf, g, d);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = f * 140 + 400;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(f, 0, 0.2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Generators/PhysicalModels/Spring.html b/Help/UGens/Generators/PhysicalModels/Spring.html
deleted file mode 100644
index 165e723..0000000
--- a/Help/UGens/Generators/PhysicalModels/Spring.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Spring</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>physical model of resonating spring</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">models the force of a resonating string</p>
-<p class="p2"><br></p>
-<p class="p1"><b>*ar(in, spring, damp)</b></p>
-<p class="p1"><b>*kr(in, spring, damp)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>in</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>modulated input force</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>spring</b><span class="Apple-tab-span">	</span>spring constant (incl. mass)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>damp</b><span class="Apple-tab-span">	</span>damping</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// examples</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// trigger gate is mouse button</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// spring constant is mouse x</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls damping</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> inforce, outforce, freq, k, d;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inforce = <span class="s3">K2A</span>.ar(<span class="s3">MouseButton</span>.kr(0,1,0)) > 0;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>k = <span class="s3">MouseY</span>.kr(0.1, 20, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s3">MouseX</span>.kr(0.00001, 0.1, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>outforce = <span class="s3">Spring</span>.ar(inforce, k, d);</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = outforce * 400 + 500; </span>// modulate frequency with the force</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freq, 0, 0.2)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// several springs in series.</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// trigger gate is mouse button</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// spring constant is mouse x</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls damping</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="Apple-tab-span">	</span><span class="s3">var</span> m0, m1, m2, m3, d, k, inforce;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s3">MouseY</span>.kr(0.00001, 0.01, 1);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>k = <span class="s3">MouseX</span>.kr(0.1, 20, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inforce = <span class="s3">K2A</span>.ar(<span class="s3">MouseButton</span>.kr(0,1,0)) > 0;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m0 = <span class="s3">Spring</span>.ar(inforce, k, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m1 = <span class="s3">Spring</span>.ar(m0, 0.5 * k, d);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m2 = <span class="s3">Spring</span>.ar(m0, 0.6 * k + 0.2, d);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m3 = <span class="s3">Spring</span>.ar(m1 - m2, 0.4, d);</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">SinOsc</span><span class="s2">.ar(m3 * 200 + 500, 0, 0.2) </span>// modulate frequency with the force</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// modulating a resonating string with the force</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// spring constant is mouse x</p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls damping<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span>{ <span class="Apple-tab-span">	</span><span class="s3">var</span> m0, m1, m2, m3, m4, d, k, t;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>k = <span class="s3">MouseX</span>.kr(0.5, 100, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s3">MouseY</span>.kr(0.0001, 0.01, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>t = <span class="s3">Dust</span>.ar(2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m0 = <span class="s3">Spring</span>.ar(<span class="s3">ToggleFF</span>.ar(t), 1 * k, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m1 = <span class="s3">Spring</span>.ar(m0, 0.5 * k, d);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m2 = <span class="s3">Spring</span>.ar(m0, 0.6 * k, d);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m3 = <span class="s3">Spring</span>.ar([m1,m2], 0.4 * k, d);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>m4 = <span class="s3">Spring</span>.ar(m3 - m1 + m2, 0.1 * k, d);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">CombL</span>.ar(t, 0.1, <span class="s3">LinLin</span>.ar(m4, -10, 10, 1/8000, 1/100), 12)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Generators/PhysicalModels/TBall.html b/Help/UGens/Generators/PhysicalModels/TBall.html
deleted file mode 100644
index 2390c73..0000000
--- a/Help/UGens/Generators/PhysicalModels/TBall.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TBall</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>physical model of bouncing object</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">models the impacts of a bouncing object that is reflected by a vibrating surface<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*ar(in, g, damp, friction)</b></p>
-<p class="p1"><b>*kr(in, g, damp, friction)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>in</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>modulated surface level</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>g</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gravity</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>damp</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>damping on impact</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>friction<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>proximity from which on attraction to surface starts</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// examples</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse x controls switch of level</p>
-<p class="p4"><span class="Apple-tab-span">	</span>// mouse y controls gravity</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> t, sf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sf = <span class="s3">K2A</span>.ar(<span class="s3">MouseX</span>.kr > 0.5) > 0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>t = <span class="s3">TBall</span>.ar(sf, <span class="s3">MouseY</span>.kr(0.01, 1.0, 1), 0.01);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pan2.ar(<span class="s3">Ringz</span>.ar(t * 10, 1200, 0.1), MouseX.kr(-1,1));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse x controls step noise modulation rate</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls gravity</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> t, sf, g;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sf = <span class="s3">LFNoise0</span>.ar(<span class="s3">MouseX</span>.kr(0.5, 100, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s3">MouseY</span>.kr(0.01, 10, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>t = <span class="s3">TBall</span>.ar(sf, g, 0.01, 0.002);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Ringz</span>.ar(t * 4, [600, 645], 0.3);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse x controls sine modulation rate</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls friction</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// gravity changes slowly</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> f, g, h, fr;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fr = <span class="s3">MouseX</span>.kr(1, 1000, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>h = <span class="s3">MouseY</span>.kr(0.0001, 0.001, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s3">LFNoise1</span>.kr(0.1, 3, 5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s3">TBall</span>.ar(<span class="s3">SinOsc</span>.ar(fr), g, 0.1, h);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pan2.ar(<span class="s3">Ringz</span>.ar(f, 1400, 0.04),0,5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// sine frequency rate is modulated with a slow sine</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls friction</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse x controls gravity</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> f, g, h, fr;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fr = <span class="s3">LinExp</span>.kr(<span class="s3">SinOsc</span>.kr(0.1), -1, 1, 1, 600);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>h = <span class="s3">MouseY</span>.kr(0.0001, 0.001, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s3">MouseX</span>.kr(1, 10);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s3">TBall</span>.ar(<span class="s3">SinOsc</span>.ar(fr), g, 0.1, h);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Pan2.ar(<span class="s3">Ringz</span>.ar(f, 1400, 0.04),0,5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// this is no mbira: vibrations of a bank of resonators that are<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>// triggered by some bouncing things that bounce one on each resonator</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse y controls friction</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>// mouse x controls gravity</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> sc, g, d, z, lfo, rate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>g = <span class="s3">MouseX</span>.kr(0.01, 100, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s3">MouseY</span>.kr(0.00001, 0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sc = #[451, 495.5, 595, 676, 734.5]; <span class="s4">//azande harp tuning by B. Guinahui</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lfo = <span class="s3">LFNoise1</span>.kr(1, 0.005, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rate = 2.4;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rate = rate * sc.size.reciprocal;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = sc.collect { <span class="s3">|u,i|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> f, in;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = <span class="s3">Decay</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Mix</span>(<span class="s3">Impulse</span>.ar(rate, [1.0, <span class="s3">LFNoise0</span>.kr(rate / 12)].rand, 0.1)), <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.001</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = <span class="s3">Ringz</span>.ar(in,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Array</span>.fill(4, { |i| (i+1) + 0.1.rand2 }) / 2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s3">Decay</span>.ar(in,0.02,rand(0.5,1), lfo)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* u,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Array</span>.exprand(4, 0.2, 1).sort</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = <span class="s3">Mix</span>(in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>f = <span class="s3">TBall</span>.ar(in * 10, g, d, 0.001);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in + Mix(Ringz.ar(f, u * <span class="s3">Array</span>.fill(4, { |i| (i+1) + 0.3.rand2 }) * 2, 0.1))</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Splay</span>.ar(z) * 0.8</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/AbstractIn.html b/Help/UGens/InOut/AbstractIn.html
deleted file mode 100644
index ff61721..0000000
--- a/Help/UGens/InOut/AbstractIn.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0030a7; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0026b4}
-span.s5 {color: #0021e7}
-span.s6 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>AbstractIn</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>abstract class for in ugens</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s4"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><b> : </b><a href="../Multichannel/MultiOutUGen.html"><span class="s6"><b>MultiOutUGen</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s3">see subclasses:<span class="Apple-converted-space">  </span><a href="In.html">In</a>, <a href="LocalIn.html">LocalIn</a></span>, <a href="InFeedback.html">InFeedback</a>, LagIn, InTrig</p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/AbstractOut.html b/Help/UGens/InOut/AbstractOut.html
deleted file mode 100644
index 5684aea..0000000
--- a/Help/UGens/InOut/AbstractOut.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0029ac; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>AbstractOut</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>abstract class for out ugens</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a></p>
-<p class="p2"><br></p>
-<p class="p4"><b>numOutputs </b>- return number of output buses (default: 0, overridden in subclasses)</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">see subclasses:<span class="Apple-converted-space">  </span><a href="Out.html">Out</a>, <a href="OffsetOut.html">OffsetOut</a>, <a href="SharedOut.html">SharedOut</a>, <a href="XOut.html">XOut</a>, <a href="ReplaceOut.html">ReplaceOut</a>, <a href="LocalOut.html">LocalOut</a></span></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/AudioIn.html b/Help/UGens/InOut/AudioIn.html
deleted file mode 100644
index e0d32a7..0000000
--- a/Help/UGens/InOut/AudioIn.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>AudioIn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>read audio input</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: SoundIn</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>AudioIn.ar(channel, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Reads audio from the sound input hardware. <b>This is provided for backwards compatibility with SC2 code</b>. For normal use <b>SoundIn</b>, which has bus numbers beginning at 0, as AudioIn may be deprecated and removed at some point in the future.</p>
-<p class="p2"><br></p>
-<p class="p3">channel - input channel number to read.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>Channel numbers begin at 1.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><b>See also:</b> <a href="In.html"><span class="s2">In</span></a>, <a href="../../ServerArchitecture/ServerOptions.html"><span class="s2">ServerOptions</span></a>, <a href="SoundIn.html"><span class="s2">SoundIn</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5">// beware of the feedback - wear headphones to prevent it.</p>
-<p class="p6"><br></p>
-<p class="p5">// patching input to output</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s3">SynthDef</span><span class="s1">(</span>"help-AudioIn"<span class="s1">,{ </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">AudioIn</span>.ar(1)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// stereo through patching from input to output</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s3">SynthDef</span><span class="s1">(</span>"help-AudioIn"<span class="s1">,{ </span><span class="s3">arg</span><span class="s1"> out=0;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">AudioIn</span>.ar([1,2])</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// simpler:</p>
-<p class="p7">{ <span class="s3">AudioIn</span>.ar([1, 2]) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">// scope output (required internal server)</p>
-<p class="p7">{ <span class="s3">AudioIn</span>.ar([1,2]) }.scope;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/In.html b/Help/UGens/InOut/In.html
deleted file mode 100644
index 45de25f..0000000
--- a/Help/UGens/InOut/In.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {font: 9.0px Monaco}
-span.s8 {color: #0000bf}
-span.s9 {color: #0000bf}
-span.s10 {font: 12.0px Helvetica}
-span.s11 {color: #0000bf}
-span.s12 {color: #606060}
-span.s13 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>In</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>read a signal from a bus</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s4"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><b> : </b><a href="../Multichannel/MultiOutUGen.html"><span class="s6"><b>MultiOutUGen</b></span></a><span class="s6"><b> : </b><a href="AbstractIn.html"><b>AbstractIn</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s7"><span class="Apple-tab-span">	</span></span><b>*ar(bus, numChannels) </b>- read a signal from an audio bus.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(bus, numChannels) </b>-<b> </b>read a signal from a control bus.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>bus </b>- the index of the bus to read in from.</p>
-<p class="p5"><b>numChannels </b>- the number of channels (i.e. adjacent buses) to read in. The default is 1. You cannot modulate this number by assigning it to an argument in a SynthDef.</p>
-<p class="p2"><br></p>
-<p class="p1">In.kr is functionally similar to <a href="InFeedback.html"><span class="s8">InFeedback</span></a><b>. </b>That is it reads all data on the bus whether it is from the current cycle or not. This allows for it to receive data from later in the node order. In.ar reads only data from the current cycle, and will zero data from earlier cycles (for use within that synth; the data remains on the bus). Because of this and the fact that the various out ugens <i>mix</i> their output with data from the current cycle but <i>overwrite</i> data from an earlier cycle it may be necessary to use a private control bus when this type of feedback is desired. There is an example below which demonstrates the problem. See the <a href="InFeedback.html"><span class="s8">InFeedback</span></a> and <a href="../../ServerArchitecture/Order-of-execution.html"><span class="s8">Order-of-execution</span></a> helpfiles for more details.</p>
-<p class="p4"><br></p>
-<p class="p1">Note that using the <b>Bus</b> class to allocate a multichannel bus simply reserves a series of adjacent bus indices with the <a href="../../ServerArchitecture/Server.html"><span class="s8">Server</span></a> object's bus allocators. abus.index simply returns the first of those indices. When using a Bus with an <b>In</b> or <a href="Out.html"><span class="s8">Out</span></a> ugen there is nothing to stop you from reading to or writing from a larger range, or from hardcoding to a bus that has been allocated. You are responsible for making sure that the number of channels match and that there are no conflicts. See the <a href="../../ServerArchitecture/Server-Architecture.html"><span class="s8">Server-Architecture</span></a> and <a href="../../ServerArchitecture/Bus.html"><span class="s8">Bus</span></a> helpfiles for more information on buses and how they are used.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p1">The hardware input busses begin just after the hardware output busses and can be read from using In.ar. (See<span class="Apple-converted-space">  </span><a href="../../ServerArchitecture/Server-Architecture.html"><span class="s8">Server-Architecture</span></a> for more details.) The number of hardware input and output busses can vary depending on your Server's options. For a convienent wrapper class which deals with this issue see <a href="SoundIn.html"><span class="s9">SoundIn</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p1">read from an audio bus</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s10"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s = <span class="s11">Server</span>.local;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s11">SynthDef</span><span class="s3">(</span>"help-PinkNoise"<span class="s3">, { </span><span class="s11">arg</span><span class="s3"> out=0;<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Out</span>.ar(out, <span class="s11">PinkNoise</span>.ar(0.1))<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s11">SynthDef</span>(<span class="s12">"help-In"</span>, { <span class="s11">arg</span> out=0, in=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">var</span> input;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input = <span class="s11">In</span>.ar(in, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Out</span>.ar(out, input);</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>//play noise on the right channel</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>x = </span><span class="s11">Synth</span><span class="s3">(</span>"help-PinkNoise"<span class="s3">, [</span><span class="s13">\out</span><span class="s3">, 1]);</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>//read the input and play it out on the left channel</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s11">Synth</span>.after(x, <span class="s12">"help-In"</span>, [<span class="s13">\out</span>, 0, <span class="s13">\in</span>, 1]);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p1">read from a<span class="Apple-converted-space">  </span>control bus</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s11">SynthDef</span>(<span class="s12">"help-InKr"</span>,{ <span class="s11">arg</span> out=0, in=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">SinOsc</span>.ar(<span class="s11">In</span>.kr(in, 1), 0, 0.1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s11">SynthDef</span>(<span class="s12">"help-lfo"</span>, { <span class="s11">arg</span> out=0;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Out</span>.kr(out, <span class="s11">LFNoise1</span>.kr(0.3, 200, 800))<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>b = <span class="s11">Bus</span>.control(s,1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.set(800);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s11">Synth</span>(<span class="s12">"help-InKr"</span>,[<span class="s13">\in</span>, b]);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.set(400);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>b.set(300);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s11">Synth</span>(<span class="s12">"help-lfo"</span>, [<span class="s13">\out</span>, b]);</p>
-<p class="p7"><br></p>
-<p class="p1">read control data from a synth later in the node order</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s11">SynthDef</span><span class="s3">(</span>"help-Infreq"<span class="s3">, { </span><span class="s11">arg</span><span class="s3"> bus;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Out</span>.ar(0, <span class="s11">FSinOsc</span>.ar(<span class="s11">In</span>.kr(bus), 0, 0.5));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s11">SynthDef</span>(<span class="s12">"help-Outfreq"</span>, { <span class="s11">arg</span> freq = 400, bus;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s11">Out</span>.kr(bus, <span class="s11">SinOsc</span>.kr(1, 0, freq/40, freq));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>b = <span class="s11">Bus</span>.control(s,1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// add the first control Synth at the tail of the default server; no audio yet</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s11">Synth</span>.tail(s, <span class="s12">"help-Outfreq"</span>, [<span class="s13">\bus</span>, b]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// add the sound producing Synth BEFORE it; It receives x's data from the previous cycle</p>
-<p class="p6"><span class="Apple-tab-span">	</span>y = <span class="s11">Synth</span>.before(x, <span class="s12">"help-Infreq"</span>, [<span class="s13">\bus</span>, b]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// add another control Synth before y, at the head of the server</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// It now overwrites x's cycle old data before y receives it</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s11">Synth</span>.head(s, <span class="s12">"help-Outfreq"</span>, [<span class="s13">\bus</span>, b, <span class="s13">\freq</span>, 800]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// get another bus</p>
-<p class="p6"><span class="Apple-tab-span">	</span>c = <span class="s11">Bus</span>.control(s, 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// now y receives x's data even though z is still there</p>
-<p class="p6"><span class="Apple-tab-span">	</span>y.set(<span class="s13">\bus</span>, c); x.set(<span class="s13">\bus</span>, c);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.free; y.free; z.free;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/InFeedback.html b/Help/UGens/InOut/InFeedback.html
deleted file mode 100644
index b5eeee3..0000000
--- a/Help/UGens/InOut/InFeedback.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; min-height: 19.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0021e7}
-span.s5 {color: #001bb9}
-span.s6 {color: #0000ff}
-span.s7 {color: #2c7014}
-span.s8 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>InFeedback</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>read signal from a bus with a current or one cycle old timestamp</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s4"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../Multichannel/MultiOutUGen.html"><b>MultiOutUGen</b></a><b> : </b><a href="AbstractIn.html"><span class="s4"><b>AbstractIn</b></span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>*ar(bus, numChannels)</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b>bus </b>- the index of the bus to read in from.</p>
-<p class="p5"><b>numChannels </b>- the number of channels (i.e. adjacent buses) to read in. The default is 1. You cannot modulate this number by assigning it to an argument in a SynthDef.</p>
-<p class="p4"><br></p>
-<p class="p1">When the various output ugens (<a href="Out.html"><span class="s5"><b>Out</b></span></a>, <a href="OffsetOut.html"><span class="s5"><b>OffsetOut</b></span></a>, <a href="XOut.html"><span class="s5"><b>XOut</b></span></a>) write data to a bus, they <i>mix</i> it with any data from the current cycle, but <i>overwrite</i> any data from the previous cycle. (<a href="ReplaceOut.html"><span class="s5"><b>ReplaceOut</b></span></a> overwrites all data regardless.) Thus depending on node order and what synths are writing to the bus, the data on a given bus may be from the current cycle or be one cycle old at the time of reading. <a href="In.html"><span class="s5"><b>In</b></span></a><b>.ar</b> checks the timestamp of any data it reads in and zeros any data from the previous cycle (for use within that node; the data remains on the bus). This is fine for audio data, as it avoids feedback, but for control data it is useful to be able to read data from any place in the node order. For this reason <b>In.kr</b> also reads data that is older than the current cycle.</p>
-<p class="p4"><br></p>
-<p class="p1">In some cases we might also want to read audio from a node later in the current node order. This is the purpose of InFeedback. The delay introduced by this is one block size, which equals about 0.0014 sec at the default block size and sample rate. (See the resonator example below to see the implications of this.)</p>
-<p class="p4"><br></p>
-<p class="p1">The variably mixing and overwriting behaviour of the output ugens can make order of execution crucial. (No pun intended.) For example with a node order like the following the InFeedback ugen in Synth 2 will only receive data from Synth 1 (-> = write out; <- = read in):</p>
-<p class="p4"><br></p>
-<p class="p1">Synth 1 -> busA<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this synth overwrites the output of Synth3 before it reaches Synth 2</p>
-<p class="p1">Synth 2 (with InFeedback) <- busA<span class="Apple-converted-space"> </span></p>
-<p class="p1">Synth 3 -> busA</p>
-<p class="p4"><br></p>
-<p class="p1">If Synth 1 were moved after Synth 2 then Synth 2's InFeedback would receive a mix of the output from Synth 1 and Synth 3. This would also be true if Synth 2 came after Synth1 and Synth 3. In both cases data from Synth 1 and Synth 3 would have the same time stamp (either current or from the previous cycle), so nothing would be overwritten.</p>
-<p class="p4"><br></p>
-<p class="p1">Because of this it is often useful to allocate a separate bus for feedback. With the following arrangement Synth 2 will receive data from Synth3 regardless of Synth 1's position in the node order.</p>
-<p class="p2"><br></p>
-<p class="p1">Synth 1 -> busA</p>
-<p class="p1">Synth 2 (with InFeedback) <- busB<span class="Apple-converted-space"> </span></p>
-<p class="p1">Synth 3 -> busB + busA<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p1">The second example below demonstrates this issue.</p>
-<p class="p4"><br></p>
-<p class="p1">See also <a href="LocalIn.html"><span class="s6"><b>LocalIn</b></span></a> and <a href="LocalOut.html"><span class="s6"><b>LocalOut</b></span></a>.</p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p7"><b>Examples</b></p>
-<p class="p4"><br></p>
-<p class="p1">audio feedback modulation:</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">SynthDef</span>(<span class="s7">\help_InFeedback</span>, { <span class="s5">arg</span> out=0, in=0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> input, sound;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input = <span class="s5">InFeedback</span>.ar(in, 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sound = <span class="s5">SinOsc</span>.ar(input * 1300 + 300, 0, 0.4);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, sound);</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><br></p>
-<p class="p1">this shows how a node can read audio from a bus that is being written to by a synth following it:</p>
-<p class="p9"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">SynthDef</span>(<span class="s7">\help_InFeedback</span>, { <span class="s5">arg</span> out=0, in=0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">InFeedback</span>.ar(in, 1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">SynthDef</span>(<span class="s7">\help_SinOsc</span>, { <span class="s5">arg</span> out=0, freq=440;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, <span class="s5">SinOsc</span>.ar(freq, 0, 0.1))</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>x = <span class="s5">Bus</span>.audio(s, 1);</p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// read from bus n play to bus 0 (silent)</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span>a = </span><span class="s5">Synth</span><span class="s3">(</span>\help_InFeedback<span class="s3">,[</span>\in<span class="s3">, x, </span>\out<span class="s3">, 0]);</span></p>
-<p class="p9"><br></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// now play a synth after this one, playing to bus x</p>
-<p class="p8"><span class="Apple-tab-span">	</span>b = <span class="s5">Synth</span>.after(a, <span class="s7">\help_SinOsc</span>, [<span class="s7">\out</span>, x]);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// add another synth before a which also writes to bus x</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// now you can't hear b, as its data is one cycle old, and is overwritten by c</p>
-<p class="p8"><span class="Apple-tab-span">	</span>c = <span class="s5">Synth</span>.before(a, <span class="s7">\help_SinOsc</span>, [<span class="s7">\out</span>, x, <span class="s7">\freq</span>, 800]);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// free c and you can hear b again</p>
-<p class="p8"><span class="Apple-tab-span">	</span>c.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>x.free;</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.free; b.free;</p>
-<p class="p9"><br></p>
-<p class="p1">The example below implements a resonator. Note that you must subtract the blockSize in order for the tuning to be correct. See <b>LocalIn</b> for an equivalent example.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">var</span> play, imp, initial;</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s5">SynthDef</span><span class="s3">(</span>"testRes"<span class="s3">, {</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span>play = </span><span class="s5">InFeedback</span><span class="s3">.ar(10, 1); </span>// 10 is feedback channel</p>
-<p class="p8"><span class="Apple-tab-span">	</span>imp = <span class="s5">Impulse</span>.ar(1);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// feedback</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">OffsetOut</span>.ar(10, <span class="s5">DelayC</span>.ar(imp + (play * 0.995), 1,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>440.reciprocal - <span class="s5">ControlRate</span>.ir.reciprocal)); <span class="s8">// subtract block size</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">OffsetOut</span>.ar(0, play);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).play(s);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// Compare with this for tuning</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{ <span class="s5">SinOsc</span>.ar(440, 0, 0.2) }.play(s, 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/InTrig.html b/Help/UGens/InOut/InTrig.html
deleted file mode 100644
index 0b3b635..0000000
--- a/Help/UGens/InOut/InTrig.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0021e7}
-span.s5 {color: #001bb9}
-span.s6 {color: #606060}
-span.s7 {color: #2c7014}
-span.s8 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>InTrig</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>generate a trigger anytime a bus is set</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="../Multichannel/MultiOutUGen.html"><span class="s4"><b>MultiOutUGen</b></span></a><b> : </b><a href="AbstractIn.html"><b>AbstractIn</b></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*kr(bus, numChannels)</b></p>
-<p class="p4"><br></p>
-<p class="p1"><b>bus </b>- the index of the bus to read in from.</p>
-<p class="p5"><b>numChannels </b>- the number of channels (i.e. adjacent buses) to read in. The default is 1. You cannot modulate this number by assigning it to an argument in a SynthDef.</p>
-<p class="p2"><br></p>
-<p class="p1">Any time the bus is "touched" ie. has its value set (using "/c_set" etc.), a single impulse trigger will be generated. Its amplitude is the value that the bus was set to.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">s = <span class="s5">Server</span>.local;</p>
-<p class="p6">b = <span class="s5">Bus</span>.control(s, 1);</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s5">SynthDef</span>(<span class="s6">"help-InTrig"</span>, { <span class="s5">arg</span> out=0, busnum=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span> inTrig;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>inTrig = <span class="s5">InTrig</span>.kr( busnum );</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc, gate: inTrig, levelScale: inTrig ) * <span class="s5">SinOsc</span>.ar</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s, [<span class="s7">\out</span>, 0, <span class="s7">\busnum</span>, b]);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">b.set(1.0);</p>
-<p class="p7"><br></p>
-<p class="p6">b.value = 1.0;</p>
-<p class="p7"><br></p>
-<p class="p6">b.value = 0.2;</p>
-<p class="p7"><br></p>
-<p class="p6">b.value = 0.1;</p>
-<p class="p4"><br></p>
-<p class="p1">compare with <a href="In.html"><span class="s8">In</span></a> example.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/LocalBuf.html b/Help/UGens/InOut/LocalBuf.html
deleted file mode 100644
index 78138c6..0000000
--- a/Help/UGens/InOut/LocalBuf.html
+++ /dev/null
@@ -1,209 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #506929; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LocalBuf</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>allocate a buffer local to the synth</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(numFrames, numChannels)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>return a new buffer – the ugen outputs its buffer number and can thus be used in</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>any other ugen that requires a buffer number input.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numFrames<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>number of frames (default: 1)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>numChannels</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of channels for multiple channel buffers (default: 1)</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*newFrom(list)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>return a new buffer from a given list of values. The list may be two-dimensional for numChannels > 1.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>It is then reshaped into the buffer's current format by flattening.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Since newFrom is called by the <b>as</b> message, one may thus convert an array to a LocalBuf:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[1, 2, 3].as(LocalBuf)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>set(list, offset)</b><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the buffer slots with a list of values. If list is smaller than numFrames, it will only set</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>part of the buffer. The list may be two-dimensional for numChannels > 1.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>offset</b> is the starting index (default: 0)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>clear</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set the buffer slot to zero. This is <b>important</b> when randomly acessing buffer slots</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(e.g. with a BufRd) or not overwriting them. Clear is not an efficient real time operation</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>for larger buffers, so it should be only used when really needed - but then it is essential:</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a LocalBuf is "created" in each new synth, and it may reuse old space. So if an older<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>synth has already ended, this part of memory may be the same as the new synth's.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>see also SetBuf, ClearBuf<span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// example: FFT</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = <span class="s4">WhiteNoise</span>.ar(0.1.dup);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>({<span class="s4">LocalBuf</span>(2048, 1)}.dup, in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_BrickWall</span>(chain, <span class="s4">SinOsc</span>.kr([0.1, 0.11]));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">IFFT</span><span class="s3">(chain) </span>// inverse FFT</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// spawn some FFT based synths:</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s3">(</span><span class="s5">\fftgrain</span><span class="s3">, { </span>|out, sustain = 1, rate = 0.2|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = <span class="s4">WhiteNoise</span>.ar(0.1).dup;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>({<span class="s4">LocalBuf</span>(128, 1)}.dup, in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_BrickWall</span>(chain,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.kr(rate * <span class="s4">XLine</span>.kr(1, 15 * [1, 1.6], sustain), <span class="s4">Rand</span>(0, pi))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">IFFT</span>(chain) * <span class="s4">XLine</span>.kr(1, 0.001, sustain, doneAction: 2)) <span class="s6">// inverse FFT</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>Pbind<span class="s3">(</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s3">, </span>\fftgrain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\rate</span>, <span class="s4">Pwhite</span>().linexp(0, 1, 0.01, 300),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\legato</span>, <span class="s4">Pwhite</span>(1, 3.0, <span class="s4">inf</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">\dur</span>, <span class="s4">Prand</span>([0.2, 1, 1.2], <span class="s4">inf</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>).play</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// IndexL</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> buf = <span class="s4">LocalBuf</span>.newFrom((0..5).scramble);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> freq = <span class="s4">IndexL</span>.kr(buf, <span class="s4">MouseX</span>.kr(0, <span class="s4">BufFrames</span>.kr(buf))).poll * 100 + 40;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Saw</span>.ar(freq * [1, 1.1]) * 0.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// DetectIndex</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> buf1 = <span class="s4">LocalBuf</span>.newFrom((0..5).scramble);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> buf2 = <span class="s4">LocalBuf</span>.newFrom((0..5).scramble - 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> buf3 = <span class="s4">LocalBuf</span>.newFrom((0..5).scramble + 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> index = <span class="s4">DetectIndex</span>.kr([buf1, buf2], <span class="s4">SinOsc</span>.kr([0.85, 0.8], 0, 6).trunc).poll;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> freq = <span class="s4">IndexL</span>.kr([buf2, buf3], index).poll * 40 + 40;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Saw</span>.ar(freq) * 0.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// DegreeToKey</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// modal space</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// mouse x controls discrete pitch in dorian mode</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>play({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> mix;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mix =<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// lead tone</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DegreeToKey<span class="s3">.kr(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, 2, 3.2, 5, 7, 9, 10].as(<span class="s4">LocalBuf</span>),</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">MouseX</span><span class="s3">.kr(0, 15),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// mouse indexes into scale</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>12,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 12 notes per octave</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">// mul = 1</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>72<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// offset by 72 notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).poll</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ </span><span class="s4">LFNoise1</span><span class="s3">.kr([3,3], 0.04)<span class="Apple-tab-span">	</span></span>// add some low freq stereo detuning</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).midicps,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// convert midi notes to hertz</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// drone 5ths</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ <span class="s4">RLPF</span>.ar(<span class="s4">LFPulse</span>.ar([48,55].midicps, 0.15),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.kr(0.1, 0, 10, 72).midicps, 0.1, 0.1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// add some 70's euro-space-rock echo</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">CombN</span>.ar(mix, 0.31, 0.31, 2, 1, mix)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// Osc</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> buf;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> list = <span class="s4">Wavetable</span>.sineFill(512, 1.0 / [1, 10, 3, 10, 5, 6, 10]);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// list.plot;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>buf = <span class="s4">LocalBuf</span>.newFrom(list);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Osc</span>.ar(buf,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">XLine</span>.kr(2000, 200 + {30.0.rand}.dup, 10) + <span class="s4">SinOsc</span>.ar(<span class="s4">Line</span>.kr(2, 300, 10),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 100)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// see how not clearing the buffer accesses old data:</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// slowly overwrite data with noise</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> buf = <span class="s4">LocalBuf</span>(2048, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">BufWr</span>.ar(<span class="s4">WhiteNoise</span>.ar(1.dup), buf, <span class="s4">LFNoise0</span>.ar(530).range(0, <span class="s4">BufFrames</span>.kr(buf)));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">PlayBuf</span>.ar(2, buf, <span class="s4">MouseX</span>.kr(1, 2), loop: 1) * 0.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// avoid this (unless you like the glitch) by clearing buffer first:</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> buf = <span class="s4">LocalBuf</span>(2048, 2).clear;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">BufWr</span>.ar(<span class="s4">WhiteNoise</span>.ar(1.dup), buf, <span class="s4">LFNoise0</span>.ar(530).range(0, <span class="s4">BufFrames</span>.kr(buf)));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">PlayBuf</span>.ar(2, buf, <span class="s4">MouseX</span>.kr(1, 2), loop: 1) * 0.1</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// BufCombC stereo (needs no clearing, because delay is filled by ugen)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> z = <span class="s4">Decay</span>.ar(<span class="s4">Dust</span>.ar(1.dup, 0.1), 0.3, <span class="s4">WhiteNoise</span>.ar);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">BufCombC</span>.ar(<span class="s4">LocalBuf</span>(<span class="s4">SampleRate</span>.ir, 2), z, <span class="s4">XLine</span>.kr(0.0001, 0.01, 20), 0.2);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// multichannel test</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> in, chain, n = 4;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>in = <span class="s4">WhiteNoise</span>.ar(0.1.dup(n));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s4">FFT</span>({<span class="s4">LocalBuf</span>(2048, 1)}.dup(n), in);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chain = <span class="s4">PV_BrickWall</span>(chain, <span class="s4">LFNoise2</span>.kr(2.dup(n)));<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Splay</span>.ar(<span class="s4">IFFT</span>(chain)) <span class="s6">// inverse FFT</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/LocalIn.html b/Help/UGens/InOut/LocalIn.html
deleted file mode 100644
index 20cf86b..0000000
--- a/Help/UGens/InOut/LocalIn.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #bf0000}
-span.s9 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LocalIn</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>define and read from buses local to a synth</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s4"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><b> : </b><a href="../Multichannel/MultiOutUGen.html"><span class="s6"><b>MultiOutUGen</b></span></a><span class="s6"><b> : </b><a href="AbstractIn.html"><b>AbstractIn</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*ar(numChannels) </b>- define and read from an audio bus local to the enclosing synth.</p>
-<p class="p1"><b>*kr(numChannels) </b>-<b> </b>define and read from a control bus local to the enclosing synth.</p>
-<p class="p4"><br></p>
-<p class="p5"><b>numChannels </b>- the number of channels (i.e. adjacent buses) to read in. The default is 1. You cannot modulate this number by assigning it to an argument in a SynthDef.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>LocalIn</b> defines buses that are local to the enclosing synth. These are like the global buses, but are more convenient if you want to implement a self contained effect that uses a feedback processing loop.</p>
-<p class="p1">There can only be one audio rate and one control rate <b>LocalIn</b> per SynthDef.</p>
-<p class="p1">The audio can be written to the bus using <a href="LocalOut.html"><span class="s6"><b>LocalOut</b></span></a>.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>N.B.</b> Audio written to a <b>LocalOut</b> will not be read by a corresponding LocalIn until the next cycle, i.e. one block size of samples later. Because of this it is important to take this additional delay into account when using LocalIn to create feedback delays with delay times shorter than the threshold of pitch (i.e. < 0.05 seconds or > 20Hz), or where sample accurate alignment is required. See the resonator example below.</p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> source, local;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>source = <span class="s7">Decay</span>.ar(<span class="s7">Impulse</span>.ar(0.3), 0.1) * <span class="s7">WhiteNoise</span>.ar(0.2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">LocalIn</span>.ar(2) + [source, 0]; <span class="s8">// read feedback, add to source</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">DelayN</span>.ar(local, 0.2, 0.2); <span class="s8">// delay sound</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// reverse channels to give ping pong effect, apply decay factor</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">LocalOut</span>.ar(local.reverse * 0.8);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(0, local);</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">z = <span class="s7">SynthDef</span>(<span class="s9">"tank"</span>, {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> local, in;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s7">Mix</span>.fill(12, {<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Decay2</span>.ar(<span class="s7">Dust</span>.ar(0.05), 0.1, 0.5, 0.1)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s7">FSinOsc</span>.ar(<span class="s7">IRand</span>(36,84).midicps).cubed.max(0),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Rand</span>(-1,1))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>});</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = in + <span class="s7">Pan2</span>.ar(<span class="s7">Decay2</span>.ar(<span class="s7">Dust</span>.ar(0.03), 0.04, 0.3) * <span class="s7">BrownNoise</span>.ar, 0);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>4.do { in = <span class="s7">AllpassN</span>.ar(in, 0.03, {<span class="s7">Rand</span>(0.005,0.02)}.dup, 1); };</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">LocalIn</span>.ar(2) * 0.98;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">OnePole</span>.ar(local, 0.5);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">Rotate2</span>.ar(local[0], local[1], 0.23);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">AllpassN</span>.ar(local, 0.05, {<span class="s7">Rand</span>(0.01,0.05)}.dup, 2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">DelayN</span>.ar(local, 0.3, [0.19,0.26]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">AllpassN</span>.ar(local, 0.05, {<span class="s7">Rand</span>(0.03,0.15)}.dup, 2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">LeakDC</span>.ar(local);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = local + in;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">LocalOut</span>.ar(local);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(0, local);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">(</p>
-<p class="p6">z = <span class="s7">SynthDef</span>(<span class="s9">"tape"</span>, {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">var</span> local, in, amp;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s7">SoundIn</span>.ar([0,1]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>amp = <span class="s7">Amplitude</span>.kr(<span class="s7">Mix</span>.ar(in));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = in * (amp > 0.02); <span class="s8">// noise gate</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">LocalIn</span>.ar(2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">OnePole</span>.ar(local, 0.4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">OnePole</span>.ar(local, -0.08);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">Rotate2</span>.ar(local[0], local[1], 0.2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">DelayN</span>.ar(local, 0.25, 0.25);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = <span class="s7">LeakDC</span>.ar(local);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>local = ((local + in) * 1.25).softclip;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">LocalOut</span>.ar(local);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(0, local * 0.1);</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p8">// Resonator, must subtract blockSize for correct tuning</p>
-<p class="p6">(</p>
-<p class="p6"><span class="s7">var</span> play, imp, initial;</p>
-<p class="p9"><span class="s7">SynthDef</span><span class="s3">(</span>"testRes"<span class="s3">, {</span></p>
-<p class="p7"><br></p>
-<p class="p6">play = <span class="s7">LocalIn</span>.ar(1);<span class="Apple-converted-space"> </span></p>
-<p class="p6">imp = <span class="s7">Impulse</span>.ar(1);</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s7">LocalOut</span>.ar(<span class="s7">DelayC</span>.ar(imp + (play * 0.995), 1, 440.reciprocal - <span class="s7">ControlRate</span>.ir.reciprocal)); <span class="s8">// for feedback</span></p>
-<p class="p7"><br></p>
-<p class="p6"><span class="s7">OffsetOut</span>.ar(0, play);</p>
-<p class="p7"><br></p>
-<p class="p6">}).play(s);</p>
-<p class="p7"><br></p>
-<p class="p6">{<span class="s7">SinOsc</span>.ar(440, 0, 0.2) }.play(s, 1); <span class="s8">// compare pitch</span></p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/LocalOut.html b/Help/UGens/InOut/LocalOut.html
deleted file mode 100644
index 4d8996c..0000000
--- a/Help/UGens/InOut/LocalOut.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0030a7; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #0000ff}
-span.s6 {color: #0024f8}
-span.s7 {text-decoration: underline ; color: #002fe0}
-span.s8 {color: #9d1c12}
-span.s9 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LocalOut</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>write to buses local to a synth</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="AbstractOut.html"><span class="s5"><b>AbstractOut</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*ar(channelsArray) </b>- write a signal to an audio bus local to the enclosing synth.</p>
-<p class="p4"><b>*kr(channelsArray) </b>-<b> </b>write a signal to a control bus local to the enclosing synth.</p>
-<p class="p5"><br></p>
-<p class="p6"><b>channelsArray </b>- an Array of channels or single output to write out. You cannot change the size of this once a SynthDef has been built.</p>
-<p class="p2"><br></p>
-<p class="p4">LocalOut writes to buses that are local to the enclosing synth. The buses should have been defined by a <a href="LocalIn.html"><span class="s6">LocalIn</span></a> ugen. The <b>channelsArray</b> must be the same number of channels as were declared in the LocalIn. These are like the global buses, but are more convenient if you want to implement a self contained effect that uses a feedback processing loop.</p>
-<p class="p5"><br></p>
-<p class="p4">See also: <a href="LocalIn.html"><span class="s7">LocalIn</span></a>, <a href="LocalBuf.html"><span class="s6">LocalBuf</span></a></p>
-<p class="p5"><br></p>
-<p class="p4"><b>N.B.</b> Audio written to a LocalOut will not be read by a corresponding <b>LocalIn</b> until the next cycle, i.e. one block size of samples later. Because of this it is important to take this additional delay into account when using LocalIn to create feedback delays with delay times shorter than the threshold of pitch (i.e. < 0.05 seconds or > 20Hz), or where sample accurate alignment is required. See the resonator example below.</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> source, local;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>source = <span class="s3">Decay</span>.ar(<span class="s3">Impulse</span>.ar(0.3), 0.1) * <span class="s3">WhiteNoise</span>.ar(0.2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">LocalIn</span>.ar(2) + [source, 0]; <span class="s8">// read feedback, add to source</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">DelayN</span>.ar(local, 0.2, 0.2); <span class="s8">// delay sound</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>// reverse channels to give ping pong effect, apply decay factor</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LocalOut</span>.ar(local.reverse * 0.8);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, local);</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7">z = <span class="s3">SynthDef</span>(<span class="s9">"tank"</span>, {</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> local, in;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s3">Mix</span>.fill(12, {<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pan2</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Decay2</span>.ar(<span class="s3">Dust</span>.ar(0.05), 0.1, 0.5, 0.1)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s3">FSinOsc</span>.ar(<span class="s3">IRand</span>(36,84).midicps).cubed.max(0),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Rand</span>(-1,1))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = in + <span class="s3">Pan2</span>.ar(<span class="s3">Decay2</span>.ar(<span class="s3">Dust</span>.ar(0.03), 0.04, 0.3) * <span class="s3">BrownNoise</span>.ar, 0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>4.do { in = <span class="s3">AllpassN</span>.ar(in, 0.03, {<span class="s3">Rand</span>(0.005,0.02)}.dup, 1); };</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">LocalIn</span>.ar(2) * 0.98;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">OnePole</span>.ar(local, 0.5);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">Rotate2</span>.ar(local[0], local[1], 0.23);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">AllpassN</span>.ar(local, 0.05, {<span class="s3">Rand</span>(0.01,0.05)}.dup, 2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">DelayN</span>.ar(local, 0.3, [0.19,0.26]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">AllpassN</span>.ar(local, 0.05, {<span class="s3">Rand</span>(0.03,0.15)}.dup, 2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">LeakDC</span>.ar(local);<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = local + in;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LocalOut</span>.ar(local);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, local);</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">(</p>
-<p class="p7">z = <span class="s3">SynthDef</span>(<span class="s9">"tape"</span>, {</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> local, in, amp;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = <span class="s3">SoundIn</span>.ar([0,1]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>amp = <span class="s3">Amplitude</span>.kr(<span class="s3">Mix</span>.ar(in));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>in = in * (amp > 0.02); <span class="s8">// noise gate</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">LocalIn</span>.ar(2);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">OnePole</span>.ar(local, 0.4);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">OnePole</span>.ar(local, -0.08);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">Rotate2</span>.ar(local[0], local[1], 0.2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">DelayN</span>.ar(local, 0.25, 0.25);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = <span class="s3">LeakDC</span>.ar(local);<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>local = ((local + in) * 1.25).softclip;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">LocalOut</span>.ar(local);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, local * 0.1);</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p9">// Resonator, must subtract blockSize for correct tuning</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s3">var</span> play, imp, initial;</p>
-<p class="p10"><span class="s3">SynthDef</span><span class="s2">(</span>"testRes"<span class="s2">, {</span></p>
-<p class="p8"><br></p>
-<p class="p7">play = <span class="s3">LocalIn</span>.ar(1);<span class="Apple-converted-space"> </span></p>
-<p class="p7">imp = <span class="s3">Impulse</span>.ar(1);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s3">LocalOut</span>.ar(<span class="s3">DelayC</span>.ar(imp + (play * 0.995), 1, 440.reciprocal - <span class="s3">ControlRate</span>.ir.reciprocal)); <span class="s8">// for feedback</span></p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s3">OffsetOut</span>.ar(0, play);</p>
-<p class="p8"><br></p>
-<p class="p7">}).play(s);</p>
-<p class="p8"><br></p>
-<p class="p7">{<span class="s3">SinOsc</span>.ar(440, 0, 0.2) }.play(s, 1); <span class="s8">// compare pitch</span></p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/MaxLocalBufs.html b/Help/UGens/InOut/MaxLocalBufs.html
deleted file mode 100644
index 2ce0dd9..0000000
--- a/Help/UGens/InOut/MaxLocalBufs.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MaxLocalBufs</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>set the maximum number of local buffers in a synth</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">This class is used internally by <a href="LocalBuf.html"><span class="s2">LocalBuf</span></a>, sets the maximum number of local buffers in a synth.<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/OffsetOut.html b/Help/UGens/InOut/OffsetOut.html
deleted file mode 100644
index 0d0b951..0000000
--- a/Help/UGens/InOut/OffsetOut.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.11">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0030a7; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b4}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #0000ee}
-span.s5 {color: #0000ff}
-span.s6 {color: #0038e9}
-span.s7 {color: #0026b4}
-span.s8 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>OffsetOut</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>write a signal to a bus with sample accurate timing<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a><b> : </b><a href="AbstractOut.html"><span class="s5"><b>AbstractOut</b></span></a></span><span class="s5"><b> : </b><a href="Out.html"><span class="s4"><b>Out</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">Output signal to a bus,<span class="Apple-converted-space">  </span>the sample offset within the bus is kept exactly; i.e. if the synth is scheduled to be started part way through a control cycle, OffsetOut will maintain the correct offset by buffering the output and delaying it until the exact time that the synth was scheduled for.</p>
-<p class="p2"><br></p>
-<p class="p4">This ugen is used where sample accurate output is needed.</p>
-<p class="p5"><br></p>
-<p class="p4"><b>*ar(bus, channelsArray)<span class="Apple-converted-space">  </span></b>- write a signal to an audio bus.</p>
-<p class="p4"><b>*kr(bus, channelsArray)<span class="Apple-converted-space">  </span></b>-<b> </b>write a signal to a control bus.</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>bus </b>- the index, or array of indexes, of busses to write to. The lowest index numbers are written to the audio hardware.</p>
-<p class="p7"><b>channelsArray </b>- an Array of channels or single output to write out. You cannot change the size of this once a SynthDef has been built.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4">See the <a href="../../ServerArchitecture/Server-Architecture.html"><span class="s6">Server-Architecture</span></a> and <a href="../../ServerArchitecture/Bus.html"><span class="s6">Bus</span></a> helpfiles for more information on buses and how they are used.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4">for achieving subsample accuracy see: <a href="../Info/SubsampleOffset.html"><span class="s6">SubsampleOffset</span></a></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p8">// example</p>
-<p class="p5"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s7">SynthDef</span><span class="s2">(</span>"help-OffsetOut"<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s7">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> env;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s7">EnvGen</span>.kr(<span class="s7">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">OffsetOut</span>.ar(out, <span class="s7">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s7">SynthDef</span><span class="s2">(</span>"help-Out"<span class="s2">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s7">arg</span> out=0, freq=440, sustain=0.05;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> env;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s7">EnvGen</span>.kr(<span class="s7">Env</span>.perc(0.01, sustain, 0.2), doneAction:2);</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//compare to Out:</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(out, <span class="s7">SinOsc</span>.ar(freq, 0, env))</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// these are in sync</p>
-<p class="p9"><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span></span>Routine<span class="s2">({</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(0.2, [<span class="s8">"/s_new"</span>, <span class="s8">"help-OffsetOut"</span>, -1]);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01.wait;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// these are less reliably in sync and are placed at multiples of blocksize.</p>
-<p class="p9"><span class="Apple-tab-span">	</span>(</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span></span>Routine<span class="s2">({</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(0.2, [<span class="s8">"/s_new"</span>, <span class="s8">"help-Out"</span>, -1]);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01.wait;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p9"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p4">Note that if you have an input to the synth, it will be coming in at its normal time, then mixed in your synth, and then delayed with the output. So you shouldn't use OffsetOut for effects or gating.</p>
-<p class="p5"><br></p>
-<p class="p11">SynthDef<span class="s2">(</span><span class="s8">"trig1"</span><span class="s2">,{</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s7">var</span> gate,tone;</p>
-<p class="p9"><span class="Apple-tab-span">	</span>gate = <span class="s7">Trig1</span>.ar(1.0,t);</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span>tone = </span><span class="s7">In</span><span class="s2">.ar(10,1); </span>// tone comes in normally</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span></span>// but is then delayed when by the OffsetOut</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span">	</span></span>OffsetOut<span class="s2">.ar(0,</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tone * <span class="s7">EnvGen</span>.ar(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Env</span>([0,0.1,0.1,0],[0.01,1.0,0.01],[-4,4],2),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gate,doneAction: 2</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9">})</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/Out.html b/Help/UGens/InOut/Out.html
deleted file mode 100644
index b0d96be..0000000
--- a/Help/UGens/InOut/Out.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.11">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #e10000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #008c00}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000ee}
-span.s6 {color: #007300}
-span.s7 {color: #bf0000}
-span.s8 {color: #3300d3}
-span.s9 {color: #008c00}
-span.s10 {color: #e10000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Out</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>write a signal to a bus</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s4"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a><b> : </b><a href="AbstractOut.html"><span class="s5"><b>AbstractOut</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*ar(bus, channelsArray)<span class="Apple-converted-space">  </span></b>- write a signal to an audio bus.</p>
-<p class="p1"><b>*kr(bus, channelsArray)<span class="Apple-converted-space">  </span></b>-<b> </b>write a signal to a control bus.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>bus </b>- the index, or array of indexes, of busses to write to. The lowest index numbers are written to the audio hardware.</p>
-<p class="p4"><b>channelsArray </b>- an Array of channels or single output to write out. You cannot change the size of this once a SynthDef has been built.</p>
-<p class="p5"><br></p>
-<p class="p1"><b>N.B. </b>Out is subject to control rate jitter. Where sample accurate output is needed, use <b>OffsetOut</b>.<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1">Note that using the <b>Bus</b> class to allocate a multichannel bus simply reserves a series of adjacent bus indices with the <b>Server</b> object's bus allocators. abus.index simply returns the first of those indices. When using a Bus with an <b>In</b> or <b>Out</b> ugen there is nothing to stop you from reading to or writing from a larger range, or from hardcoding to a bus that has been allocated. You are responsible for making sure that the number of channels match and that there are no conflicts.</p>
-<p class="p1">When using an array of bus indexes, the channel array will just be copied to each bus index in the array. So Out.ar([bus1,bus2],channelsArray) will be the same has Out.ar(bus1,channelsArray) + Out.ar(bus2,channelsArray).<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p1">See the <a href="../../ServerArchitecture/Server-Architecture.html"><span class="s4">Server-Architecture</span></a> and <a href="../../ServerArchitecture/Bus.html"><span class="s4">Bus</span></a> helpfiles for more information on buses and how they are used.</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>// mono</p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">SynthDef</span>(<span class="s6">\help_out</span>, { <span class="s4">arg</span> out=0, freq=440;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> source;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s4">SinOsc</span>.ar(freq, 0, 0.1);</p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write to the bus, adding to previous contents</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, source);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s3">(</span>\help_out<span class="s3">, [</span>\freq<span class="s3">, 500]);</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s3">(</span>\help_out<span class="s3">, [</span>\freq<span class="s3">, 600]);</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s3">(</span>\help_out<span class="s3">, [</span>\freq<span class="s3">, 700]);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>//stereo</p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">SynthDef</span>(<span class="s6">\help_out2</span>, { <span class="s4">arg</span> out=0, freq=440;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> source;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s4">SinOsc</span>.ar([freq, freq+1.0], 0, 0.1); <span class="s7">// stereo</span></p>
-<p class="p8"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write channel array to the busses starting at bus 0, then bus 1</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, source);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">Synth</span><span class="s3">(</span>\help_out2<span class="s3">, [</span>\freq<span class="s3">, 500]);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>//Multiple busses, mono source</p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s8">SynthDef</span>(<span class="s9">\help_out3</span>, { <span class="s8">arg</span> freq=440;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">var</span> source;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s8">SinOsc</span>.ar(freq, 0, 0.1); <span class="s10">// stereo</span></p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write output to bus 0 and bus 2</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Out</span>.ar([0,2], source);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s8">Synth</span><span class="s3">(</span>\help_out3<span class="s3">, [</span>\freq<span class="s3">, 500]);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>//Multiple busses, multichannel source</p>
-<p class="p7"><span class="Apple-tab-span">	</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s8">SynthDef</span>(<span class="s9">\help_out4</span>, { <span class="s8">arg</span> freq=440;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">var</span> source;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s8">SinOsc</span>.ar([freq,freq+1], 0, 0.1); <span class="s10">// stereo</span></p>
-<p class="p8"><br></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write output to bus 0 and bus 2</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Out</span>.ar([0,2], source);</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s8">Synth</span><span class="s3">(</span>\help_out4<span class="s3">, [</span>\freq<span class="s3">, 500]);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><br></p>
-<p class="p12"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/ReplaceOut.html b/Help/UGens/InOut/ReplaceOut.html
deleted file mode 100644
index 083a806..0000000
--- a/Help/UGens/InOut/ReplaceOut.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #0000ff}
-span.s5 {color: #0025b2}
-span.s6 {color: #606060}
-span.s7 {color: #416d1f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ReplaceOut</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>send signal to a bus, overwriting previous contents</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="AbstractOut.html"><span class="s4"><b>AbstractOut</b></span></a><span class="s4"><b> : </b><a href="Out.html"><b>Out</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*ar(bus, channelsArray)<span class="Apple-converted-space">  </span></b>- write a signal to an audio bus.</p>
-<p class="p4"><b>*kr(bus, channelsArray)<span class="Apple-converted-space">  </span></b>-<b> </b>write a signal to a control bus.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>bus </b>- the index of the bus to write out to. The lowest numbers are written to the audio hardware.</p>
-<p class="p6"><b>channelsArray </b>- an Array of channels or single output to write out. You cannot change the size of this once a SynthDef has been built.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Out </b>adds its output to a given bus, making it available to all nodes later in the node tree. (See <b>Synth </b>and <b>Order-of-execution</b> for more information.) ReplaceOut overwrites those contents. This can make it useful for processing.</p>
-<p class="p7"><br></p>
-<p class="p4">See the <b>Server-Architecture</b> and <b>Bus</b> helpfiles for more information on buses and how they are used.</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s5">SynthDef</span>(<span class="s6">"ReplaceOutHelp"</span>, { <span class="s5">arg</span> out=0, freq=440;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> source;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s5">SinOsc</span>.ar(freq, 0, 0.1);</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write to the bus, replacing previous contents</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">ReplaceOut</span>.ar(out, source);</p>
-<p class="p7"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// each Synth replaces the output of the previous one</p>
-<p class="p8"><span class="Apple-tab-span">	</span>x = <span class="s5">Synth</span>.tail(s, <span class="s6">"ReplaceOutHelp"</span>, [<span class="s7">\freq</span>, 500]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>y = <span class="s5">Synth</span>.tail(s, <span class="s6">"ReplaceOutHelp"</span>, [<span class="s7">\freq</span>, 600]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z = <span class="s5">Synth</span>.tail(s, <span class="s6">"ReplaceOutHelp"</span>, [<span class="s7">\freq</span>, 700]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>// release them in reverse order; the older Synths are still there.</p>
-<p class="p8"><span class="Apple-tab-span">	</span>z.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>y.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/SharedIn.html b/Help/UGens/InOut/SharedIn.html
deleted file mode 100644
index 3d439f5..0000000
--- a/Help/UGens/InOut/SharedIn.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #0000ff}
-span.s5 {color: #0025b2}
-span.s6 {color: #982316}
-span.s7 {color: #416d1f}
-span.s8 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SharedIn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>read from a shared control bus</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../Multichannel/MultiOutUGen.html"><b>MultiOutUGen</b></a><b> : </b><a href="AbstractIn.html"><span class="s3"><b>AbstractIn</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>SharedIn.kr(bus, numChannels)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Reads from a control bus shared between the internal server and the SC client. Control rate only. Writing to a shared control bus from the client is synchronous. When not using the internal server use node arguments or the set method of <a href="../../ServerArchitecture/Bus.html"><span class="s4">Bus</span></a> (or /c_set in messaging style).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>bus</b> - the index of the shared control bus to read from</p>
-<p class="p4"><b>numChannels </b>- the number of channels (i.e. adjacent buses) to read in. The default is 1. You cannot modulate this number by assigning it to an argument in a SynthDef.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">// only works with the internal server</p>
-<p class="p5">s = <span class="s5">Server</span>.internal;</p>
-<p class="p5">s.boot;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p8"><span class="s5">SynthDef</span><span class="s2">(</span>"help-SharedIn1"<span class="s2">, {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, <span class="s5">SinOsc</span>.ar(<span class="s5">Lag</span>.kr(<span class="s5">SharedIn</span>.kr(0, 1), 0.01), 0, 0.2));</p>
-<p class="p5">}).send(s);</p>
-<p class="p8"><span class="s5">SynthDef</span><span class="s2">(</span>"help-SharedIn2"<span class="s2">, {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(1, <span class="s5">SinOsc</span>.ar(<span class="s5">Lag</span>.kr(<span class="s5">SharedIn</span>.kr(0, 1), 0.01, 1.5), 0, 0.2));</p>
-<p class="p5">}).send(s);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">s.setSharedControl(0, 300); <span class="s6">// an initial value</span></p>
-<p class="p5">s.sendMsg(<span class="s7">\s_new</span>, <span class="s8">"help-SharedIn1"</span>, x = s.nextNodeID, 0, 1);</p>
-<p class="p5">s.sendMsg(<span class="s7">\s_new</span>, <span class="s8">"help-SharedIn2"</span>, y = s.nextNodeID, 0, 1);</p>
-<p class="p7"><br></p>
-<p class="p9">Routine<span class="s2">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>30.do({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.setSharedControl(0, 300 * (10.rand + 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s7">\n_free</span>, x);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s7">\n_free</span>, y);</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">s.quit;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/SharedOut.html b/Help/UGens/InOut/SharedOut.html
deleted file mode 100644
index ce488fc..0000000
--- a/Help/UGens/InOut/SharedOut.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {color: #0025b2}
-span.s5 {color: #416d1f}
-span.s6 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SharedOut<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>write to a shared control bus</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="AbstractOut.html"><span class="s3"><b>AbstractOut</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p1"><b>SharedOut.kr(bus, channelsArray)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Reads from a control bus shared between the internal server and the SC client. Control rate only. Reading from a shared control bus on the client is synchronous. When not using the internal server use the get method of <b>Bus</b> (or /c_get in messaging style) or <b>SendTrig</b> with an <b>OSCresponder</b> or <b>OSCresponderNode</b>.</p>
-<p class="p1"><b>bus</b> - the index of the shared control bus to read from</p>
-<p class="p4"><b>channelsArray </b>- an Array of channels or single output to write out. You cannot change the size of this once a SynthDef has been built.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">// only works with the internal server</p>
-<p class="p5">s = <span class="s4">Server</span>.internal;</p>
-<p class="p5">s.boot;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p8"><span class="s4">SynthDef</span><span class="s2">(</span>"help-SharedOut"<span class="s2">, {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SharedOut</span>.kr(0, <span class="s4">SinOsc</span>.kr(0.2));</p>
-<p class="p5">}).send(s);</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">s.sendMsg(<span class="s5">\s_new</span>, <span class="s6">"help-SharedOut"</span>, x = s.nextNodeID, 0, 1);</p>
-<p class="p5">s.sendMsg(<span class="s5">\n_trace</span>, x);</p>
-<p class="p7"><br></p>
-<p class="p6">// poll the shared control bus</p>
-<p class="p9">Routine<span class="s2">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>30.do({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.getSharedControl(0).postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">s.quit;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/SoundIn.html b/Help/UGens/InOut/SoundIn.html
deleted file mode 100644
index 4e6dcfa..0000000
--- a/Help/UGens/InOut/SoundIn.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #bf0000}
-span.s4 {font: 12.0px Helvetica; color: #0000ff}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SoundIn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>read audio from hardware inputs</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>SoundIn.ar(bus, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">SoundIn is a convenience UGen to read audio from the input of your computer or soundcard. It is a wrapper UGen based on <b>In</b>, which offsets the index such that 0 will always correspond to the first input regardless of the number of inputs present.</p>
-<p class="p1"><b>bus</b> - the channel (or array of channels) to read in. These start at 0, which will correspond to the first audio input.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>N.B.</b> On Intel based Macs, reading the built-in microphone or input may require creating an aggregate device in AudioMIDI Setup.</p>
-<p class="p2"><br></p>
-<p class="p3">"open -a 'Audio MIDI Setup'"<span class="s2">.unixCmd; </span><span class="s3">// execute this to launch it</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2"><b>See also:</b> <a href="In.html"><span class="s4">In</span></a>, <a href="../../ServerArchitecture/ServerOptions.html"><span class="s4">ServerOptions</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// world's most expensive patchcord (use headphones to avoid feedback)</p>
-<p class="p7">{ <span class="s5">SoundIn</span>.ar(0) }.play;</p>
-<p class="p8"><br></p>
-<p class="p6">// stereo version</p>
-<p class="p9">{ <span class="s5">SoundIn</span>.ar([0, 1]) }.play;</p>
-<p class="p5"><br></p>
-<p class="p6">// scope input; silent output</p>
-<p class="p7"><span class="s5">Server</span>.internal.boot;</p>
-<p class="p7">{ <span class="s5">Amplitude</span>.kr(<span class="s5">SoundIn</span>.ar(0)); }.scope;</p>
-</body>
-</html>
diff --git a/Help/UGens/InOut/XOut.html b/Help/UGens/InOut/XOut.html
deleted file mode 100644
index 93f7685..0000000
--- a/Help/UGens/InOut/XOut.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.11">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 14.0px; text-indent: -14.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 14.0px Helvetica}
-span.s3 {color: #000000}
-span.s4 {color: #001bb9}
-span.s5 {color: #0000ee}
-span.s6 {color: #0000ff}
-span.s7 {color: #0024f8}
-span.s8 {color: #0025b2}
-span.s9 {color: #606060}
-span.s10 {color: #416d1f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>XOut</b></span><span class="s2"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>send signal to a bus, crossfading with previous contents</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s4"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a><b> : </b><a href="AbstractOut.html"><span class="s6"><b>AbstractOut</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>*ar(bus, xfade, channelsArray) </b>- crossfade an audio bus.</p>
-<p class="p1"><b>*kr(bus, xfade, channelsArray) </b>- crossfade an control bus.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>bus </b>- the index, or array of indexes, of busses to write to. The lowest index numbers are written to the audio hardware.</p>
-<p class="p1"><b>xfade </b>- crossfade level.</p>
-<p class="p5"><b>channelsArray </b>- an Array of channels or single output to write out. You cannot change the size of this once a SynthDef has been built.</p>
-<p class="p2"><br></p>
-<p class="p1">xfade is a level for the crossfade between what is on the bus and what you are sending.</p>
-<p class="p1">The algorithm is equivalent to this:</p>
-<p class="p2"><br></p>
-<p class="p1">bus_signal = (input_signal * xfade) + (bus_signal * (1 - xfade));</p>
-<p class="p2"><br></p>
-<p class="p1">See the <a href="../../ServerArchitecture/Server-Architecture.html"><span class="s7">Server-Architecture</span></a> and <a href="../../ServerArchitecture/Bus.html"><span class="s7">Bus</span></a> helpfiles for more information on buses and how they are used.<b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s8">SynthDef</span>(<span class="s9">"help-SinOsc"</span>, { <span class="s8">arg</span> freq=440, out;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">Out</span>.ar(out, <span class="s8">SinOsc</span>.ar(freq, 0, 0.1))<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s8">SynthDef</span>(<span class="s9">"help-XOut"</span>, { <span class="s8">arg</span> out=0, xFade=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">var</span> source;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>source = <span class="s8">PinkNoise</span>.ar(0.05);</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// write to the bus, crossfading with previous contents</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">XOut</span>.ar(out, xFade, source);</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s8">Synth</span>(<span class="s9">"help-SinOsc"</span>, [<span class="s10">\freq</span>, 500]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s8">Synth.tail</span>(s, <span class="s9">"help-XOut"</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.set(<span class="s10">\xFade</span>, 0.7);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.set(<span class="s10">\xFade</span>, 0.4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a.set(<span class="s10">\xFade</span>, 0.0);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Info/BufChannels.html b/Help/UGens/Info/BufChannels.html
deleted file mode 100644
index ed8787c..0000000
--- a/Help/UGens/Info/BufChannels.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufChannels</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>current number of channels of soundfile in buffer</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: BufInfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the .ir method is not the safest choice. Since a buffer can be reallocated at any time,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>using .ir will not track the changes.</p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Info/BufDur.html b/Help/UGens/Info/BufDur.html
deleted file mode 100644
index a5a6935..0000000
--- a/Help/UGens/Info/BufDur.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufDur</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>current duration of soundfile in buffer</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: BufInfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">returns the current duration of soundfile</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the .ir method is not the safest choice. Since a buffer can be reallocated at any time,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>using .ir will not track the changes.</p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">s.sendMsg(</span>"/b_allocRead"<span class="s3">, 0, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s4">BufRd</span>.ar(1, 0,<span class="Apple-converted-space">  </span><span class="s4">Sweep</span>.ar(<span class="s4">Impulse</span>.ar(<span class="s4">BufDur</span>.kr(0).reciprocal), <span class="s4">BufSampleRate</span>.kr(0))) }.play;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Info/BufFrames.html b/Help/UGens/Info/BufFrames.html
deleted file mode 100644
index cdcc4f9..0000000
--- a/Help/UGens/Info/BufFrames.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufFrames</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>current number of frames allocated in the buffer</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: BufInfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">returns the current number of allocated frames</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the .ir method is not the safest choice. Since a buffer can be reallocated at any time,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>using .ir will not track the changes.</p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">s.sendMsg(</span>"/b_allocRead"<span class="s3">, 0, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p4">// indexing with a phasor</p>
-<p class="p6">{ <span class="s4">BufRd</span>.ar(1, 0, <span class="s4">Phasor</span>.ar(0, <span class="s4">BufRateScale</span>.kr(0), 0, <span class="s4">BufFrames</span>.kr(0))) }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// indexing by hand</p>
-<p class="p6">{ <span class="s4">BufRd</span>.ar(1, 0, <span class="s4">K2A</span>.ar(<span class="s4">MouseX</span>.kr(0, <span class="s4">BufFrames</span>.kr(0)))) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/BufRateScale.html b/Help/UGens/Info/BufRateScale.html
deleted file mode 100644
index d92278f..0000000
--- a/Help/UGens/Info/BufRateScale.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufRateScale</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>buffer rate scaling in respect to server samplerate</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: BufInfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">returns a ratio by which the playback of a soundfile is to be scaled</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the .ir method is not the safest choice. Since a buffer can be reallocated at any time,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>using .ir will not track the changes.</p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">s.sendMsg(</span>"/b_allocRead"<span class="s3">, 0, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6">x = { <span class="s4">arg</span> rate=1;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">BufRd</span>.ar(1, 0, <span class="s4">Phasor</span>.ar(0, <span class="s4">BufRateScale</span>.kr(0) * rate, 0, <span class="s4">BufFrames</span>.kr(0)))<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/BufSampleRate.html b/Help/UGens/Info/BufSampleRate.html
deleted file mode 100644
index b8de840..0000000
--- a/Help/UGens/Info/BufSampleRate.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufSampleRate</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>buffer sample rate</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: BufInfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">returns the buffers current sample rate<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the .ir method is not the safest choice. Since a buffer can be reallocated at any time,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>using .ir will not track the changes.</p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">s.sendMsg(</span>"/b_allocRead"<span class="s3">, 0, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p4">// compares a 1102.5 Hz sine tone (11025 * 0.1, left) with a 1100 Hz tone (right)</p>
-<p class="p4">// the apollo sample has a sample rate of 11.025 kHz</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">var</span> freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = [ <span class="s4">BufSampleRate</span>.kr(0) * 0.1, 1100];</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq, 0, 0.1)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.play;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/BufSamples.html b/Help/UGens/Info/BufSamples.html
deleted file mode 100644
index c651177..0000000
--- a/Help/UGens/Info/BufSamples.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.47">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #79331d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0f2caa}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufSamples</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>current number of samples allocated in the buffer</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: BufInfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">Returns the current number of allocated samples. A sample is not the same as a frame (compare with BufFrames); a frame includes the samples in each channel of the buffer. Only for a mono buffer are samples the same as frames.<span class="Apple-converted-space"> </span></p>
-<p class="p1">samples = frames * numChannels</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir(bufnum)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the .ir method is not the safest choice. Since a buffer can be reallocated at any time,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>using .ir will not track the changes.</p>
-<p class="p3"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// example; this buffer is mono, so the number of samples matches the number of frames</p>
-<p class="p5"><span class="s3">s.sendMsg(</span>"/b_allocRead"<span class="s3">, 0, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// indexing with a phasor</p>
-<p class="p6">{ <span class="s4">BufRd</span>.ar(1, 0, <span class="s4">Phasor</span>.ar(0, <span class="s4">BufRateScale</span>.kr(0), 0, <span class="s4">BufSamples</span>.kr(0))) }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// indexing by hand</p>
-<p class="p6">{ <span class="s4">BufRd</span>.ar(1, 0, <span class="s4">K2A</span>.ar(<span class="s4">MouseX</span>.kr(0, <span class="s4">BufSamples</span>.kr(0)))) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/CheckBadValues.html b/Help/UGens/Info/CheckBadValues.html
deleted file mode 100644
index a1f9463..0000000
--- a/Help/UGens/Info/CheckBadValues.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #c40000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0010c4}
-span.s4 {color: #c40000}
-span.s5 {color: #007200}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>CheckBadValues<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>test for infinity, not-a-number, and denormals</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>CheckBadValues.ar(in, id, post)</b></p>
-<p class="p3"><b>CheckBadValues.kr(in, id, post)</b></p>
-<p class="p4"><br></p>
-<p class="p3">This UGen tests for infinity, NaN (not a number), and denormals. If one of these is found, it posts a warning. Its output is as follows: 0 = a normal float, 1 = NaN, 2 = infinity, and 3 = a denormal.</p>
-<p class="p3"><b>in</b> - the UGen whose output is to be tested</p>
-<p class="p3"><b>id</b> - an id number to identify this UGen. The default is 0.</p>
-<p class="p3"><b>post</b> - One of three post modes:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>0 = no posting;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>1 = post a line for every bad value;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>2 = post a line only when the floating-point classification changes (e.g., normal -> NaN and vice versa)</p>
-<p class="p4"><br></p>
-<p class="p3">The default post mode is 2. Post mode 1 is retained for backward compatibility; be aware that it generates a large amount of output.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">{ </span><span class="s3">CheckBadValues</span><span class="s2">.kr(</span><span class="s3">SinOsc</span><span class="s2">.ar); 0}.play </span>// nothing wrong here</p>
-<p class="p5"><br></p>
-<p class="p7">{ <span class="s3">CheckBadValues</span>.kr(1 / 0, 1).poll; 0 }.play <span class="s4">// check infinity</span></p>
-<p class="p5"><br></p>
-<p class="p7">x = { <span class="s3">arg</span> test = -1; <span class="s3">CheckBadValues</span>.kr(test); 0 }.play <span class="s4">// check NaN</span></p>
-<p class="p7">x.set(<span class="s5">\test</span>, -1.sqrt);</p>
-<p class="p5"><br></p>
-<p class="p6">// don't post, but do something with the output</p>
-<p class="p7">(</p>
-<p class="p7">x = { <span class="s3">arg</span> freq = 440;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s3">var</span> good;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>good = <span class="s3">BinaryOpUGen</span>(<span class="s5">'=='</span>, <span class="s3">CheckBadValues</span>.kr(freq, 0, 0), 0);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">SinOsc</span><span class="s2">.ar(freq, 0, 0.1) * good </span>// silence the output if freq is bad</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p7">x.set(<span class="s5">\freq</span>, -1.sqrt);</p>
-<p class="p5"><br></p>
-<p class="p6">// the UGen method checkBadValues passes through the input for quick testing</p>
-<p class="p7">{ <span class="s3">SinOsc</span>.ar(440, 0, 0.1).checkBadValues }.play</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/ControlDur.html b/Help/UGens/Info/ControlDur.html
deleted file mode 100644
index 7fe667a..0000000
--- a/Help/UGens/Info/ControlDur.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000ff}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ControlDur</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>duration of one block<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: InfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">returns the current block duration of the server in seconds</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p4"><br></p>
-<p class="p1">equivalent to<span class="Apple-converted-space">  </span>1 / <a href="ControlRate.html"><span class="s3">ControlRate</span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// examples</p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s4">ControlDur</span>.ir.poll }.play;</p>
-<p class="p9">{ (1/<span class="s4">ControlDur</span>.ir).poll }.play;</p>
-<p class="p9">{ <span class="s4">ControlRate</span>.ir.poll }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/ControlRate.html b/Help/UGens/Info/ControlRate.html
deleted file mode 100644
index 958d281..0000000
--- a/Help/UGens/Info/ControlRate.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b4}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000ff}
-span.s4 {color: #0026b4}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ControlRate</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>server control rate</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: InfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">returns the current control rate of the server</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1">equivalent to<span class="Apple-converted-space">  </span>1 / <a href="ControlDur.html"><span class="s3">ControlDur</span></a></p>
-<p class="p3"><b></b><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s4">ControlRate</span>.ir.poll }.play;</p>
-<p class="p2"><br></p>
-<p class="p4">// play a sine tone at control rate</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s5">{ </span>SinOsc.ar(ControlRate<span class="s5">.ir) * 0.1 }.play;</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Info/NumRunningSynths.html b/Help/UGens/Info/NumRunningSynths.html
deleted file mode 100644
index 7f3e6cc..0000000
--- a/Help/UGens/Info/NumRunningSynths.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0019b7}
-span.s4 {color: #000000}
-span.s5 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NumRunningSynths</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>number of currently running synths</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: InfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// example: frequency is derived from the number of synths running</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s3">SynthDef</span><span class="s4">(</span>"numRunning"<span class="s4">, { </span><span class="s3">arg</span><span class="s4"> out;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar(<span class="s3">NumRunningSynths</span>.ir * 200 + 400, 0, 0.1));<span class="Apple-converted-space"> </span></p>
-<p class="p5">}).send(s);<span class="Apple-converted-space"> </span></p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"numRunning"</span>, -1, 0, 0);</p>
-<p class="p5">s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"numRunning"</span>, -1, 0, 0);</p>
-<p class="p5">s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"numRunning"</span>, -1, 0, 0);</p>
-<p class="p5">s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"numRunning"</span>, -1, 0, 0);</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/SampleDur.html b/Help/UGens/Info/SampleDur.html
deleted file mode 100644
index fd2dd72..0000000
--- a/Help/UGens/Info/SampleDur.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000ff}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SampleDur</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>duration of one<span class="Apple-converted-space">  </span>sample<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: InfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">returns the current sample duration of the server in seconds</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p4"><br></p>
-<p class="p1">equivalent to<span class="Apple-converted-space">  </span>1 / <a href="SampleRate.html"><span class="s3">SampleRate</span></a></p>
-<p class="p3"><br></p>
-<p class="p1">related: <b>minNyquist</b></p>
-<p class="p3"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// examples</p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s4">SampleDur</span>.ir.poll }.play;</p>
-<p class="p9">{ (1/<span class="s4">SampleDur</span>.ir).poll }.play;</p>
-<p class="p2"><br></p>
-<p class="p6">// drive a demand ugen at samplerate</p>
-<p class="p7"><br></p>
-<p class="p8">{ <span class="s4">Duty</span>.ar(<span class="s4">SampleDur</span>.ir, 0, <span class="s4">Dbrown</span>(-1.0, 1.0, 0.01, <span class="s4">inf</span>)) * 0.1 }.play</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/SampleRate.html b/Help/UGens/Info/SampleRate.html
deleted file mode 100644
index 8eeea34..0000000
--- a/Help/UGens/Info/SampleRate.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SampleRate</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>server sample rate</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: InfoUGenBase</p>
-<p class="p3"><br></p>
-<p class="p1">returns the current sample rate of the server</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ir</b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p4">// example</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">SampleRate</span>.ir.poll }.play;</p>
-<p class="p5"><br></p>
-<p class="p4">// compares a 441 Hz sine tone derived from sample rate (44100 * 0.01, left)<span class="Apple-converted-space"> </span></p>
-<p class="p4">// with a 440 Hz tone (right), resultin in a 1 Hz beating</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> freq;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freq = [ <span class="s3">SampleRate</span>.ir(0) * 0.01, 440];</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freq, 0, 0.1)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.play;<span class="Apple-converted-space"> </span></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p4">// play a pulse chord at power of two divisions of sample rate</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFPulse</span>.ar(<span class="s3">SampleRate</span>.ir * (2 ** (1..14).neg).postln).mean * 0.1 }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Info/SubsampleOffset.html b/Help/UGens/Info/SubsampleOffset.html
deleted file mode 100644
index d6166b9..0000000
--- a/Help/UGens/Info/SubsampleOffset.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0021e7}
-span.s5 {color: #001bb9}
-span.s6 {color: #2c7014}
-span.s7 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SubsampleOffset</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>offset from synth start within one sample</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s4"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> :<span class="Apple-converted-space"> </span></b><span class="s3"> <b>InfoUGenBase</b></span></p>
-<p class="p4"><br></p>
-<p class="p1"><b>SubsampleOffset.ir</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1">When a synth is created from a time stamped osc-bundle, it starts calculation at the next possible block (normally 64 samples). Using an <b>OffsetOut</b> ugen, one can delay the audio so that it matches sample accurately.<span class="Apple-converted-space"> </span></p>
-<p class="p1">For some synthesis methods, one needs subsample accuracy. <b>SubsampleOffset</b> provides the information where, within the current sample, the synth was scheduled. It can be used to offset envelopes or resample the audio output.</p>
-<p class="p4"><br></p>
-<p class="p1">see also: <a href="../InOut/OffsetOut.html"><span class="s5">OffsetOut</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// example: demonstrate cubic subsample interpolation</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s5">Server</span><span class="s3">.default = s = </span><span class="s5">Server</span><span class="s3">.internal; </span>// switch servers for scope</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// impulse train that can be moved between samples</p>
-<p class="p6">(</p>
-<p class="p7">SynthDef<span class="s3">(</span><span class="s6">\Help_SubsampleOffset</span><span class="s3">, { </span>|out, addOffset|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span> in, dt, sampDur, extraSamples, sampleOffset, resampledSignal;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s5">Impulse</span>.ar(2000, 0, 0.3); <span class="s7">// some input.</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>sampDur = </span><span class="s5">SampleDur</span><span class="s3">.ir; <span class="Apple-tab-span">	</span></span>// duration of one sample</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>extraSamples = 4;<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// DelayC needs at least 4 samples buffer</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>sampleOffset = 1 - </span><span class="s5">SubsampleOffset</span><span class="s3">.ir; </span>// balance out subsample offset</p>
-<p class="p6"><span class="Apple-tab-span">	</span>sampleOffset = sampleOffset + <span class="s5">MouseX</span>.kr(0, addOffset); <span class="s7">// add a mouse dependent offset</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// cubic resampling:</p>
-<p class="p6"><span class="Apple-tab-span">	</span>resampledSignal = <span class="s5">DelayC</span>.ar(in,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maxdelaytime: sampDur * (1 + extraSamples),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delaytime: sampDur * (sampleOffset + extraSamples)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">OffsetOut</span>.ar(out, resampledSignal)</p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p5">// create 2 pulse trains 1 sample apart, move one relatively to the other.</p>
-<p class="p5">// when cursor is at the left, the impulses are adjacent, on the right, they are</p>
-<p class="p5">// exactly 1 sample apart.</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s5">var</span> dt = s.sampleRate.reciprocal; <span class="s7">// 1 sample delay</span></p>
-<p class="p6">s.sendBundle(0.2, [9, <span class="s6">\Help_SubsampleOffset</span>, s.nextNodeID, 1, 1, <span class="s6">\out</span>, 40, <span class="s6">\addOffset</span>, 3]);</p>
-<p class="p6">s.sendBundle(0.2 + dt, [9, <span class="s6">\Help_SubsampleOffset</span>, s.nextNodeID, 1, 1, <span class="s6">\out</span>, 40, <span class="s6">\addOffset</span>, 0]);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">s.scope(1, 40, zoom: 0.2);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// example of a subsample accurate sine grain:</p>
-<p class="p5">// (I don't hear a difference to normal sample accurate grains, but maybe</p>
-<p class="p5">// someone could add an example that shows the effect)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p8"><span class="s5">SynthDef</span><span class="s3">(</span>\Help_Subsample_Grain<span class="s3">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s5">arg</span> out=0, freq=440, sustain=0.005, attack=0.001;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> env, offset, sig, sd;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sd = <span class="s5">SampleDur</span>.ir;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>offset = (1 - <span class="s5">SubsampleOffset</span>.ir) * sd;</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// free synth after delay:</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Line</span>.ar(1,0, attack + sustain + offset, doneAction:2); <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc(attack, sustain, 0.2));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sig = <span class="s5">SinOsc</span>.ar(freq, 0, env);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sig = <span class="s5">DelayC</span>.ar(sig, sd * 4, offset);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">OffsetOut</span>.ar(out, sig);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}, [<span class="s6">\ir</span>, <span class="s6">\ir</span>, <span class="s6">\ir</span>, <span class="s6">\ir</span>]).send(s);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>Routine<span class="s3"> {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(0.2, [9, <span class="s6">\Help_Subsample_Grain</span>, -1, 1, 1, <span class="s6">\freq</span>, 1000]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(0.001, 0.002).wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/MachineListening/BeatTrack.html b/Help/UGens/MachineListening/BeatTrack.html
deleted file mode 100644
index 9e33d1d..0000000
--- a/Help/UGens/MachineListening/BeatTrack.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>BeatTrack<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>autocorrelation beat tracker</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>#quarternotetick, eighthnotetick, sixteenthnotetick, tempo = BeatTrack.kr(chain, lock=0)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>chain [fft]- </b>Audio input to track, already passed through an FFT UGen; the expected size of FFT is 1024 for 44100 and 48000 sampling rate, and 2048 for double those. No other sampling rates are supported.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>lock [sk]- </b>If this argument is greater than 0.5, the tracker will lock at its current periodicity and continue from the current phase. Whilst it updates the model's phase and period, this is not reflected in the output until lock goes back below 0.5. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Autocorrelation based beat tracker; the underlying model assumes 4/4, but it should work on any isochronous beat structure, though there are biases to 100-120 bpm; a fast 7/8 may not be tracked in that sense. There are four k-rate outputs, being ticks at quarter, eighth and sixteenth level from the determined beat, and the current detected tempo. Note that the sixteenth note output won't necessarily make much sense if the music being tracked has swing; it is provided just as a convenience.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">This beat tracker determines the beat, biased to the midtempo range by weighting functions. It does not determine the measure level, only a tactus. It is also slow reacting, using a 6 second temporal window for its autocorrelation maneouvres. Don't expect human musician level predictive tracking.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">On the other hand, it is tireless, relatively general (though obviously best at transient 4/4 heavy material without much expressive tempo variation), and can form the basis of computer processing that is decidedly faster than human.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">b = </span><span class="s2">Buffer</span><span class="s1">.alloc(s,1024,1); </span>//for sampling rates 44100 and 48000</p>
-<p class="p6">//b = Buffer.alloc(s,2048,1); //for sampling rates 88200 and 96000</p>
-<p class="p5"><br></p>
-<p class="p6">//this is a one minute pop song; you should load something equivalent for testing</p>
-<p class="p7"><span class="s1">d=</span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"/Volumes/data/stevebeattrack/samples/100.wav"<span class="s1">);</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//you can also test at 48000 and it should work</p>
-<p class="p8">(</p>
-<p class="p8">a= <span class="s2">SynthDef</span>(<span class="s3">\help_beattrack</span>,{<span class="s2">arg</span> vol=1.0, beepvol=1.0, lock=0;</p>
-<p class="p8"><span class="s2">var</span> in, fft, resample;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2">var</span> trackb,trackh,trackq,tempo;</p>
-<p class="p8"><span class="s2">var</span> bsound,hsound,qsound, beep;</p>
-<p class="p5"><br></p>
-<p class="p8">in= <span class="s2">PlayBuf</span>.ar(1,d,<span class="s2">BufRateScale</span>.kr(d),1,0,1);</p>
-<p class="p6">//in = SoundIn.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8">fft = <span class="s2">FFT</span>(b, in);</p>
-<p class="p5"><br></p>
-<p class="p8">#trackb,trackh,trackq,tempo=<span class="s2">BeatTrack</span>.kr(fft, lock);</p>
-<p class="p5"><br></p>
-<p class="p8">beep= <span class="s2">SinOsc</span>.ar(1000,0.0,<span class="s2">Decay</span>.kr(trackb,0.1));</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">Out</span>.ar(0,<span class="s2">Pan2</span>.ar((vol*in)+(beepvol*beep),0.0));</p>
-<p class="p8">}).play</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">a.set(<span class="s3">\vol</span>,0.0);</p>
-<p class="p8">a.set(<span class="s3">\vol</span>,1.0);</p>
-<p class="p5"><br></p>
-<p class="p8">a.set(<span class="s3">\beepvol</span>,1.0);</p>
-<p class="p8">a.set(<span class="s3">\beepvol</span>,0.0);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">a.set(</span><span class="s3">\lock</span><span class="s1">,1); </span>//fix it rigidly from current phase/period solution</p>
-<p class="p6"><span class="s1">a.set(</span><span class="s3">\lock</span><span class="s1">,0); </span>//unfix, back to tracking</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//track audio in (try clapping a beat or beatboxing, but allow up to 6 seconds for tracking to begin) and spawning stuff at quarters, eighths and sixteenths</p>
-<p class="p8">(</p>
-<p class="p9"><span class="s2">SynthDef</span><span class="s1">(</span>\help_beattrack2<span class="s1">,{</span></p>
-<p class="p8"><span class="s2">var</span> trackb,trackh,trackq,tempo;</p>
-<p class="p8"><span class="s2">var</span> source;</p>
-<p class="p8"><span class="s2">var</span> bsound,hsound,qsound;</p>
-<p class="p5"><br></p>
-<p class="p8">source= <span class="s2">SoundIn</span>.ar(0);</p>
-<p class="p5"><br></p>
-<p class="p8">#trackb,trackh,trackq,tempo=<span class="s2">BeatTrack</span>.kr(<span class="s2">FFT</span>(b, source));</p>
-<p class="p5"><br></p>
-<p class="p8">bsound= <span class="s2">Pan2</span>.ar(<span class="s2">LPF</span>.ar(<span class="s2">WhiteNoise</span>.ar*(<span class="s2">Decay</span>.kr(trackb,0.05)),1000),0.0);</p>
-<p class="p5"><br></p>
-<p class="p8">hsound= <span class="s2">Pan2</span>.ar(<span class="s2">BPF</span>.ar(<span class="s2">WhiteNoise</span>.ar*(<span class="s2">Decay</span>.kr(trackh,0.05)),3000,0.66),-0.5);</p>
-<p class="p5"><br></p>
-<p class="p8">qsound= <span class="s2">Pan2</span>.ar(<span class="s2">HPF</span>.ar(<span class="s2">WhiteNoise</span>.ar*(<span class="s2">Decay</span>.kr(trackq,0.05)),5000),0.5);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">Out</span>.ar(0, bsound+hsound+qsound);</p>
-<p class="p8">}).play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">Research note: This UGen is a derivation following:</p>
-<p class="p3">Davies, M. E. P.<span class="Apple-converted-space">  </span>and Plumbley, M. D. Beat Tracking With A Two State Model. Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP 2005), Philadelphia, USA, March 19-23, 2005</p>
-<p class="p2"><br></p>
-<p class="p3">The UGen was converted by Nick Collins for beat tracking research in the course of his PhD and uses an original C implementation of Matthew Davies' MATLAB model. It first appeared as part of BBCut2 as AutoTrack but has now been added to core to enhance SuperCollider's realtime machine listening options.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/MachineListening/BeatTrack2.html b/Help/UGens/MachineListening/BeatTrack2.html
deleted file mode 100644
index 46a8424..0000000
--- a/Help/UGens/MachineListening/BeatTrack2.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #952415}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.s4 {color: #bf0000}
-span.s5 {color: #0a20b3}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>BeatTrack2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>template matching beat tracker</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>#beattick, eighthtick, groovetick, tempo, phase, groove = BeatTrack2.kr(busindex, numfeatures, windowsize=2, phaseaccuracy=0.02, lock=0, weightingscheme)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>busindex [sk]- </b>Audio input to track, already analysed into N features, passed in via a control bus number from which to retrieve consecutive streams.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>numfeatures [s]</b> How many features (ie how many control buses) are provided</p>
-<p class="p2"><br></p>
-<p class="p3"><b>windowsize [s]</b> Size of the temporal window desired (2.0 to 3.0 seconds models the human temporal window). You might use longer values for stability of estimate at the expense of reactiveness.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>phaseaccuracy [s]</b> Relates to how many different phases to test. At the default, 50 different phases spaced by <b>phaseaccuracy</b> seconds would be tried out for 60bpm; 16 would be trialed for 180 bpm. Larger phaseaccuracy means more tests and more CPU cost.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>lock [sk]- </b>If this argument is greater than 0.5, the tracker will lock at its current periodicity and continue from the current phase. Whilst it updates the model's phase and period, this is not reflected in the output until lock goes back below 0.5. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>weightingscheme [s]</b> Use (-2.5) for flat weighting of tempi, (-1.5) for compensation weighting based on the number of events tested (because different periods allow different numbers of events within the temporal window) or otherwise a bufnum from 0 upwards for passing an array of 120 individual tempo weights; tempi go from 60 to 179 bpm in steps of one bpm, so you must have a buffer of 120 values. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">This beat tracker is based on exhaustively testing particular template patterns against feature streams; the testing takes place every 0.5 seconds. The two basic templates are a straight (<b>groove</b>=0) and a swung triplet (<b>groove</b>=1) pattern of 16th notes; this pattern is tried out at scalings corresponding to the tempi from 60 to 180 bpm. This is the cross-corellation method of beat tracking. A majority vote is taken on the best tempo detected, but this must be confirmed by a consistency check after a phase estimate. Such a consistency check helps to avoid wild fluctuating estimates, but is at the expense of an additional half second delay. The latency of the beat tracker with default settings is thus at least 2.5 seconds; because of block-based amortisation of calculation, it is actually around 2.8 seconds latency for a 2.0 second temporal window. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">This beat tracker is designed to be flexible for user needs; you can try out different window sizes, tempo weights and combinations of features. However, there are no guarantees on stability and effectiveness, and you will need to explore such parameters for a particular situation. <span class="Apple-converted-space">   </span></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//required for MFCCs used below</p>
-<p class="p6"><span class="s1">b = </span><span class="s2">Buffer</span><span class="s1">.alloc(s,1024,1); </span>//for sampling rates 44100 and 48000</p>
-<p class="p6">//b = Buffer.alloc(s,2048,1); //for sampling rates 88200 and 96000</p>
-<p class="p5"><br></p>
-<p class="p6">//this is a one minute pop song; you should load something equivalent for testing</p>
-<p class="p7"><span class="s1">d=</span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"/Volumes/data/stevebeattrack/samples/100.wav"<span class="s1">);</span></p>
-<p class="p7"><span class="s1">d=</span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"/Volumes/data/stevebeattrack/samples/019.wav"<span class="s1">);</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//very feature dependent</p>
-<p class="p8">(</p>
-<p class="p8">a= <span class="s2">SynthDef</span>(<span class="s3">\help_beattrack2_1</span>,{<span class="s2">arg</span> vol=1.0, beepvol=1.0, lock=0;</p>
-<p class="p8"><span class="s2">var</span> in, kbus;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2">var</span> trackb,trackh,trackq,tempo, phase, period, groove;</p>
-<p class="p8"><span class="s2">var</span> bsound,hsound,qsound, beep;</p>
-<p class="p8"><span class="s2">var</span> fft;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2">var</span> feature1, feature2, feature3;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8">in= <span class="s2">PlayBuf</span>.ar(1,d.bufnum,<span class="s2">BufRateScale</span>.kr(d.bufnum),1,0,1);</p>
-<p class="p6">//in = SoundIn.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">//Create some features</p>
-<p class="p8">fft = <span class="s2">FFT</span>(b.bufnum, in);</p>
-<p class="p5"><br></p>
-<p class="p8">feature1= <span class="s2">RunningSum</span>.rms(in,64);</p>
-<p class="p8">feature2= <span class="s2">MFCC</span>.kr(fft,2); <span class="s4">//two coefficients</span></p>
-<p class="p8">feature3= <span class="s2">A2K</span>.kr(<span class="s2">LPF</span>.ar(in,1000));</p>
-<p class="p5"><br></p>
-<p class="p8">kbus= <span class="s2">Out</span>.kr(0, [feature1, feature3]++feature2);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">//Look at four features</p>
-<p class="p8">#trackb,trackh,trackq,tempo, phase, period, groove=<span class="s2">BeatTrack2</span>.kr(0,4,2.0, 0.02, lock, -2.5);</p>
-<p class="p5"><br></p>
-<p class="p8">beep= <span class="s2">SinOsc</span>.ar(1000,0.0,<span class="s2">Decay</span>.kr(trackb,0.1));</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">Out</span>.ar(0,<span class="s2">Pan2</span>.ar((vol*in)+(beepvol*beep),0.0));</p>
-<p class="p8">}).play</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">a.set(<span class="s3">\vol</span>,0.0);</p>
-<p class="p8">a.set(<span class="s3">\vol</span>,1.0);</p>
-<p class="p5"><br></p>
-<p class="p8">a.set(<span class="s3">\beepvol</span>,1.0);</p>
-<p class="p8">a.set(<span class="s3">\beepvol</span>,0.0);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">a.set(</span><span class="s3">\lock</span><span class="s1">,1); </span>//fix it rigidly from current phase/period solution</p>
-<p class="p6"><span class="s1">a.set(</span><span class="s3">\lock</span><span class="s1">,0); </span>//unfix, back to tracking</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">a.free;</p>
-<p class="p5"><br></p>
-<p class="p6">//same thing, trying with Onsets UGen raw output</p>
-<p class="p8">(</p>
-<p class="p8">a= <span class="s2">SynthDef</span>(<span class="s3">\help_beattrack2_1</span>,{<span class="s2">arg</span> vol=1.0, beepvol=1.0, lock=0;</p>
-<p class="p8"><span class="s2">var</span> in, kbus;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2">var</span> trackb,trackh,trackq,tempo, phase, period, groove;</p>
-<p class="p8"><span class="s2">var</span> bsound,hsound,qsound, beep;</p>
-<p class="p8"><span class="s2">var</span> fft;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2">var</span> feature1, feature2, feature3;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8">in= <span class="s2">PlayBuf</span>.ar(1,d.bufnum,<span class="s2">BufRateScale</span>.kr(d.bufnum),1,0,1);</p>
-<p class="p6">//in = SoundIn.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">//Create some features</p>
-<p class="p8">fft = <span class="s2">FFT</span>(b.bufnum, in);</p>
-<p class="p5"><br></p>
-<p class="p8">feature1= <span class="s2">Onsets</span>.kr(fft,odftype:<span class="s3">\mkl</span>, rawodf:1);</p>
-<p class="p5"><br></p>
-<p class="p8">feature2= <span class="s2">Onsets</span>.kr(fft,odftype:<span class="s3">\complex</span>, rawodf:1);<span class="s4">//two coefficients</span></p>
-<p class="p5"><br></p>
-<p class="p8">kbus= <span class="s2">Out</span>.kr(0, [feature1,feature2]);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6">//Look at four features</p>
-<p class="p8">#trackb,trackh,trackq,tempo, phase, period, groove=<span class="s2">BeatTrack2</span>.kr(0,2,3.0, 0.02, lock, -2.5);</p>
-<p class="p5"><br></p>
-<p class="p8">beep= <span class="s2">SinOsc</span>.ar(1000,0.0,<span class="s2">Decay</span>.kr(trackb,0.1));</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">Out</span>.ar(0,<span class="s2">Pan2</span>.ar((vol*in)+(beepvol*beep),0.0));</p>
-<p class="p8">}).play</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//favour higher tempi in own weighting scheme</p>
-<p class="p8">(</p>
-<p class="p8">c=<span class="s2">Array</span>.fill(120,{<span class="s2">arg</span> i; 0.5+(0.5*(i/120))});</p>
-<p class="p8">e=<span class="s2">Buffer</span>.sendCollection(s, c, 1);</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//track audio in (try clapping a beat or beatboxing, but allow up to 6 seconds for tracking to begin) and spawning stuff at quarters, eighths and sixteenths</p>
-<p class="p8">(</p>
-<p class="p9"><span class="s2">SynthDef</span><span class="s1">(</span>\help_beattrack2_2<span class="s1">,{</span></p>
-<p class="p8"><span class="s2">var</span> trackb,trackh,trackq,tempo;</p>
-<p class="p8"><span class="s2">var</span> source, kbus;</p>
-<p class="p8"><span class="s2">var</span> bsound,hsound,qsound;</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">source= </span><span class="s2">SoundIn</span><span class="s1">.ar(0); </span>//PlayBuf.ar(1,d.bufnum,BufRateScale.kr(d.bufnum),1,0,1);</p>
-<p class="p5"><br></p>
-<p class="p6">//downsampling automatic via kr from ar</p>
-<p class="p6"><span class="s1">kbus= </span><span class="s2">Out</span><span class="s1">.kr(0, </span><span class="s2">LPF</span><span class="s1">.ar(source,1000)); </span>//([feature1, feature3]++feature2);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8">#trackb,trackh,trackq,tempo=<span class="s2">BeatTrack2</span>.kr(0,1,weightingscheme:e.bufnum);</p>
-<p class="p5"><br></p>
-<p class="p8">bsound= <span class="s2">Pan2</span>.ar(<span class="s2">LPF</span>.ar(<span class="s2">WhiteNoise</span>.ar*(<span class="s2">Decay</span>.kr(trackb,0.05)),1000),0.0);</p>
-<p class="p5"><br></p>
-<p class="p8">hsound= <span class="s2">Pan2</span>.ar(<span class="s2">BPF</span>.ar(<span class="s2">WhiteNoise</span>.ar*(<span class="s2">Decay</span>.kr(trackh,0.05)),3000,0.66),-0.5);</p>
-<p class="p5"><br></p>
-<p class="p8">qsound= <span class="s2">Pan2</span>.ar(<span class="s2">HPF</span>.ar(<span class="s2">WhiteNoise</span>.ar*(<span class="s2">Decay</span>.kr(trackq,0.05)),5000),0.5);</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">Out</span>.ar(0, source + bsound+hsound+qsound);</p>
-<p class="p8">}).play;</p>
-<p class="p8">)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11">//Research note: Designed by Nick Collins following work by Jean Laroche</p>
-<p class="p10"><br></p>
-<p class="p11">//geometric tempo placement very similar to linear, and linear easier to deal with looking up related tempi at double and half speed</p>
-<p class="p12">(</p>
-<p class="p12"><span class="s5">var</span> startbps= 1, endbps=3;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s5">var</span> numtempi=100;</p>
-<p class="p12"><span class="s5">var</span> ratio;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s5">var</span> tempi, periods;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p12">ratio= (endbps/startbps)**((numtempi-1).reciprocal);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p12">tempi= <span class="s5">Array</span>.geom(numtempi, startbps, ratio);<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p12">periods= tempi.reciprocal;</p>
-<p class="p10"><br></p>
-<p class="p12"><span class="s5">Post</span> << (tempi*60) << nl;<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s5">Post</span> << periods << nl;<span class="Apple-converted-space"> </span></p>
-<p class="p12">)</p>
-<p class="p10"><br></p>
-<p class="p11">//create linear periods</p>
-<p class="p12"><span class="s5">Post</span> << ((<span class="s5">Array</span>.series(120,1,2/120)).reciprocal) << nl;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-<p class="p11">//tempo weights</p>
-<p class="p12"><span class="Apple-converted-space"> </span><span class="s5">Post</span> << (<span class="s5">Array</span>.fill(120,{<span class="s5">arg</span> i;<span class="Apple-converted-space">  </span>0.2*((1.0- ((abs(i-60))/60.0))**0.5) + 0.8; })) << nl;<span class="Apple-converted-space"> </span></p>
-<p class="p10"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/MachineListening/KeyTrack.html b/Help/UGens/MachineListening/KeyTrack.html
deleted file mode 100644
index 423d262..0000000
--- a/Help/UGens/MachineListening/KeyTrack.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #7c2a1b}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #5b2e22}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #872718}
-span.s1 {color: #000000}
-span.s2 {color: #1431aa}
-span.s3 {color: #25449a}
-span.s4 {color: #20409d}
-span.s5 {color: #102aae}
-span.s6 {color: #7c2a1b}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>KeyTrack<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>key tracker</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>key = KeyTrack.kr(chain, keydecay=2.0, chromadecay= 1.0)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>chain- [fft] </b>Audio input to track. This must have been pre-analysed by a 4096 size FFT. No other FFT sizes are valid except as noted below. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">//With standard hop of half FFT size = 2048 samples</p>
-<p class="p4"><span class="s1">b = </span><span class="s2">Buffer</span><span class="s1">.alloc(s,4096,1); </span>//for sampling rates 44100 and 48000</p>
-<p class="p4">//b = Buffer.alloc(s,8192,1); //for sampling rates 88200 and 96000</p>
-<p class="p2"><br></p>
-<p class="p3"><b>keydecay- [sk] </b>Number of seconds for the influence of a window on the final key decision to decay by 40dB (to 0.01 its original value)</p>
-<p class="p3"><b>chromaleak- [sk] </b>Each frame, the chroma values are set to the previous value multiplied by the chromadecay. 0.0 will start each frame afresh with no memory.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">A (12TET major/minor) key tracker based on a pitch class profile of energy across FFT bins and matching this to templates for major and minor scales in all transpositions. It assumes a 440 Hz concert A reference. Output is 0-11<span class="Apple-converted-space">  </span>C major to B major, 12-23 C minor to B minor</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">//The following files are test materials on my machine; you will subsitute your own filenames here</p>
-<p class="p4">//A major</p>
-<p class="p6"><span class="s1">d=</span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"/Volumes/data/stevebeattrack/samples/100.wav"<span class="s1">);</span></p>
-<p class="p4">//F major; hard to track!</p>
-<p class="p6"><span class="s1">d=</span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"/Volumes/data/stevebeattrack/samples/115.wav"<span class="s1">);</span></p>
-<p class="p5"><br></p>
-<p class="p4">//straight forward since no transients; training set from MIREX2006<span class="Apple-converted-space"> </span></p>
-<p class="p4">//01= A major</p>
-<p class="p4">//57 = b minor</p>
-<p class="p4">//78 e minor</p>
-<p class="p4">//08 Bb major</p>
-<p class="p6"><span class="s1">d=</span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"/Users/nickcollins/Desktop/ML/training_wav/78.wav"<span class="s1">)</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s1">b = </span><span class="s3">Buffer</span><span class="s1">.alloc(s,4096,1); </span>//for sampling rates 44100 and 48000</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s4">var</span> in, fft, resample;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s4">var</span> key, transientdetection;</p>
-<p class="p5"><br></p>
-<p class="p8">in= <span class="s4">PlayBuf</span>.ar(1,d,<span class="s4">BufRateScale</span>.kr(d),1,0,1);</p>
-<p class="p5"><br></p>
-<p class="p8">fft = <span class="s4">FFT</span>(b, in);</p>
-<p class="p5"><br></p>
-<p class="p8">key=<span class="s4">KeyTrack</span>.kr(fft, 2.0, 0.5);</p>
-<p class="p5"><br></p>
-<p class="p8">key.poll;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s4">Out</span>.ar(0,<span class="s4">Pan2</span>.ar(in));<span class="Apple-converted-space"> </span></p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">//alternating major and minor chords as a test</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">var</span> in, fft, resample;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s2">var</span> key, transientdetection;</p>
-<p class="p5"><br></p>
-<p class="p8">in= <span class="s2">Mix</span>(<span class="s2">SinOsc</span>.ar((60+[0,<span class="s2">MouseX</span>.kr(3,4).round(1),7]).midicps,0,0.1));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">//major dom 7 and minor 7; major keys preferred here</p>
-<p class="p4">//in= Mix(SinOsc.ar((60+(MouseY.kr(0,11).round(1.0))+[0,MouseX.kr(3,4).round(1),7, 10]).midicps,0,0.1));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8">fft = <span class="s2">FFT</span>(b, in);</p>
-<p class="p5"><br></p>
-<p class="p8">key=<span class="s2">KeyTrack</span>.kr(fft);</p>
-<p class="p5"><br></p>
-<p class="p8">key.poll;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">Out</span>.ar(0,<span class="s2">Pan2</span>.ar(in));<span class="Apple-converted-space"> </span></p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p9">//Nice to hear what KeyTrack thinks:</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">d=</span><span class="s5">Buffer</span><span class="s1">.read(s,</span>"/Users/nickcollins/Desktop/ML/training_wav/78.wav"<span class="s1">)</span></p>
-<p class="p9"><span class="s1">b = </span><span class="s5">Buffer</span><span class="s1">.alloc(s,4096,1); </span>//for sampling rates 44100 and 48000</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s5">var</span> in, fft, resample, chord, rootnote, sympath;</p>
-<p class="p8"><span class="s5">var</span> key, transientdetection;</p>
-<p class="p5"><br></p>
-<p class="p8">in= <span class="s5">PlayBuf</span>.ar(1,d,<span class="s5">BufRateScale</span>.kr(d),1,0,1);</p>
-<p class="p5"><br></p>
-<p class="p8">fft = <span class="s5">FFT</span>(b, in);</p>
-<p class="p5"><br></p>
-<p class="p8">key=<span class="s5">KeyTrack</span>.kr(fft, 2.0, 0.5);</p>
-<p class="p8">key.poll;</p>
-<p class="p9"><span class="s1">key = </span><span class="s5">Median</span><span class="s1">.kr(101, key); </span>// Remove outlier wibbles</p>
-<p class="p5"><br></p>
-<p class="p8">chord = if(key<12, #[0,4,7], #[0,3,7]);</p>
-<p class="p8">rootnote = if(key<12, key, key-12) + 60;</p>
-<p class="p5"><br></p>
-<p class="p8">sympath = <span class="s5">SinOsc</span>.ar((rootnote + chord).midicps, 0, 0.4).mean;</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s5">Out</span>.ar(0,<span class="s5">Pan2</span>.ar(in, -0.5) + <span class="s5">Pan2</span>.ar(sympath, 0.5));</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">//Research Notes:<span class="Apple-converted-space"> </span></p>
-<p class="p4">//See the MIREX2006 audio key tracking competition and Emilia Gomez's PhD thesis, Tonal Description of Music Audio Signals</p>
-<p class="p5"><br></p>
-<p class="p4">//The following code was used to create the datasets for the UGen, and would be the basis of extensions<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">//Need one set of bin data for 44100 and one for 48000</p>
-<p class="p5"><br></p>
-<p class="p4">//KeyTrack calculations, need to make arrays of FFT bins and weights for each chromatic tone.<span class="Apple-converted-space"> </span></p>
-<p class="p4">//greater resolution, 4096 FFT, avoid lower octaves, too messy there</p>
-<p class="p4">//60*6*2 output arrays</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s2">var</span> fftN, fftBins, binsize;</p>
-<p class="p8"><span class="s2">var</span> midinotes;</p>
-<p class="p8"><span class="s2">var</span> sr;</p>
-<p class="p8"><span class="s2">var</span> wtlist, binlist;</p>
-<p class="p5"><br></p>
-<p class="p8">sr = 48000; <span class="s6">//44100;</span></p>
-<p class="p5"><br></p>
-<p class="p8">fftN=4096;<span class="Apple-converted-space"> </span></p>
-<p class="p8">fftBins=fftN.div(2);</p>
-<p class="p8">binsize=sr/fftN;</p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s1">midinotes= (33..92); </span>//60 notes, 55 Hz up to 1661.2187903198 Hz</p>
-<p class="p5"><br></p>
-<p class="p8">wtlist=<span class="s2">List</span>[];<span class="Apple-converted-space"> </span></p>
-<p class="p8">binlist=<span class="s2">List</span>[];<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4">//for each note have six harmonic locations<span class="Apple-tab-span">	</span></p>
-<p class="p8">midinotes.do{<span class="s2">|note|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s2">var</span> freq, whichbin, lowerbin, prop;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>freq= note.midicps;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>6.do{<span class="s2">|j|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> partialfreq, partialamp;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>partialamp= 1.0/(j+1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>partialfreq= freq*(j+1);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>whichbin= partialfreq/binsize;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lowerbin= whichbin.asInteger;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>prop= 1.0-(whichbin-lowerbin);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>binlist.add(lowerbin).add(lowerbin+1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>wtlist.add(prop*partialamp).add((1.0-prop)*partialamp);</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><br></p>
-<p class="p8">};</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">Post</span> << (binlist) << nl<< nl;</p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s2">Post</span> << (wtlist) << nl<< nl;</p>
-<p class="p5"><br></p>
-<p class="p8">binlist.size.postln;</p>
-<p class="p8">wtlist.size.postln;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/MachineListening/Loudness.html b/Help/UGens/MachineListening/Loudness.html
deleted file mode 100644
index c6aff7b..0000000
--- a/Help/UGens/MachineListening/Loudness.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #722c1d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #872718}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #000000}
-span.s2 {color: #1737a5}
-span.s3 {color: #102aae}
-span.s4 {color: #872718}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Loudness<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>extraction of instantaneous loudness in sones</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>sones = Loudness.kr(chain, smask=0.25, tmask=6)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>chain [fft] - </b>Audio input to track, which has been pre-analysed by the FFT UGen; see examples below for the expected FFT size</p>
-<p class="p3"><b>smask [sk] - </b>Spectral masking param: lower bins mask higher bin power within ERB bands, with a power falloff (leaky integration multiplier) of smask per bin</p>
-<p class="p3"><b>tmask [sk] - </b>Temporal masking param: the phon level let through in an ERB band is the maximum of the new measurement, and the previous minus tmask phons</p>
-<p class="p2"><br></p>
-<p class="p3">A perceptual loudness function which outputs loudness in sones; this is a variant of an MP3 perceptual model, summing excitation in ERB bands. It models simple spectral and temporal masking, with equal loudness contour correction in ERB bands to obtain phons (relative dB), then a phon to sone transform. The final output is typically in the range of 0 to 64 sones, though higher values can occur with specific synthesised stimuli</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">//assumes hop of half fftsize, fine</p>
-<p class="p5"><span class="s1">b = </span><span class="s2">Buffer</span><span class="s1">.alloc(s,1024,1); </span>//for sampling rates 44100 and 48000</p>
-<p class="p5">//b = Buffer.alloc(s,2048,1); //for sampling rates 88200 and 96000</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s1">d=</span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p7">//analyse loudness and poll result</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3">var</span> in, fft, loudness;</p>
-<p class="p4"><br></p>
-<p class="p8">in= <span class="s3">PlayBuf</span>.ar(1,d,<span class="s3">BufRateScale</span>.kr(d),1,0,1);</p>
-<p class="p4"><br></p>
-<p class="p8">fft = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><br></p>
-<p class="p8">loudness=<span class="s3">Loudness</span>.kr(fft).poll(50);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3">Out</span>.ar(0,<span class="s3">Pan2</span>.ar(in));<span class="Apple-converted-space"> </span></p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">//TESTS</p>
-<p class="p5">//sones = 2**((phon-40)/10)</p>
-<p class="p5">//sine of 40 dB= 40phon at 1000 kHz = 1 sone</p>
-<p class="p5">//full amp = 100 dB</p>
-<p class="p5">//-60.dbamp = 0.001 = 1 sone</p>
-<p class="p5">//-40.dbamp = 0.01 = 4 sone</p>
-<p class="p5">//-20.dbamp= 0.1 = 16 sone</p>
-<p class="p5">//0.dbamp= 1 = 64 sone</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3">var</span> in, fft, loudness;</p>
-<p class="p4"><br></p>
-<p class="p8">in= <span class="s3">SinOsc</span>.ar(1000,0,0.001); <span class="s4">//should be 1 sone</span></p>
-<p class="p7">//in= SinOsc.ar(1000,0,0.01); //should be 4 sone</p>
-<p class="p7">//in= SinOsc.ar(1000,0,0.1); //should be 16 sone<span class="Apple-converted-space"> </span></p>
-<p class="p7">//in= SinOsc.ar(1000,0,1); //should be 64 sone<span class="Apple-converted-space"> </span></p>
-<p class="p7">//in= Saw.ar * SinOsc.ar(4);<span class="Apple-converted-space"> </span></p>
-<p class="p7">//in=WhiteNoise.ar;</p>
-<p class="p7">//in= Silent.ar; //should be small, around 2 **((0-40)/10) = 2 ** (-4) = 0.0625</p>
-<p class="p7">//in=DC.ar(1);</p>
-<p class="p7">//in=SinOsc.ar(22050,pi*0.5,1);</p>
-<p class="p7">//fade ins</p>
-<p class="p7">//in= SinOsc.ar(1000,0,Line.kr(0,1,2));</p>
-<p class="p7">//in= SinOsc.ar(1000,0,Line.kr(0,1,2)**2);</p>
-<p class="p7">//in= WhiteNoise.ar(Line.kr(0,1,2));</p>
-<p class="p7">//in= PlayBuf.ar(1,d,BufRateScale.kr(d),1,0,1);</p>
-<p class="p4"><br></p>
-<p class="p8">fft = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><br></p>
-<p class="p8">loudness=<span class="s3">Loudness</span>.kr(fft, 0.25,6).poll(50);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3">Out</span>.ar(0,<span class="s3">Pan2</span>.ar(in));<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3">K2A</span>.ar(loudness*0.016)</p>
-<p class="p8">}.plot(2.0)</p>
-<p class="p8">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p8">Research note: This UGen is an informal juxtaposition of perceptual coding, and a Zwicker and Glasberg/Moore/Stone loudness model.<span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/UGens/MachineListening/MFCC.html b/Help/UGens/MachineListening/MFCC.html
deleted file mode 100644
index 1009cde..0000000
--- a/Help/UGens/MachineListening/MFCC.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times; min-height: 19.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0018b8}
-span.s3 {color: #356f14}
-span.s4 {color: #606060}
-span.s5 {color: #a41c14}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>MFCC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mel frequency cepstral coefficients</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>#coeff1, coeff2, ... = MFCC.kr(chain, numcoeff=13)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>chain [fft] - </b>Audio input to track, which has been pre-analysed by the FFT UGen; see examples below for the expected FFT size</p>
-<p class="p3"><b>numcoeff [s] - </b>Number of coefficients, defaults to 13, maximum of 42; more efficient to use less of course! <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Generates a set of MFCCs; these are obtained from a band-based frequency representation (using the Mel scale by default), and then a discrete cosine transform (DCT). The DCT is an efficient approximation for principal components analysis, so that it allows a compression, or reduction of dimensionality, of the data, in this case reducing 42 band readings to a smaller set of MFCCs. A small number of features (the coefficients) end up describing the spectrum. The MFCCs are commonly used as timbral descriptors.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Output values are somewhat normalised for the range 0.0 to 1.0, but there are no guarantees on exact conformance to this. Commonly, the first coefficient will be the highest value.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4">//Technical note: The 0th coefficient is not generated as it consists of multiplying all bands by 1 and summing</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">//assumes hop of half fftsize, fine</p>
-<p class="p4"><span class="s1">b = </span><span class="s2">Buffer</span><span class="s1">.alloc(s,1024,1); </span>//for sampling rates 44100 and 48000</p>
-<p class="p4">//b = Buffer.alloc(s,2048,1); //for sampling rates 88200 and 96000</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">d=</span><span class="s2">Buffer</span><span class="s1">.read(s,</span>"sounds/a11wlk01.wav"<span class="s1">);</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7">x= {</p>
-<p class="p7"><span class="s2">var</span> in, fft, array;</p>
-<p class="p5"><br></p>
-<p class="p4">//in= PlayBuf.ar(1,d,BufRateScale.kr(d),1,0,1);</p>
-<p class="p5"><br></p>
-<p class="p7">in = <span class="s2">SoundIn</span>.ar(0);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7">fft = <span class="s2">FFT</span>(b, in);</p>
-<p class="p5"><br></p>
-<p class="p7">array=<span class="s2">MFCC</span>.kr(fft);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7">array.size.postln;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2">Out</span>.kr(0,array);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2">Out</span>.ar(0,<span class="s2">Pan2</span>.ar(in));<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">c= <span class="s2">Bus</span>.new(<span class="s3">'control'</span>, 0, 13);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">//poll coefficients</p>
-<p class="p7">c.getn(13,{<span class="s2">arg</span> val; {val.plot;}.defer});<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">//Continuous graphical display of MFCC values; free routine before closing window</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> ms;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7">w=<span class="s2">Window</span>.new(<span class="s4">"Thirteen MFCC coefficients"</span>, <span class="s2">Rect</span>(200,400,300,300));</p>
-<p class="p5"><br></p>
-<p class="p7">ms= <span class="s2">Mu</span>ltiSliderView.new(w, <span class="s2">Rect</span>(10,10,260,280));</p>
-<p class="p5"><br></p>
-<p class="p7">ms.value_(<span class="s2">Array</span>.fill(13,0.0));</p>
-<p class="p7">ms.valueThumbSize_(20.0);</p>
-<p class="p7">ms.indexThumbSize_(20.0);</p>
-<p class="p7">ms.gap_(0);</p>
-<p class="p5"><br></p>
-<p class="p7">w.front;</p>
-<p class="p5"><br></p>
-<p class="p7">r= {</p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2">inf</span>.do{</p>
-<p class="p5"><br></p>
-<p class="p7">c.getn(13,{<span class="s2">arg</span> val; {ms.value_(val*0.9)}.defer});<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s1">0.04.wait; </span>//25 frames per second</p>
-<p class="p7">};</p>
-<p class="p5"><br></p>
-<p class="p7">}.fork;</p>
-<p class="p5"><br></p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">//tidy up</p>
-<p class="p7">(</p>
-<p class="p7">r.stop;</p>
-<p class="p7">b.free;</p>
-<p class="p7">c.free;</p>
-<p class="p7">x.free;</p>
-<p class="p7">w.close;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3">Research notes: Drafts of an MFCC UGen were prepared by both Dan Stowell and Nick Collins; their various ideas are combined here in a cross platform compatible UGen. Mel scale spacing with triangular crossfade overlap is used by default for the bands, approximately tracking the human critical band spacing and bandwidth. Variants such as BFCC (Bark) and EFCC (ERB) given similar results in practice; the Mel scale as used here is the standard as adapted from the speech recognition literature and now applied in music information retrieval. <span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">//Calculating Mel Scale Bands; allow up to 42 coefficients, so up to 42 bands</p>
-<p class="p4">//first part of this code adapted from Dan Stowell and Jamie Bullock Mel scale implementation</p>
-<p class="p4">//could later add Bark and ERB options, and possibility of buffer of data to be passed to the UGen for alternative freq warpings</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">var</span> mel_freq_max, mel_freq_min,freq_bw_mel, freq_bands, freq_max, freq_min;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2">var</span> mel_peak, lin_peak, fft_peak;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2">var</span> freqperbin;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2">var</span> fftbinstart, fftbinend, fftbinmult, fftbincumul;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2">var</span> pos, tmp;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2">var</span> sr, fftsize, halffftsize;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2">var</span> whichbandscale,lintoscale,scaletolin; <span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7">freq_max=18000;</p>
-<p class="p7">freq_min=80;</p>
-<p class="p7">sr=48000; <span class="s5">//44100;<span class="Apple-converted-space"> </span></span></p>
-<p class="p7">fftsize=1024;<span class="Apple-converted-space"> </span></p>
-<p class="p7">halffftsize= fftsize.div(2);</p>
-<p class="p7">freq_bands=42;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">//whichbandscale= 0 ;<span class="Apple-converted-space">  </span>// 0=mel; 1=bark (CB) 2=ERB<span class="Apple-converted-space"> </span></p>
-<p class="p4">//</p>
-<p class="p4">//lintoscale = {arg freq;<span class="Apple-converted-space"> </span></p>
-<p class="p4">//switch(whichbandscale,0,{1127 * log(1 + (freq / 700))},1,{},2,{}).value</p>
-<p class="p4">//};<span class="Apple-converted-space"> </span></p>
-<p class="p4">//scaletolin = {arg scalepos;<span class="Apple-converted-space"> </span></p>
-<p class="p4">//switch(whichbandscale,0,{700 * (exp(scalepos / 1127.0) -1);},1,{},2,{}).value</p>
-<p class="p4">//};</p>
-<p class="p5"><br></p>
-<p class="p7">lintoscale = {<span class="s2">arg</span> freq;<span class="Apple-converted-space"> </span></p>
-<p class="p7">1127 * log(1 + (freq / 700))</p>
-<p class="p7">};<span class="Apple-converted-space"> </span></p>
-<p class="p7">scaletolin = {<span class="s2">arg</span> scalepos;<span class="Apple-converted-space"> </span></p>
-<p class="p7">700 * (exp(scalepos / 1127.0) -1);</p>
-<p class="p7">};</p>
-<p class="p5"><br></p>
-<p class="p7">mel_freq_max = lintoscale.value(freq_max); <span class="s5">// 1127 * log(1 + (freq_max / 700));</span></p>
-<p class="p7">mel_freq_min = lintoscale.value(freq_min); <span class="s5">//1127 * log(1 + (freq_min / 700));</span></p>
-<p class="p7">freq_bw_mel = (mel_freq_max - mel_freq_min) / freq_bands;</p>
-<p class="p5"><br></p>
-<p class="p7">[mel_freq_max, mel_freq_min,freq_bw_mel ].postln;</p>
-<p class="p5"><br></p>
-<p class="p7">mel_peak= <span class="s2">Array</span>.fill(freq_bands+2,{0.0});<span class="Apple-converted-space"> </span></p>
-<p class="p7">lin_peak= <span class="s2">Array</span>.fill(freq_bands+2,{0.0});</p>
-<p class="p7">fft_peak= <span class="s2">Array</span>.fill(freq_bands+2,{0.0});</p>
-<p class="p5"><br></p>
-<p class="p7">freqperbin = sr/fftsize; <span class="s5">//SR/N</span></p>
-<p class="p5"><br></p>
-<p class="p7">mel_peak[0] = mel_freq_min;</p>
-<p class="p4"><span class="s1">lin_peak[0] = freq_min; </span>// === 700 * (exp(mel_peak[0] / 1127) - 1);</p>
-<p class="p7">fft_peak[0] = (lin_peak[0]/ freqperbin).asInteger;</p>
-<p class="p5"><br></p>
-<p class="p7">for(1, freq_bands + 1,{<span class="s2">|n|</span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="Apple-converted-space"> </span>mel_peak[n] = mel_peak[n - 1] + freq_bw_mel;</p>
-<p class="p7"><span class="Apple-converted-space"> </span>lin_peak[n] = scaletolin.value(mel_peak[n]); <span class="s5">//700 * (exp(mel_peak[n] / 1127.0) -1);</span></p>
-<p class="p7"><span class="Apple-converted-space"> </span>fft_peak[n] = ((lin_peak[n] / freqperbin).asInteger).min(halffftsize); <span class="s5">//fft size //rounds down here</span></p>
-<p class="p5"><br></p>
-<p class="p7">});<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">//Post << mel_peak << nl;</p>
-<p class="p4">//Post << lin_peak << nl;</p>
-<p class="p4">//Post << fft_peak << nl;</p>
-<p class="p5"><br></p>
-<p class="p4">//<span class="Apple-converted-space">  </span>[2 / (lin_peak[freq_bands + 1] - lin_peak[freq_bands-1]), 1.0 / (2 / (lin_peak[2] - lin_peak[0]))].postln;</p>
-<p class="p5"><br></p>
-<p class="p7">fftbinstart = <span class="s2">Array</span>.fill(freq_bands, {0});</p>
-<p class="p7">fftbinend = <span class="s2">Array</span>.fill(freq_bands, {0});</p>
-<p class="p7">fftbincumul = <span class="s2">Array</span>.fill(freq_bands+1, {0});</p>
-<p class="p7">fftbinmult = [];</p>
-<p class="p5"><br></p>
-<p class="p7">pos=0;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7">freq_bands.do {<span class="s2">|i|</span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>//var normmult=1.0; //preserve power, don't modify band power by area <span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> startbin, endbin, numbins, averager;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>if(i==0,{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>startbin= 0;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>endbin= fft_peak[i+1]-1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>},{</p>
-<p class="p7"><span class="Apple-tab-span">	</span>startbin= fft_peak[i-1]+1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>endbin= fft_peak[i+1]-1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>});<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>numbins= endbin-startbin+1;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>averager= 1.0/numbins;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>//linear crossfade (intended in power) between consecutive band centres</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>tmp= fft_peak[i]-startbin;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>//could divide by averager but I'm not convinced by the perceptual necessity for this?<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span></span>//ie fftbinmult = fftbinmult++(Array.series(tmp+1, 1.0/(tmp+1), 1.0/(tmp+1))*averager);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>fftbinmult = fftbinmult++(<span class="s2">Array</span>.series(tmp+1, 1.0/(tmp+1), 1.0/(tmp+1)));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>tmp= endbin- (fft_peak[i]);<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>fftbinmult = fftbinmult++(<span class="s2">Array</span>.series(tmp, 1.0+((-1.0)/(tmp+1)), (-1.0)/(tmp+1)));<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>fftbinstart[i]=startbin;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>fftbinend[i]=endbin;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>fftbincumul[i]= pos;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>pos= pos+(endbin-startbin+1);</p>
-<p class="p7">};</p>
-<p class="p5"><br></p>
-<p class="p7">fftbincumul[freq_bands]= pos-1; <span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s2">Post</span> << fftbinstart << nl;</p>
-<p class="p7"><span class="s2">Post</span> << fftbinend << nl;</p>
-<p class="p7"><span class="s2">Post</span> << fftbincumul << nl;</p>
-<p class="p7"><span class="s2">Post</span> << fftbinmult << nl;</p>
-<p class="p5"><br></p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">//future work: see http://www.ling.su.se/STAFF/hartmut/bark.htm</p>
-<p class="p5"><br></p>
-<p class="p4">//Barks</p>
-<p class="p7">a= (26.81 / (1 + (1960 / ((100,200..22000))))) - 0.53</p>
-<p class="p7">a.plot</p>
-<p class="p5"><br></p>
-<p class="p4">//ERBs (rough calculation, only really valid under 6000Hz, real scale goes up to 42 rather than 37 in 22000 Hz)<span class="Apple-converted-space"> </span></p>
-<p class="p7">a= <span class="s2">Array</span>.fill(220,{<span class="s2">|i|</span> <span class="s2">var</span> f; f= i*100; 11.17*log((f + 312) / (f + 14675)) + 43.0});<span class="Apple-converted-space"> </span></p>
-<p class="p7">a.plot</p>
-<p class="p5"><br></p>
-<p class="p5"><span class="Apple-converted-space">    </span></p>
-<p class="p4">//generating DCT coefficients</p>
-<p class="p4">//don't generate i=0 coefficient since it<span class="Apple-converted-space"> </span></p>
-<p class="p7">a= <span class="s2">Array</span>.fill(42, {<span class="s2">|i|</span> cos(pi/42.0*((0..41)+0.5)*(i+1))});<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2">Post</span> << a.flatten << nl;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/MachineListening/Onsets.html b/Help/UGens/MachineListening/Onsets.html
deleted file mode 100644
index 22ef837..0000000
--- a/Help/UGens/MachineListening/Onsets.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 33.0px; font: 12.0px Arial}
-span.s1 {color: #001bb9}
-span.s2 {color: #ad140d}
-span.s3 {color: #000000}
-span.s4 {color: #2c7014}
-span.s5 {text-decoration: underline ; color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-ul.ul1 {list-style-type: disc}
-ul.ul2 {list-style-type: circle}
-</style>
-</head>
-<body>
-<p class="p1"><b>Onsets<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Onset detector</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>Onsets.kr(chain, threshold, odftype)</b></p>
-<p class="p2"><br></p>
-<p class="p3">An onset detector for musical audio signals - detects the beginning of notes/drumbeats/etc. Outputs a control-rate trigger signal which is 1 when an onset is detected, and 0 otherwise.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>chain</b> - an <a href="SC://FFT"><span class="s1">FFT</span></a> chain</p>
-<p class="p3"><b>threshold</b> - the detection threshold, typically between 0 and 1, although in rare cases you may find values outside this range useful</p>
-<p class="p3"><b>odftype</b> - the function used to analyse the signal (options described below; OK to leave this at its default value)</p>
-<p class="p2"><br></p>
-<p class="p3">For the FFT chain, you should typically use a frame size of 512 or 1024 (at 44.1 kHz sampling rate) and 50% hop size (which is the default setting in SC). For different sampling rates choose an FFT size to cover a similar time-span (around 10 to 20 ms).</p>
-<p class="p2"><br></p>
-<p class="p3">The onset detection should work well for a general range of monophonic and polyphonic audio signals. The onset detection is purely based on signal analysis and does not make use of any "top-down" inferences such as tempo.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Example</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">s.boot.doWhenBooted {</p>
-<p class="p5"><span class="Apple-tab-span">	</span>// Prepare the buffers</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>b = <span class="s1">Buffer</span>.alloc(s, 512);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// Feel free to load a more interesting clip!</p>
-<p class="p5"><span class="Apple-tab-span">	</span>// a11wlk01 is not an ideal example of musical onsets.</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s3">d = </span><span class="s1">Buffer</span><span class="s3">.read(s, </span>"sounds/a11wlk01.wav"<span class="s3">);</span></p>
-<p class="p4">};</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5">// Move the mouse to vary the threshold</p>
-<p class="p4">(</p>
-<p class="p4">x = {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> sig, chain, onsets, pips;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// A simple generative signal</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig = <span class="s1">LPF</span>.ar(<span class="s1">Pulse</span>.ar(<span class="s1">TIRand</span>.kr(63,75,<span class="s1">Impulse</span>.kr(2)).midicps), <span class="s1">LFNoise2</span>.kr(0.5).exprange(100, 10000)) * <span class="s1">Saw</span>.ar(2).range(0, 1);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// or, uncomment this line if you want to play the buffer in</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>//sig = PlayBuf.ar(1, d, BufRateScale.kr(d), loop: 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s1">FFT</span>(b, sig);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>onsets = <span class="s1">Onsets</span>.kr(chain, <span class="s1">MouseX</span>.kr(0,1), <span class="s4">\rcomplex</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// You'll hear percussive "ticks" whenever an onset is detected</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pips = <span class="s1">WhiteNoise</span>.ar(<span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc(0.001, 0.1, 0.2), onsets));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, <span class="s1">Pan2</span>.ar(sig, -0.75, 0.2) + <span class="s1">Pan2</span>.ar(pips, 0.75, 1));</p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p5"><span class="s3">x.free; </span>// Free the synth</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5">////////////////////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p5">// Or we could expand this multichannel, run a series of different thresholds at the same time,<span class="Apple-converted-space"> </span></p>
-<p class="p5">// to sonify the effect of the threshold value.</p>
-<p class="p5">// A little hard to listen to at first: try and identify a pitch at which the best sort of<span class="Apple-converted-space"> </span></p>
-<p class="p5">// detection is happening.</p>
-<p class="p5">// You'll hear "bobbling" at low pitches where the threshold is definitely too low.</p>
-<p class="p8"><br></p>
-<p class="p4">(</p>
-<p class="p4">var threshes = (0.1, 0.2 .. 1);</p>
-<p class="p4">x = {</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">var</span> sig, chain, onsets, pips;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// A simple generative signal</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig = <span class="s1">LPF</span>.ar(<span class="s1">Pulse</span>.ar(<span class="s1">TIRand</span>.kr(63,75,<span class="s1">Impulse</span>.kr(2)).midicps), <span class="s1">LFNoise2</span>.kr(0.5).exprange(100, 10000)) * <span class="s1">Saw</span>.ar(2).range(0, 1);</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// or, uncomment this line if you want to play the buffer in</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>//sig = PlayBuf.ar(1, d, BufRateScale.kr(d), loop: 1);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s1">FFT</span>(b, sig);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>onsets = <span class="s1">Onsets</span>.kr(chain, threshes, <span class="s4">\rcomplex</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// Generate pips at a variety of pitches</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pips = <span class="s1">SinOsc</span>.ar((threshes).linexp(0, 1, 440, 3520), 0, <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>.perc(0.001, 0.1, 0.5), onsets)).mean;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, <span class="s1">Pan2</span>.ar(sig, -0.75, 0.2) + <span class="s1">Pan2</span>.ar(pips, 0.75, 1));</p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p5"><span class="s3">x.free; </span>// Free the synth</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s3">[b,d].do(</span><span class="s1">_</span><span class="s3">.free); </span>// Free the buffers</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">The <b>type</b> argument chooses which <i>onset detection function</i> is used. In many cases the default will be fine. The following choices are available:</p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s4">\power</span><span class="Apple-converted-space">    </span>- generally OK, good for percussive input, and also very efficient</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s4">\magsum</span><span class="Apple-converted-space">    </span>- generally OK, good for percussive input, and also very efficient</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s4">\complex</span><span class="Apple-converted-space">  </span>- performs generally very well, but more CPU-intensive</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s4">\rcomplex</span> - performs generally very well, and slightly more efficient than <span class="s4">\complex</span></li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s4">\phase</span> <span class="Apple-converted-space">  </span>- generally good, especially for tonal input, medium efficiency</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s4">\wphase</span> <span class="Apple-converted-space">  </span>- generally very good, especially for tonal input, medium efficiency</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><span class="s4">\mkl</span><span class="Apple-converted-space">      </span>- generally very good, medium efficiency, pretty different from the other methods</li>
-</ul>
-<p class="p2"><br></p>
-<p class="p3">Which of these should you choose? The differences aren't large, so I'd recommend you stick with the default <span class="s4">\rcomplex</span> unless you find specific problems with it. Then maybe try <span class="s4">\wphase</span>. The <span class="s4">\mkl</span> type is a bit different from the others so maybe try that too. They all have slightly different characteristics, and in tests perform at a similar quality level.</p>
-<p class="p2"><br></p>
-<p class="p3">For more details of all the processes involved, the different <i>onset detection functions</i>, and their evaluation, see</p>
-<p class="p2"><br></p>
-<p class="p9">D. Stowell and M. D. Plumbley. <a href="http://www.elec.qmul.ac.uk/digitalmusic/papers/2007/StowellPlumbley07-icmc.pdf"><span class="s5">Adaptive whitening for improved real-time audio onset detection</span></a>. <i>Proceedings of the International Computer Music Conference (ICMC’07)</i>, Copenhagen, Denmark, August 2007.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Advanced features</b></p>
-<p class="p2"><br></p>
-<p class="p3">Further options are available, which you are welcome to explore if you want. They are numbers that modulate the behaviour of the onset detector:</p>
-<p class="p2"><br></p>
-<ul class="ul1">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>relaxtime</b> and <b>floor</b> are parameters to the whitening process used, a kind of normalisation of the FFT signal. (Note: in <span class="s4">\mkl</span> mode these are not used.)</li>
-<ul class="ul2">
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>relaxtime</b> specifies the time (in seconds) for the normalisation to "forget" about a recent onset. If you find too much re-triggering (e.g. as a note dies away unevenly) then you might wish to increase this value.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>floor</b> is a lower limit, connected to the idea of how quiet the sound is expected to get without becoming indistinguishable from noise. For some cleanly-recorded classical music with wide dynamic variations, I found it helpful to go down as far as 0.000001.</li>
-</ul>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>mingap</b> specifies a minimum gap (in FFT frames) between onset detections, a brute-force way to prevent too many doubled detections.</li>
-<li style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"><b>medianspan</b> specifies the size (in FFT frames) of the median window used for smoothing the detection function before triggering.</li>
-</ul>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Mix.html b/Help/UGens/Multichannel/Mix.html
deleted file mode 100644
index abb0db5..0000000
--- a/Help/UGens/Multichannel/Mix.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Mix<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sum an array of channels</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Mix.new(array)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Mix will mix an array of channels down to a single channel or an array of arrays of channels down to a single array of channels. More information can be found under<b> MultiChannel</b>.</p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p5">{ <span class="s1">Mix</span>.new([ <span class="s1">PinkNoise</span>.ar(0.1), <span class="s1">FSinOsc</span>.ar(801, 0.1), <span class="s1">LFSaw</span>.ar(40, 0.1)]) }.play</p>
-<p class="p6"><br></p>
-<p class="p3"><b>*fill(n, function)</b></p>
-<p class="p2"><br></p>
-<p class="p3">A common idiom using Mix is to fill an Array and then mix the results:</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">play({<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.new( <span class="s1">Array</span>.fill(8, { <span class="s1">SinOsc</span>.ar(500 + 500.0.rand, 0, 0.05) }) );<span class="Apple-converted-space"> </span></p>
-<p class="p5">}))</p>
-<p class="p6"><br></p>
-<p class="p3">The <b>*fill</b> methods allow this idiom to be written more concisely:</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">play({<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Mix</span>.fill(8, { <span class="s1">SinOsc</span>.ar(500 + 500.0.rand, 0, 0.05) });<span class="Apple-converted-space"> </span></p>
-<p class="p5">}))</p>
-<p class="p6"><br></p>
-<p class="p3">Note that Mix-ar and Mix-kr in SC2 are equivalent to Mix-new in SC3, and that Mix-arFill and Mix-krFill are equivalent to Mix-fill.</p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/MultiOutUGen.html b/Help/UGens/Multichannel/MultiOutUGen.html
deleted file mode 100644
index 3e2c592..0000000
--- a/Help/UGens/Multichannel/MultiOutUGen.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-</style>
-</head>
-<body>
-<p class="p1"><b>MultiOutUGen</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: UGen</b></p>
-<p class="p2"><br></p>
-<p class="p3">A superclass for all UGens with multiple ouptuts.</p>
-<p class="p3">MultiOutUGen creates the <b>OutputProxy</b> ugens needed for the multiple outputs.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>initOutputs(argNumChannels)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Create an array of OutputProxies for the outputs.</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/OutputProxy.html b/Help/UGens/Multichannel/OutputProxy.html
deleted file mode 100644
index 7c2fb9e..0000000
--- a/Help/UGens/Multichannel/OutputProxy.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>OutputProxy<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>output place holder</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Superclass: UGen</b></p>
-<p class="p4"><br></p>
-<p class="p3">OutputProxy is used by some UGens as a place holder for multiple outputs.</p>
-<p class="p3">There is no reason for a user to create an OutputProxy directly.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> out;</p>
-<p class="p6">// Pan2 uses an OutputProxy for each of its two outputs.</p>
-<p class="p5">out = <span class="s1">Pan2</span>.ar(<span class="s1">WhiteNoise</span>.ar, 0.0);<span class="Apple-converted-space"> </span></p>
-<p class="p5">out.postln;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p7"><b>Methods:</b></p>
-<p class="p4"><br></p>
-<p class="p3"><b>source</b><span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">Get the UGen that is the source for this OutputProxy.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> left, right;</p>
-<p class="p6">// Pan2 uses an OutputProxy for each of its two outputs.</p>
-<p class="p5"># left, right = <span class="s1">Pan2</span>.ar(<span class="s1">WhiteNoise</span>.ar, 0.0);<span class="Apple-converted-space"> </span></p>
-<p class="p5">left.source.postln;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p3">The source method is also defined in Array, so that the source can be obtained this way as well:</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> out;</p>
-<p class="p6">// Pan2 uses an OutputProxy for each of its two outputs.</p>
-<p class="p5">out = <span class="s1">Pan2</span>.ar(<span class="s1">WhiteNoise</span>.ar, 0.0);<span class="Apple-converted-space"> </span></p>
-<p class="p5">out.postln;</p>
-<p class="p5">out.source.postln;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/Balance2.html b/Help/UGens/Multichannel/Panners/Balance2.html
deleted file mode 100644
index 3c79970..0000000
--- a/Help/UGens/Multichannel/Panners/Balance2.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-  <meta http-equiv="Content-Style-Type" content="text/css">
-  <title>SuperCollider Help - Balance2</title>
-
-
-  <meta name="Generator" content="Cocoa HTML Writer">
-
-  <meta name="CocoaVersion" content="824.41">
-
-  <style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-  </style>
-</head>
-
-
-<body>
-
-<p class="p1"><b>Balance2<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>stereo signal balancer</b></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p3"><b>Balance2.ar(left, right, pos, level)</b></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p3">Equal power panning balances two channels;
-by panning, you are favouring one or other channel in the mix, and the
-other loses power. The middle pan position (pos=0.0) corresponds to the
-original stereo mix; full left (pos of -1) is essentially just left
-channel playing, full right (pos of 1) just the right. The output of
-Balance2 remains a stereo signal. <span class="Apple-converted-space"> </span></p>
-
-<p class="p4"><br>
-
-</p>
-
-<p class="p3"><b>left</b> - channel 1 of input
-stereo signal</p>
-
-<p class="p3"><b>right</b> - channel 2 of
-input stereo signal</p>
-
-<p class="p3"><b>pos</b> - pan position, -1 is
-left, +1 is right</p>
-
-<p class="p3"><b>level</b> - a control rate
-level input.</p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p5"><br>
-
-</p>
-
-<p class="p5"><br>
-
-</p>
-
-<p class="p6">{<span class="s1">Balance2</span>.ar(<span class="s1">LFSaw</span>.ar(44),<span class="s1">Pulse</span>.ar(33),<span class="s1">FSinOsc</span>.kr(0.5), 0.1) }.play;</p>
-
-<p class="p5"><br>
-
-</p>
-
-<p class="p5"><br>
-
-</p>
-
-<p class="p6">{<span class="s1">var</span>
-source; source= <span class="s1">SinOsc</span>.ar([440,550]);
-<span class="s1">Balance2</span>.ar(source[0],source[1],<span class="s1">LFNoise0</span>.kr(4),0.3) }.play;</p>
-
-<p class="p5"><br>
-
-</p>
-
-<p class="p5"><br>
-
-</p>
-
-<p class="p5"><br>
-
-</p>
-
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/BiPanB2.html b/Help/UGens/Multichannel/Panners/BiPanB2.html
deleted file mode 100644
index dd40794..0000000
--- a/Help/UGens/Multichannel/Panners/BiPanB2.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #a71e12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BiPanB2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>2D Ambisonic B-format panner</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>BiPanB2.kr(inA, inB, azimuth, gain)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Encode a two channel signal to two dimensional ambisonic B-format.</p>
-<p class="p3">This puts two channels at opposite poles of a 2D ambisonic field.</p>
-<p class="p3">This is one way to map a stereo sound onto a soundfield.</p>
-<p class="p3">It is equivalent to:</p>
-<p class="p4"><br></p>
-<p class="p5">PanB2(inA, azimuth, gain) + PanB2(inB, azimuth + 1, gain)</p>
-<p class="p4"><br></p>
-<p class="p3"><b>inA</b> - input signal A</p>
-<p class="p3"><b>inB</b> - input signal B</p>
-<p class="p3"><b>azimuth</b> - position around the circle from -1 to +1.<span class="Apple-converted-space"> </span></p>
-<p class="p3">-1 is behind, -0.5 is left, 0 is forward, +0.5 is right, +1 is behind.</p>
-<p class="p3"><b>gain</b> - amplitude control</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> w, x, y, p, q, a, b, c, d;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>p = <span class="s2">LFSaw</span>.ar(200);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>q = <span class="s2">LFSaw</span>.ar(301);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// B-format encode</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#w, x, y = <span class="s2">BiPanB2</span>.ar(p, q, <span class="s2">MouseX</span>.kr(-1,1), 0.1);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// B-format decode to quad</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#a, b, c, d = <span class="s2">DecodeB2</span>.ar(4, w, x, y);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span>[a, b, d, c] </span>// reorder to my speaker arrangement: Lf Rf Lr Rr</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/DecodeB2.html b/Help/UGens/Multichannel/Panners/DecodeB2.html
deleted file mode 100644
index 2bd5058..0000000
--- a/Help/UGens/Multichannel/Panners/DecodeB2.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #a71e12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DecodeB2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>2D Ambisonic B-format decoder</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>DecodeB2.kr(numChans, w, x, y, orientation)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Decode a two dimensional ambisonic B-format signal to a set of speakers in a regular polygon.</p>
-<p class="p3">The outputs will be in clockwise order. The position of the first speaker is either center or left of center.</p>
-<p class="p3"><b>numChans</b> - number of output speakers. Typically 4 to 8.</p>
-<p class="p3"><b>w, x, y</b> - the B-format signals.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>orientation</b> - Should be zero if the front is a vertex of the polygon. The first speaker will be directly in front. Should be 0.5 if the front bisects a side of the polygon. Then the first speaker will be the one left of center. Default is 0.5.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> w, x, y, p, a, b, c, d;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>p = <span class="s2">PinkNoise</span>.ar; <span class="s3">// source</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// B-format encode</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#w, x, y = <span class="s2">PanB2</span>.ar(p, <span class="s2">MouseX</span>.kr(-1,1), 0.1);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// B-format decode to quad</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#a, b, c, d = <span class="s2">DecodeB2</span>.ar(4, w, x, y);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>[a, b, d, c] </span>// reorder to my speaker arrangement: Lf Rf Lr Rr</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/LinPan2.html b/Help/UGens/Multichannel/Panners/LinPan2.html
deleted file mode 100644
index a6b9455..0000000
--- a/Help/UGens/Multichannel/Panners/LinPan2.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LinPan2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two channel linear pan</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LinPan2.ar(in, pos, level)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Two channel linear panner. This one sounds more like the Rhodes tremolo than <b>Pan2</b>.</p>
-<p class="p3"><b>in</b> - input signal</p>
-<p class="p3"><b>pos</b> - pan position, -1 is left, +1 is right</p>
-<p class="p3"><b>level</b> - a control rate level input</p>
-<p class="p2"><br></p>
-<p class="p4">play({ <span class="s1">LinPan2</span>.ar(<span class="s1">PinkNoise</span>.ar(0.4), <span class="s1">FSinOsc</span>.kr(2)) });</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">SynthDef</span>(<span class="s2">"help-LinPan2"</span>, {<span class="Apple-converted-space">  </span><span class="s1">Out</span>.ar(0, <span class="s1">LinPan2</span>.ar(<span class="s1">FSinOsc</span>.ar(800, 0, 0.1), <span class="s1">FSinOsc</span>.kr(3))) }).play;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/LinXFade2.html b/Help/UGens/Multichannel/Panners/LinXFade2.html
deleted file mode 100644
index 7dfd789..0000000
--- a/Help/UGens/Multichannel/Panners/LinXFade2.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LinXFade2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two channel linear crossfade</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LinXFade2.ar(inA, inB, pan, level)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Two channel linear crossfader.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>inA</b> - an input signal</p>
-<p class="p3"><b>inB</b> - another input signal</p>
-<p class="p3"><b>pan</b> - cross fade position from -1 to +1</p>
-<p class="p3"><b>level</b> - a control rate level input</p>
-<p class="p2"><br></p>
-<p class="p5">play({ <span class="s1">LinXFade2</span>.ar(<span class="s1">FSinOsc</span>.ar(800, 0, 0.2), <span class="s1">PinkNoise</span>.ar(0.2), <span class="s1">FSinOsc</span>.kr(1)) });</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/Pan2.html b/Help/UGens/Multichannel/Panners/Pan2.html
deleted file mode 100644
index 57be074..0000000
--- a/Help/UGens/Multichannel/Panners/Pan2.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pan2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>two channel equal power pan</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pan2.ar(in, pos, level)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Two channel equal power panner.</p>
-<p class="p3"><b>in</b> - input signal</p>
-<p class="p3"><b>pos</b> - pan position, -1 is left, +1 is right</p>
-<p class="p3"><b>level</b> - a control rate level input</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">SynthDef</span>(<span class="s2">"help-Pan2"</span>, { <span class="s1">Out</span>.ar(0, <span class="s1">Pan2</span>.ar(<span class="s1">PinkNoise</span>.ar(0.4), <span class="s1">FSinOsc</span>.kr(2), 0.3)) }).play;</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/Pan4.html b/Help/UGens/Multichannel/Panners/Pan4.html
deleted file mode 100644
index e52ee02..0000000
--- a/Help/UGens/Multichannel/Panners/Pan4.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Pan4<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>four channel equal power pan</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Pan4.ar(in, xpos, ypos, level)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Four channel equal power panner.</p>
-<p class="p3"><b>in</b> - input signal</p>
-<p class="p3"><b>xpos</b> - x<span class="Apple-converted-space">  </span>pan position from -1 to +1(left to right)</p>
-<p class="p3"><b>ypos</b> - y pan position from -1 to +1 (back to front)</p>
-<p class="p3"><b>level</b> - a control rate level input.</p>
-<p class="p2"><br></p>
-<p class="p3">Outputs are in order LeftFront, RightFront, LeftBack, RightBack.</p>
-<p class="p2"><br></p>
-<p class="p4">// You'll only hear the front two channels on a stereo setup.</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s1">SynthDef</span>("help-Pan4", {<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s1"><span class="Apple-tab-span">	</span>Out</span>.ar(0, <span class="s1">Pan4</span>.ar(<span class="s1">PinkNoise</span>.ar, <span class="s1">FSinOsc</span>.kr(2), <span class="s1">FSinOsc</span>.kr(1.2), 0.3))<span class="Apple-converted-space"> </span></p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p6">play({ <span class="s1">Pan4</span>.ar(<span class="s1">PinkNoise</span>.ar, -1,<span class="Apple-converted-space">  </span>0, 0.3) }); <span class="s2">// left pair</span></p>
-<p class="p6">play({ <span class="s1">Pan4</span>.ar(<span class="s1">PinkNoise</span>.ar,<span class="Apple-converted-space">  </span>1,<span class="Apple-converted-space">  </span>0, 0.3) }); <span class="s2">// right pair</span></p>
-<p class="p6">play({ <span class="s1">Pan4</span>.ar(<span class="s1">PinkNoise</span>.ar,<span class="Apple-converted-space">  </span>0, -1, 0.3) }); <span class="s2">// back pair</span></p>
-<p class="p6">play({ <span class="s1">Pan4</span>.ar(<span class="s1">PinkNoise</span>.ar,<span class="Apple-converted-space">  </span>0,<span class="Apple-converted-space">  </span>1, 0.3) }); <span class="s2">// front pair</span></p>
-<p class="p2"><br></p>
-<p class="p6">play({ <span class="s1">Pan4</span>.ar(<span class="s1">PinkNoise</span>.ar,<span class="Apple-converted-space">  </span>0,<span class="Apple-converted-space">  </span>0, 0.3) }); <span class="s2">// center</span></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/PanAz.html b/Help/UGens/Multichannel/Panners/PanAz.html
deleted file mode 100644
index 41a9273..0000000
--- a/Help/UGens/Multichannel/Panners/PanAz.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-span.s1 {color: #091fb1}
-span.s2 {color: #000000}
-span.s3 {color: #902a19}
-span.s4 {color: #456c20}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PanAz<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>azimuth panner</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PanAz.ar(numChans, in, pos, level, width, orientation)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Multichannel equal power panner.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>numChans</b> - number of output channels</p>
-<p class="p3"><b>in</b> - input signal</p>
-<p class="p3"><b>pos</b> - pan position. Channels are evenly spaced over a cyclic period of 2.0 with 0.0 equal to the position directly in front, 2.0/numChans a clockwise shift 1/numChans of the way around the ring, 4.0/numChans equal to a shift of 2/numChans, etc. Thus all channels will be cyclically panned through if a sawtooth wave from -1 to +1 is used to modulate the pos. <b>N.B.</b> Front may or may not correspond to a speaker depending on the setting of the <b>orientation</b> arg, see below.</p>
-<p class="p3"><b>level</b> - a control rate level input.</p>
-<p class="p3"><b>width</b> - The width of the panning envelope. Nominally this is 2.0 which pans between pairs</p>
-<p class="p3">of adjacent speakers. Width values greater than two will spread the pan over greater numbers</p>
-<p class="p3">of speakers. Width values less than one will leave silent gaps between speakers.</p>
-<p class="p3"><b>orientation</b> - Should be zero if the front is a vertex of the polygon. The first speaker will be directly in front. Should be 0.5 if the front bisects a side of the polygon. Then the first speaker will be the one left of center. Default is 0.5.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// five channel circular panning</p>
-<p class="p6"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">PanAz</span>.ar(</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5, <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// numChans</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>ClipNoise<span class="s2">.ar, <span class="Apple-tab-span">	</span></span><span class="s3">// in</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFSaw</span>.kr(<span class="s1">MouseX</span>.kr(0.2, 8, <span class="s4">'exponential'</span>)), <span class="s3">// pos</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">// level</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// width</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">}.play(<span class="s1">Server</span>.internal);</p>
-<p class="p6"><span class="s1">Server</span>.internal.scope;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/PanB.html b/Help/UGens/Multichannel/Panners/PanB.html
deleted file mode 100644
index fd3c74a..0000000
--- a/Help/UGens/Multichannel/Panners/PanB.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PanB<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Ambisonic B format panner</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PanB.ar(in, azimuth, elevation, gain)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal</p>
-<p class="p3"><b>azimuth</b> -<span class="Apple-converted-space">  </span>in radians, -pi to +pi</p>
-<p class="p3"><b>elevation</b> -<span class="Apple-converted-space">  </span>in radians, -0.5pi to +0.5pi</p>
-<p class="p3"><b>gain</b> - a control rate level input.</p>
-<p class="p2"><br></p>
-<p class="p3">Output channels are in order W,X,Y,Z.</p>
-<p class="p2"><br></p>
-<p class="p4">// You'll only hear the first two channels on a stereo setup.</p>
-<p class="p5">play({<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>#w, x, y, z = <span class="s1">PanB</span>.ar(<span class="s1">WhiteNoise</span>.ar, <span class="s1">LFSaw</span>.kr(0.5,pi), <span class="s1">FSinOsc</span>.kr(0.31, 0.5pi), 0.3);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>//decode for 4 channels</p>
-<p class="p6"><span class="Apple-tab-span">	</span>DecodeB2.ar(4, w, x, y, 0.5);</p>
-<p class="p5">});</p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/PanB2.html b/Help/UGens/Multichannel/Panners/PanB2.html
deleted file mode 100644
index 3053d0e..0000000
--- a/Help/UGens/Multichannel/Panners/PanB2.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PanB2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>2D Ambisonic B-format panner</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PanB2.kr(in, azimuth, gain)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Encode a mono signal to two dimensional ambisonic B-format.</p>
-<p class="p3"><b>in</b> - input signal</p>
-<p class="p3"><b>azimuth</b> - position around the circle from -1 to +1.<span class="Apple-converted-space"> </span></p>
-<p class="p3">-1 is behind, -0.5 is left, 0 is forward, +0.5 is right, +1 is behind.</p>
-<p class="p3"><b>gain</b> - amplitude control</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> w, x, y, p, a, b, c, d;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>p = <span class="s2">PinkNoise</span>.ar; <span class="s3">// source</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// B-format encode</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#w, x, y = <span class="s2">PanB2</span>.ar(p, <span class="s2">MouseX</span>.kr(-1,1), 0.1);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// B-format decode to quad</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#a, b, c, d = <span class="s2">DecodeB2</span>.ar(4, w, x, y);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>[a, b, d, c] </span>// reorder to my speaker arrangement: Lf Rf Lr Rr</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/Rotate2.html b/Help/UGens/Multichannel/Panners/Rotate2.html
deleted file mode 100644
index fbeb083..0000000
--- a/Help/UGens/Multichannel/Panners/Rotate2.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #942b17}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001fb3}
-span.s3 {color: #942b17}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Rotate2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Rotate a sound field</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Rotate2.kr(x, y, pos)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Rotate2 can be used for rotating an ambisonic B-format sound field around an axis.</p>
-<p class="p3">Rotate2 does an equal power rotation so it also works well on stereo sounds.</p>
-<p class="p3">It takes two audio inputs (x, y) and an angle control (pos).</p>
-<p class="p3">It outputs two channels (x, y).</p>
-<p class="p3">It computes this:</p>
-<p class="p4"><br></p>
-<p class="p3">xout = cos(angle) * xin + sin(angle) * yin;</p>
-<p class="p3">yout = cos(angle) * yin - sin(angle) * xin;</p>
-<p class="p4"><br></p>
-<p class="p3">where angle = pos * pi,<span class="Apple-converted-space">  </span>so that -1 becomes -pi and +1 becomes +pi.<span class="Apple-converted-space"> </span></p>
-<p class="p3">This allows you to use an LFSaw to do continuous rotation around a circle.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>x, y</b> - input signals</p>
-<p class="p3"><b>pos</b> - angle to rotate around the circle from -1 to +1.<span class="Apple-converted-space"> </span></p>
-<p class="p3">-1 is 180 degrees, -0.5 is left, 0 is forward, +0.5 is right, +1 is behind.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> w, x, y, p, q, a, b, c, d;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>p = <span class="s2">WhiteNoise</span>.ar(0.05); <span class="s3">// source</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>q = <span class="s2">LFSaw</span>.ar(200,0,0.03)+<span class="s2">LFSaw</span>.ar(200.37,0,0.03)+<span class="s2">LFSaw</span>.ar(201,0,0.03);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// B-format encode 2 signals at opposite sides of the circle</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#w, x, y = <span class="s2">PanB2</span>.ar(p, -0.5) + <span class="s2">PanB2</span>.ar(q, 0.5);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>#x, y = <span class="s2">Rotate2</span>.ar(x, y, <span class="s2">MouseX</span>.kr(-1,1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// B-format decode to quad</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#a, b, c, d = <span class="s2">DecodeB2</span>.ar(4, w, x, y);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>[a, b, d, c] </span>// reorder to my speaker arrangement: Lf Rf Lr Rr</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p7">// Rotation of 2 mono sounds in the stereo field:</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// rotation via lfo</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> x, y;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s2">PinkNoise</span>.ar(0.4);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>y = <span class="s2">LFTri</span>.ar(800) * <span class="s2">LFPulse</span>.kr(3,0,0.3,0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#x, y = <span class="s2">Rotate2</span>.ar(x, y, <span class="s2">LFSaw</span>.kr(0.1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[x,y]</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">{</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span></span>// rotation via mouse</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> x, y;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s2">Mix</span>.fill(4, { <span class="s2">LFSaw</span>.ar(200 + 2.0.rand2, 0, 0.1) });</p>
-<p class="p5"><span class="Apple-tab-span">	</span>y = <span class="s2">SinOsc</span>.ar(900) * <span class="s2">LFPulse</span>.kr(3,0,0.3,0.2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>#x, y = <span class="s2">Rotate2</span>.ar(x, y, <span class="s2">MouseX</span>.kr(0,2));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[x,y]</p>
-<p class="p5">}.play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// Rotate B-format about Z axis:</p>
-<p class="p6"><br></p>
-<p class="p5">wout = win;</p>
-<p class="p5">zout = zin;</p>
-<p class="p5">#xout, yout = <span class="s2">Rotate2</span>.ar(xin, yin, pos);</p>
-<p class="p6"><br></p>
-<p class="p7">// Rotate B-format about Y axis:</p>
-<p class="p6"><br></p>
-<p class="p5">wout = win;</p>
-<p class="p5">yout = yin;</p>
-<p class="p5">#xout, zout = <span class="s2">Rotate2</span>.ar(xin, zin, pos);</p>
-<p class="p6"><br></p>
-<p class="p7">// Rotate B-format about X axis:</p>
-<p class="p6"><br></p>
-<p class="p5">wout = win;</p>
-<p class="p5">xout = xin;</p>
-<p class="p5">#yout, zout = <span class="s2">Rotate2</span>.ar(yin, zin, pos);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/SelectX.html b/Help/UGens/Multichannel/Panners/SelectX.html
deleted file mode 100644
index cb7e618..0000000
--- a/Help/UGens/Multichannel/Panners/SelectX.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SelectX<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>mix one output from many sources</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p3"><br></p>
-<p class="p1">The output is mixed from an array of inputs, linearly interpolating from two adjacent channels.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>SelectX.ar(which, array)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>SelectX.kr(which, array)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// examples<span class="Apple-converted-space"> </span></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = [</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(300),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pulse</span>.ar(230)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SelectX<span class="s3">.ar(</span>MouseX.kr(0, 1) * a.size<span class="s3">, a) * 0.2</span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p8"><span class="Apple-converted-space"> </span></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = [</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.kr(0.25),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFSaw</span>.kr(10),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFPulse</span>.kr(0.3)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(<span class="s2">SelectX</span>.kr(<span class="s2">MouseX</span>.kr(0, 1) * a.size, a) * 300 + 400) * 0.2</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Note: all the ugens are continously running. This may not be the most efficient way if each input is<span class="Apple-converted-space">  </span>cpu-expensive. The array is fixed at the time of writing the SynthDef, and the whole array is embedded in the SynthDef file itself.<span class="Apple-converted-space">  </span>For small arrays this is more efficient than reading from a buffer.</p>
-<p class="p2"><br></p>
-<p class="p1">wrap does not work yet.</p>
-<p class="p2"><br></p>
-<p class="p1">(by adc)</p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/SelectXFocus.html b/Help/UGens/Multichannel/Panners/SelectXFocus.html
deleted file mode 100644
index 0ad09c0..0000000
--- a/Help/UGens/Multichannel/Panners/SelectXFocus.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SelectXFocus<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>mix one output from many sources</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1">superclass: Object</p>
-<p class="p3"><br></p>
-<p class="p1">The output is mixed from an array of inputs, linearly interpolating from a number of adjacent channels.</p>
-<p class="p1">A focus argument allows to control how many adjacent sources are mixed. (by adc)</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>SelectXFocus.ar(which, array, focus)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>SelectXFocus.kr(which, array, focus)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// examples<span class="Apple-converted-space"> </span></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = [</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(<span class="s2">LFSaw</span>.kr(3 * [1, 1.01], 0, 100, 230)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pulse</span>.ar(<span class="s2">LFPulse</span>.kr(3 * [1, 1.02], 0, 0.4, 100, 230)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(<span class="s2">SinOsc</span>.kr(4 * [1, 1.03], 0, 200, 300))</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">SelectXFocus</span>.ar(<span class="s2">MouseX</span>.kr(0, 1) * a.size, a, <span class="s2">MouseY</span>.kr(0, a.size)) * 0.2</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">Note: all the ugens are continously running. This may not be the most efficient way if each input is<span class="Apple-converted-space">  </span>cpu-expensive. The array is fixed at the time of writing the SynthDef, and the whole array is embedded in the SynthDef file itself.<span class="Apple-converted-space">  </span>For small arrays this is more efficient than reading from a buffer.</p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">// radio tuner</p>
-<p class="p4">// (jrh) (cc 2006)</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> a, n, mx, my, mwrap;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>n = 8;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>mx = <span class="s2">MouseX</span>.kr(0, 1, 0, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>my = <span class="s2">MouseY</span>.kr;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>mwrap = { <span class="s2">|pmin, pmax, min, max|</span> sin(mx * <span class="s2">ExpRand</span>(pmin, pmax)) + 1 * 0.5 * <span class="s2">ExpRand</span>(min, max) };</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = {</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> freq, fmul, phase;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = mwrap.(10, 40, 200, 5000) + <span class="s2">ExpRand</span>(200, 3000);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fmul = <span class="s2">LFNoise0</span>.kr(<span class="s2">ExpRand</span>(0.1, 8)).round(1/6).exprange(1, <span class="s2">Rand</span>(1, 1.2));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>phase = <span class="s2">LFNoise2</span>.ar(mwrap.(1, 20, 10, 1000), <span class="s2">Rand</span>(2, 5));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq * fmul, phase)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>} ! n;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = a.add(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(<span class="s2">LFDNoise0</span>.kr(11, <span class="s2">SetResetFF</span>.kr(*<span class="s2">Dust</span>.kr([1, 2] * 0.3))).range(0, 700) + 220)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">SelectXFocus</span>.ar(mx * n, a, my * n) * 0.2 + <span class="s2">OnePole</span>.ar(<span class="s2">PinkNoise</span>.ar(0.5 ! 2), 0.4)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>* <span class="s2">Line</span>.kr(0, 1, 3);</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p4">// jimmy played harmonica in the pub where I was born</p>
-<p class="p4">// (hh) (jrh) (cc 2006)</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> blas, zieh, mx, my, trig, which, amp, u, schnauf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> del = 9, det = 0.1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>schnauf = 0.3;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>mx = <span class="s2">MouseX</span>.kr;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>my = <span class="s2">MouseY</span>.kr(0.1, 2, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>blas = [0, 12, 24] +.x [60, 64, 67] ++ [60+36];</p>
-<p class="p5"><span class="Apple-tab-span">	</span>zieh = [62, 67, 71, <span class="Apple-converted-space">  </span>74, 77, 81, 83, <span class="Apple-converted-space">  </span>86, 89, 93];</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s2">Dust</span>.kr(1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>which = <span class="s2">ToggleFF</span>.kr(<span class="s2">TDelay</span>.kr(trig, schnauf));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>amp = <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>([1, 0, 1], [schnauf, schnauf]), trig);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>blas = <span class="s2">Select</span>.kr(which, [blas, zieh]);</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span>u = </span>SelectXFocus<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mx * blas.size,<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>blas.collect {<span class="s2">|f|</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pulse</span>.ar((<span class="s2">Rand</span>(-0.04, 0.09) + f).midicps * 0.5, <span class="s2">0.48</span> + <span class="s2">LFNoise1</span>.kr(0.06, 0.1), 0.2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>},</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>my</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * <span class="s2">Slope</span>.kr(mx + my).abs.lag2(2) * amp;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>u = <span class="s2">Pan2</span>.ar(<span class="s2">OnePole</span>.ar(u, -0.3), mx * 2 - 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">DelayL</span>.ar(<span class="s2">BPF</span>.ar(u * 2, 1500, 0.3), del + det, <span class="s2">LFNoise2</span>.kr(0.2, det, del)) + u</p>
-<p class="p5">}.play;</p>
-<p class="p5">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/Splay.html b/Help/UGens/Multichannel/Panners/Splay.html
deleted file mode 100644
index 5e91d42..0000000
--- a/Help/UGens/Multichannel/Panners/Splay.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-  <meta http-equiv="Content-Style-Type" content="text/css">
-  <title>SuperCollider Help - Splay</title>
-
-
-  <meta name="Generator" content="Cocoa HTML Writer">
-
-  <meta name="CocoaVersion" content="824.42">
-
-  <style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {color: #0019b7}
-span.s2 {color: #326f17}
-span.s3 {color: #a71e12}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-  </style>
-</head>
-
-
-<body>
-
-<p class="p1"><b>Splay</b></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p3"><b>*ar(inArray, spread,level, center,
-levelComp)</b></p>
-
-<p class="p3"><b>*arFill(n, function, spread,level,
-center, levelComp)</b></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p3">Splay spreads an array of channels across
-the stereo field.</p>
-
-<p class="p3">Optional spread and center controls, and
-levelComp(ensation) (equal power).</p>
-
-<p class="p4"><br>
-
-</p>
-
-<p class="p5">(</p>
-
-<p class="p5">x = { <span class="s1">arg</span>
-spread=1, level=0.2, center=0.0;<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="s1">Splay</span>.ar(</p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">SinOsc</span>.ar(
-{ |i| <span class="s1">LFNoise2</span>.kr(
-rrand(10, 20), 200, 400) } ! 10),<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>spread,<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>level,<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>center</p>
-
-<p class="p5"><span class="Apple-tab-span"> </span>);</p>
-
-<p class="p5">}.play;</p>
-
-<p class="p5">)</p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p5">x.set(<span class="s2">\spread</span>,
-1, <span class="Apple-converted-space">  </span><span class="s2">\center</span>, 0);<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">//
-full stereo</span></p>
-
-<p class="p5">x.set(<span class="s2">\spread</span>,
-0.5, <span class="s2">\center</span>, 0);<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">//
-less wide</span></p>
-
-<p class="p5">x.set(<span class="s2">\spread</span>,
-0,<span class="Apple-converted-space"> <span class="Apple-tab-span"> </span> </span><span class="s2">\center</span>, 0);<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">//
-mono center</span></p>
-
-<p class="p6"><span class="s4">x.set(</span><span class="s2">\spread</span><span class="s4">,
-0.5, </span><span class="s2">\center</span><span class="s4">, 0.5);<span class="Apple-tab-span"><br>
-</span></span>// spread from center to right</p>
-
-<p class="p5">x.set(<span class="s2">\spread</span>,
-0, <span class="Apple-converted-space">  </span><span class="s2">\center</span>, -1);<span class="Apple-tab-span"> </span><span class="s3">//
-all left</span></p>
-
-<p class="p5">x.set(<span class="s2">\spread</span>,
-1, <span class="Apple-converted-space">  </span><span class="s2">\center</span>, 0);<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s3">//
-full stereo</span></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p6"><span class="s4"><span class="Apple-tab-span"> </span></span>// the
-same example written with arFill:</p>
-
-<p class="p5">(</p>
-
-<p class="p5">x = { <span class="s1">arg</span>
-spread=1, level=0.2, center=0.0;<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="s1">Splay</span>.arFill(10,<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>{ |i| <span class="s1">SinOsc</span>.ar( <span class="s1">LFNoise2</span>.kr(
-rrand(10, 20), 200, i + 3 * 100))<span class="Apple-converted-space"> 
-</span>},<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>spread,<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>level,<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>center</p>
-
-<p class="p5"><span class="Apple-tab-span"> </span>);</p>
-
-<p class="p5">}.play;</p>
-
-<p class="p5">)</p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p5"><span class="Apple-tab-span"> </span>//
-with mouse control</p>
-
-<p class="p5">(</p>
-
-<p class="p5">x = { var src;<span class="Apple-converted-space"> </span></p>
-
-<p class="p5"><span class="Apple-tab-span"> </span>src
-= <span class="s1">SinOsc</span>.ar( { |i| <span class="s1">LFNoise2</span>.kr( rrand(10, 20), 200, i +
-3 * 100) } ! 10);</p>
-
-<p class="p5"><span class="Apple-tab-span"> </span><span class="s1">Splay</span>.ar(src, MouseY.kr(1, 0), 0.2,
-MouseX.kr(-1, 1));</p>
-
-<p class="p5">}.play;</p>
-
-<p class="p5">)</p>
-
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/SplayAz.html b/Help/UGens/Multichannel/Panners/SplayAz.html
deleted file mode 100644
index e1b65e9..0000000
--- a/Help/UGens/Multichannel/Panners/SplayAz.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0020b4}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #95241b}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {text-decoration: underline ; color: #0018ea}
-span.s2 {color: #0020b4}
-span.s3 {color: #000000}
-span.s4 {color: #426d1a}
-span.s5 {color: #95241b}
-span.s6 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SplayAz</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>*ar(numChans,inArray, spread,level, width, center, orientation, levelComp)</b></p>
-<p class="p3"><b>*arFill(numChans, n, function, spread,level, width, center, orientation, levelComp)</b></p>
-<p class="p4"><br></p>
-<p class="p3">SplayAz spreads an array of channels across a ring of channels.</p>
-<p class="p3">Optional spread and center controls, and levelComp(ensation) (equal power).</p>
-<p class="p3">numChans and orientation are as in PanAz.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>See also:</b> <a href="PanAz.html"><span class="s1">PanAz</span></a>, SplayZ (deprecated)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = { <span class="s2">arg</span> spread=1, level=0.2, width=2, center=0.0;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-converted-space"> </span></span>SplayAz<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>4,</p>
-<p class="p5"><span class="Apple-converted-space">  </span><span class="s2">SinOsc</span>.ar( { <span class="s2">|i|</span> <span class="s2">LFNoise2</span>.kr( rrand(10, 20), 200, i + 3 * 100) } ! 10),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>spread,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>level,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>width,</p>
-<p class="p5"><span class="Apple-converted-space">  </span>center</p>
-<p class="p5"><span class="Apple-converted-space"> </span>);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">x.set(<span class="s4">\spread</span>, 1, <span class="Apple-converted-space">  </span><span class="s4">\center</span>, 0);<span class="Apple-converted-space">  </span><span class="s5">// full n chans</span></p>
-<p class="p5">x.set(<span class="s4">\spread</span>, 0.5, <span class="s4">\center</span>, -0.25); <span class="s5">// less wide</span></p>
-<p class="p7"><span class="s3">x.set(</span><span class="s4">\spread</span><span class="s3">, 0, </span><span class="s4">\center</span><span class="s3">, 0);<span class="Apple-converted-space">  </span></span>// mono center (depends on orientation, see PanAz)</p>
-<p class="p5">x.set(<span class="s4">\spread</span>, 0, <span class="s4">\center</span>, -0.25); <span class="s5">//<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s3">x.set(</span><span class="s4">\spread</span><span class="s3">, 0.0, </span><span class="s4">\center</span><span class="s3">, 0.5); </span>// mono, but rotate 1 toward the higher channels</p>
-<p class="p7"><span class="s3">x.set(</span><span class="s4">\spread</span><span class="s3">, 0.5, </span><span class="s4">\center</span><span class="s3">, 0.5); </span>// spread over the higher channels</p>
-<p class="p5">x.set(<span class="s4">\spread</span>, 0, <span class="Apple-converted-space">  </span><span class="s4">\center</span>, -0.25); <span class="s5">// all on first channel</span></p>
-<p class="p5">x.set(<span class="s4">\spread</span>, 1, <span class="Apple-converted-space">  </span><span class="s4">\center</span>, 0);<span class="Apple-converted-space">  </span><span class="s5">// full n chans</span></p>
-<p class="p4"><br></p>
-<p class="p5">x.free;</p>
-<p class="p4"><br></p>
-<p class="p7"><span class="s3"><span class="Apple-converted-space"> </span></span>// the same example written with arFill:</p>
-<p class="p5">(</p>
-<p class="p5">x = { <span class="s2">arg</span> spread=1, level=0.5, width=2, center=0.0;</p>
-<p class="p5"><span class="Apple-converted-space"> </span><span class="s2">SplayAz</span>.arFill(</p>
-<p class="p5"><span class="Apple-converted-space">  </span>4,</p>
-<p class="p5"><span class="Apple-converted-space">  </span>10,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>{ <span class="s2">|i|</span> <span class="s2">SinOsc</span>.ar( <span class="s2">LFNoise2</span>.kr( rrand(10, 20), 200, i + 3 * 100) ) },<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>spread,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>level,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>width,</p>
-<p class="p5"><span class="Apple-converted-space">  </span>center</p>
-<p class="p5"><span class="Apple-converted-space"> </span>);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-converted-space"> </span>// or with mouse control</p>
-<p class="p5">(</p>
-<p class="p5">x = { var src;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space"> </span>src = <span class="s2">SinOsc</span>.ar( { |i| <span class="s2">LFNoise2</span>.kr( rrand(10, 20), 200, i * 100 + 400) } ! 10);</p>
-<p class="p5"><span class="Apple-converted-space"> </span><span class="s2">SplayAz</span>.ar(4, src, MouseY.kr(1, 0), 0.2, center: MouseX.kr(-1, 1));</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">// test for correct behavior:<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// only on chan 0</p>
-<p class="p5">{ <span class="s2">SplayAz</span>.ar(4, <span class="s6">SinOsc.ar * 0.2</span>, orientation: 0) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>on chan 0, 3, i.e. equally around the ring</p>
-<p class="p5">{ <span class="s2">SplayAz</span>.ar(6, <span class="s6">SinOsc</span>.ar([2, 3] * 200) <span class="s6">* 0.2</span>, orientation: 0) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// equal spread on 0, 2, 4</p>
-<p class="p5">{ <span class="s2">SplayAz</span>.ar(6, <span class="s6">SinOsc</span>.ar([2, 3, 5] * 200) * 0.2, orientation: 0) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// wrong behavior of SplayZ: <span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>// plays on chan 2, but should play on 0</p>
-<p class="p5">{ <span class="s2">SplayZ</span>.ar(4, <span class="s6">SinOsc.ar * 0.2</span>, orientation: 0) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>//<span class="Apple-converted-space">  </span>wrong: mixes both to chan 2,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>// because pan values [-1, 1] are the same pos on the ring</p>
-<p class="p5">{ <span class="s2">SplayZ</span>.ar(6, <span class="s6">SinOsc</span>.ar([2, 3] * 200) <span class="s6">* 0.2</span>, orientation: 0) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>// wrong equal spread to pan values [-1, 0, 1], which outputs to chans 2, 0, 2</p>
-<p class="p5">{ <span class="s2">SplayZ</span>.ar(6, <span class="s6">SinOsc</span>.ar([2, 3, 5] * 200) * 0.2, orientation: 0) }.scope;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/SplayZ.html b/Help/UGens/Multichannel/Panners/SplayZ.html
deleted file mode 100644
index 17ad480..0000000
--- a/Help/UGens/Multichannel/Panners/SplayZ.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0026b1}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #852821}
-span.s1 {text-decoration: underline ; color: #0018ea}
-span.s2 {text-decoration: underline ; color: #0023e6}
-span.s3 {color: #0026b1}
-span.s4 {color: #000000}
-span.s5 {color: #4d6b1d}
-span.s6 {color: #852821}
-</style>
-</head>
-<body>
-<p class="p1"><b>SplayZ</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ATTENTION - SplayZ is deprecated because its geometry is wrong.<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>It is only kept for backwards compatibility - please adapt your patches to SplayAz!<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>See SplayAz help file for the comparison in behavior.</b></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>*ar(numChans,inArray, spread,level, width, center, orientation, levelComp)</b></p>
-<p class="p3"><b>*arFill(numChans, n, function, spread,level, width, center, orientation, levelComp)</b></p>
-<p class="p2"><br></p>
-<p class="p3">SplayZ spreads an array of channels across a ring of channels.</p>
-<p class="p3">Optional spread and center controls, and levelComp(ensation) (equal power).</p>
-<p class="p3">numChans and orientation are as in PanAz.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>See also:</b> <a href="PanAz.html"><span class="s1">PanAz</span></a><span class="s2">, SplayAz</span></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">x = { <span class="s3">arg</span> spread=1, level=0.2, width=2, center=0.0;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s4"><span class="Apple-converted-space"> </span></span>SplayZ<span class="s4">.ar(</span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>4,</p>
-<p class="p5"><span class="Apple-converted-space">  </span><span class="s3">SinOsc</span>.ar( { <span class="s3">|i|</span> <span class="s3">LFNoise2</span>.kr( rrand(10, 20), 200, i + 3 * 100) } ! 10),<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>spread,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>level,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>width,</p>
-<p class="p5"><span class="Apple-converted-space">  </span>center</p>
-<p class="p5"><span class="Apple-converted-space"> </span>);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">x.set(<span class="s5">\spread</span>, 1, <span class="Apple-converted-space">  </span><span class="s5">\center</span>, 0);<span class="Apple-converted-space">  </span><span class="s6">// full n chans</span></p>
-<p class="p5">x.set(<span class="s5">\spread</span>, 0.5, <span class="s5">\center</span>, -0.25); <span class="s6">// less wide</span></p>
-<p class="p7"><span class="s4">x.set(</span><span class="s5">\spread</span><span class="s4">, 0, </span><span class="s5">\center</span><span class="s4">, 0);<span class="Apple-converted-space">  </span></span>// mono center (depends on orientation, see PanAz)</p>
-<p class="p5">x.set(<span class="s5">\spread</span>, 0, <span class="s5">\center</span>, -0.25); <span class="s6">//<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s4">x.set(</span><span class="s5">\spread</span><span class="s4">, 0.0, </span><span class="s5">\center</span><span class="s4">, 0.5); </span>// mono, but rotate 1 toward the higher channels</p>
-<p class="p7"><span class="s4">x.set(</span><span class="s5">\spread</span><span class="s4">, 0.5, </span><span class="s5">\center</span><span class="s4">, 0.5); </span>// spread over the higher channels</p>
-<p class="p5">x.set(<span class="s5">\spread</span>, 0, <span class="Apple-converted-space">  </span><span class="s5">\center</span>, -0.25); <span class="s6">// all first</span></p>
-<p class="p5">x.set(<span class="s5">\spread</span>, 1, <span class="Apple-converted-space">  </span><span class="s5">\center</span>, 0);<span class="Apple-converted-space">  </span><span class="s6">// full n chans</span></p>
-<p class="p2"><br></p>
-<p class="p5">x.free;</p>
-<p class="p2"><br></p>
-<p class="p7"><span class="s4"><span class="Apple-converted-space"> </span></span>// the same example written with arFill:</p>
-<p class="p5">(</p>
-<p class="p5">x = { <span class="s3">arg</span> spread=1, level=0.5, width=2, center=0.0;</p>
-<p class="p5"><span class="Apple-converted-space"> </span><span class="s3">SplayZ</span>.arFill(</p>
-<p class="p5"><span class="Apple-converted-space">  </span>4,</p>
-<p class="p5"><span class="Apple-converted-space">  </span>10,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>{ <span class="s3">|i|</span> <span class="s3">SinOsc</span>.ar( <span class="s3">LFNoise2</span>.kr( rrand(10, 20), 200, i + 3 * 100) ) },<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>spread,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>level,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space">  </span>width,</p>
-<p class="p5"><span class="Apple-converted-space">  </span>center</p>
-<p class="p5"><span class="Apple-converted-space"> </span>);</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-converted-space"> </span>// or with mouse control</p>
-<p class="p5">(</p>
-<p class="p5">x = { var src;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-converted-space"> </span>src = <span class="s3">SinOsc</span>.ar( { |i| <span class="s3">LFNoise2</span>.kr( rrand(10, 20), 200, i * 100 + 400) } ! 10);</p>
-<p class="p5"><span class="Apple-converted-space"> </span><span class="s3">SplayZ</span>.ar(4, src, MouseY.kr(1, 0), 0.2, center: MouseX.kr(-1, 1));</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Panners/XFade2.html b/Help/UGens/Multichannel/Panners/XFade2.html
deleted file mode 100644
index 895b543..0000000
--- a/Help/UGens/Multichannel/Panners/XFade2.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-  <meta http-equiv="Content-Style-Type" content="text/css">
-  <title>SuperCollider Help - XFade2</title>
-
-
-  <meta name="Generator" content="Cocoa HTML Writer">
-
-  <meta name="CocoaVersion" content="824.42">
-
-  <style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-  </style>
-</head>
-
-
-<body>
-
-<p class="p1"><b>XFade2<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>equal power two
-channel cross fade</b></p>
-
-<p class="p2"><br>
-
-</p>
-
-<p class="p3"><b>XFade2.ar(inA, inB, pan, level)</b></p>
-
-<p class="p4"><br>
-
-</p>
-
-<p class="p3"><b>pan </b>-<span class="Apple-converted-space">  </span>-1 ..
-1</p>
-
-<p class="p5"><br>
-
-</p>
-
-<p class="p6">(</p>
-
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"help-XFade2"<span class="s2">,
-{</span></p>
-
-<p class="p6"><span class="Apple-tab-span"> </span><span class="s1">Out</span>.ar(0, <span class="s1">XFade2</span>.ar(
-<span class="s1">Saw</span>.ar, <span class="s1">SinOsc</span>.ar
-, <span class="s1">LFTri</span>.kr(0.1), 0.1 ));</p>
-
-<p class="p6">}).play</p>
-
-<p class="p6">)</p>
-
-</body>
-</html>
diff --git a/Help/UGens/Multichannel/Select.html b/Help/UGens/Multichannel/Select.html
deleted file mode 100644
index c30b316..0000000
--- a/Help/UGens/Multichannel/Select.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Select<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>select one output from many sources</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p3"><br></p>
-<p class="p1">The output is selected from an array of inputs.</p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>Select.ar(which, array)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>Select.kr(which, array)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// examples<span class="Apple-converted-space"> </span></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> a, cycle;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = [</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pulse</span>.ar</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p5"><span class="Apple-tab-span">	</span>cycle = a.size<span class="Apple-converted-space">  </span>* 0.5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Select</span>.ar(<span class="s2">LFSaw</span>.kr(1.0,0.0,cycle,cycle),a) * 0.2</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">Note: all the ugens are continously running. This may not be the most efficient way if each input is<span class="Apple-converted-space">  </span>cpu-expensive.</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><br></p>
-<p class="p4">// used as a sequencer<span class="Apple-converted-space"> </span></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>var</span> a, cycle;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(32, { rrand(30,80) }).midicps;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a.postln;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>cycle = a.size<span class="Apple-converted-space">  </span>* 0.5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Saw</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Select</span>.kr(<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFSaw</span>.kr(1.0, 0.0, cycle, cycle),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2<span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5">}.play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Note that the array is fixed at the time of writing the SynthDef, and the whole array is embedded in the SynthDef file itself.<span class="Apple-converted-space">  </span>For small arrays this is more efficient than reading from a buffer.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/BrownNoise.html b/Help/UGens/Noise/BrownNoise.html
deleted file mode 100644
index fede53d..0000000
--- a/Help/UGens/Noise/BrownNoise.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {text-decoration: underline ; color: #0000ff}
-span.s5 {color: #0000bf}
-span.s6 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BrownNoise<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>browninan motion</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>BrownNoise.ar(mul, add)</b></p>
-<p class="p1"><b>BrownNoise.kr(mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Generates noise whose spectrum falls off in power by 6 dB per octave.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">see also: <a href="WhiteNoise.html"><span class="s3">WhiteNoise</span></a>, <a href="PinkNoise.html"><span class="s4">PinkNoise</span></a><a href="BrownNoise.html"><span class="s3">,</span></a> <a href="../../Other Topics/Randomness.html"><span class="s3">Randomness</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">// compare</p>
-<p class="p5">{ <span class="s5">BrownNoise</span>.ar(0.5) }.play;</p>
-<p class="p5">{ <span class="s5">WhiteNoise</span>.ar(0.5) }.play;</p>
-<p class="p6"><br></p>
-<p class="p7">// brownian noise as a frequency modulator</p>
-<p class="p8">{ <span class="s6">SinOsc</span>.ar(<span class="s5">BrownNoise</span>.ar(100, 200)) * 0.1 }.play;</p>
-<p class="p9"><br></p>
-<p class="p7">// filtered brown noise</p>
-<p class="p8">{ <span class="s6">BPF</span>.ar(<span class="s5">BrownNoise</span>.ar(0.1.dup), MouseX.kr(40, 17000, 1), 0.2) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/ClipNoise.html b/Help/UGens/Noise/ClipNoise.html
deleted file mode 100644
index fd61eeb..0000000
--- a/Help/UGens/Noise/ClipNoise.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>ClipNoise</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>ClipNoise.ar(mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p4">Generates noise whose values are either -1 or 1.<span class="Apple-converted-space"> </span></p>
-<p class="p4">This produces the maximum energy for the least peak to peak amplitude.</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s1">SynthDef</span><span class="s2">(</span>"help-ClipNoise"<span class="s2">, { </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">ClipNoise</span>.ar(0.2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p1"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/Crackle.html b/Help/UGens/Noise/Crackle.html
deleted file mode 100644
index abc9f43..0000000
--- a/Help/UGens/Noise/Crackle.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Crackle<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chaotic noise function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Crackle.ar(param, mul, add)</b></p>
-<p class="p1"><b>Crackle.kr(param, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A noise generator based on a chaotic function.</p>
-<p class="p1"><b>param</b> - a parameter of the chaotic function with useful values from</p>
-<p class="p1">just below 1.0 to just above 2.0. Towards 2.0 the sound crackles.</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">{ <span class="s2">Crackle</span>.ar(1.95, 0.5) }.play;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// modulate chaos parameter</p>
-<p class="p4">{ <span class="s2">Crackle</span>.ar(<span class="s2">Line</span>.kr(1.0, 2.0, 3), 0.5, 0.5) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/Dust.html b/Help/UGens/Noise/Dust.html
deleted file mode 100644
index a651cc8..0000000
--- a/Help/UGens/Noise/Dust.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Dust<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>random impulses</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Dust.ar(density, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p4">Generates random impulses from 0 to +1.</p>
-<p class="p4"><b>density</b> - average number of impulses per second</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">"help-Dust"</span>, { <span class="s1">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Dust</span>.ar(200, 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">"help-Dust"</span>, { <span class="s1">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Dust</span>.ar(XLine.kr(20000, 2, 10), 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p1"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/Dust2.html b/Help/UGens/Noise/Dust2.html
deleted file mode 100644
index 8a6dde1..0000000
--- a/Help/UGens/Noise/Dust2.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Dust2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>random impulses</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Dust2.ar(density, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p4">Generates random impulses from -1 to +1.</p>
-<p class="p4"><b>density</b> - average number of impulses per second</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">"help-Dust2"</span>, { <span class="s1">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Dust2</span>.ar(200, 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s2">"help-Dust2"</span>, { <span class="s1">arg</span> out=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Dust2</span>.ar(XLine.kr(20000, 2, 10), 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p1"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/GrayNoise.html b/Help/UGens/Noise/GrayNoise.html
deleted file mode 100644
index 96e545c..0000000
--- a/Help/UGens/Noise/GrayNoise.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>GrayNoise</b></p>
-<p class="p1"><br></p>
-<p class="p3"><b>GrayNoise.ar(mul, add)</b></p>
-<p class="p1"><br></p>
-<p class="p3">Generates noise which results from flipping random bits in a word.</p>
-<p class="p3">This type of noise has a high RMS level relative to its peak to peak level.</p>
-<p class="p3">The spectrum is emphasized towards lower frequencies.</p>
-<p class="p1"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s1">SynthDef</span><span class="s2">(</span>"help-GrayNoise"<span class="s2">, { </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">GrayNoise</span>.ar(0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/Hasher.html b/Help/UGens/Noise/Hasher.html
deleted file mode 100644
index d570a26..0000000
--- a/Help/UGens/Noise/Hasher.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><span class="s1"><b>Hasher<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>randomized value</b></p>
-<p class="p3"><br></p>
-<p class="p2"><b>Hasher.ar(in, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p2">Returns a unique output value from zero to one for each input value according to a hash function. The same input value will always produce the same output value. The input need not be from zero to one.</p>
-<p class="p2"><b>in</b> - input signal</p>
-<p class="p1"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s2">Hasher</span>.ar(<span class="s2">Line</span>.ar(0,1,1), 0.2) }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Hasher</span>.kr(<span class="s2">MouseX</span>.kr(0,10).round(1), 300, 500)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Hasher</span>.kr(<span class="s2">MouseX</span>.kr(0,10).round(1) + 0.0001, 300, 500)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Hasher</span>.kr(<span class="s2">MouseX</span>.kr(0,10), 300, 500)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/LFClipNoise.html b/Help/UGens/Noise/LFClipNoise.html
deleted file mode 100644
index 2af83ff..0000000
--- a/Help/UGens/Noise/LFClipNoise.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>LFClipNoise<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>clipped noise</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>LFClipNoise.ar(freq, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p4">Randomly generates the values -1 or +1 at a rate given by the nearest integer division</p>
-<p class="p4">of the sample rate by the freq argument. It is probably pretty hard on your speakers!</p>
-<p class="p4"><b>freq</b> - approximate rate at which to generate random values.</p>
-<p class="p1"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s1">SynthDef</span><span class="s2">(</span>"help-LFClipNoise"<span class="s2">, { </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFClipNoise</span>.ar(1000, 0.25)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">//modulate frequency</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s1">SynthDef</span><span class="s2">(</span>"help-LFClipNoise"<span class="s2">, { </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFClipNoise</span>.ar(XLine.kr(1000, 10000, 10), 0.25)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">//use as frequency control</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s1">SynthDef</span><span class="s2">(</span>"help-LFClipNoise"<span class="s2">, { </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>SinOsc.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFClipNoise</span>.ar(4, 200, 600),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/LFDClipNoise.html b/Help/UGens/Noise/LFDClipNoise.html
deleted file mode 100644
index 4a174f0..0000000
--- a/Help/UGens/Noise/LFDClipNoise.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>LFDClipNoise<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dynamic clipped noise</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>LFClipNoise.ar(freq, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p4">Like <b>LFClipNoise</b>, it generates the values -1 or +1 at a rate given<span class="Apple-converted-space"> </span></p>
-<p class="p4">by the <b>freq</b> argument,<span class="Apple-converted-space">  </span>with two differences:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4">-no time quantization<span class="Apple-converted-space"> </span></p>
-<p class="p4">-fast recovery from low freq values.</p>
-<p class="p3"><br></p>
-<p class="p4">(LFClipNoise, as well as LFNoise0,1,2 quantize to the nearest integer division<span class="Apple-converted-space"> </span></p>
-<p class="p4">of the samplerate, and they poll the freq argument only when scheduled;</p>
-<p class="p4">thus they often seem to hang when freqs get very low).</p>
-<p class="p3"><br></p>
-<p class="p4">If you don't need very high or very low freqs, or use fixed freqs,<span class="Apple-converted-space"> </span></p>
-<p class="p4">LFNoise0 is more efficient.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>freq</b> - rate at which to generate random values.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// try wiggling the mouse quickly;</p>
-<p class="p5">// LFNoise frequently seems stuck, LFDNoise changes smoothly.</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s1">LFClipNoise</span>.ar(<span class="s1">MouseX</span>.kr(0.1, 1000, 1), 0.1)<span class="Apple-converted-space">  </span>}.play</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s1">LFDClipNoise</span>.ar(<span class="s1">MouseX</span>.kr(0.1, 1000, 1), 0.1)<span class="Apple-converted-space">  </span>}.play</p>
-<p class="p3"><br></p>
-<p class="p5">// silent for 2 secs before going up in freq</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s1">LFClipNoise</span>.ar(<span class="s1">XLine</span>.kr(0.5, 10000, 3), 0.1) }.scope;</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s1">LFDClipNoise</span>.ar(<span class="s1">XLine</span>.kr(0.5, 10000, 3), 0.1) }.scope;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">// LFNoise quantizes time steps at high freqs, LFDNoise does not:</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s1">LFClipNoise</span>.ar(<span class="s1">XLine</span>.kr(1000, 20000, 10), 0.1) }.scope;</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s1">LFDClipNoise</span>.ar(<span class="s1">XLine</span>.kr(1000, 20000, 10), 0.1) }.scope;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/LFDNoise0.html b/Help/UGens/Noise/LFDNoise0.html
deleted file mode 100644
index 7f6dc6e..0000000
--- a/Help/UGens/Noise/LFDNoise0.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFDNoise0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>dynamic step noise</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFDNoise0.ar(freq, mul, add)</b></p>
-<p class="p1"><b>LFDNoise0.kr(freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Like <b>LFNoise0</b>, it generates random values at a rate given<span class="Apple-converted-space"> </span></p>
-<p class="p1">by the <b>freq</b> argument,<span class="Apple-converted-space">  </span>with two differences:</p>
-<p class="p2"><br></p>
-<p class="p1">-no time quantization<span class="Apple-converted-space"> </span></p>
-<p class="p1">-fast recovery from low freq values.</p>
-<p class="p2"><br></p>
-<p class="p1">(LFNoise0,1,2 quantize to the nearest integer division of the samplerate,</p>
-<p class="p1">and they poll the freq argument only when scheduled, and thus seem<span class="Apple-converted-space"> </span></p>
-<p class="p1">to hang when freqs get very low).</p>
-<p class="p2"><br></p>
-<p class="p1">If you don't need very high or very low freqs, or use fixed freqs,<span class="Apple-converted-space"> </span></p>
-<p class="p1">LFNoise0 is more efficient.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>freq</b> - rate at which to generate random values.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">see also: <a href="LFNoise0.html">LFNoise0</a>, <a href="LFDNoise1.html">LFDNoise1</a>, <a href="LFDNoise3.html">LFDNoise3</a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// try wiggling mouse quickly;</p>
-<p class="p4">// LFNoise frequently seems stuck, LFDNoise changes smoothly.</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFNoise0</span>.ar(<span class="s3">MouseX</span>.kr(0.1, 1000, 1), 0.1)<span class="Apple-converted-space">  </span>}.play</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFDNoise0</span>.ar(<span class="s3">MouseX</span>.kr(0.1, 1000, 1), 0.1)<span class="Apple-converted-space">  </span>}.play</p>
-<p class="p2"><br></p>
-<p class="p4">// silent for 2 secs before going up in freq</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFNoise0</span>.ar(<span class="s3">XLine</span>.kr(0.5, 10000, 3), 0.1) }.scope;</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFDNoise0</span>.ar(<span class="s3">XLine</span>.kr(0.5, 10000, 3), 0.1) }.scope;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">// LFNoise quantizes time steps at high freqs, LFDNoise does not:</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFNoise0</span>.ar(<span class="s3">XLine</span>.kr(1000, 20000, 10), 0.1) }.scope;</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFDNoise0</span>.ar(<span class="s3">XLine</span>.kr(1000, 20000, 10), 0.1) }.scope;</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFNoise2</span>.ar(1000, 0.25) }.play;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/LFDNoise1.html b/Help/UGens/Noise/LFDNoise1.html
deleted file mode 100644
index 7bbd7da..0000000
--- a/Help/UGens/Noise/LFDNoise1.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFDNoise1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>dynamic ramp noise</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFDNoise1.ar(freq, mul, add)</b></p>
-<p class="p1"><b>LFDNoise1.kr(freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Like <b>LFNoise1</b>, it generates linearly interpolated random values<span class="Apple-converted-space"> </span></p>
-<p class="p1">at a rate given by the <b>freq</b> argument, with two differences:</p>
-<p class="p2"><br></p>
-<p class="p1">-no time quantization<span class="Apple-converted-space"> </span></p>
-<p class="p1">-fast recovery from low freq values.</p>
-<p class="p2"><br></p>
-<p class="p1">(LFNoise0,1,2 quantize to the nearest integer division of the samplerate,</p>
-<p class="p1">and they poll the freq argument only when scheduled, and thus seem<span class="Apple-converted-space"> </span></p>
-<p class="p1">to hang when freqs get very low).</p>
-<p class="p2"><br></p>
-<p class="p1">If you don't need very high or very low freqs, or use fixed freqs,<span class="Apple-converted-space"> </span></p>
-<p class="p1">LFNoise1 is more efficient.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>freq</b> - rate at which to generate random values.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">see also: <a href="LFDNoise0.html">LFDNoise0</a>, <a href="LFNoise1.html">LFNoise1</a>, <a href="LFDNoise3.html">LFDNoise3</a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// try wiggling mouse quickly;</p>
-<p class="p4">// LFNoise frequently seems stuck, LFDNoise changes smoothly.</p>
-<p class="p5"><span class="Apple-converted-space"> </span></p>
-<p class="p6">{<span class="Apple-converted-space">  </span><span class="s3">SinOsc</span>.ar(<span class="s3">LFNoise1</span>.ar(<span class="s3">MouseX</span>.kr(0.1, 1000, 1), 200, 500), 0, 0.2)<span class="Apple-converted-space">  </span>}.play</p>
-<p class="p7"><br></p>
-<p class="p6">{<span class="Apple-converted-space">  </span><span class="s3">SinOsc</span>.ar(<span class="s3">LFDNoise1</span>.ar(<span class="s3">MouseX</span>.kr(0.1, 1000, 1), 200, 500), 0, 0.2)<span class="Apple-converted-space">  </span>}.play</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">// LFNoise quantizes time steps at high freqs, LFDNoise does not:</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s3">LFNoise1</span>.ar(<span class="s3">XLine</span>.kr(2000, 20000, 8), 0.1) }.scope;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s3">LFDNoise1</span>.ar(<span class="s3">XLine</span>.kr(2000, 20000, 8), 0.1) }.scope;</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/LFDNoise3.html b/Help/UGens/Noise/LFDNoise3.html
deleted file mode 100644
index aa1f321..0000000
--- a/Help/UGens/Noise/LFDNoise3.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFDNoise3<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>dynamic cubic noise</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFDNoise3.ar(freq, mul, add)</b></p>
-<p class="p1"><b>LFDNoise3.kr(freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Similar to <b>LFNoise2</b>, it generates polynomially interpolated random values<span class="Apple-converted-space"> </span></p>
-<p class="p1">at a rate given by the <b>freq</b> argument, with 3 differences:</p>
-<p class="p2"><br></p>
-<p class="p1">-no time quantization<span class="Apple-converted-space"> </span></p>
-<p class="p1">-fast recovery from low freq values</p>
-<p class="p1">-cubic instead of quadratic interpolation</p>
-<p class="p2"><br></p>
-<p class="p1">(LFNoise0,1,2 quantize to the nearest integer division of the samplerate,</p>
-<p class="p1">and they poll the freq argument only when scheduled, and thus seem<span class="Apple-converted-space"> </span></p>
-<p class="p1">to hang when freqs get very low).</p>
-<p class="p1">If you don't need very high or very low freqs, or use fixed freqs,<span class="Apple-converted-space"> </span></p>
-<p class="p1">LFNoise2 is more efficient.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>freq</b> - rate at which to generate random values.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">see also: <a href="LFDNoise0.html">LFDNoise0</a>, <a href="LFDNoise1.html">LFDNoise1</a>, <a href="LFNoise2.html">LFNoise2</a></span></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// try wiggling mouse quickly:<span class="Apple-converted-space"> </span></p>
-<p class="p5">// LFNoise2 overshoots when going from high to low freqs, LFDNoise changes smoothly.</p>
-<p class="p6"><br></p>
-<p class="p7">{<span class="Apple-converted-space">  </span><span class="s3">SinOsc</span>.ar(<span class="s3">LFNoise2</span>.ar(<span class="s3">MouseX</span>.kr(0.1, 1000, 1), 200, 500), 0, 0.2)<span class="Apple-converted-space">  </span>}.play</p>
-<p class="p6"><br></p>
-<p class="p7">{<span class="Apple-converted-space">  </span><span class="s3">SinOsc</span>.ar(<span class="s3">LFDNoise3</span>.ar(<span class="s3">MouseX</span>.kr(0.1, 1000, 1), 200, 500), 0, 0.2)<span class="Apple-converted-space">  </span>}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">// LFNoise quantizes time steps at high freqs, LFDNoise does not:</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s3">LFNoise2</span>.ar(<span class="s3">XLine</span>.kr(2000, 20000, 8), 0.1) }.scope;</p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s3">LFDNoise3</span>.ar(<span class="s3">XLine</span>.kr(2000, 20000, 8), 0.1) }.scope;</p>
-<p class="p6"><br></p>
-<p class="p5">// use as frequency control</p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFDNoise3</span>.ar(4, 400, 450),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/LFNoise0.html b/Help/UGens/Noise/LFNoise0.html
deleted file mode 100644
index 9ff3384..0000000
--- a/Help/UGens/Noise/LFNoise0.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LFNoise0<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>step noise</b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LFNoise0.ar(freq, mul, add)</b></p>
-<p class="p3"><b>LFNoise0.kr(freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Generates random values at a rate.</p>
-<p class="p3"><b>freq</b> - approximate rate at which to generate random values.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="LFDNoise0.html">LFDNoise0</a>, <a href="LFNoise1.html">LFNoise1</a>, <a href="LFNoise2.html">LFNoise2</a></span></p>
-<p class="p5"><br></p>
-<p class="p6"><br></p>
-<p class="p7">{ <span class="s3">LFNoise0</span>.ar(1000, 0.25) }.play;</p>
-<p class="p8"><br></p>
-<p class="p9">// modulate frequency</p>
-<p class="p8"><br></p>
-<p class="p7">{ <span class="s3">LFNoise0</span>.ar(<span class="s3">XLine</span>.kr(1000, 10000, 10), 0.25) }.play;</p>
-<p class="p8"><br></p>
-<p class="p9">// as frequency modulator</p>
-<p class="p7">(</p>
-<p class="p7">{ <span class="s3">SinOsc</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFNoise0</span>.ar(4, 400, 450),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p9">// freq is the rate of starting points</p>
-<p class="p10">{ <span class="s3">var</span> freq = 1000; [<span class="s3">LFNoise0</span>.ar(freq), <span class="s3">Impulse</span>.ar(freq)] }.plot</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/LFNoise1.html b/Help/UGens/Noise/LFNoise1.html
deleted file mode 100644
index b50d223..0000000
--- a/Help/UGens/Noise/LFNoise1.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LFNoise1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>ramp noise</b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LFNoise1.ar(freq, mul, add)</b></p>
-<p class="p3"><b>LFNoise1.kr(freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Generates linearly interpolated random values at a rate.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>freq</b> - approximate rate at which to generate random values.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="LFDNoise1.html">LFDNoise1</a></span>,<span class="s2"> <a href="LFNoise0.html">LFNoise0</a></span>,<span class="s2"> <a href="LFNoise2.html">LFNoise2</a></span></p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">LFNoise1</span>.ar(1000, 0.25) }.play;</p>
-<p class="p7"><br></p>
-<p class="p8">// modulate frequency</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s3">LFNoise1</span>.ar(<span class="s3">XLine</span>.kr(1000, 10000, 10), 0.25) }.play;</p>
-<p class="p7"><br></p>
-<p class="p8">// as frequency modulator</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFNoise1</span>.ar(4, 400, 450),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p8">// freq is the rate of starting points</p>
-<p class="p9">{ <span class="s3">var</span> freq = 1000; [<span class="s3">LFNoise1</span>.ar(freq), <span class="s3">Impulse</span>.ar(freq)] }.plot</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/LFNoise2.html b/Help/UGens/Noise/LFNoise2.html
deleted file mode 100644
index 88e6fd1..0000000
--- a/Help/UGens/Noise/LFNoise2.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFNoise2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>quadratic noise</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFNoise2.ar(freq, mul, add)</b></p>
-<p class="p1"><b>LFNoise2.kr(freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Generates quadratically interpolated random values at a rate.</p>
-<p class="p1"><b>freq</b> - approximate rate at which to generate random values.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">see also: <a href="LFDNoise3.html">LFDNoise3</a>, <a href="LFNoise0.html">LFNoise0</a>, <a href="LFNoise1.html">LFNoise1</a></span></p>
-<p class="p2"><br></p>
-<p class="p1">Note: quadratic interpolation means that the noise values can occasionally extend beyond the normal range of +-1, if the <b>freq</b> varies in certain ways. If this is undesirable then you might like to <a href="../../BinaryOps/clip2.html">clip2</a> the values, or use a linearly-interpolating unit instead.</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">LFNoise2</span>.ar(1000, 0.25) }.play;</p>
-<p class="p5"><br></p>
-<p class="p6">// modulate frequency</p>
-<p class="p5"><br></p>
-<p class="p4">{ <span class="s3">LFNoise2</span>.ar(<span class="s3">XLine</span>.kr(1000, 10000, 10), 0.25) }.play;</p>
-<p class="p5"><br></p>
-<p class="p6">// as frequency modulator</p>
-<p class="p4">(</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFNoise2</span>.ar(4, 400, 450),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p6">// freq is the rate of interpolation points</p>
-<p class="p4">{ <span class="s3">var</span> freq = 1000; [<span class="s3">LFNoise2</span>.ar(freq), <span class="s3">Impulse</span>.ar(freq)] }.plot</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/Logistic.html b/Help/UGens/Noise/Logistic.html
deleted file mode 100644
index b5f82fd..0000000
--- a/Help/UGens/Noise/Logistic.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Logistic<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>chaotic noise function</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Logistic.ar(chaosParam, freq, init, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A noise generator based on the logistic map:</p>
-<p class="p2"><br></p>
-<p class="p1">y = chaosParam * y * (1.0 - y)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>chaosParam</b> - a parameter of the chaotic function with useful values from 0.0 to 4.0. Chaos occurs from 3.57 up. Don't use values outside this range if you don't want the UGen to blow up.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>freq</b> - Frequency of calculation; if over the sampling rate, this is clamped to the sampling rate<span class="Apple-converted-space"> </span></p>
-<p class="p1"><b>init</b> - Initial value of y in the equation above</p>
-<p class="p2"><br></p>
-<p class="p1">y will stay in the range of 0.0 to 1.0 for normal values of the chaosParam. This leads to a DC offset, and may cause a pop when you stop the Synth. For output you might want to combine this UGen with a LeakDC or rescale around 0.0 via mul and add: see example below.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// default values</p>
-<p class="p6">{ <span class="s2">Logistic</span>.ar }.play</p>
-<p class="p4"><br></p>
-<p class="p5">// onset of chaos</p>
-<p class="p6">{ <span class="s2">Logistic</span>.ar(<span class="s2">Line</span>.kr(3.55, 3.6, 5), 1000) }.play</p>
-<p class="p4"><br></p>
-<p class="p5">// explore via Mouse</p>
-<p class="p6">{ <span class="s2">Logistic</span>.ar(<span class="s2">MouseX</span>.kr(3, 3.99), <span class="s2">MouseY</span>.kr(10, 10000, <span class="s3">'exponential'</span>), 0.25, 0.5) }.play</p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/MantissaMask.html b/Help/UGens/Noise/MantissaMask.html
deleted file mode 100644
index 5ac758d..0000000
--- a/Help/UGens/Noise/MantissaMask.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-span.s1 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>MantissaMask<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reduce precision</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>MantissaMask.ar(in, bits, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p4">Masks off bits in the mantissa of the floating point sample value. This introduces a quantization noise, but is less severe than linearly quantizing the signal.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>in</b> - input signal</p>
-<p class="p4"><b>bits</b> - the number of mantissa bits to preserve. a number from 0 to 23.</p>
-<p class="p1"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// preserve only 3 bits of mantissa.</p>
-<p class="p6">{ <span class="s1">MantissaMask</span>.ar(<span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(0.2,0,400,500), 0, 0.4), 3) }.play</p>
-<p class="p7"><br></p>
-<p class="p5">// the original</p>
-<p class="p6">{ <span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(0.2,0,400,500), 0, 0.4) }.play</p>
-<p class="p7"><br></p>
-<p class="p5">// the difference.</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> in;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(0.2,0,400,500), 0, 0.4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, in - <span class="s1">MantissaMask</span>.ar(in, 3));</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// preserve 7 bits of mantissa.<span class="Apple-converted-space"> </span></p>
-<p class="p5">// This makes the lower 16 bits of the floating point number become zero.</p>
-<p class="p6">{ <span class="s1">MantissaMask</span>.ar(<span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(0.2,0,400,500), 0, 0.4), 7) }.play</p>
-<p class="p7"><br></p>
-<p class="p5">// the original</p>
-<p class="p6">{ <span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(0.2,0,400,500), 0, 0.4) }.play</p>
-<p class="p7"><br></p>
-<p class="p5">// the difference.</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> in;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s1">SinOsc</span>.ar(<span class="s1">SinOsc</span>.kr(0.2,0,400,500), 0, 0.4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, in - <span class="s1">MantissaMask</span>.ar(in, 7));</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p3"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/PinkNoise.html b/Help/UGens/Noise/PinkNoise.html
deleted file mode 100644
index b915831..0000000
--- a/Help/UGens/Noise/PinkNoise.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 12.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline}
-span.s4 {color: #001bb9}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PinkNoise<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="s1"><b>1/f noise</b></span><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PinkNoise.ar(mul, add)</b></p>
-<p class="p3"><b>PinkNoise.kr(mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">see also: <a href="WhiteNoise.html"><span class="s3">WhiteNoise</span></a>, <a href="BrownNoise.html"><span class="s3">BrownNoise</span></a>, <a href="../../Other Topics/Randomness.html"><span class="s3">Randomness</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3">Generates noise whose spectrum falls off in power by 3 dB per octave.</p>
-<p class="p3">This gives equal power over the span of each octave.</p>
-<p class="p3">This version gives 8 octaves of pink noise.</p>
-<p class="p5"><br></p>
-<p class="p6">// compare:</p>
-<p class="p7">{ <span class="s4">PinkNoise</span>.ar(0.3) }.play;</p>
-<p class="p7">{ <span class="s4">WhiteNoise</span>.ar(0.3) }.play;</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">// pink noise as a frequency modulator</p>
-<p class="p7">{ <span class="s4">SinOsc</span>.ar(<span class="s4">PinkNoise</span>.ar(100, 200)) * 0.1 }.play;</p>
-<p class="p8"><br></p>
-<p class="p6">// filtered pink noise</p>
-<p class="p7">{ <span class="s4">BPF</span>.ar(<span class="s5">PinkNoise</span>.ar(0.1.dup), MouseX.kr(40, 17000, 1), 0.2) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/PinkerNoise.html b/Help/UGens/Noise/PinkerNoise.html
deleted file mode 100644
index b39b0d9..0000000
--- a/Help/UGens/Noise/PinkerNoise.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 12.0px Monaco; color: #000000}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>PinkerNoise</b></p>
-<p class="p1"><br></p>
-<p class="p3"><b>PinkerNoise.ar(mul, add)</b></p>
-<p class="p1"><br></p>
-<p class="p3">Generates noise whose spectrum falls off in power by 3 dB per octave.</p>
-<p class="p3">This gives equal power over the span of each octave.</p>
-<p class="p3">This version gives 16 octaves of pink noise, whereas PinkNoise only gives 8 octaves.</p>
-<p class="p1"><br></p>
-<p class="p4"><span class="s1">//</span>not installed</p>
-<p class="p5">(</p>
-<p class="p6">SynthDef<span class="s2">(</span><span class="s3">"help-</span>PinkerNoise<span class="s3">"</span><span class="s2">, { </span>arg<span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>PinkerNoise<span class="s2">.ar(0.5)</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/Rossler.html b/Help/UGens/Noise/Rossler.html
deleted file mode 100644
index 78b11a3..0000000
--- a/Help/UGens/Noise/Rossler.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>Rossler<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chaotic function</b></p>
-<p class="p1"><br></p>
-<p class="p3"><b>Rossler.ar(chaosParam, dt, mul, add)</b></p>
-<p class="p1"><br></p>
-<p class="p3">The Rossler attractor is a well known chaotic function.</p>
-<p class="p3">The <b>chaosParam</b> can be varied from 1.0 to 25.0 with a <b>dt</b> of 0.04.</p>
-<p class="p3">Valid ranges for <b>chaosParam </b>vary depending on <b>dt</b>.</p>
-<p class="p3"><b>chaosParam</b> - a Float.</p>
-<p class="p3"><b>dt</b> - time step parameter. Default is 0.04.</p>
-<p class="p1"><br></p>
-<p class="p4">//not defined yet!</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"help-Rossler"<span class="s2">, { </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Rossler</span>.ar(4, 0.08)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s1">a = SynthDef</span>(<span class="s3">"help-Rossler"</span>, { <span class="s1">arg</span> out=0, param=4, dt=0.04;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Rossler</span>.ar(param, dt)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">a.set(<span class="s4">\param</span>, 2.5);</p>
-<p class="p6">a.set(<span class="s4">\dt</span>, 0.02);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Noise/WhiteNoise.html b/Help/UGens/Noise/WhiteNoise.html
deleted file mode 100644
index 6b64120..0000000
--- a/Help/UGens/Noise/WhiteNoise.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>WhiteNoise<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>equal power noise</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>WhiteNoise.ar(mul, add)</b></p>
-<p class="p1"><b>WhiteNoise.kr(mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Generates noise whose spectrum has equal power at all frequencies.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s2">see also: <a href="PinkNoise.html"><span class="s3">PinkNoise</span></a></span><span class="s4">, <a href="BrownNoise.html">BrownNoise</a></span><span class="s2">, <a href="../../Other Topics/Randomness.html"><span class="s4">Randomness</span></a></span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">// compare</p>
-<p class="p7">{ <span class="s5">WhiteNoise</span>.ar(0.5) }.play;</p>
-<p class="p7">{ <span class="s5">PinkNoise</span>.ar(0.5) }.play;</p>
-<p class="p4"><br></p>
-<p class="p8">// white noise as a frequency modulator</p>
-<p class="p7">{ <span class="s6">SinOsc</span>.ar(<span class="s5">WhiteNoise</span>.ar(100, 200)) * 0.1 }.play;</p>
-<p class="p9"><br></p>
-<p class="p8">// filtered white noise</p>
-<p class="p7">{ <span class="s6">BPF</span>.ar(<span class="s5">WhiteNoise</span>.ar(0.1.dup), MouseX.kr(40, 17000, 1), 0.2) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Blip.html b/Help/UGens/Oscillators/Blip.html
deleted file mode 100644
index 775af06..0000000
--- a/Help/UGens/Oscillators/Blip.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a32011}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0012b9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Blip<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>band limited impulse oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Blip.ar(freq, numharm, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Band Limited ImPulse generator. All harmonics have equal amplitude. This is the equivalent of 'buzz' in MusicN languages.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1">WARNING: This waveform in its raw form could be damaging to your ears at high amplitudes or for long periods.</p>
-<p class="p3"><br></p>
-<p class="p1">Implementation notes:<span class="Apple-converted-space"> </span></p>
-<p class="p1">It is improved from other implementations in that it will crossfade in a control period when the number of<span class="Apple-converted-space">  </span>harmonics changes, so that there are no audible pops. It also eliminates the divide in the formula by using a 1/sin table (with special precautions taken for 1/0).<span class="Apple-converted-space">  </span>The lookup tables are linearly interpolated for better quality.</p>
-<p class="p3"><br></p>
-<p class="p1">(Synth-O-Matic (1990) had an impulse generator called blip, hence that name here rather than 'buzz').</p>
-<p class="p3"><br></p>
-<p class="p1"><b>freq</b> - Frequency in Hertz (control rate)</p>
-<p class="p1"><b>numharm</b> - Number of harmonics. This may be lowered internally if it would cause aliasing.</p>
-<p class="p3"><br></p>
-<p class="p4">// modulate frequency</p>
-<p class="p5">{ <span class="s2">Blip</span>.ar(<span class="s2">XLine</span>.kr(20000,200,6),100,0.2) }.play;</p>
-<p class="p6"><br></p>
-<p class="p4">// modulate numharmonics</p>
-<p class="p5">{ <span class="s2">Blip</span>.ar(200,<span class="s2">Line</span>.kr(1,100,20),0.2) }.play;</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/BufRd.html b/Help/UGens/Oscillators/BufRd.html
deleted file mode 100644
index 77021bd..0000000
--- a/Help/UGens/Oscillators/BufRd.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0019b7}
-span.s4 {color: #000000}
-span.s5 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufRd<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>buffer reading oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">read the content of a buffer at an index.<span class="Apple-converted-space"> </span></p>
-<p class="p3">see also <a href="BufWr.html"><span class="s2">BufWr</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>BufRd.ar(numChannels, bufnum, phase, loop, interpolation)</b></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>numChannels</b> <span class="Apple-tab-span">	</span>number of channels that the buffer will be.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this must be a fixed integer. The architecture of the SynthDef</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cannot change after it is compiled.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>warning: if you supply a bufnum of a buffer that has a different</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numChannels then you have specified to the BufRd, it will</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fail silently.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>bufnum</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the index of the buffer to use</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>phase</b> <span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>audio</b> rate modulatable index into the buffer. <b>Warning:</b> The phase argument only offers precision for addressing 2**24 samples (about 6.3 minutes at 44100Hz).</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>loop</b><span class="Apple-converted-space">      <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>1 means true, 0 means false.<span class="Apple-converted-space">  </span>this is modulatable.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>interpolation</b><span class="Apple-converted-space">    </span>1 means no interpolation, 2 is linear, 4 is cubic interpolation</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">in comparison to <a href="../Playback and Recording/PlayBuf.html"><span class="s2">PlayBuf</span></a>:</p>
-<p class="p3"><span class="Apple-tab-span">	</span>PlayBuf plays through the buffer by itself,</p>
-<p class="p3"><span class="Apple-tab-span">	</span>BufRd only moves its read point by the phase input</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and therefore has no pitch input</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>BufRd has variable interpolation</p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">// read a whole sound into memory</p>
-<p class="p5">s = <span class="s3">Server</span>.local;</p>
-<p class="p6">// note: not *that* columbia, the first one</p>
-<p class="p5">s.waitForBoot{</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>s.sendMsg(</span>"/b_allocRead"<span class="s4">, 0, </span>"sounds/a11wlk01.wav"<span class="s4">);</span></p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p6">//use any AUDIO rate ugen as an index generator</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s3">BufRd</span>.ar(1, 0, <span class="s3">SinOsc</span>.ar(0.1) * <span class="s3">BufFrames</span>.ir(0)) }.play;</p>
-<p class="p5">{ <span class="s3">BufRd</span>.ar(1, 0, <span class="s3">LFNoise1</span>.ar(1) * <span class="s3">BufFrames</span>.ir(0)) }.play;</p>
-<p class="p5">{ <span class="s3">BufRd</span>.ar(1, 0, <span class="s3">LFNoise1</span>.ar(10) * <span class="s3">BufFrames</span>.ir(0)) }.play;</p>
-<p class="p5">{ <span class="s3">BufRd</span>.ar(1, 0, <span class="s3">LFTri</span>.ar(0.1) + <span class="s3">LFTri</span>.ar(0.23) * <span class="s3">BufFrames</span>.ir(0)) }.play;</p>
-<p class="p6">// original duration</p>
-<p class="p5">{ <span class="s3">BufRd</span>.ar(1, 0, <span class="s3">LFSaw</span>.ar(<span class="s3">BufDur</span>.ir(0).reciprocal).range(0, <span class="s3">BufFrames</span>.ir(0)) ) }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">//use a phasor index into the file</p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s3">BufRd</span>.ar(1, 0, <span class="s3">Phasor</span>.ar(0, <span class="s3">BufRateScale</span>.kr(0), 0, <span class="s3">BufFrames</span>.kr(0))) }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">//change rate and interpolation</p>
-<p class="p5">(</p>
-<p class="p5">x = { <span class="s3">arg</span> rate=1, inter=2;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BufRd</span>.ar(1, 0, <span class="s3">Phasor</span>.ar(0, <span class="s3">BufRateScale</span>.kr(0) * rate, 0, <span class="s3">BufFrames</span>.kr(0)), 1, inter)<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">x.set(<span class="s5">\rate</span>, 0.9);</p>
-<p class="p5">x.set(<span class="s5">\rate</span>, 0.6);</p>
-<p class="p5">x.set(<span class="s5">\inter</span>, 1);</p>
-<p class="p5">x.set(<span class="s5">\inter</span>, 0);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">//write into the buffer with a BufWr</p>
-<p class="p5">(</p>
-<p class="p5">y = { <span class="s3">arg</span> rate=1;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(<span class="s3">LFNoise1</span>.kr(2, 300, 400), 0, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BufWr</span>.ar(in, 0, <span class="s3">Phasor</span>.ar(0, <span class="s3">BufRateScale</span>.kr(0) * rate, 0, <span class="s3">BufFrames</span>.kr(0)));</p>
-<p class="p6"><span class="s4"><span class="Apple-tab-span">	</span>0.0 </span>//quiet</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p6">//read it with a BufRd</p>
-<p class="p5">(</p>
-<p class="p5">x = { <span class="s3">arg</span> rate=1;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BufRd</span>.ar(1, 0, <span class="s3">Phasor</span>.ar(0, <span class="s3">BufRateScale</span>.kr(0) * rate, 0, <span class="s3">BufFrames</span>.kr(0)))<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">x.set(<span class="s5">\rate</span>, 5);</p>
-<p class="p5">y.set(<span class="s5">\rate</span>, 2.0.rand);</p>
-<p class="p5">x.set(<span class="s5">\rate</span>, 2);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/BufWr.html b/Help/UGens/Oscillators/BufWr.html
deleted file mode 100644
index 05692d9..0000000
--- a/Help/UGens/Oscillators/BufWr.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0019b7}
-span.s4 {color: #606060}
-span.s5 {color: #000000}
-span.s6 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>BufWr<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>buffer writing oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">write to a buffer at an index</p>
-<p class="p3">see also <a href="BufRd.html"><span class="s2">BufRd</span></a></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>BufWr.ar(input, bufnum, phase, loop)</b></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>input</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input ugens (channelArray)<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>bufnum</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the index of the buffer to use</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>phase</b> <span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>modulatable index into the buffer (has to be audio rate). <b>Warning:</b> The phase argument only offers precision for addressing 2**24 samples (about 6.3 minutes at 44100Hz)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>loop</b><span class="Apple-converted-space">      <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>1 means true, 0 means false.<span class="Apple-converted-space">  </span>this is modulatable.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Note: </b>BufWr (in difference to BufRd) does not do multichannel expansion, because input is an array.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p6">// allocate a buffer for writing into</p>
-<p class="p5">s = <span class="s3">Server</span>.local;</p>
-<p class="p5">s.waitForBoot{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">"/b_alloc"</span>, 0, 44100 * 2);</p>
-<p class="p5">}</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p6">//write into the buffer with a BufWr</p>
-<p class="p5">(</p>
-<p class="p5">y = { <span class="s3">arg</span> rate=1;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(<span class="s3">LFNoise1</span>.kr(2, 300, 400), 0, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BufWr</span>.ar(in, 0, <span class="s3">Phasor</span>.ar(0, <span class="s3">BufRateScale</span>.kr(0) * rate, 0, <span class="s3">BufFrames</span>.kr(0)));</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>0.0 </span>//quiet</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p6">//read it with a BufRd</p>
-<p class="p5">(</p>
-<p class="p5">x = { <span class="s3">arg</span> rate=1;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BufRd</span>.ar(1, 0, <span class="s3">Phasor</span>.ar(0, <span class="s3">BufRateScale</span>.kr(0) * rate, 0, <span class="s3">BufFrames</span>.kr(0)))<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play(s);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">x.set(<span class="s6">\rate</span>, 5);</p>
-<p class="p5">y.set(<span class="s6">\rate</span>, 2.0.rand);</p>
-<p class="p5">x.set(<span class="s6">\rate</span>, 2);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/COsc.html b/Help/UGens/Oscillators/COsc.html
deleted file mode 100644
index 07fea9f..0000000
--- a/Help/UGens/Oscillators/COsc.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>COsc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>chorusing wavetable oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>COsc.ar(bufnum, freq, beats, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Chorusing wavetable lookup oscillator. Produces sum of two signals at<span class="Apple-converted-space">  </span>(freq +/- (beats / 2)). Due to summing, the peak amplitude is twice that of the wavetable.</p>
-<p class="p3"><b>bufnum</b> - the number of a buffer filled in wavetable format</p>
-<p class="p3"><b>freq</b> - frequency in Hertz</p>
-<p class="p3"><b>beats</b> - beat frequency in Hertz</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">b = <span class="s1">Buffer</span>.alloc(s, 512, 1, {<span class="s1">arg</span> buf; buf.sine1Msg(1.0/[1,2,3,4,5,6,7,8,9,10])});<span class="Apple-converted-space"> </span></p>
-<p class="p6">{ <span class="s1">COsc</span>.ar(b, 200, 0.7, 0.25) }.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/DynKlang.html b/Help/UGens/Oscillators/DynKlang.html
deleted file mode 100644
index fd91012..0000000
--- a/Help/UGens/Oscillators/DynKlang.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DynKlang</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dynamic sine oscillator bank</b></p>
-<p class="p1">add</p>
-<p class="p1"><b>DynKlang.ar(specificationsArrayRef, freqscale, freqoffset)</b></p>
-<p class="p1"><b>DynKlang.kr(specificationsArrayRef, freqscale, freqoffset)</b></p>
-<p class="p2"><br></p>
-<p class="p1">DynKlang is a bank of sine oscillators. It is less efficient than Klang, as it is basically a wrapper around SinOsc UGens in order to provide a similar interface to Klang.</p>
-<p class="p2"><br></p>
-<p class="p1">Unlike <a href="Klang.html"><span class="s2">Klang</span></a>, parameters in <b>specificationsArrayRef</b> can be changed after it has been started.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>specificationsArrayRef</b> - a Ref to an Array of three Arrays :</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>frequencies</b> - an Array of filter frequencies.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>amplitudes</b> - an Array of filter amplitudes, or nil. If nil, then amplitudes default to 1.0</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>phases</b> - an Array of initial phases, or nil. If nil, then phases default to 0.0</p>
-<p class="p1"><b>freqscale</b> - a scale factor multiplied by all frequencies at initialization time.</p>
-<p class="p1"><b>freqoffset</b> - an offset added to all frequencies at initialization time.</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// frequency modulation</p>
-<p class="p5">(</p>
-<p class="p5">play {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">DynKlang</span>.ar(`[<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[800, 1000, 1200] + <span class="s2">SinOsc</span>.kr([2, 3, 4.2], 0, [13, 24, 12]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.3, 0.3, 0.3],</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[pi,pi,pi]</p>
-<p class="p5"><span class="Apple-tab-span">	</span>]</p>
-<p class="p5">) * 0.1</p>
-<p class="p5">};</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// building new synths every 2 seconds</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5">loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span>play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">var</span> mod = <span class="s2">SinOsc</span>.kr(<span class="s2">Rand</span>(0.1, 0.9), 0, <span class="s2">Rand</span>(5, 20));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(<span class="s2">DynKlang</span>.ar(`[ <span class="s2">Array</span>.rand(12, 200.0, 2000.0), 1, mod ]), 1.0.rand)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.sine(4), 1, 0.02, doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>});</p>
-<p class="p5"><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p5">})</p>
-<p class="p5">}.fork;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">// resetting the frequencies and amplitudes after the synth has been created</p>
-<p class="p5">(</p>
-<p class="p7">SynthDef<span class="s3">(</span><span class="s4">'help-dynKlang'</span><span class="s3">, {</span>| freqs=#[220, 440, 880, 1760],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>amps=#[0.35, 0.23, 0.12, 0.05],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>phases=#[1, 1.5, 2, 2.5]|</p>
-<p class="p3"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0, <span class="s2">DynKlang</span>.ar(`[freqs, amps, phases]))</p>
-<p class="p5">}).add</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p8"><span class="s3">a = </span><span class="s2">Synth</span><span class="s3">(</span>'help-dynKlang'<span class="s3">);</span></p>
-<p class="p3"><br></p>
-<p class="p5">a.setn(<span class="s4">\freqs</span>, <span class="s2">Array</span>.rand(4, 500, 2000));</p>
-<p class="p5">a.setn(<span class="s4">\amps</span>, <span class="s2">Array</span>.rand(4, 0.01, 0.25));</p>
-<p class="p3"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/FSinOsc.html b/Help/UGens/Oscillators/FSinOsc.html
deleted file mode 100644
index bbb1dcb..0000000
--- a/Help/UGens/Oscillators/FSinOsc.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FSinOsc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>fast sine oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>FSinOsc.ar(freq, iphase,mul, add)</b></p>
-<p class="p1"><b>FSinOsc.kr(freq, iphase,mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Very fast sine wave generator (2 PowerPC instructions per output sample!) implemented using a ringing</p>
-<p class="p1">filter.<span class="Apple-converted-space">  </span>This generates a much cleaner sine wave than a table lookup oscillator and is a lot faster.</p>
-<p class="p1">However, the amplitude of the wave will vary with frequency. Generally the amplitude will go down as</p>
-<p class="p1">you raise the frequency and go up as you lower the frequency.</p>
-<p class="p1">WARNING: In the current implementation, the amplitude can blow up if the frequency is modulated<span class="Apple-converted-space"> </span></p>
-<p class="p1">by certain alternating signals.</p>
-<p class="p1"><b>freq</b> - frequency in Hertz</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s2">FSinOsc</span>.ar(800, 0.0, 0.25) }.play;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s2">FSinOsc</span>.ar(<span class="s2">XLine</span>.kr(200,4000,1),0.0, 0.25) }.play;</p>
-<p class="p6"><br></p>
-<p class="p7">// loses amplitude towards the end</p>
-<p class="p5">{ <span class="s2">FSinOsc</span>.ar(<span class="s2">FSinOsc</span>.ar(<span class="s2">XLine</span>.kr(4,401,8),0.0, 200,800),0.0, 0.25) }.play;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Formant.html b/Help/UGens/Oscillators/Formant.html
deleted file mode 100644
index 7b3e66b..0000000
--- a/Help/UGens/Oscillators/Formant.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Formant<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>formant oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Formant.ar(fundfreq, formfreq, bwfreq, mul, add)</b></p>
-<p class="p1"><b>Formant.kr(fundfreq, formfreq, bwfreq, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">Generates a set of harmonics around a formant frequency at a given fundamental frequency.</p>
-<p class="p3"><br></p>
-<p class="p1">The frequency inputs are read at control rate only, so if you use an audio rate UGen as an input, it will only be sampled at the start of each audio synthesis block.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p1"><b>fundfreq</b> - fundamental frequency in Hertz (control rate)</p>
-<p class="p1"><b>formfreq</b> - formant frequency in Hertz (control rate)</p>
-<p class="p1"><b>bwfreq</b> - pulse width frequency in Hertz. Controls the bandwidth of the formant (control rate)</p>
-<p class="p1">Widthfreq must be greater than or equal fundfreq.</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// modulate fundamental frequency, formant freq stays constant</p>
-<p class="p5">{ <span class="s2">Formant</span>.ar(<span class="s2">XLine</span>.kr(400,1000, 8), 2000, 800, 0.125) }.play</p>
-<p class="p6"><br></p>
-<p class="p4">// modulate formant frequency, fundamental freq stays constant</p>
-<p class="p5">{ <span class="s2">Formant</span>.ar(200, <span class="s2">XLine</span>.kr(400, 4000, 8), 200, 0.125) }.play</p>
-<p class="p6"><br></p>
-<p class="p4">// modulate width frequency, other freqs stay constant</p>
-<p class="p5">{ <span class="s2">Formant</span>.ar(400, 2000, <span class="s2">XLine</span>.kr(800, 8000, 8), 0.125) }.play</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Gendy1.html b/Help/UGens/Oscillators/Gendy1.html
deleted file mode 100644
index b04c9b1..0000000
--- a/Help/UGens/Oscillators/Gendy1.html
+++ /dev/null
@@ -1,231 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 22.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {text-decoration: underline}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Gendy1</b></p>
-<p class="p2"><br></p>
-<p class="p3">An implementation of the dynamic stochastic synthesis generator conceived by Iannis Xenakis and described in Formalized Music (1992, Stuyvesant, NY: Pendragon Press) chapter 9 (pp 246-254) and chapters 13 and 14 (pp 289-322). The BASIC program in the book was written by Marie-Helene Serra so I think it helpful to credit her too. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The program code has been adapted to avoid infinities in the probability distribution functions.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The distributions are hard-coded in C but there is an option to have new amplitude or time breakpoints sampled from a continuous controller input.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Technical notes- X's plan as described in chapter 13 allows the 12 segments in the period to be successively modified with each new period. Yet the period is allowed to vary as the sum of the segment durations, as figure 1 demonstrates. We can setup some memory of n (conventionally 12) points, or even simply vary sucessively a single point's ordinate and duration. There are thus various schemes available to us. In one, fix period T and only move the (ti, Ei) within the period. In another, have a memory of 12 segments but allow continuous modification of the inter point intervals and the amplitudes. In yet another, just have one point and random walk its amplitude and duration based on the probability distribution. In this implementation I allow the user to initialise a certain number of memory points which is up to them. To restrict the period to be unchanging, you must set rate variation to zero (dscale=0).</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="s1">Class Methods</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*ar(ampdist=1, durdist=1, adparam=1.0, ddparam=1.0, minfreq=20, maxfreq=1000, ampscale= 0.5, durscale=0.5, initCPs=12, knum=12, mul=1.0, add=0.0)</b></p>
-<p class="p2"><br></p>
-<p class="p3">All parameters can be modulated at control rate except for initCPs which is used only at initialisation.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ampdist</b> - Choice of probability distribution for the next perturbation of the amplitude of a control point.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The distributions are (adapted from the GENDYN program in Formalized Music):</p>
-<p class="p3">0- LINEAR</p>
-<p class="p3">1- CAUCHY</p>
-<p class="p3">2- LOGIST</p>
-<p class="p3">3- HYPERBCOS</p>
-<p class="p3">4- ARCSINE</p>
-<p class="p3">5- EXPON</p>
-<p class="p3">6- SINUS</p>
-<p class="p3">Where the sinus (Xenakis' name) is in this implementation taken as sampling from a third party oscillator. See example below.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>durdist-</b> Choice of distribution for the perturbation of the current inter control point duration.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>adparam-</b> A parameter for the shape of the amplitude probability distribution, requires values in the range 0.0001 to 1 (there are safety checks in the code so don't worry too much if you want to modulate!)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ddparam-</b> A parameter for the shape of the duration probability distribution, requires values in the range 0.0001 to 1</p>
-<p class="p2"><br></p>
-<p class="p3"><b>minfreq-</b> Minimum allowed frequency of oscillation for the Gendy1 oscillator, so gives the largest period the duration is allowed to take on.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>maxfreq-</b> Maximum allowed frequency of oscillation for the Gendy1 oscillator, so gives the smallest period the duration is allowed to take on.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ampscale-</b> Normally 0.0 to 1.0, multiplier for the distribution's delta value for amplitude. An ampscale of 1.0 allows the full range of<span class="Apple-converted-space">  </span>-1 to 1 for a change of amplitude.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>durscale-</b> Normally 0.0 to 1.0, multiplier for the distribution's delta value for duration. An ampscale of 1.0 allows the full range of<span class="Apple-converted-space">  </span>-1 to 1 for a change of duration.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>initCPs-</b> Initialise the number of control points in the memory. Xenakis specifies 12. There would be this number of control points per cycle of the oscillator, though the oscillator's period will constantly change due to the duration distribution.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>knum-</b> Current number of utilised control points, allows modulation. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><i>Examples</i></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5">//warning- if you have lots of CPs and you have fast frequencies, the CPU cost goes up a lot because a new CP move happens every sample!<span class="s2"><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">//defaults<span class="Apple-tab-span">	</span></p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar)}.play</p>
-<p class="p6"><br></p>
-<p class="p7">//wandering bass/ powerline</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(1,1,1.0,1.0,30,100,0.3,0.05,5))}.play</p>
-<p class="p6"><br></p>
-<p class="p7">//play me<span class="Apple-tab-span">	</span></p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">RLPF</span>.ar(<span class="s3">Gendy1</span>.ar(2,3,minfreq:20, maxfreq:<span class="s3">MouseX</span>.kr(100,1000), durscale:0.0, initCPs:40), 500,0.3, 0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p7">//scream! - careful with your ears for this one!</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s3">var</span> mx, my;</p>
-<p class="p6"><br></p>
-<p class="p8">mx= <span class="s3">MouseX</span>.kr(220,440);</p>
-<p class="p8">my= <span class="s3">MouseY</span>.kr(0.0,1.0);</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(2,3,1,1,minfreq:mx, maxfreq:8*mx, ampscale:my, durscale:my, initCPs:7, mul:0.3), 0.0)}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//1 CP = random noise effect</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(initCPs:1))}.play</p>
-<p class="p6"><br></p>
-<p class="p7">//2 CPs = suudenly an oscillator (though a fast modulating one here)</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(initCPs:2))}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//used as an LFO<span class="Apple-tab-span">	</span></p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">SinOsc</span>.ar(<span class="s3">Gendy1</span>.kr(2,4,<span class="s3">SinOsc</span>.kr(0.1,0,0.49,0.51),<span class="s3">SinOsc</span>.kr(0.13,0,0.49,0.51), 3.4,3.5, <span class="s3">SinOsc</span>.kr(0.17,0,0.49,0.51), <span class="s3">SinOsc</span>.kr(0.19,0,0.49,0.51),10,10,50, 350), 0, 0.3), 0.0)}.play</p>
-<p class="p8">)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">//wasp</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(0, 0, <span class="s3">SinOsc</span>.kr(0.1, 0, 0.1, 0.9),1.0, 50,1000, 1,0.005, 12, 12, 0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//modulate distributions</p>
-<p class="p7">//change of pitch as distributions change the duration structure and spectrum</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(<span class="s3">MouseX</span>.kr(0,7),<span class="s3">MouseY</span>.kr(0,7),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//modulate num of CPs</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(knum:<span class="s3">MouseX</span>.kr(1,13),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//Gendy into Gendy...with cartoon side effects</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(maxfreq:<span class="s3">Gendy1</span>.kr(5,4,0.3, 0.7, 0.1, <span class="s3">MouseY</span>.kr(0.1,10), 1.0, 1.0, 5,5, 500, 600), knum:<span class="s3">MouseX</span>.kr(1,13),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//use SINUS to track any oscillator and take CP positions from it, use adparam and ddparam as the inputs to sample<span class="Apple-converted-space"> </span></p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(6,6,<span class="s3">LFPulse</span>.kr(100, 0, 0.4, 1.0), <span class="s3">SinOsc</span>.kr(30, 0, 0.5),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//try out near the corners especially</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(6,6,<span class="s3">LFPulse</span>.kr(<span class="s3">MouseX</span>.kr(0,200), 0, 0.4, 1.0), <span class="s3">SinOsc</span>.kr(<span class="s3">MouseY</span>.kr(0,200), 0, 0.5),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//texture</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s3">Mix</span>.fill(10,{</p>
-<p class="p8"><span class="s3">var</span> freq;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(130,160.3);</p>
-<p class="p8"><span class="s3">Pan2</span>.ar(<span class="s3">SinOsc</span>.ar(<span class="s3">Gendy1</span>.ar(6.rand,6.rand,<span class="s3">SinOsc</span>.kr(0.1,0,0.49,0.51),<span class="s3">SinOsc</span>.kr(0.13,0,0.49,0.51),freq ,freq, <span class="s3">SinOsc</span>.kr(0.17,0,0.49,0.51), <span class="s3">SinOsc</span>.kr(0.19,0,0.49,0.51), 12, 12, 200, 400), 0, 0.1), 1.0.rand2)</p>
-<p class="p8">});</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p7">//wahhhhhhhh- try durscale 10.0 and 0.0 too</p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s3">Pan2</span>.ar(</p>
-<p class="p9">CombN<span class="s4">.ar(</span></p>
-<p class="p9">Resonz<span class="s4">.ar(</span></p>
-<p class="p8"><span class="s3">Gendy1</span>.ar(2,3,minfreq:1, maxfreq:<span class="s3">MouseX</span>.kr(10,700), durscale:0.1, initCPs:10),</p>
-<p class="p8"><span class="s3">MouseY</span>.kr(50,1000), 0.1)</p>
-<p class="p8">,0.1,0.1,5, 0.6</p>
-<p class="p8">)</p>
-<p class="p8">, 0.0)}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//overkill</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s3">var</span> n;</p>
-<p class="p8">n=10;</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s3">Mix</span>.fill(n,{</p>
-<p class="p8"><span class="s3">var</span> freq, numcps;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(130,160.3);</p>
-<p class="p8">numcps= rrand(2,20);</p>
-<p class="p8"><span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(6.rand,6.rand,1.0.rand,1.0.rand,freq ,freq, 1.0.rand, 1.0.rand, numcps, <span class="s3">SinOsc</span>.kr(exprand(0.02,0.2), 0, numcps/2, numcps/2), 0.5/(n.sqrt)), 1.0.rand2)</p>
-<p class="p8">});</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//another traffic moment</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s3">var</span> n;</p>
-<p class="p8">n=10;</p>
-<p class="p6"><br></p>
-<p class="p9">Resonz<span class="s4">.ar(</span></p>
-<p class="p8"><span class="s3">Mix</span>.fill(n,{</p>
-<p class="p8"><span class="s3">var</span> freq, numcps;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(50,560.3);</p>
-<p class="p8">numcps= rrand(2,20);</p>
-<p class="p8"><span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(6.rand,6.rand,1.0.rand,1.0.rand,freq ,freq, 1.0.rand, 1.0.rand, numcps, <span class="s3">SinOsc</span>.kr(exprand(0.02,0.2), 0, numcps/2, numcps/2), 0.5/(n.sqrt)), 1.0.rand2)</p>
-<p class="p8">})</p>
-<p class="p8">,<span class="s3">MouseX</span>.kr(100,2000), <span class="s3">MouseY</span>.kr(0.01,1.0))</p>
-<p class="p8">;</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s3">var</span> n;</p>
-<p class="p8">n=15;</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s3">Out</span>.ar(0,</p>
-<p class="p9">Resonz<span class="s4">.ar(</span></p>
-<p class="p8"><span class="s3">Mix</span>.fill(n,{</p>
-<p class="p8"><span class="s3">var</span> freq, numcps;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(330,460.3);</p>
-<p class="p8">numcps= rrand(2,20);</p>
-<p class="p8"><span class="s3">Pan2</span>.ar(<span class="s3">Gendy1</span>.ar(6.rand,6.rand,1.0.rand,1.0.rand,freq,<span class="s3">MouseX</span>.kr(freq,2*freq), 1.0.rand, 1.0.rand, numcps, <span class="s3">SinOsc</span>.kr(exprand(0.02,0.2), 0, numcps/2, numcps/2), 0.5/(n.sqrt)), 1.0.rand2)</p>
-<p class="p8">})</p>
-<p class="p8">,<span class="s3">MouseX</span>.kr(100,2000), <span class="s3">MouseY</span>.kr(0.01,1.0))</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p8">}.play;</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//SuperCollider implementation by Nick Collins</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Gendy2.html b/Help/UGens/Oscillators/Gendy2.html
deleted file mode 100644
index cdfcc11..0000000
--- a/Help/UGens/Oscillators/Gendy2.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 22.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0024f8}
-span.s2 {text-decoration: underline}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Gendy2</b></p>
-<p class="p2"><br></p>
-<p class="p3">See <a href="Gendy1.html"><span class="s1">Gendy1</span></a> help file for background. This variant of GENDYN is closer to that presented in<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Hoffmann, Peter. (2000) The New GENDYN Program. Computer Music Journal 24:2, pp 31-38.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">Technical notes: random walk is of the amplitude and time delta, not the amp and time directly. The amplitude step random walk uses a lehmer style number generator whose parameters are accessible.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="s2">Class Methods</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*ar(ampdist=1, durdist=1, adparam=1.0, ddparam=1.0, minfreq=20, maxfreq=1000, ampscale= 0.5, durscale=0.5, initCPs=12, knum=12, a= 1.17, c=0.31, mul=1.0, add=0.0)</b></p>
-<p class="p2"><br></p>
-<p class="p3">All parameters can be modulated at control rate except for initCPs which is used only at initialisation.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ampdist</b> - Choice of probability distribution for the next perturbation of the amplitude of a control point.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The distributions are (adapted from the GENDYN program in Formalized Music):</p>
-<p class="p3">0- LINEAR</p>
-<p class="p3">1- CAUCHY</p>
-<p class="p3">2- LOGIST</p>
-<p class="p3">3- HYPERBCOS</p>
-<p class="p3">4- ARCSINE</p>
-<p class="p3">5- EXPON</p>
-<p class="p3">6- SINUS</p>
-<p class="p3">Where the sinus (Xenakis' name) is in this implementation taken as sampling from a third party oscillator. See example below.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>durdist-</b> Choice of distribution for the perturbation of the current inter control point duration.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>adparam-</b> A parameter for the shape of the amplitude probability distribution, requires values in the range 0.0001 to 1 (there are safety checks in the code so don't worry too much if you want to modulate!)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ddparam-</b> A parameter for the shape of the duration probability distribution, requires values in the range 0.0001 to 1</p>
-<p class="p2"><br></p>
-<p class="p3"><b>minfreq-</b> Minimum allowed frequency of oscillation for the Gendy1 oscillator, so gives the largest period the duration is allowed to take on.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>maxfreq-</b> Maximum allowed frequency of oscillation for the Gendy1 oscillator, so gives the smallest period the duration is allowed to take on.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ampscale-</b> Normally 0.0 to 1.0, multiplier for the distribution's delta value for amplitude. An ampscale of 1.0 allows the full range of<span class="Apple-converted-space">  </span>-1 to 1 for a change of amplitude.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>durscale-</b> Normally 0.0 to 1.0, multiplier for the distribution's delta value for duration. An ampscale of 1.0 allows the full range of<span class="Apple-converted-space">  </span>-1 to 1 for a change of duration.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>initCPs-</b> Initialise the number of control points in the memory. Xenakis specifies 12. There would be this number of control points per cycle of the oscillator, though the oscillator's period will constantly change due to the duration distribution.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>knum-</b> Current number of utilised control points, allows modulation. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a-</b> parameter for Lehmer random number generator perturbed by Xenakis as in ((old*a)+c)%1.0</p>
-<p class="p2"><br></p>
-<p class="p3"><b>c-</b> parameter for Lehmer random number generator perturbed by Xenakis</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><i>Examples</i></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5">//warning- if you have lots of CPs and you have fast frequencies, the CPU cost goes up a lot because a new CP move happens every sample!<span class="s3"><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">//LOUD! defaults like a rougher Gendy1<span class="Apple-tab-span">	</span></p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar)}.play</p>
-<p class="p6"><br></p>
-<p class="p7">//advantages of messing with the random number generation- causes periodicities</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(a:<span class="s4">MouseX</span>.kr(0.0,1.0),c:<span class="s4">MouseY</span>.kr(0.0,1.0)))}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(</p>
-<p class="p9">Normalizer<span class="s5">.ar(</span></p>
-<p class="p8"><span class="s4">RLPF</span>.ar(</p>
-<p class="p8"><span class="s4">RLPF</span>.ar(<span class="s4">Gendy2</span>.ar(a:<span class="s4">SinOsc</span>.kr(0.4,0,0.05,0.05),c:<span class="s4">SinOsc</span>.kr(0.3,0,0.1,0.5)),</p>
-<p class="p8"><span class="s4">MouseX</span>.kr(10,10000,<span class="s6">'exponential'</span>),0.05),</p>
-<p class="p8"><span class="s4">MouseY</span>.kr(10,10000,<span class="s6">'exponential'</span>),0.05)</p>
-<p class="p8">,0.9)</p>
-<p class="p8">,<span class="s4">Lag</span>.kr(<span class="s4">LFNoise0</span>.kr(1),0.5))}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(3,5,1.0,1.0,50,1000,<span class="s4">MouseX</span>.kr(0.05,1),<span class="s4">MouseY</span>.kr(0.05,1),15, 0.05,0.51,mul:0.5))}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//play me<span class="Apple-tab-span">	</span></p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">RLPF</span>.ar(<span class="s4">Gendy2</span>.ar(1,3,minfreq:20, maxfreq:<span class="s4">MouseX</span>.kr(100,1000), durscale:0.0, initCPs:4), 500,0.3, 0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//1 CP = random noise effect</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(initCPs:1))}.play</p>
-<p class="p6"><br></p>
-<p class="p7">//2 CPs = suudenly an oscillator (though a fast modulating one here)</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(initCPs:2))}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//used as an LFO<span class="Apple-tab-span">	</span></p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">SinOsc</span>.ar(<span class="s4">Gendy2</span>.kr(2,1,<span class="s4">SinOsc</span>.kr(0.1,0,0.49,0.51),<span class="s4">SinOsc</span>.kr(0.13,0,0.49,0.51), 3.4,3.5, <span class="s4">SinOsc</span>.kr(0.17,0,0.49,0.51), <span class="s4">SinOsc</span>.kr(0.19,0,0.49,0.51),10,10,mul:50, add:350), 0, 0.3), 0.0)}.play</p>
-<p class="p8">)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">//very angry wasp</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(0, 0, <span class="s4">SinOsc</span>.kr(0.1, 0, 0.1, 0.9),1.0, 50,1000, 1,0.005, 12, 12, 0.2,0.2,0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//modulate distributions</p>
-<p class="p7">//change of pitch as distributions change the duration structure and spectrum</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(<span class="s4">MouseX</span>.kr(0,7),<span class="s4">MouseY</span>.kr(0,7),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//modulate num of CPs</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(knum:<span class="s4">MouseX</span>.kr(1,13),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//Gendy1 into Gendy2...with cartoon side effects</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(maxfreq:<span class="s4">Gendy1</span>.kr(5,4,0.3, 0.7, 0.1, <span class="s4">MouseY</span>.kr(0.1,10), 1.0, 1.0, 5,5, 500, 600), knum:<span class="s4">MouseX</span>.kr(1,13),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//use SINUS to track any oscillator and take CP positions from it, use adparam and ddparam as the inputs to sample<span class="Apple-converted-space"> </span></p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(6,6,<span class="s4">LFPulse</span>.kr(100, 0, 0.4, 1.0), <span class="s4">SinOsc</span>.kr(30, 0, 0.5),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//try out near the corners especially</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(6,6,<span class="s4">LFPulse</span>.kr(<span class="s4">MouseX</span>.kr(0,200), 0, 0.4, 1.0), <span class="s4">SinOsc</span>.kr(<span class="s4">MouseY</span>.kr(0,200), 0, 0.5),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//texture- the howling wind?</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s4">Mix</span>.fill(10,{</p>
-<p class="p8"><span class="s4">var</span> freq;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(130,160.3);</p>
-<p class="p8"><span class="s4">Pan2</span>.ar(<span class="s4">SinOsc</span>.ar(<span class="s4">Gendy2</span>.ar(6.rand,6.rand,<span class="s4">SinOsc</span>.kr(0.1,0,0.49,0.51),<span class="s4">SinOsc</span>.kr(0.13,0,0.49,0.51),freq ,freq, <span class="s4">SinOsc</span>.kr(0.17,0,0.49,0.51), <span class="s4">SinOsc</span>.kr(0.19,0,0.49,0.51), 12, 12, 0.4.rand, 0.4.rand, 200, 400), 0, 0.1), 1.0.rand2)</p>
-<p class="p8">});</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p7">//CAREFUL! mouse to far right causes explosion of sound</p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(</p>
-<p class="p9">CombN<span class="s5">.ar(</span></p>
-<p class="p9">Resonz<span class="s5">.ar(</span></p>
-<p class="p8"><span class="s4">Gendy2</span>.ar(2,3,minfreq:1, maxfreq:<span class="s4">MouseX</span>.kr(10,700), initCPs:100),</p>
-<p class="p8"><span class="s4">MouseY</span>.kr(50,1000), 0.1)</p>
-<p class="p8">,0.1,0.1,5, 0.16</p>
-<p class="p8">)</p>
-<p class="p8">, 0.0)}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//storm</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s4">var</span> n;</p>
-<p class="p8">n=15;</p>
-<p class="p6"><br></p>
-<p class="p8">0.5*<span class="s4">Mix</span>.fill(n,{</p>
-<p class="p8"><span class="s4">var</span> freq, numcps;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(130,160.3);</p>
-<p class="p8">numcps= rrand(2,20);</p>
-<p class="p8"><span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(6.rand,6.rand,10.0.rand,10.0.rand,freq,freq*exprand(1.0,2.0), 10.0.rand, 10.0.rand, numcps, <span class="s4">SinOsc</span>.kr(exprand(0.02,0.2), 0, numcps/2, numcps/2), 10.0.rand,10.0.rand,0.5/(n.sqrt)), 1.0.rand2)</p>
-<p class="p8">});</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//another traffic moment</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s4">var</span> n;</p>
-<p class="p8">n=10;</p>
-<p class="p6"><br></p>
-<p class="p9">Resonz<span class="s5">.ar(</span></p>
-<p class="p8"><span class="s4">Mix</span>.fill(n,{</p>
-<p class="p8"><span class="s4">var</span> freq, numcps;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(50,560.3);</p>
-<p class="p8">numcps= rrand(2,20);</p>
-<p class="p8"><span class="s4">Pan2</span>.ar(<span class="s4">Gendy2</span>.ar(6.rand,6.rand,1.0.rand,1.0.rand,freq ,freq, 1.0.rand, 1.0.rand, numcps, <span class="s4">SinOsc</span>.kr(exprand(0.02,0.2), 0, numcps/2, numcps/2), 0.5/(n.sqrt)), 1.0.rand2)</p>
-<p class="p8">})</p>
-<p class="p8">,<span class="s4">MouseX</span>.kr(100,2000), <span class="s4">MouseY</span>.kr(0.01,1.0), 0.3)</p>
-<p class="p8">;</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//SuperCollider implementation by Nick Collins</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Gendy3.html b/Help/UGens/Oscillators/Gendy3.html
deleted file mode 100644
index a39d633..0000000
--- a/Help/UGens/Oscillators/Gendy3.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 22.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0024f8}
-span.s2 {text-decoration: underline}
-span.s3 {font: 9.0px Monaco}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Gendy3</b></p>
-<p class="p2"><br></p>
-<p class="p3">See Gendy1 help file for background. This variant of GENDYN normalises the durations in each period to force oscillation at the desired pitch. The breakpoints still get perturbed as in <a href="Gendy1.html"><span class="s1">Gendy1</span></a>.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">There is some glitching in the oscillator caused by the stochastic effects: control points as they vary cause big local jumps of amplitude. Put ampscale and durscale low to minimise this.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b><span class="s2">Class Methods</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>*ar(ampdist=1, durdist=1, adparam=1.0, ddparam=1.0, freq=440, ampscale= 0.5, durscale=0.5, initCPs=12, knum=12, mul=1.0, add=0.0)</b></p>
-<p class="p2"><br></p>
-<p class="p3">All parameters can be modulated at control rate except for initCPs which is used only at initialisation.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ampdist</b> - Choice of probability distribution for the next perturbation of the amplitude of a control point.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">The distributions are (adapted from the GENDYN program in Formalized Music):</p>
-<p class="p3">0- LINEAR</p>
-<p class="p3">1- CAUCHY</p>
-<p class="p3">2- LOGIST</p>
-<p class="p3">3- HYPERBCOS</p>
-<p class="p3">4- ARCSINE</p>
-<p class="p3">5- EXPON</p>
-<p class="p3">6- SINUS</p>
-<p class="p3">Where the sinus (Xenakis' name) is in this implementation taken as sampling from a third party oscillator. See example below.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>durdist-</b> Choice of distribution for the perturbation of the current inter control point duration.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>adparam-</b> A parameter for the shape of the amplitude probability distribution, requires values in the range 0.0001 to 1 (there are safety checks in the code so don't worry too much if you want to modulate!)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ddparam-</b> A parameter for the shape of the duration probability distribution, requires values in the range 0.0001 to 1</p>
-<p class="p2"><br></p>
-<p class="p3"><b>freq-</b> Oscillation frquency.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>ampscale-</b> Normally 0.0 to 1.0, multiplier for the distribution's delta value for amplitude. An ampscale of 1.0 allows the full range of<span class="Apple-converted-space">  </span>-1 to 1 for a change of amplitude.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>durscale-</b> Normally 0.0 to 1.0, multiplier for the distribution's delta value for duration. An ampscale of 1.0 allows the full range of<span class="Apple-converted-space">  </span>-1 to 1 for a change of duration.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>initCPs-</b> Initialise the number of control points in the memory. Xenakis specifies 12. There would be this number of control points per cycle of the oscillator, though the oscillator's period will constantly change due to the duration distribution.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>knum-</b> Current number of utilised control points, allows modulation. <span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><i>Examples</i></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5">//warning- if you have lots of CPs and you have fast frequencies, the CPU cost goes up a lot because a new CP move happens every sample!<span class="s3"><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">//LOUD! defaults like a rougher Gendy1<span class="Apple-tab-span">	</span></p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(mul:0.5))}.play</p>
-<p class="p6"><br></p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(freq:<span class="s4">MouseX</span>.kr(220,880,<span class="s5">'exponential'</span>), durscale:0.01, ampscale:0.02, mul:0.2))}.play</p>
-<p class="p6"><br></p>
-<p class="p7">//stochastic waveform distortion- also play me at the same time as the previous example...</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(1,2,0.3,-0.7,<span class="s4">MouseX</span>.kr(55,110,<span class="s5">'exponential'</span>),0.03,0.1))}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(</p>
-<p class="p9">Normalizer<span class="s6">.ar(</span></p>
-<p class="p8"><span class="s4">RLPF</span>.ar(</p>
-<p class="p8"><span class="s4">RLPF</span>.ar(<span class="s4">Mix</span>.new(<span class="s4">Gendy3</span>.ar(freq:[230, 419, 546, 789])),</p>
-<p class="p8"><span class="s4">MouseX</span>.kr(10,10000,<span class="s5">'exponential'</span>),0.05),</p>
-<p class="p8"><span class="s4">MouseY</span>.kr(10,10000,<span class="s5">'exponential'</span>),0.05)</p>
-<p class="p8">,0.9)</p>
-<p class="p8">,<span class="s4">Lag</span>.kr(<span class="s4">LFNoise0</span>.kr(1),0.5))}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//concrete pH?<span class="Apple-converted-space"> </span></p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(</p>
-<p class="p8"><span class="s4">Mix</span>.new(<span class="s4">Gendy3</span>.ar(freq:([1,1.2,1.3,1.76,2.3]*<span class="s4">MouseX</span>.kr(3,17,<span class="s5">'exponential'</span>)),mul:0.2)))}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p7">//glitch low, mountain high</p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(</p>
-<p class="p8"><span class="s4">Mix</span>.new(<span class="s4">Gendy3</span>.ar(3,5,1.0,1.0,(<span class="s4">Array</span>.fill(5,{<span class="s4">LFNoise0</span>.kr(1.3.rand,1,2)})*<span class="s4">MouseX</span>.kr(100,378,<span class="s5">'exponential'</span>)),<span class="s4">MouseX</span>.kr(0.01,0.05),<span class="s4">MouseY</span>.kr(0.001,0.016),5,mul:0.1)))}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p7">//play me<span class="Apple-tab-span">	</span></p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">RLPF</span>.ar(<span class="s4">Gendy3</span>.ar(1,3,freq:<span class="s4">MouseX</span>.kr(100,1000), durscale:0.0, ampscale:<span class="s4">MouseY</span>.kr(0.0,0.1), initCPs:7, knum: <span class="s4">MouseY</span>.kr(7,2)), 500,0.3, 0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//used as an LFO<span class="Apple-tab-span">	</span></p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">SinOsc</span>.ar(<span class="s4">Gendy3</span>.kr(2,5,<span class="s4">SinOsc</span>.kr(0.1,0,0.49,0.51),<span class="s4">SinOsc</span>.kr(0.13,0,0.49,0.51), 0.34, <span class="s4">SinOsc</span>.kr(0.17,0,0.49,0.51), <span class="s4">SinOsc</span>.kr(0.19,0,0.49,0.51),10,10,mul:50, add:350), 0, 0.3), 0.0)}.play</p>
-<p class="p8">)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">//buzzpipes</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Mix</span>.new(<span class="s4">Gendy3</span>.ar(0, 0, <span class="s4">SinOsc</span>.kr(0.1, 0, 0.1, 0.9),1.0, [100,205,410], 0.011,0.005, 12, 12, 0.12)), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//modulate distributions</p>
-<p class="p7">//change of pitch as distributions change the duration structure and spectrum</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(<span class="s4">MouseX</span>.kr(0,7),<span class="s4">MouseY</span>.kr(0,7),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//modulate num of CPs</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(knum:<span class="s4">MouseX</span>.kr(2,13),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//Gendy1 into Gendy2 into Gendy3...with cartoon side effects</p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(1,2,freq:<span class="s4">Gendy2</span>.ar(maxfreq:<span class="s4">Gendy1</span>.kr(5,4,0.3, 0.7, 0.1, <span class="s4">MouseY</span>.kr(0.1,10), 1.0, 1.0, 5,5, 25,26),minfreq:24, knum:<span class="s4">MouseX</span>.kr(1,13),mul:150, add:200), durscale:0.01, ampscale:0.01, mul:0.1), 0.0)}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p7">//use SINUS to track any oscillator and take CP positions from it, use adparam and ddparam as the inputs to sample<span class="Apple-converted-space"> </span></p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(6,6,<span class="s4">LFPulse</span>.kr(<span class="s4">LFNoise0</span>.kr(19.0,0.5,0.6), 0, 0.4, 0.5), <span class="s4">Gendy1</span>.kr(durscale:0.01,ampscale:0.01), <span class="s4">MouseX</span>.kr(10,100),mul:0.2), 0.0)}.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//wolf tones</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s4">Mix</span>.fill(10,{</p>
-<p class="p8"><span class="s4">var</span> freq;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= exprand(130,1160.3);</p>
-<p class="p8"><span class="s4">Pan2</span>.ar(<span class="s4">SinOsc</span>.ar(<span class="s4">Gendy3</span>.ar(6.rand,6.rand,<span class="s4">SinOsc</span>.kr(0.1,0,0.49,0.51),<span class="s4">SinOsc</span>.kr(0.13,0,0.49,0.51),freq, <span class="s4">SinOsc</span>.kr(0.17,0,0.0049,0.0051), <span class="s4">SinOsc</span>.kr(0.19,0,0.0049,0.0051), 12, 12, 200, 400), 0, 0.1), 1.0.rand2)</p>
-<p class="p8">});</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p7">//CAREFUL! mouse to far right causes explosion of sound-</p>
-<p class="p7">//notice how high frequency and num of CPs affects CPU cost</p>
-<p class="p8">(</p>
-<p class="p8">{<span class="s4">Pan2</span>.ar(</p>
-<p class="p9">CombN<span class="s6">.ar(</span></p>
-<p class="p9">Resonz<span class="s6">.ar(</span></p>
-<p class="p8"><span class="s4">Gendy3</span>.ar(2,3,freq:<span class="s4">MouseX</span>.kr(10,700), initCPs:100),</p>
-<p class="p8"><span class="s4">MouseY</span>.kr(50,1000), 0.1)</p>
-<p class="p8">,0.1,0.1,5, 0.16</p>
-<p class="p8">)</p>
-<p class="p8">, 0.0)}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//storm</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s4">var</span> n;</p>
-<p class="p8">n=15;</p>
-<p class="p6"><br></p>
-<p class="p8">0.5*<span class="s4">Mix</span>.fill(n,{</p>
-<p class="p8"><span class="s4">var</span> freq, numcps;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(130,160.3);</p>
-<p class="p8">numcps= rrand(2,20);</p>
-<p class="p8"><span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(6.rand,6.rand,10.0.rand,10.0.rand,freq*exprand(1.0,2.0), 10.0.rand, 10.0.rand, numcps, <span class="s4">SinOsc</span>.kr(exprand(0.02,0.2), 0, numcps/2, numcps/2), 0.5/(n.sqrt)), 1.0.rand2)</p>
-<p class="p8">});</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//another glitchy moment</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s4">var</span> n;</p>
-<p class="p8">n=10;</p>
-<p class="p6"><br></p>
-<p class="p9">Resonz<span class="s6">.ar(</span></p>
-<p class="p8"><span class="s4">Mix</span>.fill(n,{</p>
-<p class="p8"><span class="s4">var</span> freq, numcps;</p>
-<p class="p6"><br></p>
-<p class="p8">freq= rrand(50,560.3);</p>
-<p class="p8">numcps= rrand(2,20);</p>
-<p class="p8"><span class="s4">Pan2</span>.ar(<span class="s4">Gendy3</span>.ar(6.rand,6.rand,1.0.rand,1.0.rand,freq, 1.0.rand, 1.0.rand, numcps, <span class="s4">SinOsc</span>.kr(exprand(0.02,0.2), 0, numcps/2, numcps/2), 0.5/(n.sqrt)), 1.0.rand2)</p>
-<p class="p8">})</p>
-<p class="p8">,<span class="s4">MouseX</span>.kr(100,2000), <span class="s4">MouseY</span>.kr(0.01,1.0), 0.3)</p>
-<p class="p8">;</p>
-<p class="p8">}.play</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//SuperCollider implementation by Nick Collins</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Impulse.html b/Help/UGens/Oscillators/Impulse.html
deleted file mode 100644
index cd65f72..0000000
--- a/Help/UGens/Oscillators/Impulse.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #102ac3}
-span.s4 {color: #008225}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Impulse<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>impulse oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Impulse.ar(freq, phase, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Outputs non band limited single sample impulses.</p>
-<p class="p1"><b>freq</b> - frequency in Hertz</p>
-<p class="p1"><b>phase</b> - phase offset in cycles ( 0..1 )</p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s2">Impulse</span>.ar(800, 0.0, 0.5, 0) }.play</p>
-<p class="p4"><br></p>
-<p class="p3">{ <span class="s2">Impulse</span>.ar(<span class="s2">XLine</span>.kr(800,100,5), 0.0,<span class="Apple-converted-space">  </span>0.5, 0) }.play</p>
-<p class="p4"><br></p>
-<p class="p1">modulate phase:</p>
-<p class="p4"><br></p>
-<p class="p3">{ <span class="s2">Impulse</span>.ar(4, [0, <span class="s2">MouseX</span>.kr(0, 1)], 0.2) }.play;</p>
-<p class="p4"><br></p>
-<p class="p1">an Impulse with frequency 0 returns a single impulse:</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">SynthDef</span>(<span class="s4">\imp</span>, { <span class="s3">OffsetOut</span>.ar(0, <span class="s3">Impulse</span>.ar(0)); <span class="s3">FreeSelf</span>.kr(<span class="s3">Impulse</span>.kr(0)); }).add;</p>
-<p class="p5">fork { (1 / (1..60).scramble).do { <span class="s3">|dt|</span> <span class="s3">Synth</span>.grain(<span class="s4">\imp</span>);<span class="Apple-converted-space">  </span>dt.wait } };</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Klang.html b/Help/UGens/Oscillators/Klang.html
deleted file mode 100644
index 2eadeb4..0000000
--- a/Help/UGens/Oscillators/Klang.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0000ff}
-span.s2 {color: #0026b4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Klang<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sine oscillator bank</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Klang.ar(specificationsArrayRef, freqscale, freqoffset)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Klang is a bank of fixed frequency sine oscillators. Klang is more efficient than creating individual oscillators but offers less flexibility.</p>
-<p class="p2"><br></p>
-<p class="p3">The parameters in <b>specificationsArrayRef</b> can't be changed after it has been started.<span class="Apple-converted-space"> </span></p>
-<p class="p3">For a modulatable but less efficient version, see <a href="DynKlang.html"><span class="s1">DynKlang</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>specificationsArrayRef</b> - a Ref to an Array of three Arrays :</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>frequencies</b> - an Array of filter frequencies.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>amplitudes</b> - an Array of filter amplitudes, or nil. If nil, then amplitudes default to 1.0</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>phases</b> - an Array of initial phases, or nil. If nil, then phases default to 0.0</p>
-<p class="p3"><b>freqscale</b> - a scale factor multiplied by all frequencies at initialization time.</p>
-<p class="p3"><b>freqoffset</b> - an offset added to all frequencies at initialization time.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">play({ <span class="s2">Klang</span>.ar(`[ [800, 1000, 1200],[0.3, 0.3, 0.3],[pi,pi,pi]], 1, 0) * 0.4});</p>
-<p class="p5"><br></p>
-<p class="p4">play({ <span class="s2">Klang</span>.ar(`[ [800, 1000, 1200], <span class="s2">nil</span>, <span class="s2">nil</span>], 1, 0) * 0.25});</p>
-<p class="p6"><br></p>
-<p class="p4">play({ <span class="s2">Klang</span>.ar(`[ <span class="s2">Array</span>.rand(12, 600.0, 1000.0), <span class="s2">nil</span>, <span class="s2">nil</span> ], 1, 0) * 0.05 });</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4">loop({</p>
-<p class="p4"><span class="Apple-tab-span">	</span>play({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pan2</span>.ar(<span class="s2">Klang</span>.ar(`[ <span class="s2">Array</span>.rand(12, 200.0, 2000.0), <span class="s2">nil</span>, <span class="s2">nil</span> ], 1, 0), 1.0.rand)<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s2">EnvGen</span>.kr(<span class="s2">Env</span>.sine(4), 1, 0.02, doneAction: 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>});</p>
-<p class="p4"><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p4">})</p>
-<p class="p4">}.fork;</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/LFCub.html b/Help/UGens/Oscillators/LFCub.html
deleted file mode 100644
index 4977347..0000000
--- a/Help/UGens/Oscillators/LFCub.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #0000ff}
-span.s3 {color: #0019b7}
-</style>
-</head>
-<body>
-<p class="p1"><b>LFCub</b><span class="s1"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>- a sine like shape made of two cubic pieces. smoother than </b><a href="LFPar.html"><span class="s2"><b>LFPar</b></span></a><b>.</b></p>
-<p class="p2"><br></p>
-<p class="p4">freq = 440.0, iphase = 0.0, mul = 1.0, add = 0.0</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">LFCub</span>.ar(<span class="s3">LFCub</span>.kr(<span class="s3">LFCub</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFCub</span>.ar(<span class="s3">LFCub</span>.kr(0.2, 0, 400,800),0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFCub</span>.ar(800,0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFCub</span>.ar(<span class="s3">XLine</span>.kr(100,8000,30),0,0.1) }.play</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">compare:</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">LFPar</span>.kr(<span class="s3">LFPar</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">LFPar</span>.kr(0.2, 0, 400,800),0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(800,0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">XLine</span>.kr(100,8000,30),0,0.1) }.play</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(<span class="s3">SinOsc</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(0.2, 0, 400,800),0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(800,0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">XLine</span>.kr(100,8000,30),0,0.1) }.play</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">LFTri</span>.ar(<span class="s3">LFTri</span>.kr(<span class="s3">LFTri</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFTri</span>.ar(<span class="s3">LFTri</span>.kr(0.2, 0, 400,800),0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFTri</span>.ar(800,0,0.1) }.play</p>
-<p class="p4">{ <span class="s3">LFTri</span>.ar(<span class="s3">XLine</span>.kr(100,8000,30),0,0.1) }.play</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/LFGauss.html b/Help/UGens/Oscillators/LFGauss.html
deleted file mode 100644
index 65f50c6..0000000
--- a/Help/UGens/Oscillators/LFGauss.html
+++ /dev/null
@@ -1,219 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a31917}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a31917; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0017b3}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #35701d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 12.0px Helvetica}
-span.s3 {color: #0017b3}
-span.s4 {color: #a31917}
-span.s5 {color: #000000}
-span.s6 {color: #35701d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFGauss<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>Gaussian function oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFGauss.ar(duration, width, iphase, loop, doneAction)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A non-band-limited gaussian function oscillator. Output ranges from <b>minval</b> to 1.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">LFGauss implements the formula:</span> f(x) = exp(squared(x - iphase) / (-2.0 * squared(width)))</p>
-<p class="p1">where x is to vary in the range -1 to 1 over the period dur. <b>minval</b> is the initial value at -1</p>
-<p class="p2"><br></p>
-<p class="p1"><b>duration</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>duration of one full cycle ( for <b>freq</b> input: <b>dur = 1 / freq</b> )</p>
-<p class="p1"><b>width</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>relative width of the bell. Best to keep below 0.25 when used as envelope. (default: 0.1)</p>
-<p class="p1"><b>iphase</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>initial offset (default: 0)</p>
-<p class="p1"><b>loop</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if loop is > 0, UGen oscillates. Otherwise it calls doneAction after one cycle (default: 1)</p>
-<p class="p1"><b>doneAction</b><span class="Apple-tab-span">	</span>doneAction, which is evaluated after cycle completes (2 frees the synth, default: 0).</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>See <a href="../Synth control/Envelopes/UGen-doneActions.html"><span class="s3">UGen-doneActions</span></a> for more detail.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Some plots:</b></p>
-<p class="p4"><br></p>
-<p class="p3">s.boot ;</p>
-<p class="p4"><br></p>
-<p class="p5">// a 0.1 second grain</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(0.1, 0.12) }.plot(0.1);</p>
-<p class="p4"><br></p>
-<p class="p5">// shifting left</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(0.1, 0.12, -1, loop: 0) }.plot(0.1);</p>
-<p class="p4"><br></p>
-<p class="p5">// moving further away from the center</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(0.1, 0.12, 2) }.plot(0.2);</p>
-<p class="p4"><br></p>
-<p class="p5">// several grains</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(0.065, 0.12, 0, loop: 1) }.plot(0.3);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Some calculations:</b></p>
-<p class="p2"><br></p>
-<p class="p1">assuming iphase = 0:</p>
-<p class="p3"><span class="s2"><b>minval</b><span class="Apple-converted-space">  </span>for a given width:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>minval = exp(-1.0 / (2.0 * squared(width)))</p>
-<p class="p3"><span class="s2"><b>width</b> for a given minval:<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>width = sqrt(-1.0 / log(minval))</p>
-<p class="p3"><span class="s2"><b>width at half maximum (0.5):<span class="Apple-converted-space"> </span></b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>(2 * sqrt(2 * log(2)) * width) = ca. 2.355 * width</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// minval for a width of 0.1:</p>
-<p class="p3">(exp(1 / (-2.0 * squared(0.1)))) <span class="s4">// 2e-22</span></p>
-<p class="p4"><br></p>
-<p class="p5">// maximum width for a beginning at -60dB:</p>
-<p class="p5">// we want the beginning small enough to avoid clicks</p>
-<p class="p3">sqrt(-1 / ( 2 * log(-60.dbamp))) <span class="s4">// 0.269</span></p>
-<p class="p4"><br></p>
-<p class="p5">// minval for width of 0.25</p>
-<p class="p3">(exp(1 / (-2.0 * squared(0.25)))).ampdb <span class="s4">// -70dB</span></p>
-<p class="p4"><br></p>
-<p class="p5">// maximum is always 1:</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(0.1, <span class="s3">XLine</span>.kr(1, 0.03, 1), 0, loop: 1) }.plot(1);</p>
-<p class="p4"><br></p>
-<p class="p5">// a gauss curve in sclang:</p>
-<p class="p3">(0..1000).normalize(-1, 1).collect(<span class="s3">_</span>.gaussCurve(1, 0, 0.1)).plot;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// rescale the function to the range 0..1</p>
-<p class="p3">(</p>
-<p class="p3">{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s3">var</span> width = <span class="s3">XLine</span>.kr(0.04, 1.0, 1);</p>
-<p class="p3"><span class="s3">var</span> min = (exp(1.0 / (-2.0 * squared(width))));</p>
-<p class="p3"><span class="s3">var</span> gauss = <span class="s3">LFGauss</span>.ar(0.1, width, loop: 1);</p>
-<p class="p3">gauss.linlin(min, 1, 0, 1);</p>
-<p class="p3">}.plot(1)</p>
-<p class="p3">);</p>
-<p class="p4"><br></p>
-<p class="p5">// range does the same implicitly</p>
-<p class="p3">(</p>
-<p class="p3">{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s3">var</span> width = <span class="s3">XLine</span>.kr(0.04, 1.0, 1);</p>
-<p class="p3"><span class="s3">LFGauss</span>.ar(0.1, width, loop: 1).range(0, 1);</p>
-<p class="p3">}.plot(1)</p>
-<p class="p3">);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Sound examples:</b></p>
-<p class="p4"><br></p>
-<p class="p5">// modulating duration</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(<span class="s3">XLine</span>.kr(0.1, 0.001, 10), 0.03) * 0.2 }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">// modulating width, freq 60 Hz</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(1/60, X<span class="s3">Line</span>.kr(0.1, 0.001, 10)) * 0.2 }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">// modulating both: x position is frequency, y is width factor.</p>
-<p class="p5">// note the artefacts due to alisasing at high frequencies</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(<span class="s3">MouseX</span>.kr(1/8000, 0.1, 1), <span class="s3">MouseY</span>.kr(0.001, 0.1, 1)) * 0.1 }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">// LFGauss as amplitude modulator</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(<span class="s3">MouseX</span>.kr(1, 0.001, 1), 0.1) * <span class="s3">SinOsc</span>.ar(1000) * 0.1 }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">// modulate iphase</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(0.001, 0.2, [0, <span class="s3">MouseX</span>.kr(-1, 1)]).sum * 0.2 }.scope;</p>
-<p class="p4"><br></p>
-<p class="p5">// for very small width we are "approaching" a dirac function</p>
-<p class="p3">{ <span class="s3">LFGauss</span>.ar(0.01, <span class="s3">SampleDur</span>.ir * <span class="s3">MouseX</span>.kr(10, 3000, 1)) * 0.2 }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">// dur and width can be modulated at audio rate</p>
-<p class="p3">(</p>
-<p class="p3">{ <span class="Apple-tab-span">	</span><span class="s3">var</span> dur = <span class="s3">SinOsc</span>.ar(<span class="s3">MouseX</span>.kr(2, 1000, 1) * [1, 1.1]).range(0.0006, 0.01);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> width = <span class="s3">SinOsc</span>.ar(0.5 * [1, 1.1]).range(0.01, 0.3);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">LFGauss</span>.ar(dur, width) * 0.2<span class="Apple-converted-space"> </span></p>
-<p class="p3">}.play</p>
-<p class="p3">);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// several frequecies and widths combined</p>
-<p class="p3">(</p>
-<p class="p3">{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> mod = <span class="s3">LFGauss</span>.ar(<span class="s3">MouseX</span>.kr(1, 0.07, 1), 1 * (<span class="s3">MouseY</span>.kr(1, 3) ** (-1..-6)));</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> carr = <span class="s3">SinOsc</span>.ar(200 * (1.3 ** (0..5)));</p>
-<p class="p3"><span class="Apple-tab-span">	</span>(carr * mod).sum * 0.1</p>
-<p class="p3">}.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// test spectrum</p>
-<p class="p3">(</p>
-<p class="p3">{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> son = <span class="s3">LeakDC</span>.ar(<span class="s3">LFGauss</span>.ar(0.005, 0.2));</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">BPF</span>.ar(son * 3, <span class="s3">MouseX</span>.kr(60, 2000, 1), 0.05)</p>
-<p class="p3">}.play;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Gabor Grain:</b></p>
-<p class="p4"><br></p>
-<p class="p6"><br></p>
-<p class="p3">(</p>
-<p class="p3"><span class="s3">var</span> freq = 1000;</p>
-<p class="p3"><span class="s3">var</span> ncycles = 10;</p>
-<p class="p3"><span class="s3">var</span> width = 0.25;</p>
-<p class="p3"><span class="s3">var</span> dur = ncycles / freq;</p>
-<p class="p3">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> env = <span class="s3">LFGauss</span>.ar(dur, width, loop: 0, doneAction: 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> son = <span class="s3">FSinOsc</span>.ar(freq, 0.5pi, env);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>son</p>
-<p class="p3">}.plot(dur);</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">(</p>
-<p class="p7">SynthDef<span class="s5">(</span><span class="s6">\gabor</span><span class="s5">, { </span>|out, i_freq = 440, i_sustain = 1, i_pan = 1, i_amp = 0.1, i_width = 0.25 |</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> env = <span class="s3">LFGauss</span>.ar(i_sustain, i_width, loop: 0, doneAction: 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> son = <span class="s3">FSinOsc</span>.ar(i_freq, 0.5pi, env);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">OffsetOut</span>.ar(out, <span class="s3">Pan2</span>.ar(son, i_pan, i_amp));</p>
-<p class="p4"><br></p>
-<p class="p3">}).add;</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// modulating various parameters</p>
-<p class="p3">(</p>
-<p class="p7">Pdef<span class="s5">(</span><span class="s6">\x</span><span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>Pbind<span class="s5">(</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s5">, </span>\gabor<span class="s5">,</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\freq</span>, <span class="s3">Pbrown</span>(step:0.01).linexp(0, 1, 100, 14000),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, <span class="s3">Pbrown</span>().linexp(0, 1, 0.004, 0.02),</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\legato</span>, <span class="s3">Pbrown</span>(1, 3, 0.1, <span class="s3">inf</span>),</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">\pan</span><span class="s5">, </span>Pwhite<span class="s5">() * </span>Pbrown<span class="s5">()</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">).play</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// modulating width only</p>
-<p class="p3">(</p>
-<p class="p7">Pdef<span class="s5">(</span><span class="s6">\x</span><span class="s5">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>Pbind<span class="s5">(</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\instrument<span class="s5">, </span>\gabor<span class="s5">,</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\freq</span>, 1000,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\dur</span>, 0.01,</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">\width</span>, <span class="s3">Pseg</span>(<span class="s3">Pseq</span>([0.25, 0.002], <span class="s3">inf</span>), 10, <span class="s6">\exp</span>),</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>\legato<span class="s5">, 2<span class="Apple-tab-span">	</span></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>)</p>
-<p class="p3">).play</p>
-<p class="p3">)</p>
-<p class="p4"><br></p>
-<p class="p5">// compare with sine grain.</p>
-<p class="p3">(</p>
-<p class="p7">SynthDef<span class="s5">(</span><span class="s6">\gabor</span><span class="s5">, { </span>|out, i_freq = 440, i_sustain = 1, i_pan = 1, i_amp = 0.1, i_width=0.25 |</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> env = <span class="s3">EnvGen</span>.ar(<span class="s3">Env</span>.sine(i_sustain * i_width), doneAction: 2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">var</span> son = <span class="s3">FSinOsc</span>.ar(i_freq, 0.5pi, env);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s3">OffsetOut</span>.ar(out, <span class="s3">Pan2</span>.ar(son, i_pan, i_amp));</p>
-<p class="p4"><br></p>
-<p class="p3">}).add;</p>
-<p class="p3">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/LFPar.html b/Help/UGens/Oscillators/LFPar.html
deleted file mode 100644
index cfa25c5..0000000
--- a/Help/UGens/Oscillators/LFPar.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019ba; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad1d13}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019ba}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFPar</b></span><b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>parabolic oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFPar.ar(freq, iphase, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A sine-like shape made of two parabolas. It has audible odd harmonics and is non-band-limited.</p>
-<p class="p1">Output ranges from -1 to +1.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>freq</b> - frequency in Hertz</p>
-<p class="p1"><b>iphase</b> - initial phase offset in cycles ( 0..1 )</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// a plot</p>
-<p class="p6">{ <span class="s2">LFPar</span>.ar(<span class="s2">Line</span>.kr(100, 800, 0.1)) }.plot(0.1);</p>
-<p class="p2"><br></p>
-<p class="p5">// 440 Hz wave</p>
-<p class="p6">{ <span class="s2">LFPar</span>.ar(440) * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p5">// modulating frequency:</p>
-<p class="p6">{ <span class="s2">LFPar</span>.ar(<span class="s2">XLine</span>.kr(100, 2000, 10)) * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p5">// amplitude modulation:</p>
-<p class="p6">{ <span class="s2">LFPar</span>.kr(<span class="s2">XLine</span>.kr(1, 200, 10)) * <span class="s2">SinOsc</span>.ar(440) * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p5">// used as both Oscillator and LFO:</p>
-<p class="p6">{ <span class="s2">LFPar</span>.ar(<span class="s2">LFPar</span>.kr(3, 0.3, 200, 400)) * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// more examples:</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">LFPar</span>.ar(<span class="s2">LFPar</span>.kr(<span class="s2">LFPar</span>.kr(0.2,0,8,10), 0, 400,800),0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFPar</span>.ar(<span class="s2">LFPar</span>.kr(0.2, 0, 400,800),0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFPar</span>.ar(800,0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFPar</span>.ar(<span class="s2">XLine</span>.kr(100,8000,30),0,0.1) }.play</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">// compare:</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">LFCub</span>.ar(<span class="s2">LFCub</span>.kr(<span class="s2">LFCub</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFCub</span>.ar(<span class="s2">LFCub</span>.kr(0.2, 0, 400,800),0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFCub</span>.ar(800,0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFCub</span>.ar(<span class="s2">XLine</span>.kr(100,8000,30),0,0.1) }.play</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(<span class="s2">SinOsc</span>.kr(<span class="s2">SinOsc</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(<span class="s2">SinOsc</span>.kr(0.2, 0, 400,800),0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(800,0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">SinOsc</span>.ar(<span class="s2">XLine</span>.kr(100,8000,30),0,0.1) }.play</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s2">LFTri</span>.ar(<span class="s2">LFTri</span>.kr(<span class="s2">LFTri</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFTri</span>.ar(<span class="s2">LFTri</span>.kr(0.2, 0, 400,800),0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFTri</span>.ar(800,0,0.1) }.play</p>
-<p class="p6">{ <span class="s2">LFTri</span>.ar(<span class="s2">XLine</span>.kr(100,8000,30),0,0.1) }.play</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/LFPulse.html b/Help/UGens/Oscillators/LFPulse.html
deleted file mode 100644
index 849b250..0000000
--- a/Help/UGens/Oscillators/LFPulse.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFPulse<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>pulse oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFPulse.ar(freq, iphase, width, mul, add)</b></p>
-<p class="p1"><b>LFPulse.kr(freq, iphase, width, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A non-band-limited pulse oscillator. Outputs a high value of one and a low value of zero.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>freq</b> - frequency in Hertz</p>
-<p class="p1"><b>iphase</b> - initial phase offset in cycles ( 0..1 )</p>
-<p class="p1"><b>width</b> - pulse width duty cycle from zero to one.</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">// a plot</p>
-<p class="p5">{ <span class="s2">LFPulse</span>.ar(<span class="s2">Line</span>.kr(100, 800, 0.1)) }.plot(0.1);</p>
-<p class="p6"><br></p>
-<p class="p4">// 50 Hz wave</p>
-<p class="p5">{ <span class="s2">LFPulse</span>.ar(50) * 0.1 }.play;</p>
-<p class="p6"><br></p>
-<p class="p4">// modulating frequency:</p>
-<p class="p5">{ <span class="s2">LFPulse</span>.ar(<span class="s2">XLine</span>.kr(1, 200, 10), 0, 0.2, 0.1) }.play;</p>
-<p class="p6"><br></p>
-<p class="p4">// amplitude modulation:</p>
-<p class="p5">{ <span class="s2">LFPulse</span>.kr(<span class="s2">XLine</span>.kr(1, 200, 10), 0, 0.2) * <span class="s2">SinOsc</span>.ar(440) * 0.1 }.play;</p>
-<p class="p6"><br></p>
-<p class="p4">// used as both Oscillator and LFO:</p>
-<p class="p5">{ <span class="s2">LFPulse</span>.ar(<span class="s2">LFPulse</span>.kr(3, 0, 0.3, 200, 200), 0, 0.2, 0.1) }.play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">// scope:</p>
-<p class="p5"><span class="s2">Server</span>.internal.boot;</p>
-<p class="p5">{ <span class="s2">LFPulse</span>.ar(500, 0, <span class="s2">MouseX</span>.kr, 0.5) }.scope;</p>
-<p class="p6"><br></p>
-<p class="p4">// compare with band limited Pulse UGen:</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Pulse</span>.ar(100, 0.3, 0.5),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFPulse</span>.ar(100, 0, 0.3, 0.5)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>] * 0.2</p>
-<p class="p5">}.scope(bufsize: 44100, zoom: 5)</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/LFSaw.html b/Help/UGens/Oscillators/LFSaw.html
deleted file mode 100644
index 0dcaf99..0000000
--- a/Help/UGens/Oscillators/LFSaw.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFSaw<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>sawtooth oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFSaw.ar(freq, iphase, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">A non-band-limited sawtooth oscillator. Output ranges from -1 to +1.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>freq</b> - frequency in Hertz</p>
-<p class="p1"><b>iphase </b>- initial phase offset. For efficiency reasons this is a value ranging from 0 to 2.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">{ <span class="s2">LFSaw</span>.ar(500, 1, 0.1) }.play</p>
-<p class="p4"><br></p>
-<p class="p5">// used as both Oscillator and LFO:</p>
-<p class="p3">{ <span class="s2">LFSaw</span>.ar(<span class="s2">LFSaw</span>.kr(4, 0, 200, 400), 0, 0.1) }.play</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/LFTri.html b/Help/UGens/Oscillators/LFTri.html
deleted file mode 100644
index 8d4928d..0000000
--- a/Help/UGens/Oscillators/LFTri.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LFTri<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>triangle oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LFTri.ar(freq, iphase, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A non-band-limited triangle oscillator. Output ranges from -1 to +1.</p>
-<p class="p1"><b>freq</b> - frequency in Hertz</p>
-<p class="p1"><b>iphase</b> - initial phase offset. For efficiency reasons this is a value ranging from 0 to 4.</p>
-<p class="p2"><br></p>
-<p class="p3">// plot:</p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(40) }.plot(0.1);</p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(<span class="s2">XLine</span>.kr(1, 800, 0.1)) }.plot(0.1);</p>
-<p class="p5"><br></p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(500, 0, 0.1) }.play</p>
-<p class="p5"><br></p>
-<p class="p3">// used as both Oscillator and LFO:</p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(<span class="s2">LFTri</span>.kr(4, 0, 200, 400), 0, 0.1) }.play</p>
-<p class="p5"><br></p>
-<p class="p3">// phase. compare</p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(<span class="s2">LFTri</span>.kr(0.1, iphase: 0) * 200 + 400, 0, 0.1) }.play</p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(<span class="s2">LFTri</span>.kr(0.1, iphase: 1) * 200 + 400, 0, 0.1) }.play</p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(<span class="s2">LFTri</span>.kr(0.1, iphase: 2) * 200 + 400, 0, 0.1) }.play</p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(<span class="s2">LFTri</span>.kr(0.1, iphase: 3) * 200 + 400, 0, 0.1) }.play</p>
-<p class="p5"><br></p>
-<p class="p3">// together</p>
-<p class="p4">{ <span class="s2">LFTri</span>.ar(<span class="s2">LFTri</span>.kr(0.05, iphase: (0..3)) * 200 + 400, 0, 0.1).sum }.play</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Osc.html b/Help/UGens/Oscillators/Osc.html
deleted file mode 100644
index 413dee3..0000000
--- a/Help/UGens/Oscillators/Osc.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {text-decoration: underline ; color: #0016e6}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #007300}
-span.s5 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Osc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>interpolating wavetable oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Osc.ar(table, freq, phase, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Linear interpolating wavetable lookup oscillator with frequency and phase modulation inputs.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">This oscillator requires a buffer to be filled with a wavetable format signal.<span class="Apple-converted-space">  </span>This preprocesses the Signal into a form which can be used efficiently by the Oscillator.<span class="Apple-converted-space">  </span>The buffer size must be a power of 2.</p>
-<p class="p4"><br></p>
-<p class="p3">This can be acheived by creating a Buffer object and sending it one of the "b_gen" messages ( sine1, sine2, sine3 ) with the wavetable flag set to true. <span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">This can also be acheived by creating a Signal object and sending it the 'asWavetable' message, saving it to disk, and having the server load it from there.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>table</b> - buffer index</p>
-<p class="p3"><b>freq</b> - frequency in Hertz</p>
-<p class="p3"><b>phase</b> - phase offset or modulator in radians</p>
-<p class="p4"><br></p>
-<p class="p3">note about wavetables:</p>
-<p class="p3"><span class="s1"><a href="OscN.html">OscN</a></span> requires the b_gen sine1 wavetable flag to be OFF.</p>
-<p class="p3">Osc requires the b_gen sine1 wavetable flag to be ON.</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p6">b.sine1(1.0/[1,2,3,4,5,6], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"help-Osc"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Osc</span>.ar(bufnum, 200, 0, 0.5)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p6">b.sine1(1.0/[1,2,3,4,5,6], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"help-Osc"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Osc</span>.ar(bufnum, <span class="s2">XLine</span>.kr(2000,200), 0, 0.5)<span class="s5">// modulate freq</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p6">b.sine1([1.0], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"help-Osc"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Osc</span>.ar(bufnum,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Osc</span>.ar(bufnum,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">XLine</span>.kr(1,1000,9),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>200,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>800),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7">// modulate phase</p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p6">b.sine1([1.0], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"help-Osc"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Osc</span>.ar(bufnum,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>800,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Osc</span>.ar(bufnum,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">XLine</span>.kr(20,8000,10),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7">// change the buffer while its playing</p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p6">b = <span class="s2">Buffer</span>.alloc(s, 4096, 1);</p>
-<p class="p6">b.sine1(1.0/[1,2,3,4,5,6], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s3">"help-Osc"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Osc</span>.ar(bufnum, [80,80.2], 0, 0.2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">fork {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> n = 32;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>50.do {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.sine1(<span class="s2">Array</span>.rand(n,0,1).cubed, <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>};</p>
-<p class="p6">};</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/OscN.html b/Help/UGens/Oscillators/OscN.html
deleted file mode 100644
index 8c988e4..0000000
--- a/Help/UGens/Oscillators/OscN.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0018f7}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #007300}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>OscN<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>noninterpolating wavetable oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>OscN.ar(table, freq, phase, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Noninterpolating wavetable lookup oscillator with frequency and phase modulation inputs.</p>
-<p class="p3">It is usually better to use the interpolating oscillator.</p>
-<p class="p3"><b>buffer</b> - buffer index.<span class="Apple-converted-space">  </span>the buffer size must be a power of 2.<span class="Apple-converted-space">  </span>The buffer should NOT be filled using <a href="../../Collections/Wavetable.html"><span class="s1">Wavetable</span></a> format (b_gen commands should set wavetable flag to false.<span class="Apple-converted-space">  </span>Raw signals (not converted with asWavetable) can be saved to disk and loaded into the buffer.</p>
-<p class="p3"><b>freq</b> - frequency in Hertz</p>
-<p class="p3"><b>phase</b> - phase offset or modulator in radians</p>
-<p class="p4"><br></p>
-<p class="p5">// compare examples below with interpolating Osc examples.</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">s = <span class="s2">Server</span>.local;</p>
-<p class="p7">b = <span class="s2">Buffer</span>.alloc(s,512,1);</p>
-<p class="p7">b.sine1(1.0/[1,2,3,4,5,6],<span class="s2">true</span>,<span class="s2">false</span>,<span class="s2">true</span>);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">"help-OscN"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">OscN</span>.ar(bufnum, 500, 0, 0.5)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play(s,[0,0,1,b]);</p>
-<p class="p6"><br></p>
-<p class="p7">)</p>
-<p class="p7">b.free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p5">// noninterpolating - there are noticeable artifacts</p>
-<p class="p5">// modulate freq</p>
-<p class="p6"><br></p>
-<p class="p7">s = <span class="s2">Server</span>.local;</p>
-<p class="p7">b = <span class="s2">Buffer</span>.alloc(s,512,1);</p>
-<p class="p7">b.sine1(1.0/[1,2,3,4,5,6].squared,<span class="s2">true</span>,<span class="s2">false</span>,<span class="s2">true</span>);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">"help-OscN"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">OscN</span>.ar(bufnum, <span class="s2">XLine</span>.kr(2000,200), 0, 0.5)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play(s,[<span class="s4">\out</span>,0,<span class="s4">\bufnum</span>,b]);</p>
-<p class="p6"><br></p>
-<p class="p7">)</p>
-<p class="p7">b.free;</p>
-<p class="p6"><br></p>
-<p class="p7">(<span class="Apple-converted-space"> </span></p>
-<p class="p5">// sounds very different than the Osc example</p>
-<p class="p7">s = <span class="s2">Server</span>.local;</p>
-<p class="p7">b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p7">b.sine1([1.0], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">"help-OscN"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">OscN</span>.ar(bufnum,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">OscN</span>.ar(bufnum,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">XLine</span>.kr(1,1000,9),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>200,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>800),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);</p>
-<p class="p6"><br></p>
-<p class="p7">)</p>
-<p class="p7">b.free;</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p5">// modulate phase</p>
-<p class="p7">s = <span class="s2">Server</span>.local;</p>
-<p class="p7">b = <span class="s2">Buffer</span>.alloc(s, 512, 1);</p>
-<p class="p7">b.sine1([1.0], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">"help-OscN"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">OscN</span>.ar(bufnum,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>800,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">OscN</span>.ar(bufnum,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">XLine</span>.kr(20,8000,10),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2pi),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);</p>
-<p class="p7">)</p>
-<p class="p7">b.free;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p5">// change the buffer while its playing</p>
-<p class="p7">s = <span class="s2">Server</span>.local;</p>
-<p class="p7">b = <span class="s2">Buffer</span>.alloc(s, 4096, 1);</p>
-<p class="p7">b.sine1(1.0/[1,2,3,4,5,6], <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">"help-OscN"</span>,{ <span class="s2">arg</span> out=0,bufnum=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">OscN</span>.ar(bufnum, [80,80.2], 0, 0.2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufnum</span>, b]);</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p8">Routine<span class="s5">({</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> n = 32;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>50.do({</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b.sine1(<span class="s2">Array</span>.rand(n,0,1).cubed, <span class="s2">true</span>, <span class="s2">true</span>, <span class="s2">true</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>});</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p7">b.free;</p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/PMOsc.html b/Help/UGens/Oscillators/PMOsc.html
deleted file mode 100644
index 5e23b50..0000000
--- a/Help/UGens/Oscillators/PMOsc.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PMOsc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>phase modulation oscillator pair</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PMOsc.ar(carfreq, modfreq, pmindex, modphase, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Phase modulation sine oscillator pair.</p>
-<p class="p3"><b>carfreq</b> - carrier frequency in cycles per second.</p>
-<p class="p3"><b>modfreq</b> - modulator frequency in cycles per second.</p>
-<p class="p3"><b>pmindex</b> - modulation index in radians.</p>
-<p class="p3"><b>modphase</b> - a modulation input for the modulator's phase in radians</p>
-<p class="p4"><br></p>
-<p class="p5">play({ <span class="s1">PMOsc</span>.ar(<span class="s1">Line</span>.kr(600, 900, 5), 600, 3, 0, 0.1) }); <span class="s2">// modulate carfreq</span></p>
-<p class="p6"><br></p>
-<p class="p5">play({ <span class="s1">PMOsc</span>.ar(300, <span class="s1">Line</span>.kr(600, 900, 5), 3, 0, 0.1) }); <span class="s2">// modulate modfreq</span></p>
-<p class="p6"><br></p>
-<p class="p5">play({ <span class="s1">PMOsc</span>.ar(300, 550, <span class="s1">Line</span>.ar(0,20,8), 0, 0.1) }); <span class="s2">// modulate index</span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">e = <span class="s1">Env</span>.linen(2, 5, 2);</p>
-<p class="p5"><span class="s1">Routine</span>.run({<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>play({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LinPan2</span>.ar(<span class="s1">EnvGen</span>.ar(e) *</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">PMOsc</span>.ar(2000.0.rand,800.0.rand, <span class="s1">Line</span>.kr(0.0, 12.0.rand,9),0,0.1), 1.0.rand2)});</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">}))</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Pulse.html b/Help/UGens/Oscillators/Pulse.html
deleted file mode 100644
index 482f2b4..0000000
--- a/Help/UGens/Oscillators/Pulse.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #7b321d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0522ef}
-span.s3 {color: #0a1fad}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pulse<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>band limited pulse wave</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Pulse.ar(freq, width, mul, add)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Band limited pulse wave generator with pulse width modulation.</p>
-<p class="p1"><b>freq</b> - Frequency in Hertz (control rate)</p>
-<p class="p1"><b>width</b> - Pulse width ratio from zero to one. 0.5 makes a square wave (control rate)</p>
-<p class="p3"><br></p>
-<p class="p1"><b>See also:</b> <a href="LFPulse.html"><span class="s2">LFPulse</span></a></p>
-<p class="p4"><br></p>
-<p class="p5">// modulate frequency</p>
-<p class="p6">{ <span class="s3">Pulse</span>.ar(<span class="s3">XLine</span>.kr(40,4000,6),0.1, 0.2) }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">// modulate pulse width</p>
-<p class="p6">{ <span class="s3">Pulse</span>.ar(200, <span class="s3">Line</span>.kr(0.01,0.99,8), 0.2) }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">// two band limited square waves thru a resonant low pass filter</p>
-<p class="p6">{ <span class="s3">RLPF</span>.ar(<span class="s3">Pulse</span>.ar([100,250],0.5,0.1), <span class="s3">XLine</span>.kr(8000,400,5), 0.05) }.play;</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Saw.html b/Help/UGens/Oscillators/Saw.html
deleted file mode 100644
index 6479314..0000000
--- a/Help/UGens/Oscillators/Saw.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #7b321d}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0522ef}
-span.s3 {color: #0a1fad}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Saw<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>band limited sawtooth</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Saw.ar(freq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Band limited sawtooth wave generator.</p>
-<p class="p1"><b>freq</b> - Frequency in Hertz (control rate).</p>
-<p class="p2"><br></p>
-<p class="p1"><b>See also:</b> <a href="LFSaw.html"><span class="s2">LFSaw</span></a></p>
-<p class="p2"><br></p>
-<p class="p3">// modulating the frequency</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s3">Saw</span>.ar(<span class="s3">XLine</span>.kr(40,4000,6),0.2) }.play;</p>
-<p class="p4"><br></p>
-<p class="p3">// two band limited sawtooth waves through a resonant low pass filter</p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s3">RLPF</span>.ar(<span class="s3">Saw</span>.ar([100,250],0.1), <span class="s3">XLine</span>.kr(8000,400,5), 0.05) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/Shaper.html b/Help/UGens/Oscillators/Shaper.html
deleted file mode 100644
index 6b19461..0000000
--- a/Help/UGens/Oscillators/Shaper.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001bb9}
-span.s3 {color: #000000}
-span.s4 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Shaper<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>wave shaping oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Shaper.ar(bufnum, in, mul, add)</b></p>
-<p class="p1"><b>Shaper.kr(bufnum, in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Performs waveshaping on the input signal by indexing into the table.</p>
-<p class="p1"><b>bufnum</b> - the number of a buffer filled in wavetable format containing the transfer function.</p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p2"><br></p>
-<p class="p1">Examples use the Internal Server to show the effect of waveshaping via a scope. Use .play instead if necessary. <span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">Server</span>.default = s = <span class="s2">Server</span>.internal; s.boot;</p>
-<p class="p5"><br></p>
-<p class="p4">b = <span class="s2">Buffer</span>.alloc(s, 512, 1, { <span class="s2">|buf|</span> buf.chebyMsg([1,0,1,1,0,1])});</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>Shaper<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(300, 0, <span class="s2">Line</span>.kr(0,1,6)),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p4">}.scope;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">b.free;</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Wave shaping transfer functions are typically designed by using Chebyshev polynomials to control which harmonics are generated when a cosine wave is passed in. The implementation in SuperCollider compensates for the DC offset due to even polynomial terms, making sure that when 0 is put into the transfer function, you get 0 out. By default, normalization is set to true, which avoids output overload. If you want to construct a transfer function without this, you need to be careful with the final output scaling, since it could easily overload the -1 to 1 range for audio.</p>
-<p class="p2"><br></p>
-<p class="p7">// I want the first harmonic at 0.25 amplitude, second at 0.5, third at 0.25</p>
-<p class="p4">b = <span class="s2">Buffer</span>.alloc(s, 512, 1, {<span class="s2">arg</span> buf; buf.chebyMsg([0.25,0.5,0.25], <span class="s2">false</span>)});</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>Shaper<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0.5pi, <span class="s2">Line</span>.kr(0,1,6)), <span class="s4">//input cosine wave</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5 </span>//scale output down because otherwise it goes between -1.05 and 0.5, distorting...</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p4">}.scope;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">b.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">For those who like to make their own wavetables for arbitrary shapers, your buffer must be in wavetable format to have a valid transfer function. Wavetable format is a special representation to make linear interpolation faster (see at the bottom of this file). You don't have to worry about this directly, because there are two straight forward ways to get wavetables into a server buffer. First, the server can generate them (see the Buffer help file for the methods sine1, sine2, sine3 and cheby):</p>
-<p class="p5"><br></p>
-<p class="p4">b = <span class="s2">Buffer</span>.alloc(s, 1024, 1);</p>
-<p class="p4">b.cheby([1, 0.5, 1, 0.125]);</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4">{ <span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>sig = <span class="s2">Shaper</span>.ar(b, <span class="s2">SinOsc</span>.ar(440, 0, 0.4));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig ! 2</p>
-<p class="p4">}.scope;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">b.free;</p>
-<p class="p5"><br></p>
-<p class="p1">Or, you can calculate the transfer function in a client-side array (Signal class) then convert it to a wavetable and send the data over.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">b = <span class="s2">Buffer</span>.alloc(s, 1024, 1);</p>
-<p class="p5"><br></p>
-<p class="p4">//size must be power of two plus 1</p>
-<p class="p4">t = <span class="s2">Signal</span>.chebyFill(513,[1, 0.5, 1, 0.125]);</p>
-<p class="p5"><br></p>
-<p class="p7">// linear function</p>
-<p class="p4">t.plot</p>
-<p class="p5"><br></p>
-<p class="p7">// t.<span class="s3">asWavetableNoWrap</span> will convert it to the official Wavetable format at next power of two size</p>
-<p class="p4">b.sendCollection(t.asWavetableNoWrap);<span class="Apple-converted-space">  </span><span class="s4">// may also use loadCollection here</span></p>
-<p class="p5"><br></p>
-<p class="p4">b.plot</p>
-<p class="p5"><br></p>
-<p class="p4">(</p>
-<p class="p4">{ <span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>sig = <span class="s2">Shaper</span>.ar(b, <span class="s2">SinOsc</span>.ar(440, 0, 0.4));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig ! 2</p>
-<p class="p4">}.scope;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">b.free;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p1">This way of working then allows you to get creative with your transfer functions!<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">b = <span class="s2">Buffer</span>.alloc(s, 1024, 1);</p>
-<p class="p5"><br></p>
-<p class="p7">// or, for an arbitrary transfer function, create the data at 1/2 buffer size + 1</p>
-<p class="p4">t = <span class="s2">Signal</span>.fill(513, { <span class="s2">|i|</span> i.linlin(0.0, 512.0, -1.0, 1.0) });</p>
-<p class="p5"><br></p>
-<p class="p7">// linear function</p>
-<p class="p4">t.plot</p>
-<p class="p5"><br></p>
-<p class="p7">// t.asWavetable will convert it to the official Wavetable format at twice the size</p>
-<p class="p4">b.sendCollection(t.asWavetableNoWrap);<span class="Apple-converted-space">  </span><span class="s4">// may also use loadCollection here</span></p>
-<p class="p5"><br></p>
-<p class="p7">// shaper has no effect because of the linear transfer function</p>
-<p class="p4">(</p>
-<p class="p4">{ <span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>sig = <span class="s2">Shaper</span>.ar(b, <span class="s2">SinOsc</span>.ar(440, 0, 0.4));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>sig ! 2</p>
-<p class="p4">}.scope;</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// now for a twist</p>
-<p class="p4">(</p>
-<p class="p4">a = <span class="s2">Signal</span>.fill(256, { <span class="s2">|i|</span><span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> t = i/255.0; <span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>t + (0.1 * (max(t, 0.1) - 0.1) * sin(2pi * t * 80 + sin(2pi * 25.6 * t)))</p>
-<p class="p4">})</p>
-<p class="p4">);</p>
-<p class="p5"><br></p>
-<p class="p4">a.plot</p>
-<p class="p5"><br></p>
-<p class="p4">d = (a.copy.reverse.neg) ++(Signal[0])++ a;</p>
-<p class="p5"><br></p>
-<p class="p4">d.plot</p>
-<p class="p5"><br></p>
-<p class="p4">d.size<span class="Apple-tab-span">	</span>//must be buffer size/2 + 1, so 513 is fine</p>
-<p class="p5"><br></p>
-<p class="p4">b.sendCollection(d.asWavetableNoWrap);<span class="Apple-converted-space">  </span><span class="s4">// may also use loadCollection here</span></p>
-<p class="p5"><br></p>
-<p class="p7"><span class="s3">b.plot </span>// wavetable format!<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p7">// test shaper</p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>Shaper<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(440, 0.5, <span class="s2">Line</span>.kr(0,0.9,6))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p4">}.scope</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p1">.</p>
-<p class="p1">///////////////////////////////////////////////////////////////</p>
-<p class="p1">Advanced notes: wavetable format</p>
-<p class="p1">///////////////////////////////////////////////////////////////</p>
-<p class="p2"><br></p>
-<p class="p1">Signal: [a0, a1, a2...]</p>
-<p class="p1">Wavetable: [2*a0-a1, a1-a0, 2*a1-a2, a2-a1, 2*a2-a3, a3-a2...]</p>
-<p class="p2"><br></p>
-<p class="p1">This strange format is not a standard linear interpolation (integer + frac), but for (integer part -1) and (1+frac))<span class="Apple-converted-space">  </span>due to some efficient maths for integer to float conversion in the underlying C code.<span class="Apple-converted-space"> </span></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/SinOsc.html b/Help/UGens/Oscillators/SinOsc.html
deleted file mode 100644
index eabaedc..0000000
--- a/Help/UGens/Oscillators/SinOsc.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0026b4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SinOsc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>interpolating sine wavetable oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>SinOsc.ar(freq, phase, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Sinusoidal oscillator; a sine tone. <span class="Apple-converted-space">   </span></p>
-<p class="p4"><br></p>
-<p class="p3">Note: This is the same as Osc except that the table has already been fixed as a sine table of 8192 entries.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>freq</b> - frequency in Hertz</p>
-<p class="p3"><b>phase</b> - phase offset or modulator in radians</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s2">SinOsc</span>.ar(200, 0, 0.5) }.play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// modulate freq</p>
-<p class="p5">{ <span class="s2">SinOsc</span>.ar(<span class="s2">XLine</span>.kr(2000, 200), 0, 0.5) }.play;</p>
-<p class="p6"><br></p>
-<p class="p7">// modulate freq</p>
-<p class="p5">{ <span class="s2">SinOsc</span>.ar(<span class="s2">SinOsc</span>.ar(<span class="s2">XLine</span>.kr(1, 1000, 9), 0, 200, 800), 0, 0.25) }.play;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// modulate phase</p>
-<p class="p5">{ <span class="s2">SinOsc</span>.ar(800, <span class="s2">SinOsc</span>.ar(<span class="s2">XLine</span>.kr(1, 1000, 9), 0, 2pi), 0.25) }.play;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/SyncSaw.html b/Help/UGens/Oscillators/SyncSaw.html
deleted file mode 100644
index ebf3358..0000000
--- a/Help/UGens/Oscillators/SyncSaw.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #000000}
-span.s4 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SyncSaw<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>hard sync sawtooth wave</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>SyncSaw.ar(ksyncFreq, ksawFreq, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">A sawtooth wave that is hard synched to a fundamental pitch. This produces an effect similar to<span class="Apple-converted-space">  </span>moving formants or pulse width modulation. The sawtooth oscillator has its phase reset when the sync oscillator completes a cycle. This is not a band limited waveform, so it may alias.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>ksyncFreq</b> - frequency of the fundamental.</p>
-<p class="p1"><b>ksawFreq</b> - frequency of the slave synched sawtooth wave. sawFreq should always be greater than syncFreq.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">{ <span class="s2">SyncSaw</span>.ar(100, <span class="s2">Line</span>.kr(100, 800, 12), 0.1) }.play;</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">plot { [</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">SyncSaw</span>.ar(800, 1200),</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">Impulse</span><span class="s3">.ar(800) </span>// to show sync rate</p>
-<p class="p4">] }</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4">plot { [</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">SyncSaw</span>.ar(800, <span class="s2">Line</span>.kr(800, 1600, 0.01)), <span class="s4">// modulate saw freq</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">Impulse</span><span class="s3">.ar(800) </span>// to show sync rate</p>
-<p class="p4">] }</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p6">// scoping the saw: hit 's' when focused on the scope window to compare the channels</p>
-<p class="p4">(</p>
-<p class="p4">scope {<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>var freq = 400;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">SyncSaw</span>.ar(freq, freq * <span class="s2">MouseX</span>.kr(1, 3)), <span class="s4">// modulate saw freq</span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s2">Impulse</span><span class="s3">.ar(freq) </span>// to show sync rate</p>
-<p class="p4">] * 0.3 }</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/VOsc.html b/Help/UGens/Oscillators/VOsc.html
deleted file mode 100644
index c633a22..0000000
--- a/Help/UGens/Oscillators/VOsc.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-span.s1 {color: #0018f7}
-span.s2 {color: #091fb1}
-span.s3 {color: #000000}
-span.s4 {color: #456c20}
-span.s5 {color: #606060}
-span.s6 {color: #902a19}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>VOsc<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>variable wavetable oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>VOsc.ar(table, freq, phase, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">A wavetable lookup oscillator which can be swept smoothly across wavetables. All the wavetables must be allocated to the same size. Fractional values of table will interpolate between two adjacent tables.</p>
-<p class="p4"><br></p>
-<p class="p3">This oscillator requires at least two buffers to be filled with a wavetable format signal.<span class="Apple-converted-space">  </span>This preprocesses the Signal into a form which can be used efficiently by the Oscillator.<span class="Apple-converted-space">  </span>The buffer size must be a power of 2.</p>
-<p class="p4"><br></p>
-<p class="p3">This can be acheived by creating a Buffer object and sending it one of the "b_gen" messages ( sine1, sine2, sine3 ) with the wavetable flag set to true. <span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">This can also be acheived by creating a Signal object and sending it the 'asWavetable' message, saving it to disk, and having the server load it from there.</p>
-<p class="p4"><br></p>
-<p class="p3">If you use Buffer objects to manage buffer numbers, you can use the *allocConsecutive method to allocate a continuous block of buffers. See the <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a> helpfile for details. Note that since VOsc uses fractional buffer numbers you will need to call <b>bufnum</b> on any Buffer objects which are used directly as UGen inputs.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>table</b> - buffer index. Can be swept continuously among adjacent wavetable buffers of the same size.</p>
-<p class="p3"><b>freq</b> - frequency in Hertz</p>
-<p class="p3"><b>phase</b> - phase offset or modulator in radians</p>
-<p class="p4"><br></p>
-<p class="p3">note about wavetables:</p>
-<p class="p3">VOsc requires the b_gen sine1 wavetable flag to be ON.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p7">// allocate and fill tables 0 to 7</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> n, a;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// allocate table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>n = (i+1)**2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(n, { <span class="s2">arg</span> j; ((n-j)/n).squared.round(0.001) });</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s5">"help-VOsc"</span>,{ <span class="s2">arg</span> out=0, bufoffset=0;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>// mouse x controls the wavetable position</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s2">MouseX</span>.kr(0,7);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">VOsc</span>.ar(bufoffset+x, [120,121], 0, 0.3)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufoffset</span>, 0]);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(i, 0) ++ [0.5, 1, 0.5];</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> a;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(32,0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>12.do({ <span class="s2">arg</span> i; a.put(32.rand, 1) });</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> a;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>n = (i+1)**2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(n, { <span class="s2">arg</span> j; 1.0.rand2 });</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/VOsc3.html b/Help/UGens/Oscillators/VOsc3.html
deleted file mode 100644
index de8b2d2..0000000
--- a/Help/UGens/Oscillators/VOsc3.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-span.s1 {color: #0018f7}
-span.s2 {color: #091fb1}
-span.s3 {color: #000000}
-span.s4 {color: #456c20}
-span.s5 {color: #606060}
-span.s6 {color: #902a19}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>VOsc3<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>three variable wavetable oscillators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>VOsc3.ar(table, freq1, freq2, freq3, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">A wavetable lookup oscillator which can be swept smoothly across wavetables. All the wavetables must be allocated to the same size. Fractional values of table will interpolate between two adjacent tables. This unit generator contains three oscillators at different frequencies, mixed together.</p>
-<p class="p4"><br></p>
-<p class="p3">This oscillator requires at least two buffers to be filled with a wavetable format signal.<span class="Apple-converted-space">  </span>This preprocesses the Signal into a form which can be used efficiently by the Oscillator.<span class="Apple-converted-space">  </span>The buffer size must be a power of 2.</p>
-<p class="p4"><br></p>
-<p class="p3">This can be achieved by creating a Buffer object and sending it one of the "b_gen" messages ( sine1, sine2, sine3 ) with the wavetable flag set to true. <span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">This can also be achieved by creating a Signal object and sending it the 'asWavetable' message, saving it to disk, and having the server load it from there.</p>
-<p class="p4"><br></p>
-<p class="p3">If you use Buffer objects to manage buffer numbers, you can use the *allocConsecutive method to allocate a continuous block of buffers. See the <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a> helpfile for details. Note that since VOsc uses fractional buffer numbers you will need to call <b>bufnum</b> on any Buffer objects which are used directly as UGen inputs.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>table</b> - buffer index. Can be swept continuously among adjacent wavetable buffers of the same size.</p>
-<p class="p3"><b>freq1, freq1, freq3</b> - frequencies in Hertz of the three oscillators</p>
-<p class="p3"><b>phase</b> - phase offset or modulator in radians</p>
-<p class="p4"><br></p>
-<p class="p3">note about wavetables:</p>
-<p class="p3">VOsc3 requires the b_gen sine1 wavetable flag to be ON.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p7">// allocate and fill tables 0 to 7</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> n, a;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// allocate table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>n = (i+1)**2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(n, { <span class="s2">arg</span> j; ((n-j)/n).squared.round(0.001) });</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s2">SynthDef</span>(<span class="s5">"help-VOsc"</span>,{ <span class="s2">arg</span> out=0, bufoffset=0, freq=240;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> x;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>// mouse x controls the wavetable position</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x = <span class="s2">MouseX</span>.kr(0,7);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">VOsc3</span>.ar(bufoffset+x, freq+[0,1],freq+[0.37,1.1],freq+[0.43, -0.29], 0.3)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s,[<span class="s4">\out</span>, 0, <span class="s4">\bufoffset</span>, 0]);</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(i, 0) ++ [0.5, 1, 0.5];</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> a, n;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p7"><span class="Apple-tab-span">	</span>n = (i+1)*8;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(n,0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>(n>>1).do({ <span class="s2">arg</span> i; a.put(n.rand, 1) });</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> a;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>n = (i+1)**2;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>a = <span class="s2">Array</span>.fill(n, { <span class="s2">arg</span> j; 1.0.rand2 });</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a);</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">var a;</p>
-<p class="p6">a = <span class="s2">Array</span>.fill(64, { <span class="s2">arg</span> j; 1.0.rand2 });</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>n = (i+1)**2;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a.extend(n.asInteger));</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">var a;</p>
-<p class="p6">a = <span class="s2">Array</span>.fill(64, { <span class="s2">arg</span> j; 1/(j+1) });</p>
-<p class="p6">8.do({ <span class="s2">arg</span> i;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s4">\b_alloc</span>, i, 1024); <span class="s6">// allocate table</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="Apple-tab-span">	</span>n = (i+1)**2;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.performList(<span class="s4">\sendMsg</span>, <span class="s4">\b_gen</span>, i, <span class="s4">\sine1</span>, 7, a.extend(n.asInteger));</p>
-<p class="p6">});</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Oscillators/VarSaw.html b/Help/UGens/Oscillators/VarSaw.html
deleted file mode 100644
index 87c617d..0000000
--- a/Help/UGens/Oscillators/VarSaw.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>VarSaw<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>variable duty saw</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>VarSaw.ar(freq, iphase,width, mul, add)</b></p>
-<p class="p3"><b>VarSaw.kr(freq, iphase,width, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>freq</b> - frequency in Hertz</p>
-<p class="p3"><b>iphase</b> - initial phase offset in cycles ( 0..1 )</p>
-<p class="p3"><b>width</b> - duty cycle from zero to one.</p>
-<p class="p4"><b></b><br></p>
-<p class="p5"><br></p>
-<p class="p6">({</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>VarSaw<span class="s1">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFPulse</span>.kr(#[3, 3.03], 0, 0.3, 200, 200),<span class="Apple-tab-span">	</span><span class="s3">//freq</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">//iphase</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFTri</span>.kr(1.0).range(0, 1),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">//width</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">//mul</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8"><span class="s1">({<span class="Apple-tab-span">	</span></span>//same but with static width</p>
-<p class="p7"><span class="s1"><span class="Apple-tab-span">	</span></span>VarSaw<span class="s1">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFPulse</span>.kr(#[3, 3.03], 0, 0.3, 200, 200),<span class="Apple-tab-span">	</span><span class="s3">//freq</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">//iphase</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">//width</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">//mul</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">//compare:</p>
-<p class="p6"><span class="s2">Server</span>.internal.boot;</p>
-<p class="p6">({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>[</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFPulse</span>.ar(<span class="s2">LFPulse</span>.kr(3, 0, 0.3, 200, 200), 0, 0.2, 0.1),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">VarSaw</span>.ar(<span class="s2">LFPulse</span>.kr(3, 0, 0.3, 200, 200), 0, 0.2, 0.1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>]</p>
-<p class="p6">}.scope(bufsize: 44100, zoom: 5)</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/PV_ChainUGen.html b/Help/UGens/PV_ChainUGen.html
deleted file mode 100644
index 872e466..0000000
--- a/Help/UGens/PV_ChainUGen.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial; background-color: #f9f9f9; min-height: 15.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Arial; background-color: #f9f9f9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0026b4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PV_ChainUGen<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>UGens that alter FFT chains</b></p>
-<p class="p2"><br></p>
-<p class="p3">"PV_ChainUGen" is an <i>abstract class</i> - in other words, a class that you do not use directly. Instead, use one of its subclasses. It represents <b>phase-vocoder</b> <a href="UGen.html"><span class="s2">UGen</span></a>s - i.e. UGens which apply some kind of transformation to the frequency-domain signal produced by <a href="FFT/FFT.html"><span class="s2">FFT</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3">(Strictly, this class encompasses all units whose <em>output</em> is an FFT chain. This is why FFT is in this group but IFFT is not - the IFFT unit outputs ordinary time-domain audio.)</p>
-<p class="p2"><br></p>
-<p class="p3">For more info on using these units, see <a href="FFT/FFT Overview.html"><span class="s2">FFT Overview</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3">To see all classes which derive from the PV_ChainUGen class, run this line:</p>
-<p class="p4"><span class="s3">PV_ChainUGen</span>.allSubclasses.do(<span class="s3">_</span>.postln)</p>
-</body>
-</html>
diff --git a/Help/UGens/Playback and Recording/DiskIn.html b/Help/UGens/Playback and Recording/DiskIn.html
deleted file mode 100644
index 13e1dc4..0000000
--- a/Help/UGens/Playback and Recording/DiskIn.html	
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000ca0; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ac0d06}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #4d4d4d}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000db0}
-span.s1 {color: #0012f3}
-span.s2 {color: #0012fd}
-span.s3 {color: #000000}
-span.s4 {color: #000db0}
-span.s5 {color: #4d4d4d}
-span.s6 {color: #ac0d06}
-span.s7 {color: #176208}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>DiskIn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream in audio from a file</b></p>
-<p class="p1">add</p>
-<p class="p2"><br></p>
-<p class="p3"><b>DiskIn.ar(numChannels, bufnum, loop )</b></p>
-<p class="p2"><br></p>
-<p class="p3">Continuously play a longer soundfile from disk.<span class="Apple-converted-space">  </span>This requires a buffer to be preloaded with one buffer size of sound. If loop is set to 1, the soundfile will loop.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>See also:</b> <a href="PlayBuf.html"><span class="s1">PlayBuf</span></a>, <a href="../Oscillators/BufRd.html"><span class="s2">BufRd</span></a><span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">s.boot; </span>// start the server</p>
-<p class="p5"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s4">SynthDef</span>(<span class="s5">"help-Diskin"</span>, { <span class="s4">arg</span> bufnum = 0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, <span class="s4">DiskIn</span>.ar(1, bufnum, 1));</p>
-<p class="p7">}).add</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p8"><b>Using Buffer (Object Style)</b></p>
-<p class="p5"><br></p>
-<p class="p7">b = <span class="s4">Buffer</span>.cueSoundFile(s, <span class="s5">"sounds/a11wlk01-44_1.aiff"</span>, 0, 1);</p>
-<p class="p5"><br></p>
-<p class="p7">x = { <span class="s4">DiskIn</span>.ar(1, b) }.play;</p>
-<p class="p5"><br></p>
-<p class="p7">b.close;<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p6">// again</p>
-<p class="p6">// note the like named instance method, but different arguments</p>
-<p class="p9"><span class="s3">b.cueSoundFile(</span>"sounds/a11wlk01-44_1.aiff"<span class="s3">, 0);<span class="Apple-tab-span">	</span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p7">x.free; b.close; b.free;<span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// loop it (for better looping use PlayBuf!)</p>
-<p class="p7">(</p>
-<p class="p9"><span class="s3">p = </span>"sounds/a11wlk01-44_1.aiff"<span class="s3">;</span></p>
-<p class="p7">a = <span class="s4">SoundFile</span>.new;</p>
-<p class="p7">a.openRead(p);</p>
-<p class="p7">d = a.numFrames/s.sampleRate; <span class="s6">// get the duration</span></p>
-<p class="p6"><span class="s3">a.close; </span>// don't forget</p>
-<p class="p7">b = <span class="s4">Buffer</span>.cueSoundFile(s, p, 0, 1);</p>
-<p class="p7">f = { <span class="s4">DiskIn</span>.ar(1, b) };</p>
-<p class="p7">x = f.play;</p>
-<p class="p10"><span class="s3">r = </span>Routine<span class="s3">({</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>loop({ d.wait; x.free; x = f.play; b.close( b.cueSoundFileMsg(p, 0)) });</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p6"><span class="s3">r.stop; x.free; b.close; b.free; </span>// you need to do all these to properly cleanup</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// cue and play right away</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s4">SynthDef</span>(<span class="s5">"help-Diskin"</span>, { <span class="s4">arg</span> bufnum = 0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(0, <span class="s4">DiskIn</span>.ar(1, bufnum));</p>
-<p class="p7">}).add;</p>
-<p class="p7">)</p>
-<p class="p7">(<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7">x = <span class="s4">Synth</span>.basicNew(<span class="s5">"help-Diskin"</span>);</p>
-<p class="p7">m = { <span class="s4">arg</span> buf; x.addToHeadMsg(<span class="s4">nil</span>, [<span class="s7">\bufnum</span>, buf])};</p>
-<p class="p5"><br></p>
-<p class="p7">b = <span class="s4">Buffer</span>.cueSoundFile(s,<span class="s5">"sounds/a11wlk01-44_1.aiff"</span>,0,1, completionMessage: m);</p>
-<p class="p7">)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><br></p>
-<p class="p7">x.free; b.close; b.free;<span class="Apple-tab-span">	</span><span class="s6">//clean up</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8"><b>OSC Messaging Style</b></p>
-<p class="p5"><br></p>
-<p class="p6">// allocate a disk i/o buffer</p>
-<p class="p7">s.sendMsg(<span class="s5">"/b_alloc"</span>, 0, 65536, 1);</p>
-<p class="p5"><br></p>
-<p class="p6">// open an input file for this buffer, leave it open</p>
-<p class="p9"><span class="s3">s.sendMsg(</span>"/b_read"<span class="s3">, 0, </span>"sounds/a11wlk01-44_1.aiff"<span class="s3">, 0, 65536, 0, 1);</span></p>
-<p class="p5"><br></p>
-<p class="p6">// create a diskin node</p>
-<p class="p7">s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"help-Diskin"</span>, x = s.nextNodeID, 1, 1);</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">s.sendMsg(</span><span class="s5">"/b_close"</span><span class="s3">, 0); </span>// close the file (very important!)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// again<span class="Apple-converted-space"> </span></p>
-<p class="p6">// don't need to reallocate and Synth is still reading</p>
-<p class="p9"><span class="s3">s.sendMsg(</span>"/b_read"<span class="s3">, 0, </span>"sounds/a11wlk01-44_1.aiff"<span class="s3">, 0, 0, 0, 1);</span></p>
-<p class="p5"><br></p>
-<p class="p7">s.sendMsg(<span class="s5">"/n_free"</span>, x); <span class="s6">// stop reading</span></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">s.sendMsg(</span><span class="s5">"/b_close"</span><span class="s3">, 0); </span>// close the file.</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s3">s.sendMsg(</span><span class="s5">"/b_free"</span><span class="s3">, 0); </span>// frees the buffer</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Playback and Recording/DiskOut.html b/Help/UGens/Playback and Recording/DiskOut.html
deleted file mode 100644
index 5aeef2f..0000000
--- a/Help/UGens/Playback and Recording/DiskOut.html	
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #782c1a; min-height: 14.0px}
-span.s1 {color: #001fee}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #bf0000}
-span.s5 {color: #606060}
-span.s6 {color: #007300}
-span.s7 {font: 9.0px Monaco; color: #782c1a}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>DiskOut</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>DiskOut.ar(bufnum, channelsArray)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Record to a soundfile to disk. Uses a <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a>.</p>
-<p class="p3"><b>bufnum</b> - the number of the buffer to write to (prepared with /b-write or Buffer.write)<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>channelsArray</b> - the Array of channels to write to the file.</p>
-<p class="p2"><br></p>
-<p class="p3">The output of DiskOut is the number of frames written to disk.</p>
-<p class="p2"><br></p>
-<p class="p3">Note that the number of channels in the buffer and the channelsArray must be the same, otherwise DiskOut will fail silently (and not write anything to your file).</p>
-<p class="p2"><br></p>
-
-<p class="p5"><span class="s2">s.boot; </span>// start the server</p>
-<p class="p6">(</p>
-<p class="p5">// something to record</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"bubbles"<span class="s2">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> f, zout;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f = <span class="s3">LFSaw</span>.kr(0.4, 0, 24, <span class="s3">LFSaw</span>.kr([8,7.23], 0, 3, 80)).midicps; <span class="s4">// glissando function</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>zout = <span class="s3">CombN</span>.ar(<span class="s3">SinOsc</span>.ar(f, 0, 0.04), 0.2, 0.2, 4); <span class="s4">// echoing sine wave</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, zout);</p>
-<p class="p6">}).send(s);</p>
-<p class="p8"><br></p>
-<p class="p5">// this will record to the disk</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"help-Diskout"<span class="s2">, {</span><span class="s3">arg</span><span class="s2"> bufnum;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">DiskOut</span>.ar(bufnum, <span class="s3">In</span>.ar(0,2));</p>
-<p class="p6">}).send(s);</p>
-<p class="p8"><br></p>
-<p class="p5">// this will play it back</p>
-<p class="p7"><span class="s3">SynthDef</span><span class="s2">(</span>"help-Diskin-2chan"<span class="s2">, { </span><span class="s3">arg</span><span class="s2"> bufnum = 0;</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, <span class="s3">DiskIn</span>.ar(2, bufnum));</p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Object Style:</b></p>
-<p class="p8"><br></p>
-<p class="p5">// start something to record</p>
-<p class="p6">x = <span class="s3">Synth</span>.new(<span class="s5">"bubbles"</span>);</p>
-<p class="p8"><br></p>
-<p class="p5">// allocate a disk i/o buffer</p>
-<p class="p6">b= <span class="s3">Buffer</span>.alloc(s, 65536, 2);</p>
-<p class="p8"><br></p>
-<p class="p5">// create an output file for this buffer, leave it open</p>
-<p class="p6">b.write(<span class="s5">"~/diskouttest.aiff"</span>.standardizePath, <span class="s5">"aiff"</span>, <span class="s5">"int16"</span>, 0, 0, <span class="s3">true</span>);</p>
-<p class="p5">// create the diskout node; making sure it comes after the source</p>
-<p class="p7"><span class="s2">d = </span><span class="s3">Synth</span><span class="s2">.tail(</span><span class="s3">nil</span><span class="s2">, </span>"help-Diskout"<span class="s2">, [</span>"bufnum"<span class="s2">, b]);</span></p>
-<p class="p5">// stop recording</p>
-<p class="p6">d.free;</p>
-<p class="p5">// stop the bubbles</p>
-<p class="p6">x.free;</p>
-<p class="p5">// close the buffer and the soundfile</p>
-<p class="p6">b.close;</p>
-<p class="p5">// free the buffer</p>
-<p class="p6">b.free;</p>
-<p class="p2"><br></p>
-<p class="p5">// play it back</p>
-<p class="p6">(</p>
-<p class="p7"><span class="s2">x = </span><span class="s3">Synth</span><span class="s2">.basicNew(</span>"help-Diskin-2chan"<span class="s2">);</span></p>
-<p class="p6">m = { <span class="s3">arg</span> buf; x.addToHeadMsg(<span class="s3">nil</span>, [<span class="s6">\bufnum</span>,buf])};</p>
-<p class="p8"><br></p>
-<p class="p6">b = <span class="s3">Buffer</span>.cueSoundFile(s,<span class="s5">"~/diskouttest.aiff"</span>.standardizePath, 0, 2, completionMessage: m);</p>
-<p class="p6">)</p>
-<p class="p6">x.free; b.close; b.free; <span class="s4">// cleanup</span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Messaging Style</b><span class="s7">:</span></p>
-<p class="p8"><br></p>
-<p class="p5">// The same thing done in Messaging Style (less overhead but without the convienence of objects)</p>
-<p class="p5">// start something to record</p>
-<p class="p6">s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"bubbles"</span>, 2003, 1, 1);</p>
-<p class="p8"><br></p>
-<p class="p5">// allocate a disk i/o buffer</p>
-<p class="p6">s.sendMsg(<span class="s5">"/b_alloc"</span>, 0, 65536, 2); <span class="s4">// Buffer number is 0</span></p>
-<p class="p8"><br></p>
-<p class="p5">// create an output file for this buffer, leave it open</p>
-<p class="p6">s.sendMsg(<span class="s5">"/b_write"</span>, 0, <span class="s5">"~/diskouttest.aiff"</span>.standardizePath, <span class="s5">"aiff"</span>, <span class="s5">"int16"</span>, 0, 0, 1);</p>
-<p class="p8"><br></p>
-<p class="p5">// create the diskout node</p>
-<p class="p6">s.sendMsg(<span class="s5">"/s_new"</span>, <span class="s5">"help-Diskout"</span>, 2004, 3, 2003, <span class="s5">"bufnum"</span>, 0);</p>
-<p class="p8"><br></p>
-<p class="p6">s.sendMsg(<span class="s5">"/n_free"</span>, 2004); <span class="s4">// stop recording</span></p>
-<p class="p6">s.sendMsg(<span class="s5">"/n_free"</span>, 2003); <span class="s4">// stop the bubbles</span></p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s2">s.sendMsg(</span><span class="s5">"/b_close"</span><span class="s2">, 0); </span>// close the file.</p>
-<p class="p6">s.sendMsg(<span class="s5">"/b_free"</span>, 0);</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p3">See <a href="RecordBuf.html"><span class="s1">RecordBuf</span></a> for recording into a buffer in memory.</p>
-<p class="p9"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Playback and Recording/PlayBuf.html b/Help/UGens/Playback and Recording/PlayBuf.html
deleted file mode 100644
index a31feaa..0000000
--- a/Help/UGens/Playback and Recording/PlayBuf.html	
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ee}
-span.s4 {color: #0026b4}
-span.s5 {color: #0021e7}
-span.s6 {color: #002fe0}
-span.s7 {color: #002ef6}
-span.s8 {color: #0029f7}
-span.s9 {color: #0000bf}
-span.s10 {color: #606060}
-span.s11 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PlayBuf<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>sample playback oscillator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><span class="s4"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s6"><b>UGen</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">Plays back a sample resident in memory.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>PlayBuf.ar(numChannels, bufnum, rate, trigger, startPos, loop, doneAction)</b></p>
-<p class="p1"><b>PlayBuf.kr(numChannels, bufnum, rate, trigger, startPos, loop, doneAction)</b></p>
-<p class="p4"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>numChannels</b> - number of channels that the buffer will be.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this must be a fixed integer. The architechture of the SynthDef</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cannot change after it is compiled.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>warning: if you supply a bufnum of a buffer that has a different</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numChannels then you have specified to the PlayBuf, it will</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fail silently.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>bufnum</b> - the index of the buffer to use</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>rate</b><span class="Apple-converted-space">  </span>- 1.0 is the server's sample rate, 2.0 is one octave up, 0.5 is one octave down</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-1.0 is backwards normal rate ... etc. Interpolation is cubic.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>Note:</b> If the buffer's sample rate is different from the server's, you will need to</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>multiply the desired playback rate by (file's rate / server's rate). The UGen</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>BufRateScale.kr(bufnum)</b> returns this factor. See examples below.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>BufRateScale should be used in virtually every case.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>trigger</b> - a trigger causes a jump to the startPos.<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A trigger occurs when a signal changes from <= 0 to > 0.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>startPos</b> - sample frame to start playback.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>loop</b><span class="Apple-converted-space">    </span>- 1 means true, 0 means false. this is modulate-able.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>doneAction</b> - an integer representing an action to be executed when the buffer is finished playing. This can be used to free the enclosing synth, etc. See <a href="../Synth control/Envelopes/UGen-doneActions.html"><span class="s7">UGen-doneActions</span></a> for more detail.</p>
-<p class="p4"><br></p>
-<p class="p1"><b>See also:</b> <a href="DiskIn.html"><span class="s8">DiskIn</span></a>, <a href="../Oscillators/BufRd.html"><span class="s8">BufRd</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">s.boot </span>// Boot the server, if you need to<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p6">// read a whole sound into memory</p>
-<p class="p6">// note: not *that* columbia, the first one</p>
-<p class="p6"><span class="s2">b = </span><span class="s9">Buffer</span><span class="s2">.read(s, </span><span class="s10">"sounds/a11wlk01.wav"</span><span class="s2">); </span>// remember to free the buffer later.</p>
-<p class="p2"><br></p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s11">\help_PlayBuf</span><span class="s2">, {</span>| out = 0, bufnum = 0 |</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">PlayBuf</span>.ar(1, bufnum, <span class="s9">BufRateScale</span>.kr(bufnum), doneAction:2)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).play(s, [<span class="s11">\out</span>, 0, <span class="s11">\bufnum</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p1">In the above example, note how the doneAction:2 causes the synth to free itself when the buffer reaches its end.</p>
-<p class="p4"><br></p>
-<p class="p1">Note again that the number of channels must be fixed for the SynthDef. It cannot vary depending on which buffer you use.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// loop is true</p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s11">\help_PlayBuf</span><span class="s2">, {</span>| out = 0, bufnum = 0 |</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">PlayBuf</span>.ar(1, bufnum, <span class="s9">BufRateScale</span>.kr(bufnum), loop: 1.0)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).play(s, [<span class="s11">\out</span>, 0, <span class="s11">\bufnum</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// trigger one shot on each pulse</p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s11">\help_PlayBuf</span><span class="s2">, {</span>| out = 0, bufnum = 0 |</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">var</span> trig;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>trig = <span class="s9">Impulse</span>.kr(2.0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">PlayBuf</span>.ar(1, bufnum, <span class="s9">BufRateScale</span>.kr(bufnum), trig, 0, 0)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).play(s, [<span class="s11">\out</span>, 0, <span class="s11">\bufnum</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// trigger one shot on each pulse</p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s11">\help_PlayBuf</span><span class="s2">, {</span>| out = 0, bufnum = 0 |</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">var</span> trig;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>trig = <span class="s9">Impulse</span>.kr(<span class="s9">XLine</span>.kr(0.1, 100, 30));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">PlayBuf</span>.ar(1, bufnum, <span class="s9">BufRateScale</span>.kr(bufnum), trig, 5000, 0)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).play(s, [<span class="s11">\out</span>, 0, <span class="s11">\bufnum</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// mouse control of trigger rate and startpos</p>
-<p class="p8"><span class="s9">SynthDef</span>(<span class="s11">\help_PlayBuf</span>, { <span class="s9">arg</span> out=0, bufnum=0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">var</span> trig;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>trig = <span class="s9">Impulse</span>.kr(<span class="s9">MouseY</span>.kr(0.5, 200, 1));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">PlayBuf</span>.ar(1, bufnum, <span class="s9">BufRateScale</span>.kr(bufnum), trig, <span class="s9">MouseX</span>.kr(0, <span class="s9">BufFrames</span>.kr(bufnum)), 1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).play(s, [<span class="s11">\out</span>, 0, <span class="s11">\bufnum</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// accelerating pitch</p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s11">\help_PlayBuf</span><span class="s2">, {</span>| out = 0, bufnum = 0 |</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">var</span> rate;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>rate = <span class="s9">XLine</span>.kr(0.1, 100, 60);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">PlayBuf</span>.ar(1, bufnum, <span class="s9">BufRateScale</span>.kr(bufnum)*rate, 1.0, 0.0, 1.0)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).play(s, [<span class="s11">\out</span>, 0, <span class="s11">\bufnum</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// sine wave control of playback rate. negative rate plays backwards</p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s11">\help_PlayBuf</span><span class="s2">, {</span>| out = 0, bufnum = 0 |</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">var</span> rate;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>rate = <span class="s9">FSinOsc</span>.kr(<span class="s9">XLine</span>.kr(0.2, 8, 30), 0, 3, 0.6);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">PlayBuf</span>.ar(1, bufnum, <span class="s9">BufRateScale</span>.kr(bufnum) * rate, 1, 0, 1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).play(s, [<span class="s11">\out</span>, 0, <span class="s11">\bufnum</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// zig zag around sound<span class="Apple-converted-space"> </span></p>
-<p class="p7">SynthDef<span class="s2">(</span><span class="s11">\help_PlayBuf</span><span class="s2">, {</span>| out = 0, bufnum = 0 |</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">var</span> rate;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>rate = <span class="s9">LFNoise2</span>.kr(<span class="s9">XLine</span>.kr(1, 20, 60), 2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s9">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s9">PlayBuf</span>.ar(1, bufnum, <span class="s9">BufRateScale</span>.kr(bufnum) * rate, 1, 0, 1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).play(s, [<span class="s11">\out</span>, 0, <span class="s11">\bufnum</span>, b]);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p8">b.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Playback and Recording/RecordBuf.html b/Help/UGens/Playback and Recording/RecordBuf.html
deleted file mode 100644
index b4bff9e..0000000
--- a/Help/UGens/Playback and Recording/RecordBuf.html	
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {color: #001bb9}
-span.s2 {color: #000000}
-span.s3 {color: #2c7014}
-span.s4 {color: #606060}
-span.s5 {color: #ad140d}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>RecordBuf<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>record or overdub into a Buffer</b></p>
-<p class="p2"><br></p>
-<p class="p3">Records input into a <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>RecordBuf.ar(inputArray, bufnum, offset, recLevel, preLevel, run, loop, trigger, doneAction)</b></p>
-<p class="p3"><b>RecordBuf.kr(inputArray, bufnum, offset, recLevel, preLevel, run, loop, trigger, doneAction)</b></p>
-<p class="p4"><br></p>
-<p class="p3">If recLevel is 1.0 and preLevel is 0.0 then the new input overwrites the old data.</p>
-<p class="p3">If they are both 1.0 then the new data is added to the existing data. (Any other settings</p>
-<p class="p3">are also valid.)</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>inputArray</b> - an Array of input channels</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>bufnum</b> - the index of the buffer to use</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>offset</b> <span class="Apple-converted-space">  </span>- an offset into the buffer in frames, the default is 0.0.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>recLevel</b> - value to multiply by input before mixing with existing data. Default is 1.0.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>preLevel</b> - value to multiply to existing data in buffer before mixing with input. Default is 0.0.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>run</b> - If zero, then recording stops, otherwise recording proceeds. Default is 1.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>loop</b><span class="Apple-converted-space">  </span>- If zero then don't loop, otherwise do.<span class="Apple-converted-space">  </span>This is modulate-able. Default is 1.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>trigger</b> - a trigger causes a jump to the <b>offset</b> position in the Buffer.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A trigger occurs when a signal changes from <= 0 to > 0.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>doneAction</b> - an integer representing an action to be executed when the buffer is finished playing. This can be used to free the enclosing synth, etc. See <a href="../Synth control/Envelopes/UGen-doneActions.html"><span class="s1">UGen-doneActions</span></a> for more detail.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction is only evaluated if <b>loop</b> is 0.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Note that the<b> number of channels</b> must be fixed for the SynthDef, it cannot vary depending on which buffer you use.</p>
-<p class="p2"><br></p>
-<p class="p6">// Execute the following in order</p>
-<p class="p7">(</p>
-<p class="p6">// allocate a Buffer</p>
-<p class="p7">s = <span class="s1">Server</span>.local;</p>
-<p class="p6"><span class="s2">b = </span><span class="s1">Buffer</span><span class="s2">.alloc(s, 44100 * 4.0, 1); </span>// a four second 1 channel Buffer</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p6">// record for four seconds</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s3">\help_RecordBuf</span>, { <span class="s1">arg</span> out = 0, bufnum = 0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> formant;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>formant = <span class="s1">Formant</span>.ar(<span class="s1">XLine</span>.kr(400,1000, 4), 2000, 800, 0.125);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">RecordBuf</span>.ar(formant, bufnum, doneAction: 2, loop: 0);</p>
-<p class="p7">}).play(s,[<span class="s3">\out</span>, 0, <span class="s3">\bufnum</span>, b]);</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p6">// play it back</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s3">\help_RecordBuf_overdub</span>, { <span class="s1">arg</span> out = 0, bufnum = 0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> playbuf;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>playbuf = <span class="s1">PlayBuf</span>.ar(1,bufnum);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">FreeSelfWhenDone</span><span class="s2">.kr(playbuf); </span>// frees the synth when the PlayBuf is finished</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out, playbuf);</p>
-<p class="p7">}).play(s, [<span class="s3">\out</span>, 0, <span class="s3">\bufnum</span>, b]);</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p6">// overdub</p>
-<p class="p7">(</p>
-<p class="p8"><span class="s1">SynthDef</span><span class="s2">(</span>\help_RecordBuf_overdub<span class="s2">, { </span><span class="s1">arg</span><span class="s2"> out=0, bufnum=0;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> formant;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>formant = <span class="s1">Formant</span>.ar(<span class="s1">XLine</span>.kr(200, 1000, 4), 2000, 800, 0.125);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// mixes equally with existing data</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">RecordBuf</span>.ar(formant, bufnum, 0, 0.5, 0.5, doneAction: 2, loop: 0);<span class="Apple-converted-space"> </span></p>
-<p class="p7">}).play(s, [<span class="s3">\out</span>, 0, <span class="s3">\bufnum</span>, b]);</p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p6">// play back the overdubbed version</p>
-<p class="p8"><span class="s1">Synth</span><span class="s2">.new(</span>\help_RecordBuf_overdub<span class="s2">, [</span>\out<span class="s2">, 0, </span>\bufnum<span class="s2">, b], s);</span></p>
-<p class="p2"><br></p>
-<p class="p6">// write the contents of the buffer to a file (see <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a> for more options)</p>
-<p class="p6">(</p>
-<p class="p7">b.write(sampleFormat: <span class="s3">'int16'</span>);</p>
-<p class="p7"><span class="s1">thisProcess</span>.platform.recordingsDir +/+ <span class="s4">"SC_"</span> ++ <span class="s1">Date</span>.localtime.stamp ++ <span class="s4">".aiff"</span>; <span class="s5">// generated path</span></p>
-<p class="p7">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">b.close; b.free; <span class="s5">// cleanup</span></p>
-<p class="p4"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Playback and Recording/TGrains.html b/Help/UGens/Playback and Recording/TGrains.html
deleted file mode 100644
index 58576fd..0000000
--- a/Help/UGens/Playback and Recording/TGrains.html	
+++ /dev/null
@@ -1,192 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.47">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a8220e}
-span.s1 {color: #0013bb}
-span.s2 {color: #000000}
-span.s3 {color: #316f11}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>TGrains<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>buffer granulator</b></p>
-<p class="p2"><br></p>
-<p class="p3">Triggers generate grains from a single channel (mono) buffer. Each grain has a Hann envelope (sin^2(x) for x from 0 to pi) and is panned between two channels of multiple outputs.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>TGrains.ar(numChannels, trigger, bufnum, rate, centerPos, dur, pan, amp, interp)</b></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>numChannels</b> - number of output channels.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>trigger</b> - at each trigger, the following arguments are sampled and used<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>as the arguments of a new grain.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A trigger occurs when a signal changes from <= 0 to > 0.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If the trigger is audio rate then the grains will start with sample accuracy.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>bufnum</b> - the index of the buffer to use.<b> It must be a one channel (mono) buffer.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>rate</b> <span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">  </span>1.0 is normal, 2.0 is one octave up, 0.5 is one octave down</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-1.0 is backwards normal rate ... etc.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Unlike PlayBuf, the rate is multiplied by BufRate, so you needn't do that yourself.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>centerPos</b> - the position in the buffer in seconds at which the grain envelope will reach<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum amplitude.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>dur</b><span class="Apple-converted-space">    </span>- <span class="Apple-converted-space">  </span>duration of the grain in seconds.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pan</b><span class="Apple-converted-space">    </span>- <span class="Apple-converted-space">  </span>a value from -1 to 1. Determines where to pan the output in the same manner as PanAz.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>amp</b> <span class="Apple-converted-space">  </span>- amplitude of the grain.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>interp</b> - 1,2,or 4. Determines whether the grain uses (1) no interpolation, (2) linear interpolation,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>or (4) cubic interpolation.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">s = <span class="s1">Server</span>.internal;</p>
-<p class="p5"><span class="s1">Server</span>.default = s;</p>
-<p class="p5">s.boot;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s2">s.sendMsg(</span><span class="s3">\b_allocRead</span><span class="s2">, 10, </span>"sounds/a11wlk01.wav"<span class="s2">);</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur, rate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = <span class="s1">MouseY</span>.kr(2,200,1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = 4 / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>rate = Dseq([10, 1, 1, 0.5, 0.5, 0.2, 0.1], inf);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2, <span class="s1">Impulse</span>.ar(trate), b, <span class="s1">rate</span>, <span class="s1">MouseX</span>.kr(0,<span class="s1">BufDur</span>.kr(b)), dur, Dseq([-1, 1], inf), 0.1, 2);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur, clk, pos, pan;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = <span class="s1">MouseY</span>.kr(8,120,1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = 12 / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>clk = <span class="s1">Impulse</span>.kr(trate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pos = <span class="s1">MouseX</span>.kr(0,<span class="s1">BufDur</span>.kr(b)) + <span class="s1">TRand</span>.kr(0, 0.01, clk);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">WhiteNoise</span>.kr(0.6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2, clk, b, <span class="s1">1</span>, pos, dur, pan, 0.1);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p7">// 4 channels</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur, clk, pos, pan;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = <span class="s1">MouseY</span>.kr(8,120,1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = 12 / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>clk = <span class="s1">Impulse</span>.kr(trate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pos = <span class="s1">MouseX</span>.kr(0,<span class="s1">BufDur</span>.kr(b)) + <span class="s1">TRand</span>.kr(0, 0.01, clk);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">WhiteNoise</span>.kr(0.6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(4, clk, b, <span class="s1">1</span>, pos, dur, pan, 0.1);</p>
-<p class="p5">}.scope(4, zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur, clk, pos, pan;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = <span class="s1">MouseY</span>.kr(8,120,1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = 4 / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>clk = <span class="s1">Dust</span>.kr(trate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pos = <span class="s1">MouseX</span>.kr(0,<span class="s1">BufDur</span>.kr(b)) + <span class="s1">TRand</span>.kr(0, 0.01, clk);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">WhiteNoise</span>.kr(0.6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2, clk, b, <span class="s1">1</span>, pos, dur, pan, 0.1);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur, clk, pos, pan;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = <span class="s1">LinExp</span>.kr(<span class="s1">LFTri</span>.kr(<span class="s1">MouseY</span>.kr(0.1,2,1)),-1,1,8,120);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = 12 / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>clk = <span class="s1">Impulse</span>.ar(trate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pos = <span class="s1">MouseX</span>.kr(0,<span class="s1">BufDur</span>.kr(b));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">WhiteNoise</span>.kr(0.6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2, clk, b, <span class="s1">1</span>, pos, dur, pan, 0.1);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur, clk, pos, pan;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = 12;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = <span class="s1">MouseY</span>.kr(0.2,24,1) / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>clk = <span class="s1">Impulse</span>.kr(trate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pos = <span class="s1">MouseX</span>.kr(0,<span class="s1">BufDur</span>.kr(b)) + <span class="s1">TRand</span>.kr(0, 0.01, clk);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">WhiteNoise</span>.kr(0.6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2, clk, b, <span class="s1">1</span>, pos, dur, pan, 0.1);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur, clk, pos, pan;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = 100;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = 8 / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>clk = <span class="s1">Impulse</span>.kr(trate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pos = <span class="s1">Integrator</span>.kr(<span class="s1">BrownNoise</span>.kr(0.001));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">WhiteNoise</span>.kr(0.6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2, clk, b, <span class="s1">1</span>, pos, dur, pan, 0.1);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur, clk, pos, pan;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = <span class="s1">MouseY</span>.kr(1,400,1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = 8 / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>clk = <span class="s1">Impulse</span>.kr(trate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pos = <span class="s1">MouseX</span>.kr(0,<span class="s1">BufDur</span>.kr(b));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pan = <span class="s1">WhiteNoise</span>.kr(0.8);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2, clk, b, 2 ** <span class="s1">WhiteNoise</span>.kr(2), pos, dur, pan, 0.1);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> b = 10, trate, dur;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = <span class="s1">MouseY</span>.kr(2,120,1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>dur = 1.2 / trate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2, <span class="s1">Impulse</span>.ar(trate), b, (1.2 ** <span class="s1">WhiteNoise</span>.kr(3).round(1)), <span class="s1">MouseX</span>.kr(0,<span class="s1">BufDur</span>.kr(b)), dur, <span class="s1">WhiteNoise</span>.kr(0.6), 0.1);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p7">// demand ugens as inputs</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> trate, dur, z, d;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trate = <span class="s1">MouseX</span>.kr(1, 100, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>d = { <span class="s1">Dwhite</span>(0.1, 0.2, 1) };</p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = {<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Drand</span>([<span class="s1">Dgeom</span>(0.1, 1 + d.value, <span class="s1">Diwhite</span>(20, 40)), <span class="s1">Dgeom</span>(1, 1 - d.value, <span class="s1">Diwhite</span>(20, 40))])<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>};</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">TGrains</span>.ar(2,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Impulse</span>.ar(trate),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>bufnum: 10,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rate: <span class="s1">Dseq</span>([1, 1, z.value, 0.5, 0.5, 0.2, 0.1, 0.1, 0.1, 0.1], <span class="s1">inf</span>) * 2 + 1,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>centerPos: <span class="s1">Dseq</span>(z.dup(8), <span class="s1">inf</span>),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>dur: <span class="s1">Dseq</span>([1, d.value, 1, z.value, 0.5, 0.5, 0.1, z.value] * 2, <span class="s1">inf</span>) / trate,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pan: <span class="s1">Dseq</span>([1, 1, 1, 0.5, 0.2, 0.1, 0, 0, 0], <span class="s1">inf</span>) * 2 - 1,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amp: <span class="s1">Dseq</span>([1, 0, z.value, 0, 2, 1.0, 1, 0.1, 0.1], <span class="s1">inf</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5">}.scope(zoom: 4);</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Playback and Recording/VDiskIn.html b/Help/UGens/Playback and Recording/VDiskIn.html
deleted file mode 100644
index 1a4efc5..0000000
--- a/Help/UGens/Playback and Recording/VDiskIn.html	
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #22407b; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #3562bb}
-span.s2 {color: #3867c2}
-span.s3 {color: #0000bf}
-span.s4 {color: #606060}
-span.s5 {color: #000000}
-span.s6 {color: #007300}
-span.s7 {color: #bf0000}
-span.s8 {text-decoration: underline}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>VDiskIn<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>stream in audio from a file (with variable rate)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>VDiskIn.ar(numChannels, bufnum, rate, loop, sendID )</b></p>
-<p class="p2"><br></p>
-<p class="p3">Continuously play a longer soundfile from disk.<span class="Apple-converted-space">  </span>This requires a buffer to be preloaded with one buffer size of sound. If loop is set to 1, the soundfile will loop. If a sendID is given, the UGen sends an osc message with this id and the file position each time it reloads the buffer: ['/diskin', nodeID, sendID, frame]<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>rate</b> controls the rate of playback. Values below 4 are probably fine, but the higher the value, the more disk activity there is, and the more likelihood there will be a problem.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>WARNING:</b> the rate does have a practical limit. The following must be true:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>rate<span class="Apple-converted-space">  </span>< Buffer's size / ( 2 * s.options.blockSize)</p>
-<p class="p3"><span class="Apple-tab-span">	</span>e.g with typical default values, this wil be 32768 / (2 * 64) = 256.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3">If the rate is too high, the UGen will not execute, posting a warning.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>See also:</b> <a href="PlayBuf.html"><span class="s1">PlayBuf</span></a>, <a href="../Oscillators/BufRd.html"><span class="s2">BufRd</span></a><span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><br></p>
-<p class="p7"><br></p>
-<p class="p8">b = <span class="s3">Buffer</span>.cueSoundFile(s, <span class="s4">"sounds/a11wlk01-44_1.aiff"</span>, 0, 1);</p>
-<p class="p7"><br></p>
-<p class="p8">x = { <span class="s3">VDiskIn</span>.ar(1, b, <span class="s3">LFNoise2</span>.kr(0.2).range(0.5, 2), 1, loop:1) }.play;</p>
-<p class="p7"><br></p>
-<p class="p8">b.close;<span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p9">// again</p>
-<p class="p9">// note the like named instance method, but different arguments</p>
-<p class="p10"><span class="s5">b.cueSoundFile(</span>"sounds/a11wlk01-44_1.aiff"<span class="s5">, 0);<span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8">x.free; b.close; b.free;<span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9">// cue and play right away</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s3">SynthDef</span>(<span class="s4">"help-VDiskin"</span>, { <span class="s3">arg</span> bufnum = 0;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0, <span class="s3">VDiskIn</span>.ar(1, bufnum, <span class="s3">MouseX</span>.kr(0.5, 2.0)));</p>
-<p class="p8">}).send(s);</p>
-<p class="p8">)</p>
-<p class="p8">(</p>
-<p class="p8">x = <span class="s3">Synth</span>.basicNew(<span class="s4">"help-VDiskin"</span>);</p>
-<p class="p8">m = { <span class="s3">arg</span> buf; x.addToHeadMsg(<span class="s3">nil</span>, [<span class="s6">\bufnum</span>, buf])};</p>
-<p class="p7"><br></p>
-<p class="p8">b = <span class="s3">Buffer</span>.cueSoundFile(s,<span class="s4">"sounds/a11wlk01-44_1.aiff"</span>,0,1, completionMessage: m);</p>
-<p class="p8">)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p8">x.free; b.close; b.free;<span class="Apple-tab-span">	</span><span class="s7">// clean up</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9">// sending back the file position.</p>
-<p class="p9">// note:</p>
-<p class="p9">// the ugen knows nothing of the loop (apply a modulo).</p>
-<p class="p9">// if you load another file, you need to free the buffer and re-allocate it (see below)</p>
-<p class="p7"><br></p>
-<p class="p8">b = <span class="s3">Buffer</span>.cueSoundFile(s, <span class="s4">"sounds/a11wlk01-44_1.aiff"</span>, 0, 1, bufferSize: 4096);</p>
-<p class="p10"><span class="s5">c = </span><span class="s3">SoundFile</span><span class="s5">(</span>"sounds/a11wlk01-44_1.aiff"<span class="s5">).info;</span></p>
-<p class="p8">x = { <span class="s3">VDiskIn</span>.ar(1, b, <span class="s3">LFNoise2</span>.kr(0.2).range(0.2, 0.9), 1, sendID: 14) }.play;</p>
-<p class="p7"><br></p>
-<p class="p9">// register to receive this message</p>
-<p class="p7"><br></p>
-<p class="p8">(</p>
-<p class="p8">o = <span class="s3">OSCresponder</span>(s.addr,<span class="s6">'/diskin'</span>,{ <span class="s3">arg</span> time,responder,msg;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> sendID = msg[2];</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">var</span> index = msg[3];</p>
-<p class="p8"><span class="Apple-tab-span">	</span>msg.postln;</p>
-<p class="p10"><span class="s5"><span class="Apple-tab-span">	</span></span>"id: % pos: % frames (% sec)\n"</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>.postf(sendID, index % c.numFrames, (index % c.numFrames / c.sampleRate));</p>
-<p class="p8">}).add</p>
-<p class="p8">);</p>
-<p class="p7"><br></p>
-<p class="p8">b.close; b.free;</p>
-<p class="p7"><br></p>
-<p class="p10"><span class="s5">b.alloc; b.cueSoundFile(</span>"sounds/a11wlk01-44_1.aiff"<span class="s5">, 0); c = </span><span class="s3">SoundFile</span><span class="s5">(</span>"sounds/a11wlk01-44_1.aiff"<span class="s5">).info;</span></p>
-<p class="p7"><br></p>
-<p class="p8">x.free; b.close; b.free; o.remove; <span class="s7">// clean up eventually</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9">// the same example in OSC Messaging style, see [<span class="s8">Node Messaging</span>]</p>
-<p class="p7"><br></p>
-<p class="p9">// allocate a disk i/o buffer</p>
-<p class="p8">s.sendMsg(<span class="s4">"/b_alloc"</span>, 0, 65536, 1);</p>
-<p class="p7"><br></p>
-<p class="p9">// open an input file for this buffer, leave it open</p>
-<p class="p10"><span class="s5">s.sendMsg(</span>"/b_read"<span class="s5">, 0, </span>"sounds/a11wlk01-44_1.aiff"<span class="s5">, 0, 65536, 0, 1);</span></p>
-<p class="p7"><br></p>
-<p class="p9">// create a diskin node</p>
-<p class="p8">s.sendMsg(<span class="s4">"/s_new"</span>, <span class="s4">"help-VDiskin"</span>, x = s.nextNodeID, 1, 1);</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s5">s.sendMsg(</span><span class="s4">"/b_close"</span><span class="s5">, 0); </span>// close the file (very important!)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9">// again<span class="Apple-converted-space"> </span></p>
-<p class="p9">// don't need to reallocate and Synth is still reading</p>
-<p class="p10"><span class="s5">s.sendMsg(</span>"/b_read"<span class="s5">, 0, </span>"sounds/a11wlk01-44_1.aiff"<span class="s5">, 0, 0, 0, 1);</span></p>
-<p class="p7"><br></p>
-<p class="p8">s.sendMsg(<span class="s4">"/n_free"</span>, x); <span class="s7">// stop reading</span></p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s5">s.sendMsg(</span><span class="s4">"/b_close"</span><span class="s5">, 0); </span>// close the file.</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s5">s.sendMsg(</span><span class="s4">"/b_free"</span><span class="s5">, 0); </span>// frees the buffer</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Playback and Recording/Warp1.html b/Help/UGens/Playback and Recording/Warp1.html
deleted file mode 100755
index 97f7fe0..0000000
--- a/Help/UGens/Playback and Recording/Warp1.html	
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a91616}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #0014bc}
-span.s5 {color: #307109}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Warp1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Warp a buffer with a time pointer</b></p>
-<p class="p2"><br></p>
-<p class="p3">Inspired by Chad Kirby's SuperCollider2 Warp1 class, which was inspired by Richard Karpen's sndwarp for CSound. A granular time strecher and pitchshifter.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Warp1.ar(numChannels, bufnum, pointer, freqScale, windowSize, envbufnum, overlaps,<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>windowRandRatio, interp, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>numChannels</b> - the number of channels in the soundfile used in bufnum.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>bufnum</b> - the buffer number of a mono soundfile.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>pointer</b> - the position in the buffer.<span class="Apple-converted-space">  </span>The value should be between 0 and 1, with 0 being the begining</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>of the buffer, and 1 the end.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>freqScale</b>- the amount of frequency shift. 1.0 is normal, 0.5 is one octave down, 2.0 is one octave up.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Negative values play the soundfile backwards.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>windowSIze</b> - the size of each grain window.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>envbufnum</b> - the buffer number containing a singal to use for the grain envelope. -1 uses a built-in<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Hanning envelope.</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>overlaps</b> - the number of overlaping windows.</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>windowRandRatio </b>- the amount of randomness to the windowing function.<span class="Apple-converted-space">  </span>Must be between 0 (no</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>randomness) to 1.0 (probably to random actually)</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>interp -<i> </i></b>the interpolation method used for pitchshifting grains. 1 = no interpolation. 2 = linear.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 = cubic interpolation (more computationally intensive).</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples:</b></p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5"><span class="s1">var</span> winenv;</p>
-<p class="p6">// a custom envelope - not a very good one, but you can hear the difference between this<span class="Apple-converted-space"> </span></p>
-<p class="p6">// and the default</p>
-<p class="p5">winenv = <span class="s1">Env</span>([0, 1, 0], [0.5, 0.5], [8, -8]);</p>
-<p class="p7"><span class="s2">b = </span><span class="s1">Buffer</span><span class="s2">.read(s, </span>"sounds/a11wlk01-44_1.aiff"<span class="s2">);</span></p>
-<p class="p5">z = <span class="s1">Buffer</span>.sendCollection(s, winenv.discretize, 1);</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">SynthDef</span>(<span class="s3">\warp</span>, {<span class="s1">arg</span> buffer = 0, envbuf = -1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> out, pointer, filelength, pitch, env, dir;</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// pointer - move from beginning to end of soundfile over 15 seconds</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pointer = <span class="s1">Line</span>.kr(0, 1, 15);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>// control pitch with MouseX</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pitch = <span class="s1">MouseX</span>.kr(0.5, 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>env = <span class="s1">EnvGen</span>.kr(<span class="s1">Env</span>([0.001, 1, 1, 0.001], [0.1, 14, 0.9], <span class="s3">'exp'</span>), doneAction: 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s1">Warp1</span>.ar(1, buffer, pointer, pitch, 0.1, envbuf, 8, 0.1, 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, out * env);</p>
-<p class="p5">}).send(s);</p>
-<p class="p4"><br></p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p8">// use built-in env</p>
-<p class="p5">x = <span class="s4">Synth</span>(<span class="s5">\warp</span>, [<span class="s5">\buffer</span>, b, <span class="s5">\envbuf</span>, -1])</p>
-<p class="p4"><br></p>
-<p class="p8">// switch to the custom env</p>
-<p class="p5">x.set(<span class="s5">\envbuf</span>, z)</p>
-<p class="p5">x.set(<span class="s5">\envbuf</span>, -1);</p>
-<p class="p4"><br></p>
-<p class="p5">x.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Random/CoinGate.html b/Help/UGens/Random/CoinGate.html
deleted file mode 100644
index 8496907..0000000
--- a/Help/UGens/Random/CoinGate.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #606060}
-span.s4 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>CoinGate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>statistical gate</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(prob, trig)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ar(prob, trig)</b></p>
-<p class="p3"><br></p>
-<p class="p1">When it receives a trigger, it tosses a coin, and either passes the trigger or doesn't.</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>prob</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>value between 0 and 1 determines probability of either possibilities</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>trig</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input signal</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">//examples</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">a = <span class="s2">SynthDef</span>(<span class="s3">"help-TCoin"</span>, { <span class="s2">arg</span> out=0, prob=0.5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">CoinGate</span>.kr(prob, <span class="s2">Impulse</span>.kr(10));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">TRand</span>.kr(300.0, 400.0, trig),0,0.2<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">a.set(<span class="s4">\prob</span>, 1.0);</p>
-<p class="p7">a.set(<span class="s4">\prob</span>, 0.0);</p>
-<p class="p7">a.set(<span class="s4">\prob</span>, 0.1);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">a = <span class="s2">SynthDef</span>(<span class="s3">"help-TCoin"</span>, { <span class="s2">arg</span> out=0, prob=0.5;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.ar(20, 0, <span class="s2">SinOsc</span>.kr(0.5,0,1,1));</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Mix</span>.fill(3, {<span class="s2">Ringz</span>.ar(<span class="s2">CoinGate</span>.ar(prob, trig*0.5), #[1,1.5]*<span class="s2">Rand</span>(1000, 9000), 0.01)})</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">a.set(<span class="s4">\prob</span>, 1.0);</p>
-<p class="p7">a.set(<span class="s4">\prob</span>, 0.0);</p>
-<p class="p7">a.set(<span class="s4">\prob</span>, 0.1);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Random/ExpRand.html b/Help/UGens/Random/ExpRand.html
deleted file mode 100644
index ef6d647..0000000
--- a/Help/UGens/Random/ExpRand.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #000000}
-span.s4 {color: #2c7014}
-span.s5 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ExpRand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>exponential distribution single random float value ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>ExpRand(lo, hi)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Generates a single random float value in an exponential distributions from lo to hi.</p>
-<p class="p3"><br></p>
-<p class="p1">See also: <a href="LinRand.html"><span class="s2">LinRand</span></a>, <a href="Rand.html"><span class="s2">Rand</span></a></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p5">SynthDef<span class="s3">(</span><span class="s4">\help_ExpRand</span><span class="s3">, { </span>| out = 0, n = 0 |</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>FSinOsc<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">ExpRand</span>(100.0, 8000.0, n),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="s5">Line</span>.kr(0.2, 0, 0.01, doneAction:2))</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}).send(s);</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p4">(</p>
-<p class="p5">Routine<span class="s3">({</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s5">inf</span>.do({ <span class="s5">arg</span> i;</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">Synth</span><span class="s3">.new(</span>\help_ExpRand<span class="s3">);<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.05.wait;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>})</p>
-<p class="p4">}).play;</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Random/IRand.html b/Help/UGens/Random/IRand.html
deleted file mode 100644
index 977d4c7..0000000
--- a/Help/UGens/Random/IRand.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>IRand</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>IRand(lo, hi)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Generates a single random integer value in uniform distribution from lo to hi</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s1">SynthDef</span><span class="s2">(</span>"help-IRand"<span class="s2">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>I<span class="s1">Rand</span>(0, 1), //play on random channel between 0 and 1<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">FSinOsc</span>.ar(500,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="s1">Line</span>.kr(0.2, 0, 0.1, doneAction:2))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p6">Routine({</p>
-<p class="p6"><span class="Apple-tab-span">	</span>16.do({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Synth</span>.new(<span class="s3">"help-IRand"</span>); 0.5.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Random/LinRand.html b/Help/UGens/Random/LinRand.html
deleted file mode 100644
index 3477023..0000000
--- a/Help/UGens/Random/LinRand.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {color: #007300}
-span.s5 {color: #0000bf}
-span.s6 {color: #001bb9}
-span.s7 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LinRand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>linear distribution single random float value ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>LinRand(lo, hi, minmax)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Generates a single random float value in linear distribution from <b>lo</b> to <b>hi</b>,</p>
-<p class="p1">skewed towards lo if <b>minmax</b> < 0, otherwise skewed towards hi.</p>
-<p class="p3"><br></p>
-<p class="p1">See also: <a href="Rand.html"><span class="s2">Rand</span></a>, <a href="ExpRand.html"><span class="s2">ExpRand</span></a></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">SynthDef<span class="s3">(</span><span class="s4">\help_LinRand</span><span class="s3">, { </span>| out = 0, minmax = 1 |</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>FSinOsc<span class="s3">.ar(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">LinRand</span>(200.0, 10000.0, minmax),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="s5">Line</span>.kr(0.2, 0, 0.01, doneAction:2))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).send(s);</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p9">// towards hi</p>
-<p class="p5">(</p>
-<p class="p10">Routine<span class="s3">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Synth</span>.new(<span class="s7">\help_LinRand</span>); 0.04.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p9">// towards lo (doesn't work like that yet)</p>
-<p class="p5">(</p>
-<p class="p10">Routine<span class="s3">({</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p11"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">Synth</span><span class="s3">.new(</span>\help_LinRand<span class="s3">, [</span>\minmax<span class="s3">, -1]);<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.04.wait;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>})</p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Random/NRand.html b/Help/UGens/Random/NRand.html
deleted file mode 100644
index 459a55d..0000000
--- a/Help/UGens/Random/NRand.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>NRand</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>NRand(lo, hi, n)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Generates a single random float value in a sum of n uniform distributions from lo to hi.</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p3">n = 1 : uniform distribution - same as Rand</p>
-<p class="p3">n = 2 : triangular distribution</p>
-<p class="p3">n = 3 : smooth hump</p>
-<p class="p3">as n increases, distribution converges towards gaussian</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s2">"help-NRand"</span>, { <span class="s1">arg</span> out=0, n=0;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>FSinOsc<span class="s3">.ar(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1"><span class="Apple-tab-span">	</span>NRan</span>d(1200.0, 4000.0, n),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="s1">Line</span>.kr(0.2, 0, 0.01, doneAction:2))</p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).send(s);</p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p7">(</p>
-<p class="p7">n = 0;</p>
-<p class="p7">Routine({</p>
-<p class="p7"><span class="Apple-tab-span">	</span>inf.do({ arg i;</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">Synth</span><span class="s3">.new(</span>"help-NRand", [\n, n]<span class="s3">); 0.05.wait;</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>})</p>
-<p class="p7">}).play;</p>
-<p class="p7">)</p>
-<p class="p9"><br></p>
-<p class="p7">n = 1;</p>
-<p class="p7">n = 2;</p>
-<p class="p7">n = 4;</p>
-</body>
-</html>
diff --git a/Help/UGens/Random/Rand.html b/Help/UGens/Random/Rand.html
deleted file mode 100644
index 6f404d8..0000000
--- a/Help/UGens/Random/Rand.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {color: #001bb9}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Rand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>uniform distribution single random float value ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Rand(lo, hi)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Generates a single random float value in uniform distribution from lo to hi.</p>
-<p class="p1">It generates this when the <a href="../../ServerArchitecture/SynthDef.html"><span class="s2">SynthDef</span></a> first starts playing, and remains fixed for the duration of the synth's existence.</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s3">See also: <a href="LinRand.html">LinRand</a>, <a href="ExpRand.html">ExpRand</a></span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7"><span class="s4">SynthDef</span><span class="s3">(</span><span class="s5">\help_Rand</span><span class="s3">, { </span>| out = 0, minmax = 1 |</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out,</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>FSinOsc<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">LinRand</span>(200.0, 10000.0, minmax),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, <span class="s4">Line</span>.kr(0.2, 0, 0.01, doneAction:2))</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p9"><br></p>
-<p class="p6">(</p>
-<p class="p8">Routine<span class="s3">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Synth</span>.new(<span class="s5">\help_Rand</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.04.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p6">}).play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Random/RandID.html b/Help/UGens/Random/RandID.html
deleted file mode 100644
index a3f14a9..0000000
--- a/Help/UGens/Random/RandID.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {text-decoration: underline ; color: #0021e7}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001bb9}
-span.s6 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>RandID<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>set the synth's random generator id</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>RandID.kr(seed)</b></p>
-<p class="p1"><b>RandID.ir(seed)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Choose which random number generator to use for this synth. All synths that use the same generator reproduce the same sequence of numbers when the same seed is set again<span class="Apple-converted-space"> </span></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">See also: <a href="RandSeed.html"><span class="s3">RandSeed</span></a></span> <a href="../../Core/Kernel/randomSeed.html"><span class="s4">randomSeed</span></a></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// start a noise patch and set the id of the generator</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">SynthDef</span>(<span class="s6">\help_RandID</span>, { <span class="s5">arg</span> out=0, id=1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">RandID</span>.ir(id);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">WhiteNoise</span>.ar(0.05) + <span class="s5">Dust2</span>.ar(70)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).send(s);</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p6">// reset the seed of my rgen at a variable rate</p>
-<p class="p7">(</p>
-<p class="p7"><span class="s5">SynthDef</span>(<span class="s6">\help_RandSeed</span> , { <span class="s5">arg</span> seed=1910, id=1;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">RandID</span>.kr(id);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">RandSeed</span>.kr(<span class="s5">Impulse</span>.kr(<span class="s5">FSinOsc</span>.kr(0.2, 0, 10, 11)), seed);</p>
-<p class="p7">}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7">)</p>
-<p class="p8"><br></p>
-<p class="p6">// start two noise synths on left and right channel with a different randgen id</p>
-<p class="p7">a = <span class="s5">Synth</span>(<span class="s6">\help_RandID</span>, [<span class="s6">\out</span>, 0, <span class="s6">\id</span>, 1]);</p>
-<p class="p7">b = <span class="s5">Synth</span>(<span class="s6">\help_RandID</span>, [<span class="s6">\out</span>, 1, <span class="s6">\id</span>, 2]);</p>
-<p class="p8"><br></p>
-<p class="p6">// reset the seed of randgen 1<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="s2">x = </span><span class="s5">Synth</span><span class="s2">(</span>\help_RandSeed<span class="s2"> , [</span>\id<span class="s2">, 1]);</span></p>
-<p class="p8"><br></p>
-<p class="p6">// change the target randgen to 2 (affects right channel)</p>
-<p class="p7">x.set(<span class="s6">\id</span>, 2);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Random/RandSeed.html b/Help/UGens/Random/RandSeed.html
deleted file mode 100644
index 65a43e3..0000000
--- a/Help/UGens/Random/RandSeed.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #102ac3}
-span.s4 {color: #007300}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>RandSeed<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>set the synth's random generator seed</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>RandSeed.kr(trig, seed)</b></p>
-<p class="p1"><b>RandSeed.ar(trig, seed)</b></p>
-<p class="p3"><br></p>
-<p class="p1">When the trigger signal changes from nonpositive to positve, the synth's random generator <b>seed</b> is reset to the given value. All synths that use the same random number generator reproduce the same sequence of numbers again. The seed may be a demand rate ugen.</p>
-<p class="p3"><br></p>
-<p class="p1">see <a href="RandID.html"><span class="s2">RandID</span></a> ugen for setting the randgen id,<span class="Apple-converted-space"> </span></p>
-<p class="p1">also <a href="../../Core/Kernel/randomSeed.html"><span class="s2">randomSeed</span></a> for the client side equivalent</p>
-<p class="p3"><br></p>
-<p class="p1"><b>Note: </b>An audio rate version is not available, because other ugens look up random seeds<span class="Apple-converted-space">  </span>at control rate only.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s3">RandSeed</span>.ar(<span class="s3">Impulse</span>.ar(3 ** <span class="s3">MouseX</span>.kr(1, 8)), 1871); <span class="s3">WhiteNoise</span>.ar * 0.1 }.play</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s3">RandSeed</span>.ar(<span class="s3">Impulse</span>.ar(3 ** <span class="s3">MouseX</span>.kr(1, 8)), <span class="s3">Dstutter</span>(<span class="s3">Dwhite</span>().exprange(2, 400), <span class="s3">Dwhite</span>().range(0, 1000))); <span class="s3">WhiteNoise</span>.ar * 0.1 }.play</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p8">// start a noise patch</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">{</p>
-<p class="p10"><span class="s2">var</span> noise, filterfreq;</p>
-<p class="p10">noise = <span class="s2">WhiteNoise</span>.ar(0.05 ! 2) + <span class="s2">Dust2</span>.ar(70 ! 2);</p>
-<p class="p10">filterfreq = <span class="s2">LFNoise1</span>.kr(3, 5500, 6000);</p>
-<p class="p10"><span class="s2">Resonz</span>.ar(noise * 5, filterfreq, 0.5) + (noise * 0.5) <span class="Apple-converted-space"> </span></p>
-<p class="p10">}.play;</p>
-<p class="p10">)</p>
-<p class="p4"><br></p>
-<p class="p8">// reset the seed at a variable rate</p>
-<p class="p10">(</p>
-<p class="p10">x = { <span class="s2">arg</span> seed=1956;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">RandSeed</span>.kr(<span class="s2">Impulse</span>.kr(<span class="s2">MouseX.kr(</span>0.1, 100)), seed);</p>
-<p class="p10">}.play;</p>
-<p class="p10">)<span class="Apple-tab-span">	</span></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p10">x.set(<span class="s4">\seed</span>, 2001);</p>
-<p class="p10">x.set(<span class="s4">\seed</span>, 1798);</p>
-<p class="p10">x.set(<span class="s4">\seed</span>, 1902);</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p8">// above you can see that the sound of the LFNoise1 is not exactly reproduced (filter frequency)</p>
-<p class="p8">// this is due to interference between the internal phase of the noise ugen and the<span class="Apple-converted-space"> </span></p>
-<p class="p8">// seed setting rate.</p>
-<p class="p9"><br></p>
-<p class="p8">// a solution is to start a new synth:</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10"><span class="s2">SynthDef</span>(<span class="s4">\pseudorandom</span>, { <span class="s2">arg</span> out, sustain=1, seed=1967, id=0;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">var</span> noise, filterfreq;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">RandID</span>.ir(id);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">RandSeed</span>.ir(1, seed);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>noise = <span class="s2">WhiteNoise</span>.ar(0.05 ! 2) + <span class="s2">Dust2</span>.ar(70 ! 2);</p>
-<p class="p10"><span class="Apple-tab-span">	</span>filterfreq = <span class="s2">LFNoise1</span>.kr(3, 5500, 6000);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out,</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Resonz</span>.ar(noise * 5, filterfreq, 0.5) + (noise * 0.5)<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>*</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Line</span>.kr(1, 0, sustain, doneAction:2)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>)</p>
-<p class="p9"><br></p>
-<p class="p10">}).send(s);</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p8">// the exact same sound is reproduced</p>
-<p class="p10">(</p>
-<p class="p10">fork {</p>
-<p class="p10"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s5">(</span>\pseudorandom<span class="s5">);</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.1.wait; </span>// wait a bit longer than sustain, so sounds don't overlap</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">}</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p8">// changing the rand seed changes the sound:</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">fork {</p>
-<p class="p10"><span class="Apple-tab-span">	</span>(1902..2005).do { <span class="s2">|seed|</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>seed.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.do {</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s5">(</span>\pseudorandom<span class="s5">, [</span>\seed<span class="s5">, seed]);</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.1.wait;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">}</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p8">// cd skipper</p>
-<p class="p10">(</p>
-<p class="p10">fork {</p>
-<p class="p10"><span class="Apple-tab-span">	</span>(1902..2005).do { <span class="s2">|seed|</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>seed.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>rrand(4,10).do {</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s5">(</span>\pseudorandom<span class="s5">, [</span>\seed<span class="s5">, seed, </span>\sustain<span class="s5">, 0.05]);</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.06.wait;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">}</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p8">// if the sounds overlap, this does not work as expected anymore</p>
-<p class="p8">// sounds vary.</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">fork {</p>
-<p class="p10"><span class="Apple-tab-span">	</span>loop {</p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s2">Synth</span><span class="s5">(</span>\pseudorandom<span class="s5">);</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.8.wait; </span>// instead of 1.1</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">}</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p8">// rand id can be used to restrict the resetting of the seed to each voice:</p>
-<p class="p9"><br></p>
-<p class="p10">(</p>
-<p class="p10">fork {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s2">var</span> id=0;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>(1902..2005).do { <span class="s2">|seed|</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>seed.postln;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3.do {</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Synth</span>(<span class="s4">\pseudorandom</span>, [<span class="s4">\seed</span>, seed, <span class="s4">\id</span>, id]);</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>id = id + 1 % 16; </span>// there is 16 different random generators</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.8.wait;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p10"><span class="Apple-tab-span">	</span>}</p>
-<p class="p10">}</p>
-<p class="p10">)</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Random/TExpRand.html b/Help/UGens/Random/TExpRand.html
deleted file mode 100644
index 08f3f6a..0000000
--- a/Help/UGens/Random/TExpRand.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TExpRand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>triggered exponential random number generator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>TExpRand.ar(lo, hi, trig)</b></p>
-<p class="p1"><b>TExpRand.kr(lo, hi, trig)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Generates a random float value in exponential distribution from lo to hi<span class="Apple-converted-space"> </span></p>
-<p class="p1">each time the trig signal changes from nonpositive to positive values</p>
-<p class="p1">lo and hi must both have the same sign and be non-zero.</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig = <span class="s2">Dust</span>.kr(10);</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">TExpRand</span>.kr(300.0, 3000.0, trig)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig = <span class="s2">Dust</span>.ar(MouseX.kr(1, 8000, 1));</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">TExpRand</span>.ar(300.0, 3000.0, trig)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Random/TIRand.html b/Help/UGens/Random/TIRand.html
deleted file mode 100644
index f3b34d4..0000000
--- a/Help/UGens/Random/TIRand.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TIRand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>triggered integer random number generator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>TIRand.kr(lo, hi, trig)</b></p>
-<p class="p1"><b>TIRand.ar(lo, hi, trig)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Generates a random integer value in uniform distribution from lo to hi<span class="Apple-converted-space"> </span></p>
-<p class="p1">each time the trig signal changes from nonpositive to positive values</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">SynthDef</span><span class="s3">(</span>"help-TRand"<span class="s3">, {<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig, outBus;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s2">Dust</span>.kr(10);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>outBus = <span class="s2">TIRand</span>.kr(0, 1, trig); //play on random channel between 0 and 1</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(outBus, <span class="s2">PinkNoise</span>.ar(0.2))</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p5">}).play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig = <span class="s2">Dust</span>.kr(10);</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">TIRand</span>.kr(4, 12, trig) * 100</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig = <span class="s2">Dust</span>.ar(<span class="s2">MouseX</span>.kr(1, 8000, 1));</p>
-<p class="p8"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">TIRand</span>.ar(4, 12, trig) * 100</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Random/TRand.html b/Help/UGens/Random/TRand.html
deleted file mode 100644
index b5e2052..0000000
--- a/Help/UGens/Random/TRand.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TRand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>triggered random number generator</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>TRand.kr(lo, hi, trig)</b></p>
-<p class="p1"><b>TRand.ar(lo, hi, trig)</b></p>
-<p class="p3"><br></p>
-<p class="p1">Generates a random float value in uniform distribution from lo to hi<span class="Apple-converted-space"> </span></p>
-<p class="p1">each time the trig signal changes from nonpositive to positive values</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig = <span class="s2">Dust</span>.kr(10);</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">TRand</span>.kr(300, 3000, trig)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p7"><br></p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig = <span class="s2">Dust</span>.ar(<span class="s2">MouseX</span>.kr(1, 8000, 1));</p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">TRand</span>.ar(300, 3000, trig)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Reverbs/FreeVerb.html b/Help/UGens/Reverbs/FreeVerb.html
deleted file mode 100644
index c78b823..0000000
--- a/Help/UGens/Reverbs/FreeVerb.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #d50007; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.s4 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FreeVerb<span class="Apple-tab-span">	</span>A reverb</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>FreeVerb.ar(in, mix, room, damp, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">coded from experiments with faust.</p>
-<p class="p2"><br></p>
-<p class="p3">Valid parameter range from 0 to 1. Values outside this range are clipped by the UGen.</p>
-<p class="p5"><br></p>
-<p class="p3"><b>in</b> - input signal.</p>
-<p class="p3"><b>Mix</b> - dry/wet balance. range 0..1</p>
-<p class="p3"><b>room</b> - room size. rage 0..1</p>
-<p class="p3"><b>damp</b> - Reverb HF damp. range 0..1</p>
-<p class="p2"><br></p>
-<p class="p3">See also [<b>FreeVerb2</b>]</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s1">Server</span>.default = s = <span class="s1">Server</span>.internal;</p>
-<p class="p6">s.boot;</p>
-<p class="p7"><br></p>
-<p class="p8">// FreeVerb - 1x1 ugen</p>
-<p class="p6">(</p>
-<p class="p9"><span class="s2">z = </span>SynthDef<span class="s2">(</span><span class="s3">\src</span><span class="s2">, {</span>|mix = 0.25, room = 0.15, damp = 0.5|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>FreeVerb<span class="s2">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Decay</span>.ar(<span class="s1">Impulse</span>.ar(1), 0.25, <span class="s1">LFCub</span>.ar(1200,0,0.1)), <span class="s4">// mono src</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mix, </span>// mix 0-1</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>room, </span>// room 0-1</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>damp </span>// damp 0-1 duh</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) ! 2 //fan out...</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">}).play</p>
-<p class="p6">)</p>
-<p class="p6">z.set(<span class="s3">\room</span>, 0.7)</p>
-<p class="p6">z.set(<span class="s3">\mix</span>, 0.4)</p>
-<p class="p6">z.set(<span class="s3">\damp</span>, 0.2)</p>
-<p class="p7"><br></p>
-<p class="p6">z.free</p>
-<p class="p7"><br></p>
-<p class="p8">//it expands as any ugen does</p>
-<p class="p6">(</p>
-<p class="p9"><span class="s2">z = </span>SynthDef<span class="s2">(</span><span class="s3">\src</span><span class="s2">, {</span>|mix = 0.25, room = 0.15, damp = 0.5|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>FreeVerb<span class="s2">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Decay</span>.ar(<span class="s1">Impulse</span>.ar(1), 0.25, <span class="s1">LFCub</span>.ar(1200,0,0.1)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise1</span>.ar(1).range(-1,1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mix,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>room,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>damp</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>);</p>
-<p class="p6">}).play</p>
-<p class="p6">)</p>
-<p class="p6">z.set(<span class="s3">\room</span>, 0.7)</p>
-<p class="p6">z.set(<span class="s3">\mix</span>, 0.4)</p>
-<p class="p6">z.set(<span class="s3">\damp</span>, 0.2)</p>
-<p class="p7"><br></p>
-<p class="p6">z.free</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Reverbs/FreeVerb2.html b/Help/UGens/Reverbs/FreeVerb2.html
deleted file mode 100644
index 71fec32..0000000
--- a/Help/UGens/Reverbs/FreeVerb2.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #d50007; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {color: #0000bf}
-span.s2 {color: #000000}
-span.s3 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>FreeVerb2<span class="Apple-tab-span">	</span>A two-channel reverb</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>FreeVerb2.ar(in1, in2, mix, room, damp, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">coded from experiments with faust.</p>
-<p class="p2"><br></p>
-<p class="p3">Valid parameter range from 0 to 1. Values outside this range are clipped by the UGen.</p>
-<p class="p5"><br></p>
-<p class="p3"><b>in1</b> - input signal channel 1</p>
-<p class="p3"><b>in2</b> - input signal channel 2</p>
-<p class="p3"><b>mix</b> - dry/wet balance. range 0..1</p>
-<p class="p3"><b>room</b> - room size. rage 0..1</p>
-<p class="p3"><b>damp</b> - Reverb HF damp. range 0..1</p>
-<p class="p2"><br></p>
-<p class="p3">See also [<b>FreeVerb</b>]</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">Server</span>.default = s = <span class="s1">Server</span>.internal;</p>
-<p class="p6">s.boot;</p>
-<p class="p7"><br></p>
-<p class="p8">// FreeVerb2 - demo synthdef</p>
-<p class="p6">(</p>
-<p class="p9">SynthDef<span class="s2">(</span><span class="s3">\FreeVerb2x2</span><span class="s2">, {</span>|outbus, mix = 0.25, room = 0.15, damp = 0.5, amp = 1.0|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> signal;</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>signal = <span class="s1">In</span>.ar(outbus, 2);</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">ReplaceOut</span>.ar(outbus,</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">FreeVerb2</span><span class="s2">.ar( </span>// FreeVerb2 - true stereo UGen</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>signal[0], </span>// Left channel</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>signal[1], </span>// Right Channel</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mix, room, damp, amp)); </span>// same params as FreeVerb 1 chn version</p>
-<p class="p7"><br></p>
-<p class="p6">}).send(s);</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p8">// 2ch source</p>
-<p class="p6">(</p>
-<p class="p6">a = <span class="s1">SynthDef</span>(<span class="s3">\src2x2</span>, {</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Decay</span>.ar(<span class="s1">Impulse</span>.ar(1), 0.25, <span class="s1">LFCub</span>.ar(1200,0,0.1)) ! 2 +</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Decay</span>.ar(<span class="s1">Impulse</span>.ar(1, pi), 0.1, <span class="s1">WhiteNoise</span>.ar(0.1)),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise1</span>.kr(0.5).range(-1,1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p8">//kick it in</p>
-<p class="p10"><span class="s2">z = </span><span class="s1">Synth</span><span class="s2">(</span>\FreeVerb2x2<span class="s2">, [</span>\outbus<span class="s2">, 0], addAction:</span>\addToTail<span class="s2">)</span></p>
-<p class="p8">//experiment with some settings</p>
-<p class="p6">z.set(<span class="s3">\room</span>, 0.7)</p>
-<p class="p6">z.set(<span class="s3">\mix</span>, 0.33)</p>
-<p class="p6">z.set(<span class="s3">\damp</span>, 0.9)</p>
-<p class="p7"><br></p>
-<p class="p8">// silence</p>
-<p class="p6">[a,z].do(<span class="s1">_</span>.free)</p>
-<p class="p7"><br></p>
-<p class="p8">// crucial lib example</p>
-<p class="p6">(</p>
-<p class="p9">Patch<span class="s2">({</span>|mix =0.33, room = 0.25, damp = 0.7, amp = 0.1|</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> signal;</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>signal =<span class="Apple-tab-span">	</span><span class="s1">Decay</span>.ar(<span class="s1">Impulse</span>.ar(1), 0.25, <span class="s1">LFCub</span>.ar(1200)) ! 2 +</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Pan2</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Decay</span>.ar(<span class="s1">Impulse</span>.ar(1, pi), 0.1, <span class="s1">WhiteNoise</span>.ar),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LFNoise1</span>.kr(0.5).range(-1,1)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>FreeVerb2<span class="s2">.ar(</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>signal[0], </span>// Left channel</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>signal[1], </span>// Right Channel</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mix, room, damp, amp)</p>
-<p class="p7"><br></p>
-<p class="p6">}).gui</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Reverbs/GVerb.html b/Help/UGens/Reverbs/GVerb.html
deleted file mode 100644
index fee2533..0000000
--- a/Help/UGens/Reverbs/GVerb.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0b22b3; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>GVerb<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>A two-channel reverb</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>#left, right = GVerb.ar(in, roomsize, revtime, damping, inputbw, spread, drylevel, earlyreflevel, taillevel,<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>maxroomsize, mul, add)</b></p>
-<p class="p4"><br></p>
-<p class="p3">A two-channel reverb UGen, based on the "GVerb" LADSPA effect by Juhana Sadeharju (kouhia at nic.funet.fi).</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>in -</b> mono input</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>roomsize -</b> in squared meters</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>revtime -</b> in seconds</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>damping -</b> 0 to 1, high frequency rolloff, 0 damps the reverb signal completely, 1 not at all</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>inputbw -</b> 0 to 1, same as damping control, but on the input signal</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>spread -</b> a control on the stereo spread and diffusion of the reverb signal</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>drylevel -</b> amount of dry signal</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>earlyreflevel -</b> amount of early reflection level</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>taillevel -</b> amount of tail level</p>
-<p class="p3"><span class="Apple-tab-span">	</span><b>maxroomsize -</b> to set the size of the delay lines. Defaults to roomsize + 1</p>
-<p class="p4"><br></p>
-<p class="p3"><b>*Known issues*</b></p>
-<p class="p4"><br></p>
-<p class="p3">There is a large CPU spike when the synth is instantiated while all the delay lines are zeroed out.</p>
-<p class="p3">Quick changes in roomsize result in zipper noise.</p>
-<p class="p3"><b>Changing the roomsize does not work properly! Still trying to look for the bug... (-josh)</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3"><b>Examples</b></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s2">\test</span>, {<span class="s1">arg</span> roomsize, revtime, damping, inputbw, spread = 15, drylevel, earlylevel,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>taillevel;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">var</span> a = <span class="s1">Resonz</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Array</span>.fill(4, {<span class="s1">Dust</span>.ar(2)}), 1760 * [1, 2, 4, 8], 0.01).sum * 10;</p>
-<p class="p8">//<span class="Apple-tab-span">	</span>var a = SoundIn.ar(0);</p>
-<p class="p8">//<span class="Apple-tab-span">	</span>var a = PlayBuf.ar(1, 0);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, <span class="s1">GVerb</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>roomsize,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>revtime,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>damping,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inputbw,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>spread,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>drylevel.dbamp,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>earlylevel.dbamp,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>taillevel.dbamp,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>roomsize, 0.3) + a)}).load(s)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7">s = <span class="s1">Server</span>.internal.boot;</p>
-<p class="p7">s.scope(2);</p>
-<p class="p6"><br></p>
-<p class="p8">// bathroom</p>
-<p class="p9"><span class="s3">a = </span><span class="s1">Synth</span><span class="s3">(</span>\test<span class="s3">, [</span>\roomsize<span class="s3">, 5, </span>\revtime<span class="s3">, 0.6, </span>\damping<span class="s3">, 0.62, </span>\inputbw<span class="s3">, 0.48, </span>\drylevel<span class="s3"> -6, </span>\earlylevel<span class="s3">, -11, </span>\taillevel<span class="s3">, -13]);</span></p>
-<p class="p7">a.free;</p>
-<p class="p6"><br></p>
-<p class="p8">//living room</p>
-<p class="p9"><span class="s3">a = </span><span class="s1">Synth</span><span class="s3">(</span>\test<span class="s3">, [</span>\roomsize<span class="s3">, 16, </span>\revtime<span class="s3">, 1.24, </span>\damping<span class="s3">, 0.10, </span>\inputbw<span class="s3">, 0.95, </span>\drylevel<span class="s3"> -3, </span>\earlylevel<span class="s3">, -15, </span>\taillevel<span class="s3">, -17]);</span></p>
-<p class="p7">a.free;</p>
-<p class="p6"><br></p>
-<p class="p8">//church</p>
-<p class="p9"><span class="s3">a = </span><span class="s1">Synth</span><span class="s3">(</span>\test<span class="s3">, [</span>\roomsize<span class="s3">, 80, </span>\revtime<span class="s3">, 4.85, </span>\damping<span class="s3">, 0.41, </span>\inputbw<span class="s3">, 0.19, </span>\drylevel<span class="s3"> -3, </span>\earlylevel<span class="s3">, -9, </span>\taillevel<span class="s3">, -11]);</span></p>
-<p class="p7">a.free;</p>
-<p class="p6"><br></p>
-<p class="p8">// cathedral</p>
-<p class="p9"><span class="s3">a = </span><span class="s1">Synth</span><span class="s3">(</span>\test<span class="s3">, [</span>\roomsize<span class="s3">, 243, </span>\revtime<span class="s3">, 1, </span>\damping<span class="s3">, 0.1, </span>\inputbw<span class="s3">, 0.34, </span>\drylevel<span class="s3"> -3, </span>\earlylevel<span class="s3">, -11, </span>\taillevel<span class="s3">, -9]);</span></p>
-<p class="p7">a.free</p>
-<p class="p6"><br></p>
-<p class="p8">// canyon</p>
-<p class="p9"><span class="s3">a = </span><span class="s1">Synth</span><span class="s3">(</span>\test<span class="s3">, [</span>\roomsize<span class="s3">, 300, </span>\revtime<span class="s3">, 103, </span>\damping<span class="s3">, 0.43, </span>\inputbw<span class="s3">, 0.51, </span>\drylevel<span class="s3"> -5, </span>\earlylevel<span class="s3">, -26, </span>\taillevel<span class="s3">, -20]);</span></p>
-<p class="p7">a.free;</p>
-<p class="p6"><br></p>
-<p class="p7">s.quit;</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/A2K.html b/Help/UGens/Synth control/A2K.html
deleted file mode 100644
index 693d199..0000000
--- a/Help/UGens/Synth control/A2K.html	
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>A2K<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>audio rate to control rate converter</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>A2K.kr(in)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Converts audio rate into control rate, via linear interpolation.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s2">A2K</span>.kr(<span class="s2">WhiteNoise</span>.ar(0.3)) }.scope;</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Control.html b/Help/UGens/Synth control/Control.html
deleted file mode 100644
index cadd304..0000000
--- a/Help/UGens/Synth control/Control.html	
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #002fe0}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0b28c6}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #00831b}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p13 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p14 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #0026b4}
-span.s5 {color: #002fe0}
-span.s6 {color: #00831b}
-span.s7 {color: #0b28c6}
-span.s8 {font: 12.0px Helvetica}
-span.s9 {color: #1135f9}
-span.s10 {color: #00831c}
-span.s11 {color: #0b28c5}
-span.s12 {font: 9.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Control<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>ugen that can be set externally</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><span class="s4"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a><b> :</b></span><span class="s2"><b> </b><a href="../Multichannel/MultiOutUGen.html"><span class="s3"><b>MultiOutUGen</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1">A Control is a UGen that can be set and routed externally to interact with a running <a href="../../ServerArchitecture/Synth.html"><span class="s4">Synth</span></a>.</p>
-<p class="p1">Typically, Controls are created from the arguments of a <a href="../../ServerArchitecture/SynthDef.html"><span class="s4">SynthDef</span></a> function.</p>
-<p class="p2"><br></p>
-<p class="p1">related subclasses are: TrigControl, LagControl.</p>
-<p class="p1">For a more concise combination of name, default value and lag, see <a href="NamedControl.html"><span class="s4">NamedControl</span></a><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">The rate may be either .kr (continous control rate signal), .ar (audio rate) or .ir (a static value, set at the time the synth starts up, and subsequently unchangeable).</p>
-<p class="p2"><br></p>
-<p class="p1"><b>Control.ar(values)</b></p>
-<p class="p1"><b>Control.kr(values)</b></p>
-<p class="p1"><b>Control.ir(values)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*names(names)</b> <span class="Apple-tab-span">	</span>adds control names to the SynthDef.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s6">\help_Control</span><span class="s2">, { </span>| freq = 200 |</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq.inspect; </span>// at the time of compiling the def</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).add</p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// synonym:</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s7">SynthDef</span><span class="s2">(</span>\help_Control<span class="s2">, {</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s6">\freq</span><span class="s2">.kr(200).inspect; </span>// at the time of compiling the def</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).add</p>
-<p class="p8"><span class="Apple-tab-span">	</span>);</p>
-<p class="p2"><br></p>
-<p class="p1">What is passed into the ugenGraph function is an <a href="../Multichannel/OutputProxy.html"><span class="s4">OutputProxy</span></a>, and its source is a Control. The main explicit use of Control is to allow Arrays to be sent to running Synths:</p>
-<p class="p9"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// a synth def that has 4 partials</p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s7">SynthDef</span>(<span class="s6">\help_Control</span>, { <span class="s7">arg</span> out=0, i_freq;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> klank, harm, amp, ring;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// harmonics</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>harm = <span class="s7">Control</span>.names([<span class="s6">\harm</span>]).ir(<span class="s7">Array</span>.series(4, 1, 1).postln);</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// amplitudes</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amp = <span class="s7">Control</span>.names([<span class="s6">\amp</span>]).ir(<span class="s7">Array</span>.fill(4, 0.05));</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ring times</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ring = <span class="s7">Control</span>.names([<span class="s6">\ring</span>]).ir(<span class="s7">Array</span>.fill(4, 1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>klank = <span class="s7">Klank</span>.ar(`[harm, amp, ring], { <span class="s7">ClipNoise</span>.ar(0.01) }.dup, i_freq);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(out, klank);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).add;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a = <span class="s7">Synth</span>(<span class="s6">\help_Control</span>, [<span class="s6">\i_freq</span>, 300, <span class="s6">\harm</span>, [1, 3.3, 4.5, 7.8]]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.free;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a = <span class="s7">Synth</span>(<span class="s6">\help_Control</span>, [<span class="s6">\i_freq</span>, 300, <span class="s6">\harm</span>, [2, 3, 4, 5]]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.free;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="s8"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s7">SynthDef</span><span class="s2">(</span>\help_Control_Sines<span class="s2">, { </span><span class="s7">arg</span><span class="s2"> out=0;</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> sines, control, numsines;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>numsines = 20;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>control = <span class="s7">Control</span>.names(<span class="s6">\array</span>).kr(<span class="s7">Array</span>.rand(numsines, 400.0, 1000.0));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sines = <span class="s7">Mix</span>(<span class="s7">SinOsc</span>.ar(control, 0, numsines.reciprocal)) ;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(out, sines ! 2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).add</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s7">Synth</span><span class="s2">(</span>\help_Control_Sines<span class="s2">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>b.setn(<span class="s6">\array</span>, <span class="s7">Array</span>.rand(20, 200, 1600));</p>
-<p class="p8"><span class="Apple-tab-span">	</span>b.setn(<span class="s6">\array</span>, <span class="s7">Array</span>.rand(20, 200, 1600));</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s7">SynthDef</span>(<span class="s6">\help_Control_DynKlank</span>, { <span class="s7">arg</span> out=0, freq = 440;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> klank, harm, amp, ring;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// harmonics</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>harm = <span class="s7">Control</span>.names(<span class="s6">\harm</span>).kr(<span class="s7">Array</span>.series(4, 1, 1));</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// amplitudes</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amp = <span class="s7">Control</span>.names(<span class="s6">\amp</span>).kr(<span class="s7">Array</span>.fill(4, 0.05));</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// ring times</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ring = <span class="s7">Control</span>.names(<span class="s6">\ring</span>).kr(<span class="s7">Array</span>.fill(4, 1));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>klank = <span class="s7">DynKlank</span>.ar(`[harm, amp, ring], {<span class="s7">ClipNoise</span>.ar(0.003)}.dup, freq);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Out</span>.ar(out, klank);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).add</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span>a = </span><span class="s7">Synth</span><span class="s2">(</span>\help_Control_DynKlank<span class="s2">, [</span>\freq<span class="s2">, 300]);</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span>b = </span><span class="s7">Synth</span><span class="s2">(</span>\help_Control_DynKlank<span class="s2">, [</span>\freq<span class="s2">, 400]);</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.setn(<span class="s6">\harm</span>,   <span class="s7">Array</span>.rand(4, 1.0, 4.7))</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.setn(<span class="s6">\amp</span>, <span class="s7">Array</span>.rand(4, 0.005, 0.1))</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.setn(<span class="s6">\ring</span>, <span class="s7">Array</span>.rand(4, 0.005, 1.0))</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>b.setn(<span class="s6">\harm</span>,   <span class="s7">Array</span>.rand(4, 1.0, 4.7))</p>
-<p class="p8"><span class="Apple-tab-span">	</span>b.setn(<span class="s6">\amp</span>, <span class="s7">Array</span>.rand(4, 0.005, 0.1))</p>
-<p class="p8"><span class="Apple-tab-span">	</span>b.setn(<span class="s6">\ring</span>, <span class="s7">Array</span>.rand(4, 0.005, 1.0))</p>
-<p class="p9"><br></p>
-<p class="p9"><br></p>
-<p class="p11"><br></p>
-<p class="p12"><b>Symbols</b></p>
-<p class="p11"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span>Inside SynthDefs and UGen functions, symbols can be used to conventiently specify control inputs of different rates and with lags (see: <a href="ControlName.html"><span class="s9">ControlName</span></a><span class="s9">, </span>and<span class="s9"> <a href="../../Core/Symbol.html">Symbol</a>)</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><b>kr(val, lag)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>Return a control rate <a href="NamedControl.html"><span class="s9">NamedControl</span></a> input with a default value (<b>val</b>), and if supplied, with a <b>lag</b>. If val is an array, the control will be multichannel.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span>a = { <span class="s7">SinOsc</span>.ar(<span class="s10">\freq</span>.kr(440, 1.2)) }.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.set(<span class="s10">\freq</span>, 330);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.release;</p>
-<p class="p14"><span class="s8"><span class="Apple-tab-span">	</span></span>a = { <span class="s11">SinOsc</span>.ar(<span class="s10">\freq</span>.kr([440, 460], 1.2)) }.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.setn(<span class="s10">\freq</span>, [330, 367]);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.release;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="s12"><span class="Apple-tab-span">	</span></span><b>ar(val, lag)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>Return an audio rate <a href="NamedControl.html"><span class="s9">NamedControl</span></a><span class="s9"> </span>input with a default value (<b>val</b>), and if supplied, with a <b>lag</b>. If val is an array, the control will be multichannel.</p>
-<p class="p16"><br></p>
-<p class="p13"><span class="Apple-tab-span">	</span><b>ir(val)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>Return an intitalization rate <a href="NamedControl.html"><span class="s9">NamedControl</span></a><span class="s9"> </span>input with a default value (<b>val</b>). If val is an array, the control will be multichannel.</p>
-<p class="p11"><span class="s12"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span><b>tr(val)</b></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p13"><span class="Apple-tab-span">	</span>Return a TrigControl input with a default value (<b>val</b>). If val is an array, the control will be multichannel.</p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p14"><span class="Apple-tab-span">	</span>a = { <span class="s7">Ringz</span>.ar(<span class="s7">T2A</span>.ar(<span class="s10">\trig</span>.tr), <span class="s10">\freq</span>.kr(500, 1), 0.8) }.play;</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.set(<span class="s10">\freq</span>, 330, <span class="s10">\trig</span>, 1);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.set(<span class="s10">\freq</span>, 830, <span class="s10">\trig</span>, 1);</p>
-<p class="p14"><span class="Apple-tab-span">	</span>a.release;</p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><span class="Apple-tab-span">	</span></p>
-<p class="p15"><br></p>
-<p class="p15"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/ControlName.html b/Help/UGens/Synth control/ControlName.html
deleted file mode 100644
index ed9c597..0000000
--- a/Help/UGens/Synth control/ControlName.html	
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {text-decoration: underline}
-span.s5 {color: #001bb9}
-span.s6 {color: #2c7014}
-span.s7 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ControlName</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>object to store control information of SynthDef (used internally)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2">Object</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span>see <a href="../../ServerArchitecture/SynthDesc.html"><span class="s4">SynthDesc</span></a>, <a href="../../ServerArchitecture/SynthDef.html"><span class="s4">SynthDef</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>For an explicit creation of control names see: <a href="NamedControl.html"><span class="s2">NamedControl</span></a>, <a href="Control.html"><span class="s2">Control</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>a = </span><span class="s5">SynthDescLib</span><span class="s3">.global; </span>// the global library of SynthDescs</p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>x = a.synthDescs.at(</span><span class="s6">\default</span><span class="s3">); </span>// get the default SynthDesc</p>
-<p class="p6"><span class="Apple-tab-span">	</span>x.controls.do { <span class="s5">|ctl|</span> [<span class="s6">\name</span>, ctl.name, <span class="s6">\defaultValue</span>, ctl.defaultValue].postln };<span class="s7">""</span>;</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/DC.html b/Help/UGens/Synth control/DC.html
deleted file mode 100644
index f473882..0000000
--- a/Help/UGens/Synth control/DC.html	
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DC<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>create a constant amplitude signal<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>DC.ar(in)</b></p>
-<p class="p4"><br></p>
-<p class="p3">This UGen simply outputs the initial value you give it.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - constant value to output, cannot be modulated, set at initialisation time</p>
-<p class="p5"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//won't work (the output is 0.5*0.0), which is why we need the DC UGen!</p>
-<p class="p8">{0.5}.play</p>
-<p class="p6"><br></p>
-<p class="p7">//constantly zero<span class="Apple-converted-space"> </span></p>
-<p class="p8">{<span class="s2">DC</span>.ar(0.0) }.play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//DC offset; will click on start and finish</p>
-<p class="p8">{<span class="s2">DC</span>.ar(0.5) + <span class="s2">SinOsc</span>.ar(440,0,0.1) }.play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//test - note the transient before LeakDC adapts and suppresses the offset</p>
-<p class="p8">{<span class="s2">LeakDC</span>.ar(<span class="s2">DC</span>.ar(0.5))}.play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">//For these examples, you might want to boot the internal server</p>
-<p class="p8"><span class="s2">Server</span>.default =s = <span class="s2">Server</span>.internal;</p>
-<p class="p8">s.boot;<span class="Apple-converted-space"> </span></p>
-<p class="p8">s.scope</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/DegreeToKey.html b/Help/UGens/Synth control/DegreeToKey.html
deleted file mode 100644
index 049dc69..0000000
--- a/Help/UGens/Synth control/DegreeToKey.html	
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #842d1c; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {color: #0000bf}
-span.s2 {color: #bf0000}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>DegreeToKey<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert signal to modal pitch</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>DegreeToKey.ar(bufnum, in, octave, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">The input signal value is truncated to an integer value and used as an index into an octave repeating table of note values. Indices wrap around the table and shift octaves as they do.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>bufnum</b> - index of the buffer which contains the steps for each scale degree.</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p3"><b>octave</b> - the number of steps per octave in the scale. The default is 12.</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7">// modal space</p>
-<p class="p7">// mouse x controls discrete pitch in dorian mode</p>
-<p class="p6"><span class="s1">var</span> scale;</p>
-<p class="p6">scale = <span class="s1">FloatArray</span>[0, 2, 3.2, 5, 7, 9, 10]; <span class="s2">// dorian scale</span></p>
-<p class="p8"><br></p>
-<p class="p6">play({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> mix;</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>mix =<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// lead tone</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DegreeToKey<span class="s3">.kr(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">LocalBuf</span>.newFrom(scale),</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s1">MouseX</span><span class="s3">.kr(0,15),<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// mouse indexes into scale</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>12,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 12 notes per octave</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">// mul = 1</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>72<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// offset by 72 notes</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>+ </span><span class="s1">LFNoise1</span><span class="s3">.kr([3,3], 0.04)<span class="Apple-tab-span">	</span></span>// add some low freq stereo detuning</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>).midicps,<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// convert midi notes to hertz</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// drone 5ths</p>
-<p class="p6"><span class="Apple-tab-span">	</span>+ <span class="s1">RLPF</span>.ar(<span class="s1">LFPulse</span>.ar([48,55].midicps, 0.15),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.kr(0.1, 0, 10, 72).midicps, 0.1, 0.1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>// add some 70's euro-space-rock echo</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">CombN</span>.ar(mix, 0.31, 0.31, 2, 1, mix)</p>
-<p class="p6">})</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dbrown.html b/Help/UGens/Synth control/Demand Rate/Dbrown.html
deleted file mode 100644
index 79720f0..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dbrown.html	
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #000000}
-span.s5 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dbrown, Dibrown</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> demand rate brownian movement generators</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(lo, hi, step, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>minimum value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>hi</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>step</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum step for each new value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of values to create</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Dbrown returns numbers in the continuous range between lo and hi, Dibrown returns integer values</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The arguments can be a number or any other ugen</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pbrown.html"><span class="s2"><b><i>Pbrown</i></b></span></a><b><i>, </i></b><a href="../../Noise/BrownNoise.html"><span class="s2"><b><i>BrownNoise</i></b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>see also: <a href="Demand.html"><span class="s2"><b>Demand</b></span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>// Dbrown</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Dbrown</span>(0, 15, 1, <span class="s5">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>// Dibrown</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Dibrown</span>(0, 15, 1, <span class="s5">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dbufrd.html b/Help/UGens/Synth control/Demand Rate/Dbufrd.html
deleted file mode 100644
index 0dda967..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dbufrd.html	
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0024f8}
-span.s4 {color: #001bb9}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dbufrd</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b> buffer demand ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*new(bufnum, phase, loop)</b></p>
-<p class="p3"><br></p>
-<p class="p1">all inputs can be either demand ugen or any other ugen.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>bufnum</b><span class="Apple-tab-span">	</span>buffer number to read from</p>
-<p class="p1"><b>phase</b><span class="Apple-tab-span">	</span>index into the buffer</p>
-<p class="p1"><b>loop</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>when phase exceeds number of frames in buffer, loops when set to 1 (default :1)</p>
-<p class="p3"><br></p>
-<p class="p1">see also [<a href="Dbufwr.html"><span class="s3">Dbufwr</span></a>]<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// example</p>
-<p class="p2"><br></p>
-<p class="p5">b = <span class="s4">Buffer</span>.alloc(s, 24, 1);</p>
-<p class="p5">b.setn(0, { exprand(200, 500) } ! b.numFrames);</p>
-<p class="p5">b.getn(0, b.numFrames, {<span class="s4">|x|</span> x.postln })</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s4">var</span> indexPattern;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>indexPattern = <span class="s4">Dseq</span>([<span class="s4">Dseq</span>([0, 3, 5, 0, 3, 7, 0, 5, 9], 3), <span class="s4">Dbrown</span>(0, 23, 1, 5)], <span class="s4">inf</span>);</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s5">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Demand</span>.kr(<span class="s4">Dust</span>.kr(10), 0, <span class="s4">Dbufrd</span>(b, indexPattern))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// buffer as a time pattern</p>
-<p class="p2"><br></p>
-<p class="p5">c = <span class="s4">Buffer</span>.alloc(s, 24, 1);</p>
-<p class="p5">c.setn(0, { [1, 0.5, 0.25].choose } ! c.numFrames);</p>
-<p class="p5">c.getn(0, c.numFrames, {<span class="s4">|x|</span> x.postln })</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s4">var</span> indexPattern;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>indexPattern = <span class="s4">Dseq</span>([<span class="s4">Dseq</span>([0, 3, 5, 0, 3, 7, 0, 5, 9], 3), <span class="s4">Dbrown</span>(0, 23, 1, 5)], <span class="s4">inf</span>);</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s5">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Duty</span>.kr(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dbufrd</span>(c, <span class="s4">Dseries</span>(0, 1, <span class="s4">inf</span>)) * 0.5,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dbufrd</span>(b, indexPattern)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// free buffers</p>
-<p class="p2"><br></p>
-<p class="p5">b.free; c.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dbufwr.html b/Help/UGens/Synth control/Demand Rate/Dbufwr.html
deleted file mode 100644
index 56d13d1..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dbufwr.html	
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {text-decoration: underline ; color: #002fe0}
-span.s4 {color: #001bb9}
-span.s5 {color: #ad140d}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dbufwr</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b> buffer demand ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>*new(input, bufnum, phase, loop)</b></p>
-<p class="p3"><br></p>
-<p class="p1">all inputs can be either demand ugen or any other ugen.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>input</b><span class="Apple-tab-span">	</span>single channel input</p>
-<p class="p1"><b>bufnum</b><span class="Apple-tab-span">	</span>buffer number to read from (single channel buffer)</p>
-<p class="p1"><b>phase</b><span class="Apple-tab-span">	</span>index into the buffer</p>
-<p class="p1"><b>loop</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>when phase exceeds number of frames in buffer, loops when set to 1 (default :1)</p>
-<p class="p3"><br></p>
-<p class="p1">see also [<a href="Dbufrd.html"><span class="s3">Dbufrd</span></a>]</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4">// alloc a single channel buffer</p>
-<p class="p5">b = <span class="s4">Buffer</span>.alloc(s, 24, 1);</p>
-<p class="p5">b.setn(0, { 210 } ! b.numFrames);</p>
-<p class="p2"><br></p>
-<p class="p4">// post some info:</p>
-<p class="p5">fork { loop { 0.5.wait; b.getn(0, b.numFrames, {<span class="s4">|x|</span> x.postln }) } };</p>
-<p class="p2"><br></p>
-<p class="p4">// write demand sequence into a buffer</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="s4">var</span> read, write, readpos, writepos, writetrig;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>writetrig = <span class="s4">Dust</span>.kr(1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>readpos = <span class="s4">Dseries</span>(0, 1, <span class="s4">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>writepos = <span class="s4">Dseq</span>([<span class="s4">Dseries</span>(0, 3, 30), <span class="s4">Dseries</span>(0, 1, 30)], <span class="s4">inf</span>);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>read = <span class="s4">Dbufrd</span>(b, readpos);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>write = <span class="s4">Dbufwr</span>(<span class="s4">Dseq</span>([<span class="s4">Dseries</span>(1, 1, 16), <span class="s4">Dwhite</span>(1, 16, 8)], <span class="s4">inf</span>) * 60, b, writepos);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Demand</span>.kr(writetrig, 0, write); <span class="s5">// write on trigger</span></p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s6">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Demand</span>.kr(<span class="s4">Impulse</span>.kr(16), 0, read).lag(0.01) * [1, 1.01]</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p2"><br></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// write into buffer with mouse clicks</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p4"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s4">var</span><span class="s6"> val = </span><span class="s4">MouseY</span><span class="s6">.kr(1000, 200, 1); </span>// cursor y pos controls frequency</p>
-<p class="p4"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s4">var</span><span class="s6"> pos = </span><span class="s4">MouseX</span><span class="s6">.kr(0, </span><span class="s4">BufFrames</span><span class="s6">.kr(b) - 1); </span>// cursor x position controls buffer pos</p>
-<p class="p4"><span class="s6"><span class="Apple-tab-span">	</span></span><span class="s4">var</span><span class="s6"> write = </span><span class="s4">MouseButton</span><span class="s6">.kr; </span>// button controls write action</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Demand</span>.kr(write, 0, <span class="s4">Dbufwr</span>(val, b, pos, 1));</p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s6">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Duty</span>.kr(<span class="s4">Dseq</span>([0.5, 0.75, 0.5, 1.0], <span class="s4">inf</span>) * 0.2, 0, <span class="s4">Dbufrd</span>(b, <span class="s4">Dseries</span>(0, 1, <span class="s4">inf</span>)))</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// write demand sequence into a buffer</p>
-<p class="p5">b.free; b = <span class="s4">Buffer</span>.alloc(s, 2, 1);</p>
-<p class="p5">fork { loop { 0.5.wait; b.getn(0, b.numFrames, {<span class="s4">|x|</span> x.postln }) } };</p>
-<p class="p5">b.setn(0, [1, 0]);</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="s4">var</span> read, write, readpos, writepos, writetrig;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>writetrig = <span class="s4">Impulse</span>.kr(2);</p>
-<p class="p4"><span class="s6"><span class="Apple-tab-span">	</span>readpos = </span><span class="s4">Dbufrd</span><span class="s6">(b, 1); </span>// first buffer val is position</p>
-<p class="p4"><span class="s6"><span class="Apple-tab-span">	</span>writepos = </span><span class="s4">Dbufrd</span><span class="s6">(b, 0); </span>// second buffer val is position</p>
-<p class="p5"><span class="Apple-tab-span">	</span>read = <span class="s4">Dbufrd</span>(b, readpos);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>write = <span class="s4">Dbufwr</span>(read, b, writepos);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Demand</span>.kr(writetrig, 0, write); <span class="s5">// write on trigger</span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// free buffer:</p>
-<p class="p5">b.free;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Demand.html b/Help/UGens/Synth control/Demand Rate/Demand.html
deleted file mode 100644
index 7d4e4b6..0000000
--- a/Help/UGens/Synth control/Demand Rate/Demand.html	
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41919}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001ab2}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001ab2}
-span.s3 {color: #000000}
-span.s4 {color: #36701f}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><span class="s1"><b>Demand<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>demand results from demand rate ugens</b></p>
-<p class="p3"><br></p>
-<p class="p4">superclass: MultiOutUGen</p>
-<p class="p3"><br></p>
-<p class="p4"><b>Demand.ar(trig, reset, [..ugens..])</b></p>
-<p class="p4"><b>Demand.kr(trig, reset, [..ugens..])</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">When there is a trigger at the trig input, a value is demanded each ugen in the list and output. The unit generators in the list should be 'demand' rate.</p>
-<p class="p4">When there is a trigger at the reset input, the demand rate ugens in the list are reset.</p>
-<p class="p3"><br></p>
-<p class="p4"><b>trig</b> - trigger. Can be any signal. A trigger happens when the signal changes from non-positive to positive.</p>
-<p class="p4"><b>reset</b> - trigger. Resets the list of ugens when triggered.</p>
-<p class="p3"><br></p>
-<p class="p4">see also: <a href="Duty.html"><span class="s2">Duty</span></a>, <a href="TDuty.html"><span class="s2">TDuty</span></a></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Note:</b> By design, a reset trigger only resets the demand ugens; it does not reset the value at Demand's output. Demand continues to hold its value until the next value is demanded, at which point its output value will be the first expected item in the list.</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5">// for Demand to jump to the start value upon receipt of a reset trigger,<span class="Apple-converted-space"> </span></p>
-<p class="p5">// one can add (+) the two triggers together:</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p8"><span class="s3">a = { </span>|t_trig, t_reset|</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span><span class="Apple-tab-span">	</span>d = <span class="s2">Demand</span>.kr(t_trig + t_reset, t_reset, <span class="s2">Dseries</span>(0, 1, inf));</p>
-<p class="p7"><span class="Apple-tab-span">	</span>d.poll(t_trig + t_reset);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>0.0;</p>
-<p class="p7">}.play</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p5">// do this a few times -- the demand value should increase by 1 each time</p>
-<p class="p7">a.set(<span class="s4">\t_trig</span>, 1);</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="s3">a.set(</span><span class="s4">\t_reset</span><span class="s3">, 1);<span class="Apple-tab-span">	</span></span>// goes immediately back to 0</p>
-<p class="p6"><br></p>
-<p class="p3"><br></p>
-<p class="p5">// if d = Demand.kr(t_trig, t_reset, Dseries(0, 1, 10000000)), the reset trigger would output its old value and the new value would appear only on the next t_trig.</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Another Note:</b> One demand ugen represents a single stream of values, so that embedding the same ugen twice calls this stream twice. To isolate a demand ugen, use a <b>function</b>:</p>
-<p class="p3"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="s2">var</span> a, b, t = <span class="s2">Impulse</span>.kr(2);</p>
-<p class="p7">a = { <span class="s2">Dseq</span>([1, 2, 3, 4, 5], <span class="s2">inf</span>) } * 100;</p>
-<p class="p7">b = a + 1;</p>
-<p class="p7"><span class="s2">Demand</span>.kr(t, 0, [a, b]).poll(t)</p>
-<p class="p7">}.play</p>
-<p class="p7">);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4"><b>Examples</b></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig, seq, freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(24);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>seq = <span class="s2">Drand</span>([<span class="s2">Dseq</span>((1..5).mirror1, 1), <span class="s2">Drand</span>((4..10), 8)], 2000);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s2">Demand</span>.kr(trig, 0, seq * 100);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq + [0,0.7]).cubed.cubed.scaleneg(<span class="s2">MouseX</span>.kr(-1,1)) * 0.1;</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig, seq, freq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(12);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>seq = <span class="s2">Drand</span>([<span class="s2">Dseq</span>((1..5).mirror1, 1), <span class="s2">Drand</span>((4..10), 8)], 2000) * <span class="s2">Drand</span>([1,2,4,8],2000);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s2">Demand</span>.kr(trig, 0, seq * 100);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq + [0,0.7]).cubed.cubed.scaleneg(<span class="s2">MouseX</span>.kr(-1,1)) * 0.1;</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> freq, trig, reset, seq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(10);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>seq = <span class="s2">Diwhite</span>(60, 72, <span class="s2">inf</span>).midicps;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s2">Demand</span>.kr(trig, 0, seq);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq + [0,0.7]).cubed.cubed * 0.1;</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> freq, trig, reset, seq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(10);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>seq = <span class="s2">Dseq</span>([72, 75, 79, <span class="s2">Drand</span>([82,84,86])], <span class="s2">inf</span>).midicps;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s2">Demand</span>.kr(trig, 0, seq);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq + [0,0.7]).cubed.cubed * 0.1;</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> freq, trig, reset, seq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(10);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>seq = <span class="s2">Dswitch1</span>(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Diwhite</span>(60, 72, <span class="s2">inf</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dseq</span>([72, 75, 79, <span class="s2">Drand</span>([82,84,86])], <span class="s2">inf</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>],<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFPulse</span>.kr(0.2)</p>
-<p class="p7"><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s2">Demand</span>.kr(trig, 0, seq.midicps);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq + [0,0.7]).cubed.cubed * 0.1;</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> freq, trig, reset, seq1, seq2;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(10);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>seq1 = <span class="s2">Drand</span>([72, 75, 79, 82] - 12, <span class="s2">inf</span>).midicps;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>seq2 = <span class="s2">Dseq</span>([72, 75, 79, <span class="s2">Drand</span>([82,84,86])], <span class="s2">inf</span>).midicps;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>freq = <span class="s2">Demand</span>.kr(trig, 0, [seq1, seq2]);</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(freq + [0,0.7]).cubed.cubed * 0.1;</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig, seq;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(8);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>seq = <span class="s2">Drand</span>([</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dseq</span>([4,0,0,1,2,1,0,1]),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dseq</span>([4,0,2,0,1,0,1,1]),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dseq</span>([4,0,0,2,0,0,1,1]),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dseq</span>([4,0,1,2,0,1,2,0]),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dseq</span>([4,1,1,1,2,2,3,3]),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Dseq</span>([4,1,0,1,0,1,0,1])</p>
-<p class="p7"><span class="Apple-tab-span">	</span>], <span class="s2">inf</span>);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>trig = <span class="s2">Demand</span>.kr(trig, 0, seq * 0.4) * trig;</p>
-<p class="p7"><span class="Apple-tab-span">	</span>{<span class="s2">LPF</span>.ar(<span class="s2">PinkNoise</span>.ar, 5000)}.dup * <span class="s2">Decay</span>.kr(trig, 0.5);</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/DemandEnvGen.html b/Help/UGens/Synth control/Demand Rate/DemandEnvGen.html
deleted file mode 100644
index fce650e..0000000
--- a/Help/UGens/Synth control/Demand Rate/DemandEnvGen.html	
+++ /dev/null
@@ -1,398 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.29">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #1032ee}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0a26c0; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #aa190e}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001fb8}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0a26c0}
-span.s4 {color: #1032ee}
-span.s5 {color: #0013fe}
-span.s6 {color: #0029f7}
-span.s7 {color: #001fb8}
-span.s8 {color: #aa190e}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DemandEnvGen<span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>demand rate envelope generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><span class="s4"><b>UGen</b></span></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">Plays back break point envelope contours (levels, times, shapes) given by demand ugens. The next values are called when the next node is reached.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*ar(levels, times, shapes, curves, gate, reset, levelScale, levelOffset, timeScale, doneAction)</b></p>
-<p class="p1"><b>*kr(levels, times, shapes, curves, gate, reset, levelScale, levelOffset, timeScale, doneAction)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>levels</b> - demand ugen (or other ugen) returning level values</p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>times</b> - demand ugen (or other ugen) returning time values</p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>shapes </b>- demand ugen (or other ugen) returning shape number - the number given is the shape number</p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>curves</b> - demand ugen (or other ugen) returning curve values -<span class="Apple-converted-space">  </span>if shape is 5, this is the curve factor</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The possible values are:</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 - flat segments</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 - linear segments, the default</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>2 - natural exponential growth and decay. In this case, the levels must all be nonzero</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and the have the same sign.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3 - sinusoidal S shaped segments.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 - sinusoidal segments shaped like the sides of a Welch window.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a Float - a curvature value for all segments.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>An Array of Floats - curvature values for each segments.</p>
-<p class="p6"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>gate<span class="Apple-tab-span">	</span>- </b>control rate gate</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if gate is x >= 1, the ugen runs</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if gate is 0 > x > 1, the ugen is released at the next level (doneAction)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if gate is x <= 0, the ugen is sampled end held</p>
-<p class="p6"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>reset</b> - if reset crosses from nonpositive to positive, the ugen is reset at the next level</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if it is > 1, it is reset immediately.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>levelScale</b> - demand ugen returning level scaling values</p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>levelOffset</b> - demand ugen returning level offset values</p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>timeScale</b> - demand ugen returning time scaling values</p>
-<p class="p6"><br></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span>doneAction </b>- a done action to do when one of the demand series ended (<a href="../Synth-Controlling-UGens.html"><span class="s5">Synth-Controlling-UGens</span></a>)</p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1">structurally related: <a href="../Envelopes/EnvGen.html"><span class="s6"><b><i>EnvGen</i></b></span></a><b><i>, </i></b><a href="../../../Streams-Patterns-Events/Patterns/Pseg.html"><span class="s6"><b><i>Pseg</i></b></span></a></p>
-<p class="p1">see also: <a href="Demand.html"><span class="s6"><b>Demand</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// frequency envelope with random times</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.ar(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([204, 400, 201, 502, 300, 200], <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Drand</span>([1.01, 0.2, 0.1, 2], <span class="s7">inf</span>) * <span class="s7">MouseY</span>.kr(0.01, 3, 1),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>7 </span>// cubic interpolation</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p8">// frequency modulation</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq, list;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>list = { exprand(200, 1000.0) } ! 32;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.ar(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s7">Dseq</span>(list.scramble, <span class="s7">inf</span>) } ! 2,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SampleDur</span>.ir * <span class="s7">MouseY</span>.kr(1, 3000, 1),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5, </span>// curve interpoaltion</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">MouseX</span><span class="s2">.kr(-0.01, -4) </span>// curve must be negative for fast interpol.</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">//<span class="Apple-converted-space">  </span>gate</p>
-<p class="p8">// mouse x on right side of screen toggles gate</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dwhite</span>(300, 1000, <span class="s7">inf</span>).round(100),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1,</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5, 0.3, </span>// curve: 0.3</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseX</span>.kr > 0.5,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.21]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p8">// sample and hold (0.5 > gate > 0)</p>
-<p class="p8">// mouse x on right side of screen toggles gate</p>
-<p class="p8">// mouse y scales frequency</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dwhite</span>(300, 1000, <span class="s7">inf</span>).round(100),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5, 0.3,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseX</span>.kr > 0.5 + 0.1</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.21]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p8">// gate</p>
-<p class="p8">// mouse x on right side of screen toggles gate<span class="Apple-converted-space"> </span></p>
-<p class="p8">// mouse button does soft reset</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([<span class="s7">Dseries</span>(400, 200, 5), 500, 800, 530, 4000, 900], 2),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([0.2, 0.1, 0.2, 0.3, 0.1], <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([1, 0, 0, 6, 1, 1, 0, 2], <span class="s7">inf</span>), <span class="s8">// shapes</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseX</span>.kr > 0.5, <span class="s8">// gate</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseButton</span>.kr > 0.5, <span class="s8">// reset</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction:0</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.001]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">//<span class="Apple-converted-space">  </span>gate</p>
-<p class="p8">// mouse x on right side of screen toggles sample and hold<span class="Apple-converted-space"> </span></p>
-<p class="p8">// mouse button does hard reset</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([<span class="s7">Dseries</span>(400, 200, 5), 500, 800, 530, 4000, 900], 2),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.1,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3, 0,</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s7">MouseX</span><span class="s2">.kr > 0.5 - 0.1, </span>// gate: sample and hold</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseButton</span>.kr > 0.5 * 2, <span class="s8">// hard reset</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 0</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.001]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// short sequence with doneAction, linear</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([1300, 500, 800, 300, 400], 1),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction:2</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p8">// short sequence with doneAction, step</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([1300, 500, 800, 300, 400], 1),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.2,<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction:2</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// a linear ramp</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([300, 800], 1),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// random gate:<span class="Apple-converted-space">  </span>release. gate low level > 0.</p>
-<p class="p8">// only end points are kept as release levels</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([500, 800], <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.03,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,0, <span class="s8">// linear</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">ToggleFF</span>.kr(<span class="s7">Dust</span>.kr(5)) + 0.1 <span class="s8">// gate</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p8">// random gate: sample and hold. gate low level = 0.</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([500, 800, 600], <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.03,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,0, <span class="s8">// linear</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">ToggleFF</span>.kr(<span class="s7">Dust</span>.kr(5)), <span class="s8">// gate</span></p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0 </span>// reset</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// lfnoise1</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DemandEnvGen<span class="s2">.ar(</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dwhite</span>(-0.1, 0.1, <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SampleDur</span>.ir * <span class="s7">MouseY</span>.kr(0.5, 20),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-4</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p8">// lfbrownnoise</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DemandEnvGen<span class="s2">.ar(</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dbrown</span>(-0.1, 0.1, 0.1, <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SampleDur</span>.ir * <span class="s7">MouseY</span>.kr(1, 100, 1)</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s7">Server</span>.internal.boot;</p>
-<p class="p7"><br></p>
-<p class="p8">// hardsyncing a saw</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DemandEnvGen<span class="s2">.ar(</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([<span class="s7">Dseries</span>(-0.1, 0.01, 20)], <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SampleDur</span>.ir * <span class="s7">MouseY</span>.kr(1, 100, 1),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, 0,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">K2A</span>.ar(1),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Impulse</span>.ar(<span class="s7">MouseX</span>.kr(1, <span class="s7">SampleRate</span>.ir * <span class="s7">MouseX</span>.kr(0.002, 1, 1), 1), 0, 1.5)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// softsyncing a saw</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DemandEnvGen<span class="s2">.ar(</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([<span class="s7">Dseries</span>(-0.1, 0.01, 20)], <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SampleDur</span>.ir * <span class="s7">MouseY</span>.kr(1, 100, 1),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, 0,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">K2A</span>.ar(1),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Impulse</span>.ar(<span class="s7">MouseX</span>.kr(1, <span class="s7">SampleRate</span>.ir * <span class="s7">MouseX</span>.kr(0.002, 1, 1), 1)) + [0, 0.3]</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// hardsyncing a saw, som random elements</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DemandEnvGen<span class="s2">.ar(</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([<span class="s7">Dseries</span>(-0.1, 0.01, 20), <span class="s7">Dseries</span>(-0.1, 0.01, 20), <span class="s7">Dwhite</span>(-0.1, 0.1, 5)], <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SampleDur</span>.ir * <span class="s7">MouseY</span>.kr(1, 100, 1),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>3, 0,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Impulse</span>.ar(<span class="s7">MouseX</span>.kr(1, <span class="s7">SampleRate</span>.ir * <span class="s7">MouseX</span>.kr(0.002, 1, 1), 1), 0, 1.5)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p8">// softsyncing a saw, som random elements</p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>DemandEnvGen<span class="s2">.ar(</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Dseq</span>([<span class="s7">Dseries</span>(-0.1, 0.01, 20), <span class="s7">Dseries</span>(-0.1, 0.01, 20), <span class="s7">Dwhite</span>(-0.1, 0.1, 5)], <span class="s7">inf</span>),</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SampleDur</span>.ir * <span class="s7">MouseY</span>.kr(1, 100, 1),</p>
-<p class="p8"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1, 0, </span>// linear interpolation</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">Impulse</span>.ar(<span class="s7">MouseX</span>.kr(1, <span class="s7">SampleRate</span>.ir * <span class="s7">MouseX</span>.kr(0.002, 1, 1), 1))</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.scope;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// multichannel expansion</p>
-<p class="p8">// mouse x on right side of screen toggles gate<span class="Apple-converted-space"> </span></p>
-<p class="p8">// mouse y controls speed</p>
-<p class="p7"><br></p>
-<p class="p9">(</p>
-<p class="p9"><span class="Apple-tab-span">	</span>{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> freq;</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">DemandEnvGen</span>.kr(</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s7">Dseq</span>([300, 800, <span class="s7">Drand</span>([1000, 460, 300], 1), 400], <span class="s7">inf</span>) + 3.0.rand } ! 2,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseY</span>.kr(0.001, 2, 1),<span class="Apple-converted-space"> </span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>5, -4,</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">MouseX</span>.kr > 0.5</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dgeom.html b/Help/UGens/Synth control/Demand Rate/Dgeom.html
deleted file mode 100644
index aedc4f0..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dgeom.html	
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dgeom</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> demand rate geometric series ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(start, grow, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>start</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>start value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>grow</b> <span class="Apple-tab-span">	</span>value by which to grow ( x = x[-1] * grow )</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of values to create</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pgeom.html"><span class="s2"><b><i>Pgeom</i></b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>The arguments can be a number or any other ugen</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dgeom</span>(1, 1.2, 15);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(<span class="s4">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dgeom</span>(1, 1.2, <span class="s4">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Dust</span>.kr(<span class="s4">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dpoll.html b/Help/UGens/Synth control/Demand Rate/Dpoll.html
deleted file mode 100644
index 23b5d53..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dpoll.html	
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #0033f1}
-span.s4 {font: 12.0px Helvetica; color: #000000}
-span.s5 {color: #001bb9}
-span.s6 {color: #000000}
-span.s7 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dpoll</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>print the current output value of a demand rate UGen</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(in, label)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>in</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>ugen to poll vaues from</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>label</b> <span class="Apple-tab-span">	</span>a label string</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>run</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>active if 1, inactive if 0. can be a demand ugen (default: 1)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>the print-out is in the form: <b>label: value block offset: offset.</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../Triggers/Poll.html"><span class="s2"><b>Poll</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>see also: <a href="Demand.html"><span class="s3"><b>Demand</b></span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>WARNING: Printing values from the Server in intensive for the CPU. Poll should be used for debugging purposes.</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>// examples</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">Duty</span>.kr(0.5, 0, <span class="s5">Dpoll</span>(<span class="s5">Dseries</span>(0, 1, <span class="s5">inf</span>) * 2)); 0.0 }.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// posts only when cursor is in right half of the screen</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">Duty</span>.kr(0.5, 0, <span class="s5">Dpoll</span>(<span class="s5">Dseries</span>(0, 1, <span class="s5">inf</span>) * 2, run: <span class="s5">MouseX</span>.kr > 0.5)); 0.0 }.play;</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// label</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">LFPulse</span>.ar(<span class="s5">Duty</span>.kr(0.5, 0, <span class="s5">Dpoll</span>(<span class="s5">Dseries</span>(0, 1, <span class="s5">inf</span>) % 10 + 1 * 30, <span class="s7">"value"</span>))) * 0.1 }.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// block offset:</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">Duty</span>.ar(0.511, 0, <span class="s5">Dpoll</span>(<span class="s5">Dseries</span>(0, 1, <span class="s5">inf</span>) * 2)); 0.0 }.play;</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// multichannel expansion:</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> x = <span class="s5">Duty</span>.kr(0.5, 0,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Dpoll</span>([<span class="s5">Dseries</span>(0, 1, <span class="s5">inf</span>), <span class="s5">Dgeom</span>(1, 1.1, <span class="s5">inf</span>)], [<span class="s7">"first"</span>, <span class="s7">"second"</span>])</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">LFPulse</span>.ar(100 + (x * 100)) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">Duty</span>.kr(0.5, 0, <span class="s5">Dpoll</span>(( <span class="s5">Dseries</span>(0, 1, <span class="s5">inf</span>) + <span class="s5">_</span> ).dup, (<span class="s7">"value"</span> + <span class="s5">_</span>).dup)); 0.0 }.play;<span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// the message dpoll(label, run, trigid) is a shorthand:</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">Duty</span>.kr(0.5, 0, <span class="s5">Dseries</span>(0, 1, <span class="s5">inf</span>).dpoll); 0.0 }.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s5">Duty</span>.ar(0.5, 0, <span class="s5">SinOsc</span>.ar(0.1).dpoll); 0.0 }.play;</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Drand.html b/Help/UGens/Synth control/Demand Rate/Drand.html
deleted file mode 100644
index 32d0c33..0000000
--- a/Help/UGens/Synth control/Demand Rate/Drand.html	
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Drand, Dxrand<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> demand rate random sequence generators</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: ListDUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(array, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b><span class="Apple-tab-span">	</span>array of values or other ugens</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of values to return</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Prand.html"><span class="s2"><b><i>Prand</i></b></span></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s2"><b>Demand</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Dxrand never plays the same value twice, whereas Drand chooses any value in the list</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Drand</span>([1, 3, 2, 7, 8], <span class="s4">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(<span class="s4">MouseX</span>.kr(1, 400, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dxrand</span>([1, 3, 2, 7, 8], <span class="s4">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(<span class="s4">MouseX</span>.kr(1, 400, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dreset.html b/Help/UGens/Synth control/Demand Rate/Dreset.html
deleted file mode 100644
index fc1b310..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dreset.html	
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1713}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #102ac3}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1738f5}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #102ac3}
-span.s5 {color: #102ac2}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dreset<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>demand rate reset<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1">The reset of a demand ugen can be controlled "from the outside" by the reset input of the <a href="Demand.html"><span class="s2">Demand</span></a> or <a href="Duty.html"><span class="s2">Duty</span></a> UGen, which consumes the chain of demands. <b>Dreset</b> allows to reset a subset of the chain internally.</p>
-<p class="p2"><br></p>
-<p class="p1">superclass: <a href="../../../Core/Object.html"><span class="s2"><b>Object</b></span></a><b> : </b><a href="../../UGen.html"><span class="s2"><b>UGen</b></span></a><b> : </b>DUGen<b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*new(in, reset)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><b>in</b> - a demand UGen, producing values which are passed through</p>
-<p class="p1"><b>reset</b> - a demand or any other UGen. When crossing from nonpositive to positive, it resets the first argument.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dreset</span>(<span class="s4">Dseries</span>(0, 2, <span class="s4">inf</span>), <span class="s4">Drand</span>([0, 0, 0, 1], <span class="s4">inf</span>));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Duty</span>.kr(1/<span class="s5">MouseX</span>.kr(1, 40, 1), 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// reset when mouse button is pressed</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq;</p>
-<p class="p6"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = </span>Dreset<span class="s6">(</span>Dseries<span class="s6">(0, 2, </span>inf<span class="s6">), </span>MouseButton<span class="s6">.kr);</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Duty</span>.kr(1/<span class="s5">MouseX</span>.kr(1, 40, 1), 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// audio rate</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, nmax = 90;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = { <span class="s4">Dreset</span>(<span class="s4">Dseries</span>(0, 1, <span class="s4">inf</span>), <span class="s4">Drand</span>(0 ! nmax ++ 1, <span class="s4">inf</span>)) } ! 2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Duty</span>.ar(<span class="s4">SampleDur</span>.ir, 0, a) * (0.1 / nmax)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dseq.html b/Help/UGens/Synth control/Demand Rate/Dseq.html
deleted file mode 100644
index 48f0882..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dseq.html	
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #0025b2}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dseq<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> demand rate sequence generator</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: ListDUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(array, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b><span class="Apple-tab-span">	</span>array of values or other ugens</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of repeats</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pseq.html"><span class="s2"><b><i>Pseq</i></b></span></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s2"><b>Demand</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dseq</span>([1, 3, 2, 7, 8], <span class="s4">3</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(<span class="s4">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>// audio rate</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dseq</span>({ 10.rand } ! 32, <span class="s4">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.ar(<span class="s4">MouseX</span>.kr(1, 10000, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.ar(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dser.html b/Help/UGens/Synth control/Demand Rate/Dser.html
deleted file mode 100644
index f74ff71..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dser.html	
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dser<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> demand rate sequence generator</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: ListDUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(array, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b><span class="Apple-tab-span">	</span>array of values or other ugens</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of values to return</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pser.html"><span class="s2"><b><i>Pser</i></b></span></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s2"><b>Demand</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dser</span>([1, 3, 2, 7, 8], <span class="s4">8</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(<span class="s4">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dseries.html b/Help/UGens/Synth control/Demand Rate/Dseries.html
deleted file mode 100644
index 3ee9fb4..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dseries.html	
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dseries</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> demand rate arithmetic series ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(start, step, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>start</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>start value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>step</b> <span class="Apple-tab-span">	</span>step value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of values to create</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The arguments can be a number or any other ugen</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pseries.html"><span class="s2"><b><i>Pseries</i></b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>see also: <a href="Demand.html"><span class="s2"><b>Demand</b></span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dseries</span>(0, 1, 15);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(<span class="s4">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dseries</span>(0, 1, <span class="s4">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Dust</span>.kr(<span class="s4">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) % 15 * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dshuf.html b/Help/UGens/Synth control/Demand Rate/Dshuf.html
deleted file mode 100644
index 4fb6d7f..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dshuf.html	
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #0033f1}
-span.s4 {font: 12.0px Helvetica; color: #000000}
-span.s5 {color: #001bb9}
-span.s6 {color: #000000}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dshuf<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>demand rate random sequence generator</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: ListDUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(array, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b><span class="Apple-tab-span">	</span>array of values or other ugens</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of repeats</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pshuf.html"><span class="s2"><b><i>Pshuf</i></b></span></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s3"><b>Demand</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Dseq</span>([<span class="s5">Dshuf</span>([1, 3, 2, 7, 8.5], 3)], <span class="s5">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// audio rate</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Dseq</span>([<span class="s5">Dshuf</span>({ 10.rand } ! 81, 5)], <span class="s5">inf</span>).poll;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.ar(<span class="s5">MouseX</span>.kr(1, 10000, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Demand</span>.ar(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s6"><span class="Apple-tab-span">	</span></span>// embedded structures</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">var</span> a, freq, trig;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s7">Dseq</span>([<span class="s7">Dshuf</span>([<span class="s7">Drand</span><span class="s6">([1, 2, 3], </span><span class="s7">1</span><span class="s6">)</span>, 3, <span class="s7">Drand</span>([20, 23, 56], <span class="s7">1</span>), 7, 8.5], 8)], <span class="s7">inf</span>);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s7">Impulse</span>.kr(<span class="s7">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s7">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s7">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="s6"><span class="Apple-tab-span">	</span></span>)</p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dstutter.html b/Help/UGens/Synth control/Demand Rate/Dstutter.html
deleted file mode 100644
index ac8d649..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dstutter.html	
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0024f8}
-span.s4 {font: 12.0px Helvetica; color: #000000}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dstutter<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>demand rate input replicator</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: ListDUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(n, in)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>n</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>number of repeats (can be a demand ugen)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>in</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>input ugen</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pstutter.html"><span class="s2"><b>Pstutter</b></span></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s3"><b>Demand</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> in = <span class="s5">Dseq</span>([1, 2, 3], <span class="s5">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> rep = <span class="s5">Dstutter</span>(Diwhite(2, 8, inf), in);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Demand</span>.kr(trig, 0, rep).poll(trig) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dswitch.htm b/Help/UGens/Synth control/Demand Rate/Dswitch.htm
deleted file mode 100644
index 9613c6d..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dswitch.htm	
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #001bb9}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dswitch<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> demand rate generator for embedding different inputs</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Dswitch1</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(array, index)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b><span class="Apple-tab-span">	</span>array of values or other ugens</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index</b><span class="Apple-tab-span">	</span>which of the inputs to return</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pswitch.html"><span class="s2"><b><i>Pswitch</i></b></span></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s2"><b>Demand</b></span></a><b>, </b><a href="Duty.html"><span class="s2"><b>Duty</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>In difference to <a href="Dswitch1.html"><span class="s2">Dswitch1</span></a>, Dswitch embeds all items of<span class="Apple-converted-space"> </span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>an input demand ugen first before looking up the next index.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ </p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> d, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s4">Dswitch</span>([</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dwhite</span>(3, 4, 2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dwhite</span>(0, 1, 2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dseq</span>([1, 1, 1, 0], 2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s4">Dseq</span>([0, 1, 2, 1, 0], 2));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(4);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Demand</span>.kr(trig, 0, d).poll(trig)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 300 + 400</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 0.1 ! 2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s5"><span class="Apple-tab-span">	</span></span>// compare with Dswitch1:</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ </p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> d, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>d = <span class="s4">Dswitch1</span>([</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dwhite</span>(3, 4, 2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dwhite</span>(0, 1, 2),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dseq</span>([1, 1, 1, 0], 2)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], <span class="s4">Dseq</span>([0, 1, 2, 1, 0], 2));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(4);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Demand</span>.kr(trig, 0, d).poll(trig)</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 300 + 400</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* 0.1 ! 2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dswitch1.html b/Help/UGens/Synth control/Demand Rate/Dswitch1.html
deleted file mode 100644
index 400f062..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dswitch1.html	
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dswitch1<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> demand rate generator for switching between inputs</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(array, index)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b><span class="Apple-tab-span">	</span>array of values or other ugens</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>index</b><span class="Apple-tab-span">	</span>which of the inputs to return</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pswitch1.html"><span class="s2"><b><i>Pswitch1</i></b></span></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s2"><b>Demand</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dswitch1</span>([1, 3, <span class="s4">MouseY</span>.kr(1, 15), 2, <span class="s4">Dwhite</span>(0, 3, 2)], <span class="s4">MouseX</span>.kr(0, 4));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(<span class="s4">3</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s4">Dswitch1</span>({ |i| <span class="s4">Dseq</span>((0..i*3), <span class="s4">inf</span>) } ! 5, <span class="s4">MouseX</span>.kr(0, 4));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.kr(6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s4">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Duty.html b/Help/UGens/Synth control/Demand Rate/Duty.html
deleted file mode 100644
index 7c74f0a..0000000
--- a/Help/UGens/Synth control/Demand Rate/Duty.html	
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Duty<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>demand results from demand rate ugens</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><span class="s5"><b>UGen</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Duty.ar(dur, reset, level, doneAction)</b></p>
-<p class="p4"><b>Duty.kr(dur, reset, level, doneAction)</b></p>
-<p class="p5"><br></p>
-<p class="p4">See also: <a href="TDuty.html"><span class="s6">TDuty</span></a>, <a href="Demand.html"><span class="s6">Demand</span></a></p>
-<p class="p5"><br></p>
-<p class="p4">A value is demanded each ugen in the list and output according to a stream of duration values.<span class="Apple-converted-space"> </span></p>
-<p class="p4">The unit generators in the list should be 'demand' rate.</p>
-<p class="p2"><br></p>
-<p class="p4">When there is a trigger at the reset input, the demand rate ugens in the list and the duration are reset.</p>
-<p class="p4">The reset input may also be a demand ugen, providing a stream of reset times.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>dur<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>time values. Can be a demand ugen or any signal.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The next level is acquired after duration.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>reset</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trigger or reset time values. Resets the list of ugens and the duration ugen when triggered.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The reset input may also be a demand ugen, providing a stream of reset times.</p>
-<p class="p6"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>level<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>demand ugen providing the output values.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>doneAction</b><span class="Apple-tab-span">	</span>a doneAction that is evaluated when the duration stream ends.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>See <a href="../Envelopes/UGen-doneActions.html"><span class="s7">UGen-doneActions</span></a> for more detail.</p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// examples</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> freq;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s3">Duty</span>.kr(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Drand</span><span class="s2">([0.01, 0.2, 0.4], </span><span class="s3">inf</span><span class="s2">), </span>// demand ugen as durations</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dseq</span>([204, 400, 201, 502, 300, 200], <span class="s3">inf</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> freq;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s3">Duty</span>.kr(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">MouseX</span><span class="s2">.kr(0.001, 2, 1), </span>// control rate ugen as durations</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dseq</span>([204, 400, 201, 502, 300, 200], <span class="s3">inf</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// resetting the demand ugens</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> freq;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s3">Duty</span>.kr(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dseq</span>([0.2, 0.3, 0.4, <span class="s3">Dseq</span>([1, 1, 1, 2, 1, 2], <span class="s3">inf</span>)]) / 2,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Dust</span><span class="s2">.kr(1), </span>// control rate reset</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dseq</span>([0, 1, 2, <span class="s3">Dseq</span>([1, 2, 3, 4, 5], <span class="s3">inf</span>)])</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 30 + 250;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> freq;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s3">Duty</span>.kr(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dseq</span>([0.2, 0.3, 0.4, <span class="s3">Dseq</span>([1, 1, 1, 2, 1, 2], <span class="s3">inf</span>)]) / 2,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dseq</span>([1, 2, 4, 5], <span class="s3">inf</span>), <span class="s8">// demand rate reset</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dseq</span>([0, 1, 2, <span class="s3">Dseq</span>([1, 2, 3, 4, 5], <span class="s3">inf</span>)])</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * 30 + 250;<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freq * [1, 1.01]) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// demand ugen as audio oscillator</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> a, n=5, m=64;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> x;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { 0.2.rand2 } ! m;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x ++ ({<span class="Apple-converted-space">  </span><span class="s3">Drand</span>({ 0.2.rand2 } ! n) } ! m.rand);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dseq</span>(x.scramble, <span class="s3">inf</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} ! n;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Duty</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">MouseX</span>.kr(1, 125, 1) * <span class="s3">SampleDur</span>.ir * [1, 1.02],</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Dswitch1</span>(a, <span class="s3">MouseY</span>.kr(0, n-1))</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p7">// single sample feedback: a lin cong algorithm</p>
-<p class="p8">(</p>
-<p class="p8">b = <span class="s3">Buffer</span>.alloc(s, 1);</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s3">var</span> x, y, rate, a, c, m;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>rate = <span class="s3">MouseX</span>.kr(100, <span class="s3">SampleRate</span>.ir);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a = 1.1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>c = 0.13;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>m = 1.0;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>x = </span><span class="s3">Dbufrd</span><span class="s2">(b); </span>// read from buffer</p>
-<p class="p8"><span class="Apple-tab-span">	</span>x = x * a + c % m;</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>y = </span><span class="s3">Dbufwr</span><span class="s2">(x, b); </span>// write to buffer</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s3">Duty</span>.ar(1 / rate, 0, y) * 0.1;</p>
-<p class="p8">}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dwhite.html b/Help/UGens/Synth control/Demand Rate/Dwhite.html
deleted file mode 100644
index 74b35b5..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dwhite.html	
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0033f1}
-span.s3 {font: 12.0px Helvetica; color: #000000}
-span.s4 {color: #000000}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dwhite, Diwhite</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>demand rate white noise random generators</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(lo, hi, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>lo</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>minimum value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>hi</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>maximum value</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of values to create</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>Dwhite returns numbers in the continuous range between lo and hi, Diwhite returns integer values</p>
-<p class="p1"><span class="Apple-tab-span">	</span>The arguments can be a number or any other ugen</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pwhite.html"><span class="s2"><b><i>Pwhite</i></b></span></a><b><i>, </i></b><a href="../../Noise/WhiteNoise.html"><span class="s2"><b><i>WhiteNoise</i></b></span></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s2"><b>Demand</b></span></a><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s3"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>// Dwhite</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Dwhite</span>(0, 15, <span class="s5">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>// Diwhite</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Diwhite</span>(0, 15, <span class="s5">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(1, 40, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s4"><span class="Apple-tab-span">	</span></span>// Dwhite and Diwhite</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> a, freq, trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Dwhite</span>(0, <span class="s5">Dseq</span>([<span class="s5">Dgeom</span>(1, 1.01, <span class="s5">Diwhite</span>(50, 800, <span class="s5">inf</span>))], <span class="s5">inf</span>) - 1, <span class="s5">inf</span>);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Duty</span>.kr(<span class="s5">SampleDur</span>.ir, 0, a) + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/Dwrand.html b/Help/UGens/Synth control/Demand Rate/Dwrand.html
deleted file mode 100644
index d12acd7..0000000
--- a/Help/UGens/Synth control/Demand Rate/Dwrand.html	
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.32">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #1738f5}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1713}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000ff}
-span.s4 {font: 12.0px Helvetica; color: #000000}
-span.s5 {color: #102ac3}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Dwrand<span class="Apple-tab-span">	</span></b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>demand rate weighted random sequence generator</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: DUGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*new(array, weights, length)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>array</b><span class="Apple-tab-span">	</span>array of values or other ugens</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>weights</b><span class="Apple-tab-span">	</span>array of values (should sum up to 1.0)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>length</b><span class="Apple-tab-span">	</span>number of values to return</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span>structurally related: <a href="../../../Streams-Patterns-Events/Patterns/Pwrand.html"><b>Pwrand</b></a></span><b>, </b><a href="../../Triggers/TWindex.html"><b>TWindex</b></a><b>, </b><a href="../../Triggers/TWChoose.html"><b>TWChoose</b></a></p>
-<p class="p1"><b><i><span class="Apple-tab-span">	</span></i></b>see also: <a href="Demand.html"><span class="s3"><b>Demand</b></span></a></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s4"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> a, freq, trig;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = <span class="s5">Dwrand</span>([0, 1, 2, 7], [0.4, 0.4, 0.1, 0.1], <span class="s5">inf</span>).dpoll;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(1, 400, 1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>freq = <span class="s5">Demand</span>.kr(trig, 0, a) * 30 + 340;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(freq) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Demand Rate/TDuty.html b/Help/UGens/Synth control/Demand Rate/TDuty.html
deleted file mode 100644
index 86728f1..0000000
--- a/Help/UGens/Synth control/Demand Rate/TDuty.html	
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #0000bf}
-span.s6 {color: #0000bf}
-span.s7 {color: #0000bf}
-span.s8 {color: #bf0000}
-span.s9 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TDuty<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>demand results as trigger from demand rate ugens</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><span class="s4"><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s5"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><span class="s3"><b>UGen</b></span></a><b> : </b><a href="Duty.html"><span class="s3"><b>Duty</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>TDuty.ar(dur, reset,<span class="Apple-converted-space">  </span>level, doneAction)</b></p>
-<p class="p4"><b>TDuty.kr(dur, reset,<span class="Apple-converted-space">  </span>level, doneAction)</b></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p4">(Note that for sc 3.2, TDuty has changed. For the old behaviour, use <b>TDuty_old</b>.)<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4">A value is demanded each ugen in the list and output<span class="Apple-converted-space">  </span>as a trigger according to a stream of duration values.<span class="Apple-converted-space"> </span></p>
-<p class="p4">The unit generators in the list should be 'demand' rate.</p>
-<p class="p2"><br></p>
-<p class="p4">When there is a trigger at the reset input, the demand rate ugens in the list and the duration are reset.</p>
-<p class="p4">The reset input may also be a demand ugen, providing a stream of reset times.</p>
-<p class="p2"><br></p>
-<p class="p4">see also: <a href="Demand.html"><span class="s4">Demand</span></a><span class="s4">, <a href="Duty.html"><span class="s6">Duty</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>dur<span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>time values. Can be a demand ugen or any signal.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The next trigger value is acquired after the duration provided by the last time value.</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>reset</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trigger or reset time values. Resets the list of ugens and the duration ugen when triggered.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>The reset input may also be a demand ugen, providing a stream of reset times.</p>
-<p class="p6"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>level<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b><span class="Apple-tab-span">	</span>demand ugen providing the output values.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>doneAction</b><span class="Apple-tab-span">	</span>a doneAction that is evaluated when the duration stream ends.</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>See <a href="../Envelopes/UGen-doneActions.html"><span class="s7">UGen-doneActions</span></a> for more detail.</p>
-<p class="p2"><br></p>
-<p class="p6"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// examples</p>
-<p class="p5"><br></p>
-<p class="p8">s.boot;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// play a little rhythm</p>
-<p class="p5"><br></p>
-<p class="p8">{ <span class="s4">TDuty</span>.ar(<span class="s4">Dseq</span>([0.1, 0.2, 0.4, 0.3], <span class="s4">inf</span>)) }.play; <span class="s8">// demand ugen as durations</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// amplitude changes</p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> trig;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">TDuty</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dseq</span>([0.1, 0.2, 0.4, 0.3], <span class="s4">inf</span>), <span class="s8">// demand ugen as durations</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dseq</span>([0.1, 0.4, 0.01, 0.5, 1.0], <span class="s4">inf</span>) <span class="s8">// demand ugen as amplitude</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Ringz</span>.ar(trig, 1000, 0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> trig;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">TDuty</span>.ar(</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">MouseX</span><span class="s2">.kr(0.001, 2, 1), </span>// control rate ugen as durations</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dseq</span>([0.1, 0.4, 0.01, 0.5, 1.0], <span class="s4">inf</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Ringz</span>.ar(trig, 1000, 0.1)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// demand ugen as audio oscillator</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> a, trig, n=5, m=64;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a = {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> x;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = { 0.2.rand2 } ! m;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = x ++ ({<span class="Apple-converted-space">  </span><span class="s4">Drand</span>({ 0.2.rand2 } ! n) } ! m.rand);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dseq</span>(x.scramble, <span class="s4">inf</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>} ! n;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig = <span class="s4">TDuty</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">MouseX</span>.kr(1, 2048, 1) * <span class="s4">SampleDur</span>.ir * [1, 1.02],</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Dswitch1</span>(a, <span class="s4">MouseY</span>.kr(0, n-1))</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Ringz</span>.ar(trig, 1000, 0.01)</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// single impulses</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="s4">SynthDef</span>(<span class="s9">"delta_demand"</span>, { arg amp=0.5, out;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">OffsetOut</span>.ar(out,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">TDuty</span>.ar(<span class="s4">Dseq</span>([0]), 0, amp, 2)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).send(s);</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p8">fork { 10.do { s.sendBundle(0.2, [<span class="s9">"/s_new"</span>, <span class="s9">"delta_demand"</span>, -1]); 1.0.rand.wait } };</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// chain of impulses</p>
-<p class="p8">(</p>
-<p class="p9"><span class="s4">SynthDef</span><span class="s2">(</span>"delta_demand2"<span class="s2">, {</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span>OffsetOut<span class="s2">.ar(0,</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">TDuty</span>.ar(<span class="s4">Dgeom</span>(0.05, 0.9, 20), 0, 0.5, 2)</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8">}).send(s);</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p8">fork { 10.do { s.sendBundle(0.2, [<span class="s9">"/s_new"</span>, <span class="s9">"delta_demand2"</span>, -1]); 1.0.rand.wait } };</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// multichannel expansion</p>
-<p class="p5"><br></p>
-<p class="p8">(</p>
-<p class="p8"><span class="Apple-tab-span">	</span>{</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">var</span> t;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>t = <span class="s4">TDuty</span>.ar(</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Drand</span>([<span class="s4">Dgeom</span>(0.1, 0.8, 20), 1, 2], <span class="s4">inf</span>) ! 2,</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[<span class="s4">Drand</span>({ 1.0.rand } ! 8, <span class="s4">inf</span>), <span class="s4">Dseq</span>({ 1.0.rand } ! 8, <span class="s4">inf</span>)] * 2</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>x = <span class="s4">Ringz</span>.ar(t, [400, 700], 0.1) * 0.1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p8">)</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/DetectIndex.htm b/Help/UGens/Synth control/DetectIndex.htm
deleted file mode 100644
index 3ecdae5..0000000
--- a/Help/UGens/Synth control/DetectIndex.htm	
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a32011}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0012b9}
-span.s3 {color: #a32011}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DetectIndex<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>search a buffer for a value</b><span class="s1"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>DetectIndex.ar(bufnum, in, mul, add)</b></p>
-<p class="p1"><b>DetectIndex.kr(bufnum, in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>bufnum</b> - index of the buffer</p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p4">(</p>
-<p class="p4"><span class="s2">var</span> max = 300;</p>
-<p class="p4">t = <span class="s2">Array</span>.series(max, 0, 1).curdle(0.06).scramble.flat;</p>
-<p class="p4">b = <span class="s2">Buffer</span>(s, t.size, 1);</p>
-<p class="p3"><br></p>
-<p class="p5">// alloc and set the values</p>
-<p class="p4">s.listSendMsg( b.allocMsg( b.setnMsg(0, t) ) );</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> index, in, out, f0, fdiff;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> bufnum = b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">var</span> input;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>input = <span class="s2">MouseX</span>.kr(0, max).round(1); <span class="s3">// round to precision</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>index = <span class="s2">DetectIndex</span>.kr(bufnum, input);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>index.poll;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(index.linexp(0, max, 200, 700)) * 0.1</p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p3"><br></p>
-<p class="p4">b.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/Decay.html b/Help/UGens/Synth control/Envelopes/Decay.html
deleted file mode 100644
index 07d3a8f..0000000
--- a/Help/UGens/Synth control/Envelopes/Decay.html	
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Decay<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>exponential decay</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Decay.ar(in, decayTime, mul, add)</b></p>
-<p class="p1"><b>Decay.kr(in, decayTime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">This is essentially the same as <a href="../Integrator.html"><span class="s7">Integrator</span></a> except that instead of supplying the coefficient directly, it is caculated from a 60 dB decay time. This is the time required for the integrator to lose 99.9 % of its value or -60dB. This is useful for exponential decaying envelopes triggered by impulses.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>decayTime</b> - 60 dB decay time in seconds.</p>
-<p class="p2"><br></p>
-<p class="p4">plot({ <span class="s7">Decay</span>.ar(<span class="s7">Impulse</span>.ar(1), 0.01) });</p>
-<p class="p5"><br></p>
-<p class="p6">// used as an envelope</p>
-<p class="p4">play({ <span class="s7">Decay</span>.ar(<span class="s7">Impulse</span>.ar(<span class="s7">XLine</span>.kr(1,50,20), 0.25), 0.2, <span class="s7">PinkNoise</span>.ar, 0) });</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/Decay2.html b/Help/UGens/Synth control/Envelopes/Decay2.html
deleted file mode 100644
index 5d9c985..0000000
--- a/Help/UGens/Synth control/Envelopes/Decay2.html	
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {text-decoration: underline ; color: #0021e7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Decay2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>exponential decay</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Decay2.ar(in, attackTime, decayTime, mul, add)</b></p>
-<p class="p1"><b>Decay2.kr(in, attackTime, decayTime, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s7"><a href="Decay.html">Decay</a></span> has a very sharp attack and can produce clicks. Decay2 rounds off the attack by subtracting one Decay from another. Decay2.ar(in, attackTime, decayTime) is equivalent to:</p>
-<p class="p2"><br></p>
-<p class="p1">Decay.ar(in, decayTime) - Decay.ar(in, attackTime)</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>attackTime</b> - 60 dB attack time in seconds.</p>
-<p class="p1"><b>decayTime</b> - 60 dB decay time in seconds.</p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// since attack and decay are a difference of two Decays,<span class="Apple-converted-space"> </span></p>
-<p class="p5">// swapping the values, the envelope turns upside down:</p>
-<p class="p6">plot({ <span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(1), 0.001, 0.01) })</p>
-<p class="p6">plot({ <span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(1), 0.01, 0.001) })</p>
-<p class="p4"><br></p>
-<p class="p5">// used as an envelope</p>
-<p class="p6">{ <span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(<span class="s3">XLine</span>.kr(1,50,20), 0.25), 0.01, 0.2, <span class="s3">FSinOsc</span>.ar(600)) }.play;</p>
-<p class="p4"><br></p>
-<p class="p5">// compare the above with Decay used as the envelope</p>
-<p class="p6">{ <span class="s3">Decay</span>.ar(<span class="s3">Impulse</span>.ar(<span class="s3">XLine</span>.kr(1,50,20), 0.25), 0.2, <span class="s3">FSinOsc</span>.ar(600), 0)<span class="Apple-converted-space">  </span>}.play;</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/DetectSilence.html b/Help/UGens/Synth control/Envelopes/DetectSilence.html
deleted file mode 100644
index 226a322..0000000
--- a/Help/UGens/Synth control/Envelopes/DetectSilence.html	
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 44.0px; text-indent: -44.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #90261d}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0a22ac}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #001ff0}
-span.s3 {color: #000000}
-span.s4 {color: #0a22ac}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>DetectSilence<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>when input falls below a threshhold, evaluate doneAction</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>superclass: UGen</b></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><b>*ar(input, amp, time, doneAction)<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><b>*kr(input, amp, time, doneAction)<span class="Apple-converted-space"> </span></b></p>
-<p class="p4"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>input</b> - any source</p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>amp</b> - when input falls below this, evaluate doneAction</p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>time</b><span class="Apple-tab-span">	</span>- the minimum duration of the for which input must fall below thresh before this triggers. The default is 0.1 seconds.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><b>doneAction</b> - an integer representing a done action. See <a href="UGen-doneActions.html"><span class="s2">UGen-doneActions</span></a> for more detail.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3">If the signal input starts with silence at the beginning of the synth's duration, then DetectSilence will wait indefinitely until the first sound before starting to monitor for silence.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3">This UGen outputs 1 if silence is detected, otherwise 0.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s3"><span class="Apple-tab-span">	</span></span>//example</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s4">SynthDef</span><span class="s3">(</span>"detectSilence-help"<span class="s3">, { </span><span class="s4">arg</span><span class="s3"> out;</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var z;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = SinOsc.ar(Rand(400, 700), 0, LFNoise2.kr(8, 0.2).max(0));</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>DetectSilence.ar(z, doneAction:2);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">z</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span>s.sendMsg(</span>"/s_new"<span class="s3">, </span>"detectSilence-help"<span class="s3">, -1);</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span>s.sendMsg(</span>"/s_new"<span class="s3">, </span>"detectSilence-help"<span class="s3">, -1);</span></p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span>s.sendMsg(</span>"/s_new"<span class="s3">, </span>"detectSilence-help"<span class="s3">, -1);</span></p>
-<p class="p7"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>Task<span class="s3">({</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendMsg(</span>"/s_new"<span class="s3">, </span>"detectSilence-help"<span class="s3">, -1);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0.5, 1].choose.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/Done.html b/Help/UGens/Synth control/Envelopes/Done.html
deleted file mode 100644
index b74fcd5..0000000
--- a/Help/UGens/Synth control/Envelopes/Done.html	
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #bf0000}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Done<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>monitors another UGen to see when it is finished<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Done.kr(src)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Some UGens, such as PlayBuf, RecordBuf, Line, XLine, EnvGen, Linen, BufRd, BufWr, DbufRd, and the Buffer delay UGens set a 'done' flag when they are finished playing. This UGen echoes that flag when it is set to track a particular UGen.<span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p3"><b>src</b> - UGen to monitor</p>
-<p class="p4"><br></p>
-<p class="p5">//example</p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">"Done-help"</span>, { <span class="s2">arg</span> out, t_trig;</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">var</span> line, a, b;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>line= <span class="s2">Line</span>.kr(1,0,1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>a= <span class="s2">SinOsc</span>.ar(440,0,0.1*line); <span class="s4">//sound fading out</span></p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span>b= </span><span class="s2">WhiteNoise</span><span class="s5">.ar(</span><span class="s2">Done</span><span class="s5">.kr(line)*0.1); </span>//noise starts at end of line</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(out, <span class="s2">Pan2</span>.ar(a+b));</p>
-<p class="p7">}).send(s);</p>
-<p class="p7">)</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s2">Synth</span><span class="s5">(</span><span class="s3">"Done-help"</span><span class="s5">); </span>//note that this synth doesn't have it's own doneAction, so you'll need to manually deallocate it</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/EnvGen.html b/Help/UGens/Synth control/Envelopes/EnvGen.html
deleted file mode 100644
index b3cad35..0000000
--- a/Help/UGens/Synth control/Envelopes/EnvGen.html	
+++ /dev/null
@@ -1,201 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0000ee}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.s7 {font: 12.0px Helvetica}
-span.s8 {color: #bf0000}
-span.s9 {text-decoration: underline ; color: #0000ee}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>EnvGen</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>envelope generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../../Core/Object.html"><span class="s4"><b>Object</b></span></a></span><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../../UGen.html"><b>UGen</b></a></p>
-<p class="p4"><br></p>
-<p class="p5">Plays back break point envelopes. The envelopes are instances of the Env class. See the <a href="../../../Control/Env.html"><span class="s5">Env</span></a> for more info. The arguments for <b>levelScale</b>, <b>levelBias</b>, and <b>timeScale</b> are polled when the EnvGen is triggered and remain constant for the duration of the envelope.</p>
-<p class="p6"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p7"><b>*ar(envelope, gate, levelScale, levelBias, timeScale, doneAction)</b></p>
-<p class="p7"><b>*kr(envelope, gate, levelScale, levelBias, timeScale, doneAction)</b></p>
-<p class="p8"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span><b>envelope</b> <span class="Apple-tab-span">	</span>- an instance of <b>Env</b>, or an Array of Controls. (See <a href="../Control.html"><span class="s5">Control</span></a> and the example below for how to use this.)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>gate<span class="Apple-tab-span">	</span></b>-<b> </b>this triggers the envelope and holds it open while > 0. If the Env is fixed-length (e.g. Env.linen, Env.perc), the gate argument is used as a simple trigger. If it is an sustaining envelope (e.g. Env.adsr, Env.asr), the envelope is held open until the gate becomes 0, at which point is released.</p>
-<p class="p7"><b><span class="Apple-tab-span">	</span>levelScale</b> - scales the levels of the breakpoints.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>levelBias</b><span class="Apple-tab-span">	</span>- offsets the levels of the breakpoints.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>timeScale</b> - scales the durations of the segments.</p>
-<p class="p7"><span class="Apple-tab-span">	</span><b>doneAction</b> - an integer representing an action to be executed when the env is finished playing. This can be used to free the enclosing synth, etc. See <a href="UGen-doneActions.html"><span class="s5">UGen-doneActions</span></a> for more detail.</p>
-<p class="p8"><br></p>
-<p class="p9"><span class="Apple-tab-span">	</span>{ <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.perc, 1.0, doneAction: 2) * <span class="s5">SinOsc</span>.ar(440, 0, 0.1) }.play;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p5"><b>Note:</b><span class="Apple-converted-space"> </span></p>
-<p class="p4"><br></p>
-<p class="p5">The actual <b>minimum duration </b>of a segment is not zero, but one sample step for audio rate and one block for control rate. This may result in asynchronicity when in two envelopes of different number of levels, the envelope times add up to the same total duration. Similarly, when <b>modulating times</b>, the new time is only updated at the end of the current segment - this may lead to asynchronicity of two envelopes with modulated times.</p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p10">// example</p>
-<p class="p2"><br></p>
-<p class="p11"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s3">(</span><span class="s6">\env_help</span><span class="s3">, { </span>| out, gate = 0 |<span class="s3"><span class="Apple-converted-space"> </span></span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> z;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>z = <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.adsr, gate) * <span class="s5">SinOsc</span>.ar(440, 0, 0.1);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(out, z)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>a = Synth(<span class="s6">\env_help);</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// turn on</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.set(<span class="s6">\gate</span>, 1);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// turn off</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.set(<span class="s6">\gate</span>, 0);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span></span>// it does not matter to what value the gate is set, as long as it is > 0</p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.set(<span class="s6">\gate</span>, 2);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>a.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p13"><b>Changing an Env while playing</b></p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s5">SynthDef</span>(<span class="s6">\env</span>, { <span class="s5">arg</span> i_outbus=0;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">var</span> env, envctl;</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// make a dummy 8 segment envelope</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>env = <span class="s5">Env.</span>newClear(<span class="s5">8</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// create a control argument array</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>envctl = <span class="s5">Control</span>.names([<span class="s6">\env</span>]).kr( env.asArray );</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">ReplaceOut</span>.kr(i_outbus, <span class="s5">EnvGen</span>.kr(envctl, doneAction: 2));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s3">(</span><span class="s6">\sine</span><span class="s3">, {</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, <span class="s5">SinOsc</span>.ar(<span class="s5">In</span>.kr(0), 0, 0.2));</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s6">\c_set</span>, 0, 800);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s6">\s_new</span>, <span class="s6">\sine</span>, 1001, 1, 0);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>e = <span class="s5">Env</span>([700, 900, 900, 800], [1, 1, 1]*0.4, <span class="s6">\exp</span>).asArray;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.sendBundle(<span class="s5">nil</span>, [<span class="s6">\s_new</span>, <span class="s6">\env</span>, 1002, 2, 1001], [<span class="s6">\n_setn</span>, 1002, <span class="s6">\env</span>, e.size] ++ e);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>f = <span class="s5">Env</span>([1000, 1000, 800, 1000, 900, 1000], [1, 1, 1, 1, 1]*0.3, <span class="s6">\step</span>).asArray;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.sendBundle(<span class="s5">nil</span>, [<span class="s6">\s_new</span>, <span class="s6">\env</span>, 1003, 2, 1001], [<span class="s6">\n_setn</span>, 1003, <span class="s6">\env</span>, f.size] ++ f);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s6">\n_free</span>, 1001);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><br></p>
-<p class="p13"><b>Forced release of the EnvGen</b></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span>If the gate of an EnvGen is set to -1 or below, then the envelope will cutoff immediately. The time for it to <span class="Apple-tab-span">	</span>cutoff is the amount less than -1, with -1 being as fast as possible, -1.5 being a cutoff in 0.5 seconds, etc. <span class="Apple-tab-span">	</span>The cutoff shape is linear.</p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s5"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s5">SynthDef</span>(<span class="s6">\stealMe</span>, { <span class="s5">arg</span> gate = 1;</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Out</span>.ar(0, {<span class="s5">BrownNoise</span>.ar}.dup * <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.asr, gate, doneAction:2))</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s6">\s_new</span>, <span class="s6">\stealMe</span>, 1001, 1, 0);</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s6">\n_set</span>, 1001, <span class="s6">\gate</span>, -1.1); <span class="s8">// cutoff in 0.1 seconds</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>If the synthDef has an arg named "gate", the convenience method of <a href="../../../ServerArchitecture/Node.html"><span class="s5">Node</span></a> can be used:</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>Node-release(releaseTime)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>d = { <span class="s5">arg</span> gate=1; {<span class="s5">BrownNoise</span>.ar}.dup * <span class="s5">EnvGen</span>.kr(<span class="s5">Env</span>.asr, gate, doneAction:2) }.play;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>d.release(3);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Fast triggering tests</b></p>
-<p class="p4"><br></p>
-<p class="p11"><span class="s7"><span class="Apple-tab-span">	</span></span>(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">{</span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>EnvGen<span class="s3">.kr(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Env.new([ 0.001, 1, 0.5, 0 ], [ 0.01, 0.3, 1 ], -4, 2, nil),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Impulse.kr(10)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s5">SinOsc</span>.ar(440, 0, 0.1)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>(</p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>{<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>EnvGen<span class="s3">.kr(</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Env</span>.perc( 0.1, 0.0, 0.5, 1, <span class="s6">\welch</span> ),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Impulse.kr(100),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timeScale: 0.1</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s5">SinOsc</span>.ar(440, 0, 0.3)</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><b>Modulating the levelScale</b></p>
-<p class="p2"><br></p>
-<p class="p10">// no, it doesn't take a ugen in</p>
-<p class="p11">(</p>
-<p class="p11"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">EnvGen</span>.kr(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Env</span>.asr( 0.1, 1.0, 0.5, <span class="s6">\welch</span> ),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">FSinOsc</span>.ar(1.0).range(0.0, 1.0),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timeScale: 0.1</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s5">SinOsc</span>.ar(440, 0, 0.3)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p2"><br></p>
-<p class="p11">)</p>
-<p class="p10">// an .ir rate input, a float or an ir rate ugen like <a href="../../Random/Rand.html"><span class="s9">Rand</span></a> would work</p>
-<p class="p11">(</p>
-<p class="p11"><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">EnvGen</span>.kr(</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Env</span>.asr( 0.1, 1.0, 0.5, <span class="s6">\welch</span> ),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0,<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s5">Rand</span>(0.1, 1.0),<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timeScale: 0.1</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>) * <span class="s5">SinOsc</span>.ar(440, 0, 0.3)</p>
-<p class="p11"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p11">)</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/Free.html b/Help/UGens/Synth control/Envelopes/Free.html
deleted file mode 100644
index 7059711..0000000
--- a/Help/UGens/Synth control/Envelopes/Free.html	
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.s4 {color: #606060}
-span.s5 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Free</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> when triggered frees a node</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*kr(trig, nodeID)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>trig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>when triggered, frees node</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>nodeID</b><span class="Apple-tab-span">	</span>node to be freed<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>//example<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"a"</span>, { <span class="s3">Out</span>.ar(0, <span class="s3">SinOsc</span>.ar(800, 0, 0.2)) }).send(s);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"b"</span>, { <span class="s3">arg</span> t_t=0; <span class="s3">Out</span>.ar(1, <span class="s3">PinkNoise</span>.ar(0.3)); <span class="s3">Free</span>.kr(t_t, 1001); }).send(s);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\s_new</span>, <span class="s5">\a</span>, 1001, 0, 0);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\s_new</span>, <span class="s5">\b</span>, 1002, 0, 0);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\n_set</span>, 1002, <span class="s5">\t_t</span>, 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\s_new</span>, <span class="s5">\a</span>, 1001, 0, 0);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\n_set</span>, 1002, <span class="s5">\t_t</span>, 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\s_new</span>, <span class="s5">\a</span>, 1001, 0, 0);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\n_set</span>, 1002, <span class="s5">\t_t</span>, 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/FreeSelf.html b/Help/UGens/Synth control/Envelopes/FreeSelf.html
deleted file mode 100644
index d661d99..0000000
--- a/Help/UGens/Synth control/Envelopes/FreeSelf.html	
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #0021e7}
-span.s5 {color: #0000ff}
-span.s6 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FreeSelf<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>when triggered, free enclosing synth</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><b>UGen</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p5">free enclosing synth when input signal crosses from non-positive to positive</p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p5"><b>FreeSelf.kr(in)<span class="Apple-converted-space">  </span>in</b> - input signal</p>
-<p class="p4"><br></p>
-<p class="p5">see also: <a href="PauseSelf.html"><span class="s5">PauseSelf</span></a></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s6">\freeSelf_help</span><span class="s2">, { </span>|out, t_trig|</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">FreeSelf</span>.kr(t_trig);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, <span class="s3">SinOsc</span>.ar(400,0,0.2));</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span>a = </span><span class="s3">Synth</span><span class="s2">(</span>\freeSelf_help<span class="s2">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.set(<span class="s6">\t_trig</span>, 1);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// a single impulse SynthDef:</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s6">\dirac</span><span class="s2">, { </span>|out, amp=0.1|</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">var</span> u = <span class="s3">Impulse</span>.ar(0);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">FreeSelf</span>.kr(u);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(out, u * amp);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// multiply by amp after using for release, so amp = 0<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// doesn't cause synth buildup.</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>Task<span class="s2"> {</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fork {</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exprand(34, 156).do {<span class="s3">|i|</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i = i + 1;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Synth</span>.grain(<span class="s6">\dirac</span>, [<span class="s6">\amp</span>, 1 / i]);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(0.006 * i).wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>};<span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.wait;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>})</p>
-<p class="p8"><span class="Apple-tab-span">	</span>} .play;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/FreeSelfWhenDone.html b/Help/UGens/Synth control/Envelopes/FreeSelfWhenDone.html
deleted file mode 100644
index 304d6bb..0000000
--- a/Help/UGens/Synth control/Envelopes/FreeSelfWhenDone.html	
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #0000bf}
-span.s4 {color: #0000bf}
-span.s5 {color: #000000}
-span.s6 {color: #606060}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>FreeSelfWhenDone<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>free the enclosing synth when a UGen is finished</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>FreeSelfWhenDone.kr(src)</b></p>
-<p class="p4"><br></p>
-<p class="p3">Some UGens, such as PlayBuf, RecordBuf, Line, XLine, EnvGen, Linen, BufRd, BufWr and the Buffer delay UGens set a 'done' flag when they are finished playing. FreeSelfWhenDone will free the enclosing synth when this flag is set to true. Note that many of these UGens have doneActions, which are another way of accomplishing the same thing. See <a href="UGen-doneActions.html"><span class="s2">UGen-doneActions</span></a> for more detail. <b>N.B.</b> One must be careful when using binary operations on UGens with done flags, as these will return a <a href="../../Algebraic/BinaryOpUGen.html"><span class="s3">BinaryOpUGen</span></a>, and thus prevent the done flag from being accessible. See example below.</p>
-<p class="p4"><span class="Apple-converted-space"> </span></p>
-<p class="p3"><b>src</b> - the UGen to check for done.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p7">// simple example</p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s4">var</span> env;</p>
-<p class="p5">env = <span class="s4">Line</span>.kr(0, 1, 1);</p>
-<p class="p7"><span class="s4">FreeSelfWhenDone</span><span class="s5">.kr(env); </span>// free synth at end of line</p>
-<p class="p5"><span class="s4">SinOsc</span>.ar(200, 0, 0.5) * env<span class="Apple-converted-space"> </span></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// the previous example works, because FreeSelfWhenDone operates on the Line</p>
-<p class="p7">// this version won't work</p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s4">var</span> env, output;</p>
-<p class="p5">env = <span class="s4">Line</span>.kr(0, 1, 1);</p>
-<p class="p5">output = <span class="s4">SinOsc</span>.ar(200, 0, 0.5) * env;</p>
-<p class="p7"><span class="s5">output.postln; </span>// output is a BinaryOpUGen, which has no 'done' flag</p>
-<p class="p7"><span class="s4">FreeSelfWhenDone</span><span class="s5">.kr(output); </span>// won't ever be done</p>
-<p class="p5">output</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// record for four seconds</p>
-<p class="p5">b = <span class="s4">Buffer</span>.alloc(s, 44100 * 4.0, 1);</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">SynthDef</span>(<span class="s6">"help-RecordBuf"</span>,{ <span class="s4">arg</span> out=0,bufnum=0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> formant, recbuf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>formant = <span class="s4">Formant</span>.ar(<span class="s4">XLine</span>.kr(400,1000, 4), 2000, 800, 0.125);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>recbuf = <span class="s4">RecordBuf</span>.ar(formant, bufnum, recLevel: <span class="s4">Line</span>.kr(1, 1), loop: 0);</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span>// The RecordBuf doesn't loop, so you can check it for 'done' status</p>
-<p class="p8"><span class="s5"><span class="Apple-tab-span">	</span></span>FreeSelfWhenDone<span class="s5">.kr(recbuf);</span></p>
-<p class="p5">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// play it back</p>
-<p class="p5">(</p>
-<p class="p9"><span class="s4">SynthDef</span><span class="s5">(</span>"help-RecordBuf play"<span class="s5">,{ </span><span class="s4">arg</span><span class="s5"> out=0,bufnum=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">var</span> playbuf;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>playbuf = <span class="s4">PlayBuf</span>.ar(1,bufnum);</p>
-<p class="p7"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s4">FreeSelfWhenDone</span><span class="s5">.kr(playbuf); </span>// frees the synth when the PlayBuf is finished</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, playbuf);</p>
-<p class="p5">}).play(s,[<span class="s7">\out</span>, 0, <span class="s7">\bufnum</span>, b]);</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/Line.html b/Help/UGens/Synth control/Envelopes/Line.html
deleted file mode 100644
index 9412ef1..0000000
--- a/Help/UGens/Synth control/Envelopes/Line.html	
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0024f8}
-span.s7 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Line<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>line generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../../UGen.html"><span class="s5"><b>UGen</b></span></a></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Line.ar(start, end, dur, mul, add, doneAction)</b></p>
-<p class="p1"><b>Line.kr(start, end, dur, mul, add, doneAction)</b></p>
-<p class="p2"><br></p>
-<p class="p1">Generates a line from the start value to the end value.</p>
-<p class="p1"><b>start</b> - starting value</p>
-<p class="p1"><b>end</b> - ending value</p>
-<p class="p1"><b>dur</b> - duration in seconds</p>
-<p class="p1"><b>doneAction</b> - a doneAction to be evaluated when the Line is completed. See <a href="UGen-doneActions.html"><span class="s6">UGen-doneActions</span></a> for more detail.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">See also: <a href="XLine.html">XLine</a>, <a href="EnvGen.html">EnvGen</a>, <a href="../../Filters/Ramp.html">Ramp</a></span></p>
-<p class="p5"><br></p>
-<p class="p6">plot { <span class="s7">Line</span>.ar(0, 1, 0.01) };</p>
-<p class="p7"><br></p>
-<p class="p6">play { <span class="s7">SinOsc</span>.ar(<span class="s7">Line</span>.kr(200, 17000, 10), 0, 0.1) };</p>
-<p class="p7"><br></p>
-<p class="p8">// for certain values, like frequency, XLine sounds usually 'better' than Line:</p>
-<p class="p7"><br></p>
-<p class="p6">play { <span class="s7">SinOsc</span>.ar(<span class="s7">XLine</span>.kr(200, 17000, 10), 0, 0.1) };</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/Linen.html b/Help/UGens/Synth control/Envelopes/Linen.html
deleted file mode 100644
index 56a1a1a..0000000
--- a/Help/UGens/Synth control/Envelopes/Linen.html	
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #001bb9}
-span.s5 {color: #0000ff}
-span.s6 {color: #0000bf}
-span.s7 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Linen</b></span><span class="s2"> <span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></span><b>simple linear envelope generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../../UGen.html"><b>UGen</b></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Linen.kr( gate = 1.0, attackTime = 0.01, susLevel = 1.0, releaseTime = 1.0, doneAction = 0 )</b></p>
-<p class="p2"><br></p>
-<p class="p4">See <a href="UGen-doneActions.html"><span class="s4">UGen-doneActions</span></a> and <a href="EnvGen.html"><span class="s5">EnvGen</span></a> for more detail.</p>
-<p class="p5"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// triggered</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s4">{ Linen</span>.kr(<span class="s4">Impulse</span>.kr(2), 0.01, 0.6, 1.0, doneAction: 0) * <span class="s4">SinOsc</span>.ar(440, 0, 0.1)}.play;</p>
-<p class="p6"><br></p>
-<p class="p7">// play once and end the synth</p>
-<p class="p2"><br></p>
-<p class="p8"><span class="s4">{ Linen</span>.kr(<span class="s4">Impulse</span>.kr(0), 0.01, 0.6, 1.0, doneAction: 2) * <span class="s4">SinOsc</span>.ar(440, 0, 0.1)}.play;</p>
-<p class="p6"><br></p>
-<p class="p7">// play once and sustain</p>
-<p class="p8">(</p>
-<p class="p7"><span class="s3">x = { </span><span class="s4">arg</span><span class="s3"> gate = 1, out = 0; </span>// use gate arg for release</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Linen</span>.kr(gate, 0.01, 0.6, 1.0, doneAction: 2) * <span class="s4">SinOsc</span>.ar(440, 0, 0.1)</p>
-<p class="p8">}.play;</p>
-<p class="p8">)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s3">x.release(4); </span>// change the release time</p>
-<p class="p2"><br></p>
-<p class="p7">// longer gate, can pass in sustain</p>
-<p class="p8">(</p>
-<p class="p8"><span class="s4">x = </span>{ <span class="s4">arg</span> out = 0, sustain = 2;</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="s4">var</span> gate;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>gate = <span class="s4">Trig</span>.kr(1.0, sustain);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Linen</span>.kr(gate, 0.01, 0.6, 1.0, doneAction: 2) * <span class="s4">SinOsc</span>.ar(440, 0, 0.1)</p>
-<p class="p8">}.play;</p>
-<p class="p8">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p9">// used below in a Routine varying the releaseTime</p>
-<p class="p10">(</p>
-<p class="p10"><span class="s6">SynthDef</span>(<span class="s7">\help_Linen</span>, { <span class="s6">arg</span> out=0, freq=440, attackTime=0.01, susLevel=0.6, releaseTime=0.1;</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="s6">Out</span>.ar(out,<span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Linen</span>.kr(<span class="s6">Impulse</span>.kr(0), attackTime, susLevel, releaseTime, doneAction: 2)</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s6">SinOsc</span>.ar(freq, 0, 0.1)</p>
-<p class="p10"><span class="Apple-tab-span">	</span>)</p>
-<p class="p10">}).send(s);</p>
-<p class="p10">)</p>
-<p class="p11"><br></p>
-<p class="p10">(</p>
-<p class="p9">// Debussy sleeping through math class</p>
-<p class="p10">x = <span class="s6">Pbrown</span>(0.01, 2.0, 0.2, <span class="s6">inf</span>).asStream;</p>
-<p class="p12">Routine<span class="s3">({</span></p>
-<p class="p10"><span class="Apple-tab-span">	</span>loop({</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s6">Synth</span>.grain(<span class="s7">\help_Linen</span>, [<span class="s7">\freq</span>, (rrand(20, 50) * 2).midicps, <span class="s7">\releaseTime</span>, x.next]);</p>
-<p class="p10"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait;</p>
-<p class="p10"><span class="Apple-tab-span">	</span>})</p>
-<p class="p10">}).play(<span class="s6">TempoClock</span>.default)</p>
-<p class="p10">)</p>
-<p class="p2"><br></p>
-<p class="p8">(</p>
-<p class="p8">{ <span class="s4">Linen</span>.kr(<span class="s4">Impulse</span>.kr(2),<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// sustain level is polled at time of trigger</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">FSinOsc</span>.kr(0.1).range(0, 1),<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0,<span class="Apple-converted-space"> </span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 0)</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s4">SinOsc</span>.ar(440, 0, 0.1)</p>
-<p class="p8">}.play</p>
-<p class="p8">);</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/Pause.html b/Help/UGens/Synth control/Envelopes/Pause.html
deleted file mode 100644
index 6b2e7d0..0000000
--- a/Help/UGens/Synth control/Envelopes/Pause.html	
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #a71e12; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.s4 {color: #606060}
-span.s5 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Pause</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> when triggered pauses a node</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*kr(gate, nodeID)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>gate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>when gate is 0,<span class="Apple-converted-space">  </span>node is paused, when 1 it runs</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>nodeID</b><span class="Apple-tab-span">	</span>node to be paused<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>//example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.boot;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"a"</span>, { <span class="s3">Out</span>.ar(0, <span class="s3">SinOsc</span>.ar(800, 0, 0.2)) }).send(s);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">SynthDef</span>(<span class="s4">"b"</span>, { <span class="s3">arg</span> gate=1; <span class="s3">Out</span>.ar(1, <span class="s3">PinkNoise</span>.ar(0.3)); <span class="s3">Pause</span>.kr(gate, 1001); }).send(s);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\s_new</span>, <span class="s5">\a</span>, 1001, 0, 0);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\s_new</span>, <span class="s5">\b</span>, 1002, 0, 0);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\n_set</span>, 1002, <span class="s5">\gate</span>, 0);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>s.sendMsg(<span class="s5">\n_set</span>, 1002, <span class="s5">\gate</span>, 1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/PauseSelf.html b/Help/UGens/Synth control/Envelopes/PauseSelf.html
deleted file mode 100644
index 6546ed3..0000000
--- a/Help/UGens/Synth control/Envelopes/PauseSelf.html	
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #2c7014}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #001bb9}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PauseSelf<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>when triggered, pause enclosing synth</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../../UGen.html"><span class="s3"><b>UGen</b></span></a></p>
-<p class="p2"><br></p>
-<p class="p4">pause enclosing synth when input signal crosses from non-positive to positive</p>
-<p class="p5"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b>PauseSelf.kr(in)<span class="Apple-converted-space">  </span>in</b> - input signal</p>
-<p class="p5"><br></p>
-<p class="p4">see also: <a href="FreeSelf.html"><span class="s4">FreeSelf</span></a></p>
-<p class="p5"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// example</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>(</p>
-<p class="p9"><span class="s2"><span class="Apple-tab-span">	</span></span>SynthDef<span class="s2">(</span><span class="s5">\pauseSelf_help</span><span class="s2">, {</span>|out, t_trig|</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">PauseSelf</span>.kr(t_trig);</p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Out</span>.ar(out, <span class="s4">SinOsc</span>.ar(400,0,0.2));</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).send(s);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span>a = </span><span class="s4">Synth</span><span class="s2">(</span>\pauseSelf_help<span class="s2">);</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.set(<span class="s5">\t_trig</span>, 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.run(<span class="s4">true</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.set(<span class="s5">\t_trig</span>, 1);</p>
-<p class="p8"><span class="Apple-tab-span">	</span>a.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/UGen-doneActions.html b/Help/UGens/Synth control/Envelopes/UGen-doneActions.html
deleted file mode 100644
index 635f237..0000000
--- a/Help/UGens/Synth control/Envelopes/UGen-doneActions.html	
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 2.0px 0.0px; font: 12.0px Helvetica}
-span.s1 {font: 9.0px Monaco}
-span.s2 {color: #003eea}
-span.s3 {color: #0024f8}
-span.s4 {color: #0000ff}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>UGen Done Actions</b><span class="s1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p2"><br></p>
-<p class="p3">A number of UGens implement doneActions. These allow one to optionally free or pause the enclosing synth and other related nodes when the UGen is finished. These include <a href="EnvGen.html"><span class="s2">EnvGen</span></a>, <a href="Line.html"><span class="s2">Line</span></a>,<b> </b><a href="XLine.html"><span class="s2">XLine</span></a>,<b> </b><a href="Linen.html"><span class="s2">Linen</span></a>,<b> </b><a href="DetectSilence.html"><span class="s2">DetectSilence</span></a>, <a href="../../Playback and Recording/PlayBuf.html"><span class="s3">PlayBuf</span></a>, <a href="../Demand Rate/Duty.html"><span class="s4">Duty</span></a>, <a href="../Demand Rate/TDuty.html"><span class="s4">TDuty</span></a> and <a href="../Demand Rate/Demand.html"><span class="s2">Demand</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s5">For a list, see:<span class="Apple-converted-space">  </span><a href="../Synth-Controlling-UGens.html"><b>Synth-Controlling-UGens</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p3">The available done actions are as follows:</p>
-<p class="p4"><br></p>
-<p class="p6"><b>0</b><span class="Apple-tab-span">	</span>do nothing when the UGen is finished</p>
-<p class="p6"><b>1</b><span class="Apple-tab-span">	</span>pause the enclosing synth, but do not free it</p>
-<p class="p6"><b>2</b><span class="Apple-tab-span">	</span>free the enclosing synth</p>
-<p class="p6"><b>3</b><span class="Apple-tab-span">	</span>free both this synth and the preceding node</p>
-<p class="p6"><b>4</b><span class="Apple-tab-span">	</span>free both this synth and the following node</p>
-<p class="p6"><b>5</b><span class="Apple-tab-span">	</span>free this synth; if the preceding node is a group then do g_freeAll on it, else free it</p>
-<p class="p6"><b>6</b><span class="Apple-tab-span">	</span>free this synth; if the following node is a group then do g_freeAll on it, else free it</p>
-<p class="p6"><b>7</b><span class="Apple-tab-span">	</span>free this synth and all preceding nodes in this group</p>
-<p class="p6"><b>8</b><span class="Apple-tab-span">	</span>free this synth and all following nodes in this group</p>
-<p class="p6"><b>9</b><span class="Apple-tab-span">	</span>free this synth and pause the preceding node</p>
-<p class="p6"><b>10</b><span class="Apple-tab-span">	</span>free this synth and pause the following node</p>
-<p class="p6"><b>11</b><span class="Apple-tab-span">	</span>free this synth and if the preceding node is a group then do g_deepFree on it, else free it</p>
-<p class="p6"><b>12</b><span class="Apple-tab-span">	</span>free this synth and if the following node is a group then do g_deepFree on it, else free it</p>
-<p class="p6"><b>13</b><span class="Apple-tab-span">	</span>free this synth and all other nodes in this group (before and after)</p>
-<p class="p6"><b>14</b><span class="Apple-tab-span">	</span>free the enclosing group and all nodes within it (including this synth)</p>
-<p class="p4"><br></p>
-<p class="p3">For information on freeAll and deepFree, see <a href="../../../ServerArchitecture/Group.html"><span class="s2">Group</span></a> and <a href="../../../ServerArchitecture/Server-Command-Reference.html"><span class="s2">Server-Command-Reference</span></a>.</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Envelopes/XLine.html b/Help/UGens/Synth control/Envelopes/XLine.html
deleted file mode 100644
index 919f086..0000000
--- a/Help/UGens/Synth control/Envelopes/XLine.html	
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000ff}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>XLine<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponential line generator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>XLine.ar(start, end, dur, mul, add, doneAction)</b></p>
-<p class="p3"><b>XLine.kr(start, end, dur, mul, add, doneAction)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Generates an exponential curve from the start value to the end value. Both the start and end values</p>
-<p class="p3">must be non-zero and have the same sign.</p>
-<p class="p3"><b>start</b> - starting value</p>
-<p class="p3"><b>end</b> - ending value</p>
-<p class="p3"><b>dur</b> - duration in seconds</p>
-<p class="p3"><b>doneAction</b> - a doneAction to be evaluated when the Line is completed. See <a href="UGen-doneActions.html"><span class="s1">UGen-doneActions</span></a> for more detail.</p>
-<p class="p4"><br></p>
-<p class="p5">play({ <span class="s2">SinOsc</span>.ar(<span class="s2">XLine</span>.kr(200,17000,10),0,0.1) });</p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Index.html b/Help/UGens/Synth control/Index.html
deleted file mode 100644
index 074aef2..0000000
--- a/Help/UGens/Synth control/Index.html	
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {color: #0000bf}
-span.s3 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Index<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index into a table with a signal</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Index.ar(bufnum, in, mul, add)</b></p>
-<p class="p3"><b>Index.kr(bufnum, in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">The input signal value is truncated to an integer value and used as an index into the table.</p>
-<p class="p3">Out of range index values are clipped to the valid range.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>bufnum</b> - index of the buffer</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">// indexing into a fixed table</p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s1">.ar(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Index</span>.kr(<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LocalBuf</span>.newFrom([ 200, 300, 400, 500, 600, 800 ]),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFSaw</span>.kr(2.0).range(0, 7)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p5"><br></p>
-<p class="p6">// with mouse control</p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p8"><span class="s1"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s1">.ar(</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Index</span>.kr(<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LocalBuf</span>.newFrom([ 200, 300, 400, 500, 600, 800 ]),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">MouseX</span>.kr(0, 7)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}.play;</p>
-<p class="p7">)</p>
-<p class="p4"><br></p>
-<p class="p9">(</p>
-<p class="p6">// indexing into a changeable table</p>
-<p class="p7">s = <span class="s2">Server</span>.local;</p>
-<p class="p7">t = [ 200, 300, 400, 500, 600, 800 ];</p>
-<p class="p7">b = <span class="s2">Buffer</span>(s, t.size, 1);</p>
-<p class="p10"><br></p>
-<p class="p6">// alloc and set the values</p>
-<p class="p7">s.listSendMsg( b.allocMsg( b.setnMsg(0, t) ).postln );</p>
-<p class="p10"><br></p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">\help</span>_<span class="s2">Index</span>, { <span class="s2">arg</span> out = 0, i_bufnum = 0;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Index</span>.kr(<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i_bufnum,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFSaw</span>.kr(2).range(0, 7)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play(s, [<span class="s3">\i_bufnum</span>, b]);</p>
-<p class="p9">)</p>
-<p class="p5"><br></p>
-<p class="p9">b.setn(*[ 200, 300, 400, 500, 600, 800 ].scramble.postln - 30);</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p9">(</p>
-<p class="p7"><span class="s2">SynthDef</span>(<span class="s3">\help_Index</span>, { <span class="s2">arg</span> out=0,i_bufnum=0;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Index</span>.kr(<span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i_bufnum,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">MouseX</span>.kr(0, <span class="s2">BufFrames</span>.ir(i_bufnum))</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play(s, [<span class="s3">\i_bufnum</span>, b]);</p>
-<p class="p9">)</p>
-<p class="p5"><br></p>
-<p class="p9">b.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/IndexInBetween.html b/Help/UGens/Synth control/IndexInBetween.html
deleted file mode 100644
index 2ced0c6..0000000
--- a/Help/UGens/Synth control/IndexInBetween.html	
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #0000ff}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>IndexInBetween<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>IndexInBetween.ar(bufnum, in, mul, add)</b></p>
-<p class="p3"><b>IndexInBetween.kr(bufnum, in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Finds the (lowest) point in the <a href="../../ServerArchitecture/Buffer.html"><span class="s1">Buffer</span></a> at which the input signal lies in-between the two values, and returns the index. The fractional part of the index is suitable for linearly interpolating between the buffer slot values.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3">For example, if the Buffer contains [3, 21, 25, 26] and the input has the value 22, then the output will be 1.25, because the value 22 is in-between the values stored in indices 1 and 2 and in fact is one-quarter of the way along the interval between them.</p>
-<p class="p2"><br></p>
-<p class="p3">IndexInBetween is the complement of <a href="IndexL.html"><span class="s1">IndexL</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>bufnum</b> - index of the buffer</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p7">// autotune.</p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p6">t = ([0, 1, 3, 4, 7, 11, 12] + 70).midicps;</p>
-<p class="p6">b = <span class="s2">Buffer</span>(s, t.size, 1);</p>
-<p class="p5"><br></p>
-<p class="p7">// alloc and set the values</p>
-<p class="p6">s.listSendMsg( b.allocMsg( b.setnMsg(0, t) ).postln );</p>
-<p class="p5"><br></p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> index, in, out, f0, fdiff;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> bufnum = b;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>in = <span class="s2">Pulse</span>.ar(<span class="s2">MouseX</span>.kr(t.minItem, t.maxItem)) * 0.1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f0 = <span class="s2">Pitch</span>.kr(in).at(0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>index = <span class="s2">IndexInBetween</span>.kr(bufnum, f0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>fdiff = index.frac * (<span class="s2">Index</span>.kr(bufnum, index + 1) - <span class="s2">Index</span>.kr(bufnum, index));</p>
-<p class="p6"><span class="Apple-tab-span">	</span>out = <span class="s2">PitchShift</span>.ar(in, 0.1, 1 - (fdiff / f0), 0.01, 0.01);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">RLPF</span>.ar(out, [2000, 5000], 0.3)</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">b.free;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// basic test.</p>
-<p class="p6">(</p>
-<p class="p5"><br></p>
-<p class="p6">s = <span class="s2">Server</span>.local;</p>
-<p class="p6">t = [ 200, 210, 400, 430, 600, 800 ];</p>
-<p class="p6">b = <span class="s2">Buffer</span>(s, t.size, 1);</p>
-<p class="p5"><br></p>
-<p class="p7">// alloc and set the values</p>
-<p class="p6">s.listSendMsg( b.allocMsg( b.setnMsg(0, t) ).postln );</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> index, f0, f1, f3;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> bufnum = b;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f0 = <span class="s2">MouseX</span>.kr(200, 900);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>index = <span class="s2">IndexInBetween</span>.kr(bufnum, f0);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>f1 = <span class="s2">IndexL</span>.kr(bufnum, index);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar([f0, f1]) * 0.1</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p6">b.free;</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p7">// One way to map across from an arbitrary piecewise curve, onto another:</p>
-<p class="p7">// We use IndexInBetween to "unmap" your input into integer slots,<span class="Apple-converted-space"> </span></p>
-<p class="p7">// and then use IndexL to do the reverse, to "map" onto your other distribution.<span class="Apple-converted-space"> </span></p>
-<p class="p7">// This example maps a sort-of-exponential curve onto a sort-of-sinusoidal curve:</p>
-<p class="p5"><br></p>
-<p class="p6">~from = [1, 2, 4, 8, 16];</p>
-<p class="p6">~to <span class="Apple-converted-space">  </span>= [0, 1,<span class="Apple-converted-space">  </span>0,<span class="Apple-converted-space">  </span>-1,<span class="Apple-converted-space">    </span>0];</p>
-<p class="p6">(</p>
-<p class="p6">x={</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">IndexL</span>.kr(~to.as(<span class="s2">LocalBuf</span>), <span class="s2">IndexInBetween</span>.kr(~from.as(<span class="s2">LocalBuf</span>),<span class="s2">MouseX</span>.kr(~from.first,~from.last).poll).poll).poll</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/IndexL.html b/Help/UGens/Synth control/IndexL.html
deleted file mode 100644
index 097772c..0000000
--- a/Help/UGens/Synth control/IndexL.html	
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.48">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #000000; min-height: 16.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>IndexL<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>index into a table with a signal, linear interpolated</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>IndexL.ar(bufnum, in, mul, add)</b></p>
-<p class="p1"><b>IndexL.kr(bufnum, in, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p1">The input signal value is truncated to an integer value and used as an index into the table.</p>
-<p class="p1">Out of range index values are clipped to the valid range.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>bufnum</b> - index of the buffer</p>
-<p class="p1"><b>in</b> - the input signal.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">See also: <a href="IndexInBetween.html">IndexInBetween</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">// indexing into a fixed table</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>SinOsc.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">IndexL</span>.kr(<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LocalBuf</span>.newFrom([ 200, 300, 400, 500, 600, 800 ].scramble),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFSaw</span>.kr(2.0).range(0, 7)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p5">// with mouse control</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span>SinOsc.ar(</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">IndexL</span>.kr(<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LocalBuf</span>.newFrom([ 200, 300, 400, 500, 600, 800 ].scramble),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">MouseX</span>.kr(0, 7)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p8"><br></p>
-<p class="p6">(</p>
-<p class="p5">// indexing into a changeable table</p>
-<p class="p6">s = <span class="s3">Server</span>.local;</p>
-<p class="p6">t = [ 200, 300, 400, 500, 600, 800 ];</p>
-<p class="p6">b = <span class="s3">Buffer</span>(s, t.size, 1);</p>
-<p class="p4"><br></p>
-<p class="p5">// alloc and set the values</p>
-<p class="p6">s.listSendMsg( b.allocMsg( b.setnMsg(0, t) ).postln );</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s4">\help_index</span>, { <span class="s3">arg</span> out = 0, i_bufnum = 0;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">IndexL</span>.kr(<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i_bufnum,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">LFSaw</span>.kr(2).range(0, 7)</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s, [<span class="s4">\i_bufnum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">b.setn(*[ 200, 300, 400, 500, 600, 800 ].scramble.postln - 30);</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p6">(</p>
-<p class="p6"><span class="s3">SynthDef</span>(<span class="s4">\help_index</span>, { <span class="s3">arg</span> out=0,i_bufnum=0;<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Out</span>.ar(0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">IndexL</span>.kr(<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i_bufnum,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">MouseX</span>.kr(0, <span class="s3">BufFrames</span>.ir(i_bufnum))</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).play(s, [<span class="s4">\i_bufnum</span>, b]);</p>
-<p class="p6">)</p>
-<p class="p4"><br></p>
-<p class="p6">b.free;</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Integrator.html b/Help/UGens/Synth control/Integrator.html
deleted file mode 100644
index 2c3c9b5..0000000
--- a/Help/UGens/Synth control/Integrator.html	
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Courier}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #0021e7}
-span.s5 {color: #002fe0}
-span.s6 {color: #0000ff}
-span.s7 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Integrator<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>leaky integrator</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><span class="s4"><b>AbstractFunction</b></span></a><b> : </b><a href="../UGen.html"><span class="s5"><b>UGen</b></span></a></span><span class="s5"><b> : </b><a href="../Filter.html"><span class="s6"><b>Filter</b></span></a><b><span class="Apple-converted-space"> </span></b></span></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Integrator.ar(in, coef, mul, add)</b></p>
-<p class="p1"><b>Integrator.kr(in, coef, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Integrates an input signal with a leak. The formula implemented is:</p>
-<p class="p2"><br></p>
-<p class="p4">out(0) = in(0) + (coef * out(-1))</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>coef</b> - leak coefficient.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5">{ <span class="s7">Integrator</span>.ar(<span class="s7">LFPulse</span>.ar(300, 0.2, 0.1), MouseX.kr(0.001, 0.999, 1)) }.play</p>
-<p class="p6"><br></p>
-<p class="p7">// used as an envelope</p>
-<p class="p5">{ <span class="s7">Integrator</span>.ar(<span class="s7">LFPulse</span>.ar(3, 0.2, 0.0004), 0.999, <span class="s7">FSinOsc</span>.ar(700), 0) }.play</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// scope, using the internal server:</p>
-<p class="p8"><br></p>
-<p class="p5">{ <span class="s7">Integrator</span>.ar(<span class="s7">LFPulse</span>.ar(1500 / 4, 0.2, 0.1), <span class="s7">MouseX</span>.kr(0.01, 0.999, 1)) }.scope</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/K2A.html b/Help/UGens/Synth control/K2A.html
deleted file mode 100644
index 5af6931..0000000
--- a/Help/UGens/Synth control/K2A.html	
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.s3 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>K2A<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>control rate to audio rate converter</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>K2A.ar(in)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">To be able to play a control rate UGen into an audio rate UGen, sometimes the rate must be converted.</p>
-<p class="p1">K2A converts via linear interpolation.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s2">K2A</span>.ar(<span class="s2">WhiteNoise</span>.kr(0.3)) }.scope;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// compare:</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>[</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">K2A</span>.ar(<span class="s2">WhiteNoise</span>.kr(0.3)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">WhiteNoise</span>.ar(0.3)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>]</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> freq, blockSize, sampleRate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>blockSize = <span class="s2">Server</span>.internal.options.blockSize; <span class="s3">// usually 64</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>sampleRate = <span class="s2">Server</span>.internal.sampleRate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s2">MouseX</span>.kr(0.1, 40, 1) / blockSize * sampleRate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">K2A</span>.ar(<span class="s2">LFNoise0</span>.kr(freq)),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">LFNoise0</span>.ar(freq)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>] * 0.3</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/KeyState.html b/Help/UGens/Synth control/KeyState.html
deleted file mode 100644
index bde769a..0000000
--- a/Help/UGens/Synth control/KeyState.html	
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 28.0px; text-indent: -28.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>KeyState</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> respond to the state of a key</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: UGen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>*kr(keycode, minval, maxval, lag)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><b>keycode</b> - The keycode value of the key to check. This corresponds to the keycode values passed into the keyDownActions of SCViews. See example below.</p>
-<p class="p3"><b>minval </b>- The<b> </b>value to output when the key is not pressed.</p>
-<p class="p3"><b>maxval </b>- The<b> </b>value to output<span class="Apple-converted-space">  </span>when the key is pressed.</p>
-<p class="p3"><b>lag </b>- A lag factor.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">See also <b>MouseButton</b>, <b>MouseX</b>, <b>MouseY<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1">Note that this UGen does not prevent normal typing. It therefore may be helpful to select a GUI window rather than an SC document when using KeyState, as the latter will be altered by any keystrokes.</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5">s.boot;</p>
-<p class="p4"><br></p>
-<p class="p6">// execute the code below to find out a key's keycode</p>
-<p class="p6">// the char and keycode of any key you press will be printed in the post window</p>
-<p class="p5">(</p>
-<p class="p7"><span class="s2">w = </span><span class="s3">SCWindow</span><span class="s2">.new(</span>"I catch keystrokes"<span class="s2">);</span></p>
-<p class="p5">w.view.keyDownAction = { <span class="s3">arg</span> view, char, modifiers, unicode, keycode;<span class="Apple-converted-space">  </span>[char, keycode].postln; };</p>
-<p class="p5">w.front;</p>
-<p class="p5">)</p>
-<p class="p4"><br></p>
-<p class="p6">// then execute this and then press the 'j' key</p>
-<p class="p5">(</p>
-<p class="p6"><span class="s2">w.front; </span>// something safe to type on</p>
-<p class="p5">{ <span class="s3">SinOsc</span>.ar(800, 0, <span class="s3">KeyState</span>.kr(38, 0, 0.1)) }.play;</p>
-<p class="p5">)</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Latch.html b/Help/UGens/Synth control/Latch.html
deleted file mode 100644
index 9b32089..0000000
--- a/Help/UGens/Synth control/Latch.html	
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><span class="s1"><b>Latch<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>sample and hold</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Latch.ar(in, trig)</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4">Holds input signal value when triggered.</p>
-<p class="p4"><b>in</b> - input signal.</p>
-<p class="p4"><b>trig</b> - trigger. Trigger can be any signal. A trigger happens when the signal changes from</p>
-<p class="p4">non-positive to positive.</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s2">Blip</span>.ar(<span class="s2">Latch</span>.ar(<span class="s2">WhiteNoise</span>.ar, <span class="s2">Impulse</span>.ar(9)) * 400 + 500, 4, 0.2) }.play;</p>
-<p class="p1"><br></p>
-<p class="p1"><br></p>
-<p class="p4">The above is just meant as example. LFNoise0 is a faster way to generate random steps :</p>
-<p class="p3"><br></p>
-<p class="p6">{ <span class="s2">Blip</span>.ar(<span class="s2">LFNoise0</span>.kr(9, 400 ,500), 4, 0.2) }.play;</p>
-<p class="p1"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/MouseButton.html b/Help/UGens/Synth control/MouseButton.html
deleted file mode 100644
index d2712ec..0000000
--- a/Help/UGens/Synth control/MouseButton.html	
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MouseButton</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> mouse button ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*kr(minval, maxval, lag)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>minval<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>value when the key is not pressed</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>maxval<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>value when the key is pressed</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>lag</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lag factor</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span>see also <b>MouseX</b>, <b>MouseY</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span>//example</p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">SinOsc</span>.ar(<span class="s3">MouseButton</span>.kr(400, 440, 0.1), 0, 0.1) }.play;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>{ <span class="s3">SinOsc</span>.ar(<span class="s3">MouseButton</span>.kr(400, 740, 2), 0, 0.1) }.play;</p>
-<p class="p3"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/MouseX.html b/Help/UGens/Synth control/MouseX.html
deleted file mode 100644
index 2eda951..0000000
--- a/Help/UGens/Synth control/MouseX.html	
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.s4 {color: #326f17}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MouseX</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> cursor ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*kr(minval, maxval, warp, lag)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>minval, maxval<span class="Apple-tab-span">	</span></b>range between left and right end of screen</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>warp</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mapping curve. 0 is linear, 1 is exponential (for freq or times e.g)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>alternative: 'linear', 'exponential'</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>lag</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lag factor to dezipper cursor movement. (Default 0.2)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span>see also <a href="MouseY.html">MouseY</a><b>, </b><a href="MouseButton.html">MouseButton</a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>//example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s3">SinOsc</span>.ar(<span class="s3">MouseX</span>.kr(40, 10000, 1), 0, 0.1) }.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>//same but with a 2sec lag</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s3">SinOsc</span>.ar(<span class="s3">MouseX</span>.kr(40, 10000, <span class="s4">'exponential'</span>, 2), 0, 0.1) }.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/MouseY.html b/Help/UGens/Synth control/MouseY.html
deleted file mode 100644
index 0914c74..0000000
--- a/Help/UGens/Synth control/MouseY.html	
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MouseY</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b> cursor ugen</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>*kr(minval, maxval, warp, lag)</b></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>minval, maxval<span class="Apple-tab-span">	</span></b>range between top and low end of screen</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>warp</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>mapping curve. 0 is linear, 1 is exponential (for freq or times e.g)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>alternative: 'linear', 'exponential'</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>lag</b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>lag factor to depipper cursor movement. (Default 0.2)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s2"><span class="Apple-tab-span">	</span>see also <a href="MouseX.html">MouseX</a><b>, </b><a href="MouseButton.html">MouseButton</a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>//example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s3">SinOsc</span>.ar(<span class="s3">MouseY</span>.kr(40, 10000, 1), 0, 0.1) }.play;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span>//xy example</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>{ <span class="s3">SinOsc</span>.ar([<span class="s3">MouseX</span>.kr(40, 10000, 1), <span class="s3">MouseY</span>.kr(40, 10000, 1)], 0, 0.1) }.play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/NamedControl.html b/Help/UGens/Synth control/NamedControl.html
deleted file mode 100644
index 31f6b1a..0000000
--- a/Help/UGens/Synth control/NamedControl.html	
+++ /dev/null
@@ -1,165 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0000bf}
-span.s4 {color: #007300}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>NamedControl</b></span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>named reference to a control</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s2">Object</span></a></p>
-<p class="p2"><br></p>
-<p class="p1">A NamedControl directly combines a <a href="ControlName.html"><span class="s2">ControlName</span></a> and a <a href="Control.html"><span class="s2">Control</span></a> UGen conveniently. Also this makes it safe even if several identical controls exist (see example below).</p>
-<p class="p2"><br></p>
-<p class="p1">There are syntax shortcuts that generate NamedControls from the name:</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="Apple-tab-span">	</span>\name.ar(values, lags)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>\name.kr(values, lags, fixedLag)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>\name.ir(values, lags)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>\name.tr(values, lags)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Class Methods</b></p>
-<p class="p4"><b></b><br></p>
-<p class="p5"><b>*ar(name, values, lags)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add a new instance of AudioControl with given <b>name</b> and default <b>values</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>lags</b> are given, apply a <a href="../Filters/Lag.html"><span class="s2">Lag</span></a> UGen to it.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\symbol.ar(values, lags)</b> is a synonym.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>*kr(name, values, lags, fixedLag)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add a new instance of <a href="Control.html"><span class="s2">Control</span></a> (kr) with given <b>name</b> and default <b>values</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>lags</b> are given, apply a <a href="../Filters/Lag.html"><span class="s2">Lag</span></a> UGen to it. If <b>fixedLag</b> is set to true, create a LagControl<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(lags cannot be modulated then, but fewer UGens are required).</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\symbol.kr(values, lags, fixedLag)</b> is a synonym.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>*ir(name, values, lags)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add a new instance of <a href="Control.html"><span class="s2">Control</span></a> (ir) with given <b>name</b> and default <b>values</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>lags</b> are given, apply a <a href="../Filters/Lag.html"><span class="s2">Lag</span></a> UGen to it.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\symbol.ir(values, lags)</b> is a synonym.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>*tr(name, values, lags)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add a new instance of TrigControl with given <b>name</b> and default <b>values</b>.<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>lags</b> are given, apply a <a href="../Filters/Lag.html"><span class="s2">Lag</span></a> UGen to it.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>\symbol.tr(values, lags)</b> is a synonym.</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><b>*new(name, values, rate, lags, fixedLag)</b></p>
-<p class="p5"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>add a new instance with the given <b>rate</b>, <b>name</b> and default <b>values</b>.</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>If <b>lags</b> are given, apply a <a href="../Filters/Lag.html"><span class="s2">Lag</span></a> UGen to it. If <b>fixedLag</b> is set to true, create a LagControl<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(lags cannot be modulated then, but fewer UGens are required).</p>
-<p class="p6"><br></p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p8"><b>Examples</b></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p9">// use NamedControl to create a number of multichannel controls:</p>
-<p class="p10"><br></p>
-<p class="p11">a = { <span class="s3">SinOsc</span>.ar(<span class="s3">NamedControl</span>.kr(<span class="s4">\freq</span>, [300, 330, 370], [1, 0.3, 0.02])).sum * 0.1 }.play;</p>
-<p class="p11">a.setn(<span class="s4">\freq</span>, [700, 705, 890]);</p>
-<p class="p11">a.setn(<span class="s4">\freq</span>, [0, 2, 5].midiratio * 400);</p>
-<p class="p10"><br></p>
-<p class="p9">// synonymous:</p>
-<p class="p11">a = { <span class="s3">SinOsc</span>.ar(<span class="s4">\freq</span>.kr([300, 330, 370], [1, 0.3, 0.02])).sum * 0.1 }.play;</p>
-<p class="p10"><br></p>
-<p class="p9">// multiple usage of the same name:</p>
-<p class="p11">a = { <span class="s3">SinOsc</span>.ar(<span class="s4">\freq</span>.kr(440, 3.5)) + <span class="s3">Saw</span>.ar(<span class="s4">\freq</span>.kr(440, 0.05) * 0.5) * 0.1 }.play;</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p11">a.set(<span class="s4">\freq</span>, 1220)</p>
-<p class="p11">a.set(<span class="s4">\freq</span>, 120)</p>
-<p class="p10"><br></p>
-<p class="p12"><b></b><br></p>
-<p class="p8"><b>Comparison with direct use of Controls:</b></p>
-<p class="p7"><br></p>
-<p class="p13">In the situation when functions are used to combine UGens to more complex SynthDefs, it may not be known which ControlNames are already taken by others. NamedControl allows to reuse existing control names.<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p9">// compare:</p>
-<p class="p11">(</p>
-<p class="p11">a = {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">var</span> x, y;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>x = <span class="s3">NamedControl</span>.kr(<span class="s4">\freq</span>, 440, 3.5);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>y = <span class="s3">NamedControl</span>.kr(<span class="s4">\freq</span>, 440, 1);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar([x, y] * [2, 1.2]) * 0.1</p>
-<p class="p11">}.play;</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p11">a.set(<span class="s4">\freq</span>, 1220)</p>
-<p class="p11">a.set(<span class="s4">\freq</span>, 120)</p>
-<p class="p10"><br></p>
-<p class="p11">(</p>
-<p class="p11">a = {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">var</span> x, y;</p>
-<p class="p11"><span class="Apple-tab-span">	</span>x = <span class="s3">Control</span>.names([<span class="s4">\freq</span>]).kr(440).lag(3.5);</p>
-<p class="p11"><span class="Apple-tab-span">	</span>y = <span class="s3">Control</span>.names([<span class="s4">\freq</span>]).kr(440).lag(1);</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar([x, y] * [2, 1.2]) * 0.1</p>
-<p class="p11">}.play;</p>
-<p class="p11">)</p>
-<p class="p10"><br></p>
-<p class="p11">a.set(<span class="s4">\freq</span>, 1220)</p>
-<p class="p11">a.set(<span class="s4">\freq</span>, 120)</p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p10"><br></p>
-<p class="p9">// Here is a basic example using a dictionary<span class="Apple-converted-space"> </span></p>
-<p class="p9">// with functions that can be combined to build SynthDefs.</p>
-<p class="p7"><br></p>
-<p class="p13">(</p>
-<p class="p11">q = ();</p>
-<p class="p11">q.makeEnv = { <span class="s3">|q, env, doneAction = 0|</span> <span class="s3">EnvGen</span>.kr(env, <span class="s3">NamedControl</span>.kr(<span class="s4">\gate</span>, 1), doneAction: doneAction) };</p>
-<p class="p11">q.chooseNoise = { [ {<span class="s3">PinkNoise</span>.ar}, {<span class="s3">WhiteNoise</span>.ar}, {<span class="s3">LFNoise2</span>.ar(<span class="s3">Rand</span>(100, 1000))}].choose.value};</p>
-<p class="p11">q.filterInput = { <span class="s3">|q, in|</span> [<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>{ <span class="s3">BPF</span>.ar(in * 15, <span class="s3">NamedControl</span>.kr(<span class="s4">\freq</span>, 800), 0.2) },<span class="Apple-converted-space"> </span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>{ R<span class="s3">HPF</span>.ar(in, <span class="s3">NamedControl</span>.kr(<span class="s4">\freq</span>, 800, 0.2)<span class="s5">, 0.2</span>) }</p>
-<p class="p11"><span class="Apple-tab-span">	</span>].choose.value</p>
-<p class="p11">};</p>
-<p class="p13">)</p>
-<p class="p7"><br></p>
-<p class="p9">// test the envelope:</p>
-<p class="p11">a = { <span class="s3">SinOsc</span>.ar(440) * q.makeEnv(<span class="s3">Env</span>.asr, 2) * 0.1 }.play;</p>
-<p class="p9"><span class="s5">a.set(</span><span class="s4">\gate</span><span class="s5">, -3); </span>// release in 3 seconds</p>
-<p class="p7"><br></p>
-<p class="p9">// single channel:</p>
-<p class="p11">a = { q.chooseNoise * q.makeEnv(<span class="s3">Env</span><span class="s5">.asr, 2</span>) }.play;</p>
-<p class="p9"><span class="s5">a.set(</span><span class="s4">\gate</span><span class="s5">, -3); </span>// release in 3 seconds</p>
-<p class="p7"><br></p>
-<p class="p13">a = { q.filterInput(q.chooseNoise) * q.makeEnv(Env.asr, 2) }.play;</p>
-<p class="p9"><span class="s5">a.set(</span><span class="s4">\freq</span><span class="s5">, 1000); </span>// set filter frequency</p>
-<p class="p9"><span class="s5">a.set(</span><span class="s4">\gate</span><span class="s5">, -3); </span>// release in 3 seconds</p>
-<p class="p7"><br></p>
-<p class="p13">(</p>
-<p class="p11">a = {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">var</span> channels = <span class="s3">Array</span>.fill(8, {</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>q.filterInput(q.chooseNoise) * <span class="s5">q.makeEnv(</span><span class="s3">Env</span><span class="s5">.asr, 2)</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span>});</p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="s3">Splay</span>.ar(channels);</p>
-<p class="p10"><br></p>
-<p class="p11">}.play;</p>
-<p class="p13">)</p>
-<p class="p9"><span class="s5">a.set(</span><span class="s4">\freq</span><span class="s5">, 6000); </span>// set filter frequency</p>
-<p class="p9"><span class="s5">a.set(</span><span class="s4">\gate</span><span class="s5">, -3); </span>// release in 3 seconds</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Silent.html b/Help/UGens/Synth control/Silent.html
deleted file mode 100644
index 1474ccf..0000000
--- a/Help/UGens/Synth control/Silent.html	
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Silent<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>create a UGen which always outputs zero<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Silent.ar(in)</b></p>
-<p class="p4"><br></p>
-<p class="p3">This UGen simply outputs zero</p>
-<p class="p4"><br></p>
-<p class="p3"><b>numChannels</b> - Number of channels of silence to endure</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//silence is golden</p>
-<p class="p7">{<span class="s2">Silent</span>.ar}.play</p>
-<p class="p8"><br></p>
-<p class="p6">//multichannel silence; the perfect electroacoustic work?<span class="Apple-converted-space"> </span></p>
-<p class="p7">{<span class="s2">Silent</span>.ar(8)}.play</p>
-<p class="p8"><br></p>
-<p class="p6">//now with offset</p>
-<p class="p7">{<span class="s2">Silent</span>.ar + 0.5 }.play;</p>
-<p class="p5"><br></p>
-<p class="p6">//For these examples, you might want to boot the internal server</p>
-<p class="p9"><span class="s2">Server</span>.default =s = <span class="s2">Server</span>.internal;</p>
-<p class="p9">s.boot;<span class="Apple-converted-space"> </span></p>
-<p class="p9">s.scope</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Slew.html b/Help/UGens/Synth control/Slew.html
deleted file mode 100644
index af18913..0000000
--- a/Help/UGens/Synth control/Slew.html	
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; color: #000000; min-height: 11.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0021e7}
-span.s4 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Slew<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b><span class="Apple-tab-span">	</span>slew rate limiter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../../Core/Object.html"><span class="s3"><b>Object</b></span></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><b>UGen</b></a><b> : </b><a href="../Filter.html"><b>Filter</b></a><b><span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Slew.ar(in, upSlope, downSlope, mul, add)</b></p>
-<p class="p1"><b>Slew.kr(in, upSlope, downSlope, mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Limits the slope of an input signal. The slope is expressed in units per second.</p>
-<p class="p1"><b>in</b> - input signal.</p>
-<p class="p1"><b>upSlope</b> - maximum upward slope.</p>
-<p class="p1"><b>downSlope</b> - maximum downward slope.</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s4">LFPulse</span>.ar(800);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>[z, <span class="s4">Slew</span>.ar(z, 4000, 4000)]</p>
-<p class="p6">}.plot)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p8">// Has the effect of removing transients and higher frequencies.</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p7"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>z = <span class="s4">Saw</span>.ar(800, 0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s4">Slew</span>.ar(z, 400, 400)</p>
-<p class="p6">}.play</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/Synth-Controlling-UGens.html b/Help/UGens/Synth control/Synth-Controlling-UGens.html
deleted file mode 100644
index 8e20866..0000000
--- a/Help/UGens/Synth control/Synth-Controlling-UGens.html	
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p6 {margin: 0.0px 0.0px 0.0px 56.0px; text-indent: -56.0px; font: 12.0px Helvetica}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {font: 9.0px Monaco; color: #000000}
-span.s4 {font: 12.0px Helvetica}
-span.s5 {text-decoration: underline ; color: #0021e7}
-span.s6 {text-decoration: underline ; color: #0000ff}
-span.s7 {color: #0033f1}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Synth Controlling UGens</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">the UGens listed here can affect a node's state from within the synth,<span class="Apple-converted-space"> </span></p>
-<p class="p3">they can free or pause nodes, for example.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Envelopes/Done.html"><span class="s2">Done</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/FreeSelf.html"><span class="s2">FreeSelf</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/PauseSelf.html"><span class="s2">PauseSelf</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/FreeSelfWhenDone.html"><span class="s2">FreeSelfWhenDone</span></a></span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>PauseSelfWhenDone</p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/Pause.html"><span class="s2">Pause</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/Free.html"><span class="s2">Free</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>UGens with a doneAction</b></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s3"><span class="Apple-tab-span">	</span><a href="Envelopes/EnvGen.html"><span class="s4">EnvGen</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/Linen.html"><span class="s2">Linen</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/Line.html"><span class="s2">Line</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/XLine.html"><span class="s2">XLine</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Envelopes/DetectSilence.html"><span class="s2">DetectSilence</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Demand Rate/Duty.html"><span class="s2">Duty</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Demand Rate/TDuty.html"><span class="s2">TDuty</span></a></span></p>
-<p class="p4"><span class="s1"><span class="Apple-tab-span">	</span><a href="Demand Rate/DemandEnvGen.html"><span class="s2">DemandEnvGen</span></a></span></p>
-<p class="p5"><span class="s5"><span class="Apple-tab-span">	</span><a href="../Playback and Recording/PlayBuf.html"><span class="s6">PlayBuf</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">See <a href="Envelopes/UGen-doneActions.html"><span class="s7">UGen-doneActions</span></a> for more detail on done actions.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p2"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/T2A.html b/Help/UGens/Synth control/T2A.html
deleted file mode 100644
index 0bb108a..0000000
--- a/Help/UGens/Synth control/T2A.html	
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #1135f9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #cd1612}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #001bb9}
-span.s4 {color: #0b28c6}
-span.s5 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>T2A<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>control rate trigger to audio rate trigger converter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2">inherits from: <a href="../../Core/Object.html">Object</a> : <a href="../../Core/Kernel/AbstractFunction.html">AbstractFunction</a> : <a href="../UGen.html">UGen</a> : <a href="K2A.html">K2A</a></span></p>
-<p class="p2"><br></p>
-<p class="p1">Converts control rate trigger into audio rate trigger (maximally one per control period).</p>
-<p class="p2"><br></p>
-<p class="p1"><b>T2K.ar(in, offset)</b></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p1"><b>offset</b> - sample offset within control period</p>
-<p class="p4"><br></p>
-<p class="p5">// example</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> trig = <span class="s3">Impulse</span>.kr(MouseX.kr(1, 100, 1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">Ringz</span>.ar(T2A.ar(trig), 800, 0.01) * 0.4</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p8">// compare with K2A</p>
-<p class="p9">(</p>
-<p class="p9">{</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s4">var</span> trig = <span class="s4">Impulse</span>.kr(200);</p>
-<p class="p9"><span class="Apple-tab-span">	</span>[<span class="s4">T2A</span>.ar(trig), <span class="s4">K2A</span>.ar(trig)].lag(0.001)</p>
-<p class="p9">}.plot2(10/200);</p>
-<p class="p9">)</p>
-<p class="p7"><br></p>
-<p class="p10">// removing jitter by randomising offset</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">var</span> trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(1, 100, 1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">Ringz</span>.ar(<span class="s5">T2A</span>.ar(trig, <span class="s5">WhiteNoise</span>.kr.range(0, s.options.blockSize - 1)), 800, 0.01) * 0.4</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/T2K.html b/Help/UGens/Synth control/T2K.html
deleted file mode 100644
index e9230de..0000000
--- a/Help/UGens/Synth control/T2K.html	
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>T2K<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>audio rate trigger to control rate trigger converter</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>T2K.kr(in)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">Converts audio rate trigger into control rate trigger,<span class="Apple-converted-space"> </span></p>
-<p class="p1">using the maxiumum trigger in the input during each control period.</p>
-<p class="p2"><br></p>
-<p class="p1"><b>in</b> - input signal</p>
-<p class="p3"><br></p>
-<p class="p4"><br></p>
-<p class="p5">// this does not work:</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig = <span class="s2">Dust</span>.ar(4);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Trig</span>.kr(trig, 0.1) * <span class="s2">SinOsc</span>.ar(800) * 0.1</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p5">// this works:</p>
-<p class="p6">(</p>
-<p class="p6">{</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig = <span class="s2">T2K</span>.kr(<span class="s2">Dust</span>.ar(4));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s2">Trig</span>.kr(trig, 0.1) * <span class="s2">SinOsc</span>.ar(800) * 0.1</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Synth control/WrapIndex.html b/Help/UGens/Synth control/WrapIndex.html
deleted file mode 100644
index 63c63a2..0000000
--- a/Help/UGens/Synth control/WrapIndex.html	
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-span.s1 {color: #091fb1}
-span.s2 {color: #606060}
-span.s3 {color: #000000}
-span.s4 {color: #456c20}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><br></p>
-<p class="p2"><b>WrapIndex<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>index into a table with a signal</b></p>
-<p class="p1"><br></p>
-<p class="p3"><b>WrapIndex.ar(bufnum, in, mul, add)</b></p>
-<p class="p3"><b>WrapIndex.kr(bufnum, in, mul, add)</b></p>
-<p class="p1"><br></p>
-<p class="p3">The input signal value is truncated to an integer value and used as an index into the table.</p>
-<p class="p3">Out of range index values are wrapped cyclically<span class="Apple-converted-space">  </span>to the valid range.</p>
-<p class="p3"><b>bufnum</b> - index of the buffer</p>
-<p class="p3"><b>in</b> - the input signal.</p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p6">// indexing into a table</p>
-<p class="p7">s = <span class="s1">Server</span>.local;</p>
-<p class="p7">t = [ 200, 300, 400, 500, 600, 800 ];</p>
-<p class="p7">b = <span class="s1">Buffer</span>(s,t.size,1);</p>
-<p class="p8"><br></p>
-<p class="p6">// alloc and set the values</p>
-<p class="p7">s.listSendMsg( b.allocMsg( b.setnMsg(0, t) ).postln );</p>
-<p class="p8"><br></p>
-<p class="p7"><span class="s1">SynthDef</span>(<span class="s2">"help-Index"</span>,{ <span class="s1">arg</span> out=0,i_bufnum=0;<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(</p>
-<p class="p9"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>WrapIndex<span class="s3">.kr(<span class="Apple-tab-span">	</span></span></p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i_bufnum,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">MouseX</span>.kr(0, t.size * 3)</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0,</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.5</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span>)</p>
-<p class="p7">}).play(s,[<span class="s4">\i_bufnum</span>,b]);</p>
-<p class="p8"><br></p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Tour_of_UGens.html b/Help/UGens/Tour_of_UGens.html
deleted file mode 100644
index fca8e49..0000000
--- a/Help/UGens/Tour_of_UGens.html
+++ /dev/null
@@ -1,1213 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.54">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; min-height: 19.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; color: #0021e7}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #77301f}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 4.0px Monaco; min-height: 5.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 3.0px Monaco; min-height: 4.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #606060}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 3.0px Monaco; color: #183fac; min-height: 4.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #ad140d}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p17 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #183fac}
-span.s1 {font: 14.0px Monaco; color: #0022b7}
-span.s2 {font: 14.0px Monaco}
-span.s3 {color: #183fac}
-span.s4 {text-decoration: underline}
-span.s5 {color: #000000}
-span.s6 {color: #77301f}
-span.s7 {text-decoration: underline ; color: #0021e7}
-span.s8 {color: #556528}
-span.s9 {color: #0f4ae6}
-span.s10 {text-decoration: underline ; color: #003de5}
-span.s11 {font: 12.0px Helvetica}
-span.s12 {color: #001bb9}
-span.s13 {font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Signal Processing</b> in SuperCollider</p>
-<p class="p2"><br></p>
-<p class="p3"><b>1. A Tour of available Unit Generators.</b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>SuperCollider has over 250 unit generators.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>If you count the unary and binary operators, there are over 300.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>This tour covers many, but not all of them.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>categories of unit generators:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sources: periodic, aperiodic<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>filters</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>distortion<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>panning</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reverbs</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>delays and buffer ugens</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>granular synthesis</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>control: envelopes, triggers, counters, gates, lags, decays</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>spectral<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>2. Techniques<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="Apple-tab-span">	</span>broadening a sound:<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>decorrelation, beat frequencies, delays.</p>
-<p class="p3"><span class="Apple-tab-span">	</span>series and parallel structures.</p>
-<p class="p2"><br></p>
-<p class="p3"><i>Note:</i> The "Help browser" (<span class="s1">Help</span><span class="s2">.gui</span>) contains a category for UGens, which provides another useful way to get an overview of the available UGens, including those which were created since this tour was written.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">s = <span class="s3">Server</span>.internal;</p>
-<p class="p4"><span class="s3">Server</span>.default = s;</p>
-<p class="p4">s.boot;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Periodic Sources: Oscillators.</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LF - "Low Frequency" Unit Generators.</b></p>
-<p class="p2"><br></p>
-<p class="p3">LFPar, LFCub, LFTri, Impulse, LFSaw, LFPulse, VarSaw, SyncSaw</p>
-<p class="p2"><br></p>
-<p class="p3">geometric waveforms, not band limited.</p>
-<p class="p3">will cause aliasing at higher frequencies.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/LFPar.html">LFPar</a></span><span class="s5">, <a href="Oscillators/LFCub.html"><span class="s4">LFCub</span></a>, <a href="Oscillators/LFTri.html"><span class="s4">LFTri</span></a>, <a href="Oscillators/LFSaw.html"><span class="s4">LFSaw</span></a>, <a href="Oscillators/Impulse.html"><span class="s4">Impulse</span></a></span></p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>frequency, phase, mul, add</p>
-<p class="p2"><br></p>
-<p class="p6">// parabolic approximation of sine</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">LFPar</span>.kr(<span class="s3">LFPar</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">LFPar</span>.kr(0.2, 0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(800,0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p6">// since it is not band limited, there are aliasing artifacts</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p7"><br></p>
-<p class="p6">// cubic approximation of sine</p>
-<p class="p4">{ <span class="s3">LFCub</span>.ar(<span class="s3">LFCub</span>.kr(<span class="s3">LFCub</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFCub</span>.ar(<span class="s3">LFCub</span>.kr(0.2, 0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFCub</span>.ar(800,0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFCub</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">LFTri</span>.ar(<span class="s3">LFTri</span>.kr(<span class="s3">LFTri</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFTri</span>.ar(<span class="s3">LFTri</span>.kr(0.2, 0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFTri</span>.ar(800,0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFTri</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">LFSaw</span>.ar(<span class="s3">LFSaw</span>.kr(<span class="s3">LFSaw</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFSaw</span>.ar(<span class="s3">LFSaw</span>.kr(0.2, 0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFSaw</span>.ar(100,0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFSaw</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Impulse</span>.ar(<span class="s3">LFTri</span>.kr(<span class="s3">LFTri</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">Impulse</span>.ar(<span class="s3">LFTri</span>.kr(0.2, 0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">Impulse</span>.ar(100,0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">Impulse</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/LFPulse.html">LFPulse</a></span><span class="s5">, <a href="Oscillators/VarSaw.html"><span class="s4">VarSaw</span></a></span></p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>frequency, phase, width, mul, add</p>
-<p class="p8"><br></p>
-<p class="p4">{ <span class="s3">LFPulse</span>.ar(<span class="s3">LFPulse</span>.kr(<span class="s3">LFPulse</span>.kr(0.2,0,0.5,8,10),0,0.5, 400,800),0,0.5,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFPulse</span>.ar(<span class="s3">LFPulse</span>.kr(3, 0, 0.3, 200, 200), 0, 0.2, 0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFPulse</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0,0.5,0.1) }.scope(1, zoom: 4);</p>
-<p class="p7"><br></p>
-<p class="p6">// pulse width modulation</p>
-<p class="p4">{ <span class="s3">LFPulse</span>.ar(100,0,<span class="s3">MouseY</span>.kr(0,1),0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">LFPulse</span>.ar(100,0,<span class="s3">LFTri</span>.kr(0.2,0,0.5,0.5),0.1) }.scope(1, zoom: 4);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">VarSaw</span>.ar(<span class="s3">VarSaw</span>.kr(<span class="s3">VarSaw</span>.kr(0.2,0,0.2,8,10),0,0.2, 400,800),0,0.2,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">VarSaw</span>.ar(<span class="s3">VarSaw</span>.kr(0.2, 0, 0.2, 400,800),0,0.2,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">VarSaw</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0,0.2,0.1) }.scope(1, zoom: 4);</p>
-<p class="p7"><br></p>
-<p class="p6">// pulse width modulation</p>
-<p class="p4">{ <span class="s3">VarSaw</span>.ar(100,0,<span class="s3">MouseY</span>.kr(0,1),0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">VarSaw</span>.ar(100,0,<span class="s3">LFTri</span>.kr(0.2,0,0.5,0.5),0.1) }.scope(1, zoom: 4);</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/SyncSaw.html">SyncSaw</a></span></p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>syncFreq, sawFreq, mul, add</p>
-<p class="p8"><br></p>
-<p class="p4">{ <span class="s3">SyncSaw</span>.ar(100, <span class="s3">MouseX</span>.kr(100, 1000), 0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">SyncSaw</span>.ar(100, <span class="s3">Line</span>.kr(100, 800, 12), 0.1) }.scope(1, zoom: 4);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3"><b>Band Limited Oscillators</b></p>
-<p class="p2"><br></p>
-<p class="p3">SinOsc, FSinOsc, Blip, Saw, Pulse</p>
-<p class="p3">will not alias.<span class="Apple-converted-space"> </span></p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/SinOsc.html">SinOsc</a></span><span class="s5">, <a href="Oscillators/FSinOsc.html"><span class="s4">FSinOsc</span></a></span></p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>frequency, phase, mul, add</p>
-<p class="p8"><br></p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(<span class="s3">SinOsc</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.kr(0.2, 0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(800,0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">FSinOsc</span>.ar(800,0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p6">// FSinOsc should not be frequency modulated.<span class="Apple-converted-space"> </span></p>
-<p class="p6">// Since it is based on a filter at the edge of stability, it will blow up:</p>
-<p class="p4">{ <span class="s3">FSinOsc</span>.ar(<span class="s3">FSinOsc</span>.kr(<span class="s3">FSinOsc</span>.kr(0.2,0,8,10),0, 400,800),0,0.1) }.scope(1, zoom: 4);</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/Blip.html">Blip</a></span></p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>frequency, numHarmonics, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">Blip</span>.ar(<span class="s3">XLine</span>.kr(20000,200,6),100,0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">Blip</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),100,0.2) }.scope(1); <span class="s6">// no aliasing</span></p>
-<p class="p6">// modulate number of harmonics</p>
-<p class="p4">{ <span class="s3">Blip</span>.ar(200,<span class="s3">Line</span>.kr(1,100,20),0.2) }.scope(1);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/Saw.html">Saw</a></span></p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>frequency, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">Saw</span>.ar(<span class="s3">XLine</span>.kr(20000,200,6),0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">Saw</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0.2) }.scope(1); <span class="s6">// no aliasing</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/Pulse.html">Pulse</a></span></p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>frequency, width, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">Pulse</span>.ar(<span class="s3">XLine</span>.kr(20000,200,6),0.3,0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">Pulse</span>.ar(<span class="s3">XLine</span>.kr(100,15000,6),0.3,0.2) }.scope(1); <span class="s6">// no aliasing</span></p>
-<p class="p7"><br></p>
-<p class="p6">// modulate pulse width</p>
-<p class="p4">{ <span class="s3">Pulse</span>.ar(200, <span class="s3">Line</span>.kr(0.01,0.99,8), 0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p6">// two band limited square waves thru a resonant low pass filter</p>
-<p class="p4">{ <span class="s3">RLPF</span>.ar(<span class="s3">Pulse</span>.ar([100,250],0.5,0.1), <span class="s3">XLine</span>.kr(8000,400,5), 0.05) }.scope(1);</p>
-<p class="p8"><br></p>
-<p class="p3"><span class="s7"><a href="Oscillators/Klang.html">Klang</a></span> - sine oscillator bank</p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>`[ frequencies, amplitudes, phases ], mul, add</p>
-<p class="p8"><br></p>
-<p class="p4">{ <span class="s3">Klang</span>.ar(`[ [800, 1000, 1200],[0.3, 0.3, 0.3],[pi,pi,pi]], 1, 0) * 0.4}.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Klang</span>.ar(`[ {exprand(400, 2000)}.dup(16), <span class="s3">nil</span>, <span class="s3">nil</span> ], 1, 0) * 0.04 }.scope(1);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3"><b>Table Oscillators</b></p>
-<p class="p2"><br></p>
-<p class="p3">Osc, COsc, VOsc, VOsc3</p>
-<p class="p3">Use a buffer allocated on the server.</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/Osc.html">Osc</a></span></p>
-<p class="p3">arguments: buffer number, frequency, phase, mul, add.</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">b = <span class="s3">Buffer</span>.alloc(s, 2048, 1, bufnum: 80);</p>
-<p class="p4">b.sine1(1.0/(1..6), <span class="s3">true</span>, <span class="s3">true</span>, <span class="s3">true</span>);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Osc</span>.ar(80, 100, 0, 0.1) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p4">b.sine1(1.0/(1..12));</p>
-<p class="p4">b.sine1(1.0/(1..24));</p>
-<p class="p4">b.sine1(1.0/(1..32));</p>
-<p class="p4">b.sine1([1.0/(1,3..12), 0].flop.flat.postln);</p>
-<p class="p4">b.sine1([1.0/(1,3..32).squared, 0].flop.flat.postln);</p>
-<p class="p4">b.sine1((1.dup(4) ++ 0.dup(8)).scramble.postln);</p>
-<p class="p4">b.sine1((1.dup(4) ++ 0.dup(8)).scramble.postln);</p>
-<p class="p4">b.sine1((1.dup(4) ++ 0.dup(8)).scramble.postln);</p>
-<p class="p4">b.sine1((1.dup(4) ++ 0.dup(8)).scramble.postln);</p>
-<p class="p4">b.sine1({1.0.rand2.cubed}.dup(8).round(1e-3).postln);</p>
-<p class="p4">b.sine1({1.0.rand2.cubed}.dup(12).round(1e-3).postln);</p>
-<p class="p4">b.sine1({1.0.rand2.cubed}.dup(16).round(1e-3).postln);</p>
-<p class="p4">b.sine1({1.0.rand2.cubed}.dup(24).round(1e-3).postln);</p>
-<p class="p8"><br></p>
-<p class="p3"><span class="s7"><a href="Oscillators/COsc.html">COsc</a></span> - two oscillators, detuned</p>
-<p class="p3">arguments: buffer number, frequency, beat frequency, mul, add.</p>
-<p class="p8"><br></p>
-<p class="p4">b.sine1(1.0/(1..6), <span class="s3">true</span>, <span class="s3">true</span>, <span class="s3">true</span>);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">COsc</span>.ar(80, 100, 1, 0.1) }.scope(1, zoom:4);</p>
-<p class="p6">// change buffer as above.</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3"><span class="s7"><a href="Oscillators/VOsc.html">VOsc</a></span> - multiple wave table crossfade oscillators</p>
-<p class="p3">arguments: buffer number, frequency, phase, mul, add.</p>
-<p class="p8"><br></p>
-<p class="p4">(</p>
-<p class="p6">// allocate tables 80 to 87</p>
-<p class="p4">8.do {<span class="s3">|i|</span> s.sendMsg(<span class="s8">\b_alloc</span>, 80+i, 1024); };</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// fill tables 80 to 87</p>
-<p class="p4">8.do({<span class="s3">|i|</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> n, a;</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>n = (i+1)**2; </span>// num harmonics for each table: [1,4,9,16,25,36,49,64]</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = {<span class="s3">|j|</span> ((n-j)/n).squared }.dup(n);</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p4"><span class="Apple-tab-span">	</span>s.listSendMsg([<span class="s8">\b_gen</span>, 80+i, <span class="s8">\sine1</span>, 7] ++ a);</p>
-<p class="p4">});</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">VOsc</span>.ar(<span class="s3">MouseX</span>.kr(80,87), 120, 0, 0.3) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// allocate and fill tables 80 to 87</p>
-<p class="p4">8.do({<span class="s3">|i|</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// generate array of harmonic amplitudes</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = {1.0.rand2.cubed }.dup((i+1)*4);</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// fill table</p>
-<p class="p4"><span class="Apple-tab-span">	</span>s.listSendMsg([<span class="s8">\b_gen</span>, 80+i, <span class="s8">\sine1</span>, 7] ++ a);</p>
-<p class="p4">});</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p3"><span class="s7"><a href="Oscillators/VOsc3.html">VOsc3</a></span> - three VOscs summed.</p>
-<p class="p3">arguments: buffer number, freq1, freq2, freq3, beat frequency, mul, add.</p>
-<p class="p8"><br></p>
-<p class="p6">// chorusing</p>
-<p class="p4">{ <span class="s3">VOsc3</span>.ar(<span class="s3">MouseX</span>.kr(80,87), 120, 121.04, 119.37, 0.2) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p6">// chords</p>
-<p class="p4">{ <span class="s3">VOsc3</span>.ar(<span class="s3">MouseX</span>.kr(80,87), 120, 151.13, 179.42, 0.2) }.scope(1, zoom:4);</p>
-<p class="p8"><br></p>
-<p class="p3"><b>Aperiodic Sources: Noise.</b></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3">LF "Low Frequency" Noise Generators.</p>
-<p class="p8"><br></p>
-<p class="p5"><span class="s4"><a href="Noise/LFNoise0.html">LFNoise0</a></span><span class="s5">, <a href="Noise/LFNoise1.html"><span class="s4">LFNoise1</span></a>, <a href="Noise/LFNoise2.html"><span class="s4">LFNoise2</span></a>, <a href="Noise/LFClipNoise.html"><span class="s4">LFClipNoise</span></a></span></p>
-<p class="p3">arguments: frequency, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">LFClipNoise</span>.ar(<span class="s3">MouseX</span>.kr(200, 10000, 1), 0.125) }.scope(1);</p>
-<p class="p4">{ <span class="s3">LFNoise0</span>.ar(<span class="s3">MouseX</span>.kr(200, 10000, 1), 0.25) }.scope(1);</p>
-<p class="p4">{ <span class="s3">LFNoise1</span>.ar(<span class="s3">MouseX</span>.kr(200, 10000, 1), 0.25) }.scope(1);</p>
-<p class="p4">{ <span class="s3">LFNoise2</span>.ar(<span class="s3">MouseX</span>.kr(200, 10000, 1), 0.25) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p6">// used as controls</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">LFClipNoise</span>.kr(<span class="s3">MouseX</span>.kr(0.5, 64, 1), 200, 400), 0, 0.2) }.scope(1, zoom:8);</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">LFNoise0</span>.kr(<span class="s3">MouseX</span>.kr(0.5, 64, 1), 200, 400), 0, 0.2) }.scope(1, zoom:8);</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">LFNoise1</span>.kr(<span class="s3">MouseX</span>.kr(0.5, 64, 1), 200, 400), 0, 0.2) }.scope(1, zoom:8);</p>
-<p class="p4">{ <span class="s3">LFPar</span>.ar(<span class="s3">LFNoise2</span>.kr(<span class="s3">MouseX</span>.kr(0.5, 64, 1), 200, 400), 0, 0.2) }.scope(1, zoom:8);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3">Broad Spectrum Noise Generators</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Noise/ClipNoise.html">ClipNoise</a></span><span class="s5">, <a href="Noise/WhiteNoise.html"><span class="s4">WhiteNoise</span></a>, <a href="Noise/PinkNoise.html"><span class="s4">PinkNoise</span></a>, <a href="Noise/BrownNoise.html"><span class="s4">BrownNoise</span></a>, <a href="Noise/GrayNoise.html"><span class="s4">GrayNoise</span></a></span></p>
-<p class="p3">arguments: mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">ClipNoise</span>.ar(0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">WhiteNoise</span>.ar(0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">PinkNoise</span>.ar(0.4) }.scope(1);</p>
-<p class="p4">{ <span class="s3">BrownNoise</span>.ar(0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">GrayNoise</span>.ar(0.2) }.scope(1);</p>
-<p class="p2"><br></p>
-<p class="p3">Impulse Noise Generators</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Noise/Dust.html">Dust</a></span><span class="s5">, <a href="Noise/Dust2.html"><span class="s4">Dust2</span></a></span></p>
-<p class="p3">arguments: density, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">Dust</span>.ar(<span class="s3">MouseX</span>.kr(1,10000,1), 0.4) }.scope(1, zoom:4);</p>
-<p class="p4">{ <span class="s3">Dust2</span>.ar(<span class="s3">MouseX</span>.kr(1,10000,1), 0.4) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p3">Chaotic Noise Generators</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Noise/Crackle.html">Crackle</a></span></p>
-<p class="p3">arguments: chaosParam, mul, add</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Crackle</span>.ar(<span class="s3">MouseX</span>.kr(1,2), 0.5) }.scope(1);</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Filters</b></p>
-<p class="p7"><br></p>
-<p class="p3">Low Pass, High Pass</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s7"><a href="Filters/LPF.html">LPF</a></span>, <a href="Filters/HPF.html"><span class="s9">HPF</span></a> - 12 dB / octave</p>
-<p class="p3">arguments: in, freq, mul, add</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">LPF</span>.ar(<span class="s3">WhiteNoise</span>.ar, <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">HPF</span>.ar(<span class="s3">WhiteNoise</span>.ar, <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">LPF</span>.ar(<span class="s3">Saw</span>.ar(100), <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">HPF</span>.ar(<span class="s3">Saw</span>.ar(100), <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p3">Band Pass, Band Cut</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s7"><a href="Filters/BPF.html">BPF</a></span>, <a href="Filters/BRF.html"><span class="s9">BRF</span></a> - 12 dB / octave</p>
-<p class="p3">arguments: in, freq, rq, mul, add</p>
-<p class="p3">rq is the reciprocal of the Q of the filter,</p>
-<p class="p3">or in other words: the bandwidth in Hertz = rq * freq.</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">BPF</span>.ar(<span class="s3">WhiteNoise</span>.ar, <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.4, 0.4) }.scope(1);</p>
-<p class="p4">{ <span class="s3">BRF</span>.ar(<span class="s3">WhiteNoise</span>.ar, <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.4, 0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">BPF</span>.ar(<span class="s3">Saw</span>.ar(100), <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.4, 0.4) }.scope(1);</p>
-<p class="p4">{ <span class="s3">BRF</span>.ar(<span class="s3">Saw</span>.ar(100), <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.4, 0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p6">// modulating the bandwidth</p>
-<p class="p4">{ <span class="s3">BPF</span>.ar(<span class="s3">WhiteNoise</span>.ar, <span class="s3">3000</span>, MouseX.kr(0.01,0.7,1), 0.4) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p3">Resonant Low Pass, High Pass, Band Pass</p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s7"><a href="Filters/RLPF.html">RLPF</a></span>, <a href="Filters/RHPF.html"><span class="s9">RHPF</span></a> - 12 dB / octave</p>
-<p class="p3">arguments: in, freq, rq, mul, add</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">RLPF</span>.ar(<span class="s3">WhiteNoise</span>.ar, <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.2, 0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">RHPF</span>.ar(<span class="s3">WhiteNoise</span>.ar, <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.2, 0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">RLPF</span>.ar(<span class="s3">Saw</span>.ar(100), <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.2, 0.2) }.scope(1);</p>
-<p class="p4">{ <span class="s3">RHPF</span>.ar(<span class="s3">Saw</span>.ar(100), <span class="s3">MouseX</span>.kr(1e2,2e4,1), 0.2, 0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s7"><a href="Filters/Resonz.html">Resonz</a></span> - resonant band pass filter with uniform amplitude</p>
-<p class="p3">arguments: in, freq, rq, mul, add</p>
-<p class="p7"><br></p>
-<p class="p6">// modulate frequency</p>
-<p class="p4">{ <span class="s3">Resonz</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.5), <span class="s3">XLine</span>.kr(1000,8000,10), 0.05) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p6">// modulate bandwidth</p>
-<p class="p4">{ <span class="s3">Resonz</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.5), 2000, <span class="s3">XLine</span>.kr(1, 0.001, 8)) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p6">// modulate bandwidth opposite direction</p>
-<p class="p4">{ <span class="s3">Resonz</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.5), 2000, <span class="s3">XLine</span>.kr(0.001, 1, 8)) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s7"><a href="Filters/Ringz.html">Ringz</a></span> - ringing filter.</p>
-<p class="p3">Internally it is the same as Resonz but the bandwidth is expressed as a ring time.</p>
-<p class="p3">arguments: in, frequency, ring time, mul, add</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Ringz</span>.ar(<span class="s3">Dust</span>.ar(3, 0.3), 2000, 2) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Ringz</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.005), 2000, 0.5) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p6">// modulate frequency</p>
-<p class="p4">{ <span class="s3">Ringz</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.005), <span class="s3">XLine</span>.kr(100,3000,10), 0.5) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Ringz</span>.ar(<span class="s3">Impulse</span>.ar(6, 0, 0.3),<span class="Apple-converted-space">  </span><span class="s3">XLine</span>.kr(100,3000,10), 0.5) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p6">// modulate ring time</p>
-<p class="p4">{ <span class="s3">Ringz</span>.ar(<span class="s3">Impulse</span>.ar(6, 0, 0.3), 2000, <span class="s3">XLine</span>.kr(0.04, 4, 8)) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p3">Simpler Filters</p>
-<p class="p3">6 dB / octave</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">OnePole</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.5), <span class="s3">MouseX</span>.kr(-0.99, 0.99)) }.scope(1);</p>
-<p class="p4">{ <span class="s3">OneZero</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.5), <span class="s3">MouseX</span>.kr(-0.49, 0.49)) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p3">NonLinear Filters</p>
-<p class="p5"><span class="s4"><a href="Filters/Median.html">Median</a></span><span class="s5">, <a href="Synth control/Slew.html"><span class="s10">Slew</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p6">// a signal with impulse noise.</p>
-<p class="p4">{ <span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">Dust2</span>.ar(100, 0.9) }.scope(1);</p>
-<p class="p6">// after applying median filter</p>
-<p class="p4">{ <span class="s3">Median</span>.ar(3, <span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">Dust2</span>.ar(100, 0.9)) }.scope(1);</p>
-<p class="p2"><br></p>
-<p class="p6">// a signal with impulse noise.</p>
-<p class="p4">{ <span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">Dust2</span>.ar(100, 0.9) }.scope(1);</p>
-<p class="p6">// after applying slew rate limiter</p>
-<p class="p4">{ <span class="s3">Slew</span>.ar(<span class="s3">Saw</span>.ar(500, 0.1) + <span class="s3">Dust2</span>.ar(100, 0.9),1000,1000) }.scope(1);</p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p3">Formant Filter<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="s7"><a href="Filters/Formlet.html">Formlet</a></span> - A filter whose impulse response is similar to a FOF grain.</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Formlet</span>.ar(<span class="s3">Impulse</span>.ar(<span class="s3">MouseX</span>.kr(2,300,1), 0, 0.4), 800, 0.01, 0.1) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p3">Klank - resonant filter bank</p>
-<p class="p3">arguments:<span class="Apple-converted-space">  </span>`[ frequencies, amplitudes, ring times ], mul, add</p>
-<p class="p8"><br></p>
-<p class="p4">{ <span class="s3">Klank</span>.ar(`[[200, 671, 1153, 1723], <span class="s3">nil</span>, [1, 1, 1, 1]], <span class="s3">Impulse</span>.ar(2, 0, 0.1)) }.play;</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Klank</span>.ar(`[[200, 671, 1153, 1723], <span class="s3">nil</span>, [1, 1, 1, 1]], <span class="s3">Dust</span>.ar(8, 0.1)) }.play;</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Klank</span>.ar(`[[200, 671, 1153, 1723], <span class="s3">nil</span>, [1, 1, 1, 1]], <span class="s3">PinkNoise</span>.ar(0.007)) }.play;</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Klank</span>.ar(`[ {exprand(200, 4000)}.dup(12), <span class="s3">nil</span>, <span class="s3">nil</span> ], <span class="s3">PinkNoise</span>.ar(0.007)) }.scope(1);</p>
-<p class="p8"><br></p>
-<p class="p4">{ <span class="s3">Klank</span>.ar(`[ (1..13)*200, <span class="s3">1/</span>(1..13), <span class="s3">nil</span> ], <span class="s3">PinkNoise</span>.ar(0.01)) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Klank</span>.ar(`[ (1,3..13)*200, <span class="s3">1/</span>(1,3..13), <span class="s3">nil</span> ], <span class="s3">PinkNoise</span>.ar(0.01)) }.scope(1);</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p3"><b>Distortion</b></p>
-<p class="p2"><br></p>
-<p class="p3">abs, max, squared, cubed</p>
-<p class="p8"><br></p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">0.2</span>) }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">0.2</span>).abs }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">0.2</span>).max(0) }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0).squared * 0.2 }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0).cubed * 0.2 }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p3">distort, softclip, clip2, fold2, wrap2,<span class="Apple-converted-space"> </span></p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">MouseX</span>.kr(0.1,80,1)).distort * 0.2 }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">MouseX</span>.kr(0.1,80,1)).softclip * 0.2 }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">MouseX</span>.kr(0.1,80,1)).clip2(1) * 0.2 }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">MouseX</span>.kr(0.1,80,1)).fold2(1) * 0.2 }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">MouseX</span>.kr(0.1,80,1)).wrap2(1) * 0.2 }.scope(1);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">MouseX</span>.kr(0.1,80,1)).wrap2(1) * 0.2 }.scope(1);</p>
-<p class="p8"><br></p>
-<p class="p3">scaleneg</p>
-<p class="p8"><br></p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(200, 0, <span class="s3">0.2</span>).scaleneg(<span class="s3">MouseX</span>.kr(-1,1)) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p3">waveshaping by phase modulating a 0 Hz sine oscillator</p>
-<p class="p3">(currently there is a limit of 8pi)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> in;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s3">SinOsc</span>.ar(300, 0, <span class="s3">MouseX</span>.kr(0.1,8pi,1));</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s3">SinOsc</span><span class="s5">.ar(0, in, 0.2); </span>// 0 Hz sine oscillator</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s4"><a href="Oscillators/Shaper.html">Shaper</a></span><span class="s5"><span class="Apple-converted-space"> </span></span></p>
-<p class="p3">input is used to look up a value in a table.</p>
-<p class="p3">Chebyshev polynomials are typically used to fill the table.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s11"><img src="attachments/Tour_of_UGens/chebyshevpolynomials.png" alt="attachments/Tour_of_UGens/chebyshevpolynomials.png"></span></p>
-<p class="p7"><br></p>
-<p class="p4">s.sendMsg(<span class="s8">\b_alloc</span>, 80, 1024); <span class="s6">// allocate table</span></p>
-<p class="p6">// fill with chebyshevs</p>
-<p class="p4">s.listSendMsg([<span class="s8">\b_gen</span>, 80, <span class="s8">\cheby</span>, 7] ++ {1.0.rand2.squared}.dup(6));</p>
-<p class="p10"><br></p>
-<p class="p4">{ <span class="s3">Shaper</span>.ar(80, <span class="s3">SinOsc</span>.ar(600, 0, <span class="s3">MouseX</span>.kr(0,1))) * 0.3; }.scope(1);</p>
-<p class="p10"><br></p>
-<p class="p4">s.listSendMsg([<span class="s8">\b_gen</span>, 80, <span class="s8">\cheby</span>, 7] ++ {1.0.rand2.squared}.dup(6));</p>
-<p class="p4">s.listSendMsg([<span class="s8">\b_gen</span>, 80, <span class="s8">\cheby</span>, 7] ++ {1.0.rand2.squared}.dup(6));</p>
-<p class="p7"><br></p>
-<p class="p3"><b>Panning</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">s = <span class="s3">Server</span>.internal;</p>
-<p class="p4"><span class="s3">Server</span>.default = s;</p>
-<p class="p4">s.quit;</p>
-<p class="p4">s.options.numOutputBusChannels = 8;</p>
-<p class="p4">s.options.numInputBusChannels = 8;</p>
-<p class="p4">s.boot;</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s7"><a href="Multichannel/Panners/Pan2.html">Pan2</a></span> - equal power stereo pan a mono source</p>
-<p class="p3">arguments: in, pan position, level</p>
-<p class="p3">pan controls typically range from -1 to +1</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">Pan2</span>.ar(<span class="s3">BrownNoise</span>.ar, <span class="s3">MouseX</span>.kr(-1,1), 0.3) }.scope(2);</p>
-<p class="p4">{ <span class="s3">Pan2</span>.ar(<span class="s3">BrownNoise</span>.ar, <span class="s3">SinOsc</span>.kr(0.2), 0.3) }.scope(2);</p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s7"><a href="Multichannel/Panners/LinPan2.html">LinPan2</a></span> - linear pan a mono source (not equal power)</p>
-<p class="p3">arguments: in, pan position, level</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">LinPan2</span>.ar(<span class="s3">BrownNoise</span>.ar, <span class="s3">MouseX</span>.kr(-1,1), 0.3) }.scope(2);</p>
-<p class="p4">{ <span class="s3">LinPan2</span>.ar(<span class="s3">BrownNoise</span>.ar, <span class="s3">SinOsc</span>.kr(0.2), 0.3) }.scope(2);</p>
-<p class="p7"><br></p>
-<p class="p3">Balance2 - balance a stereo source</p>
-<p class="p3">arguments: left in, right in, pan position, level</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Balance2</span>.ar(<span class="s3">BrownNoise</span>.ar, <span class="s3">BrownNoise</span>.ar, <span class="s3">MouseX</span>.kr(-1,1), 0.3) }.scope(2);</p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s7"><a href="Multichannel/Panners/Pan4.html">Pan4</a></span> - equal power quad panner</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Pan4</span>.ar(<span class="s3">BrownNoise</span>.ar, <span class="s3">MouseX</span>.kr(-1,1), <span class="s3">MouseY</span>.kr(1,-1), 0.3) }.scope(4);</p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s7"><a href="Multichannel/Panners/PanAz.html">PanAz</a></span> - azimuth panner to any number of channels</p>
-<p class="p3">arguments: num channels, in, pan position, level, width</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">PanAz</span>.ar(5, <span class="s3">BrownNoise</span>.ar, <span class="s3">MouseX</span>.kr(-1,1), 0.3, 2) }.scope(5);</p>
-<p class="p7"><br></p>
-<p class="p6">// change width to 3</p>
-<p class="p4">{ <span class="s3">PanAz</span>.ar(5, <span class="s3">BrownNoise</span>.ar, <span class="s3">MouseX</span>.kr(-1,1), 0.3, 3) }.scope(5);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p3"><span class="s7"><a href="Multichannel/Panners/XFade2.html">XFade2</a></span> - equal power cross fade between two inputs</p>
-<p class="p3">arguments: in1, in2, crossfade, level</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">XFade2</span>.ar(<span class="s3">BrownNoise</span>.ar, SinOsc.ar(500), <span class="s3">MouseX</span>.kr(-1,1), 0.3) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p10"><br></p>
-<p class="p3"><span class="s7"><a href="Multichannel/Panners/PanB2.html">PanB2</a></span> and <a href="Multichannel/Panners/DecodeB2.html"><span class="s9">DecodeB2</span></a> - 2D ambisonics panner and decoder</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> w, x, y, p, lf, rf, rr, lr;</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>p = <span class="s3">BrownNoise</span>.ar; <span class="s6">// source</span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// B-format encode</p>
-<p class="p4"><span class="Apple-tab-span">	</span>#w, x, y = <span class="s3">PanB2</span>.ar(p, <span class="s3">MouseX</span>.kr(-1,1), 0.3);<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// B-format decode to quad. outputs in clockwise order</p>
-<p class="p4"><span class="Apple-tab-span">	</span>#lf, rf, rr, lr = <span class="s3">DecodeB2</span>.ar(4, w, x, y);</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>[lf, rf, lr, rr] </span>// reorder to my speaker arrangement: Lf Rf Lr Rr</p>
-<p class="p4">}.scope(4);</p>
-<p class="p11">)</p>
-<p class="p8"><br></p>
-<p class="p3"><span class="s7"><a href="Multichannel/Panners/Rotate2.html">Rotate2</a></span> - rotate a sound field of ambisonic or even stereo sound.</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// rotation of stereo sound via mouse<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> x, y;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s3">Mix</span>.fill(4, { <span class="s3">LFSaw</span>.ar(200 + 2.0.rand2, 0, 0.1) }); <span class="s6">// left in</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>y = <span class="s3">WhiteNoise</span>.ar * <span class="s3">LFPulse</span>.kr(3,0,0.7,0.2); <span class="s6">// right in</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>#x, y = <span class="s3">Rotate2</span>.ar(x, y, <span class="s3">MouseX</span>.kr(0,2));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[x,y]</p>
-<p class="p4">}.scope(2);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p3"><b>Reverbs</b></p>
-<p class="p5"><span class="s4"><a href="Reverbs/FreeVerb.html">FreeVerb</a></span><span class="s5"><span class="Apple-converted-space"> </span></span></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// play with the room size</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> x;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s3">Klank</span>.ar(`[[200, 671, 1153, 1723], <span class="s3">nil</span>, [1, 1, 1, 1]], <span class="s3">Dust</span>.ar(2, 0.1));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = Pan2.ar(x, -0.2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = [x[0], DelayC.ar(x[1], 0.01, 0.01)]; // de-correlate</p>
-<p class="p4"><span class="Apple-tab-span">	</span>FreeVerb.ar(x, 0.75, 0.9, 0.4);</p>
-<p class="p4">}.scope;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Reverbs/GVerb.html">GVerb</a></span></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// play with the room size</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> x;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s3">Klank</span>.ar(`[[200, 671, 1153, 1723], <span class="s3">nil</span>, [1, 1, 1, 1]], <span class="s3">Dust</span>.ar(2, 0.1));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>GVerb.ar(x, 105, 5, 0.7, 0.8, 60, 0.1, 0.5, 0.4) + x;</p>
-<p class="p4">}.scope;</p>
-<p class="p3">)</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Delays and Buffer UGens</b></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Delays/DelayN.html">DelayN</a></span><span class="s5">, <a href="Delays/DelayL.html"><span class="s4">DelayL</span></a>, <a href="Delays/DelayC.html"><span class="s4">DelayC</span></a></span></p>
-<p class="p3">simple delays</p>
-<p class="p3">N - no interpolation</p>
-<p class="p3">L - linear interpolation</p>
-<p class="p3">C - cubic interpolation</p>
-<p class="p3">arguments: in, maximum delay time, current delay time, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p6">// Dust randomly triggers Decay to create an exponential<span class="Apple-converted-space"> </span></p>
-<p class="p6">// decay envelope for the WhiteNoise input source</p>
-<p class="p4">{</p>
-<p class="p4">z = <span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.3, <span class="s3">WhiteNoise</span>.ar);</p>
-<p class="p6"><span class="s3">DelayN</span>.ar(z, 0.1, 0.1, 1, z); // input is mixed with delay via the add input</p>
-<p class="p4">}.scope(1, zoom: 4)</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4">z = <span class="s3">Decay</span>.ar(<span class="s3">Impulse</span>.ar(2,0,0.4), 0.3, <span class="s3">WhiteNoise</span>.ar);</p>
-<p class="p6"><span class="s3">DelayL</span>.ar(z, 0.3, MouseX.kr(0,0.3), 1, z); // input is mixed with delay via the add input</p>
-<p class="p4">}.scope(1, zoom: 4)</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s4"><a href="Delays/CombN.html">CombN</a></span><span class="s5">, <a href="Delays/CombL.html"><span class="s4">CombL</span></a>, <a href="Delays/CombC.html"><span class="s4">CombC</span></a></span></p>
-<p class="p3">feedback delays</p>
-<p class="p3">arguments: in, maximum delay time, current delay time, echo decay time, mul, add</p>
-<p class="p2"><br></p>
-<p class="p12"><br></p>
-<p class="p6">// used as an echo.<span class="Apple-converted-space"> </span></p>
-<p class="p4">{ <span class="s3">CombN</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.2, <span class="s3">WhiteNoise</span>.ar), 0.2, 0.2, 3) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p6">// Comb used as a resonator. The resonant fundamental is equal to<span class="Apple-converted-space"> </span></p>
-<p class="p6">// reciprocal of the delay time.</p>
-<p class="p4">{ <span class="s3">CombN</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.02), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">CombL</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.02), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">CombC</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.02), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), 0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p6">// with negative feedback:</p>
-<p class="p4">{ <span class="s3">CombN</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.02), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">CombL</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.02), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.scope(1);</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">CombC</span>.ar(<span class="s3">WhiteNoise</span>.ar(0.02), 0.01, <span class="s3">XLine</span>.kr(0.0001, 0.01, 20), -0.2) }.scope(1);</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">CombC</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.1), 0.2, <span class="s3">WhiteNoise</span>.ar), 1/100, 1/100, 3) }.play;</p>
-<p class="p4">{ <span class="s3">CombC</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.1), 0.2, <span class="s3">WhiteNoise</span>.ar), 1/200, 1/200, 3) }.play;</p>
-<p class="p4">{ <span class="s3">CombC</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.1), 0.2, <span class="s3">WhiteNoise</span>.ar), 1/300, 1/300, 3) }.play;</p>
-<p class="p4">{ <span class="s3">CombC</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.1), 0.2, <span class="s3">WhiteNoise</span>.ar), 1/400, 1/400, 3) }.scope(1, zoom:4);</p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s4"><a href="Delays/AllpassN.html">AllpassN</a></span><span class="s5">, <a href="Delays/AllpassL.html"><span class="s4">AllpassL</span></a>, <a href="Delays/AllpassC.html"><span class="s4">AllpassC</span></a></span></p>
-<p class="p3">allpass delay</p>
-<p class="p3">arguments: in, maximum delay time, current delay time, echo decay time, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> z;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z = <span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(1,0.5), 0.1, <span class="s3">WhiteNoise</span>.ar);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>8.do { z = <span class="s3">AllpassL</span>.ar(z, 0.04, 0.04.rand, 2) };</p>
-<p class="p4"><span class="Apple-tab-span">	</span>z</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><a href="Playback and Recording/PlayBuf.html"><b>PlayBuf</b></a></p>
-<p class="p3">buffer playback</p>
-<p class="p3">arguments: numChannels, buffer number, rate, trigger, start pos, loop</p>
-<p class="p2"><br></p>
-<p class="p6">// read sound</p>
-<p class="p13"><span class="s5">b = </span><span class="s3">Buffer</span><span class="s5">.read(s, </span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p2"><br></p>
-<p class="p4">{ SinOsc.ar(800 + (700 * <span class="s3">PlayBuf</span>.ar(1,b, <span class="s3">BufRateScale</span>.kr(b),<span class="Apple-converted-space">  </span>loop:1)),0,0.3) }.scope(1);</p>
-<p class="p2"><br></p>
-<p class="p6">// loop is true</p>
-<p class="p4">{ <span class="s3">PlayBuf</span>.ar(1,b, <span class="s3">BufRateScale</span>.kr(b), loop:1) }.scope(1);</p>
-<p class="p14"><br></p>
-<p class="p7"><br></p>
-<p class="p6">// trigger one shot on each pulse</p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trig;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trig = <span class="s3">Impulse</span>.kr(2.0);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">PlayBuf</span>.ar(1,b,<span class="s3">BufRateScale</span>.kr(b),trig,0,0);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p6">// trigger one shot on each pulse</p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trig;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trig = <span class="s3">Impulse</span>.kr(<span class="s3">XLine</span>.kr(0.1,100,30));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">PlayBuf</span>.ar(1,b,<span class="s3">BufRateScale</span>.kr(b),trig,5000,0);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p6">// mouse control of trigger rate and startpos</p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trig;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trig = <span class="s3">Impulse</span>.kr(<span class="s3">MouseY</span>.kr(0.5,200,1));</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">PlayBuf</span>.ar(1,b,<span class="s3">BufRateScale</span>.kr(b),trig,<span class="s3">MouseX</span>.kr(0,<span class="s3">BufFrames</span>.kr(b)),1)</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p6">// accelerating pitch</p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> rate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>rate = <span class="s3">XLine</span>.kr(0.1,100,60);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">PlayBuf</span>.ar(1, b, rate, 1.0,0.0, 1.0)</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p6">// sine wave control of playback rate. negative rate plays backwards</p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> rate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>rate = <span class="s3">FSinOsc</span>.kr(<span class="s3">XLine</span>.kr(0.2,8,30), 0, 3, 0.6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">PlayBuf</span>.ar(1,b,<span class="s3">BufRateScale</span>.kr(b)*rate,1,0,1)</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p6">// zig zag around sound<span class="Apple-converted-space"> </span></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> rate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>rate = <span class="s3">LFNoise2</span>.kr(<span class="s3">XLine</span>.kr(1,20,60), 2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">PlayBuf</span>.ar(1,b,<span class="s3">BufRateScale</span>.kr(b) * rate,1,0,1)</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p12"><br></p>
-<p class="p2"><br></p>
-<p class="p6">// free sound</p>
-<p class="p4">b.free;</p>
-<p class="p7"><br></p>
-<p class="p3"><b>Granular Synthesis.</b></p>
-<p class="p7"><br></p>
-<p class="p5"><a href="Playback and Recording/TGrains.html"><b>TGrains</b></a></p>
-<p class="p3">granulation of a buffer</p>
-<p class="p3">arguments: numChannels, trigger, buffer number, rate, center pos, dur, pan, amp, interpolation</p>
-<p class="p2"><br></p>
-<p class="p6">// read sound</p>
-<p class="p13"><span class="s5">b = </span><span class="s3">Buffer</span><span class="s5">.read(s, </span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = <span class="s3">MouseY</span>.kr(2,200,1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = 4 / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(2, <span class="s3">Impulse</span>.ar(trate), b, 1, <span class="s3">MouseX</span>.kr(0,<span class="s3">BufDur</span>.kr(b)), dur, 0, 0.1, 2);</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur, clk, pos, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = <span class="s3">MouseY</span>.kr(8,120,1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = 12 / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>clk = <span class="s3">Impulse</span>.kr(trate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pos = <span class="s3">MouseX</span>.kr(0,<span class="s3">BufDur</span>.kr(b)) + <span class="s3">TRand</span>.kr(0, 0.01, clk);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pan = <span class="s3">WhiteNoise</span>.kr(0.6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(2, clk, b, 1, pos, dur, pan, 0.1);</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p6">// 4 channels</p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur, clk, pos, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = <span class="s3">MouseY</span>.kr(8,120,1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = 12 / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>clk = <span class="s3">Impulse</span>.kr(trate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pos = <span class="s3">MouseX</span>.kr(0,<span class="s3">BufDur</span>.kr(b)) + <span class="s3">TRand</span>.kr(0, 0.01, clk);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pan = <span class="s3">WhiteNoise</span>.kr(0.6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(4, clk, b, 1, pos, dur, pan, 0.1);</p>
-<p class="p4">}.scope(4, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur, clk, pos, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = <span class="s3">MouseY</span>.kr(8,120,1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = 4 / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>clk = <span class="s3">Dust</span>.kr(trate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pos = <span class="s3">MouseX</span>.kr(0,<span class="s3">BufDur</span>.kr(b)) + <span class="s3">TRand</span>.kr(0, 0.01, clk);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pan = <span class="s3">WhiteNoise</span>.kr(0.6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(2, clk, b, 1, pos, dur, pan, 0.1);</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur, clk, pos, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = <span class="s3">LinExp</span>.kr(<span class="s3">LFTri</span>.kr(<span class="s3">MouseY</span>.kr(0.1,2,1)),-1,1,8,120);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = 12 / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>clk = <span class="s3">Impulse</span>.ar(trate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pos = <span class="s3">MouseX</span>.kr(0,<span class="s3">BufDur</span>.kr(b));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pan = <span class="s3">WhiteNoise</span>.kr(0.6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(2, clk, b, 1, pos, dur, pan, 0.1);</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur, clk, pos, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = 12;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = <span class="s3">MouseY</span>.kr(0.2,24,1) / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>clk = <span class="s3">Impulse</span>.kr(trate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pos = <span class="s3">MouseX</span>.kr(0,<span class="s3">BufDur</span>.kr(b)) + <span class="s3">TRand</span>.kr(0, 0.01, clk);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pan = <span class="s3">WhiteNoise</span>.kr(0.6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(2, clk, b, 1, pos, dur, pan, 0.1);</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur, clk, pos, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = 100;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = 8 / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>clk = <span class="s3">Impulse</span>.kr(trate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pos = <span class="s3">Integrator</span>.kr(<span class="s3">BrownNoise</span>.kr(0.001));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pan = <span class="s3">WhiteNoise</span>.kr(0.6);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(2, clk, b, 1, pos, dur, pan, 0.1);</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur, clk, pos, pan;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = <span class="s3">MouseY</span>.kr(1,400,1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = 8 / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>clk = <span class="s3">Impulse</span>.kr(trate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pos = <span class="s3">MouseX</span>.kr(0,<span class="s3">BufDur</span>.kr(b));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>pan = <span class="s3">WhiteNoise</span>.kr(0.8);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(2, clk, b, 2 ** <span class="s3">WhiteNoise</span>.kr(2), pos, dur, pan, 0.1);</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trate, dur;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trate = <span class="s3">MouseY</span>.kr(2,120,1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>dur = 1.2 / trate;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TGrains</span>.ar(2, <span class="s3">Impulse</span>.ar(trate), b, (1.2 ** <span class="s3">WhiteNoise</span>.kr(3).round(1)), <span class="s3">MouseX</span>.kr(0,<span class="s3">BufDur</span>.kr(b)), dur, <span class="s3">WhiteNoise</span>.kr(0.6), 0.1);</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p6">// free sound</p>
-<p class="p4">b.free;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Generators/Granular/GrainSin.html">GrainSin</a></span></p>
-<p class="p3">arguments: numChannels, trigger, dur, freq, pan, envbufnum</p>
-<p class="p7"><br></p>
-<p class="p15"><span class="s5">( </span>// using default window</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s12">var</span> trigrate, winsize, trig;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trigrate = <span class="s12">MouseX</span>.kr(2, 120);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>winsize = trigrate.reciprocal;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trig = <span class="s12">Impulse</span>.ar(trigrate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s12">GrainSin</span>.ar(2, trig, winsize, <span class="s12">TRand</span>.ar(440.0, 880.0, trig), <span class="s12">LFNoise1</span>.kr(0.2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>-1, 0.2)</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p16"><span class="s13">b =</span> <span class="s12">Buffer</span>.sendCollection(s, <span class="s12">Env</span>([0, 1, 0], [0.5, 0.5], [8, -8]).discretize, 1);</p>
-<p class="p2"><br></p>
-<p class="p15"><span class="s5">( </span>// using user supplied window</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s12">var</span> trigrate, winsize, trig;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trigrate = <span class="s12">MouseX</span>.kr(2, 120);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>winsize = trigrate.reciprocal;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trig = <span class="s12">Impulse</span>.ar(trigrate);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s12">GrainSin</span>.ar(2, trig, winsize, <span class="s12">TRand</span>.ar(440.0, 880.0, trig), <span class="s12">LFNoise1</span>.kr(0.2),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>b, 0.2)</p>
-<p class="p4">}.scope(2, zoom: 4);</p>
-<p class="p4">)</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s5">see also <a href="Generators/Granular/GrainFM.html"><span class="s4">GrainFM</span></a>, <a href="Generators/Granular/GrainBuf.html"><span class="s4">GrainBuf</span></a> and <a href="Generators/Granular/GrainIn.html"><span class="s4">GrainIn</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Control</b></p>
-<p class="p2"><br></p>
-<p class="p3">Filters for Controls</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Synth control/Envelopes/Decay.html">Decay</a></span></p>
-<p class="p3">triggered exponential decay</p>
-<p class="p3">arguments: in, decay time, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">WhiteNoise</span>.ar * <span class="s3">Decay</span>.ar(<span class="s3">Impulse</span>.ar(1), 0.9, 0.2) }.scope(1, zoom:4);</p>
-<p class="p4">{ <span class="s3">WhiteNoise</span>.ar * <span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(3), 0.9, 0.2) }.scope(1, zoom:4);</p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">Decay</span>.ar(<span class="s3">Dust</span>.ar(4), 0.5, 1000, 400), 0, 0.2) }.scope(1, zoom:4);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Synth control/Envelopes/Decay2.html">Decay2</a></span></p>
-<p class="p3">triggered exponential attack and exponential decay<span class="Apple-converted-space"> </span></p>
-<p class="p3">arguments: trigger, attack time, decay time, mul, add</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">WhiteNoise</span>.ar * <span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(1), 0.2, 0.9, 0.2) }.scope(1, zoom:4);</p>
-<p class="p4">{ <span class="s3">WhiteNoise</span>.ar * <span class="s3">Decay2</span>.ar(<span class="s3">Dust</span>.ar(3), 0.2, 0.9, 0.2) }.scope(1, zoom:4);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Filters/Lag.html">Lag</a></span></p>
-<p class="p3">arguments: trigger, duration</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">Lag</span>.ar(<span class="s3">LFPulse</span>.ar(2,0,0.5,800,400), <span class="s3">MouseX</span>.kr(0,0.5)), 0, 0.2) }.scope(1, zoom:4);</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Synth control/Integrator.html">Integrator</a></span></p>
-<p class="p3">leaky integrator</p>
-<p class="p2"><br></p>
-<p class="p4">{ <span class="s3">SinOsc</span>.ar(<span class="s3">Integrator</span>.ar(<span class="s3">Dust2</span>.ar(8), 0.99999, 200, 800), 0, 0.2) }.scope(1)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Triggers</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Triggers/Trig.html">Trig</a></span><span class="s5">, <a href="Triggers/Trig1.html"><span class="s4">Trig1</span></a></span></p>
-<p class="p3">timed duration gate</p>
-<p class="p3">arguments: trigger, duration</p>
-<p class="p2"><br></p>
-<p class="p6">// amplitude determined by amplitude of trigger</p>
-<p class="p4">{ <span class="s3">Trig</span>.ar(<span class="s3">Dust</span>.ar(2), 0.2) * <span class="s3">FSinOsc</span>.ar(800, 0, 0.4) }.scope(1, zoom:4);</p>
-<p class="p6">// amplitude always the same.</p>
-<p class="p4">{ <span class="s3">Trig1</span>.ar(<span class="s3">Dust</span>.ar(2), 0.2) * <span class="s3">FSinOsc</span>.ar(800, 0, 0.4) }.scope(1, zoom:4)</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s4"><a href="Triggers/TDelay.html">TDelay</a></span></p>
-<p class="p3">delays a trigger. only delays one pending trigger at a time.</p>
-<p class="p3">arguments: trigger, delay time</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> trig;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>trig = <span class="s3">Dust</span>.ar(2);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[(<span class="s3">Trig1</span>.ar(trig, 0.05) * <span class="s3">FSinOsc</span>.ar(600, 0, 0.2)),</p>
-<p class="p4"><span class="Apple-tab-span">	</span>(<span class="s3">Trig1</span>.ar(<span class="s3">TDelay</span>.ar(trig, 0.1), 0.05) * <span class="s3">FSinOsc</span>.ar(800, 0, 0.2))]</p>
-<p class="p4">}.scope(2, zoom:4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s4"><a href="Synth control/Latch.html">Latch</a></span></p>
-<p class="p3">sample and hold</p>
-<p class="p3">arguments: in, trigger</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Blip</span>.ar(<span class="s3">Latch</span>.ar(<span class="s3">WhiteNoise</span>.ar, <span class="s3">Impulse</span>.ar(9)) * 400 + 500, 4, 0.2) }.play;</p>
-<p class="p4">{ <span class="s3">Blip</span>.ar(<span class="s3">Latch</span>.ar(<span class="s3">SinOsc</span>.ar(0.3), <span class="s3">Impulse</span>.ar(9)) * 400 + 500, 4, 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s4"><a href="Triggers/Gate.html">Gate</a></span></p>
-<p class="p3">pass or hold</p>
-<p class="p3">arguments: in, trigger</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">Blip</span>.ar(<span class="s3">Gate</span>.ar(<span class="s3">LFNoise2</span>.ar(40), <span class="s3">LFPulse</span>.ar(1)) * 400 + 500, 4, 0.2) }.scope(1, zoom:4);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s4"><a href="Triggers/PulseCount.html">PulseCount</a></span></p>
-<p class="p3">count triggers</p>
-<p class="p3">arguments: trigger, reset</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p17">SinOsc<span class="s5">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">PulseCount</span>.ar(<span class="s3">Impulse</span>.ar(10), <span class="s3">Impulse</span>.ar(0.4)) * 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.05</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}.scope(2, zoom:4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s4"><a href="Triggers/PulseDivider.html">PulseDivider</a></span></p>
-<p class="p3">arguments: trigger, div, start</p>
-<p class="p7"><br></p>
-<p class="p17">(</p>
-<p class="p4">{<span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> p, a, b;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>p = <span class="s3">Impulse</span>.ar(8);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = <span class="s3">SinOsc</span>.ar(1200, 0, <span class="s3">Decay2</span>.ar(p, 0.005, 0.1));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>b = <span class="s3">SinOsc</span>.ar(600,<span class="Apple-converted-space">  </span>0, <span class="s3">Decay2</span>.ar(<span class="s3">PulseDivider</span>.ar(p, <span class="s3">MouseX</span>.kr(1,8).round(1)), 0.005, 0.5));</p>
-<p class="p7"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[a, b] * 0.4</p>
-<p class="p4">}.scope(2, zoom:4);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5"><span class="s4"><a href="Synth control/Envelopes/EnvGen.html">EnvGen</a></span></p>
-<p class="p3">envelope generator</p>
-<p class="p3">envelope is specified using an instance of the Env class.</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc, doneAction:2) * <span class="s3">SinOsc</span>.ar(880,0,0.2) }.play;</p>
-<p class="p4">{ <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc(1,0.005,1,4), doneAction:2) * <span class="s3">SinOsc</span>.ar(880,0,0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc, Impulse.kr(2)) * <span class="s3">SinOsc</span>.ar(880,0,0.2) }.play;</p>
-<p class="p4">{ <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.perc, Dust.kr(3)) * <span class="s3">SinOsc</span>.ar(880,0,0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">// for sustain envelopes a gate is required</p>
-<p class="p4">z = { <span class="s3">arg</span> gate=1; <span class="s3">EnvGen</span>.kr(<span class="s3">Env</span>.adsr, gate, doneAction:2) * <span class="s3">SinOsc</span>.ar(880,0,0.2) }.play;</p>
-<p class="p4">z.release;</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p6">// randomly generated envelope</p>
-<p class="p4">z = { <span class="s3">arg</span> gate=1;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> env, n=32;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>env = <span class="s3">Env</span>(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0]++{1.0.rand.squared}.dup(n-1) ++ [0],<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{rrand(0.005,0.2)}.dup(n),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s8">\lin</span>, n-8, 8 );</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">EnvGen</span>.kr(env, gate, doneAction: 2) * <span class="s3">LFTri</span>.ar(220,0,0.4)<span class="Apple-converted-space"> </span></p>
-<p class="p4">}.scope(1, zoom:4);</p>
-<p class="p4">)</p>
-<p class="p4">z.release;</p>
-<p class="p2"><br></p>
-<p class="p3"><b>Spectral</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s7"><a href="FFT/FFT.html">FFT</a></span>, <a href="FFT/IFFT.html"><span class="s9">IFFT</span></a> and the phase vocoder ugens.</p>
-<p class="p2"><br></p>
-<p class="p3">FFT calculates the spectrum of a sound, puts it into a buffer, and outputs a trigger each time the</p>
-<p class="p3">buffer is ready to process. The PV UGens process the spectrum when they receive the trigger.</p>
-<p class="p3">IFFT converts the spectrum back into sound.</p>
-<p class="p2"><br></p>
-<p class="p7"><br></p>
-<p class="p6">// alloc a buffer for the FFT</p>
-<p class="p4">b = <span class="s3">Buffer</span>.alloc(s,2048,1);</p>
-<p class="p6">// read a sound</p>
-<p class="p13"><span class="s5">c = </span><span class="s3">Buffer</span><span class="s5">.read(s, </span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// do nothing</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1,c, <span class="s3">BufRateScale</span>.kr(c), loop:1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// pass only magnitudes above a threshold</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1,c, <span class="s3">BufRateScale</span>.kr(c), loop:1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagAbove</span>(chain, <span class="s3">MouseX</span>.kr(0.1,512,1));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// pass only magnitudes below a threshold</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1,c, <span class="s3">BufRateScale</span>.kr(c), loop:1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagBelow</span>(chain, <span class="s3">MouseX</span>.kr(0.1,512,1));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// brick wall filter.</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1,c, <span class="s3">BufRateScale</span>.kr(c), loop:1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_BrickWall</span>(chain, <span class="s3">MouseX</span>.kr(-1,1));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// pass random frequencies. Mouse controls how many to pass.</p>
-<p class="p6">// trigger changes the frequencies periodically</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1,c, <span class="s3">BufRateScale</span>.kr(c), loop:1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_RandComb</span>(chain, <span class="s3">MouseX</span>.kr(0,1), <span class="s3">Impulse</span>.kr(0.4));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// rectangular comb filter</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1,c, <span class="s3">BufRateScale</span>.kr(c), loop:1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_RectComb</span>(chain, 8, <span class="s3">MouseY</span>.kr(0,1), <span class="s3">MouseX</span>.kr(0,1));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// freeze magnitudes</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> in, chain;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>in = <span class="s3">PlayBuf</span>.ar(1,c, <span class="s3">BufRateScale</span>.kr(c), loop:1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">FFT</span>(b, in);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>chain = <span class="s3">PV_MagFreeze</span>(chain, <span class="s3">LFPulse</span>.kr(1, 0.75));</p>
-<p class="p4"><span class="Apple-tab-span">	</span>0.5 * <span class="s3">IFFT</span>(chain);</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p8"><br></p>
-<p class="p3"><b>2. Techniques</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Artificial Space</b></p>
-<p class="p3">Building a sense of space into a sound by setting up phase differences between the speakers.</p>
-<p class="p8"><br></p>
-<p class="p7"><br></p>
-<p class="p4">{ <span class="s3">var</span> x; x = <span class="s3">BrownNoise</span>.ar(0.2); [x,x] }.scope(2); <span class="s6">// correlated</span></p>
-<p class="p4">{ {<span class="s3">BrownNoise</span>.ar(0.2)}.dup }.scope(2); <span class="s6">// not correlated</span></p>
-<p class="p7"><br></p>
-<p class="p6">// correlated</p>
-<p class="p4">{ <span class="s3">var</span> x; x = <span class="s3">LPF</span>.ar(<span class="s3">BrownNoise</span>.ar(0.2), <span class="s3">MouseX</span>.kr(100,10000)); [x,x] }.scope(2);</p>
-<p class="p6">// not correlated</p>
-<p class="p4">{ <span class="s3">LPF</span>.ar({<span class="s3">BrownNoise</span>.ar(0.2)}.dup, <span class="s3">MouseX</span>.kr(100,10000)) }.scope(2);</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p6">// correlated</p>
-<p class="p4">(</p>
-<p class="p4">{ <span class="s3">var</span> x;<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s3">Klank</span>.ar(`[[200, 671, 1153, 1723], <span class="s3">nil</span>, [1, 1, 1, 1]], <span class="s3">PinkNoise</span>.ar(7e-3));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[x,x]<span class="Apple-converted-space"> </span></p>
-<p class="p4">}.scope(2))</p>
-<p class="p6">// not correlated</p>
-<p class="p4">{ <span class="s3">Klank</span>.ar(`[[200, 671, 1153, 1723], <span class="s3">nil</span>, [1, 1, 1, 1]], <span class="s3">PinkNoise</span>.ar([7e-3,7e-3])) }.scope(2);</p>
-<p class="p7"><br></p>
-<p class="p6">// two waves mixed together coming out both speakers</p>
-<p class="p4">{ <span class="s3">var</span> x; x = <span class="s3">Mix</span>.ar(<span class="s3">VarSaw</span>.ar([100,101], 0, 0.1, 0.2)); [x,x] }.scope(2);</p>
-<p class="p6">// two waves coming out each speaker independantly</p>
-<p class="p4">{ <span class="s3">VarSaw</span>.ar([100,101], 0, 0.1, 0.2 * 1.414) }.scope(2); <span class="s6">// * 1.414 to compensate for power</span></p>
-<p class="p7"><br></p>
-<p class="p6">// delays as cues to direction</p>
-<p class="p6">// mono</p>
-<p class="p4">{ <span class="s3">var</span> x; x = <span class="s3">LFTri</span>.ar(1000,0,<span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(4,0,0.2),0.004,0.2)); [x,x]}.scope(2);</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// inter-speaker delays</p>
-<p class="p4">{ <span class="s3">var</span> x; x = <span class="s3">LFTri</span>.ar(1000,0,<span class="s3">Decay2</span>.ar(<span class="s3">Impulse</span>.ar(4,0,0.2),0.004,0.2));<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<span class="s3">DelayC</span>.ar(x,0.01,0.01),<span class="s3">DelayC</span>.ar(x,0.02,<span class="s3">MouseX</span>.kr(0.02, 0))]</p>
-<p class="p4">}.scope(2);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// mixing two delays together</p>
-<p class="p6">// you hear a phasing sound but the sound is still flat.</p>
-<p class="p4">{ <span class="s3">var</span> x; x = <span class="s3">BrownNoise</span>.ar(0.2);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>x = <span class="s3">Mix</span>.ar([<span class="s3">DelayC</span>.ar(x,0.01,0.01),<span class="s3">DelayC</span>.ar(x,0.02,<span class="s3">MouseX</span>.kr(0,0.02))]);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[x,x]</p>
-<p class="p4">}.scope(2);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p6">// more spatial sounding. phasing causes you to perceive directionality</p>
-<p class="p4">{ <span class="s3">var</span> x; x = <span class="s3">BrownNoise</span>.ar(0.2);<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>[<span class="s3">DelayC</span>.ar(x,0.01,0.01),<span class="s3">DelayC</span>.ar(x,0.02,<span class="s3">MouseX</span>.kr(0.02, 0))]</p>
-<p class="p4">}.scope(2);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p3"><b>Parallel Structures</b></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// mixing sine oscillators in parallel</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s3">var</span><span class="s5"> n = 16; </span>// number of structures to make</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// mix together<span class="Apple-converted-space">  </span>parallel structures</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Mix</span>.fill(n,<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this function creates an oscillator at a random frequency</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s3">FSinOsc</span>.ar(200 + 1000.0.rand) }</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>) / (2*n)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale amplitude</p>
-<p class="p4">}.scope(1);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// mixing sine oscillators in parallel</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s3">var</span><span class="s5"> n = 16; </span>// number of structures to make</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// mix together<span class="Apple-converted-space">  </span>parallel structures</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Mix</span>.fill(n,<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// this function creates an oscillator at a random frequency</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{ <span class="s3">FSinOsc</span>.ar(200 + 1000.0.rand + [0, 0.5]) }</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>) / (2*n)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale amplitude</p>
-<p class="p4">}.scope(2);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// mixing sine oscillators in parallel</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s3">var</span><span class="s5"> n = 16; </span>// number of structures to make</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>// mix together<span class="Apple-converted-space">  </span>parallel structures</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">Mix</span>.fill(n,<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>var amp;</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>amp = <span class="s3">FSinOsc</span>.kr(exprand(0.1,1),2pi.rand).max(0);</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pan2</span>.ar(</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">FSinOsc</span>.ar(exprand(100,1000.0), 0, amp),</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.0.rand2)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>) / (2*n)<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// scale amplitude</p>
-<p class="p4">}.scope(2);</p>
-<p class="p4">)</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> n;</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span>n = 8; </span>// number of 'voices'</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span><span class="s3">Mix</span><span class="s5">.ar( </span>// mix all stereo pairs down.</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Pan2</span><span class="s5">.ar( </span>// pan the voice to a stereo position</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">CombL</span><span class="s5">.ar( </span>// a comb filter used as a string resonator</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s3">Dust</span><span class="s5">.ar( </span>// random impulses as an excitation function</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// an array to cause expansion of Dust to n channels</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// 1 means one impulse per second on average</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1.dup(n),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.3 </span>// amplitude</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.01, </span>// max delay time in seconds</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// array of different random lengths for each 'string'</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{0.004.rand+0.0003}.dup(n),<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>4 </span>// decay time in seconds</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>),</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{1.0.rand2}.dup(n) </span>// give each voice a different pan position</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p4">}.scope(2, zoom:4);</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Gate.html b/Help/UGens/Triggers/Gate.html
deleted file mode 100644
index 71d02cf..0000000
--- a/Help/UGens/Triggers/Gate.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Gate<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gate or hold</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Gate.ar(in, gate)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Allows input signal value to pass when gate is positive, otherwise holds last value.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal.</p>
-<p class="p3"><b>gate</b> - gate. The gate can be any signal. It will be treated as "on" when its value is greater than zero.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p5">// Control rate so as not to whack your speakers with DC</p>
-<p class="p4">{ <span class="s1">Gate</span>.kr(<span class="s1">WhiteNoise</span>.kr(1, 0), <span class="s1">LFPulse</span>.kr(1.333, 0.5))}.scope(zoom: 20);</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/InRange.html b/Help/UGens/Triggers/InRange.html
deleted file mode 100644
index fcdbea8..0000000
--- a/Help/UGens/Triggers/InRange.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #0000bf}
-span.s2 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>InRange<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tests if a signal is within a given range</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>inRange.ar(in, lo, hi)</b></p>
-<p class="p3"><b>InRange.kr(in, lo, hi)</b></p>
-<p class="p4"><br></p>
-<p class="p3">If in is >= lo and <= hi output 1.0, otherwise output 0.0. Output is initially zero.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - signal to be tested</p>
-<p class="p3"><b>lo</b> - low threshold</p>
-<p class="p3"><b>hi</b> - high threshold</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s1">InRange</span>.kr(<span class="s1">SinOsc</span>.kr(1, 0, 0.2), -0.15, 0.15)}.scope; <span class="s2">// see the trigger</span></p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s1">InRange</span>.kr(<span class="s1">SinOsc</span>.kr(1, 0, 0.2), -0.15, 0.15) * <span class="s1">BrownNoise</span>.ar(0.1)}.scope; <span class="s2">// trigger noise Burst</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/InRect.html b/Help/UGens/Triggers/InRect.html
deleted file mode 100644
index c02bfd6..0000000
--- a/Help/UGens/Triggers/InRect.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {color: #0000ff}
-span.s2 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>InRect<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>detects if a two channel signal is within a rectangular region</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>InRect.ar(x, y, rect)</b></p>
-<p class="p3"><b>InRect.kr(x, y, rect)</b></p>
-<p class="p2"><br></p>
-<p class="p3">A pair of mono input signals x and y are treated as a point (x,y) in 2-D; if they fall within the bounds of the rectangle, then this UGen outputs a one; else it outputs zero.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><b>x</b> - X component signal</p>
-<p class="p3"><b>y</b> - Y component signal</p>
-<p class="p3"><b>rect</b> - A <a href="../../Geometry/Rect.html"><span class="s1">Rect</span></a> which defines the rectangular region to monitor; note that Rects are in screen co-ordinates, so the top is smaller than the bottom. The Rect is created once and cannot be modulated</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">//we'll hear the sawtooth wave when the two sine oscillators are both in the region x = 0.0 to 0.5, y = 0.5 to 1.0</p>
-<p class="p7">{<span class="s2">InRect</span>.ar(<span class="s2">SinOsc</span>.ar(1),<span class="s2">SinOsc</span>.ar(1.3),<span class="s2">Rect</span>(0,0.5,0.5,0.5))*<span class="s2">LFSaw</span>.ar(44,0,0.1) }.play</p>
-<p class="p8"><br></p>
-<p class="p6">//stereo effect</p>
-<p class="p7">{(<span class="s2">InRect</span>.ar(<span class="s2">LFNoise0</span>.ar([140,141]),<span class="s2">LFNoise0</span>.ar(143),<span class="s2">Rect</span>(0,0,0.5,1)).lag(0.1))*<span class="s2">LFSaw</span>.ar(<span class="s2">SinOsc</span>.ar(10,0,5,400),0,0.1) }.play</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">//for the Rect, create as left, 'top', width, height;<span class="Apple-converted-space"> </span></p>
-<p class="p7">r= <span class="s2">Rect</span>(0,0,1,1)</p>
-<p class="p8"><br></p>
-<p class="p7">r.left</p>
-<p class="p7">r.right</p>
-<p class="p7">r.top</p>
-<p class="p7">r.bottom</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/LastValue.html b/Help/UGens/Triggers/LastValue.html
deleted file mode 100644
index 6bed77c..0000000
--- a/Help/UGens/Triggers/LastValue.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #bf0000; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000bf}
-span.s2 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>LastValue<span class="Apple-converted-space"> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>LastValue.ar(in, diff)</b></p>
-<p class="p3"><b>LastValue.kr(in, diff)</b></p>
-<p class="p4"><b></b><br></p>
-<p class="p3">output the last value before the input changed more than a threshhold</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>in<span class="Apple-tab-span">	</span></b>input</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span>diff</b> <span class="Apple-tab-span">	</span>difference threshhold<span class="Apple-converted-space"> </span></p>
-<p class="p5"><br></p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>d = { <span class="s1">arg</span> freq=440; <span class="s1">SinOsc</span>.ar(<span class="s1">LastValue</span>.ar(freq, 20), 0, 0.2) }.play;</p>
-<p class="p4"><br></p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\freq</span>, 400);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\freq</span>, 200);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\freq</span>, 670);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\freq</span>, 680);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\freq</span>, 695);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.free;</p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>return the difference between currrent and the last changed<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>(</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d = { <span class="s1">arg</span> out=0, val=1;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>abs(val - <span class="s1">LastValue</span>.kr(val)) * 400 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>}.play;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\val</span>, 3);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\val</span>, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\val</span>, 0.2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\val</span>, 1);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.set(<span class="s2">\val</span>, 2);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>d.free;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/LeastChange.html b/Help/UGens/Triggers/LeastChange.html
deleted file mode 100644
index cfb7de5..0000000
--- a/Help/UGens/Triggers/LeastChange.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #3d6d1d}
-span.s5 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>LeastChange </b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>output least changed</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>LeastChange.ar(in1, in2)</b></p>
-<p class="p1"><b>LeastChange.kr(in1, in2)</b></p>
-<p class="p3"><br></p>
-<p class="p1">output the input that changed least</p>
-<p class="p3"><br></p>
-<p class="p1"><b>in1, in2 </b>-<span class="Apple-converted-space">  </span>inputs</p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">see also: <a href="MostChange.html">MostChange</a></span>, <a href="InRange.html">InRange</a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5">d = { <span class="s3">arg</span> amp=1.0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in1, in2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in1 = <span class="s3">LFNoise0</span>.ar(800, amp);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in2 = <span class="s3">SinOsc</span>.ar(800);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">LeastChange</span>.ar(in1, in2) * 0.1;</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">d.set(<span class="s4">\amp</span>, 0.1);</p>
-<p class="p5">d.set(<span class="s4">\amp</span>, 0);</p>
-<p class="p5">d.set(<span class="s4">\amp</span>, 3);</p>
-<p class="p5">d.free;</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>the control that changed least is used as output:</b></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">d = { <span class="s5">arg</span> freq=440;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">var</span> internalFreq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>internalFreq = <span class="s5">LFNoise0</span>.ar(0.3, 300, 800);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">LeastChange</span><span class="s2">.kr(freq, internalFreq) </span>// two sources of change: one external, one internal</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play</p>
-<p class="p5">);</p>
-<p class="p2"><br></p>
-<p class="p5">d.set(<span class="s4">\freq</span>, 800);</p>
-<p class="p5">d.set(<span class="s4">\freq</span>, 900);</p>
-<p class="p5">d.free;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/MostChange.html b/Help/UGens/Triggers/MostChange.html
deleted file mode 100644
index 397493f..0000000
--- a/Help/UGens/Triggers/MostChange.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ff}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0026b4}
-span.s4 {color: #3d6d1d}
-span.s5 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>MostChange </b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>output most changed</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>MostChange.ar(in1, in2)</b></p>
-<p class="p1"><b>MostChange.kr(in1, in2)</b></p>
-<p class="p3"><br></p>
-<p class="p1">output the input that changed most</p>
-<p class="p3"><br></p>
-<p class="p1"><b>in1, in2 </b>-<span class="Apple-converted-space">  </span>inputs</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p4"><span class="s2">see also: <a href="LeastChange.html">LeastChange</a>, <a href="InRange.html">InRange</a></span></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p5">(</p>
-<p class="p5">d = { <span class="s3">arg</span> amp=1.0;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> in1, in2;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in1 = <span class="s3">LFNoise1</span>.ar(800, amp);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>in2 = <span class="s3">SinOsc</span>.ar(800);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">MostChange</span>.ar(in1, in2) * 0.1;</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p3"><br></p>
-<p class="p5">d.set(<span class="s4">\amp</span>, 0.1);</p>
-<p class="p5">d.set(<span class="s4">\amp</span>, 0);</p>
-<p class="p5">d.set(<span class="s4">\amp</span>, 3);</p>
-<p class="p5">d.free;</p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>the control that changed most is used as output:</b></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">d = { <span class="s5">arg</span> freq=440;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">var</span> internalFreq;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>internalFreq = <span class="s5">LFNoise0</span>.ar(0.3, 300, 800);</p>
-<p class="p6"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s5">MostChange</span><span class="s2">.kr(freq, internalFreq) </span>// two sources of change: one external, one internal</p>
-<p class="p5"><span class="Apple-tab-span">	</span>) * 0.1</p>
-<p class="p5">}.play</p>
-<p class="p5">);</p>
-<p class="p2"><br></p>
-<p class="p5">d.set(<span class="s4">\freq</span>, 800);</p>
-<p class="p8"><span class="s2">d.set(</span><span class="s4">\freq</span><span class="s2">, 800); </span>// nothing changed in this input</p>
-<p class="p5">d.set(<span class="s4">\freq</span>, 900);</p>
-<p class="p5">d.free;</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Peak.html b/Help/UGens/Triggers/Peak.html
deleted file mode 100644
index ec47184..0000000
--- a/Help/UGens/Triggers/Peak.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0025b2}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #982316}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0024f8}
-span.s3 {color: #000000}
-span.s4 {color: #0025b2}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Peak<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>track peak signal amplitude</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Peak.ar(in, trig)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Outputs the peak amplitude of the signal received at the input.<span class="Apple-converted-space"> </span></p>
-<p class="p3">When triggered, the maximum output value is reset to the current value.</p>
-<p class="p3"><b>in</b> - input signal.</p>
-<p class="p3"><b>trig</b> - A trigger resets the output value to the current input value.</p>
-<p class="p3">A trigger happens when the signal changes from non-positive to positive.</p>
-<p class="p2"><br></p>
-<p class="p3">Internally, the absolute value of the signal is used, to prevent underreporting the peak value if there is a negative DC offset. To obtain the minimum and maximum values of the signal as is, use the <a href="RunningMin.html"><span class="s2">RunningMin</span></a> and <a href="RunningMax.html"><span class="s2">RunningMax</span></a> UGens.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Peak</span>.ar(<span class="s4">Dust</span>.ar(20), <span class="s4">Impulse</span>.ar(0.4)) * 500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p7">// follow a sine lfo, reset rate controlled by mouse x</p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">Peak</span>.kr(<span class="s4">SinOsc</span>.kr(0.2), <span class="s4">Impulse</span>.kr(<span class="s4">MouseX</span>.kr(0.01, 2, 1))) * 500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/PeakFollower.html b/Help/UGens/Triggers/PeakFollower.html
deleted file mode 100644
index 05b1c21..0000000
--- a/Help/UGens/Triggers/PeakFollower.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #000000}
-span.s4 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>PeakFollower<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>track peak signal amplitude</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PeakFollower.ar(in, decay)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Outputs the peak amplitude of the signal received at the input.<span class="Apple-converted-space"> </span></p>
-<p class="p3">if level is below maximum, the level decreases by the factor given in decay.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>in</b> - input signal.</p>
-<p class="p3"><b>decay</b> - decay factor.</p>
-<p class="p2"><br></p>
-<p class="p3">Internally, the absolute value of the signal is used, to prevent underreporting the peak value if there is a negative DC offset. To obtain the minimum and maximum values of the signal as is, use the <a href="RunningMin.html"><span class="s2">RunningMin</span></a> and <a href="RunningMax.html"><span class="s2">RunningMax</span></a> UGens.</p>
-<p class="p2"><br></p>
-<p class="p4">s.boot;</p>
-<p class="p5"><br></p>
-<p class="p6">// no decay</p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">PeakFollower</span>.ar(<span class="s4">Dust</span>.ar(20, <span class="s4">Line</span>.kr(0, 1, 4)), 1.0) * 1500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p6">// a little decay</p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">PeakFollower</span>.ar(<span class="s4">Dust</span>.ar(20, <span class="s4">Line</span>.kr(0, 1, 4)), 0.999) * 1500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p6">// mouse x controls decay, center of the</p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">var</span> decay;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>decay = <span class="s4">MouseX</span>.kr(0.99, 1.00001).min(1.0);</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">PeakFollower</span>.ar(<span class="s4">Dust</span>.ar(20), decay) * 1500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>);</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p6">// follow a sine lfo, decay controlled by mouse x</p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s4">var</span> decay;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>decay = <span class="s4">MouseX</span>.kr(0, 1.1).min(1.0);</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s3">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s4">PeakFollower</span>.kr(<span class="s4">SinOsc</span>.kr(0.2), decay) * 200 + 500,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-<p class="p8"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Phasor.html b/Help/UGens/Triggers/Phasor.html
deleted file mode 100644
index a2759eb..0000000
--- a/Help/UGens/Triggers/Phasor.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #902a19}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #091fb1}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0018f7}
-span.s4 {color: #091fb1}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Phasor</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>a resettable linear ramp between two levels</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>superclass: UGen</b></p>
-<p class="p3"><br></p>
-<p class="p1">Phasor is a linear ramp between start and end values. When its trigger input crosses from non-positive to positive, Phasor's output will jump to its reset position. Upon reaching the end of its ramp Phasor will wrap back to its start. <b>N.B.</b> Since <b>end</b> is defined as the wrap point, its value is never actually output.</p>
-<p class="p3"><br></p>
-<p class="p1">Phasor is commonly used as an index control with <a href="../Oscillators/BufRd.html"><span class="s3">BufRd</span></a><b> </b>and<b> </b><a href="../Oscillators/BufWr.html"><span class="s3">BufWr</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ar(trig, rate, start, end, resetPos)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(trig, rate, start, end, resetPos)</b></p>
-<p class="p3"><br></p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>trig</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>when triggered, reset value to resetPos (default: 0, Phasor outputs start initially)</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>rate</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the amount of change per sample</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>i.e at a rate of 1 the value of each sample will be 1 greater than the preceding sample</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>start, end</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>start and end points of ramp.<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>resetPos</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>the value to jump to upon receiving a trigger.</p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// phasor controls sine frequency: end frequency matches a second sine wave.</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s4">var</span> trig, rate, x, sr;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>rate = <span class="s4">MouseX</span>.kr(0.2, 2, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.ar(rate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sr = <span class="s4">SampleRate</span>.ir;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s4">Phasor</span>.ar(trig, rate / sr);</p>
-<p class="p6"><span class="s5"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s5">.ar(</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[</p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><span class="s4">LinLin</span><span class="s5">.kr(x, 0, 1, 600, 1000), </span>// convert range from 0..1 to 600..1000</p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1000 </span>// constant second frequency</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>], 0, 0.2)</p>
-<p class="p2"><br></p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// two phasors control two sine frequencies: mouse y controls resetPos of the second</p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s4">var</span> trig, rate, x, sr;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>rate = <span class="s4">MouseX</span>.kr(1, 200, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.ar(rate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>sr = <span class="s4">SampleRate</span>.ir;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s4">Phasor</span>.ar(trig, rate / sr, 0, 1, [0, <span class="s4">MouseY</span>.kr(0, 1)]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SinOsc</span>.ar(x * 500 + 500, 0, 0.2)</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// use phasor to index into a sound file</p>
-<p class="p2"><br></p>
-<p class="p4">// allocate a buffer with a sound file</p>
-<p class="p7"><span class="s5">b = </span><span class="s4">Buffer</span><span class="s5">.read(s, </span>"sounds/a11wlk01.wav"<span class="s5">);</span></p>
-<p class="p2"><br></p>
-<p class="p4">// simple playback (more examples: see BufRd)</p>
-<p class="p4">// Start and end here are defined as 0 and the number of frames in the buffer.</p>
-<p class="p4">// This means that the Phasor will output values from 0 to numFrames - 1 before looping,</p>
-<p class="p4">// which is perfect for driving BufRd. (See note above)</p>
-<p class="p5">{ <span class="s4">BufRd</span>.ar(1, b, <span class="s4">Phasor</span>.ar(0, <span class="s4">BufRateScale</span>.kr(b), 0, <span class="s4">BufFrames</span>.kr(b))) }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// two phasors control two sound file positions: mouse y controls resetPos of the second</p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s4">var</span> trig, rate, framesInBuffer;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>rate = <span class="s4">MouseX</span>.kr(0.1, 100, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s4">Impulse</span>.ar(rate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>framesInBuffer = <span class="s4">BufFrames</span>.kr(b);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>x = <span class="s4">Phasor</span>.ar(trig, <span class="s4">BufRateScale</span>.kr(b), 0, framesInBuffer,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[0, <span class="s4">MouseY</span>.kr(0, framesInBuffer)]);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">BufRd</span>.ar(1, b, x);</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Poll.html b/Help/UGens/Triggers/Poll.html
deleted file mode 100644
index 6d1e6bd..0000000
--- a/Help/UGens/Triggers/Poll.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0019b7}
-span.s4 {color: #326f17}
-span.s5 {color: #606060}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Poll<span class="Apple-tab-span">	</span> <span class="Apple-converted-space">  <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></b></span><b>print the current output value of a UGen</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Poll.ar(trig, in, label, trigid)</b></p>
-<p class="p1"><b>Poll.kr(trig, in, label, trigid)</b></p>
-<p class="p3"><br></p>
-<p class="p4"><b>Usage</b></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>trig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a non-positive to positive transition telling Poll to return a value</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>in<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>the signal you want to poll</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>label<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a string or symbol to be printed with the polled value</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>trigid<span class="Apple-tab-span">	</span></b>if greater then 0, a <b>'/tr' message</b> is sent back to the client (similar to <a href="SendTrig.html"><span class="s2">SendTrig</span></a>)</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b>Poll returns its in signal (and is therefore transparent).<span class="Apple-converted-space"> </span></b></p>
-<p class="p3"><br></p>
-<p class="p1"><b>WARNING: Printing values from the Server in intensive for the CPU. Poll should be used for debugging purposes.</b></p>
-<p class="p5"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// examples:</p>
-<p class="p6"><br></p>
-<p class="p8">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p8">{ <span class="s3">Poll</span>.kr(<span class="s3">Impulse</span>.kr(10), <span class="s3">Line</span>.kr(0, 1, 1), <span class="s4">\test</span>) }.play(s);</p>
-<p class="p6"><br></p>
-<p class="p7">// multichannel expansion:</p>
-<p class="p6"><br></p>
-<p class="p8">{ <span class="s3">Poll</span>.kr(<span class="s3">Impulse</span>.kr([10, 5]), <span class="s3">Line</span>.kr(0, [1, 5], [1, 2]), [<span class="s4">\test</span>, <span class="s4">\test2</span>]) }.play(s);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// using the poll message:</p>
-<p class="p6"><br></p>
-<p class="p8">{ <span class="s3">SinOsc</span>.ar(375, 0, 1).poll(<span class="s3">Impulse</span>.ar(20), <span class="s4">\test2</span>) }.play(s);</p>
-<p class="p6"><br></p>
-<p class="p7">// if no arguments are given, the poll is done every 0.1 sec.</p>
-<p class="p8">{<span class="Apple-converted-space">  </span><span class="s3">Line</span>.kr(0, 1, 1).poll }.play(s);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// send a '/tr' message back to the client. This can be useful if the server runs on another</p>
-<p class="p7">// computer than the client, i.e. the post messages by the server cannot be read locally.</p>
-<p class="p6"><br></p>
-<p class="p8">o = <span class="s3">OSCresponderNode</span>(s.addr, <span class="s4">'/tr'</span>, {<span class="s3">arg</span> time, resp, msg;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>msg.postln;</p>
-<p class="p8"><span class="Apple-tab-span">	</span>}).add</p>
-<p class="p6"><br></p>
-<p class="p8">{<span class="s3">Poll</span>.ar(<span class="s3">Impulse</span>.ar(5), <span class="s3">Line</span>.ar(0, 1, 1), <span class="s4">\test2</span>, 1234)}.play(s);</p>
-<p class="p8">{<span class="s3">SinOsc</span>.ar(220, 0, 1).poll(<span class="s3">Impulse</span>.ar(15), <span class="s5">"test"</span>, 1234)}.play(s);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p8">o.remove;</p>
-<p class="p8">s.quit;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// This example will kill the server (by outputting NaN).</p>
-<p class="p7">// Poll.ar will help us spot why it's happening.</p>
-<p class="p7">// Warning: You may need to reboot your server after running this.</p>
-<p class="p8">(</p>
-<p class="p8">{</p>
-<p class="p8"><span class="s3">var</span> cutoff, son;</p>
-<p class="p8">cutoff = <span class="s3">LFPar</span>.kr(0.2, 0, 500, 500);</p>
-<p class="p8">son = <span class="s3">LPF</span>.ar(<span class="s3">WhiteNoise</span>.ar, cutoff);</p>
-<p class="p6"><br></p>
-<p class="p7">// Using Poll to debug by spitting out a value if the output hits NaN</p>
-<p class="p8"><span class="s3">Poll</span>.ar(if((son<=0)||(son>=0), 0, 1), cutoff, <span class="s5">"Cutoff value which causes NaN:"</span>);</p>
-<p class="p6"><br></p>
-<p class="p8">son;</p>
-<p class="p6"><br></p>
-<p class="p8">}.play(s);</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// This example polls when someone hits the trigger</p>
-<p class="p8">(</p>
-<p class="p9"><span class="s6">x = {</span>|t_poll=0|</p>
-<p class="p8"><span class="s3">var</span> minfreq, maxfreq, son;</p>
-<p class="p8">minfreq = <span class="s3">LFNoise2</span>.ar(0.25, 100, 110);</p>
-<p class="p8">maxfreq = <span class="s3">LFNoise2</span>.ar(0.25, 200, 220);</p>
-<p class="p6"><br></p>
-<p class="p8">son = <span class="s3">Gendy1</span>.ar(minfreq: minfreq, maxfreq: maxfreq, mul: 0.1);</p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s3">Poll</span>.kr(t_poll, [minfreq, maxfreq], [<span class="s5">"minfreq", "maxfreq"</span>]);</p>
-<p class="p6"><br></p>
-<p class="p8">son;</p>
-<p class="p6"><br></p>
-<p class="p8">}.play(s);</p>
-<p class="p8">)</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s6">x.set(</span><span class="s4">\t_poll</span><span class="s6">, 1); </span>// Hit this whenever you want to know what the parameters are</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/PulseCount.html b/Help/UGens/Triggers/PulseCount.html
deleted file mode 100644
index 98568ea..0000000
--- a/Help/UGens/Triggers/PulseCount.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PulseCount<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pulse counter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PulseCount.ar(trig, reset)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Each trigger increments a counter which is output as a signal.</p>
-<p class="p3"><b>trig</b> - trigger. Trigger can be any signal. A trigger happens when the signal changes from</p>
-<p class="p3">non-positive to positive.</p>
-<p class="p3"><b>reset</b> - resets the counter to zero when triggered.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">SynthDef</span><span class="s2">(</span>"help-PulseCount"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">PulseCount</span>.ar(<span class="s1">Impulse</span>.ar(10), <span class="s1">Impulse</span>.ar(0.4)) * 200,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.05</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/PulseDivider.html b/Help/UGens/Triggers/PulseDivider.html
deleted file mode 100644
index 8507b84..0000000
--- a/Help/UGens/Triggers/PulseDivider.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>PulseDivider<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pulse divider</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>PulseDivider.ar(trig, div, startCount)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Outputs one impulse each time it receives a certain number of triggers at its input.</p>
-<p class="p3"><b>trig</b> - trigger. Trigger can be any signal. A trigger happens when the signal changes from</p>
-<p class="p3">non-positive to positive.</p>
-<p class="p3"><b>div</b> - number of pulses to divide by.</p>
-<p class="p3"><b>startCount</b> - starting value for the trigger count. This lets you start somewhere in the middle of a count,</p>
-<p class="p3">or if startCount is negative it adds that many counts to the first time the output is triggers.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">SynthDef</span><span class="s2">(</span>"help-PulseDivider"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> p, a, b;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>p = <span class="s1">Impulse</span>.ar(8);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s1">SinOsc</span>.ar(1200, 0, <span class="s1">Decay2</span>.ar(p, 0.005, 0.1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>b = <span class="s1">SinOsc</span>.ar(600,<span class="Apple-converted-space">  </span>0, <span class="s1">Decay2</span>.ar(<span class="s1">PulseDivider</span>.ar(p, 4), 0.005, 0.5));</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,(a + b) * 0.4)</p>
-<p class="p5">}).play;</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/RunningMax.html b/Help/UGens/Triggers/RunningMax.html
deleted file mode 100644
index 2c1d1c4..0000000
--- a/Help/UGens/Triggers/RunningMax.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>RunningMax<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>track maximum level</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>RunningMax.ar(in, trig)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Outputs the maximum value received at the input.<span class="Apple-converted-space"> </span></p>
-<p class="p3">When triggered, the maximum output value is reset to the current value.</p>
-<p class="p3"><b>in</b> - input signal.</p>
-<p class="p3"><b>trig</b> - A trigger resets the output value to the current input value.</p>
-<p class="p3">A trigger happens when the signal changes from non-positive to positive.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">RunningMax</span>.ar(<span class="s3">Dust</span>.ar(20), <span class="s3">Impulse</span>.ar(0.4)) * 500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p7">// follow a sine lfo, reset rate controlled by mouse x</p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">RunningMax</span>.kr(<span class="s3">SinOsc</span>.kr(0.2), <span class="s3">Impulse</span>.kr(<span class="s3">MouseX</span>.kr(0.01, 2, 1))) * 500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/RunningMin.html b/Help/UGens/Triggers/RunningMin.html
deleted file mode 100644
index d26668a..0000000
--- a/Help/UGens/Triggers/RunningMin.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>RunningMin<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>track minimum level</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><b>RunningMin.ar(in, trig)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3">Outputs the minimum value received at the input.<span class="Apple-converted-space"> </span></p>
-<p class="p3">When triggered, the minimum output value is reset to the current value.</p>
-<p class="p3"><b>in</b> - input signal.</p>
-<p class="p3"><b>trig</b> - A trigger resets the output value to the current input value.</p>
-<p class="p3">A trigger happens when the signal changes from non-positive to positive.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">RunningMin</span>.ar(<span class="s3">Dust</span>.ar(20), <span class="s3">Impulse</span>.ar(0.4)) * 500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-<p class="p7">// follow a sine lfo, reset rate controlled by mouse x</p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="s2"><span class="Apple-tab-span">	</span></span>SinOsc<span class="s2">.ar(</span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">RunningMin</span>.kr(<span class="s3">SinOsc</span>.kr(0.2), <span class="s3">Impulse</span>.kr(<span class="s3">MouseX</span>.kr(0.01, 2, 1))) * 500 + 200,<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p4"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Schmidt.html b/Help/UGens/Triggers/Schmidt.html
deleted file mode 100644
index 038036d..0000000
--- a/Help/UGens/Triggers/Schmidt.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-span.s1 {color: #0000bf}
-span.s2 {color: #bf0000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Schmidt<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Schmidt trigger</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>Schmidt.ar(in, lo, hi)</b></p>
-<p class="p3"><b>Schmidt.kr(in, lo, hi)</b></p>
-<p class="p4"><br></p>
-<p class="p3">When in crosses to greater than hi, output 1.0, then when signal crosses lower than lo output 0.0. Uses the formula if(out == 1, { if(in < lo, { out = 0.0 }) }, { if(in > hi, { out = 1.0 }) }). Output is initially zero.</p>
-<p class="p4"><br></p>
-<p class="p3"><b>in</b> - signal to be tested</p>
-<p class="p3"><b>lo</b> - low threshold</p>
-<p class="p3"><b>hi</b> - high threshold</p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">{ <span class="s1">Schmidt</span>.kr(<span class="s1">SinOsc</span>.kr(1, 0, 0.2), -0.15, 0.15)}.scope; <span class="s2">// see the trigger</span></p>
-<p class="p7"><br></p>
-<p class="p5">{ <span class="s1">Schmidt</span>.kr(<span class="s1">MouseX</span>.kr(0, 1), 0.2, 0.8)}.scope; <span class="s2">// try it with the cursor</span></p>
-<p class="p6"><br></p>
-<p class="p8">// threshold octave jumps</p>
-<p class="p5">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> in = <span class="s1">LFNoise1</span>.kr(3);</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> octave = <span class="s1">Schmidt</span>.kr(in, -0.15, 0.15) + 1;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(in * 200 + 500 * octave, 0, 0.1)</p>
-<p class="p5">}.scope;</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/SendReply.html b/Help/UGens/Triggers/SendReply.html
deleted file mode 100644
index c0c6a43..0000000
--- a/Help/UGens/Triggers/SendReply.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007300}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #004ebd}
-span.s3 {color: #0000ff}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.s6 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SendReply</b></span><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>send an array of values from the server to all notified clients</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>SendReply.kr(trig, cmdName, values, replyID)</b></p>
-<p class="p1"><b>SendReply.ar(trig, cmdName, values, replyID)</b></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>trig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>a non-positive to positive transition triggers a message</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>cmdName<span class="Apple-tab-span">	</span></b>a string or symbol, as a message name.</p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>values<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>array of ugens, or valid ugen inputs</p>
-<p class="p1"><span class="Apple-tab-span">	</span><b>replyID<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>integer id (similar to <a href="SendTrig.html"><span class="s2">SendTrig</span></a>)</p>
-<p class="p3"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><br></p>
-<p class="p1">A message is sent to all notified clients. see <a href="../../ServerArchitecture/Server.html"><span class="s3">Server</span></a><span class="s3"> </span>See also: <a href="SendTrig.html"><span class="s3">SendTrig</span></a>.</p>
-<p class="p3"><br></p>
-<p class="p1"><b>cmdName<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p1"><span class="Apple-tab-span">	</span>int - reply ID</p>
-<p class="p1"><span class="Apple-tab-span">	</span>... floats - values.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s4">SendReply</span>.kr(<span class="s4">Impulse</span>.kr(3), <span class="s5">'the_answer'</span>, [40, 41, 42, 43] + <span class="s4">MouseX</span>.kr, 1905);</p>
-<p class="p5">}.play(s);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">o.remove; o = <span class="s4">OSCresponder</span>(<span class="s4">nil</span>, <span class="s5">'the_answer'</span>, { <span class="s4">|t, r, msg|</span> msg.postln }).add;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">// multichannel expansion</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p8"><span class="s6"><span class="Apple-tab-span">	</span></span>SendReply<span class="s6">.kr(</span>Impulse<span class="s6">.kr(3),<span class="Apple-converted-space"> </span></span></p>
-<p class="p9"><span class="s6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>'the_answer'<span class="s6">,<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>values: [[40, 80], [41, 56], 42, [43, 100, 200]],<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>replyID: [1905, 1906, 1907, 1908]</p>
-<p class="p5"><span class="Apple-tab-span">	</span>);</p>
-<p class="p5">}.play(s);</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/SendTrig.html b/Help/UGens/Triggers/SendTrig.html
deleted file mode 100644
index eaedb26..0000000
--- a/Help/UGens/Triggers/SendTrig.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000ff}
-span.s4 {color: #0000bf}
-span.s5 {color: #007300}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>SendTrig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>send a value from the server to all notified clients</b></p>
-<p class="p2"><br></p>
-<p class="p1">On receiving a trigger (a non-positive to positive transition), send a trigger message from the server back to the client.</p>
-<p class="p3"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>SendTrig.kr( input, id, value )</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>input</b> <span class="Apple-tab-span">	</span>the trigger</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>id</b> <span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>an integer that will be passed with the trigger message.</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>this is useful if you have more than one SendTrig in a SynthDef</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><b>value</b> <span class="Apple-tab-span">	</span>a UGen or float that will be polled at the time of trigger,</p>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>and its value passed with the trigger message</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1">The <b>nodeID</b> is the node that is sending the trigger. The <b>triggerID</b> and <b>value</b> are determined by inputs to the SendTrig unit generator which is the originator of this message.</p>
-<p class="p3"><br></p>
-<p class="p1">The trigger message sent back to the client is this:<span class="Apple-tab-span">	</span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span></p>
-<p class="p1"><b>/tr<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a trigger message</b></p>
-<p class="p1"><span class="Apple-tab-span">	</span>int - node ID</p>
-<p class="p1"><span class="Apple-tab-span">	</span>int - trigger ID</p>
-<p class="p1"><span class="Apple-tab-span">	</span>float - trigger value</p>
-<p class="p3"><br></p>
-<p class="p1">This command is the mechanism that synths can use to trigger events in clients. A message is sent to all notified clients. see <a href="../../ServerArchitecture/Server.html"><span class="s3">Server</span></a><span class="s3">.</span> For sending an array of values, or an arbitrary reply command, see <a href="SendReply.html"><span class="s3">SendReply</span></a></p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">{ <span class="s4">SendTrig</span>.kr(<span class="s4">Dust</span>.kr(1.0),0,0.9) }.play;</p>
-<p class="p4"><br></p>
-<p class="p6">// register to receive this message</p>
-<p class="p5">(</p>
-<p class="p5"><span class="s4">OSCresponder</span>(s.addr,<span class="s5">'/tr'</span>,{ <span class="s4">arg</span> time,responder,msg;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[time,responder,msg].postln;</p>
-<p class="p5">}).add</p>
-<p class="p5">);</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/SetResetFF.html b/Help/UGens/Triggers/SetResetFF.html
deleted file mode 100644
index 0701117..0000000
--- a/Help/UGens/Triggers/SetResetFF.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.44">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #942b17}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {color: #000000}
-span.s2 {color: #001fb3}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>SetResetFF<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>set-reset flip flop</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>SetResetFF.ar(trig, reset)</b></p>
-<p class="p2"><br></p>
-<p class="p3">When a trigger is received the output is set to 1.0</p>
-<p class="p3">Subsequent triggers have no effect</p>
-<p class="p3">When a trigger is received in the reset input, the output is set back to 0.0</p>
-<p class="p3">One use of this is to have some precipitating event cause something to</p>
-<p class="p3">happen until you reset it.</p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>trig</b> - trigger sets output to one</p>
-<p class="p3"><b>reset</b> - trigger resets output to zero</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">play({</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>a = </span><span class="s2">Dust</span><span class="s1">.ar(5); </span>// the set trigger</p>
-<p class="p5"><span class="s1"><span class="Apple-tab-span">	</span>b = </span><span class="s2">Dust</span><span class="s1">.ar(5); </span>// the reset trigger</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s2">SetResetFF</span>.ar(a,b) * <span class="s2">BrownNoise</span>.ar(0.2);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><br></p>
-<p class="p4">})</p>
-<p class="p4">)</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Stepper.html b/Help/UGens/Triggers/Stepper.html
deleted file mode 100644
index dd8fd82..0000000
--- a/Help/UGens/Triggers/Stepper.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {color: #326f17}
-span.s4 {color: #a71e12}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Stepper<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>pulse counter</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Stepper.kr(trig, reset, min, max, step, resetval)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Each trigger increments a counter which is output as a signal. The counter wraps between min and max.</p>
-<p class="p3"><b>trig</b> - trigger. Trigger can be any signal. A trigger happens when the signal changes from</p>
-<p class="p3">non-positive to positive.</p>
-<p class="p3"><b>reset</b> - resets the counter to <b>resetval</b> when triggered.</p>
-<p class="p3"><b>min</b> - minimum value of the counter.</p>
-<p class="p3"><b>max</b> - maximum value of the counter.</p>
-<p class="p3"><b>step</b> - step value each trigger. May be negative.</p>
-<p class="p3"><b>resetval</b> - value to which the counter is reset when it receives a reset trigger. If nil, then this is patched to <b>min</b>.</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">SynthDef</span><span class="s2">(</span>"help-Stepper"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Stepper</span>.kr(<span class="s1">Impulse</span>.kr(10), 0, <span class="s1">4, 16, 1</span>) * 100,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.05</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">SynthDef</span><span class="s2">(</span>"help-Stepper"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Stepper</span>.kr(<span class="s1">Impulse</span>.kr(10), 0, <span class="s1">4, 16, -3</span>) * 100,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.05</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p6"><br></p>
-<p class="p4"><span class="s1">SynthDef</span><span class="s2">(</span>"help-Stepper"<span class="s2">,{ </span><span class="s1">arg</span><span class="s2"> out=0;</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(out,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Stepper</span>.kr(<span class="s1">Impulse</span>.kr(10), 0, <span class="s1">4, 16, 4</span>) * 100,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.05</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p7">///////////////////////////////////////////////////////////////////////////////////</p>
-<p class="p7">//</p>
-<p class="p7">// Using Stepper and BufRd for sequencing</p>
-<p class="p7">//</p>
-<p class="p6"><br></p>
-<p class="p5">s.boot;</p>
-<p class="p6"><br></p>
-<p class="p5">s.sendMsg(<span class="s3">\b_alloc</span>, 10, 128);</p>
-<p class="p6"><br></p>
-<p class="p5">m = #[0,3,5,7,10];</p>
-<p class="p6"><br></p>
-<p class="p5">a = ({rrand(0,15)}.dup(16).degreeToKey(m) + 36).midicps;</p>
-<p class="p5">s.performList(<span class="s3">\sendMsg</span>, <span class="s3">\b_setn</span>, 10, 0, a.size, a);</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p8">SynthDef<span class="s2">(</span><span class="s3">\stepper</span><span class="s2">, {</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">var</span> rate, clock, index, freq, ffreq, env, out, rev, lfo;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>rate = <span class="s1">MouseX</span>.kr(1,5,1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>clock = <span class="s1">Impulse</span>.kr(rate);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>env = <span class="s1">Decay2</span>.kr(clock, 0.002, 2.5);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>index = <span class="s1">Stepper</span>.kr(clock, 0, 0, 15, 1, 0);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s1">BufRd</span>.kr(1, 10, index, 1, 1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>freq = <span class="s1">Lag2</span>.kr(freq) + [0,0.3];</p>
-<p class="p5"><span class="Apple-tab-span">	</span>ffreq = <span class="s1">MouseY</span>.kr(80,1600,1) * (env * 4 + 2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s1">Mix</span>.ar(<span class="s1">LFPulse</span>.ar(freq * [1, 3/2, 2], 0, 0.3));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s1">RLPF</span>.ar(out, ffreq, 0.3, env);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s1">RLPF</span>.ar(out, ffreq, 0.3, env);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = out * 0.02;</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// echo</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s1">CombL</span>.ar(out, 1, 0.66/rate, 2, 0.8, out);<span class="Apple-tab-span">	</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// reverb</p>
-<p class="p5"><span class="Apple-tab-span">	</span>rev = out;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>5.do { rev = <span class="s1">AllpassN</span>.ar(rev, 0.05, {0.05.rand}.dup, rrand(1.5,2.0)) };</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = out + (0.3 * rev);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s1">LeakDC</span>.ar(out);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// flanger</p>
-<p class="p5"><span class="s4"><span class="Apple-tab-span">	</span></span>lfo = <span class="s1">SinOsc</span>.kr(0.2, [0,0.5pi], 0.0024, 0.0025);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>1.do { out = <span class="s1">DelayL</span>.ar(out, 0.1, <span class="s1">lfo</span>, 1, out) };</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s2"><span class="Apple-tab-span">	</span></span>// slight bass emphasis</p>
-<p class="p5"><span class="Apple-tab-span">	</span>out = <span class="s1">OnePole</span>.ar(out, 0.9);</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s1">Out</span>.ar(0, out);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5">}).send(s);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">s.sendMsg(<span class="s3">\s_new</span>, <span class="s3">\stepper</span>, 1000, 0, 0);</p>
-<p class="p6"><br></p>
-<p class="p5">a = ({rrand(0,15)}.dup(16).degreeToKey(m) + 38).midicps;</p>
-<p class="p5">s.performList(<span class="s3">\sendMsg</span>, <span class="s3">\b_setn</span>, 10, 0, a.size, a);</p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s2">a = a * 2.midiratio; </span>// transpose up 2 semitones</p>
-<p class="p5">s.performList(<span class="s3">\sendMsg</span>, <span class="s3">\b_setn</span>, 10, 0, a.size, a);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">a = [ 97.999, 195.998, 523.251, 466.164, 195.998, 233.082, 87.307, 391.995, 87.307, 261.626, 195.998, 77.782, 233.082, 195.998, 97.999, 155.563 ];</p>
-<p class="p5">s.performList(<span class="s3">\sendMsg</span>, <span class="s3">\b_setn</span>, 10, 0, a.size, a);</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">s.sendMsg(<span class="s3">\n_free</span>, 1000);</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Sweep.html b/Help/UGens/Triggers/Sweep.html
deleted file mode 100644
index fc8f7e9..0000000
--- a/Help/UGens/Triggers/Sweep.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #0000bf}
-span.s4 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Sweep</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>triggered linear ramp</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: UGen</p>
-<p class="p3"><b></b><br></p>
-<p class="p1">starts a linear raise by rate/sec from zero when trig input crosses from non-positive to positive<span class="Apple-converted-space"> </span></p>
-<p class="p3"><b></b><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ar(trig, rate)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(trig, rate)</b></p>
-<p class="p3"><b></b><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4">// using sweep to modulate sine frequency</p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s3">var</span> trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s3">Impulse</span>.kr(<span class="s3">MouseX</span>.kr(0.5, 20, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(<span class="s3">Sweep</span>.kr(trig, 700) + 500, 0, 0.2)</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// using sweep to index into a buffer</p>
-<p class="p2"><br></p>
-<p class="p6"><span class="s4">s.sendMsg(</span>"/b_allocRead"<span class="s4">, 0, </span>"sounds/a11wlk01.wav"<span class="s4">);</span></p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s3">var</span> trig;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s3">Impulse</span>.kr(<span class="s3">MouseX</span>.kr(0.5, 10, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BufRd</span>.ar(1, 0, <span class="s3">Sweep</span>.ar(trig, <span class="s3">BufSampleRate</span>.ir(0)))</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p4">// backwards, variable offset</p>
-<p class="p2"><br></p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s3">var</span> trig, pos, rate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s3">Impulse</span>.kr(<span class="s3">MouseX</span>.kr(0.5, 10, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>rate = <span class="s3">BufSampleRate</span>.ir(0);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>pos = <span class="s3">Sweep</span>.ar(trig, rate.neg) + (<span class="s3">BufFrames</span>.ir(0) * <span class="s3">LFNoise0</span>.kr(0.2));</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BufRd</span>.ar(1, 0, pos)</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">// raising rate</p>
-<p class="p5">(</p>
-<p class="p5">{ <span class="s3">var</span> trig, rate;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s3">Impulse</span>.kr(<span class="s3">MouseX</span>.kr(0.5, 10, 1));</p>
-<p class="p5"><span class="Apple-tab-span">	</span>rate = <span class="s3">Sweep</span>.kr(trig, 2) + 0.5;</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">BufRd</span>.ar(1, 0, <span class="s3">Sweep</span>.ar(trig, <span class="s3">BufSampleRate</span>.ir(0) * rate))</p>
-<p class="p5">}.play;</p>
-<p class="p5">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/TChoose.html b/Help/UGens/Triggers/TChoose.html
deleted file mode 100644
index ca14f1b..0000000
--- a/Help/UGens/Triggers/TChoose.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0037ad; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000ff}
-span.s3 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TChoose<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>randomly select one of several inputs</b></p>
-<p class="p2"><br></p>
-<p class="p1">superclass: Object (TChoose returns a combination of <a href="../Multichannel/Select.html"><span class="s2">Select</span></a> and <a href="../Random/TIRand.html"><span class="s2">TIRand</span></a>)</p>
-<p class="p3"><br></p>
-<p class="p1">An output is selected randomly on recieving a trigger from an array of inputs.</p>
-<p class="p3"><br></p>
-<p class="p1">see also: <a href="TWChoose.html"><span class="s2">TWChoose</span></a></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ar(trig,array)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(trig,array)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{<span class="Apple-converted-space"> </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">var</span> a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = [</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Saw</span>.ar,</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pulse</span>.ar</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s3">TChoose</span>.ar(<span class="s3">Dust</span>.ar(<span class="s3">MouseX</span>.kr(1, 1000, 1)), a) * 0.2</p>
-<p class="p5"><span class="Apple-tab-span">	</span></p>
-<p class="p4">}.play;</p>
-<p class="p4">)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">Note: all the ugens are continously running. This may not be the most efficient way if each input is<span class="Apple-converted-space">  </span>cpu-expensive.</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/TDelay.html b/Help/UGens/Triggers/TDelay.html
deleted file mode 100644
index cf92d94..0000000
--- a/Help/UGens/Triggers/TDelay.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>TDelay<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trigger delay</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>TDelay.ar(trigger, delayTime)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Delays a trigger by a given time. Any triggers which arrive in the time between</p>
-<p class="p3">an input trigger and its delayed output, are ignored.</p>
-<p class="p3"><b>trigger</b> - input trigger signal.</p>
-<p class="p3"><b>delayTime</b> - delay time in seconds.</p>
-<p class="p4"><br></p>
-<p class="p4"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>z = <span class="s1">Impulse</span>.ar(2);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[z * 0.1, <span class="s1">ToggleFF</span>.ar(<span class="s1">TDelay</span>.ar(z, 0.5)) * <span class="s1">SinOsc</span>.ar(mul: 0.1)]</p>
-<p class="p5">}.scope)</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/TWChoose.html b/Help/UGens/Triggers/TWChoose.html
deleted file mode 100644
index b60278d..0000000
--- a/Help/UGens/Triggers/TWChoose.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.35">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0037ad; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0037ad}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0038f8}
-span.s3 {color: #0037ad}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TWChoose<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>randomly select one of several inputs</b></p>
-<p class="p2"><br></p>
-<p class="p3"><br></p>
-<p class="p1">An output is selected randomly on recieving a trigger from an array of inputs.</p>
-<p class="p1">the <b>weights</b> of this choice are determined from the weights array.</p>
-<p class="p1">If <b>normalize</b> is set to 1 the weights are continuously normalized (this is an extra overhead)</p>
-<p class="p1"><span class="Apple-tab-span">	</span>when using fixed values the <b>normalizeSum</b> method can be used to normalize the values</p>
-<p class="p3"><br></p>
-<p class="p1">superclass: Object (TWChoose is a composite of <a href="TWindex.html"><span class="s2">TWindex</span></a> and <a href="../Multichannel/Select.html"><span class="s2">Select</span></a><span class="s2"> )</span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*ar(trig,array,weights,normalize)</b></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(trig,array,weights,normalize)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p5">{<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = [</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Saw</span>.ar,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s3">Pulse</span>.ar</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>];</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s3">TWChoose</span>.ar(<span class="s3">Dust.ar(MouseX.kr(1, 1000, 1))</span>, a, [0.99, 0.05, 0.05].normalizeSum) * 0.2</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5">}.play;</p>
-<p class="p4">)</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p1">Note: all the ugens are continously running. This may not be the most efficient way if each input is<span class="Apple-converted-space">  </span>cpu-expensive.</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/TWindex.html b/Help/UGens/Triggers/TWindex.html
deleted file mode 100644
index ad4740c..0000000
--- a/Help/UGens/Triggers/TWindex.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0000bf; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #0000bf}
-span.s3 {color: #606060}
-span.s4 {color: #bf0000}
-span.s5 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>TWindex<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>triggered windex</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p1"><b><span class="Apple-tab-span">	</span>*kr(trig,array,normalize)</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p1">When triggered, returns a random index value based on array as a list of probabilities.</p>
-<p class="p1">by default the list of probabilities should sum to 1.0, when the normalize flag is set to 1,</p>
-<p class="p1">the values get normalized by the ugen (less efficient)</p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><br></p>
-<p class="p4">//assuming normalized values</p>
-<p class="p5">(</p>
-<p class="p6"><br></p>
-<p class="p5">a = <span class="s2">SynthDef</span>(<span class="s3">"help-TWindex"</span>,{ <span class="s2">arg</span> w1=0.0, w2=0.5, w3=0.5;</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig, index;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>index = <span class="s2">TWindex</span>.kr(trig, [w1, w2, w3]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Select</span>.kr(index,[400, 500, 600]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p6"><br></p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">a.setn(0, [0,0,1].normalizeSum);</p>
-<p class="p5">a.setn(0, [1,1,1].normalizeSum);</p>
-<p class="p5">a.setn(0, [1,0,1].normalizeSum);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p4">//modulating probability values</p>
-<p class="p5">(</p>
-<p class="p6"><br></p>
-<p class="p5">a = <span class="s2">SynthDef</span>(<span class="s3">"help-TWindex"</span>,{ <span class="s2">arg</span> w1=0.0, w2=0.5;</p>
-<p class="p6"><br></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">var</span> trig, index;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>trig = <span class="s2">Impulse</span>.kr(6);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>index = <span class="s2">TWindex</span>.kr(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>trig,<span class="Apple-converted-space"> </span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>[w1, w2, <span class="s2">SinOsc</span>.kr(0.3, 0, 0.5, 0.5)],<span class="s4">//modulate probability</span></p>
-<p class="p4"><span class="s5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>1 </span>//do normalisation</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s2">Out</span>.ar(0,</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">SinOsc</span>.ar(</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s2">Select</span>.kr(index,[400, 500, 600]),</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0, 0.2</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>)</p>
-<p class="p5"><span class="Apple-tab-span">	</span>)</p>
-<p class="p5">}).play;</p>
-<p class="p6"><br></p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">a.setn(0, [0,0]);</p>
-<p class="p5">a.setn(0, [1,1]);</p>
-<p class="p5">a.setn(0, [1,0]);</p>
-<p class="p5">a.setn(0, [0,1]);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Timer.html b/Help/UGens/Triggers/Timer.html
deleted file mode 100644
index 76a4b2c..0000000
--- a/Help/UGens/Triggers/Timer.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001bb9}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {font: 9.0px Monaco}
-span.s3 {color: #000000}
-span.s4 {color: #0021e7}
-span.s5 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>Timer</b></span><span class="s2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span><b>ugen that returns time since last triggered</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s3"><b>Inherits from: </b><a href="../../Core/Object.html"><b>Object</b></a></span><b> : </b><a href="../../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a><b> : </b><a href="../UGen.html"><span class="s4"><b>UGen</b></span></a></p>
-<p class="p4"><br></p>
-<p class="p1"><b>Timer.ar(trig)</b></p>
-<p class="p1"><b>Timer.kr(trig)</b></p>
-<p class="p4"><br></p>
-<p class="p1">Timer returns time since last triggered. A trigger occurs when trig signal crosses from non-positive to positive.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p5">// using timer to modulate sine frequency: the slower the trigger is the higher the frequency</p>
-<p class="p6">(</p>
-<p class="p6">{ <span class="s5">var</span> trig;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>trig = <span class="s5">Impulse</span>.kr(<span class="s5">MouseX</span>.kr(0.5, 20, 1));</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s5">SinOsc</span>.ar(<span class="s5">Timer</span>.kr(trig) * 500 + 500, 0, 0.2)</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/ToggleFF.html b/Help/UGens/Triggers/ToggleFF.html
deleted file mode 100644
index 28a3f7e..0000000
--- a/Help/UGens/Triggers/ToggleFF.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ToggleFF<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>toggle flip flop</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>ToggleFF.ar(trig)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Toggles between zero and one upon receiving a trigger.</p>
-<p class="p3"><b>trig</b> - trigger input</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">play({</p>
-<p class="p4"><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar((<span class="s1">ToggleFF</span>.ar(<span class="s1">Dust</span>.ar(<span class="s1">XLine</span>.kr(1,1000,60))) * 400) + 800, 0, 0.1)</p>
-<p class="p4">}))</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Trig.html b/Help/UGens/Triggers/Trig.html
deleted file mode 100644
index 3d540e8..0000000
--- a/Help/UGens/Triggers/Trig.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Trig<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timed trigger</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>Trig.ar(trig, dur)</b></p>
-<p class="p3"><b>Trig.kr(trig, dur)</b></p>
-<p class="p2"><br></p>
-<p class="p3">When a nonpositive to positive transition occurs at the input, Trig outputs the level of the triggering input for the specified duration, otherwise it outputs zero.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>trig</b> - trigger. Trigger can be any signal. A trigger happens when the signal changes from non-positive to positive.</p>
-<p class="p3"><b>dur</b> - duration of the trigger output. (Default 0.1)</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s1">Trig</span>.ar(<span class="s1">Dust</span>.ar(1), 0.2) * <span class="s1">FSinOsc</span>.ar(800, 0, 0.5) }.play</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s1">Trig</span>.ar(<span class="s1">Dust</span>.ar(4), 0.1) }.play</p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s1">Trig</span>.kr(<span class="s1">Impulse</span>.kr(4), <span class="s1">MouseX</span>.kr(0, 0.25)) * <span class="s1">FSinOsc</span>.ar(#[800, 808], 0, 0.5) }.play</p>
-</body>
-</html>
diff --git a/Help/UGens/Triggers/Trig1.html b/Help/UGens/Triggers/Trig1.html
deleted file mode 100644
index b01eb98..0000000
--- a/Help/UGens/Triggers/Trig1.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.33">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Helvetica; min-height: 11.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #001bb9}
-span.s1 {color: #001bb9}
-span.s2 {color: #606060}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>Trig1<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>timed trigger</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>Trig1.ar(in, dur)</b></p>
-<p class="p3"><b>Trig1.kr(in, dur)</b></p>
-<p class="p2"><br></p>
-<p class="p3">When a nonpositive to positive transition occurs at the input, Trig outputs 1.0 for the specified duration, otherwise it outputs zero.</p>
-<p class="p2"><br></p>
-<p class="p3"><b>trig</b> - trigger. Trigger can be any signal. A trigger happens when the signal changes from non-positive to positive.</p>
-<p class="p3"><b>dur</b> - duration of the trigger output. (Default 0.1)</p>
-<p class="p4"><br></p>
-<p class="p5"><br></p>
-<p class="p6">{ <span class="s1">Trig1</span>.ar(<span class="s1">Dust</span>.ar(1), 0.2) * <span class="s1">FSinOsc</span>.ar(800, 0, 0.5) }.play</p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p3">To create a fixed duration gate</p>
-<p class="p6">(</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s1">SynthDef</span>(<span class="s2">"trig1"</span>,{ arg dt = 0.125;</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> gate;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>gate = <span class="s1">Trig1</span>.kr(1.0, dt);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>Offset<span class="s1">Out</span>.ar(0,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(800, 0.3)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* EnvGen.kr(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>Env([0,0.1,0.1,0],[0.01,1.0,0.01],[-4,4],2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gate,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).send(s);</p>
-<p class="p5"><br></p>
-<p class="p7">Routine<span class="s3">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.0.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>100.do({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(0.05,["s_new", <span class="s2">"trig1"</span> ,-1,0,0,0,rrand(0.02,0.25)]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p7"><span class="s3">}).play(</span>SystemClock<span class="s3">)</span></p>
-<p class="p5"><br></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-<p class="p3"><b>This should sound like a continous sine wave, although it is actually a series of 0.25 second synths.</b></p>
-<p class="p6">(</p>
-<p class="p7">SynthDef<span class="s3">(</span><span class="s2">"trig1"</span><span class="s3">,{</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s1">var</span> gate;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>gate = <span class="s1">Trig1</span>.kr(1.0, 0.25);</p>
-<p class="p7"><span class="s3"><span class="Apple-tab-span">	</span></span>OffsetOut<span class="s3">.ar(0,</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">SinOsc</span>.ar(800, 0.3)<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>* <span class="s1">EnvGen</span>.kr(</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">Env</span>([0,0.1,0.1,0],[0.01,1.0,0.01],[-4,4],2),</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>gate,</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>doneAction: 2)</p>
-<p class="p6"><span class="Apple-tab-span">	</span>)</p>
-<p class="p6">}).send(s);</p>
-<p class="p5"><br></p>
-<p class="p7">Routine<span class="s3">({</span></p>
-<p class="p6"><span class="Apple-tab-span">	</span>1.0.wait;</p>
-<p class="p6"><span class="Apple-tab-span">	</span>100.do({</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>s.sendBundle(0.05,[<span class="s2">"s_new"</span>, <span class="s2">"trig1"</span> ,-1]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>0.25.wait</p>
-<p class="p6"><span class="Apple-tab-span">	</span>})</p>
-<p class="p7"><span class="s3">}).play(</span>SystemClock<span class="s3">)</span></p>
-<p class="p5"><br></p>
-<p class="p6">)</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/UGen.html b/Help/UGens/UGen.html
deleted file mode 100644
index 9b054c1..0000000
--- a/Help/UGens/UGen.html
+++ /dev/null
@@ -1,361 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="1038.25">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Trebuchet MS'; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000}
-p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000bf; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #bf0000; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0000bf}
-span.s4 {text-decoration: underline}
-span.s5 {color: #0000bf}
-span.s6 {color: #007300}
-span.s7 {color: #bf0000}
-span.s8 {text-decoration: underline ; color: #0000bf}
-span.s9 {color: #0000bf}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>UGen<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>abstract superclass of all unit generators</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Inherits from: </b><a href="../Core/Object.html"><b>Object</b></a></span><span class="s3"><b> </b></span><span class="s2"><b>: </b><a href="../Core/Kernel/AbstractFunction.html"><b>AbstractFunction</b></a></span></p>
-<p class="p2"><br></p>
-<p class="p4">UGens represent calculations with signals. They are the basic building blocks of synth definitions on the server, and are used to generate or process both audio and control signals. The many subclasses of UGen are the client-side representations of unit generators, and are used to specify their parameters when constructing synth definitions (see <a href="../ServerArchitecture/SynthDef.html"><span class="s3">SynthDef</span></a>).<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>See also:</b> <a href="UGens.html"><span class="s4">UGens</span></a>, <a href="Tour_of_UGens.html"><span class="s4">Tour_of_UGens</span></a>, and <a href="../Tutorials/UGens-and-Synths.html"><span class="s4">UGens-and-Synths</span></a>.</span></p>
-<p class="p2"><br></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p1"><b>Class Methods</b></p>
-<p class="p5"><br></p>
-<p class="p4"><b>*ar(arg1, arg2, ... )</b></p>
-<p class="p4"><b>*kr(arg1, arg2, ... )</b></p>
-<p class="p4"><b>*ir(arg1, arg2, ... )</b></p>
-<p class="p2"><br></p>
-<p class="p4">Return a new instance of UGen that calculates at <b>audio/control rate</b> or at <b>initialization only </b>(ir). Some UGens, like <a href="Random/Rand.html"><span class="s3">Rand</span></a>, use the *new method instead. These methods are implemented in subclasses, where argument names and their meaning depend on the case. If any argument is an <b>array</b>, they return an array of UGens (see: <a href="../Other Topics/MultiChannel.html"><span class="s3">MultiChannelExpansion</span></a>). If the combination of rates between arguments and ugen are not allowed, calling the methods will throw an error. This method adds the UGen to the current <a href="../ServerArchitecture/SynthDef.html"><span class="s3">SynthDef</span></a>, so it<span class="Apple-converted-space">  </span>only fully works inside a UGen function.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">Blip</span>.ar(<span class="s3">Blip</span>.kr(4, 5, 500, 60), 59, 0.1) }.play;</p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>*buildSynthDef</b></p>
-<p class="p2"><br></p>
-<p class="p4">Return the SynthDef in which the UGen is situated.</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s5">UGen.</span>buildSynthDef.dump; Silent.ar }.play;</p>
-<p class="p7"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>Note: </b>For internally used class methods, see below.</p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p5"><br></p>
-<p class="p1"><b>Documentation of mul and add arguments</b></p>
-<p class="p2"><br></p>
-<p class="p4">A great number of UGens take arguments for <b>mul</b> and <b>add</b> in their <b>*ar</b> and <b>*kr </b>methods. Because these arguments are so ubiquitous, they are not general documented in the individual help files. Mul and add simply refer to a constant or signal by which to multiply the output of the UGen, and a constant or signal to add to the output of the UGen. (<b>mul</b> happens before <b>add</b>.) They thus correspond in many cases to scaling the amplitude of the UGen signal in the case of <b>mul</b>, and adding a constant or DC offset in the case of <b>add</b>. In most cases the defaults for mul and add are 1 and 0 respectively, and they are commonly implemented using a automatically generated <a href="Filters/MulAdd.html"><span class="s3">MulAdd</span></a> UGen for efficiency. See also the <b>range</b> and <b>madd</b> methods below.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Convenience Methods</b></p>
-<p class="p8"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>scope(name, bufsize, zoom)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Displays the output of this UGen in an individual <a href="../GUI/Main-GUI/Stethoscope.html"><span class="s3">Stethoscope</span></a><b> </b>window. <b>name</b> is the name of the window.</p>
-<p class="p2"><br></p>
-<p class="p9"><span class="s3">Server</span><span class="s2">.default = s = </span><span class="s3">Server</span><span class="s2">.internal.boot; </span>// scope works only for internal server</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s3">Ringz</span>.ar(<span class="s3">PinkNoise</span>.ar([0.1, 0.2]).scope(<span class="s6">\pink</span>), 2000, 1, 0.25) }.play; <span class="s7">// multichannel works</span></p>
-<p class="p9"><span class="s2">s.scope; </span>// can still separately scope the output of the server</p>
-<p class="p7"><br></p>
-<p class="p9"><span class="s3">Server</span><span class="s2">.default = s = </span><span class="s3">Server</span><span class="s2">.local.boot; </span>// switch back to local server.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>poll(trig, label, trigid)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">Polls the output of this UGen every <b>interval</b> seconds, and posts the result. The default <b>trig </b>is 10, which converts to 10 triggers per second (or every 0.1 seconds). See <a href="Triggers/Poll.html"><span class="s3">Poll</span></a> for more info on polling.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(<span class="s3">LFNoise0</span>.ar(2).range(420, 460).poll(label: <span class="s6">\LFNoise</span>), 0, 0.2) }.play;</p>
-<p class="p7"><br></p>
-<p class="p9">// multichannel polling:</p>
-<p class="p6">(</p>
-<p class="p6">{<span class="Apple-converted-space"> </span></p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">var</span> freqs = <span class="s3">SinOsc</span>.ar([0.2, 0.3]).range(420, 460);</p>
-<p class="p6"><span class="Apple-tab-span">	</span>freqs.poll(label: [<span class="s6">\freq1</span>, <span class="s6">\freq2</span>]);</p>
-<p class="p6"><span class="Apple-tab-span">	</span><span class="s3">SinOsc</span>.ar(freqs, 0, 0.2);</p>
-<p class="p6">}.play;</p>
-<p class="p6">)</p>
-<p class="p7"><br></p>
-<p class="p4"><b>dpoll(trig, label, trigid)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4">Like poll, only that <b>dpoll</b> is used for Demand ugens. See <a href="Triggers/Poll.html"><span class="s5">Poll</span></a> for more info on polling.</p>
-<p class="p7"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>range(lo, hi)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Scales the output of this UGen to be within the range of <b>lo</b> and <b>hi</b>. Note that 'range' expects the default output range, and thus should not be used in conjunction with <b>mul</b> and <b>add</b> arguments.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.ar(0.3).range(440, 660), 0, 0.5) * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>exprange(lo, hi)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Maps the output of this UGen exponentially to be within the range of <b>lo</b> and <b>hi</b> using a <a href="Filters/LinExp.html"><span class="s3">LinExp</span></a> UGen. <b>lo</b> and <b>hi</b> should both be non-zero and have the same sign. Note that 'exprange' expects the default output range, and thus should not be used in conjunction with <b>mul</b> and <b>add</b> arguments.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(<span class="s3">SinOsc</span>.ar(0.3).exprange(440, 6600), 0, 0.5) * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>unipolar(mul)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Scales the output of this UGen to be between <b>(0..mul)</b> range (default 1). Note that 'unipolar' expects the default output range, and thus should not be used in conjunction with <b>mul</b> and <b>add</b> arguments.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(300, 0, 0.5) * <span class="s3">SinOsc</span>.kr(2).unipolar * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>bipolar(mul)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Scales the output of this UGen to be between <b>(-mul..mul)</b> range (default 1). Note that 'bipolar' expects the default output range, and thus should not be used in conjunction with <b>mul</b> and <b>add</b> arguments.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(500 + <span class="s3">LFPulse</span>.ar(4).bipolar(40), 0, 0.5) * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>clip(lo, hi)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Filters/Clip.html"><span class="s3">Clip</span></a><b> </b>UGen, clipping its output at <b>lo</b> and <b>hi</b>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>fold(lo, hi)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Filters/Fold.html"><span class="s3">Fold</span></a><b> </b>UGen, folding its output at <b>lo</b> and <b>hi</b>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>wrap(lo, hi)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Filters/Wrap.html"><span class="s3">Wrap</span></a><b> </b>UGen, wrapping its output at <b>lo</b> and <b>hi</b>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>lag(lagTime, t2)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Filters/Lag.html"><span class="s3">Lag</span></a><b> </b>UGen, smoothing its output by lagTime. If a second argument is given, it wraps it in a <a href="Filters/LagUD.html"><span class="s3">LagUD</span></a><span class="s3"> </span>UGen. Default lag time: 0.1.</p>
-<p class="p10"><br></p>
-<p class="p4"><b>lag2(lagTime, t2)</b></p>
-<p class="p10"><br></p>
-<p class="p4">Wraps the receiver in a<span class="Apple-converted-space"> </span><a href="Filters/LagUD.html"><span class="s8"> </span></a><a href="Filters/Lag2.html"><span class="s3">Lag2</span></a><b> </b>UGen, smoothing its output by lagTime. If a second argument is given, it wraps it in a <a href="Filters/Lag2UD.html"><span class="s3">Lag2UD</span></a><span class="s3"> </span>UGen. Default lag time: 0.1.</p>
-<p class="p10"><br></p>
-<p class="p4"><b>lag3(lagTime, t2)</b></p>
-<p class="p10"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Filters/Lag3.html"><span class="s3">Lag3</span></a><b> </b>UGen, smoothing its output by lagTime. If a second argument is given, it wraps it in a <a href="Filters/Lag3UD.html"><span class="s3">Lag3UD</span></a><span class="s3"> </span>UGen. Default lag time: 0.1.</p>
-<p class="p10"><br></p>
-<p class="p4"><b>lagud(lagTimeU, lagTimeD)</b></p>
-<p class="p10"><br></p>
-<p class="p4">Wraps the receiver in a<span class="Apple-converted-space"> </span><a href="Filters/Lag3UD.html"><span class="s8"> </span></a><a href="Filters/LagUD.html"><span class="s3">LagUD</span></a><b> </b>UGen, smoothing its output by lagtimeU and lagtimeD. Default lag time: 0.1.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>lag2ud(lagtimeU,lagtimeD)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Filters/Lag2UD.html"><span class="s3">Lag2UD</span></a><b> </b>UGen, smoothing its output by lagtimeU and lagtimeD. Default lag time: 0.1.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>lag3ud(lagtimeU, lagtimeD)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Filters/Lag3UD.html"><span class="s3">Lag3UD</span></a><b> </b>UGen, smoothing its output by lagtimeU and lagtimeD. Default lag time: 0.1.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>degreeToKey(scale, stepsPerOctave)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Synth control/DegreeToKey.html"><span class="s3">DegreeToKey</span></a><b> </b>UGen. The default <b>stepsPerOctave</b> is 12.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>minNyquist</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="../BinaryOps/min.html"><span class="s3">min</span></a><b> </b>UGen, such that the lesser of the receiver's output and the Nyquist frequency is output. This can be useful to prevent aliasing.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>linlin(inMin, inMax, outMin, outMax, clip)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver so that a linear inputrange is mapped to a linear output range.<span class="Apple-converted-space"> </span></p>
-<p class="p4">The <b>clip</b> argument can be one of the four:<span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>nil</b> (do not clip at outMin or outMax),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>\minmax</b> (clip at outMin or outMax),<span class="Apple-converted-space"> </span></p>
-<p class="p4"><b>\min</b> (clip at outMin),</p>
-<p class="p4"><b>\max </b>(clip at outMax)</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">Line</span>.ar(-1, 5, 0.1).linlin(0, 3, -1, 1) }.plot(0.1);</p>
-<p class="p11"><br></p>
-<p class="p9">// modulate some values</p>
-<p class="p9">(</p>
-<p class="p6">{ <span class="s3">Line</span>.ar(-1, 5, 0.1).lincurve(<span class="s3">SinOsc</span>.ar(100), <span class="s3">SinOsc</span>.ar(130) + 3, -1, 1, clip: nil) }</p>
-<p class="p6"><span class="Apple-tab-span">	</span>.plot(0.1, minval: -15, maxval: 5)</p>
-<p class="p6">)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>linexp(inMin, inMax, outMin, outMax, clip)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver so that a linear inputrange is mapped to an exponential output range.</p>
-<p class="p4">outMin and outMax must be nonzero and of the same sign. For <b>clip </b>argument, see <b>linlin</b>.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">Line</span>.ar(-1, 5, 0.1).linexp(0, 3, 0.01, 1) }.plot(0.1);</p>
-<p class="p2"><br></p>
-<p class="p4"><b>explin(inMin, inMax, outMin, outMax, clip)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver so that an exponential inputrange is mapped to a linear output range.</p>
-<p class="p4">inMin and inMax must be nonzero and of the same sign. For <b>clip </b>argument, see <b>linlin</b>.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">Line</span>.ar(1, 5, 0.1).explin(1, 3, -1, 1) }.plot(0.1);</p>
-<p class="p2"><br></p>
-<p class="p4"><b>expexp(inMin, inMax, outMin, outMax, clip)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver so that an exponential inputrange is mapped to an exponential output range.</p>
-<p class="p4">outMin, outMax, inMin and inMax must be nonzero and of the same sign. For <b>clip </b>argument, see <b>linlin</b>.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">Line</span>.ar(1, 5, 0.1).expexp(1, 3, 0.01, 1) }.plot(0.1);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>lincurve(inMin, inMax, outMin, outMax, curve, clip)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver so that a linear inputrange is mapped to a curve-like exponential output range.</p>
-<p class="p4">outMin and outMax may be zero and of the different sign. For <b>clip </b>argument, see <b>linlin</b>.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">Line</span>.ar(-1, 5, 0.1).lincurve(0, 3, -1, 1, curve: -4) }.plot(0.1);</p>
-<p class="p7"><br></p>
-<p class="p9">// modulate the curve. Unlike with numbers and CurveSpec, the curve absolute value<span class="Apple-converted-space"> </span></p>
-<p class="p9">// should not be much smaller than 0.5.</p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(100).lincurve(-1, 1, -1, 1, <span class="s3">XLine</span>.kr(-3, -100, 0.1)) * 0.1 }.plot(0.1);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>curvelin(inMin, inMax, outMin, outMax, curve, clip)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver so that a<span class="Apple-converted-space">  </span>curve-like exponential inputrange is mapped to a linear output range.</p>
-<p class="p4">inMin and inMax<span class="Apple-converted-space">  </span>may be zero and of the different sign.<span class="Apple-converted-space">  </span>For <b>clip </b>argument, see <b>linlin</b>.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">Line</span>.ar(-1, 5, 0.1).curvelin(0, 3, -1, 1, curve: -4) }.plot(0.1);</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>prune(min, max, clip)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Limits the receiver range to one of the four <b>clip</b> modes (see <b>linlin</b>)</p>
-<p class="p2"><br></p>
-<p class="p4"><b>checkBadValues(id, post)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Info/CheckBadValues.html"><span class="s3">CheckBadValues</span></a> UGen with the corresponding id and post flag.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>if(trueUGen, falseUGen)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Outputs <b>trueUGen</b> when the receiver outputs 1, <b>falseUGen</b> when the receiver outputs 0. If the receiver outputs a value between 0 and 1, a mixture of both will be played. (This is implemented as: ^(this * (trueUGen - falseUGen)) + falseUGen) Note that both <b>trueUGen</b> and <b>falseUGen</b> will be calculated regardless of whether they are output, so this may not be the most efficient approach.</p>
-<p class="p2"><br></p>
-<p class="p9">// note different syntax in these two examples</p>
-<p class="p6">{ if( <span class="s3">LFNoise1</span>.kr(1.0, 0.5, 0.5) , <span class="s3">SinOsc</span>.ar, <span class="s3">Saw</span>.ar ) * 0.1 }.play;</p>
-<p class="p7"><br></p>
-<p class="p6">{ <span class="s3">Trig1</span>.ar(<span class="s3">Dust</span>.ar(3), 0.2).lag(0.1).if(<span class="s3">FSinOsc</span>.ar(440), <span class="s3">FSinOsc</span>.ar(880)) * 0.1 }.play;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>@ y</b></p>
-<p class="p2"><br></p>
-<p class="p4">Dynamic geometry support. Returns <b>Point(this, y)</b>.</p>
-<p class="p2"><br></p>
-<p class="p6">{ (<span class="s3">SinOsc</span>.ar(1001) @ <span class="s3">SinOsc</span>.ar(1207)).rho }.scope;</p>
-<p class="p2"><br></p>
-<p class="p4"><b>asComplex</b></p>
-<p class="p2"><br></p>
-<p class="p4">Complex math support. Returns <b>Complex(this, 0.0)</b>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>dumpArgs</b></p>
-<p class="p4">        </p>
-<p class="p4">Posts a list of the arguments for this UGen and their values.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1"><b>Other Instance Methods</b></p>
-<p class="p2"><br></p>
-<p class="p4">The following methods and instance variables are largely used in the construction of synth definitions, synth descriptions (see <a href="../ServerArchitecture/SynthDesc.html"><span class="s3">SynthDesc</span></a>), UGen class definitions, etc., and are usually not needed for general use. Users should not attempt to set any of these values in general code.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>synthDef</b></p>
-<p class="p2"><br></p>
-<p class="p4">The SynthDef which contains the UGen.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>inputs</b></p>
-<p class="p2"><br></p>
-<p class="p4">The array of inputs to the UGen.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>rate</b></p>
-<p class="p2"><br></p>
-<p class="p4">The output rate of the UGen which is one of the Symbols 'audio', or 'control'.</p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p4"><b>signalRange</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns a symbol indicating the signal range of the receiver. Either <span class="s6">\bipolar</span> or <span class="s6">\unipolar</span>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>numChannels</b> </p>
-<p class="p2"><br></p>
-<p class="p4">Returns the number of output Channels. For a UGen, this will always be 1, but <a href="../Collections/Array.html"><span class="s3">Array</span></a> also implements this method, so multichannel expansion is supported. See <a href="../Other Topics/MultiChannel.html"><span class="s3">MultiChannel</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>numInputs</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns the number of inputs for this UGen.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>numOutputs</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns the number of outputs for this UGen.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>name</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns the <a href="../Core/Kernel/Class.html"><span class="s3">Class</span></a> name of the receiver as a <a href="../Collections/String.html"><span class="s3">String</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>madd(mul, add)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Wraps the receiver in a <a href="Filters/MulAdd.html"><span class="s3">MulAdd</span></a> UGen. This is for the most part only used in UGen class definitions in order to allow efficient implementation of <b>mul</b> and <b>add</b> arguments.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>isValidUGenInput</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns true.</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>asUGenInput</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns the receiver. This method is implemented in a number of classes in order to allow objects like Nodes, Busses, and Buffers to be passed directly as UGen inputs and Synth args.<span class="Apple-tab-span">	</span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>copy</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns the receiver. Thus UGen-dup effectively returns a reference to the original and is a convenient way to copy a mono signal to multiple channels.</p>
-<p class="p2"><br></p>
-<p class="p6">{ <span class="s3">SinOsc</span>.ar(<span class="s3">Rand</span>(200, 4000), 0, 0.2).dup }.plot <span class="s7">// this is the same UGen</span></p>
-<p class="p4">    </p>
-<p class="p4">Function-dup evaluates that function multiple times, thus potentially returning distinct UGens.</p>
-<p class="p2"><br></p>
-<p class="p6">{ { <span class="s3">SinOsc</span>.ar(<span class="s3">Rand</span>(200, 4000), 0, 0.2) }.dup }.plot <span class="s7">// these are different UGens</span></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p7"><br></p>
-<p class="p1"><b>Internally used methods</b></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4"><b>*multiNew(rate, ...args)</b></p>
-<p class="p4"><b>*multiNewList([rate, ...args])</b></p>
-<p class="p2"><br></p>
-<p class="p4">These methods are responsible for multichannel expansion. They call <b>*new1(rate, ...args)</b> for each parallel combination. Most *ar/*kr methods delegate to multiNewList.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>*new1(rate, ...args)</b></p>
-<p class="p2"><br></p>
-<p class="p4">This method returns a single instance of the UGen, not multichannel expanded. It is called inside multiNewList, whenever a new single instance is needed.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>*methodSelectorForRate(rate)</b></p>
-<p class="p4"><b>methodSelectorForRate(rate)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns an appropriate message selector (Symbol like \ar, \kr, \ir) for a given rate like \audio, \control, \scalar.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>*replaceZeroesWithSilence(array)</b></p>
-<p class="p2"><br></p>
-<p class="p4">Returns a new array, where every zero is replaced by a <a href="Synth control/Silent.html"><span class="s9">Silent</span></a> UGen. This is required internally sometimes for UGens like <a href="InOut/Out.html"><span class="s9">Out</span></a>.</p>
-<p class="p2"><br></p>
-<p class="p4"><b>init(... theInputs)</b></p>
-<p class="p2"><br></p>
-<p class="p4">By default, this method stores the inputs (e.g. the arguments to *ar and *kr) in the UGen. This may be overridden to do other initialisations, as long as the inputs are set correctly.</p>
-<p class="p7"><br></p>
-</body>
-</html>
diff --git a/Help/UGens/UGens.html b/Help/UGens/UGens.html
deleted file mode 100644
index 8023e41..0000000
--- a/Help/UGens/UGens.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #001ee6}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0018b8}
-span.s1 {color: #000000}
-span.s2 {text-decoration: underline}
-span.s3 {color: #2f66f0}
-span.s4 {color: #0000ff}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>UGens Overview</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b>See also: </b><a href="UGen.html"><span class="s2">UGen</span></a><b> and </b><a href="Tour_of_UGens.html"><span class="s2">Tour_of_UGens</span></a></span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4">Below is a partial list of UGens sorted by type. For a more up-to-date listing, look in the "UGens" section of the Help browser:<span class="Apple-converted-space"> </span></p>
-<p class="p5">Help.gui</p>
-<p class="p2"><br></p>
-<p class="p4"><b>Analysis</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Analysis/Amplitude.html"><span class="s2">Amplitude</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Analysis/Compander.html"><span class="s2">Compander</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Analysis/Pitch.html"><span class="s2">Pitch</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Analysis/Slope.html"><span class="s2">Slope</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Analysis/ZeroCrossing.html"><span class="s2">ZeroCrossing</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Control</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/DegreeToKey.html"><span class="s2">DegreeToKey</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/AmpComp.html"><span class="s2">AmpComp</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Slew.html"><span class="s2">Slew</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/MouseX.html"><span class="s2">MouseX</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/MouseY.html"><span class="s2">MouseY</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/MouseButton.html"><span class="s2">MouseButton</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Demand UGens:</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Demand.html"><span class="s2">Demand</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Duty.html"><span class="s2">Duty</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/TDuty.html"><span class="s2">TDuty</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Dseries.html"><span class="s2">Dseries</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Dgeom.html"><span class="s2">Dgeom</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Dseq.html"><span class="s2">Dseq</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Dser.html"><span class="s2">Dser</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Drand.html"><span class="s2">Drand</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Dxrand</p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Dswitch1.html"><span class="s2">Dswitch1</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Dwhite.html"><span class="s2">Dwhite</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Diwhite</p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Demand Rate/Dbrown.html"><span class="s2">Dbrown</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span>Dibrown</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>In/Out</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/SoundIn.html"><span class="s2">SoundIn</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/In.html"><span class="s2">In</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/InTrig.html"><span class="s2">InTrig</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/InFeedback.html"><span class="s2">InFeedback</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/Out.html"><span class="s2">Out</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/ReplaceOut.html"><span class="s2">ReplaceOut</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/XOut.html"><span class="s2">XOut</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/OffsetOut.html"><span class="s2">OffsetOut</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/LocalIn.html"><span class="s2">LocalIn</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/LocalOut.html"><span class="s2">LocalOut</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/SharedIn.html"><span class="s2">SharedIn</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="InOut/SharedOut.html"><span class="s2">SharedOut</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Oscillators</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Blip.html"><span class="s2">Blip</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Formant.html"><span class="s2">Formant</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/FSinOsc.html"><span class="s2">FSinOsc</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Gendy1.html"><span class="s2">Gendy1</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Gendy2.html"><span class="s2">Gendy2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Gendy3.html"><span class="s2">Gendy3</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Impulse.html"><span class="s2">Impulse</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Klang.html"><span class="s2">Klang</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/LFCub.html"><span class="s2">LFCub</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/LFPar.html"><span class="s2">LFPar</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/LFPulse.html"><span class="s2">LFPulse</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/LFSaw.html"><span class="s2">LFSaw</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Osc.html"><span class="s2">Osc</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/OscN.html"><span class="s2">OscN</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Pulse.html"><span class="s2">Pulse</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/Saw.html"><span class="s2">Saw</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/SinOsc.html"><span class="s2">SinOsc</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/SyncSaw.html"><span class="s2">SyncSaw</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/VarSaw.html"><span class="s2">VarSaw</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/VOsc.html"><span class="s2">VOsc</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/VOsc3.html"><span class="s2">VOsc3</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Delays</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/AllpassC.html"><span class="s2">AllpassC</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/AllpassL.html"><span class="s2">AllpassL</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/AllpassN.html"><span class="s2">AllpassN</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufAllpassC.html"><span class="s2">BufAllpassC</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufAllpassL.html"><span class="s2">BufAllpassL</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufAllpassN.html"><span class="s2">BufAllpassN</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufDelayC.html"><span class="s2">BufDelayC</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufDelayL.html"><span class="s2">BufDelayL</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufDelayN.html"><span class="s2">BufDelayN</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufCombC.html"><span class="s2">BufCombC</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufCombL.html"><span class="s2">BufCombL</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/BufCombN.html"><span class="s2">BufCombN</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/CombC.html"><span class="s2">CombC</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/CombL.html"><span class="s2">CombL</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/CombN.html"><span class="s2">CombN</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/Delay1.html"><span class="s2">Delay1</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/Delay2.html"><span class="s2">Delay2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/DelayC.html"><span class="s2">DelayC</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/DelayL.html"><span class="s2">DelayL</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/DelayN.html"><span class="s2">DelayN</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/PingPong.html"><span class="s2">PingPong</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/PitchShift.html"><span class="s2">PitchShift</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Multiple Channels</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Mix.html"><span class="s2">Mix</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/MultiOutUGen.html"><span class="s2">MultiOutUGen</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/OutputProxy.html"><span class="s2">OutputProxy</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/BiPanB2.html"><span class="s2">BiPanB2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/DecodeB2.html"><span class="s2">DecodeB2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/LinPan2.html"><span class="s2">LinPan2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/LinXFade2.html"><span class="s2">LinXFade2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/Pan2.html"><span class="s2">Pan2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/Pan4.html"><span class="s2">Pan4</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/PanAz.html"><span class="s2">PanAz</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/PanB.html"><span class="s2">PanB</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/PanB2.html"><span class="s2">PanB2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/Rotate2.html"><span class="s2">Rotate2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Panners/XFade2.html"><span class="s2">XFade2</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Physical Models</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Generators/PhysicalModels/Ball.html"><span class="s2">Ball</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Generators/PhysicalModels/Spring.html"><span class="s2">Spring</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Generators/PhysicalModels/TBall.html"><span class="s2">TBall</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Filters</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/BPF.html"><span class="s2">BPF</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/BPZ2.html"><span class="s2">BPZ2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/BRF.html"><span class="s2">BRF</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Formlet.html"><span class="s2">Formlet</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/FOS.html"><span class="s2">FOS</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/HPF.html"><span class="s2">HPF</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/HPZ1.html"><span class="s2">HPZ1</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/HPZ2.html"><span class="s2">HPZ2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Integrator.html"><span class="s2">Integrator</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Klank.html"><span class="s2">Klank</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Lag.html"><span class="s2">Lag</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Lag2.html"><span class="s2">Lag2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Lag3.html"><span class="s2">Lag3</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/LeakDC.html"><span class="s2">LeakDC</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Limiter.html"><span class="s2">Limiter</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/LinExp.html"><span class="s2">LinExp</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/LinLin.html"><span class="s2">LinLin</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/LPF.html"><span class="s2">LPF</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/LPZ1.html"><span class="s2">LPZ1</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/LPZ2.html"><span class="s2">LPZ2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Median.html"><span class="s2">Median</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Normalizer.html"><span class="s2">Normalizer</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/OnePole.html"><span class="s2">OnePole</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/OneZero.html"><span class="s2">OneZero</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Resonz.html"><span class="s2">Resonz</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/RHPF.html"><span class="s2">RHPF</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/Ringz.html"><span class="s2">Ringz</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/RLPF.html"><span class="s2">RLPF</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/SOS.html"><span class="s2">SOS</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/TwoPole.html"><span class="s2">TwoPole</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Filters/TwoZero.html"><span class="s2">TwoZero</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Noise</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/LFNoise1.html"><span class="s2">LFNoise1</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/LFNoise2.html"><span class="s2">LFNoise2</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/LFNoise0.html"><span class="s2">LFNoise0</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/LFClipNoise.html"><span class="s2">LFClipNoise</span></a> <span class="Apple-converted-space">     </span></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/WhiteNoise.html"><span class="s2">WhiteNoise</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/GrayNoise.html"><span class="s2">GrayNoise</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/Hasher.html"><span class="s2">Hasher</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/MantissaMask.html"><span class="s2">MantissaMask</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/PinkerNoise.html"><span class="s2">PinkerNoise</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/PinkNoise.html"><span class="s2">PinkNoise</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="Noise/ClipNoise.html"><span class="s3">ClipNoise</span></a> <span class="Apple-converted-space">       </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="Noise/Dust.html"><span class="s3">Dust</span></a><span class="Apple-converted-space">             </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="Noise/Dust2.html"><span class="s3">Dust2</span></a> <span class="Apple-converted-space">           </span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Noise/Rossler.html"><span class="s2">Rossler</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="Noise/Crackle.html"><span class="s3">Crackle</span></a> <span class="Apple-converted-space">  </span><b><span class="Apple-converted-space">   </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-converted-space">         </span></b></p>
-<p class="p4"><b>Triggers</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span></b><a href="Triggers/MostChange.html"><span class="s2">MostChange</span></a><span class="Apple-converted-space">       </span></span></p>
-<p class="p3"><span class="s1"><span class="Apple-converted-space"> <span class="Apple-tab-span">	</span></span><a href="Triggers/PulseCount.html"><span class="s2">PulseCount</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/Stepper.html"><span class="s2">Stepper</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/Gate.html"><span class="s2">Gate</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="Random/CoinGate.html"><span class="s3">CoinGate</span></a><span class="Apple-converted-space">             </span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="Triggers/Peak.html"><span class="s3">Peak</span></a><span class="Apple-converted-space">             </span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/PulseDivider.html"><span class="s2">PulseDivider</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/LastValue.html"><span class="s2">LastValue</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Latch.html"><span class="s2">Latch</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/Trig.html"><span class="s2">Trig</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/Trig1.html"><span class="s2">Trig1</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/SendTrig.html"><span class="s2">SendTrig</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/Sweep.html"><span class="s2">Sweep</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/Timer.html"><span class="s2">Timer</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/Phasor.html"><span class="s2">Phasor</span></a></span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b>Frequency Domain</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="FFT/FFT.html"><span class="s2">FFT</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="FFT/Convolution.html"><span class="s2">Convolution</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="FFT/PV_ConformalMap.html"><span class="s2">PV_ConformalMap</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Buffer Manipulation</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Oscillators/BufRd.html"><span class="s2">BufRd</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Oscillators/BufWr.html"><span class="s2">BufWr</span></a></span></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Playback and Recording/DiskIn.html"><span class="s2">DiskIn</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Playback and Recording/DiskOut.html"><span class="s2">DiskOut</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Index.html"><span class="s2">Index</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/WrapIndex.html"><span class="s2">WrapIndex</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Playback and Recording/PlayBuf.html"><span class="s2">PlayBuf</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Playback and Recording/RecordBuf.html"><span class="s2">RecordBuf</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Delays/PingPong.html"><span class="s2">PingPong</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Playback and Recording/TGrains.html"><span class="s2">TGrains</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Binary Operators</b></p>
-<p class="p2"><br></p>
-<p class="p4"><b><span class="Apple-tab-span">	</span></b><a href="Algebraic/BinaryOpUGen.html"><span class="s4">BinaryOpUGen</span></a> (overview)</p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="../BinaryOps/addition.html"><span class="s3">+</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="../BinaryOps/subtraction.html"><span class="s3">-</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="../BinaryOps/multiplication.html"><span class="s3">*</span></a></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="../BinaryOps/division.html"><span class="s3">/</span></a></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/exponentiation.html"><span class="s2">**</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/absdif.html"><span class="s2">absdif</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/amclip.html"><span class="s2">amclip</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/atan2.html"><span class="s2">atan2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/clip2.html"><span class="s2">clip2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/difsqr.html"><span class="s2">difsqr</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/excess.html"><span class="s2">excess</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/fold2.html"><span class="s2">fold2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/hypot.html"><span class="s2">hypot</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/hypotApx.html"><span class="s2">hypotApx</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/max.html"><span class="s2">max</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/min.html"><span class="s2">min</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/ring1.html"><span class="s2">ring1</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/ring2.html"><span class="s2">ring2</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/ring3.html"><span class="s2">ring3</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/ring4.html"><span class="s2">ring4</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/round.html"><span class="s2">round</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/scaleneg.html"><span class="s2">scaleneg</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/sqrdif.html"><span class="s2">sqrdif</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/sqrsum.html"><span class="s2">sqrsum</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/sumsqr.html"><span class="s2">sumsqr</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/thresh.html"><span class="s2">thresh</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/trunc.html"><span class="s2">trunc</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="../BinaryOps/wrap2.html"><span class="s2">wrap2</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>InfoUGens</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Info/BufChannels.html"><span class="s2">BufChannels</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Info/BufDur.html"><span class="s2">BufDur</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Info/BufFrames.html"><span class="s2">BufFrames</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Info/BufRateScale.html"><span class="s2">BufRateScale</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Info/BufSampleRate.html"><span class="s2">BufSampleRate</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Info/NumRunningSynths.html"><span class="s2">NumRunningSynths</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Info/SampleDur.html"><span class="s2">SampleDur</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Info/SampleRate.html"><span class="s2">SampleRate</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Synth-Controlling-UGens</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span>see overview: </b><a href="Synth control/Synth-Controlling-UGens.html"><span class="s2">Synth-Controlling-UGens</span></a></span></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Synth control/Control.html"><span class="s2">Control</span></a></span></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Synth control/Envelopes/DetectSilence.html"><span class="s2">DetectSilence</span></a></span></p>
-<p class="p3"><span class="s1"><b><span class="Apple-tab-span">	</span></b><a href="Synth control/Envelopes/EnvGen.html"><span class="s2">EnvGen</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Envelopes/Line.html"><span class="s2">Line</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Envelopes/XLine.html"><span class="s2">XLine</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Envelopes/Linen.html"><span class="s2">Linen</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Envelopes/Free.html"><span class="s2">Free</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Envelopes/FreeSelf.html"><span class="s2">FreeSelf</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Envelopes/Pause.html"><span class="s2">Pause</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Synth control/Envelopes/PauseSelf.html"><span class="s2">PauseSelf</span></a></span></p>
-<p class="p2"><br></p>
-<p class="p4"><b>Random Values</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/Rand.html"><span class="s2">Rand</span></a></span></p>
-<p class="p4"><span class="Apple-tab-span">	</span><a href="Random/ExpRand.html"><span class="s3">ExpRand</span></a> <span class="Apple-converted-space">         </span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/LinRand.html"><span class="s2">LinRand</span></a> <span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/NRand.html"><span class="s2">NRand</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/IRand.html"><span class="s2">IRand</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/TIRand.html"><span class="s2">TIRand</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/TRand.html"><span class="s2">TRand</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/TExpRand.html"><span class="s2">TExpRand</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/RandSeed.html"><span class="s2">RandSeed</span></a></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Random/RandID.html"><span class="s2">RandID</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p4"><b>Array Usage</b></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Multichannel/Select.html"><span class="s2">Select</span></a><span class="Apple-converted-space"> </span></span></p>
-<p class="p3"><span class="s1"><span class="Apple-tab-span">	</span><a href="Triggers/TWindex.html"><span class="s2">TWindex</span></a></span></p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-converted-space">       </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-<p class="p4"><b><span class="Apple-converted-space"> </span>to be continued<span class="Apple-converted-space">  </span>....</b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-converted-space">           </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span><span class="Apple-converted-space">           </span></b></p>
-<p class="p2"><b><span class="Apple-tab-span">	</span></b></p>
-</body>
-</html>
diff --git a/Help/UGens/attachments/Tour_of_UGens/chebyshevpolynomials.png b/Help/UGens/attachments/Tour_of_UGens/chebyshevpolynomials.png
deleted file mode 100644
index dcb639f..0000000
Binary files a/Help/UGens/attachments/Tour_of_UGens/chebyshevpolynomials.png and /dev/null differ
diff --git a/Help/UnaryOps/abs.html b/Help/UnaryOps/abs.html
deleted file mode 100644
index ef65a30..0000000
--- a/Help/UnaryOps/abs.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #002dad; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline}
-span.s3 {color: #2c7014}
-span.s4 {color: #000000}
-span.s5 {text-decoration: underline ; color: #0021e7}
-span.s6 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>abs<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>absolute value</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>a.abs</b></p>
-<p class="p1"><b>abs(a)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><a href="../Math/SimpleNumber.html">SimpleNumber</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">abs(-5);</p>
-<p class="p5">-5.abs;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Collections/SequenceableCollection.html">SequenceableCollection</a></span></p>
-<p class="p6"><br></p>
-<p class="p5">[-2, -4, 3, 7, -2, [-1, -1, -2], [100, -100], -2, 1, 3].abs;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Symbol.html">Symbol</a></span></p>
-<p class="p6"><br></p>
-<p class="p7"><span class="s3">\foo</span><span class="s4">.abs; </span>// returns itself. this is used in Envelopes see <a href="../Control/Env.html"><span class="s5">Env</span></a>.</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2"><a href="../Geometry/Point.html">Point</a></span></p>
-<p class="p4"><br></p>
-<p class="p5"><span class="s6">Point</span>(-1, 2).abs;</p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Kernel/Function.html">Function</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">f = abs({<span class="s6">|x|</span> sin(x) });</p>
-<p class="p5">f.value((0..1000).normalize(0, 8pi)).plot;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../UGens/UGen.html">UGen</a></span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>var a = <span class="s6">SyncSaw</span>.ar(100, 440, 0.1);</p>
-<p class="p7"><span class="s4"><span class="Apple-tab-span">	</span>a.abs </span>// Absolute value</p>
-<p class="p5">}.play</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p7">// compared to</p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span>var a = <span class="s6">SyncSaw</span>.ar(100, 440, 0.1);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a</p>
-<p class="p5">}.play</p>
-<p class="p5">)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/acos.html b/Help/UnaryOps/acos.html
deleted file mode 100644
index ad1585d..0000000
--- a/Help/UnaryOps/acos.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #0034a8; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline}
-span.s3 {color: #ad140d}
-span.s4 {color: #000000}
-span.s5 {color: #001bb9}
-span.s6 {color: #3d6d1d}
-span.s7 {text-decoration: underline ; color: #002fe0}
-span.s8 {color: #0026b4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>acos<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>arccosine</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>a.acos</b></p>
-<p class="p1"><b>acos(a)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><a href="../Math/SimpleNumber.html">SimpleNumber</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">acos(0);</p>
-<p class="p5">0.acos;</p>
-<p class="p6"><br></p>
-<p class="p5">acos(0) == 0.5pi; <span class="s3">// true</span></p>
-<p class="p7"><span class="s4">acos(2); </span>// nan: no value of absolute value greater 1.0</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Collections/SequenceableCollection.html">SequenceableCollection</a></span></p>
-<p class="p6"><br></p>
-<p class="p5">[0.5, 0.8, [-1, 1]].acos;</p>
-<p class="p7">// acos is the reverse of cos:</p>
-<p class="p5">c = sin(<span class="s5">_</span> + 0.5pi); <span class="s3">// cos function</span></p>
-<p class="p5">c.([-1, -0.5, 0, 0.5, 1]).acos;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Symbol.html">Symbol</a></span></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s6">\foo</span><span class="s4">.acos; </span>// returns itself. this is used in Envelopes see <a href="../Control/Env.html"><span class="s7">Env</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Kernel/Function.html">Function</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">f = acos({<span class="s8">|x|</span> sin(x) });</p>
-<p class="p5">f.value((0..1000).normalize(0, 8pi)).plot;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../UGens/UGen.html">UGen</a></span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">var</span> a = <span class="s5">LFSaw</span>.ar(100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[a, a.acos]</p>
-<p class="p5">}.plot</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s5">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s5">Line</span>.ar(-1, 1, 0.01);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(a.acos / 0.5pi) - 1</p>
-<p class="p5">}.plot</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/ampdb.html b/Help/UnaryOps/ampdb.html
deleted file mode 100644
index 745cba5..0000000
--- a/Help/UnaryOps/ampdb.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #0034a8; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #000000}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline}
-span.s3 {color: #606060}
-span.s4 {color: #3d6d1d}
-span.s5 {color: #000000}
-span.s6 {text-decoration: underline ; color: #002fe0}
-span.s7 {color: #0026b4}
-span.s8 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>ampdb<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>convert linear amplitude to decibels</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>a.ampdb</b></p>
-<p class="p1"><b>ampdb(a)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><a href="../Math/SimpleNumber.html">SimpleNumber</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">0.1.ampdb;</p>
-<p class="p5">(ampdb(0.1).asString ++ <span class="s3">" decibels"</span>);</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Collections/SequenceableCollection.html">SequenceableCollection</a></span></p>
-<p class="p6"><br></p>
-<p class="p7">[0.001, 0.01, 0.1, 1, 10].ampdb;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Symbol.html">Symbol</a></span></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s4">\foo</span><span class="s5">.ampdb; </span>// returns itself. this is used in Envelopes see <a href="../Control/Env.html"><span class="s6">Env</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Kernel/Function.html">Function</a></span></p>
-<p class="p4"><br></p>
-<p class="p7">f = ampdb({<span class="s7">|x|</span> sin(x) + 1 });</p>
-<p class="p7">f.value((0..1000).normalize(0, 8pi)).plot;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../UGens/UGen.html">UGen</a></span></p>
-<p class="p6"><br></p>
-<p class="p7">(</p>
-<p class="p7">{</p>
-<p class="p7"><span class="Apple-tab-span">	</span><span class="s8">var</span> a = <span class="s8">LFSaw</span>.ar(100).range(0.0001, 10);</p>
-<p class="p7"><span class="Apple-tab-span">	</span>[a, a.ampdb]</p>
-<p class="p7">}.plot(minval: -60, maxval: 10)</p>
-<p class="p7">)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/asin.html b/Help/UnaryOps/asin.html
deleted file mode 100644
index 836de3c..0000000
--- a/Help/UnaryOps/asin.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #0034a8; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline}
-span.s3 {color: #ad140d}
-span.s4 {color: #000000}
-span.s5 {color: #3d6d1d}
-span.s6 {text-decoration: underline ; color: #002fe0}
-span.s7 {color: #0026b4}
-span.s8 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>asin<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>arcsine</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>a.asin</b></p>
-<p class="p1"><b>asin(a)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><a href="../Math/SimpleNumber.html">SimpleNumber</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">asin(1);</p>
-<p class="p5">1.asin;</p>
-<p class="p6"><br></p>
-<p class="p5">asin(1) == 0.5pi; <span class="s3">// true</span></p>
-<p class="p7"><span class="s4">asin(2); </span>// nan: no value of absolute value greater 1.0</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Collections/SequenceableCollection.html">SequenceableCollection</a></span></p>
-<p class="p6"><br></p>
-<p class="p5">[0.5, 0.8, [-1, 1]].asin;</p>
-<p class="p7">// asin is the reverse of sin:</p>
-<p class="p5">asin(sin([-1, -0.5, 0, 0.5, 1]));</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Symbol.html">Symbol</a></span></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s5">\foo</span><span class="s4">.asin; </span>// returns itself. this is used in Envelopes see <a href="../Control/Env.html"><span class="s6">Env</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Kernel/Function.html">Function</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">f = asin({<span class="s7">|x|</span> 1 / x });</p>
-<p class="p5">f.value((0..1000).normalize(1, 8)).plot;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../UGens/UGen.html">UGen</a></span></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s8">var</span> a = <span class="s8">LFSaw</span>.ar(100);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>[a, a.asin]</p>
-<p class="p5">}.plot(minval: -2pi, maxval: 2pi)</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s8">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s8">Line</span>.ar(-1, 1, 0.01);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(a.asin / 0.5pi) - 1</p>
-<p class="p5">}.plot(minval: -2pi, maxval: 2pi)</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/atan.html b/Help/UnaryOps/atan.html
deleted file mode 100644
index 11373e9..0000000
--- a/Help/UnaryOps/atan.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0021e7}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; color: #0034a8; min-height: 16.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #9d1c12}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline}
-span.s3 {color: #ad140d}
-span.s4 {color: #000000}
-span.s5 {color: #3d6d1d}
-span.s6 {text-decoration: underline ; color: #002fe0}
-span.s7 {color: #0026b4}
-span.s8 {color: #001bb9}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>atan<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>arctangent</b></p>
-<p class="p2"><br></p>
-<p class="p1"><b>a.atan</b></p>
-<p class="p1"><b>atan(a)</b></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><a href="../Math/SimpleNumber.html">SimpleNumber</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">atan(1);</p>
-<p class="p5">1.atan;</p>
-<p class="p6"><br></p>
-<p class="p5">atan(1) == 0.25pi; <span class="s3">// true</span></p>
-<p class="p7"><span class="s4">atan(2000.1); </span>// any value can be mapped into the range of -0.5pi .. 0.5pi by atan</p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Collections/SequenceableCollection.html">SequenceableCollection</a></span></p>
-<p class="p6"><br></p>
-<p class="p5">(-100..100).atan.plot;</p>
-<p class="p7">// atan is the reverse of tan:</p>
-<p class="p5">atan(tan([-1, -0.5, 0, 0.5, 1]));</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Symbol.html">Symbol</a></span></p>
-<p class="p6"><br></p>
-<p class="p8"><span class="s5">\foo</span><span class="s4">.atan; </span>// returns itself. this is used in Envelopes see <a href="../Control/Env.html"><span class="s6">Env</span></a>.</p>
-<p class="p6"><br></p>
-<p class="p4"><br></p>
-<p class="p3"><span class="s2"><a href="../Core/Kernel/Function.html">Function</a></span></p>
-<p class="p4"><br></p>
-<p class="p5">f = atan({<span class="s7">|x|</span> sin(x) });</p>
-<p class="p5">f.value((0..1000).normalize(1, 8)).plot;</p>
-<p class="p6"><br></p>
-<p class="p3"><span class="s2"><a href="../UGens/UGen.html">UGen</a></span></p>
-<p class="p6"><br></p>
-<p class="p6"><br></p>
-<p class="p5">(</p>
-<p class="p5">{</p>
-<p class="p5"><span class="Apple-tab-span">	</span><span class="s8">var</span> a;</p>
-<p class="p5"><span class="Apple-tab-span">	</span>a = <span class="s8">Line</span>.ar(0, 100, 0.01);</p>
-<p class="p5"><span class="Apple-tab-span">	</span>(a.atan / 0.25pi) - 1</p>
-<p class="p5">}.plot</p>
-<p class="p5">)</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/ceil.html b/Help/UnaryOps/ceil.html
deleted file mode 100644
index 4924a1c..0000000
--- a/Help/UnaryOps/ceil.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>ceil<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>next higher integer</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.ceil</b></p>
-<p class="p3"><b>ceil(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(1, -1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.ceil ]</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/convertRhythm.html b/Help/UnaryOps/convertRhythm.html
deleted file mode 100644
index 2f26884..0000000
--- a/Help/UnaryOps/convertRhythm.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.43">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #ad140d}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {text-decoration: underline}
-span.s3 {color: #ad140d}
-span.s4 {color: #001bb9}
-span.s5 {color: #2c7014}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>convertRhythm<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>convert a rhythm-list to durations</b></p>
-<p class="p2"><br></p>
-<p class="p1">message for SequenceableCollection</p>
-<p class="p3"><br></p>
-<p class="p3"><br></p>
-<p class="p1">supports a variation of Mikael Laurson's rhythm list RTM-notation.<span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p1">see Laurson and Kuuskankare's 2003, "From RTM-notation to ENP-score-notation"</p>
-<p class="p1"><span class="s2">http://jim2003.agglo-montbeliard.fr/articles/laurson.pdf</span><span class="Apple-converted-space"> </span></p>
-<p class="p2"><br></p>
-<p class="p2"><br></p>
-<p class="p1">The method converts a collection of the form <b>[beat-count, [rtm-list], repeats]</b> to a List of Floats. A negative integer within the rtm-list equates to a value tied over to the duration following. The method is recursive in that any subdivision within the rtm-list can itself be a nested convertRhythm collection (see Example below). The repeats integer has a default value of 1.</p>
-<p class="p2"><br></p>
-<p class="p1">If the divisions in the rtm-list are events, the event durations are interpreted as relative durations, and a list of events is returned.</p>
-<p class="p3"><br></p>
-<p class="p4">// Examples</p>
-<p class="p3"><br></p>
-<p class="p4">// using numbers as score</p>
-<p class="p5"><br></p>
-<p class="p6">[3, [1, 2, 1], 1].convertRhythm; <span class="s3">// List[ 0.75, 1.5, 0.75 ]</span></p>
-<p class="p5"><br></p>
-<p class="p6">[2, [1, 3, [1, [2, 1, 1, 1]], 1, 3], 1].convertRhythm;</p>
-<p class="p5"><br></p>
-<p class="p6">[2, [1, [1, [2, 1, 1, 1]]], 1].convertRhythm;</p>
-<p class="p5"><br></p>
-<p class="p6">[2, [1, [1, [2, 1, 1, 1]]], 2].convertRhythm; <span class="s3">// repeat</span></p>
-<p class="p5"><br></p>
-<p class="p6">[2, [1, [1, [2, 1, 1, -1]]], 2].convertRhythm; <span class="s3">// negative value is tied over.</span></p>
-<p class="p5"><br></p>
-<p class="p5"><br></p>
-<p class="p4">// sound example</p>
-<p class="p5"><br></p>
-<p class="p6"><span class="s4">Pbind</span>(<span class="s5">\degree</span>, <span class="s4">Pseries</span>(0, 1, <span class="s4">inf</span>), <span class="s5">\dur</span>, <span class="s4">Pseq</span>([2, [1, [1, [2, 1, 1, -1]]], 2].convertRhythm)).play;</p>
-<p class="p5"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/cos.html b/Help/UnaryOps/cos.html
deleted file mode 100644
index aa8671c..0000000
--- a/Help/UnaryOps/cos.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>cos<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cosine</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.cos</b></p>
-<p class="p3"><b>cos(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(0, 2pi, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.cos</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/cosh.html b/Help/UnaryOps/cosh.html
deleted file mode 100644
index aed7c65..0000000
--- a/Help/UnaryOps/cosh.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>cosh<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hyperbolic cosine</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.cosh</b></p>
-<p class="p3"><b>cosh(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-pi, pi, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.cosh * 0.1</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/cpsmidi.html b/Help/UnaryOps/cpsmidi.html
deleted file mode 100644
index bffa152..0000000
--- a/Help/UnaryOps/cpsmidi.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>cpsmidi<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert cycles per second to MIDI note<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>a.cpsmidi</b></p>
-<p class="p3"><b>cpsmidi(a)</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p4">440.cpsmidi.postln</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/cpsoct.html b/Help/UnaryOps/cpsoct.html
deleted file mode 100644
index a6f7ad2..0000000
--- a/Help/UnaryOps/cpsoct.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>cpsoct<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert cycles per second to decimal octaves<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>a.cpsoct</b></p>
-<p class="p3"><b>cpsoct(a)</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p4">440.cpsoct.postln</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/cubed.html b/Help/UnaryOps/cubed.html
deleted file mode 100644
index a235c10..0000000
--- a/Help/UnaryOps/cubed.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>cubed<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>cubed value</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.cubed</b></p>
-<p class="p3"><b>cubed(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.cubed ]</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/dbamp.html b/Help/UnaryOps/dbamp.html
deleted file mode 100644
index 05ed739..0000000
--- a/Help/UnaryOps/dbamp.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>dbamp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert decibels to linear amplitude<span class="Apple-converted-space"> </span></b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>a.dbamp</b></p>
-<p class="p3"><b>dbamp(a)</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p4">-20.dbamp.postln</p>
-<p class="p5"><br></p>
-<p class="p4">{ FSinOsc.ar(800, 0.0, Line.kr(-3,-40,10).dbamp) }.play;</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/distort.html b/Help/UnaryOps/distort.html
deleted file mode 100644
index 1183fa9..0000000
--- a/Help/UnaryOps/distort.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>distort<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nonlinear distortion</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.distort</b></p>
-<p class="p3"><b>distort(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-4, 4, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.distort</p>
-<p class="p4">}.plot)</p>
-<p class="p5"><br></p>
-<p class="p4">{ FSinOsc.ar(500, 0.0, XLine.kr(0.1, 10, 10)).distort * 0.25 }.scope;</p>
-<p class="p5"><br></p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/exp.html b/Help/UnaryOps/exp.html
deleted file mode 100644
index 45b04c3..0000000
--- a/Help/UnaryOps/exp.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>exp<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>exponential</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.exp</b></p>
-<p class="p3"><b>exp(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(0, -5, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.exp ]</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/floor.html b/Help/UnaryOps/floor.html
deleted file mode 100644
index cb821ab..0000000
--- a/Help/UnaryOps/floor.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>floor<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>next lower integer</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.floor</b></p>
-<p class="p3"><b>floor(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.floor ]</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/frac.html b/Help/UnaryOps/frac.html
deleted file mode 100644
index fde0b85..0000000
--- a/Help/UnaryOps/frac.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>frac<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>fractional part</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.frac</b></p>
-<p class="p3"><b>frac(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.frac ]</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/isNegative.html b/Help/UnaryOps/isNegative.html
deleted file mode 100644
index 894a91f..0000000
--- a/Help/UnaryOps/isNegative.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>isNegative<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>test if signal is < 0</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.isNegative</b></p>
-<p class="p3"><b>isNegative(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.isNegative</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/isPositive.html b/Help/UnaryOps/isPositive.html
deleted file mode 100644
index 5fee508..0000000
--- a/Help/UnaryOps/isPositive.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>isPositive<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>test if signal is >= 0</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.isPositive</b></p>
-<p class="p3"><b>isPositive(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.isPositive</p>
-<p class="p4">}.plot)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/isStrictlyPositive.html b/Help/UnaryOps/isStrictlyPositive.html
deleted file mode 100644
index ff510d1..0000000
--- a/Help/UnaryOps/isStrictlyPositive.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>isStrictlyPositive<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>test if signal is > 0</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.isStrictlyPositive</b></p>
-<p class="p3"><b>isNegative(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.isStrictlyPositive</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/log.html b/Help/UnaryOps/log.html
deleted file mode 100644
index 19693f4..0000000
--- a/Help/UnaryOps/log.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>log<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>natural logarithm</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.log</b></p>
-<p class="p3"><b>log(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a, e;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>e = exp(1);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(e, 1/e, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.log</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/log10.html b/Help/UnaryOps/log10.html
deleted file mode 100644
index 053304e..0000000
--- a/Help/UnaryOps/log10.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>log10<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>base 10 logarithm</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.log10</b></p>
-<p class="p3"><b>log10(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(10, 1/10, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.log10</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/log2.html b/Help/UnaryOps/log2.html
deleted file mode 100644
index 8778a69..0000000
--- a/Help/UnaryOps/log2.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>log2<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>base 2 logarithm</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.log2</b></p>
-<p class="p3"><b>log2(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(2, 1/2, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.log2</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/midicps.html b/Help/UnaryOps/midicps.html
deleted file mode 100644
index c6b5fe4..0000000
--- a/Help/UnaryOps/midicps.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>midicps<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert MIDI note to cycles per second</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.midicps</b></p>
-<p class="p3"><b>midicps(a)</b></p>
-<p class="p2"><br></p>
-<p class="p3">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>Saw.ar(Line.kr(24,108,10).midicps, 0.2)</p>
-<p class="p4">}.play)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/neg.html b/Help/UnaryOps/neg.html
deleted file mode 100644
index b80b42c..0000000
--- a/Help/UnaryOps/neg.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>neg<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>inversion</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.neg</b></p>
-<p class="p3"><b>neg(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = FSinOsc.ar(300);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.neg ]</p>
-<p class="p4">}.plot)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/octcps.html b/Help/UnaryOps/octcps.html
deleted file mode 100644
index 54662d9..0000000
--- a/Help/UnaryOps/octcps.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>octcps<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>convert decimal octaves to cycles per second</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p3"><b>a.octcps</b></p>
-<p class="p3"><b>octcps(a)</b></p>
-<p class="p2"><b></b><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>Saw.ar(Line.kr(2,9,10).octcps, 0.2)</p>
-<p class="p4">}.play)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/reciprocal.html b/Help/UnaryOps/reciprocal.html
deleted file mode 100644
index f11d6a0..0000000
--- a/Help/UnaryOps/reciprocal.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>reciprocal<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>reciprocal</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.reciprocal</b></p>
-<p class="p3"><b>reciprocal(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">10.do({ arg a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = a + 1;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.reciprocal.postln</p>
-<p class="p4">});</p>
-<p class="p4">)</p>
-<p class="p5"><br></p>
-<p class="p4">9.reciprocal == (1 / 9);</p>
-<p class="p4">10.reciprocal == (1 / 10);</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/sign.html b/Help/UnaryOps/sign.html
deleted file mode 100644
index 8234426..0000000
--- a/Help/UnaryOps/sign.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>sign<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sign function</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.sign</b></p>
-<p class="p3"><b>sign(a)</b></p>
-<p class="p2"><br></p>
-<p class="p3">-1 when a < 0, +1 when a > 0, 0 when a is 0</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.sign ]</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/sin.html b/Help/UnaryOps/sin.html
deleted file mode 100644
index cc3c059..0000000
--- a/Help/UnaryOps/sin.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>sin<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>sine</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.sin</b></p>
-<p class="p3"><b>sin(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(0, 2pi, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.sin</p>
-<p class="p4">}.plot)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/sinh.html b/Help/UnaryOps/sinh.html
deleted file mode 100644
index 1030962..0000000
--- a/Help/UnaryOps/sinh.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>sinh<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hyperbolic sine</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.sinh</b></p>
-<p class="p3"><b>sinh(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-pi, pi, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.sinh * 0.1</p>
-<p class="p4">}.plot)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/softclip.html b/Help/UnaryOps/softclip.html
deleted file mode 100644
index 9f605a9..0000000
--- a/Help/UnaryOps/softclip.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px}
-span.s1 {color: #0019b7}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>softclip<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nonlinear distortion</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.softclip</b></p>
-<p class="p3"><b>softclip(a)</b></p>
-<p class="p2"><br></p>
-<p class="p3">Distortion with a perfectly linear region from -0.5 to +0.5</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s1">Server</span>.internal.boot;</p>
-<p class="p5"><br></p>
-<p class="p4">{ <span class="s1">FSinOsc</span>.ar(500,0.0, <span class="s1">XLine</span>.kr(0.1, 10, 10)).softclip * 0.25 }.scope(2);</p>
-<p class="p6"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/sqrt.html b/Help/UnaryOps/sqrt.html
deleted file mode 100644
index 54803b8..0000000
--- a/Help/UnaryOps/sqrt.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>sqrt<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>square root</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.sqrt</b></p>
-<p class="p3"><b>sqrt(a)</b></p>
-<p class="p2"><br></p>
-<p class="p3">The definition of square root is extended for signals so that sqrt(a) when a<0 returns</p>
-<p class="p3">-sqrt(-a).</p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.sqrt ]</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/squared.html b/Help/UnaryOps/squared.html
deleted file mode 100644
index 62c9f1f..0000000
--- a/Help/UnaryOps/squared.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>squared<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>squared value</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.squared</b></p>
-<p class="p3"><b>squared(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-1, 1, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>[ a, a.squared ]</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/UnaryOps/tan.html b/Help/UnaryOps/tan.html
deleted file mode 100644
index 4f0173c..0000000
--- a/Help/UnaryOps/tan.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>tan<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>tangent</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.tan</b></p>
-<p class="p3"><b>tan(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-pi/2, pi/2, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.tan / 10</p>
-<p class="p4">}.plot)</p>
-</body>
-</html>
diff --git a/Help/UnaryOps/tanh.html b/Help/UnaryOps/tanh.html
deleted file mode 100644
index 13c9b42..0000000
--- a/Help/UnaryOps/tanh.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><b>tanh<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>hyperbolic tangent</b></p>
-<p class="p2"><br></p>
-<p class="p3"><b>a.tanh</b></p>
-<p class="p3"><b>tanh(a)</b></p>
-<p class="p2"><br></p>
-<p class="p4">(</p>
-<p class="p4">{</p>
-<p class="p4"><span class="Apple-tab-span">	</span>var a;</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a = Line.ar(-pi, pi, 0.01);</p>
-<p class="p4"><span class="Apple-tab-span">	</span>a.tanh</p>
-<p class="p4">}.plot)</p>
-<p class="p2"><br></p>
-</body>
-</html>
diff --git a/Help/attachments/Help/SC_icon.png b/Help/attachments/Help/SC_icon.png
deleted file mode 100644
index bf48f2d..0000000
Binary files a/Help/attachments/Help/SC_icon.png and /dev/null differ
diff --git a/Help/attachments/Help/empty.png b/Help/attachments/Help/empty.png
deleted file mode 100644
index 3f41277..0000000
Binary files a/Help/attachments/Help/empty.png and /dev/null differ
diff --git a/Help/help-scripts/Show All Documented Classes.html b/Help/help-scripts/Show All Documented Classes.html
deleted file mode 100644
index eb52b7f..0000000
--- a/Help/help-scripts/Show All Documented Classes.html	
+++ /dev/null
@@ -1,189 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">// trolls the help extension help directories and compiles a doc with links</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">var</span> path, doc, result, headingIndices, headingFont, excluded, addFunc;</p>
-<p class="p3"><span class="s1">var</span> underlineStarts, underlineRanges, titleString, thirdParty, thirdPartyIndex;</p>
-<p class="p3"><span class="s1">var</span> extensions, extensionsIndex, extensionFunc, extensionsRoots, extensionsFolders;</p>
-<p class="p3"><span class="s1">var</span> undoc, undocIndex;</p>
-<p class="p2"><br></p>
-<p class="p3">path = <span class="s1">PathName</span>.new(<span class="s2">"Help/"</span>);</p>
-<p class="p4"><br></p>
-<p class="p3">headingIndices = <span class="s1">List</span>.new;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">titleString = </span>"A Generated List of all Documented Classes"<span class="s3">;</span></p>
-<p class="p5"><span class="s3">undoc = </span>"*Show All Undocumented Classes"<span class="s3">;</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">result = titleString ++ </span><span class="s1">Char</span><span class="s3">.nl ++ </span><span class="s1">Char</span><span class="s3">.nl ++ </span>"Below is an automatically generated list of all documented classes, sorted by directory. For a list of undocumented classes click here:"<span class="s3"> + </span><span class="s1">Char</span><span class="s3">.tab;</span></p>
-<p class="p2"><br></p>
-<p class="p3">undocIndex = result.size;</p>
-<p class="p2"><br></p>
-<p class="p3">result = result ++ undoc ++ <span class="s1">Char</span>.nl ++ <span class="s1">Char</span>.nl;</p>
-<p class="p2"><br></p>
-<p class="p1">// put included third party libraries at the end</p>
-<p class="p5"><span class="s3">excluded = [</span><span class="s1">PathName</span><span class="s3">(</span>"Help/crucial"<span class="s3">), </span><span class="s1">PathName</span><span class="s3">(</span>"Help/JITLib"<span class="s3">)];</span></p>
-<p class="p2"><br></p>
-<p class="p1">// this func trolls the directory and harvests the descriptions</p>
-<p class="p6"><span class="s3">addFunc = {</span>|folderPathName|</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> classFiles, heading, currentFile, currentFileString;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> removeIndices, spaceIndices, removePairs, lastSpace = 0;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>classFiles = <span class="s2">""</span>;</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>folderPathName.files.do({<span class="s1">|item|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> nameString, nameIndex, end;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nameString = item.fileName.split($.).at(0);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(nameString.asSymbol.asClass.notNil, {<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFile = <span class="s1">File</span>(item.fullPath, <span class="s2">"r"</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFile.readAllString;</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fix accent acute (remove it)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString.findAll(<span class="s2">"\'8"</span>).reverseDo({ <span class="s1">|i|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.copyFromStart(i-2) ++</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString.copyToEnd(i+2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFile.close;</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// strip RTF gunk</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.stripRTF;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nameIndex = currentFileString.find(nameString);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(nameIndex.notNil, {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.drop(nameIndex);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>end = currentFileString.find(<span class="s2">"\n"</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if( end.notNil, {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>end = end - 1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.copyFromStart(end);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p2"><br></p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// remove tab stops</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.reject({<span class="s1">|item|</span>item == $\t});</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// remove commas, hyphens, and spaces</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>while({(currentFileString[nameString.size] == $,) ||<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(currentFileString[nameString.size] == $ ) ||<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(currentFileString[nameString.size] == $-)},</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{currentFileString = currentFileString.copyFromStart(nameString.size -1) ++</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString.copyToEnd(nameString.size + 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(currentFileString.size > nameString.size, {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.insert(nameString.size, <span class="s2">"\t"</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});},<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = nameString;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// add square brackets</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.insert(nameString.size, <span class="s2">"]"</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.insert(0, <span class="s2">"["</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>classFiles = classFiles ++ <span class="s1">Char</span>.tab ++ currentFileString ++ <span class="s1">Char</span>.nl;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>if(classFiles.size > 0, {</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//heading = folderPathName.fileName;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>heading = folderPathName.fullPath;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>headingIndices.add([result.size, heading.size]);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>result = result ++ heading ++ <span class="s1">Char</span>.nl ++ <span class="s1">Char</span>.nl ++ classFiles ++ <span class="s1">Char</span>.nl;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>folderPathName.foldersWithoutCVS.do({<span class="s1">|folder|</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(excluded.detect({<span class="s1">|item|</span> item.fileName == folder.fileName; }).isNil,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{addFunc.value(folder);}</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3">};</p>
-<p class="p2"><br></p>
-<p class="p3">addFunc.value(path);</p>
-<p class="p2"><br></p>
-<p class="p1">// Check for Extensions Folders and add if they exist</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">extensionsRoots = [</span><span class="s1">PathName</span><span class="s3">(</span>"/Library/Application Support/SuperCollider/Extensions"<span class="s3">),<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s1">PathName</span><span class="s3">(</span>"~/Library/Application Support/SuperCollider/Extensions"<span class="s3">)];</span></p>
-<p class="p2"><br></p>
-<p class="p3">extensionsRoots.any({<span class="s1">|item|</span> item.pathMatch.size > 0 }).if({</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionsFolders = <span class="s1">List</span>.new;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionFunc = { <span class="s1">|path|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>path.folders.do({<span class="s1">|item|</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>item.fullPath.containsi(<span class="s2">"help"</span>).if({ extensionsFolders.add(item)},{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>extensionFunc.value(item);});</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionsRoots.do({<span class="s1">|item|</span> extensionFunc.value(item); });</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span>result = result ++ </span>"\n------------------------\n\n"<span class="s3">;</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensions = <span class="s2">"Extensions:"</span>;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionsIndex = result.size;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>result = result ++ extensions + <span class="s1">Char</span>.nl + <span class="s1">Char</span>.nl;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionsFolders.do({<span class="s1">|item|</span> addFunc.value(item);});</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">});</p>
-<p class="p2"><br></p>
-<p class="p1">// Third Party Libraries</p>
-<p class="p5"><span class="s3">result = result ++ </span>"\n------------------------\n\n"<span class="s3">;</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">thirdParty = </span>"Included Third Party Libraries:"<span class="s3">;</span></p>
-<p class="p3">thirdPartyIndex = result.size;</p>
-<p class="p2"><br></p>
-<p class="p3">result = result ++ thirdParty + <span class="s1">Char</span>.nl + <span class="s1">Char</span>.nl;</p>
-<p class="p2"><br></p>
-<p class="p3">excluded.do({<span class="s1">|item|</span> addFunc.value(item); result = result ++ <span class="s2">"\n------------\n\n"</span>;});</p>
-<p class="p2"><br></p>
-<p class="p1">//doc = Document.new("Documented Classes");</p>
-<p class="p2"><br></p>
-<p class="p1">// this sets basic tab stops and line spacing</p>
-<p class="p5"><span class="s3">doc = </span><span class="s1">Document</span><span class="s3">.open(</span><span class="s1">File</span><span class="s3">.getcwd ++ </span>"/"<span class="s3"> ++ </span>"Help/help-scripts/tab-template.rtf"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">doc.title = </span>"Documented Classes"<span class="s3">;</span></p>
-<p class="p2"><br></p>
-<p class="p1">// set the fonts</p>
-<p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica"</span>, 12));</p>
-<p class="p3">doc.string = result;</p>
-<p class="p2"><br></p>
-<p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 18), 0, titleString.size);</p>
-<p class="p2"><br></p>
-<p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 16), thirdPartyIndex, thirdParty.size);</p>
-<p class="p2"><br></p>
-<p class="p3">extensionsIndex.notNil.if({</p>
-<p class="p3"><span class="Apple-tab-span">	</span>doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 16), extensionsIndex, extensions.size);</p>
-<p class="p3">});</p>
-<p class="p2"><br></p>
-<p class="p3">headingFont = <span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 14);</p>
-<p class="p3">headingIndices.do({<span class="s1">|item|</span> doc.setFont(headingFont, *item)});</p>
-<p class="p2"><br></p>
-<p class="p1">// find the underlines for help links. Apparently faster than storing them above.</p>
-<p class="p3">underlineStarts = doc.string.findAll(<span class="s2">"["</span>).reverse + 1;</p>
-<p class="p3">underlineRanges = doc.string.findAll(<span class="s2">"]"</span>).reverse - underlineStarts;</p>
-<p class="p2"><br></p>
-<p class="p3">underlineStarts.do({<span class="s1">|item, i|</span> doc.selectRange(item, underlineRanges[i]); doc.underlineSelection;});</p>
-<p class="p2"><br></p>
-<p class="p3">doc.selectRange(undocIndex, undoc.size);<span class="Apple-converted-space"> </span></p>
-<p class="p3">doc.underlineSelection;</p>
-<p class="p2"><br></p>
-<p class="p3">doc.selectRange(0,0);</p>
-<p class="p3">doc.editable_(<span class="s1">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p1">// keeps window title as it should be!</p>
-<p class="p3">doc.mouseDownAction = { {doc.title = <span class="s2">"Documented Classes"</span>;}.defer(0.00001) };</p>
-<p class="p2"><br></p>
-<p class="p3">{doc.removeUndo;}.defer(0.001);</p>
-</body>
-</html>
diff --git a/Help/help-scripts/Show All Documented Extension Classes.html b/Help/help-scripts/Show All Documented Extension Classes.html
deleted file mode 100644
index 7fed8f0..0000000
--- a/Help/help-scripts/Show All Documented Extension Classes.html	
+++ /dev/null
@@ -1,187 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #0019b7}
-span.s2 {color: #606060}
-span.s3 {color: #000000}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">// trolls the help extension help directories and compiles a doc with links</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">var</span> path, doc, result, headingIndices, headingFont, excluded, addFunc;</p>
-<p class="p3"><span class="s1">var</span> underlineStarts, underlineRanges, titleString, thirdParty, thirdPartyIndex;</p>
-<p class="p3"><span class="s1">var</span> extensions, extensionsIndex, extensionFunc, extensionsRoots, extensionsFolders;</p>
-<p class="p3"><span class="s1">var</span> undoc, undocIndex;</p>
-<p class="p2"><br></p>
-<p class="p3">path = <span class="s1">PathName</span>.new(<span class="s2">"Help/"</span>);</p>
-<p class="p4"><br></p>
-<p class="p3">headingIndices = <span class="s1">List</span>.new;</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">titleString = </span>"A Generated List of all Documented Extension Classes"<span class="s3">;</span></p>
-<p class="p5"><span class="s3">undoc = </span>"*Show All Undocumented Classes"<span class="s3">;</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">result = titleString ++ </span><span class="s1">Char</span><span class="s3">.nl ++ </span><span class="s1">Char</span><span class="s3">.nl ++ </span>"Below is an automatically generated list of all documented extension classes (i.e. those whose class and help files are in /Library/Application Support/SuperCollider/Extensions or ~/Library/Application Support/SuperCollider/Extensions), sorted by directory.\n\nFor a list of undocumented classes click here:"<span class="s3"> + </span><span class="s1">Char</span><span class="s3">.tab;</span></p>
-<p class="p2"><br></p>
-<p class="p3">undocIndex = result.size;</p>
-<p class="p2"><br></p>
-<p class="p3">result = result ++ undoc ++ <span class="s1">Char</span>.nl ++ <span class="s1">Char</span>.nl;</p>
-<p class="p2"><br></p>
-<p class="p1">// put included third party libraries at the end</p>
-<p class="p5"><span class="s3">excluded = [</span><span class="s1">PathName</span><span class="s3">(</span>"Help/crucial"<span class="s3">), </span><span class="s1">PathName</span><span class="s3">(</span>"Help/JITLib"<span class="s3">)];</span></p>
-<p class="p2"><br></p>
-<p class="p1">// this func trolls the directory and harvests the descriptions</p>
-<p class="p6"><span class="s3">addFunc = {</span>|folderPathName|</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> classFiles, heading, currentFile, currentFileString, temp;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>classFiles = <span class="s2">""</span>;<span class="Apple-tab-span">	</span></p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>folderPathName.files.do({<span class="s1">|item|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> nameString, nameIndex, end;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nameString = item.fileName.split($.).at(0);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(nameString.asSymbol.asClass.notNil, {<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFile = <span class="s1">File</span>(item.fullPath, <span class="s2">"r"</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFile.readAllString;</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// fix accent acute (remove it)</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString.findAll(<span class="s2">"\'8"</span>).reverseDo({ <span class="s1">|i|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.copyFromStart(i-2) ++</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString.copyToEnd(i+2);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFile.close;</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// strip RTF gunk</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.stripRTF;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nameIndex = currentFileString.find(nameString);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(nameIndex.notNil, {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.drop(nameIndex);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>end = currentFileString.find(<span class="s2">"\n"</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if( end.notNil, {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>end = end - 1;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.copyFromStart(end);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// remove tab stops</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.reject({<span class="s1">|item|</span>item == $\t});</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// remove commas, hyphens, and spaces</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>while({(currentFileString[nameString.size] == $,) ||<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(currentFileString[nameString.size] == $ ) ||<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(currentFileString[nameString.size] == $-)},</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{currentFileString = currentFileString.copyFromStart(nameString.size -1) ++</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString.copyToEnd(nameString.size + 1);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(currentFileString.size > nameString.size, {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.insert(nameString.size, <span class="s2">"\t"</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});},<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{<span class="Apple-tab-span">	</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = nameString;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>}</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>// add square brackets</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.insert(nameString.size, <span class="s2">"]"</span>);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>currentFileString = currentFileString.insert(0, <span class="s2">"["</span>);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>classFiles = classFiles ++ <span class="s1">Char</span>.tab ++ currentFileString ++ <span class="s1">Char</span>.nl;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>if(classFiles.size > 0, {</p>
-<p class="p1"><span class="s3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>//heading = folderPathName.fileName;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>heading = folderPathName.fullPath;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>headingIndices.add([result.size, heading.size]);</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>result = result ++ heading ++ <span class="s1">Char</span>.nl ++ <span class="s1">Char</span>.nl ++ classFiles ++ <span class="s1">Char</span>.nl;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>folderPathName.foldersWithoutCVS.do({<span class="s1">|folder|</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(excluded.detect({<span class="s1">|item|</span> item.fileName == folder.fileName; }).isNil,<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>{addFunc.value(folder);}</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>);<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3">};</p>
-<p class="p2"><br></p>
-<p class="p1">//addFunc.value(path);</p>
-<p class="p2"><br></p>
-<p class="p1">// Check for Extensions Folders and add if they exist</p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">extensionsRoots = [</span><span class="s1">PathName</span><span class="s3">(</span>"/Library/Application Support/SuperCollider/Extensions"<span class="s3">),<span class="Apple-converted-space"> </span></span></p>
-<p class="p5"><span class="s3"><span class="Apple-tab-span">	</span></span><span class="s1">PathName</span><span class="s3">(</span>"~/Library/Application Support/SuperCollider/Extensions"<span class="s3">)];</span></p>
-<p class="p2"><br></p>
-<p class="p3">extensionsRoots.any({<span class="s1">|item|</span> item.pathMatch.size > 0 }).if({</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionsFolders = <span class="s1">List</span>.new;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionFunc = { <span class="s1">|path|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>path.folders.do({<span class="s1">|item|</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>item.fullPath.containsi(<span class="s2">"help"</span>).if({ extensionsFolders.add(item)},{<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>extensionFunc.value(item);});</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>};</p>
-<p class="p2"><span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionsRoots.do({<span class="s1">|item|</span> extensionFunc.value(item); });</p>
-<p class="p3"><span class="Apple-tab-span">	</span>result = result ++ <span class="s2">"\n\n"</span>;<span class="Apple-tab-span">	</span></p>
-<p class="p1">//<span class="Apple-tab-span">	</span>result = result ++ "\n------------------------\n\n";</p>
-<p class="p1">//<span class="Apple-tab-span">	</span>extensions = "Extensions:";</p>
-<p class="p1">//<span class="Apple-tab-span">	</span>extensionsIndex = result.size;</p>
-<p class="p1">//<span class="Apple-tab-span">	</span>result = result ++ extensions + Char.nl + Char.nl;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>extensionsFolders.do({<span class="s1">|item|</span> addFunc.value(item);});</p>
-<p class="p2"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p3">});</p>
-<p class="p2"><br></p>
-<p class="p1">// Third Party Libraries</p>
-<p class="p1">//result = result ++ "\n------------------------\n\n";</p>
-<p class="p1">//</p>
-<p class="p1">//thirdParty = "Included Third Party Libraries:";</p>
-<p class="p1">//thirdPartyIndex = result.size;</p>
-<p class="p1">//</p>
-<p class="p1">//result = result ++ thirdParty + Char.nl + Char.nl;</p>
-<p class="p1">//</p>
-<p class="p1">//excluded.do({|item| addFunc.value(item); result = result ++ "\n------------\n\n";});</p>
-<p class="p2"><br></p>
-<p class="p1">//doc = Document.new("Documented Classes");</p>
-<p class="p2"><br></p>
-<p class="p1">// this sets basic tab stops and line spacing</p>
-<p class="p5"><span class="s3">doc = </span><span class="s1">Document</span><span class="s3">.open(</span><span class="s1">File</span><span class="s3">.getcwd ++ </span>"/"<span class="s3"> ++ </span>"Help/help-scripts/tab-template.rtf"<span class="s3">);</span></p>
-<p class="p2"><br></p>
-<p class="p5"><span class="s3">doc.title = </span>"Documented Extension Classes"<span class="s3">;</span></p>
-<p class="p2"><br></p>
-<p class="p1">// set the fonts</p>
-<p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica"</span>, 12));</p>
-<p class="p3">doc.string = result;</p>
-<p class="p2"><br></p>
-<p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 18), 0, titleString.size);</p>
-<p class="p2"><br></p>
-<p class="p1">//doc.setFont(Font("Helvetica-Bold", 16), thirdPartyIndex, thirdParty.size);</p>
-<p class="p2"><br></p>
-<p class="p3">extensionsIndex.notNil.if({</p>
-<p class="p3"><span class="Apple-tab-span">	</span>doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 16), extensionsIndex, extensions.size);</p>
-<p class="p3">});</p>
-<p class="p2"><br></p>
-<p class="p3">headingFont = <span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 14);</p>
-<p class="p3">headingIndices.do({<span class="s1">|item|</span> doc.setFont(headingFont, *item)});</p>
-<p class="p2"><br></p>
-<p class="p1">// find the underlines for help links. Apparently faster than storing them above.</p>
-<p class="p3">underlineStarts = doc.string.findAll(<span class="s2">"["</span>).reverse + 1;</p>
-<p class="p3">underlineRanges = doc.string.findAll(<span class="s2">"]"</span>).reverse - underlineStarts;</p>
-<p class="p2"><br></p>
-<p class="p3">underlineStarts.do({<span class="s1">|item, i|</span> doc.selectRange(item, underlineRanges[i]); doc.underlineSelection;});</p>
-<p class="p2"><br></p>
-<p class="p3">doc.selectRange(undocIndex, undoc.size);<span class="Apple-converted-space"> </span></p>
-<p class="p3">doc.underlineSelection;</p>
-<p class="p2"><br></p>
-<p class="p3">doc.selectRange(0,0);</p>
-<p class="p3">doc.editable_(<span class="s1">false</span>);</p>
-<p class="p2"><br></p>
-<p class="p1">// keeps window title as it should be!</p>
-<p class="p3">doc.mouseDownAction = { {doc.title = <span class="s2">"Documented Classes"</span>;}.defer(0.00001) };</p>
-<p class="p2"><br></p>
-<p class="p3">{doc.removeUndo;}.defer(0.001);</p>
-</body>
-</html>
diff --git a/Help/help-scripts/Show All Undocumented Classes.html b/Help/help-scripts/Show All Undocumented Classes.html
deleted file mode 100644
index c21eee6..0000000
--- a/Help/help-scripts/Show All Undocumented Classes.html	
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
-span.s1 {color: #0019b7}
-span.s2 {color: #000000}
-span.s3 {font: 10.0px Monaco; color: #000000}
-span.s4 {color: #606060}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1">// Generates a list of all classes for which there are no help files.</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s1">var</span> paths, doc, result, addFunc;</p>
-<p class="p3"><span class="s1">var</span> titleString, infoString;</p>
-<p class="p3"><span class="s1">var</span> documentedClasses, undocumentedClasses, classesStartIndex;</p>
-<p class="p3"><span class="s1">var</span> documented, documentedIndex;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">paths = [</span><span class="s1">PathName</span><span class="s2">(</span>"Help/"<span class="s2">), </span><span class="s1">PathName</span><span class="s2">(</span>"/Library/Application Support/SuperCollider/Extensions"<span class="s2">),<span class="Apple-converted-space"> </span></span></p>
-<p class="p4"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s1">PathName</span><span class="s2">(</span>"~/Library/Application Support/SuperCollider/Extensions"<span class="s2">)];</span></p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">titleString = </span>"A Generated List of all Undocumented Classes"<span class="s3">;</span></p>
-<p class="p5"><br></p>
-<p class="p4"><span class="s2">infoString = </span>"Below is an alphabetical list of all classes which have no help files. This includes classes from CRUCIAL-LIBRARY, JITLib, and other third party libraries you may have installed. Note that many of these are either private classes not intended for direct use, abstract superclasses (such as Clock), or currently non-functioning or vestigial classes (such as the image synthesis classes from SC3d5). Nevertheless this is a good place to look for undocumented functionality. Note that some of these classes are covered in overviews, tutorials, etc.\n\nClicking on any of the Class Names below will open a Class Browser. For a list of documented classes click here:\n\n"<span class="s2">;</span></p>
-<p class="p2"><br></p>
-<p class="p3">result = titleString ++ <span class="s1">Char</span>.nl ++ <span class="s1">Char</span>.nl ++ infoString;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">documented = </span>"*Show All Documented Classes"<span class="s2">;</span></p>
-<p class="p3">documentedIndex = result.size;</p>
-<p class="p2"><br></p>
-<p class="p3">result = result ++ documented ++ <span class="s1">Char</span>.nl ++ <span class="s1">Char</span>.nl;</p>
-<p class="p2"><br></p>
-<p class="p3">documentedClasses = <span class="s1">List</span>.new;</p>
-<p class="p2"><br></p>
-<p class="p1">// compile list of documented classes and compare with master class list</p>
-<p class="p1">// WAY faster than searching for individual files</p>
-<p class="p6"><span class="s2">addFunc = {</span>|folderPathName|</p>
-<p class="p3"><span class="Apple-tab-span">	</span>folderPathName.fullPath.containsi("help").if({<span class="Apple-tab-span">	</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>folderPathName.files.do({<span class="s1">|item|</span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="s1">var</span> nameString;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>nameString = item.fileName.split($.).at(0);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>if(nameString.asSymbol.asClass.notNil, {<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>documentedClasses.add(nameString.asSymbol.asClass);</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p2"><br></p>
-<p class="p3"><span class="Apple-tab-span">	</span>folderPathName.foldersWithoutCVS.do({<span class="s1">|folder|</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>addFunc.value(folder);</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3">};</p>
-<p class="p2"><br></p>
-<p class="p3">paths.do(addFunc);</p>
-<p class="p2"><br></p>
-<p class="p3">undocumentedClasses = <span class="s1">Class</span>.allClasses.difference(documentedClasses);</p>
-<p class="p2"><br></p>
-<p class="p3">classesStartIndex = result.size;</p>
-<p class="p2"><br></p>
-<p class="p3">undocumentedClasses.do({<span class="s1">|item|</span><span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> name;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>name = item.name;</p>
-<p class="p1"><span class="s2"><span class="Apple-tab-span">	</span></span>// weed out metaclasses</p>
-<p class="p3"><span class="Apple-tab-span">	</span>name.isMetaClassName.not.if({<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>result = result ++ <span class="s1">Char</span>.nl ++ name.asString;<span class="Apple-converted-space"> </span></p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3">});</p>
-<p class="p2"><br></p>
-<p class="p3">result = result ++ <span class="s1">Char</span>.nl;</p>
-<p class="p2"><br></p>
-<p class="p4"><span class="s2">doc = </span><span class="s1">Document</span><span class="s2">.new(</span>"Undocumented Classes"<span class="s2">);</span></p>
-<p class="p1">//doc = Document.open("Help/help-scripts/tab-template.rtf");</p>
-<p class="p1">//doc.title = "Undocumented Classes";</p>
-<p class="p2"><br></p>
-<p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s4">"Helvetica"</span>, 12));</p>
-<p class="p3">doc.string = result;</p>
-<p class="p2"><br></p>
-<p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s4">"Helvetica-Bold"</span>, 18), 0, titleString.size);</p>
-<p class="p2"><br></p>
-<p class="p3">doc.selectRange(documentedIndex, documented.size);<span class="Apple-converted-space"> </span></p>
-<p class="p3">doc.underlineSelection;</p>
-<p class="p2"><br></p>
-<p class="p1">// Click on name opens class browser</p>
-<p class="p3">doc.mouseDownAction = { <span class="s1">arg</span> document;</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="s1">var</span> line;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>line = document.currentLine;</p>
-<p class="p3"><span class="Apple-tab-span">	</span>if((document.selectionStart > classesStartIndex) && (line.size > 0), {</p>
-<p class="p3"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>(line ++ <span class="s4">".browse"</span>).interpret</p>
-<p class="p3"><span class="Apple-tab-span">	</span>});</p>
-<p class="p3"><span class="Apple-converted-space"> </span>};</p>
-<p class="p2"><span class="Apple-converted-space"> </span></p>
-<p class="p3">doc.selectRange(0,0);</p>
-<p class="p3">doc.editable_(<span class="s1">false</span>);</p>
-<p class="p3">{doc.removeUndo;}.defer(0.1);</p>
-</body>
-</html>
diff --git a/Help/help-scripts/tab-template.html b/Help/help-scripts/tab-template.html
deleted file mode 100644
index 055df46..0000000
--- a/Help/help-scripts/tab-template.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.42">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-</body>
-</html>
diff --git a/Help/interfaces/matchItem.html b/Help/interfaces/matchItem.html
deleted file mode 100644
index 6d26f12..0000000
--- a/Help/interfaces/matchItem.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<title></title>
-<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="949.46">
-<style type="text/css">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0018b8}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #a41c14}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #a41c14; min-height: 12.0px}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14; min-height: 12.0px}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #000000}
-span.s3 {color: #0018b8}
-span.s4 {font: 12.0px Helvetica}
-span.s5 {color: #606060}
-span.s6 {color: #a41c14}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {font: 9.0px Monaco; color: #a41c14}
-span.s9 {font: 12.0px Helvetica; color: #0018b8}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class="p1"><span class="s1"><b>matchItem<span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></span><b>test if object fulfils a constraint</b><span class="s1"><b><span class="Apple-tab-span">	</span></b></span></p>
-<p class="p2"><br></p>
-<p class="p3"><span class="s2"><b>Implemented by: </b><a href="../Core/Object.html"><b>Object</b></a><b>,<span class="Apple-converted-space">  </span></b><a href="../Collections/Collection.html"><b>Collection</b></a><b>, </b><a href="../Core/Nil.html"><b>Nil</b></a><b>, </b><a href="../Core/Kernel/Function.html"><b>Function</b></a></span></p>
-<p class="p4"><br></p>
-<p class="p1">matchItem(item) may be passed to different objects that behave as constraints. More Objects may be conceived to implement matchItem to extend the interface.</p>
-<p class="p2"><br></p>
-<p class="p1">See also: <a href="../Collections/Dictionary.html"><span class="s3">Dictionary</span></a> <b>matchAt</b>.</p>
-<p class="p2"><br></p>
-<p class="p5"><b>implementations:</b></p>
-<p class="p6"><br></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><a href="../Core/Object.html"><span class="s3"><b>Object</b></span></a><b>:matchItem(item)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Test if <b>item</b> is identical to <b>object.</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>a = [1, 2, 3, <span class="s5">"wort"</span>, <span class="s5">"1"</span>, [pi, 2pi]];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.any { <span class="s3">|x|</span> x.matchItem(3) }; <span class="s6">// true</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a.any { <span class="s3">|x|</span> x.matchItem(5) }; <span class="s6">// false</span></p>
-<p class="p10"><span class="s2"><span class="Apple-tab-span">	</span></span><span class="s7"><span class="Apple-tab-span">	</span></span><span class="s2">a.any { </span><span class="s3">|x|</span><span class="s2"> x.matchItem(</span><span class="s5">"wort"</span><span class="s2">) }; </span>// false, because "wort" == "wort" but not identical.</p>
-<p class="p8"><br></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span></b><a href="../Collections/Collection.html"><span class="s3"><b>Collection</b></span></a><b>:matchItem(item)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Test if <b>item</b> is included in <b>collection.</b></p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>a = [1, 2, 3, <span class="s5">"wort"</span>, <span class="s5">"1"</span>, [pi, 2pi]];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.any { <span class="s3">|x|</span> x.matchItem(pi) }; <span class="s6">// true</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span></p>
-<p class="p8"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p1"><span class="Apple-tab-span">	</span><a href="../Core/Nil.html"><span class="s3"><b>Nil</b></span></a><b>:matchItem(item)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>returns true (<a href="../Core/Nil.html"><span class="s3">Nil</span></a> serves as a "joker", a stand-in for anything).</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>a = [<span class="s3">nil</span>, 1, 2, 3, <span class="s5">"wort"</span>, <span class="s5">"1"</span>, [pi, 2pi]];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.any { <span class="s3">|x|</span> x.matchItem(10000.rand) }; <span class="s6">// true always</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p7"><span class="s8"><span class="Apple-tab-span">	</span><a href="../Core/Kernel/Function.html"><span class="s9"><b>Function</b></span></a></span><b>:matchItem(item)</b></p>
-<p class="p7"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b>Test <b>item</b> by passing it to a function which should return a <a href="../Core/Boolean.html"><span class="s3">Boolean</span></a>.</p>
-<p class="p8"><b><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></b></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span></span><span class="Apple-tab-span">	</span>a = [10, 20, 30, { <span class="s3">|item|</span> item.isPrime }];</p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span>a.any { <span class="s3">|x|</span> x.matchItem(3) }; <span class="s6">// true</span></p>
-<p class="p9"><span class="s4"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></span>a.any { <span class="s3">|x|</span> x.matchItem(4) }; <span class="s6">// false</span></p>
-<p class="p9"><span class="Apple-tab-span">	</span><span class="s4"><span class="Apple-tab-span">	</span></span>a.any { <span class="s3">|x|</span> x.matchItem(10) }; <span class="s6">// true</span></p>
-<p class="p11"><span class="Apple-tab-span">	</span><span class="Apple-tab-span">	</span></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-<p class="p12"><br></p>
-</body>
-</html>
diff --git a/HelpSource/Browse.html b/HelpSource/Browse.html
index 59bac81..d40b13c 100644
--- a/HelpSource/Browse.html
+++ b/HelpSource/Browse.html
@@ -157,7 +157,8 @@ function updateTree() {
                 res += "+";
             else if(v.installed=="missing")
                 res += "(not installed) ";
-            res += x[0].toUpperCase()+"</span><a href='"+v.path+".html'>"+v.title+"</a></div><div class='result_summary'>"+v.summary+"</div>";
+            var docLink = v.hasOwnProperty("oldhelp")?v.oldhelp:(v.path+".html");
+            res += x[0].toUpperCase()+"</span><a href='"+docLink+"'>"+v.title+"</a></div><div class='result_summary'>"+v.summary+"</div>";
         }
 
         res += "</div>";
diff --git a/HelpSource/Classes/Array.schelp b/HelpSource/Classes/Array.schelp
index e76baba..714afc4 100644
--- a/HelpSource/Classes/Array.schelp
+++ b/HelpSource/Classes/Array.schelp
@@ -8,7 +8,7 @@ Arrays are ArrayedCollections whose slots may contain any object. Arrays have a
 
 strong::Literal Arrays:: can be created at compile time, and are very efficient. See link::Reference/Literals:: for information.
 
-For handling strong::multidimensional arrays::, there are specific methods which are covered in the helpfile link::Language/J concepts in SC::.
+For handling strong::multidimensional arrays::, there are specific methods which are covered in the helpfile link::Guides/J-concepts-in-SC::.
 
 note::
 For Arrays, the code::add:: method may or may not return the same Array object. It will add the argument to the receiver if there is space, otherwise it returns a new Array object with the argument added. Thus the proper usage of code::add:: with an Array is to always assign the result as follows:
@@ -45,6 +45,10 @@ Array.with(7, 'eight',  9).postln;
 
 copymethod:: Collection *fill
 
+copymethod:: Collection *fill2D
+
+copymethod:: Collection *fillND
+
 copymethod:: Collection *newFrom
 
 copymethod:: ArrayedCollection *geom
@@ -53,6 +57,17 @@ copymethod:: ArrayedCollection *series
 
 copymethod:: ArrayedCollection *iota
 
+copymethod:: Collection *interpolation
+
+copymethod:: Collection *rand
+
+copymethod:: Collection *rand2
+
+copymethod:: Collection *linrand
+
+copymethod:: Collection *exprand
+
+copymethod:: Collection *fib
 
 
 
@@ -60,6 +75,65 @@ copymethod:: ArrayedCollection *iota
 
 InstanceMethods::
 
+copymethod:: ArrayedCollection -at
+
+copymethod:: ArrayedCollection -put
+
+copymethod:: ArrayedCollection -insert
+
+copymethod:: ArrayedCollection -overWrite
+
+copymethod:: ArrayedCollection -clipAt
+
+copymethod:: ArrayedCollection -wrapAt
+
+copymethod:: ArrayedCollection -foldAt
+
+copymethod:: ArrayedCollection -slice
+
+copymethod:: ArrayedCollection -clipPut
+
+copymethod:: ArrayedCollection -wrapPut
+
+copymethod:: ArrayedCollection -foldPut
+
+copymethod:: ArrayedCollection -swap
+
+copymethod:: ArrayedCollection -replace
+
+copymethod:: ArrayedCollection -++
+
+copymethod:: ArrayedCollection -add
+
+copymethod:: ArrayedCollection -addAll
+
+copymethod:: ArrayedCollection -addFirst
+
+copymethod:: ArrayedCollection -removeAt
+
+copymethod:: ArrayedCollection -collect
+
+copymethod:: ArrayedCollection -do
+
+copymethod:: ArrayedCollection -reverseDo
+
+copymethod:: ArrayedCollection -deepCollect
+
+copymethod:: ArrayedCollection -reshape
+
+copymethod:: ArrayedCollection -bubble
+
+copymethod:: ArrayedCollection -unbubble
+
+copymethod:: ArrayedCollection -windex
+
+copymethod:: ArrayedCollection -size
+
+copymethod:: ArrayedCollection -normalize
+
+copymethod:: ArrayedCollection -normalizeSum
+
+copymethod:: ArrayedCollection -plot
 
 method::reverse
 Returns a new Array whose elements are reversed. The receiver is unchanged.
diff --git a/HelpSource/Classes/ArrayedCollection.schelp b/HelpSource/Classes/ArrayedCollection.schelp
index af99ad7..b14de55 100644
--- a/HelpSource/Classes/ArrayedCollection.schelp
+++ b/HelpSource/Classes/ArrayedCollection.schelp
@@ -40,26 +40,6 @@ Array.iota(2, 3);
 Array.iota(2, 3, 4);
 ::
 
-method::fill2D
-Creates a 2 dimensional ArrayedCollection of the given sizes. The items are determined by evaluation of the supplied function. The function is passed row and column indexes as arguments. See link::Guides/J-concepts-in-SC::
-code::
-Array.fill2D(2, 4, 0);
-Array.fill2D(3, 4, { arg r, c; r*c+c; });
-::
-
-method::fill3D
-Creates a 3 dimensional ArrayedCollection of the given sizes. The items are determined by evaluation of the supplied function. The function is passed plane, row and column indexes as arguments. See link::Guides/J-concepts-in-SC::
-code::
-Array.fill3D(2, 3, 4, { arg p, r, c; p; });
-::
-
-method::fillND
-Creates a N dimensional ArrayedCollection where N is the size of the array strong::dimensions::. The items are determined by evaluation of the supplied function. The function is passed N number of indexes as arguments.
-code::
-Array.fillND([4, 4], { arg a, b; a+b; });			//2d
-Array.fillND([4, 4, 4], { arg a, b, c; a+b*c; });		//3d
-Array.fillND([1, 2, 3, 4], { arg a, b, c, d; b+d; });		//4d
-::
 
 INSTANCEMETHODS::
 
@@ -95,6 +75,7 @@ code::
 y = [ 1, 2, 3 ];
 y.wrapAt(3).postln; // this returns the value at index 0
 y.wrapAt(4).postln; // this returns the value at index 1
+y.wrapAt([-2, 1])   // index can also be a collection or negative numbers
 ::
 
 method::foldAt
@@ -182,7 +163,7 @@ y.postln;
 ::
 
 method::add
-Adds an item to an ArrayedCollection if there is space. If there is not any space left in the object then this method returns a new ArrayedCollection. For this reason, you should always assign the result of add to a variable - never depend on add changing the receiver.
+Adds an item to an ArrayedCollection if there is space. This method may return a new ArrayedCollection. For this reason, you should always assign the result of add to a variable - never depend on code::add:: changing the receiver.
 code::
 (
 // z and y are the same object
@@ -204,7 +185,7 @@ y.postln;
 ::
 
 method::addAll
-Adds all the elements of aCollection to the contents of the receiver, possibly returning a new collection.
+Adds all the elements of aCollection to the contents of the receiver. This method may return a new ArrayedCollection. For this reason, you should always assign the result of code::addAll:: to a variable - never depend on add changing the receiver.
 code::
 (
 // in this case a new object is returned
@@ -217,7 +198,7 @@ y.postln;
 ::
 
 method::extend
-Extends the receiver to match strong::size:: by adding a number of strong::item::s. If strong::size:: is less than receiver size then truncate.
+Extends the object to match strong::size:: by adding a number of strong::item::s. If strong::size:: is less than receiver size then truncate. This method may return a new ArrayedCollection. For this reason, you should always assign the result of code::extend:: to a variable - never depend on add changing the receiver.
 code::
 (
 var y, z;
@@ -229,7 +210,7 @@ y.postln;
 ::
 
 method::fill
-Inserts the item into the contents of the receiver, possibly returning a new collection. note::the difference between this and link::Classes/Collection#fill#Collection's *fill::.::
+Inserts the item into the contents of the receiver. note::the difference between this and link::Classes/Collection#fill#Collection's *fill::.::
 code::
 (
 var z;
@@ -240,7 +221,7 @@ z.fill([1,2,3,4]).postln;
 ::
 
 method::insert
-Inserts the item into the contents of the receiver, possibly returning a new collection.
+Inserts the item into the contents of the receiver. This method may return a new ArrayedCollection. For this reason, you should always assign the result of code::insert:: to a variable - never depend on add changing the receiver.
 code::
 (
 // in this case a new object is returned
@@ -277,10 +258,10 @@ z.postln;
 ::
 
 method::grow
-Increase the size of the ArrayedCollection by strong::sizeIncrease:: number of slots,  possibly returning a new collection.
+Increase the size of the ArrayedCollection by strong::sizeIncrease:: number of slots, possibly returning a new collection.
 
 method::growClear
-Increase the size of the ArrayedCollection by strong::sizeIncrease:: number of slots,  returning a new collection with link::Classes/Nil::s in the added slots.
+Increase the size of the ArrayedCollection by strong::sizeIncrease:: number of slots, returning a new collection with link::Classes/Nil::s in the added slots.
 code::
 // Compare:
 [4,5,6].grow(5);
diff --git a/HelpSource/Classes/BendResponder.schelp b/HelpSource/Classes/BendResponder.schelp
index 9f14af5..6052c16 100644
--- a/HelpSource/Classes/BendResponder.schelp
+++ b/HelpSource/Classes/BendResponder.schelp
@@ -4,7 +4,7 @@ related:: Classes/MIDIFunc, Classes/MIDIdef, Classes/MIDIResponder, Classes/CCRe
 categories:: External Control>MIDI
 
 Description::
-note:: As of SC 3.5 link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: are the recommended way of registering for incoming MIDI messages. They are faster, safer, and have more logical argument order than the old MIDI responder classes. The older class MIDIResponder, and its subclasses NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, CCResponder, and ProgramChangeResponder are maintained for legacy code only.::
+note:: SC 3.5 added the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. These are faster, and aim to have a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef::. They still lack some features of the MIDIresponder classes.::
 
 ClassMethods::
 
@@ -26,7 +26,7 @@ argument::install
 If true, install the responder automatically so it is active and ready to respond. If false, then it will be inactive.
 
 argument::swallowEvent
-If true, then if the midi event is matched, cease testing any further responders.
+If true, then if the midi event is matched, cease testing any further responders. Note that doing this will prevent any other responders of this type from responding, including ones added behind the scenes in classes. Note also that this functionality is sensitive to the order in which responders are added. 
 
 InstanceMethods::
 
diff --git a/HelpSource/Classes/Buffer.schelp b/HelpSource/Classes/Buffer.schelp
index 3da4840..ad27fd5 100644
--- a/HelpSource/Classes/Buffer.schelp
+++ b/HelpSource/Classes/Buffer.schelp
@@ -740,7 +740,8 @@ method:: fill, fillMsg
 Starting at the index startAt, set the next numFrames to value. Additional ranges may be included in the same message.
 
 method:: copyData, copyMsg
-Starting at the index srcSamplePos, copy numSamples samples from this to the destination buffer buf starting at dstSamplePos. If numSamples is negative, the maximum number of samples possible is copied. The default is start from 0 in the source and copy the maximum number possible starting at 0 in the destination.
+Starting at the index srcStartAt, copy numSamples samples from this to the destination buffer buf starting at dstStartAt. If numSamples is negative, the maximum number of samples possible is copied. The default is start from 0 in the source and copy the maximum number possible starting at 0 in the destination.
+
 discussion::
 Note: This method used to be called copy, but this conflicts with the method for object-copying. Therefore Buffer:copy is now intended to create a copy of the client-side Buffer object. Its use for copying buffer data on the server is deprecated. If you see a deprecation warning, the data will still be copied on the server and your code will still work, but you should update your code for the new method name.
 code::
diff --git a/HelpSource/Classes/Bus.schelp b/HelpSource/Classes/Bus.schelp
index 2bef449..72cdc73 100644
--- a/HelpSource/Classes/Bus.schelp
+++ b/HelpSource/Classes/Bus.schelp
@@ -203,10 +203,9 @@ subsection:: Monitoring with an oscilloscope
 method:: scope
 Displays a bus in a link::Classes/Stethoscope::, using the Bus' link::#-numChannels::, link::#-index::, and link::#-rate:: properties.
 code::
-Server.default = s = Server.internal
 s.boot
-b=Bus.audio(s,2);
-a={SinOsc.ar([330,440], 0, 0.4)}.play(s,b) //you won't hear this if you only have two channels
+b=Bus.audio(s, 2);
+a={SinOsc.ar([330,440], 0, 0.4)}.play(s, b) //you won't hear this if you only have two channels
 b.scope
 
 a.free;
@@ -215,7 +214,6 @@ b.free;
 
 Examples::
 code::
-s = Server.local;
 s.boot;
 
 (
diff --git a/HelpSource/Classes/CCResponder.schelp b/HelpSource/Classes/CCResponder.schelp
index 8ce5819..4a0945e 100644
--- a/HelpSource/Classes/CCResponder.schelp
+++ b/HelpSource/Classes/CCResponder.schelp
@@ -4,7 +4,7 @@ related:: Classes/MIDIFunc, Classes/MIDIdef, Classes/MIDIResponder, Classes/Note
 categories:: External Control>MIDI
 
 Description::
-note:: As of SC 3.5 link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: are the recommended way of registering for incoming MIDI messages. They are faster, safer, and have more logical argument order than the old MIDI responder classes. The older class MIDIResponder, and its subclasses NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, CCResponder, and ProgramChangeResponder are maintained for legacy code only.::
+note:: SC 3.5 added the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. These are faster, and aim to have a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef:: They still lack some features of the MIDIresponder classes.::
 ClassMethods::
 
 method::new
@@ -28,7 +28,7 @@ argument::install
 If true, install the responder automatically so it is active and ready to respond. If false, then it will be inactive.
 
 argument::swallowEvent
-If true, then if the midi event is matched, cease testing any further responders.
+If true, then if the midi event is matched, cease testing any further responders. Note that doing this will prevent any other responders of this type from responding, including ones added behind the scenes in classes. Note also that this functionality is sensitive to the order in which responders are added. 
 
 InstanceMethods::
 
diff --git a/HelpSource/Classes/Class.schelp b/HelpSource/Classes/Class.schelp
index 84c7ecf..d20e023 100644
--- a/HelpSource/Classes/Class.schelp
+++ b/HelpSource/Classes/Class.schelp
@@ -10,7 +10,7 @@ InstanceMethods::
 
 method::browse
 
-Open a graphical browser for this Class. (OSX only). Shows methods, arguments, variables, subclasses, and has buttons for navigating to the superclass, source, helpfile, cvs, etc.
+Open a graphical browser for this Class. Shows methods, arguments, variables, subclasses, and has buttons for navigating to the superclass, source, helpfile, etc.
 
 method::findMethod
 
@@ -22,7 +22,7 @@ As above, but climb the class tree to see if the method is inherited from a supe
 
 method::dumpAllMethods
 
-Post all instance methods which instances of this class responde too, including inherited ones. this.class.dumpAllMethods will post all class methods which this class responds to.
+Post all instance methods which instances of this class responde too, including inherited ones. code::this.class.dumpAllMethods:: will post all class methods which this class responds to.
 
 method::dumpByteCodes
 
@@ -40,7 +40,7 @@ method::dumpFullInterface
 
 Post all the class and instance methods that this class responds to (i.e. those defined in this class and those inherited by it).
 
-method::openHelpFile
+method::help
 
 Opens the help file for this Class if it exists.
 
@@ -52,7 +52,9 @@ method::helpFileForMethod
 
 Opens the helpfile for the class in which the responding method is implemented.
 
+code::
 Array.helpFileForMethod('select'); // This will open the Collection helpfile
+::
 
 method::asClass
 
diff --git a/HelpSource/Classes/Clip.schelp b/HelpSource/Classes/Clip.schelp
index faef231..4164279 100644
--- a/HelpSource/Classes/Clip.schelp
+++ b/HelpSource/Classes/Clip.schelp
@@ -33,7 +33,7 @@ Examples::
 
 code::
 
-Server.internal.boot;
+s.boot;
 
 { Clip.ar(SinOsc.ar(440, 0, 0.2), -0.07, 0.07) }.scope;
 
diff --git a/HelpSource/Classes/CocoaDocument.schelp b/HelpSource/Classes/CocoaDocument.schelp
index f60c31a..2bb1675 100644
--- a/HelpSource/Classes/CocoaDocument.schelp
+++ b/HelpSource/Classes/CocoaDocument.schelp
@@ -15,6 +15,169 @@ ClassMethods::
 
 private::initClass, prSetDefaultFont, prSetSyntaxColorTheme, prDefaultUsesAutoInOutdent_, prnumberOfOpen, prGetIndexOfListener
 
+method:: wikiBrowse
+If set to code::true::, underlining text will create a wiki link.
+argument:: value
+An instance of link::Classes/Boolean::. Default value is code::true::.
+
+method:: wikiDir
+Get/set the default wiki directory. The default is dependent on link::Classes/Document#implementationClass::.
+argument:: path
+The file system path to the directory. An instance of link::Classes/String::.
+
+
+method:: postColor
+Get / set the listeners pen color.
+argument:: col
+An instance of link::Classes/Color::.
+discussion::
+code::
+CocoaDocument.postColor; // returns current post color
+CocoaDocument.postColor_(Color.red);
+CocoaDocument.postColor_(Color.green);
+CocoaDocument.postColor_(Color.blue);
+CocoaDocument.postColor_(Color.black);
+(
+r = Routine({
+	10.do({
+		Document.postColor_(Color.rand);
+		"There is no blue without yellow and without orange.".postln;
+		0.5.rand.yield;
+	});
+	CocoaDocument.postColor_(Color.black);
+});
+)
+
+r.play;
+r.stop;
+::
+
+method:: setTheme
+Sets the theme for syntax colorization.
+argument:: themeName
+A link::Classes/Symbol::, defining the name of the theme that you've put into code::Document.themes::.
+discussion::
+The Document class has a preset theme called code::'default'::, which is set as follows (default SC colors):
+code::
+themes = (
+	default: (
+		classColor: Color(0, 0, 0.75, 1),
+		textColor: Color(0, 0, 0, 1),
+		stringColor: Color(0.375, 0.375, 0.375, 1),
+		commentColor: Color(0.75, 0, 0, 1),
+		symbolColor: Color(0, 0.45, 0, 1),
+		numberColor: Color(0, 0, 0, 1)
+	)
+);
+::
+If you want to have your own themes for syntax colorization, you need to put your color set into code::CocoaDocument.themes:: first (preferably in startup.rtf file) and call code::setTheme:: by giving it the name of the theme you've added to "themes" earlier:
+code::
+//putting a custom color theme into Document.themes
+CocoaDocument.themes.put
+(\myTheme,
+	(
+		classColor: Color.new255(53, 74, 187),
+		textColor: Color.new255(0, 0, 0),
+		stringColor: Color.new255(96, 129, 158),
+		commentColor: Color.new255(206, 27, 28),
+		symbolColor: Color.new255(57, 154, 20),
+		numberColor: Color.new255(157, 80, 65)
+	)
+);
+
+//and then calling setTheme with the name:
+CocoaDocument.setTheme('myTheme');
+//to see the current theme:
+CocoaDocument.theme;
+::
+You can switch to the default theme anytime by calling:
+code::
+CocoaDocument.setTheme('default');
+::
+Next time you invoke syntaxColorize, the color theme set by setTheme will be used for syntax colorization. If you want to change the background color for the document window and selected text, in order to make them fit with your syntax colorization theme, see the help for the link::Classes/CocoaDocument#background:: and link::Classes/CocoaDocument#selectedBackground:: methods for Document.
+
+
 InstanceMethods::
 
 private::prUsesAutoInOutdent_, prIsEditable_, prSetTitle, prGetTitle, prGetFileName, prSetFileName, prGetBounds, prSetBounds, prBalanceParens, prclose, prinsertText, prinitByIndex, prGetLastIndex, propen, prinitByString, prSetBackgroundColor, prGetBackgroundColor, prSetSelectedBackgroundColor, prGetSelectedBackgroundColor, prSelectLine, prSetFont
+
+
+method:: balanceParens
+Starting from the current selection, increase the selection until matching parentheses are selected.
+argument:: level
+Do this as many times to find ever wider brackets. Set to code::inf:: for outmost.
+discussion::
+code::
+((((
+CocoaDocument.current.balanceParens(1);
+CocoaDocument.current.balanceParens(3);
+CocoaDocument.current.balanceParens(inf);
+))))
+::
+
+method:: background
+Get / set the the Document's background color.
+argument:: color
+An instance of link::Classes/Color::.
+discussion::
+code::
+(
+a = Document("background", "'hardly see anything");
+a.background_(Color.blue(alpha:0.8)); // notice that alpha controls the window transparency
+)
+::
+
+method:: stringColor
+Gets or sets the string color of a specific range of already printed text. Default is the whole document. To set the listener text color for posting, see: link::Classes/Document#postColor::.
+argument:: color
+An instance of link::Classes/Color::.
+argument:: rangeStart
+An link::Classes/Integer::. Default is -1.
+argument:: rangeSize
+An link::Classes/Integer::. Default value is 0
+discussion::
+code::
+// Select the following code in parentheses and execute it
+(
+Document.current.stringColor_(Color.rand(0.2, 0.8),
+	Document.current.selectedRangeLocation + 13,
+	16);
+)
+// Watch me change color
+::
+
+method:: selectedBackground
+Gets or sets the document's background color for selected text. Applies to the whole document instance.
+argument:: color
+An instance of link::Classes/Color::.
+discussion::
+code::
+Document.current.selectedBackground; // returns default color
+(
+w = Document.new("Test", "Here is a selected text...");
+w.selectedBackground_(Color.new255(120, 180, 110));
+w.selectRange(10, 13);
+)
+::
+
+method:: syntaxColorize
+Syntax colorize a document.
+
+method:: makeWikiPage
+Creates a wiki page.
+argument:: wikiWord
+An instance of link::Classes/String::. The name of the document.
+argument:: extension
+An instance of link::Classes/String::. The file extension.
+argument:: directory
+An instance of link::Classes/String::. The directory in which to save the page.
+discussion::
+code::
+Document.current.makeWikiPage("test1");
+::
+
+method:: openWikiPage
+Opens/creates a wiki page out of the currently selected text.
+
+
+
diff --git a/HelpSource/Classes/Collection.schelp b/HelpSource/Classes/Collection.schelp
index 99a5e42..cd8a8b0 100644
--- a/HelpSource/Classes/Collection.schelp
+++ b/HelpSource/Classes/Collection.schelp
@@ -27,6 +27,45 @@ method::fill
 Creates a Collection of the given size, the elements of which are determined by evaluation the given function. The function is passed the index as an argument.
 code::
 Array.fill(4, { arg i; i * 2 });
+Bag.fill(14, { arg i; i.rand });
+::
+
+argument::size
+The size of the collection which is returned. If nil, it returns an empty collection. If an array of sizes is given, the resulting collection has the appropriate dimensions (see: link::#*fillND).
+::
+
+code::
+Array.fill([2, 2, 3], { arg i, j, k;  i * 100 + (j * 10) + k });
+::
+
+argument::function
+The function which is called for each new element - the index is passed in as a first argument. The function be anything that responds to the message "value".
+
+code::
+Array.fill(10, { arg i; 2 ** i });
+Array.fill(10, Pxrand([0, 1, 2], inf).iter);
+Array.fill(10, 7); // an object that doesn't respond with a new value is just repeatedly added.
+::
+
+method::fill2D
+Creates a 2 dimensional Collection of the given sizes. The items are determined by evaluation of the supplied function. The function is passed row and column indexes as arguments. See link::Guides/J-concepts-in-SC::
+code::
+Array.fill2D(2, 4, 0);
+Array.fill2D(3, 4, { arg r, c; r*c+c; });
+::
+
+method::fill3D
+Creates a 3 dimensional Collection of the given sizes. The items are determined by evaluation of the supplied function. The function is passed plane, row and column indexes as arguments. See link::Guides/J-concepts-in-SC::
+code::
+Array.fill3D(2, 3, 4, { arg p, r, c; p; });
+::
+
+method::fillND
+Creates a N dimensional Collection where N is the size of the array strong::dimensions::. The items are determined by evaluation of the supplied function. The function is passed N number of indexes as arguments. See link::Guides/J-concepts-in-SC::
+code::
+Array.fillND([4, 4], { arg a, b; a+b; });				// 2D
+Array.fillND([4, 4, 4], { arg a, b, c; a+b*c; });		// 3D
+Array.fillND([1, 2, 3, 4], { arg a, b, c, d; b+d; });	// 4D
 ::
 
 INSTANCEMETHODS::
@@ -45,6 +84,7 @@ code::
 List[].isEmpty;
 ::
 
+
 subsection::Adding and Removing
 
 method::add
@@ -255,6 +295,31 @@ List[1, 2, 3, 4].minIndex({ arg item, i; item + 10 });
 List[3.2, 12.2, 13, 0.4].minIndex;
 ::
 
+method::maxSizeAtDepth
+Returns the maximum size of all subcollections at a certain depth (dimension)
+
+argument::rank
+The depth at which the size of the collection is measured
+
+code::
+Set[Set[1, 2, 3], [Set[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(2);
+Set[Set[1, 2, 3], [Set[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(1);
+Set[Set[1, 2, 3], [Set[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(0);
+Set[].maxSizeAtDepth(0);
+Set[[]].maxSizeAtDepth(0);
+Set[[]].maxSizeAtDepth(1);
+::
+
+method::maxDepth
+Returns the maximum depth of all subcollections.
+
+argument::max
+Internally used only.
+
+code::
+Set[Set[1, 2, 3], Set[Set[41, 52], 5, 6], 1, 2, 3].maxDepth
+::
+
 method::iter
 Returns a link::Classes/Routine:: that returns the elements one by one.
 code::
diff --git a/HelpSource/Classes/Color.schelp b/HelpSource/Classes/Color.schelp
index ab56cd7..f5e831a 100644
--- a/HelpSource/Classes/Color.schelp
+++ b/HelpSource/Classes/Color.schelp
@@ -239,7 +239,7 @@ code::
 (
 w = Window.new.front;
 w.view.background_(Color.white);
-w.drawHook = {
+w.drawFunc = {
 	// set the Color
 	Pen.translate(200, 200);
 	30.do{
diff --git a/HelpSource/Classes/Complex.schelp b/HelpSource/Classes/Complex.schelp
index 811946b..a748734 100644
--- a/HelpSource/Classes/Complex.schelp
+++ b/HelpSource/Classes/Complex.schelp
@@ -196,7 +196,7 @@ var field = { |x| { |y| Complex(x / n + offset * zoom, y / n + offset * zoom) }
 
 w = Window("Julia set", bounds:Rect(200, 200, xs, ys)).front;
 w.view.background_(Color.black);
-w.drawHook = {
+w.drawFunc = {
 	n.do { |x|
 		n.do { |y|
 			var z = field[x][y];
@@ -213,4 +213,4 @@ w.drawHook = {
 
 fork({ 6.do { w.refresh; 2.wait } }, AppClock)
 )
-::
\ No newline at end of file
+::
diff --git a/HelpSource/Classes/Condition.schelp b/HelpSource/Classes/Condition.schelp
index 9bf2c19..2f6755d 100644
--- a/HelpSource/Classes/Condition.schelp
+++ b/HelpSource/Classes/Condition.schelp
@@ -1,6 +1,6 @@
 CLASS::Condition
 categories::Scheduling
-summary::block execution of a thread
+summary::Block the execution of a thread
 
 CLASSMETHODS::
 
@@ -10,13 +10,22 @@ Create a new instance, set the strong::test:: variable.
 INSTANCEMETHODS::
 
 method::test
-Return the test variable (boolean).
+Answer whether the condition will block or not (boolean).
 
 method::wait
-Wait until the condition is true and signalled.
+Wait until the condition is true and signalled. This only works in a Routine. This method yields a symbol (\hang), so that the clock doesn't reschedule the Routine.
+code::
+c = Condition(false); fork { 0.5.wait; "started ...".postln; c.wait;  "... and finished.".postln };
+c.test = true;
+c.signal;
+::
 
 method::hang
-Wait for strong::value:: time, regardless of test.
+Wait for strong::value:: time, regardless of test. This only works in a Routine. This method yields a symbol (\hang), so that the clock doesn't reschedule the Routine.
+code::
+c = Condition.new; fork { 0.5.wait; "started ...".postln; c.hang;  "... and finished.".postln };
+c.unhang;
+::
 
 method::signal
 If link::#-test:: is true, reschedule blocked threads.
@@ -87,3 +96,27 @@ Routine {
 // continue
 c.unhang;
 ::
+
+Waiting for Synths to end (waitForFree) uses a Condition implicitly:
+code::
+(
+SynthDef(\help, {
+	var mod = LFNoise2.kr(ExpRand(0.5, 2)) * 0.5;
+	var snd =  mod * Blip.ar(Rand(200, 800) * (mod + 1));
+	Out.ar(0, snd);
+	FreeSelf.kr(mod < 0); // free the synth when amplitude goes below 0.
+}).add;
+)
+
+(
+fork {
+	10.do {
+		"started a synth".postln;
+		Synth(\help).waitForFree;
+		"This one ended. Wait a second,  I will start the next one.".postln;
+		1.wait;
+	};
+	"This is it.".postln;
+}
+);
+::
\ No newline at end of file
diff --git a/HelpSource/Classes/DC.schelp b/HelpSource/Classes/DC.schelp
index abc18fa..235db1e 100644
--- a/HelpSource/Classes/DC.schelp
+++ b/HelpSource/Classes/DC.schelp
@@ -31,9 +31,7 @@ code::
 {LeakDC.ar(DC.ar(0.5))}.play;
 
 
-//For these examples, you might want to boot the internal server
-Server.default =s = Server.internal;
-s.boot;
+// show scope
 s.scope
 ::
 
diff --git a/HelpSource/Classes/DemandEnvGen.schelp b/HelpSource/Classes/DemandEnvGen.schelp
index f7b37ec..f691ee5 100644
--- a/HelpSource/Classes/DemandEnvGen.schelp
+++ b/HelpSource/Classes/DemandEnvGen.schelp
@@ -315,8 +315,6 @@ code::
 
 
 
-Server.internal.boot;
-
 // hardsyncing a saw
 (
 	{
@@ -407,4 +405,3 @@ Server.internal.boot;
 	}.play;
 )
 ::
-
diff --git a/HelpSource/Classes/DiskIn.schelp b/HelpSource/Classes/DiskIn.schelp
index 6054a9b..8d01a1d 100644
--- a/HelpSource/Classes/DiskIn.schelp
+++ b/HelpSource/Classes/DiskIn.schelp
@@ -41,6 +41,7 @@ Examples::
 code::
 s.boot; // start the server
 
+// examples below will use this synthdef
 (
 SynthDef("help-Diskin", { arg bufnum = 0;
 	Out.ar(0, DiskIn.ar(1, bufnum));
@@ -48,32 +49,7 @@ SynthDef("help-Diskin", { arg bufnum = 0;
 )
 ::
 
-subsection:: OSC Messaging Style
-code::
-// allocate a disk i/o buffer
-s.sendMsg("/b_alloc", 0, 65536, 1);
-
-// open an input file for this buffer, leave it open
-s.sendMsg("/b_read", 0, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff", 0, 65536, 0, 1);
-
-// create a diskin node
-s.sendMsg("/s_new", "help-Diskin", x = s.nextNodeID, 1, 1);
-
-s.sendMsg("/b_close", 0); // close the file (very important!)
-
-
-// again
-// don't need to reallocate and Synth is still reading
-s.sendMsg("/b_read", 0, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff", 0, 0, 0, 1);
-
-s.sendMsg("/n_free", x); // stop reading
-
-s.sendMsg("/b_close", 0); // close the file.
-
-s.sendMsg("/b_free", 0); // frees the buffer
-::
-
-subsection:: Using Buffer (Object Style)
+subsection:: Normal usage (with Buffer; "Object Style")
 code::
 b = Buffer.cueSoundFile(s, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff", 0, 1);
 
@@ -122,3 +98,28 @@ b = Buffer.cueSoundFile(s,Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff",0
 
 ::
 
+subsection:: OSC Messaging Style
+code::
+// allocate a disk i/o buffer
+s.sendMsg("/b_alloc", 0, 65536, 1);
+
+// open an input file for this buffer, leave it open
+s.sendMsg("/b_read", 0, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff", 0, 65536, 0, 1);
+
+// create a diskin node
+s.sendMsg("/s_new", "help-Diskin", x = s.nextNodeID, 1, 1);
+
+s.sendMsg("/b_close", 0); // close the file (very important!)
+
+
+// again
+// don't need to reallocate and Synth is still reading
+s.sendMsg("/b_read", 0, Platform.resourceDir +/+ "sounds/a11wlk01-44_1.aiff", 0, 0, 0, 1);
+
+s.sendMsg("/n_free", x); // stop reading
+
+s.sendMsg("/b_close", 0); // close the file.
+
+s.sendMsg("/b_free", 0); // frees the buffer
+::
+
diff --git a/HelpSource/Classes/Document.schelp b/HelpSource/Classes/Document.schelp
index 0314e28..7141627 100644
--- a/HelpSource/Classes/Document.schelp
+++ b/HelpSource/Classes/Document.schelp
@@ -107,86 +107,11 @@ If a document begins with the link::Classes/String::, code::"/*RUN*/"::, then th
 argument:: value
 An instance of link::Classes/Boolean::. Default value is code::true::.
 
-method:: wikiBrowse
-If set to code::true::, underlining text will create a wiki link.
-argument:: value
-An instance of link::Classes/Boolean::. Default value is code::true::.
-
 method:: implementationClass
 The editor implementation specific class which will handle Documents.
 argument:: value
 A class for implementing Document, e.g. link::Classes/CocoaDocument::.
 
-method:: postColor
-Get / set the listeners pen color.
-argument:: col
-An instance of link::Classes/Color::.
-discussion::
-code::
-Document.postColor; // returns current post color
-Document.postColor_(Color.red);
-Document.postColor_(Color.green);
-Document.postColor_(Color.blue);
-Document.postColor_(Color.black);
-(
-r = Routine({
-	10.do({
-		Document.postColor_(Color.rand);
-		"There is no blue without yellow and without orange.".postln;
-		0.5.rand.yield;
-	});
-	Document.postColor_(Color.black);
-});
-)
-
-r.play;
-r.stop;
-::
-
-method:: setTheme
-Sets the theme for syntax colorization.
-argument:: themeName
-A link::Classes/Symbol::, defining the name of the theme that you've put into code::Document.themes::.
-discussion::
-The Document class has a preset theme called code::'default'::, which is set as follows (default SC colors):
-code::
-themes = (
-	default: (
-		classColor: Color(0, 0, 0.75, 1),
-		textColor: Color(0, 0, 0, 1),
-		stringColor: Color(0.375, 0.375, 0.375, 1),
-		commentColor: Color(0.75, 0, 0, 1),
-		symbolColor: Color(0, 0.45, 0, 1),
-		numberColor: Color(0, 0, 0, 1)
-	)
-);
-::
-If you want to have your own themes for syntax colorization, you need to put your color set into code::Document.themes:: first (preferably in startup.rtf file) and call code::setTheme:: by giving it the name of the theme you've added to "themes" earlier:
-code::
-//putting a custom color theme into Document.themes
-Document.themes.put
-(\myTheme,
-	(
-		classColor: Color.new255(53, 74, 187),
-		textColor: Color.new255(0, 0, 0),
-		stringColor: Color.new255(96, 129, 158),
-		commentColor: Color.new255(206, 27, 28),
-		symbolColor: Color.new255(57, 154, 20),
-		numberColor: Color.new255(157, 80, 65)
-	)
-);
-
-//and then calling setTheme with the name:
-Document.setTheme('myTheme');
-//to see the current theme:
-Document.theme;
-::
-You can switch to the default theme anytime by calling:
-code::
-Document.setTheme('default');
-::
-Next time you invoke syntaxColorize, the color theme set by setTheme will be used for syntax colorization. If you want to change the background color for the document window and selected text, in order to make them fit with your syntax colorization theme, see the help for the link::Classes/Document#background:: and link::Classes/Document#selectedBackground:: methods for Document.
-
 subsection:: Path Utilities
 
 Utilities and settings for dealing with documents such as super collider code files. By default the document directory is SuperCollider's application directory.
@@ -201,11 +126,6 @@ code::
 Document.dir = "~/Documents/SuperCollider";
 ::
 
-method:: wikiDir
-Get/set the default wiki directory. The default is dependent on link::Classes/Document#implementationClass::.
-argument:: path
-The file system path to the directory. An instance of link::Classes/String::.
-
 method:: standardizePath
 argument:: p
 The file system path to the directory. An instance of link::Classes/String::.
@@ -287,18 +207,6 @@ Get / set the title (same as link::Classes/Document#name::).
 argument:: argName
 An instance of link::Classes/String::.
 
-method:: background
-Get / set the the Document's background color.
-argument:: color
-An instance of link::Classes/Color::.
-discussion::
-code::
-(
-a = Document("background", "'hardly see anything");
-a.background_(Color.blue(alpha:0.8)); // notice that alpha controls the window transparency
-)
-::
-
 method:: alwaysOnTop
 Get/set whether a document is always on top.
 argument:: boolean
@@ -438,24 +346,6 @@ Document.current.keyUpAction = { arg ...args; args.postln };
 Document.current.keyUpAction = nil;
 ::
 
-method:: makeWikiPage
-Creates a wiki page.
-argument:: wikiWord
-An instance of link::Classes/String::. The name of the document.
-argument:: extension
-An instance of link::Classes/String::. The file extension.
-argument:: directory
-An instance of link::Classes/String::. The directory in which to save the page.
-discussion::
-code::
-Document.current.makeWikiPage("test1");
-::
-
-method:: openWikiPage
-Opens/creates a wiki page out of the currently selected text.
-
-
-
 subsection:: Editing Content
 
 method:: selectLine
@@ -480,19 +370,6 @@ Document.current.selectRange(Document.current.selectedRangeLocation + 3, 150);
 )
 ::
 
-method:: balanceParens
-Starting from the current selection, increase the selection until matching parentheses are selected.
-argument:: level
-Do this as many times to find ever wider brackets. Set to code::inf:: for outmost.
-discussion::
-code::
-((((
-Document.current.balanceParens(1);
-Document.current.balanceParens(3);
-Document.current.balanceParens(inf);
-))))
-::
-
 method:: selectionStart
 Returns the start of a current selection.
 code::
@@ -587,42 +464,6 @@ Document.current.font_(Font("Impact", 14),
 // Watch me change font
 ::
 
-method:: stringColor
-Gets or sets the string color of a specific range of already printed text. Default is the whole document. To set the listener text color for posting, see: link::Classes/Document#postColor::.
-argument:: color
-An instance of link::Classes/Color::.
-argument:: rangeStart
-An link::Classes/Integer::. Default is -1.
-argument:: rangeSize
-An link::Classes/Integer::. Default value is 0
-discussion::
-code::
-// Select the following code in parentheses and execute it
-(
-Document.current.stringColor_(Color.rand(0.2, 0.8),
-	Document.current.selectedRangeLocation + 13,
-	16);
-)
-// Watch me change color
-::
-
-method:: selectedBackground
-Gets or sets the document's background color for selected text. Applies to the whole document instance.
-argument:: color
-An instance of link::Classes/Color::.
-discussion::
-code::
-Document.current.selectedBackground; // returns default color
-(
-w = Document.new("Test", "Here is a selected text...");
-w.selectedBackground_(Color.new255(120, 180, 110));
-w.selectRange(10, 13);
-)
-::
-
-method:: syntaxColorize
-Syntax colorize a document.
-
 method:: underlineSelection
 Underlines the current selection of a Document.
 
diff --git a/HelpSource/Classes/Env.schelp b/HelpSource/Classes/Env.schelp
index f3e760a..ff38c0b 100644
--- a/HelpSource/Classes/Env.schelp
+++ b/HelpSource/Classes/Env.schelp
@@ -1,21 +1,38 @@
 class:: Env
 summary:: Specification for a segmented envelope
-related:: Classes/EnvGen, Classes/InterplEnv
+related:: Classes/EnvGen, Classes/IEnvGen, Classes/Pseg
 categories:: Control, Envelopes
 
 description::
-An Env is a specification for a segmented envelope. Envs can be used both server-side, by an link::Classes/EnvGen:: within a link::Classes/SynthDef::, and clientside, with methods such as link::#-at:: and link::#-asStream::, below.
+An Env is a specification for a segmented envelope. Envs can be used both server-side, by an link::Classes/EnvGen:: or an link::Classes/IEnvGen:: within a link::Classes/SynthDef::, and clientside, with methods such as link::#-at:: and link::#-asStream::, below.
 
 An Env can have any number of segments which can stop at a particular value or loop several segments when sustaining. It can have several shapes for its segments.
 
 code::
-Env.new([0,1,0.9,0], [0.1,0.5, 1],[-5,0,-5]).plot;
+Env.new([0, 1, 0.9, 0], [0.1, 0.5, 1],[-5, 0, -5]).plot;
 ::
 
 The envelope is conceived as a sequence of emphasis::nodes:: (not to be confused with a synthesis-Node) each of which has three parameters: a target level, a time duration from the previous node, and a shape. The three parameters for each node are kept in separate arrays as explained below.
 
 note::
-In some other computer music systems and situations we deal with control points or breakpoints. If these control points have associated x positions (say in an envelope GUI, see link::Classes/EnvelopeView::) they must be converted to time differences between points to be used as nodes in a Env object.
+In some situations we deal with control points or breakpoints. If these control points have associated x positions (say in an envelope GUI, see link::Classes/EnvelopeView::) they must be converted to time differences between points to be used as nodes in a Env object. The methods link::#*xyc:: and link::#*pairs:: can be used to specify an envelope in terms of points.
+::
+
+code::
+// an envelope in a synth
+(
+{
+	var env = Env([0, 1, 0.5, 1, 0], [0.01, 0.5, 0.02, 0.5]);
+	SinOsc.ar(470) * EnvGen.kr(env, doneAction: 2)
+}.play
+)
+// an envelope to control a parameter in a pattern
+(
+Pbind(
+	\note,  Env([0, 12, 6, 13, 0], [1, 5, 2, 10]),
+	\dur, 0.1
+).play
+)
 ::
 
 ClassMethods::
@@ -26,10 +43,11 @@ method::new
 Create a new envelope specification.
 
 argument::levels
-an array of levels. The first level is the initial value of the envelope.
+an array of levels. The first level is the initial value of the envelope. When the envelope is used with an EnvGen, levels can be any UGen (new level values are updated only when the envelope has reached that point).
+When the array of levels contains itself an array, the envelope returns a multichannel output (for a discussion, see link::#multichannel expansion::)
 
 argument::times
-an array of durations of segments in seconds. There should be one fewer duration than there are levels.
+an array of durations of segments in seconds. There should be one fewer duration than there are levels, but if shorter, the array is extended by wrapping around the given values.
 
 argument::curve
 a link::Classes/Symbol::, link::Classes/Float::, or an link::Classes/Array:: of those. Determines the shape of the envelope segments.
@@ -53,6 +71,25 @@ an link::Classes/Integer:: or nil. The envelope will sustain at the release node
 argument::loopNode
 an link::Classes/Integer:: or nil. If not nil the output will loop through those nodes startign at the loop node to the node immediately preceeding the release node, before back to the loop node, and so on. Note that the envelope only transitions to the release node when released. Examples are below. The loop is escaped when a gate signal is sent, when the output transitions to the release node, as described below.
 
+argument::offset
+an offset to all time values (only applies in link::Classes/IEnvGen::).
+
+discussion::
+code::
+(
+{
+	var env = Env([0.0, 0.5, 0.0, 1.0, 0.9, 0.0], [0.05, 0.1, 0.01, 1.0, 1.5], -4);
+	var envgen = EnvGen.ar(env, doneAction: 2);
+	SinOsc.ar(
+		envgen * 1000 + 440
+	) * envgen * 0.1
+}.play
+);
+
+::
+
+
+
 method::newClear
 Creates a new envelope specification with strong::numSegments:: for filling in later.
 discussion::
@@ -81,19 +118,20 @@ the curvature of the envelope.
 
 discussion::
 code::
-s.boot;
-Env.linen(1, 2, 3, 0.6).test.plot;
+
 Env.linen(0.1, 0.2, 0.1, 0.6).test.plot;
-Env.linen(1, 2, 3, 0.6, 'sine').test.plot;
-Env.linen(1, 2, 3, 0.6, 'welch').test.plot;
+Env.linen(1, 2, 3, 0.6).test.plot;
+Env.linen(1, 2, 3, 0.6, \sine).test.plot;
+Env.linen(1, 2, 3, 0.6, \welch).test.plot;
 Env.linen(1, 2, 3, 0.6, -3).test.plot;
 Env.linen(1, 2, 3, 0.6, -3).test.plot;
+Env.linen(1, 2, 3, 0.6, [[\sine, \welch, \lin, \exp]]).plot;
 ::
 
 method::triangle
 Creates a new envelope specification which has a triangle shape.
 
-argument::duration
+argument::dur
 the duration of the envelope.
 
 argument::level
@@ -107,7 +145,7 @@ Env.triangle(1, 1).test.plot;
 method::sine
 Creates a new envelope specification which has a hanning window shape.
 
-argument::duration
+argument::dur
 the duration of the envelope.
 
 argument::level
@@ -127,7 +165,7 @@ the duration of the attack portion.
 argument::releaseTime
 the duration of the release portion.
 
-argument::peakLevel
+argument::level
 the peak level of the envelope.
 
 argument::curve
@@ -141,8 +179,57 @@ Env.perc(0.001, 1, 1, -8).test.plot;	// change curvature
 Env.perc(1, 0.01, 1, 4).test.plot;	// reverse envelope
 ::
 
+
+method::pairs
+Creates a new envelope specification from coordinates / control points
+
+argument::pairs
+an array of pairs [[time, level], ...]
+
+argument::curve
+the curvature of the envelope.
+
+discussion::
+code::
+Env.pairs([[0, 1], [2.1, 0.5],  [3, 1.4]], \exp).plot;
+Env.pairs([[0, 1], [3, 1.4], [2.1, 0.5], [3, 4]], \exp).plot; // pairs are sorted according to time
+Env.pairs({ { 1.0.rand } ! 2 } ! 16, \exp).plot;
+::
+
+
+method::xyc
+Creates a new envelope specification from coordinates / control points with curvature.
+
+argument::xyc
+an array of triplets [[time, level, curve], ...]
+
+discussion::
+code::
+Env.xyc([[0, 1, \sin], [2.1, 0.5, \lin],  [3, 1.4, \lin]]).plot;
+Env.xyc([[2.1, 0.5, \lin], [0, 1, \sin], [3, 1.4, \lin]]).plot; // pairs are sorted according to time
+Env.xyc({ [1.0.rand, 10.0.rand, -4.rand2] } ! 16, \exp).plot;
+::
+
+
 subsection::Sustained Envelope Creation Methods
-The following methods create some frequently used envelope shapes which have a sustain segment.
+The following methods create some frequently used envelope shapes which have a sustain segment. They are typically used in SynthDefs in situations where at the time of starting the synth it is not known when it will end. Typical cases are external interfaces, midi input, or quickly varying TempoClock.
+
+code::
+(
+SynthDef(\env_help, { |out, gate = 1, amp = 0.1, release = 0.1|
+	var env = Env.adsr(0.02, release, amp);
+	var gen = EnvGen.kr(env, gate, doneAction: 2);
+	Out.ar(out, PinkNoise.ar(1 ! 2) * gen)
+}).add
+);
+
+a = Synth(\env_help);
+b = Synth(\env_help, [\release, 2]);
+a.set(\gate, 0); // alternatively, you can write a.release;
+b.set(\gate, 0);
+::
+
+
 
 method::adsr
 Creates a new envelope specification which is shaped like traditional analog attack-decay-sustain-release (adsr) envelopes.
@@ -172,11 +259,11 @@ discussion::
 code::
 Env.adsr(0.02, 0.2, 0.25, 1, 1, -4).test(2).plot;
 Env.adsr(0.001, 0.2, 0.25, 1, 1, -4).test(2).plot;
-Env.adsr(0.001, 0.2, 0.25, 1, 1, -4).test(0.45).plot;	//release after 0.45 sec
+Env.adsr(0.001, 0.2, 0.25, 1, 1, -4).test(0.45).plot;	// release after 0.45 sec
 ::
 
 method::dadsr
-As link::#*adsr:: above, but with it's onset delayed by strong::delayTime:: in seconds. The default delay is 0.1.
+As link::#*adsr:: above, but with its onset delayed by strong::delayTime:: in seconds. The default delay is 0.1.
 
 method::asr
 Creates a new envelope specification which is shaped like traditional analog attack-sustain-release (asr) envelopes.
@@ -200,6 +287,7 @@ Env.asr(0.001, 0.5, 1, -4).test(2).plot; // sharper attack
 Env.asr(0.02, 0.5, 1, 'linear').test(2).plot; // linear segments
 ::
 
+
 method::cutoff
 Creates a new envelope specification which has no attack segment. It simply sustains at the peak level until released. Useful if you only need a fadeout, and more versatile than link::Classes/Line::.
 
@@ -216,13 +304,162 @@ discussion::
 code::
 Env.cutoff(1, 1).test(2).plot;
 Env.cutoff(1, 1, 4).test(2).plot;
-Env.cutoff(1, 1, 'sine').test(2).plot;
+Env.cutoff(1, 1, \sine).test(2).plot;
+::
+
+method::circle
+Creates a new envelope specification which cycles through its values. For making a given envelope cyclic, you can use the instance method link::#-circle::
+
+argument::levels
+The levels through which the envelope passes.
+
+argument::times
+The time between subsequent points in the envelope, which may be a single value (number), or an array of them. If too short, the array is extended. In difference to the *new method, the size of the times array is the same as that of the levels, because it includes the loop time.
+
+argument::curve
+The curvature of the envelope, which may be a single value (number or symbol), or an array of them.  If too short, the array is extended. In difference to the *new method, the size of the curve array is the same as that of the levels, because it includes the loop time.
+
+
+discussion::
+code::
+{ SinOsc.ar(EnvGen.kr(Env.circle([0, 1, 0], [0.01, 0.5, 0.2])) * 440 + 200) * 0.2 }.play;
+{ SinOsc.ar(EnvGen.kr(Env.circle([0, 1, 0, 2, 0, 1, 0], [0.01, 0.3])) * 440 + 200) * 0.2 }.play;
+{ SinOsc.ar(EnvGen.kr(Env.circle([0, 1, 0, (2..4), 0, (1..3), 0], [0.01, 0.3])) * 440 + 200).sum * 0.2 }.play; // multichannel expanded levels
+::
+
+
+
+subsection::Multichannel expansion
+If one of the values within either levels, times, or curves is itself an array, the envelope expands to multiple channels wherever appropriate. This means that when such an envelope is passed to an EnvGen, this EnvGen will expand, and when the envelope is queried via the methods link::#-at:: or link::#-asSignal::, it will return an array of values.
+
+code::
+(
+{
+	var env = Env([0.0, 0.5, 0.0, [1.0, 1.25, 1.5], 0.9, 0.0], [0.05, 0.1, 0.01, 1.0, 1.5], -4);
+	var envgen = EnvGen.ar(env, doneAction: 2);
+	SinOsc.ar(
+		envgen * 1000 + 440
+	) * envgen * 0.1
+}.play
+);
+
+(
+{
+	var env = Env([1, [1, 2, 3], 0.5, 0.5, [3, 2, 1], 2], [1, 1, 0.5, 1], [[\exp, \sin]]);
+	env.plot;
+	Splay.ar(SinOsc.ar(EnvGen.kr(env) * 400 + 600)) * 0.1
+}.play;
+);
+
+
+(
+{
+	var levels = (1..30);
+	var env = Env([1, levels, 0.5, levels / 2.5, 2], [1, 0.15, 1, 0.25, 0.1], \exp);
+	Splay.ar(SinOsc.ar(EnvGen.kr(env) * 400 + 600)) * 0.1
+}.play;
+);
+
+
+// accessing the envlope by indexing
+
+e = Env([1, [1, 2, 3], 1], [1, 1], \exp);
+e.at(0.5);
+e.at(1.8);
+e.at(2);
+
+e = Env([1, 1, 1], [1, [1, 2, 3]], \exp);
+e.at(0.5);
+e.at(2);
+
+
+// multichannel levels
+
+Env([0.1, 1, 0.1], [1, [1, 2, 3]], \exp).plot;
+Env([0.1, 1, 0.1], [1, [1, 2, 3]], [\lin, [\lin, \exp, \sin]]).plot;
+
+Env([1, 1, 0.5, 3, 2], [1, 0.5, 1, 0.25], \exp).plot;
+Env([0, 1, 0, 2, 0] * [[1, 2, 3]], [1, 0.5, 1, 0.25], \lin).plot;
+
+
+// multichannel curves
+
+Env([0.01, 5, 1, 0.5] + 1, [1, 0.5, 1, 0.25], [[\lin, \sqr]]).plot;
+
+Env([0.01, 5, 1, 0.5, 0.001] + 1, [1, 0.5, 1, 0.25, 1], [[\lin, \cub, \sin, \cubed, \welch, \step, \exp]]).plot(bounds: Rect(30, 100, 500, 700));
+
+Env([0.01, 5, 1, 0.5, 0.001] + 1, [1, 0.5, 1, 0.25, 1], [(-4..4)]).plot(bounds: Rect(30, 100, 500, 700));
+Env([0.01, 5, 1, 0.5] + 1, [1, 0.5, 1, 0.25], [(-4..4)]).plot(bounds: Rect(30, 100, 500, 700));
+
+
+Env([[0, 0.01], 1, 0], [0.5, 0.5], [[\lin, \exp], \step]).plot;
+Env([[0, 0.01], 1, [0, 0.01]], [0.5, 1], [[\lin, \exp]]).plot;
+
+// multichannel times
+
+Env([[2, 1], 0], [[1, 2]], \lin).plot;
+Env([0, 1], [1/(1..5)], [(-4..4)]).plot(bounds: Rect(30, 100, 300, 700));
+Env([0, 1], [1/(1..5)], \lin).plot(bounds: Rect(30, 100, 300, 700));
+
+
+// mixed expansions
+
+Env([1, [ 1, 2, 3, 4, 5 ], 0.5, [3, 2, 1], 2], [1, 0.5, 1, 0.25], [[\exp, \lin]]).plot;
+Env([1, [ 1, 2, 3, 4, 5 ], 0.5, 4, 2], [1, 0.5, 1, 0.25], \exp).plot;
+
+
+// expanding control point envelopes
+
+Env.xyc([[2, 0.5, [\lin, \exp]], [0, 1, \lin], [3, 1.4, \lin]]).plot;
+Env.xyc({ [1.0.rand, 1.0.rand, {[\lin, \exp, \step].choose} ! 3] } ! 8).plot
+
+Env.xyc([[[2.0, 2.3], 0.5, \lin], [0, 1, \lin], [3, 1.4, \lin]]).plot; // multiple times
+
+
 ::
 
 InstanceMethods::
 
 private::prAsArray
 
+
+method::ar, kr
+Instead of using an link::Classes/EnvGen:: inside a UGen graph, this message does the same implicitly for convenience. Its argument order corresponds to the most common arguments.
+
+argument::doneAction
+
+An integer representing an action to be executed when the env is
+finished playing. This can be used to free the enclosing synth,
+etc. See link::Reference/UGen-doneActions::  for more detail.
+
+argument::gate
+
+This triggers the envelope and holds it open while > 0. If the
+Env is fixed-length (e.g. Env.linen, Env.perc), the gate argument
+is used as a simple trigger. If it is an sustaining envelope
+(e.g. Env.adsr, Env.asr), the envelope is held open until the
+gate becomes 0, at which point is released.
+
+If strong::gate:: < 0, force release with time code:: -1.0 - gate ::, see link::#forced_release:: below.
+
+
+argument::timeScale
+
+Scales the durations of the segments.
+
+discussion::
+code::
+{ Blip.ar(50, 200, Env.perc(1, 0.1, 0.2).kr(2)) }.play;
+(
+{
+	Blip.ar(
+		Env({ exprand(3, 2000.0) } ! 18, 0.2, \exp).kr,
+		200,
+		Env({ rrand(0.1, 0.2) } ! 18 ++ 0, 0.2).kr(2))
+	}.play;
+)
+::
+
 method::blend
 Blend two envelopes. Returns a new Env. See link::#blend:: example below.
 
@@ -249,8 +486,28 @@ a = Env([0.5, 1, 0], [1, 1]).plot;
 a.delay(1).plot;
 ::
 
+method::duration
+Set the total duration of times, by stretching them.
+discussion::
+code::
+e = Env([0, 1, 0], [1, 2]);
+e.duration;
+e.duration = 2;
+e.duration;
+::
+
+method::totalDuration
+Get the total duration of the envelope. In multi-channel envelopes, this is the duration of the longest one.
+discussion::
+code::
+e = Env([0, 1, 0], [[1, 2], 2]);
+e.duration;
+e.totalDuration;
+::
+
 method::circle
-circle from end to beginning over the time specified, with the curve specified.
+circle from end to beginning over the time specified, with the curve specified. See also the class method link::#*circle::
+
 discussion::
 code::
 (
@@ -296,11 +553,14 @@ argument::parent
 a window to place the plot in. If nil, one will be created for you.
 
 method::asSignal
-Returns a link::Classes/Signal:: of size strong::length:: created by sampling this Env at strong::length:: number of intervals.
+Returns a link::Classes/Signal:: of size strong::length:: created by sampling this Env at strong::length:: number of intervals. If the envelope has multiple channels (see link::#multichannel expansion::), this method returns an array of signals.
 
 method::asArray
 Converts the Env to an link::Classes/Array:: in a specially ordered format. This allows for Env parameters to be settable arguments in a SynthDef. See example below under link::#newClear::.
 
+method::asMultichannelArray
+Converts the Env to an link::Classes/Array:: in a specially ordered format, like link::#asArray::, however it always returns an array of these data sets, corresponding to the number of channels of the envelope.
+
 method::isSustained
 Returns true if this is a sustaining envelope, false otherwise.
 
@@ -316,9 +576,8 @@ a.exprange(42, 45).levels;
 (
 // Mapping an Env to an exponential frequency range:
 {
-	SinOsc.ar(EnvGen.ar(Env.perc(0.01, 0.2).exprange(40, 10000), doneAction: 2)
-		, 0, 0.1).dup;
-}.play(s)
+	SinOsc.ar(EnvGen.ar(Env.perc(0.01, 0.7).exprange(40, 10000), doneAction: 2)) * 0.2;
+}.play
 )
 ::
 
@@ -326,10 +585,29 @@ subsection::Client-side Access and Stream Support
 Sustain and loop settings have no effect in the methods below.
 
 method::at
-Returns the value of the Env at strong::time::.
+Returns the value of the Env at strong::time::. If the envelope has multiple channels, this method returns an array of levels.
+
+argument::time
+A number or an array of numbers to specify a cut in the envelope. If time is an array, it returns the corresponding levels of each time value, and if the envelope has multiple channels, it returns an array of values. A combination of both returns a two-dimensional array.
+
 discussion::
 code::
-Env.triangle(1, 1).at(0.5);
+e = Env.triangle(1, 1);
+e.at(0.5);
+e.at([0.5, 0.7]);
+
+e = Env([1, [1, 2, 3], 1], [1, 1], \exp);
+e.at(0.5);
+e.at(1.8);
+e.at(2);
+e.at([0.5, 1.2]);
+
+e = Env([1, 100, 1], [1, [1, 2, 3]], \exp);
+e.at(0.5);
+e.at(2);
+e.at([1, 2, 4]);
+
+
 ::
 
 method::embedInStream
@@ -358,8 +636,8 @@ s.boot; 	//.test below will run a synthesis example
 // different shaped segments: .plot graphs the Env
 Env.new([0,1, 0.3, 0.8, 0], [2, 3, 1, 4],'linear').test.plot;
 Env.new([0.001, 1, 0.3, 0.8, 0.001], [2, 3, 1, 4],'exponential').test.plot;
-Env.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4],'sine').test.plot;
-Env.new([0.001, 1, 0.3, 0.8, 0.001],[2,3,1,4],'welch').test.plot;
+Env.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4],\sine).test.plot;
+Env.new([0.001, 1, 0.3, 0.8, 0.001],[2,3,1,4],\welch).test.plot;
 Env.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4],'step').test.plot;
 Env.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4], -2).test.plot;
 Env.new([0, 1, 0.3, 0.8, 0], [2, 3, 1, 4], 2).test.plot;
@@ -409,38 +687,35 @@ The loop jumps back to the loop node. The endpoint of that segment is the goal l
 subsection::newClear
 code::
 (
-SynthDef(\help_Env_newClear, { |i_outbus=0, t_gate|
+SynthDef(\help_Env_newClear, { |out = 0, gate = 1|
 	var env, envctl;
 	// make an empty 4 segment envelope
 	env = Env.newClear(4);
 	// create a control argument array
-	envctl = Control.names([\env]).kr( env.asArray );
-	Out.ar(i_outbus, SinOsc.ar(EnvGen.kr(envctl, t_gate), 0, 0.3));
-}).send(s);
-)
-(
-s.bind {
-	// must not have more segments than the env above
-	e = Env([700,900,900,800], [1,1,1], \exp); // 3 segments
-	x = Synth(\help_Env_newClear, [\t_gate, 1]);
-	x.setn(\env, e.asArray);
-};
-)
-(
-// reset then play again
-e = Env([800,300,400,500,200], [1,1,1,1], \exp); // 4 segments
-x.setn(\env, e.asArray);
-x.set(\t_gate, 1);
+	envctl = \env.kr(env.asArray);
+	Out.ar(out, SinOsc.ar(EnvGen.kr(envctl, gate), 0) * -12.dbamp);
+}).add;
 )
-x.free;
+
+Synth(\help_Env_newClear, [\env, Env([700,900,900,800], [1,1,1], \exp)]); // 3 segments
+
+// reset then play again:
+Synth(\help_Env_newClear, [ \env, Env({ rrand(60, 70).midicps } ! 4, [1,1,1], \exp)]);
+
+// the same written as an event:
+(instrument: \help_Env_newClear, env: Env({ rrand(60, 70).midicps } ! 4, [1,1,1], \exp)).play;
 ::
 
+note:: The above technique currently doesn't work with multichannel expanded envelopes (See: link::#multichannel expansion::)::
+
+
+
 subsection::blend
 code::
 a = Env([0, 0.2, 1, 0.2, 0.2, 0], [0.5, 0.01, 0.01, 0.3, 0.2]);
 a.test.plot;
 
-b = Env([0, 0.4, 1, 0.2, 0.5, 0], [0.05, 0.4, 0.01, 0.1, 0.4]);
+b = Env([0, 0.4, 1, 0.2, 0.5, 0], [0.05, 0.4, [0.01, 0.1], 0.1, 0.4]);
 b.test.plot;
 
 (
@@ -456,16 +731,18 @@ Task({
 
 // blend in a SynthDef
 (
-SynthDef(\help_EnvBlend, { | fact = 0 |
-	Out.ar(0, EnvGen.kr(Env.perc.blend(Env.sine, fact), 1.0, doneAction: 2)
+SynthDef(\help_EnvBlend, { | factor = 0 |
+	Out.ar(0, EnvGen.kr(blend(Env.perc, Env.sine, factor), 1.0, doneAction: 2)
 		* SinOsc.ar(440,0,0.1)
 	)
-}).send(s));
+}).add
+);
 
 (
 {
-f = (0, 0.1..1);
-f.do({|fact| Synth(\help_EnvBlend, [\fact, fact.postln]); 1.wait;});
-}.fork;)
+	var factors = (0, 0.1..1);
+	factors.do {|f| Synth(\help_EnvBlend, [\factor, f.postln]); 1.wait };
+}.fork
+);
 ::
 
diff --git a/HelpSource/Classes/EnvGen.schelp b/HelpSource/Classes/EnvGen.schelp
index 0b5b3fc..b4d28c0 100644
--- a/HelpSource/Classes/EnvGen.schelp
+++ b/HelpSource/Classes/EnvGen.schelp
@@ -281,38 +281,42 @@ code::
 
 subsection::More examples
 
+For more information about the emphasis::control bus mapping:: used in the line code::a = Synth(\sine, [freq: f.asMap]);::, see link::Classes/Node#-map:: and link::Classes/Bus#-asMap::.
+
 code::
 
 // Changing an Env while playing
 (
 SynthDef(\env, { arg i_outbus=0;
-    var env, envctl;
-
-    // make a dummy 8 segment envelope
-    env = Env.newClear(8);
-
-    // create a control argument array
-    envctl = \env.kr( env.asArray );
-
-    ReplaceOut.kr(i_outbus, EnvGen.kr(envctl, doneAction: 2));
+	var env, envctl;
+	
+	// make a dummy 8 segment envelope
+	env = Env.newClear(8);
+	
+	// create a control argument array
+	envctl = \env.kr( env.asArray );
+	
+	ReplaceOut.kr(i_outbus, EnvGen.kr(envctl, doneAction: 2));
 }).add;
 )
 
 (
-SynthDef(\sine, {
-    Out.ar(0, SinOsc.ar(In.kr(0), 0, 0.2));
+SynthDef(\sine, { |freq = 0|
+	Out.ar(0, SinOsc.ar(freq, 0, 0.2));
 }).add;
 )
 
-s.sendMsg(\c_set, 0, 800);
+f = Bus.control(s, 1);
+f.set(800);
 
-s.sendMsg(\s_new, \sine, 1001, 1, 0);
+// use f's control bus value for frequency
+// i.e. *map* the control to read from the bus
+a = Synth(\sine, [freq: f.asMap]);
 
-e = Env([700, 900, 900, 800], [1, 1, 1]*0.4, \exp).asArray;
-s.sendBundle(nil, [\s_new, \env, 1002, 2, 1001], [\n_setn, 1002, \env, e.size] ++ e);
+Synth(\env, [i_outbus: f, env: Env([700, 900, 900, 800], [1, 1, 1]*0.4, \exp)]);
 
-f = Env([1000, 1000, 800, 1000, 900, 1000], [1, 1, 1, 1, 1]*0.3, \step).asArray;
-s.sendBundle(nil, [\s_new, \env, 1003, 2, 1001], [\n_setn, 1003, \env, f.size] ++ f);
+Synth(\env, [i_outbus: f, env: Env([1000, 1000, 800, 1000, 900, 1000], [1, 1, 1, 1, 1]*0.3, \step)]);
 
-s.sendMsg(\n_free, 1001);
+a.free;
+f.free;
 ::
diff --git a/HelpSource/Classes/EnvelopeView.schelp b/HelpSource/Classes/EnvelopeView.schelp
index e96a393..ebde5a5 100644
--- a/HelpSource/Classes/EnvelopeView.schelp
+++ b/HelpSource/Classes/EnvelopeView.schelp
@@ -325,7 +325,7 @@ METHOD:: defaultKeyDownAction
 
     Implements the default behavior on key presses.
 
-    In Qt, the default behavior is defined in the C++ implementation of the view instead of this method. See link::Classes/View#Key and mouse event propagation:: for explanation of how to override the behavior.
+    In Qt, the default behavior is defined in the C++ implementation of the view instead of this method. See link::Classes/View#Key and mouse event processing:: for explanation of how to override the behavior.
 
 
 
diff --git a/HelpSource/Classes/Event.schelp b/HelpSource/Classes/Event.schelp
index c0c63e0..2e9eca9 100644
--- a/HelpSource/Classes/Event.schelp
+++ b/HelpSource/Classes/Event.schelp
@@ -41,7 +41,7 @@ Event types define alternate play functions that are selected by the value of st
 argument::type
 A name (usually a symbol) for the event type, which can be used to select it
 
-argument:func
+argument::func
 A function which optionally takes the server as a first argument
 
 code::
@@ -370,6 +370,7 @@ lag:			0.0,	// delay (in seconds) relative to current time position of Stream
 timingOffset:		0.0,	// delay (in beats) relative to current time position of Stream
 strum:			0.0	// "breaks" a chord. May be negative, playing the chord backward
 strumEndsTogether:	false	// if true, the strummed notes end together (with gated synths)
+sendGate:		nil  // override: true == always send a gate-release message; false == never send
 ::
 
 ## strong::pitchEvent keys:::
diff --git a/HelpSource/Classes/EventPatternProxy.schelp b/HelpSource/Classes/EventPatternProxy.schelp
index bea3455..746fa02 100644
--- a/HelpSource/Classes/EventPatternProxy.schelp
+++ b/HelpSource/Classes/EventPatternProxy.schelp
@@ -23,7 +23,7 @@ method::source
 set the source (a pattern). If a quantization is given, schedule this change to the next beat ( strong::pattern_::(..) is equivalent)
 
 method::clear
-set the source to nil
+set the source to nil and stop playing
 
 method::quant
 get or set the quantization value. can be an array [quant, phase, offset, outset]
diff --git a/HelpSource/Classes/Fold.schelp b/HelpSource/Classes/Fold.schelp
index 8ca968c..99d3ec6 100644
--- a/HelpSource/Classes/Fold.schelp
+++ b/HelpSource/Classes/Fold.schelp
@@ -27,7 +27,7 @@ High threshold of folding. Sample values > hi will be folded. must be greater th
 Examples::
 
 code::
-Server.internal.boot;
+s.boot;
 
 { Fold.ar(SinOsc.ar(440, 0, 0.2), -0.1, 0.1) }.scope;
 ::
diff --git a/HelpSource/Classes/Font.schelp b/HelpSource/Classes/Font.schelp
index 800410b..dc82101 100644
--- a/HelpSource/Classes/Font.schelp
+++ b/HelpSource/Classes/Font.schelp
@@ -62,7 +62,23 @@ returns::
 The default monospace face Font.
 
 method:: default
-Gets/sets the default Font.
+The global default Font.
+
+In Qt GUI, setting this property is equivalent to code::Font.setDefault(font)::. See link::#*setDefault:: for details.
+
+method:: setDefault
+note::Only available in Qt GUI::
+Sets the global default font. Properties of the code::font:: argument will be combined with properties of the default system font, and those of individual views.
+
+Optionally, a class can be given, so only views of that class will be affected.
+
+Note that this will immediately affect any existing views.
+
+argument:: font
+An instance of Font.
+
+argument:: class
+A Class (either QView or one of its subclasses), or code::nil::.
 
 method:: sansSerif
 Create a new sans serif face Font.
@@ -106,7 +122,11 @@ Argument::
 	A Float.
 
 method:: setDefault
-Makes the current instance of Font the default.
+Makes this instance of Font the default.
+
+In Qt GUI, this is equivalent to calling link::#*setDefault:: with this Font and the given class as arguments.
+
+In other GUI kits, this is equivalent to setting the link::#*default:: property.
 
 method:: storeArgs
 (?)
diff --git a/HelpSource/Classes/FreeVerb.schelp b/HelpSource/Classes/FreeVerb.schelp
index 0ce8afc..6b7b587 100644
--- a/HelpSource/Classes/FreeVerb.schelp
+++ b/HelpSource/Classes/FreeVerb.schelp
@@ -25,7 +25,6 @@ Valid parameter range from 0 to 1. Values outside this range are clipped by the
 
 examples::
 code::
-Server.default = s = Server.internal;
 s.boot;
 
 // FreeVerb - 1x1 ugen
diff --git a/HelpSource/Classes/FreeVerb2.schelp b/HelpSource/Classes/FreeVerb2.schelp
index 9b5e1a4..57f3447 100644
--- a/HelpSource/Classes/FreeVerb2.schelp
+++ b/HelpSource/Classes/FreeVerb2.schelp
@@ -27,7 +27,6 @@ Valid parameter range from 0 to 1. Values outside this range are clipped by the
 
 examples::
 code::
-Server.default = s = Server.internal;
 s.boot;
 
 // FreeVerb2 - demo synthdef
@@ -43,7 +42,7 @@ SynthDef(\FreeVerb2x2, {|outbus, mix = 0.25, room = 0.15, damp = 0.5, amp = 1.0|
 			signal[1], // Right Channel
 			mix, room, damp, amp)); // same params as FreeVerb 1 chn version
 
-}).send(s);
+}).add;
 )
 
 // 2ch source
diff --git a/HelpSource/Classes/FreqScopeView.schelp b/HelpSource/Classes/FreqScopeView.schelp
index 158735c..0b703c6 100644
--- a/HelpSource/Classes/FreqScopeView.schelp
+++ b/HelpSource/Classes/FreqScopeView.schelp
@@ -33,8 +33,8 @@ An instance of link::Classes/Rect::, or a link::Classes/Point:: indicating code:
 discussion::
 Example:
 code::
-// Start internal server
-s = Server.internal.boot;
+// Start server
+s = s.boot;
 
 // Create analyzer in a window
 (
@@ -91,10 +91,10 @@ Returns link::Classes/SCScope::. See also Subclassing and Internal Methods in li
 warning::Cocoa specific::
 
 method:: initClass
-Sets the classvar, code::server = Server.internal::.
+Sets the classvar, code::server = Server.default::.
 
 method:: server
-A classvar. Must be code::Server.internal::.
+A classvar.
 
 instancemethods::
 
@@ -157,8 +157,8 @@ method:: bufSize
 examples::
 
 code::
-// Start internal server
-s = Server.internal.boot;
+// Start server
+s = Server.boot;
 
 
 // Create analyzer in a window
diff --git a/HelpSource/Classes/Function.schelp b/HelpSource/Classes/Function.schelp
index c1d1696..d24db2e 100644
--- a/HelpSource/Classes/Function.schelp
+++ b/HelpSource/Classes/Function.schelp
@@ -149,10 +149,24 @@ t.stop;
 
 method::defer
 
-Delay the evaluation of this Function by delta in seconds. Uses AppClock.
+Delay the evaluation of this Function by code::delta:: in seconds on AppClock.
+
+This is equivalent to code::AppClock.sched(0, function):: unless code::delta:: is code::nil::. In that case the function is only scheduled if current code is not running on AppClock, otherwise the function is evaluated immediately.
 
 code::
 { "2 seconds have passed.".postln; }.defer(2);
+
+(
+{ "chicken".postln }.defer(0); // schedules on the AppClock
+{ "egg".postln }.defer // evaluates immediately
+)
+
+(
+fork { // schedules on a TempoClock
+    { "chicken".postln }.defer // schedules on the AppClock
+};
+{ "egg".postln }.defer // evaluates immediately
+)
 ::
 
 method::dup
@@ -373,7 +387,7 @@ arguments
 
 method::scope
 
-As play above, but plays it on the internal Server, and calls Server-scope to open a scope window in which to view the output.
+As play above, and calls Server-scope to open a scope window in which to view the output.
 
 code::
 { FSinOsc.ar(440, 0, 0.3) }.scope(1)
diff --git a/HelpSource/Classes/GVerb.schelp b/HelpSource/Classes/GVerb.schelp
index 1b0c2a3..80be0a3 100644
--- a/HelpSource/Classes/GVerb.schelp
+++ b/HelpSource/Classes/GVerb.schelp
@@ -59,7 +59,7 @@ SynthDef(\test, {arg roomsize, revtime, damping, inputbw, spread = 15, drylevel,
 		taillevel.dbamp,
 		roomsize, 0.3) + a)}).add
 
-s = Server.internal.boot;
+s.boot;
 s.scope(2);
 
 // bathroom
diff --git a/HelpSource/Classes/Gate.schelp b/HelpSource/Classes/Gate.schelp
index 945406c..a3294da 100644
--- a/HelpSource/Classes/Gate.schelp
+++ b/HelpSource/Classes/Gate.schelp
@@ -25,7 +25,7 @@ Examples::
 
 code::
 
-Server.internal.boot;
+s.boot;
 // Control rate so as not to whack your speakers with DC
 { Gate.kr(WhiteNoise.kr(1, 0), LFPulse.kr(1.333, 0.5))}.scope(zoom: 20);
 
diff --git a/HelpSource/Classes/Hilbert.schelp b/HelpSource/Classes/Hilbert.schelp
index 00c0cad..cf0f2d7 100644
--- a/HelpSource/Classes/Hilbert.schelp
+++ b/HelpSource/Classes/Hilbert.schelp
@@ -31,8 +31,8 @@ This value will be added to the output.
 Examples::
 
 code::
-s = Server.internal.boot;
+s = s.boot;
 s.scope;
-a = {Hilbert.ar(SinOsc.ar(100))}.play(s);
+a = {Hilbert.ar(SinOsc.ar(100)) * -20.dbamp}.play;
 a.release;
 ::
diff --git a/HelpSource/Classes/HilbertFIR.schelp b/HelpSource/Classes/HilbertFIR.schelp
index 07ef270..4fce40c 100644
--- a/HelpSource/Classes/HilbertFIR.schelp
+++ b/HelpSource/Classes/HilbertFIR.schelp
@@ -24,9 +24,8 @@ A Buffer to be used for the inter FFT processing. Best results with a size of 10
 
 
 code::
-s = Server.internal.boot;
+s = s.boot;
 s.scope;
-b - Buffer.alloc(s, 2048);
-a = {HilbertFIR.ar(SinOsc.ar(100), b)}.play(s);
+a = { HilbertFIR.ar(SinOsc.ar(100) * -20.dbamp, LocalBuf(2048) }.play;
 a.release;
 ::
diff --git a/HelpSource/Classes/History.schelp b/HelpSource/Classes/History.schelp
index 0e8830c..9c9799b 100644
--- a/HelpSource/Classes/History.schelp
+++ b/HelpSource/Classes/History.schelp
@@ -216,5 +216,5 @@ h.indicesFor([\me, \her], "=");	// indices for line written by \me or \her AND c
 	// so please read on at HistoryGui help ...
 h.makeWin;
 
-HistoryGui.openHelpFile;
+HistoryGui.help;
 ::
diff --git a/HelpSource/Classes/IEnvGen.schelp b/HelpSource/Classes/IEnvGen.schelp
index a7fd6a6..e4cd30b 100644
--- a/HelpSource/Classes/IEnvGen.schelp
+++ b/HelpSource/Classes/IEnvGen.schelp
@@ -1,69 +1,58 @@
 class:: IEnvGen
-summary:: Envelope generator for polling values from an InterplEnv
+summary:: Envelope generator for polling values from an Env
 categories:: UGens>Envelopes
-related:: Classes/InterplEnv
+related:: Classes/Env
 
 description::
-Envelope generator for polling values from an InterplEnv. IEnvGen plays back break point envelopes from the code::index:: point. The envelopes are instances of the link::Classes/InterplEnv:: class.
+Envelope generator for polling values from an envelope. IEnvGen plays back break point envelopes from the code::index:: point. The envelopes are instances of the link::Classes/Env:: class.
 
 classmethods::
 private:: categories, new1
 
 method:: ar, kr
 
-argument:: ienvelope
-an instance of InterplEnv (this is static for the life of the UGen)
+argument:: envelope
+an instance of Env (this is static for the life of the UGen)
 argument:: index
-a point to access within the InterplEnv
+a point to access within the Env
 argument:: mul
 argument:: add
 
 instancemethods::
-private:: init, argNamesInputsOffset
+private:: init, argNamesInputsOffset, convertEnv
 
 examples::
 
 code::
-SynthDef(\test, {arg gate = 1;
-	var env, sin;
-	sin = SinOsc.ar(440, 0, 1);
-	env = InterplEnv([0, 0.6, 0.3, 1.0, 0], [0.1, 0.02, 0.4, 1.1], [\lin, \exp, -6, \sin]).plot;
-	Out.ar(0, sin *
-		// use MouseX to index into the InterplEnv to control amps
-		IEnvGen.kr(env, MouseX.kr(0, env.times.sum)) *
-		EnvGen.kr(Env.asr(0.01, 1, 0.01), gate, doneAction: 2);
-		)
-}).add;
-
-s = Server.internal.boot;
-s.scope;
-
-s.sendMsg(\s_new, \test, a = s.nextNodeID, 0, 1);
-s.sendMsg(\n_set, a, \gate, 0);
+(
+{
+	var env =  Env([0, 0.6, 0.3, 1.0, 0], [0.1, 0.02, 0.4, 1.1], [\lin, \exp, -6, \sin]);
+	var envgen = IEnvGen.kr(env, MouseX.kr(0, env.times.sum));
+	env.plot;
+	SinOsc.ar(envgen * 500 + 440)
+}.play;
+)
 
 // index with an SinOsc ... mouse controls amplitude of SinOsc
-SynthDef(\test, {
-	var env, sin;
-	sin = SinOsc.ar(440, 0, MouseX.kr(0, 1));
-	// use offset so negative values of SinOsc will map into the InterplEnv
-	env = InterplEnv([-1, -0.7, 0.7, 1], [ 0.8666, 0.2666, 0.8668 ], \lin, -1.0);
-	Out.ar(0, IEnvGen.ar(env, sin))
-}).add;
-
-s.sendMsg(\s_new, \test, a = s.nextNodeID, 0, 1);
-s.sendMsg(\n_free, a);
-
-
-// index with Amplitude of input, control freq of SinOsc
-SynthDef(\test, {arg inbus;
-	var env, point;
-	point = Amplitude.ar(In.ar(inbus), 0.01, 0.2);
-	// use offset so negative values of SinOsc will map into the InterplEnv
-	env = InterplXYC([[0, 330, \exp], [0.5, 440, \exp], [1.0, 1760]]);
-	Out.ar(1, SinOsc.ar(IEnvGen.kr(env, point), 0, 0.2))
-}).add;
+// use offset so negative values of SinOsc will map into the Env
+(
+{
+	var sin = SinOsc.ar(440, 0, MouseX.kr(0, 1));
+	// use offset so negative values of SinOsc will map into the Env
+	var env = Env([-1, -0.7, 0.7, 1], [ 0.8666, 0.2666, 0.8668 ], \lin, -1.0);
+	IEnvGen.ar(env, sin) * 0.1
+}.play;
+)
+
+// index with Amplitude of input, control freq of SinOsc (uses SoundIn)
+(
+{
+	var point = Amplitude.ar(SoundIn.ar(0), 0.01, 0.2);
+	// use offset so negative values of SinOsc will map into the Env
+	var env = Env.xyc([[0, 330, \exp], [0.5, 440, \exp], [1.0, 1760]]);
+	SinOsc.ar(IEnvGen.kr(env, point)) * 0.2
+}.play;
+)
 
-s.sendMsg(\s_new, \test, a = s.nextNodeID, 0, 1, \inbus, s.options.numOutputBusChannels);
-s.sendMsg(\n_free, a);
 ::
 
diff --git a/HelpSource/Classes/InRange.schelp b/HelpSource/Classes/InRange.schelp
index 73fbf6a..637d0d3 100644
--- a/HelpSource/Classes/InRange.schelp
+++ b/HelpSource/Classes/InRange.schelp
@@ -34,7 +34,7 @@ Examples::
 
 code::
 
-Server.internal.boot;
+s.boot;
 
 { InRange.kr(SinOsc.kr(1, 0, 0.2), -0.15, 0.15)}.scope; // see the trigger
 
diff --git a/HelpSource/Classes/IndexInBetween.schelp b/HelpSource/Classes/IndexInBetween.schelp
index 729e2ea..3506922 100644
--- a/HelpSource/Classes/IndexInBetween.schelp
+++ b/HelpSource/Classes/IndexInBetween.schelp
@@ -1,7 +1,7 @@
 class:: IndexInBetween
 summary:: Finds the (lowest) point in the Buffer at which the input signal lies in-between the two values
 categories:: UGens>Buffer
-related:: Classes/Index, Classes/IndexL
+related:: Classes/Index, Classes/IndexL, Classes/SequenceableCollection#indexInBetween
 
 description::
 Finds the (lowest) point in the link::Classes/Buffer:: at which the input signal lies in-between the two values, and returns the index. The fractional part of the index is suitable for linearly interpolating between the buffer slot values.
diff --git a/HelpSource/Classes/Integrator.schelp b/HelpSource/Classes/Integrator.schelp
index ec886b3..ff16894 100644
--- a/HelpSource/Classes/Integrator.schelp
+++ b/HelpSource/Classes/Integrator.schelp
@@ -46,7 +46,7 @@ code::
 { Integrator.ar(LFPulse.ar(3, 0.2, 0.0004), 0.999, FSinOsc.ar(700), 0) }.play
 
 
-// scope, using the internal server:
+// scope
 
 { Integrator.ar(LFPulse.ar(1500 / 4, 0.2, 0.1), MouseX.kr(0.01, 0.999, 1)) }.scope
 
diff --git a/HelpSource/Classes/InterplEnv.schelp b/HelpSource/Classes/InterplEnv.schelp
index f81e6b2..dce364c 100644
--- a/HelpSource/Classes/InterplEnv.schelp
+++ b/HelpSource/Classes/InterplEnv.schelp
@@ -6,6 +6,8 @@ categories:: Control, Envelopes
 description::
 An InterplEnv is a specification for a segmented envelope. InterplEnvs can be used both server-side, by an link::Classes/IEnvGen:: within a SynthDef, and clientside, with methods such as at. An InterplEnv can have any number of segments. An InterplEnv can have several shapes for its segments.
 
+note::InterplEnv is now replaced by Env, and  will be removed in the future. Env supports all functionality of InterplEnv::
+
 subsection::Differences between InterplEnv and Env
 InterplEnvs do not have release or loop nodes.  They are of a fixed duration. Mostly, it is meant to be used with IEnvGen, where 'times' are actually an strong::index into the envelope:: shape.
 
diff --git a/HelpSource/Classes/K2A.schelp b/HelpSource/Classes/K2A.schelp
index dd3e647..eebd104 100644
--- a/HelpSource/Classes/K2A.schelp
+++ b/HelpSource/Classes/K2A.schelp
@@ -25,7 +25,6 @@ code::
 
 
 // compare:
-
 (
 {
 	[
@@ -35,12 +34,11 @@ code::
 }.scope;
 )
 
-
 (
 {
 	var freq, blockSize, sampleRate;
-	blockSize = Server.internal.options.blockSize; // usually 64
-	sampleRate = Server.internal.sampleRate;
+	blockSize = s.options.blockSize; // usually 64
+	sampleRate = s.sampleRate;
 	freq = MouseX.kr(0.1, 40, 1) / blockSize * sampleRate;
 	[
 		K2A.ar(LFNoise0.kr(freq)),
diff --git a/HelpSource/Classes/Klang.schelp b/HelpSource/Classes/Klang.schelp
index 54090b4..293814e 100644
--- a/HelpSource/Classes/Klang.schelp
+++ b/HelpSource/Classes/Klang.schelp
@@ -1,7 +1,7 @@
 class:: Klang
 summary:: Sine oscillator bank
 related:: Classes/Klank, Classes/DynKlang
-categories::  UGens>Generators>Deterministic
+categories:: UGens>Generators>Deterministic
 
 Description::
 Klang is a bank of fixed frequency sine oscillators. Klang is more
@@ -36,7 +36,7 @@ For a modulatable but less efficient version, see link::Classes/DynKlang::.
 Examples::
 
 code::
-play({ Klang.ar(`[ [800, 1000, 1200],[0.3, 0.3, 0.3],[pi,pi,pi]], 1, 0) * 0.4});
+play({ Klang.ar(`[ [800, 1000, 1200], [0.3, 0.3, 0.3], [pi, pi, pi]], 1, 0) * 0.4});
 
 play({ Klang.ar(`[ [800, 1000, 1200], nil, nil], 1, 0) * 0.25});
 
@@ -49,7 +49,22 @@ play({ Klang.ar(`[ Array.rand(12, 600.0, 1000.0), nil, nil ], 1, 0) * 0.05 });
 loop({
 	play({
 		Pan2.ar(Klang.ar(`[ Array.rand(12, 200.0, 2000.0), nil, nil ], 1, 0), 1.0.rand)
-			* EnvGen.kr(Env.sine(4), 1, 0.02, doneAction: 2);
+			 * EnvGen.kr(Env.sine(4), 1, 0.02, doneAction: 2);
+	});
+	2.wait;
+})
+}.fork;
+)
+
+// Multichannel expansion:
+
+(
+{
+loop({
+	play({
+		var nPartials = 12, nChans = 5, n = nPartials * nChans;
+		Splay.ar(Klang.ar(`[ { { rrand(200.0, 2000.0) } ! nPartials } ! nChans, nil, nil ], 1, 0))
+			 * EnvGen.kr(Env.sine(4), 1, 0.02, doneAction: 2);
 	});
 	2.wait;
 })
@@ -57,3 +72,4 @@ loop({
 )
 ::
 
+
diff --git a/HelpSource/Classes/Klank.schelp b/HelpSource/Classes/Klank.schelp
index 87e38f2..b428396 100644
--- a/HelpSource/Classes/Klank.schelp
+++ b/HelpSource/Classes/Klank.schelp
@@ -1,7 +1,8 @@
+
 class:: Klank
 summary:: Bank of resonators
 related:: Classes/DynKlank, Classes/Klang
-categories::  UGens>Generators>Deterministic, UGens>Filters>Linear
+categories:: UGens>Generators>Deterministic, UGens>Filters>Linear
 
 
 Description::
@@ -51,161 +52,144 @@ code::
 
 { Klank.ar(`[[800, 1071, 1353, 1723], nil, [1, 1, 1, 1]], PinkNoise.ar(0.007)) }.play;
 
-{ Klank.ar(`[[200, 671, 1153, 1723], nil, [1, 1, 1, 1]], PinkNoise.ar([0.007,0.007])) }.play;
+{ Klank.ar(`[[200, 671, 1153, 1723], nil, [1, 1, 1, 1]], PinkNoise.ar([0.007, 0.007])) }.play;
 
 (
 play({
 	Klank.ar(`[
-		Array.rand(12, 800.0, 4000.0),		// frequencies
-		nil,  							// amplitudes (default to 1.0)
+		Array.rand(12, 800.0, 4000.0), 		// frequencies
+		nil, 							// amplitudes (default to 1.0)
 		Array.rand(12, 0.1, 2)				// ring times
 		], Decay.ar(Impulse.ar(4), 0.03, ClipNoise.ar(0.01)))
 })
 )
 
+// multi channel expansion:
+// an array of specs
+(
+{
+Klank.ar([
+	`[[500, 1078, 1201.5, 1723], nil, [1, 1, 0.5, 0.3]],
+	`[[700, 1071, 1053, 1723], nil, [1, 1, 1, 1]]
+	], Impulse.ar([2, 2.5], 0, 0.1))
+}.play
+);
+
+// expanding specs
+{ Klank.ar(`[[[800, 6000], 1071, [1153, 8000], 1723], nil, [1, 1, 1, 1]], Impulse.ar([2, 3], 0, 0.1)) }.play;
+
 
 
 // a synth def that has 4 partials
 (
-s = Server.local;
-SynthDef("help-Control", { arg out=0,i_freq;
+
+SynthDef(\help_Klank, { arg out=0, i_freq;
 	var klank, n, harm, amp, ring;
 
 	// harmonics
-	harm = Control.names([\harm]).ir(Array.series(4,1,1).postln);
+	harm = \harm.ir(Array.series(4, 1, 1).postln);
 	// amplitudes
-	amp = Control.names([\amp]).ir(Array.fill(4,0.05));
+	amp = \amp.ir(Array.fill(4, 0.05));
 	// ring times
-	ring = Control.names([\ring]).ir(Array.fill(4,1));
+	ring = \ring.ir(Array.fill(4, 1));
 
-	klank = Klank.ar(`[harm,amp,ring], {ClipNoise.ar(0.003)}.dup, i_freq);
+	klank = Klank.ar(`[harm, amp, ring], {ClipNoise.ar(0.003)}.dup, i_freq);
 
 	Out.ar(out, klank);
-}).send(s);
+}).add;
 )
 
 // nothing special yet, just using the default set of harmonics.
-a = Synth("help-Control",[\i_freq, 300]);
-b = Synth("help-Control",[\i_freq, 400]);
-c = Synth("help-Control",[\i_freq, 533.33]);
-d = Synth("help-Control",[\i_freq, 711.11]);
+a = Synth(\help_Klank, [\i_freq, 300]);
+b = Synth(\help_Klank, [\i_freq, 400]);
+c = Synth(\help_Klank, [\i_freq, 533.33]);
+d = Synth(\help_Klank, [\i_freq, 711.11]);
 
 a.free;
 b.free;
 c.free;
 d.free;
 
-// in order to set the harmonics amps and ring times at
-// initialization time we need to use an OSC bundle.
-(
-s.sendBundle(nil,
-	["/s_new", "help-Control", 2000, 1, 0, \i_freq, 500], // start note
-	["/n_setn", 2000, "harm", 4, 1, 3, 5, 7] // set odd harmonics
-	);
-)
-
-s.sendMsg("/n_free", 2000);
-
-(
-s.sendBundle(nil,
-	["/s_new", "help-Control", 2000, 1, 0, \i_freq, 500], // start note
-	// set geometric series harmonics
-	["/n_setn", 2000, "harm", 4] ++ Array.geom(4,1,1.61)
-	);
-)
+a = Synth(\help_Klank, [\i_freq, 500, \harm, [4, 1, 3, 5, 7]]);
+a.free;
 
-s.sendMsg("/n_free", 2000);
+// set geometric series harmonics
+a = Synth(\help_Klank, [\i_freq, 500, \harm,Array.geom(4, 1, 1.61)]);
+a.free;
 
-(
 // set harmonics, ring times and amplitudes
-s.sendBundle(nil,
-	["/s_new", "help-Control", 2000, 1, 0, \i_freq, 500], // start note
-	["/n_setn", 2000, "harm", 4, 1, 3, 5, 7], // set odd harmonics
-	["/n_setn", 2000, "ring", 4] ++ Array.fill(4,0.1), // set shorter ring time
-	["/n_setn", 2000, "amp", 4] ++ Array.fill(4,0.2) // set louder amps
-	);
-)
-
-s.sendMsg(\n_trace, 2000);
-s.sendMsg("/n_free", 2000);
-
 (
-// same effect as above, but packed into one n_setn command
-s.sendBundle(nil,
-	["/s_new", "help-Control", 2000, 1, 0, \i_freq, 500], // start note
-	["/n_setn", 2000, "harm", 4, 1, 3, 5, 7,
-		"ring", 4] ++ Array.fill(4,0.1)
-		++ ["amp", 4] ++ Array.fill(4,0.2)
-	);
-)
+a = Synth(\help_Klank, [
+	\i_freq, 500,
+	\harm, [4, 1, 3, 5, 7],
+	\ring, Array.fill(4, 0.1), // set shorter ring time
+	\amp, Array.fill(4, 0.2) // set louder amps
+])
+);
 
-s.sendMsg("/n_free", 2000);
 
 
 
-
-//////////////////////////////////////////////////////////////////////
-
-//-- overlap texture
+// -- overlap texture
 (
 SynthDef("help-KlankOverlapTexture",
-{|out = 0, freqs = #[0,0,0,0,0,0,0,0,0,0,0,0], rings = #[0,0,0,0,0,0,0,0,0,0,0,0], atk = 5, sus = 8, rel = 5, pan = 0|
+{|out = 0, freqs = #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], rings = #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], atk = 5, sus = 8, rel = 5, pan = 0|
 	var e = EnvGen.kr(Env.linen(atk, sus, rel, 1, 4), doneAction:2);
 	var i = Decay.ar(Impulse.ar(Rand(0.8, 2.2)), 0.03, ClipNoise.ar(0.01));
 	var z = Klank.ar(
-		`[freqs, nil, rings],	// specs
+		`[freqs, nil, rings], 	// specs
 		i					// input
 	);
 	Out.ar(out, Pan2.ar(z*e, pan));
-}).send(s);
+}).add;
 
 r = Routine{
 	var sustain = 8, transition = 3, overlap = 4;
-	var period = transition*2+sustain/overlap;
-	0.5.wait;			//wait for the synthdef to be sent to the server
+	var period = transition * 2 + sustain / overlap;
+	0.5.wait;			// wait for the synthdef to be sent to the server
 	inf.do{
 		Synth("help-KlankOverlapTexture", [
 			\atk, transition,
 			\sus, sustain,
 			\rel, transition,
-			\pan, 1.0.rand2
-		]).setn(
+			\pan, 1.0.rand2,
 			\freqs, {200.0.rrand(4000)}.dup(12),
 			\rings, {0.1.rrand(2)}.dup(12)
-		);
+		]);
 		period.wait;
 	}
 };
 r.play;
 )
 
-r.stop;	//stop spawning new synths
+r.stop;	// stop spawning new synths
 
 
 
-//-- frequency and decay scaling
+// -- frequency and decay scaling
 (
-SynthDef("help-KlankScaling", {|out = 0, freq = 0, rings = #[0,0,0,0,0,0,0,0,0,0,0,0], pan = 0|
+SynthDef("help-KlankScaling", {|out = 0, freq = 0, rings = #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], pan = 0|
 	var e = EnvGen.kr(Env(#[1, 1, 0], #[0.4, 0.01]), doneAction:2);
 	var i = Decay.ar(Impulse.ar(0), 0.03, ClipNoise.ar(0.01));
 	var z = Klank.ar(
-		`[(1..12), nil, rings],				// specs (partials, amplitudes, ringtimes)
-		i,								// input
-		freq,							// scale to this frequency
-		0,								// frequency offset
-		MouseX.kr(0.2, 3)					// scale decay times
+		`[(1..12), nil, rings], 				// specs (partials, amplitudes, ringtimes)
+		i, 							// input
+		freq, 							// scale to this frequency
+		0, 							// frequency offset
+		MouseX.kr(0.2, 3)				// scale decay times
 	);
 	Out.ar(out, Pan2.ar(z*e, pan));
-}).send(s);
+}).add;
 
 r = Routine{
 	var sustain = 8, transition = 3;
 	var mode = #[0, 2, 4, 5, 7, 9, 11, 12, 14, 16, 17, 19, 21, 23, 24];
-	0.5.wait;			//wait for the synthdef to be sent to the server
+	0.5.wait;			// wait for the synthdef to be sent to the server
 	inf.do{|i|
 		Synth("help-KlankScaling", [
-			\freq, (72 + (mode @@ i)).midicps
-		]).setn(\rings, {0.1.rrand(2)}.dup(12));
+			\freq, (72 + (mode @@ i)).midicps,
+			\rings, {0.1.rrand(2)}.dup(12)
+		]);
 		0.2.wait;
 	}
 };
@@ -215,33 +199,32 @@ r.play;
 r.stop;
 
 
-//-- overlap texture 2
+// -- overlap texture 2
 (
 SynthDef("help-KlankOverlapTexture2",
-{|out = 0, freqs = #[0,0,0,0,0,0,0,0,0,0,0,0], rings = #[0,0,0,0,0,0,0,0,0,0,0,0], atk = 5, sus = 8, rel = 5, pan = 0|
+{|out = 0, freqs = #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], rings = #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], atk = 5, sus = 8, rel = 5, pan = 0|
 	var e = EnvGen.kr(Env.linen(atk, sus, rel, 1, 4), doneAction:2);
 	var i = BrownNoise.ar(0.0012);
 	var z = Klank.ar(
-		`[freqs, nil, rings],	// specs
+		`[freqs, nil, rings], 	// specs
 		i					// input
 	);
 	Out.ar(out, Pan2.ar(z*e, pan));
-}).send(s);
+}).add;
 
 r = Routine{
 	var sustain = 6, transition = 4, overlap = 5;
 	var period = transition*2+sustain/overlap;
-	0.5.wait;			//wait for the synthdef to be sent to the server
-	inf.do{
+	0.5.wait;			// wait for the synthdef to be sent to the server
+	inf.do {
 		Synth("help-KlankOverlapTexture2", [
 			\atk, transition,
 			\sus, sustain,
 			\rel, transition,
-			\pan, 1.0.rand2
-		]).setn(
+			\pan, 1.0.rand2,
 			\freqs, {6000.0.linrand+80}.dup(12),
 			\rings, {0.1.rrand(3)}.dup(12)
-		);
+		]);
 		period.wait;
 	}
 };
@@ -251,28 +234,27 @@ r.play;
 r.stop;
 
 
-//-- overlap texture 3
+// -- overlap texture 3
 (
 SynthDef("help-KlankOverlapTexture3",
-{|out = 0, freqs = #[0,0,0,0,0,0,0,0,0,0,0,0], rings = #[0,0,0,0,0,0,0,0,0,0,0,0], pan = 0|
+{|out = 0, freqs = #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], rings = #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], pan = 0|
 	var e = EnvGen.kr(Env(#[1, 1, 0], #[18, 3]), doneAction:2);
 	var i = Decay.ar(Impulse.ar(Rand(0.2, 0.6)), 0.8, ClipNoise.ar(0.001));
 	var z = Klank.ar(
-		`[freqs, 2, rings],	// specs
+		`[freqs, 2, rings], 	// specs
 		i					// input
 	);
 	Out.ar(out, Pan2.ar(z*e, pan));
-}).send(s);
+}).add;
 
 r = Routine{
-	0.5.wait;			//wait for the synthdef to be sent to the server
-	inf.do{
+	0.5.wait;			// wait for the synthdef to be sent to the server
+	inf.do {
 		Synth("help-KlankOverlapTexture3", [
-			\pan, 1.0.rand2
-		]).setn(
+			\pan, 1.0.rand2,
 			\freqs, {12000.0.linrand+80}.dup(12),
 			\rings, {3.rrand(10)}.dup(12)
-		);
+		]);
 		3.wait;
 	}
 };
@@ -282,3 +264,4 @@ r.play;
 r.stop;
 ::
 
+
diff --git a/HelpSource/Classes/LFPulse.schelp b/HelpSource/Classes/LFPulse.schelp
index 9d90a55..ab0ff0e 100644
--- a/HelpSource/Classes/LFPulse.schelp
+++ b/HelpSource/Classes/LFPulse.schelp
@@ -23,6 +23,9 @@ argument::mul
 
 argument::add
 
+instancemethods::
+private::signalRange
+
 examples::
 
 a plot:
@@ -52,7 +55,6 @@ code::
 
 scope:
 code::
-Server.internal.boot;
 { LFPulse.ar(500, 0, MouseX.kr, 0.5) }.scope;
 ::
 
diff --git a/HelpSource/Classes/LanguageConfig.schelp b/HelpSource/Classes/LanguageConfig.schelp
index b7098e1..8245405 100644
--- a/HelpSource/Classes/LanguageConfig.schelp
+++ b/HelpSource/Classes/LanguageConfig.schelp
@@ -28,7 +28,7 @@ subsection:: Library Path Handling
 
 The language configuration mechanism provides a way to add or exclude specific paths for the class library.
 
-note::Changes to the class library paths won't have any effect before recompiling the class library.::
+note::Changes to the class library paths won't have any effect before the configuration file is stored and the class library is recompiled.::
 
 METHOD:: includePaths
 Return the class library include paths.
diff --git a/HelpSource/Classes/LevelIndicator.schelp b/HelpSource/Classes/LevelIndicator.schelp
index 5bd4f7f..56d7f8f 100644
--- a/HelpSource/Classes/LevelIndicator.schelp
+++ b/HelpSource/Classes/LevelIndicator.schelp
@@ -167,7 +167,7 @@ GUI.cocoa; // just to be sure
 
 // something to meter
 (
-b = Buffer.read(s, "sounds/a11wlk01.wav");
+b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");
 x = { var colum, noise, imp, delimp, mul = 1;
 	imp = Impulse.kr(10);
 	delimp = Delay1.kr(imp);
diff --git a/HelpSource/Classes/ListView.schelp b/HelpSource/Classes/ListView.schelp
index b1023a1..1c681ef 100644
--- a/HelpSource/Classes/ListView.schelp
+++ b/HelpSource/Classes/ListView.schelp
@@ -28,6 +28,10 @@ METHOD:: items
 	argument::
 		An Array of Strings, each String defining the text to represent an item.
 
+METHOD:: clear
+    note:: Only available in Qt GUI ::
+    Removes all items.
+
 METHOD:: value
 	The index of the currently selected item, or nil when no item is selected.
 
diff --git a/HelpSource/Classes/MIDIFunc.schelp b/HelpSource/Classes/MIDIFunc.schelp
index c1e02fa..1071ecc 100644
--- a/HelpSource/Classes/MIDIFunc.schelp
+++ b/HelpSource/Classes/MIDIFunc.schelp
@@ -6,7 +6,7 @@ related:: Guides/MIDI, Classes/MIDIdef
 DESCRIPTION::
 MIDIFunc (and its subclass link::Classes/MIDIdef::) registers one or more functions to respond to an incoming MIDI message. Many of its methods are inherited from its superclass link::Classes/AbstractResponderFunc::.
 
-note:: Use of the older classes MIDIResponder, CCResponder, NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, and ProgramChangeResponder can be unsafe, since responders in user and class code can override each other unintentionally. MIDIFunc and link::Classes/MIDIdef:: are faster, safer, and have more logical argument order. Thus they are the recommended way of registering for incoming MIDI messages as of SC 3.5.::
+note:: MIDIFunc and link::Classes/MIDIdef:: aim to improve upon the MIDIresponder classes by being faster and easier to use. They were made with the intention of creating a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef::. As of this time, however, they still lack some features of the MIDIresponder classes, notably the learn method. Note that unlike those classes, MIDIFuncs are removed on Cmd-. by default. This can be overriden using either of the fix or permanent methods.::
 
 
 CLASSMETHODS::
@@ -78,6 +78,11 @@ A convenience method to create a new MIDIFunc which responds to MIDI program cha
 
 returns:: A new instance of MIDIFunc which responds to MIDI program change messages.
 
+METHOD:: trace
+A convenience method which dumps all incoming MIDI messages.
+
+argument:: bool
+A link::Classes/Boolean:: indicating whether dumping is on or off.
 
 INSTANCEMETHODS::
 private:: init, printOn
diff --git a/HelpSource/Classes/MIDIResponder.schelp b/HelpSource/Classes/MIDIResponder.schelp
index 0f3c39f..89145ef 100644
--- a/HelpSource/Classes/MIDIResponder.schelp
+++ b/HelpSource/Classes/MIDIResponder.schelp
@@ -4,8 +4,7 @@ related:: Classes/MIDIFunc, Classes/MIDIdef, Classes/MIDIIn, Guides/MIDI, Guides
 categories:: External Control>MIDI
 
 description::
-Description::
-note:: As of SC 3.5 link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: are the recommended way of registering for incoming MIDI messages. They are faster, safer, and have more logical argument order than the old MIDI responder classes. The older class MIDIResponder, and its subclasses NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, CCResponder, and ProgramChangeResponder are maintained for legacy code only.::
+note:: SC 3.5 added the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. These are faster, and aim to have a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef:: They still lack some features of the MIDIresponder classes.::
 
 MIDIResponder is an emphasis::abstract:: class. Its subclasses allow functions to be registered to respond to midi events.
 
@@ -47,7 +46,8 @@ definitionList::
 
 ## install || If true, install the responder automatically so it is active and ready to respond. If false, then it will be inactive.
 
-## swallowEvent || If true, then if the midi event is matched, cease testing any further responders. eg. if a CCResponder matches port, chan and num, and swallowEvent is set to true, then no further CCResponders will be offered the chance to respond to the event. The event is "swallowed". By default this is false.
+## swallowEvent || If true, then if the midi event is matched, cease testing any further responders. eg. if a CCResponder matches port, chan and num, and swallowEvent is set to true, then no further CCResponders will be offered the chance to respond to the event. The event is "swallowed". By default this is false. Note that doing this will prevent any other responders of this type from responding, including ones added behind the scenes in classes. Note also that this functionality is sensitive to the order in which responders are added. 
+
 ::
 
 Any of the matching values may be one of the following:
diff --git a/HelpSource/Classes/MIDIdef.schelp b/HelpSource/Classes/MIDIdef.schelp
index 6bc8f2c..b619e7c 100644
--- a/HelpSource/Classes/MIDIdef.schelp
+++ b/HelpSource/Classes/MIDIdef.schelp
@@ -6,7 +6,7 @@ related:: Guides/MIDI, Classes/MIDIdef
 DESCRIPTION::
 MIDIdef provides a global reference to the functionality of its superclass link::Classes/MIDIFunc::. Essentially it stores itself at a key within a global dictionary, allowing replacement at any time. Most methods are inherited from its superclass.
 
-note:: Use of the older classes MIDIResponder, CCResponder, NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, and ProgramChangeResponder can be unsafe, since responders in user and class code can override each other unintentionally. MIDIdef and link::Classes/MIDIFunc:: are faster, safer, and have more logical argument order. Thus they are the recommended way of registering for incoming MIDI messages as of SC 3.5.::
+note:: MIDIdef and link::Classes/MIDIFunc:: aim to improve upon the MIDIresponder classes by being faster and easier to use. They were made with the intention of creating a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef::. As of this time, however, they still lack some features of the MIDIresponder classes, notably the learn method. Note that unlike those classes, MIDIdefs are removed on Cmd-. by default. This can be overriden using either of the fix or permanent methods.::
 
 
 CLASSMETHODS::
diff --git a/HelpSource/Classes/Node.schelp b/HelpSource/Classes/Node.schelp
index 47a84c7..6fb2bb4 100644
--- a/HelpSource/Classes/Node.schelp
+++ b/HelpSource/Classes/Node.schelp
@@ -281,9 +281,34 @@ method:: waitForFree
 Wait until this Node is freed. Should be used inside a Routine or similar.
 discussion::
 code::
+(
 fork {
     {SinOsc.ar(440!2) * Line.kr(0,1,5,doneAction:2)}.play.waitForFree;
     {PinkNoise.ar(1) * Line.kr(1,0,2,doneAction:2)}.play.onFree {"done".postln};
 }
+)
+::
+
+code::
+(
+SynthDef(\help, {
+	var mod = LFNoise2.kr(Rand(1, 6)) * 0.2;
+	var snd = mod * Blip.ar(Rand(200, 800) * (mod + 1));
+	Out.ar(0, snd);
+	FreeSelf.kr(mod < 0);
+}).add;
+)
+
+(
+fork {
+	10.do {
+		"started a synth".postln;
+		Synth(\help).waitForFree;
+		"This one ended. Wait a second, I will start the next one.".postln;
+		1.wait;
+	};
+	"This is it.".postln;
+}
+);
 ::
 
diff --git a/HelpSource/Classes/NoteOffResponder.schelp b/HelpSource/Classes/NoteOffResponder.schelp
index 1311d54..6943203 100644
--- a/HelpSource/Classes/NoteOffResponder.schelp
+++ b/HelpSource/Classes/NoteOffResponder.schelp
@@ -4,7 +4,7 @@ related:: Classes/MIDIFunc, Classes/MIDIdef, Classes/MIDIResponder, Classes/Note
 categories:: External Control>MIDI
 
 Description::
-note:: As of SC 3.5 link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: are the recommended way of registering for incoming MIDI messages. They are faster, safer, and have more logical argument order than the old MIDI responder classes. The older class MIDIResponder, and its subclasses NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, CCResponder, and ProgramChangeResponder are maintained for legacy code only.::
+note:: SC 3.5 added the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. These are faster, and aim to have a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef::. They still lack some features of the MIDIresponder classes.::
 ClassMethods::
 
 method::new
@@ -28,7 +28,7 @@ argument::install
 If true, install the responder automatically so it is active and ready to respond. If false, then it will be inactive.
 
 argument::swallowEvent
-If true, then if the midi event is matched, cease testing any further responders.
+If true, then if the midi event is matched, cease testing any further responders. Note that doing this will prevent any other responders of this type from responding, including ones added behind the scenes in classes. Note also that this functionality is sensitive to the order in which responders are added. 
 
 InstanceMethods::
 
diff --git a/HelpSource/Classes/NoteOnResponder.schelp b/HelpSource/Classes/NoteOnResponder.schelp
index d4a80f9..1aefaae 100644
--- a/HelpSource/Classes/NoteOnResponder.schelp
+++ b/HelpSource/Classes/NoteOnResponder.schelp
@@ -4,7 +4,7 @@ related:: Classes/MIDIFunc, Classes/MIDIdef, Classes/MIDIResponder, Classes/CCRe
 categories:: External Control>MIDI
 
 Description::
-note:: As of SC 3.5 link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: are the recommended way of registering for incoming MIDI messages. They are faster, safer, and have more logical argument order than the old MIDI responder classes. The older class MIDIResponder, and its subclasses NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, CCResponder, and ProgramChangeResponder are maintained for legacy code only.::
+note:: SC 3.5 added the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. These are faster, and aim to have a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef::. They still lack some features of the MIDIresponder classes.::
 ClassMethods::
 
 method::new
@@ -28,7 +28,7 @@ argument::install
 If true, install the responder automatically so it is active and ready to respond. If false, then it will be inactive.
 
 argument::swallowEvent
-If true, then if the midi event is matched, cease testing any further responders.
+If true, then if the midi event is matched, cease testing any further responders. Note that doing this will prevent any other responders of this type from responding, including ones added behind the scenes in classes. Note also that this functionality is sensitive to the order in which responders are added. 
 
 InstanceMethods::
 
diff --git a/HelpSource/Classes/OSCpathResponder.schelp b/HelpSource/Classes/OSCpathResponder.schelp
index a3739d3..332de61 100644
--- a/HelpSource/Classes/OSCpathResponder.schelp
+++ b/HelpSource/Classes/OSCpathResponder.schelp
@@ -5,7 +5,11 @@ categories:: External Control>OSC
 
 description::
 
-note:: As of SC 3.5 link::Classes/OSCFunc:: and link::Classes/OSCdef:: are the recommended way of registering for incoming OSC messages. They are faster, safer, and have more logical argument order than the old responder classes, and they support pattern matching and custom listening ports. Use of the older classes OSCresponder, OSCresponderNode, and OSCpathResponder can be unsafe, since responders in user and class code can override each other unintentionally. They are maintained for legacy code only.::
+note:: As of SC 3.5 link::Classes/OSCFunc:: and link::Classes/OSCdef:: are the recommended way of registering for incoming OSC messages. They are faster, safer, and have more logical argument order than the old responder classes, and they support pattern matching and custom listening ports. Use of the older classes OSCresponder, OSCresponderNode, and OSCpathResponder can be unsafe, since responders in user and class code can override each other unintentionally. They are maintained for legacy code only.
+
+The replacement for path matching is to be found in the template argument of OSCFunc and OSCDef (see example below).
+
+::
 
 Register a function to be called upon receiving a command with a specific path.
 
@@ -53,11 +57,11 @@ code::
 s.boot;
 
 (
-	var s, commandpath, response, aSynth, nodeID, triggerID;
-	s = Server.local;
-	s.boot;
+	var commandpath, response, aSynth, nodeID, triggerID;
 	triggerID = 1;
-	aSynth = { arg freq = 1, triggerID = 1; SendTrig.kr(SinOsc.kr(freq), triggerID, 666); }.play;
+	aSynth = { arg freq = 1, triggerID = 1;
+		SendTrig.kr(SinOsc.kr(freq), triggerID, 666)
+	}.play;
 	nodeID = aSynth.nodeID;
 	commandpath = ['/tr', nodeID, triggerID];
 	response = { arg time, responder, message; message.postln };
@@ -69,4 +73,27 @@ s.boot;
 // switch on and off:
 o.remove;
 o.add;
+
+
+// this can be written now conveniently and efficiently with OSCFunc.
+// the argTemplate is like the "path" of OSCpathResponder, but without the OSC-path itself.
+(
+	var commandpath, response, aSynth, nodeID, triggerID;
+	triggerID = 1;
+	aSynth = { arg freq = 1, triggerID = 1;
+		SendTrig.kr(SinOsc.kr(freq), triggerID, 666)
+	}.play;
+	nodeID = aSynth.nodeID;
+	commandpath = [nodeID, triggerID];
+	response = { arg message; message.postln };
+
+	o = OSCFunc(response, '/tr', s.addr, argTemplate: commandpath);
+
+)
+
+// an OSCFunc is removed with cmd-Period.
+// in order to switch it on and off programmatically:
+o.remove;
+o.add;
+
 ::
diff --git a/HelpSource/Classes/OSCresponderNode.schelp b/HelpSource/Classes/OSCresponderNode.schelp
index 83a27d4..50ad8c3 100644
--- a/HelpSource/Classes/OSCresponderNode.schelp
+++ b/HelpSource/Classes/OSCresponderNode.schelp
@@ -39,11 +39,8 @@ m.sendBundle(2.0, ["/chat", "Hello App 1"], ["/chat", "Hallo Wurld"]);
 m.sendBundle(0.0, ["/chat", "Hello App 1"], ["/chat", "Hallo Wurld"]);
 )
 
-// end application 2:
-m.disconnect;
-
 // end application 1:
-n.disconnect; o.remove;
+o.remove;
 ::
 
 subsection::Listening to data from _any_ client
diff --git a/HelpSource/Classes/PV_BinShift.schelp b/HelpSource/Classes/PV_BinShift.schelp
index 9a5075d..5abf38e 100644
--- a/HelpSource/Classes/PV_BinShift.schelp
+++ b/HelpSource/Classes/PV_BinShift.schelp
@@ -27,6 +27,10 @@ argument::shift
 
 Add an offset to bin position.
 
+argument::interp
+
+Set to 0 (default) for no interpolation, or 1 to linear-interpolate between bins.
+
 
 Examples::
 
diff --git a/HelpSource/Classes/PV_Mul.schelp b/HelpSource/Classes/PV_Mul.schelp
index 2f60ab1..0c46096 100644
--- a/HelpSource/Classes/PV_Mul.schelp
+++ b/HelpSource/Classes/PV_Mul.schelp
@@ -29,7 +29,7 @@ Examples::
 
 code::
 
-s = Server.internal.boot;
+s.boot;
 
 (
 SynthDef("help-mul", { arg out=0;
diff --git a/HelpSource/Classes/PV_PhaseShift.schelp b/HelpSource/Classes/PV_PhaseShift.schelp
index 2965f56..c95fdd4 100644
--- a/HelpSource/Classes/PV_PhaseShift.schelp
+++ b/HelpSource/Classes/PV_PhaseShift.schelp
@@ -19,8 +19,11 @@ FFT buffer.
 
 argument::shift
 
-Phase shift in degrees.
+Phase shift in radians.
 
+argument::integrate
+
+If greater than zero, integrate the phase-shift across calls (for an accumulating phase shift).
 
 Examples::
 
diff --git a/HelpSource/Classes/PV_PhaseShift270.schelp b/HelpSource/Classes/PV_PhaseShift270.schelp
index bd92f75..9e7dea8 100644
--- a/HelpSource/Classes/PV_PhaseShift270.schelp
+++ b/HelpSource/Classes/PV_PhaseShift270.schelp
@@ -21,7 +21,7 @@ Examples::
 
 code::
 
-Server.internal.boot;
+s.boot;
 
 (
 {  arg out=0;
diff --git a/HelpSource/Classes/PV_PhaseShift90.schelp b/HelpSource/Classes/PV_PhaseShift90.schelp
index 27126cc..aa3e325 100644
--- a/HelpSource/Classes/PV_PhaseShift90.schelp
+++ b/HelpSource/Classes/PV_PhaseShift90.schelp
@@ -21,7 +21,7 @@ Examples::
 
 code::
 
-Server.internal.boot;
+s.boot;
 
 (
 { arg out=0, bufnum=0;
@@ -31,7 +31,7 @@ Server.internal.boot;
 	fft2 = FFT(LocalBuf(2048), in);
 	shifted = PV_PhaseShift90(fft);
 	Out.ar(0, [IFFT(fft2), IFFT(shifted)]);
-}.play
+}.scope
 )
 
 ::
diff --git a/HelpSource/Classes/PanAz.schelp b/HelpSource/Classes/PanAz.schelp
index dfa2850..0ee1ec1 100644
--- a/HelpSource/Classes/PanAz.schelp
+++ b/HelpSource/Classes/PanAz.schelp
@@ -61,7 +61,7 @@ Examples::
 code::
 
 // five channel circular panning
-Server.internal.boot;
+s.boot;
 (
 {
 	PanAz.ar(
@@ -71,8 +71,8 @@ Server.internal.boot;
 		0.5,			// level
 		3			// width
 	);
-}.play(Server.internal);
-Server.internal.scope;
+}.play;
+s.scope;
 )
 
 ::
diff --git a/HelpSource/Classes/Pbindef.schelp b/HelpSource/Classes/Pbindef.schelp
index f9bffd2..1411126 100644
--- a/HelpSource/Classes/Pbindef.schelp
+++ b/HelpSource/Classes/Pbindef.schelp
@@ -6,7 +6,9 @@ related:: Classes/Pdef, Classes/Pbind
 description::
 Pbindef keeps a reference to a Pbind in which single keys can be replaced, combining link::Classes/PbindProxy:: and link::Classes/Pdef::. It plays on when the old stream ended and a new stream is set and schedules the changes to the beat.
 
-the difference to Pdef is that it allows to incrementally change the elementary patterns (patternpairs) of a Pbind - also of an already existing Pbind inside a Pdef.
+the difference to Pdef is that it allows to incrementally change the elementary patterns (patternpairs) of a Pbind - also of an already existing Pbind inside a Pdef. 
+
+Pbindef and Pdef use the same global collection, while Pdef and Pdefn use separate ones.
 
 Pbindef inherits most methods from link::Classes/Pdef::. Overview: link::Overviews/JITLib::
 
diff --git a/HelpSource/Classes/Pdef.schelp b/HelpSource/Classes/Pdef.schelp
index 65f7789..5bb9f29 100644
--- a/HelpSource/Classes/Pdef.schelp
+++ b/HelpSource/Classes/Pdef.schelp
@@ -6,6 +6,8 @@ related:: Classes/Pdefn, Classes/PdefGui
 description::
 Pdef is a class that provides an interface to its superclass link::Classes/EventPatternProxy::, keeping a reference to a stream that can be replaced while playing. One pattern may be used in many streams in different places. A change in the pattern definition propagates through all streams.
 
+Pdef and Pdefn use separate global collections.
+
 code::
 Pdef(key)	//returns the instance
 Pdef(key, pat)	//stores the pattern and returns the instance, like Tdef and Ndef.
diff --git a/HelpSource/Classes/Pdefn.schelp b/HelpSource/Classes/Pdefn.schelp
index c5b5041..946b23c 100644
--- a/HelpSource/Classes/Pdefn.schelp
+++ b/HelpSource/Classes/Pdefn.schelp
@@ -6,6 +6,8 @@ related:: Classes/Pdef
 description::
 Pdefn provides an interface to its superclass link::Classes/PatternProxy::, keeping a reference to a stream that can be replaced while playing. One pattern may be used in many streams in different places. A change in the pattern definition propagates through all streams.
 
+Pdef and Pdefn use separate global collections.
+
 code::
 Pdefn(key)	//returns the instance
 Pdefn(key, pat)	//defines the pattern and returns the instance, like Pdef, Tdef and Ndef.
diff --git a/HelpSource/Classes/Pen.schelp b/HelpSource/Classes/Pen.schelp
index 199bc3d..51dcdff 100644
--- a/HelpSource/Classes/Pen.schelp
+++ b/HelpSource/Classes/Pen.schelp
@@ -33,7 +33,7 @@ argument:: p2
 An instance of link::Classes/Point::
 
 method:: curveTo
-Draws a cubic bezier curve from the current position to point. 
+Draws a cubic bezier curve from the current position to point. 
 strong::cpoint1:: and strong::cpoint2:: are control points determining the curve's curvature.
 argument:: endPoint
 An instance of link::Classes/Point::
@@ -43,7 +43,7 @@ argument:: cPoint2
 An instance of link::Classes/Point::
 
 method:: quadCurveTo
-Draws a quad bezier curve from the current position to point. 
+Draws a quad bezier curve from the current position to point. 
 strong::cpoint1:: is a control point determining the curve's curvature.
 argument:: endPoint
 An instance of link::Classes/Point::
@@ -202,7 +202,7 @@ w.refresh;
 ::
 
 method:: fill
-Fill the previous defined path. 
+Fill the previous defined path. 
 discussion::
 example:
 code::
@@ -441,13 +441,13 @@ w.refresh;
 ::
 
 method:: matrix
-Set transformation matrix to transform coordinate system.
-See link::#matrix_example:: for an example.
+Gets or sets the coordinate system transformation matrix.
+note::Getter only available in Qt GUI::
+
+See link::#Matrix example:: for an example.
+
 argument:: matrixArray
-A matrix array in the form
-code::
-[ zoomX, shearingY, shearingX, zoomY, translateX, translateY ]
-::
+An array of the form code::[ zoomX, shearingY, shearingX, zoomY, translateX, translateY ]::
 
 method:: width
 Sets the width of the Pen for the whole stroke
@@ -495,7 +495,7 @@ w.refresh
 method:: path
 Make a path, consisting of the drawing made in function.
 note::
-Unfortunately not working for now... 
+Unfortunately not working for now... 
 (there's no Pen.endPath which currently is used in this method)
 ::
 
@@ -626,8 +626,8 @@ Set the blending mode to use.
 See link::#blending_modes:: for more information.
 
 method:: lineDash
-Set the line dash pattern. 
-pattern should be a link::Classes/FloatArray:: of values that specify the lengths of the painted segments and not painted segments.
+Set the line dash pattern. 
+pattern should be a link::Classes/FloatArray:: of values that specify the lengths of the painted segments and not painted segments.
 
 examples::
 Simple rotating and scaling:
@@ -752,7 +752,7 @@ w.drawFunc = {
 		rrand(6,24).do {
 			Pen.color = Color.rand(0.0,1.0).alpha_(rrand(0.1,0.7));
 			Pen.beginPath;
-			Pen.addAnnularWedge(Point(0,0), a = rrand(60,300), a + 50.rand2, 2pi.rand 
+			Pen.addAnnularWedge(Point(0,0), a = rrand(60,300), a + 50.rand2, 2pi.rand 
 				+ (phase * 2.0.rand2), 2pi.rand);
 			if (0.5.coin) {Pen.stroke}{Pen.fill};
 		};
@@ -873,7 +873,7 @@ var sliders, spex, name;
 w = Window.new.front;
 w.view.background_(Color.white);
 
-// create a controller-window 
+// create a controller-window 
 controlWindow = Window("matrix controls", Rect(400,200,350,120));
 controlWindow.front;
 
@@ -895,14 +895,14 @@ w.drawFunc = {
     Pen.line(b, d);
     Pen.stroke;
 
-    Pen.font = Font( "Helvetica-Bold", 12 );
-    Pen.stringAtPoint( "A", a - 6 );
-    Pen.stringAtPoint( "B", b - 6 );
-    Pen.stringAtPoint( "C", c - (0 at 6) );
-    Pen.stringAtPoint( "D", d - (0 at 6) );
+    Pen.font = Font( "Helvetica-Bold", 12 );
+    Pen.stringAtPoint( "A", a - 6 );
+    Pen.stringAtPoint( "B", b - 6 );
+    Pen.stringAtPoint( "C", c - (0 at 6) );
+    Pen.stringAtPoint( "D", d - (0 at 6) );
 
-    Pen.font = Font( "Helvetica", 10 );
-    Pen.stringInRect( "a matrix test", r.moveBy( 50, 50 ));
+    Pen.font = Font( "Helvetica", 10 );
+    Pen.stringInRect( "a matrix test", r.moveBy( 50, 50 ));
 };
 
 controlWindow.view.decorator = sliders = FlowLayout(controlWindow.view.bounds);
@@ -916,11 +916,11 @@ spex = [
 ];
 name = #[zoomX, shearingY, shearingX, zoomY, translateX, translateY];
 6.do { |i|
-    EZSlider(controlWindow, 300 @ 14, name[i], spex[i], { |ez| var val;
-            val = ez.value;
-            [i, val.round(10e-4)].postln;
-            matrix.put(i, val);
-            w.refresh; // reevaluate drawFunc function
+    EZSlider(controlWindow, 300 @ 14, name[i], spex[i], { |ez| var val;
+            val = ez.value;
+            [i, val.round(10e-4)].postln;
+            matrix.put(i, val);
+            w.refresh; // reevaluate drawFunc function
     }, matrix[i]);
     sliders.nextLine;
 };
diff --git a/HelpSource/Classes/Pfin.schelp b/HelpSource/Classes/Pfin.schelp
index cc6de76..21e662c 100644
--- a/HelpSource/Classes/Pfin.schelp
+++ b/HelpSource/Classes/Pfin.schelp
@@ -5,9 +5,9 @@ categories:: Streams-Patterns-Events>Patterns>Repetition
 
 description::
 
-note::
-Pfin is intended for event patterns. After the count elements are embedded, the stream is called with a nil input value so that link::Classes/Pmono::, link::Classes/Pfx:: and others can release resources. Ordinary value patterns should not be called in this case, so for value patterns, you should use link::Classes/Pfinval:: instead.
-::
+Limits the number of output values from the given pattern or stream. If the stream is able to output more values, Pfin will terminate it early.
+
+The number may be given as a constant, or calculated on the fly from a function or stream. See the "sequence of pitches" example below.
 
 ClassMethods::
 
@@ -38,7 +38,7 @@ SynthDef(\help_sinegrain,
 
 (
 var c, b;
-c = Pn(Pfin({ rrand(3, 5)}, Pseq([1, 2, 3, 4, 5, 6],inf)*4+65),inf);
+c = Pn(Pfin({ rrand(3, 5) }, Pseq([1, 2, 3, 4, 5, 6], inf) * 4 + 65), inf);
 b = c.asStream;
 Routine({
 	loop({
@@ -47,4 +47,14 @@ Routine({
 	})
 }).play;
 )
+
+// or, more concisely:
+
+p = Pbind(
+	\instrument, \help_sinegrain,
+	\midinote, Pn(Pfin({ rrand(3, 5) }, Pseq([1, 2, 3, 4, 5, 6], inf) * 4 + 65), inf),
+	\dur, 0.12
+).play;
+
+p.stop;
 ::
diff --git a/HelpSource/Classes/PopUpMenu.schelp b/HelpSource/Classes/PopUpMenu.schelp
index 2a2ec9f..768dde3 100644
--- a/HelpSource/Classes/PopUpMenu.schelp
+++ b/HelpSource/Classes/PopUpMenu.schelp
@@ -26,6 +26,10 @@ METHOD:: items
 	argument::
 		An Array of Strings or Symbols.
 
+METHOD:: clear
+    note:: Only available in Qt GUI ::
+    Removes all items.
+
 METHOD:: item
 	The currently selected item.
 
diff --git a/HelpSource/Classes/PparGroup.schelp b/HelpSource/Classes/PparGroup.schelp
index e96dc7b..2683e5f 100644
--- a/HelpSource/Classes/PparGroup.schelp
+++ b/HelpSource/Classes/PparGroup.schelp
@@ -15,7 +15,7 @@ code::
 var p, q, r, o;
 p = Pbind(\degree, Prand((0..7),12), \dur, 0.3, \legato, 0.2);
 
-Ppargroup(p).play;
+PparGroup(p).play;
 
 // post the node structure:
 fork {
diff --git a/HelpSource/Classes/ProgramChangeResponder.schelp b/HelpSource/Classes/ProgramChangeResponder.schelp
index 48ce692..c3a198d 100644
--- a/HelpSource/Classes/ProgramChangeResponder.schelp
+++ b/HelpSource/Classes/ProgramChangeResponder.schelp
@@ -4,7 +4,7 @@ related:: Classes/MIDIFunc, Classes/MIDIdef, Classes/MIDIResponder, Classes/CCRe
 categories:: External Control>MIDI
 
 Description::
-note:: As of SC 3.5 link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: are the recommended way of registering for incoming MIDI messages. They are faster, safer, and have more logical argument order than the old MIDI responder classes. The older class MIDIResponder, and its subclasses NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, CCResponder, and ProgramChangeResponder are maintained for legacy code only.::
+note:: SC 3.5 added the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. These are faster, and aim to have a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef::. They still lack some features of the MIDIresponder classes.::
 ClassMethods::
 
 method::new
@@ -22,7 +22,7 @@ argument::num
 An link::Classes/Integer:: between 0 and 127 that selects which program change number to match. nil matches all. May also be a link::Classes/Function:: which will be evaluated to determine the match. eg: { |val| val >= 4 }
 
 argument::install
-If true, install the responder automatically so it is active and ready to respond. If false, then it will be inactive.
+If true, then if the midi event is matched, cease testing any further responders. Note that doing this will prevent any other responders of this type from responding, including ones added behind the scenes in classes. Note also that this functionality is sensitive to the order in which responders are added. 
 
 Examples::
 
diff --git a/HelpSource/Classes/Pseg.schelp b/HelpSource/Classes/Pseg.schelp
index 6e741d1..ed38607 100644
--- a/HelpSource/Classes/Pseg.schelp
+++ b/HelpSource/Classes/Pseg.schelp
@@ -1,6 +1,6 @@
 class:: Pseg
 summary:: timed embedding of values
-related:: Classes/Ptime, Classes/Pstep
+related:: Classes/Ptime, Classes/Pstep, Classes/Env
 categories:: Streams-Patterns-Events>Patterns>Time
 
 description::
diff --git a/HelpSource/Classes/PureUGen.schelp b/HelpSource/Classes/PureUGen.schelp
new file mode 100644
index 0000000..a80e630
--- /dev/null
+++ b/HelpSource/Classes/PureUGen.schelp
@@ -0,0 +1,13 @@
+TITLE:: PureUGen
+summary:: Pure UGen
+categories:: UGens
+related:: Classes/UGen
+
+DESCRIPTION::
+
+A Pure UGen is a UGen, which does not access any shared resources like busses, buffers or random number generators. UGen
+classes which are derived from PureUGen are candidates for common subexpression elimination and dead code elimination
+passes during the SynthDef compilation.
+
+INSTANCEMETHODS::
+PRIVATE:: optimizeGraph
diff --git a/HelpSource/Classes/Quark.schelp b/HelpSource/Classes/Quark.schelp
index 4b7e224..bbd4d42 100644
--- a/HelpSource/Classes/Quark.schelp
+++ b/HelpSource/Classes/Quark.schelp
@@ -52,7 +52,7 @@ For example, if the quark contains teletype::HelpSource/Reference/MyQuark.schelp
 code::
     \schelp: "Reference/MyQuark"
 ::
-It is used by link::#-openHelpFile::. If no code::\schelp:: is given, it will open the category browser showing all helpfiles for the quark.
+It is used by link::#-help::. If no code::\schelp:: is given, it will open the category browser showing all helpfiles for the quark.
 
 note::
 The old help system (sc version 3.4) used code::\helpdoc::, and the new help system (link::Classes/SCDoc::) uses code::\schelp:: instead to be able to support both old and new helpfiles during the transition to the new help system.
@@ -77,7 +77,7 @@ method:: path
 The path of the quark.
 method:: info
 The whole info blob as given in the .quark file.
-method:: openHelpFile
+method:: help
 Open the main helpfile for this quark as given by the code::\schelp:: key in the directory file,
 or the category browser page showing all helpfiles for this quark if no main helpfile was specified.
 This method falls back to opening the old help as given by code::\helpdoc:: if above fails.
diff --git a/HelpSource/Classes/Ramp.schelp b/HelpSource/Classes/Ramp.schelp
index b7fdc07..b88aea3 100644
--- a/HelpSource/Classes/Ramp.schelp
+++ b/HelpSource/Classes/Ramp.schelp
@@ -46,7 +46,7 @@ This value will be added to the output.
 Examples::
 
 code::
-Server.internal.boot;
+s.boot;
 (
 // used to lag pitch
 {
@@ -67,8 +67,8 @@ var pulse;
 {
 	pulse = LFPulse.kr(8.772);
 	Out.kr(0,[Ramp.kr(pulse, 0.025), Lag.kr(pulse, 0.025), pulse]);
-}.play(Server.internal);
-Server.internal.scope(3, bufsize: 44100, rate: \control, zoom: 40);
+}.play;
+s.scope(3, bufsize: 44100, rate: \control, zoom: 40);
 )
 ::
 
diff --git a/HelpSource/Classes/Ref.schelp b/HelpSource/Classes/Ref.schelp
index ef31b34..21d315c 100644
--- a/HelpSource/Classes/Ref.schelp
+++ b/HelpSource/Classes/Ref.schelp
@@ -122,3 +122,14 @@ code::
 	]).play;
 )
 ::
+
+
+method::multichannelExpandRef
+This method is called internally on inputs to UGens that take multidimensional arrays, like link::Classes/Klank:: and it allows proper multichannel expansion even in those cases. For SequenceableCollection, this returns the collection itself, assuming that it contains already a number of Refs.
+
+argument::rank
+The depth at which the list is expanded. For instance the Klank spec has a rank of 2.
+code::
+`([[[100, 200], 500], nil, [[[0.01, 0.3], 0.8]]]).multichannelExpandRef(2);
+[`[[100, 200], nil, [0.2, 0.8]], `[[130, 202], nil, [0.2, 0.5]]].multichannelExpandRef(2);
+::
diff --git a/HelpSource/Classes/Routine.schelp b/HelpSource/Classes/Routine.schelp
index b58be80..3ae225e 100644
--- a/HelpSource/Classes/Routine.schelp
+++ b/HelpSource/Classes/Routine.schelp
@@ -302,7 +302,7 @@ w.view.background_(Color.new255(153, 255, 102).vary);
 
 string = "swing ".dup(24).join;
 
-w.drawHook = Routine {
+w.drawFunc = Routine {
 	var i = 0;
 	var size = 40;
 	var func = { |i, j| sin(i * 0.07 + (j * 0.0023) + 1.5pi) * much + 1 };
diff --git a/HelpSource/Classes/SCImage.schelp b/HelpSource/Classes/SCImage.schelp
index 1ace715..6af96a1 100644
--- a/HelpSource/Classes/SCImage.schelp
+++ b/HelpSource/Classes/SCImage.schelp
@@ -103,7 +103,7 @@ code::
 	w = SCWindow.new;
 	w.front; // comment this to copy offscreen window
 	w.view.background_(Color.white);
-	w.drawHook = {
+	w.drawFunc = {
 		SCPen.translate(100, 100);
 		10.do{
 			// set the Color
@@ -438,7 +438,7 @@ code::
 	});
 	i.interpolation_(\none);
 	tgHeight = targetWidth * ratio;
-	w = SCWindow.new("", Rect(400,400, 450, 150)).drawHook_({
+	w = SCWindow.new("", Rect(400,400, 450, 150)).drawFunc_({
 		SCPen.setShadow(2 at 2, 0.4, color:Color.red);
 		i.drawInRect(Rect(5,5,targetWidth, tgHeight));
 	});
@@ -480,7 +480,7 @@ code::
 
 	w.onClose_({ i.free }); // free the image when the window is closed
 
-	w.drawHook_({
+	w.drawFunc_({
 
 		i.drawAtPoint(10 at 10, nil, operation, fraction);
 
@@ -511,7 +511,7 @@ code::
 
 	w = SCWindow.new("SCImage", Rect(120, 400, 360, 180)).front;
 	w.onClose_({ i.free }); // free the image when the window is closed
-	w.drawHook_({
+	w.drawFunc_({
 		i.drawInRect(Rect(10,10,50,50), Rect(10,10,50,50), 2, 1.0); // only a section
 	});
 )
@@ -540,7 +540,7 @@ code::
 
 	w = SCWindow.new("SCImage", Rect(120, 400, 360, 180)).front;
 	w.onClose_({ i.free }); // free the image when the window is closed
-	w.drawHook_({
+	w.drawFunc_({
 		i.tileInRect(w.view.bounds, nil, 2, 1.0); // all image contents
 	});
 )
diff --git a/HelpSource/Classes/Schmidt.schelp b/HelpSource/Classes/Schmidt.schelp
index e435da7..2b50b1e 100644
--- a/HelpSource/Classes/Schmidt.schelp
+++ b/HelpSource/Classes/Schmidt.schelp
@@ -42,7 +42,7 @@ Examples::
 
 code::
 
-Server.internal.boot;
+s.boot;
 
 { Schmidt.kr(SinOsc.kr(1, 0, 0.2), -0.15, 0.15)}.scope; // see the trigger
 
diff --git a/HelpSource/Classes/ScopeView.schelp b/HelpSource/Classes/ScopeView.schelp
index 712a095..aa01f11 100644
--- a/HelpSource/Classes/ScopeView.schelp
+++ b/HelpSource/Classes/ScopeView.schelp
@@ -72,7 +72,6 @@ SUBSECTION:: A step-by-step example
 code::
 // execute these in succession
 (
-s = Server.internal;
 s.boot;
 )
 (
@@ -128,7 +127,7 @@ This explains all the options:
 code::
 (
 
-s = Server.internal;
+
 s.waitForBoot({ 
 
     var func, sdef1, sdef2, syn1, syn2,startButton ;
diff --git a/HelpSource/Classes/SequenceableCollection.schelp b/HelpSource/Classes/SequenceableCollection.schelp
index 2e5c2ed..79af9ba 100644
--- a/HelpSource/Classes/SequenceableCollection.schelp
+++ b/HelpSource/Classes/SequenceableCollection.schelp
@@ -7,6 +7,8 @@ SequenceableCollection is a subclass of Collection whose elements can be indexed
 
 CLASSMETHODS::
 
+copymethod:: Collection *fill
+
 method::series
 Fill a SequenceableCollection with an arithmetic series.
 code::
@@ -62,8 +64,31 @@ code::
 Array.interpolation(5, 3.2, 20.5);
 ::
 
+
+
 INSTANCEMETHODS::
 
+
+method::|@|
+synonym for link::Classes/ArrayedCollection#-clipAt::.
+code::
+[3, 4, 5]|@|6;
+::
+
+method::@@
+synonym for link::Classes/ArrayedCollection#-wrapAt::.
+code::
+[3, 4, 5]@@6;
+[3, 4, 5]@@ -1;
+[3, 4, 5]@@[6, 8]
+::
+
+method::@|@
+synonym for link::Classes/ArrayedCollection#-foldAt::.
+code::
+[3, 4, 5]@|@[6, 8];
+::
+
 method::first
 Return the first element of the collection.
 code::
@@ -111,6 +136,11 @@ y = List[ 10, 5, 77, 55, 12, 123];
 y.indexOfGreaterThan(70);
 ::
 
+copymethod:: Collection -maxIndex
+
+copymethod:: Collection -minIndex
+
+
 method::find
 If the strong::sublist:: exists in the receiver (in the specified order), at an offset greater than or equal to the initial strong::offset::, then return the starting index.
 code::
@@ -169,7 +199,7 @@ method::remove
 Remove strong::item:: from collection.
 
 method::take
-Remove and return strong::item:: from collection. The last item in the collection will move to occupy the vacated slot (and the collection size decreases by one). See also takeAt, defined for link::Classes/ArrayedCollection#takeAt::.
+Remove and return strong::item:: from collection. The last item in the collection will move to occupy the vacated slot (and the collection size decreases by one). See also takeAt, defined for link::Classes/ArrayedCollection#-takeAt::.
 code::
 a = [11, 12, 13, 14, 15];
 a.take(12);
@@ -193,9 +223,10 @@ a.drop(-3);
 ::
 
 method::join
-Returns a link::Classes/String:: formed by connecting all the elements of the receiver, with strong::joiner:: inbetween.
+Returns a link::Classes/String:: formed by connecting all the elements of the receiver, with strong::joiner:: inbetween. See also link::Classes/String#-split:: as the complementary operation.
 code::
-["m", "ss", "ss", "pp", ""].join("i");
+["m", "ss", "ss", "pp", ""].join("i").postcs;
+"mississippi".split("i").postcs;
 ::
 
 method::flat
@@ -218,6 +249,26 @@ code::
 [[1, 2, 3], [4, 5, 6], [7, 8]].flop; // shorter array wraps
 [].flop; // result is always 2-d.
 ::
+Note that the innermost arrays are not copied:
+code::
+a = [1, 2];
+x = [[[a, 5], [a, 10]], [[a, 50, 60]]].flop;
+a[0] = pi;
+x // pi is everywhere
+::
+
+
+method::flopWith
+Flop with a user defined function. Can be used to collect over several collections in parallel.
+code::
+[[1, 2, 3], [4, 5, 6]].flopWith(_+_);
+[[1, 2, 3], 1, [7, 8]].flopWith{ |a,b,c| a+b+c }; // shorter array wraps
+
+// typical use case (pseudocode)
+[synths, buffers].flopWith{ |a,b| a.set(\buf, b) }
+::
+argument::func
+A function taking as many arguments as elements in the array.
 
 method::flopTogether
 Invert rows and colums in a an array of dimensional Collections (turn inside out), so that they all match up in size, but remain separated.
@@ -234,6 +285,58 @@ a.collect(_.size); // sizes are the same
 a.collect(_.shape) // shapes can be different
 ::
 
+
+method::flopDeep
+Fold dimensions in a multi-dimensional Collection (turn inside out).
+
+argument::rank
+The depth (dimension) from which the array is inverted inside-out.
+
+code::
+[[1, 2, 3], [[41, 52], 5, 6]].flopDeep(2);
+[[1, 2, 3], [[41, 52], 5, 6]].flopDeep(1);
+[[1, 2, 3], [[41, 52], 5, 6]].flopDeep(0);
+[[1, 2, 3], [[41, 52], 5, 6]].flopDeep; // without argument, flop from the deepest level
+
+[[[10, 100, 1000], 2, 3], [[41, 52], 5, 6]].flopDeep(2); // shorter array wraps
+[].flopDeep(1); // result is always one dimension higher.
+[[]].flopDeep(4);
+::
+
+note::Note that, just like in flop, the innermost arrays (deeper than rank) are not copied.::
+
+code::
+a = [1, 2];
+x = [[[a, 5], [a, 10]], [[a, 50, 60]]].flopDeep(1);
+a[0] = pi;
+x // pi is everywhere
+::
+
+method::maxSizeAtDepth
+Returns the maximum size of all subarrays at a certain depth (dimension)
+
+argument::rank
+The depth at which the size of the arrays is measured
+
+code::
+[[1, 2, 3], [[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(2);
+[[1, 2, 3], [[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(1);
+[[1, 2, 3], [[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(0);
+[].maxSizeAtDepth(0);
+[[]].maxSizeAtDepth(0);
+[[]].maxSizeAtDepth(1);
+::
+
+method::maxDepth
+Returns the maximum depth of all subarrays.
+
+argument::max
+Internally used only.
+
+code::
+[[1, 2, 3], [[41, 52], 5, 6], 1, 2, 3].maxDepth
+::
+
 method::resamp0
 Returns a new Collection of the desired length, with values resampled evenly-spaced from the receiver without interpolation.
 code::
@@ -310,6 +413,12 @@ code::
 [1, 2, 3, 5, 6, 8, 10].separate({ arg a, b; (b - a) > 1 }).postcs;
 ::
 
+method::split
+Separates the collection into sub-collections at the separator element or subarray. The separator is a link::Classes/Collection::, or anything that can be converted into the class this method is called on. It is strong::not:: included in the output array. The default separator is $/, for the common use in link::Classes/String::.
+code::
+[1, 2, 1, 2, 3, 1, 2, 1, 3].split([2, 1])
+::
+
 method::clump
 Separates the collection into sub-collections by separating every groupSize elements.
 code::
@@ -323,7 +432,7 @@ code::
 ::
 
 method::curdle
-Separates the collection into sub-collections by separating elements according to the given probability.
+Separates the collection into sub-collections by randomly separating elements according to the given probability.
 code::
 [1, 2, 3, 4, 5, 6, 7, 8].curdle(0.3).postcs;
 ::
@@ -401,9 +510,17 @@ The result depends on the objects in the collection, but the main use case is fo
 
 See also link::Guides/Multichannel-Expansion::
 
-method::clip, wrap, fold, prune, linlin, linexp, explin, expexp, lincurve, curvelin, range, exprange, unipolar, bipolar, lag, lag2, lag3, lagud, lag2ud, lag3ud, varlag, blend, checkBadValues
+method::clip, wrap, fold, prune, linlin, linexp, explin, expexp, lincurve, curvelin, bilin, biexp, range, exprange, unipolar, bipolar, lag, lag2, lag3, lagud, lag2ud, lag3ud, varlag, slew, blend, checkBadValues
 Calls code:: this.multiChannelPerform(selector, *args) :: where selector is the name of the message.
 
+method::multichannelExpandRef
+This method is called internally on inputs to UGens that take multidimensional arrays, like link::Classes/Klank:: and it allows proper multichannel expansion even in those cases. For SequenceableCollection, this returns the collection itself, assuming that it contains already a number of Refs. See link::Classes/Ref:: for the corresponding method implementation.
+argument::rank
+The depth at which the list is expanded. For instance the Klank spec has a rank of 2. For more examples, see link::Classes/SequenceableCollection#-flopDeep::
+code::
+`([[[100, 200], 500], nil, [[[0.01, 0.3], 0.8]]]).multichannelExpandRef(2);
+[`[[100, 200], nil, [0.2, 0.8]], `[[130, 202], nil, [0.2, 0.5]]].multichannelExpandRef(2);
+::
 
 subsection:: Rhythm-lists
 method:: convertRhythm
diff --git a/HelpSource/Classes/Server.schelp b/HelpSource/Classes/Server.schelp
index 0af0110..f38aeec 100644
--- a/HelpSource/Classes/Server.schelp
+++ b/HelpSource/Classes/Server.schelp
@@ -102,6 +102,13 @@ query the system for any sc-server apps and hard quit them
 method:: freeAll
 free all nodes in all registered servers
 
+method:: supernova
+
+Switches server program to use supernova. Check link::Classes/ParGroup:: how to make use of multicore hardware with the supernova server.
+
+method:: scsynth
+
+Switches server program to use supernova.
 
 
 InstanceMethods::
@@ -179,7 +186,7 @@ A function to evaluate after the server has booted successfully.
 argument:: limit
 The number of times to check for a successful boot.
 argument:: onFailure
-A function to evaluate after the server fails to boot. If onFailure is not given, an error message is posted. Providing a function suppresses the error message. If you want to supply a function and print the normal error message, make sure that your function returns "false," e.g. code::s.waitForBoot(onFailure: { ... custom action...; false })::.
+A function to evaluate after the server fails to boot. If onFailure is not given, an error message is posted. Providing a function suppresses the error message. If you want to supply a function and print the normal error message, make sure that your function returns "false," e.g. code::s.doWhenBooted(onFailure: { ... custom action...; false })::.
 
 method:: boot
 boot the remote server, create new allocators.
@@ -256,6 +263,8 @@ table::
 ## 3 || print both the parsed and hexadecimal representations of the contents.
 ::
 
+note:: teletype::/status:: messages won't be posted, when dumping is enabled::
+
 method:: queryAllNodes
 Post a representation of this Server's current node tree to the post window. See link::#-plotTree:: for a graphical variant.
 discussion::
@@ -612,6 +621,6 @@ table::
 ## d || toggle dumpOSC
 ## n || post a representation of the node tree
 ## N || post a representation of the node tree and the current control values of any synths
-## s || scope (internal server only)
+## s || scope
 ::
 
diff --git a/HelpSource/Classes/SetResetFF.schelp b/HelpSource/Classes/SetResetFF.schelp
index fe7d088..16f6409 100644
--- a/HelpSource/Classes/SetResetFF.schelp
+++ b/HelpSource/Classes/SetResetFF.schelp
@@ -12,6 +12,7 @@ set to zero or one further triggers in the same input are have no effect.
 One use of this is to have some precipitating event cause something to
 happen until you reset it.
 
+If both inputs receive a trigger at the same time, the teletype::reset:: input takes precedence. The output will be 0. See the examples below.
 
 classmethods::
 
@@ -45,3 +46,17 @@ play({
 
 ::
 
+subsection::Simultaneous triggers
+
+Here, 'reset' is triggered twice as often as 'trig'. Since 'trig' is always matched by a 'reset', the output is 0. (If 'trig' took precedence, you would have a 50%-duty-cycle pulse wave.)
+
+code::
+a = { SetResetFF.kr(Impulse.kr(50), Impulse.kr(100)) }.plot(duration: 0.1);
+::
+
+You can reverse this behavior, by reversing the inputs so that SetResetFF is triggered twice as often as resetting. This results in a signal that is 0 initially and switches to 1 halfway through the cycle: emphasis::reset, then trigger::. To make it emphasis::trigger, then reset::, invert the phase: code::1 - SetResetFF::.
+
+code::
+a = { 1 - SetResetFF.kr(Impulse.kr(100), Impulse.kr(50)) }.plot(duration: 0.1);
+::
+
diff --git a/HelpSource/Classes/Shaper.schelp b/HelpSource/Classes/Shaper.schelp
index 1985253..629837b 100644
--- a/HelpSource/Classes/Shaper.schelp
+++ b/HelpSource/Classes/Shaper.schelp
@@ -18,9 +18,8 @@ The input signal.
 
 
 Examples::
-Examples use the Internal Server to show the effect of waveshaping via a scope. Use .play instead if necessary.
 code::
-Server.default = s = Server.internal; s.boot;
+s.boot;
 
 b = Buffer.alloc(s, 512, 1, { |buf| buf.chebyMsg([1,0,1,1,0,1])});
 
diff --git a/HelpSource/Classes/SimpleNumber.schelp b/HelpSource/Classes/SimpleNumber.schelp
index ad87883..df581a1 100644
--- a/HelpSource/Classes/SimpleNumber.schelp
+++ b/HelpSource/Classes/SimpleNumber.schelp
@@ -268,6 +268,11 @@ code::
 (a - clip2(a,b))
 ::
 
+method:: madd
+code::
+this * a + b
+::
+
 subsection:: testing
 method:: isPositive
 Answer if the number is >= 0.
@@ -857,6 +862,7 @@ returns:: A random number from -this to +this that is the result of summing thre
 
 method:: exprand
 an exponentially distributed random number in the interval ]a, b[. This is always a link::Classes/Float::.
+(Note that the distribution of numbers is not exactly an EMPHASIS::exponential distribution::, since that would be unbounded: we might call it a EMPHASIS::logarithmic uniform distribution::.)
 argument::aNumber
 the upper limit
 argument::adverb
@@ -885,6 +891,15 @@ code::
 ::
 
 
+subsection:: UGen Compatibility Methods
+
+Some methods to ease the development of generic ugen code.
+
+method:: lag, lag2, lag3, lagud, lag2ud, lag3ud, slew, varlag
+
+returns:: code::this::
+
+
 subsection:: misc
 
 method:: isValidUGenInput
diff --git a/HelpSource/Classes/SinOscFB.schelp b/HelpSource/Classes/SinOscFB.schelp
index dd5b1fd..f7d3573 100644
--- a/HelpSource/Classes/SinOscFB.schelp
+++ b/HelpSource/Classes/SinOscFB.schelp
@@ -47,28 +47,7 @@ code::
 {SinOscFB.ar(100*SinOscFB.ar(MouseY.kr(1,1000,'exponential'))+200,MouseX.kr(0.5pi,pi))*0.1}.play
 
 
-//JMC original example
-
-(
-var f, s;
-w = Window("scope test", Rect(128, 64, 680, 280));
-
-n = SCScope(w, Rect(10,10,640,256));
-n.background = Color.blue(0.2);
-n.resize = 5;
-w.front;
-)
-
-s = Server.internal;
-s.boot;
-
-s.sendMsg(\b_alloc, 0, 8192, 2);
-
-{
-var z;
-z = SinOscFB.ar([400,301], MouseX.kr(0,4),0.3);
-Out.ar(0, z);
-ScopeOut.ar(z, 0);
-}.play(s);
+// Scope the wave form
+{ SinOscFB.ar([400,301], MouseX.kr(0,4),0.3); }.scope;
 
 ::
diff --git a/HelpSource/Classes/SoundFileView.schelp b/HelpSource/Classes/SoundFileView.schelp
index cb0f233..97eec99 100644
--- a/HelpSource/Classes/SoundFileView.schelp
+++ b/HelpSource/Classes/SoundFileView.schelp
@@ -344,7 +344,7 @@ METHOD:: selectAll
 
 METHOD:: selectNone
 
-    Sets the size of a selectino to 0.
+    Sets the size of a selection to 0.
 
     argument:: index
         The index of the selection; an Integer between 0 an 63.
diff --git a/HelpSource/Classes/SoundIn.schelp b/HelpSource/Classes/SoundIn.schelp
index cb5444f..67bb12e 100644
--- a/HelpSource/Classes/SoundIn.schelp
+++ b/HelpSource/Classes/SoundIn.schelp
@@ -31,6 +31,5 @@ code::
 { SoundIn.ar([0, 1]) }.play;
 
 // scope input; silent output
-Server.internal.boot;
 { Amplitude.kr(SoundIn.ar(0)); }.scope;
 ::
diff --git a/HelpSource/Classes/Splay.schelp b/HelpSource/Classes/Splay.schelp
index 3d89fb6..f7d91e1 100644
--- a/HelpSource/Classes/Splay.schelp
+++ b/HelpSource/Classes/Splay.schelp
@@ -5,22 +5,34 @@ related:: Classes/SplayAz, Classes/SplayZ
 
 description::
 Splay spreads an array of channels across the stereo field.
-Optional spread and center controls, and levelComp(ensation) (equal power).
+Optional arguments are spread and center, and equal power levelCompensation.
+The formula for the stereo position is ((0 .. (n - 1)) * (2 / (n - 1) - 1) * spread + center
 
 classmethods::
-method:: ar
+method:: ar, kr
 argument:: inArray
+The array of channels to be distributed over the two stereo pairs
 argument:: spread
+For spread = 0, all channels end up in the centre, for 1, they have maximum distribution
 argument:: level
+An amplitude multiplier for all channels
 argument:: center
+Shift the centre of the distribution.
 argument:: levelComp
 
+
 method:: arFill
+In analogy to Mix:arFill, this method takes a function that produces the channels. The countinmg index is passed to it.
 argument:: n
+Number of channels
 argument:: function
+Function to return each channel
 argument:: spread
+For spread = 0, all channels end up in the centre, for 1, they have maximum distribution
 argument:: level
+An amplitude multiplier for all channels
 argument:: center
+Shift the centre of the distribution.
 argument:: levelComp
 
 examples::
@@ -28,12 +40,12 @@ examples::
 code::
 (
 x = { arg spread=1, level=0.2, center=0.0;
- Splay.ar(
-  SinOsc.ar( { |i| LFNoise2.kr( rrand(10, 20), 200, 400) } ! 10),
-  spread,
-  level,
-  center
- );
+ Splay.ar(
+  SinOsc.ar( { |i| LFNoise2.kr(1).exprange(200, 4000) } ! 10),
+  spread,
+  level,
+  center
+ );
 }.play;
 )
 
@@ -46,7 +58,7 @@ x.set(\spread, 0,   \center, -1); // all left
 x.set(\spread, 1,   \center, 0);  // full stereo
 
 
- // the same example written with arFill:
+ // the a similar example written with arFill:
 (
 x = { arg spread=1, level=0.2, center=0.0;
  Splay.arFill(10,
diff --git a/HelpSource/Classes/Spring.schelp b/HelpSource/Classes/Spring.schelp
index 52804a9..ba62df8 100644
--- a/HelpSource/Classes/Spring.schelp
+++ b/HelpSource/Classes/Spring.schelp
@@ -4,7 +4,7 @@ categories:: UGens>Filters>Nonlinear, UGens>Generators>PhysicalModels
 related:: Classes/Ball, Classes/TBall
 
 description::
-models the force of a resonating string
+models the force of a resonating spring
 
 classmethods::
 
diff --git a/HelpSource/Classes/String.schelp b/HelpSource/Classes/String.schelp
index 41935d6..156d114 100644
--- a/HelpSource/Classes/String.schelp
+++ b/HelpSource/Classes/String.schelp
@@ -35,7 +35,7 @@ Please use link::Classes/Platform#*resourceDir:: instead.
 
 INSTANCEMETHODS::
 
-private::prUnixCmd, prFormat, prCat, prBounds, hash, species, getSCDir, prDrawInRect, prDrawAtPoint
+private::prUnixCmd, prFormat, prCat, prBounds, hash, species, getSCDir, prDrawInRect, prDrawAtPoint, openTextFile
 
 subsection:: Accessing characters
 
@@ -424,8 +424,8 @@ argument:: string
 Padding string
 code::
 "this sentence has thirty-nine letters".padRight(39, "-+");
-"this sentence has thirty-nine letters".padLeft(30, "-+");
-"this sentence has thirty-nine letters".padRight(13, "-+"); // nothing to pad.
+"this sentence has thirty-nine letters".padLeft(39, "-+");
+"this sentence more than thirteen letters".padRight(13, "-+"); // nothing to pad.
 ::
 
 method::toUpper
@@ -452,10 +452,12 @@ g.close;
 ::
 
 method::split
-Returns an Array of Strings split at the separator. The separator is a link::Classes/Char::, and is not included in the output array. The default separator is $/, handy for Unix paths.
+Returns an Array of Strings split at the separator. The separator is a link::Classes/Char::, a link::Classes/String::, or anything that can be converted into a string. It is strong::not:: included in the output array. The default separator is $/, handy for Unix paths.
 code::
-"This/could/be/a/Unix/path".split.postln;
-"These are several words".split($ ).postln;
+"This/could/be/a/Unix/path".split;
+"These are several words".split($ );
+"These are several words".split(" ");
+"accgcagcttag".split("gc");
 ::
 
 subsection:: Stream support
@@ -664,6 +666,16 @@ code::
 "Imaginary/Directory/fish.rtf".splitext;
 ::
 
+subsection::YAML and JSON parsing
+
+method::parseYAML
+Parse this string as YAML/JSON.
+returns::
+A nested structure of link::Classes/Array::s (for sequences), link::Classes/Dictionary##Dictionaries:: (for maps) and link::Classes/String::s (for scalars).
+
+method::parseYAMLFile
+Same as code::parseYAML:: but parse a file directly instead of a string. This is faster than reading a file into a string and then parse it.
+
 subsection::Document Support
 
 method::newTextWindow
@@ -673,20 +685,10 @@ code::
 ::
 
 method::openDocument
-Create a new link::Classes/Document:: from the path corresponding to this. Returns the Document.
-code::
-(
-d = "Help/Help.html".openDocument;
-d.class;
-)
-::
-
-method::openTextFile
 Create a new link::Classes/Document:: from the path corresponding to this. The selection arguments will preselect the indicated range in the new window. Returns this.
 code::
 (
-d = "Help/Help.html".openTextFile(20, 210);
-d.class;
+String.filenameSymbol.asString.openDocument(10, 20)
 )
 ::
 
@@ -697,11 +699,11 @@ code::
 "foobar".findHelpFile;
 ::
 
-method::openHelpFile
+method::help
 Performs link::#-findHelpFile:: on this, and opens the file it if it exists, otherwise opens the main helpfile.
 code::
-"Document".openHelpFile;
-"foobar".openHelpFile;
+"Document".help;
+"foobar".help;
 ::
 
 subsection::Misc methods
@@ -718,7 +720,7 @@ Returns class link::Classes/StringInspector::.
 
 subsection::Drawing Support
 
-The following methods must be called within an Window-drawHook or a SCUserView-drawFunc function, and will only be visible once the window or the view is refreshed. Each call to Window-refresh SCUserView-refresh will 'overwrite' all previous drawing by executing the currently defined function.
+The following methods must be called within an Window-drawFunc or a SCUserView-drawFunc function, and will only be visible once the window or the view is refreshed. Each call to Window-refresh SCUserView-refresh will 'overwrite' all previous drawing by executing the currently defined function.
 
 See also: link::Classes/Window::, link::Classes/UserView::, link::Classes/Color::, and link::Classes/Pen::.
 
@@ -732,7 +734,7 @@ code::
 (
 w = Window.new.front;
 w.view.background_(Color.white);
-w.drawHook = {
+w.drawFunc = {
 	"abababababa\n\n\n".scramble.draw
 };
 w.refresh
@@ -745,7 +747,7 @@ code::
 (
 w = Window.new.front;
 w.view.background_(Color.white);
-w.drawHook = {
+w.drawFunc = {
 	"abababababa\n\n\n".scramble.drawAtPoint(
 		100 at 100,
 		Font("Courier", 30),
@@ -762,7 +764,7 @@ code::
 w = Window.new.front;
 r = Rect(100, 100, 100, 100);
 w.view.background_(Color.white);
-w.drawHook = {
+w.drawFunc = {
 	"abababababa\n\n\n".scramble.drawInRect(r, Font("Courier", 12), Color.blue(0.3, 0.5));
 	Pen.strokeRect(r);
 };
@@ -777,7 +779,7 @@ code::
 w = Window.new.front;
 w.view.background_(Color.white);
 r = Rect(100, 100, 100, 100);
-w.drawHook = {
+w.drawFunc = {
 	"abababababa\n\n\n".scramble.drawCenteredIn(
 		r,
 		Font("Courier", 12),
@@ -796,7 +798,7 @@ code::
 w = Window.new.front;
 w.view.background_(Color.white);
 r = Rect(100, 100, 100, 100);
-w.drawHook = {
+w.drawFunc = {
 	"abababababa\n\n\n".scramble.drawLeftJustIn(
 		r,
 		Font("Courier", 12),
@@ -815,7 +817,7 @@ code::
 w = Window.new.front;
 w.view.background_(Color.white);
 r = Rect(100, 100, 100, 100);
-w.drawHook = {
+w.drawFunc = {
 	"abababababa\n\n\n".scramble.drawRightJustIn(
 		r,
 		Font("Courier", 12),
diff --git a/HelpSource/Classes/SubsampleOffset.schelp b/HelpSource/Classes/SubsampleOffset.schelp
index a586b79..cce0e70 100644
--- a/HelpSource/Classes/SubsampleOffset.schelp
+++ b/HelpSource/Classes/SubsampleOffset.schelp
@@ -29,9 +29,6 @@ code::
 // example: demonstrate cubic subsample interpolation
 
 
-Server.default = s = Server.internal; // switch servers for scope
-
-
 // impulse train that can be moved between samples
 (
 SynthDef(\Help_SubsampleOffset, { |out, addOffset|
@@ -47,7 +44,7 @@ SynthDef(\Help_SubsampleOffset, { |out, addOffset|
 							delaytime: sampDur * (sampleOffset + extraSamples)
 					);
 	OffsetOut.ar(out, resampledSignal)
-}).send(s);
+}).add;
 )
 
 // create 2 pulse trains 1 sample apart, move one relatively to the other.
@@ -78,12 +75,13 @@ SynthDef("Help_Subsample_Grain",
 		sd = SampleDur.ir;
 		offset = (1 - SubsampleOffset.ir) * sd;
 		// free synth after delay:
-		Line.ar(1,0, attack + sustain + offset, doneAction:2); 		env = EnvGen.kr(Env.perc(attack, sustain, 0.2));
+		Line.ar(1,0, attack + sustain + offset, doneAction:2);
+		env = EnvGen.kr(Env.perc(attack, sustain, 0.2));
 		sig = SinOsc.ar(freq, 0, env);
 
 		sig = DelayC.ar(sig, sd * 4, offset);
 		OffsetOut.ar(out, sig);
-	}, [\ir, \ir, \ir, \ir]).send(s);
+	}, [\ir, \ir, \ir, \ir]).add;
 )
 
 (
diff --git a/HelpSource/Classes/Sum3.schelp b/HelpSource/Classes/Sum3.schelp
new file mode 100644
index 0000000..8c0e840
--- /dev/null
+++ b/HelpSource/Classes/Sum3.schelp
@@ -0,0 +1,14 @@
+CLASS:: Sum3
+summary:: Sum three signals
+categories:: UGens>Algebraic
+related:: Classes/Mix
+
+DESCRIPTION::
+Sum three signals. Internal ugen to efficiently mix three signals. Should be used via link::Classes/Mix::.
+
+CLASSMETHODS::
+private:: new1
+
+METHOD:: new
+
+Construct UGen.
diff --git a/HelpSource/Classes/Sum4.schelp b/HelpSource/Classes/Sum4.schelp
new file mode 100644
index 0000000..c3f7c70
--- /dev/null
+++ b/HelpSource/Classes/Sum4.schelp
@@ -0,0 +1,14 @@
+CLASS:: Sum4
+summary:: Sum four signals
+categories:: UGens>Algebraic
+related:: Classes/Mix
+
+DESCRIPTION::
+Sum four signals. Internal ugen to efficiently mix three signals. Should be used via link::Classes/Mix::.
+
+CLASSMETHODS::
+private:: new1
+
+METHOD:: new
+
+Construct UGen.
diff --git a/HelpSource/Classes/Synth.schelp b/HelpSource/Classes/Synth.schelp
index 26d6a56..6349c92 100644
--- a/HelpSource/Classes/Synth.schelp
+++ b/HelpSource/Classes/Synth.schelp
@@ -214,6 +214,36 @@ code::
 x.set(\freq, 440, \amp, 0.5)
 ::
 
+method:: seti
+Set part of an arrayed control.
+argument:: ... args
+A sequence of strong:: name, index, value :: triplets.
+
+definitionlist::
+## name || The name of the arrayed control
+## index || The index into the array
+## value || The new value to set, can be an array to set a range of elements.
+::
+
+discussion::
+note::
+The synthdef has to be .add'ed, so that it is stored in the link::Classes/SynthDescLib::.
+::
+Example:
+code::
+(
+s.waitForBoot {
+    SynthDef(\helpSeti, { |freqs = #[100,150,200,250]|
+        Out.ar(0, SinOsc.ar(freqs.poll,0,0.1).sum ! 2)
+    }).add;
+    s.sync;
+    x = Synth(\helpSeti);
+}
+)
+x.seti(\freqs,2,600); // set only the third element
+x.seti(\freqs,1,[400,410]); // set second and third element
+x.free;
+::
 
 Examples::
 code::
diff --git a/HelpSource/Classes/TGrains.schelp b/HelpSource/Classes/TGrains.schelp
index d1dea98..9aee112 100644
--- a/HelpSource/Classes/TGrains.schelp
+++ b/HelpSource/Classes/TGrains.schelp
@@ -56,13 +56,8 @@ interpolation.
 Examples::
 
 code::
-(
-s = Server.internal;
-Server.default = s;
-s.boot;
-)
-
 
+s.boot;
 b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");
 
 (
diff --git a/HelpSource/Classes/TIRand.schelp b/HelpSource/Classes/TIRand.schelp
index bbd1473..43f76c9 100644
--- a/HelpSource/Classes/TIRand.schelp
+++ b/HelpSource/Classes/TIRand.schelp
@@ -1,6 +1,6 @@
 class:: TIRand
 summary:: Triggered integer random number generator.
-related:: Classes/ExpRand, Classes/IRand, Classes/LinRand, Classes/NRand, Classes/Rand, Classes/TExpRand, Classes/TRand
+related:: Classes/ExpRand, Classes/IRand, Classes/LinRand, Classes/NRand, Classes/Rand, Classes/TExpRand, Classes/TRand, Classes/TChoose
 categories:: UGens>Random, UGens>Triggers
 
 
diff --git a/HelpSource/Classes/TouchResponder.schelp b/HelpSource/Classes/TouchResponder.schelp
index 827f525..0a7e9a8 100644
--- a/HelpSource/Classes/TouchResponder.schelp
+++ b/HelpSource/Classes/TouchResponder.schelp
@@ -4,7 +4,7 @@ related:: Classes/MIDIFunc, Classes/MIDIdef, Classes/MIDIResponder, Classes/CCRe
 categories:: External Control>MIDI
 
 Description::
-note:: As of SC 3.5 link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: are the recommended way of registering for incoming MIDI messages. They are faster, safer, and have more logical argument order than the old MIDI responder classes. The older class MIDIResponder, and its subclasses NoteOnResponder, NoteOffResponder, BendResponder, TouchResponder, CCResponder, and ProgramChangeResponder are maintained for legacy code only.::
+note:: SC 3.5 added the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. These are faster, and aim to have a more convenient, logical and consistent interface, which shares a common design with link::Classes/OSCFunc:: and link::Classes/OSCdef::.They still lack some features of the MIDIresponder classes.::
 ClassMethods::
 
 method::new
@@ -25,7 +25,7 @@ argument::install
 If true, install the responder automatically so it is active and ready to respond. If false, then it will be inactive.
 
 argument::swallowEvent
-If true, then if the midi event is matched, cease testing any further responders.
+If true, then if the midi event is matched, cease testing any further responders. Note that doing this will prevent any other responders of this type from responding, including ones added behind the scenes in classes. Note also that this functionality is sensitive to the order in which responders are added. 
 
 InstanceMethods::
 
diff --git a/HelpSource/Classes/TreeView.schelp b/HelpSource/Classes/TreeView.schelp
index 2513b92..9051953 100644
--- a/HelpSource/Classes/TreeView.schelp
+++ b/HelpSource/Classes/TreeView.schelp
@@ -62,6 +62,9 @@ METHOD:: removeItem
 METHOD:: numItems
 	The total number of items.
 
+METHOD:: clear
+    Removes all items.
+
 METHOD:: currentItem
 	Gets or sets the currently selected item.
 
diff --git a/HelpSource/Classes/UGen.schelp b/HelpSource/Classes/UGen.schelp
index aab803d..b6aaaac 100644
--- a/HelpSource/Classes/UGen.schelp
+++ b/HelpSource/Classes/UGen.schelp
@@ -81,12 +81,10 @@ Zoom factor
 
 discussion::
 code::
-Server.default = s = Server.internal.boot; // scope works only for internal server
+s.boot
 
 { Ringz.ar(PinkNoise.ar([0.1, 0.2]).scope(\pink), 2000, 1, 0.25) }.play; // multichannel works
 s.scope; // can still separately scope the output of the server
-
-Server.default = s = Server.local.boot; // switch back to local server.
 ::
 
 method:: poll
@@ -164,6 +162,11 @@ Wraps the receiver in a link::Classes/Fold:: UGen, folding its output at code::l
 method:: wrap
 Wraps the receiver in a link::Classes/Wrap:: UGen, wrapping its output at code::lo:: and code::hi::.
 
+method:: blend
+Blends code::this:: with code::that:: by wrapping the receiver in an link::Classes/XFade2:: (if code::this:: or code::that:: are audio-rate UGens) or link::Classes/LinXFade2:: UGen.
+note:: The code::blendFrac:: argument is between 0 and 1::
+
+
 method:: lag
 Wraps the receiver in a link::Classes/Lag:: UGen, smoothing its output by code::t1:: seconds lagtime. If a second argument is given, it wraps it in a link::Classes/LagUD:: UGen.
 
@@ -185,6 +188,9 @@ Wraps the receiver in a link::Classes/Lag3UD:: UGen, smoothing its output by cod
 method:: varlag
 Wraps the receiver in a link::Classes/VarLag:: UGen, smoothing its output by code::time:: seconds.
 
+method:: slew
+Wraps the receiver in a link::Classes/Slew:: UGen, limiting the slope of its output.
+
 method:: degreeToKey
 
 Wraps the receiver in a link::Classes/DegreeToKey:: UGen.
diff --git a/HelpSource/Classes/VarSaw.schelp b/HelpSource/Classes/VarSaw.schelp
index ad2d1ae..3b2550f 100644
--- a/HelpSource/Classes/VarSaw.schelp
+++ b/HelpSource/Classes/VarSaw.schelp
@@ -42,7 +42,7 @@ play({
 
 play({ VarSaw.ar(LFPulse.kr(3, 0, 0.3, 200, 200), 0, 0.2, 0.1) });
 
-compare:
+// compare:
 
 play({ LFPulse.ar(LFPulse.kr(3, 0, 0.3, 200, 200), 0, 0.2, 0.1) });
 
diff --git a/HelpSource/Classes/View.schelp b/HelpSource/Classes/View.schelp
index 0fc7562..ef498c1 100644
--- a/HelpSource/Classes/View.schelp
+++ b/HelpSource/Classes/View.schelp
@@ -47,7 +47,6 @@ METHOD:: globalKeyDownAction
 
 	When the action object is evaluated, it is passed the following arguments: view, char, modifiers, unicode, keycode.
 
-
 METHOD:: globalKeyUpAction
 
 	A settable class variable containing an object (e.g. an instance of Function or FunctionList) which is evaluated (i.e. link::Classes/Object#-value#value:: method is called on it) whenever a key is released, independently of keyboard focus. See also link::#-addAction::.
@@ -489,11 +488,11 @@ METHOD:: removeAction
 	argument:: selector
 		A Symbol containing the name of the action variable to which 'func' will be added. In other words, 'add' method will be invoked on that variable; by default that is \action, but any other (sensible) instance or class variable of the view could work (e.g. \globalKeyDownAction or \mouseUpAction or \onClose, etc.). See the other action variables below.
 
-SUBSECTION:: Key and mouse event propagation
+SUBSECTION:: Key and mouse event processing
 
 In strong::Cocoa and SwingOSC:: GUI kits, a key event occurring on a view can propagate to the parent view, and trigger the parent's key action, if either the child's action returns code::nil::, or the child has no action assigned for that key event. This has also been referred to as "key event bubbling".
 
-In strong::Qt:: GUI, however, both mouse and key events can propagate to the parent view. Event propagation works differently: by default, after a mouse or key action is evaluated, the control returns to the C++ implementation of the view, and if no response to the particular mouse or key event is implemented there, it propagates to the parent.
+In strong::Qt:: GUI, however, both mouse and key events can propagate to the parent view. Event processing works differently: by default, after a mouse or key action is evaluated, the control returns to the C++ implementation of the view, and if no response to the particular mouse or key event is implemented there, it propagates to the parent.
 
 If you wish to control whether the event will be propagated or not, return code::true:: or code::false:: from the action. True means you have responded to the event, and the propagation will be stopped; false means you are not interested in the event, and the event will propagate. However, returning either code::true:: or code::false:: will completely bypass the view's C++ implementation, so it will not get a chance at responding to the event with its standard behavior. Use this feature with care.
 
@@ -502,7 +501,7 @@ SUBSECTION:: Mouse actions
 Use the methods below to set or get the view's actions in response to mouse interaction with the view. A view must be enabled for the mouse actions to work.
 
 note::
-In Qt GUI, Mouse actions are subject to emphasis::event propagation::. See link::#key_and_mouse_event_propagation:: for details.
+In Qt GUI, Mouse actions are subject to emphasis::event propagation::. See link::#Key and mouse event processing:: for details.
 ::
 
 When the mouse action object is evaluated, it is passed one or more arguments from the following list (in that order):
@@ -521,21 +520,21 @@ METHOD:: mouseDownAction
 
     The following arguments are passed at evaluation: strong::view, x, y, modifiers, buttonNumber, clickCount::.
 
-    The return value of evaluation controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+    The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
 METHOD:: mouseUpAction
     The object to be evaluated when a mouse button is released after it was pressed on the view.
 
     The following arguments are passed at evaluation: strong::view, x, y, modifiers::.
 
-    The return value of evaluation controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+    The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
 METHOD:: mouseMoveAction
     The object to be evaluated whenever the mouse pointer moves after a mouse button was pressed on the view.
 
     The following arguments are passed at evaluation: strong::view, x, y, modifiers::.
 
-    The return value of evaluation controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+    The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
 METHOD:: mouseOverAction
     The object to be evaluated when the mouse pointer moves over the view with no mouse buttons pressed.
@@ -544,7 +543,7 @@ METHOD:: mouseOverAction
 
     The object is evaluated only when link::Classes/Window#-acceptsMouseOver:: of the containing Window (or, in Qt, link::#-acceptsMouseOver:: of the top View) is code::true::.
 
-    The return value of evaluation controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+    The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
 METHOD:: mouseWheelAction
     note:: strong:: Only in Qt GUI :: ::
@@ -555,7 +554,7 @@ METHOD:: mouseWheelAction
 
     The xDelta and yDelta arguments express rotation in horizontal and vertical direction, respectively. The value is in degrees (typically, an event occurs every 15 degrees), and can be positive or negative, depending on the direction of rotation.
 
-    The return value of evaluation controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+    The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
 METHOD:: mouseEnterAction
     note:: strong:: Only in Qt GUI :: ::
@@ -577,7 +576,7 @@ SUBSECTION:: Key actions
 Use the methods below to set or get the view's actions in response to keyboard interaction when the view has the keyboard focus.
 
 note::
-Key actions are subject to emphasis::event propagation::. See link::#key_and_mouse_event_propagation:: for details.
+Key actions are subject to emphasis::event propagation::. See link::#Key and mouse event processing:: for details.
 ::
 
 When the key action object is evaluated, it is passed one or more arguments from the following list (in that order):
@@ -610,7 +609,7 @@ METHOD:: keyDownAction
 
     The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode::.
 
-    The return value of evaluation controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+    The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
     If no code::keyDownAction:: is set, link::#-defaultKeyDownAction:: is called instead, and its return value controls the event propagation.
 
@@ -619,7 +618,7 @@ METHOD:: keyUpAction
 
     The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode::.
 
-    The return value of evaluation controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+    The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
     If no code::keyUpAction:: is set, link::#-defaultKeyUpAction:: is called instead, and its return value controls the event propagation.
 
@@ -713,7 +712,7 @@ METHOD:: defaultKeyDownAction
 
 	See link::#key_actions#Key actions :: for explanation of arguments.
 
-    The return value controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+    The return value controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
 METHOD:: defaultKeyUpAction
 
@@ -721,7 +720,7 @@ METHOD:: defaultKeyUpAction
 
 	See link::#key_actions#Key actions :: for explanation of arguments.
 
-	The return value controls the event propagation to parent view. See link::#key_and_mouse_event_propagation#Key and mouse event propagation:: for details.
+	The return value controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
 
 
 METHOD:: keyDown
diff --git a/HelpSource/Classes/WiiMote.schelp b/HelpSource/Classes/WiiMote.schelp
index 4328e4d..a1f71f1 100644
--- a/HelpSource/Classes/WiiMote.schelp
+++ b/HelpSource/Classes/WiiMote.schelp
@@ -13,6 +13,8 @@ Personally, I found that it works better with an external BlueTooth receiver, th
 
 The IR options, as well as the Classic controller have not been tested (due to lack of access to either complementary device by the developer).
 
+This class is not implemented for Windows, and thus will not work on that platform.
+
 ClassMethods::
 
 private::initClass, prStart, prStop, prDiscover
diff --git a/HelpSource/Classes/Wrap.schelp b/HelpSource/Classes/Wrap.schelp
index 69cf9e2..dcde322 100644
--- a/HelpSource/Classes/Wrap.schelp
+++ b/HelpSource/Classes/Wrap.schelp
@@ -33,7 +33,7 @@ Examples::
 
 code::
 
-Server.internal.boot;
+s.boot;
 
 { Wrap.ar(SinOsc.ar(440, 0, 0.2), -0.15, 0.15) }.scope;
 
diff --git a/HelpSource/Classes/ZeroCrossing.schelp b/HelpSource/Classes/ZeroCrossing.schelp
index 998a987..f29f534 100644
--- a/HelpSource/Classes/ZeroCrossing.schelp
+++ b/HelpSource/Classes/ZeroCrossing.schelp
@@ -13,7 +13,7 @@ Input signal.
 examples::
 
 code::
-Server.internal.boot;
+s.boot;
 (
 {
     var a;
diff --git a/HelpSource/Guides/Debugging-tips.schelp b/HelpSource/Guides/Debugging-tips.schelp
index 43017e7..81b3bf6 100644
--- a/HelpSource/Guides/Debugging-tips.schelp
+++ b/HelpSource/Guides/Debugging-tips.schelp
@@ -32,47 +32,63 @@ code::
 o.free;  // when done, you need to clean up the OSCFunc
 ::
 
-If you need to track multiple values, you can store them in a collection of arrays and differentiate them by assigning different IDs in the SendTrig UGen.
+If you need to track multiple values, SendReply can send arrays of values back to the client.
+
 code::
-l = { List.new } ! 2;
+l = List.new;
 o = OSCFunc({ |msg|
-		// msg[2] is the index
-	l[msg[2]].add(msg[3]);
-}, '/tr', s.addr);
+		// msg[3] is the first array value
+		// [3..] means take everything in the array after that
+	l.add(msg[3..]);
+}, '/freqAmp', s.addr);
 
-{	var	freq, amp;
+a = {
+	var	freq, amp;
 	freq = LFNoise0.kr(8, 600, 800);
 	amp = LFNoise1.kr(10, 0.5, 0.5);
-		// Impulse is needed to trigger the /tr message to be sent
-	SendTrig.kr(Impulse.kr(4), 0, freq);
-	SendTrig.kr(Impulse.kr(4), 1, amp);
-	SinOsc.ar(freq, 0, 0.3) ! 2
+		// Impulse is needed to trigger the reply to be sent
+	SendReply.kr(Impulse.kr(4), '/freqAmp', [freq, amp]);
+	SinOsc.ar(freq, 0, amp) ! 2
 }.play;
 
+a.free;
 o.free;  // when done, you need to clean up the OSCFunc
 
-l[0].array.plot	// view frequencies
-l[1].array.plot	// view amps
+// plot as two channels: frequencies in the top graph, amps in the bottom
+l.flat.plot(numChannels: 2);
 ::
 
-subsection:: Shared controls (Internal server only, control rate only)
+subsection:: Trace control signals using a control bus
 
-The internal server allocates a number of control buses whose memory addresses are shared with the client. The client can poll these buses without using OSC messages.
+Another technique to watch control values is to output the signal to a control-rate bus. Then you can access the bus using link::Classes/Bus#-get:: or link::Classes/Bus#-getSynchronous::. Saving the values into an Array or List is a little more straightforward with getSynchronous.
 
-Insert a SharedOut.kr UGen into your synthdef. Then, on the client side, use s.getSharedControl(num) to read the value. If you want to track the value over time, use a routine to poll repeatedly.
 code::
-{	var	freq;
+b = Bus.control(s, 1);
+
+a = {
+	var	freq;
 	freq = LFNoise1.kr(2, 600, 800);
-	SharedOut.kr(0, freq);		// no need for Impulse here
+	Out.kr(b, freq);		// no need for Impulse here
 	SinOsc.ar(freq, 0, 0.3) ! 2
 }.play;
 
 l = List.new;
-r = fork { loop { l.add(s.getSharedControl(0)); 0.1.wait } };
+r = fork { loop { l.add(b.getSynchronous); 0.1.wait } };
+
 r.stop;
+a.free;
+
 l.array.plot;  // to view the results graphically
 ::
 
+This works only with internal or local servers. For remote servers, the routine may be rewritten as follows.
+
+code::
+r = fork { loop { b.get({ |value| l.add(value) }); 0.1.wait } };
+::
+
+note::This approach is not valid for audio buses, because the data move too quickly to support 'get'.::
+
 subsection:: Server-side trace
 
 The code::/n_trace:: message causes the server to print a list of all the UGens in the node as well as their input and output values.
diff --git a/HelpSource/Guides/GUI-Introduction.schelp b/HelpSource/Guides/GUI-Introduction.schelp
index 3b0bd60..7d3d7e4 100644
--- a/HelpSource/Guides/GUI-Introduction.schelp
+++ b/HelpSource/Guides/GUI-Introduction.schelp
@@ -283,7 +283,7 @@ y.keyUpAction = ~reset;
 ~reset.value;
 ::
 
-If a key or mouse event is not handled by the view on which it occurs, it may strong::propagate:: to the parent view, and trigger the parent's action. See link::Classes/View#key_and_mouse_event_propagation#View: Key and mouse event propagation:: for detailed explanation.
+If a key or mouse event is not handled by the view on which it occurs, it may strong::propagate:: to the parent view, and trigger the parent's action. See link::Classes/View#Key and mouse event processing:: for detailed explanation.
 
 subsection:: Drag and drop actions
 
diff --git a/HelpSource/Guides/J-concepts-in-SC.schelp b/HelpSource/Guides/J-concepts-in-SC.schelp
index e231b95..a864a8b 100644
--- a/HelpSource/Guides/J-concepts-in-SC.schelp
+++ b/HelpSource/Guides/J-concepts-in-SC.schelp
@@ -2,8 +2,7 @@ title:: J concepts in SC
 summary:: An overview of concepts borrowed from J
 categories:: Language
 
-The J programming language is a successor of APL. (http://www.jsoftware.com)
-These languages are made for processing arrays of data and are able to express
+The J programming language is a successor of APL (http://www.jsoftware.com). These languages are made for processing arrays of data and are able to express
 complex notions of iteration implicitly.
 
 The following are some concepts borrowed from or inspired by J.
@@ -21,20 +20,24 @@ z.rank; // 3 dimensions
 z.shape;
 ::
 
-fill a 2D array
+fill a multidimensional array
 code::
-Array.fill2D(3,3,{1.0.rand.round(0.01)});
+// 2 dimensions
+Array.fill([3,3], { 1.0.rand.round(0.01) });
+Array.fill([2,3], {|i,j| i at j });
 
-Array.fill2D(2,3,{|i,j| i at j});
-::
+// 3 dimensions
+Array.fill([2, 2, 2], { 1.0.rand.round(0.01) });
+Array.fill([2, 3, 4], {|i,j,k| [i, j, k].join });
 
-fill a 3D array
-code::
-Array.fill3D(2,2,2,{1.0.rand.round(0.01)});
+// a shorter variant of the above:
+{|i,j,k| [i, j, k].join } ! [2, 3, 4];
 
-Array.fill3D(2,2,2,{|i,j,k| `[i,j,k]});
+// more dimensions
+Array.fill([2, 2, 4, 2], {|...args| args.join });
 ::
 
+
 section:: Creating arrays
 using dup to create arrays
 code::
@@ -45,6 +48,7 @@ code::
 {{100.rand} dup: 3} dup: 4;
 {|i| i.squared} dup: 10;
 {|i| i.nthPrime} dup: 10;
+{ |i, j, k| i * j } dup: [5, 5]; // multidimensional dup
 ::
 ! is an abbreviation of dup
 code::
@@ -55,6 +59,7 @@ code::
 {{100.rand} ! 3} ! 4;
 {|i| i.squared} ! 10;
 {|i| i.nthPrime} ! 10;
+{ |i, j| i * j } ! [5, 5];
 ::
 
 other ways to do the same thing:
@@ -112,22 +117,22 @@ section:: Sections of multidimensional arrays
 slice can get sections of multidimensional arrays.
 nil gets all the indices of a dimension.
 code::
-z = Array.iota(4,5);
+z = Array.iota(4, 5);
 z.slice(nil, (1..3));
 z.slice(2, (1..3));
 z.slice((2..3), (0..2));
 z.slice((1..3), 3);
 z.slice(2, 3);
 
-z = Array.iota(3,3,3);
-z.slice([0,1],[1,2],[0,2]);
-z.slice(nil,nil,[0,2]);
+z = Array.iota(3, 3, 3);
+z.slice([0,1], [1,2], [0,2]);
+z.slice(nil, nil, [0,2]);
 z.slice(1);
-z.slice(nil,1);
-z.slice(nil,nil,1);
-z.slice(nil,2,1);
-z.slice(nil,1,(1..2));
-z.slice(1,[0,1]);
+z.slice(nil, 1);
+z.slice(nil, nil, 1);
+z.slice(nil, 2, 1);
+z.slice(nil, 1, (1..2));
+z.slice(1, [0,1]);
 z.flop;
 ::
 
@@ -226,6 +231,29 @@ a.reshapeLike(b, \clipAt);
 a.reshapeLike(b, \at);
 ::
 
+section:: measuring dimensionality and size
+maxSizeAtDepth allows you to check the maximum array size at a given depth dimension
+code::
+[[1, 2, 3], [[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(2);
+[[1, 2, 3], [[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(1);
+[[1, 2, 3], [[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(0);
+(0..3).collect([[1, 2, 3], [[41, 52], 5, 6], 1, 2, 3].maxSizeAtDepth(_)) // max sizes for each dimension
+::
+
+section:: inverting dimensions
+flopDeep allows you to to invert the outermost dimension with a dimension at any depth. This is analogous to flop, which does the same for 2-dimensional arrays.
+code::
+[[1, 2, 3], [[41, 52], 5, 6]].flopDeep(2);
+[[1, 2, 3], [[41, 52], 5, 6]].flopDeep(1);
+[[1, 2, 3], [[41, 52], 5, 6]].flopDeep(0);
+[[1, 2, 3], [[41, 52], 5, 6]].flopDeep; // without argument, flop from the deepest level
+
+[[[10, 100, 1000], 2, 3], [[41, 52], 5, 6]].flopDeep(2); // shorter array wraps
+[].flopDeep(1); // result is always one dimension higher.
+[[]].flopDeep(4);
+::
+
+
 section:: allTuples
 allTuples will generate all combinations of the sub arrays
 code::
diff --git a/HelpSource/Guides/Linux_udev_setup.schelp b/HelpSource/Guides/Linux_udev_setup.schelp
index 4e72897..031a506 100644
--- a/HelpSource/Guides/Linux_udev_setup.schelp
+++ b/HelpSource/Guides/Linux_udev_setup.schelp
@@ -14,3 +14,9 @@ KERNEL=="event[0-9]*",          NAME="input/%k",        GROUP="audio"
 ::
 i.e. add code:: GROUP="audio" :: to the lines, so that any user in the group "audio" can open the device.
 
+For a quick fix (at your own risk, any user can then get read/write access to your input devices) you can also do from the terminal:
+
+code::
+$ cd /dev/input
+$ sudo chmod 777 event*
+::
\ No newline at end of file
diff --git a/HelpSource/Guides/MIDI.schelp b/HelpSource/Guides/MIDI.schelp
index 9108d93..922ecbe 100644
--- a/HelpSource/Guides/MIDI.schelp
+++ b/HelpSource/Guides/MIDI.schelp
@@ -3,39 +3,78 @@ summary:: about MIDI
 related:: Guides/UsingMIDI, Classes/MIDIFunc, Classes/MIDIdef
 categories:: External Control>MIDI
 
+section:: Practical usage overview
+
+Begin with the link::Guides/UsingMIDI:: help file.
+
+subsection:: Receiving MIDI input
+
+link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: are the standard, recommended way to receive MIDI note on/off, controller, pitch bend, aftertouch, poly-touch and program change messages.
+
 note::
-See the link::Guides/UsingMIDI:: helpfile for practical considerations and techniques for using MIDI in SC.
+strong::IMPORTANT: :: Before MIDI can be received, SuperCollider needs to be told to connect to the MIDI subsystem and connect to the available devices.
+
+code::
+MIDIClient.init;
+MIDIIn.connectAll;
 ::
 
-link::Classes/MIDIClient:: is a static class that starts up the MIDI service:
-It initializes with a number of virtual inports and outports.
-The default is 1 and usually no more are needed.
-The information about the hardware is stored in code::MIDIClient.sources:: and code::MIDIClient.destinations:: as link::Classes/MIDIEndPoint:: objects.
+You need to do this once after launching SuperCollider, or recompiling the class library.
+::
+
+There are some examples in the wild using the MIDIIn class directly to receive MIDI. This is not recommended for normal use. The exceptions are sysex (system exclusive) and sysrt (MIDI clock) messages, which are currently supported only by MIDIIn. See the example below.
+
+subsection:: Sending MIDI output
+
+See the link::Classes/MIDIOut:: help file for details.
+
+section:: Summary of MIDI classes
+
+definitionlist::
+## link::Classes/MIDIClient:: || This class connects to the operating system's MIDI layer, and obtains the lists of available MIDI sources and destinations. The information about the hardware is stored in code::MIDIClient.sources:: and code::MIDIClient.destinations:: as link::Classes/MIDIEndPoint:: objects. MIDIClient must be initialized before MIDI can be received. See the note above.
+## link::Classes/MIDIFunc:: || The optimal way to receive the most typical MIDI messages: note on/off, controller, pitch bend, aftertouch, poly-touch and program change.
+## link::Classes/MIDIdef:: || Related to link::Classes/MIDIFunc::, this class keeps several MIDIFunc objects in global storage, by name. Especially helpful for live or interactive use.
+## link::Classes/MIDIOut:: || Supports MIDI output to hardware ports or inter-application MIDI buses.
+## link::Classes/MIDIEndPoint:: || Represents a MIDI port published by the operating system. It contains a device name, port name and unique identifier (uid).
+## link::Classes/MIDIIn:: || The lowest-level MIDI input class. MIDIFunc and MIDIdef use this class so that you don't have to. It is strongly recommended to avoid using this class directly.
+::
 
-link::Classes/MIDIIn:: represents a connection between a inport and a source of the MIDIClient.
-There are three possibilities to connect them:
-To do something with the incoming MIDI data set the actions.
 
 Examples::
 
+MIDI input:
+
 code::
-//MIDIIn example:
 (
 MIDIClient.init;
-//There are three possibilities to connect for example to the first device:
-//MIDIIn.connect(0, MIDIClient.sources.at(0));
-//MIDIIn.connect(0, MIDIClient.sources.at(0).uid);
-MIDIIn.connect(0, 0);
-//set the action:
-MIDIIn.control = {arg src, chan, num, val;
-	val.postln;
-};
-)
+MIDIIn.connectAll;
+m = MIDIFunc.noteOn({ |vel, num|
+	"note % @ velocity %\n".postf(num, vel);
+});
+
+// when finished
+m.free;
+::
+
+
+MIDI output:
 
-//MIDIOut example:
+code::
 (
 MIDIClient.init;
 m = MIDIOut(0, MIDIClient.destinations.at(0).uid);
 m.noteOn(0, 60, 60);
 )
 ::
+
+Receiving system exclusive messages:
+
+code::
+~sysexFunc = { |uid, data|
+	// 'data' holds the sysex packet as 8-bit integers
+};
+MIDIIn.addFuncTo(\sysex, ~sysexFunc);
+
+// when finished
+MIDIIn.removeFuncFrom(\sysex, ~sysexFunc);
+::
diff --git a/HelpSource/Guides/More-On-Getting-Help.schelp b/HelpSource/Guides/More-On-Getting-Help.schelp
index 5e57749..d8febdf 100644
--- a/HelpSource/Guides/More-On-Getting-Help.schelp
+++ b/HelpSource/Guides/More-On-Getting-Help.schelp
@@ -57,7 +57,7 @@ code::
 Array.class.dumpAllMethods; // Only class methods that this responds to (including inherited ones)
 Array.dumpAllMethods; 		// Only instance methods (including inherited ones)
 ::
-There is also a graphical Class browser which will show all methods, arguments, subclasses, instance variables and class variables. Using the browser's buttons you can easily navigate to the class' superclass, subclasses, class source, method source, helpfile (if there is one), check references or implementation of methods, or even open a web browser to view the corresponding entry in the online SVN repository. (Note that the web repository is a backup often a day or two behind the status of what is available to developers.)
+There is also a graphical Class browser which will show all methods, arguments, subclasses, instance variables and class variables. Using the browser's buttons you can easily navigate to the class' superclass, subclasses, class source, method source, helpfile (if there is one), check references or implementation of methods.
 code::
 SequenceableCollection.browse;
 ::
@@ -69,7 +69,7 @@ Similarly, selecting any text and typing shift-cmd-y will open a window showing
 code::
 // try it on these
 asStream
-SCWindow
+Window
 ::
 In the resulting window selecting any class and method and pressing Cmd-j will take you to that method definition in that class definition. For example try selecting Pattern-select in the window resulting from the previous example. Note that SC supports defining methods in separate files, so a class' methods may be defined in more than one place. If you try Cmd-j on the following you will see that it will open a file called dumpFullInterface.sc rather than one called Class.sc (its main class definition file). The + Class {.... syntax indicates that these are additional methods.
 code::
@@ -103,5 +103,4 @@ http://www.listarc.bham.ac.uk/lists/sc-users/search/
 
 Requests for documentation of undocumented methods or classes, as well as reports of errata, omissions, etc. in helpfiles can be sent to the user's list above. Bugs or Feature Requests can be filed here:
 
-https://sourceforge.net/tracker2/?group_id=54622
-
+https://github.com/supercollider/supercollider/issues
diff --git a/HelpSource/Guides/Multichannel-Expansion.schelp b/HelpSource/Guides/Multichannel-Expansion.schelp
index cdbea30..a7de4a7 100644
--- a/HelpSource/Guides/Multichannel-Expansion.schelp
+++ b/HelpSource/Guides/Multichannel-Expansion.schelp
@@ -180,6 +180,14 @@ is equivalent to:
 code::
 [ Klank.ar(`[[400,500,600],[1,2,1]], z),  Klank.ar(`[[700,800,900],[1,2,1]], z)]
 ::
+Also the Refs multichannelExpand when passed to a Klank:
+code::
+Klank.ar(`[[[400,500,600], [700,800,900]],[1,2,1]], z)
+::
+, which is is equivalent to:
+code::
+[ Klank.ar(`[[400,500,600],[1,2,1]], z),  Klank.ar(`[[700,800,900],[1,2,1]], z)]
+::
 
 section:: Reducing channel expansion with Mix
 The link::Classes/Mix:: object provides the means for reducing multichannel arrays to a single channel.
diff --git a/HelpSource/Guides/News-3_6.schelp b/HelpSource/Guides/News-3_6.schelp
new file mode 100644
index 0000000..ea06880
--- /dev/null
+++ b/HelpSource/Guides/News-3_6.schelp
@@ -0,0 +1,68 @@
+title:: News in 3.6
+summary:: A summary of news in SC 3.6
+categories:: News
+
+SECTION:: ScIDE
+
+link::Guides/SCIde::
+
+
+SECTION:: Language-side news
+
+subsection:: More informative syntax errors
+The parser now posts the details of syntax errors, example:
+code::
+[1,2,%,4];
+123;
+::
+Posts the following error message:
+teletype::
+ERROR: syntax error, unexpected BINOP, expecting ']'
+  in file 'selected text'
+  line 1 char 6:
+
+  [1,2,%,4];
+       ^
+  123;
+-----------------------------------
+ERROR: Command line parse failed 
+::
+
+subsection:: Remove old syntax
+code::#(a:1):: was valid syntax, but yielded nonsense results. This will now result in a syntax error instead.
+
+subsection:: YAML/JSON parser
+link::Classes/String#-parseYAML:: and link::Classes/String#-parseYAMLFile:: can be used to parse YAML or JSON.
+
+subsection:: SynthDef optimizations for additive terms
+
+When the SynthDef is compiled, separate additive ugens are combined via the new link::Classes/Sum3:: and
+link::Classes/Sum4:: ugens.
+
+subsection:: Basic dead code elimination for SynthDefs
+
+The process of building synthdefs now performs a simple dead code elimination pass, which removes all
+link::Classes/PureUGen:: instaces without successor.
+
+subsection:: Case sensitive String comparision
+String comparision operators (teletype::==, !=, <=, >=, >, <::) are now case sensitive.
+code::
+"Foo" == "fOo"; // false
+::
+
+subsection:: SplayAz Bug Fix
+Positioning of SplayAz was broken. The semantics of the TELETYPE::spread:: and TELETYPE::center:: arguments has
+been changed in order to fix the behavior.
+
+subsection:: Array primitives respect mutability
+The array primitives now respect object mutability: writing to an immutable object now fails and changing an 
+immutable object with TELETYPE::add::, TELETYPE::addAll::, TELETYPE::insert::, TELETYPE::extend::, 
+TELETYPE::growClear:: and TELETYPE::overwrite:: will return a newly allocated object.
+
+SECTION:: Server-side news
+
+subsection:: SynthDef2 fileformat
+
+subsection:: C++ base class for Unit Generators
+
+A new C++ base class has been introduced, which extends the plain c-style Unit struct by a moden C++ interface.
diff --git a/HelpSource/Guides/News-Qt-GUI.schelp b/HelpSource/Guides/News-Qt-GUI.schelp
index 028e84d..b4f9407 100644
--- a/HelpSource/Guides/News-Qt-GUI.schelp
+++ b/HelpSource/Guides/News-Qt-GUI.schelp
@@ -97,7 +97,7 @@ SUBSECTION:: Mouse and key event propagation
 
 In addition to key events, mouse events can also propagate to parent views.
 
-Also, the control over event propagation works differently in Qt. See link::Classes/View#key_and_mouse_event_propagation#Key and mouse event propagation:: for detailed explanation.
+Also, the control over event propagation works differently in Qt. See link::Classes/View#Key and mouse event processing:: for detailed explanation.
 
 Moreover, you can make a view transparent for mouse events using link::Classes/View#-acceptsMouse::, which will forward all mouse events to the view under, regardless of whether they are in a parent-child relationship.
 
diff --git a/HelpSource/Guides/Non-Realtime-Synthesis.schelp b/HelpSource/Guides/Non-Realtime-Synthesis.schelp
index c9c6109..f0837d3 100644
--- a/HelpSource/Guides/Non-Realtime-Synthesis.schelp
+++ b/HelpSource/Guides/Non-Realtime-Synthesis.schelp
@@ -3,6 +3,8 @@ summary:: Non-realtime synthesis with binary files of OSC commands
 categories:: Server>NRT, External Control>OSC
 related:: Classes/Score
 
+section:: Non-Realtime Synthesis
+
 SuperCollider 3 supports non-realtime synthesis through the use of binary files of OSC commands.
 
 First create an OSC command file (i.e. a score)
@@ -102,3 +104,74 @@ Score.recordNRT(g, "help-oscFile.osc", "helpNRT.aiff", options: o); // synthesiz
 )
 ::
 
+section:: Analysis using a Non-Realtime server
+
+An NRT server may also be used to extract analytical data from a sound file. The main issues are:
+
+DEFINITIONlIST::
+## Suppressing audio file output
+|| In OSX and Linux environments, use teletype::/dev/null:: for the output file path. In Windows, use teletype::NUL::.
+## Retrieving analytical data.
+|| The easiest way is to allocate a buffer at the beginning of the NRT score, and use BufWr to fill the buffer. At the end of the score, write the buffer into a temporary file. Then you can use SoundFile on the language side to access the data. See the example.
+::
+
+code::
+// Example: Extract onsets into a buffer.
+
+(
+fork {
+	var resultbuf, resultpath, oscpath, score, dur, sf, cond, size, data;
+
+	// get duration
+	sf = SoundFile.openRead(Platform.resourceDir +/+ "sounds/a11wlk01.wav");
+	dur = sf.duration;
+	sf.close;
+
+	resultpath = PathName.tmp +/+ UniqueID.next ++ ".aiff";
+	oscpath = PathName.tmp +/+ UniqueID.next ++ ".osc";
+
+	score = Score([
+		[0, (resultbuf = Buffer.new(s, 1000, 1, 0)).allocMsg],
+		[0, [\d_recv, SynthDef(\onsets, {
+			var sig = SoundIn.ar(0), // will come from NRT input file
+			fft = FFT(LocalBuf(512, 1), sig),
+			trig = Onsets.kr(fft),
+			// count the triggers: this is the index to save the data into resultbuf
+			i = PulseCount.kr(trig),
+			// count time in seconds
+			timer = Sweep.ar(1);
+			// 'i' must be audio-rate for BufWr.ar
+			BufWr.ar(timer, resultbuf, K2A.ar(i), loop: 0);
+			BufWr.ar(i, resultbuf, DC.ar(0), 0);  // # of points in index 0
+		}).asBytes]],
+		[0, Synth.basicNew(\onsets, s, 1000).newMsg],
+		[dur, resultbuf.writeMsg(resultpath, headerFormat: "AIFF", sampleFormat: "float")]
+	]);
+
+	cond = Condition.new;
+
+	// osc file path, output path, input path - input is soundfile to analyze
+	score.recordNRT(oscpath, "/dev/null", sf.path, sampleRate: sf.sampleRate,
+		options: ServerOptions.new
+			.verbosity_(-1)
+			.numInputBusChannels_(sf.numChannels)
+			.numOutputBusChannels_(sf.numChannels)
+			.sampleRate_(sf.sampleRate),
+		action: { cond.unhang }  // this re-awakens the process after NRT is finished
+	);
+	cond.hang;  // wait for completion
+
+	sf = SoundFile.openRead(resultpath);
+	// get the size: one frame at the start
+	sf.readData(size = FloatArray.newClear(1));
+	size = size[0];
+	// now the rest of the data
+	sf.readData(data = FloatArray.newClear(size));
+	sf.close;
+
+	File.delete(oscpath); File.delete(resultpath);
+
+	data.postln;  // these are your onsets!
+};
+)
+::
\ No newline at end of file
diff --git a/HelpSource/Guides/OSC_commands.schelp b/HelpSource/Guides/OSC_commands.schelp
new file mode 100644
index 0000000..0e2d28a
--- /dev/null
+++ b/HelpSource/Guides/OSC_commands.schelp
@@ -0,0 +1,281 @@
+title:: List of OSC Commands
+categories:: External Control>OSC
+summary:: Short List of OSC Server Commands
+related:: Classes/NetAddr, Classes/OSCFunc, Guides/OSC Communication
+
+
+
+
+section::Server Commands
+
+code::
+/quit
+/notify  flag
+/status
+/cmd_error flag
+/cmd name args ...
+/dumpOSC [0: off 1: on 2: hex 3: both]
+
+/d_recv bytes [complBytes]
+/d_load path [complBytes]
+/d_loadDir path [complBytes]
+/d_free defName ... 
+::
+
+section::Node
+
+code::
+/n_free nodeID ...
+/n_run | nodeID flag | ... 
+/n_set nodeID  | control value | ...
+/n_setn nodeID | control numCtl values.. | ...
+/n_fill nodeID | control numCtl value | ...
+/n_map  nodeID | control busIndex | ...
+/n_mapn nodeID | control busIndex numCtl | ...
+/n_mapa  nodeID | control busIndex | ...
+/n_mapan nodeID | control busIndex numCtl | ...
+
+/n_before | movedNodeID targetNodeID | ...
+/n_after | movedNodeID targetNodeID | ...
+/n_query nodeID ...
+/n_trace nodeID ...
+::
+
+strong::addAction::
+code::
+0 add to head
+1 add to tail
+2 add before
+3 add after
+4 replace
+::
+
+
+strong::alternative syntax for "nodeID"::
+code::
+positionArg | nodeID
+"h" - head of the current group
+"t" - tail of the current group
+"u" - up. the parent of the current node.
+"p" - the previous node.
+"n" - the next node.
+::
+
+section::Synth
+
+code::
+/s_new defName nodeID addAction targetNodeID | control value | ...
+/s_newargs // to document.
+/s_get nodeID control ...
+/s_getn nodeID | control numControls | ...
+/s_noid nodeID ...
+::
+
+section::Group
+
+code::
+/g_new nodeID addAction targetNodeID
+/g_head | groupID nodeID | ...
+/g_tail | groupID nodeID | ...
+/g_freeAll groupID ...
+/g_deepFree groupID ...
+/g_dumpTree
+/g_queryTree
+::
+
+section::UGen
+
+code::
+/u_cmd nodeID ugenIndex string arg ...
+::
+
+section::Buffer
+
+code::
+/b_alloc bufnum numFrames numChannels [complBytes]
+/b_allocRead bufnum path startFrame numFrames [complBytes]
+/b_allocReadChannel  bufnum path startFrame numFrames channels [complBytes]
+/b_read bufnum path startFrameFile numFrames startFrameBuf numChannels leaveOpen [complBytes]
+/b_write bufnum path headerFormat sampleFormat numFrames startFrameBuf leaveOpen [complBytes] 
+/b_readChannel bufnum path fileStartFrame numFrames bufStartFrame leaveOpen [complBytes]
+/b_free bufnum  [complBytes]
+/b_zero bufnum  [complBytes]
+/b_set bufnum | index value | ...
+/b_setn bufnum | startIndex numSamples values .. | ...
+/b_fill bufnum | startIndex numSamples value | ...
+/b_gen  bufnum command args ...
+/b_close  bufnum
+/b_query  bufnum ...  (returns /b_info message: /b_info bufnum numFrames numChannels sampleRate)
+/b_get bufnum sampleIndex ... (returns corresponding b_set message)
+/b_getn bufnum startIndex numFrames (returns corresponding b_setn message)
+::
+
+section::Control Bus
+
+code::
+/c_set | index value | ...
+/c_setn | startIndex num values .. | ...
+/c_fill | startIndex num value | ... 
+/c_get  index ... (returns corresponding c_set message)
+/c_getn | startIndex num | ... (returns corresponding c_setn message)
+::
+
+section::Replies
+
+code::
+/done commandName
+/fail commandName errorMsg
+/late timeStamp-hiBits timeStamp-loBits execTime-hiBits execTime-loBits
+::
+
+section::Notifications
+
+code::
+all node related notifications have the same format:
+cmd nodeID parentNodeID prevNodeID nextNodeID synthFlag (-1:group 0 synth) headNodeID tailNodeID
+/n_go 
+/n_end 
+/n_on 
+/n_off 
+/n_move 
+/n_info
+::
+
+section::Trigger Notifications
+code::
+/tr nodeID triggerID value
+::
+
+section:SynthDef Notifications
+
+when a SynthDef is removed (d_free), the server notifies:
+code::
+/d_removed defName
+::
+
+
+section::Buffer Fill Commands
+
+strong::flag::
+code::
+	1: normalize
+	2: wavetable
+	4: clear and then write
+::
+
+strong::commands::
+
+code::
+sine1 flag partialAmp ...
+sine2 flag | partialFreq partialAmp |
+sine3 flag | partialFreq partialAmp partialPhase |
+cheby flag | amp |
+
+copy posDest bufNumSrc posSrc numFrames
+::
+
+section::Glossary
+
+strong::flag::
+code::
+	0 (false) 
+	1 (true)
+::
+strong::complBytes::
+	an osc message to evaluate after completion (array): this also means command is asynchronous
+strong::control::
+	index or name
+code::
+-1 is the equivalent of nil
+'nothing' is replaced by 0
+::
+
+
+section::CommandNumbers
+code::
+	cmd_none = 0,
+
+	cmd_notify = 1,
+	cmd_status = 2,
+	cmd_quit = 3,
+	cmd_cmd = 4,
+
+	cmd_d_recv = 5,
+	cmd_d_load = 6,
+	cmd_d_loadDir = 7,
+	cmd_d_freeAll = 8,
+
+	cmd_s_new = 9,
+	
+	cmd_n_trace = 10,
+	cmd_n_free = 11,
+	cmd_n_run = 12,
+	cmd_n_cmd = 13,
+	cmd_n_map = 14,
+	cmd_n_set = 15,
+	cmd_n_setn = 16,
+	cmd_n_fill = 17,
+	cmd_n_before = 18,
+	cmd_n_after = 19,
+
+	cmd_u_cmd = 20,
+
+	cmd_g_new = 21,
+	cmd_g_head = 22,
+	cmd_g_tail = 23,
+	cmd_g_freeAll = 24,
+	
+	cmd_c_set = 25,
+	cmd_c_setn = 26,
+	cmd_c_fill = 27,
+
+	cmd_b_alloc = 28,
+	cmd_b_allocRead = 29,
+	cmd_b_read = 30,
+	cmd_b_write = 31,
+	cmd_b_free = 32,
+	cmd_b_close = 33,
+	cmd_b_zero = 34,
+	cmd_b_set = 35,
+	cmd_b_setn = 36,
+	cmd_b_fill = 37,
+	cmd_b_gen = 38,
+	
+	cmd_dumpOSC = 39,
+
+	cmd_c_get = 40,
+	cmd_c_getn = 41,
+	cmd_b_get = 42,
+	cmd_b_getn = 43,
+	cmd_s_get = 44,
+	cmd_s_getn = 45,
+	
+	cmd_n_query = 46,
+	cmd_b_query = 47,
+
+	cmd_n_mapn = 48,
+	cmd_s_noid = 49,
+
+	cmd_g_deepFree = 50,
+	cmd_clearSched = 51,
+
+	cmd_sync = 52,
+	
+	cmd_d_free = 53,
+
+	cmd_b_allocReadChannel = 54,
+	cmd_b_readChannel = 55,
+	
+	cmd_g_dumpTree = 56,
+	cmd_g_queryTree = 57,
+
+	
+	cmd_error = 58,
+
+	cmd_s_newargs = 59,
+
+	cmd_n_mapa = 60,
+	cmd_n_mapan = 61,
+	
+	NUMBER_OF_COMMANDS = 62
+::
\ No newline at end of file
diff --git a/HelpSource/Guides/OSC_communication.schelp b/HelpSource/Guides/OSC_communication.schelp
index c45a04e..af8e596 100644
--- a/HelpSource/Guides/OSC_communication.schelp
+++ b/HelpSource/Guides/OSC_communication.schelp
@@ -27,7 +27,7 @@ NetAddr.localAddr	// retrieve the current IP and port
 You can open additional ports using link::Classes/Main#-openUDPPort::. This will return a link::Classes/Boolean:: indicating whether SC succeeded in opening the new port. Or you can just pass a custom port as the strong::recvPort:: argument to link::Classes/OSCFunc:: and it will open it automatically if not already open.
 code::
 thisProcess.openUDPPort(1121); // attempt to open 1121
-thisProcess.customPorts; // list all open custom ports
+thisProcess.openPorts; // list all open ports
 ::
 
 To listen to incoming messages, an link::Classes/OSCFunc:: needs to be created in SuperCollider. If the sending application strong::has a fixed port it sends message from::, you can set the OSCFunc to listen only to messages coming from that IP and port:
@@ -41,7 +41,7 @@ note:: The port 7771 above is the port the other application is sending strong::
 
 section::Receiving from an application that is sending from a variable port
 
-Some applications (notably Pd and Max) do not send messages from a fixed port, but instead use a different port each time they send out a message. In that case the OSCFunc needs to be set up, so that it listens to messages coming from anywhere. You do this by passing nil as the srcID argument.
+Some applications (notably Pd and Max) do not send messages from a fixed port, but instead use a different port each time they send out a message, or each time a patch starts up it picks a random port. In that case the OSCFunc needs to be set up, so that it listens to messages coming from anywhere. You do this by passing nil as the srcID argument.
 code::
 o = OSCFunc({ arg msg, time, addr, recvPort; [msg, time, addr, recvPort].postln; }, '/goodbye'); // create the OSCresponderNode
 o.free;	// remove the OSCresponderNode when you are done.
@@ -57,18 +57,19 @@ OSCFunc.trace(false); // Turn posting off
 
 section::Custom OSC message processing
 
-All incoming OSC messages call the message recvOSCmessage, or recvOSCbundle in link::Classes/Main::. If needed, one can add a custom link::Classes/Function:: or other object to Main's recvOSCFunc variable. Although one can do this directly using the corresponding setter, it is better to use the link::Classes/Main#-addOSCFunc:: and link::Classes/Main#-removeOSCFunc:: to avoid overwriting any other functions that may have been added by class code.
+All incoming OSC messages call the message recvOSCmessage, or recvOSCbundle in link::Classes/Main::. If needed, one can add a custom link::Classes/Function:: or other object to Main's recvOSCFunc variable. Although one can do this directly using the corresponding setter, it is better to use the link::Classes/Main#-addOSCRecvFunc:: and link::Classes/Main#-removeOSCRecvFunc:: to avoid overwriting any other functions that may have been added by class code.
 code::
-// this example is basically like OSCFunc.trace
+// this example is basically like OSCFunc.trace but filters out
+// /status.reply messages
 (
-f = { |time, addr, msg|
-	if(msg[0] != '/status.reply') {
-		"time: % sender: %\nmessage: %\n".postf(time, addr, msg);
-	}
+f = { |msg, time, addr|
+    if(msg[0] != '/status.reply') {
+        "time: % sender: %\nmessage: %\n".postf(time, addr, msg);
+    }
 };
-thisProcess.addOSCFunc(f);
+thisProcess.addOSCRecvFunc(f);
 );
 
 // stop posting.
-thisProcess.removeOSCFunc(f);
+thisProcess.removeOSCRecvFunc(f);
 ::
diff --git a/HelpSource/Guides/Randomness.schelp b/HelpSource/Guides/Randomness.schelp
index 6cb0d10..f9dd928 100644
--- a/HelpSource/Guides/Randomness.schelp
+++ b/HelpSource/Guides/Randomness.schelp
@@ -37,6 +37,8 @@ rrand(24, 48)       // linear distribution in the given range.
 
 exprand(0.01, 1)    // exponential distribution;
                     // both numbers must have the same sign.
+                    // (Note that the distribution of numbers is not exactly an exponential distribution, 
+                    // since that would be unbounded: we might call it a logarithmic uniform distribution.)
 ::
 
 subsection:: Test them multiple times with a do loop
@@ -89,7 +91,6 @@ See also link::Reference/randomSeed::.
 subsection:: Histograms
 Demonstrate the various statistical distributions visually, with histograms:
 
-note:: plot may not work in non-Mac SC3 versions.::
 code::
 Array.fill(500, {  1.0.rand }).plot("Sequence of 500x 1.0.rand");
 
diff --git a/HelpSource/Guides/SCIde.schelp b/HelpSource/Guides/SCIde.schelp
new file mode 100644
index 0000000..f250da6
--- /dev/null
+++ b/HelpSource/Guides/SCIde.schelp
@@ -0,0 +1,139 @@
+title:: SC-IDE: SuperCollider Integrated Development Environment
+summary:: A brief overview of the main features of the cross-platform code editor environment introduced in SuperCollider 3.6.
+categories:: Frontends
+keyword:: scide
+keyword:: editor
+
+Section:: What is SC-IDE?
+
+SC-IDE is a new code-editing environment, developed specifically for SuperCollider and introduced in version 3.6. It's written using the Qt graphic interface framework, meaning that it is compatible with any operating system supported by Qt. In the alpha release, SC-IDE works correctly in Mac OSX, Linux and Windows 7. (Issues with Windows XP remain to be solved.)
+
+note:: Throughout this document, Ctrl- indicates the modifier key for keyboard shortcuts that is used in Linux and Windows platforms. In Mac OSX, use Cmd- instead.::
+
+Section:: IDE window components
+
+The editor window contains several panels, as shown here:
+
+image::sc-ide.png::
+
+You will spend most of the time in the code editor at right. SC's posted output appears in the emphasis::Post Window:: at left. Underneath the code editor is a emphasis::Tool Panel::, which supports find/replace, go-to line and command-line functions.
+
+The Post Window is a emphasis::dock:: widget. You can grab the post window's title bar and drop the post window on any edge of the window you like.
+
+Section:: Getting help
+
+The help key is Ctrl-D (for Documentation).
+
+If the cursor is on a class or method name, the help browser will try to open help for the class or method. Otherwise the main help page will appear.
+
+If you want to go directly to help for a specific topic without entering text into the editor, press Ctrl-shift-D and type the identifier into the pop-up box.
+
+Section:: Evaluating code
+
+definitionlist::
+## Ctrl-return || The main key to evaluate code. Its behavior is "intelligent":
+list::
+## If a block of code is manually selected, that block will be executed.
+## If no code is selected but the cursor is within a emphasis::region::, the entire region will be executed. See below.
+## Otherwise, the current line containing the cursor will be executed.
+::
+## Ctrl-shift-return || Always evaluates the single line under the cursor, whether or not a code block is selected.
+::
+
+Subsection:: Regions
+
+emphasis::Regions:: make it quick and easy to evaluate longer blocks of code. A region is surrounded by parentheses.
+
+code::
+(
+Pbind(
+	\degree, Pseries(0, 1, 8),
+	\dur, 0.25
+).play;
+)
+::
+
+If the cursor is anywhere between the outermost parentheses, pressing ctrl-return will evaluate the entire block, starting with code::Pbind:: and ending with code::play;::. (This is faster even than SuperCollider.app's method of selecting a block by double-clicking inside the opening parenthesis.)
+
+Regions may be more compact visually, provided that the opening and closing parentheses are the first and last elements on their respective lines.
+
+code::
+(Pbind(
+	\degree, Pseries(0, 1, 8),
+	\dur, 0.25
+).play)
+::
+
+Any other element before or after the () delimiters means that the block will not be interpreted as a region.
+
+code::
+// (1 + 2) is not a region:
+// the () indicate order of operations instead
+(1 + 2).postln;
+::
+
+Section:: Typing code
+
+Subsection:: Automatic indentation
+
+While you are typing, SC-IDE keeps track of opening and closing brackets and automatically indents lines accordingly. You don't have to press TAB to indent or Backspace to outdent. When you close a bracket, SC-IDE will automatically push the text to the left to align with the matching opening bracket.
+
+Subsection:: Automatic completion of class and method names
+
+If you begin to type a class name, the editor will pop up a menu listing the class names that match what you have typed so far. Keep typing, and the list is filtered accordingly. At any point, use the up and down arrows to choose the completion and then press Return to choose the class. The complete class name will be entered into the code.
+
+The same happens when typing a method name after a dot. If SC-IDE can determine the class of object that will receive the method call, the list of matching methods will be appropriate for that class. Otherwise, after three characters, the list will include methods from all classes. (This is because it's often impossible to know the class of the result of an expression without evaluating the expression.)
+
+If the auto-complete menu does not appear automatically during typing, you can force it using Ctrl-space.
+
+Subsection:: Method call aid
+
+When you type an opening parenthesis after a method name, the editor will try to produce a floating pop-up listing the method's arguments. The pop-up appears automatically if the class of the receiver can be determined.
+
+If not, a pop-up menu appears listing the classes that implement the method. You can choose the desired class implementation that you intend, and then the floating pop-up will appear.
+
+If the method call aid does not appear automatically during typing, you can force it using Ctrl-shift-space.
+
+Section:: Editor features
+
+definitionlist::
+## Find/Replace || Ctrl-F brings up the Find tool panel; Ctrl-R brings up Replace. If you started with the Find panel but then want to replace, press Ctrl-R and your search string will be preserved. See also the Options menu at right. Regular expression find/replace is supported, including backreferences.
+
+## Command line || Sometimes, you need to evaluate a temporary expression that does not need to be saved in a code document. Press Ctrl-E, and a one line text box appears. Any expression you type here will be evaluated after you press Return. Up and down arrows navigate through the history of commands entered in this box.
+
+## Go to line || Press Ctrl-G, enter a line number, and the editor will jump to that line.
+
+## Focus post window || Ctrl-L gives focus to the post window. Here, you can use arrow keys and Page Up / Page Down to scroll through output from the interpreter. Press TAB to return to the code editor.
+
+## Implementation-of || Ctrl-I (for Implementation) opens a class or method definition.
+
+## References-to || Ctrl-U (for Uses) produces a list of references to a class or method.
+::
+
+Section:: Interacting with the SC language interpreter
+
+Unlike SuperCollider.app in OSX, SC-IDE is a separate process from the interpreter. This is good for stability. If you accidentally execute code that causes an infinite loop, you can use the Language menu to Stop SCLang and regain control without losing unsaved code.
+
+The Language menu contains commands to start and stop the interpreter and recompile the library.
+
+definitionlist::
+## Stop activity || Ctrl-., like Cmd-. in SuperCollider.app, stops any executing code and sound from the server.
+
+## Recompile library || Ctrl-shift-L recompiles the library.
+::
+
+Section:: Interacting with the audio server
+
+The Language menu also includes commands to boot, reboot and quit the server, as well as open a level meter and dump a list of running nodes.
+
+Section:: Sessions
+
+Sessions preserve the state of the editor environment at the time of quitting the editor, so you can resume with the same arrangement of IDE components and open documents automatically.
+
+(More to write later)
+
+Section:: Customizing
+
+Many customization options are available under Settings >> Configure IDE. In particular, fonts, colors and keyboard shortcuts may be set here.
+
+(More to write later)
diff --git a/HelpSource/Guides/Tour_of_UGens.schelp b/HelpSource/Guides/Tour_of_UGens.schelp
index 9b74294..07463e9 100644
--- a/HelpSource/Guides/Tour_of_UGens.schelp
+++ b/HelpSource/Guides/Tour_of_UGens.schelp
@@ -34,8 +34,6 @@ Note: The link::Browse#UGens#category browser:: contains a category for UGens, w
 
 code::
 (
-s = Server.internal;
-Server.default = s;
 s.boot;
 )
 ::
diff --git a/HelpSource/Guides/Tracing-Processes.schelp b/HelpSource/Guides/Tracing-Processes.schelp
index 520aa43..237ffd6 100644
--- a/HelpSource/Guides/Tracing-Processes.schelp
+++ b/HelpSource/Guides/Tracing-Processes.schelp
@@ -133,16 +133,12 @@ code::
 { SinOsc.ar(Duty.kr(0.5, 0, (Dseries(0, 1, inf) * 200 + 300).dpoll(label: "freq"))) * 0.1 }.play;
 ::
 
-When using the internal server (see link::Classes/Server:: help), the scope window can give valuable information about the ongoing sound (see link::Classes/Stethoscope:: help):
+The scope window can give valuable information about the ongoing sound (see link::Classes/Stethoscope:: help):
 code::
-// must use internal server
-s = Server.internal.boot;
 { SinOsc.ar(SinOsc.kr(0.2, 0, 300, 400)) * 0.1 }.scope;
 ::
 A FreqScope window can be used for observing the spectrum of the output:
 code::
-// must use internal server
-Server.default = s = Server.internal.boot;
 
 // create a new analyzer
 FreqScope.new;
diff --git a/HelpSource/Guides/UsingMIDI.schelp b/HelpSource/Guides/UsingMIDI.schelp
index 4d6cee6..e952ef8 100644
--- a/HelpSource/Guides/UsingMIDI.schelp
+++ b/HelpSource/Guides/UsingMIDI.schelp
@@ -8,21 +8,15 @@ section::Introduction
 
 SuperCollider's out of the box MIDI support is fairly thorough (although not as complete as you'll find in commercial sequencers). All MIDI devices accessible to your operating system (CoreMIDI on OSX, ALSA on Linux, PortMIDI on Windows) are accessible to SuperCollider.
 
-note::
-This document is written from an OSX perspective. The essential behavior of the MIDI interface classes should be the same on other platforms, despite my continual reference to CoreMIDI here.
-::
-
-SuperCollider does not impose much higher-level structure on MIDI functionality. The core classes are little more than hardware abstractions (see also the link::Guides/MIDI:: helpfile):
+The main MIDI classes are:
 
 definitionList::
-## link::Classes/MIDIClient::
-|| represents SuperCollider's communications with CoreMIDI
-## link::Classes/MIDIIn::
-|| receives MIDI messages and executes functions in response to those messages
-## link::Classes/MIDIOut::
-|| sends MIDI messages out to a specific port and channel
-## link::Classes/MIDIEndPoint::
-|| a client-side representation of a CoreMIDI device, containing three variables (name, device and uid, which is a unique identifier assigned by the system)
+## link::Classes/MIDIClient:: || This class connects to the operating system's MIDI layer, and obtains the lists of available MIDI sources and destinations. The information about the hardware is stored in code::MIDIClient.sources:: and code::MIDIClient.destinations:: as link::Classes/MIDIEndPoint:: objects. MIDIClient must be initialized before MIDI can be received. See the example at link::#playing_notes_on_your_midi_keyboard#Playing notes on your MIDI keyboard::.
+## link::Classes/MIDIFunc:: || The optimal way to receive the most typical MIDI messages: note on/off, controller, pitch bend, aftertouch, poly-touch and program change.
+## link::Classes/MIDIdef:: || Related to link::Classes/MIDIFunc::, this class keeps several MIDIFunc objects in global storage, by name. Especially helpful for live or interactive use.
+## link::Classes/MIDIOut:: || Supports MIDI output to hardware ports or inter-application MIDI buses.
+## link::Classes/MIDIEndPoint:: || Represents a MIDI port published by the operating system. It contains a device name, port name and unique identifier (uid).
+## link::Classes/MIDIIn:: || The lowest-level MIDI input class. MIDIFunc and MIDIdef use this class so that you don't have to. It is strongly recommended to avoid using this class directly.
 ::
 
 In most cases, each physical MIDI connection (pair of in/out jacks on the MIDI interface) has one MIDIEndPoint object to represent it in the client.
@@ -30,7 +24,7 @@ In most cases, each physical MIDI connection (pair of in/out jacks on the MIDI i
 section::Receiving MIDI input
 subsection:: MIDIFunc and MIDIdef
 
-For most uses, the preferred way to receive MIDI input is using the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. The advantage of this approach is that any number of responders can be registered, using extremely flexible matching. (By contrast, using link::Classes/MIDIIn:: responder functions directly means that only one function can exist per incoming message type. That is not an ideal programming practice.)
+For most uses, the preferred way to receive MIDI input is using the link::Classes/MIDIFunc:: and link::Classes/MIDIdef:: classes. The advantage of this approach is that any number of responders can be registered, using extremely flexible matching.
 
 link::Classes/MIDIFunc:: has a number of convenience methods allowing you to register for the different MIDI message types. It can  filter incoming MIDI messages to respond to a particular device, channel number, or specific message number, or ranges thereof.
 
@@ -40,50 +34,7 @@ subsection:: MIDIIn
 
 MIDIIn has a number of class variables holding functions to be evaluated when a MIDI event comes in. Technical details on each function can be found in the link::Classes/MIDIIn:: help file.
 
-list::
-## noteOn
-## noteOff
-## control
-## bend
-## touch
-## polyTouch
-## program
-## sysex
-## sysrt
-## smpte
-::
-
-To assign a response to a particular kind of MIDI message, assign a function to the class variable:
-
-code::
-MIDIIn.connect;
-MIDIIn.noteOn = { |port, chan, note, vel| [port, chan, note, vel].postln };
-MIDIIn.noteOn = nil;	// stop responding
-::
-
-MIDIIn provides the responding functions with all the information coming in from CoreMIDI:
-
-definitionList::
-## source (src)
-|| corresponds to the uid of the link::Classes/MIDIEndPoint:: from which the message is coming.
-## channel (chan)
-|| integer 0-15 representing the channel bits of the MIDI status byte.
-::
-
-... with subsequent arguments representing the data bytes. The link::Classes/MIDIIn:: help file details all the supported messages along with the arguments of the responding function for the message.
-
-Because these are class variables, you can have only one function assigned at one time. A common usage is to assign a function that looks up responses in a collection. For example, you could have a separate set of response functions for each channel.
-
-code::
-~noteOn = Array.fill(16, IdentityDictionary.new);
-MIDIIn.noteOn = { |port, chan, num, vel| ~noteOn[chan].do(_.value(port, chan, num, vel)) };
-
-	// this function will respond only on channel 0
-~noteOn[0].put(\postNoteOn, { |port, chan, num, vel| [port, chan, note, vel].postln });
-~noteOn[0].removeAt(\postNoteOn);	// stop responding
-::
-
-The advantage of this approach over using "if" or "case" statements in the response function is that you can add and remove responses without having to change the MIDIIn function. The MIDIIn function can serve as a "hook" into another structure that distributes the MIDI events to the real responders.
+Note, however, that MIDIIn provides no functionality for filtering incoming MIDI based on device, controller number or other factors. This means, for practical use, MIDIIn is significantly harder to use than link::Classes/MIDIFunc:: or link::Classes/MIDIdef::. strong::It is generally recommended to avoid using MIDIIn directly.:: The exceptions are sysex (system exclusive) and sysrt (MIDI clock) messages, which are currently supported only by MIDIIn.
 
 section::Playing notes on your MIDI keyboard
 
@@ -95,7 +46,8 @@ s.boot;
 (
 var notes, on, off;
 
-//MIDIIn.connect;
+MIDIClient.init;
+MIDIIn.connectAll;
 
 notes = Array.newClear(128);	// array has one slot per possible MIDI note
 
diff --git a/HelpSource/Guides/WritingUGens.schelp b/HelpSource/Guides/WritingUGens.schelp
index b810418..9c51453 100644
--- a/HelpSource/Guides/WritingUGens.schelp
+++ b/HelpSource/Guides/WritingUGens.schelp
@@ -50,7 +50,7 @@ subsection:: C++-side Definition of Unit Generators
 The following code shows the C++ source of a simple unit generator.
 
 code::
-#include "SC_Plugin.h"
+#include "SC_PlugIn.h"
 
 // InterfaceTable contains pointers to functions in the host (server).
 static InterfaceTable *ft;
diff --git a/HelpSource/Guides/sc-ide.png b/HelpSource/Guides/sc-ide.png
new file mode 100644
index 0000000..cc75aac
Binary files /dev/null and b/HelpSource/Guides/sc-ide.png differ
diff --git a/HelpSource/Help.schelp b/HelpSource/Help.schelp
index cde2208..4b1ba8e 100644
--- a/HelpSource/Help.schelp
+++ b/HelpSource/Help.schelp
@@ -4,7 +4,7 @@ categories::Help
 
 SuperCollider is an environment and programming language for real time audio synthesis and algorithmic composition. It provides an interpreted object-oriented language which functions as a network client to a state of the art, realtime sound synthesis server.
 
-NOTE:: link::Guides/News-3_5##News in SuperCollider version 3.5:: ::
+NOTE:: link::Guides/News-3_6##News in SuperCollider version 3.6:: ::
 
 SECTION::Search and browse
 definitionlist::
diff --git a/HelpSource/Overviews/Documents.html b/HelpSource/Overviews/Documents.html
index 2774dc8..365bd21 100644
--- a/HelpSource/Overviews/Documents.html
+++ b/HelpSource/Overviews/Documents.html
@@ -122,7 +122,8 @@ function showdocs() {
         div.className = "result_item";
 
         var n = document.createElement("a");
-        n.setAttribute("href","../"+v.path+".html");
+        var link = v.hasOwnProperty("oldhelp")?v.oldhelp:("../"+v.path+".html");
+        n.setAttribute("href",link);
         n.innerHTML = v.title;
         div.appendChild(n);
         div.appendChild(document.createTextNode(" - "+v.summary+" "));
diff --git a/HelpSource/Reference/KeyboardShortcuts.schelp b/HelpSource/Reference/KeyboardShortcuts.schelp
index a8c6c1e..5cfe62b 100644
--- a/HelpSource/Reference/KeyboardShortcuts.schelp
+++ b/HelpSource/Reference/KeyboardShortcuts.schelp
@@ -4,24 +4,23 @@ categories:: Frontends
 
 section:: Language-Specific Commands
 
+note:: For shortcuts bindings of teletype::ScIDE::, please consult the menu and/or the shortcut configuration menu.::
+
 table::
 ## strong::Functions::
 || strong::OSX::
-|| strong::Win (PsyCollider)::
 || strong::GEdit (sced):: footnote::http://artfwo.googlepages.com/sced::
 || strong::Vim (scvim):: footnote::http://www.neisis.net/%7Ealex/scvim::
 || strong::Emacs (scel):: footnote:: link::Reference/EmacsEditor:: ::
 
 ## Interpret Selection
 || enter, ctl-c, ctl-return, shift-return
-|| ctl-enter
 || ctl-e
 || F5
 || C-c C-d / C-c C-c
 
 ## Interpret current line
 || enter, ctl-c, ctl-return, shift-return
-|| ctl-enter
 || ctl-e
 || F6
 || C-c C-c
@@ -30,26 +29,22 @@ table::
 ||
 ||
 ||
-||
 || C-c C-e
 
 ## Evaluate defun or code-block
 ||
 ||
 ||
-||
 || C-M-x
 
 ## Evaluate current document
 ||
 ||
 ||
-||
 || C-c C-f
 
 ## Stop
 || cmd-.
-|| alt-.
 || escape
 || F12
 || C-c C-s
@@ -57,27 +52,23 @@ table::
 ## TempoClock.default.clear
 ||
 ||
-||
 || F7
 ||
 
 ## s.freeAll
 ||
 ||
-||
 || F8
 ||
 
 ## Run Main-run
 || cmd-r
-|| alt-r
 ||
 ||
 || C-c C-r
 
 ## Recompile library
 || cmd-k
-|| alt-k
 ||
 || :SClangStart
 || C-c C-l
@@ -85,41 +76,35 @@ table::
 ## Stop interpreter
 ||
 ||
-||
 || :SClangKill
 || M-x sclang-stop
 
 ## Clear post window
 || cmd-sh-c
-|| alt-p
 ||
 ||
 || C-c <
 
 ## Open Help File
 || cmd-d
-|| F1
 || ctl-u
 || K or :SChelp
 || C-c C-h
 
 ## Open Class Definition (look up class file, either Class name or Class:method) e.g. Object, Object:dump
 || cmd-j
-|| alt-j
 || ctl-y
 || ^k or :SCdef
 || C-c :
 
 ## Implementations of (which objects have code that defines methods, e.g. 'play')
 || cmd-y
-|| alt-y
 ||
 ||
 || C-c :
 
 ## References to (where in the source files is e.g. the method 'play' used?)
 || cmd-sh-Y
-|| alt-sh-Y
 ||
 ||
 || C-c ;
@@ -128,35 +113,30 @@ table::
 ||
 ||
 ||
-||
 || C-c [
 
 ## Dump full interface
 ||
 ||
 ||
-||
 || C-c {
 
 ## Show method arguments
 ||
 ||
 ||
-||
 || C-c C-m / C-c RET
 
 ## Autocomplete keyword
 ||
 ||
 ||
-||
 || C-c C-n / M-TAB
 
 ## Show server panels
 ||
 ||
 ||
-||
 || C-c C-p p
 ::
 
@@ -164,7 +144,6 @@ section:: Files
 table::
 ## strong::Functions::
 || strong::OSX::
-|| strong::Win (PsyCollider)::
 || strong::GEdit (sced)::
 || strong::Vim (scvim)::
 || strong::Emacs (scel)::
@@ -172,41 +151,35 @@ table::
 ## Open text document
 || cmd-o
 || ctl-o
-|| ctl-o
 || :e
 || C-x C-f
 
 ## New text document
 || cmd-n
 || ctl-n
-|| ctl-n
 || :enew
 || (open non-existent file w. new name)
 
 ## Close text document
 || cmd-w
 || ctl-w
-|| ctl-w
 || :close
 || C-x k
 
 ## Save text document
 || cmd-s
 || ctl-s
-|| ctl-s
 || :w
 || C-x C-s
 
 ## Save text document as
 || cmd-sh-s
 || ctl-sh-s
-|| ctl-sh-s
 || :sav
 || C-x C-w
 
 ## HTML doc window => code win
 ||
-||
 || ctl-t
 ||
 || E
@@ -216,7 +189,6 @@ section::Text Editing
 table::
 ## strong::Functions::
 || strong::OSX::
-|| strong::Win (PsyCollider)::
 || strong::GEdit (sced)::
 || strong::Vim (scvim)::
 || strong::Emacs (scel)::
@@ -224,13 +196,11 @@ table::
 ## Undo
 || cmd-z
 || ctl-z
-|| ctl-z
 || u
 || C-x u / C-_
 
 ## Redo
 || cmd-sh-Z
-|| ctl-y
 || ctl-sh-z
 || ^R
 || C-x u / C-_
@@ -238,62 +208,53 @@ table::
 ## Copy
 || cmd-c
 || ctl-c
-|| ctl-c
 || "+y
 || M-w
 
 ## Paste
 || cmd-v
 || ctl-v
-|| ctl-v
 || "+gP
 || C-y
 
 ## Cut
 || cmd-x
 || ctl-x
-|| ctl-x
 || "+x
 || C-w
 
 ## Select all
 || cmd-a
 || ctl-a
-|| ctl-a
 || ggVG
 || C-x a
 
 ## Select block
 ||
-|| ctl-b
 ||
 ||
 ||
 
 ## Goto line ...
 || cmd-,
-||
 || ctl-i
 || (linenumber)G
 || M-g g
 
 ## Find ...
 || cmd-f
-||
 || ctl-f
 || / or *
 || C-s
 
 ## Find next
 || cmd-g
-||
 || ctl-g
 || *
 || C-s
 
 ## Find previous
 || cmd-d
-||
 || ctl-sh-g
 || #
 || C-r
@@ -302,12 +263,10 @@ table::
 || cmd-l
 ||
 ||
-||
 || M-%
 
 ## Replace
 || cmd-=
-||
 || ctl-h
 ||
 || M-,
@@ -317,21 +276,18 @@ table::
 ||
 ||
 ||
-||
 
 ## Paste text style only
 || cmd-alt-v
 ||
 ||
 ||
-||
 ::
 
 section::Formatting
 table::
 ## strong::Functions::
 || strong::OSX::
-|| strong::Win (PsyCollider)::
 || strong::GEdit (sced)::
 || strong::Vim (scvim)::
 || strong::Emacs (scel)::
@@ -341,53 +297,45 @@ table::
 || auto
 || auto
 || auto
-|| auto
 
 ## Balance (find next matched parens/curly braces and select everything enclosed)
 || cmd-sh-B
 ||
 ||
-||
 || C-<space>, C-M-f
 
 ## Balance backwards (find previous matched parens/curly braces and select everything enclosed)
 ||
 ||
 ||
-||
 || C-<space>, C-M-b
 
 ## Paren match highlight
 ||
 ||
-||
 || auto
 || auto with option Paren-Match-Highlighting
 
 ## Comment (add // in front)
 || cmd-/
-|| ctl-/
 ||
 ||
 || (select text and) M-;
 
 ## Uncomment (remove //s)
 || cmd-sh-/
-|| ctl-sh-/
 ||
 ||
 || (select text and) M-;
 
 ## Indent / Shift left (move selected text by one tab)
 || cmd-[
-|| ctl-t, tab
 ||
 ||
 || TAB (auto-aligns tabs according to code)
 
 ## Unindent / Shift right (by one tab)
 || cmd-]
-|| ctl-sh-t, shift-tab
 ||
 ||
 ||
@@ -397,27 +345,23 @@ table::
 ||
 ||
 ||
-||
 
 ## Insert []: enclose selected text with [txt]
 || cmd-alt-[
 ||
 ||
 ||
-||
 
 ## Insert {}: enclose selected text with {txt}
 || cmd-{
 ||
 ||
 ||
-||
 
 ## Insert /* */: enclose selected text with /*txt*/
 || cmd-*
 ||
 ||
 ||
-||
 ::
 
diff --git a/HelpSource/Reference/Server-Architecture.schelp b/HelpSource/Reference/Server-Architecture.schelp
index edd026d..492347b 100644
--- a/HelpSource/Reference/Server-Architecture.schelp
+++ b/HelpSource/Reference/Server-Architecture.schelp
@@ -33,9 +33,6 @@ Synths send audio signals to each other via a single global array of audio buses
 subsection:: Control Buses
 Synths can send control signals to each other via a single global array of control buses.  Buses are indexed by integers beginning with zero.
 
-subsection:: Shared Control Buses
-The internal server (which runs within the same address space as the client app) also has a number of shared control buses to which the client app has synchronous read/write access.  These buses are indexed by integers beginning with zero.
-
 subsection:: Buffers
 Buffers are arrays of 32 bit floating point values with a small descriptive header. Buffers are stored in a single global array indexed by integers beginning with zero. Buffers may be safely allocated, loaded and freed while synthesis is running, even while unit generators are using them. Buffers are used for wave tables, sample buffers, delay lines, envelopes, or for any other need which can use an array of floating point values. Sound files may be loaded into or written from buffers.
 
diff --git a/HelpSource/Reference/Server-Command-Reference.schelp b/HelpSource/Reference/Server-Command-Reference.schelp
index 975e799..974c49a 100644
--- a/HelpSource/Reference/Server-Command-Reference.schelp
+++ b/HelpSource/Reference/Server-Command-Reference.schelp
@@ -48,6 +48,9 @@ definitionlist::
 ## double || nominal sample rate
 ## double || actual sample rate
 ::
+
+note:: teletype::/status:: messages won't be posted, if the server is in teletype::/dumpOSC:: mode::
+
 ::
 
 subsection:: /cmd - plug-in defined command
diff --git a/HelpSource/Reference/Synth-Definition-File-Format.schelp b/HelpSource/Reference/Synth-Definition-File-Format.schelp
index eac8d62..5f4191d 100644
--- a/HelpSource/Reference/Synth-Definition-File-Format.schelp
+++ b/HelpSource/Reference/Synth-Definition-File-Format.schelp
@@ -6,6 +6,15 @@ related:: Classes/SynthDef
 Synth definition files are read by the synth server and define collections of unit generators and their connections. These files are currently written by  the SuperCollider language application, but theoretically could be written by any program.
 Such a program would need knowledge of the SC unit generators and their characteristics, such as number of inputs and outputs and available calculation rates. The code to write these files is open and available in the SuperCollider language app.
 
+In the current SuperCollider 3.6 development version, there are two versions of SynthDef:
+
+list::
+## strong::SynthDef:: - The original SynthDef file format, backward compatible with .scsyndef files saved using earlier versions of SuperCollider.
+## strong::SynthDef2:: - A revised version that extends SynthDef's capacity.
+::
+
+This document describes SynthDef2's format. See link::#original_synthdef_format#Original SynthDef format:: for the differences between SynthDef and SynthDef2.
+
 section:: Basic types
 All data is stored big endian. All data is packed, not padded or aligned.
 definitionlist::
@@ -21,7 +30,7 @@ section:: File Format
 a strong::synth-definition-file:: is :
 list::
 ## int32 - four byte file type id containing the ASCII characters: "SCgf"
-## int32 - file version, currently 1.
+## int32 - file version, currently 2.
 ## int16 - number of synth definitions in this file (D).
 ## [ strong::synth-definition:: ] * D
 ::
@@ -37,6 +46,8 @@ list::
 ## [ strong::param-name:: ] * N
 ## int16 - number of unit generators (U)
 ## [ strong::ugen-spec:: ] * U
+## int16 - number of variants (V)
+## [ strong::variant-spec:: ] * V
 ::
 
 a strong::param-name:: is :
@@ -74,6 +85,12 @@ list::
 ## int8 - calculation rate
 ::
 
+a strong::variant-spec:: is :
+list::
+## pstring - the name of the variant
+## [float32] * P - variant initial parameter values
+::
+
 section:: File Format as Tree
 
 soft::added by Jonatan Liljedahl::
@@ -81,7 +98,7 @@ soft::added by Jonatan Liljedahl::
 subsection::synth-definition-file
 tree::
 ## int32 - four byte file type id containing the ASCII characters: "SCgf"
-## int32 - file version, currently 1.
+## int32 - file version, currently 2.
 ## int16 - number of synth definitions in this file (D).
 ## [ strong::synth-definition:: ] * D
     tree::
@@ -121,9 +138,51 @@ tree::
             ## int8 - calculation rate
             ::
         ::
+    ## int16 - number of variants (V)
+    ## [ strong::variant-spec:: ] * V
+        tree::
+        ## pstring - the name of the variant
+        ## [float32] * P - variant initial parameter values
+        ::
     ::
 ::
 
+section:: Original SynthDef format
+
+The original SynthDef format differs in that the following items are teletype::int16:: instead of teletype::int32::.
+
+note:: The following list describes what has changed between SynthDef and SynthDef2. It is not a complete description of the the original SynthDef file format. ::
+
+list::
+## int32 - file version, currently 1. (This is emphasis::2:: for the new format.)
+
+## a strong::synth-definition:: is :
+list::
+## int16 - number of constants (K)
+## int16 - number of parameters (P)
+## int16 - number of parameter names (N)
+## int16 - number of unit generators (U)
+::
+## a strong::param-name:: is :
+list::
+## int16 - its index in the parameter array
+::
+
+## a strong::ugen-spec:: is :
+list::
+## int16 - number of inputs (I)
+## int16 - number of outputs (O)
+::
+
+## an strong::input-spec:: is :
+list::
+## int16 - index of unit generator or -1 for a constant
+## int16 - index of constant
+## int16 - index of unit generator output
+::
+::
+
+
 section:: Glossary
 
 definitionlist::
@@ -160,5 +219,5 @@ Unit generators should be listed in an order that permits efficient reuse of con
 
 There should be no duplicate values in the constants table.
 
-copyright © 2002 James McCartney - converted to new help system 2010 by Jonatan Liljedahl
+copyright © 2002 James McCartney - converted to new help system 2010 by Jonatan Liljedahl, updated for version 2 by Scott Wilson 2011
 
diff --git a/HelpSource/Reference/default_group.schelp b/HelpSource/Reference/default_group.schelp
index a176932..bc598b0 100644
--- a/HelpSource/Reference/default_group.schelp
+++ b/HelpSource/Reference/default_group.schelp
@@ -25,17 +25,17 @@ a.group; // note the Group ID
 ::
 The default group serves an important purpose: It provides a predictable basic Node tree so that methods such as Server-scope, Server-record, etc. can function without running into order of execution problems. In the example below the scoping node will come after the default group.
 code::
-Server.internal.boot;
+s.boot;
 
 { SinOsc.ar(mul: 0.2) }.scope(1);
 
 // watch the post window;
-Server.internal.queryAllNodes;
+s.queryAllNodes;
 
 // our SinOsc synth is within the default group (ID 1)
 // the scope node comes after the default group, so no problems
 
-Server.internal.quit;
+s.quit;
 ::
 Note that the default group is persistent: It is created in Server's code::initTree:: method (executed along with any code stored in its tree instance variable; see Server for more detail) and is recreated upon reboot, after pressing Cmd-., and after all nodes are freed. When using osc messages this means that a target node of id 1 can always be used:
 code::
diff --git a/HelpSource/Reference/playN.schelp b/HelpSource/Reference/playN.schelp
index c55f23e..3a3be1f 100644
--- a/HelpSource/Reference/playN.schelp
+++ b/HelpSource/Reference/playN.schelp
@@ -10,7 +10,6 @@ playN is a multichannel play method for link::Classes/Monitor:: and link::Classe
 code::
 // examples
 
-Server.default = s = Server.internal;
 s.boot;
 
 p = ProxySpace.push;
diff --git a/HelpSource/Search.html b/HelpSource/Search.html
index 27f5a75..11ada6d 100644
--- a/HelpSource/Search.html
+++ b/HelpSource/Search.html
@@ -315,7 +315,8 @@ function doPrint() {
             if(v.matched_kw) {
                 n.setAttribute("href",v.path+".html#kw_"+v.matched_kw);
             } else {
-                n.setAttribute("href",v.path+".html");
+                var link = v.hasOwnProperty("oldhelp")?v.oldhelp:(v.path+".html");
+                n.setAttribute("href",link);
             }
             n.innerHTML = v.title;
             div.appendChild(n);
diff --git a/HelpSource/Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters.schelp b/HelpSource/Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters.schelp
index 23f6f8a..b5db2ea 100644
--- a/HelpSource/Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters.schelp
+++ b/HelpSource/Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters.schelp
@@ -25,6 +25,23 @@ definitionList::
 ## \timingOffset || Number of strong::beats:: to delay the event's server message(s). In conjunction with link::Classes/Quant::, this allows control over the order of event preparation between different patterns in the client, without desynchronizing sonic events that should play together. link::Tutorials/A-Practical-Guide/PG_06g_Data_Sharing:: has an example of its use to pass data from a bass pattern to a chord pattern.
 
 ## \sustain || Number of beats to wait before releasing a Synth node on the server. The SynthDef must have a code::gate:: argument for the explicit release to be sent; otherwise, the pattern assumes the note will release itself using a timed envelope. code::\sustain:: is calculated from code::~dur * ~legato * ~stretch:: if not given directly.
+
+## \sendGate || The default behavior for releasing a note is to look in the link::Classes/SynthDesc:: for an argument called \gate. If it's present, the event will send a code::node.set(\gate, 0):: message to the server. If not, no release will be sent; it's assumed that the SynthDef will release itself after a given length of time. code::\sendGate:: overrides this behavior: code::true:: means to force the release message to be sent, whether or not the argument exists, while code::false:: means to suppress the release message.
+
+It isn't typical use to override; nonetheless, for some special cases, it may be useful.
+
+## \tempo || Optional. If a value is given (in beats per second), it will change the tempo of the TempoClock playing the pattern. Here, the note duration is constant but the clock's speed changes.
+
+note::Changing the tempo will affect all patterns playing on the same clock.::
+
+code::
+Pbind(
+	\curve, Pseg(Pseq([0, 1, 0], 1), 15),
+	\degree, Pwhite(-7, 0, inf) + Pkey(\curve).linlin(0, 1, 0, 14).asInteger,
+	\dur, 0.5,
+	\tempo, Pkey(\curve).linlin(0, 1, 1, 10)
+).play;
+::
 ::
 
 subsection::Node control
diff --git a/HelpSource/Tutorials/Getting-Started/08-Scoping-and-Plotting.schelp b/HelpSource/Tutorials/Getting-Started/08-Scoping-and-Plotting.schelp
index 0007b1f..685f402 100644
--- a/HelpSource/Tutorials/Getting-Started/08-Scoping-and-Plotting.schelp
+++ b/HelpSource/Tutorials/Getting-Started/08-Scoping-and-Plotting.schelp
@@ -19,19 +19,7 @@ code::
 
 This can be useful to check what's happening, and if you're getting the output you think you're getting.
 
-The second method, Function-scope, shows an oscilloscope-like display of the Function's output. Scoping works a little bit differently depending on the operating system and GUI framework that you're using. So far you have been using the local server. When you want to use the oscilloscope, the local server is okay for Windows, but in Mac/Linux environments, you will have to use the "internal" server for scope.
-
-If you need to use the internal server, you'll need to boot it before it will work. You can do this using the internal server window
-
-image::Scoping-and-Plotting00.png::
-
-or you can do it in code, like so:
-
-code::
-Server.internal.boot;
-::
-
-Then click on the '-> default' button on the internal server's window to set that server to be the default, and store it in the variable 's'. Thereafter, that will be the server on which all audio is played, unless you specify another one. Since Function-scope only works with the internal server, however, we want the audio play there!
+The second method, Function-scope, shows an oscilloscope-like display of the Function's output.
 
 So let's try to scope some audio:
 
@@ -59,18 +47,14 @@ Like Function-plot, Function-scope can be useful for testing purposes, and to se
 
 section::Scoping on Demand
 
-You can also scope the output of the internal server at any time, by calling 'scope' on it.
+You can also scope the output of the server at any time, by calling 'scope' on it.
 
 code::
-{ [SinOsc.ar(440, 0, 0.2), SinOsc.ar(442, 0, 0.2)] }.play(Server.internal);
-Server.internal.scope; // you could also use 's' if the internal is the default
+{ [SinOsc.ar(440, 0, 0.2), SinOsc.ar(442, 0, 0.2)] }.play;
+s.scope;
 ::
 
-You can do the same thing by clicking on the internal server window and pressing the 's' key.
-
-section::Local vs. Internal
-
-If you're wondering what's the difference between the local and the internal servers, it's relatively straightforward: The internal server runs as a process within the client app; basically a program within a program. The main advantage of this is that it allows the two applications to share memory, which allows for things like realtime scoping of audio. The disadvantage is that the two are then interdependent, so if the client crashes, so does the server.
+You can do the same thing by clicking on the server window and pressing the 's' key.
 
 For more information see:
 
diff --git a/HelpSource/Tutorials/Getting-Started/10-SynthDefs-and-Synths.schelp b/HelpSource/Tutorials/Getting-Started/10-SynthDefs-and-Synths.schelp
index 8e4c949..d291111 100644
--- a/HelpSource/Tutorials/Getting-Started/10-SynthDefs-and-Synths.schelp
+++ b/HelpSource/Tutorials/Getting-Started/10-SynthDefs-and-Synths.schelp
@@ -137,8 +137,6 @@ section::More About Synth
 Synth understands some methods which allow you to change the values of args after a synth has been created. For now we'll just look at one, 'set'. Synth-set takes pairs of arg names and values.
 
 code::
-Server.default = Server.internal;
-s = Server.default;
 s.boot;
 (
 SynthDef.new("tutorial-args", { arg freq = 440, out = 0;
diff --git a/HelpSource/Tutorials/Getting-Started/11-Busses.schelp b/HelpSource/Tutorials/Getting-Started/11-Busses.schelp
index 4cc0bc7..c08a8d7 100644
--- a/HelpSource/Tutorials/Getting-Started/11-Busses.schelp
+++ b/HelpSource/Tutorials/Getting-Started/11-Busses.schelp
@@ -3,45 +3,44 @@ summary:: Getting Started With SuperCollider
 categories:: Tutorials>Getting-Started
 related:: Tutorials/Getting-Started/00-Getting-Started-With-SC
 
-Now a little bit more about busses on the server. Busses are named after the busses or sends in analog mixing desks, and they serve a similar purpose: Routing signals from one place to another. In SC this means to or from the audio hardware, or between different synths. They come in two types: audio rate and control rate. As you've probably guessed, the former routes audio rate signals and the latter routes control rate signals.
+Now a little bit more about busses on the server. Busses are named after the busses or sends in analog mixing desks, and they serve a similar purpose: routing signals from one place to another. In SC, this means to or from the audio hardware, or between different synths. They come in two types: audio rate and control rate. As you've probably guessed, the former routes audio rate signals and the latter routes control rate signals.
 
-The control rate busses are fairly simple to understand, each one has an index number, starting from 0.
+The control rate busses are fairly simple to understand. Each one has an index number, starting from 0.
 
 Audio rate busses are similar, but require slightly more explanation. A server app will have a certain number of output and input channels. These correspond to the first audio busses, with outputs coming before inputs.
 
-For example, if we imagine a server with two output channels and two input channels (i.e. stereo in and out) then the first two audio busses (index 0 and index 1) will be the outputs, and the two immediately following those (index 2 and index 3) will be the inputs. Writing audio out to one of the output busses will result in sound being played from your speakers, and reading audio in from the input busses will get sound into SC for things like recording and processing (providing you have a source such as a microphone connected to your computer's or audio interface's inputs).
+For example, if we imagine a server with two output channels and two input channels (i.e. stereo in and out) then the first two audio busses (index 0 and index 1) will be the outputs, and the two immediately following those (index 2 and index 3) will be the inputs. Writing audio out to one of the output busses will result in sound being played from your speakers, and reading audio in from the input busses will get sound into SC for things like recording and processing (provided you have a source such as a microphone connected to the input of your computer or audio interface).
 
-The remaining audio busses will be 'private'. These are used simply to send audio and control signals between various synths. Sending audio to a private bus will not result in sound in your speakers unless you reroute it later to one of the output busses. These 'private' busses are often used for things like an 'effects send', i.e. something that requires further processing before it's output.
+The remaining audio busses will be 'private'. These are used simply to send audio and control signals between various synths. Sending audio to a private bus will not result in sound from your speakers unless you reroute it later to one of the output busses. These 'private' busses are often used for things like an 'effects send', i.e. something that requires further processing before it reaches the speakers.
 
-The number of control and audio busses available, as well as the number of input and output channels is set at the time the server app is booted. (See link::Classes/ServerOptions:: for information on how to set the number of input and output channels, and busses.)
+The number of control and audio busses available, as well as the number of input and output channels, is set at the time the server app is booted. (See link::Classes/ServerOptions:: for information on how to set the number of input and output channels, and busses.)
 
 section::Writing to or Reading from Busses
 
-We've already seen Out.ar, which allows you to write (i.e. play out) audio to a bus. Recall that it has two arguments, an index, and an output, which can be an array of UGens (i.e. a multichannel output) or a single UGen.
+We've already seen Out.ar, which allows you to write (i.e. play out) audio to a bus. Recall that it has two arguments – an index, and an output – which can be an array of UGens (i.e. a multichannel output) or a single UGen.
 
-To read in from a bus you use another UGen: In. In's 'ar' method also takes two arguments: An index, and the number of channels to read in. If the number of channels is greater than one, than In's output will be an Array. Execute the following examples, and watch the post window:
+To read in from a bus you use another UGen: In. In's 'ar' method also takes two arguments: an index, and the number of channels to read in. If the number of channels is greater than one, than In's output will be an Array. Execute the following examples, and watch the post window:
 
 code::
 In.ar(0, 1); // this will return 'an OutputProxy'
 In.ar(0, 4); // this will return an Array of 4 OutputProxies
 ::
 
-An OutputProxy is a special kind of UGen that acts as a placeholder for some signal that will be present when the synth is running. You'll probably never need to deal with one directly, so don't worry about them, just understand what they are so that you'll recognise them when you see them in the post window and elsewhere.
+An OutputProxy is a special kind of UGen that acts as a placeholder for some signal that will be present when the synth is running. You'll probably never need to deal with one directly, so don't worry about them. Just understand what they are so that you'll recognise them when you see them in the post window and elsewhere.
 
-In and Out also have 'kr' methods, which will read and write control rate signals to and from control rate busses. Note that Out.kr will convert an audio rate signal to control rate (this is called 'downsampling'), but that the reverse is not true: Out.ar needs an audio rate signal as its second arg.
+In and Out also have 'kr' methods, which will read and write control rate signals to and from control rate busses. Note that Out.kr will convert an audio rate signal to control rate (this is called 'downsampling'), but that the reverse is not true: Out.ar needs an audio rate signal as its second argument.
 
 code::
 // This throws an error. Can't write a control rate signal to an audio rate bus
 {Out.ar(0, SinOsc.kr)}.play;
 
 // This will work as the audio rate signal is downsampled to control rate
-Server.internal.boot;
 {Out.kr(0, SinOsc.ar)}.scope;
 ::
 
-(This limitation is not universal amongst audio rate UGens however, and most will accept control rate signals for some or all of their arguments. Some will even convert control rate inputs to audio rate if needed, filling in the extra values through a process called interpolation.)
+(This limitation is not universal amongst audio rate UGens, however, and most will accept control rate signals for some or all of their arguments. Some will even convert control rate inputs to audio rate if needed, filling in the extra values through a process called interpolation.)
 
-You'll note that when multiple Synths write to the same bus, there output is summed, or in other words, mixed.
+You'll note that when multiple Synths write to the same bus, their output is summed (i.e. mixed).
 
 code::
 (
@@ -56,7 +55,7 @@ y = Synth("tutorial-args", ["out", 1, "freq", 770]);
 
 section::Creating a Bus Object
 
-There is a handy client-side object to represent server busses: Bus. Given that all you need is an In or Out Ugen and an index to write to a bus, you might wonder what one would need a full-fledged Bus object for. Well, much of the time you don't, particularly if all you're doing is playing audio in and out. But Bus does provide some useful functionality. We'll get to that in a second, but first lets look at how to make one.
+There is a handy client-side object to represent server busses: Bus. Given that all you need is an In or Out UGen and an index to write to a bus, you might wonder what one would need a full-fledged Bus object for. Well, much of the time you don't, particularly if all you're doing is playing audio in and out. But Bus does provide some useful functionality. We'll get to that in a second, but first let's look at how to make one.
 
 Just as many UGens have ar and kr methods, Bus has two commonly used creation methods: Bus-audio and Bus-control. These each take two arguments: a Server object, and the number of channels.
 
@@ -76,7 +75,7 @@ SynthDef.new("tutorial-SinOsc-stereo", { var outArray;
 )
 ::
 
-The truth is that there aren't multichannel busses per se, but Bus objects are able to represent a series of busses with consecutive indices. Then emphasis::encapsulate:: several adjacent sever-side busses into a single Bus object, allowing you to treat them as a group. This turns out to be rather handy.
+The truth is that there aren't multichannel busses per se, but Bus objects are able to represent a series of busses with consecutive indices. They emphasis::encapsulate:: several adjacent sever-side busses into a single Bus object, allowing you to treat them as a group. This turns out to be rather handy.
 
 When you're working with so-called 'private' busses (i.e. anything besides the input and output channels; all control busses are 'private') you generally want to make sure that that bus is only used for exactly what you want. The point after all is to keep things separate. You could do this by carefully considering which indices to use, but Bus allows for this to be done automatically. Each Server object has a bus allocator, and when you make a Bus object, it reserves those private indices, and will not give them out again until freed. You can find out the index of a Bus by using its 'index' method. Normally however, you will not need to store this value, as instances of Bus can be passed directly as UGen inputs or Synth args.
 
@@ -91,7 +90,7 @@ c.numChannels;		// the default number of channels is 1
 c.index;		// note that this is 2; b uses 0 and 1
 ::
 
-So by using Bus objects to represent adjacent busses, you can guarantee that there won't be a conflict. Since the indices are allocated dyamically, you can change the number of channels of a Bus in your code (for instance because you now need to route a multichannel signal), and you're still guaranteed to be safe. If you were simply 'hard allocating' busses by using index numbers, you might have to adjust them all to make room for an extra adjacent channel, since the indices need to be consecutive! This is a good example of the power of objects: By encapsulating things like index allocation, and providing a emphasis::layer of abstraction::, they can make your code more flexible.
+So by using Bus objects to represent adjacent busses, you can guarantee that there won't be a conflict. Since the indices are allocated dynamically, you can change the number of channels of a Bus in your code (for instance because you now need to route a multichannel signal), and still be guaranteed to be safe. If you were simply 'hard allocating' busses by using index numbers, you might have to adjust them all to make room for an extra adjacent channel, since the indices need to be consecutive! This is a good example of the power of objects: by encapsulating things like index allocation, and providing a emphasis::layer of abstraction::, they can make your code more flexible.
 
 You can free up the indices used by a Bus by calling its 'free' method. This allows them to be reallocated.
 
@@ -104,7 +103,7 @@ Note that this doesn't actually make the bus on the server go away, it's still t
 
 Now here's another advantage when working with private audio rate busses. As we said above, the first few busses are the output and input channels. So if we want to use the first private bus, all we need to do is add those together, right? Consider our server app with 2 output and 2 input channels. The first private audio bus is index 4. (0, 1, 2, 3 ... 4!) So we write our code, and give the appropriate Out UGen 4 as its index arg.
 
-But what happens if we later decide to change the number of output channels to 6? Now everything that was written to our private bus is going out one of the output channels! A Server's audio bus allocator will only assign private indices, so if you change the number of input or output channels it will take this into account when you execute your code. Again this makes your code more flexible.
+But what happens if we later decide to change the number of output channels to 6? Now everything that was written to our private bus is going out one of the output channels! A Server's audio bus allocator will only assign private indices, so if you change the number of input or output channels it will take this into account when you execute your code. Again, this makes your code more flexible.
 
 section::Busses in Action
 
@@ -132,9 +131,9 @@ z = Synth.after(x, "tutorial-Infreq", [\bus, b, \freqOffset, 200]);
 x.free; y.free; z.free; b.free;
 ::
 
-Both y and z read from the same bus, the latter just modifies the frequency control signal by adding a constant value of 200 to it. This is more efficient than having two separate control oscillators to control frequency. This sort of strategy of connecting together synths, each of which does different things in a larger process, can be very effective in SC.
+Both y and z read from the same bus. The latter just modifies the frequency control signal by adding a constant value of 200 to it. This is more efficient than having two separate control oscillators to control frequency. This sort of strategy of connecting together synths, each of which does different things in a larger process, can be very effective in SC.
 
-Now an example with an audio bus. This is the most complicated example we've seen so far, but should give you some idea of how to start putting all the things we've learned together. The code below will use two Synths as sources, one creating pulses of PinkNoise (a kind of Noise which has less energy at high frequencies than at low), and another creating pulses of Sine Waves. The pulses are created using the UGens link::Classes/Impulse:: and link::Classes/Decay2::. These are then reverberated using a chain of link::Classes/AllpassC::, which is a kind of delay.
+Now an example with an audio bus. This is the most complicated example we've seen so far, but should give you some idea of how to start putting all the things we've learned together. The code below will use two Synths as sources, one creating pulses of PinkNoise (a kind of Nnise which has less energy at high frequencies than at low), and another creating pulses of sine waves. The pulses are created using the UGens link::Classes/Impulse:: and link::Classes/Decay2::. These are then reverberated using a chain of link::Classes/AllpassC::, which is a kind of delay.
 
 Note the construction 16.do({ ... }), below. This makes the chain by evaluating the function 16 times. This is a very powerful and flexible technique, as by simply changing the number, I can change the number of evaluations. See link::Classes/Integer:: for more info on Integer-do.
 
@@ -153,7 +152,7 @@ SynthDef("tutorial-DecayPink", { arg outBus = 0, effectBus, direct = 0.5;
 
 SynthDef("tutorial-DecaySin", { arg outBus = 0, effectBus, direct = 0.5;
 	var source;
-	// Decaying pulses of a modulating Sine wave. We'll add reverb later.
+	// Decaying pulses of a modulating sine wave. We'll add reverb later.
 	source = Decay2.ar(Impulse.ar(0.3, 0.25), 0.3, 1, SinOsc.ar(SinOsc.kr(0.2, 0, 110, 440)));
 	// this will be our main output
 	Out.ar(outBus, source * direct);
@@ -165,8 +164,8 @@ SynthDef("tutorial-Reverb", { arg outBus = 0, inBus;
 	var input;
 	input = In.ar(inBus, 1);
 
-	// a low rent reverb
-	// aNumber.do will evaluate it's function argument a corresponding number of times
+	// a low-rent reverb
+	// aNumber.do will evaluate its function argument a corresponding number of times
 	// {}.dup(n) will evaluate the function n times, and return an Array of the results
 	// The default for n is 2, so this makes a stereo reverb
 	16.do({ input = AllpassC.ar(input, 0.04, { Rand(0.001,0.04) }.dup, 3)});
@@ -191,7 +190,7 @@ z.set(\direct, 0); // only reverberated Sine wave
 x.free; y.free; z.free; b.free;
 ::
 
-Note that we could easily have many more source synths being processed by the single reverb synth. If we'd built the reverb into the source synths we'd be duplicating effort. But by using a private bus, we're able to be more efficient.
+Note that we could easily have many more source synths being processed by the single reverb synth. If we'd built the reverb into the source synths we'd be duplicating the effort. But by using a private bus, we're able to be more efficient.
 
 section::More Fun with Control Busses
 
@@ -230,7 +229,7 @@ x.free; b.free; c.free;
 
 Note that unlike audio rate busses, control rate busses hold their last value until something new is written.
 
-Also note that Bus-get takes a Function (called an action function) as an argument. This is because it takes a small amount of time for the server to get the reply and send it back. The function, which is passed the value (or Array of values in the case of a multichannel bus) as an argument, allows you to do something with the value once its come back.
+Also note that Bus-get takes a Function (called an action function) as an argument. This is because it takes a small amount of time for the server to get the reply and send it back. The function, which is passed the value (or Array of values, in the case of a multichannel bus) as an argument, allows you to do something with the value once it comes back.
 
 This concept of things taking a small amount of time to respond (usually called emphasis::latency::) is quite important to understand. There are a number of other methods in SC which function this way, and it can cause you problems if you're not careful. To illustrate this consider the example below.
 
@@ -259,7 +258,7 @@ In the examples above, you may have wondered about things like Synth.after, and
 
 It starts with the first synth in its list, and calculates a block of samples for its first UGen. It then takes that and calculates a block of samples for each of its remaining UGens in turn (any of which may take the output of an earlier UGen as an input.) This synth's output is written to a bus or busses, as the case may be. The server then moves on to the next synth in its list, and the process repeats, until all running synths have calculated a block of samples. At this point the server can move on to the next cycle.
 
-The important thing to understand is that as a emphasis::general rule::, when you are connecting synths together using busses it is important that synths which write signals to busses are earlier in the server's order than synths which read those signals from those busses. For instance in the audio bus example above it was important that the 'reverb' synth is calculated after the noise and sine wave synths that it processes.
+The important thing to understand is that as a emphasis::general rule::, when you are connecting synths together using busses it is important that synths which write signals to busses are earlier in the server's order than synths which read those signals from those busses. For instance, in the audio bus example above it was important that the 'reverb' synth is calculated after the noise and sine wave synths that it processes.
 
 This is a complicated topic, and there are some exceptions to this, but you should be aware that ordering is crucial when interconnecting synths. The file link::Guides/Order-of-execution:: covers this topic in greater detail.
 
@@ -288,7 +287,7 @@ link::Classes/Bus::, link::Classes/In::, link::Classes/OutputProxy::, link::Guid
 
 section::Suggested Exercise
 
-Experiment with interconnecting different synths using audio and control busses. When doing so be mindful of their ordering on the server.
+Experiment with interconnecting different synths using audio and control busses. When doing so, be mindful of their ordering on the server.
 
 ____________________
 
diff --git a/HelpSource/Tutorials/Getting-Started/12-Groups.schelp b/HelpSource/Tutorials/Getting-Started/12-Groups.schelp
index 1064775..077732b 100644
--- a/HelpSource/Tutorials/Getting-Started/12-Groups.schelp
+++ b/HelpSource/Tutorials/Getting-Started/12-Groups.schelp
@@ -117,17 +117,13 @@ a.group; // Returns a Group object. Note the ID of 1 (the default group) in the
 The default group serves an important purpose: It provides a predictable basic Node tree so that methods such as Server-scope and Server-record (which create nodes which emphasis::must:: come after everything else) can function without running into order of execution problems. In the example below the scoping node will come after the default group.
 
 code::
-Server.internal.boot;
-
 { SinOsc.ar(mul: 0.2) }.scope(1);
 
 // watch the post window;
-Server.internal.queryAllNodes;
+s.queryAllNodes;
 
 // our SinOsc synth is within the default group (ID 1)
 // the scope node ('stethoscope') comes after the default group, so no problems
-
-Server.internal.quit;
 ::
 
 In general you should add nodes to the default group, or groups contained within it, and emphasis::not:: before or after it. When adding an 'effects' synth, for instance, one should resist the temptation to add it after the default group, and instead create a separate source group within the default group. This will prevent problems with scoping or recording.
@@ -175,7 +171,7 @@ So if you're looking at a helpfile and can't find a particular method that a cla
 
 code::
 Group.superclass; 				// this will return 'Node'
-Group.superclass.openHelpFile;
+Group.superclass.help;
 Group.findRespondingMethodFor('set');		// Node-set
 Group.findRespondingMethodFor('postln');	// Object-postln;
 Group.helpFileForMethod('postln'); 		// opens class Object help file
diff --git a/HelpSource/Tutorials/Getting-Started/Scoping-and-Plotting00.png b/HelpSource/Tutorials/Getting-Started/Scoping-and-Plotting00.png
deleted file mode 100644
index a703431..0000000
Binary files a/HelpSource/Tutorials/Getting-Started/Scoping-and-Plotting00.png and /dev/null differ
diff --git a/HelpSource/Tutorials/JITLib/recursive_phrasing.schelp b/HelpSource/Tutorials/JITLib/recursive_phrasing.schelp
index 6437bb6..f4b1f40 100644
--- a/HelpSource/Tutorials/JITLib/recursive_phrasing.schelp
+++ b/HelpSource/Tutorials/JITLib/recursive_phrasing.schelp
@@ -1,7 +1,7 @@
 title:: recursive_phrasing
 summary:: Recursive phrases and granular composite sounds
 categories:: Libraries>JITLib>Tutorials
-related:: Overviews/JITLib, Classes/Pdef, Classes/PlazyEnvir
+related:: Overviews/JITLib, Classes/Pdef, Classes/PlazyEnvirN
 
 Pdef can be used as a global storage for event patterns. Here a way is provided by which these definitions can be used as an instrument that consists of several events (a emphasis::phrase::), such as a cloud of short grains. Furthermore, this scheme can be applied recursively, so that structures like a cloud of clouds can be constructed.
 
@@ -11,7 +11,7 @@ list::
 ## f there is no definition to be found there, it uses a link::Classes/SynthDef:: with this name, if present.
 ::
 
-When passing a emphasis::function:: to Pdef it creates a PlazyEnvir internally. Its function is evaluated in the context of the outer environment (see link::Classes/PlazyEnvir::) which should return a pattern or a stream.
+When passing a emphasis::function:: to Pdef it creates a PlazyEnvirN internally. Its function is evaluated in the context of the input event (see link::Classes/PlazyEnvirN::) which should return a pattern or a stream. Note that this doesn't allow the usual access of the outer environment from within the function.
 
 code::
 (
diff --git a/HelpSource/Tutorials/Mark_Polishook_tutorial/02_Evaluating_code.schelp b/HelpSource/Tutorials/Mark_Polishook_tutorial/02_Evaluating_code.schelp
index a3373b3..87cb74f 100644
--- a/HelpSource/Tutorials/Mark_Polishook_tutorial/02_Evaluating_code.schelp
+++ b/HelpSource/Tutorials/Mark_Polishook_tutorial/02_Evaluating_code.schelp
@@ -58,8 +58,7 @@ section::Scoping sound
 To scope whatever it is you're synthesizing (create a graphical display of the waveform):
 
 numberedList::
-## make sure the internal server is running (press its boot button)
-## press the default button on the internal server window.
+## make sure the server is running (press the boot button)
 ## evaluate your code as described above.
 
 For example, run
diff --git a/HelpSource/Tutorials/Tutorial.schelp b/HelpSource/Tutorials/Tutorial.schelp
index ef31446..4ac7c0a 100644
--- a/HelpSource/Tutorials/Tutorial.schelp
+++ b/HelpSource/Tutorials/Tutorial.schelp
@@ -117,7 +117,10 @@ code::
 s.quit;
 ::
 
-SynthDef has two methods which send the def automatically, load which writes it to disk, and send which sends it without writing it to disk. The latter can be useful to avoid clutter on your drive.
+
+SynthDef has three methods which send the def automatically, load which writes it to disk, and send which sends it without writing it to disk. The latter can be useful to avoid clutter on your drive, but is limited to SynthDefs up to a certain complexity.
+
+Most generally useful and recommended is to use the method strong::add::, which sends or writes to disk only if it can't send, and it sends to all servers listed in the SynthDefLib (A server can be added by SynthDescLib.global.addServer(server)).
 
 code::
 (
@@ -125,6 +128,15 @@ SynthDef("sine", { arg freq=800;
 	var osc;
 	osc = SinOsc.ar(freq, 0, 0.1); // 800 Hz sine oscillator
 	Out.ar(0, osc); // send output to audio bus zero.
+}).add;
+)
+
+
+(
+SynthDef("sine", { arg freq=800;
+	var osc;
+	osc = SinOsc.ar(freq, 0, 0.1); // 800 Hz sine oscillator
+	Out.ar(0, osc); // send output to audio bus zero.
 }).load(s); // write to disk and send
 )
 
@@ -317,26 +329,26 @@ section::Sequencing with Routines
 
 code::
 (
-var space,offset,timer, saw, envsaw, sampler, delay;
+var space, offset, timer, saw, envsaw, sampler, delay;
 
-SynthDef("saw",{ arg out=100, pan=0, trig=0.0, freq=500, amp=1, cutoff=10000, rezz=1;
+SynthDef("saw", { arg out=100, pan=0, trig=0.0, freq=500, amp=1, cutoff=10000, rezz=1;
 	freq = Lag.kr(freq,0.1);
 	Out.ar(out,Pan2.ar(RLPF.ar(Saw.ar([freq,freq*2],amp),cutoff,rezz),
 		pan));
-	}).load(s);
+}).add;
 
 SynthDef("envsaw",{ arg out=100, pan=0, sustain=0.5, freq=500, amp=1, cutoff=10000, rezz=1;
 	var env;
 	env = EnvGen.kr(Env.perc(0.01, sustain, 0.2), doneAction:0, gate:amp);
 	Out.ar(out,Pan2.ar(RLPF.ar(Saw.ar(Lag.kr(freq,0.1),env),cutoff,rezz)*amp,
 		pan));
-	}).load(s);
+}).add;
 
 SynthDef("delay", { arg out=0, delay = 0.4, decay = 14;
 	var in;
 	in = In.ar(out,2);
 	Out.ar(out, CombN.ar(in, 0.5, delay, decay, 1, in));
-}).load(s);
+}).add;
 
 SynthDef("sampler",{ arg sample, trig=1,rate=1.0,out=0,bufnum=0,pan=0,amp=1, sustain=0.25;
 	var env;
@@ -346,37 +358,41 @@ SynthDef("sampler",{ arg sample, trig=1,rate=1.0,out=0,bufnum=0,pan=0,amp=1, sus
 		PlayBuf.ar(1,bufnum,rate,InTrig.kr(trig),0,0)*amp,
 			pan);
 	)
-}).load(s);
+}).add;
 
 Tempo.bpm = 120;
-timer=BeatSched.new;
+timer = BeatSched.new;
 offset = Tempo.tempo.reciprocal;
 
 space = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");
 
-saw=Synth("saw");
-delay=Synth.after(saw,"delay", [\decay, 20]);
+saw = Synth("saw");
+delay = Synth.after(saw,"delay", [\decay, 20]);
 
 timer.sched(0,{
 	var r;
-	r=Routine({ var wait, freq, cutoff,rezz;
-	wait = Pseq([2],inf).asStream;
-	freq = Pseq([30,40,42,40],inf).asStream;
-	cutoff = Pfunc({500.rand2+1000}).asStream;
-	rezz = 0.5;
-	inf.do({saw.set("freq", freq.next.midicps, "cutoff", cutoff.next, "rezz", rezz, "amp", 0.1, "out", 0);
-(wait.next*offset).wait});});
-timer.sched(0,r);
+	r = Routine({ var wait, freq, cutoff,rezz;
+		wait = Pseq([2],inf).asStream;
+		freq = Pseq([30,40,42,40],inf).asStream;
+		cutoff = Pfunc({500.rand2+1000}).asStream;
+		rezz = 0.5;
+		inf.do({ 
+			saw.set("freq", freq.next.midicps, "cutoff", cutoff.next, "rezz", rezz, "amp", 0.1, "out", 0);
+			(wait.next*offset).wait
+		});
+	});
+	timer.sched(0, r);
 });
 
 timer.sched(0,{
 	var r;
 	r=Routine({ var wait, rate;
-	wait = Pseq([0.25],inf).asStream;
-	rate = Pfunc({0.5.rand}).asStream;
-	inf.do({Synth.before(delay, "sampler", [\bufnum, space, \trig, 1, \amp,0.1, \rate, rate.next, \sustain, wait.next]);
-(wait.next*offset).wait});});
-timer.sched(0,r);
+		wait = Pseq([0.25],inf).asStream;
+		rate = Pfunc({0.5.rand}).asStream;
+		inf.do({
+			Synth.before(delay, "sampler", [\bufnum, space, \trig, 1, \amp,0.1, \rate, rate.next, \sustain, 		wait.next]);
+			(wait.next*offset).wait});});
+		timer.sched(0,r);
 });
 
 )
@@ -393,7 +409,7 @@ SynthDef("patternefx_Ex", { arg out, in;
 	audio = In.ar([20,21],2);
 	efx=CombN.ar(audio, 0.5, [0.24,0.4], 2, 1);
 	Out.ar([0,1], audio+efx);
-	}).load(s);
+	}).add;
 
 Synth.new("patternefx_Ex");
 
@@ -405,7 +421,7 @@ SynthDef("pattern_Ex", { arg out, freq = 1000, gate = 1, pan = 0, cut = 4000, re
 			cut, rez),
 		pan) * EnvGen.kr(Env.linen(0.01, 1, 0.3), gate, amp, doneAction:2);
 	)
-	}).load(s);
+	}).add;
 
 SynthDef("bass_Ex", { arg out, freq = 1000, gate = 1, pan = 0, cut = 4000, rez = 0.8, amp = 1;
 	Out.ar(out,
@@ -415,7 +431,7 @@ SynthDef("bass_Ex", { arg out, freq = 1000, gate = 1, pan = 0, cut = 4000, rez =
 			cut, rez),
 		pan) * EnvGen.kr(Env.linen(0.01, 1, 0.3), gate, amp, doneAction:2);
 	)
-	}).load(s);
+	}).add;
 
 SynthDescLib.global.read;
 
diff --git a/HelpSource/scdoc.css b/HelpSource/scdoc.css
index 5952937..6df48f5 100644
--- a/HelpSource/scdoc.css
+++ b/HelpSource/scdoc.css
@@ -459,6 +459,10 @@ td p {
     color: #777;
 }
 
+li {
+    padding-bottom: 0.5em;
+}
+
 ul.toc {
     list-style-type: none;
     margin: 0;
diff --git a/QtCollider/CMakeLists.txt b/QtCollider/CMakeLists.txt
index f9b6925..d335fa2 100644
--- a/QtCollider/CMakeLists.txt
+++ b/QtCollider/CMakeLists.txt
@@ -1,4 +1,6 @@
-find_package (Qt4 4.5 COMPONENTS QtCore QtGui QtWebKit)
+set(required_qt_version 4.7)
+
+find_package (Qt4 ${required_qt_version} COMPONENTS QtCore QtGui QtWebKit)
 
 if (NOT QT4_FOUND)
     set(FIND_QT_ERROR_MSG "You are trying to compile with Qt GUI support, but a suitable version of Qt or one of its components could not be found:")
@@ -13,7 +15,7 @@ if (NOT QT4_FOUND)
       set(FIND_QT_ERROR_MSG "${FIND_QT_ERROR_MSG}\n-- Missing component: QtWebKit")
     endif()
 
-    set(FIND_QT_ERROR_MSG "${FIND_QT_ERROR_MSG}\nPlease either install Qt (version 4.5 or greater), or compile without Qt GUI support (add -DSC_QT=OFF to the cmake command line).")
+    set(FIND_QT_ERROR_MSG "${FIND_QT_ERROR_MSG}\nPlease either install Qt (version ${required_qt_version} or greater), or compile without Qt GUI support (add -DSC_QT=OFF to the cmake command line).")
 
     message(FATAL_ERROR ${FIND_QT_ERROR_MSG})
 endif()
@@ -28,6 +30,11 @@ set( QT_COLLIDER_HDRS
   ${QT_COLLIDER_DIR}/QObjectProxy.h
   ${QT_COLLIDER_DIR}/QWidgetProxy.h
   ${QT_COLLIDER_DIR}/widgets/BasicWidgets.h
+  ${QT_COLLIDER_DIR}/widgets/QcButton.h
+  ${QT_COLLIDER_DIR}/widgets/QcCheckBox.h
+  ${QT_COLLIDER_DIR}/widgets/QcTextField.h
+  ${QT_COLLIDER_DIR}/widgets/QcListWidget.h
+  ${QT_COLLIDER_DIR}/widgets/QcPopUpMenu.h
   ${QT_COLLIDER_DIR}/widgets/QcTreeWidget.h
   ${QT_COLLIDER_DIR}/widgets/QcScrollArea.h
   ${QT_COLLIDER_DIR}/widgets/QcNumberBox.h
@@ -46,6 +53,7 @@ set( QT_COLLIDER_HDRS
   ${QT_COLLIDER_DIR}/widgets/QcFileDialog.h
   ${QT_COLLIDER_DIR}/widgets/QcPenPrinter.h
   ${QT_COLLIDER_DIR}/widgets/QcWebView.h
+  ${QT_COLLIDER_DIR}/widgets/web_page.hpp
   ${QT_COLLIDER_DIR}/widgets/QcWindow.h
   ${QT_COLLIDER_DIR}/layouts/layouts.hpp
   ${QT_COLLIDER_DIR}/layouts/stack_layout.hpp
@@ -70,6 +78,11 @@ set( QT_COLLIDER_SRCS
   ${QT_COLLIDER_DIR}/primitives/prim_QWidget.cpp
   ${QT_COLLIDER_DIR}/primitives/prim_QPalette.cpp
   ${QT_COLLIDER_DIR}/widgets/BasicWidgets.cpp
+  ${QT_COLLIDER_DIR}/widgets/QcButton.cpp
+  ${QT_COLLIDER_DIR}/widgets/QcCheckBox.h
+  ${QT_COLLIDER_DIR}/widgets/QcTextField.h
+  ${QT_COLLIDER_DIR}/widgets/QcListWidget.cpp
+  ${QT_COLLIDER_DIR}/widgets/QcPopUpMenu.cpp
   ${QT_COLLIDER_DIR}/widgets/QcTreeWidget.cpp
   ${QT_COLLIDER_DIR}/widgets/QcScrollArea.cpp
   ${QT_COLLIDER_DIR}/widgets/QcAbstractStepValue.cpp
@@ -92,7 +105,7 @@ set( QT_COLLIDER_SRCS
   ${QT_COLLIDER_DIR}/widgets/QcFileDialog.cpp
   ${QT_COLLIDER_DIR}/widgets/QcPenPrinter.cpp
   ${QT_COLLIDER_DIR}/widgets/QcWebView.cpp
-  ${QT_COLLIDER_DIR}/layouts/classic_layouts.cpp
+  ${QT_COLLIDER_DIR}/widgets/web_page.cpp
   ${QT_COLLIDER_DIR}/layouts/layouts.cpp
   ${QT_COLLIDER_DIR}/layouts/stack_layout.cpp
   ${QT_COLLIDER_DIR}/style/ProxyStyle.cpp
@@ -138,6 +151,7 @@ set (QT_COLLIDER_LIBS ${QT_LIBRARIES} ${MATH_LIBRARY})
 
 if(APPLE)
   list(APPEND QT_COLLIDER_LIBS "-framework Cocoa" )
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -F/Library/Frameworks")
 endif()
 
 if (CMAKE_SYSTEM_NAME MATCHES "Linux")
diff --git a/QtCollider/Common.h b/QtCollider/Common.h
index 01815ef..e49acf1 100644
--- a/QtCollider/Common.h
+++ b/QtCollider/Common.h
@@ -100,40 +100,30 @@ namespace QtCollider {
 
   QPalette systemPalette();
 
-  extern PyrSymbol *s_interpretCmdLine;
-  extern PyrSymbol *s_interpretPrintCmdLine;
-  extern PyrSymbol *s_doFunction;
-  extern PyrSymbol *s_doDrawFunc;
-  extern PyrSymbol *s_prRelease;
-  extern PyrSymbol *s_Rect;
-  extern PyrSymbol *s_Point;
-  extern PyrSymbol *s_Color;
-  extern PyrSymbol *s_Size;
-  extern PyrSymbol *s_Array;
-  extern PyrSymbol *s_FloatArray;
-  extern PyrSymbol *s_SymbolArray;
-  extern PyrSymbol *s_String;
-  extern PyrSymbol *s_QPalette;
-  extern PyrSymbol *s_QFont;
-  extern PyrSymbol *s_QObject;
-  extern PyrSymbol *s_QLayout;
-  extern PyrSymbol *s_QTreeViewItem;
-
-#define class_Rect s_Rect->u.classobj
-#define class_Point s_Point->u.classobj
-#define class_Color s_Color->u.classobj
-#define class_Size s_Size->u.classobj
-#define class_Array s_Array->u.classobj
-#define class_FloatArray s_FloatArray->u.classobj
-#define class_SymbolArray s_SymbolArray->u.classobj
-#define class_String s_String->u.classobj
-#define class_QPalette s_QPalette->u.classobj
-#define class_QFont s_QFont->u.classobj
-#define class_QObject s_QObject->u.classobj
-#define class_QLayout s_QLayout->u.classobj
-#define class_QTreeViewItem s_QTreeViewItem->u.classobj
-
-#define SC_CLASS( SYM ) getsym(#SYM)->u.classobj
+#define QC_DO_SYMBOLS \
+  QC_DO_SYMBOL(interpretCmdLine); \
+  QC_DO_SYMBOL(interpretPrintCmdLine); \
+  QC_DO_SYMBOL(doFunction); \
+  QC_DO_SYMBOL(doDrawFunc); \
+  QC_DO_SYMBOL(prRelease); \
+  QC_DO_SYMBOL(Rect); \
+  QC_DO_SYMBOL(Point); \
+  QC_DO_SYMBOL(Color); \
+  QC_DO_SYMBOL(Size); \
+  QC_DO_SYMBOL(QPalette); \
+  QC_DO_SYMBOL(QFont); \
+  QC_DO_SYMBOL(QObject); \
+  QC_DO_SYMBOL(QLayout); \
+  QC_DO_SYMBOL(QTreeViewItem); \
+  QC_DO_SYMBOL(Gradient); \
+  QC_DO_SYMBOL(HiliteGradient);
+
+#define QC_DO_SYMBOL(SYM) extern PyrSymbol * sym_##SYM
+QC_DO_SYMBOLS
+#undef QC_DO_SYMBOL
+
+#define SC_SYM( SYM ) QtCollider::sym_##SYM
+#define SC_CLASS( SYM ) SC_SYM(SYM)->u.classobj
 
 }
 
diff --git a/QtCollider/LanguageClient.cpp b/QtCollider/LanguageClient.cpp
index 21bbd45..93cfa2a 100644
--- a/QtCollider/LanguageClient.cpp
+++ b/QtCollider/LanguageClient.cpp
@@ -22,8 +22,13 @@
 #include "LanguageClient.h"
 #include "QcApplication.h"
 #include "QtCollider.h"
+#include "QObjectProxy.h"
+
+#include <PyrKernel.h>
+#include <PyrLexer.h>
 
 #include <qmath.h>
+#include <QWidget>
 
 extern double elapsedTime();
 
@@ -112,6 +117,13 @@ void LangClient::onQuit( int exitCode )
     new SCRequestEvent( Event_SCRequest_Quit, exitCode ) );
 }
 
+void LangClient::onLibraryShutdown()
+{
+  QWidgetList windows = QApplication::topLevelWidgets();
+  Q_FOREACH( QWidget *w, windows )
+    w->hide();
+}
+
 void LangClient::customEvent( QEvent *e )
 {
   int type = e->type();
diff --git a/QtCollider/LanguageClient.h b/QtCollider/LanguageClient.h
index 4267bb9..6d1b3de 100644
--- a/QtCollider/LanguageClient.h
+++ b/QtCollider/LanguageClient.h
@@ -56,6 +56,7 @@ protected:
   virtual void daemonLoop();
 
   virtual void onQuit( int exitCode );
+  virtual void onLibraryShutdown();
 
   virtual void customEvent( QEvent * );
   virtual void timerEvent( QTimerEvent * );
diff --git a/QtCollider/QObjectProxy.cpp b/QtCollider/QObjectProxy.cpp
index 234f6e8..9796a43 100644
--- a/QtCollider/QObjectProxy.cpp
+++ b/QtCollider/QObjectProxy.cpp
@@ -48,6 +48,7 @@ QObjectProxy::QObjectProxy( QObject *qObject_, PyrObject *scObject_ )
   // to avoid triggering very expensive normalization!
   connect( qObject, SIGNAL(destroyed(QObject*)), this, SLOT(invalidate()) );
   qObject->installEventFilter( this );
+  _eventHandlers.reserve(10);
 }
 
 QObjectProxy::~QObjectProxy()
@@ -56,7 +57,7 @@ QObjectProxy::~QObjectProxy()
 }
 
 bool QObjectProxy::compareThread() {
-  return QThread::currentThread() == this->thread();
+  return gMainVMGlobals->canCallOS;
 }
 
 void QObjectProxy::invalidate() {
@@ -89,7 +90,7 @@ bool QObjectProxy::invokeMethod( const char *method, PyrSlot *retSlot, PyrSlot *
   // get data from argument slots
   QtCollider::Variant argSlots[10];
 
-  if( isKindOfSlot( argSlot, class_Array ) ) {
+  if( isKindOfSlot( argSlot, class_array ) ) {
     PyrSlot *slots = slotRawObject( argSlot )->slots;
     int size = slotRawObject( argSlot )->size;
     int i;
@@ -209,7 +210,7 @@ void QObjectProxy::customEvent( QEvent *event )
       destroyEvent( static_cast<DestroyEvent*>(event) );
       return;
     case (QEvent::Type) QtCollider::Event_Proxy_Release:
-      invokeScMethod(s_prRelease);
+      invokeScMethod(SC_SYM(prRelease));
       return;
     default: ;
   }
@@ -249,35 +250,40 @@ bool QObjectProxy::setEventHandler( int type, PyrSymbol *method,
   data.type = type;
   data.method = method;
   data.sync = sync;
-
-  // if 'enable' is true, insert the new event handler enabled,
-  // otherwise copy current state, or set disabled if none.
-  if( enable ) {
-    data.enabled = true;
-  }
-  else {
-    EventHandlerData d = _eventHandlers.value( type );
-    if( d.type != QEvent::None ) data.enabled = d.enabled;
-    else data.enabled = false;
+  data.enabled = enable;
+
+  EventHandlerData *d = _eventHandlers.data();
+  int n = _eventHandlers.size();
+  while(n--)
+  {
+      if(d->type == type)
+      {
+          *d = data;
+          break;
+      }
+      ++d;
   }
-
-  // NOTE: will replace if same key
-  _eventHandlers.insert( type, data );
+  if(n < 0)
+      _eventHandlers.append(data);
 
   return true;
 }
 
 bool QObjectProxy::setEventHandlerEnabled( int type, bool enabled )
 {
-  EventHandlerData d = _eventHandlers.value( type );
-  if( d.type != type ) return false;
-
-  if( d.enabled != enabled ) {
-    d.enabled = enabled;
-    _eventHandlers.insert( type, d );
+  EventHandlerData *d = _eventHandlers.data();
+  int n = _eventHandlers.size();
+  while(n--)
+  {
+      if(d->type == type)
+      {
+          d->enabled = enabled;
+          break;
+      }
+      ++d;
   }
 
-  return true;
+  return n >= 0;
 }
 
 bool QObjectProxy::connectObject( const char *signal, PyrObject *object,
@@ -441,10 +447,24 @@ bool QObjectProxy::eventFilter( QObject * watched, QEvent * event )
 {
   int type = event->type();
 
-  EventHandlerData eh;
+  EventHandlerData *d = _eventHandlers.data();
+  int n = _eventHandlers.size();
+  while(n--)
+  {
+      if(d->type == type)
+          break;
+      ++d;
+  }
+  if(n < 0)
+  {
+      qcProxyDebugMsg(3,QString("No handler for event (%1), forwarding to the widget")
+        .arg(type));
+      return false;
+  }
+
   QList<QVariant> args;
 
-  if( !filterEvent( watched, event, eh, args ) ) {
+  if( !filterEvent( watched, event, *d, args ) ) {
     qcProxyDebugMsg(3,QString("Event (%1, %2) not handled, forwarding to the widget")
       .arg(type)
       .arg(event->spontaneous() ? "spontaneous" : "inspontaneous") );
@@ -454,10 +474,10 @@ bool QObjectProxy::eventFilter( QObject * watched, QEvent * event )
   qcProxyDebugMsg(1,QString("Will handle event (%1, %2) -> (%3, %4)")
     .arg(type)
     .arg(event->spontaneous() ? "spontaneous" : "inspontaneous")
-    .arg(eh.method->name)
-    .arg(eh.sync == Synchronous ? "sync" : "async") );
+    .arg(d->method->name)
+    .arg(d->sync == Synchronous ? "sync" : "async") );
 
-  return invokeEventHandler( event, eh, args );
+  return invokeEventHandler( event, *d, args );
 }
 
 bool QObjectProxy::invokeEventHandler( QEvent *event, EventHandlerData &eh, QList<QVariant> & args )
@@ -489,9 +509,7 @@ bool QObjectProxy::invokeEventHandler( QEvent *event, EventHandlerData &eh, QLis
 
 bool QObjectProxy::filterEvent( QObject *, QEvent *e, EventHandlerData & eh, QList<QVariant> & args )
 {
-  int type = e->type();
-  eh = _eventHandlers.value( type, EventHandlerData() );
-  return ( eh.type == type ) && eh.enabled;
+  return eh.enabled;
 }
 
 inline void QObjectProxy::scMethodCallEvent( ScMethodCallEvent *e )
diff --git a/QtCollider/QObjectProxy.h b/QtCollider/QObjectProxy.h
index 744be38..3bb6e86 100644
--- a/QtCollider/QObjectProxy.h
+++ b/QtCollider/QObjectProxy.h
@@ -27,7 +27,7 @@
 #include <QObject>
 #include <QString>
 #include <QVariant>
-#include <QHash>
+#include <QVector>
 #include <QEvent>
 
 #include <PyrObject.h>
@@ -86,7 +86,8 @@ class QObjectProxy : public QObject
 
     virtual ~QObjectProxy();
 
-    // compare current thread to proxy's thread
+    // Check if this is the right thread.
+    // WARNING: must be called with language locked!
     bool compareThread();
 
     // WARNING: must be called with language locked!
@@ -136,7 +137,7 @@ class QObjectProxy : public QObject
 
     bool invokeEventHandler( QEvent *e, EventHandlerData &, QList<QVariant> & args );
 
-    const QHash<int,EventHandlerData> & eventHandlers() { return _eventHandlers; }
+    const QVector<EventHandlerData> & eventHandlers() { return _eventHandlers; }
 
   private Q_SLOTS:
 
@@ -154,7 +155,7 @@ class QObjectProxy : public QObject
     // NOTE: for the reason above we extract SC class name at construction
     QString _scClassName;
 
-    QHash<int,EventHandlerData> _eventHandlers;
+    QVector<EventHandlerData> _eventHandlers;
     QList<QcMethodSignalHandler*> methodSigHandlers;
     QList<QcFunctionSignalHandler*> funcSigHandlers;
     QMutex mutex;
diff --git a/QtCollider/QWidgetProxy.cpp b/QtCollider/QWidgetProxy.cpp
index bcbdbd4..9fb53a8 100644
--- a/QtCollider/QWidgetProxy.cpp
+++ b/QtCollider/QWidgetProxy.cpp
@@ -233,12 +233,7 @@ bool QWidgetProxy::filterEvent( QObject *o, QEvent *e, EventHandlerData &eh, QLi
   // NOTE We assume that qObject need not be checked here, as we wouldn't get events if
   // it wasn't existing
 
-  int type = e->type();
-
-  eh = eventHandlers().value( type );
-  if( eh.type != type ) return false;
-
-  switch( type ) {
+  switch( eh.type ) {
 
     case QEvent::KeyPress:
       return ((_globalEventMask & KeyPress) || eh.enabled)
@@ -490,7 +485,7 @@ void QWidgetProxy::customPaint( QPainter *painter )
   QtCollider::lockLang();
 
   if( QtCollider::beginPainting( painter ) ) {
-    invokeScMethod( s_doDrawFunc, QList<QVariant>(), 0, true );
+    invokeScMethod( SC_SYM(doDrawFunc), QList<QVariant>(), 0, true );
     QtCollider::endPainting();
   }
 
diff --git a/QtCollider/QcApplication.cpp b/QtCollider/QcApplication.cpp
index 85930bf..518914d 100644
--- a/QtCollider/QcApplication.cpp
+++ b/QtCollider/QcApplication.cpp
@@ -30,9 +30,11 @@
 
 #include <QThread>
 #include <QFileOpenEvent>
+#include <QKeyEvent>
 #include <QIcon>
 
 extern bool compiledOK;
+extern const char * gIdeName;
 
 QcApplication * QcApplication::_instance = 0;
 QMutex QcApplication::_mutex;
@@ -56,12 +58,16 @@ static bool QtColliderUseGui(void)
 #endif
 }
 
+// undefine some interfering X11 definitions
+#undef KeyPress
+
 QcApplication::QcApplication( int & argc, char ** argv )
 : QApplication( argc, argv, QtColliderUseGui() )
 {
   _mutex.lock();
   _instance = this;
   _mutex.unlock();
+
   qRegisterMetaType<VariantList>();
   qRegisterMetaType<QcTreeWidget::ItemPtr>();
   qRegisterMetaType< QVector<double> >();
@@ -75,6 +81,8 @@ QcApplication::QcApplication( int & argc, char ** argv )
     icon.addFile(":/icons/sc-cube-16");
     setWindowIcon(icon);
   }
+
+  _handleCmdPeriod = strcmp(gIdeName, "scapp") != 0;
 }
 
 QcApplication::~QcApplication()
@@ -86,18 +94,7 @@ QcApplication::~QcApplication()
 
 bool QcApplication::compareThread()
 {
-  bool same;
-
-  _mutex.lock();
-
-  if( _instance )
-    same = QThread::currentThread() == _instance->thread();
-  else
-    same = false;
-
-  _mutex.unlock();
-
-  return same;
+  return gMainVMGlobals->canCallOS;
 }
 
 void QcApplication::interpret( const QString &str, bool print )
@@ -111,20 +108,45 @@ void QcApplication::interpret( const QString &str, bool print )
       SetObject(&slotRawInterpreter(&g->process->interpreter)->cmdLine, strObj);
       g->gc->GCWrite(slotRawObject(&g->process->interpreter), strObj);
 
-      runLibrary( print ? QtCollider::s_interpretPrintCmdLine : QtCollider::s_interpretCmdLine );
+      runLibrary( print ? SC_SYM(interpretPrintCmdLine) : SC_SYM(interpretCmdLine) );
   }
   QtCollider::unlockLang();
 }
 
-bool QcApplication::event( QEvent *e )
+bool QcApplication::event( QEvent *event )
 {
-  if( e->type() == QEvent::FileOpen ) {
-    // open the file dragged onto the application icon on Mac
-    QFileOpenEvent *fe = static_cast<QFileOpenEvent*>(e);
-    interpret( QString("Document.open(\"%1\")").arg(fe->file()), false );
-
-    return true;
-  }
+    switch (event->type()) {
+    case QEvent::FileOpen: {
+        // open the file dragged onto the application icon on Mac
+        QFileOpenEvent *fe = static_cast<QFileOpenEvent*>(event);
+        interpret( QString("Document.open(\"%1\")").arg(fe->file()), false );
+        event->accept();
+        return true;
+    }
+    default:
+        break;
+    }
+
+    return QApplication::event( event );
+}
 
-  return QApplication::event( e );
+bool QcApplication::notify( QObject * object, QEvent * event )
+{
+    switch (event->type()) {
+    case QEvent::KeyPress: {
+        QKeyEvent *kevent = static_cast<QKeyEvent*>(event);
+        if ( _handleCmdPeriod &&
+             (kevent->key() == Qt::Key_Period) &&
+             (kevent->modifiers() & Qt::ControlModifier) )
+        {
+            static QString cmdPeriodCommand("CmdPeriod.run");
+            interpret(cmdPeriodCommand, false);
+        }
+        break;
+    }
+    default:
+        break;
+    }
+
+    return QApplication::notify( object, event );
 }
diff --git a/QtCollider/QcApplication.h b/QtCollider/QcApplication.h
index a558b12..5736f28 100644
--- a/QtCollider/QcApplication.h
+++ b/QtCollider/QcApplication.h
@@ -52,7 +52,7 @@ class QcApplication : public QApplication
   public:
     QcApplication( int & argc, char ** argv );
     virtual ~QcApplication();
-    static bool compareThread();
+    static bool compareThread(); // NOTE: language must be locked
     static void processEvents() {
       if( _instance ) _instance->_eventProc.work();
     }
@@ -60,13 +60,18 @@ class QcApplication : public QApplication
   public Q_SLOTS:
     void interpret( const QString & code, bool printResult = true );
 
+  protected:
+    virtual bool event( QEvent * );
+    virtual bool notify( QObject *, QEvent * );
+
   private:
-    bool event( QEvent * );
 
     QtCollider::EventProcessor _eventProc;
 
     static QMutex _mutex;
     static QcApplication *_instance;
+
+    bool _handleCmdPeriod;
 };
 
 #endif // QC_APPLICATION_H
diff --git a/QtCollider/QcSignalSpy.h b/QtCollider/QcSignalSpy.h
index 4758aa9..7c68a28 100644
--- a/QtCollider/QcSignalSpy.h
+++ b/QtCollider/QcSignalSpy.h
@@ -95,9 +95,7 @@ int qt_metacall( QMetaObject::Call call, int methodId, void **argData )
     Q_ASSERT( methodId == 0 );
 
     QList<QVariant> args;
-#if QT_VERSION >= 0x040700
     args.reserve( _argTypes.count() );
-#endif
 
     for (int i = 0; i < _argTypes.count(); ++i) {
       QMetaType::Type type = static_cast<QMetaType::Type>(_argTypes.at(i));
@@ -174,7 +172,7 @@ protected:
 
     args.prepend( QVariant::fromValue( _handler ) );
 
-    _proxy->invokeScMethod( s_doFunction, args );
+    _proxy->invokeScMethod( SC_SYM(doFunction), args );
   }
 
   PyrObject * _handler;
diff --git a/QtCollider/QcWidgetFactory.h b/QtCollider/QcWidgetFactory.h
index 11b993a..c963ad1 100644
--- a/QtCollider/QcWidgetFactory.h
+++ b/QtCollider/QcWidgetFactory.h
@@ -25,6 +25,7 @@
 #include "QcObjectFactory.h"
 #include "QWidgetProxy.h"
 
+#include <QMetaMethod>
 #include <QLayout>
 
 template <class QWIDGET>
@@ -60,12 +61,37 @@ public:
       }
     }
 
-    QObjectProxy *prox( proxy(w, scObject) );
-
-    // check if parent arg is valid;
+    // NOTE: performance: it is completely equal if parent is passed
+    // in constructor, or set later, but for some reason it is cheaper
+    // if it is set here, before setting other stuff like geometry, etc.
 
     QObjectProxy *parentProxy( arg[0].value<QObjectProxy*>() );
+    QWidget *parent = parentProxy ? qobject_cast<QWidget*>( parentProxy->object() ) : 0;
 
+    if( parent )
+    {
+      const QMetaObject *mo = parent->metaObject();
+      int mi = mo->indexOfMethod( "addChild(QWidget*)" );
+      bool ok;
+      if( mi >= 0 )
+      {
+          QMetaMethod mm = mo->method( mi );
+          ok = mm.invoke( parent, Q_ARG(QWidget*, w) );
+          if(!ok)
+          {
+              qcErrorMsg("Could not set parent!");
+              delete w;
+              return 0;
+          }
+      }
+      else
+      {
+          if(parent->layout())
+              parent->layout()->addWidget(w);
+          else
+              w->setParent( parent );
+      }
+    }
 
     // set requested geometry
 
@@ -78,21 +104,13 @@ public:
 
     w->setAcceptDrops( true );
 
-    // set parent
+    // ensure visible:
 
-    QWidget *parent = parentProxy ? qobject_cast<QWidget*>( parentProxy->object() ) : 0;
-
-    if( parent ) {
+    if(parent && parent->isVisible()) w->show();
 
-      // Ok, we have the parent, so stuff the child in
-
-      const QMetaObject *mo = parent->metaObject();
-      bool ok = mo->invokeMethod( parent, "addChild", Q_ARG( QWidget*, w ) );
+    // create the proxy:
 
-      if( !ok ) w->setParent( parent );
-
-      w->show();
-    }
+    QObjectProxy *prox( proxy(w, scObject) );
 
     return prox;
   }
diff --git a/QtCollider/Slot.cpp b/QtCollider/Slot.cpp
index 02c401b..a7880b5 100644
--- a/QtCollider/Slot.cpp
+++ b/QtCollider/Slot.cpp
@@ -50,7 +50,7 @@ static QPalette::ColorRole paletteColorRoles[] = {
 
 void Slot::setRect( PyrSlot *slot, const QRectF &r )
 {
-  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, class_Rect, 0, true, true );
+  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, SC_CLASS(Rect), 0, true, true );
   SetObject( slot, obj );
 
   PyrSlot *slots = obj->slots;
@@ -62,7 +62,7 @@ void Slot::setRect( PyrSlot *slot, const QRectF &r )
 
 void Slot::setPoint( PyrSlot *slot, const QPointF &pt )
 {
-  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, class_Point, 0, true, true );
+  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, SC_CLASS(Point), 0, true, true );
   SetObject( slot, obj );
 
   PyrSlot *slots = obj->slots;
@@ -72,7 +72,7 @@ void Slot::setPoint( PyrSlot *slot, const QPointF &pt )
 
 void Slot::setSize( PyrSlot *slot, const QSizeF &sz )
 {
-  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, class_Size, 0, true, true );
+  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, SC_CLASS(Size), 0, true, true );
   SetObject( slot, obj );
 
   PyrSlot *slots = obj->slots;
@@ -89,7 +89,12 @@ void Slot::setString( PyrSlot *slot, const QString& arg )
 
 void Slot::setColor( PyrSlot *slot, const QColor &c )
 {
-  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, class_Color, 0, true, true );
+  if(!c.isValid()) {
+    SetNil(slot);
+    return;
+  }
+
+  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, SC_CLASS(Color), 0, true, true );
   SetObject( slot, obj );
 
   PyrSlot *slots = obj->slots;
@@ -102,7 +107,7 @@ void Slot::setColor( PyrSlot *slot, const QColor &c )
 void Slot::setPalette( PyrSlot *slot, const QPalette &plt )
 {
   PyrGC *gc = gMainVMGlobals->gc;
-  PyrObject *obj = instantiateObject( gc, class_QPalette, 0, true, true );
+  PyrObject *obj = instantiateObject( gc, SC_CLASS(QPalette), 0, true, true );
   SetObject( slot, obj );
 
   QPalette_Init( gMainVMGlobals, obj, plt );
@@ -124,7 +129,7 @@ void Slot::setQObject( PyrSlot *s, QObject *o )
 
 void Slot::setTreeWidgetItem( PyrSlot *s, const SafePtr<QcTreeWidget::Item> & itemPtr )
 {
-  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, class_QTreeViewItem, 0, true, true );
+  PyrObject *obj = instantiateObject( gMainVMGlobals->gc, SC_CLASS(QTreeViewItem), 0, true, true );
   QcTreeWidget::Item::initialize( gMainVMGlobals, obj, itemPtr );
   SetObject( s, obj );
 }
@@ -303,7 +308,7 @@ QString Slot::toString( PyrSlot *slot )
   if( IsSym(slot) ) {
     return QString::fromUtf8( slotRawSymbol(slot)->name );
   }
-  else if( isKindOfSlot( slot, class_String ) ) {
+  else if( isKindOfSlot( slot, class_string ) ) {
     int len = slotRawObject( slot )->size;
     return QString::fromUtf8( slotRawString(slot)->s, len );
   }
@@ -312,7 +317,7 @@ QString Slot::toString( PyrSlot *slot )
 
 QPointF Slot::toPoint( PyrSlot *slot )
 {
-  if( !isKindOfSlot( slot, class_Point ) ) {
+  if( !isKindOfSlot( slot, SC_CLASS(Point) ) ) {
     return QPointF();
   }
   PyrSlot *slots = slotRawObject( slot )->slots;
@@ -325,7 +330,7 @@ QPointF Slot::toPoint( PyrSlot *slot )
 
 QRectF Slot::toRect( PyrSlot *slot )
 {
-  if( !isKindOfSlot( slot, class_Rect ) ) {
+  if( !isKindOfSlot( slot, SC_CLASS(Rect) ) ) {
     return QRectF();
   }
 
@@ -342,7 +347,7 @@ QRectF Slot::toRect( PyrSlot *slot )
 
 QSizeF Slot::toSize( PyrSlot *slot )
 {
-  if( !isKindOfSlot( slot, class_Size ) ) {
+  if( !isKindOfSlot( slot, SC_CLASS(Size) ) ) {
     return QSizeF();
   }
 
@@ -385,7 +390,7 @@ QColor Slot::toColor( PyrSlot *slot )
   PyrObject *obj = slotRawObject(slot);
   PyrClass *klass = obj->classptr;
 
-  if( klass == class_Color )
+  if( klass == SC_CLASS(Color) )
     return asColor(obj);
 
   if( klass == SC_CLASS(Gradient) || klass == SC_CLASS(HiliteGradient) )
@@ -406,7 +411,7 @@ QColor Slot::toColor( PyrSlot *slot )
 
 QFont Slot::toFont( PyrSlot *slot )
 {
-  if( !isKindOfSlot( slot, class_QFont ) )
+  if( !isKindOfSlot( slot, SC_CLASS(QFont) ) )
     return QFont();
 
   PyrSlot *slots = slotRawObject(slot)->slots;
@@ -440,7 +445,7 @@ QFont Slot::toFont( PyrSlot *slot )
 
 QPalette Slot::toPalette( PyrSlot *slot )
 {
-  if( !isKindOfSlot( slot, class_QPalette ) )
+  if( !isKindOfSlot( slot, SC_CLASS(QPalette) ) )
     return QPalette();
 
   QPalette *p = QPALETTE_FROM_OBJECT(slotRawObject(slot));
@@ -449,7 +454,7 @@ QPalette Slot::toPalette( PyrSlot *slot )
 
 VariantList Slot::toVariantList( PyrSlot *slot )
 {
-  if( isKindOfSlot( slot, class_Array ) ) {
+  if( isKindOfSlot( slot, class_array ) ) {
     PyrObject *obj = slotRawObject( slot );
     PyrSlot *slots = obj->slots;
     int size = obj->size;
@@ -458,7 +463,7 @@ VariantList Slot::toVariantList( PyrSlot *slot )
       list.data << Slot::toVariant( slots );
     return list;
   }
-  else if( isKindOfSlot( slot, class_SymbolArray ) ) {
+  else if( isKindOfSlot( slot, class_symbolarray ) ) {
     PyrSymbolArray *symarray = slotRawSymbolArray( slot );
     PyrSymbol **symbols = symarray->symbols;
     int size = symarray->size;
@@ -510,7 +515,7 @@ static QVector<numeric_type> toNumericVector( PyrObject *obj )
 
 QObjectProxy* Slot::toObjectProxy( PyrSlot *slot )
 {
-  if( !isKindOfSlot( slot, class_QObject ) ) return 0;
+  if( !isKindOfSlot( slot, SC_CLASS(QObject) ) ) return 0;
   QObjectProxy *proxy = 0;
   PyrSlot *proxySlot = slotRawObject( slot )->slots;
   if( IsPtr( proxySlot ) ) proxy = (QObjectProxy*) slotRawPtr( proxySlot );
@@ -519,7 +524,7 @@ QObjectProxy* Slot::toObjectProxy( PyrSlot *slot )
 
 QcTreeWidget::ItemPtr Slot::toTreeWidgetItem( PyrSlot *slot )
 {
-  if( !isKindOfSlot( slot, class_QTreeViewItem ) ) return QcTreeWidget::ItemPtr();
+  if( !isKindOfSlot( slot, SC_CLASS(QTreeViewItem) ) ) return QcTreeWidget::ItemPtr();
   PyrSlot *ptrSlot = slotRawObject(slot)->slots+0;
   if( IsPtr( ptrSlot ) ) {
     QcTreeWidget::ItemPtr *safePtr = static_cast<QcTreeWidget::ItemPtr*>( slotRawPtr(ptrSlot) );
@@ -558,38 +563,38 @@ QVariant Slot::toVariant( PyrSlot *slot )
       else if( format == obj_int32 || format == obj_int16 || format == obj_int8 )
         return QVariant::fromValue< QVector<int> >( toNumericVector<int>(obj) );
 
-      else if( isKindOfSlot( slot, class_String ) ) {
+      else if( isKindOfSlot( slot, class_string ) ) {
         return QVariant( toString(slot) );
       }
-      else if( isKindOfSlot( slot, class_Point ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(Point) ) ) {
         return QVariant( toPoint( slot ) );
       }
-      else if( isKindOfSlot( slot, class_Rect ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(Rect) ) ) {
         return QVariant( toRect(slot) );
       }
-      else if( isKindOfSlot( slot, class_Size ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(Size) ) ) {
         return QVariant( toSize(slot) );
       }
-      else if( klass == class_Color ||
+      else if( klass == SC_CLASS(Color) ||
         klass == SC_CLASS(Gradient) ||
         klass == SC_CLASS(HiliteGradient) )
       {
         return QVariant::fromValue<QColor>( toColor(slot) );
       }
-      else if( isKindOfSlot( slot, class_QFont ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(QFont) ) ) {
         return QVariant::fromValue<QFont>( toFont(slot) );
       }
-      else if( isKindOfSlot( slot, class_QPalette ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(QPalette) ) ) {
         return QVariant::fromValue<QPalette>( toPalette(slot) );
       }
-      else if( isKindOfSlot( slot, class_QObject ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(QObject) ) ) {
         proxy = toObjectProxy(slot);
         return QVariant::fromValue<QObjectProxy*>( proxy );
       }
-      else if( isKindOfSlot( slot, class_Array ) || isKindOfSlot( slot, class_SymbolArray ) ) {
+      else if( isKindOfSlot( slot, class_array ) || isKindOfSlot( slot, class_symbolarray ) ) {
         return QVariant::fromValue<VariantList>( toVariantList(slot) );
       }
-      else if( isKindOfSlot( slot, class_QTreeViewItem ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(QTreeViewItem) ) ) {
         return QVariant::fromValue<QcTreeWidget::ItemPtr>( toTreeWidgetItem(slot) );
       }
       else {
@@ -647,34 +652,34 @@ void QtCollider::Variant::setData( PyrSlot *slot )
         _type = qMetaTypeId< QVector<int> >();
         _ptr = new QVector<int>( toNumericVector<int>(obj) );
       }
-      else if( isKindOfSlot( slot, class_String ) ) {
+      else if( isKindOfSlot( slot, class_string ) ) {
         _type = QMetaType::QString;
         _ptr = new QString( toString(slot) );
       }
-      else if( isKindOfSlot( slot, class_Point ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(Point) ) ) {
         _type = QMetaType::QPointF;
         _ptr = new QPointF( toPoint(slot) );
       }
-      else if( isKindOfSlot( slot, class_Rect ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(Rect) ) ) {
         _type = QMetaType::QRectF;
         _ptr = new QRectF( toRect(slot) );
       }
-      else if( isKindOfSlot( slot, class_Size ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(Size) ) ) {
         _type = QMetaType::QSizeF;
         _ptr = new QSizeF( toSize(slot) );
       }
-      else if( klass == class_Color ||
+      else if( klass == SC_CLASS(Color) ||
         klass == SC_CLASS(Gradient) ||
         klass == SC_CLASS(HiliteGradient) )
       {
         _type = QMetaType::QColor;
         _ptr = new QColor( toColor(slot) );
       }
-      else if( isKindOfSlot( slot, class_Array ) || isKindOfSlot( slot, class_SymbolArray ) ) {
+      else if( isKindOfSlot( slot, class_array ) || isKindOfSlot( slot, class_symbolarray ) ) {
         _type = qMetaTypeId<VariantList>();
         _ptr = new VariantList( toVariantList(slot) );
       }
-      else if( isKindOfSlot( slot, class_QObject ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(QObject) ) ) {
         proxy = toObjectProxy(slot);
         if( !proxy ) {
           _type = QMetaType::Void;
@@ -685,7 +690,7 @@ void QtCollider::Variant::setData( PyrSlot *slot )
           _ptr = new QObjectProxy*( proxy );
         }
       }
-      else if( isKindOfSlot( slot, class_QTreeViewItem ) ) {
+      else if( isKindOfSlot( slot, SC_CLASS(QTreeViewItem) ) ) {
         _type = qMetaTypeId<QcTreeWidget::ItemPtr>();
         _ptr = new QcTreeWidget::ItemPtr( toTreeWidgetItem(slot) );
       }
diff --git a/QtCollider/factories.cpp b/QtCollider/factories.cpp
index 97b325b..ffc91d3 100644
--- a/QtCollider/factories.cpp
+++ b/QtCollider/factories.cpp
@@ -20,6 +20,11 @@
 ************************************************************************/
 
 #include "QcObjectFactory.h"
+#include "QcWidgetFactory.h"
+
+#include <QLabel>
+
+QC_DECLARE_QWIDGET_FACTORY( QLabel );
 
 namespace QtCollider {
 
diff --git a/QtCollider/hacks/hacks_x11.cpp b/QtCollider/hacks/hacks_x11.cpp
index d5caea5..9c3989a 100644
--- a/QtCollider/hacks/hacks_x11.cpp
+++ b/QtCollider/hacks/hacks_x11.cpp
@@ -36,7 +36,8 @@
 
 #define MAX_PROPERTY_VALUE_LEN 4096
 
-#define p_verbose
+static inline void p_verbose(...)
+{}
 
 #define gchar char
 #define gboolean bool
diff --git a/QtCollider/layouts/classic_layouts.cpp b/QtCollider/layouts/classic_layouts.cpp
deleted file mode 100644
index 302fa47..0000000
--- a/QtCollider/layouts/classic_layouts.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/************************************************************************
-*
-* Copyright 2010-2011 Jakob Leben (jakob.leben at gmail.com)
-*
-* This file is part of SuperCollider Qt GUI.
-*
-* 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 3 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, see <http://www.gnu.org/licenses/>.
-*
-************************************************************************/
-
-#include <QVariant>
-#include <QWidget>
-
-#include "classic_layouts.hpp"
-#include "../Common.h"
-
-using namespace QtCollider;
-
-VSizePolicy QcLayoutItem::vSizePolicy() {
-  QWidget *w = qLayoutItem->widget();
-  if( !w ) return StickTop;
-  QVariant var = w->property( "_qc_vSizePolicy" );
-  if( !var.isValid() ) return StickTop;
-  return (VSizePolicy) var.toInt();
-}
-
-HSizePolicy QcLayoutItem::hSizePolicy() {
-  QWidget *w = qLayoutItem->widget();
-  if( !w ) return StickLeft;
-  QVariant var = w->property( "_qc_hSizePolicy" );
-  if( !var.isValid() ) return StickLeft;
-  return (HSizePolicy) var.toInt();
-}
-
-QRect QcLayoutItem::geometry () {
-  QWidget *widget = qLayoutItem->widget();
-  if( widget )
-    return widget->geometry();
-  else
-    return qLayoutItem->geometry();
-}
-
-void QcLayoutItem::setGeometry( const QRect &r ) {
-  QWidget *widget = qLayoutItem->widget();
-  if( widget )
-    widget->setGeometry( r );
-  else
-    qLayoutItem->setGeometry( r );
-}
-
-QcAbstractLayout::~QcAbstractLayout() {
-  QLayoutItem *item;
-  while((item = takeAt(0)))
-    delete item;
-}
-
-int QcAbstractLayout::count() const {
-  return items.size();
-}
-
-void QcAbstractLayout::addItem( QLayoutItem* item ) {
-    qcDebugMsg(2,"QcAbstractLayout::addItem");
-    QWidget *w = item->widget();
-    items.append( new QcLayoutItem( item ) );
-}
-
-QLayoutItem * QcAbstractLayout::itemAt ( int index ) const {
-  if( index >= items.size() ) return 0;
-  return items[index]->qLayoutItem;
-}
-
-QLayoutItem * QcAbstractLayout::takeAt ( int index ) {
-  if( index < items.size() ) {
-    QcLayoutItem *scItem = items.takeAt(index);
-    QLayoutItem *item = scItem->qLayoutItem;
-    delete scItem;
-    return item;
-  }
-  else return 0;
-}
-
-QSize QcAbstractLayout::sizeHint () const {
-  return QSize();
-}
-
-/////////////////////////// IMPLEMENTATIONS ////////////////////////////////////
-
-void QcDefaultLayout::setGeometry ( const QRect & r )
-{
-  if( !initialized ) {
-    initialized = true;
-    geom = r;
-    return;
-  }
-  qcDebugMsg(2,"QcDefaultLayout::setGeometry");
-  QPoint dPos = r.topLeft() - geom.topLeft();
-  QSize dSize = r.size() - geom.size();//_geometry.size();
-  //qcDebugMsg(2,"dSize: %i,%i", dSize.width(), dSize.height() );
-  Q_FOREACH( QcLayoutItem* item, items ) {
-    QRect g = item->geometry();
-    int x = g.x();
-    int y = g.y();
-    int w = g.width();
-    int h = g.height();
-    //qcDebugMsg(2,"geom: %i %i %i %i", x,y,w,h);
-
-    if( !dPos.isNull() ) {
-      x += dPos.x();
-      y += dPos.y();
-    }
-
-    if( !dSize.isNull() ) {
-      if( item->hSizePolicy() == QtCollider::StickRight )
-        x += dSize.width();
-      if( item->vSizePolicy() == QtCollider::StickBottom )
-        y += dSize.height();
-      if( item->hSizePolicy() == QtCollider::HStretch )
-        w += dSize.width();
-      if( item->vSizePolicy() == QtCollider::VStretch )
-        h += dSize.height();
-    }
-
-    item->setGeometry( QRect(x, y, w, h) );
-  }
-  geom = r;
-}
-
-void QcHLayout::setGeometry ( const QRect & geom )
-{
-  int varWidth = geom.width();
-  int i = items.size();
-  Q_FOREACH( QcLayoutItem *item, items ) {
-    QRect r = item->geometry();
-    if( item->hSizePolicy() != QtCollider::HStretch ) {
-      varWidth -= r.width();
-      i--;
-      if( varWidth < 0 ) {
-        varWidth = 0;
-        break;
-      }
-    }
-  }
-  int partWidth = i > 0 && varWidth > 0 ? varWidth / i : 0;
-  int x = 0;
-  Q_FOREACH( QcLayoutItem *item, items ) {
-    QRect r = item->geometry();
-    r.setHeight( geom.height() );
-    r.moveTo( x, geom.top() );
-    if( item->hSizePolicy() == QtCollider::HStretch )
-      r.setWidth( partWidth );
-    x += r.width();
-
-    item->setGeometry( r );
-  }
-}
-
-void QcVLayout::setGeometry ( const QRect & geom )
-{
-  int varHeight = geom.height();
-  int i = items.size();
-  Q_FOREACH( QcLayoutItem *item, items ) {
-    QRect r = item->geometry();
-    if( item->vSizePolicy() != QtCollider::VStretch ) {
-      varHeight -= r.height();
-      i--;
-      if( varHeight < 0 ) {
-        varHeight = 0;
-        break;
-      }
-    }
-  }
-  int partHeight = i > 0 && varHeight > 0 ? varHeight / i : 0;
-  int y = 0;
-  Q_FOREACH( QcLayoutItem *item, items ) {
-    QRect r = item->geometry();
-    r.setWidth( geom.width() );
-    r.moveTo( geom.left(), y );
-    if( item->vSizePolicy() == QtCollider::VStretch )
-      r.setHeight( partHeight );
-    y += r.height();
-
-    item->setGeometry( r );
-  }
-}
diff --git a/QtCollider/layouts/classic_layouts.hpp b/QtCollider/layouts/classic_layouts.hpp
index 125dd50..3ec642d 100644
--- a/QtCollider/layouts/classic_layouts.hpp
+++ b/QtCollider/layouts/classic_layouts.hpp
@@ -22,11 +22,12 @@
 #ifndef QC_CLASSIC_LAYOUTS_H
 #define QC_CLASSIC_LAYOUTS_H
 
-#include <QLayout>
-#include <QLayoutItem>
-#include <QList>
+#include <QWidget>
+#include <QResizeEvent>
+#include "../Common.h"
 
-namespace QtCollider {
+namespace QtCollider
+{
 
 enum HSizePolicy {
   StickLeft = 1,
@@ -40,59 +41,189 @@ enum VSizePolicy {
   StickBottom
 };
 
-} // namespace
-
-class QcLayoutItem {
-  public:
-    QcLayoutItem( QLayoutItem *i )
-    : qLayoutItem( i )
-    {}
-
-    QtCollider::VSizePolicy vSizePolicy();
-    QtCollider::HSizePolicy hSizePolicy();
-    QRect geometry ();
-    void setGeometry ( const QRect & r );
-
-    QLayoutItem *qLayoutItem;
-};
+static VSizePolicy vSizePolicy( QWidget *w )
+{
+  QVariant var = w->property( "_qc_vSizePolicy" );
+  if( !var.isValid() ) return StickTop;
+  return (VSizePolicy) var.toInt();
+}
 
-class QcAbstractLayout : public QLayout {
+static HSizePolicy hSizePolicy( QWidget *w )
+{
+  QVariant var = w->property( "_qc_hSizePolicy" );
+  if( !var.isValid() ) return StickLeft;
+  return (HSizePolicy) var.toInt();
+}
 
-  public:
-    QcAbstractLayout( QWidget *parent = 0 ) : QLayout( parent ) {}
-    virtual ~QcAbstractLayout();
-    int count() const;
-    void addItem( QLayoutItem* item );
-    QLayoutItem * itemAt ( int index ) const;
-    QLayoutItem * takeAt ( int index );
-    QSize sizeHint () const;
 
-  protected:
-    virtual void setGeometry ( const QRect & r ) = 0;
-    QList<QcLayoutItem*> items;
+class DefaultLayout
+{
+public:
+  DefaultLayout( QWidget * w ): parent(w), initialized(false) {}
+
+  void resize( QResizeEvent *e )
+  {
+    QRect r;
+    r.setSize(e->size());
+
+    if( !initialized ) {
+      initialized = true;
+      geom = r;
+      return;
+    }
+
+    QPoint dPos = r.topLeft() - geom.topLeft();
+    QSize dSize = r.size() - geom.size();
+
+    const QObjectList &children = parent->children();
+
+    Q_FOREACH( QObject *o, children )
+    {
+      if(!o->isWidgetType())
+        continue;
+
+      QWidget *child = static_cast<QWidget*>(o);
+
+      QRect g = child->geometry();
+      int x = g.x();
+      int y = g.y();
+      int w = g.width();
+      int h = g.height();
+
+      if( !dPos.isNull() ) {
+        x += dPos.x();
+        y += dPos.y();
+      }
+
+      if( !dSize.isNull() ) {
+        if( hSizePolicy(child) == QtCollider::StickRight )
+          x += dSize.width();
+        if( vSizePolicy(child) == QtCollider::StickBottom )
+          y += dSize.height();
+        if( hSizePolicy(child) == QtCollider::HStretch )
+          w += dSize.width();
+        if( vSizePolicy(child) == QtCollider::VStretch )
+          h += dSize.height();
+      }
+
+      child->setGeometry( QRect(x, y, w, h) );
+    }
+
+    geom = r;
+  }
+
+private:
+  QWidget *parent;
+  bool initialized;
+  QRect geom;
 };
 
-/////////////////////////// IMPLEMENTATIONS //////////////////////////////
+class HLayout
+{
+public:
+  HLayout( QWidget * w ): parent(w) {}
 
-class QcDefaultLayout : public QcAbstractLayout {
-  public:
-    QcDefaultLayout() : initialized( false ) {}
-  private:
-    void setGeometry ( const QRect & r );
+  void resize( QResizeEvent *e )
+  {
     QRect geom;
-    bool initialized;
+    geom.setSize(e->size());
+
+    const QObjectList &children = parent->children();
+    int varWidth = geom.width();
+    int i = 0;
+
+    Q_FOREACH( QObject *o, children )
+    {
+      if(!o->isWidgetType())  continue;
+      QWidget *w = static_cast<QWidget*>(o);
+
+      if( hSizePolicy(w) == QtCollider::HStretch ) {
+        ++i;
+      }
+      else {
+        QRect r = w->geometry();
+        varWidth -= r.width();
+        if( varWidth < 0 )
+          break;
+      }
+    }
+
+    int partWidth = i > 0 && varWidth > 0 ? varWidth / i : 0;
+    int x = 0;
+
+    Q_FOREACH( QObject *o, children )
+    {
+      if(!o->isWidgetType())  continue;
+      QWidget *w = static_cast<QWidget*>(o);
+
+      QRect r = w->geometry();
+      r.setHeight( geom.height() );
+      r.moveTo( x, geom.top() );
+      if( hSizePolicy(w) == QtCollider::HStretch )
+        r.setWidth( partWidth );
+      x += r.width();
+
+      w->setGeometry( r );
+    }
+  }
+
+private:
+  QWidget *parent;
 };
 
-class QcHLayout : public QcAbstractLayout
+class VLayout
 {
-  private:
-    void setGeometry ( const QRect & r );
-};
+public:
+  VLayout( QWidget * w ): parent(w) {}
 
-class QcVLayout : public QcAbstractLayout
-{
-  private:
-    void setGeometry ( const QRect & r );
+  void resize( QResizeEvent *e )
+  {
+    QRect geom;
+    geom.setSize(e->size());
+
+    const QObjectList &children = parent->children();
+    int varHeight = geom.height();
+    int i = 0;
+
+    Q_FOREACH( QObject *o, children )
+    {
+      if(!o->isWidgetType())  continue;
+      QWidget *w = static_cast<QWidget*>(o);
+
+      if( vSizePolicy(w) == QtCollider::VStretch ) {
+        ++i;
+      }
+      else {
+        QRect r = w->geometry();
+        varHeight -= r.height();
+        if( varHeight < 0 )
+          break;
+      }
+    }
+
+    int partHeight = i > 0 && varHeight > 0 ? varHeight / i : 0;
+    int y = 0;
+
+    Q_FOREACH( QObject *o, children )
+    {
+      if(!o->isWidgetType())  continue;
+      QWidget *w = static_cast<QWidget*>(o);
+
+      QRect r = w->geometry();
+      r.setWidth( geom.width() );
+      r.moveTo( geom.left(), y );
+      if( vSizePolicy(w) == QtCollider::VStretch )
+        r.setHeight( partHeight );
+      y += r.height();
+
+      w->setGeometry( r );
+    }
+  }
+
+private:
+  QWidget *parent;
 };
 
+} // namespace QtCollider
+
 #endif // QC_CLASSIC_LAYOUTS_H
diff --git a/QtCollider/layouts/layouts.cpp b/QtCollider/layouts/layouts.cpp
index 67e5b85..e98f29c 100644
--- a/QtCollider/layouts/layouts.cpp
+++ b/QtCollider/layouts/layouts.cpp
@@ -24,6 +24,7 @@
 QC_DECLARE_QOBJECT_FACTORY(QcHBoxLayout);
 QC_DECLARE_QOBJECT_FACTORY(QcVBoxLayout);
 QC_DECLARE_QOBJECT_FACTORY(QcGridLayout);
+QC_DECLARE_QOBJECT_FACTORY(QcStackLayout);
 
 void QcGridLayout::addItem( const VariantList &dataList )
 {
diff --git a/QtCollider/layouts/layouts.hpp b/QtCollider/layouts/layouts.hpp
index f030743..395296a 100644
--- a/QtCollider/layouts/layouts.hpp
+++ b/QtCollider/layouts/layouts.hpp
@@ -22,7 +22,10 @@
 #ifndef QC_LAYOUTS_H
 #define QC_LAYOUTS_H
 
+#include "stack_layout.hpp"
+#include "../Common.h"
 #include "../QcObjectFactory.h"
+#include "../QObjectProxy.h"
 
 #include <QHBoxLayout>
 #include <QVBoxLayout>
@@ -252,4 +255,29 @@ public:
   }
 };
 
+class QcStackLayout : public QcLayout<QtCollider::StackLayout>
+{
+  Q_OBJECT
+  Q_PROPERTY( VariantList margins READ margins WRITE setMargins )
+
+public:
+  QcStackLayout() {}
+
+  Q_INVOKABLE QcStackLayout( const VariantList &items )
+  {
+    Q_FOREACH(QVariant var, items.data) {
+      QObjectProxy *p = var.value<QObjectProxy*>();
+      if(!p) return;
+      QWidget *w = qobject_cast<QWidget*>( p->object() );
+      if(w) addWidget(w);
+    }
+  }
+
+  Q_INVOKABLE void insertWidget( int index, QObjectProxy *proxy )
+  {
+    if (QWidget *w = qobject_cast<QWidget*>( proxy->object() ))
+      QtCollider::StackLayout::insertWidget(index, w);
+  }
+};
+
 #endif
diff --git a/QtCollider/layouts/stack_layout.cpp b/QtCollider/layouts/stack_layout.cpp
index 6a1f4c5..9aee8af 100644
--- a/QtCollider/layouts/stack_layout.cpp
+++ b/QtCollider/layouts/stack_layout.cpp
@@ -27,38 +27,25 @@
 
 #include <QWidget>
 
-QC_DECLARE_QOBJECT_FACTORY(QcStackLayout);
+namespace QtCollider {
 
-QcStackLayout::QcStackLayout() :
+StackLayout::StackLayout() :
   _index(-1),
   _mode(StackOne),
   _gotParent(false)
 {}
 
-QcStackLayout::QcStackLayout( const VariantList &items ) :
-  _index(-1),
-  _mode(StackOne),
-  _gotParent(false)
-{
-  Q_FOREACH(QVariant var, items.data) {
-    QObjectProxy *p = var.value<QObjectProxy*>();
-    if(!p) return;
-    QWidget *w = qobject_cast<QWidget*>( p->object() );
-    if(w) addWidget(w);
-  }
-}
-
-QcStackLayout::~QcStackLayout()
+StackLayout::~StackLayout()
 {
   qDeleteAll(_list);
 }
 
-int QcStackLayout::addWidget(QWidget *widget)
+int StackLayout::addWidget(QWidget *widget)
 {
   return insertWidget(_list.count(), widget);
 }
 
-int QcStackLayout::insertWidget(int index, QWidget *widget)
+int StackLayout::insertWidget(int index, QWidget *widget)
 {
     addChildWidget(widget);
     index = qMin(index, _list.count());
@@ -79,12 +66,12 @@ int QcStackLayout::insertWidget(int index, QWidget *widget)
     return index;
 }
 
-QLayoutItem *QcStackLayout::itemAt(int index) const
+QLayoutItem *StackLayout::itemAt(int index) const
 {
     return _list.value(index);
 }
 
-QLayoutItem *QcStackLayout::takeAt(int index)
+QLayoutItem *StackLayout::takeAt(int index)
 {
     if (index < 0 || index >= _list.size())
         return 0;
@@ -103,7 +90,7 @@ QLayoutItem *QcStackLayout::takeAt(int index)
     return item;
 }
 
-void QcStackLayout::setCurrentIndex(int index)
+void StackLayout::setCurrentIndex(int index)
 {
     QWidget *prev = currentWidget();
     QWidget *next = widget(index);
@@ -159,65 +146,87 @@ void QcStackLayout::setCurrentIndex(int index)
     }
     if (reenableUpdates)
         parent->setUpdatesEnabled(true);
+
+    if (_mode == StackOne)
+      // expandingDirections() might have changed, so invalidate():
+      invalidate();
 }
 
-int QcStackLayout::currentIndex() const
+int StackLayout::currentIndex() const
 {
     return _index;
 }
 
-void QcStackLayout::setCurrentWidget(QWidget *widget)
+void StackLayout::setCurrentWidget(QWidget *widget)
 {
     int index = indexOf(widget);
     if (index == -1) {
-        qWarning("QcStackLayout::setCurrentWidget: Widget %p not contained in stack", widget);
+        qWarning("StackLayout::setCurrentWidget: Widget %p not contained in stack", widget);
         return;
     }
     setCurrentIndex(index);
 }
 
-QWidget *QcStackLayout::currentWidget() const
+QWidget *StackLayout::currentWidget() const
 {
     return _index >= 0 ? _list.at(_index)->widget() : 0;
 }
 
-QWidget *QcStackLayout::widget(int index) const
+QWidget *StackLayout::widget(int index) const
 {
      if (index < 0 || index >= _list.size())
         return 0;
     return _list.at(index)->widget();
 }
 
-int QcStackLayout::count() const
+int StackLayout::count() const
 {
     return _list.size();
 }
 
-void QcStackLayout::addItem(QLayoutItem *item)
+void StackLayout::addItem(QLayoutItem *item)
 {
     QWidget *widget = item->widget();
     if (widget) {
         addWidget(widget);
         delete item;
     } else {
-        qWarning("QcStackLayout::addItem: Only widgets can be added");
+        qWarning("StackLayout::addItem: Only widgets can be added");
     }
 }
 
-QSize QcStackLayout::sizeHint() const
+QSize StackLayout::sizeHint() const
 {
     QSize s(0, 0);
-    int n = _list.count();
-
-    for (int i = 0; i < n; ++i)
-        if (QWidget *widget = _list.at(i)->widget()) {
-            QSize ws(widget->sizeHint());
-            if (widget->sizePolicy().horizontalPolicy() == QSizePolicy::Ignored)
-                ws.setWidth(0);
-            if (widget->sizePolicy().verticalPolicy() == QSizePolicy::Ignored)
-                ws.setHeight(0);
-            s = s.expandedTo(ws);
-        }
+
+    switch (_mode)
+    {
+    case StackOne:
+        if (_index >= 0)
+            if (QWidget *w = _list.at(_index)->widget()) {
+                if (w->sizePolicy().horizontalPolicy() != QSizePolicy::Ignored)
+                  s.setWidth(w->sizeHint().width());
+                if (w->sizePolicy().verticalPolicy() != QSizePolicy::Ignored)
+                  s.setHeight(w->sizeHint().height());
+            }
+        break;
+
+    case StackAll:
+    {
+        int n = _list.count();
+        for (int i = 0; i < n; ++i)
+            if (QWidget *w = _list.at(i)->widget()) {
+                QSize ws(w->sizeHint());
+                if (w->sizePolicy().horizontalPolicy() == QSizePolicy::Ignored)
+                    ws.setWidth(0);
+                if (w->sizePolicy().verticalPolicy() == QSizePolicy::Ignored)
+                    ws.setHeight(0);
+                s = s.expandedTo(ws);
+            }
+        break;
+    }
+    }
+
     return s;
 }
 
@@ -251,21 +260,60 @@ static QSize smartMinSize(const QSize &sizeHint, const QSize &minSizeHint,
     return s.expandedTo(QSize(0,0));
 }
 
-QSize QcStackLayout::minimumSize() const
+QSize StackLayout::minimumSize() const
 {
     QSize s(0, 0);
-    int n = _list.count();
-
-    for (int i = 0; i < n; ++i)
-        if (QWidget *w = _list.at(i)->widget())
-            s = s.expandedTo(
-              smartMinSize(w->sizeHint(), w->minimumSizeHint(),
-                            w->minimumSize(), w->maximumSize(),
-                            w->sizePolicy()));
+
+    switch (_mode)
+    {
+    case StackOne:
+        if (_index >= 0)
+            if (QWidget *w = _list.at(_index)->widget())
+                s = smartMinSize(w->sizeHint(), w->minimumSizeHint(),
+                                 w->minimumSize(), w->maximumSize(),
+                                 w->sizePolicy());
+        break;
+
+    case StackAll:
+    {
+        int n = _list.count();
+        for (int i = 0; i < n; ++i)
+            if (QWidget *w = _list.at(i)->widget())
+                s = s.expandedTo(
+                  smartMinSize(w->sizeHint(), w->minimumSizeHint(),
+                               w->minimumSize(), w->maximumSize(),
+                               w->sizePolicy()));
+        break;
+    }
+    }
+
     return s;
 }
 
-void QcStackLayout::setGeometry(const QRect &rect)
+Qt::Orientations StackLayout::expandingDirections () const
+{
+    Qt::Orientations directions;
+
+    switch (_mode)
+    {
+    case StackOne:
+        directions = _index >= 0 ? _list.at(_index)->expandingDirections() : (Qt::Orientations) 0;
+        break;
+
+    case StackAll:
+    {
+        Qt::Orientations directions = 0;
+        int n = _list.count();
+        for (int i = 0; i < n; ++i)
+            directions |= _list.at(i)->expandingDirections();
+        break;
+    }
+    }
+
+    return directions;
+}
+
+void StackLayout::setGeometry(const QRect &rect)
 {
     switch (_mode) {
     case StackOne:
@@ -281,12 +329,12 @@ void QcStackLayout::setGeometry(const QRect &rect)
     }
 }
 
-QcStackLayout::StackingMode QcStackLayout::stackingMode() const
+StackLayout::StackingMode StackLayout::stackingMode() const
 {
     return _mode;
 }
 
-void QcStackLayout::setStackingMode(StackingMode stackingMode)
+void StackLayout::setStackingMode(StackingMode stackingMode)
 {
     if (_mode == stackingMode)
         return;
@@ -320,9 +368,11 @@ void QcStackLayout::setStackingMode(StackingMode stackingMode)
     }
         break;
     }
+
+    invalidate();
 }
 
-void QcStackLayout::invalidate()
+void StackLayout::invalidate()
 {
   QWidget *pw = parentWidget();
 
@@ -364,3 +414,5 @@ void QcStackLayout::invalidate()
 
   QLayout::invalidate();
 }
+
+} // namespace QtCollider
diff --git a/QtCollider/layouts/stack_layout.hpp b/QtCollider/layouts/stack_layout.hpp
index 2305352..fa24e7f 100644
--- a/QtCollider/layouts/stack_layout.hpp
+++ b/QtCollider/layouts/stack_layout.hpp
@@ -23,41 +23,30 @@
 *
 ************************************************************************/
 
-#ifndef QC_STACK_LAYOUT_HPP
-#define QC_STACK_LAYOUT_HPP
-
-#include "layouts.hpp"
-#include "../Common.h"
-#include "../QObjectProxy.h"
+#ifndef QT_COLLIDER_STACK_LAYOUT_HPP_INCLUDED
+#define QT_COLLIDER_STACK_LAYOUT_HPP_INCLUDED
 
 #include <QLayout>
 #include <QList>
 
-class QcStackLayout : public QcLayout<QLayout>
+namespace QtCollider {
+
+class StackLayout : public QLayout
 {
     Q_OBJECT
     Q_ENUMS(StackingMode)
-    Q_PROPERTY( VariantList margins READ margins WRITE setMargins )
     Q_PROPERTY( int currentIndex READ currentIndex WRITE setCurrentIndex )
     Q_PROPERTY( StackingMode stackingMode READ stackingMode WRITE setStackingMode )
     Q_PROPERTY( int count READ count )
 
 public:
-  Q_INVOKABLE QcStackLayout( const VariantList &items );
-
-  Q_INVOKABLE void insertWidget( int index, QObjectProxy *proxy ) {
-    QWidget *w = qobject_cast<QWidget*>( proxy->object() );
-    if( w ) insertWidget(index, w);
-  }
-
-public:
     enum StackingMode {
         StackOne,
         StackAll
     };
 
-    QcStackLayout();
-    ~QcStackLayout();
+    StackLayout();
+    ~StackLayout();
 
     int addWidget(QWidget *w);
     int insertWidget(int index, QWidget *w);
@@ -81,6 +70,7 @@ public:
     QLayoutItem *takeAt(int);
     QSize sizeHint() const;
     QSize minimumSize() const;
+    Qt::Orientations expandingDirections () const;
     void setGeometry(const QRect &rect);
 
     virtual void invalidate();
@@ -92,4 +82,6 @@ private:
     bool _gotParent;
 };
 
-#endif // QC_STACK_LAYOUT_HPP
+} // namespace QtCollider
+
+#endif // QT_COLLIDER_STACK_LAYOUT_HPP_INCLUDED
diff --git a/QtCollider/primitives/prim_QObject.cpp b/QtCollider/primitives/prim_QObject.cpp
index eb949cf..75e1b5f 100644
--- a/QtCollider/primitives/prim_QObject.cpp
+++ b/QtCollider/primitives/prim_QObject.cpp
@@ -50,8 +50,10 @@ int QObject_Finalize( struct VMGlobals *, struct PyrObject * );
 
 QC_LANG_PRIMITIVE( QObject_New, 2, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
+  if(NotSym(a+0)) return errWrongType;
+
   PyrObject *scObject = slotRawObject( r );
-  QString qtClassName = Slot::toString( a+0 );
+  QString qtClassName = QString(slotRawSymbol(a+0)->name);
 
   qcSCObjectDebugMsg( 1, scObject, QString("CREATE: %2").arg(qtClassName) );
 
@@ -70,7 +72,7 @@ QC_LANG_PRIMITIVE( QObject_New, 2, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 
   PyrSlot *slotArg = a+1;
 
-  if( isKindOfSlot( slotArg, class_Array ) ) {
+  if( isKindOfSlot( slotArg, class_array ) ) {
     PyrObject *array = slotRawObject( slotArg );
     PyrSlot *s = array->slots;
     int size = array->size;
@@ -124,17 +126,6 @@ int QObject_Finalize( struct VMGlobals *, struct PyrObject *obj )
   return errNone;
 }
 
-QC_LANG_PRIMITIVE( QObject_ManuallyFinalize, 0, PyrSlot *r, PyrSlot *a, VMGlobals *g )
-{
-  qcSCObjectDebugMsg( 1, slotRawObject(r), "MANUAL FINALIZE" );
-
-  // WARNING we assume that proxy's deletion will be deferred until any
-  // language shutdown code using it will have been executed, so any
-  // shutdown code is safe.
-
-  return QObject_Finalize( g, slotRawObject(r) );
-}
-
 QC_LANG_PRIMITIVE( QObject_SetParent, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
   QObjectProxy *proxy = QOBJECT_FROM_SLOT( r );
@@ -202,7 +193,9 @@ QC_LANG_PRIMITIVE( QMetaObject_Properties, 0, PyrSlot *r, PyrSlot *a, VMGlobals
 {
   if( !QcApplication::compareThread() ) return QtCollider::wrongThreadError();
 
-  QString className = Slot::toString( slotRawObject(r)->slots+0 );
+  PyrSlot *sClassName = slotRawObject(r)->slots+0;
+  if(NotSym(sClassName)) return errWrongType;
+  QString className( slotRawSymbol(sClassName)->name );
 
   QcAbstractFactory *f = QtCollider::factories().value( className );
 
@@ -221,7 +214,9 @@ QC_LANG_PRIMITIVE( QMetaObject_Methods, 3, PyrSlot *r, PyrSlot *a, VMGlobals *g
 {
   if( !QcApplication::compareThread() ) return QtCollider::wrongThreadError();
 
-  QString className = Slot::toString(slotRawObject(r)->slots+0);
+  PyrSlot *sClassName = slotRawObject(r)->slots+0;
+  if(NotSym(sClassName)) return errWrongType;
+  QString className( slotRawSymbol(sClassName)->name );
 
   QcAbstractFactory *f = QtCollider::factories().value( className );
 
@@ -373,54 +368,57 @@ QC_LANG_PRIMITIVE( QObject_SetEventHandlerEnabled, 2, PyrSlot *r, PyrSlot *a, VM
 
 QC_LANG_PRIMITIVE( QObject_ConnectMethod, 3, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
-  QString signal = Slot::toString( a+0 );
-  if( signal.isEmpty() || NotSym( a+1 ) ) return errWrongType;
-  PyrSymbol *handler = 0; slotSymbolVal( a+1, &handler );
+  if( NotSym(a+0) || NotSym( a+1 ) ) return errWrongType;
+
+  PyrSymbol *signal = slotRawSymbol(a+0);
+  PyrSymbol *handler = slotRawSymbol(a+1);
   Qt::ConnectionType ctype =
     Slot::toBool( a+2 ) ? Qt::DirectConnection : Qt::QueuedConnection;
 
   qcSCObjectDebugMsg( 1, slotRawObject(r),
-                      QString("CONNECT METHOD: %1 -> %2 [%3]").arg(signal).arg(handler->name)
+                      QString("CONNECT METHOD: %1 -> %2 [%3]").arg(signal->name).arg(handler->name)
                       .arg( IsTrue(a+2) ? "SYNC" : "ASYNC") );
 
   QObjectProxy *proxy = QOBJECT_FROM_SLOT( r );
 
   if( !proxy->compareThread() ) return QtCollider::wrongThreadError();
 
-  bool ok = proxy->connectMethod( signal.toAscii().constData(), handler, ctype );
+  bool ok = proxy->connectMethod( signal->name, handler, ctype );
 
   return ok ? errNone : errFailed;
 }
 
 QC_LANG_PRIMITIVE( QObject_DisconnectMethod, 2, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
-  QString signal = Slot::toString( a+0 );
-  if( signal.isEmpty() || NotSym( a+1 ) ) return errWrongType;
-  PyrSymbol *handler = 0; slotSymbolVal( a+1, &handler );
+  if( NotSym(a+0) || NotSym( a+1 ) ) return errWrongType;
+
+  PyrSymbol *signal = slotRawSymbol(a+0);
+  PyrSymbol *handler = slotRawSymbol(a+1);
 
   qcSCObjectDebugMsg( 1, slotRawObject(r),
-                      QString("DISCONNECT METHOD: %1 -> %2").arg(signal).arg(handler->name) );
+                      QString("DISCONNECT METHOD: %1 -> %2").arg(signal->name).arg(handler->name) );
 
   QObjectProxy *proxy = QOBJECT_FROM_SLOT( r );
 
   if( !proxy->compareThread() ) return QtCollider::wrongThreadError();
 
-  bool ok = proxy->disconnectMethod( signal.toAscii().constData(), handler );
+  bool ok = proxy->disconnectMethod( signal->name, handler );
 
   return ok ? errNone : errFailed;
 }
 
 QC_LANG_PRIMITIVE( QObject_ConnectObject, 3, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
-  QString signal = Slot::toString( a+0 );
-  if( signal.isEmpty() || NotObj( a+1 ) ) return errWrongType;
+  if( NotSym(a+0) || NotObj( a+1 ) ) return errWrongType;
+
+  PyrSymbol *signal = slotRawSymbol(a+0);
   PyrObject *handlerObj = slotRawObject( a+1 );
   Qt::ConnectionType ctype =
     Slot::toBool( a+2 ) ? Qt::DirectConnection : Qt::QueuedConnection;
 
   qcSCObjectDebugMsg( 1, slotRawObject(r),
                       QString("CONNECT OBJECT: %1 -> %2 [%3]")
-                      .arg(signal)
+                      .arg( signal->name )
                       .arg( slotRawSymbol( &handlerObj->classptr->name )->name )
                       .arg( IsTrue(a+2) ? "SYNC" : "ASYNC") );
 
@@ -428,25 +426,26 @@ QC_LANG_PRIMITIVE( QObject_ConnectObject, 3, PyrSlot *r, PyrSlot *a, VMGlobals *
 
   if( !proxy->compareThread() ) return QtCollider::wrongThreadError();
 
-  bool ok = proxy->connectObject( signal.toAscii().constData(), handlerObj, ctype );
+  bool ok = proxy->connectObject( signal->name, handlerObj, ctype );
 
   return ok ? errNone : errFailed;
 }
 
 QC_LANG_PRIMITIVE( QObject_DisconnectObject, 2, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
-  QString signal = Slot::toString( a+0 );
-  if( signal.isEmpty() || NotObj( a+1 ) ) return errWrongType;
+  if( NotSym(a+0) || NotObj( a+1 ) ) return errWrongType;
+
+  PyrSymbol *signal = slotRawSymbol(a+0);
   PyrObject *handlerObj = slotRawObject( a+1 );
 
   qcSCObjectDebugMsg( 1, slotRawObject(r),
-                      QString("DISCONNECT OBJECT: %1").arg(signal) );
+                      QString("DISCONNECT OBJECT: %1").arg(signal->name) );
 
   QObjectProxy *proxy = QOBJECT_FROM_SLOT( r );
 
   if( !proxy->compareThread() ) return QtCollider::wrongThreadError();
 
-  bool ok = proxy->disconnectObject( signal.toAscii().constData(), handlerObj );
+  bool ok = proxy->disconnectObject( signal->name, handlerObj );
 
   return ok ? errNone : errFailed;
 }
@@ -454,7 +453,7 @@ QC_LANG_PRIMITIVE( QObject_DisconnectObject, 2, PyrSlot *r, PyrSlot *a, VMGlobal
 QC_LANG_PRIMITIVE( QObject_ConnectSlot, 3, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
   // Args: signal, receiver, slot
-  if( !isKindOfSlot( a+1, class_QObject )
+  if( !isKindOfSlot( a+1, SC_CLASS(QObject) )
       || NotSym( a+0 ) || NotSym( a+2 ) ) return errWrongType;
 
   PyrSymbol *symSig = slotRawSymbol( a+0 );
@@ -525,15 +524,19 @@ QC_LANG_PRIMITIVE( QObject_InvokeMethod, 3, PyrSlot *r, PyrSlot *a, VMGlobals *g
 
 QC_LANG_PRIMITIVE( QObject_IsValid, 0, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
-  // NOTE Though we could check validity without posting an event (by locking the proxy),
-  // we post a sync event to maximize the chance that a DeferredDelete event issued earlier
-  // can get processed by the object in question before it is checked for validity.
-
   QObjectProxy *proxy = Slot::toObjectProxy( r );
 
-  if( !proxy->compareThread() ) return QtCollider::wrongThreadError();
+  bool needLock = !proxy->compareThread();
+
+  if (needLock)
+      proxy->lock();
+
+  bool hasObject = proxy->object() != 0;
+
+  if (needLock)
+      proxy->unlock();
 
-  SetBool( r, proxy->object() != 0 );
+  SetBool( r, hasObject );
 
   return errNone;
 }
@@ -592,7 +595,6 @@ void defineQObjectPrimitives()
   LangPrimitiveDefiner definer;
   definer.define<QObject_New>();
   definer.define<QObject_Destroy>();
-  definer.define<QObject_ManuallyFinalize>();
   definer.define<QObject_SetParent>();
   definer.define<QMetaObject_Properties>();
   definer.define<QMetaObject_Methods>();
diff --git a/QtCollider/primitives/prim_QPalette.cpp b/QtCollider/primitives/prim_QPalette.cpp
index e70050e..b44e4b5 100644
--- a/QtCollider/primitives/prim_QPalette.cpp
+++ b/QtCollider/primitives/prim_QPalette.cpp
@@ -40,7 +40,7 @@ int QPalette_Finalize( struct VMGlobals *g, struct PyrObject *obj )
 
 void QPalette_Init( struct VMGlobals *g, struct PyrObject *obj, const QPalette & palette )
 {
-  assert( obj->classptr == class_QPalette );
+  assert( obj->classptr == SC_CLASS(QPalette) );
   assert( IsNil(obj->slots) && IsNil(obj->slots+1) );
 
   QPalette *p = new QPalette(palette);
diff --git a/QtCollider/primitives/prim_QPen.cpp b/QtCollider/primitives/prim_QPen.cpp
index 65d97ce..6b5de5a 100644
--- a/QtCollider/primitives/prim_QPen.cpp
+++ b/QtCollider/primitives/prim_QPen.cpp
@@ -24,6 +24,7 @@
 #include "primitives.h"
 #include "../painting.h"
 #include "../Slot.h"
+#include "PyrKernel.h"
 
 #include <QPainter>
 #include <QVector2D>
@@ -215,7 +216,7 @@ QC_QPEN_PRIMITIVE( QPen_SetDashPattern, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g
 {
   if( !IsObj( a ) ) return errWrongType;
   PyrObject *obj = slotRawObject( a );
-  if( obj->classptr != class_FloatArray ) return errWrongType;
+  if( obj->classptr != class_floatarray ) return errWrongType;
   PyrFloatArray *farray = reinterpret_cast<PyrFloatArray*>(obj);
 
   int s = farray->size;
@@ -307,7 +308,7 @@ QC_QPEN_PRIMITIVE( QPen_Rotate, 3, PyrSlot *r, PyrSlot *a, VMGlobals *g )
   return errNone;
 }
 
-QC_QPEN_PRIMITIVE( QPen_Transform, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g )
+QC_QPEN_PRIMITIVE( QPen_SetTransform, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
   VariantList list = Slot::toVariantList( a );
   if( list.data.count() < 6 ) return errWrongType;
@@ -320,10 +321,29 @@ QC_QPEN_PRIMITIVE( QPen_Transform, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g )
     f[i] = list.data[i].value<float>();
   }
   QTransform transform( f[0], f[1], f[2], f[3], f[4], f[5] );
-  painter->setWorldTransform( transform );
+  painter->setWorldTransform( transform, true );
   return errNone;
 }
 
+QC_QPEN_PRIMITIVE( QPen_Transform, 0, PyrSlot *r, PyrSlot *a, VMGlobals *g )
+{
+    const QTransform & transform = painter->worldTransform();
+
+    PyrDoubleArray *doubleArray = newPyrDoubleArray( g->gc, 6, 0, true );
+    SetObject( r, doubleArray );
+
+    double *val = doubleArray->d;
+    val[0] = transform.m11();
+    val[1] = transform.m12();
+    val[2] = transform.m21();
+    val[3] = transform.m22();
+    val[4] = transform.dx();
+    val[5] = transform.dy();
+    doubleArray->size = 6;
+
+    return errNone;
+}
+
 QC_QPEN_PRIMITIVE( QPen_MoveTo, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
   QPointF point = Slot::toPoint( a );
@@ -506,6 +526,11 @@ QC_QPEN_PRIMITIVE( QPen_Draw, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g )
     case 4:
     default: ;
   }
+  if ( style == 1 || style == 4 ) {
+    path.setFillRule( Qt::OddEvenFill );
+  } else {
+    path.setFillRule( Qt::WindingFill );
+  }
 
   painter->drawPath( path );
 
@@ -639,6 +664,7 @@ void defineQPenPrimitives()
   definer.define<QPen_Shear>();
   definer.define<QPen_Rotate>();
   definer.define<QPen_Transform>();
+  definer.define<QPen_SetTransform>();
   definer.define<QPen_MoveTo>();
   definer.define<QPen_LineTo>();
   definer.define<QPen_CubicTo>();
diff --git a/QtCollider/primitives/prim_QWidget.cpp b/QtCollider/primitives/prim_QWidget.cpp
index ff3ca5b..ce38e72 100644
--- a/QtCollider/primitives/prim_QWidget.cpp
+++ b/QtCollider/primitives/prim_QWidget.cpp
@@ -82,7 +82,7 @@ QC_LANG_PRIMITIVE( QWidget_MapToGlobal, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g
 }
 
 QC_LANG_PRIMITIVE( QWidget_SetLayout, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g ) {
-  if( !isKindOfSlot( a, class_QLayout ) ) return errWrongType;
+  if( !isKindOfSlot( a, SC_CLASS(QLayout) ) ) return errWrongType;
 
   QWidgetProxy *wProxy = qobject_cast<QWidgetProxy*>( Slot::toObjectProxy(r) );
 
diff --git a/QtCollider/primitives/prim_misc.cpp b/QtCollider/primitives/prim_misc.cpp
index 6540d6f..17d24e1 100644
--- a/QtCollider/primitives/prim_misc.cpp
+++ b/QtCollider/primitives/prim_misc.cpp
@@ -34,9 +34,10 @@
 
 #include <PyrKernel.h>
 
+#include <QFontDatabase>
+#include <QFontInfo>
 #include <QFontMetrics>
 #include <QDesktopWidget>
-#include <QFontDatabase>
 #include <QStyleFactory>
 #include <QWebSettings>
 
@@ -99,6 +100,61 @@ QC_LANG_PRIMITIVE( Qt_AvailableFonts, 0, PyrSlot *r, PyrSlot *a, VMGlobals *g )
   return errNone;
 }
 
+QC_LANG_PRIMITIVE( QFont_SetDefaultFont, 2, PyrSlot *r, PyrSlot *a, VMGlobals *g )
+{
+    if( !QcApplication::compareThread() ) return QtCollider::wrongThreadError();
+
+    if ( !isKindOfSlot( a+0, SC_CLASS(QFont) ) )
+        return errWrongType;
+
+    QFont font( Slot::toFont(a+0) );
+    const char *className = IsSym(a+1) ? slotRawSymbol(a+1)->name : 0;
+
+    QApplication::setFont( font, className );
+
+    return errNone;
+}
+
+QC_LANG_PRIMITIVE( QFont_DefaultFamilyForStyle, 1, PyrSlot *r, PyrSlot *a, VMGlobals *g )
+{
+    // NOTE:
+    // On X11 systems we rely on default fontconfig mappings of font familiy names,
+    // as style hints are not necessarily supported.
+    // On other systems, style hints should work.
+
+    if( !QcApplication::compareThread() ) return QtCollider::wrongThreadError();
+
+    if ( !IsInt(a) )
+        return errWrongType;
+
+    QFont::StyleHint styleHint;
+    QString family;
+    switch (slotRawInt(a)) {
+    case 0:
+        styleHint = QFont::SansSerif;
+        family = "sans-serif";
+        break;
+    case 1:
+        styleHint = QFont::Serif;
+        family = "serif";
+        break;
+    case 2:
+        styleHint = QFont::TypeWriter;
+        family = "monospace";
+        break;
+    default:
+        styleHint = QFont::AnyStyle;
+    }
+
+    QFont font(family);
+    font.setStyleHint(styleHint);
+
+    QFontInfo fontInfo(font);
+    Slot::setString( r, fontInfo.family() );
+
+    return errNone;
+}
+
 QC_LANG_PRIMITIVE( Qt_GlobalPalette, 0, PyrSlot *r, PyrSlot *a, VMGlobals *g )
 {
   if( !QcApplication::compareThread() ) return QtCollider::wrongThreadError();
@@ -219,6 +275,8 @@ void defineMiscPrimitives()
   definer.define<QWindow_AvailableGeometry>();
   definer.define<Qt_StringBounds>();
   definer.define<Qt_AvailableFonts>();
+  definer.define<QFont_SetDefaultFont>();
+  definer.define<QFont_DefaultFamilyForStyle>();
   definer.define<Qt_GlobalPalette>();
   definer.define<Qt_SetGlobalPalette>();
   definer.define<Qt_FocusWidget>();
diff --git a/QtCollider/primitives/primitives.cpp b/QtCollider/primitives/primitives.cpp
index 2ebb55d..efb837e 100644
--- a/QtCollider/primitives/primitives.cpp
+++ b/QtCollider/primitives/primitives.cpp
@@ -28,24 +28,9 @@
 
 namespace QtCollider {
 
-PyrSymbol *s_interpretCmdLine;
-PyrSymbol *s_interpretPrintCmdLine;
-PyrSymbol *s_doFunction;
-PyrSymbol *s_doDrawFunc;
-PyrSymbol *s_prRelease;
-PyrSymbol *s_Rect;
-PyrSymbol *s_Point;
-PyrSymbol *s_Color;
-PyrSymbol *s_Size;
-PyrSymbol *s_Array;
-PyrSymbol *s_FloatArray;
-PyrSymbol *s_SymbolArray;
-PyrSymbol *s_String;
-PyrSymbol *s_QPalette;
-PyrSymbol *s_QFont;
-PyrSymbol *s_QObject;
-PyrSymbol *s_QLayout;
-PyrSymbol *s_QTreeViewItem;
+#define QC_DO_SYMBOL(SYM) PyrSymbol * sym_##SYM
+QC_DO_SYMBOLS
+#undef QC_DO_SYMBOL
 
 void defineQObjectPrimitives();
 void defineQPenPrimitives();
@@ -59,35 +44,15 @@ void initPrimitives () {
 
   qcDebugMsg(1,"initializing QtGUI primitives");
 
-  int base = nextPrimitiveIndex();
-  int index = 0;
-
   defineQObjectPrimitives();
   defineQWidgetPrimitives();
   defineQPenPrimitives();
   defineMiscPrimitives();
   defineQPalettePrimitives();
 
-  s_interpretCmdLine = getsym("interpretCmdLine");
-  s_interpretPrintCmdLine = getsym("interpretPrintCmdLine");
-
-  s_doFunction = getsym("doFunction");
-  s_doDrawFunc = getsym("doDrawFunc");
-  s_prRelease = getsym("prRelease");
-
-  s_Rect = getsym("Rect");
-  s_Point = getsym("Point");
-  s_Size = getsym("Size");
-  s_Color = getsym("Color");
-  s_Array = getsym("Array");
-  s_FloatArray = getsym("FloatArray");
-  s_SymbolArray = getsym("SymbolArray");
-  s_String = getsym("String");
-  s_QObject = getsym("QObject");
-  s_QLayout = getsym("QLayout");
-  s_QFont = getsym("QFont");
-  s_QPalette = getsym("QPalette");
-  s_QTreeViewItem = getsym("QTreeViewItem");
+#define QC_DO_SYMBOL(SYM) sym_##SYM = getsym(#SYM);
+QC_DO_SYMBOLS
+#undef QC_DO_SYMBOL
 }
 
 } // namespace QtCollider
diff --git a/QtCollider/style/routines.hpp b/QtCollider/style/routines.hpp
index 36d4ae7..1259193 100644
--- a/QtCollider/style/routines.hpp
+++ b/QtCollider/style/routines.hpp
@@ -149,7 +149,8 @@ template<typename ShapeT> void drawSunken (QPainter *p, const QPalette &plt, con
 
   // outer border
 
-  QColor c = focusColor.isValid() ? focusColor : plt.color(QPalette::Window).lighter(105);
+  QColor c = focusColor.isValid() ? focusColor : QColor(255,255,255,20);
+
   pen.setColor(c);
   p->setPen(pen);
   p->setBrush(Qt::NoBrush);
diff --git a/QtCollider/style/style.cpp b/QtCollider/style/style.cpp
index ddfb059..cad374f 100644
--- a/QtCollider/style/style.cpp
+++ b/QtCollider/style/style.cpp
@@ -9,34 +9,3 @@ void StyleImpl::polish ( QPalette & p )
   _colors[Focus] = p.color(QPalette::Highlight);
   _colors[Groove] = p.color(QPalette::Window).darker(120);
 }
-
-void StyleImpl::drawControl ( ControlElement elem, const QStyleOption * option,
-                          QPainter * p, const QWidget * w ) const
-{
-  if( elem == CE_PushButton ) {
-
-    p->save();
-    p->setRenderHint( QPainter::Antialiasing, true );
-
-    const QStyleOptionButton *opt = static_cast<const QStyleOptionButton*>(option);
-    const QPalette &plt = opt->palette;
-    bool sunken = opt->state & State_Sunken || opt->state & State_On;
-    int radius = 2;
-
-    QColor color( sunken ? plt.color(QPalette::Button).darker(120) : plt.color(QPalette::Button) );
-    QColor focusColor( opt->state & State_HasFocus ? _colors[Focus] : QColor() );
-
-    RoundRect frame( opt->rect, radius );
-    if( sunken )
-      drawSunken( p, plt, frame, color, focusColor);
-    else
-      drawRaised( p, plt, frame, color, focusColor );
-
-    drawControl( CE_PushButtonLabel, option, p, w );
-
-    p->restore();
-  }
-  else {
-    ProxyStyle::drawControl( elem, option, p, w );
-  }
-}
diff --git a/QtCollider/style/style.hpp b/QtCollider/style/style.hpp
index a1ded35..3708a71 100644
--- a/QtCollider/style/style.hpp
+++ b/QtCollider/style/style.hpp
@@ -28,9 +28,6 @@ public:
 
   virtual void polish ( QPalette & );
 
-  virtual void drawControl ( ControlElement, const QStyleOption *,
-                             QPainter *, const QWidget * = 0 ) const;
-
   QColor color( ColorRole role ) {
     Q_ASSERT(role < ColorRoleCount);
     return _colors[role];
diff --git a/QtCollider/widgets/BasicWidgets.cpp b/QtCollider/widgets/BasicWidgets.cpp
index 089d772..33a8738 100644
--- a/QtCollider/widgets/BasicWidgets.cpp
+++ b/QtCollider/widgets/BasicWidgets.cpp
@@ -21,224 +21,31 @@
 
 #include "BasicWidgets.h"
 #include "../QcWidgetFactory.h"
-#include "../Common.h"
 
-#include <QApplication>
-#include <QKeyEvent>
+#include <QPaintEvent>
 #include <QPainter>
-#ifdef Q_WS_MAC
-# include <QMacStyle>
-#endif
 
 QC_DECLARE_QWIDGET_FACTORY( QcDefaultWidget );
 QC_DECLARE_QWIDGET_FACTORY( QcHLayoutWidget );
 QC_DECLARE_QWIDGET_FACTORY( QcVLayoutWidget );
-QC_DECLARE_QWIDGET_FACTORY( QLabel );
-QC_DECLARE_QWIDGET_FACTORY( QcTextField );
-QC_DECLARE_QWIDGET_FACTORY( QcCheckBox );
 
-//////////////////////////// QcListWidget //////////////////////////////////////
-
-class QcListWidgetFactory : public QcWidgetFactory<QcListWidget>
-{
-  void initialize( QWidgetProxy *p, QcListWidget *l ) {
-    p->setMouseEventWidget( l->viewport() );
-  }
-};
-
-QC_DECLARE_FACTORY( QcListWidget, QcListWidgetFactory );
-
-QcListWidget::QcListWidget() : _emitAction(true)
-{
-  connect( this, SIGNAL( currentItemChanged( QListWidgetItem*, QListWidgetItem* ) ),
-           this, SLOT( onCurrentItemChanged() ) );
-}
-
-void QcListWidget::setItems( const VariantList & items )
+void QcSimpleWidget::setBackground( const QColor &c )
 {
-  _emitAction = false;
-  clear();
-  Q_FOREACH( QVariant item, items.data )
-    addItem( item.toString() );
-  setCurrentRow( 0 );
-  _emitAction = true;
-}
+  if(_bkg == c) return;
 
-void QcListWidget::setColors( const VariantList & colors ) const
-{
-  int cc = colors.data.count();
-  int ic = count();
-  for( int i=0; i<cc && i < ic; ++i ) {
-    QListWidgetItem *it = item(i);
-    QColor color( colors.data[i].value<QColor>() );
-    if( color.isValid() ) it->setBackground( color );
-  }
+  _bkg = c;
+  setAttribute(Qt::WA_OpaquePaintEvent, c.isValid() && c.alpha() == 255);
+  update();
 }
 
-void QcListWidget::setCurrentRowWithoutAction( int row )
+void QcSimpleWidget::paintEvent( QPaintEvent *e )
 {
-  bool b = _emitAction;
-  _emitAction = false;
-  setCurrentRow( row );
-  _emitAction = b;
-}
+  if (!_bkg.isValid()) return;
 
-void QcListWidget::onCurrentItemChanged()
-{
-  if( _emitAction ) Q_EMIT( action() );
+  QPainter p(this);
+  p.fillRect(e->rect(), _bkg);
 }
 
-void QcListWidget::keyPressEvent( QKeyEvent *e )
-{
-  QListWidget::keyPressEvent( e );
-
-  switch (e->key())
-  {
-  case Qt::Key_Return:
-  case Qt::Key_Enter:
-    Q_EMIT( returnPressed() );
-    e->accept();
-    break;
-  case Qt::Key_Up:
-  case Qt::Key_Down:
-  case Qt::Key_Left:
-  case Qt::Key_Right:
-  case Qt::Key_PageUp:
-  case Qt::Key_PageDown:
-  case Qt::Key_Home:
-  case Qt::Key_End:
-    // Prevent propagating to parent when scroller reaches minimum or maximum:
-    e->accept();
-  default: break;
-  }
-}
-
-////////////////////////// QcPopUpMenu /////////////////////////////////////////
-
-QC_DECLARE_QWIDGET_FACTORY(QcPopUpMenu);
-
-QcPopUpMenu::QcPopUpMenu() :
-  _changed(false),
-  _reactivation(false)
-{
-  connect( this, SIGNAL(currentIndexChanged(int)),
-           this, SLOT(setChanged()) );
-  connect( this, SIGNAL(currentIndexChanged(int)),
-           this, SLOT(clearChanged()), Qt::QueuedConnection );
-
-  connect( this, SIGNAL(activated(int)), this, SLOT(doAction(int)) );
-}
-
-void QcPopUpMenu::setItems( const VariantList & items )
-{
-  clear();
-  Q_FOREACH( QVariant item, items.data )
-      addItem( item.toString() );
-}
-
-void QcPopUpMenu::doAction( int choice )
-{
-  if( _changed || _reactivation )
-    Q_EMIT( action() );
-}
-
-/////////////////////////////// QcTextField ////////////////////////////////////
-
-void QcTextField::keyPressEvent( QKeyEvent *e )
-{
-  // NOTE: We could use the returnPressed() signal, but that would still
-  // propagate the event to parent, which we want to avoid.
-  if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return)
-    Q_EMIT(action());
-  else
-    QLineEdit::keyPressEvent(e);
-}
-
-/////////////////////////////// QcButton ///////////////////////////////////////
-
-QC_DECLARE_QWIDGET_FACTORY(QcButton);
-
-QcButton::QcButton()
-: currentState(0), defaultPalette( palette() )
-{
-  connect( this, SIGNAL(clicked()), this, SLOT(doAction()) );
-}
-
-#ifdef Q_WS_MAC
-bool QcButton::hitButton( const QPoint & pos ) const
-{
-  // FIXME: This is a workaround for Qt Bug 15936:
-  // incorrect QPushButton hit area.
-
-  QMacStyle *macStyle = qobject_cast<QMacStyle *>(style());
-
-  if( !macStyle || isFlat() )
-    return QAbstractButton::hitButton(pos);
-  else
-    return QPushButton::hitButton(pos);
-}
-#endif
-
-void QcButton::setStates( const VariantList & statesArg )
-{
-  if( !statesArg.data.count() ) return;
-
-  states.clear();
-
-  Q_FOREACH( QVariant var, statesArg.data ) {
-    VariantList stateArg = var.value<VariantList>();
-    int count = stateArg.data.size();
-    State state;
-    if( count >= 1 )
-      state.text = stateArg.data[0].toString();
-    if( count >= 2 )
-      state.textColor = stateArg.data[1].value<QColor>();
-    if( count >= 3 )
-      state.buttonColor = stateArg.data[2].value<QColor>();
-    states.append( state );
-  }
-  setState( 0 );
-}
-
-void QcButton::setState( int i )
-{
-  int c = states.count();
-  if( !c ) return;
-
-  i = qBound( 0, i, c-1 );
-
-  currentState = i;
-
-  State state = states[i];
-
-  setText( state.text );
-
-  QPalette p ( defaultPalette );
-
-  if( state.textColor.isValid() )
-    p.setColor( QPalette::ButtonText, state.textColor );
-  if( state.buttonColor.isValid() )
-    p.setColor( QPalette::Button, state.buttonColor );
-
-  setPalette( p );
-}
-
-void QcButton::cycleStates()
-{
-  if( states.size() < 2 ) return;
-  int i = currentState + 1;
-  if( i >= states.size() ) i = 0;
-  setState( i );
-}
-
-void QcButton::doAction()
-{
-  cycleStates();
-  Q_EMIT( action((int)QApplication::keyboardModifiers()) );
-}
-
-/////////////////////////////////////////////////////////////////////////
-
 class QcCustomPaintedFactory : public QcWidgetFactory<QcCustomPainted>
 {
 protected:
diff --git a/QtCollider/widgets/BasicWidgets.h b/QtCollider/widgets/BasicWidgets.h
index 6afb50e..75c6918 100644
--- a/QtCollider/widgets/BasicWidgets.h
+++ b/QtCollider/widgets/BasicWidgets.h
@@ -22,159 +22,67 @@
 #ifndef _WIDGETS_H
 #define _WIDGETS_H
 
-#include "../QcHelper.h"
-#include "../layouts/classic_layouts.hpp"
 #include "QcCanvas.h"
+#include "../layouts/classic_layouts.hpp"
 
-#include <QListWidget>
-#include <QComboBox>
-#include <QPushButton>
-#include <QLineEdit>
-#include <QLabel>
-#include <QCheckBox>
-
-class QcDefaultWidget : public QWidget
-{
-  Q_OBJECT
-  public:
-    QcDefaultWidget() { setLayout( new QcDefaultLayout() ); }
-    Q_INVOKABLE void addChild( QWidget* w ) { layout()->addWidget(w); }
-};
-
-class QcHLayoutWidget : public QWidget
-{
-  Q_OBJECT
-  public:
-    QcHLayoutWidget() { setLayout( new QcHLayout() ); }
-    Q_INVOKABLE void addChild( QWidget* w ) { layout()->addWidget(w); }
-};
-
-class QcVLayoutWidget : public QWidget
+class QcSimpleWidget : public QWidget
 {
   Q_OBJECT
-  public:
-    QcVLayoutWidget() { setLayout( new QcVLayout() ); }
-    Q_INVOKABLE void addChild( QWidget* w ) { layout()->addWidget(w); }
-};
+  Q_PROPERTY( QColor background READ background WRITE setBackground );
 
+public:
+  const QColor & background() const { return _bkg; }
+  void setBackground( const QColor &c );
 
-class QcListWidget : public QListWidget, public QcHelper
-{
-  Q_OBJECT
-  Q_PROPERTY( VariantList items READ dummyVariantList WRITE setItems );
-  Q_PROPERTY( VariantList colors READ dummyVariantList WRITE setColors );
-  Q_PROPERTY( int currentRow READ currentRow WRITE setCurrentRowWithoutAction )
+protected:
+  virtual void paintEvent( QPaintEvent * );
 
-  public:
-    QcListWidget();
-    void setItems( const VariantList & );
-    void setColors( const VariantList & ) const;
-    void setCurrentRowWithoutAction( int );
-  Q_SIGNALS:
-    void action();
-    void returnPressed();
-  private Q_SLOTS:
-    void onCurrentItemChanged();
-  protected:
-    virtual void keyPressEvent( QKeyEvent * );
-  private:
-    bool _emitAction;
+private:
+  QColor _bkg;
 };
 
-class QcPopUpMenu : public QComboBox, public QcHelper
+class QcDefaultWidget : public QcSimpleWidget
 {
   Q_OBJECT
-  Q_PROPERTY( VariantList items READ dummyVariantList WRITE setItems );
-  Q_PROPERTY( bool reactivationEnabled READ reactivationEnabled WRITE setReactivationEnabled )
-
   public:
-    QcPopUpMenu();
-    bool reactivationEnabled() const { return _reactivation; }
-    void setReactivationEnabled( bool b ) { _reactivation = b; }
-  Q_SIGNALS:
-    void action();
-  private Q_SLOTS:
-    void doAction(int);
-    void setChanged() { _changed = true; }
-    void clearChanged() { _changed = false; }
-  private:
-    void setItems( const VariantList & );
-    bool _changed;
-    bool _reactivation;
+    QcDefaultWidget(): l(this) {}
+  protected:
+    virtual void resizeEvent( QResizeEvent *e ) { if(!layout()) l.resize(e); }
+    QtCollider::DefaultLayout l;
 };
 
-class QcTextField : public QLineEdit
+class QcHLayoutWidget : public QcSimpleWidget
 {
   Q_OBJECT
-
   public:
-    QcTextField() {}
+    QcHLayoutWidget(): l(this) {}
   protected:
-    virtual void keyPressEvent( QKeyEvent * );
-  Q_SIGNALS:
-    void action();
+    virtual void resizeEvent( QResizeEvent *e ) { if(!layout()) l.resize(e); }
+    QtCollider::HLayout l;
 };
 
-class QcButton : public QPushButton, public QcHelper
+class QcVLayoutWidget : public QcSimpleWidget
 {
   Q_OBJECT
-  Q_PROPERTY( VariantList states READ dummyVariantList WRITE setStates );
-  Q_PROPERTY( int value READ getValue WRITE setValue );
   public:
-    QcButton();
-  Q_SIGNALS:
-    void action(int);
+    QcVLayoutWidget(): l(this) {}
   protected:
-#ifdef Q_WS_MAC
-    bool hitButton( const QPoint & ) const;
-#endif
-  private Q_SLOTS:
-    void doAction();
-  private:
-    struct State {
-      QString text;
-      QColor textColor;
-      QColor buttonColor;
-    };
-    void setStates( const VariantList & );
-    void setValue( int val ) { setState( val ); }
-    int getValue() const { return currentState; }
-    void setState( int );
-    void cycleStates();
-    QList<State> states;
-    int currentState;
-    QPalette defaultPalette;
+    virtual void resizeEvent( QResizeEvent *e ) { if(!layout()) l.resize(e); }
+    QtCollider::VLayout l;
 };
 
-class QcCustomPainted : public QcCanvas, QcHelper
+class QcCustomPainted : public QcCanvas
 {
   Q_OBJECT
   public:
-    QcCustomPainted() {
-      setLayout( new QcDefaultLayout() );
-    }
-    Q_INVOKABLE void addChild( QWidget* w ) { layout()->addWidget(w); }
+    QcCustomPainted(): l(this) {}
   protected:
     // reimplement event handlers just so events don't propagate
     virtual void mousePressEvent( QMouseEvent * ) {}
     virtual void mouseReleaseEvent( QMouseEvent * ) {}
     virtual void mouseMoveEvent( QMouseEvent * ) {}
-};
-
-class QcCheckBox : public QCheckBox
-{
-  Q_OBJECT
-  Q_PROPERTY( bool value READ value WRITE setValue );
-
-  public:
-    QcCheckBox() {
-      connect( this, SIGNAL(clicked()), this, SIGNAL(action()) );
-    }
-  Q_SIGNALS:
-    void action();
-  private:
-    bool value() { return isChecked(); }
-    void setValue( bool val ) { setChecked(val); }
+    virtual void resizeEvent( QResizeEvent *e ) { QcCanvas::resizeEvent(e); if(!layout()) l.resize(e); }
+    QtCollider::DefaultLayout l;
 };
 
 #endif // _WIDGETS_H
diff --git a/QtCollider/widgets/QcButton.cpp b/QtCollider/widgets/QcButton.cpp
new file mode 100644
index 0000000..fe1f6e8
--- /dev/null
+++ b/QtCollider/widgets/QcButton.cpp
@@ -0,0 +1,129 @@
+/************************************************************************
+*
+* Copyright 2010-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "QcButton.h"
+#include "../QcWidgetFactory.h"
+
+#ifdef Q_WS_MAC
+# include <QMacStyle>
+#endif
+
+QC_DECLARE_QWIDGET_FACTORY(QcButton);
+
+QcButton::QcButton():
+  QtCollider::Style::Client(this),
+  currentState(0)
+{
+  connect( this, SIGNAL(clicked()), this, SLOT(doAction()) );
+}
+
+#ifdef Q_WS_MAC
+bool QcButton::hitButton( const QPoint & pos ) const
+{
+  // FIXME: This is a workaround for Qt Bug 15936:
+  // incorrect QPushButton hit area.
+
+  QMacStyle *macStyle = qobject_cast<QMacStyle *>(style());
+
+  if( !macStyle || isFlat() )
+    return QAbstractButton::hitButton(pos);
+  else
+    return QPushButton::hitButton(pos);
+}
+#endif
+
+void QcButton::setStates( const VariantList & statesArg )
+{
+  if( !statesArg.data.count() ) return;
+
+  states.clear();
+
+  Q_FOREACH( QVariant var, statesArg.data ) {
+    VariantList stateArg = var.value<VariantList>();
+    int count = stateArg.data.size();
+    State state;
+    if( count >= 1 )
+      state.text = stateArg.data[0].toString();
+    if( count >= 2 )
+      state.textColor = stateArg.data[1].value<QColor>();
+    if( count >= 3 )
+      state.buttonColor = stateArg.data[2].value<QColor>();
+    states.append( state );
+  }
+  setState( 0 );
+}
+
+void QcButton::setState( int i )
+{
+  int c = states.count();
+  if( !c ) return;
+
+  currentState = qBound( 0, i, c-1 );
+  setText( states[currentState].text );
+  update();
+}
+
+void QcButton::cycleStates()
+{
+  if( states.size() < 2 ) return;
+  int i = currentState + 1;
+  if( i >= states.size() ) i = 0;
+  setState( i );
+}
+
+void QcButton::doAction()
+{
+  cycleStates();
+  Q_EMIT( action((int)QApplication::keyboardModifiers()) );
+}
+
+void QcButton::paintEvent ( QPaintEvent * )
+{
+  using namespace QtCollider::Style;
+  using QtCollider::Style::RoundRect;
+
+  QPainter p(this);
+  p.setRenderHint( QPainter::Antialiasing, true );
+
+  State state;
+  if(states.count()) state = states[currentState];
+
+  const QPalette &plt = palette();
+  bool sunken = isDown();
+  int radius = 2;
+
+  if(!state.buttonColor.isValid()) state.buttonColor = plt.color(QPalette::Button);
+  if(sunken) state.buttonColor = state.buttonColor.darker(120);
+
+  QColor focusClr( hasFocus() ? focusColor() : QColor() );
+
+  QRect r(rect());
+
+  RoundRect frame( r, radius );
+  if( sunken )
+    drawSunken( &p, plt, frame, state.buttonColor, focusClr);
+  else
+    drawRaised( &p, plt, frame, state.buttonColor, focusClr );
+
+  p.setPen( state.textColor.isValid() ? state.textColor : plt.color(QPalette::ButtonText) );
+  if(sunken) r.translate(1,1);
+  p.drawText( r,  Qt::AlignCenter, text() );
+}
diff --git a/QtCollider/widgets/QcButton.h b/QtCollider/widgets/QcButton.h
new file mode 100644
index 0000000..9a737a6
--- /dev/null
+++ b/QtCollider/widgets/QcButton.h
@@ -0,0 +1,58 @@
+/************************************************************************
+*
+* Copyright 2010-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "../QcHelper.h"
+#include "../style/style.hpp"
+
+#include <QPushButton>
+
+class QcButton : public QPushButton, QcHelper, QtCollider::Style::Client
+{
+  Q_OBJECT
+  Q_PROPERTY( VariantList states READ dummyVariantList WRITE setStates );
+  Q_PROPERTY( int value READ getValue WRITE setValue );
+  Q_PROPERTY( QColor focusColor READ focusColor WRITE setFocusColor );
+
+  public:
+    QcButton();
+  Q_SIGNALS:
+    void action(int);
+  protected:
+#ifdef Q_WS_MAC
+    bool hitButton( const QPoint & ) const;
+#endif
+    virtual void paintEvent ( QPaintEvent * );
+  private Q_SLOTS:
+    void doAction();
+  private:
+    struct State {
+      QString text;
+      QColor textColor;
+      QColor buttonColor;
+    };
+    void setStates( const VariantList & );
+    void setValue( int val ) { setState( val ); }
+    int getValue() const { return currentState; }
+    void setState( int );
+    void cycleStates();
+    QList<State> states;
+    int currentState;
+};
diff --git a/QtCollider/widgets/QcCanvas.cpp b/QtCollider/widgets/QcCanvas.cpp
index b341b89..611309a 100644
--- a/QtCollider/widgets/QcCanvas.cpp
+++ b/QtCollider/widgets/QcCanvas.cpp
@@ -24,6 +24,7 @@
 #include "../Common.h"
 
 #include <QPainter>
+#include <QPaintEvent>
 
 QcCanvas::QcCanvas( QWidget *parent )
 : QWidget( parent ),
@@ -39,9 +40,7 @@ QcCanvas::QcCanvas( QWidget *parent )
   _frameCount( 0 ),
   _meterPeriod( 1000 ),
   _meterFrames( 0 )
-{
-  //_bkgColor = palette().color( QPalette::Background );
-}
+{}
 
 float QcCanvas::frameRate() const
 {
@@ -60,6 +59,19 @@ void QcCanvas::setFrameRate( float rate )
   }
 }
 
+void QcCanvas::setBackground( const QColor &c )
+{
+  if(_bkg == c) return;
+
+  _bkg = c;
+
+  setAttribute( Qt::WA_OpaquePaintEvent, c.isValid() && c.alpha() == 255 );
+  setAttribute( Qt::WA_TranslucentBackground, c.isValid() );
+
+  if( !testAttribute(Qt::WA_WState_InPaintEvent) )
+      update();
+}
+
 void QcCanvas::refresh()
 {
   _repaintNeeded = true;
@@ -93,7 +105,7 @@ void QcCanvas::customEvent( QEvent *e )
 {
   if( e->type() == (QEvent::Type) QtCollider::Event_Refresh ) {
     e->accept();
-    refresh();
+    if(_paint) refresh();
   }
 }
 
@@ -109,7 +121,7 @@ void QcCanvas::resizeEvent( QResizeEvent * )
   refresh();
 }
 
-void QcCanvas::paintEvent( QPaintEvent * )
+void QcCanvas::paintEvent( QPaintEvent *e )
 {
   if( _paint && _repaintNeeded ) {
     if( _resize ) {
@@ -123,18 +135,27 @@ void QcCanvas::paintEvent( QPaintEvent * )
       _clearOnce = false;
     }
 
+    bool opaque_before = testAttribute(Qt::WA_OpaquePaintEvent);
+
     QPainter pixPainter( &_pixmap );
     Q_EMIT( painting(&pixPainter) );
     _repaintNeeded = false;
+
+    bool opaque_after = testAttribute(Qt::WA_OpaquePaintEvent);
+    if( opaque_before && !opaque_after )
+    {
+      repaint();
+      return;
+    }
   }
 
   QPainter p(this);
   QPalette plt(palette());
 
-  if( plt.isBrushSet(QPalette::Normal, QPalette::Window) )
-      p.fillRect( rect(), plt.color(QPalette::Window) );
+  if( _bkg.isValid() )
+      p.fillRect( e->rect(), _bkg );
 
-  if( _paint ) p.drawPixmap( rect(), _pixmap );
+  if( _paint ) p.drawPixmap( e->rect(), _pixmap, e->rect() );
 }
 
 void QcCanvas::timerEvent( QTimerEvent *e )
diff --git a/QtCollider/widgets/QcCanvas.h b/QtCollider/widgets/QcCanvas.h
index 85cb028..837ff5a 100644
--- a/QtCollider/widgets/QcCanvas.h
+++ b/QtCollider/widgets/QcCanvas.h
@@ -26,6 +26,7 @@
 #include <QPixmap>
 #include <QBasicTimer>
 #include <QTime>
+#include <QPalette>
 
 class QcCanvas : public QWidget
 {
@@ -33,6 +34,7 @@ class QcCanvas : public QWidget
   Q_PROPERTY( bool drawingEnabled READ drawingEnabled WRITE setDrawingEnabled );
   Q_PROPERTY( float frameRate READ frameRate WRITE setFrameRate );
   Q_PROPERTY( int frameCount READ frameCount );
+  Q_PROPERTY( QColor background READ background WRITE setBackground );
   Q_OBJECT
 public:
   QcCanvas( QWidget *parent = 0 );
@@ -43,6 +45,8 @@ public:
   float frameRate() const;
   void setFrameRate( float rate );
   int frameCount() const { return _frameCount; }
+  QColor background() const { return _bkg; }
+  void setBackground( const QColor &c );
 public Q_SLOTS:
   void refresh();
   void clear();
@@ -74,6 +78,7 @@ private:
   QTime _meterTime;
   int _meterFrames;
 
+  QColor _bkg;
 };
 
 #endif
diff --git a/QtCollider/widgets/QcCheckBox.h b/QtCollider/widgets/QcCheckBox.h
new file mode 100644
index 0000000..1fbd1ed
--- /dev/null
+++ b/QtCollider/widgets/QcCheckBox.h
@@ -0,0 +1,42 @@
+/************************************************************************
+*
+* Copyright 2010-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "../QcWidgetFactory.h"
+
+#include <QCheckBox>
+
+class QcCheckBox : public QCheckBox
+{
+  Q_OBJECT
+  Q_PROPERTY( bool value READ value WRITE setValue );
+
+  public:
+    QcCheckBox() {
+      connect( this, SIGNAL(clicked()), this, SIGNAL(action()) );
+    }
+  Q_SIGNALS:
+    void action();
+  private:
+    bool value() { return isChecked(); }
+    void setValue( bool val ) { setChecked(val); }
+};
+
+QC_DECLARE_QWIDGET_FACTORY( QcCheckBox );
diff --git a/QtCollider/widgets/QcGraph.cpp b/QtCollider/widgets/QcGraph.cpp
index ddc1180..5530faf 100644
--- a/QtCollider/widgets/QcGraph.cpp
+++ b/QtCollider/widgets/QcGraph.cpp
@@ -638,6 +638,55 @@ void QcGraph::addCurve( QPainterPath &path, QcGraphElement *e1, QcGraphElement *
     path.moveTo( pt1 );
     path.lineTo( pt2 );
     break;
+
+  case QcGraphElement::Quadratic: {
+    path.moveTo( pt1 );
+    const qreal sqrtBegin = std::sqrt(pt1.y());
+    const qreal sqrtEnd   = std::sqrt(pt2.y());
+    const qreal n = 100.f;
+    const qreal grow = (sqrtEnd - sqrtBegin) / n;
+
+    qreal x = pt1.x();
+    qreal y = pt1.y();
+
+    const float dx = (pt2.x() - pt1.x()) / n;
+
+    for (int i = 0; i != n; ++i) {
+        x += dx;
+        y += grow;
+        qreal yCoord = y*y;
+        path.lineTo( x, yCoord );
+    }
+
+    path.lineTo( pt2 );
+
+    break;
+  }
+
+  case QcGraphElement::Cubic: {
+    path.moveTo( pt1 );
+    const qreal cubrtBegin = std::pow(pt1.y(), qreal(1/3.0));
+    const qreal cubrtEnd   = std::pow(pt2.y(), qreal(1/3.0));
+    const qreal n = 100.f;
+    const qreal grow = (cubrtEnd - cubrtBegin) / n;
+
+    qreal x = pt1.x();
+    qreal y = pt1.y();
+
+    const float dx = (pt2.x() - pt1.x()) / n;
+
+    for (int i = 0; i != n; ++i) {
+        x += dx;
+        y += grow;
+        qreal yCoord = y*y*y;
+        path.lineTo( x, yCoord );
+    }
+
+    path.lineTo( pt2 );
+
+    break;
+  }
+
   case QcGraphElement::Sine: {
     // half of difference between end points
     float dx = (pt2.x() - pt1.x()) * 0.5f;
@@ -782,27 +831,18 @@ void QcGraph::paintEvent( QPaintEvent * )
   using QtCollider::Style::RoundRect;
 
   QPainter p( this );
-  QPalette plt( palette() );
+  const QPalette & plt = palette();
 
   p.setRenderHint( QPainter::Antialiasing, true );
   RoundRect frame(rect(), 2);
-  drawSunken( &p, plt, frame, plt.color(QPalette::Base), hasFocus() ? focusColor() : QColor() );
+  drawSunken( &p, plt, frame, background(), hasFocus() ? focusColor() : QColor() );
   p.setRenderHint( QPainter::Antialiasing, false );
 
   QRect contentsRect( valueRect() );
 
-  QColor strokeColor = _strokeColor.isValid() ? _strokeColor :  plt.color(QPalette::Text);
-  QColor gridColor;
-  if(_gridColor.isValid())
-    gridColor = _gridColor;
-  else {
-    gridColor = plt.color(QPalette::Text);
-    gridColor.setAlpha(40);
-  }
-
   //draw grid;
 
-  p.setPen(gridColor);
+  p.setPen( gridColor() );
   p.setBrush( Qt::NoBrush );
   p.drawRect( contentsRect );
 
@@ -840,7 +880,9 @@ void QcGraph::paintEvent( QPaintEvent * )
   int c = elems.count();
   if( !c ) return;
 
-  p.setPen( strokeColor );
+  const QColor & strokeClr = strokeColor();
+
+  p.setPen( strokeClr );
 
   // draw lines;
   if( _drawLines ) {
@@ -885,6 +927,7 @@ void QcGraph::paintEvent( QPaintEvent * )
     QColor rectColor = plt.color(QPalette::Button).lighter(105);
     QColor circleColor = rectColor; circleColor.setAlpha(70);
     QColor dotColor = plt.color(QPalette::Text);
+    const QColor & selectClr = selectionColor();
     QRectF rect;
     QPointF pt;
     int i;
@@ -900,10 +943,10 @@ void QcGraph::paintEvent( QPaintEvent * )
 
       if( _style == DotElements )
           drawDotElement(e, rect, contentsRect,
-                         dotColor, circleColor, strokeColor,
+                         dotColor, circleColor, strokeClr, selectClr,
                          plt, fm, &p);
       else
-          drawRectElement(e, rect, rectColor, strokeColor, plt, &p  );
+          drawRectElement(e, rect, rectColor, strokeClr, selectClr, plt, &p  );
 
     }
 
@@ -913,7 +956,7 @@ void QcGraph::paintEvent( QPaintEvent * )
 void QcGraph::drawDotElement
 ( QcGraphElement *e, const QRectF &rect, const QRect & bounds,
   const QColor & dotColor, const QColor & circleColor,
-  const QColor & textColor,
+  const QColor & textColor, const QColor & selectColor,
   const QPalette &plt, const QFontMetrics &fm, QPainter *p )
 {
   using namespace QtCollider::Style;
@@ -934,7 +977,7 @@ void QcGraph::drawDotElement
   // selection indicator
   if( e->selected ) {
     p->setBrush(Qt::NoBrush);
-    p->setPen( plt.color(QPalette::Highlight) );
+    p->setPen( selectColor );
     p->drawEllipse( thumb._rect.adjusted(1,1,-1,-1) );
   }
 
@@ -952,6 +995,7 @@ void QcGraph::drawRectElement
   QcGraphElement *e, const QRectF &rect,
   const QColor & fillColor,
   const QColor & textColor,
+  const QColor & selectColor,
   const QPalette &plt, QPainter *p )
 {
   using namespace QtCollider::Style;
@@ -964,7 +1008,7 @@ void QcGraph::drawRectElement
   // selection indicator
   if( e->selected ) {
     p->setBrush(Qt::NoBrush);
-    p->setPen( plt.color(QPalette::Highlight) );
+    p->setPen( selectColor );
     p->drawRoundedRect( base._rect, 5, 5 );
   }
 
diff --git a/QtCollider/widgets/QcGraph.h b/QtCollider/widgets/QcGraph.h
index 6bb0425..bd22837 100644
--- a/QtCollider/widgets/QcGraph.h
+++ b/QtCollider/widgets/QcGraph.h
@@ -133,9 +133,12 @@ class QcGraph : public QWidget, QcHelper, QtCollider::Style::Client
   Q_PROPERTY( int thumbSize READ dummyInt WRITE setThumbSize );
   Q_PROPERTY( int thumbWidth READ dummyInt WRITE setThumbWidth );
   Q_PROPERTY( int thumbHeight READ dummyInt WRITE setThumbHeight );
-  Q_PROPERTY( QColor strokeColor READ dummyColor WRITE setStrokeColor );
+  Q_PROPERTY( QColor background READ background WRITE setBackground );
+  Q_PROPERTY( QColor strokeColor READ strokeColor WRITE setStrokeColor );
   Q_PROPERTY( QColor fillColor READ dummyColor WRITE setFillColor );
-  Q_PROPERTY( QColor gridColor READ dummyColor WRITE setGridColor );
+  Q_PROPERTY( QColor gridColor READ gridColor WRITE setGridColor );
+  Q_PROPERTY( QColor focusColor READ focusColor WRITE setFocusColor );
+  Q_PROPERTY( QColor selectionColor READ selectionColor WRITE setSelectionColor );
   Q_PROPERTY( bool drawLines READ dummyBool WRITE setDrawLines );
   Q_PROPERTY( bool drawRects READ dummyBool WRITE setDrawRects );
   Q_PROPERTY( ElementStyle style READ elementStyle WRITE setElementStyle );
@@ -147,7 +150,6 @@ class QcGraph : public QWidget, QcHelper, QtCollider::Style::Client
   Q_PROPERTY( float y READ currentY WRITE setCurrentY );
   Q_PROPERTY( QPointF grid READ grid WRITE setGrid );
   Q_PROPERTY( bool gridOn READ dummyBool WRITE setGridOn );
-  Q_PROPERTY( QColor focusColor READ focusColor WRITE setFocusColor );
 
   public:
     Q_INVOKABLE void connectElements( int, VariantList );
@@ -206,12 +208,35 @@ class QcGraph : public QWidget, QcHelper, QtCollider::Style::Client
     void setThumbSize( int f );
     void setThumbWidth( int f );
     void setThumbHeight( int f );
+
+    const QColor & background() const
+      { return _bkg.isValid() ? _bkg : palette().color(QPalette::Base); }
+    void setBackground( const QColor &c ) { _bkg = c; update(); }
+
+    const QColor & selectionColor() const
+      { return _selectColor.isValid() ? _selectColor : palette().color(QPalette::Highlight); }
+    void setSelectionColor( const QColor &c ) { _selectColor = c; update(); }
+
+    const QColor & strokeColor() const
+      { return _strokeColor.isValid() ? _strokeColor :  palette().color(QPalette::Text); }
     void setStrokeColor( const QColor & c ) { _strokeColor = c; update(); }
+
     void setFillColor( const QColor & c );
 
+    QColor gridColor() const
+    {
+      if(_gridColor.isValid())
+        return _gridColor;
+      else {
+        QColor c = palette().color(QPalette::Text);
+        c.setAlpha(40);
+        return c;
+      }
+    }
+    void setGridColor( const QColor & c ) { _gridColor = c; update(); }
+
     ElementStyle elementStyle() const { return _style; }
     void setElementStyle(ElementStyle s) { _style = s; _geometryDirty = true; update(); }
-    void setGridColor( const QColor & c ) { _gridColor = c; update(); }
     void setDrawLines( bool b ) { _drawLines = b; update(); }
     void setDrawRects( bool b ) { _drawRects = b; update(); }
     void setEditable( bool b ) { _editable = b; update(); }
@@ -257,11 +282,12 @@ class QcGraph : public QWidget, QcHelper, QtCollider::Style::Client
     QRectF labelRect( QcGraphElement *, const QPointF &, const QRect &, const QFontMetrics & );
     void drawDotElement( QcGraphElement *, const QRectF &, const QRect & bounds,
                          const QColor & dotColor, const QColor & circleColor,
-                         const QColor & textColor,
+                         const QColor & textColor, const QColor & selectColor,
                          const QPalette &, const QFontMetrics &, QPainter * );
     void drawRectElement( QcGraphElement *, const QRectF &,
                           const QColor & fillColor,
                           const QColor & textColor,
+                          const QColor & selectColor,
                           const QPalette &, QPainter * );
     void paintEvent( QPaintEvent * );
     void mousePressEvent( QMouseEvent * );
@@ -271,12 +297,14 @@ class QcGraph : public QWidget, QcHelper, QtCollider::Style::Client
 
     QcGraphModel _model;
 
-    QSize _defaultThumbSize;
+    QColor _bkg;
     QColor _strokeColor;
     QColor _gridColor;
+    QColor _selectColor;
+
+    QSize _defaultThumbSize;
     QPointF _gridMetrics;
     bool _gridOn;
-    QColor _focusColor;
 
     ElementStyle _style;
     bool _drawLines;
diff --git a/QtCollider/widgets/QcListWidget.cpp b/QtCollider/widgets/QcListWidget.cpp
new file mode 100644
index 0000000..172739e
--- /dev/null
+++ b/QtCollider/widgets/QcListWidget.cpp
@@ -0,0 +1,99 @@
+/************************************************************************
+*
+* Copyright 2010-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "QcListWidget.h"
+#include "../QcWidgetFactory.h"
+
+#include <QKeyEvent>
+
+class QcListWidgetFactory : public QcWidgetFactory<QcListWidget>
+{
+  void initialize( QWidgetProxy *p, QcListWidget *l ) {
+    p->setMouseEventWidget( l->viewport() );
+  }
+};
+
+QC_DECLARE_FACTORY( QcListWidget, QcListWidgetFactory );
+
+QcListWidget::QcListWidget() : _emitAction(true)
+{
+  connect( this, SIGNAL( currentItemChanged( QListWidgetItem*, QListWidgetItem* ) ),
+           this, SLOT( onCurrentItemChanged() ) );
+}
+
+void QcListWidget::setItems( const VariantList & items )
+{
+  _emitAction = false;
+  clear();
+  Q_FOREACH( QVariant item, items.data )
+    addItem( item.toString() );
+  setCurrentRow( 0 );
+  _emitAction = true;
+}
+
+void QcListWidget::setColors( const VariantList & colors ) const
+{
+  int cc = colors.data.count();
+  int ic = count();
+  for( int i=0; i<cc && i < ic; ++i ) {
+    QListWidgetItem *it = item(i);
+    QColor color( colors.data[i].value<QColor>() );
+    if( color.isValid() ) it->setBackground( color );
+  }
+}
+
+void QcListWidget::setCurrentRowWithoutAction( int row )
+{
+  bool b = _emitAction;
+  _emitAction = false;
+  setCurrentRow( row );
+  _emitAction = b;
+}
+
+void QcListWidget::onCurrentItemChanged()
+{
+  if( _emitAction ) Q_EMIT( action() );
+}
+
+void QcListWidget::keyPressEvent( QKeyEvent *e )
+{
+  QListWidget::keyPressEvent( e );
+
+  switch (e->key())
+  {
+  case Qt::Key_Return:
+  case Qt::Key_Enter:
+    Q_EMIT( returnPressed() );
+    e->accept();
+    break;
+  case Qt::Key_Up:
+  case Qt::Key_Down:
+  case Qt::Key_Left:
+  case Qt::Key_Right:
+  case Qt::Key_PageUp:
+  case Qt::Key_PageDown:
+  case Qt::Key_Home:
+  case Qt::Key_End:
+    // Prevent propagating to parent when scroller reaches minimum or maximum:
+    e->accept();
+  default: break;
+  }
+}
diff --git a/QtCollider/widgets/QcListWidget.h b/QtCollider/widgets/QcListWidget.h
new file mode 100644
index 0000000..fd8b143
--- /dev/null
+++ b/QtCollider/widgets/QcListWidget.h
@@ -0,0 +1,46 @@
+/************************************************************************
+*
+* Copyright 2010-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "../QcHelper.h"
+#include <QListWidget>
+
+class QcListWidget : public QListWidget, QcHelper
+{
+  Q_OBJECT
+  Q_PROPERTY( VariantList items READ dummyVariantList WRITE setItems );
+  Q_PROPERTY( VariantList colors READ dummyVariantList WRITE setColors );
+  Q_PROPERTY( int currentRow READ currentRow WRITE setCurrentRowWithoutAction )
+
+  public:
+    QcListWidget();
+    void setItems( const VariantList & );
+    void setColors( const VariantList & ) const;
+    void setCurrentRowWithoutAction( int );
+  Q_SIGNALS:
+    void action();
+    void returnPressed();
+  private Q_SLOTS:
+    void onCurrentItemChanged();
+  protected:
+    virtual void keyPressEvent( QKeyEvent * );
+  private:
+    bool _emitAction;
+};
diff --git a/QtCollider/widgets/QcMultiSlider.cpp b/QtCollider/widgets/QcMultiSlider.cpp
index 588f084..0fad15a 100644
--- a/QtCollider/widgets/QcMultiSlider.cpp
+++ b/QtCollider/widgets/QcMultiSlider.cpp
@@ -182,7 +182,7 @@ void QcMultiSlider::mousePressEvent( QMouseEvent *e )
   if( !c ) return;
 
   bool horiz = ort == Qt::Horizontal;
-  double spacing;
+  qreal spacing;
 
   QRect r( valueRect( c - startIndex, spacing ) );
 
@@ -304,10 +304,8 @@ void QcMultiSlider::paintEvent( QPaintEvent *e )
   QPainter p(this);
   p.setRenderHint( QPainter::Antialiasing, true );
 
-  QPalette pal = palette();
-
   RoundRect frame(rect(), 2);
-  drawSunken( &p, pal, frame, pal.color(QPalette::Base), hasFocus() ? focusColor() : QColor() );
+  drawSunken( &p, palette(), frame, background(), hasFocus() ? focusColor() : QColor() );
 
   if( !_values.count() ) return;
 
@@ -315,11 +313,6 @@ void QcMultiSlider::paintEvent( QPaintEvent *e )
 
   bool horiz = ort == Qt::Horizontal;
 
-  QColor fillColor =
-    _fillColor.isValid() ? _fillColor : pal.color( QPalette::Text );
-  QColor strokeColor =
-    _strokeColor.isValid() ? _strokeColor : pal.color( QPalette::Text );
-
   QRect bounds( contentsRect() );
 
   p.setClipRect( bounds );
@@ -343,6 +336,8 @@ void QcMultiSlider::paintEvent( QPaintEvent *e )
   yscale = bounds.height();
   if( !isFilled ) yscale -= thumbSize.height();
 
+  const QColor & fillClr = fillColor();
+
   // selection
 
   if( highlight ) {
@@ -354,13 +349,13 @@ void QcMultiSlider::paintEvent( QPaintEvent *e )
       r.setWidth( c * spacing );
       r.moveLeft( i * spacing );
 
-      QColor hlColor = fillColor;
+      QColor hlColor = fillClr;
       hlColor.setAlpha( 70 );
       p.fillRect( r, hlColor );
     }
   }
 
-  p.setPen( strokeColor );
+  p.setPen( strokeColor() );
 
   // lines
 
@@ -372,7 +367,7 @@ void QcMultiSlider::paintEvent( QPaintEvent *e )
     p.setRenderHint( QPainter::Antialiasing, true );
     p.translate( spacing * 0.5, isFilled ? 0.0 : thumbSize.height() * 0.5 );
     p.scale( 1.0, (qreal) yscale );
-    if( fill ) p.setBrush( fillColor );
+    if( fill ) p.setBrush( fillClr );
 
     QPainterPath path;
 
@@ -413,7 +408,7 @@ void QcMultiSlider::paintEvent( QPaintEvent *e )
   if( drawRects ) {
     p.setRenderHint( QPainter::Antialiasing, false );
     p.translate( (spacing - width) * 0.5, 0 );
-    p.setBrush( fillColor );
+    p.setBrush( fillClr );
 
     QRectF r;
     r.setWidth( width );
diff --git a/QtCollider/widgets/QcMultiSlider.h b/QtCollider/widgets/QcMultiSlider.h
index 675858d..a8a8555 100644
--- a/QtCollider/widgets/QcMultiSlider.h
+++ b/QtCollider/widgets/QcMultiSlider.h
@@ -49,10 +49,11 @@ class QcMultiSlider : public QWidget, QcHelper, QtCollider::Style::Client
   Q_PROPERTY( bool drawRects READ dummyBool WRITE setDrawRects );
   Q_PROPERTY( bool isFilled READ dummyBool WRITE setIsFilled );
   Q_PROPERTY( bool highlight READ dummyBool WRITE setHighlight );
-  Q_PROPERTY( QColor fillColor READ dummyColor WRITE setFillColor );
-  Q_PROPERTY( QColor strokeColor READ dummyColor WRITE setStrokeColor );
   Q_PROPERTY( bool editable READ dummyBool WRITE setEditable );
   Q_PROPERTY( int startIndex READ dummyInt WRITE setStartIndex );
+  Q_PROPERTY( QColor background READ background WRITE setBackground );
+  Q_PROPERTY( QColor fillColor READ fillColor WRITE setFillColor );
+  Q_PROPERTY( QColor strokeColor READ strokeColor WRITE setStrokeColor );
   Q_PROPERTY( QColor focusColor READ focusColor WRITE setFocusColor );
 
   Q_SIGNALS:
@@ -81,6 +82,18 @@ class QcMultiSlider : public QWidget, QcHelper, QtCollider::Style::Client
     QSize sizeHint() const { return QSize( 500,300 ); }
     QSize minimumSizeHint() const { return QSize( 50, 50 ); }
 
+    const QColor & background() const
+      { return _bkgColor.isValid() ? _bkgColor : palette().color(QPalette::Base); }
+    void setBackground( const QColor & c ) { _bkgColor = c; update(); }
+
+    const QColor & fillColor() const
+      { return _fillColor.isValid() ? _fillColor : palette().color(QPalette::Text); }
+    void setFillColor( const QColor& c ) { _fillColor = c; update(); }
+
+    const QColor & strokeColor() const
+      { return _strokeColor.isValid() ? _strokeColor : palette().color(QPalette::Text); }
+    void setStrokeColor( const QColor& c ) { _strokeColor = c; update(); }
+
   protected:
     virtual void mousePressEvent( QMouseEvent * );
     virtual void mouseMoveEvent( QMouseEvent * );
@@ -103,8 +116,6 @@ class QcMultiSlider : public QWidget, QcHelper, QtCollider::Style::Client
     void setDrawRects( bool b ) { drawRects = b; update(); }
     void setIsFilled( bool b ) { isFilled = b; update(); }
     void setHighlight( bool b ) { highlight = b; update(); }
-    void setFillColor( const QColor& c ) { _fillColor = c; update(); }
-    void setStrokeColor( const QColor& c ) { _strokeColor = c; update(); }
     void setEditable( bool b ) { editable = b; }
     void setStartIndex( int i ) { startIndex = qBound(0, i, _values.count()-1); update(); }
 
@@ -133,10 +144,12 @@ class QcMultiSlider : public QWidget, QcHelper, QtCollider::Style::Client
     bool drawLines;
     bool isFilled;
     bool highlight;
+    int startIndex;
+
+    QColor _bkgColor;
     QColor _fillColor;
     QColor _strokeColor;
     QColor _focusColor;
-    int startIndex;
 
     // temporary
     QPoint moveOrigin;
diff --git a/QtCollider/widgets/QcPopUpMenu.cpp b/QtCollider/widgets/QcPopUpMenu.cpp
new file mode 100644
index 0000000..634b8f4
--- /dev/null
+++ b/QtCollider/widgets/QcPopUpMenu.cpp
@@ -0,0 +1,50 @@
+/************************************************************************
+*
+* Copyright 2010-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "QcPopUpMenu.h"
+#include "../QcWidgetFactory.h"
+
+QC_DECLARE_QWIDGET_FACTORY(QcPopUpMenu);
+
+QcPopUpMenu::QcPopUpMenu() :
+  _changed(false),
+  _reactivation(false)
+{
+  connect( this, SIGNAL(currentIndexChanged(int)),
+           this, SLOT(setChanged()) );
+  connect( this, SIGNAL(currentIndexChanged(int)),
+           this, SLOT(clearChanged()), Qt::QueuedConnection );
+
+  connect( this, SIGNAL(activated(int)), this, SLOT(doAction(int)) );
+}
+
+void QcPopUpMenu::setItems( const VariantList & items )
+{
+  clear();
+  Q_FOREACH( QVariant item, items.data )
+      addItem( item.toString() );
+}
+
+void QcPopUpMenu::doAction( int choice )
+{
+  if( _changed || _reactivation )
+    Q_EMIT( action() );
+}
diff --git a/QtCollider/widgets/QcPopUpMenu.h b/QtCollider/widgets/QcPopUpMenu.h
new file mode 100644
index 0000000..1a88561
--- /dev/null
+++ b/QtCollider/widgets/QcPopUpMenu.h
@@ -0,0 +1,48 @@
+/************************************************************************
+*
+* Copyright 2010-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "../QcHelper.h"
+#include <QComboBox>
+
+class QcPopUpMenu : public QComboBox, QcHelper
+{
+  Q_OBJECT
+  Q_PROPERTY( VariantList items READ dummyVariantList WRITE setItems );
+  Q_PROPERTY( bool reactivationEnabled READ reactivationEnabled WRITE setReactivationEnabled )
+
+public:
+    QcPopUpMenu();
+    bool reactivationEnabled() const { return _reactivation; }
+    void setReactivationEnabled( bool b ) { _reactivation = b; }
+
+Q_SIGNALS:
+    void action();
+
+private Q_SLOTS:
+    void doAction(int);
+    void setChanged() { _changed = true; }
+    void clearChanged() { _changed = false; }
+
+private:
+    void setItems( const VariantList & );
+    bool _changed;
+    bool _reactivation;
+};
diff --git a/QtCollider/widgets/QcRangeSlider.cpp b/QtCollider/widgets/QcRangeSlider.cpp
index c687aa6..a51c7aa 100644
--- a/QtCollider/widgets/QcRangeSlider.cpp
+++ b/QtCollider/widgets/QcRangeSlider.cpp
@@ -215,6 +215,8 @@ void QcRangeSlider::mouseMoveEvent ( QMouseEvent * e )
           setHiValue( qMax(dragVal + dif, (double)_lo) ); break;
         case MoveLo:
           setLoValue( qMin(dragVal + dif, (double)_hi) ); break;
+
+        default:;
       }
     }
   }
@@ -304,12 +306,13 @@ void QcRangeSlider::keyPressEvent ( QKeyEvent *e )
   Q_EMIT( action() );
 }
 
-inline void drawMarker( QPainter *p, const QPalette &plt, Qt::Orientation ort, bool first, const QPoint & pt, int len )
+inline void drawMarker( QPainter *p, const QColor &color,
+                        Qt::Orientation ort, bool first, const QPoint & pt, int len )
 {
   p->save();
   p->setRenderHint( QPainter::Antialiasing, false );
 
-  QPen pen(plt.color(QPalette::ButtonText));
+  QPen pen(color);
 
   bool vert = ort == Qt::Vertical;
 
@@ -341,11 +344,11 @@ void QcRangeSlider::paintEvent ( QPaintEvent *e )
   QPainter p(this);
   p.setRenderHint( QPainter::Antialiasing, true );
 
-  QPalette plt = palette();
+  const QPalette & plt = palette();
+  const QColor & knobClr = knobColor();
 
   RoundRect frame(rect(), 2);
-  QColor baseColor( grooveColor() );
-  drawSunken( &p, plt, frame, baseColor, hasFocus() ? focusColor() : QColor() );
+  drawSunken( &p, plt, frame, grooveColor(), hasFocus() ? focusColor() : QColor() );
 
   QRect contRect( sunkenContentsRect(rect()) );
 
@@ -380,17 +383,17 @@ void QcRangeSlider::paintEvent ( QPaintEvent *e )
     int mark_len = hndRect.height() - 4;
 
     QPoint pt( hndRect.left() + HND, hndRect.top() + 2 );
-    drawMarker( &p, plt, _ort, true, pt, mark_len );
+    drawMarker( &p, knobClr, _ort, true, pt, mark_len );
 
     pt.setX( hndRect.right() - HND + 1 );
-    drawMarker( &p, plt, _ort, false, pt, mark_len );
+    drawMarker( &p, knobClr, _ort, false, pt, mark_len );
   } else {
     int mark_len = hndRect.width() - 4;
     QPoint pt( hndRect.left() + 2, hndRect.top() + HND );
-    drawMarker( &p, plt, _ort, true, pt, mark_len );
+    drawMarker( &p, knobClr, _ort, true, pt, mark_len );
 
     pt.setY( hndRect.bottom() - HND + 1 );
-    drawMarker( &p, plt, _ort, false, pt, mark_len );
+    drawMarker( &p, knobClr, _ort, false, pt, mark_len );
   }
 
   // value region
@@ -398,7 +401,7 @@ void QcRangeSlider::paintEvent ( QPaintEvent *e )
   if( horiz ? valRect.width() > 2 : valRect.height() > 2 ) {
     p.setRenderHint( QPainter::Antialiasing, false );
 
-    QColor c( plt.color(QPalette::ButtonText) );
+    QColor c( knobClr );
     c.setAlpha(50);
 
     p.setPen(Qt::NoPen);
diff --git a/QtCollider/widgets/QcRangeSlider.h b/QtCollider/widgets/QcRangeSlider.h
index 342e1f3..3d1a42d 100644
--- a/QtCollider/widgets/QcRangeSlider.h
+++ b/QtCollider/widgets/QcRangeSlider.h
@@ -42,6 +42,7 @@ class QcRangeSlider :
   Q_PROPERTY( double step READ dummyFloat WRITE setStep )
   Q_PROPERTY( QColor grooveColor READ grooveColor WRITE setGrooveColor );
   Q_PROPERTY( QColor focusColor READ focusColor WRITE setFocusColor );
+  Q_PROPERTY( QColor knobColor READ knobColor WRITE setKnobColor );
 
   public:
     enum MouseMode {
@@ -65,6 +66,10 @@ class QcRangeSlider :
     QSize sizeHint() const;
     QSize minimumSizeHint() const;
 
+    const QColor & knobColor() const
+      { return _knobColor.isValid() ? _knobColor : palette().color(QPalette::ButtonText); }
+    void setKnobColor(const QColor &c) { _knobColor = c; update(); }
+
   public Q_SLOTS:
     void increment( double factor );
     void decrement( double factor );
@@ -92,6 +97,8 @@ class QcRangeSlider :
     QPoint dragOrigin;
     double dragVal, dragRange;
     MouseMode mouseMode;
+
+    QColor _knobColor;
 };
 
 #endif
diff --git a/QtCollider/widgets/QcScrollArea.cpp b/QtCollider/widgets/QcScrollArea.cpp
index 348a746..cc4834f 100644
--- a/QtCollider/widgets/QcScrollArea.cpp
+++ b/QtCollider/widgets/QcScrollArea.cpp
@@ -107,10 +107,8 @@ void QcScrollArea::setWidget( QObjectProxy *proxy )
 
 void QcScrollArea::addChild( QWidget* w )
 {
-  if( widget() ) {
+  if( widget() )
     w->setParent( widget() );
-    w->show();
-  }
 }
 
 QRectF QcScrollArea::innerBounds() const {
diff --git a/QtCollider/widgets/QcSlider.cpp b/QtCollider/widgets/QcSlider.cpp
index cb71388..15784eb 100644
--- a/QtCollider/widgets/QcSlider.cpp
+++ b/QtCollider/widgets/QcSlider.cpp
@@ -146,8 +146,7 @@ void QcSlider::paintEvent( QPaintEvent *e )
 
   // draw groove
   RoundRect shGroove( rGroove, 2 );
-  QColor baseColor( grooveColor() );
-  drawSunken( &p, plt, shGroove, baseColor, hasFocus() ? focusColor() : QColor() );
+  drawSunken( &p, plt, shGroove, grooveColor(), hasFocus() ? focusColor() : QColor() );
 
   // geometry
   QRect rHandle( thumbRect() );
@@ -159,7 +158,7 @@ void QcSlider::paintEvent( QPaintEvent *e )
   p.restore();
 
     // draw marker
-  QPen pen(plt.color(QPalette::ButtonText));
+  QPen pen(knobColor());
   pen.setWidth(2);
   p.setPen(pen);
   if(_ort == Qt::Horizontal) {
diff --git a/QtCollider/widgets/QcSlider.h b/QtCollider/widgets/QcSlider.h
index 6e0eef8..c2da777 100644
--- a/QtCollider/widgets/QcSlider.h
+++ b/QtCollider/widgets/QcSlider.h
@@ -37,10 +37,11 @@ class QcSlider : public QWidget, QcHelper, QcAbstractStepValue, QtCollider::Styl
   Q_PROPERTY( double step READ step WRITE setStep )
   Q_PROPERTY( double pixelStep READ pixelStep )
   Q_PROPERTY( double value READ value WRITE setValue );
-  Q_PROPERTY( QColor grooveColor READ grooveColor WRITE setGrooveColor );
-  Q_PROPERTY( QColor focusColor READ focusColor WRITE setFocusColor );
   Q_PROPERTY( int orientation READ orientation WRITE setOrientation );
   Q_PROPERTY( int handleLength READ handleLength WRITE setHandleLength );
+  Q_PROPERTY( QColor grooveColor READ grooveColor WRITE setGrooveColor );
+  Q_PROPERTY( QColor focusColor READ focusColor WRITE setFocusColor );
+  Q_PROPERTY( QColor knobColor READ knobColor WRITE setKnobColor );
 
   public Q_SLOTS:
     void increment( double factor );
@@ -65,6 +66,10 @@ class QcSlider : public QWidget, QcHelper, QcAbstractStepValue, QtCollider::Styl
     int handleLength() const { return _hndLen; }
     void setHandleLength( int i ) { _hndLen = i; updateGeometry(); update(); }
 
+    const QColor & knobColor() const
+      { return _knobColor.isValid() ? _knobColor : palette().color(QPalette::ButtonText); }
+    void setKnobColor(const QColor &c) { _knobColor = c; update(); }
+
     virtual QSize sizeHint() const;
     virtual QSize minimumSizeHint() const;
 
@@ -82,6 +87,8 @@ class QcSlider : public QWidget, QcHelper, QcAbstractStepValue, QtCollider::Styl
     double _value;
     double _step;
     int _hndLen;
+
+    QColor _knobColor;
 };
 
 #endif
diff --git a/QtCollider/widgets/QcSlider2D.cpp b/QtCollider/widgets/QcSlider2D.cpp
index 2cd1b8a..26ebe5f 100644
--- a/QtCollider/widgets/QcSlider2D.cpp
+++ b/QtCollider/widgets/QcSlider2D.cpp
@@ -139,8 +139,7 @@ void QcSlider2D::paintEvent ( QPaintEvent *e )
   QPalette plt = palette();
 
   RoundRect frame(rect(), 2);
-  QColor baseColor( grooveColor() );
-  drawSunken( &p, plt, frame, baseColor, hasFocus() ? focusColor() : QColor() );
+  drawSunken( &p, plt, frame, grooveColor(), hasFocus() ? focusColor() : QColor() );
 
   Ellipse thumb(thumbRect());
   drawRaised( &p, plt, thumb, plt.color(QPalette::Button).lighter(105) );
@@ -149,6 +148,6 @@ void QcSlider2D::paintEvent ( QPaintEvent *e )
   qreal wdif = r.width() * 0.3;
   qreal hdif = r.height() * 0.3;
   p.setPen( Qt::NoPen );
-  p.setBrush( plt.color(QPalette::ButtonText) );
+  p.setBrush( knobColor() );
   p.drawEllipse( r.adjusted( wdif, hdif, -wdif, -hdif ) );
 }
diff --git a/QtCollider/widgets/QcSlider2D.h b/QtCollider/widgets/QcSlider2D.h
index a47adf2..0242a19 100644
--- a/QtCollider/widgets/QcSlider2D.h
+++ b/QtCollider/widgets/QcSlider2D.h
@@ -39,6 +39,7 @@ class QcSlider2D : public QWidget, QcHelper, QcAbstractStepValue, QtCollider::St
   Q_PROPERTY( double step READ dummyFloat WRITE setStep )
   Q_PROPERTY( QColor grooveColor READ grooveColor WRITE setGrooveColor );
   Q_PROPERTY( QColor focusColor READ focusColor WRITE setFocusColor );
+  Q_PROPERTY( QColor knobColor READ knobColor WRITE setKnobColor );
 
   public:
     QcSlider2D();
@@ -47,6 +48,9 @@ class QcSlider2D : public QWidget, QcHelper, QcAbstractStepValue, QtCollider::St
     void setXValue( double x ) { setValue( QPointF( x, _y ), false ); }
     void setYValue( double y ) { setValue( QPointF( _x, y ), false ); }
     void setStep( double f ) { _step = f;}
+    const QColor & knobColor() const
+      { return _knobColor.isValid() ? _knobColor : palette().color(QPalette::ButtonText); }
+    void setKnobColor(const QColor &c) { _knobColor = c; update(); }
     QSize sizeHint() const { return QSize(150,150); }
     QSize minimumSizeHint() const { return QSize(30,30); }
   public Q_SLOTS:
@@ -69,6 +73,8 @@ class QcSlider2D : public QWidget, QcHelper, QcAbstractStepValue, QtCollider::St
     double _y;
     QSize _thumbSize;
     double _step;
+
+    QColor _knobColor;
 };
 
 #endif
diff --git a/QtCollider/widgets/QcTextField.h b/QtCollider/widgets/QcTextField.h
new file mode 100644
index 0000000..99d7a11
--- /dev/null
+++ b/QtCollider/widgets/QcTextField.h
@@ -0,0 +1,50 @@
+/************************************************************************
+*
+* Copyright 2010-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "../QcWidgetFactory.h"
+
+#include <QLineEdit>
+#include <QKeyEvent>
+
+class QcTextField : public QLineEdit
+{
+  Q_OBJECT
+
+public:
+  QcTextField() {}
+
+protected:
+
+  virtual void keyPressEvent( QKeyEvent *e )
+  {
+    // NOTE: We could use the returnPressed() signal, but that would still
+    // propagate the event to parent, which we want to avoid.
+    if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return)
+      Q_EMIT(action());
+    else
+      QLineEdit::keyPressEvent(e);
+  }
+
+Q_SIGNALS:
+  void action();
+};
+
+QC_DECLARE_QWIDGET_FACTORY( QcTextField );
diff --git a/QtCollider/widgets/QcTreeWidget.cpp b/QtCollider/widgets/QcTreeWidget.cpp
index 10ce140..9cf8f09 100644
--- a/QtCollider/widgets/QcTreeWidget.cpp
+++ b/QtCollider/widgets/QcTreeWidget.cpp
@@ -230,7 +230,7 @@ QcTreeWidget::ItemPtr QcTreeWidget::Item::safePtr( QTreeWidgetItem * item )
 void QcTreeWidget::Item::initialize (
   VMGlobals *g, PyrObject *obj, const QcTreeWidget::ItemPtr &ptr )
 {
-  Q_ASSERT( isKindOf( obj, class_QTreeViewItem ) );
+  Q_ASSERT( isKindOf( obj, SC_CLASS(QTreeViewItem) ) );
   if( ptr.id() ) {
     // store the SafePtr
     QcTreeWidget::ItemPtr *newPtr = new QcTreeWidget::ItemPtr( ptr );
diff --git a/QtCollider/widgets/QcWebView.cpp b/QtCollider/widgets/QcWebView.cpp
index 6bb11a7..6123680 100644
--- a/QtCollider/widgets/QcWebView.cpp
+++ b/QtCollider/widgets/QcWebView.cpp
@@ -20,15 +20,17 @@
 ************************************************************************/
 
 #include "QcWebView.h"
+#include "web_page.hpp"
 #include "../QcWidgetFactory.h"
 #include <QWebPage>
 #include <QWebFrame>
+#include <QWebElement>
 #include <QAction>
+#include <QMenu>
 #include <QShortcut>
 #include <QKeyEvent>
 #include <QApplication>
 #include <QStyle>
-#include <QClipboard>
 
 QC_DECLARE_QWIDGET_FACTORY(WebView);
 
@@ -46,10 +48,8 @@ WebView::WebView( QWidget *parent ) :
   // get in the way of rendering web pages
   setPalette( style()->standardPalette() );
 
-  QShortcut *scutCopy = new QShortcut( QKeySequence::Copy, this );
-  scutCopy->setContext( Qt::WidgetWithChildrenShortcut );
-  connect( scutCopy, SIGNAL(activated()),
-           pageAction(QWebPage::Copy), SLOT(trigger()) );
+  page->action( QWebPage::Copy )->setShortcut( QKeySequence::Copy );
+  page->action( QWebPage::Paste )->setShortcut( QKeySequence::Paste );
 
   connect( this, SIGNAL(linkClicked(QUrl)), this, SLOT(onLinkClicked(QUrl)) );
   connect( page->action(QWebPage::Reload), SIGNAL(triggered(bool)),
@@ -58,6 +58,9 @@ WebView::WebView( QWidget *parent ) :
   connect( this, SIGNAL(interpret(QString)),
            qApp, SLOT(interpret(QString)),
            Qt::QueuedConnection );
+
+  connect( page, SIGNAL(jsConsoleMsg(const QString&, int, const QString&)),
+           this, SIGNAL(jsConsoleMsg(const QString&, int, const QString&)) );
 }
 
 QString WebView::url() const
@@ -139,35 +142,50 @@ void WebView::onPageReload()
   Q_EMIT( reloadTriggered( url() ) );
 }
 
-void WebView::keyPressEvent( QKeyEvent *e )
+void WebView::contextMenuEvent ( QContextMenuEvent * event )
 {
-  if( _interpretSelection && e->modifiers() & (Qt::ControlModifier|Qt::ShiftModifier)
-      && ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) )
-  {
-    QString selection = selectedText();
-    if( !selection.isEmpty() ) {
-      Q_EMIT( interpret( selection ) );
-      return;
+    QMenu menu;
+
+    QPoint pos = event->pos();
+
+    QWebHitTestResult hitTest = page()->mainFrame()->hitTestContent( pos );
+
+    if (!hitTest.linkElement().isNull()) {
+        menu.addAction( pageAction(QWebPage::CopyLinkToClipboard) );
+        menu.addSeparator();
     }
-  }
 
-  QWebView::keyPressEvent( e );
-}
+    if (hitTest.isContentEditable() || hitTest.isContentSelected()) {
+        menu.addAction( pageAction(QWebPage::Copy) );
+        if (hitTest.isContentEditable())
+            menu.addAction( pageAction(QWebPage::Paste) );
+        menu.addSeparator();
+    }
+
+    menu.addAction( pageAction(QWebPage::Back) );
+    menu.addAction( pageAction(QWebPage::Forward) );
+    menu.addAction( pageAction(QWebPage::Reload) );
 
+    menu.exec( event->globalPos() );
+}
 
-void WebPage::triggerAction ( WebAction action, bool checked )
+void WebView::keyPressEvent( QKeyEvent *e )
 {
-  switch ( action ) {
-    case QWebPage::Reload:
-      if( _delegateReload ) return;
-      break;
-    case QWebPage::Copy:
-      QApplication::clipboard()->setText( selectedText() );
-      return;
-    default: ;
-  }
+    int key = e->key();
+    int mods = e->modifiers();
+
+    if( _interpretSelection &&
+            ( key == Qt::Key_Enter ||
+              ( key == Qt::Key_Return && mods & (Qt::ControlModifier|Qt::ShiftModifier) ) ) )
+    {
+        QString selection = selectedText();
+        if( !selection.isEmpty() ) {
+            Q_EMIT( interpret( selection ) );
+            return;
+        }
+    }
 
-  QWebPage::triggerAction( action, checked );
+    QWebView::keyPressEvent( e );
 }
 
 } // namespace QtCollider
diff --git a/QtCollider/widgets/QcWebView.h b/QtCollider/widgets/QcWebView.h
index 5eb596c..0f5905c 100644
--- a/QtCollider/widgets/QcWebView.h
+++ b/QtCollider/widgets/QcWebView.h
@@ -24,6 +24,7 @@
 
 #include <QWebView>
 #include <QWebPage>
+#include <QUrl>
 
 namespace QtCollider {
 
@@ -53,6 +54,7 @@ Q_SIGNALS:
   void linkActivated( const QString & );
   void reloadTriggered( const QString & );
   void interpret( const QString & code );
+  void jsConsoleMsg( const QString &, int, const QString & );
 
 public:
 
@@ -71,13 +73,12 @@ public:
   void setInterpretSelection( bool b ) { _interpretSelection = b; }
 
   inline static QUrl urlFromString( const QString & str ) {
-    QUrl url( str );
-    if( url.scheme().isEmpty() ) url.setScheme( "file" );
-    return url;
+      return QUrl::fromUserInput(str);
   }
 
 protected:
   virtual void keyPressEvent( QKeyEvent * );
+  virtual void contextMenuEvent ( QContextMenuEvent * );
 
 private Q_SLOTS:
   void onLinkClicked( const QUrl & );
@@ -87,22 +88,6 @@ private:
   bool _interpretSelection;
 };
 
-class WebPage : public QWebPage
-{
-  Q_OBJECT
-
-public:
-
-  WebPage( QObject *parent ) : QWebPage( parent ), _delegateReload(false) {}
-  virtual void triggerAction ( WebAction action, bool checked = false );
-  bool delegateReload() const { return _delegateReload; }
-  void setDelegateReload( bool flag ) { _delegateReload = flag; }
-
-private:
-
-  bool _delegateReload;
-};
-
 } // namespace QtCollider
 
 #endif // QC_WEB_VIEW_H
diff --git a/QtCollider/widgets/soundfileview/view.cpp b/QtCollider/widgets/soundfileview/view.cpp
index 8359cbb..cfc48ce 100644
--- a/QtCollider/widgets/soundfileview/view.cpp
+++ b/QtCollider/widgets/soundfileview/view.cpp
@@ -51,18 +51,19 @@ QcWaveform::QcWaveform( QWidget * parent ) : QWidget( parent ),
   _showCursor(false),
   _cursorEditable(true),
   _cursorPos(0),
-  _cursorColor(QColor(255,0,0)),
 
   _showGrid(true),
   _gridResolution(1.0),
   _gridOffset(0.0),
-  _gridColor(QColor(100,100,200)),
 
   _beg(0.0),
   _dur(0.0),
   _yZoom(1.f),
 
   pixmap(0),
+  _bkgColor( QColor(0,0,0) ),
+  _cursorColor( QColor(255,0,0) ),
+  _gridColor( QColor(100,100,200) ),
   _peakColor( QColor(242,178,0) ),
   _rmsColor( QColor(255,255,0) ),
   dirty(false),
@@ -71,13 +72,8 @@ QcWaveform::QcWaveform( QWidget * parent ) : QWidget( parent ),
   memset( &sfInfo, 0, sizeof(SF_INFO) );
 
   setFocusPolicy( Qt::StrongFocus );
-
   setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
-
-  QPalette plt(palette());
-  plt.setColor(QPalette::Window, Qt::black);
-  setPalette(plt);
-  setAutoFillBackground(true);
+  setAttribute( Qt::WA_OpaquePaintEvent, true );
 }
 
 QcWaveform::~QcWaveform()
@@ -498,6 +494,8 @@ void QcWaveform::paintEvent( QPaintEvent *ev )
     return;
   }
 
+  p.fillRect( rect(), _bkgColor );
+
   // draw waveform on pixmap
 
   if( _drawWaveform && dirty ) {
diff --git a/QtCollider/widgets/soundfileview/view.hpp b/QtCollider/widgets/soundfileview/view.hpp
index b9569c2..0294816 100644
--- a/QtCollider/widgets/soundfileview/view.hpp
+++ b/QtCollider/widgets/soundfileview/view.hpp
@@ -62,19 +62,21 @@ class QcWaveform : public QWidget, public QcHelper {
   Q_PROPERTY( float scrollPos READ scrollPos WRITE setScrollPos );
   Q_PROPERTY( int currentSelection READ currentSelection WRITE setCurrentSelection );
   Q_PROPERTY( VariantList selections READ selections );
-  Q_PROPERTY( QColor peakColor READ dummyColor WRITE setPeakColor );
-  Q_PROPERTY( QColor rmsColor READ dummyColor WRITE setRmsColor );
+
   Q_PROPERTY( float yZoom READ yZoom WRITE setYZoom );
   Q_PROPERTY( float xZoom READ xZoom WRITE setXZoom );
   Q_PROPERTY( bool cursorVisible READ cursorVisible WRITE setCursorVisible );
   Q_PROPERTY( bool cursorEditable READ cursorEditable WRITE setCursorEditable );
   Q_PROPERTY( int cursorPosition READ cursorPosition WRITE setCursorPosition );
-  Q_PROPERTY( QColor cursorColor READ cursorColor WRITE setCursorColor );
   Q_PROPERTY( bool gridVisible READ gridVisible WRITE setGridVisible );
   Q_PROPERTY( float gridOffset READ gridOffset WRITE setGridOffset );
   Q_PROPERTY( float gridResolution READ gridResolution WRITE setGridResolution );
-  Q_PROPERTY( QColor gridColor READ gridColor WRITE setGridColor );
   Q_PROPERTY( bool drawsWaveform READ drawsWaveform WRITE setDrawsWaveform );
+  Q_PROPERTY( QColor background READ background WRITE setBackground );
+  Q_PROPERTY( QColor peakColor READ peakColor WRITE setPeakColor );
+  Q_PROPERTY( QColor rmsColor READ rmsColor WRITE setRmsColor );
+  Q_PROPERTY( QColor cursorColor READ cursorColor WRITE setCursorColor );
+  Q_PROPERTY( QColor gridColor READ gridColor WRITE setGridColor );
 
 public:
   Q_INVOKABLE void load( const QString& filename );
@@ -131,8 +133,6 @@ public:
   void setCursorVisible( bool b ) { _showCursor = b; update(); }
   int cursorPosition() const { return _cursorPos; }
   void setCursorPosition( int pos ) { _cursorPos = pos; update(); }
-  QColor cursorColor() const { return _cursorColor; }
-  void setCursorColor( const QColor &c ) { _cursorColor = c; update(); }
   bool cursorEditable() const { return _cursorEditable; }
   void setCursorEditable( bool b ) { _cursorEditable = b; }
 
@@ -142,17 +142,29 @@ public:
   void setGridOffset( float f ) { _gridOffset = f; update(); }
   float gridResolution() const { return _gridResolution; }
   void setGridResolution( float f ) { _gridResolution = f; update(); }
-  QColor gridColor() const { return _gridColor; }
-  void setGridColor( const QColor &c ) { _gridColor = c; update(); }
-
-  void setPeakColor( const QColor &clr ) { _peakColor = clr; redraw(); }
-  void setRmsColor( const QColor &clr ) { _rmsColor = clr; redraw(); }
 
   bool drawsWaveform() const { return _drawWaveform; }
   void setDrawsWaveform( bool b ) { _drawWaveform = b; update(); }
   VariantList waveColors() const;
   void setWaveColors( const VariantList & );
 
+  const QColor & background() const { return _bkgColor; }
+  void setBackground( const QColor &c )
+  {
+      if(_bkgColor == c) return;
+      _bkgColor = c;
+      setAttribute(Qt::WA_OpaquePaintEvent, c.isValid() && c.alpha() == 255);
+      update();
+  }
+  const QColor & peakColor() const { return _peakColor; }
+  void setPeakColor( const QColor &clr ) { _peakColor = clr; redraw(); }
+  const QColor & rmsColor() const { return _rmsColor; }
+  void setRmsColor( const QColor &clr ) { _rmsColor = clr; redraw(); }
+  const QColor & cursorColor() const { return _cursorColor; }
+  void setCursorColor( const QColor &c ) { _cursorColor = c; update(); }
+  const QColor & gridColor() const { return _gridColor; }
+  void setGridColor( const QColor &c ) { _gridColor = c; update(); }
+
   QSize sizeHint() const { return QSize( 400, 200 ); }
   QSize minimumSizeHint() const { return QSize( 100, 20 ); }
 
@@ -218,14 +230,12 @@ private:
   // cursor
   bool _showCursor;
   sf_count_t _cursorPos;
-  QColor _cursorColor;
   bool _cursorEditable;
 
   //grid
   bool _showGrid;
   float _gridResolution;
   float _gridOffset;
-  QColor _gridColor;
 
   // view
   double _beg;
@@ -235,8 +245,11 @@ private:
 
   // painting
   QPixmap *pixmap;
+  QColor _bkgColor;
   QColor _peakColor;
   QColor _rmsColor;
+  QColor _cursorColor;
+  QColor _gridColor;
   bool dirty;
   bool _drawWaveform;
   QList<QColor> _waveColors;
diff --git a/QtCollider/widgets/web_page.cpp b/QtCollider/widgets/web_page.cpp
new file mode 100644
index 0000000..53aaa71
--- /dev/null
+++ b/QtCollider/widgets/web_page.cpp
@@ -0,0 +1,51 @@
+/************************************************************************
+*
+* Copyright 2011-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#include "web_page.hpp"
+
+#include <QApplication>
+#include <QClipboard>
+
+namespace QtCollider {
+
+void WebPage::triggerAction ( WebAction action, bool checked )
+{
+  switch ( action ) {
+    case QWebPage::Reload:
+      if( _delegateReload ) return;
+      break;
+    case QWebPage::Copy:
+      // ignore text formatting, copy only plain text:
+      QApplication::clipboard()->setText( selectedText() );
+      return;
+    default:
+      break;
+  }
+
+  QWebPage::triggerAction( action, checked );
+}
+
+void WebPage::javaScriptConsoleMessage ( const QString & msg, int line, const QString & src )
+{
+  Q_EMIT( jsConsoleMsg(msg,line,src) );
+}
+
+} // namespace QtCollider
diff --git a/QtCollider/widgets/web_page.hpp b/QtCollider/widgets/web_page.hpp
new file mode 100644
index 0000000..06f89a5
--- /dev/null
+++ b/QtCollider/widgets/web_page.hpp
@@ -0,0 +1,51 @@
+/************************************************************************
+*
+* Copyright 2011-2012 Jakob Leben (jakob.leben at gmail.com)
+*
+* This file is part of SuperCollider Qt GUI.
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+************************************************************************/
+
+#ifndef QC_WEB_PAGE_HPP_INCLUDED
+#define QC_WEB_PAGE_HPP_INCLUDED
+
+#include <QWebPage>
+
+namespace QtCollider {
+
+class WebPage : public QWebPage
+{
+  Q_OBJECT
+
+public:
+
+  WebPage( QObject *parent ) : QWebPage( parent ), _delegateReload(false) {}
+  virtual void triggerAction ( WebAction action, bool checked = false );
+  virtual void javaScriptConsoleMessage ( const QString &, int, const QString & );
+  bool delegateReload() const { return _delegateReload; }
+  void setDelegateReload( bool flag ) { _delegateReload = flag; }
+
+Q_SIGNALS:
+  void jsConsoleMsg( const QString &, int, const QString & );
+
+private:
+
+  bool _delegateReload;
+};
+
+} // namespace QtCollider
+
+#endif // QC_WEB_PAGE_HPP_INCLUDED
diff --git a/README.txt b/README.txt
index 6f4d16c..3a2f3ea 100644
--- a/README.txt
+++ b/README.txt
@@ -23,9 +23,6 @@ Platform specific comments:
 And be careful you're not using TextEdit or a web browser instead of the SuperCollider application when you try to execute code; SC's text editor interface is a lot like TextEdit, but only the SC editor can run code when you hit Enter.
 
 
-[Windows] The windows version of SuperCollider is called PsyCollider. Key commands differ from the Mac, but almost all code should work the same. The SwingOSC Java based GUI library is used here, however, for GUIs. You must use JMouseX/JMouseY in particular; PsyCollider does not support MouseX/MouseY UGens.
-
-
 [Linux] Most people use SuperCollider from emacs or gedit; there are some alternative editors available. For more information on Linux specific issues, check the "README_LINUX.txt" file included in the source package, and the README in the folder editors/scel for information on the emacs editor.
 
 
diff --git a/README_LINUX.txt b/README_LINUX.txt
index 18e4325..fb36a62 100644
--- a/README_LINUX.txt
+++ b/README_LINUX.txt
@@ -62,10 +62,10 @@ build requirements (optional features)
 (most of these will be available in your linux distribution as packages )
 ------------------------------------------------------------------------
 
- * qt >= 4.5 (+ qtwebkit)
-   http://qt.nokia.com/
-   cross-platform graphical user interface library, for sclang's GUI
-   classes
+ * Qt >= 4.7 (+ qtwebkit)
+   http://qt-project.org/
+   cross-platform graphical user interface library, for Qt IDE and
+   sclang's Qt GUI kit
 
  * alsa
    http://www.alsa-project.org/
@@ -218,13 +218,6 @@ to put Extensions to the class library, in a folder called Extensions.
 the runtime directory is either the current working directory or the
 path specified with the `-d' option.
 
-for advanced setups, sclang's compilation search path can be
-customized with a library configuration file. an example is provided
-in `linux/examples/sclang.cfg'; install it as `/etc/sclang.cfg' or
-`~/.config/SuperCollider/sclang.cfg'. This config file is only needed when you want to
-_exclude_ directories from the class library. Otherwise (so in most cases)
-it is not needed.
-
 ------------------------------------------------------------------------
 environment
 ------------------------------------------------------------------------
diff --git a/README_OS_X.txt b/README_OS_X.txt
index b6c0fb4..145ecd5 100644
--- a/README_OS_X.txt
+++ b/README_OS_X.txt
@@ -32,7 +32,7 @@ Requirements:
  * Mac OS X 10.4.9 or greater
  * Cmake 2.7 or greater
  * Xcode Tools 2.4.1 or greater
- * Qt 4: http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x/
+ * Qt libraries 4.7 or greater: http://qt-project.org/downloads
 
 To build SuperCollider with Cmake, it is recommended to create a "build"
 folder (to keep the built files neatly all together) in the root of the 
@@ -77,6 +77,31 @@ For the BIG universal binary (on 10.6), use:
 
 	cmake -DCMAKE_OSX_ARCHITECTURES='i386;x86_64' ..
 
+cmake -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.6 -GXcode
+**** 10.8 warning ****
+
+On 10.8 you need to:
+
+compile against the 10.7 SDK
+build with the Xcode generator (add -GXcode to your cmake flags).
+
+Then, build the install target in Xcode.
+
+I started working on the bluetooth issues today actually, but the changes aren't trivial.
+
+For some reason, the 10.7 SDK choice doesn't seem to percolate into the makefile version created by cmake. You can either build with an Xcode file:
+
+(an example from josh on 10.8 with Xcode 4.5: cmake -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.6 -GXcode )
+
+your build will be in the "Install" folder in the build directory.
+
+or add the following flags for isysroot:
+
+	-DCMAKE_CXX_FLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/" -DCMAKE_C_FLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/" 
+
+Finally - a cmake command that builds on 10.8 currently:
+
+cmake -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.7 -DCMAKE_CXX_FLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/"  -DCMAKE_C_FLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/" -DCMAKE_BUILD_TYPE="Release"  ..
 
 Qt GUI:
 -------
@@ -121,78 +146,6 @@ universal binary. This UB contains ppc, i386 and x86_64 archs.
 
 
 ------------------------------------------------------------------------
-Building - 10.6 and 64-bit scsynth and plugins
-------------------------------------------------------------------------
-
-*** THIS IS OUTDATED, cmake on 10.6 will build 64-bit by default ***
-
-You will need to do the following to build a 64-bit scsynth and plugins.
- * Open the XCode projects for Synth AND Plugins
- * Double-click each target, and change the
-	 * Architectures setting to 'Standard (32-bit/64-bit Universal)'
-	 * Base-SDK to 10.5
-	 * (optional and recommended): Compiler to GCC 4.2 (if available)
-
-This definitely works in Mac OS 10.6, probably 10.5, and these builds will NOT 
-support 10.4.
-
-XCode in 10.6 uses the GCC 4.2 compiler by default, and this compiler will NOT 
-work with the 10.4 SDK (the default SDK). You will need to either set your build 
-SDK to 10.5 or 10.6 inside each XCode project, or inspect (double-click) each 
-target and set GCC 4.0 as your compiler.
-
-UPDATE - There is now a Deployment32-64 build style that should build 
-SuperCollider from source out of the box on 10.6. You can also use the compile.sh 
-script and pass in ARCHS=32_64 as a flag:
-    ./compile.sh ARCHS=32_64
-This should build a 32/64 bit version of scsynth and the plugins and a 32-bit 
-SuperCollider.app. This build style should use the 10.5 SDK by default.
-
-The 10.6 SDK still has some problems. If you are on 10.6, please make sure you 
-have installed the optional 10.5 SDK, installed with the Apple Developer Tools.
-
-
-------------------------------------------------------------------------
-Building SuperCollider THE OLD WAY (no cmake - just xcode required)
-------------------------------------------------------------------------
-
-*** THIS IS OUTDATED, instructions below will not work, use cmake instead ***
-
-Requirements:
- * Mac OS X 10.4.9 or greater
- * Xcode Tools 2.4.1 or greater.
-
-The easy way:
-	cd mac
-	./clean-compile.sh
-	cd ../../package
-	./package.sh
-
-Your build will be placed in a directory named "SuperCollider".
-
-If you run into problems building the most likely cause is that you are
-not running the correct version of the Xcode tools. You must be running
-2.4.1 or above!
-
-Building within Xcode:
-	There are three projects that should be BUILT IN THIS ORDER:
-
-	Synth
-	 - the synthesis server application
-
-	Plugins
-	 - the UGens and plugins
-
-	Language
-	 - the OS X application with text editor, language interpreter,
-	   event scheduling etc.
-
-The package.sh script does several maintenance tasks (fixing creator
-codes, exporting from svn, etc) and creates a ready-to-distribute zip of
-SuperCollider.
-
-
-------------------------------------------------------------------------
 Outro
 ------------------------------------------------------------------------
 
diff --git a/README_WINDOWS.txt b/README_WINDOWS.txt
index 2942351..e43258c 100644
--- a/README_WINDOWS.txt
+++ b/README_WINDOWS.txt
@@ -1,5 +1,5 @@
 ------------------------------------------------------------------------
-Supercollider 3.5 for Windows
+Supercollider 3.6 for Windows
 ------------------------------------------------------------------------
 
 This is the Windows version of James McCartney's SuperCollider synthesis 
@@ -19,19 +19,11 @@ should subscribe to the mailing lists:
 System Requirements
 ------------------------------------------------------------------------
 
-* Windows 7/Vista/XP/2000
-* (Optional) Gedit text editor
+** Operating System **
 
-The preferred way to use SuperCollider on Windows is in combination
-with the Gedit text editor. SuperCollider for Windows comes with
-Sced - a plugin for Gedit that provides syntax highlighting for
-SuperCollider code, and allows easy interaction with SuperCollider
-from within the editor.
+Windows 7/Vista/XP/2000
 
-NOTE: There is currently an issue on Windows XP that the default (local)
-synthesis server can not be started from within Gedit. To work around
-that, either use the internal server, or start up a server from command
-line and connect to it from Gedit. This issue is not present on Windows 7.
+** Sound Card **
 
 Most common sound cards will work fine - the sound card should be one
 that is supported by PortAudio (http://www.portaudio.com/). If you have
@@ -43,37 +35,25 @@ for advice on how to tune your operating system to achieve the best results
 Installation
 ------------------------------------------------------------------------
 
-If you intend to use SuperCollider in combination with Gedit, please
-install the latest Gedit version for Windows prior to installing
-SuperCollider. You can download Gedit from this address:
+Simply run the installer, and choose a path where all the application
+files will be unpacked.
 
-http://ftp.gnome.org/pub/GNOME/binaries/win32/gedit/2.30/gedit-setup-2.30.1-1.exe
+After installation, you can use SuperCollider in two ways, described below:
+* Using the provided SuperCollider IDE (recommended)
+* In command line mode
 
-The SuperCollider installer will ask you whether you also want to install
-Sced - the SuperCollider plugin for Gedit. If you decide so, you will be
-asked to specify the directory where you have installed Gedit (the installer
-will probably guess that automatically).
-
-After installation, you can use SuperCollider in two ways:
-A) From within Gedit text editor (if you chose to install Sced).
-B) Via the command-line.
-
-The two ways are described below.
+NOTE: Location of extensions and configuration files has changed in 3.6.1.
+If you want to keep those from previous versions, please read the section
+about changed locations below.
 
 ------------------------------------------------------------------------
-Using SuperCollider with Gedit text editor
+Using the SuperCollider IDE
 ------------------------------------------------------------------------
 
-This is the preferred and more powerful way.
+To start up the IDE, run the scide.exe program found within the
+installation folder.
 
-1. Start up Gedit, and first enable the Sced plugin in the preferences
-dialog: "Edit > Preferences > Plugins". You only need to do this step
-once. After that the plugin will stay enabled whenever you restart Gedit.
-
-2. To start up SuperCollider, click on the menu entry
-"Tools > SuperCollider Mode". This will start the interpreter and add
-a new menu named "SuperCollider", which gives you many options for
-further interaction with the interpreter and the sound synthesis server.
+You can get more help on using the IDE via the Help menu.
 
 ------------------------------------------------------------------------
 Using SuperCollider in command line mode
@@ -96,13 +76,37 @@ the up and down arrow keys.
 - Ctrl+D: to quit the SuperCollider command line
 
 ------------------------------------------------------------------------
-Paths and files you may want to be aware of
+NOTE: Changed location of extensions and configuration files
 ------------------------------------------------------------------------
 
-- $USER_HOME$\SuperCollider\startup.scd : user startup file
+The location of application-related user data has moved in accordance
+with Windows policies. This means that from version 3.6.1 on, SuperCollider
+will not pickup extensions, startup file, and configuration files from
+locations used by previous versions.
+
+To continue using extensions and configuration from versions prior to 3.6.1,
+please copy the contents of the old directory to the new one, given below:
+
+The new directory:
+
+  Windows 7 / Vista:
+    C:\Users\<USERNAME>\AppData\Local\SuperCollider
+  Windows XP:
+    C:\Documents and Settings\<USERNAME>\Local Settings\Application Data\SuperCollider
+
+The old directories:
+
+  Between versions 3.6.0 and 3.6.1:
+    Windows 7 / Vista:
+      C:\Users\<USERNAME>\AppData\Roaming\SuperCollider
+    Windows XP:
+      C:\Documents and Settings\<USERNAME>\Application Data\SuperCollider
 
-- $USER_HOME$\SuperCollider\Extensions : user extension folder for classes,
-plugins and help files
+  Prior to version 3.6.0:
+    Windows 7 / Vista:
+      C:\Users\<USERNAME>\SuperCollider
+    Windows XP:
+      C:\Documents and Settings\<USERNAME>\SuperCollider
 
 ------------------------------------------------------------------------
 Outro
diff --git a/SCClassLibrary/Common/Audio/BasicOpsUGen.sc b/SCClassLibrary/Common/Audio/BasicOpsUGen.sc
index 3418fa7..9188219 100644
--- a/SCClassLibrary/Common/Audio/BasicOpsUGen.sc
+++ b/SCClassLibrary/Common/Audio/BasicOpsUGen.sc
@@ -51,6 +51,9 @@ UnaryOpUGen : BasicOpUGen {
 		inputs = theInput.asArray;
 	}
 
+	optimizeGraph {
+		super.performDeadCodeElimination
+	}
 }
 
 BinaryOpUGen : BasicOpUGen {
@@ -89,7 +92,6 @@ BinaryOpUGen : BasicOpUGen {
 		if (selector == '/', {
 			if (b == 1.0, { ^a });
 			if (b == -1.0, { ^a.neg });
-			if (b.rate == 'scalar', { ^a * b.reciprocal });
 		})})})});
 
  		^super.new1(rate, selector, a, b)
@@ -102,41 +104,161 @@ BinaryOpUGen : BasicOpUGen {
 	}
 
 	optimizeGraph {
-		var a, b, muladd;
+		//this.constantFolding;
+
+
+		if (super.performDeadCodeElimination) {
+			^this
+		};
+
+		if (operator == '+') {
+			this.optimizeAdd;
+			^this;
+		};
+
+		if (operator == '-') {
+			this.optimizeSub
+		};
+	}
+
+	optimizeAdd {
+		var optimizedUGen;
+
+		// create a Sum3 if possible.
+		optimizedUGen = this.optimizeToSum3;
+
+		// create a Sum4 if possible.
+		if (optimizedUGen.isNil) {
+			optimizedUGen = this.optimizeToSum4
+		};
+
+		// create a MulAdd if possible.
+		if (optimizedUGen.isNil) {
+			optimizedUGen = this.optimizeToMulAdd
+		};
+
+		// optimize negative additions
+		if (optimizedUGen.isNil) {
+			optimizedUGen = this.optimizeAddNeg
+		};
+
+		if (optimizedUGen.notNil) {
+			synthDef.replaceUGen(this, optimizedUGen);
+			optimizedUGen.optimizeGraph
+		};
+	}
+
+	optimizeAddNeg {
+		var a, b;
 		#a, b = inputs;
 
-		//this.constantFolding;
+		if (b.isKindOf(UnaryOpUGen) and: { b.operator == 'neg' }) {
+			// a + b.neg -> a - b
+			if (b.descendants.size == 1) {
+				buildSynthDef.removeUGen(b);
+			} {
+				b.descendants.remove(this);
+			};
+			^(a - b.inputs[0])
+		};
 
-		if (operator == '+', {
-			// create a MulAdd if possible.
-			if (a.isKindOf(BinaryOpUGen) and: { a.operator == '*'
-				and: { a.descendants.size == 1 }},
-			{
-				if (MulAdd.canBeMulAdd(a.inputs[0], a.inputs[1], b), {
-					buildSynthDef.removeUGen(a);
-					muladd = MulAdd.new(a.inputs[0], a.inputs[1], b);
-				},{
-				if (MulAdd.canBeMulAdd(a.inputs[1], a.inputs[0], b), {
-					buildSynthDef.removeUGen(a);
-					muladd = MulAdd.new(a.inputs[1], a.inputs[0], b)
-				})});
-			},{
-			if (b.isKindOf(BinaryOpUGen) and: { b.operator == '*'
-				and: { b.descendants.size == 1 }},
-			{
-				if (MulAdd.canBeMulAdd(b.inputs[0], b.inputs[1], a), {
-					buildSynthDef.removeUGen(b);
-					muladd = MulAdd.new(b.inputs[0], b.inputs[1], a)
-				},{
-				if (MulAdd.canBeMulAdd(b.inputs[1], b.inputs[0], a), {
-					buildSynthDef.removeUGen(b);
-					muladd = MulAdd.new(b.inputs[1], b.inputs[0], a)
-				})});
-			})});
-			if (muladd.notNil, {
-				synthDef.replaceUGen(this, muladd);
-			});
-		});
+		if (a.isKindOf(UnaryOpUGen) and: { a.operator == 'neg' }) {
+			// a.neg + b -> b - a
+			if (a.descendants.size == 1) {
+				buildSynthDef.removeUGen(a);
+			} {
+				a.descendants.remove(this);
+			};
+			^(b - a.inputs[0])
+		};
+		^nil
+	}
+
+	optimizeToMulAdd {
+		var a, b;
+		#a, b = inputs;
+
+		if (a.isKindOf(BinaryOpUGen) and: { a.operator == '*'
+			and: { a.descendants.size == 1 }})
+		{
+			if (MulAdd.canBeMulAdd(a.inputs[0], a.inputs[1], b)) {
+				buildSynthDef.removeUGen(a);
+				^MulAdd.new(a.inputs[0], a.inputs[1], b);
+			};
+
+			if (MulAdd.canBeMulAdd(a.inputs[1], a.inputs[0], b)) {
+				buildSynthDef.removeUGen(a);
+				^MulAdd.new(a.inputs[1], a.inputs[0], b)
+			};
+		};
+
+		if (b.isKindOf(BinaryOpUGen) and: { b.operator == '*'
+			and: { b.descendants.size == 1 }})
+		{
+			if (MulAdd.canBeMulAdd(b.inputs[0], b.inputs[1], a)) {
+				buildSynthDef.removeUGen(b);
+				^MulAdd.new(b.inputs[0], b.inputs[1], a)
+			};
+
+			if (MulAdd.canBeMulAdd(b.inputs[1], b.inputs[0], a)) {
+				buildSynthDef.removeUGen(b);
+				^MulAdd.new(b.inputs[1], b.inputs[0], a)
+			};
+		};
+		^nil
+	}
+
+	optimizeToSum3 {
+		var a, b;
+		#a, b = inputs;
+
+		if (a.isKindOf(BinaryOpUGen) and: { a.operator == '+'
+			and: { a.descendants.size == 1 }}) {
+			buildSynthDef.removeUGen(a);
+			^Sum3(a.inputs[0], a.inputs[1], b);
+		};
+
+		if (b.isKindOf(BinaryOpUGen) and: { b.operator == '+'
+			and: { b.descendants.size == 1 }}) {
+			buildSynthDef.removeUGen(b);
+			^Sum3(b.inputs[0], b.inputs[1], a);
+		};
+		^nil
+	}
+
+	optimizeToSum4 {
+		var a, b;
+		#a, b = inputs;
+
+		if (a.isKindOf(Sum3) and: { a.descendants.size == 1 }) {
+			buildSynthDef.removeUGen(a);
+			^Sum4(a.inputs[0], a.inputs[1], a.inputs[2], b);
+		};
+
+		if (b.isKindOf(Sum3) and: { b.descendants.size == 1 }) {
+			buildSynthDef.removeUGen(b);
+			^Sum4(b.inputs[0], b.inputs[1], b.inputs[2], a);
+		};
+		^nil
+	}
+
+	optimizeSub {
+		var a, b, replacement;
+		#a, b = inputs;
+
+		if (b.isKindOf(UnaryOpUGen) and: { b.operator == 'neg' }) {
+			// a - b.neg -> a + b
+			if (b.descendants.size == 1) {
+				buildSynthDef.removeUGen(b);
+			} {
+				b.descendants.remove(this);
+			};
+			replacement = BinaryOpUGen('+', a, b.inputs[0]);
+
+			synthDef.replaceUGen(this, replacement);
+			replacement.optimizeGraph
+		};
+		^nil
 	}
 
 	constantFolding {
@@ -284,3 +406,43 @@ MulAdd : UGen {
 		^false
 	}
 }
+
+Sum3 : UGen {
+	*new { arg in0, in1, in2;
+		^this.multiNew(nil, in0, in1, in2)
+	}
+
+	*new1 { arg dummyRate, in0, in1, in2;
+		var argArray, rate, sortedArgs;
+		if (in2 == 0.0) { ^(in0 + in1) };
+		if (in1 == 0.0) { ^(in0 + in2) };
+		if (in0 == 0.0) { ^(in1 + in2) };
+
+		argArray = [in0, in1, in2];
+		rate = argArray.rate;
+		sortedArgs = argArray.sort {|a b| a.rate < b.rate};
+
+		^super.new1(rate, *sortedArgs)
+	}
+}
+
+Sum4 : UGen {
+	*new { arg in0, in1, in2, in3;
+		^this.multiNew(nil, in0, in1, in2, in3)
+	}
+
+	*new1 { arg dummyRate, in0, in1, in2, in3;
+		var argArray, rate, sortedArgs;
+
+		if (in0 == 0.0) { ^Sum3.new1(nil, in1, in2, in3) };
+		if (in1 == 0.0) { ^Sum3.new1(nil, in0, in2, in3) };
+		if (in2 == 0.0) { ^Sum3.new1(nil, in0, in1, in3) };
+		if (in3 == 0.0) { ^Sum3.new1(nil, in0, in1, in2) };
+
+		argArray = [in0, in1, in2, in3];
+		rate = argArray.rate;
+		sortedArgs = argArray.sort {|a b| a.rate < b.rate};
+
+		^super.new1(rate, *sortedArgs)
+	}
+}
diff --git a/SCClassLibrary/Common/Audio/DelayWr.sc b/SCClassLibrary/Common/Audio/DelayWr.sc
index 16ac31b..dd853a6 100644
--- a/SCClassLibrary/Common/Audio/DelayWr.sc
+++ b/SCClassLibrary/Common/Audio/DelayWr.sc
@@ -2,23 +2,22 @@ PingPong {
 	//your buffer should be the same numChannels as your inputs
 	*ar { arg  bufnum=0,  inputs, delayTime, feedback=0.7, rotate=1;
 
-		var trig, delayedSignals;
+		var delaySamps = max(0, delayTime * SampleRate.ir - ControlDur.ir).round,
+		phase, feedbackChannels, delayedSignals,
+		frames = BufFrames.kr(bufnum);
 
-		trig = Impulse.kr(delayTime.reciprocal);
+		phase = Phasor.ar(0, 1, 0, frames);
 
-		delayedSignals =
-			PlayBuf.ar(inputs.numChannels,bufnum,1.0,trig,
-				0,
-				0.0).rotate(rotate)
-			* feedback + inputs;
+		feedbackChannels = LocalIn.ar(inputs.size) * feedback;
 
-		RecordBuf.ar(delayedSignals,bufnum,0.0,1.0,0.0,1.0,0.0,trig);
+ 		delayedSignals = BufRd.ar(inputs.size, bufnum, (phase - delaySamps).wrap(0, frames), 0);
+		LocalOut.ar(delayedSignals);
 
+		BufWr.ar((inputs + feedbackChannels).rotate(rotate) <! delayedSignals.asArray.first, bufnum, phase, 1);
 		^delayedSignals
 	}
 }
 
-
 /* old sc3d5 version
 PingPong {
 	*ar { arg bank, index, inputs, delayTime, feedback=0.7, rotate=1, interpolationType=2;
diff --git a/SCClassLibrary/Common/Audio/Delays.sc b/SCClassLibrary/Common/Audio/Delays.sc
index 7774443..e1a8c86 100644
--- a/SCClassLibrary/Common/Audio/Delays.sc
+++ b/SCClassLibrary/Common/Audio/Delays.sc
@@ -1,4 +1,4 @@
-Delay1 : UGen {
+Delay1 : PureUGen {
 
 	*ar { arg in = 0.0, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', in).madd(mul, add)
@@ -14,7 +14,7 @@ Delay2 : Delay1 { }
 
 // these delays use real time allocated memory.
 
-DelayN : UGen {
+DelayN : PureUGen {
 
 	*ar { arg in = 0.0, maxdelaytime = 0.2, delaytime = 0.2, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', in.asAudioRateInput, maxdelaytime, delaytime).madd(mul, add)
@@ -28,7 +28,7 @@ DelayL : DelayN { }
 DelayC : DelayN { }
 
 
-CombN : UGen {
+CombN : PureUGen {
 
 	*ar { arg in = 0.0, maxdelaytime = 0.2, delaytime = 0.2, decaytime = 1.0, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', in.asAudioRateInput(this), maxdelaytime, delaytime, decaytime).madd(mul, add)
diff --git a/SCClassLibrary/Common/Audio/Env.sc b/SCClassLibrary/Common/Audio/Env.sc
index 7d0b7c1..7d13fec 100644
--- a/SCClassLibrary/Common/Audio/Env.sc
+++ b/SCClassLibrary/Common/Audio/Env.sc
@@ -1,11 +1,18 @@
-AbstractEnv {
-	var <levels;
-	var <times;
-	var <curves = 'lin';		// can also be 'exp', 'sin', 'cos', a float curve value,
-							// or an array of curve values
-	var <array;
+Env {
+	var <levels, <times, <curves;
+	var <releaseNode;	// index of release level, if nil then ignore release
+	var <loopNode;	// index of loop start level, if nil then does not loop
+	var <offset; 		// an offset to all time values (only works in IEnvGen)
+
+	var <array;		// cache for osc-conform data
 	classvar <shapeNames;
 
+
+	*new { arg levels = #[0,1,0], times = #[1,1], curve = \lin, releaseNode, loopNode, offset = 0;
+		times = times.asArray.wrapExtend(levels.size - 1);
+		^super.newCopyArgs(levels, times, curve ? \lin, releaseNode, loopNode, offset)
+	}
+
 	*newClear { arg numSegments = 8;
 		// make an envelope for filling in later.
 		^this.new(Array.fill(numSegments + 1, 0), Array.fill(numSegments, 1))
@@ -27,6 +34,15 @@ AbstractEnv {
 			\cub -> 7,
 			\cubed -> 7
 		];
+		shapeNames.freeze;
+	}
+
+	kr { arg doneAction = 0, gate = 1.0, timeScale = 1.0, mul = 1.0, add = 0.0;
+		^EnvGen.kr(this, gate, mul, add, timeScale, doneAction)
+	}
+
+	ar { arg doneAction = 0, gate = 1.0, timeScale = 1.0, mul = 1.0, add = 0.0;
+		^EnvGen.ar(this, gate, mul, add, timeScale, doneAction)
 	}
 
 	levels_ { arg z;
@@ -41,28 +57,44 @@ AbstractEnv {
 		curves = z;
 		array = nil;
 	}
+	releaseNode_ { arg z;
+		releaseNode = z;
+		array = nil;
+	}
+	loopNode_ { arg z;
+		loopNode = z;
+		array = nil;
+	}
+	offset_ { arg z;
+		offset = z;
+		array = nil;
+	}
 
-	asArray {
-		if (array.isNil) { array = this.prAsArray }
-		^array
+	duration_ { arg dur;
+		times = times * this.totalDuration.reciprocal * dur
 	}
 
-	*shapeNumber { arg shapeName;
-		var shape;
-		if (shapeName.isValidUGenInput) { ^5 };
-		shape = shapeNames.at(shapeName);
-		if (shape.notNil) { ^shape };
-		Error("Env shape not defined.").throw;
+	duration {
+		^times.sum
 	}
 
-	curveValue { arg curve;
-		^if(curve.isValidUGenInput) { curve } { 0 };
+	totalDuration {
+		var duration = times.sum;
+		^duration.asArray.maxItem;
 	}
 
+	range { arg lo = 0.0, hi = 1.0;
+		^this.copy.levels_(levels.linlin(levels.minItem, levels.maxItem, lo, hi))
+	}
+
+	exprange { arg lo = 0.01, hi = 1.0;
+		^this.copy.levels_(levels.linexp(levels.minItem, levels.maxItem, lo, hi))
+	}
 
 	// methods to make some typical shapes :
 
 	// fixed duration envelopes
+
 	*triangle { arg dur=1.0, level=1.0;
 		dur = dur * 0.5;
 		^this.new(
@@ -70,14 +102,16 @@ AbstractEnv {
 			[dur, dur]
 		)
 	}
+
 	*sine { arg dur=1.0, level=1.0;
 		dur = dur * 0.5;
 		^this.new(
 			[0, level, 0],
 			[dur, dur],
-			'sine'
+			\sine
 		)
 	}
+
 	*perc { arg attackTime=0.01, releaseTime=1.0, level=1.0, curve = -4.0;
 		^this.new(
 			[0, level, 0],
@@ -85,6 +119,7 @@ AbstractEnv {
 			curve
 		)
 	}
+
 	*linen { arg attackTime=0.01, sustainTime=1.0, releaseTime=1.0, level=1.0, curve = \lin;
 		^this.new(
 			[0, level, level, 0],
@@ -93,77 +128,139 @@ AbstractEnv {
 		)
 	}
 
-	range { |lo = 0.0, hi = 1.0|
-		^this.copy.levels_(levels.linlin(levels.minItem, levels.maxItem, lo, hi))
+	*xyc { arg xyc;
+		var times, levels, curves, offset, order;
+		#times, levels, curves = xyc.flop;
+		if(times.containsSeqColl.not) { // sort triplets, if possible.
+			order = times.order;
+			times = times[order];
+			levels = levels[order];
+			curves = curves[order];
+		};
+		offset = times[0];
+		times = times.differentiate.drop(1);
+		curves.asArray.drop(-1);
+		^this.new(levels, times, curves, offset: offset);
 	}
 
-	exprange { |lo = 0.01, hi = 1.0|
-		^this.copy.levels_(levels.linexp(levels.minItem, levels.maxItem, lo, hi))
+	*pairs { arg pairs, curve;
+		if(curve.isNil) { ^this.xyc(pairs) };
+		^this.xyc(pairs +++ curve);
 	}
 
-	asSignal { arg length = 400;
-		var duration, signal, ratio;
-		duration = times.sum;
-		ratio = duration/(length - 1);
-		signal = Signal(length);
-		length.do({ arg i; signal.add(this.at(i * ratio)) });
-		^signal;
+	// envelopes with sustain
+
+	*cutoff { arg releaseTime = 0.1, level = 1.0, curve = \lin;
+		var curveNo = this.shapeNumber(curve);
+		var releaseLevel = if(curveNo == 2) { -100.dbamp } { 0 };
+		^this.new([level, releaseLevel], [releaseTime], curve, 0)
 	}
 
-	discretize {arg n = 1024;
-		^this.asSignal(n);
+	*dadsr { arg delayTime=0.1, attackTime=0.01, decayTime=0.3,
+			sustainLevel=0.5, releaseTime=1.0,
+				peakLevel=1.0, curve = -4.0, bias = 0.0;
+		^this.new(
+			[0, 0, peakLevel, peakLevel * sustainLevel, 0] + bias,
+			[delayTime, attackTime, decayTime, releaseTime],
+			curve,
+			3
+		)
 	}
 
-}
+	*adsr { arg attackTime=0.01, decayTime=0.3,
+			sustainLevel=0.5, releaseTime=1.0,
+				peakLevel=1.0, curve = -4.0, bias = 0.0;
+		^this.new(
+			[0, peakLevel, peakLevel * sustainLevel, 0] + bias,
+			[attackTime, decayTime, releaseTime],
+			curve,
+			2
+		)
+	}
+
+	*asr { arg attackTime=0.01, sustainLevel=1.0, releaseTime=1.0, curve = -4.0;
+		^this.new(
+			[0, sustainLevel, 0],
+			[attackTime, releaseTime],
+			curve,
+			1
+		)
+	}
 
+	*circle { arg levels, times, curve = \lin;
+		times = times.asArray.wrapExtend(levels.size);
+		curve = curve.asArray.wrapExtend(levels.size);
+		^this.new(levels, times.drop(-1), curve.drop(-1)).circle(times.last, curve.last);
+	}
 
-Env : AbstractEnv {
-	// envelope specification for an EnvGen, Env is not a UGen itself
+	releaseTime {
+		if(releaseNode.isNil) { ^0.0 };
+		^times.copyRange(releaseNode, times.size - 1).sum
+	}
 
-	var <releaseNode;	// index of release level, if nil then ignore release;
-	var <loopNode;		// index of loop start level, if nil then does not loop;
+	isSustained {
+		^releaseNode.notNil
+	}
+
+	asMultichannelSignal { arg length = 400, class = (Signal);
+		var multiChannelArray = this.asMultichannelArray;
+		var channelCount = multiChannelArray.size;
+
+		var totalDur = this.totalDuration;
 
+		length = max(length, levels.size);
 
-	*new { arg levels = #[0,1,0], times = #[1,1], curve = 'lin', releaseNode, loopNode;
-		^super.newCopyArgs(levels, times, curve)
-			// note, we may not use newCopyArgs for these because of other instance vars
-			// in the superclass
-			.releaseNode_(releaseNode).loopNode_(loopNode)
+		^multiChannelArray.collect { |chan|
+			var signal, ratio;
+			ratio = totalDur / (length - 1);
+			signal = class.new(length);
+			length.do { arg i; signal.add(chan.envAt(i * ratio)) };
+			signal
+		}
 	}
 
-	releaseNode_ { arg z;
-		releaseNode = z;
-		array = nil;
+	asSignal { arg length = 400;
+		^this.asMultichannelSignal(length).unbubble
 	}
 
-	loopNode_ { arg z;
-		loopNode = z;
-		array = nil;
+	discretize { arg n = 1024;
+		^this.asSignal(n);
 	}
 
 	storeArgs { ^[levels, times, curves, releaseNode, loopNode] }
 
 	== { arg that;
-		^this.compareObject(that, ['levels','times','curves','releaseNode','loopNode'])
+		^this.compareObject(that, [\levels, \times, \curves, \releaseNode, \loopNode, \offset])
 	}
 
 	hash {
-		^this.instVarHash(['levels','times','curves','releaseNode','loopNode'])
+		^this.instVarHash([\levels, \times, \curves, \releaseNode, \loopNode, \offset])
 	}
 
 	at { arg time;
-		var array = this.asArray;
+		var data = this.asMultichannelArray;
+		time = (time - offset).max(0);
 		^if(time.isSequenceableCollection) {
-			time.collect { |t| array.envAt(t) }
+			if(data.size <= 1) {
+				data = data[0];
+				time.collect { |t| data.envAt(t) }
+			} {
+				time.collect { |t|
+					data.collect { |channel| channel.envAt(t) }
+				}
+			}
 		} {
-			array.envAt(time)
+			if(data.size <= 1) {
+				data[0].envAt(time)
+			} {
+				data.collect { |channel| channel.envAt(time) }
+			}
 		}
 	}
 
 	embedInStream { arg inval;
-		var startTime;
-		startTime = thisThread.endBeat ? thisThread.beats;
-		thisThread.endBeat = this.times.sum + startTime;
+		var startTime = thisThread.endBeat ? thisThread.beats;
+		thisThread.endBeat = this.duration + startTime;
 		loop {
 			inval = yield(this.at(thisThread.beats - startTime));
 		}
@@ -178,56 +275,6 @@ Env : AbstractEnv {
 		^Pseg(Pseq(levels), Pseq(times ++ [1.0]), c) // last time is a dummy
 	}
 
-	// envelopes with sustain
-	*cutoff { arg releaseTime = 0.1, level = 1.0, curve = \lin;
-		var curveNo = this.shapeNumber(curve);
-		var releaseLevel = if(curveNo==2){
-			-100.dbamp
-		}{
-			0
-		};
-		^this.new([level, releaseLevel], [releaseTime], curve, 0)
-	}
-
-	*dadsr { arg delayTime=0.1, attackTime=0.01, decayTime=0.3,
-			sustainLevel=0.5, releaseTime=1.0,
-				peakLevel=1.0, curve = -4.0, bias = 0.0;
-		^this.new(
-			[0, 0, peakLevel, peakLevel * sustainLevel, 0] + bias,
-			[delayTime, attackTime, decayTime, releaseTime],
-			curve,
-			3
-		)
-	}
-
-	*adsr { arg attackTime=0.01, decayTime=0.3,
-			sustainLevel=0.5, releaseTime=1.0,
-				peakLevel=1.0, curve = -4.0, bias = 0.0;
-		^this.new(
-			[0, peakLevel, peakLevel * sustainLevel, 0] + bias,
-			[attackTime, decayTime, releaseTime],
-			curve,
-			2
-		)
-	}
-
-	*asr { arg attackTime=0.01, sustainLevel=1.0, releaseTime=1.0, curve = -4.0;
-		^this.new(
-			[0, sustainLevel, 0],
-			[attackTime, releaseTime],
-			curve,
-			1
-		)
-	}
-
-	releaseTime {
-		if(releaseNode.notNil,{
-			^times.copyRange(releaseNode, times.size - 1).sum
-		},{
-			^0.0 // ?
-		})
-	}
-
 	// blend two envelopes
 	blend { arg argAnotherEnv, argBlendFrac=0.5;
 		^this.class.new(
@@ -250,67 +297,115 @@ Env : AbstractEnv {
 	}
 
 	// connect releaseNode (or end) to first node of envelope
-	circle { arg timeFromLastToFirst = 0.0, curve = 'lin';
-		var first0Then1 = Latch.kr(1.0, Impulse.kr(0.0));
+	circle { arg timeFromLastToFirst = 0.0, curve = \lin;
+		var first0Then1;
+		if(UGen.buildSynthDef.isNil) { ^this };
+		first0Then1 = Latch.kr(1.0, Impulse.kr(0.0));
 		if(releaseNode.isNil) {
-			levels = [0.0]++ levels ++ 0.0;
-			curves = [curve]++ curves.asArray.wrapExtend(times.size) ++ 'lin';
+			levels = [0.0] ++ levels ++ 0.0;
+			curves = [curve] ++ curves.asArray.wrapExtend(times.size) ++ \lin;
 			times  = [first0Then1 * timeFromLastToFirst] ++ times ++ inf;
 			releaseNode = levels.size - 2;
 		} {
-			levels = [0.0]++ levels;
-			curves = [curve]++ curves.asArray.wrapExtend(times.size);
+			levels = [0.0] ++ levels;
+			curves = [curve] ++ curves.asArray.wrapExtend(times.size);
 			times  = [first0Then1 * timeFromLastToFirst] ++ times;
 			releaseNode = releaseNode + 1;
 		};
 		loopNode = 0;
 	}
 
-	isSustained {
-		^releaseNode.notNil
-	}
-
 	test { arg releaseTime = 3.0;
-		var id, def, s;
-		s = Server.default;
+		var s = Server.default;
 		if(s.serverRunning.not) { "Server not running.".warn; ^this };
-		id = s.nextNodeID;
 		fork {
-			def = { arg gate=1;
-				Out.ar(0,
-					SinOsc.ar(800, pi/2, 0.3) * EnvGen.ar(this, gate, doneAction:2)
-				)
-			}.asSynthDef;
-			def.send(s);
-			s.sync;
-			s.sendBundle(s.latency, [9, def.name, id]);
-			if(s.notified) {
-				OSCpathResponder(s.addr, ['/n_end', id], { |time, responder, message|
-					s.sendMsg(\d_free, def.name);
-					responder.remove;
-				}).add;
-			};
+			var synth = { arg gate=1;
+				SinOsc.ar(800, pi/2, 0.3) * EnvGen.ar(this, gate, doneAction:2)
+			}.play;
 			if(this.isSustained) {
-				s.sendBundle(s.latency + releaseTime, [15, id, \gate, 0])
+				s.sendBundle(s.latency + releaseTime, [15, synth.nodeID, \gate, 0])
 			};
 		};
 	}
 
+	*shapeNumber { arg shapeName;
+		^shapeName.asArray.collect { |name|
+			var shape;
+			if(name.isValidUGenInput) { 5 } {
+				shape = shapeNames.at(name);
+				if(shape.isNil) { Error("Env shape not defined.").throw };
+				shape
+			}
+		}.unbubble
+	}
+
+	curveValue { arg curve;
+		^if(curve.isSequenceableCollection) {
+			curve.collect { |x|
+				if(x.isValidUGenInput) { x } { 0 }
+			}
+		} {
+			if(curve.isValidUGenInput) { curve } { 0 }
+		}
+	}
+
+	asArray {
+		if (array.isNil) { array = this.prAsArray }
+		^array.unbubble // keep backward compatibility
+	}
+
+	asMultichannelArray {
+		if (array.isNil) { array = this.prAsArray }
+		^array
+	}
+
+	// this version is for IEnvGen and has a special format.
+	// don't cache this version for now, but instead return it directly.
+	asArrayForInterpolation {
+		var contents, size;
+		var levelArray = levels.asUGenInput;
+		var timeArray = times.asUGenInput;
+		var curvesArray = curves.asArray.asUGenInput;
+
+		size = timeArray.size;
+		contents = Array.new((size + 1) * 4);
+		contents.add(offset.asUGenInput ? 0);
+		contents.add(levelArray.at(0));
+		contents.add(size);
+		contents.add(timeArray.sum);
+		curvesArray = curves.asArray;
+		times.size.do { arg i;
+			contents.add(timeArray[i]);
+			contents.add(this.class.shapeNumber(curvesArray.wrapAt(i)));
+			contents.add(this.curveValue(curvesArray.wrapAt(i)));
+			contents.add(levelArray[i+1]);
+		};
+
+		^contents.flop
+	}
+
 	prAsArray {
-		var contents, curvesArray, size;
+		var contents, size;
+		var levelArray = levels.asUGenInput;
+		var timeArray = times.asUGenInput;
+		var curvesArray = curves.asArray.asUGenInput;
+
 		size = times.size;
 		contents = Array.new((size + 1) * 4);
-		contents.add(levels.at(0));
+		contents.add(levelArray.at(0));
 		contents.add(size);
-		contents.add(releaseNode ? -99);
-		contents.add(loopNode ? -99);
-		curvesArray = curves.asArray;
-		size.do({ arg i;
-			contents.add(levels.at(i+1));
-			contents.add(times.at(i));
+		contents.add(releaseNode.asUGenInput ? -99);
+		contents.add(loopNode.asUGenInput ? -99);
+
+		size.do { arg i;
+			contents.add(levelArray.at(i+1));
+			contents.add(timeArray.at(i));
 			contents.add(this.class.shapeNumber(curvesArray.wrapAt(i)));
 			contents.add(this.curveValue(curvesArray.wrapAt(i)));
-		});
-		^contents
+		};
+
+		^contents.flop;
 	}
+
+
 }
diff --git a/SCClassLibrary/Common/Audio/EnvGen.sc b/SCClassLibrary/Common/Audio/EnvGen.sc
index 49adda4..7e79b6c 100644
--- a/SCClassLibrary/Common/Audio/EnvGen.sc
+++ b/SCClassLibrary/Common/Audio/EnvGen.sc
@@ -44,14 +44,20 @@ Free : UGen {
 
 EnvGen : UGen { // envelope generator
 	*ar { arg envelope, gate = 1.0, levelScale = 1.0, levelBias = 0.0, timeScale = 1.0, doneAction = 0;
-		^this.multiNewList(['audio', gate, levelScale, levelBias, timeScale, doneAction, `envelope])
+		envelope = this.convertEnv(envelope);
+		^this.multiNewList(['audio', gate, levelScale, levelBias, timeScale, doneAction, envelope])
 	}
 	*kr { arg envelope, gate = 1.0, levelScale = 1.0, levelBias = 0.0, timeScale = 1.0, doneAction = 0;
-		^this.multiNewList(['control', gate, levelScale, levelBias, timeScale, doneAction, `envelope])
+		envelope = this.convertEnv(envelope);
+		^this.multiNewList(['control', gate, levelScale, levelBias, timeScale, doneAction, envelope])
 	}
-	*new1 { arg rate, gate, levelScale, levelBias, timeScale, doneAction, envelope;
+	*convertEnv { arg env;
+		if(env.isSequenceableCollection) { ^env.reference }; // raw envelope data
+		^env.asMultichannelArray.collect(_.reference).unbubble
+	}
+	*new1 { arg rate, gate, levelScale, levelBias, timeScale, doneAction, envArray;
 		^super.new.rate_(rate).addToSynth.init([gate, levelScale, levelBias, timeScale, doneAction]
-			++ envelope.dereference.asUGenInput.asArray);
+			++ envArray.dereference);
 	}
  	init { arg theInputs;
  		// store the inputs as an array
diff --git a/SCClassLibrary/Common/Audio/FFT.sc b/SCClassLibrary/Common/Audio/FFT.sc
index 69e3e0f..e5cc58b 100644
--- a/SCClassLibrary/Common/Audio/FFT.sc
+++ b/SCClassLibrary/Common/Audio/FFT.sc
@@ -56,12 +56,17 @@ PV_MagSmear : PV_ChainUGen
 
 PV_BinShift : PV_ChainUGen
 {
+	*new { arg buffer, stretch = 1.0, shift = 0.0, interp = 0;
+		^this.multiNew('control', buffer, stretch, shift, interp)
+	}
+}
 
+PV_MagShift : PV_ChainUGen
+{
 	*new { arg buffer, stretch = 1.0, shift = 0.0;
 		^this.multiNew('control', buffer, stretch, shift)
 	}
 }
-PV_MagShift : PV_BinShift {}
 
 PV_MagSquared : PV_ChainUGen
 {
@@ -77,8 +82,8 @@ PV_Conj : PV_MagSquared {}
 
 PV_PhaseShift : PV_ChainUGen
 {
-	*new { arg buffer, shift;
-		^this.multiNew('control', buffer, shift)
+	*new { arg buffer, shift, integrate=0;
+		^this.multiNew('control', buffer, shift, integrate)
 	}
 }
 
diff --git a/SCClassLibrary/Common/Audio/FSinOsc.sc b/SCClassLibrary/Common/Audio/FSinOsc.sc
index 76de2a9..ece05c9 100644
--- a/SCClassLibrary/Common/Audio/FSinOsc.sc
+++ b/SCClassLibrary/Common/Audio/FSinOsc.sc
@@ -21,6 +21,7 @@ FSinOsc : UGen {
 
 Klang : UGen {
 	*ar { arg specificationsArrayRef, freqscale = 1.0, freqoffset = 0.0;
+		specificationsArrayRef = specificationsArrayRef.multichannelExpandRef(2);
 			^this.multiNewList(['audio', freqscale,
 						freqoffset, specificationsArrayRef] )
 	}
@@ -43,6 +44,7 @@ Klang : UGen {
 
 Klank : UGen {
 	*ar { arg specificationsArrayRef, input, freqscale = 1.0, freqoffset = 0.0, decayscale = 1.0;
+			specificationsArrayRef = specificationsArrayRef.multichannelExpandRef(2);
 			^this.multiNewList(['audio',  input, freqscale,
 						freqoffset, decayscale, specificationsArrayRef] )
 	}
diff --git a/SCClassLibrary/Common/Audio/Filter.sc b/SCClassLibrary/Common/Audio/Filter.sc
index bf3d579..f21bcd6 100644
--- a/SCClassLibrary/Common/Audio/Filter.sc
+++ b/SCClassLibrary/Common/Audio/Filter.sc
@@ -1,4 +1,4 @@
-Filter : UGen {
+Filter : PureUGen {
  	checkInputs { ^this.checkSameRateAsFirstInput }
 }
 
@@ -323,6 +323,8 @@ Formlet : Filter {
 // doneAction = 6   remove and deallocate this synth and free all children in the following group (if it is a group).
 
 DetectSilence : Filter {
+	optimizeGraph {
+	}
 
 	*ar { arg in = 0.0, amp = 0.0001, time = 0.1, doneAction = 0;
 		^this.multiNew('audio', in, amp, time, doneAction)
diff --git a/SCClassLibrary/Common/Audio/IEnvGen.sc b/SCClassLibrary/Common/Audio/IEnvGen.sc
index 7a7caad..727dfb1 100644
--- a/SCClassLibrary/Common/Audio/IEnvGen.sc
+++ b/SCClassLibrary/Common/Audio/IEnvGen.sc
@@ -1,28 +1,22 @@
 IEnvGen : UGen { // envelope index generator
 
-	*ar { arg ienvelope, index, mul = 1, add = 0;
-		var offset;
-		ienvelope = ienvelope.isKindOf(Env).if({
-			InterplEnv.new(ienvelope.levels, ienvelope.times, ienvelope.curves);
-			}, {
-			ienvelope;
-			});
-		^this.multiNewList(['audio', index, `ienvelope]).madd(mul, add);
+	*ar { arg envelope, index, mul = 1, add = 0;
+		envelope = this.convertEnv(envelope);
+		^this.multiNewList(['audio', index, envelope]).madd(mul, add)
 	}
 
-	*kr { arg ienvelope, index, mul = 1, add = 0;
-		var offset;
-		ienvelope = ienvelope.isKindOf(Env).if({
-			InterplEnv.new(ienvelope.levels, ienvelope.times, ienvelope.curves)
-			}, {
-			ienvelope
-			});
-		^this.multiNewList(['control', index, `ienvelope]).madd(mul, add);
+	*kr { arg envelope, index, mul = 1, add = 0;
+		envelope = this.convertEnv(envelope);
+		^this.multiNewList(['control', index, envelope]).madd(mul, add)
 	}
 
-	*new1 { arg rate, index, ienvelope, mul = 1, add = 0;
-		^super.new.rate_(rate).addToSynth.init([index]
-			++ ienvelope.dereference.asArray).madd(mul, add);
+	*convertEnv { arg env;
+		if(env.isSequenceableCollection) { ^env.reference }; // raw envelope data
+		^env.asArrayForInterpolation.collect(_.reference).unbubble
+	}
+
+	*new1 { arg rate, index, envArray;
+		^super.new.rate_(rate).addToSynth.init([index] ++ envArray.dereference)
 	}
 
  	init { arg theInputs;
diff --git a/SCClassLibrary/Common/Audio/InterplEnv.sc b/SCClassLibrary/Common/Audio/InterplEnv.sc
index 4850434..3b784d5 100644
--- a/SCClassLibrary/Common/Audio/InterplEnv.sc
+++ b/SCClassLibrary/Common/Audio/InterplEnv.sc
@@ -2,42 +2,11 @@
 // InterplEnvs are a fixed duration
 // Envelope specification for an IEnvGen, InterplEnv is not a UGen itself
 
-InterplEnv : AbstractEnv {
-	var <>offset;
+InterplEnv {
 	
 	*new { arg levels=#[0,1,0], times=#[1,1], curve='lin', offset = 0.0;
-		^super.newCopyArgs(levels, times, curve).offset_(offset)
-	}
-
-	at { arg time;
-		var env;
-		env = this.asEnv;
-		^env.asArray.envAt((time - offset).max(0))
-	}
-
-	asEnv {
-		^Env(this.levels, this.times, this.curves);
-	}
-
-	storeArgs { ^[levels, times, curves, offset] }
-
-	plot { arg size = 400, bounds, minval, maxval, parent;
-		this.asEnv.plot(size, bounds, minval, maxval, parent);
-	}
-
-	prAsArray {
-		var contents, curvesArray;
-		contents = [offset, levels.at(0), times.size, times.sum];
-		curvesArray = curves.asArray;
-		times.size.do({ arg i;
-			contents = contents ++ [
-				times[i],
-				this.class.shapeNumber(curvesArray.wrapAt(i)),
-				this.curveValue(curvesArray.wrapAt(i)),
-				levels[i+1]
-			];
-		});
-		^contents
+		"InterplEnv is deprecated, please use Env.new instead.".warn;
+		^Env.new(levels, times, curve, nil, nil, offset)
 	}
 
 }
@@ -45,61 +14,27 @@ InterplEnv : AbstractEnv {
 // InterplXYC([0, 0, \lin], [1, 2, \sin], [2, 0])
 // at time 0, value 0, lin to time 1, value 2, sin to time 2, value 0
 
-InterplXYC : InterplEnv {
+InterplXYC {
 	
 	*new { arg ... xyc;
-		var x, y, c, times, levels, curves, offset;
-		#x, y, c = xyc.flat.clump(3).flop;
-		offset = x[0];
-		levels = y;
-		times = Array.fill(x.size - 1, { arg i; x[i + 1] - x[i]});
-		c.removeAt(c.size - 1);
-		^InterplEnv.new(levels, times, c, offset);
+		"InterplXYC is deprecated, please use Env.xyc instead.".warn;
+		^Env.xyc(xyc)
 	}
 }
 
-InterplPairs : InterplEnv {
+InterplPairs {
 	
 	*new { arg pairs, curve;
-		var x, y, times, levels, offset;
-		curve = curve ? \lin;
-		#x, y = pairs.flat.clump(2).flop;
-		offset = x[0];
-		levels = y;
-		times = Array.fill(x.size - 1, {arg i; x[i + 1] - x[i]});
-		^InterplEnv.new(levels, times, curve, offset);
+		"InterplPairs is deprecated, please use Env.pairs instead.".warn;
+		^Env.pairs(pairs, curve)
 	}
 }
 
-// pairs is an array of [time, [val, val, val], time, [val, val, val]]
-// format. All chords MUST have the same number of members
-
 InterplChord {
-	var <envs, <times;
 	
 	*new { arg pairs;
-		^super.new.init(pairs);
-	}
-
-	init { arg pairs;
-		var points;
-		times = Array.newClear(pairs.size * 0.5 - 1);
-		points = Array.fill(pairs.size * 0.5, {arg i; pairs[i * 2]});
-		points.doAdjacentPairs({ arg val1, val2, i; times[i] = val2 - val1 });
-		envs = Array.fill(pairs[1].size, {arg i;
-			var levels;
-			levels = Array.fill(pairs.size * 0.5, {arg j;
-				pairs[j*2+1][i]});
-			Env(levels, times)
-			})
-	}
-
-	at { arg time;
-		^Array.fill(envs.size, { arg i; envs[i][time] });
-	}
-
-	choose { arg time;
-		^envs.choose[time]
+		"InterplChord is deprecated, please use Env.pairs instead.".warn;
+		^Env.pairs(pairs)
 	}
 
 }
diff --git a/SCClassLibrary/Common/Audio/Line.sc b/SCClassLibrary/Common/Audio/Line.sc
index d2868b7..5dec654 100644
--- a/SCClassLibrary/Common/Audio/Line.sc
+++ b/SCClassLibrary/Common/Audio/Line.sc
@@ -16,7 +16,7 @@ XLine : UGen {
 	}
 }
 
-LinExp : UGen {
+LinExp : PureUGen {
 	checkInputs { ^this.checkSameRateAsFirstInput }
 	*ar { arg in=0.0, srclo = 0.0, srchi = 1.0, dstlo = 1.0, dsthi = 2.0;
 		^this.multiNew('audio', in, srclo, srchi, dstlo, dsthi)
@@ -41,7 +41,7 @@ LinLin {
 	}
 }
 
-AmpComp : UGen {
+AmpComp : PureUGen {
 	*ir { arg freq = 60.midicps, root = 60.midicps, exp = 0.3333;
 		^this.multiNew('scalar', freq, root, exp)
 	}
@@ -66,13 +66,13 @@ AmpCompA : AmpComp {
 	}
 }
 
-K2A : UGen { // control rate to audio rate converter
+K2A : PureUGen { // control rate to audio rate converter
 	*ar { arg in = 0.0;
 		^this.multiNew('audio', in)
 	}
 }
 
-A2K : UGen { // audio rate to control rate converter. only needed in specific cases
+A2K : PureUGen { // audio rate to control rate converter. only needed in specific cases
 	*kr { arg in = 0.0;
 		^this.multiNew('control', in)
 	}
diff --git a/SCClassLibrary/Common/Audio/Mix.sc b/SCClassLibrary/Common/Audio/Mix.sc
index 01b348a..89caad5 100644
--- a/SCClassLibrary/Common/Audio/Mix.sc
+++ b/SCClassLibrary/Common/Audio/Mix.sc
@@ -1,19 +1,33 @@
 Mix {
 	*new { arg array;
-		var sum;
-		array.asArray.do({ arg val, i;
-			if (sum.isNil, { sum = val },{ sum = sum + val });
-		});
-		^sum
+		var reducedArray = array.asArray.clump(4);
+		var mixedArray = reducedArray.collect {|a|
+			if (a.size == 4) {
+				Sum4(*a)
+			} {
+				if (a.size == 3) {
+					Sum3(*a)
+				} {
+					a.sum
+				}
+			}
+        };
+
+		if (mixedArray.size < 3) {
+			^mixedArray.sum
+		};
+
+		if (mixedArray.size == 3) {
+			^Sum3(*mixedArray)
+		} {
+			^Mix(mixedArray)
+		}
 	}
+
 	// support this common idiom
 	*fill { arg n, function;
-		var val, sum;
-		n.do({ arg i;
-			val = function.value(i);
-			if (sum.isNil, { sum = val },{ sum = sum + val });
-		});
-		^sum;
+		var array = Array.fill(n, function);
+		^this.new(array);
 	}
 
 	// and these common idioms
@@ -47,7 +61,15 @@ Mix {
 			{ \control } { result }
 			{ \scalar } { DC.kr(result) }
 			{ Error("Unsupported rate % for Mix.kr".format(result.rate)).throw };
-	}		
+	}
+
+	*arFill { |n, function|
+		^this.ar(Array.fill(n, function))
+	}
+
+	*krFill { |n, function|
+		^this.kr(Array.fill(n, function))
+	}
 }
 
 
diff --git a/SCClassLibrary/Common/Audio/Osc.sc b/SCClassLibrary/Common/Audio/Osc.sc
index 6875ba7..92b9b8a 100644
--- a/SCClassLibrary/Common/Audio/Osc.sc
+++ b/SCClassLibrary/Common/Audio/Osc.sc
@@ -8,7 +8,7 @@
 		add - add to signal or scalar
 */
 
-Osc : UGen {
+Osc : PureUGen {
 	*ar {
 		arg bufnum, freq=440.0, phase=0.0, mul=1.0, add=0.0;
 		^this.multiNew('audio', bufnum, freq, phase).madd(mul, add)
@@ -19,7 +19,7 @@ Osc : UGen {
 	}
 }
 
-SinOsc : UGen {
+SinOsc : PureUGen {
 	*ar {
 		arg freq=440.0, phase=0.0, mul=1.0, add=0.0;
 		^this.multiNew('audio', freq, phase).madd(mul, add)
@@ -30,7 +30,7 @@ SinOsc : UGen {
 	}
 }
 
-SinOscFB : UGen {
+SinOscFB : PureUGen {
 	*ar {
 		arg freq=440.0, feedback=0.0, mul=1.0, add=0.0;
 		^this.multiNew('audio', freq, feedback).madd(mul, add)
@@ -41,7 +41,7 @@ SinOscFB : UGen {
 	}
 }
 
-OscN : UGen {
+OscN : PureUGen {
 	*ar {
 		arg bufnum, freq=440.0, phase=0.0, mul=1.0, add=0.0;
 		^this.multiNew('audio', bufnum, freq, phase).madd(mul, add)
@@ -53,7 +53,7 @@ OscN : UGen {
 }
 
 
-VOsc : UGen {
+VOsc : PureUGen {
 	*ar {
 		arg bufpos, freq=440.0, phase=0.0, mul=1.0, add=0.0;
 		^this.multiNew('audio', bufpos, freq, phase).madd(mul, add)
@@ -64,7 +64,7 @@ VOsc : UGen {
 	}
 }
 
-VOsc3 : UGen {
+VOsc3 : PureUGen {
 	*ar {
 		arg bufpos, freq1=110.0, freq2=220.0, freq3=440.0, mul=1.0, add=0.0;
 		^this.multiNew('audio', bufpos, freq1, freq2, freq3).madd(mul, add)
@@ -75,7 +75,7 @@ VOsc3 : UGen {
 	}
 }
 
-COsc : UGen {
+COsc : PureUGen {
 	*ar {
 		arg bufnum, freq=440.0, beats=0.5, mul=1.0, add=0.0;
 		^this.multiNew('audio', bufnum, freq, beats).madd(mul, add)
@@ -86,14 +86,14 @@ COsc : UGen {
 	}
 }
 
-Formant : UGen {
+Formant : PureUGen {
 	*ar {
 		arg fundfreq = 440.0, formfreq = 1760.0, bwfreq = 880.0, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', fundfreq, formfreq, bwfreq).madd(mul, add)
 	}
 }
 
-LFSaw : UGen {
+LFSaw : PureUGen {
 	*ar {
 		arg freq = 440.0, iphase = 0.0, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', freq, iphase).madd(mul, add)
@@ -135,7 +135,7 @@ LFGauss : UGen {
 
 }
 
-LFPulse : UGen {
+LFPulse : PureUGen {
 	*ar {
 		arg freq = 440.0, iphase = 0.0, width = 0.5, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', freq, iphase, width).madd(mul, add)
@@ -147,7 +147,7 @@ LFPulse : UGen {
 	signalRange { ^\unipolar }
 }
 
-VarSaw : UGen {
+VarSaw : PureUGen {
 	*ar {
 		arg freq = 440.0, iphase = 0.0, width = 0.5, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', freq, iphase, width).madd(mul, add)
@@ -158,7 +158,7 @@ VarSaw : UGen {
 	}
 }
 
-Impulse : UGen {
+Impulse : PureUGen {
 	*ar {
 		arg freq = 440.0, phase = 0.0, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', freq, phase).madd(mul, add)
@@ -171,7 +171,7 @@ Impulse : UGen {
 }
 
 
-SyncSaw : UGen {
+SyncSaw : PureUGen {
 	*ar {
 		arg syncFreq = 440.0, sawFreq = 440.0, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', syncFreq, sawFreq).madd(mul, add)
@@ -195,7 +195,7 @@ SyncSaw : UGen {
 //	signalRange { ^\unipolar }
 //}
 
-Index : UGen {
+Index : PureUGen {
 	*ar {
 		arg bufnum, in = 0.0, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', bufnum, in).madd(mul, add)
@@ -221,7 +221,7 @@ Shaper : Index {
 IndexL : Index {
 }
 
-DegreeToKey : UGen {
+DegreeToKey : PureUGen {
 	*ar {
 		arg bufnum, in = 0.0, octave = 12.0, mul = 1.0, add = 0.0;
 		^this.multiNew('audio', bufnum, in, octave).madd(mul, add)
@@ -232,7 +232,7 @@ DegreeToKey : UGen {
 	}
 }
 
-Select : UGen {
+Select : PureUGen {
 	*ar {
 		arg which, array;
 		^this.multiNewList(['audio', which] ++ array)
@@ -293,7 +293,7 @@ SelectXFocus { 	// does not wrap (yet).
 	}
 }
 
-Vibrato : UGen {
+Vibrato : PureUGen {
 	*ar {
 		arg freq = 440.0, rate = 6, depth = 0.02, delay = 0.0, onset = 0.0,
 				rateVariation = 0.04, depthVariation = 0.1, iphase = 0.0;
@@ -319,7 +319,7 @@ TChoose {
 }
 
 
-TWChoose : UGen {
+TWChoose {
 	*ar { arg trig, array, weights, normalize=0;
 		^Select.ar(TWindex.ar(trig, weights, normalize), array)
 	}
diff --git a/SCClassLibrary/Common/Audio/Splay.sc b/SCClassLibrary/Common/Audio/Splay.sc
index d790fc9..e844390 100644
--- a/SCClassLibrary/Common/Audio/Splay.sc
+++ b/SCClassLibrary/Common/Audio/Splay.sc
@@ -1,8 +1,39 @@
-Splay {
-	*ar { arg inArray, spread=1, level=1, center=0.0, levelComp=true;
-		var n, n1; n = inArray.size.max(2); n1 = n-1;
+Splay : UGen {
 
-		if (levelComp, { level = level * n.reciprocal.sqrt });
+	*new1 { arg rate, spread = 1, level = 1, center = 0.0, levelComp = true ... inArray;
+
+		var n = max(2, inArray.size);
+		var n1 = n - 1;
+		var positions = ((0 .. n1) * (2 / n1) - 1) * spread + center;
+
+		if (levelComp) {
+			if(rate == \audio) {
+				level = level * n.reciprocal.sqrt
+			} {
+				level = level / n
+			}
+		 };
+
+		^Pan2.perform(this.methodSelectorForRate(rate), inArray, positions).sum * level;
+	}
+
+	*kr { arg inArray, spread = 1, level = 1, center = 0.0, levelComp = true;
+		^this.multiNewList([\control, spread, level, center, levelComp] ++ inArray)
+
+	}
+
+	*ar { arg inArray, spread = 1, level = 1, center = 0.0, levelComp = true;
+		^this.multiNewList([\audio, spread, level, center, levelComp] ++ inArray)
+	}
+
+	/*
+
+	*ar { arg inArray, spread = 1, level = 1, center = 0.0, levelComp = true;
+
+		var n = inArray.size.max(2);
+		var n1 = n-1;
+
+		if (levelComp) { level = level * n.reciprocal.sqrt };
 
 		^Pan2.ar(
 			inArray,
@@ -10,61 +41,77 @@ Splay {
 		).sum * level;
 	}
 
-	*arFill { arg n, function, spread=1, level=1, center=0.0, levelComp=true;
+	*/
+
+	*arFill { arg n, function, spread = 1, level = 1, center = 0.0, levelComp = true;
 		^this.ar((function ! n), spread, level, center, levelComp)
 	}
 }
 
-SplayZ {
-	*ar { arg numChans=4, inArray, spread=1, level = 1, width = 2, center = 0.0,
-			orientation = 0.5, levelComp=true;
 
-		var n, n1; n = inArray.size.max(2); n1 = n-1;
-		if (levelComp, { level = level * n.reciprocal.sqrt });
 
-		"SplayZ is deprecated, because its geometry is wrong.
-		Please convert to SplayAz.".inform;
+SplayAz : UGen {
+	*kr { arg numChans = 4, inArray, spread = 1, level = 1, width = 2, center = 0.0,
+			orientation = 0.5, levelComp = true;
 
-		^PanAz.ar(
-			numChans,
-			inArray,
-			((0 .. n1) * (2 / n1) - 1) * spread + center,
-			1,
-			width,
-			orientation
-		).sum * level;
+		var n = max(1, inArray.size);
+
+		var pos = [ center - spread, center + spread ].resamp1(n);
+
+		if (levelComp) {
+			level = level / n
+		};
+
+		^(PanAz.kr(numChans, inArray, pos, level, width, orientation).flop.collect(_.sum))
 	}
 
-	*arFill { arg numChans=4, n, function, spread=1, level=1, width = 2, center=0.0,
-		orientation = 0.5, levelComp=true;
+	*ar { arg numChans = 4, inArray, spread = 1, level = 1, width = 2, center = 0.0,
+			orientation = 0.5, levelComp = true;
+
+		var n = max(1, inArray.size);
+
+		var pos = [ center - spread, center + spread ].resamp1(n);
+
+		if (levelComp) {
+			level = level * n.reciprocal.sqrt
+		};
+
+		^(PanAz.ar(numChans, inArray, pos, level, width, orientation).flop.collect(_.sum))
+	}
+
+	*arFill { arg numChans = 4, n, function, spread = 1, level = 1, width = 2, center = 0.0,
+		orientation = 0.5, levelComp = true;
 		^this.ar(numChans, function ! n, spread, level, width, center,
-		orientation, levelComp)
+			orientation, levelComp)
 	}
 }
 
 
-SplayAz {
-	*ar { arg numChans=4, inArray, spread=1, level = 1, width = 2, center = 0.0,
-			orientation = 0.5, levelComp=true;
 
-		var n = inArray.size.max(1);
-		var moreOuts = numChans > n;
+SplayZ {
+	*ar { arg numChans = 4, inArray, spread = 1, level = 1, width = 2, center = 0.0,
+			orientation = 0.5, levelComp = true;
+
+		var n = inArray.size.max(2);
+		var n1 = n - 1;
+
+		if (levelComp) { level = level * n.reciprocal.sqrt };
 
-		if (levelComp, { level = level * n.reciprocal.sqrt });
-		if (moreOuts, { inArray = inArray * level });
+		"SplayZ is deprecated, because its geometry is wrong.
+		Please convert to SplayAz.".inform;
 
 		^PanAz.ar(
 			numChans,
 			inArray,
-			((0 .. n-1) / n * 2) * spread + center,
+			((0 .. n1) * (2 / n1) - 1) * spread + center,
 			1,
 			width,
 			orientation
-		).sum * if (moreOuts, 1, level);
+		).sum * level;
 	}
 
-	*arFill { arg numChans=4, n, function, spread=1, level=1, width = 2, center=0.0,
-		orientation = 0.5, levelComp=true;
+	*arFill { arg numChans = 4, n, function, spread = 1, level = 1, width = 2, center = 0.0,
+		orientation = 0.5, levelComp = true;
 		^this.ar(numChans, function ! n, spread, level, width, center,
 		orientation, levelComp)
 	}
diff --git a/SCClassLibrary/Common/Audio/SynthDef.sc b/SCClassLibrary/Common/Audio/SynthDef.sc
index eaac9eb..8f7e3bb 100644
--- a/SCClassLibrary/Common/Audio/SynthDef.sc
+++ b/SCClassLibrary/Common/Audio/SynthDef.sc
@@ -14,6 +14,7 @@ SynthDef {
 	var <>available;
 	var <>variants;
 	var <>widthFirstUGens;
+	var rewriteInProgress;
 
 	var <>desc, <>metadata;
 
@@ -32,7 +33,7 @@ SynthDef {
 	}
 
 	*new { arg name, ugenGraphFunc, rates, prependArgs, variants, metadata;
-		^this.prNew(name).variants_(variants).metadata_(metadata)
+		^this.prNew(name).variants_(variants).metadata_(metadata).children_(Array.new(64))
 			.build(ugenGraphFunc, rates, prependArgs)
 	}
 	*prNew { arg name;
@@ -60,11 +61,11 @@ SynthDef {
 		^UGen.buildSynthDef.buildUgenGraph(func, rates, prependArgs);
 	}
 	//only write if no file exists
-	*writeOnce { arg name, func, rates, prependArgs, variants, dir, metadata;
-		this.new(name, func, rates, prependArgs, variants, metadata).writeOnce(dir)
+	*writeOnce { arg name, func, rates, prependArgs, variants, dir, metadata, mdPlugin;
+		this.new(name, func, rates, prependArgs, variants, metadata).writeOnce(dir, mdPlugin)
 	}
-	writeOnce { arg dir;
-		this.writeDefFile(dir, false)
+	writeOnce { arg dir, mdPlugin;
+		this.writeDefFile(dir, false, mdPlugin)
 	}
 
 	initBuild {
@@ -288,9 +289,18 @@ SynthDef {
 		this.asArray.writeDef(stream);
 		^stream.collection;
 	}
-	writeDefFile { arg dir, overwrite;
+	writeDefFile { arg dir, overwrite(true), mdPlugin;
+		var desc, defFileExistedBefore;
 		if((metadata.tryPerform(\at, \shouldNotSend) ? false).not) {
+			dir = dir ? SynthDef.synthDefDir;
+			defFileExistedBefore = File.exists(dir +/+ name ++ ".scsyndef");
 			super.writeDefFile(name, dir, overwrite);
+			if(overwrite or: { defFileExistedBefore.not }) {
+				desc = this.asSynthDesc;
+				desc.metadata = metadata;
+				SynthDesc.populateMetadataFunc.value(desc);
+				desc.writeMetadata(dir +/+ name, mdPlugin);
+			};
 		} {
 			// actual error, not just warning as in .send and .load,
 			// because you might try to write the file somewhere other than
@@ -299,6 +309,7 @@ SynthDef {
 				.format(name), this).throw
 		}
 	}
+	
 	writeDef { arg file;
 		// This describes the file format for the synthdef files.
 		var allControlNamesTemp, allControlNamesMap;
@@ -308,21 +319,21 @@ SynthDef {
 		this.writeConstants(file);
 
 		//controls have been added by the Control UGens
-		file.putInt16(controls.size);
+		file.putInt32(controls.size);
 		controls.do { | item |
 			file.putFloat(item);
 		};
 
 		allControlNamesTemp = allControlNames.reject { |cn| cn.rate == \noncontrol };
-		file.putInt16(allControlNamesTemp.size);
+		file.putInt32(allControlNamesTemp.size);
 		allControlNamesTemp.do { | item |
 			if (item.name.notNil) {
 				file.putPascalString(item.name.asString);
-				file.putInt16(item.index);
+				file.putInt32(item.index);
 			};
 		};
 
-		file.putInt16(children.size);
+		file.putInt32(children.size);
 		children.do { | item |
 			item.writeDef(file);
 		};
@@ -368,15 +379,16 @@ SynthDef {
 					file.putFloat(item);
 				};
 			};
-		}
+		};
 	}
+	
 	writeConstants { arg file;
 		var array = FloatArray.newClear(constants.size);
 		constants.keysValuesDo { arg value, index;
 			array[index] = value;
 		};
 
-		file.putInt16(constants.size);
+		file.putInt32(constants.size);
 		array.do { | item |
 			file.putFloat(item)
 		};
@@ -387,13 +399,10 @@ SynthDef {
 		children.do { arg ugen;
 			var err;
 			if ((err = ugen.checkInputs).notNil) {
-				if(firstErr.isNil){
-					firstErr = if(err.indexOf($:).isNil){err}{
-						err[..err.indexOf($:)-1]
-					};
-				};
-				(ugen.class.asString + err).postln;
+				err = ugen.class.asString + err;
+				err.postln;
 				ugen.dumpArgs;
+				if(firstErr.isNil) { firstErr = err };
 			};
 		};
 		if(firstErr.notNil) {
@@ -407,9 +416,12 @@ SynthDef {
 
 	// UGens do these
 	addUGen { arg ugen;
-		ugen.synthIndex = children.size;
-		ugen.widthFirstAntecedents = widthFirstUGens.copy;
-		children = children.add(ugen);
+		if (rewriteInProgress.isNil) {
+			// we don't add ugens, if a rewrite operation is in progress
+			ugen.synthIndex = children.size;
+			ugen.widthFirstAntecedents = widthFirstUGens.copy;
+			children = children.add(ugen);
+		}
 	}
 	removeUGen { arg ugen;
 		// lazy removal: clear entry and later remove all nil enties
@@ -449,9 +461,12 @@ SynthDef {
 	optimizeGraph {
 		var oldSize;
 		this.initTopoSort;
+
+		rewriteInProgress = true;
 		children.copy.do { arg ugen;
 			ugen.optimizeGraph;
 		};
+		rewriteInProgress = nil;
 
 		// fixup removed ugens
 		oldSize = children.size;
@@ -604,7 +619,7 @@ SynthDef {
 				desc = lib[this.name.asSymbol];
 				desc.metadata = metadata;
 				SynthDesc.populateMetadataFunc.value(desc);
-				desc.writeMetadata(path);
+				desc.writeMetadata(path, mdPlugin);
 			} {
 				file.close
 			}
diff --git a/SCClassLibrary/Common/Audio/SynthDefOld.sc b/SCClassLibrary/Common/Audio/SynthDefOld.sc
new file mode 100644
index 0000000..87a4b74
--- /dev/null
+++ b/SCClassLibrary/Common/Audio/SynthDefOld.sc
@@ -0,0 +1,185 @@
+SynthDefOld : SynthDef {
+
+	*new { arg name, ugenGraphFunc, rates, prependArgs, variants, metadata;
+		^super.new.name_(name.asSymbol).variants_(variants).metadata_(metadata).children_(Array.new(64))
+			.build(ugenGraphFunc, rates, prependArgs)
+	}
+
+	writeDefFile { arg dir, overwrite(true);
+		if((metadata.tryPerform(\at, \shouldNotSend) ? false).not) {
+			super.writeDefFileOld(name, dir, overwrite);
+		} {
+			// actual error, not just warning as in .send and .load,
+			// because you might try to write the file somewhere other than
+			// the default location - could be fatal later, so crash now
+			MethodError("This SynthDef (%) was reconstructed from a .scsyndef file. It does not contain all the required structure to write back to disk. File was not written."
+				.format(name), this).throw
+		}
+	}
+
+	writeDef { arg file;
+		// This describes the file format for the synthdef files.
+		var allControlNamesTemp, allControlNamesMap;
+
+		file.putPascalString(name.asString);
+
+		this.writeConstants(file);
+
+		//controls have been added by the Control UGens
+		file.putInt16(controls.size);
+		controls.do { | item |
+			file.putFloat(item);
+		};
+
+		allControlNamesTemp = allControlNames.reject { |cn| cn.rate == \noncontrol };
+		file.putInt16(allControlNamesTemp.size);
+		allControlNamesTemp.do { | item |
+			if (item.name.notNil) {
+				file.putPascalString(item.name.asString);
+				file.putInt16(item.index);
+			};
+		};
+
+		file.putInt16(children.size);
+		children.do { | item |
+			item.writeDefOld(file);
+		};
+
+		file.putInt16(variants.size);
+		if (variants.size > 0) {
+			allControlNamesMap = ();
+			allControlNamesTemp.do { |cn|
+				allControlNamesMap[cn.name] = cn;
+			};
+			variants.keysValuesDo {|varname, pairs|
+				var varcontrols;
+
+				varname = name ++ "." ++ varname;
+				if (varname.size > 32) {
+					Post << "variant '" << varname << "' name too long.\n";
+					^nil
+				};
+				varcontrols = controls.copy;
+				pairs.pairsDo { |cname, values|
+					var cn, index;
+					cn = allControlNamesMap[cname];
+					if (cn.notNil) {
+						values = values.asArray;
+						if (values.size > cn.defaultValue.asArray.size) {
+							postf("variant: '%' control: '%' size mismatch.\n",
+								varname, cname);
+							^nil
+						}{
+							index = cn.index;
+							values.do {|val, i|
+								varcontrols[index + i] = val;
+							}
+						}
+					}{
+						postf("variant: '%' control: '%' not found.\n",
+								varname, cname);
+						^nil
+					}
+				};
+				file.putPascalString(varname);
+				varcontrols.do { | item |
+					file.putFloat(item);
+				};
+			};
+		}
+	}
+
+	writeConstants { arg file;
+		var array = FloatArray.newClear(constants.size);
+		constants.keysValuesDo { arg value, index;
+			array[index] = value;
+		};
+
+		file.putInt16(constants.size);
+		array.do { | item |
+			file.putFloat(item)
+		};
+	}
+
+	asBytes {
+		var stream = CollStream.on(Int8Array.new(256));
+		this.asArray.writeDefOld(stream);
+		^stream.collection;
+	}
+
+}
+
++ Collection {
+
+	writeDefOld { | file |
+		file.putString("SCgf");
+		file.putInt32(1); // file version
+		file.putInt16(this.size); // number of defs in file.
+
+		this.do { | item | item.writeDef(file); }
+	}
+
+	writeInputSpecOld { | file, synthDef |
+		this.do { | item | item.writeInputSpecOld(file, synthDef) };
+	}
+}
+
++ UGen {
+
+	writeDefOld { arg file;
+		//[\WR, this.class.name, rate, this.numInputs, this.numOutputs].postln;
+		file.putPascalString(this.name);
+		file.putInt8(this.rateNumber);
+		file.putInt16(this.numInputs);
+		file.putInt16(this.numOutputs);
+		file.putInt16(this.specialIndex);
+		// write wire spec indices.
+		inputs.do({ arg input;
+			input.writeInputSpecOld(file, synthDef);
+		});
+		this.writeOutputSpecs(file);
+		//[this.class.name, file.length].postln;
+	}
+
+	writeInputSpecOld { arg file, synthDef;
+		file.putInt16(synthIndex);
+		file.putInt16(this.outputIndex);
+	}
+}
+
++ SimpleNumber {
+
+	writeInputSpecOld { arg file, synth;
+		var constIndex = synth.constants.at(this.asFloat);
+		if (constIndex.isNil) {
+			Error("SimpleNumber-writeInputSpec constant not found: " ++ this.asFloat).throw;		};
+		//[\inpspc, this.class.name, constIndex, this].postln;
+		file.putInt16(-1);
+		file.putInt16(constIndex);
+	}
+}
+
++ Object {
+
+	writeDefFileOld { arg name, dir, overwrite = (true);
+
+		StartUp.defer { // make sure the synth defs are written to the right path
+			var file;
+			dir = dir ? SynthDef.synthDefDir;
+			if (name.isNil) { Error("missing SynthDef file name").throw } {
+				name = dir +/+ name ++ ".scsyndef";
+				if(overwrite or: { pathMatch(name).isEmpty })
+					{
+					file = File(name, "w");
+					protect {
+						AbstractMDPlugin.clearMetadata(name);
+						this.asArray.writeDefOld(file);
+					}{
+						file.close;
+					}
+				}
+			}
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/SCClassLibrary/Common/Audio/SynthDesc.sc b/SCClassLibrary/Common/Audio/SynthDesc.sc
index deebb11..a9d1cc6 100644
--- a/SCClassLibrary/Common/Audio/SynthDesc.sc
+++ b/SCClassLibrary/Common/Audio/SynthDesc.sc
@@ -57,14 +57,18 @@ SynthDesc {
 		// path is for metadata -- only this method has direct access to the new SynthDesc
 		// really this should be a private method -- use *read instead
 	*readFile { arg stream, keepDefs=false, dict, path;
-		var numDefs;
+		var numDefs, version;
 		dict = dict ?? { IdentityDictionary.new };
 		stream.getInt32; // 'SCgf'
-		stream.getInt32; // version
+		version = stream.getInt32; // version
 		numDefs = stream.getInt16;
 		numDefs.do {
 			var desc;
-			desc = SynthDesc.new.readSynthDef(stream, keepDefs);
+			if(version >= 2, {
+				desc = SynthDesc.new.readSynthDef2(stream, keepDefs);
+			},{
+				desc = SynthDesc.new.readSynthDef(stream, keepDefs);
+			});
 			dict.put(desc.name.asSymbol, desc);
 				// AbstractMDPlugin dynamically determines the md archive type
 				// from the file extension
@@ -149,6 +153,77 @@ SynthDesc {
 		}
 
 	}
+	
+	// synthdef ver 2
+	readSynthDef2 { arg stream, keepDef=false;
+		var	numControls, numConstants, numControlNames, numUGens, numVariants;
+
+		protect {
+
+		inputs = [];
+		outputs = [];
+		controlDict = IdentityDictionary.new;
+
+		name = stream.getPascalString;
+
+		def = SynthDef.prNew(name);
+		UGen.buildSynthDef = def;
+
+		numConstants = stream.getInt32;
+		constants = FloatArray.newClear(numConstants);
+		stream.read(constants);
+
+		numControls = stream.getInt32;
+		def.controls = FloatArray.newClear(numControls);
+		stream.read(def.controls);
+
+		controls = Array.fill(numControls)
+			{ |i|
+				ControlName('?', i, '?', def.controls[i]);
+			};
+
+		numControlNames = stream.getInt32;
+		numControlNames.do
+			{
+				var controlName, controlIndex;
+				controlName = stream.getPascalString.asSymbol;
+				controlIndex = stream.getInt32;
+				controls[controlIndex].name = controlName;
+				controlNames = controlNames.add(controlName);
+				controlDict[controlName] = controls[controlIndex];
+			};
+
+		numUGens = stream.getInt32;
+		numUGens.do {
+			this.readUGenSpec2(stream);
+		};
+
+		controls.inject(nil) {|z,y|
+			if(y.name=='?') { z.defaultValue = z.defaultValue.asArray.add(y.defaultValue); z } { y }
+		};
+
+		def.controlNames = controls.select {|x| x.name.notNil };
+		hasArrayArgs = controls.any { |cn| cn.name == '?' };
+
+		numVariants = stream.getInt16;
+		hasVariants = numVariants > 0;
+			// maybe later, read in variant names and values
+			// this is harder than it might seem at first
+
+		def.constants = Dictionary.new;
+		constants.do {|k,i| def.constants.put(k,i) };
+		if (keepDef.not) {
+			// throw away unneeded stuff
+			def = nil;
+			constants = nil;
+		};
+		this.makeMsgFunc;
+
+		} {
+			UGen.buildSynthDef = nil;
+		}
+
+	}
 
 	readUGenSpec { arg stream;
 		var ugenClass, rateIndex, rate, numInputs, numOutputs, specialIndex;
@@ -222,6 +297,80 @@ SynthDesc {
 			};
 		};
 	}
+	
+	// synthdef ver 2
+	readUGenSpec2 { arg stream;
+		var ugenClass, rateIndex, rate, numInputs, numOutputs, specialIndex;
+		var inputSpecs, outputSpecs;
+		var addIO;
+		var ugenInputs, ugen;
+		var control;
+
+		ugenClass = stream.getPascalString.asSymbol;
+		if(ugenClass.asClass.isNil,{
+			Error("No UGen class found for" + ugenClass + "which was specified in synth def file: " + this.name ++ ".scsyndef").throw;
+		});
+		ugenClass = ugenClass.asClass;
+
+		rateIndex = stream.getInt8;
+		numInputs = stream.getInt32;
+		numOutputs = stream.getInt32;
+		specialIndex = stream.getInt16;
+
+		inputSpecs = Int32Array.newClear(numInputs * 2);
+		outputSpecs = Int8Array.newClear(numOutputs);
+
+		stream.read(inputSpecs);
+		stream.read(outputSpecs);
+
+		ugenInputs = [];
+		forBy (0,inputSpecs.size-1,2) {|i|
+			var ugenIndex, outputIndex, input, ugen;
+			ugenIndex = inputSpecs[i];
+			outputIndex = inputSpecs[i+1];
+			input = if (ugenIndex < 0)
+				{
+					constants[outputIndex]
+				}{
+					ugen = def.children[ugenIndex];
+					if (ugen.isKindOf(MultiOutUGen)) {
+						ugen.channels[outputIndex]
+					}{
+						ugen
+					}
+				};
+			ugenInputs = ugenInputs.add(input);
+		};
+
+		rate = #[\scalar,\control,\audio][rateIndex];
+		ugen = ugenClass.newFromDesc(rate, numOutputs, ugenInputs, specialIndex).source;
+		ugen.addToSynth(ugen);
+
+		addIO = {|list, nchan|
+			var b = ugen.inputs[0];
+			if (b.class == OutputProxy and: {b.source.isKindOf(Control)}) {
+				control = controls.detect {|item| item.index == (b.outputIndex+b.source.specialIndex) };
+				if (control.notNil) { b = control.name };
+			};
+			list.add( IODesc(rate, nchan, b, ugenClass))
+		};
+
+		if (ugenClass.isControlUGen) {
+			// Control.newFromDesc does not set the specialIndex, since it doesn't call Control-init.
+			// Therefore we fill it in here:
+			ugen.specialIndex = specialIndex;
+			numOutputs.do { |i|
+				controls[i+specialIndex].rate = rate;
+			}
+		} {
+			case
+			{ugenClass.isInputUGen} {inputs = addIO.value(inputs, ugen.channels.size)}
+			{ugenClass.isOutputUGen} {outputs = addIO.value(outputs, ugen.numAudioChannels)}
+			{
+				canFreeSynth = canFreeSynth or: { ugen.canFreeSynth };
+			};
+		};
+	}
 
 	makeMsgFunc {
 		var	string, comma=false;
@@ -300,6 +449,7 @@ Use of this synth in Patterns will not detect argument names automatically becau
 			// do not compile the string if no argnames were added
 		if(names > 0) { msgFunc = string.compile.value };
 	}
+	
 	msgFuncKeepGate_ { |bool = false|
 		if(bool != msgFuncKeepGate) {
 			msgFuncKeepGate = bool;
@@ -307,23 +457,23 @@ Use of this synth in Patterns will not detect argument names automatically becau
 		}
 	}
 
-	writeMetadata { arg path;
+	writeMetadata { arg path, mdPlugin;
 		if(metadata.isNil) { AbstractMDPlugin.clearMetadata(path); ^this };
-		this.class.mdPlugin.writeMetadata(metadata, def, path);
+		(mdPlugin ?? { this.class.mdPlugin }).writeMetadata(metadata, def, path);
 	}
 
 	// parse the def name out of the bytes array sent with /d_recv
 	*defNameFromBytes { arg int8Array;
-		var s,n,numDefs,size;
-		s = CollStream(int8Array);
+		var stream, n, numDefs, size;
+		stream = CollStream(int8Array);
 
-		s.getInt32;
-		s.getInt32;
-		numDefs = s.getInt16;
-		size = s.getInt8;
+		stream.getInt32;
+		stream.getInt32;
+		numDefs = stream.getInt16;
+		size = stream.getInt8;
 		n = String.newClear(size);
-		^Array.fill(size,{
-		  s.getChar.asAscii
+		^Array.fill(size, {
+		  stream.getChar.asAscii
 		}).as(String)
 	}
 
diff --git a/SCClassLibrary/Common/Audio/UGen.sc b/SCClassLibrary/Common/Audio/UGen.sc
index 904316e..4f24e0b 100644
--- a/SCClassLibrary/Common/Audio/UGen.sc
+++ b/SCClassLibrary/Common/Audio/UGen.sc
@@ -64,9 +64,9 @@ UGen : AbstractFunction {
  	}
  	exprange { arg lo = 0.01, hi = 1.0;
 		^if (this.signalRange == \bipolar) {
-			this.linexp(-1, 1, lo, hi)
+			this.linexp(-1, 1, lo, hi, nil)
 		} {
-			this.linexp(0, 1, lo, hi)
+			this.linexp(0, 1, lo, hi, nil)
 		};
  	}
 
@@ -100,6 +100,23 @@ UGen : AbstractFunction {
 			Wrap.perform(Wrap.methodSelectorForRate(rate), this, lo, hi)
 		}
  	}
+	blend { arg that, blendFrac = 0.5;
+		var pan;
+		^if (rate == \demand || that.rate == \demand) {
+			this.notYetImplemented(thisMethod)
+		} {
+			pan = blendFrac.linlin(0.0, 1.0, -1, 1);
+			if (rate == \audio) {
+				^XFade2.ar(this, that, pan)
+			};
+
+			if (that.rate == \audio) {
+				^XFade2.ar(that, this, pan.neg)
+			};
+
+			^LinXFade2.perform(LinXFade2.methodSelectorForRate(rate), this, that, pan)
+		}
+	}
 
  	minNyquist { ^min(this, SampleRate.ir * 0.5) }
 
@@ -139,6 +156,10 @@ UGen : AbstractFunction {
 		^VarLag.multiNew(this.rate, this, time, curvature, warp, start)
 	}
 
+	slew { arg up = 1, down = 1;
+		^Slew.multiNew(this.rate, this, up, down)
+	}
+
 	prune { arg min, max, type;
 		switch(type,
 			\minmax, {
@@ -370,8 +391,8 @@ UGen : AbstractFunction {
 		^nil
 	}
 	writeInputSpec { arg file, synthDef;
-		file.putInt16(synthIndex);
-		file.putInt16(this.outputIndex);
+		file.putInt32(synthIndex);
+		file.putInt32(this.outputIndex);
 	}
 	writeOutputSpec { arg file;
 		file.putInt8(this.rateNumber);
@@ -386,18 +407,16 @@ UGen : AbstractFunction {
 		^this.class.name.asString;
 	}
 	writeDef { arg file;
-		//[\WR, this.class.name, rate, this.numInputs, this.numOutputs].postln;
 		file.putPascalString(this.name);
 		file.putInt8(this.rateNumber);
-		file.putInt16(this.numInputs);
-		file.putInt16(this.numOutputs);
+		file.putInt32(this.numInputs);
+		file.putInt32(this.numOutputs);
 		file.putInt16(this.specialIndex);
 		// write wire spec indices.
 		inputs.do({ arg input;
 			input.writeInputSpec(file, synthDef);
 		});
 		this.writeOutputSpecs(file);
-		//[this.class.name, file.length].postln;
 	}
 
 ///////////////////////////////////////////////////////////////
@@ -409,7 +428,7 @@ UGen : AbstractFunction {
 				input.source.descendants.add(this);
 			});
 		});
-		
+
 		widthFirstAntecedents.do({ arg ugen;
 			antecedents.add(ugen);
 			ugen.descendants.add(this);
@@ -439,6 +458,28 @@ UGen : AbstractFunction {
 	dumpName {
 		^synthIndex.asString ++ "_" ++ this.class.name.asString
 	}
+
+	performDeadCodeElimination {
+		if (descendants.size == 0) {
+			this.inputs.do {|a|
+				if (a.isKindOf(UGen)) {
+					a.descendants.remove(this);
+					a.optimizeGraph
+				}
+			};
+			buildSynthDef.removeUGen(this);
+			^true;
+		};
+		^false
+	}
+}
+
+// ugen, which has no side effect and can therefore be considered for a dead code elimination
+// read access to buffers/busses are allowed
+PureUGen : UGen {
+	optimizeGraph {
+		super.performDeadCodeElimination
+	}
 }
 
 MultiOutUGen : UGen {
diff --git a/SCClassLibrary/Common/Audio/UGenCategories.sc b/SCClassLibrary/Common/Audio/UGenCategories.sc
deleted file mode 100644
index c0f8baa..0000000
--- a/SCClassLibrary/Common/Audio/UGenCategories.sc
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-Categorisation of SC UGens, created by Dan Stowell, 2007.
-*/
-+ A2K             { *categories { ^ #["UGens>Conversion"] } }
-+ AbstractIn      { *categories { ^ #["UGens>InOut"] } }
-+ AbstractOut     { *categories { ^ #["UGens>InOut"] } }
-+ AmpComp         { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ AmpCompA        { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ Amplitude       { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ AudioIn         { *categories { ^ #["UGens>InOut"] } }
-+ Ball            { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ BasicOpUGen     { }
-+ BeatTrack       { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
-+ BeatTrack2      { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
-+ BiPanB2         { *categories { ^ #["UGens>Multichannel>Ambisonics"] } }
-+ Blip            { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ BufCombN        { *categories { ^ #["UGens>Delays"] } }
-+ BufDelayN       { *categories { ^ #["UGens>Delays"] } }
-+ BufInfoUGenBase { *categories { ^ #["UGens>Buffer>Info"] } }
-+ BufRd           { *categories { ^ #["UGens>Buffer"] } }
-+ BufWr           { *categories { ^ #["UGens>Buffer"] } }
-+ ChaosGen        { *categories { ^ #["UGens>Generators>Chaotic"] } }
-+ CheckBadValues  { *categories { ^ #["UGens>Info"] } }
-+ ClearBuf           { *categories { ^ #["UGens>Buffer"] } }
-+ CoinGate        { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ CombN           { *categories { ^ #["UGens>Delays"] } }
-+ Compander       { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ CompanderD      { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ Convolution     { *categories { ^ #["UGens>FFT"] } }
-+ Convolution2    { *categories { ^ #["UGens>FFT"] } }
-+ Convolution2L   { *categories { ^ #["UGens>FFT"] } }
-+ StereoConvolution2L   { *categories { ^ #["UGens>FFT"] } }
-+ Convolution3    { *categories { ^ #["UGens>FFT"] } }
-+ COsc            { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Crackle         { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ DecodeB2		{ *categories { ^ #["UGens>Multichannel>Ambisonics"] } }
-+ DUGen			{ *categories { ^ #["UGens>Demand"] } }
-+ DC              { *categories { ^ #["UGens>Generators>Single-value"] } }
-+ DegreeToKey     { *categories { ^ #["UGens>Conversion"] } }
-+ Delay1          { *categories { ^ #["UGens>Delays"] } }
-+ DelayN          { *categories { ^ #["UGens>Delays"] } }
-+ Demand          { *categories { ^ #["UGens>Demand"] } }
-+ DemandEnvGen    { *categories { ^ #["UGens>Demand", "UGens>Envelopes"] } }
-+ DetectSilence   { *categories { ^ #["UGens>Synth control", "UGens>Analysis>Amplitude"] } }
-+ DiskIn          { *categories { ^ #["UGens>InOut", "UGens>Buffer"] } }
-+ DiskOut         { *categories { ^ #["UGens>InOut", "UGens>Buffer"] } }
-+ Done            { *categories { ^ #["UGens>Synth control"] } }
-+ Dust            { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ Dust2           { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ Duty            { *categories { ^ #["UGens>Demand"] } }
-+ Dwhite          { *categories { ^ #["UGens>Demand"] } }
-+ DynKlang        { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ DynKlank        { *categories { ^ #["UGens>Generators>Deterministic", "UGens>Filters>Linear"] } }
-+ Env             {  }
-+ EnvGen          { *categories { ^ #["UGens>Envelopes"] } }
-+ ExpRand         { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"]} }
-+ FFT             { *categories { ^ #["UGens>FFT"] } }
-+ FFTTrigger	    { *categories { ^ #["UGens>FFT"] } }
-+ Filter          { *categories { ^ #["UGens>Filters>Linear"] } }
-+ Formant         { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Free            { *categories { ^ #["UGens>Synth control"] } }
-+ FreeSelf        { *categories { ^ #["UGens>Synth control"] } }
-+ FreeSelfWhenDone{ *categories { ^ #["UGens>Synth control"] } }
-+ FreeVerb        { *categories { ^ #["UGens>Reverbs"] } }
-+ FreeVerb2       { *categories { ^ #["UGens>Reverbs"] } }
-+ FreqShift       { *categories { ^ #["UGens>Filters>Nonlinear", "UGens>Filters>Pitch"] } }
-+ FSinOsc         { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Gendy1          { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ Gendy2          { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ Gendy3          { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ GrainBuf        { *categories { ^ #["UGens>Buffer", "UGens>Generators>Granular"] } }
-+ GrainFM         { *categories { ^ #["UGens>Generators>Granular"] } }
-+ GrainSin        { *categories { ^ #["UGens>Generators>Granular"] } }
-+ GrainIn         { *categories { ^ #["UGens>Generators>Granular"] } }
-+ GVerb           { *categories { ^ #["UGens>Reverbs"] } }
-+ Hasher          { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ Hilbert         { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ HilbertFIR      { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ IEnvGen         { *categories { ^ #["UGens>Envelopes"] } }
-+ IFFT            { *categories { ^ #["UGens>FFT"] } }
-+ Impulse         { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Index           { *categories { ^ #["UGens>Buffer"] } }
-+ IndexL          { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ InfoUGenBase    { *categories { ^ #["UGens>Info"] } }
-+ InRange         { *categories { ^ #["UGens>Maths"] } }
-+ InRect          { *categories { ^ #["UGens>Maths"] } }
-+ Integrator      { *categories { ^ #["UGens>Filters>Linear", "UGens>Maths"] } }
-+ IRand           { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"]} }
-+ K2A             { *categories { ^ #["UGens>Conversion"] } }
-+ KeyTrack        { *categories { ^ #["UGens>Analysis>Pitch"] } }
-+ KeyState        { *categories { ^ #["UGens>User interaction"] } }
-+ Klang           { *categories { ^ #["UGens>Generators>Deterministic", "UGens>Filters>Linear"] } }
-+ Klank           { *categories { ^ #["UGens>Generators>Deterministic", "UGens>Filters>Linear"] } }
-+ LastValue       { *categories { ^ #["UGens>Triggers"] } }
-+ Latch           { *categories { ^ #["UGens>Triggers"] } }
-+ LFGauss        { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ LFNoise0        { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ LFPulse         { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ LFSaw           { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Line            { *categories { ^ #["UGens>Envelopes"] } }
-+ Linen           { *categories { ^ #["UGens>Envelopes"] } }
-+ LinExp          { *categories { ^ #["UGens>Maths"] } }
-+ LinLin          { *categories { ^ #["UGens>Maths"] } }
-+ LinRand         { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"]} }
-+ LocalBuf           { *categories { ^ #["UGens>Buffer"] } }
-+ Logistic        { *categories { ^ #["UGens>Generators>Chaotic"] } }
-+ Loudness        { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ MantissaMask    { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ MaxLocalBufs { *categories { ^ #["UGens>Buffer>Info"] } }
-+ Median          { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ MFCC            { *categories { ^ #["UGens>Analysis"] } }
-+ Mix {}
-+ MostChange      { *categories { ^ #["UGens>Maths"] } }
-+ MouseButton     { *categories { ^ #["UGens>User interaction"] } }
-+ MouseX          { *categories { ^ #["UGens>User interaction"] } }
-+ MulAdd          {}
-+ Normalizer      { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ NRand           { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"]} }
-+ Onsets          { *categories { ^ #["UGens>Analysis"] } }
-+ Osc             { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ OscN            { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ PackFFT		    { *categories { ^ #["UGens>FFT"] } }
-+ PanB            { *categories { ^ #["UGens>Multichannel>Ambisonics"] } }
-+ PanB2           { *categories { ^ #["UGens>Multichannel>Ambisonics"] } }
-+ Panner          { *categories { ^ #["UGens>Multichannel>Panners"] } }
-+ PartConv   { *categories { ^ #["UGens>FFT"] } }
-+ Pause           { *categories { ^ #["UGens>Synth control"] } }
-+ PauseSelf       { *categories { ^ #["UGens>Synth control"] } }
-+ PauseSelfWhenDone {  *categories { ^ #["UGens>Synth control"] } }
-+ Peak    { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ PeakFollower    { *categories { ^ #["UGens>Analysis>Amplitude"] } }
-+ Phasor          { *categories { ^ #["UGens>Triggers", "UGens>Buffer"] } }
-+ Pitch           { *categories { ^ #["UGens>Analysis>Pitch", "UGens>MachineListening"] } }
-+ PitchShift      { *categories { ^ #["UGens>Filters>Pitch"] } }
-+ PlayBuf         { *categories { ^ #["UGens>Buffer"] } }
-+ Pluck           { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ PMOsc           { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Poll            { *categories { ^ #["UGens>Info"] } }
-+ PSinGrain       { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Pulse           { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ PulseCount      { *categories { ^ #["UGens>Triggers"] } }
-+ PulseDivider    { *categories { ^ #["UGens>Triggers"] } }
-+ PV_BinScramble  { *categories { ^ #["UGens>FFT"] } }
-+ PV_BinShift     { *categories { ^ #["UGens>FFT"] } }
-+ PV_BinWipe      { *categories { ^ #["UGens>FFT"] } }
-+ PV_BrickWall    { *categories { ^ #["UGens>FFT"] } }
-+ PV_ChainUGen    { *categories { ^ #["UGens>FFT"] } }
-+ PV_ConformalMap { *categories { ^ #["UGens>FFT"] } }
-+ PV_Diffuser     { *categories { ^ #["UGens>FFT"] } }
-+ PV_HainsworthFoote{ *categories { ^ #["UGens>FFT"] } }
-+ PV_JensenAndersen { *categories { ^ #["UGens>FFT"] } }
-+ PV_MagAbove     { *categories { ^ #["UGens>FFT"] } }
-+ PV_MagDiv       { *categories { ^ #["UGens>FFT"] } }
-+ PV_MagFreeze    { *categories { ^ #["UGens>FFT"] } }
-+ PV_MagMul       { *categories { ^ #["UGens>FFT"] } }
-+ PV_MagSmear     { *categories { ^ #["UGens>FFT"] } }
-+ PV_MagSquared   { *categories { ^ #["UGens>FFT"] } }
-+ PV_PhaseShift   { *categories { ^ #["UGens>FFT"] } }
-+ PV_RandComb     { *categories { ^ #["UGens>FFT"] } }
-+ PV_RandWipe     { *categories { ^ #["UGens>FFT"] } }
-+ PV_RectComb     { *categories { ^ #["UGens>FFT"] } }
-+ PV_RectComb2    { *categories { ^ #["UGens>FFT"] } }
-+ Rand            { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"] } }
-+ RandID          { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ RandSeed        { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ RecordBuf       { *categories { ^ #["UGens>Buffer"] } }
-+ Rotate2         { *categories { ^ #["UGens>Multichannel>Ambisonics","UGens>Multichannel>Panners"] } }
-+ RunningSum      { *categories { ^ #["UGens>Maths"] } }
-+ RunningMin      { *categories { ^ #["UGens>Maths"] } }
-+ RunningMax      { *categories { ^ #["UGens>Maths"] } }
-+ Saw             { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ ScopeOut        { *categories { ^ #["UGens>Buffer"] } }
-+ Select          { *categories { ^ #["UGens>Multichannel>Select"] } }
-+ SelectX         { *categories { ^ #["UGens>Multichannel>Select"] } }
-+ SelectXFocus    { *categories { ^ #["UGens>Multichannel>Select"] } }
-+ SendTrig        { *categories { ^ #["UGens>Triggers"] } }
-+ SetBuf           { *categories { ^ #["UGens>Buffer"] } }
-+ Silent          { *categories { ^ #["UGens>Generators>Single-value"] } }
-+ SinOsc          { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ SinOscFB        { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Slew            { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ Slope           { *categories { ^ #["UGens>Filters>Linear", "UGens>Maths"] } }
-+ SpecCentroid    { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
-+ SpecFlatness    { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
-+ SpecPcile       { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
-+ Spring          { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ Stepper         { *categories { ^ #["UGens>Triggers"] } }
-+ Sweep           { *categories { ^ #["UGens>Triggers"] } }
-+ SyncSaw         { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ T2A             { *categories { ^ #["UGens>Conversion"] } }
-+ T2K             { *categories { ^ #["UGens>Conversion"] } }
-+ Tap             { *categories { ^ #["UGens>Buffer"] } }
-+ TBall           { *categories { ^ #["UGens>Filters>Nonlinear"] } }
-+ TDelay          { *categories { ^ #["UGens>Triggers", "UGens>Delays"] } }
-+ TExpRand        { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ TGrains         { *categories { ^ #["UGens>Buffer", "UGens>Generators>Granular"] } }
-+ Timer           { *categories { ^ #["UGens>Triggers"] } }
-+ TIRand          { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ ToggleFF        { *categories { ^ #["UGens>Triggers"] } }
-+ TRand           { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ Trig1           { *categories { ^ #["UGens>Triggers"] } }
-+ TWindex         { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ TWChoose        { *categories { ^ #["UGens>Multichannel>Select"] } }
-+ UGen            { *categories { ^ #["UGens>Unclassified"] } }
-+ UnpackFFT	    { *categories { ^ #["UGens>FFT"] } }
-+ Unpack1FFT	    { *categories { ^ #["UGens>FFT"] } }
-+ VarSaw          { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ VDiskIn          { *categories { ^ #["UGens>InOut", "UGens>Buffer"] } }
-+ Vibrato         { *categories { ^ #["UGens>Filters>Pitch"] } }
-+ VOsc            { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ VOsc3           { *categories { ^ #["UGens>Generators>Deterministic"] } }
-+ Warp1           { *categories { ^ #["UGens>Buffer", "UGens>Generators>Granular"] } }
-+ WhiteNoise      { *categories { ^ #["UGens>Generators>Stochastic"] } }
-+ XFade           { *categories { ^ #["UGens>Multichannel>Select"] } }
-+ XLine           { *categories { ^ #["UGens>Envelopes"] } }
-+ ZeroCrossing    { *categories { ^ #["UGens>Analysis>Pitch"] } }
-+ Control { *categories { ^#["UGens>Synth control"]}}
-+ AudioControl { *categories { ^#["UGens>Synth control"]}}
-+ LagControl { *categories { ^#["UGens>Synth control"]}}
-+ TrigControl { *categories { ^#["UGens>Synth control"]}}
diff --git a/SCClassLibrary/Common/Collections/ArrayedCollection.sc b/SCClassLibrary/Common/Collections/ArrayedCollection.sc
index 281ea4f..d9e0307 100644
--- a/SCClassLibrary/Common/Collections/ArrayedCollection.sc
+++ b/SCClassLibrary/Common/Collections/ArrayedCollection.sc
@@ -313,7 +313,7 @@ ArrayedCollection : SequenceableCollection {
 		// rank is the number of dimensions in a multidimensional array.
 		// see also Object-rank
 		// this assumes every element has the same rank
-		^ 1 + this.first.rank
+		^1 + this.first.rank
 	}
 	shape {
 		// this assumes every element has the same shape
@@ -325,13 +325,6 @@ ArrayedCollection : SequenceableCollection {
 		shape[1..].reverseDo {|n| result = result.clump(n) };
 		^result
 	}
-	deepCollect { arg depth = 1, function;
-		if (depth <= 0) {
-			^function.value(this, 0)
-		};
-		depth = depth-1;
-		^this.collect {|item| item.deepCollect(depth, function) }
-	}
 	reshapeLike { arg another, indexing=\wrapAt;
 		var index = 0;
 		var flat = this.flat;
@@ -341,7 +334,31 @@ ArrayedCollection : SequenceableCollection {
 			item;
 		};
 	}
-
+	deepCollect { arg depth = 1, function, index = 0, rank = 0;
+		if(depth.isNil) {
+			rank = rank + 1;
+			^this.collect { |item, i| item.deepCollect(depth, function, i, rank) }
+		};
+		if (depth <= 0) {
+			^function.value(this, index, rank)
+		};
+		depth = depth - 1;
+		rank = rank + 1;
+		^this.collect { |item, i| item.deepCollect(depth, function, i, rank) }
+	}
+	deepDo { arg depth = 1, function, index = 0, rank = 0;
+		if(depth.isNil) {
+			rank = rank + 1;
+			^this.do { |item, i| item.deepDo(depth, function, i, rank) }
+		};
+		if (depth <= 0) {
+			function.value(this, index, rank);
+			^this
+		};
+		depth = depth - 1;
+		rank = rank + 1;
+		^this.do { |item, i| item.deepDo(depth, function, i, rank) }
+	}
 	unbubble { arg depth=0, levels=1;
 		if (depth <= 0) {
 			// converts a size 1 array to the item.
@@ -376,48 +393,6 @@ ArrayedCollection : SequenceableCollection {
 	*iota { arg ... sizes;
 		^(0..sizes.product-1).reshape(*sizes)
 	}
-	*fill2D { arg rows, cols, function;
-		var array = this.new(rows);
-		rows.do{|row|
-			var array2 = this.new(cols);
-			cols.do{|col|
-				array2 = array2.add(function.(row, col))
-			};
-			array = array.add(array2);
-		};
-		^array
-	}
-	*fill3D { arg planes, rows, cols, function;
-		var array = this.new(planes);
-		planes.do{|plane|
-			var array2 = this.new(rows);
-			rows.do{|row|
-				var array3 = this.new(cols);
-				cols.do{|col|
-					array3 = array3.add(function.(plane, row, col))
-				};
-				array2 = array2.add(array3);
-			};
-			array = array.add(array2);
-		};
-		^array
-	}
-	*fillND { arg dimensions, function, args=[]; // args are private
-		var n = dimensions.first;
-		var array = this.new(n);
-		var argIndex = args.size;
-		args = args ++ 0;
-		if(dimensions.size <= 1) {
-			n.do { |i| array.add(function.valueArray(args.put(argIndex, i))) };
-		} {
-			dimensions = dimensions.drop(1);
-			n.do { |i|
-				var array2 = this.fillND(dimensions, function, args.put(argIndex, i));
-				array = array.add(array2);
-			}
-		};
-		^array
-	}
 
 
 	// random distribution table
diff --git a/SCClassLibrary/Common/Collections/Collection.sc b/SCClassLibrary/Common/Collections/Collection.sc
index dc39623..c30d8c6 100644
--- a/SCClassLibrary/Common/Collections/Collection.sc
+++ b/SCClassLibrary/Common/Collections/Collection.sc
@@ -14,12 +14,54 @@ Collection {
 	}
 	*fill { | size, function |
 		var obj;
+		if(size.isSequenceableCollection) { ^this.fillND(size, function) };
 		obj = this.new(size);
 		size.do { | i |
 			obj.add(function.value(i));
 		};
 		^obj
 	}
+	*fill2D { | rows, cols, function |
+		var obj = this.new(rows);
+		rows.do { |row|
+			var obj2 = this.new(cols);
+			cols.do { |col|
+				obj2 = obj2.add(function.value(row, col))
+			};
+			obj = obj.add(obj2);
+		};
+		^obj
+	}
+	*fill3D { | planes, rows, cols, function |
+		var obj = this.new(planes);
+		planes.do { |plane|
+			var obj2 = this.new(rows);
+			rows.do { |row|
+				var obj3 = this.new(cols);
+				cols.do { |col|
+					obj3 = obj3.add(function.value(plane, row, col))
+				};
+				obj2 = obj2.add(obj3);
+			};
+			obj = obj.add(obj2);
+		};
+		^obj
+	}
+	*fillND { | dimensions, function, args = #[] | // args are private
+		var n = dimensions.first;
+		var obj = this.new(n);
+		var argIndex = args.size;
+		args = args ++ 0;
+		if(dimensions.size <= 1) {
+			n.do { |i| obj.add(function.valueArray(args.put(argIndex, i))) }
+		} {
+			dimensions = dimensions.drop(1);
+			n.do { |i|
+				obj = obj.add(this.fillND(dimensions, function, args.put(argIndex, i)))
+			}
+		};
+		^obj
+	}
 
 	@ { | index | ^this[index] }
 
@@ -58,6 +100,7 @@ Collection {
 	isEmpty { ^this.size == 0 }
 	notEmpty { ^this.size > 0 }
 	asCollection { ^this }
+	isCollection { ^true }
 
 	add { ^this.subclassResponsibility(thisMethod) }
 	addAll { | aCollection | aCollection.asCollection.do { | item | this.add(item) } }
@@ -181,7 +224,6 @@ Collection {
 		};
 		^prev
 	}
-
 	inject { | thisValue, function |
 		var nextValue = thisValue;
 		this.do { | item, i |
@@ -396,6 +438,52 @@ Collection {
 		^minValue;
 	}
 
+	maxSizeAtDepth { arg rank;
+		var maxsize = 0;
+		if(rank == 0) { ^this.size };
+		this.do { |sublist|
+			var sz = if(sublist.isCollection)
+					{ sublist.maxSizeAtDepth(rank - 1) } { 1 };
+			if (sz > maxsize) { maxsize = sz };
+		};
+		^maxsize
+	}
+
+	maxDepth { arg max = 1;
+		var res = max;
+		this.do { |elem|
+			if(elem.isCollection) { res = max(res, elem.maxDepth(max + 1)) }
+		};
+		^res
+	}
+	
+	deepCollect { | depth = 1, function, index = 0, rank = 0 |
+		if(depth.isNil) {
+			rank = rank + 1;
+			^this.collect { |item, i| item.deepCollect(depth, function, i, rank) }
+		};
+		if (depth <= 0) {
+			^function.value(this, index, rank)
+		};
+		depth = depth - 1;
+		rank = rank + 1;
+		^this.collect { |item, i| item.deepCollect(depth, function, i, rank) }
+	}
+
+	deepDo { | depth = 1, function, index = 0, rank = 0 |
+		if(depth.isNil) {
+			rank = rank + 1;
+			^this.do { |item, i| item.deepDo(depth, function, i, rank) }
+		};
+		if (depth <= 0) {
+			function.value(this, index, rank);
+			^this
+		};
+		depth = depth - 1;
+		rank = rank + 1;
+		^this.do { |item, i| item.deepDo(depth, function, i, rank) }
+	}
+
 	invert { | axis |
 		var index;
 		// can be used to invert a pitch list about a given axis
@@ -548,7 +636,7 @@ Collection {
 
 	writeDef { | file |
 		file.putString("SCgf");
-		file.putInt32(1); // file version
+		file.putInt32(2); // file version
 		file.putInt16(this.size); // number of defs in file.
 
 		this.do { | item | item.writeDef(file); }
diff --git a/SCClassLibrary/Common/Collections/Environment.sc b/SCClassLibrary/Common/Collections/Environment.sc
index ad208c6..c91ee18 100644
--- a/SCClassLibrary/Common/Collections/Environment.sc
+++ b/SCClassLibrary/Common/Collections/Environment.sc
@@ -50,12 +50,14 @@ Environment : IdentityDictionary {
 	push { this.class.push(this) }
 
 	linkDoc { arg doc, pushNow = true;
+		if(Platform.ideName == "scqt") { Error("Current platform doesn't support linking environments to documents.").throw };
      	doc = doc ? Document.current;
      	doc.envir_(this);
      	if(pushNow and: { currentEnvironment !== this }) { this.push };
      }
 
      unlinkDoc { arg doc, popNow = false;
+		if(Platform.ideName == "scqt") { Error("Current platform doesn't support linking environments to documents.").throw };
      	doc = doc ? Document.current;
      	if(doc.envir === this) { doc.envir_(nil) };
      	if(popNow and:  { currentEnvironment === this }) { this.pop };
diff --git a/SCClassLibrary/Common/Collections/Event.sc b/SCClassLibrary/Common/Collections/Event.sc
index 9567a4b..0d02b44 100644
--- a/SCClassLibrary/Common/Collections/Event.sc
+++ b/SCClassLibrary/Common/Collections/Event.sc
@@ -614,6 +614,7 @@ Event : Environment {
 						if (freqs.isRest.not) {
 							~freq = freqs;
 							~amp = ~amp.value;
+							~isPlaying = true;
 							msgFunc = ~getMsgFunc.valueEnvir;
 							instrumentName = ~synthDefName.valueEnvir;
 							bndl = msgFunc.valueEnvir;
@@ -668,7 +669,8 @@ Event : Environment {
 						} {
 							~schedBundleArray.value(~lag, ~timingOffset, server,
 								[\n_free, ~id.asControlInput].flop)
-						}
+						};
+						~isPlaying = false;
 					},
 
 					kill: #{|server|
diff --git a/SCClassLibrary/Common/Collections/Scale.sc b/SCClassLibrary/Common/Collections/Scale.sc
index 3e2b2d3..0b82d86 100644
--- a/SCClassLibrary/Common/Collections/Scale.sc
+++ b/SCClassLibrary/Common/Collections/Scale.sc
@@ -7,7 +7,7 @@ Scale {
 	}
 
 	init { | inDegrees, inPitchesPerOctave, inTuning, inName |
-		degrees = inDegrees.asArray.asInteger;
+		degrees = Int32Array.newFrom(inDegrees.asArray.asInteger);
 		pitchesPerOctave = inPitchesPerOctave ? this.guessPPO(degrees);
 		name = inName;
 		^this.tuning_(inTuning ? Tuning.default(pitchesPerOctave));
@@ -126,12 +126,12 @@ Scale {
 		^tuning.stepsPerOctave
 	}
 
-	== { |scale|
-		^degrees == scale.degrees and: { tuning == scale.tuning }
+	== { arg that;
+		^this.compareObject(that, #[\degrees, \tuning])
 	}
 
 	hash {
-		^degrees.hash bitXor: tuning.hash
+		^this.instVarHash(#[\degrees, \tuning])
 	}
 
 	storeOn { |stream|
@@ -161,7 +161,7 @@ Tuning {
 	var <tuning, <octaveRatio, <>name;
 
 	*new { | tuning, octaveRatio = 2.0, name = "Unknown Tuning" |
-		^super.newCopyArgs(tuning, octaveRatio, name);
+		^super.newCopyArgs(DoubleArray.newFrom(tuning), octaveRatio, name);
 	}
 
 	*newFromKey { | key |
@@ -217,10 +217,11 @@ Tuning {
 	}
 
 	== { |argTuning|
-		^tuning == argTuning.tuning and: { octaveRatio == argTuning.octaveRatio }	}
+		^this.compareObject(argTuning, #[\tuning, \octaveRatio])
+	}
 
 	hash {
-		^tuning.hash bitXor: octaveRatio.hash
+		^this.instVarHash([\tuning, \octaveRatio])
 	}
 
 	*doesNotUnderstand { |selector, args|
diff --git a/SCClassLibrary/Common/Collections/SequenceableCollection.sc b/SCClassLibrary/Common/Collections/SequenceableCollection.sc
index 2b2a80c..c20b805 100644
--- a/SCClassLibrary/Common/Collections/SequenceableCollection.sc
+++ b/SCClassLibrary/Common/Collections/SequenceableCollection.sc
@@ -92,8 +92,18 @@ SequenceableCollection : Collection {
 		newlist = newlist.addAll(this).addAll(aSequenceableCollection);
 		^newlist
 	}
-	+++ { arg aSequenceableCollection;
+	+++ { arg aSequenceableCollection, adverb;
 		aSequenceableCollection = aSequenceableCollection.asSequenceableCollection;
+		if(adverb.notNil) {
+			if(adverb == 0) { ^this ++ aSequenceableCollection };
+			if(adverb == 1) { ^this +++ aSequenceableCollection };
+			if(adverb < 0) { ^aSequenceableCollection.perform('+++', this, adverb.neg) };
+			^this.deepCollect(adverb - 1, { |sublist|
+				sublist.asSequenceableCollection.collect {|item, i|
+					item.asSequenceableCollection ++ aSequenceableCollection.wrapAt(i)
+				}
+			})
+		};
 		^this.collect {|item, i|
 			item.asSequenceableCollection ++ aSequenceableCollection.wrapAt(i)
 		}
@@ -118,6 +128,14 @@ SequenceableCollection : Collection {
 		^true
 	}
 
+	hash {
+		var hash = this.class.hash;
+		this.do { | item |
+			hash = hash << 1 bitXor: item.hash // encode item order by left shifting
+		};
+		^hash
+	}
+
 	copyRange { arg start, end;
 		var newColl;
 		var i = start;
@@ -167,13 +185,13 @@ SequenceableCollection : Collection {
 		^nil
 	}
 
-        indicesOfEqual { |item|
-                var indices;
-                this.do { arg val, i;
-                        if (item == val) { indices = indices.add(i) }
-                };
-                ^indices
-        }
+	indicesOfEqual { |item|
+		var indices;
+		this.do { arg val, i;
+			if (item == val) { indices = indices.add(i) }
+		};
+		^indices
+	}
 
 
 	find { |sublist, offset=0|
@@ -375,11 +393,11 @@ SequenceableCollection : Collection {
 		});
 		^list
 	}
-	
+
 	flat {
 		^this.prFlat(this.species.new(this.flatSize))
 	}
-	
+
 	prFlat { |list|
 		this.do({ arg item, i;
 			if (item.respondsTo('prFlat'), {
@@ -402,7 +420,7 @@ SequenceableCollection : Collection {
 		});
 		^list
 	}
-	
+
 	flop {
 		var list, size, maxsize;
 
@@ -410,15 +428,15 @@ SequenceableCollection : Collection {
 		maxsize = 0;
 		this.do({ arg sublist;
 			var sz;
-			sz = if (sublist.isSequenceableCollection, { sublist.size },{ 1 });
+			sz = if(sublist.isSequenceableCollection, { sublist.size }, { 1 });
 			if (sz > maxsize, { maxsize = sz });
 		});
 
 		list = this.species.fill(maxsize, { this.species.new(size) });
 		this.do({ arg isublist, i;
-			if (isublist.isSequenceableCollection, {
+			if(isublist.isSequenceableCollection, {
 				list.do({ arg jsublist, j;
-					jsublist.add( isublist.wrapAt(j); );
+					jsublist.add( isublist.wrapAt(j) );
 				});
 			},{
 				list.do({ arg jsublist, j;
@@ -429,6 +447,22 @@ SequenceableCollection : Collection {
 		^list
 	}
 
+	flopWith { |func|
+		var maxsize = this.maxValue { |sublist|
+			if(sublist.isSequenceableCollection) { sublist.size } { 1 }
+		};
+
+		^this.species.fill(maxsize, { |i|
+			func.value( *this.collect { |sublist|
+				if(sublist.isSequenceableCollection) {
+					sublist.wrapAt(i)
+				} {
+					sublist
+				}
+			})
+		})
+	}
+
 	flopTogether { arg ... moreArrays;
 		var standIn, maxSize = 0, array;
 		array = [this] ++ moreArrays;
@@ -444,6 +478,29 @@ SequenceableCollection : Collection {
 		};
 	}
 
+	flopDeep { arg rank;
+		var size, maxsize;
+		if(rank.isNil) { rank = this.maxDepth - 1 };
+		if(rank <= 1) { ^this.flop };
+
+		size = this.size;
+		maxsize = this.maxSizeAtDepth(rank);
+		^this.species.fill(maxsize, { |i|
+			this.wrapAtDepth(rank, i)
+		})
+	}
+
+	wrapAtDepth { arg rank, index;
+		if(rank == 0) { ^this.wrapAt(index) };
+		^this.collect { |item, i|
+			if(item.isSequenceableCollection) {
+				item.wrapAtDepth(rank - 1, index)
+			} {
+				item
+			}
+		}
+	}
+
 	unlace { arg numlists, clumpSize=1, clip=false;
 		var size, list, sublist, self;
 
@@ -842,6 +899,12 @@ SequenceableCollection : Collection {
 		}
 	}
 
+	// this method is for UGen inputs that require Refs to block direct multichannel expansion.
+	// here, we assume this is already an array of Refs, which we simply return.
+	multichannelExpandRef { arg rank;
+		^this
+	}
+
 	// support some UGen convenience methods.
 	// NOTE: don't forget to add a wrapper here when adding a method to UGen or AbstractFunction
 	clip { arg ... args; ^this.multiChannelPerform('clip', *args) }
@@ -853,6 +916,8 @@ SequenceableCollection : Collection {
 	expexp { arg ... args; ^this.multiChannelPerform('expexp', *args) }
 	lincurve { arg ... args; ^this.multiChannelPerform('lincurve', *args) }
 	curvelin { arg ... args; ^this.multiChannelPerform('curvelin', *args) }
+	bilin { arg ... args; ^this.multiChannelPerform('bilin', *args) }
+	biexp { arg ... args; ^this.multiChannelPerform('biexp', *args) }
 	range { arg ... args; ^this.multiChannelPerform('range', *args) }
 	exprange { arg ... args; ^this.multiChannelPerform('exprange', *args) }
 	unipolar { arg ... args; ^this.multiChannelPerform('unipolar', *args) }
@@ -864,6 +929,7 @@ SequenceableCollection : Collection {
 	lag2ud { arg ... args; ^this.multiChannelPerform('lag2ud', *args) }
 	lag3ud { arg ... args; ^this.multiChannelPerform('lag3ud', *args) }
 	varlag { arg ... args; ^this.multiChannelPerform('varlag', *args) }
+	slew { arg ... args; ^this.multiChannelPerform('slew', *args) }
 	blend { arg ... args; ^this.multiChannelPerform('blend', *args) }
 	checkBadValues { arg ... args; ^this.multiChannelPerform('checkBadValues', *args) }
 	prune { arg ... args; ^this.multiChannelPerform('prune', *args) }
diff --git a/SCClassLibrary/Common/Collections/SparseArray.sc b/SCClassLibrary/Common/Collections/SparseArray.sc
index 20c3ecf..886f8be 100644
--- a/SCClassLibrary/Common/Collections/SparseArray.sc
+++ b/SCClassLibrary/Common/Collections/SparseArray.sc
@@ -172,6 +172,11 @@ Order : SequenceableCollection {
 	choose {
 		^array.choose
 	}
+	
+	storeOn { arg stream;
+		stream << this.class.name;
+		stream << ".newFromIndices( " <<<* [ array, indices ] << " )"; 
+	}
 }
 
 
@@ -421,6 +426,13 @@ SparseArray : Order {
 			super.maxItem(function);
 		}
 	}
+	
+	storeOn { | stream |
+		if (stream.atLimit) { ^this };
+		stream << this.class.name << "[ " ;
+		this.storeItemsOn(stream);
+		stream << " ]" ;
+	}
 
 	// private implementation
 
diff --git a/SCClassLibrary/Common/Collections/String.sc b/SCClassLibrary/Common/Collections/String.sc
index 443ac01..8028141 100644
--- a/SCClassLibrary/Common/Collections/String.sc
+++ b/SCClassLibrary/Common/Collections/String.sc
@@ -72,12 +72,12 @@ String[char] : RawArray {
 	}
 
 	compare { arg aString, ignoreCase=false; _StringCompare }
-	< { arg aString; ^this.compare(aString, true) < 0 }
-	> { arg aString; ^this.compare(aString, true) > 0 }
-	<= { arg aString; ^this.compare(aString, true) <= 0 }
-	>= { arg aString; ^this.compare(aString, true) >= 0 }
-	== { arg aString; ^this.compare(aString, true) == 0 }
-	!= { arg aString; ^this.compare(aString, true) != 0 }
+	< { arg aString; ^this.compare(aString, false) < 0 }
+	> { arg aString; ^this.compare(aString, false) > 0 }
+	<= { arg aString; ^this.compare(aString, false) <= 0 }
+	>= { arg aString; ^this.compare(aString, false) >= 0 }
+	== { arg aString; ^this.compare(aString, false) == 0 }
+	!= { arg aString; ^this.compare(aString, false) != 0 }
 	hash { _StringHash }
 
 	// no sense doing collect as per superclass collection
@@ -497,4 +497,15 @@ String[char] : RawArray {
 	mkdir {
 		File.mkdir(this);
 	}
+
+	parseYAML {
+		_String_ParseYAML
+		^this.primitiveFailed
+	}
+
+	parseYAMLFile {
+		_String_ParseYAMLFile
+		^this.primitiveFailed
+	}
+
 }
diff --git a/SCClassLibrary/Common/Control/Buffer.sc b/SCClassLibrary/Common/Control/Buffer.sc
index ca482fb..d3bbeb5 100644
--- a/SCClassLibrary/Common/Control/Buffer.sc
+++ b/SCClassLibrary/Common/Control/Buffer.sc
@@ -527,10 +527,10 @@ Buffer {
 
 	query {
 		OSCFunc({ arg msg;
-			Post << "bufnum      :" << msg[1] << Char.nl
+			Post << "bufnum      : " << msg[1] << Char.nl
 				<< "numFrames   : " << msg[2] << Char.nl
 				<< "numChannels : " << msg[3] << Char.nl
-				<< "sampleRate  :" << msg[4] << Char.nl << Char.nl;
+				<< "sampleRate  : " << msg[4] << Char.nl << Char.nl;
 		}, '/b_info', server.addr).oneShot;
 		server.sendMsg("/b_query",bufnum)
 	}
diff --git a/SCClassLibrary/Common/Control/Bus.sc b/SCClassLibrary/Common/Control/Bus.sc
index 767fbfd..ade7ddb 100644
--- a/SCClassLibrary/Common/Control/Bus.sc
+++ b/SCClassLibrary/Common/Control/Bus.sc
@@ -203,16 +203,12 @@ Bus {
 		stream << this.class.name << "(" <<*
 			[rate.asCompileString, index, numChannels, server.asCompileString]  <<")"
 	}
-
 	== { arg aBus;
-		if(aBus === this,{ ^true });
-		^aBus respondsTo: #[\index, \numChannels, \rate, \server]
-		and: { aBus.index == index
-		and: { aBus.numChannels == numChannels
-		and: { aBus.rate == rate
-		and: { aBus.server === server }}}}
-	}
-	hash { ^index.hash bitXor: numChannels.hash bitXor: rate.hash bitXor: server.hash }
+		^this.compareObject(aBus, #[\index, \numChannels, \rate, \server])
+	}
+	hash {
+		^this.instVarHash(#[\index, \numChannels, \rate, \server])
+	}
 
 	isAudioOut { // audio interface
 		^(rate === \audio and: {index < server.options.firstPrivateBus})
diff --git a/SCClassLibrary/Common/Control/GraphBuilder.sc b/SCClassLibrary/Common/Control/GraphBuilder.sc
index e409c8b..ec56f35 100644
--- a/SCClassLibrary/Common/Control/GraphBuilder.sc
+++ b/SCClassLibrary/Common/Control/GraphBuilder.sc
@@ -169,7 +169,7 @@ NamedControl {
 					control = TrigControl.kr(values.flat.unbubble);
 				} {
 					if(prefix == $i or: {rate === \scalar}) {
-						buildSynthDef.addIr(name, values);
+						buildSynthDef.addIr(name, values.unbubble);
 						control = Control.ir(values.flat.unbubble);
 					} {
 						buildSynthDef.addKr(name, values.unbubble);
diff --git a/SCClassLibrary/Common/Control/MIDIOut.sc b/SCClassLibrary/Common/Control/MIDIOut.sc
index fa74af2..98ff7d7 100644
--- a/SCClassLibrary/Common/Control/MIDIOut.sc
+++ b/SCClassLibrary/Common/Control/MIDIOut.sc
@@ -108,7 +108,7 @@ MIDIEvent {
 }
 
 MIDIIn {
-	var <>port;
+	var port;
 	classvar <>action,
 	<> noteOn, <> noteOff, <> polytouch,
 	<> control, <> program,
@@ -306,10 +306,6 @@ MIDIIn {
 		_DisconnectMIDIIn
 	}
 
-	*new { arg port;
-		^super.new.port_(port)
-	}
-
 	*prDispatchEvent { arg eventList, status, port, chan, b, c;
 		var selectedEvents;
 		eventList ?? {^this};
diff --git a/SCClassLibrary/Common/Control/NetAddr.sc b/SCClassLibrary/Common/Control/NetAddr.sc
index 3d6bd00..a264f9e 100644
--- a/SCClassLibrary/Common/Control/NetAddr.sc
+++ b/SCClassLibrary/Common/Control/NetAddr.sc
@@ -132,11 +132,11 @@ NetAddr {
 	}
 
 	== { arg that;
-		^that respondsTo: #[\port, \addr]
-			and: { this.port == that.port and: { this.addr == that.addr} }
+		^this.compareObject(that, #[\port, \addr])
 	}
-	hash { arg that;
-		^addr.hash bitXor: port.hash
+
+	hash {
+		^this.instVarHash(#[\port, \addr])
 	}
 
 	// Asymmetric: "that" may be nil or have nil port (wildcards)
diff --git a/SCClassLibrary/Common/Control/Node.sc b/SCClassLibrary/Common/Control/Node.sc
index a6ad800..753d40d 100644
--- a/SCClassLibrary/Common/Control/Node.sc
+++ b/SCClassLibrary/Common/Control/Node.sc
@@ -25,10 +25,14 @@ Node {
 
 	*actionNumberFor { |addAction = (\addToHead)| ^addActions[addAction] }
 
-	free { arg sendFlag=true;
-		if(sendFlag, {
-			server.sendMsg(11, nodeID);  //"/n_free"
-		});
+	free { arg sendFlag = true, sendBundle = false;
+		if(sendFlag) {
+			if(sendBundle) {
+				server.sendMsg(11, nodeID)  //"/n_free"
+			} {
+				server.sendBundle(server.latency, [11, nodeID])
+			}
+		};
 		group = nil;
 		isPlaying = false;
 		isRunning = false;
@@ -211,12 +215,14 @@ Node {
 		^msg
 	}
 
-	hash {  ^server.hash bitXor: nodeID.hash	}
+	== { arg that;
+		^this.compareObject(that, #[\nodeID, \server])
+	}
 
-	== { arg aNode;
-		^aNode respondsTo: #[\nodeID, \server]
-			and: { aNode.nodeID == nodeID and: { aNode.server === server }}
+	hash {
+		^this.instVarHash(#[\nodeID, \server])
 	}
+
 	printOn { arg stream; stream << this.class.name << "(" << nodeID <<")" }
 	asUGenInput { Error("should not use a % inside a SynthDef".format(this.class.name)).throw }
 	asControlInput { ^this.nodeID }
@@ -493,6 +499,7 @@ Synth : Node {
 			action.value(msg.at(3)); r.remove }).add;
 		server.sendMsg(44, nodeID, index);	//"/s_get"
 	}
+	
 	getMsg { arg index;
 		^[44, nodeID, index];	//"/s_get"
 	}
@@ -502,10 +509,33 @@ Synth : Node {
 			action.value(msg.copyToEnd(4)); r.remove } ).add;
 		server.sendMsg(45, nodeID, index, count); //"/s_getn"
 	}
+
 	getnMsg { arg index, count;
 		^[45, nodeID, index, count]; //"/s_getn"
 	}
 
+	seti { arg ... args; // args are [key, index, value, key, index, value ...]
+		var msg = Array.new(args.size div: 3 * 2);
+		var synthDesc = SynthDescLib.at(defName.asSymbol);
+		if(synthDesc.isNil) {
+			"message seti failed, because SynthDef % was not added.".format(defName).warn; 
+			^this
+		};
+		forBy(0, args.size-1, 3, { |i|
+			var key = args[i], offset = args[i+1], value = args[i+2];
+			var controlName = synthDesc.controlDict[key];
+			if(controlName.notNil and: { offset < controlName.numChannels }) {
+				msg.add(controlName.index+offset);
+				if(value.isArray) {
+					msg.add(value.keep(controlName.numChannels - offset))
+				} {
+					msg.add(value)
+				}
+			}
+		});
+		server.sendMsg("/n_set", nodeID, *msg.asOSCArgArray);
+	}
+
 	printOn { arg stream; stream << this.class.name << "(" <<< defName << " : " << nodeID <<")" }
 }
 
diff --git a/SCClassLibrary/Common/Control/ResponseDefs.sc b/SCClassLibrary/Common/Control/ResponseDefs.sc
index d1c21f5..c4d4b93 100644
--- a/SCClassLibrary/Common/Control/ResponseDefs.sc
+++ b/SCClassLibrary/Common/Control/ResponseDefs.sc
@@ -323,7 +323,7 @@ OSCdef : OSCFunc {
 	printOn { arg stream; stream << this.class.name << "(" <<* [key, path, srcID, recvPort, argTemplate] << ")" }
 
 	*freeAll {
-		var objs = all.shallowCopy;
+		var objs = all.copy;
 		objs.do(_.free)
 	}
 }
@@ -453,21 +453,74 @@ MIDIMessageDispatcherNV : MIDIMessageDispatcher {
 	}
 }
 
+// for \sysex
+MIDISysexDispatcher : MIDIMessageDispatcher {
+
+	getKeysForFuncProxy {|funcProxy| ^(funcProxy.srcID ? \all)} // chan
+
+	value {|srcID, data|
+		active[srcID].value(data, srcID);
+		active[\all].value(data, srcID);
+	}
+
+	wrapFunc {|funcProxy|
+		var func, srcID, argTemplate;
+		func = funcProxy.func;
+		srcID = funcProxy.srcID;
+		argTemplate = funcProxy.argTemplate;
+		if(argTemplate.notNil, { func = MIDIValueMatcher(argTemplate, func)});
+		^func;
+	}
+}
+
 
 MIDIFunc : AbstractResponderFunc {
-	classvar <>defaultDispatchers;
+	classvar <>defaultDispatchers, traceFuncs, traceRunning = false;
 	var <chan, <msgNum, <msgType, <argTemplate;
 
 	*initClass {
 		defaultDispatchers = IdentityDictionary.new;
+		traceFuncs = IdentityDictionary.new;
 		[\noteOn, \noteOff, \control, \polytouch].do({|type|
 			defaultDispatchers[type] = MIDIMessageDispatcher(type);
+			traceFuncs[type] = {|src, chan, num, val|
+				"MIDI Message Received:\n\ttype: %\n\tsrc: %\n\tchan: %\n\tnum: %\n\tval: %\n\n".postf(type, src, chan, num, val);
+			};
+		});
+		[\sysex, \sysrt].do({|type|
+			defaultDispatchers[type] = MIDISysexDispatcher(type);
+			traceFuncs[type] = {|src, data|
+				"MIDI Message Received:\n\ttype: %\n\tsrc: %\n\tdata: %\n\n".postf(type, src, data);
+			};
 		});
 		[\touch, \program, \bend].do({|type|
 			defaultDispatchers[type] = MIDIMessageDispatcherNV(type);
+			traceFuncs[type] = {|src, chan, num|
+				"MIDI Message Received:\n\ttype: %\n\tsrc: %\n\tchan: %\n\tnum: %\n\n".postf(type, src, chan, num);
+			};
+		});
+	}
+
+	*trace {|bool = true|
+		if(bool, {
+			if(traceRunning.not, {
+				[\noteOn, \noteOff, \control, \polytouch, \touch, \program, \bend, \sysex].do({|type|
+					MIDIIn.addFuncTo(type, traceFuncs[type]);
+				});
+				CmdPeriod.add(this);
+				traceRunning = true;
+			});
+		}, {
+			[\noteOn, \noteOff, \control, \polytouch, \touch, \program, \bend, \sysex].do({|type|
+				MIDIIn.removeFuncFrom(type, traceFuncs[type]);
+			});
+			CmdPeriod.remove(this);
+			traceRunning = false;
 		});
 	}
 
+	*cmdPeriod { this.trace(false) }
+
 	*new { arg func, msgNum, chan, msgType, srcID, argTemplate, dispatcher;
 		^super.new.init(func, msgNum, chan, msgType, srcID, argTemplate, dispatcher ? defaultDispatchers[msgType]);
 	}
@@ -500,6 +553,15 @@ MIDIFunc : AbstractResponderFunc {
 		^this.new(func, nil, chan, \program, srcID, argTemplate, dispatcher);
 	}
 
+	*sysex { arg func, srcID, argTemplate, dispatcher;
+		^this.new(func, nil, nil, \sysex, srcID, argTemplate, dispatcher);
+	}
+
+	*sysrt { arg func, index, srcID, argTemplate, dispatcher;
+		^this.new(func, index, nil, \sysrt, srcID, argTemplate, dispatcher);
+	}
+
+
 	init {|argfunc, argmsgNum, argchan, argType, argsrcID, argtempl, argdisp|
 		msgNum = argmsgNum ? msgNum;
 		chan = argchan ? chan;
@@ -568,6 +630,14 @@ MIDIdef : MIDIFunc {
 		^this.new(key, func, nil, chan, \program, srcID, argTemplate, dispatcher);
 	}
 
+	*sysex { arg key, func, srcID, argTemplate, dispatcher;
+		^this.new(key, func, nil, nil, \sysex, srcID, argTemplate, dispatcher);
+	}
+
+	*sysrt { arg key, func, index, srcID, argTemplate, dispatcher;
+		^this.new(key, func, index, nil, \sysrt, srcID, argTemplate, dispatcher);
+	}
+
 	addToAll {|argkey| key = argkey; all.put(key, this) }
 
 	free { all[key] = nil; super.free; }
@@ -576,7 +646,7 @@ MIDIdef : MIDIFunc {
 	printOn { arg stream; stream << this.class.name << "(" <<* [key, msgType, msgNum, chan, argTemplate] << ")" }
 
 	*freeAll {
-		var objs = all.shallowCopy;
+		var objs = all.copy;
 		objs.do(_.free)
 	}
 }
@@ -595,7 +665,7 @@ MIDIFuncSrcMessageMatcher : AbstractMessageMatcher {
 	}
 }
 
-// if you need to test for srcID func gets wrapped in this
+// if you need to test for chan func gets wrapped in this
 MIDIFuncChanMessageMatcher : AbstractMessageMatcher {
 	var chan;
 
diff --git a/SCClassLibrary/Common/Control/ScopeBuffer.sc b/SCClassLibrary/Common/Control/ScopeBuffer.sc
index f0d07bf..0c43a39 100644
--- a/SCClassLibrary/Common/Control/ScopeBuffer.sc
+++ b/SCClassLibrary/Common/Control/ScopeBuffer.sc
@@ -43,5 +43,12 @@ ScopeBuffer {
 			[index, numChannels, server.asCompileString]  <<")"
 	}
 
-	hash { ^index.hash bitXor: numChannels.hash bitXor: server.hash }
+	== { arg that;
+		^this.compareObject(that, #[\index, \numChannels, \server])
+	}
+
+	hash {
+		^this.instVarHash(#[\index, \numChannels, \server])
+	}
+
 }
diff --git a/SCClassLibrary/Common/Control/Score.sc b/SCClassLibrary/Common/Control/Score.sc
index 12978e5..3e0c88c 100644
--- a/SCClassLibrary/Common/Control/Score.sc
+++ b/SCClassLibrary/Common/Control/Score.sc
@@ -17,7 +17,7 @@ Score {
 	}
 
 	init { arg list;
-		score = [[0.0, ["/g_new", 1]]] ++ list;
+		score = [[0.0, ["/g_new", 1, 0, 0]]] ++ list;
 		this.sort;
 	}
 
diff --git a/SCClassLibrary/Common/Control/SerialPort.sc b/SCClassLibrary/Common/Control/SerialPort.sc
index 8f936db..49940ad 100644
--- a/SCClassLibrary/Common/Control/SerialPort.sc
+++ b/SCClassLibrary/Common/Control/SerialPort.sc
@@ -8,7 +8,6 @@ SerialPort
 	*initClass {
 		allPorts = Array[];
 		ShutDown.add {
-			//			this.closeAll;
 			this.cleanupAll;
 		};
 	}
@@ -60,7 +59,6 @@ SerialPort
 		  this.prOpen(*args);
 		  allPorts = allPorts.add(this);
 		  doneAction = { ("SerialPort"+args[0]+"was closed").postln; };
-// 		CmdPeriod.add(this);
 		}
 	}
 
@@ -71,7 +69,6 @@ SerialPort
 		if (this.isOpen) {
 			this.prClose;
 			allPorts.remove(this);
-// 			CmdPeriod.remove(this);
 		}
 	}
 	*closeAll {
@@ -121,15 +118,6 @@ SerialPort
 		}
 	}
 
-	doDoneAction{
-		doneAction.value;
-	}
-
-// 	cmdPeriod {
-// 		// remove waiting threads
-// 		semaphore.clear;
-// 	}
-
 	// PRIMITIVE
 	prOpen { | ... args | // was: | port, baudRate | but that misses out on all the other args?
 		_SerialPort_Open
@@ -159,7 +147,7 @@ SerialPort
 	}
 	prDoneAction {
 		// callback
-		this.doDoneAction;
+		this.doneAction.value;
 		// cleanup the port
 		this.prCleanup
 	}
diff --git a/SCClassLibrary/Common/Control/Server.sc b/SCClassLibrary/Common/Control/Server.sc
index 6c7a220..b00c593 100644
--- a/SCClassLibrary/Common/Control/Server.sc
+++ b/SCClassLibrary/Common/Control/Server.sc
@@ -1,9 +1,10 @@
 ServerOptions
 {
-	var <>numPrivateAudioBusChannels=112;
+	// order of variables is important here. Only add new instance variables to the end.
+	var <numAudioBusChannels=128;
 	var <>numControlBusChannels=4096;
-	var <>numInputBusChannels=8;
-	var <>numOutputBusChannels=8;
+	var <numInputBusChannels=8;
+	var <numOutputBusChannels=8;
 	var numBuffers=1026;
 
 	var <>maxNodes=1024;
@@ -36,6 +37,8 @@ ServerOptions
 	var <>memoryLocking = false;
 	var <>threads = nil; // for supernova
 
+	var <numPrivateAudioBusChannels=112;
+
 	device {
 		^if(inDevice == outDevice)
 		{
@@ -151,15 +154,35 @@ ServerOptions
 		^numOutputBusChannels + numInputBusChannels
 	}
 
-	numAudioBusChannels{
-		^numPrivateAudioBusChannels + numInputBusChannels + numOutputBusChannels
-	}
-
 	bootInProcess {
 		_BootInProcessServer
 		^this.primitiveFailed
 	}
 
+	numPrivateAudioBusChannels_ {arg numChannels = 112;
+		numPrivateAudioBusChannels = numChannels;
+		this.recalcChannels;
+	}
+
+	numAudioBusChannels_ {arg numChannels=128;
+		numAudioBusChannels = numChannels;
+		numPrivateAudioBusChannels = numAudioBusChannels - numInputBusChannels - numOutputBusChannels;
+	}
+
+	numInputBusChannels_ {arg numChannels=8;
+		numInputBusChannels = numChannels;
+		this.recalcChannels;
+	}
+
+	numOutputBusChannels_ {arg numChannels=8;
+		numOutputBusChannels = numChannels;
+		this.recalcChannels;
+	}
+
+	recalcChannels {
+		numAudioBusChannels = numPrivateAudioBusChannels + numInputBusChannels + numOutputBusChannels;
+	}
+
 	*prListDevices {
 		arg in, out;
 		_ListAudioDevices
@@ -257,7 +280,7 @@ Server {
 	*default_ { |server|
 		default = server; // sync with s?
 		if (sync_s, { thisProcess.interpreter.s = server });
-		this.all.do(_.changed(\default));
+		this.all.do(_.changed(\default, server));
 	}
 
 	*new { arg name, addr, options, clientID=0;
@@ -637,9 +660,6 @@ Server {
 			};
 
 			this.initTree;
-			if(volume.volume != 0.0) {
-				volume.play;
-			};
 		}, onFailure: onFailure ? false);
 		if (remoteControlled.not, {
 			"You will have to manually boot remote server.".inform;
@@ -1064,4 +1084,12 @@ Server {
 			^serverInterface.setControlBusValues(busIndex, valueArray)
 		}
 	}
+
+	*scsynth {
+		this.program = this.program.replace("supernova", "scsynth")
+	}
+
+	*supernova {
+		this.program = this.program.replace("scsynth", "supernova")
+	}
 }
diff --git a/SCClassLibrary/Common/Control/Volume.sc b/SCClassLibrary/Common/Control/Volume.sc
index 0eb2cd5..31299f1 100644
--- a/SCClassLibrary/Common/Control/Volume.sc
+++ b/SCClassLibrary/Common/Control/Volume.sc
@@ -22,10 +22,10 @@ z.free;
 */
 
 Volume {
-
 	var startBus, numChans, <min, <max, server, persist, <ampSynth, <>window, <volume, spec;
-	var <lag, sdname, gui, <isPlaying, <muteamp, cpFun, <isMuted=false, <isPrepping;
+	var <lag, sdname, gui = false, <muteamp, cpFun, <isMuted=false;
 	var <synthNumChans;	// the actual number of channels, which might be set automatically
+	var sdInitialized;
 
 	*new { arg server, startBus = 0, numChans, min = -90, max = 6, persist = false;
 		^super.newCopyArgs(startBus, numChans, min, max, server, persist).initVolume;
@@ -36,115 +36,97 @@ Volume {
 		server = server ?? {Server.default};
 		volume = 0;
 		lag = 0.1;
-		isPlaying = false;
-		isPrepping = false;
 		gui = false;
-		ServerBoot.add ({
-				isPlaying = false;
+		sdInitialized = Condition();
+		if (server.serverRunning) {
+			this.sendSynthDef
+		} {
+			ServerBoot.add ({
 				ampSynth = nil;
-		}, server)
+				this.sendSynthDef;
+			}, server)
+		};
 	}
 
-	sendDef {
-		SynthDef(sdname = (\volumeAmpControl ++ synthNumChans).asSymbol,
-			{ arg volumeAmp = 1, volumeLag = 0.1, volumeGate=1;
-			XOut.ar(startBus,
-				Linen.kr(volumeGate, releaseTime: 0.05, doneAction:2),
-				In.ar(startBus, synthNumChans) * Lag.kr(volumeAmp, volumeLag) );
+	sendSynthDef {
+		if(numChans.isNil) {
+			synthNumChans = server.options.numOutputBusChannels;
+		} {
+			synthNumChans = numChans;
+		};
+
+		sdname = (\volumeAmpControl ++ synthNumChans).asSymbol;
+
+		sdInitialized = Condition();
+
+		SynthDef(sdname,
+			{ arg volumeAmp = 1, volumeLag = 0.1, gate=1, bus;
+				XOut.ar(bus,
+					Linen.kr(gate, releaseTime: 0.05, doneAction:2),
+					In.ar(bus, synthNumChans) * Lag.kr(volumeAmp, volumeLag) );
 		}).send(server);
-	}
 
-	play {arg mute = false;
-		var cond, nodeID;
-		cond = Condition.new;
-		(isPlaying || isPrepping).not.if({
-			server.serverRunning.if({
-				Routine.run({
-					if(numChans.isNil) {
-						synthNumChans = server.options.numOutputBusChannels;
+		fork {
+			server.sync(sdInitialized);
+			if (cpFun.isNil) {
+				ServerTree.add(cpFun = {
+					ampSynth = nil;
+					if (persist) {
+						this.volume_(this.volume)
 					} {
-						synthNumChans = numChans;
+						this.free;
 					};
-					this.sendDef;
-					isPrepping = true;
-					server.sync(cond);
-					isPlaying = true;
-					isPrepping = false;
-					cpFun.isNil.if({
-						CmdPeriod.add(cpFun = {
-							var	nodeIDToFree;
-							ampSynth.notNil.if({
-								nodeIDToFree = ampSynth.nodeID;
-								{	server.nodeAllocator
-									.freePerm(nodeIDToFree);
-								}.defer(1.0);
-							});
-							persist.if({
-								isPlaying = false;
-								this.play(isMuted);
-							}, {
-								this.free;
-							});
-						});
-					});
-						// we have permanent node IDs so we should use them
-					nodeID = server.nodeAllocator.allocPerm(1);
-					ampSynth = Synth.basicNew(sdname, server, nodeID);
-					server.sendBundle(nil, ampSynth.newMsg(1,
-						[\volumeAmp, volume.dbamp, \volumeLag, lag],
-						addAction: \addAfter));
-					mute.if({this.mute});
-				})
-			}, {
+				});
+			};
+			if (server.serverRunning.not) {
+				this.volume_(this.volume)
+			}
+		}
+	}
+
+	play {arg mute = false;
+		if (ampSynth.isNil) {
+			if(server.serverRunning) {
+				ampSynth = Synth.after(server.defaultGroup, sdname,
+					[\volumeAmp, volume.dbamp, \volumeLag, lag, \bus, startBus]);
+				mute.if({this.mute});
+			} {
 				"Volume only works on a running Server. Please boot".warn;
-			})
-		})
+			}
+		}
 	}
 
 	free {
-		var	nodeIDToFree = ampSynth.nodeID;
-		ampSynth.set(\volumeGate, 0.0);
-		{ server.nodeAllocator.freePerm(nodeIDToFree) }.defer(1.0);
-		isPlaying = false;
-		CmdPeriod.remove(cpFun);
-		cpFun = nil;
+		ampSynth.release;
+		ampSynth = nil;
 	}
 
 	numChans { ^numChans ? synthNumChans ? server.options.numOutputBusChannels }
 	numChans_ { |num|
-		if(isPlaying and: { num != synthNumChans }) {
+		if(ampSynth.notNil and: { num != synthNumChans }) {
 			"Change in number of channels will not take effect until volume is reset to 0dB.".warn;
 		};
 		numChans = num;
 	}
 
 	mute {
-		this.isPlaying.if({
-			this.prmute;
-		}, {
-			this.playVolume(true)
-		});
-	}
-
-	unmute {
-		this.prunmute;
-		(this.muteamp == 0.0).if({
-			this.free;
-		});
-	}
-
-
-	prmute {
 		isMuted = true;
 		muteamp = volume;
-		ampSynth.set(\volumeAmp, 0);
 		this.changed(\mute, true);
+		if (ampSynth.notNil) {
+			ampSynth.set(\volumeAmp, 0);
+		} {
+			this.playVolume(true)
+		}
 	}
 
-	prunmute {
+	unmute {
 		isMuted = false;
 		ampSynth.set(\volumeAmp, muteamp.dbamp);
 		this.changed(\mute, false);
+		if (this.muteamp == 0.0) {
+			this.free;
+		}
 	}
 
 	// sets volume back to 1 - removes the synth
@@ -155,27 +137,26 @@ Volume {
 	// cleaner with MVC - in db
 	volume_ { arg aVolume;
 		volume = aVolume;
-		(volume == 0.0).if({
-			(this.isPlaying and: {this.isMuted.not}).if({
+		if (volume == 0.0) {
+			if (ampSynth.notNil and: {this.isMuted.not}) {
 				this.free;
-			})
-		}, {
-			server.serverRunning.if({
+			}
+		} {
+			if (server.serverRunning) {
 				this.playVolume(isMuted);
-			})
-		});
+			}
+		};
 		volume = volume.clip(min, max);
 		if(isMuted) { muteamp = volume };
-		if(isPlaying && isMuted.not) { ampSynth.set(\volumeAmp, volume.dbamp) };
+		if(ampSynth.notNil && isMuted.not) { ampSynth.set(\volumeAmp, volume.dbamp) };
 		this.changed(\amp, volume);
 	}
 
 	playVolume { arg muted = false;
-		(this.isPlaying.not and: {
-			(volume != 0.0) or: {muted}
-		}).if({
+		if (ampSynth.isNil and: {
+			(volume != 0.0) or: {muted} }) {
 			this.play(muted);
-		})
+		}
 	}
 
 	lag_ { arg aLagTime;
@@ -191,7 +172,7 @@ Volume {
 
 
 	gui { arg window, bounds;
-//		this.debug(\gui);
+		//		this.debug(\gui);
 		^VolumeGui(this, window, bounds)
 	}
 
@@ -213,9 +194,9 @@ VolumeGui{
 		bounds = bounds ?? {Rect(100, 100, 80, 330)};
 		window = win ?? {GUI.window.new("Volume", bounds).front};
 		box = GUI.numberBox.new(window, Rect(10, 10, 60, 30))
-			.value_(model.volume) ;
+		.value_(model.volume) ;
 		slider = GUI.slider.new(window, Rect(10, 40, 60, 280))
-			.value_(spec.unmap(model.volume)) ;
+		.value_(spec.unmap(model.volume)) ;
 		slider.action_({ arg item ;
 			model.volume_(spec.map(item.value));
 		}) ;
@@ -226,14 +207,14 @@ VolumeGui{
 			simpleController.remove;
 		});
 		simpleController = SimpleController(model)
-				.put(\amp, {|changer, what, volume|
-					this.debug(volume);
-					box.value_(volume.round(0.01)) ;
-					slider.value_(spec.unmap(volume)) ;
-				})
-				.put(\ampRange, {|changer, what, min, max|
-					spec = [min, max, \db].asSpec.debug;
-					slider.value_(spec.unmap(model.volume)) ;
-				})
+		.put(\amp, {|changer, what, volume|
+			this.debug(volume);
+			box.value_(volume.round(0.01)) ;
+			slider.value_(spec.unmap(volume)) ;
+		})
+		.put(\ampRange, {|changer, what, min, max|
+			spec = [min, max, \db].asSpec.debug;
+			slider.value_(spec.unmap(model.volume)) ;
+		})
 	}
 }
diff --git a/SCClassLibrary/Common/Core/AbstractFunction.sc b/SCClassLibrary/Common/Core/AbstractFunction.sc
index bffe8d2..e170608 100644
--- a/SCClassLibrary/Common/Core/AbstractFunction.sc
+++ b/SCClassLibrary/Common/Core/AbstractFunction.sc
@@ -110,7 +110,8 @@ AbstractFunction {
 
 	bitAnd { arg function, adverb; ^this.composeBinaryOp('bitAnd', function, adverb) }
 	bitOr { arg function, adverb; ^this.composeBinaryOp('bitOr', function, adverb) }
-	bitXor { arg function, adverb; ^this.composeBinaryOp('bitXor', function, adverb) }	bitHammingDistance { arg function, adverb; ^this.composeBinaryOp('hammingDistance', function, adverb) }
+	bitXor { arg function, adverb; ^this.composeBinaryOp('bitXor', function, adverb) }
+	bitHammingDistance { arg function, adverb; ^this.composeBinaryOp('hammingDistance', function, adverb) }
 
 	lcm { arg function, adverb; ^this.composeBinaryOp('lcm', function, adverb) }
 	gcd { arg function, adverb; ^this.composeBinaryOp('gcd', function, adverb) }
@@ -157,11 +158,12 @@ AbstractFunction {
 	ref { ^this.composeUnaryOp('asRef') }
 
 	// nary operators
-	clip { arg lo, hi; ^this.composeNAryOp('clip', [lo,hi]) }
+	clip { arg lo, hi; ^this.composeNAryOp('clip', [lo,hi])  }
 	wrap { arg lo, hi; ^this.composeNAryOp('wrap', [lo,hi])  }
 	fold { arg lo, hi; ^this.composeNAryOp('fold', [lo,hi])  }
-	blend { arg that, blendFrac = 0.5; ^this.composeNAryOp('blend', [that, blendFrac]) }
-
+	blend { arg that, blendFrac = 0.5;
+		^this.composeNAryOp('blend', [that, blendFrac])
+	}
 	linlin { arg inMin, inMax, outMin, outMax, clip=\minmax;
 		^this.composeNAryOp('linlin', [inMin, inMax, outMin, outMax, clip])
 	}
@@ -174,6 +176,18 @@ AbstractFunction {
 	expexp { arg inMin, inMax, outMin, outMax, clip=\minmax;
 		^this.composeNAryOp('expexp', [inMin, inMax, outMin, outMax, clip])
 	}
+	lincurve { arg inMin = 0, inMax = 1, outMin = 0, outMax = 1, curve = -4, clip = \minmax;
+		^this.composeNAryOp('lincurve', [inMin, inMax, outMin, outMax, curve, clip])
+	}
+	curvelin { arg inMin = 0, inMax = 1, outMin = 0, outMax = 1, curve = -4, clip = \minmax;
+		^this.composeNAryOp('curvelin', [inMin, inMax, outMin, outMax, curve, clip])
+	}
+	bilin { arg inCenter, inMin, inMax, outCenter, outMin, outMax, clip=\minmax;
+		^this.composeNAryOp('bilin', [inCenter, inMin, inMax, outCenter, outMin, outMax, clip])
+	}
+	biexp { arg inCenter, inMin, inMax, outCenter, outMin, outMax, clip=\minmax;
+		^this.composeNAryOp('biexp', [inCenter, inMin, inMax, outCenter, outMin, outMax, clip])
+	}
 
 	degreeToKey { arg scale, stepsPerOctave=12;
 		^this.composeNAryOp('degreeToKey', [scale, stepsPerOctave])
@@ -308,7 +322,7 @@ FunctionList : AbstractFunction {
 		array.remove(function);
 		if(array.size < 2) { ^array[0] };
 	}
-	
+
 	replaceFunc { arg find, replace;
 		array = array.replace(find, replace);
 	}
diff --git a/SCClassLibrary/Common/Core/Clock.sc b/SCClassLibrary/Common/Core/Clock.sc
index 8ae72db..f913412 100644
--- a/SCClassLibrary/Common/Core/Clock.sc
+++ b/SCClassLibrary/Common/Core/Clock.sc
@@ -352,38 +352,38 @@ elapsed time is whatever the system clock says it is right now. elapsed time is
 		this.changed(\meter);
 	}
 
-// these methods allow TempoClock to act as TempoClock.default
-   *stop { TempoClock.default.stop  }
-   *play { | task, quant | TempoClock.default.play(task, quant)  }
-   *sched { | delta, item | TempoClock.default.sched(delta, item)  }
-   *schedAbs { | beat, item | TempoClock.default.schedAbs(beat, item)  }
-   *clear { | releaseNodes | TempoClock.default.clear(releaseNodes)  }
-   *tempo_ { | newTempo | TempoClock.default.tempo_(newTempo)  }
-   *etempo_ { | newTempo | TempoClock.default.etempo_(newTempo)  }
-
-   *tempo { ^TempoClock.default.tempo }
-   *beats { ^TempoClock.default.beats }
-   *beats2secs { | beats | ^TempoClock.default.beats2secs(beats)  }
-   *secs2beats { | secs | ^TempoClock.default.secs2beats(secs)  }
-   *nextTimeOnGrid { | quant = 1, phase = 0 | ^TempoClock.default.nextTimeOnGrid(quant, phase)  }
-   *timeToNextBeat { | quant = 1 | ^TempoClock.default.timeToNextBeat(quant)  }
-
-   *setTempoAtBeat { | newTempo, beats | TempoClock.default.setTempoAtBeat(newTempo, beats)  }
-   *setTempoAtSec { | newTempo, secs | TempoClock.default.setTempoAtSec(newTempo, secs)  }
-   *setMeterAtBeat { | newBeatsPerBar, beats | TempoClock.default.setMeterAtBeat(newBeatsPerBar, beats)  }
-
-   *beatsPerBar { ^TempoClock.default.beatsPerBar  }
-   *baseBarBeat { ^TempoClock.default.baseBarBeat  }
-   *baseBar { ^TempoClock.default.baseBar  }
-   *playNextBar { | task | ^TempoClock.default.playNextBar(task)  }
-   *beatDur { ^TempoClock.default.beatDur  }
-   *elapsedBeats { ^TempoClock.default.elapsedBeats  }
-   *beatsPerBar_ { | newBeatsPerBar | TempoClock.default.beatsPerBar_(newBeatsPerBar)  }
-   *beats2bars { | beats | ^TempoClock.default.beats2bars(beats)  }
-   *bars2beats { | bars | ^TempoClock.default.bars2beats(bars)  }
-   *bar { ^TempoClock.default.bar  }
-   *nextBar { | beat | ^TempoClock.default.nextBar(beat)  }
-   *beatInBar { ^TempoClock.default.beatInBar  }
+	// these methods allow TempoClock to act as TempoClock.default
+	*stop { TempoClock.default.stop	}
+	*play { | task, quant | TempoClock.default.play(task, quant)	 }
+	*sched { | delta, item | TempoClock.default.sched(delta, item)  }
+	*schedAbs { | beat, item | TempoClock.default.schedAbs(beat, item)  }
+	*clear { | releaseNodes | TempoClock.default.clear(releaseNodes)	 }
+	*tempo_ { | newTempo | TempoClock.default.tempo_(newTempo)  }
+	*etempo_ { | newTempo | TempoClock.default.etempo_(newTempo)	 }
+
+	*tempo { ^TempoClock.default.tempo }
+	*beats { ^TempoClock.default.beats }
+	*beats2secs { | beats | ^TempoClock.default.beats2secs(beats)  }
+	*secs2beats { | secs | ^TempoClock.default.secs2beats(secs)	}
+	*nextTimeOnGrid { | quant = 1, phase = 0 | ^TempoClock.default.nextTimeOnGrid(quant, phase)	}
+	*timeToNextBeat { | quant = 1 | ^TempoClock.default.timeToNextBeat(quant)  }
+
+	*setTempoAtBeat { | newTempo, beats | TempoClock.default.setTempoAtBeat(newTempo, beats)	 }
+	*setTempoAtSec { | newTempo, secs | TempoClock.default.setTempoAtSec(newTempo, secs)	 }
+	*setMeterAtBeat { | newBeatsPerBar, beats | TempoClock.default.setMeterAtBeat(newBeatsPerBar, beats)	 }
+
+	*beatsPerBar { ^TempoClock.default.beatsPerBar  }
+	*baseBarBeat { ^TempoClock.default.baseBarBeat  }
+	*baseBar { ^TempoClock.default.baseBar  }
+	*playNextBar { | task | ^TempoClock.default.playNextBar(task)  }
+	*beatDur { ^TempoClock.default.beatDur  }
+	*elapsedBeats { ^TempoClock.default.elapsedBeats	 }
+	*beatsPerBar_ { | newBeatsPerBar | TempoClock.default.beatsPerBar_(newBeatsPerBar)  }
+	*beats2bars { | beats | ^TempoClock.default.beats2bars(beats)  }
+	*bars2beats { | bars | ^TempoClock.default.bars2beats(bars)	}
+	*bar { ^TempoClock.default.bar  }
+	*nextBar { | beat | ^TempoClock.default.nextBar(beat)  }
+	*beatInBar { ^TempoClock.default.beatInBar  }
 
 	archiveAsCompileString { ^true }
 }
diff --git a/SCClassLibrary/Common/Core/Color.sc b/SCClassLibrary/Common/Core/Color.sc
index 9953a98..ba30809 100644
--- a/SCClassLibrary/Common/Core/Color.sc
+++ b/SCClassLibrary/Common/Core/Color.sc
@@ -29,15 +29,13 @@ Color {
 
 	*rand { arg lo=0.3,hi=0.9; ^Color.new(rrand(lo,hi),rrand(lo,hi),rrand(lo,hi)) }
 
-	== {|that|
-		^(that.respondsTo(#[\red, \green, \blue, \alpha])
-			and: {(this.red  == that.red)
-			and: {this.green == that.green}
-			and: {this.blue  == that.blue}
-			and: {this.alpha  == that.alpha}
-		})
+	== { arg that;
+		^this.compareObject(that, #[\red, \green, \blue, \alpha])
+	}
+
+	hash {
+		^this.instVarHash(#[\red, \green, \blue, \alpha])
 	}
-	hash { ^red.hash bitXor: green.hash bitXor: blue.hash bitXor: alpha.hash }
 
 	scaleByAlpha {
 		^Color.new(red * alpha, green * alpha, blue * alpha, 1.0)
diff --git a/SCClassLibrary/Common/Core/Condition.sc b/SCClassLibrary/Common/Core/Condition.sc
index 1c7a60f..d511f37 100644
--- a/SCClassLibrary/Common/Core/Condition.sc
+++ b/SCClassLibrary/Common/Core/Condition.sc
@@ -6,13 +6,13 @@ Condition {
 	}
 	wait {
 		if (test.value.not, {
-			waitingThreads = waitingThreads.add(thisThread);
-			nil.yield;
+			waitingThreads = waitingThreads.add(thisThread.threadPlayer);
+			\hang.yield;
 		});
 	}
-	hang { arg value;
+	hang { arg value = \hang;
 		// ignore the test, just wait
-		waitingThreads = waitingThreads.add(thisThread);
+		waitingThreads = waitingThreads.add(thisThread.threadPlayer);
 		value.yield;
 	}
 
diff --git a/SCClassLibrary/Common/Core/Error.sc b/SCClassLibrary/Common/Core/Error.sc
index 69ec241..33dbf34 100644
--- a/SCClassLibrary/Common/Core/Error.sc
+++ b/SCClassLibrary/Common/Core/Error.sc
@@ -20,7 +20,8 @@ Exception {
 		this.errorString.postln;
 		if(protectedBacktrace.notNil, { this.postProtectedBacktrace });
 		this.dumpBackTrace;
-		this.adviceLink.postln;
+		// this.adviceLink.postln;
+		"^^ The preceding error dump is for %\n".postf(this.errorString);
 	}
 	adviceLink {
 		^("For advice: [http://supercollider.sf.net/wiki/index.php/%]"
@@ -101,7 +102,8 @@ MethodError : Error {
 		this.errorPathString.post;
 		if(protectedBacktrace.notNil, { this.postProtectedBacktrace });
 		this.dumpBackTrace;
-		this.adviceLink.postln;
+		// this.adviceLink.postln;
+		"^^ The preceding error dump is for %\nRECEIVER: %\n".postf(this.errorString, receiver);
 	}
 	adviceLinkPage {
 		^this.class.name
@@ -161,7 +163,8 @@ DoesNotUnderstandError : MethodError {
 		this.errorPathString.post;
 		if(protectedBacktrace.notNil, { this.postProtectedBacktrace });
 		this.dumpBackTrace;
-		this.adviceLink.postln;
+		// this.adviceLink.postln;
+		"^^ The preceding error dump is for %\nRECEIVER: %\n".postf(this.errorString, receiver);
 	}
 	adviceLinkPage {
 		^"%#%".format(this.class.name, selector)
@@ -263,7 +266,7 @@ DeprecatedError : MethodError {
 	reportError {
 		this.errorString.postln;
 		this.errorPathString.post;
-		this.adviceLink.postln;
+		// this.adviceLink.postln;
 	}
 
 	throw {
diff --git a/SCClassLibrary/Common/Core/Function.sc b/SCClassLibrary/Common/Core/Function.sc
index de10d20..164eaad 100644
--- a/SCClassLibrary/Common/Core/Function.sc
+++ b/SCClassLibrary/Common/Core/Function.sc
@@ -116,9 +116,7 @@ Function : AbstractFunction {
 	}
 
 	dup { arg n = 2;
-		var array = Array(n);
-		n.do {|i| array.add(this.value(i)) };
-		^array
+		^Array.fill(n, this)
 	}
 	sum { arg n = 2;
 		var sum = 0;
@@ -126,11 +124,11 @@ Function : AbstractFunction {
 		^sum
 	}
 
-	defer { arg delta = 0;
-		if (delta == 0 and: {this.canCallOS}) {
+	defer { arg delta;
+		if (delta.isNil and: {this.canCallOS}) {
 			this.value
 		}{
-			AppClock.sched(delta, { this.value; nil })
+			AppClock.sched(delta ? 0, { this.value; nil })
 		}
 	}
 
diff --git a/SCClassLibrary/Common/Core/Kernel.sc b/SCClassLibrary/Common/Core/Kernel.sc
index fe8239c..61a6d48 100644
--- a/SCClassLibrary/Common/Core/Kernel.sc
+++ b/SCClassLibrary/Common/Core/Kernel.sc
@@ -125,8 +125,15 @@ Class {
 	helpFilePath {
 		^this.name.asString.findHelpFile
 	}
+	help {
+		this.openHelpFile
+	}
 	openHelpFile {
-		this.name.asString.openHelpFile
+		// NOTE: because wslib provided the shortcut "Object:*help --> Object:*openHelpFile", we do the same
+		// rather than moving the implementation to the future-compatible :help method.
+		// This prevents infinite recursions for people with wslib installed.
+		// In future (3.7) this method content should be moved to :help, but no sooner.
+		this.name.asString.help
 	}
 
 	shallowCopy { ^this }
@@ -174,7 +181,7 @@ Class {
 Process {
 	// A Process is a runtime environment.
 	var classVars, <interpreter;
-	var curThread, mainThread;
+	var curThread, <mainThread;
 	var schedulerQueue;
 	var <>nowExecutingPath;
 
@@ -372,7 +379,7 @@ Process {
 	}
 
 	showHelp {
-		this.getCurrentSelection.openHelpFile
+		this.getCurrentSelection.help
 	}
 
 	argv { ^[] }
@@ -455,8 +462,8 @@ FunctionDef {
 	makeEnvirFromArgs {
 		var argNames, argVals;
 		argNames = this.argNames;
-		argVals = this.prototypeFrame;
-		^().putPairs([argNames, argVals].flop.flat)
+		argVals = this.prototypeFrame.keep(argNames.size);
+		^().putPairs([argNames, argVals].flop.flatten)
 	}
 
 }
@@ -473,7 +480,7 @@ Method : FunctionDef {
 		//can't add instance variables to Class
 		^this.name.asString.findHelpFile.notNil
 	}
-	openHelpFile {
+	help {
 		HelpBrowser.openHelpForMethod(this);
 	}
 	inspectorClass { ^MethodInspector }
@@ -551,12 +558,15 @@ Interpreter {
 	}
 
 	interpretPrintCmdLine {
-		var res, func, code = cmdLine, doc = Document.current;
-		"\n".post;
+		var res, func, code = cmdLine, doc = Document.current, ideClass = \ScIDE.asClass;
 		preProcessor !? { cmdLine = preProcessor.value(cmdLine, this) };
 		func = this.compile(cmdLine);
-		if(doc.tryPerform(\dataptr).notNil) {
-			thisProcess.nowExecutingPath = doc.tryPerform(\path);
+		if (ideClass.notNil) {
+			thisProcess.nowExecutingPath = ideClass.currentPath
+		} {
+			if(doc.tryPerform(\dataptr).notNil) {
+				thisProcess.nowExecutingPath = doc.tryPerform(\path);
+			}
 		};
 		res = func.value;
 		thisProcess.nowExecutingPath = nil;
diff --git a/SCClassLibrary/Common/Core/Object.sc b/SCClassLibrary/Common/Core/Object.sc
index b25bb0a..3661678 100644
--- a/SCClassLibrary/Common/Core/Object.sc
+++ b/SCClassLibrary/Common/Core/Object.sc
@@ -96,12 +96,16 @@ Object  {
 	performWithEnvir { |selector, envir|
 		var argNames, args;
 		var method = this.class.findRespondingMethodFor(selector);
+		
 		if(method.isNil) { ^this.doesNotUnderstand(selector) };
-
-		envir = method.makeEnvirFromArgs.putAll(envir);
-
+		
 		argNames = method.argNames.drop(1);
-		args = envir.atAll(argNames);
+		args = method.prototypeFrame.drop(1);
+		argNames.do { |name, i|
+			var val = envir[name];
+			val !? { args[i] = val };
+		};
+		
 		^this.performList(selector, args)
 	}
 
@@ -176,7 +180,7 @@ Object  {
 		};
 		indices.do { |i|
 			var obj = this.instVarAt(i);
-			res = res bitXor: obj.hash;
+			res = res << 1 bitXor: obj.hash;  // encode slot order by left shifting
 		};
 		^res
 	}
@@ -231,6 +235,9 @@ Object  {
 
 	isRest { ^false }
 
+	threadPlayer {}
+	threadPlayer_ {}
+
 	// testing
 	? { arg obj; ^this }
 	?? { arg obj; ^this }
@@ -242,6 +249,7 @@ Object  {
 	isInteger { ^false }
 	isFloat { ^false }
 	isSequenceableCollection { ^false }
+	isCollection { ^false }
 	isArray { ^false }
 	isString { ^false }
 	containsSeqColl { ^false }
@@ -373,7 +381,8 @@ Object  {
 
 	// arrays
 	rank { ^0 }
-	deepCollect { arg depth, function; ^function.value(this, 0) }
+	deepCollect { arg depth, function, index = 0, rank = 0; ^function.value(this, index, rank) }
+	deepDo { arg depth, function, index = 0, rank = 0; function.value(this, index, rank) }
 	slice { ^this }
 	shape { ^nil }
 	unbubble { ^this }
@@ -877,4 +886,8 @@ Object  {
 
 	// support for ViewRedirect
 	*classRedirect { ^this }
+
+	help {
+		this.class.asString.help
+	}
 }
diff --git a/SCClassLibrary/Common/Core/Ref.sc b/SCClassLibrary/Common/Core/Ref.sc
index edf7931..0759074 100644
--- a/SCClassLibrary/Common/Core/Ref.sc
+++ b/SCClassLibrary/Common/Core/Ref.sc
@@ -44,6 +44,16 @@ Ref : AbstractFunction
 	asBufWithValues {
 		^LocalBuf.newFrom(value);
 	}
+
+	// Allow to multichannel expand ugen specs, like those of Klank,
+	// in the case of which two is the rank, but could be otherwise.
+	multichannelExpandRef { |rank|
+		var array, refarray;
+		array = this.value.asArray;
+		if(array.maxSizeAtDepth(rank) <= 1) { ^this }; // no need to expand
+		refarray = array.flopDeep(rank).collect { |item| this.class.new(item) };
+		^refarray.unbubble
+	}
 }
 
 RefCopy : Ref
diff --git a/SCClassLibrary/Common/Core/Semaphore.sc b/SCClassLibrary/Common/Core/Semaphore.sc
index 5863fb1..25b5cc1 100644
--- a/SCClassLibrary/Common/Core/Semaphore.sc
+++ b/SCClassLibrary/Common/Core/Semaphore.sc
@@ -10,8 +10,8 @@ Semaphore {
 	wait {
 		count = count - 1;
 		if (count < 0) {
-			waitingThreads.add(thisThread);
-			nil.yield;
+			waitingThreads.add(thisThread.threadPlayer);
+			\hang.yield;
 		};
 	}
 	signal {
diff --git a/SCClassLibrary/Common/Core/Symbol.sc b/SCClassLibrary/Common/Core/Symbol.sc
index 6bc74b5..d3346c3 100644
--- a/SCClassLibrary/Common/Core/Symbol.sc
+++ b/SCClassLibrary/Common/Core/Symbol.sc
@@ -62,10 +62,6 @@ Symbol {
 	}
 	isRest { ^this.isMap.not }
 
-	openTextFile { arg selectionStart=0, selectionLength=0;
-		^this.asString.openTextFile(selectionStart, selectionLength)
-	}
-
 	// Environment support
 	// The compiler translates use of an Environment variable like ~myvar
 	// to a call to one of these methods, for example:
@@ -242,4 +238,9 @@ Symbol {
 		_Symbol_matchOSCPattern
 		^this.primitiveFailed
 	}
+
+	help {
+		this.asString.help
+	}
+
 }
diff --git a/SCClassLibrary/Common/Core/Thread.sc b/SCClassLibrary/Common/Core/Thread.sc
index 2925b53..1bf03b7 100644
--- a/SCClassLibrary/Common/Core/Thread.sc
+++ b/SCClassLibrary/Common/Core/Thread.sc
@@ -10,11 +10,11 @@
 Thread : Stream {
 	var <state=0, func, stack, method, block, frame, ip=0, sp=0;
 	var numpop=0, receiver, numArgsPushed=0;
-	var parent, terminalValue;
+	var <parent, terminalValue;
 	var <primitiveError=0, <primitiveIndex=0, randData=0;
 	var <beats=0.0, <seconds=0.0, <clock, <nextBeat, <>endBeat, <>endValue;
 	var environment;
-	var <>exceptionHandler;
+	var <>exceptionHandler, >threadPlayer;
 	var <executingPath, <oldExecutingPath;
 
 	*new { arg func, stackSize = (512);
@@ -34,6 +34,16 @@ Thread : Stream {
 	beats_ { arg inBeats; beats = inBeats; seconds = clock.beats2secs(inBeats); }
 	isPlaying { ^state == 5 }
 
+	threadPlayer { ^threadPlayer ?? { this.findThreadPlayer } }
+	findThreadPlayer {
+		var parent = this.parent;
+		^if(parent.notNil and: { parent !== thisProcess.mainThread }) {
+			parent.threadPlayer
+		} {
+			this
+		}
+	}
+
 	randSeed_ { arg seed;
 		// You supply an integer seed.
 		// This method creates a new state vector and stores it in randData.
diff --git a/SCClassLibrary/Common/Files/File.sc b/SCClassLibrary/Common/Files/File.sc
index d148e70..3455ef6 100644
--- a/SCClassLibrary/Common/Files/File.sc
+++ b/SCClassLibrary/Common/Files/File.sc
@@ -147,6 +147,8 @@ File : UnixFILE {
 
 
 Pipe : UnixFILE {
+	var pid;
+
 	// pipe stdin to, or stdout from, a unix shell command.
 	*new { arg commandLine, mode;
 		^super.new.open(commandLine, mode);
@@ -156,19 +158,21 @@ Pipe : UnixFILE {
 			to popen, so should be one of:
 			"r","w"
 		*/
-		if (this.prOpen(commandLine, mode), {
+		if ((pid = this.prOpen(commandLine, mode)).notNil) {
 			this.addOpenFile;
-		});
+		}
 	}
 
 	close {
-		var res = this.prClose;
+		var res = this.prClose(pid);
 		fileptr = nil;
+		pid = nil;
 		openFiles.remove(this);
 		^res;
 	}
 
-	prClose { // close the file
+	// close the file
+	prClose { arg pid;
 		// the GC will not call this for you
 		_PipeClose
 		^this.primitiveFailed;
diff --git a/SCClassLibrary/Common/Files/Help.sc b/SCClassLibrary/Common/Files/Help.sc
deleted file mode 100644
index 71aa32e..0000000
--- a/SCClassLibrary/Common/Files/Help.sc
+++ /dev/null
@@ -1,951 +0,0 @@
-/*
-Help.tree and Help.gui - a scheme to allow UGens, no wait I mean ALL classes,
-to be "self-classified" and provide a pleasant-ish browsing interface. No wait,
-let's put all help docs into the tree too! Yeah!
-
-By Dan Stowell, 2007
-with lots of input from Scott Wilson
-and crossplatform tips from nescivi
-
-Try it:
-Help.gui
-
-Help.dumpTree
-
-see also:
-Class.browse
-*/
-
-Help {
-	classvar <global, categoriesSkipThese;
-	classvar <filterUserDirEntries, <>cachePath;
-
-	var	tree, fileslist, <root;
-
-	*initClass {
-		var	dir;
-		cachePath = Platform.userAppSupportDir +/+ "SC_helptree.cache.txt";
-		categoriesSkipThese = [
-			Filter, BufInfoUGenBase, InfoUGenBase, MulAdd, BinaryOpUGen,
-			UnaryOpUGen, BasicOpUGen, MultiOutUGen, ChaosGen,
-			OutputProxy, AbstractOut, AbstractIn, Object, Class, UGen];
-		if(\SCImageFilter.asClass.notNil) {
-			categoriesSkipThese = categoriesSkipThese.add(\SCImageFilter.asClass)
-		};
-		filterUserDirEntries = [ "Extensions", "SuperCollider", "SuperCollider3", "Help", "svn", "share", "classes", "trunk", "Downloads", "Application Support" ];
-		[Platform.systemExtensionDir, Platform.userExtensionDir].do({ |path|
-			path.split(Platform.pathSeparator).do({ |dirname|
-				if(filterUserDirEntries.detect(_ == dirname).isNil) {
-					filterUserDirEntries = filterUserDirEntries.add(dirname);
-				};
-			});
-		});
-		global = this.new;
-	}
-
-	*new { |root|
-		if(root.isNil and: { global.notNil }) {
-			^global
-		} {
-			^super.new.init(root)
-		}
-	}
-
-	init { |rootdir|
-		root = rootdir !? { rootdir.absolutePath };
-		if(root.isNil or: { root.size == 0 }) {
-			this.tree;
-		} {
-			this.tree(false, false, false, root, false);
-		}
-	}
-
-	tree { |sysext=true, userext=true, allowCached=true, root, writeCache=true|
-		var classes, node, subc, helpRootLen;
-		var helpExtensions = ['html', 'htm', 'scd', 'rtf', 'rtfd'];
-		var helpDirs = Array.new;
-		var thisHelpExt;
-		if(allowCached and: {tree.isNil and: {File.exists(this.cachePath)}}){
-			"Help tree read from cache in % seconds".format({
-				this.readTextArchive; // Attempt to read cached version
-			}.bench(false)).postln;
-		};
-		if(tree.isNil, { "Help files scanned in % seconds".format({
-			// Building the tree
-
-			// Help file paths - will be used for categorising, if categories is nil or if not a class's helpfile.
-			// Otherwise they'll be stored for quick access to helpfile.
-			fileslist = IdentityDictionary.new;
-			if(root.isNil) {
-				helpDirs = helpDirs.add( Platform.helpDir );
-			} {
-				helpDirs = helpDirs.add(root);
-			};
-			if ( sysext ,{
-				helpDirs = helpDirs.add( Platform.systemExtensionDir );
-			});
-			if ( userext ,{
-				helpDirs = helpDirs.add( Platform.userExtensionDir );
-			});
-
-			// Now check each class's ".categories" response
-			classes = Object.allSubclasses.difference(categoriesSkipThese).reject({|c| c.asString.beginsWith("Meta_")});
-			if(root.notNil) {
-					// consider only classes whose main definition is in the root folder
-				classes = classes.select({ |c| c.filenameSymbol.asString.beginsWith(root) });
-			};
-			tree = Dictionary.new(8);
-			classes.do({|class| this.addCatsToTree(class, fileslist)});
-
-			// Now add the remaining ones to the tree - they're everything except the classes which
-			//      have declared their own categorisation(s).
-
-			helpDirs.do{ |helpDir|
-				this.addDirTree( helpDir,tree );
-			};
-			if(writeCache) {
-				{
-					this.writeTextArchive;
-				}.defer(4.312);
-				{
-					var sclang_completion_dict, dictfile;
-					// Also piggyback on the tree struct to write out an auto-completion dictionary:
-					sclang_completion_dict = SortedList.new;
-					this.do{|key, value|
-						if("0123456789".includes(key[0]).not and:{key.includes($ ).not}){
-							sclang_completion_dict.add(key);
-						}
-					};
-					dictfile = File(Platform.userAppSupportDir +/+ "sclang_completion_dict", "w");
-					if(dictfile.isOpen){
-						sclang_completion_dict.do{|entry| dictfile.write(entry ++ Char.nl)};
-						dictfile.close;
-					};
-				}.defer(7.1101);
-			};
-		}.bench(false)).postln});
-		^tree;
-	}
-
-	findKeysForValue{|val|
-		var func, node, keyPath;
-		keyPath =[];
-		if( val.beginsWith( "SC://" ), { ^keyPath });
-		// only file scheme urls in tree
-		if( val.beginsWith( "file:" ), {
-			val = val.copyToEnd( if( val.copyRange( 5, 6 ) == "//", 7, 5 ));
-		});
-		val = val.replace("%20", " ");
-		func = {|dict, depth = 0|
-			node = dict.findKeyForValue(val);
-			node.isNil.if({
-				dict.keysValuesDo({|key, item|
-					item.isKindOf(Dictionary).if({
-						keyPath = keyPath.copyFromStart(depth - 1).add(key);
-						func.value(item, depth + 1)
-					})
-				});
-			}, {^keyPath.add(node)});
-		};
-		func.value(this.tree);
-		^[];
-	}
-
-	addUserFilter{ |subpath|
-		filterUserDirEntries = filterUserDirEntries.add( subpath );
-		this.forgetTree;
-	}
-
-	addDirTree{ |helppath,tree|
-		var helpExtensions = #['html', 'htm', 'scd', 'rtf', 'rtfd'];
-		var subfileslist;
-		var node, subc, helpRootLen, thisHelpExt;
-
-		subfileslist = IdentityDictionary.new;
-
-		PathName.new(helppath.standardizePath).helpFilesDo({|pathname|
-				if( pathname.fullPath.contains("ignore")){
-					"Not ignoring: %".format(pathname.fullPath).postln;
-				};
-				if( pathname.fullPath.contains("3vs2").not
-					and: { pathname.fullPath.contains("help-scripts").not }
-					, {
-						subfileslist[pathname.fileNameWithoutDoubleExtension.asSymbol] = pathname.fullPath;
-						fileslist[pathname.fileNameWithoutDoubleExtension.asSymbol] = pathname.fullPath;
-					})
-			});
-
-		helpRootLen = (helppath.standardizePath).size + 1;
-		subfileslist.keysValuesDo({ |classsym, path|
-
-			subc = path[helpRootLen..].split(Platform.pathSeparator);
-			if ( helppath == Platform.helpDir,
-				{
-					subc = subc[0..subc.size-2]; // Ignore "Help" and the filename at the end
-//					subc = path[helpRootLen..].split(Platform.pathSeparator);
-				},{
-					//helpRootLen = "~".standardizePath;
-					if ( helppath == Platform.systemExtensionDir,
-						{
-//							subc = path[helpRootLen..].split(Platform.pathSeparator);
-							subc = [ "SystemExtensions" ] ++ subc;
-							//subc.postcs;
-						});
-					if ( helppath == Platform.userExtensionDir,
-						{
-							helpRootLen = "~/".absolutePath.size; // + 1;
-							subc = path[helpRootLen..].split(Platform.pathSeparator);
-							subc = [ "UserExtensions" ] ++ subc;
-							// check for common superfluous names that may confuse the categorisation;
-							filterUserDirEntries.do{ |spath|
-								subc = subc.reject{ |it|
-									it == spath;
-								};
-							};
-							// check for double entries (e.g. SwingOSC)
-							subc[..subc.size-2].do{ |it,i|
-								var subset;
-								subset = subc[..i-1];
-								if ( subset.detect( { |jt| jt == it } ).size > 0, {
-									subc = subc[..i-1] ++ subc[i+1..];
-								});
-							};
-						});
-					if ( helppath == root,
-						{
-								// exactly the same as the previous if,
-								// but it isn't right to change helpRootLen
-							// check for common superfluous names that may confuse the categorisation;
-							filterUserDirEntries.do{ |spath|
-								subc = subc.reject{ |it|
-									it == spath;
-								};
-							};
-							// check for double entries (e.g. SwingOSC)
-							subc[..subc.size-2].do{ |it,i|
-								var subset;
-								subset = subc[..i-1];
-								if ( subset.detect( { |jt| jt == it } ).size > 0, {
-									subc = subc[..i-1] ++ subc[i+1..];
-								});
-							};
-						});
-					subc = subc[..subc.size-2];
-				}
-			);
-			if(subc.size > 0) {
-				thisHelpExt = helpExtensions.select{ |ext|
-					subc.last.endsWith("."++ext)
-				};
-			};
-			if ( thisHelpExt.size > 0 , {
-				subc = subc[..subc.size-2];
-			});
-
-			subc = subc.collect({|i| "[["++i++"]]"});
-			node = tree;
-			// Crawl up the tree, creating hierarchy as needed
-			subc.do({|catname|
-				if(node[catname].isNil, {
-					node[catname] = Dictionary.new(3);
-				});
-				node = node[catname];
-			});
-			// "node" should now be the tiniest branch
-			node[classsym.asClass ? classsym] = path;
-		});
-	}
-
-	rebuildTree {
-		this.forgetTree;
-		if(root.isNil) {
-			this.tree(allowCached:false);
-		} {
-			this.tree(false, false, false, root, false);
-		}
-	}
-
-	forgetTree {
-		tree = nil;
-	}
-
-	dumpTree { |node, prefix=""|
-		node = node ?? {this.tree};
-		node.keysValuesDo({ |key, val|
-			if(val.isKindOf(Dictionary), {
-				(prefix + key).postln;
-				this.dumpTree(val, prefix ++ "   ");
-			}, {
-				(prefix + key ++":" + val).postln;
-			});
-		});
-	}
-
-	addCatsToTree { |class, fileslist|
-		var subc, node;
-
-		if(class.categories.isNil.not, {
-			class.categories.do({|cat|
-				subc = cat.split($>).collect({|i| "[["++i++"]]"});
-				node = tree;
-				// Crawl up the tree, creating hierarchy as needed
-				subc.do({|catname|
-					if(node[catname].isNil, {
-						node[catname] = Dictionary.new(3);
-					});
-					node = node[catname];
-				});
-				// "node" should now be the tiniest branch
-				node[class] = fileslist[class.asSymbol] ? "";
-			});
-
-			// Class has been added to list so we're OK
-			fileslist.removeAt(class.asSymbol);
-		}); // end if
-
-	}
-
-	writeTextArchive{ |path|
-		var fp;
-		if(path.isNil){ path = this.cachePath };
-		fp = File(path, "w");
-		this.prRecurseTreeToFile(fp, this.tree); // Must use this.tree - will create if not exists
-		fp.write(fileslist.asTextArchive);
-		fp.close;
-	}
-
-	prRecurseTreeToFile{ | fp, treeBit, numtabs=0 |
-		fp.write("%%\n".format($\t.dup(numtabs).join, treeBit.size));
-		treeBit.keysValuesDo{| key, val |
-			fp.write("%%\n".format($\t.dup(numtabs).join, key.asString));
-			if(val.isKindOf(Dictionary)){
-				this.prRecurseTreeToFile(fp, val, numtabs + 1)
-			}{
-				fp.write("%%\n".format($\t.dup(numtabs).join, val.asString));
-			}
-		};
-	}
-
-	readTextArchive{ |path|
-		var fp, filesliststr;
-		if(path.isNil){ path = this.cachePath };
-		fp = File(path, "r");
-		try{
-			tree = this.prRecurseTreeFromFile(fp);
-		}{
-			"Failure to read tree in Help.treeFromFile(%)".format(path).warn;
-			this.forgetTree;
-		};
-		try{
-			filesliststr = fp.readAllString;
-			if(filesliststr.size < 10){ // Old version of cache didn't store it...
-				"Help.tree cache has no fileslisttree. Will regenerate it".warn;
-				this.forgetTree;
-			}{
-				fileslist = filesliststr.interpret;
-			};
-		}{
-			"Failure to read fileslist in Help.treeFromFile(%)".format(path).warn;
-			this.forgetTree;
-		};
-		fp.close;
-	}
-
-	prRecurseTreeFromFile{ | fp, numtabs=0 |
-		var line, numentries, dict, key;
-		line = fp.getLine[numtabs..];
-		numentries = line.asInteger;
-		dict = Dictionary.new(numentries);
-		numentries.do{
-			line = fp.getLine[numtabs..];
-			key = line;
-			if(key[0]==$[ and:{ key[1]==$[ }){
-				// starting with [[ is indicator of being a category
-				dict[key] = this.prRecurseTreeFromFile(fp, numtabs+1);
-			}{
-				line = fp.getLine[numtabs..];
-				key = key.asSymbol;
-				key = key.asClass ? key; // Classes become classes, topics stay as symbols
-				dict[key] = line;
-			}
-		};
-		^dict
-	}
-
-gui { |sysext=true,userext=true, allowCached=true|
-	var classes, win, lists, listviews, numcols=7, selecteditem, node, newlist, curkey;
-	var selectednodes, scrollView, compView, textView, keys;
-	var classButt, browseButt, bwdButt, fwdButt;
-	var isClass, history = [], historyIdx = 0, fBwdFwd, fHistoryDo, fHistoryMove;
-	var screenBounds, bounds, textViewBounds, results, resultsview, statictextloc;
-	var searchField, helpguikeyacts, fSelectTreePath, inPathSelect = false, fUpdateWinTitle, fLoadError;
-
-	// Call to ensure the tree has been built
-	this.tree( sysext, userext, allowCached );
-
-	// Now for a GUI
-	screenBounds = Window.screenBounds;
-	bounds = Rect(128, 264, 1040, 564);
-	bounds = bounds.center_(screenBounds.center);
-	bounds = bounds.sect(screenBounds.insetBy(15));
-	win = Window.new("Help browser", bounds); // SCWindow
-	// scrollView and compView hold the category-browsing list widgets
-	scrollView = ScrollView.new(win, Rect(5, 0, 425, 529)).hasBorder_(true).resize_(4);
-	compView = CompositeView.new(scrollView, Rect(0, 0, numcols * 200, /*504*/ bounds.height-60));
-	// textView displays a help file "inline"
-	textViewBounds = Rect(435, 0, /*620*/bounds.width-435, /*554*/ bounds.height-35);
-	textView = TextView.new(win, textViewBounds)
-		.hasVerticalScroller_(true)
-		.hasHorizontalScroller_(false)
-		.autohidesScrollers_(false)
-		.resize_(5)
-		.canFocus_(true);
-
-	if(GUI.current.id == \swing, { textView.editable_( false ).canFocus_( true ) });
-
-	textView.bounds = textView.bounds; // hack to fix origin on first load
-
-	// hidden at first, this will receive search results when the search field is activated
-	resultsview = ScrollView(win, textViewBounds)
-				.resize_(5)
-				.visible_(false);
-
-	// updates the history arrow buttons
-	fBwdFwd = {
-		bwdButt.enabled = historyIdx > 0;
-		fwdButt.enabled = historyIdx < (history.size -	1);
-	};
-
-	fLoadError = { |error|
-		error.reportError;
-		"\n\nA discrepancy was found in the help tree.".postln;
-		if(allowCached) {
-			"rm \"%\"".format(cachePath).unixCmd;
-			"The help tree cache may be out of sync with the file system. Rebuilding cache. Please reopen the Help GUI when this is finished.".postln;
-			this.rebuildTree;
-			win.close;
-		} {
-			"Please report the above error dump on the sc-users mailing list.".postln;
-		};
-	};
-
-	// cuts the redo history, adds and performs a new text open action
-	fHistoryDo = { arg selector, argum;
-		history		= history.copyFromStart( historyIdx ).add([ selector, argum ]);
-		historyIdx	= history.size - 1;
-		try({ textView.perform( selector, argum ) }, fLoadError);
-		fBwdFwd.value;
-	};
-
-	// moves relatively in the history, and performs text open action
-	fHistoryMove = { arg incr; var entry;
-		historyIdx	= historyIdx + incr;
-		entry		= history[ historyIdx ];
-		try({ textView.perform( entry[ 0 ], entry[ 1 ]) }, fLoadError);
-		fBwdFwd.value;
-	};
-
-	// keep this check for compatibility with old versions of swingOSC
-	if( textView.respondsTo( \linkAction ), {
-		textView
-			.linkAction_({ arg view, url, descr;
-				var path;
-				if( url.notEmpty, {
-					//fHistoryDo.value( \open, url );
-					keys = this.findKeysForValue(url);
-					if(keys.size == 0, {
-						("Invalid hyperlink:" + url + "Please repair this.\nSearching help directories for alternative.").warn;
-						url = Help.findHelpFile(url.basename.splitext.first);
-						url.notNil.if({keys = this.findKeysForValue(url)});
-					});
-					if(keys.size > 0, {
-						fSelectTreePath.value(keys.drop(-1), keys.last.asString);
-					});
-				}, {
-					if( descr.beginsWith( "SC://" ), {
-						fHistoryDo.value( \open, descr );
-					});
-				});
-			});
-	});
-
-	lists = Array.newClear(numcols);
-	lists[0] = tree.keys(Array).collect(_.asString).sort;
-	selectednodes = Array.newClear(numcols);
-
-	// SCListView
-	listviews = (0..numcols-1).collect({ arg index; var view;
-		view = ListView( compView, Rect( 5 + (index * 200), 4, 190, /* 504 */ bounds.height - 60 ));
-		//view.items = []; // trick me into drawing correctly in scrollview
-		if( view.respondsTo( \allowsDeselection ), {
-			view.allowsDeselection_( true ).value_( nil );
-		});
-		view
-		.resize_(4)
-		.action_({ arg lv; var lv2;
-			if( lv.value.notNil, {
-				// We've clicked on a category or on a class
-
-				if((lv.items.size != 0), {
-					lv2 = if( index < (listviews.size - 1), { listviews[ index + 1 ]});
-
-					selecteditem = lists[index][lv.value];
-					if( lv2.notNil, {
-						// Clear the GUI for the subsequent panels
-						listviews[index+1..].do({ arg lv; lv.items=#[];
-							if( lv.respondsTo( \allowsDeselection ), { lv.value = nil })});
-					});
-
-					// Get the current node, from the parent node
-					node = try { if(index==0, tree, {selectednodes[index-1]})[selecteditem] };
-					curkey = selecteditem;
-					selectednodes[index] = node;
-
-					if(node.isNil, {
-						// We have a "leaf" (class or helpdoc), since no keys found
-
-						if( (index + 1 < lists.size), { lists[index+1] = #[] });
-
-						if(inPathSelect.not, {
-						{
-							// Note: the "isClosed" check is to prevent errors caused by event triggering while user closing window
-							if(textView.isClosed.not){textView.visible = true};
-							if(resultsview.isClosed.not){resultsview.visible = false};
-							fHistoryDo.value( \open, fileslist.at( selecteditem.asSymbol ) ? fileslist.at( \Help ));
-						}.defer( 0.001 );
-						});
-						isClass = selecteditem.asSymbol.asClass.notNil;
-						// Note: "Help" class is not the class that matches "Help.html", so avoid potential confusion via special case
-                            if(classButt.notNil){
-                            	classButt.enabled_((selecteditem!="Help") and: {isClass});
-                            };
-						browseButt.enabled_((selecteditem!="Help") and: {isClass});
-						// The "selectednodes" entry for the leaf, is the path to the helpfile (or "")
-						selectednodes[index] = try { if(index==0, {tree}, {selectednodes[index-1]})
-									[curkey.asSymbol.asClass ? curkey.asSymbol]};
-
-						fUpdateWinTitle.value;
-					}, {
-						// We have a category on our hands
-						if( lv2.notNil, {
-							lists[ index + 1 ] = node.keys(Array).collect(_.asString).sort({|a,b|
-									// the outcomes:
-									// a and b both start with open-bracket:
-									//	test result should be a < b
-									// or one starts with open-bracket and the other doesn't (xor)
-									//	test result should be whether it's a that has the bracket
-								if(a[0] == $[ /*]*/ xor: (b[0] == $[ /*]*/)) {
-									a[0] == $[ /*]*/
-								} {
-									a < b
-								}
-							});
-							lv2.items = lists[index+1];
-						});
-
-					});
-
-					if( (index + 1) < listviews.size, {
-						listviews[index+1].value = if( listviews[index+1].respondsTo( \allowsDeselection ).not, 1 );
-						listviews[index+1].valueAction_( 0 );
-					});
-					selectednodes[index+2 ..] = nil; // Clear out the now-unselected
-				});
-			});
-		});
-	});
-
-	listviews[0].items = lists[0];
-
-	// Add keyboard navigation between columns
-	listviews.do({ |lv, index| // SCView
-		lv.keyDownAction_({|view,char,modifiers,unicode,keycode|
-			var nowFocused, lv2;
-			nowFocused = lv;
-			switch(unicode,
-			// cursor left
-			63234, { if(index > 0, { lv2 = listviews[ index - 1 ]; lv2.focus; nowFocused = lv2 })
-			},
-			// cursor right
-			63235, { if( index < (listviews.size - 1) and: { listviews[ index + 1 ].items.notNil }, {
-						lv2 = listviews[ index + 1 ];
-						try {
-							lv2.value_( if( lv2.respondsTo( \allowsDeselection ).not, - 1 )).valueAction_( 0 ).focus;
-							nowFocused = lv2;
-						}
-				   })
-			},
-			13, { // Hit RETURN to open source or helpfile
-				// The class name, or helpfile name we're after
-
-				if(lv.value.notNil and: {if(index==0, tree, {selectednodes[index-1]})[lists[index][lv.value]].isNil}, {
-					{ selecteditem.openHelpFile }.defer;
-				});
-			},
-			//default:
-			{
-				// Returning nil is supposed to be sufficient to trigger the default action,
-				// but on my SC this doesn't happen.
-				view.defaultKeyDownAction(char,modifiers,unicode);
-			});
-			if(scrollView.visibleOrigin.x > nowFocused.bounds.left or: {scrollView.visibleOrigin.x + scrollView.bounds.width > nowFocused.bounds.left}, {
-				scrollView.visibleOrigin_(Point(nowFocused.bounds.left - 5, 0));
-			});
-		})
-		.mouseDownAction_({|view, x, y, modifiers, buttonNumber, clickCount|
-			{
-			if(lists[index][lv.value][0]==$[, {
-				if(scrollView.visibleOrigin.x != (lv.bounds.left - 5), {
-					{
-					10.do({|i| { scrollView.visibleOrigin_(
-									Point(((lv.bounds.left - lv.bounds.width)+((10+i)*10)-5), 0))
-								}.defer;
-						0.02.wait;
-					});
-					}.fork;
-				});
-			});
-			}.defer(0.01); // defer because .action above needs to register the new index
-
-			if(clickCount == 2, {
-				if(lv.value.notNil and: { try { if(index==0, tree, {selectednodes[index-1]})[lists[index][lv.value]] }.isNil}, {
-					{ selecteditem.openHelpFile }.defer;
-				});
-			});
-		});
-	});
-
-	// Add ability to programmatically select an item in a tree
-	fSelectTreePath = { | catpath, leaf |
-		var foundIndex;
-		Task{
-			0.001.wait;
-			inPathSelect = true;
-			catpath.do{ |item, index|
-				foundIndex = listviews[index].items.indexOfEqual(item);
-				if(foundIndex.notNil){
-					listviews[index].value_(foundIndex).doAction;
-				}{
-					"Could not select menu list item % in %".format(item, listviews[index].items).postln;
-				};
-				0.02.wait;
-			};
-			inPathSelect = false;
-			foundIndex = listviews[catpath.size].items.indexOfEqual(leaf);
-			if(foundIndex.notNil){
-				listviews[catpath.size].value_(foundIndex).doAction;
-//				history = history.drop(-1);
-//				historyIdx = history.size - 1;
-			}{
-				"Could not select menu list item %".format(leaf).postln;
-			};
-			textView.visible = true;
-			resultsview.visible = false;
-			fUpdateWinTitle.value;
-			win.front;
-		}.play(AppClock);
-	};
-
-	fUpdateWinTitle = {
-		win.name_(
-			(["Help browser"] ++ listviews.collect{|lv| lv.value !? {lv.items[lv.value]} }.reject(_.isNil)).join(" > ") );
-	};
-
-	Platform.case(\windows, {
-            // TEMPORARY WORKAROUND:
-            // At present, opening text windows from GUI code can cause crashes on Psycollider
-            // (thread safety issue?). To work around this we just remove those buttons.
-	}, {
-		Button.new( win, Rect( 5, /* 534 */ bounds.height - 30, 110, 20 ))
-			.states_([["Open Help File", Color.black, Color.clear]])
-			.resize_(7)
-			.action_({{ selecteditem.openHelpFile }.defer;});
-		classButt = Button.new( win, Rect( 119, /* 534 */ bounds.height - 30, 110, 20 ))
-			.states_([["Open Class File", Color.black, Color.clear]])
-			.resize_(7)
-			.action_({
-				if(selecteditem.asSymbol.asClass.notNil, {
-					{selecteditem.asSymbol.asClass.openCodeFile }.defer;
-				});
-			});
-	});
-	browseButt = Button.new( win, Rect( 233, /* 534 */ bounds.height - 30, 110, 20 ))
-		.states_([["Browse Class", Color.black, Color.clear]])
-		.resize_(7)
-		.action_({
-			if(selecteditem.asSymbol.asClass.notNil, {
-				{selecteditem.asSymbol.asClass.browse }.defer;
-			});
-		});
-	bwdButt = Button.new( win, Rect( 347, /* 534 */ bounds.height - 30, 30, 20 ))
-		.states_([[ "<" ]])
-		.resize_(7)
-		.action_({
-			if( historyIdx > 0, {
-				fHistoryMove.value( -1 );
-			});
-		});
-	fwdButt = Button.new( win, Rect( 380, /* 534 */ bounds.height - 30, 30, 20 ))
-		.states_([[ ">" ]])
-		.resize_(7)
-		.action_({
-			if( historyIdx < (history.size - 1), {
-				fHistoryMove.value( 1 );
-			});
-		});
-	fBwdFwd.value;
-
-	// textfield for searching:
-	statictextloc = Rect(10, 10, textViewBounds.width-20, 200);
-	StaticText.new(win, Rect(435, bounds.height-35, 100 /* bounds.width-435 */, 35))
-		.align_(\right).resize_(7).string_("Search help files:");
-	searchField = TextField.new(win, Rect(535, bounds.height-35, bounds.width-535-35, 35).insetBy(8))
-		.resize_(8).action_({|widget|
-
-			if(widget.value != ""){
-				// Let's search!
-				// hide the textView, show the resultsview, do a query
-				textView.visible = false;
-				resultsview.visible = true;
-				resultsview.removeAll;
-				results = this.search(widget.value);
-				// Now add the results!
-				StaticText(resultsview, Rect(0, 0, textViewBounds.width / 2, 30))
-					.resize_(1)
-					.align_(\right)
-					.string_("% results found for query '%'.".format(results.size, widget.value));
-				Button(resultsview, Rect(textViewBounds.width / 2, 0, 100, 30).insetBy(5))
-					.resize_(1)
-					.states_([["Clear"]])
-					.action_({ searchField.valueAction_("") })
-					.focus();
-				results.do{|res, index|
-					res.drawRow(resultsview, Rect(0, index*30 + 30, textViewBounds.width, 30),
-						// Add an action that uses the gui itself:
-						{ fSelectTreePath.(res.catpath, res.docname) }
-						);
-				};
-
-			}{
-				// Empty query string, go back to textView
-				textView.visible = true;
-				resultsview.visible = false;
-			};
-
-		});
-
-	// Handle some "global" (for the Help gui) key actions
-	helpguikeyacts = {|view, char, modifiers, unicode, keycode|
-		if((modifiers & (262144 | 1048576)) != 0){ // cmd or control key is pressed
-			unicode.switch(
-				6, { // f for find
-					searchField.focus;
-				},
-				8, // h for home
-				{
-					{
-						listviews[0].valueAction_(listviews[0].items.find(["Help"]));
-						scrollView.visibleOrigin_(0 at 0);
-					}.defer(0.001)
-				}
-			);
-		};
-	};
-	win.view.addAction(helpguikeyacts, \keyUpAction);
-
-	win.onClose_{
-		// This is done to prevent Cmd+W winclose from trying to do things in vanishing textviews!
-		fHistoryDo = {};
-	};
-
-	win.front;
-	listviews[0].focus;
-	if(listviews[0].items.detect({ |item| item == "Help" }).notNil) {
-		fSelectTreePath.([], "Help"); // Select the "Help" entry in the root
-		selecteditem = "Help";
-	} {
-		selecteditem = listviews[0].items.first;
-		fSelectTreePath.([], selecteditem);
-	}
-}
-// end gui
-
-	all {
-		//		^this.new("Help/").dumpToDoc("all-helpfiles");
-		var doc;
-		var helpExtensions = ['html', 'htm', 'scd', 'rtf', 'rtfd'];
-		var str = CollStream.new;
-		doc = Document.new("all-helpfiles");
-		[       Platform.helpDir,
-			Platform.systemExtensionDir,
-			Platform.userExtensionDir
-		].do{ |it|
-			PathName.new( it ).foldersWithoutSVN.do{ |folderPn|
-				str << folderPn.fullPath << Char.nl;
-				folderPn.helpFilesDo { |filePn|
-					str << Char.tab <<
-					filePn.fileNameWithoutExtension  << Char.nl;
-				};
-			}
-		};
-		doc.string = str.collection;
-	}
-
-	// Iterates the tree, finding the help-doc paths and calling action.value(docname, path)
-	do { |action|
-		this.pr_do(action, this.tree, []);
-	}
-	pr_do { |action, curdict, catpath|
-		curdict.keysValuesDo{|key, val|
-			if(val.class == Dictionary){
-				this.pr_do(action, val, catpath ++ [key]) // recurse
-			}{
-				action.value(key.asString, val, catpath)
-			}
-		}
-	}
-
-	// Returns an array of hits as HelpSearchResult instances
-	search { |query, ignoreCase=true|
-		var results = List.new, file, ext, docstr, pos;
-		this.do{ |docname, path, catpath|
-			if(path != ""){
-				if(docname.find(query, ignoreCase).notNil){
-					results.add(HelpSearchResult(docname, path, 100 / (docname.size - query.size + 1), "", catpath.deepCopy));
-				}{
-					ext = path.splitext[1];
-					// OK, let's open the document, see if it contains the string... HEAVY!
-					file = File(path, "r");
-					if(file.isOpen){
-						docstr = ext.switch(
-							"html", {file.readAllStringHTML},
-							"htm",  {file.readAllStringHTML},
-							"rtf",  {file.readAllStringRTF},
-							        {file.readAllString}
-							);
-						file.close;
-						pos = docstr.findAll(query, ignoreCase);
-						if(pos.notNil){
-							results.add(HelpSearchResult(docname, path, pos.size, docstr[pos[0] ..  pos[0]+50], catpath.deepCopy));
-						}
-					}{
-						"Help.search will rebuild help cache, since an expected file was not found: %".format(path).postln;
-						// EXPERIMENTAL:
-						// File:isOpen failure means that the help tree cache is out of date.
-						// So let's explicitly destroy and recreate it.
-						// There may be a danger of infinite loops if some weird filesystem stuff is happening...?
-						this.forgetTree;
-						this.tree(allowCached: false);
-						^this.search(query, ignoreCase);
-					}
-				}
-			}{
-				//"empty path: %".format(docname).postln;
-			}
-		};
-		results = results.sort;
-
-		^results
-	}
-	// This iterates the Help.tree to find the file. Can be used instead of platform-specific approaches
-	findHelpFile { |str|
-		str = str.asString;
-		this.do { |key, path|
-			if(key == str and: { path.size > 0 }) { ^path }
-		};
-		^nil
-	}
-
-	// does the same as findHelpFile, but replaces the string with "Help" if the string is empty. This makes it possible in sced to open the main help if nothing is selected.
-	findHelpFileOrElse { |str|
-		str = str.asString;
-		if ( str.isEmpty ) { str = "Help" };
-		^Help.findHelpFile( str );
-	}
-
-// class method interface
-
-	*tree { |sysext = true, userext = true, allowCached = true| ^global.tree(sysext, userext, allowCached) }
-	*addUserFilter { |subpath| ^global.addUserFilter(subpath) }
-	*addDirTree { |helppath, tree| ^global.addDirTree(helppath, tree) }
-	*rebuildTree { ^global.rebuildTree }
-	*forgetTree { ^global.forgetTree }
-	*dumpTree { |node, prefix = ""| ^global.dumpTree(node, prefix) }
-	*addCatsToTree { |class, fileslist| ^global.addCatsToTree(class, fileslist) }
-	*all { ^global.all }
-	*do { |action| ^global.do(action) }
-	*pr_do { |action, curdict| ^global.pr_do(action, curdict) }
-	*searchGUI { ^global.searchGUI }
-	*search { |query, ignoreCase| ^global.search(query, ignoreCase) }
-	*findHelpFile { |str| ^global.findHelpFile(str) }
-	*makeHelp { |undocumentedObject, path| ^global.makeHelp(undocumentedObject, path) }
-	*makeAutoHelp { |andocumentedClass, path| ^global.makeAutoHelp(andocumentedClass, path) }
-
-		// instance-based getters
-	filterUserDirEntries { ^filterUserDirEntries }
-	cachePath { ^cachePath }
-} // End class
-
-
-HelpSearchResult {
-	var <>docname, <>path, <>goodness, <>context, <>catpath;
-	*new{|docname, path, goodness, context, catpath|
-		^this.newCopyArgs(docname, path, goodness, context, catpath);
-	}
-
-	asString {
-		^ "HelpSearchResult(%, %, %, %)".format(docname, path.basename, goodness, this.contextTrimmed)
-	}
-	// used for sorting:
-	<= { |that|
-		^ this.goodness >= that.goodness
-	}
-
-	contextTrimmed {
-		^context.tr($\n, $ ).tr($\t, $ )
-	}
-
-	drawRow { |parent, bounds, action|
-		// SCButton
-		Button.new(parent, bounds.copy.setExtent(bounds.width * 0.3, bounds.height).insetBy(5, 5))
-				.states_([[docname]]).action_(action ? { path.openHTMLFile });
-
-		StaticText.new(parent, bounds.copy.setExtent(bounds.width * 0.7, bounds.height)
-										.moveBy(bounds.width * 0.3, 0)
-										.insetBy(5, 5))
-				.string_(this.contextTrimmed);
-
-	}
-}
-
-
-+ Object {
-
-// Classes may override this to specify where they fit in a thematic classification,
-// if they want to classify differently than the help doc location would indicate.
-//
-// Multiple categorisations are allowed (hence the array).
-//
-// Extension libs (which won't automatically get allocated, since their help won't be in the main
-//   help tree) SHOULD override this to specify where best to fit.
-//   (Note: *Please* use the "Libraries" and/or "UGens" main classifications, those are the best
-//   places for users to find extensions docs. Don't add new "root" help categories, that's
-//   not good for GUI usability.)
-//
-// Each categorisation should be a string using ">" marks to separate categories from subcategories.
-// For examples see (e.g.) SinOsc, Gendy1, LPF, Integrator, EnvGen
-//*categories {	^ #["Unclassified"]	}
-*categories {	^ nil	}
-
-}
-
-+ Pattern {
-	*categories {	^ #["Streams-Patterns-Events>Patterns"] }
-}
-
-// This allows it to be called from sclang menu item
-+ Process {
-	helpGui {
-		Help.gui
-	}
-}
diff --git a/SCClassLibrary/Common/Files/SoundFile.sc b/SCClassLibrary/Common/Files/SoundFile.sc
index 48a3796..a92a5fc 100644
--- a/SCClassLibrary/Common/Files/SoundFile.sc
+++ b/SCClassLibrary/Common/Files/SoundFile.sc
@@ -384,10 +384,12 @@ SoundFile {
 		if (server.serverRunning) {
 			^SoundFile.collect(path)
 				.collect { |  sf |
-					Buffer(server, sf.numFrames, sf.numChannels).allocRead(sf.path)
+					Buffer(server, sf.numFrames, sf.numChannels)
+					.allocRead(sf.path)
+					.sampleRate_(sf.sampleRate);
 				}
 		} {
-			"the server must be running to collection soundfiles into buffers ".error
+			"the server must be running to collect soundfiles into buffers".error
 		}
 	}
 
@@ -411,8 +413,8 @@ SoundFile {
 		^buffer
 	}
 
-	cue { | ev, playNow = false |
-		var server, packet, defname = "diskIn" ++ numChannels, condition;
+	cue { | ev, playNow = false, closeWhenDone = false |
+		var server, packet, defname = "diskIn" ++ numChannels, condition, onClose;
 		ev = ev ? ();
 		if (this.numFrames == 0) { this.info };
 		fork {
@@ -440,13 +442,10 @@ SoundFile {
 							["/b_free", ev[\bufnum] ]  )
 				};
 				~setwatchers = { |ev|
-					OSCpathResponder(server.addr, ["/n_end", ev[\id][0]],
-					{ | time, resp, msg |
+					OSCFunc({
 						server.sendBundle(server.latency, ["/b_close", ev[\bufnum]],
-						["/b_read", ev[\bufnum], path, ev[\firstFrame], ev[\bufferSize], 0, 1]);
-						resp.remove;
-					}
-					).add;
+							["/b_read", ev[\bufnum], path, ev[\firstFrame], ev[\bufferSize], 0, 1]);
+					}, "/n_end", server.addr, nil, ev[\id][0]).oneShot;
 				};
 				if (playNow) {
 					packet = server.makeBundle(false, {ev.play})[0];
@@ -460,6 +459,13 @@ SoundFile {
 						]);
 			};
 		};
+		if (closeWhenDone) {
+			onClose = SimpleController(ev).put(\n_end, {
+				ev.close;
+				onClose.remove;
+			});
+			ev.addDependant(onClose)
+		};
 		^ev;
 	}
 
diff --git a/SCClassLibrary/Common/GUI/Document.sc b/SCClassLibrary/Common/GUI/Document.sc
index 93714d0..e4a1ebb 100644
--- a/SCClassLibrary/Common/GUI/Document.sc
+++ b/SCClassLibrary/Common/GUI/Document.sc
@@ -4,15 +4,12 @@
 
 Document {
 
-	classvar <dir="", <wikiDir="", <allDocuments, >current;
+	classvar <dir="", <allDocuments, >current;
 	classvar <>globalKeyDownAction, <> globalKeyUpAction, <>initAction;
 
 	classvar <>autoRun = true;
-	classvar <>wikiBrowse = true;
 
 	classvar <>implementationClass;
-	classvar <postColor;
-	classvar <theme, <themes;
 
 	//don't change the order of these vars:
 	var <dataptr, <>keyDownAction, <>keyUpAction, <>mouseUpAction;
@@ -23,9 +20,9 @@ Document {
 	var <envir, savedEnvir;
 	var <editable;
 
-	  *initClass{
+	*initClass{
 		allDocuments = [];
-	  }
+	}
 
 	*startup {
 		var num, doc;
@@ -33,23 +30,6 @@ Document {
 		num.do { | i |
 			doc = this.newFromIndex(i);
 		};
-		postColor = Color.black;
-		themes = (
-			default: (
-				classColor: Color(0, 0, 0.75, 1),
-				textColor: Color(0, 0, 0, 1),
-				stringColor: Color(0.375, 0.375, 0.375, 1),
-				commentColor: Color(0.75, 0, 0, 1),
-				symbolColor: Color(0, 0.45, 0, 1),
-				numberColor: Color(0, 0, 0, 1),
-				specialValsColor: Color(0.2, 0.2, 0.75, 1), // true false nil inf
-				specialVarsColor: Color(0.4, 0.4, 0.75, 1), // super, thisProcess
-				declColor: Color(0, 0, 1, 1), // var, const, args
-				puncColor: Color(0, 0, 0, 1),
-				environColor: Color(1.0, 0.4, 0, 1)
-				)
-			);
-		theme = themes.default;
 	}
 
 	*open { | path, selectionStart=0, selectionLength=0, envir |
@@ -87,15 +67,6 @@ Document {
 		}
 	}
 
-	*wikiDir_ { | path |
-		path = path.standardizePath;
-		if(path == "") {wikiDir = path } {
-			if(pathMatch(path).isEmpty) { ("there is no such path:" + path).postln } {
-				wikiDir = path ++ "/"
-			}
-		}
-	}
-
 	*standardizePath { | p |
 		var pathName;
 		pathName = PathName(p.standardizePath);
@@ -162,10 +133,21 @@ Document {
 	}
 
 	*listener {
-		^allDocuments[this.implementationClass.prGetIndexOfListener];
+		var index = this.prGetIndexOfListener;
+		if (index.notNil) {
+			^allDocuments[index];
+		} {
+			^nil
+		}
 	}
+
 	isListener {
-		^allDocuments.indexOf(this) == this.class.prGetIndexOfListener
+		var index = this.class.prGetIndexOfListener;
+		if (index.notNil) {
+			^allDocuments.indexOf(this) == index
+		} {
+			^False
+		}
 	}
 
 // document setup
@@ -176,7 +158,10 @@ Document {
 	path_ { |apath|
 		this.prSetFileName(apath);
 	}
-	dir { var path = this.path; ^path !? { path.dirname } }
+	dir {
+		var path = this.path;
+		^path !? { path.dirname }
+	}
 	name {
 		^this.title
 	}
@@ -193,36 +178,6 @@ Document {
 		this.prSetTitle(argName);
 	}
 
-	background_ { | color |
-		this.prSetBackgroundColor(color);
-	}
-	background {
-		var color;
-		color = Color.new;
-		this.prGetBackgroundColor(color);
-		^color;
-	}
-
-	selectedBackground_ { | color |
-		this.prSetSelectedBackgroundColor(color);
-	}
-
-	selectedBackground {
-		var color;
-		color = Color.new;
-		this.prGetSelectedBackgroundColor(color);
-		^color;
-	}
-
-	*postColor_ { | col |
-		postColor = col;
-		^Document.implementationClass.postColor_(col);
-	}
-
-	stringColor_ { | color, rangeStart = -1, rangeSize = 0 |
-		stringColor = color;
-		this.setTextColor(color,rangeStart, rangeSize);
-	}
 	bounds {
 		^this.prGetBounds(Rect.new);
 	}
@@ -231,7 +186,6 @@ Document {
 	}
 
 // interaction:
-
 	close {
 		this.prclose
 	}
@@ -252,10 +206,6 @@ Document {
 		^this.subclassResponsibility(thisMethod)
 	}
 
-	syntaxColorize {
-		^this.subclassResponsibility(thisMethod)
-	}
-
 	selectLine { | line |
 		this.prSelectLine(line);
 	}
@@ -284,27 +234,6 @@ Document {
 		^this.subclassResponsibility(thisMethod)
 	}
 
-	*setTheme { | themeName |
-		theme = themes[themeName];
-		if(theme.proto.isNil) {
-			theme = theme.copy.parent_(themes[\default]);
-		};
-		thisProcess.platform.writeClientCSS;
-		Document.implementationClass.prSetSyntaxColorTheme(
-			theme.textColor,
-			theme.classColor,
-			theme.stringColor,
-			theme.symbolColor,
-			theme.commentColor,
-			theme.numberColor,
-			theme.specialValsColor,
-			theme.specialVarsColor,
-			theme.declColor,
-			theme.puncColor,
-			theme.environColor
-		);
-	}
-
 // state info
 	isEdited {
 		^this.subclassResponsibility(thisMethod)
@@ -376,113 +305,8 @@ Document {
 		this.restoreCurrentEnvironment;
 	}
 
-	makeWikiPage { | wikiWord, extension=(".rtf"), directory |
-		var filename, file, doc, string, dirName;
-		directory = directory ? wikiDir;
-		filename = directory ++ wikiWord ++ extension;
-		file = File(filename, "w");
-		if (file.isOpen) {
-			string = "{\\rtf1\\mac\\ansicpg10000\\cocoartf102\\n{\\fonttbl}\n"
-				"{\\colortbl;\\red255\\green255\\blue255;}\n"
-				"Write about " ++ wikiWord ++ " here.\n}";
-			file.write(string);
-			file.close;
-
-			doc = this.class.open(filename);
-			doc.path = filename;
-			doc.selectRange(0,0x7FFFFFFF);
-			doc.onClose = {
-				if(doc.string == ("Write about " ++ wikiWord ++ " here.")) {
-					unixCmd("rm" + filename)
-				};
-			};
-		} {
-			// in a second try, check if a path must be created.
-			// user makes double click on string.
-			dirName = wikiWord.dirname;
-			if(dirName != ".") {
-				dirName = directory ++ dirName;
-				"created directory: % \n".postf(dirName);
-				dirName.mkdir;
-			};
-		}
-	}
-
-	openWikiPage {
-		var selectedText, filename, index, directory;
-		var extensions = #[".rtf", ".sc", ".scd", ".txt", "", ".rtfd", ".html"];
-		selectedText = this.selectedText;
-		index = this.selectionStart;
-
-		this.selectRange(index, 0);
-
-		// refer to local link with round parens
-		if(selectedText.first == $( /*)*/ and: {/*(*/ selectedText.last == $) }) {
-				selectedText = selectedText[1 .. selectedText.size-2];
-				directory = Document.current.path.dirname ++ "/";
-		} {
-				directory = wikiDir;
-		};
-
-		case { selectedText[0] == $* }
-		{
-			// execute file
-			selectedText = selectedText.drop(1);
-			extensions.do { |ext|
-				filename = directory ++ selectedText ++ ext;
-				if (File.exists(filename)) {
-					// open existing wiki page
-					filename.load;
-					^this
-				}
-				{
-				filename = "Help/help-scripts/" ++ selectedText ++ ext;
-				if (File.exists(filename)) {
-					// open help-script document
-					filename.load;
-					^this
-				}
-				}
-			};
-		}
-		{ selectedText.first == $[ and: { selectedText.last == $] }}
-		{
-			// open help file
-			selectedText[1 .. selectedText.size-2].openHelpFile
-		}
-		{ selectedText.containsStringAt(0, "http://")
-			or: { selectedText.containsStringAt(0, "file://") } }
-		{
-			// open URL
-			openOS(selectedText)
-		}
-		{ selectedText.containsStringAt(selectedText.size-1, "/") }
-		{
-			Document(selectedText,
-				pathMatch(directory ++ selectedText).collect({ |it|it.basename ++ "\n"}).join
-			)
-		}
-
-		{
-			if(index + selectedText.size > this.text.size) { ^this };
-			extensions.do { |ext|
-				filename = directory ++ selectedText ++ ext;
-				if (File.exists(filename)) {
-					// open existing wiki page
-					this.class.open(filename);
-					^this
-				}
-			};
-			// make a new wiki page
-			this.makeWikiPage(selectedText, nil, directory);
-		};
-	}
-
 	mouseUp{ | x, y, modifiers, buttonNumber, clickCount, clickPos |
-		mouseUpAction.value(this, x, y, modifiers, buttonNumber, clickCount);		if (wikiBrowse and: { this.linkAtClickPos(clickPos).not }
-			and: { this.selectUnderlinedText(clickPos) } ) {
-			^this.openWikiPage
-		};
+		mouseUpAction.value(this, x, y, modifiers, buttonNumber, clickCount)
 	}
 
 	keyDown { | character, modifiers, unicode, keycode |
@@ -517,6 +341,10 @@ Document {
 		this.subclassResponsibility(thisMethod);
 	}
 
+	*prPostColor_{ |color|
+		this.subclassResponsibility(thisMethod);
+	}
+
 	prUsesAutoInOutdent_{|bool|
 		^this.subclassResponsibility(thisMethod);
 	}
@@ -547,19 +375,6 @@ Document {
 		^this.subclassResponsibility(thisMethod)
 	}
 
-	*prSetSyntaxColorTheme{ |textC, classC, stringC, symbolC, commentC, numberC, specialValsC, specialVarsC, declC, puncC, environC|
-		^this.subclassResponsibility(thisMethod);
-	}
-
-	// if range is -1 apply to whole doc
-	setFont { | font, rangeStart= -1, rangeSize=100 |
-		^this.subclassResponsibility(thisMethod)
-	}
-
-	setTextColor { | color,  rangeStart = -1, rangeSize = 0 |
-		^this.subclassResponsibility(thisMethod)
-	}
-
 	text {
 		^this.subclassResponsibility(thisMethod)
 	}
@@ -710,9 +525,16 @@ Document {
 	}
 
 	*prGetIndexOfListener {
-		^this.subclassResponsibility(thisMethod)
-	}
+		if (this.implementationClass.isNil) {
+			^nil
+		};
 
+		if (this.implementationClass.respondsTo(\prGetIndexOfListener)) {
+			^this.implementationClass.prGetIndexOfListener
+		} {
+			^nil
+		}
+	}
 
 	//---not yet implemented
 	// ~/Documents
@@ -755,5 +577,4 @@ Document {
 	*prBasicNew {
 		^super.new
 	}
-
 }
diff --git a/SCClassLibrary/Common/GUI/HelpBrowser.sc b/SCClassLibrary/Common/GUI/HelpBrowser.sc
index c1c1024..a0a5390 100644
--- a/SCClassLibrary/Common/GUI/HelpBrowser.sc
+++ b/SCClassLibrary/Common/GUI/HelpBrowser.sc
@@ -12,6 +12,9 @@ HelpBrowser {
 	var rout;
 
 	*initClass {
+		Class.initClassTree(SCDoc);
+		defaultHomeUrl = SCDoc.helpTargetUrl ++ "/Help.html";
+
 		StartUp.add {
 			NotificationCenter.register(SCDoc, \didIndexAllDocs, this) {
 				if(WebView.implClass.respondsTo(\clearCache)) {
@@ -29,14 +32,16 @@ HelpBrowser {
 	}
 
 	*new { arg aHomeUrl, newWin;
-		if( aHomeUrl.isNil ) {
-			aHomeUrl = defaultHomeUrl ?? { SCDoc.helpTargetDir ++ "/Help.html" };
-		};
-		^super.new.init( aHomeUrl, newWin ?? { openNewWindows } );
+		^super.new.init( aHomeUrl ? defaultHomeUrl, newWin ?? { openNewWindows } );
 	}
 
 	*goTo {|url|
-		this.front.goTo(url);
+		var ideClass = \ScIDE.asClass;
+		if ( ideClass.notNil ) {
+			ideClass.openHelpUrl(url);
+		}{
+			this.front.goTo(url);
+		}
 	}
 
 	*front {
@@ -45,17 +50,22 @@ HelpBrowser {
 		^w;
 	}
 
+	*goHome { this.goTo(defaultHomeUrl); }
+
 	*openBrowsePage {|category|
 		category = if(category.notNil) {"#"++category} {""};
-		this.goTo(SCDoc.helpTargetDir++"/Browse.html"++category);
+		this.goTo(SCDoc.helpTargetUrl++"/Browse.html"++category);
 	}
 	*openSearchPage {|text|
 		text = if(text.notNil) {"#"++text} {""};
-		this.goTo(SCDoc.helpTargetDir++"/Search.html"++text);
+		this.goTo(SCDoc.helpTargetUrl++"/Search.html"++text);
 	}
 	*openHelpFor {|text|
+		this.goTo(SCDoc.findHelpFile(text));
+		/* The following was replaced, for compatibility with SC IDE:
 		var w = this.front;
 		{ w.startAnim; w.goTo(SCDoc.findHelpFile(text)) }.fork(AppClock);
+		*/
 	}
 	*openHelpForMethod {|method|
 		var cls = method.ownerClass;
@@ -67,49 +77,30 @@ HelpBrowser {
 			cls = cls.name.asString;
 			met = "-"++met;
 		};
-		this.goTo(Help.dir+/+"Classes"+/+cls++".html#"++met);
-	}
-	*getOldWrapUrl {|url|
-		var c;
-		^("file://" ++ SCDoc.helpTargetDir +/+ "OldHelpWrapper.html#"++url++"?"++
-		SCDoc.helpTargetDir +/+ if((c=url.basename.split($.).first).asSymbol.asClass.notNil)
-			{"Classes" +/+ c ++ ".html"}
-			{"Guides/WritingHelp.html"})
+		this.goTo(SCDoc.helpTargetUrl++"/Classes/"++cls++".html#"++met);
 	}
-	cmdPeriod { rout.play(AppClock) }
-	goTo {|url, brokenAction|
-		var newPath, oldPath, plainTextExts = #[".sc",".scd",".txt",".schelp"];
 
-		plainTextExts.do {|x|
-			if(url.endsWith(x)) {
-				^this.openTextFile(url);
-			}
-		};
+	cmdPeriod { rout.play(AppClock) }
+	goTo {|urlString, brokenAction|
+		var url, newPath, oldPath;
 
 		window.front;
 		this.startAnim;
 
-		brokenAction = brokenAction ? {SCDoc.helpTargetDir++"/BrokenLink.html#"++url};
+		brokenAction = brokenAction ? { |fragment|
+			var brokenUrl = URI.fromLocalPath( SCDoc.helpTargetDir++"/BrokenLink.html" );
+			brokenUrl.fragment = fragment;
+			brokenUrl;
+		};
+
+		url = URI(urlString);
 
 		rout = Routine {
 			try {
-				url = SCDoc.prepareHelpForURL(url) ?? brokenAction;
-				#newPath, oldPath = [url,webView.url].collect {|x|
-					if(x.notEmpty) {x.findRegexp("(^\\w+://)?([^#]+)(#.*)?")[1..].flop[1][1]}
-				};
-				// detect old helpfiles and open them in OldHelpWrapper
-				if(
-					block{|break|
-						Help.do {|key, path|
-							if(url.endsWith(path)) {
-								break.value(true)
-							}
-						}; false
-					}
-				) {
-					url = HelpBrowser.getOldWrapUrl(url)
-				};
-				webView.url = url;
+				url = SCDoc.prepareHelpForURL(url) ?? { brokenAction.(urlString) };
+				newPath = url.path;
+				oldPath = URI(webView.url).path;
+				webView.url = url.asString;
 				// needed since onLoadFinished is not called if the path did not change:
 				if(newPath == oldPath) {webView.onLoadFinished.value};
 				webView.focus;
@@ -179,7 +170,7 @@ HelpBrowser {
 		srchBox.action = {|x|
 			if(x.string.notEmpty) {
 				this.goTo(if(x.string.first==$#)
-					{SCDoc.helpTargetDir++"/Search.html#"++x.string.drop(1)}
+					{SCDoc.helpTargetUrl ++ "/Search.html" ++ x.string}
 					{SCDoc.findHelpFile(x.string)}
 				);
 			}
@@ -241,17 +232,20 @@ HelpBrowser {
 		};
 		webView.onLoadFailed = { this.stopAnim };
 		webView.onLinkActivated = {|wv, url|
-			var newPath, oldPath;
-			if(openNewWin) {
-				#newPath, oldPath = [url,webView.url].collect {|x|
-					if(x.notEmpty) {x.findRegexp("(^\\w+://)?([^#]+)(#.*)?")[1..].flop[1][1]}
+			var redirected, newPath, oldPath;
+			redirected = this.redirectTextFile(url);
+			if (not(redirected)) {
+				if(openNewWin) {
+					#newPath, oldPath = [url,webView.url].collect {|x|
+						if(x.notEmpty) {x.findRegexp("(^\\w+://)?([^#]+)(#.*)?")[1..].flop[1][1]}
+					};
 				};
-			};
-			if(newPath!=oldPath) {
-				HelpBrowser.new(newWin:true).goTo(url);
-			} {
-				this.goTo(url);
-			};
+				if(newPath!=oldPath) {
+					HelpBrowser.new(newWin:true).goTo(url);
+				} {
+					this.goTo(url);
+				};
+			}
 		};
 		if(webView.respondsTo(\onReload_)) {
 			webView.onReload = {|wv, url|
@@ -261,6 +255,11 @@ HelpBrowser {
 				this.goTo(url);
 			};
 		};
+		if(webView.respondsTo(\onJavaScriptMsg_)) {
+			webView.onJavaScriptMsg = {|wv, err, type|
+				"JavaScript %: %".format(if(type==0,"Error","Message"),err).postln;
+			};
+		};
 
 		toggleFind = {
 				if(findView.visible.not) {
@@ -300,15 +299,25 @@ HelpBrowser {
 		};
 	}
 
-	openTextFile {|path|
-		var win, winRect, txt, file, fonts;
-		path = path.replace("%20"," ").findRegexp("(^\\w+://)?([^#]+)(#.*)?")[1..].flop[1][1];
-		if(File.exists(path)) {
-			path.openDocument;
-		} {
-			webView.url = SCDoc.helpTargetDir++"/BrokenLink.html#"++path;
-			window.front;
-		}
+	redirectTextFile {|url|
+		var plainTextExts = #[".sc",".scd",".txt",".schelp",".rtf"];
+
+		plainTextExts.do {|x|
+			var path;
+			if(url.endsWith(x)) {
+				path = url.replace("%20"," ")
+					.findRegexp("(^\\w+://)?([^#]+)(#.*)?")[1..].flop[1][1];
+				if(File.exists(path)) {
+					path.openDocument;
+				} {
+					webView.url = SCDoc.helpTargetUrl++"/BrokenLink.html#"++path;
+					window.front;
+				};
+				^true
+			}
+		};
+
+		^false
 	}
 
 	startAnim {
@@ -335,8 +344,3 @@ HelpBrowser {
 
 }
 
-+ Help {
-	*gui {
-		HelpBrowser.instance.goHome;
-	}
-}
diff --git a/SCClassLibrary/Common/GUI/PlusGUI/Collections/StringPlusGUI.sc b/SCClassLibrary/Common/GUI/PlusGUI/Collections/StringPlusGUI.sc
index 3dd91c6..e69a221 100644
--- a/SCClassLibrary/Common/GUI/PlusGUI/Collections/StringPlusGUI.sc
+++ b/SCClassLibrary/Common/GUI/PlusGUI/Collections/StringPlusGUI.sc
@@ -3,33 +3,42 @@
 		Document.new(title, this, makeListener);
 	}
 
-	openTextFile{ arg selectionStart=0, selectionLength=0;
-		if(Document.implementationClass.notNil) {
-			Document.open(this.absolutePath , selectionStart, selectionLength);
-		} {
-			this.openOS;
-		}
-	}
 	openHTMLFile{ arg selectionStart=0, selectionLength=0;
+		var webView;
+
 		if (Platform.openHTMLFileAction.notNil) {
-			Platform.openHTMLFileAction.value(this, selectionStart, selectionLength)
-		} {
-			this.openTextFile(selectionStart, selectionLength)
-		}
+			Platform.openHTMLFileAction.value(this, selectionStart, selectionLength);
+			^this
+		};
+
+		webView = \QWebView.asClass;
+		if (webView.notNil) {
+			webView = webView.new;
+			webView.url_(this);
+			webView.front;
+			^this;
+		};
+
+		this.openDocument(selectionStart, selectionLength)
 	}
 
-	openDocument {
+	openDocument { arg selectionStart=0, selectionLength=0;
+		var ideClass;
 		if(Document.implementationClass.notNil) {
-			Document.open(this);
-		} {
-			this.openOS;
-		}
-	}
-//	*fromUser { arg prompt="Enter string :", default="";
-//		_GetStringFromUser
-//		^this.primitiveFailed
-//	}
+			Document.open(this, selectionStart, selectionLength);
+			^this
+		};
 
+		ideClass = \ScIDE.asClass;
+		if ( ideClass.notNil ) {
+			if ( this.endsWith(".sc") || this.endsWith(".scd") ) {
+				ideClass.open(this, selectionStart, selectionLength);
+				^this
+			}
+		};
+
+		this.openOS
+	}
 
 	draw {
 		this.drawAtPoint(Point(0,0), Font.default, Color.black);
@@ -107,7 +116,7 @@
 		this.findHelpFile;
 	}
 
-	openHelpFile {
+	help {
 		if (Platform.openHelpFileAction.notNil) {
 			Platform.openHelpFileAction.value(this)
 		} {
@@ -115,3 +124,9 @@
 		}
 	}
 }
+
++ Symbol {
+	openDocument { arg selectionStart=0, selectionLength=0;
+		^this.asString.openDocument(selectionStart, selectionLength)
+	}
+}
diff --git a/SCClassLibrary/Common/GUI/PlusGUI/Control/FreqScope.sc b/SCClassLibrary/Common/GUI/PlusGUI/Control/FreqScope.sc
index 1857026..12e44a6 100644
--- a/SCClassLibrary/Common/GUI/PlusGUI/Control/FreqScope.sc
+++ b/SCClassLibrary/Common/GUI/PlusGUI/Control/FreqScope.sc
@@ -49,7 +49,7 @@ PlusFreqScope {
 			phasor = LFSaw.ar(rate/BufDur.ir(fftbufnum), phase, numSamples, numSamples + 2);
 			phasor = phasor.round(2); // the evens are magnitude
 			ScopeOut.ar( ((BufRd.ar(1, fftbufnum, phasor, 1, 1) * mul).ampdb * dbFactor) + 1, scopebufnum);
-		}).add;
+		}, [\kr, \ir, \ir, \ir, \kr]).add;
 		SynthDef("freqScope0_shm", { arg in=0, fftBufSize = 2048, scopebufnum=1, rate=4, dbFactor = 0.02;
 			var phase = 1 - (rate * fftBufSize.reciprocal);
 			var signal, chain, result, phasor, numSamples, mul, add;
@@ -63,7 +63,7 @@ PlusFreqScope {
 			phasor = LFSaw.ar(rate/BufDur.ir(fftbufnum), phase, numSamples, numSamples + 2);
 			phasor = phasor.round(2); // the evens are magnitude
 			ScopeOut2.ar( ((BufRd.ar(1, fftbufnum, phasor, 1, 1) * mul).ampdb * dbFactor) + 1, scopebufnum, fftBufSize/rate);
-		}).add;
+		}, [\kr, \ir, \ir, \ir, \kr]).add;
 
 		// logarithmic
 		SynthDef("freqScope1", { arg in=0, fftBufSize = 2048, scopebufnum=1, rate=4, dbFactor = 0.02;
@@ -78,7 +78,7 @@ PlusFreqScope {
 			phasor = halfSamples.pow(LFSaw.ar(rate/BufDur.ir(fftbufnum), phase, 0.5, 0.5)) * 2; // 2 to bufsize
 			phasor = phasor.round(2); // the evens are magnitude
 			ScopeOut.ar( ((BufRd.ar(1, fftbufnum, phasor, 1, 1) * mul).ampdb * dbFactor) + 1, scopebufnum);
-		}).add;
+		}, [\kr, \ir, \ir, \ir, \kr]).add;
 
 		SynthDef("freqScope1_shm", { arg in=0, fftBufSize = 2048, scopebufnum=1, rate=4, dbFactor = 0.02;
 			var phase = 1 - (rate * fftBufSize.reciprocal);
@@ -92,7 +92,7 @@ PlusFreqScope {
 			phasor = halfSamples.pow(LFSaw.ar(rate/BufDur.ir(fftbufnum), phase, 0.5, 0.5)) * 2; // 2 to bufsize
 			phasor = phasor.round(2); // the evens are magnitude
 			ScopeOut2.ar( ((BufRd.ar(1, fftbufnum, phasor, 1, 1) * mul).ampdb * dbFactor) + 1, scopebufnum, fftBufSize/rate);
-		}).add;
+		}, [\kr, \ir, \ir, \ir, \kr]).add;
 
 		// These next two are based on the original two, but adapted by Dan Stowell
 		// to calculate the frequency response between two channels
@@ -115,7 +115,7 @@ PlusFreqScope {
 			phasor = LFSaw.ar(rate/BufDur.ir(fftbufnum), phase, numSamples, numSamples + 2);
 			phasor = phasor.round(2); // the evens are magnitude
 			ScopeOut.ar( ((BufRd.ar(1, divisionbuf, phasor, 1, 1) * mul).ampdb * dbFactor) + 1, scopebufnum);
-		}).add;
+		}, [\kr, \ir, \ir, \ir, \kr, \ir]).add;
 
 		SynthDef("freqScope0_magresponse_shm", { arg in=0, fftBufSize = 2048, scopebufnum=1, rate=4, dbFactor = 0.02, in2=1;
 			var phase = 1 - (rate * fftBufSize.reciprocal);
@@ -136,7 +136,7 @@ PlusFreqScope {
 			phasor = LFSaw.ar(rate/BufDur.ir(fftbufnum), phase, numSamples, numSamples + 2);
 			phasor = phasor.round(2); // the evens are magnitude
 			ScopeOut2.ar( ((BufRd.ar(1, divisionbuf, phasor, 1, 1) * mul).ampdb * dbFactor) + 1, scopebufnum, fftBufSize/rate);
-		}).add;
+		}, [\kr, \ir, \ir, \ir, \kr, \ir]).add;
 
 		SynthDef("freqScope1_magresponse", { arg in=0, fftBufSize = 2048, scopebufnum=1, rate=4, dbFactor = 0.02, in2=1;
 			var phase = 1 - (rate * fftBufSize.reciprocal);
@@ -156,7 +156,7 @@ PlusFreqScope {
 			phasor = halfSamples.pow(LFSaw.ar(rate/BufDur.ir(fftbufnum), phase, 0.5, 0.5)) * 2; // 2 to bufsize
 			phasor = phasor.round(2); // the evens are magnitude
 			ScopeOut.ar( ((BufRd.ar(1, divisionbuf, phasor, 1, 1) * mul).ampdb * dbFactor) + 1, scopebufnum);
-		}).add;
+		}, [\kr, \ir, \ir, \ir, \kr, \ir]).add;
 
 		SynthDef("freqScope1_magresponse_shm", { arg in=0, fftBufSize = 2048, scopebufnum=1, rate=4, dbFactor = 0.02, in2=1;
 			var phase = 1 - (rate * fftBufSize.reciprocal);
@@ -176,7 +176,7 @@ PlusFreqScope {
 			phasor = halfSamples.pow(LFSaw.ar(rate/BufDur.ir(fftbufnum), phase, 0.5, 0.5)) * 2; // 2 to bufsize
 			phasor = phasor.round(2); // the evens are magnitude
 			ScopeOut2.ar( ((BufRd.ar(1, divisionbuf, phasor, 1, 1) * mul).ampdb * dbFactor) + 1, scopebufnum, fftBufSize/rate);
-		}).add;
+		}, [\kr, \ir, \ir, \ir, \kr, \ir]).add;
 	}
 
 	initFreqScope { arg parent, bounds;
@@ -456,6 +456,7 @@ PlusFreqScopeWindow {
 				})
 				.canFocus_(false)
 				.font_(font)
+				.valueAction_(1)
 			;
 
 			StaticText(window, Rect(pad[0] + rect.width, pad[2]+76, pad[1], 10))
diff --git a/SCClassLibrary/Common/GUI/PlusGUI/Control/GeneralHIDGUI.sc b/SCClassLibrary/Common/GUI/PlusGUI/Control/GeneralHIDGUI.sc
index 09570fa..1c410e2 100644
--- a/SCClassLibrary/Common/GUI/PlusGUI/Control/GeneralHIDGUI.sc
+++ b/SCClassLibrary/Common/GUI/PlusGUI/Control/GeneralHIDGUI.sc
@@ -1,9 +1,9 @@
 GeneralHIDDeviceGUI{
 	var <win, <updater;
 	var <device;
-	var butlabels, buttons;
-	var slidlabels, sliders;
-	var rellabels, relsliders;
+	var buttons;
+	var sliders;
+	var relsliders;
 
 	var <bkeys,<akeys,<rkeys;
 
@@ -16,21 +16,17 @@ GeneralHIDDeviceGUI{
 		win = GUI.window.new( device.info.name, Rect( 0, 0, 400, 400 ));
 		win.view.decorator = FlowLayout( win.bounds );
 
-		GUI.staticText.new( win, Rect( 0, 0, 390, 20 ) ).string_( device.info.name );
+		EZText.new( win, 390 at 20 , "name", initVal: device.info.name );
 
-		GUI.staticText.new( win, Rect( 0, 0, 390, 20 ) ).string_( device.info.findArgs );
+		EZText.new( win, 390 at 20, "findArgs", initVal: device.info.findArgs );
 
 		win.view.decorator.nextLine;
 
 		// buttons:
 		if ( device.slots[1].notNil, {
 			bkeys = device.slots[1].keys.asArray.sort;
-			butlabels = bkeys.collect{ |key,it|
-				GUI.staticText.new( win, Rect( 0, 0, 30, 20 ) ).string_( device.slots[1][key].id.asString ).align_( 0 );
-			};
-			win.view.decorator.nextLine;
-			buttons = bkeys.collect{ |it|
-				GUI.button.new( win, Rect( 0, 0, 30, 20 ) ).states_( [ ["0"], ["1"] ] );
+			buttons = bkeys.collect{ |key,it|
+            EZNumber.new( win, 30 at 40, device.slots[1][key].id.asString, [0,1,\linear,1].asSpec, labelWidth: 30, layout: 'line2', gap:0 at 0, margin: 0 at 0 );
 			};
 		});
 		win.view.decorator.nextLine;
@@ -38,12 +34,8 @@ GeneralHIDDeviceGUI{
 		// absolute slots:
 		if ( device.slots[3].notNil, {
 			akeys = device.slots[3].keys.asArray.sort;
-			slidlabels = akeys.collect{ |key,it|
-				GUI.staticText.new( win, Rect( 0, 0, 30, 20 ) ).string_( device.slots[3][key].id.asString ).align_( 0 );
-			};
-			win.view.decorator.nextLine;
-			sliders = akeys.collect{ |it|
-				GUI.slider.new( win, Rect( 0, 0, 30, 60 ) )
+         sliders = akeys.collect{ |key,it|
+            EZSlider.new( win, 30 at 80, device.slots[3][key].id.asString, labelWidth: 30, layout: 'vert',gap:0 at 0,margin:0 at 0 );
 			};
 		});
 		win.view.decorator.nextLine;
@@ -52,12 +44,8 @@ GeneralHIDDeviceGUI{
 
 		if ( device.slots[2].notNil, {
 			rkeys = device.slots[2].keys.asArray.sort;
-			rellabels = rkeys.collect{ |key,it|
-				GUI.staticText.new( win, Rect( 0, 0, 30, 20 ) ).string_( device.slots[2][key].id.asString ).align_( 0 );
-			};
-			win.view.decorator.nextLine;
-			relsliders = rkeys.collect{ |it|
-				GUI.slider.new( win, Rect( 0, 0, 30, 60 ) )
+			relsliders = rkeys.collect{ |key,it|
+            EZSlider.new( win, 30 at 80, device.slots[2][key].id.asString, labelWidth: 30, layout: 'vert',gap:0 at 0,margin:0 at 0 );
 			};
 		});
 
diff --git a/SCClassLibrary/Common/GUI/PlusGUI/Control/scopeResponse.sc b/SCClassLibrary/Common/GUI/PlusGUI/Control/scopeResponse.sc
index 69dcba7..3ed91f5 100644
--- a/SCClassLibrary/Common/GUI/PlusGUI/Control/scopeResponse.sc
+++ b/SCClassLibrary/Common/GUI/PlusGUI/Control/scopeResponse.sc
@@ -82,7 +82,7 @@ Slew.scopeResponse
 		var hasFreqInput = argNames.includes(\freq);
 
 		^if(hasFreqInput){
-			{|in| this.ar(in: in, freq:MouseX.kr(10, 10000, 1)) * Line.ar(0,1,0.1) }
+			{|in| this.ar(in: in, freq:MouseX.kr(10, SampleRate.ir / 4, 1)) * Line.ar(0,1,0.1) }
 				.scopeResponse(server, freqMode,
 					label ?? {"%: empirical frequency response (move mouse to change freq)".format(this.asString)}
 					)
diff --git a/SCClassLibrary/Common/GUI/PlusGUI/Core/ClassBrowser.sc b/SCClassLibrary/Common/GUI/PlusGUI/Core/ClassBrowser.sc
index b961354..f611675 100644
--- a/SCClassLibrary/Common/GUI/PlusGUI/Core/ClassBrowser.sc
+++ b/SCClassLibrary/Common/GUI/PlusGUI/Core/ClassBrowser.sc
@@ -93,7 +93,7 @@ ClassBrowser {
 
 			~helpButton.action = {
 				if(currentState.currentClass.notNil) {
-					currentState.currentClass.openHelpFile;
+					currentState.currentClass.help;
 				}
 			};
 
@@ -132,21 +132,6 @@ ClassBrowser {
 				};
 			};
 
-			if(this.respondsTo(\openSVN)) {
-				~svnButton = gui.button.new(~window, Rect(0,0, 32, 24));
-				~svnButton.states = [["svn"]];
-				~svnButton.action = {
-					var filename, svnAddr;
-					if(currentState.currentMethod.notNil) {
-						svnAddr = "http://supercollider.svn.sourceforge.net/viewvc/supercollider/trunk/common/build/";
-						filename = currentState.currentClass.filenameSymbol.asString;
-						svnAddr = svnAddr ++ filename.drop(filename.find("SCClassLibrary"));
-						svnAddr = svnAddr ++ "?view=log";
-						this.openSVN( svnAddr );
-					};
-				};
-			};
-
 			~window.view.decorator.nextLine;
 
 			GUI.staticText.new(~window, Rect(0, 0, 65, 20)).string_("Search for");
@@ -366,7 +351,7 @@ ClassBrowser {
 				classVarView, instVarView, subclassTitle, methodTitle, subclassView,
 				methodView, argView, searchMenu];
 			buttonSet = IdentitySet[\superButton, \metaButton, \helpButton, \classSourceButton,
-				\methodSourceButton, \implementationButton, \refsButton, \svnButton];
+				\methodSourceButton, \implementationButton, \refsButton];
 				// updateProtos holds instructions to update the GUI
 				// for each kind of browser result to display
 			updateProtos = (
diff --git a/SCClassLibrary/Common/GUI/PlusGUI/Core/HelperPlus.sc b/SCClassLibrary/Common/GUI/PlusGUI/Core/HelperPlus.sc
deleted file mode 100644
index 4d40129..0000000
--- a/SCClassLibrary/Common/GUI/PlusGUI/Core/HelperPlus.sc
+++ /dev/null
@@ -1,62 +0,0 @@
-+ Helper{
-
-*updateRedirectStubs { |wpath, relativeLinks=true|
-	var template, tfile, classesArray, path;
-	path= Platform.helpDir+/+"/GUI/Main-GUI/";
-	wpath = wpath ? Platform.helpDir.asRelativePath;
-	wpath= wpath +/+"/GUI/Main-GUI/";
-
-	tfile=File(path+/+"StubTemplate.html","r");  // read the html template file
-	template=tfile.readAllString;
-	tfile.close;
-
-	classesArray = classesArray ?  ViewRedirect.allSubclasses;
-
-	classesArray.do {arg class;
-		var file, name, string, links="";
-
-		(wpath+/+class.name.asString++".html").postln;
-
-		file=File(wpath+/+class.name.asString++".html", "w"); //create the stub file
-
-		GUI.schemes.do{arg scheme;  // for each registerd scheme
-			var nm, helpFilePath="";
-			try{  // if this fails, then there is no gui class in the kit for this redirect.
-
-				nm=scheme.perform(class.key).name.asString;  //Get the kit-specific class name
-
-				{
-					helpFilePath=nm.findHelpFile;
-					if ( relativeLinks.not, {
-						helpFilePath = "file://" ++ helpFilePath;
-					},{
-						helpFilePath = helpFilePath.asRelativePath(Platform.helpDir+/+"/GUI/Main-GUI");
-
-					});
-				}.try({helpFilePath=nm++".html"});
-
-				//if you can't find the helpfile path, then just create a file name
-
-				links=links++(("<p class=\"p1\"><b>%:<span class=\"Apple-tab-span\">     </span>"
-					 ++"</b> <a href=\"%\">%</a></p>\n<br>\n")
-					.format(scheme ,helpFilePath,nm)); // create the html link
-			};
-		};
-
-		name=class.asString;
-		//name[0]=name[0].toUpper; // The class name from the key
-
-		string=template.replace("%%",links); //Insert the list of  links into the template
-
-		string=string.replace("%",name); // Insert the class name into the template
-
-		file.write(string);
-		file.close;
-
-	}
-
-
-}
-
-
-}
diff --git a/SCClassLibrary/Common/GUI/PlusGUI/Math/PlotView.sc b/SCClassLibrary/Common/GUI/PlusGUI/Math/PlotView.sc
index 6224a6d..90875be 100644
--- a/SCClassLibrary/Common/GUI/PlusGUI/Math/PlotView.sc
+++ b/SCClassLibrary/Common/GUI/PlusGUI/Math/PlotView.sc
@@ -534,7 +534,7 @@ Plotter {
 		.focusColor_(Color.clear)
 		.font_(font)
 		.resize_(3)
-		.action_ { this.class.openHelpFile };
+		.action_ { this.class.help };
 
 		^bounds;
 	}
@@ -737,24 +737,35 @@ Plotter {
 
 + ArrayedCollection {
 	plot { |name, bounds, discrete=false, numChannels, minval, maxval|
-		var array = this.as(Array), plotter = Plotter(name, bounds);
+		var array, plotter;
+		array = this.as(Array);
+
+		if(array.maxDepth > 3) {
+			"Cannot currently plot an array with more than 3 dimensions".warn;
+			^nil
+		};
+		plotter = Plotter(name, bounds);
 		if(discrete) { plotter.plotMode = \points };
 
 		numChannels !? { array = array.unlace(numChannels) };
 		array = array.collect {|elem|
 			if (elem.isKindOf(Env)) {
-				elem.asSignal
+				elem.asMultichannelSignal.flop
 			} {
 				elem
 			}
 		};
-		plotter.setValue(array, true, false);
-		if(minval.isNumber && maxval.isNumber,{
-			plotter.specs = [minval,maxval].asSpec
-		},{
-			minval !? { plotter.minval = minval; };
+		plotter.setValue(
+			array,
+			findSpecs: true,
+			refresh: false
+		);
+		if(minval.isNumber && maxval.isNumber) {
+			plotter.specs = [minval, maxval].asSpec
+		} {
+			minval !? { plotter.minval = minval };
 			maxval !? { plotter.maxval = maxval };
-		});
+		};
 		plotter.refresh;
 		^plotter
 	}
@@ -817,17 +828,25 @@ Plotter {
 	plot { |duration = 0.01, server, bounds, minval, maxval|
 		var name = this.asCompileString, plotter;
 		if(name.size > 50 or: { name.includes(Char.nl) }) { name = "function plot" };
-		plotter = [0].plot(name, bounds);
+		plotter = Plotter(name, bounds);
 		server = server ? Server.default;
 		server.waitForBoot {
 			this.loadToFloatArray(duration, server, { |array, buf|
 				var numChan = buf.numChannels;
 				{
 					plotter.domainSpecs = ControlSpec(0, duration, units: "s");
-					minval !? { plotter.minval = minval; };
-					maxval !? { plotter.maxval = maxval };
-					plotter.setValue(array.unlace(buf.numChannels).collect(_.drop(-1)),false,true);
-
+					plotter.setValue(
+						array.unlace(buf.numChannels).collect(_.drop(-1)),
+						findSpecs: true,
+						refresh: false
+					);
+					if(minval.isNumber && maxval.isNumber,{
+						plotter.specs = [minval, maxval].asSpec
+					},{
+						minval !? { plotter.minval = minval };
+						maxval !? { plotter.maxval = maxval };
+					});
+					plotter.refresh;
 				}.defer
 			})
 		};
@@ -851,14 +870,19 @@ Plotter {
 		);
 		this.loadToFloatArray(action: { |array, buf|
 			{
+				plotter.domainSpecs = ControlSpec(0.0, buf.numFrames, units:"frames");
+				plotter.setValue(
+					array.unlace(buf.numChannels),
+					findSpecs: true,
+					refresh: false
+				);
 				if(minval.isNumber && maxval.isNumber,{
-					plotter.specs = [minval,maxval].asSpec
+					plotter.specs = [minval, maxval].asSpec
 				},{
-					minval !? { plotter.minval = minval; };
+					minval !? { plotter.minval = minval };
 					maxval !? { plotter.maxval = maxval };
 				});
-				plotter.domainSpecs = ControlSpec(0.0,buf.numFrames,units:"frames");
-				plotter.setValue(array.unlace(buf.numChannels),false,true);
+				plotter.refresh;
 			}.defer
 		});
 		^plotter
@@ -866,10 +890,17 @@ Plotter {
 }
 
 + Env {
-	plot { |size = 400, bounds, minval, maxval|
-		var plotter = this.asSignal(size)
-			.plot("envelope plot", bounds, minval: minval, maxval: maxval);
-		plotter.domainSpecs = ControlSpec(0, this.times.sum, units: "s");
+	plot { |size = 400, bounds, minval, maxval, name|
+		var plotLabel = if (name.isNil) { "envelope plot" } { name };
+		var plotter = [this.asMultichannelSignal(size).flop]
+			.plot(name, bounds, minval: minval, maxval: maxval);
+
+		var duration     = this.duration.asArray;
+		var channelCount = duration.size;
+
+		var totalDuration = if (channelCount == 1) { duration } { duration.maxItem ! channelCount };
+
+		plotter.domainSpecs = totalDuration.collect(ControlSpec(0, _, units: "s"));
 		plotter.setProperties(\labelX, "time");
 		plotter.refresh;
 		^plotter
diff --git a/SCClassLibrary/Common/GUI/ServerMeter.sc b/SCClassLibrary/Common/GUI/ServerMeter.sc
index 8a44547..c13b003 100644
--- a/SCClassLibrary/Common/GUI/ServerMeter.sc
+++ b/SCClassLibrary/Common/GUI/ServerMeter.sc
@@ -4,7 +4,7 @@ ServerMeterView{
 	classvar serverCleanupFuncs;
 
 	var <view;
-	var inresp, outresp, synthFunc, responderFunc, server, numIns, numOuts, inmeters, outmeters;
+	var inresp, outresp, synthFunc, responderFunc, server, numIns, numOuts, inmeters, outmeters, startResponderFunc;
 
 	*new{ |aserver,parent,leftUp,numIns,numOuts|
 		^super.new.init(aserver,parent,leftUp,numIns,numOuts)
@@ -27,14 +27,17 @@ ServerMeterView{
 		leftUp = leftUp ? (0 at 0);
 
 		view = CompositeView(parent, Rect(leftUp.x,leftUp.y, viewWidth, height) );
-		try { view.palette = \QPalette.asClass.new.windowText_(Color.grey(0.6)) };
 		view.onClose_({ this.stop });
 		innerView = CompositeView(view, Rect(10,25, viewWidth, height) );
 		innerView.addFlowLayout(0 at 0, gapWidth at gapWidth);
 
 		// dB scale
 		UserView(innerView, Rect(0,0,meterWidth,195)).drawFunc_({
-			Pen.color = Color.white;
+			try {
+				Pen.color = \QPalette.asClass.new.windowText;
+			} {
+				Pen.color = Color.white;
+			};
 			Pen.font = Font.sansSerif(10).boldVariant;
 			Pen.stringCenteredIn("0", Rect(0, 0, meterWidth, 12));
 			Pen.stringCenteredIn("-80", Rect(0, 170, meterWidth, 12));
@@ -44,27 +47,28 @@ ServerMeterView{
 			// ins
 			StaticText(view, Rect(10, 5, 100, 15))
 				.font_(Font.sansSerif(10).boldVariant)
-				.stringColor_(Color.white)
 				.string_("Inputs");
 			inmeters = Array.fill( numIns, { arg i;
 				var comp;
 				comp = CompositeView(innerView, Rect(0,0,meterWidth,195)).resize_(5);
 				StaticText(comp, Rect(0, 180, meterWidth, 15))
 					.font_(Font.sansSerif(9).boldVariant)
-					.stringColor_(Color.white)
 					.string_(i.asString);
 				levelIndic = LevelIndicator( comp, Rect(0,0,meterWidth,180) ).warning_(0.9).critical_(1.0)
 					.drawsPeak_(true)
 					.numTicks_(9)
 					.numMajorTicks_(3);
-				try{ levelIndic.background = Color.grey(0.3) };
 			});
 		});
 
 		if((numIns > 0) && (numOuts > 0)){
 			// divider
 			UserView(innerView, Rect(0,0,meterWidth,180)).drawFunc_({
-				Pen.color = Color.white;
+				try {
+					Pen.color = \QPalette.asClass.new.windowText;
+				} {
+					Pen.color = Color.white;
+				};
 				Pen.line(((meterWidth + gapWidth) * 0.5)@0, ((meterWidth + gapWidth) * 0.5)@180);
 				Pen.stroke;
 			});
@@ -74,26 +78,23 @@ ServerMeterView{
 		(numOuts > 0).if({
 			StaticText(view, Rect(10 + if(numIns > 0 , ((numIns + 2) * (meterWidth + gapWidth)), 0), 5, 100, 15))
 				.font_(Font.sansSerif(10).boldVariant)
-				.stringColor_(Color.white)
 				.string_("Outputs");
 			outmeters = Array.fill( numOuts, { arg i;
 				var comp;
 				comp = CompositeView(innerView, Rect(0,0,meterWidth,195));
 				StaticText(comp, Rect(0, 180, meterWidth, 15))
 					.font_(Font.sansSerif(9).boldVariant)
-					.stringColor_(Color.white)
 					.string_(i.asString);
 				levelIndic = LevelIndicator( comp, Rect(0,0,meterWidth,180) ).warning_(0.9).critical_(1.0)
 					.drawsPeak_(true)
 					.numTicks_(9)
 					.numMajorTicks_(3);
-				try{ levelIndic.background = Color.grey(0.3) }
 			});
 		});
 
 		this.setSynthFunc(inmeters, outmeters);
+		startResponderFunc = {this.startResponders};
 		this.start;
-
 	}
 
 	setSynthFunc{
@@ -151,7 +152,7 @@ ServerMeterView{
 							var rmsValue  = msg.at(baseIndex + 1);
 							var meter = inmeters.at(channel);
 							if (meter.isClosed.not) {
-								meter.peakLevel = peakLevel.ampdb.linlin(dBLow, 0, 0, 1);
+								meter.peakLevel = peakLevel.ampdb.linlin(dBLow, 0, 0, 1, \min);
 								meter.value = rmsValue.ampdb.linlin(dBLow, 0, 0, 1);
 							}
 						}
@@ -173,7 +174,7 @@ ServerMeterView{
 							var rmsValue  = msg.at(baseIndex + 1);
 							var meter = outmeters.at(channel);
 							if (meter.isClosed.not) {
-								meter.peakLevel = peakLevel.ampdb.linlin(dBLow, 0, 0, 1);
+								meter.peakLevel = peakLevel.ampdb.linlin(dBLow, 0, 0, 1, \min);
 								meter.value = rmsValue.ampdb.linlin(dBLow, 0, 0, 1);
 							}
 						}
@@ -185,7 +186,7 @@ ServerMeterView{
 		});
 	}
 
-	start{
+	start {
 		if(serverMeterViews.isNil){
 			serverMeterViews = IdentityDictionary.new;
 		};
@@ -197,19 +198,24 @@ ServerMeterView{
 			if(server.serverRunning, synthFunc); // otherwise starts when booted
 		};
 		serverMeterViews[server].add(this);
-		server.doWhenBooted({this.startResponders});
+		if (server.serverRunning) {
+			this.startResponders
+		} {
+			ServerBoot.add (startResponderFunc, server)
+		}
 	}
 
 	stop{
 		serverMeterViews[server].remove(this);
-
-		if(serverMeterViews[server].size == 0){
+		if(serverMeterViews[server].size == 0 and: (serverCleanupFuncs.notNil)) {
 			serverCleanupFuncs[server].value;
 			serverCleanupFuncs.removeAt(server);
 		};
 
 		(numIns > 0).if({ inresp.free; });
 		(numOuts > 0).if({ outresp.free; });
+
+		ServerBoot.remove(startResponderFunc, server)
 	}
 
 	remove{
@@ -231,7 +237,6 @@ ServerMeter{
 		window = Window.new(server.name ++ " levels (dBFS)",
 							Rect(5, 305, ServerMeterView.getWidth(numIns,numOuts), ServerMeterView.height),
 							false);
-		window.view.background = Color.grey(0.4);
 
 		meterView = ServerMeterView(server, window, 0 at 0, numIns, numOuts);
 		meterView.view.keyDownAction_({ arg view, char, modifiers;
diff --git a/SCClassLibrary/Common/Geometry/Point.sc b/SCClassLibrary/Common/Geometry/Point.sc
index 1d44e8a..adf31c9 100644
--- a/SCClassLibrary/Common/Geometry/Point.sc
+++ b/SCClassLibrary/Common/Geometry/Point.sc
@@ -18,10 +18,11 @@ Point {
 	asArray { ^[this.x, this.y] }
 
 	== { arg aPoint;
-		^aPoint respondsTo: #[\x, \y] and: { x == aPoint.x and: { y == aPoint.y } }
+		^this.compareObject(aPoint, #[\x, \y])
+	}
+	hash {
+		^this.instVarHash(#[\x, \y])
 	}
-	hash { ^ (x.hash << 1) bitXor: y.hash }
-
 	performBinaryOpOnSomething { |aSelector, thing, adverb|
 		^thing.asPoint.perform(aSelector, this, adverb)
 	}
diff --git a/SCClassLibrary/Common/Geometry/Rect.sc b/SCClassLibrary/Common/Geometry/Rect.sc
index 96d628b..439406e 100644
--- a/SCClassLibrary/Common/Geometry/Rect.sc
+++ b/SCClassLibrary/Common/Geometry/Rect.sc
@@ -146,13 +146,11 @@ Rect {
 	asRect { ^this }
 	bounds { ^Rect.new(left, top, width, height) }
 	== { arg that;
-		^that respondsTo: #[\left, \top, \width, \height]
-			and: { left == that.left
-			and: { top == that.top
-			and: { width == that.width
-			and: { height == that.height }}}}
+		^this.compareObject(that, #[\left, \top, \width, \height])
+	}
+	hash {
+		^this.instVarHash(#[\left, \top, \width, \height])
 	}
-	hash { ^left.hash bitXor: top.hash bitXor: width.hash bitXor: height.hash }
 
 	// deprec
 	layout { arg argBounds;
diff --git a/SCClassLibrary/Common/Math/Complex.sc b/SCClassLibrary/Common/Math/Complex.sc
index ba30313..1d0389f 100644
--- a/SCClassLibrary/Common/Math/Complex.sc
+++ b/SCClassLibrary/Common/Math/Complex.sc
@@ -61,7 +61,7 @@ Complex : Number {
 		});
 	}
 	hash {
-		^real.hash bitXor: imag.hash
+		^real.hash << 1 bitXor: imag.hash
 	}
 
 	// double dispatch
@@ -83,7 +83,7 @@ Complex : Number {
 	
 	squared { ^this * this }
 	cubed { ^this * this * this }
-	exp { ^exp(real) * Complex.new(cos(imag), sin(real)) }
+	exp { ^exp(real) * Complex.new(cos(imag), sin(imag)) }
 	
 	pow { arg aNumber; // return(this ** aNumber)
 		
diff --git a/SCClassLibrary/Common/Math/SimpleNumber.sc b/SCClassLibrary/Common/Math/SimpleNumber.sc
index b797b27..c5e4acd 100644
--- a/SCClassLibrary/Common/Math/SimpleNumber.sc
+++ b/SCClassLibrary/Common/Math/SimpleNumber.sc
@@ -354,14 +354,25 @@ SimpleNumber : Number {
 	rate { ^'scalar' } // scalarRate constant
 	asAudioRateInput { ^if(this == 0) { Silent.ar } { DC.ar(this) } }
 
+	madd   { arg mul, add; ^(this * mul) + add; }
+
+	lag    { ^this }
+	lag2   { ^this }
+	lag3   { ^this }
+	lagud  { ^this }
+	lag2ud { ^this }
+	lag3ud { ^this }
+	varlag { ^this }
+	slew   { ^this }
+
 	// support for writing synth defs
 	writeInputSpec { arg file, synth;
 		var constIndex = synth.constants.at(this.asFloat);
 		if (constIndex.isNil) {
-			Error("SimpleNumber-writeInputSpec constant not found: " ++ this.asFloat).throw;		};
-		//[\inpspc, this.class.name, constIndex, this].postln;
-		file.putInt16(-1);
-		file.putInt16(constIndex);
+			Error("SimpleNumber-writeInputSpec constant not found: " ++ this.asFloat).throw;
+		};
+		file.putInt32(-1);
+		file.putInt32(constIndex);
 	}
 
 	series { arg second, last;
diff --git a/SCClassLibrary/Common/Quarks/Quark.sc b/SCClassLibrary/Common/Quarks/Quark.sc
index cbf2c1c..6c7d603 100644
--- a/SCClassLibrary/Common/Quarks/Quark.sc
+++ b/SCClassLibrary/Common/Quarks/Quark.sc
@@ -131,7 +131,7 @@ Quark
 		};
 		^deps;
 	}
-	openHelpFile {
+	help {
 		var p = info.schelp;
 		if(p.notNil) {
 			HelpBrowser.openHelpFor(p);
@@ -143,14 +143,7 @@ Quark
 		};
 		p = info.helpdoc;
 		if(p.notNil) {
-			case
-				{p.endsWith(".html")} {
-					HelpBrowser.goTo(HelpBrowser.getOldWrapUrl(parent.local.path +/+ path +/+ p))
-				}
-				{p.endsWith(".scd") or: {p.endsWith(".txt")}} {
-					HelpBrowser.goTo(parent.local.path +/+ path +/+ p)
-				}
-				{ "Uknown help file type: %".format(p).warn };
+			HelpBrowser.goTo(URI.fromLocalPath(parent.local.path +/+ path +/+ p).asString)
 			^this
 		};
 		HelpBrowser.openBrowsePage("Quarks>"++name);
@@ -243,7 +236,7 @@ QuarkView {
 		browseHelpButton = GUI.button.new(parent, infoBounds)
 			.font_( Font.sansSerif( 10 ))
 			.states_([["help"]])
-			.action_({ quark.openHelpFile });
+			.action_({ quark.help });
 
 		if(quark.isLocal) {
 			srcButton = GUI.button.new(parent, sourceBounds)
@@ -314,7 +307,7 @@ QuarkView {
 		GUI.button.new(window, Rect(125, 176, 150, 20))
 			.resize_(8)
 			.states_([["Open quark help"]])
-			.action_({ quark.openHelpFile });
+			.action_({ quark.help });
 	}
 	remove {
 		[installButton, nameView, infoButton, srcButton].do(_.remove);
diff --git a/SCClassLibrary/Common/Quarks/Quarks.sc b/SCClassLibrary/Common/Quarks/Quarks.sc
index 092a50a..8a097e5 100644
--- a/SCClassLibrary/Common/Quarks/Quarks.sc
+++ b/SCClassLibrary/Common/Quarks/Quarks.sc
@@ -235,16 +235,18 @@ Quarks
 
 	help { |name|
 		var q;
-
-		q = local.findQuark(name);
-		if(q.isNil,{
-			Error(
-				name.asString +
-				"not found in local quarks.  Not yet downloaded from the repository ?"
-			).throw;
-		});
-
-		q.openHelpFile;
+		if(name.isNil){
+			"Quarks".help
+		}{
+			q = local.findQuark(name);
+			if(q.isNil,{
+				Error(
+					name.asString +
+					"not found in local quarks.  Not yet downloaded from the repository ?"
+				).throw;
+			});
+			q.help;
+		}
 	}
 
 	name { ^local.name }
@@ -615,7 +617,7 @@ QuarksViewQt {
 			.states_([["Help"]])
 			.toolTip_("Show help for this Quark")
 			.action_({
-				curQuark.openHelpFile
+				curQuark.help
 			});
 
 		btnQuarkOpen = Button()
@@ -636,7 +638,7 @@ QuarksViewQt {
 						cls[item.index].browse;
 					}),
 					Button().states_([["Help"]]).action_({
-						cls[item.index].openHelpFile;
+						cls[item.index].help;
 					}),
 					Button().states_([["Source"]]).action_({
 						cls[item.index].openCodeFile;
@@ -672,7 +674,7 @@ QuarksViewQt {
 						mets[item.index].ownerClass.browse;
 					}),
 					Button().states_([["Help"]]).action_({
-						mets[item.index].openHelpFile;
+						mets[item.index].help;
 					}),
 					Button().states_([["Source"]]).action_({
 						mets[item.index].openCodeFile;
diff --git a/SCClassLibrary/Common/Streams/FilterPatterns.sc b/SCClassLibrary/Common/Streams/FilterPatterns.sc
index 32862dd..1f3fba4 100644
--- a/SCClassLibrary/Common/Streams/FilterPatterns.sc
+++ b/SCClassLibrary/Common/Streams/FilterPatterns.sc
@@ -115,8 +115,8 @@ Pfset : FuncFilterPattern {
 	}
 	embedInStream { arg inevent;
 		var event, cleanup = EventStreamCleanup.new;
-			// cleanup should actually not be passed in
-			// but retaining (temporarily) for backward compatibility
+		// cleanup should actually not be passed in
+		// but retaining (temporarily) for backward compatibility
 		var envir = Event.make({ func.value(cleanup) });
 		var stream = pattern.asStream;
 		var once = true;
@@ -153,24 +153,24 @@ Psetpre : FilterPattern {
 		^event[name] = val;
 	}
 	embedInStream { arg event;
+		var cleanup = EventStreamCleanup.new;
 		var val, inevent, filteredEvent;
 		var valStream = value.asStream;
 		var evtStream = pattern.asStream;
 
 		loop {
 			val = valStream.next(event);
-//			if (val.isNil or: event.isNil) { ^event };
-//			event = this.filterEvent(event, val);
 			if (val.isNil or: event.isNil) {
-				filteredEvent = nil;
+				^cleanup.exit(event)
 			}{
 				event = event.copy;
 				filteredEvent = this.filterEvent(event, val);
 			};
 			inevent = evtStream.next(filteredEvent);
-			if (inevent.isNil) { ^event };
+			if (inevent.isNil) { ^cleanup.exit(event) };
+			cleanup.update(inevent);
 			event = yield(inevent);
-			if(event.isNil) { nil.yield; ^inevent }
+			// if(event.isNil) { nil.yield; ^inevent }
 		}
 	}
 }
@@ -197,18 +197,20 @@ Pset : FilterPattern {
 		^event[name] = val;
 	}
 	embedInStream { arg event;
+		var cleanup = EventStreamCleanup.new;
 		var val, inEvent;
 		var valStream = value.asStream;
 		var evtStream = pattern.asStream;
 
 		loop {
 			inEvent = evtStream.next(event);
-			if (event.isNil) { ^nil.yield };
-			if (inEvent.isNil) { ^event };
+			// if (event.isNil) { ^nil.yield };
+			if (inEvent.isNil) { ^cleanup.exit(event) };
 			val = valStream.next(inEvent);
-			if (val.isNil) { ^event };
+			if (val.isNil) { ^cleanup.exit(event) };
 
 			this.filterEvent(inEvent, val);
+			cleanup.update(inEvent);
 			event = inEvent.yield;
 		}
 	}
@@ -271,6 +273,7 @@ Pstretch : FilterPattern {
 	}
 	storeArgs { ^[value,pattern] }
 	embedInStream {  arg event;
+		var cleanup = EventStreamCleanup.new;
 		var inevent;
 		var val, delta;
 		var valStream = value.asStream;
@@ -278,15 +281,16 @@ Pstretch : FilterPattern {
 
 		loop {
 			inevent = evtStream.next(event).asEvent;
-			if (inevent.isNil) { ^event };
+			if (inevent.isNil) { ^cleanup.exit(event) };
 			val = valStream.next(inevent);
-			if (val.isNil) { ^event };
+			if (val.isNil) { ^cleanup.exit(event) };
 
 			delta = event[\delta];
 			if (delta.notNil) {
 				inevent[\delta] = delta * val;
 			};
 			inevent[\dur] = inevent[\dur] * val;
+			cleanup.update(inevent);
 			event = yield(inevent);
 		}
 	}
@@ -306,7 +310,7 @@ Pstretchp : Pstretch {
 			evtStream = pattern.asStream;
 			while {
 				inevent = evtStream.next(event);
-				if(event.isNil) { ^nil.yield };
+				// if(event.isNil) { ^nil.yield };
 				inevent.notNil
 			} {
 				delta = inevent[\delta];
@@ -342,7 +346,7 @@ Pplayer : FilterPattern {
 			event = yield(inevent);
 		}
 	}
-		// backward compatibility: unnecessary var playerPattern was removed
+	// backward compatibility: unnecessary var playerPattern was removed
 	playerPattern { ^pattern }
 	playerPattern_ { |playerPattern| pattern = playerPattern }
 }
@@ -422,7 +426,7 @@ Pfindur : FilterPattern {
 
 	embedInStream { arg event, cleanup;
 		var item, delta, elapsed = 0.0, nextElapsed, inevent,
-			localdur = dur.value(event);
+		localdur = dur.value(event);
 		var stream = pattern.asStream;
 
 		cleanup ?? { cleanup = EventStreamCleanup.new };
@@ -495,7 +499,7 @@ Pconst : FilterPattern {
 
 	embedInStream { arg inval;
 		var delta, elapsed = 0.0, nextElapsed, str=pattern.asStream,
-			localSum = sum.value(inval);
+		localSum = sum.value(inval);
 		loop ({
 			delta = str.next(inval);
 			if(delta.isNil) {
@@ -544,8 +548,9 @@ Pbindf : FilterPattern {
 	}
 	storeArgs { ^[pattern] ++ patternpairs }
 	embedInStream { arg event;
+		var cleanup = EventStreamCleanup.new;
 		var eventStream;
-		var inevent;
+		var outevent;
 		var streampairs = patternpairs.copy;
 		var endval = streampairs.size - 1;
 
@@ -555,33 +560,30 @@ Pbindf : FilterPattern {
 		eventStream = pattern.asStream;
 
 		loop{
-			if(event.isNil) {
-				eventStream.next(nil);
-				^nil.yield
-			};
-			inevent = eventStream.next(event);
+			outevent = eventStream.next(event);
+			if (outevent.isNil) { ^cleanup.exit(event) };
 
-			if (inevent.isNil) { ^event };
 			forBy (0, endval, 2) { arg i;
 				var name = streampairs[i];
 				var stream = streampairs[i+1];
-				var streamout = stream.next(inevent);
+				var streamout = stream.next(outevent);
 
-				if (streamout.isNil) { ^event };
+				if (streamout.isNil) { ^cleanup.exit(event) };
 				if (name.isSequenceableCollection) {
-				if (name.size > streamout.size) {
+					if (name.size > streamout.size) {
 						("the pattern is not providing enough values to assign to the key set:" + name).warn;
-						^inevent
+						^outevent
 					};
 					name.do { arg key, i;
-						inevent.put(key, streamout[i]);
+						outevent.put(key, streamout[i]);
 					};
 				}{
-					inevent.put(name, streamout);
+					outevent.put(name, streamout);
 				};
 
 			};
-			event = yield(inevent);
+			cleanup.update(outevent);
+			event = yield(outevent);
 		};
 	}
 }
@@ -622,17 +624,17 @@ PdurStutter : Pstutter { // float streams
 		while({
 			(dur = durs.next(event)).notNil
 			and: {(stut = stutts.next(event)).notNil}
-		},{
-			if(stut > 0,{ // 0 skips it
-				if(stut > 1,{
-					dur = dur / stut;
-					stut.do({
-						event = dur.yield;
+			},{
+				if(stut > 0,{ // 0 skips it
+					if(stut > 1,{
+						dur = dur / stut;
+						stut.do({
+							event = dur.yield;
+						})
+						},{
+							event = dur.yield
 					})
-				},{
-					event = dur.yield
 				})
-			})
 		})
 		^event;
 	}
@@ -692,8 +694,8 @@ Pwrap : FilterPattern {
 			hiVal = hiStr.next(event);
 			next = stream.next(event);
 			next.notNil and: { loVal.notNil } and: { hiVal.notNil }
-		},{
-			event = next.wrap(loVal, hiVal).yield
+			},{
+				event = next.wrap(loVal, hiVal).yield
 		});
 		^event;
 	}
@@ -715,12 +717,12 @@ Ptrace : FilterPattern {
 		} {
 			func = { |val, item, prefix|
 				if(val.isKindOf(Function) and: { item.isKindOf(Environment) })
-					{
-						val = item.use { val.value };
-						printStream << prefix << val << "\t(printed function value)\n";
-					} {
-						printStream << prefix << val << Char.nl;
-					};
+				{
+					val = item.use { val.value };
+					printStream << prefix << val << "\t(printed function value)\n";
+				} {
+					printStream << prefix << val << Char.nl;
+				};
 			}.flop;
 			collected = pattern.collect {|item|
 				var val = item.atAll(key.asArray).unbubble;
diff --git a/SCClassLibrary/Common/Streams/ListPatterns.sc b/SCClassLibrary/Common/Streams/ListPatterns.sc
index 820c14c..d4b7298 100644
--- a/SCClassLibrary/Common/Streams/ListPatterns.sc
+++ b/SCClassLibrary/Common/Streams/ListPatterns.sc
@@ -224,14 +224,16 @@ Pswitch : Pattern {
 
 Pswitch1 : Pswitch {
 	embedInStream { arg inval;
+		var cleanup = EventStreamCleanup.new;
 		var index, outval;
 		var streamList = list.collect({ arg pattern; pattern.asStream; });
 		var indexStream = which.asStream;
 
 		loop {
-			if ((index = indexStream.next(inval)).isNil) { ^inval };
+			if ((index = indexStream.next(inval)).isNil) { ^cleanup.exit(inval) };
 			outval = streamList.wrapAt(index.asInteger).next(inval);
-			if (outval.isNil) { ^inval };
+			if (outval.isNil) { ^cleanup.exit(inval) };
+			cleanup.update(outval);
 			inval = outval.yield;
 		};
 	}
diff --git a/SCClassLibrary/Common/Streams/PatternCategories.sc b/SCClassLibrary/Common/Streams/PatternCategories.sc
deleted file mode 100644
index 424d8ae..0000000
--- a/SCClassLibrary/Common/Streams/PatternCategories.sc
+++ /dev/null
@@ -1,142 +0,0 @@
-+ FilterPattern { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
-+ ListPattern { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-
-
-+ Pclutch { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-+ Pn { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-+ Pgate { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-+ Pstutter { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-+ PdurStutter { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-+ Pfin { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-+ Pconst { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-+ Pfindur { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-+ Psync { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
-
-+ Ptime { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
-+ Pflow { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
-+ Pstep { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
-+ Pstep2add { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
-+ Pstep3add { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
-+ PstepNadd { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
-+ PstepNfunc { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
-+ Pseg { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
-
-+ Pbindf { *categories{ ^ #["Streams-Patterns-Events>Patterns>Composition"]  }}
-+ Pchain { *categories{ ^ #["Streams-Patterns-Events>Patterns>Composition"]  }}
-
-+ Ppar { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
-+ Ptpar { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
-+ Pgpar { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
-+ Pgtpar { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
-
-+ Spawner { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
-+ Pspawner { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
-+ Pspawn { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
-
-+ Pif { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
-+ Pseed { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
-+ Pprotect { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
-+ Ptrace { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
-+ Pwhile { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
-
-+ Pbus { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
-+ Pgroup { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
-
-+ Pfx { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
-+ Pfxb { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
-
-+ Pproto { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
-
-+ Pkey { *categories{ ^ #["Streams-Patterns-Events>Patterns>Data Sharing"]  }}
-+ Penvir { *categories{ ^ #["Streams-Patterns-Events>Patterns>Data Sharing"]  }}
-+ Pfset { *categories{ ^ #["Streams-Patterns-Events>Patterns>Data Sharing"]  }}
-+ Plambda { *categories{ ^ #["Streams-Patterns-Events>Patterns>Data Sharing"]  }}
-
-+ Pset { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
-+ Psetp { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
-+ Ppatmod { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
-
-+ Pcollect { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
-
-
-+ Padd { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-+ Paddp { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-+ Paddpre { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-
-
-+ Punop { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-+ Pbinop { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-+ Pnaryop { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-
-+ Pavaroh { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-+ PdegreeToKey { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-+ Pdiff { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-+ Prorate { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
-
-+ Pseq { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Prand { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Pxrand { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Pshuf { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Pwrand { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-
-+ Pseries { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Pgeom { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-
-+ Pwhite { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Pexprand { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Pbrown { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-
-+ Pfunc { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
-+ Pfuncn { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
-+ Proutine { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
-+ Plazy { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
-+ PlazyEnvir { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
-+ PlazyEnvirN { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
-+ Prout { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
-
-
-+ Pser { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Pslide { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Pwalk { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Place { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Ppatlace { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-+ Ptuple { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
-
-+ Pgbrown { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Pbeta { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Pcauchy { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Pgauss { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Phprand { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Plprand { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Pmeanrand { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Ppoisson { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-+ Pprob { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
-
-//+ DebugPbind { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
-
-+ Pevent { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
-
-+ Pbind { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
-+ Pmono { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
-+ PmonoArtic { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
-
-+ Pindex { *categories{ ^ #["Streams-Patterns-Events>Patterns>List>Indexing"]  }}
-+ Pswitch { *categories{ ^ #["Streams-Patterns-Events>Patterns>List>Indexing"]  }}
-+ Pfsm { *categories{ ^ #["Streams-Patterns-Events>Patterns>List>Indexing"]  }}
-+ Pdfsm { *categories{ ^ #["Streams-Patterns-Events>Patterns>List>Indexing"]  }}
-
-
-
-+ PatternProxy { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
-+ Psym { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
-+ Pdef { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
-+ Pdefn { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
-+ Pbindef { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
-+ PbindProxy { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
-
-+ Pdict { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
-
-
-+ PhidKey { *categories{ ^ #["Streams-Patterns-Events>Patterns>User Input"]  }}
-+ PhidSlot { *categories{ ^ #["Streams-Patterns-Events>Patterns>User Input"]  }}
-+ Phid { *categories{ ^ #["Streams-Patterns-Events>Patterns>User Input"]  }}
diff --git a/SCClassLibrary/Common/Streams/Prewrite.sc b/SCClassLibrary/Common/Streams/Prewrite.sc
index 2387842..430413f 100644
--- a/SCClassLibrary/Common/Streams/Prewrite.sc
+++ b/SCClassLibrary/Common/Streams/Prewrite.sc
@@ -1,6 +1,6 @@
 Prewrite : FilterPattern {
-	var <>dict, <>levels=1;
-	*new { arg pattern, dict, levels;
+	var <>dict, <>levels;
+	*new { arg pattern, dict, levels=1;
 		^super.new(pattern).dict_(dict).levels_(levels)
 	}
 	storeArgs { ^[ pattern, dict, levels ] }
diff --git a/SCClassLibrary/Common/Streams/Pspawner.sc b/SCClassLibrary/Common/Streams/Pspawner.sc
index 5652fb0..2bc0c30 100644
--- a/SCClassLibrary/Common/Streams/Pspawner.sc
+++ b/SCClassLibrary/Common/Streams/Pspawner.sc
@@ -54,11 +54,12 @@ Spawner : Pattern {
 				if (nexttime.notNil, {
 					// that child stream ended, so rest until next one
 					outevent = Event.silent(nexttime - now, event);
+					cleanup.update(outevent);
 					event = outevent.yield;
 					now = nexttime;
 				},{
 					priorityQ.clear;
-					cleanup.exit(event);
+					^cleanup.exit(event);
 				});
 			},{
 				cleanup.update(outevent);
diff --git a/SCClassLibrary/Common/Streams/Stream.sc b/SCClassLibrary/Common/Streams/Stream.sc
index b9ef9fe..fddfe13 100644
--- a/SCClassLibrary/Common/Streams/Stream.sc
+++ b/SCClassLibrary/Common/Streams/Stream.sc
@@ -2,6 +2,7 @@ Stream : AbstractFunction {
 	// 'reset' is defined in class Object to do nothing.
 	// reading
 
+	parent { ^nil }
 	next { ^this.subclassResponsibility(thisMethod) }
 	iter { ^this }
 
@@ -333,7 +334,7 @@ PauseStream : Stream
 		if (doReset, { this.reset });
 		clock = argClock ? clock ? TempoClock.default;
 		streamHasEnded = false;
-		stream = originalStream;
+		this.refresh; //stream = originalStream;
 		isWaiting = true;	// make sure that accidental play/stop/play sequences
 						// don't cause memory leaks
 		era = CmdPeriod.era;
@@ -378,7 +379,7 @@ PauseStream : Stream
 	}
 
 	refresh {
-		stream = originalStream
+		stream = originalStream.threadPlayer_(this)
 	}
 
 	start { arg argClock, quant;
@@ -386,7 +387,8 @@ PauseStream : Stream
 	}
 
 	stream_ { arg argStream;
-		originalStream = argStream;
+		originalStream.threadPlayer_(nil);  // not owned any more
+		originalStream = argStream.threadPlayer_(this);
 		if (stream.notNil, { stream = argStream; streamHasEnded = argStream.isNil; });
 	}
 
@@ -404,6 +406,7 @@ PauseStream : Stream
 		stream.beats = beats;
 		^this.next(beats)
 	}
+	threadPlayer { ^this }
 }
 
 // Task is a PauseStream for wrapping a Routine
diff --git a/SCClassLibrary/DefaultLibrary/Main.sc b/SCClassLibrary/DefaultLibrary/Main.sc
index e5c1cdf..0c13edd 100644
--- a/SCClassLibrary/DefaultLibrary/Main.sc
+++ b/SCClassLibrary/DefaultLibrary/Main.sc
@@ -21,20 +21,21 @@ Main : Process {
 		GUI.fromID( this.platform.defaultGUIScheme );
 		GeneralHID.fromID( this.platform.defaultHIDScheme );
 		this.platform.startup;
-		StartUp.run;
 		openPorts = Set[NetAddr.langPort];
+		StartUp.run;
 
-		("Welcome to SuperCollider" + Main.version
-			++ (Platform.ideName.switch(
-				"scvim", {", type :SChelp for help"},
-				"scel",  {", type ctrl-c ctrl-h for help"},
-				"sced",  {", type ctrl-U for help"},
-				"scapp", {", type cmd-d for help"}
+		("Welcome to SuperCollider %.".format(Main.version)
+			+ (Platform.ideName.switch(
+				"scvim", {"For help type :SChelp."},
+				"scel",  {"For help type C-c C-y."},
+				"sced",  {"For help type ctrl-U."},
+				"scapp", {"For help type cmd-d."},
+				"scqt", {"For help press %.".format(if(this.platform.name==\osx,"Cmd-D","Ctrl-D"))}
 			) ?? {
 				(
-					osx: ", type cmd-d for help",
-					linux: ", for help type ctrl-c ctrl-h (Emacs) or :SChelp (vim) or ctrl-U (sced/gedit)",
-				 	windows: ", press F1 for help",
+					osx: "For help type cmd-d.",
+					linux: "For help type ctrl-c ctrl-h (Emacs) or :SChelp (vim) or ctrl-U (sced/gedit).",
+				 	windows: "For help press F1.",
 					iphone: ""
 				 ).at(platform.name);
 
@@ -100,12 +101,12 @@ Main : Process {
 		if(result, { openPorts = openPorts.add(portNum); });
 		^result;
 	}
-	
+
 	prOpenUDPPort {|portNum|
 		_OpenUDPPort
 		^false
 	}
-	
+
 	newSCWindow {
 		var win, palette;
 		win = SCWindow("construction");
diff --git a/SCClassLibrary/DefaultLibrary/dumpFullInterface.sc b/SCClassLibrary/DefaultLibrary/dumpFullInterface.sc
index 5fcc3e2..f4122ba 100644
--- a/SCClassLibrary/DefaultLibrary/dumpFullInterface.sc
+++ b/SCClassLibrary/DefaultLibrary/dumpFullInterface.sc
@@ -132,7 +132,7 @@
 
 	helpFileForMethod {
 		arg methodSymbol;
-		this.findRespondingMethodFor(methodSymbol).ownerClass.openHelpFile;
+		this.findRespondingMethodFor(methodSymbol).ownerClass.help;
 	}
 
 		// show all subclasses of this class sorted in alpha order (not tree order)
diff --git a/SCClassLibrary/DefaultLibrary/extHelpMethodArgs.sc b/SCClassLibrary/DefaultLibrary/extHelpMethodArgs.sc
deleted file mode 100644
index 66a3e6a..0000000
--- a/SCClassLibrary/DefaultLibrary/extHelpMethodArgs.sc
+++ /dev/null
@@ -1,33 +0,0 @@
-+ Help {
-    *methodArgs {|string|
-        var class, meth, f, m;
-        f = string.findRegexp("(\\w*)\\.(\\w+)").flop[1];
-        if(f.notNil) {#class, meth = f[1..]} {
-            if(string[0].isUpper) {
-                class = string;
-                meth = \new;
-            } {
-                meth = string;
-            }
-        };
-        f = {|m,c|
-            class = (c ?? {m.ownerClass}).name;
-            class = if(class.isMetaClassName) {class.asString[5..]++" *"} {class.asString++" -"};
-            class++m.name++" ("++m.argNames[1..].collect {|n,i|
-                n.asString++":"+m.prototypeFrame[i+1];
-            }.join(", ")++")";
-        };
-        class = class.asSymbol.asClass;
-        if(class.notNil) {
-            m = class.class.findRespondingMethodFor(meth.asSymbol);
-            ^if(m.notNil) {f.value(m,class.class)} {""};
-        } {
-            ^Class.allClasses.reject{|c|c.isMetaClass}.collect {|c|
-                c.findMethod(meth.asSymbol);
-            }.reject{|m|m.isNil}.collect {|m|
-                f.value(m);
-            }.join($\n);
-        }
-    }
-}
-
diff --git a/SCClassLibrary/JITLib/GUI/JITGui.sc b/SCClassLibrary/JITLib/GUI/JITGui.sc
index 0ee73a0..645eaef 100644
--- a/SCClassLibrary/JITLib/GUI/JITGui.sc
+++ b/SCClassLibrary/JITLib/GUI/JITGui.sc
@@ -96,6 +96,10 @@ JITGui {
 			nameView.string_(name);
 		};
 	}
+	
+	hasName {
+		^nameView.notNil and: { nameView.string.notNil }
+	}
 
 	getName {	^try { object.key } ? "_anon_" }
 	winName { |name| ^this.class.name ++ $_ ++ (name ?? { this.getName }) }
diff --git a/SCClassLibrary/JITLib/GUI/ProxyMixer.sc b/SCClassLibrary/JITLib/GUI/ProxyMixer.sc
index 63af47c..2ee0e2d 100644
--- a/SCClassLibrary/JITLib/GUI/ProxyMixer.sc
+++ b/SCClassLibrary/JITLib/GUI/ProxyMixer.sc
@@ -281,6 +281,7 @@ ProxyMixer : JITGui {
 		arGuis.do { |gui|
 			var pxIsEdited = gui.object.notNil and: { gui.object == editGui.object };
 			gui.checkUpdate;
+			if(gui.hasName.not) { gui.name = this.proxyspace.findKeyForValue(gui.object) };
 			gui.edBut.value_(pxIsEdited.binaryValue);
 		};
 
@@ -312,6 +313,7 @@ ProxyMixer : JITGui {
 		krGuis.do { |gui|
 			var pxIsEdited = gui.object.notNil and: { gui.object == editGui.object };
 			gui.checkUpdate;
+			if(gui.hasName.not) { gui.name = this.proxyspace.findKeyForValue(gui.object) };
 			gui.edBut.value_(pxIsEdited.binaryValue);
 		};
 
diff --git a/SCClassLibrary/JITLib/Patterns/Fdef.sc b/SCClassLibrary/JITLib/Patterns/Fdef.sc
index 40425c9..e345920 100644
--- a/SCClassLibrary/JITLib/Patterns/Fdef.sc
+++ b/SCClassLibrary/JITLib/Patterns/Fdef.sc
@@ -8,7 +8,10 @@ Maybe : Ref {
 	classvar <>defaultValue=1;
 
 	source { ^value }
-	source_ { arg obj; this.value = obj }
+	source_ { arg obj;
+		this.value = obj;
+		this.changed(\source, obj)
+	}
 
 	clear { value = nil }
 
diff --git a/SCClassLibrary/JITLib/Patterns/Pdef.sc b/SCClassLibrary/JITLib/Patterns/Pdef.sc
index 5984538..54f27dc 100644
--- a/SCClassLibrary/JITLib/Patterns/Pdef.sc
+++ b/SCClassLibrary/JITLib/Patterns/Pdef.sc
@@ -31,6 +31,7 @@ PatternProxy : Pattern {
 		if (obj.isNil) { pat = this.class.default };
 		pattern = pat;
 		source = obj; // keep original here.
+		this.changed(\source, obj);
 	}
 
 	setSourceLikeInPbind { arg obj;
@@ -38,6 +39,7 @@ PatternProxy : Pattern {
 		if (obj.isNil) { pat = this.class.default };
 		pattern = pat.fin(inf);
 		source = obj; // keep original here.
+		this.changed(\source, obj);
 	}
 
 	defaultEvent {
@@ -46,10 +48,10 @@ PatternProxy : Pattern {
 	}
 
 	convertFunction { arg func;
-			^Prout {
-				var inval = func.def.prototypeFrame !? { inval = this.defaultEvent };
-				func.value( inval ).embedInStream(inval)
-			};
+		^Prout {
+			var inval = func.def.prototypeFrame !? { inval = this.defaultEvent };
+			func.value( inval ).embedInStream(inval)
+		}
 	}
 
 	*parallelise { arg list; ^Ptuple(list) }
@@ -66,10 +68,14 @@ PatternProxy : Pattern {
 	set { arg ... args;
 		if(envir.isNil) { this.envir = this.class.event };
 		args.pairsDo { arg key, val; envir.put(key, val) };
+		this.changed(\set, args);
 	}
 
 	unset { arg ... args;
-		if(envir.notNil) { args.do { arg key; envir.removeAt(key) } };
+		if(envir.notNil) {
+			args.do { arg key; envir.removeAt(key) };
+			this.changed(\unset, args);
+		}
 	}
 
 	get { arg key;
@@ -186,7 +192,7 @@ PatternProxy : Pattern {
 	}
 
 	remove {
-		this.class.all.removeAt(this.key);
+		if(this.class.hasGlobalDictionary) { this.class.all.removeAt(this.key) };
 		this.clear;
 	}
 
@@ -198,12 +204,13 @@ PatternProxy : Pattern {
 	// global storage
 
 	*at { arg key;
-		^this.all.at(key)
+		^if(this.hasGlobalDictionary) { this.all.at(key) } { nil }
 	}
 
 	repositoryArgs { ^[this.key, this.source] }
 
 	*postRepository { arg keys, stream;
+		if(this.hasGlobalDictionary.not) { Error("This class has no global repository.").throw };
 		keys = keys ?? { this.all.keys };
 		stream = stream ? Post;
 		keys.do { arg key;
@@ -246,7 +253,7 @@ PatternProxy : Pattern {
 		^event
 	}
 
-	////////////////
+	*hasGlobalDictionary { ^false }
 
 }
 
@@ -270,7 +277,8 @@ Pdefn : PatternProxy {
 
 	map { arg ... args;
 		if(envir.isNil) { this.envir = () };
-		args.pairsDo { |key, name| envir.put(key, Pdefn(name)) }
+		args.pairsDo { |key, name| envir.put(key, Pdefn(name)) };
+		this.changed(\map, args);
 	}
 
 	storeArgs { ^[key] } // assume it was created globally
@@ -279,6 +287,9 @@ Pdefn : PatternProxy {
 		key = argKey;
 		all.put(argKey, this);
 	}
+
+	*hasGlobalDictionary { ^true }
+
 }
 
 
@@ -291,22 +302,23 @@ TaskProxy : PatternProxy {
 	storeArgs { ^[source] }
 
 	source_ { arg obj;
-			pattern = if(obj.isKindOf(Function)) { this.convertFunction(obj) }{ obj };
-			if (obj.isNil) { pattern = this.class.default; source = obj; };
-			this.wakeUp;
-			source = obj;
+		pattern = if(obj.isKindOf(Function)) { this.convertFunction(obj) }{ obj };
+		if (obj.isNil) { pattern = this.class.default; source = obj; };
+		this.wakeUp;
+		source = obj;
+		this.changed(\source, obj);
 	}
 
 	convertFunction { arg func;
-			^Prout { |inevent|
-					var inval = func.def.prototypeFrame !? { this.defaultEvent };
-					if(inevent.isNumber or: {inevent.isNil} or: { inval.isNil }) {
-						inevent = inval
-					} {
-						inevent.copy.parent_(inval);
-					};
-					func.value(inevent)
-			}
+		^Prout { |inevent|
+			var inval = func.def.prototypeFrame !? { this.defaultEvent };
+			if(inevent.isNumber or: {inevent.isNil} or: { inval.isNil }) {
+				inevent = inval
+			} {
+				inevent.copy.parent_(inval);
+			};
+			func.value(inevent)
+		}
 	}
 
 
@@ -352,7 +364,7 @@ TaskProxy : PatternProxy {
 		}
 	}
 	wakeUp {
-			if(this.isPlaying) { this.play(quant:playQuant) }	}
+		if(this.isPlaying) { this.play(quant:playQuant) }	}
 	asProtected {
 		^Pprotect(this, { if(this.player.notNil) { this.player.streamError } })
 	}
@@ -407,6 +419,9 @@ Tdef : TaskProxy {
 		all.put(argKey, this);
 	}
 
+	*hasGlobalDictionary { ^true }
+
+
 }
 
 
@@ -429,6 +444,7 @@ EventPatternProxy : TaskProxy {
 		envir !? { pattern = pattern <> envir };
 		this.wakeUp;
 		source = obj;
+		this.changed(\source, obj);
 	}
 
 	envir_ { arg dict;
@@ -624,6 +640,8 @@ Pdef : EventPatternProxy {
 		all.put(argKey, this);
 	}
 
+	*hasGlobalDictionary { ^true }
+
 	*initClass {
 		var phraseEventFunc;
 
@@ -796,6 +814,10 @@ Pbindef : Pdef {
 	storeArgs { ^[key]++pattern.storeArgs }
 	repositoryArgs { ^this.storeArgs }
 	quant_ { arg val; super.quant = val; source.quant = val }
+
+	*hasGlobalDictionary { ^true }
+
+
 }
 
 
diff --git a/SCClassLibrary/JITLib/ProxySpace/BusPlug.sc b/SCClassLibrary/JITLib/ProxySpace/BusPlug.sc
index 195f9e7..291e42b 100644
--- a/SCClassLibrary/JITLib/ProxySpace/BusPlug.sc
+++ b/SCClassLibrary/JITLib/ProxySpace/BusPlug.sc
@@ -30,6 +30,7 @@ BusPlug : AbstractFunction {
 		this.stop;
 		this.freeBus;
 		monitor = nil;
+		this.changed(\clear);
 	}
 
 
@@ -79,11 +80,11 @@ BusPlug : AbstractFunction {
 	}
 
 	asControlInput {
-			if(this.isPlaying.not) {
-				if(this.isNeutral) { this.defineBus(\control, 1) };
-				this.wakeUp
-			};
-			^this.busArg;
+		if(this.isPlaying.not) {
+			if(this.isNeutral) { this.defineBus(\control, 1) };
+			this.wakeUp
+		};
+		^this.busArg;
 	}
 	asUGenInput {
 		^this.value;
@@ -129,14 +130,14 @@ BusPlug : AbstractFunction {
 
 	// returns false if failed
 	initBus { | rate, numChannels |
-				if(rate.isNil or: { rate === 'scalar' }) { ^true }; // this is no problem
-				if(this.isNeutral) {
-					this.defineBus(rate, numChannels);
-					^true
-				} {
-					numChannels = numChannels ? this.numChannels;
-					^(bus.rate === rate) and: { numChannels <= bus.numChannels }
-				};
+		if(rate.isNil or: { rate === 'scalar' }) { ^true }; // this is no problem
+		if(this.isNeutral) {
+			this.defineBus(rate, numChannels);
+			^true
+		} {
+			numChannels = numChannels ? this.numChannels;
+			^(bus.rate === rate) and: { numChannels <= bus.numChannels }
+		}
 	}
 
 	defineBus { | rate = \audio, numChannels |
@@ -147,7 +148,6 @@ BusPlug : AbstractFunction {
 								this.class.defaultNumControl							}
 		};
 		this.bus = Bus.alloc(rate, server, numChannels);
-
 	}
 
 	freeBus {
@@ -163,16 +163,20 @@ BusPlug : AbstractFunction {
 	busArg { ^busArg ?? { this.makeBusArg } }
 
 	makeBusArg {
-			var index, numChannels, prefix;
-			if(bus.isNil) { ^busArg = "" }; // still neutral
-			prefix = if(this.rate == \audio) { "\a" } { "\c" };
-			index = this.index;
-			numChannels = this.numChannels;
-			^busArg = if(numChannels == 1) {
-				prefix ++ index
-			} {
-				{ |i| prefix ++ (index + i) }.dup(numChannels)
-			}
+		var index, numChannels, prefix;
+		if(bus.isNil) { ^busArg = "" }; // still neutral
+		prefix = if(this.rate == \audio) { "\a" } { "\c" };
+		index = this.index;
+		numChannels = this.numChannels;
+		^busArg = if(numChannels == 1) {
+			prefix ++ index
+		} {
+			{ |i| prefix ++ (index + i) }.dup(numChannels)
+		}
+	}
+
+	asMap {
+		 ^this.busArg
 	}
 
 	wakeUpToBundle {}
@@ -195,7 +199,8 @@ BusPlug : AbstractFunction {
 		};
 		this.playToBundle(bundle, out.asControlInput, numChannels, group, multi, vol, fadeTime, addAction);
 		// homeServer: multi client support: monitor only locally
-		bundle.schedSend(this.homeServer, this.clock ? TempoClock.default, this.quant)
+		bundle.schedSend(this.homeServer, this.clock ? TempoClock.default, this.quant);
+		this.changed(\play, [out, numChannels, group, multi, vol, fadeTime, addAction]);
 	}
 
 	playN { | outs, amps, ins, vol, fadeTime, group, addAction |
@@ -205,7 +210,8 @@ BusPlug : AbstractFunction {
 			^this
 		};
 		this.playNToBundle(bundle, outs.asControlInput, amps, ins, vol, fadeTime, group, addAction);
-		bundle.schedSend(this.homeServer, this.clock ? TempoClock.default, this.quant)
+		bundle.schedSend(this.homeServer, this.clock ? TempoClock.default, this.quant);
+		this.changed(\playN, [outs, amps, ins, vol, fadeTime, group, addAction]);
 	}
 
 	fadeTime { ^0.02 }
@@ -227,22 +233,13 @@ BusPlug : AbstractFunction {
 	stop { | fadeTime = 0.1, reset = false |
 		monitor.stop(fadeTime);
 		if(reset) { monitor = nil };
+		this.changed(\stop, [fadeTime, reset]);
 	}
 
 	scope { | bufsize = 4096, zoom |
 		if(this.isNeutral.not) { ^bus.scope(bufsize, zoom) }
 	}
 
-	record { | path, headerFormat = "aiff", sampleFormat = "int16", numChannels |
-		var rec;
-		if(server.serverRunning.not) { "server not running".inform; ^nil };
-		rec = RecNodeProxy.newFrom(this, numChannels);
-		rec.open(path, headerFormat, sampleFormat);
-		rec.record;
-		^rec
-	}
-
-
 
 
 	// bundling messages
diff --git a/SCClassLibrary/JITLib/ProxySpace/InBus.sc b/SCClassLibrary/JITLib/ProxySpace/InBus.sc
index 5103cab..c53e2e8 100644
--- a/SCClassLibrary/JITLib/ProxySpace/InBus.sc
+++ b/SCClassLibrary/JITLib/ProxySpace/InBus.sc
@@ -123,16 +123,15 @@ Monitor {
 
 	stop { | argFadeTime |
 		var oldGroup = group;
+		group = nil;
 		fadeTime = argFadeTime ? fadeTime;
 		synthIDs = [];
 		synthAmps = [];
 		if(oldGroup.isPlaying) {
 			oldGroup.release(fadeTime);
-			SystemClock.sched(fadeTime, { oldGroup.free })
-		};
-		if (group.notNil) {
-			group.isPlaying = false;
-			group = nil;
+			SystemClock.sched(fadeTime, {
+				oldGroup.free(true, true)
+			})
 		};
 	}
 
@@ -248,7 +247,8 @@ Monitor {
 		};
 		synthIDs = [];
 		synthAmps = [];
-
+		
+		inGroup = inGroup.asGroup;
 		server = group.server;
 
 		triplets.do { | trip, i |
@@ -284,6 +284,7 @@ Monitor {
 		fadeTime = inFadeTime ? fadeTime ? 0.02; 	// remembers monitor fadeTime.
 
 		toNumChannels = toNumChannels ? fromNumChannels;
+		inGroup = inGroup.asGroup;
 		server = inGroup.server;
 
 		if(this.isPlaying) {
diff --git a/SCClassLibrary/JITLib/ProxySpace/NodeMap.sc b/SCClassLibrary/JITLib/ProxySpace/NodeMap.sc
index 7a69647..2214e96 100644
--- a/SCClassLibrary/JITLib/ProxySpace/NodeMap.sc
+++ b/SCClassLibrary/JITLib/ProxySpace/NodeMap.sc
@@ -18,6 +18,7 @@ NodeMap {
 	clear {
 		settings = IdentityDictionary.new;
 		upToDate = false;
+		this.changed(\clear);
 	}
 
 
@@ -26,6 +27,7 @@ NodeMap {
 			this.get(args.at(i)).map(args.at(i+1));
 		});
 		upToDate = false;
+		this.changed(\map, args);
 	}
 
 	mapa { arg ... args;
@@ -33,6 +35,7 @@ NodeMap {
 			this.get(args.at(i)).mapa(args.at(i+1));
 		});
 		upToDate = false;
+		this.changed(\map, args);
 	}
 
 	unmap { arg ... keys;
@@ -45,6 +48,7 @@ NodeMap {
 			};
 		};
 		upToDate = false;
+		this.changed(\unmap, keys);
 
 	}
 
@@ -53,6 +57,7 @@ NodeMap {
 			this.get(args.at(i)).set(args.at(i+1));
 		});
 		upToDate = false;
+		this.changed(\set, args);
 	}
 
 	setn { arg ... args; this.set(*args)  }
@@ -68,6 +73,7 @@ NodeMap {
 			};
 		};
 		upToDate = false;
+		this.changed(\unset, keys);
 	}
 
 	mapn { arg ... args;
@@ -75,6 +81,7 @@ NodeMap {
 			this.get(args.at(i)).mapn(args.at(i+1), args.at(i+2));
 		});
 		upToDate = false;
+		this.changed(\mapn, args);
 	}
 
 	mapan { arg ... args;
@@ -82,6 +89,7 @@ NodeMap {
 			this.get(args.at(i)).mapan(args.at(i+1), args.at(i+2));
 		});
 		upToDate = false;
+		this.changed(\mapan, args);
 	}
 
 	send { arg server, nodeID, latency;
@@ -131,9 +139,7 @@ NodeMap {
 				upToDate = true;
 				setArgs = setnArgs = mapArgs = mapnArgs = mapaArgs = mapanArgs = nil;
 				settings.do { arg item; item.updateNodeMap(this) };
-				controlNames = settings.values.collect { |setting|
-					ControlName(setting.key, nil, setting.mappedRate, setting.value)
-				}
+				controlNames = settings.values.collect(_.asControlName);
 			}
 	}
 
@@ -264,6 +270,7 @@ ProxyNodeMap : NodeMap {
 				parents = parents.put(key, mapProxy);
 			};
 			upToDate = false;
+			this.changed(\map, args);
 		}
 
 		mapEnvir { arg ... keys;
@@ -286,6 +293,11 @@ ProxyNodeMap : NodeMap {
 				});
 			});
 			upToDate = false;
+			this.changed(\unmap, keys);
+		}
+
+		changed { arg ... args;
+			proxy.changed(*args)
 		}
 
 }
diff --git a/SCClassLibrary/JITLib/ProxySpace/NodeMapSetting.sc b/SCClassLibrary/JITLib/ProxySpace/NodeMapSetting.sc
index b8bb437..f9b9fe2 100644
--- a/SCClassLibrary/JITLib/ProxySpace/NodeMapSetting.sc
+++ b/SCClassLibrary/JITLib/ProxySpace/NodeMapSetting.sc
@@ -39,11 +39,14 @@ NodeMapSetting {
 		var mapPrefix;
 		if(isMapped) {
 			mapPrefix = if(mappedRate === \audio) { "a" } { "c" };
-			event.put(key, { |i| mapPrefix ++ (i + this.index) }.dup(busNumChannels))
+			event.put(key, [{ |i| mapPrefix ++ (i + this.index) }.dup(busNumChannels)])
 		} {
-			event.put(key, value)
+			if(isMultiChannel) {
+				event.put(key, [value])
+			} {
+				event.put(key, value)
+			}
 		}
-
 	}
 
 	updateNodeMap { arg nodeMap;
@@ -77,6 +80,10 @@ NodeMapSetting {
 	copy {
 		^this.class.prNew(key, value, busNumChannels, isMultiChannel, isMapped, mappedRate)
 	}
+	
+	asControlName {
+		^ControlName(key, nil, mappedRate, value)
+	}
 
 	isEmpty { ^value.isNil }
 	index { ^value }
diff --git a/SCClassLibrary/JITLib/ProxySpace/NodeProxy.sc b/SCClassLibrary/JITLib/ProxySpace/NodeProxy.sc
index a8935a1..621be69 100644
--- a/SCClassLibrary/JITLib/ProxySpace/NodeProxy.sc
+++ b/SCClassLibrary/JITLib/ProxySpace/NodeProxy.sc
@@ -26,6 +26,7 @@ NodeProxy : BusPlug {
 		monitor = nil;
 		this.freeBus;	 // free the bus from the server allocator
 		this.init;	// reset the environment
+		this.changed(\clear, [fadeTime]);
 	}
 
 	end { | fadeTime, reset = false |
@@ -34,21 +35,27 @@ NodeProxy : BusPlug {
 			this.free(dt, true);
 			(dt + (server.latency ? 0)).wait;
 			this.stop(0, reset);
-		}
+		};
+		this.changed(\end, [fadeTime, reset]);
 	}
 
 	isPlaying { ^group.isPlaying }
 
 	free { | fadeTime, freeGroup = true |
-		var bundle;
+		var bundle, oldGroup;
 		if(this.isPlaying) {
 			bundle = MixedBundle.new;
 			if(fadeTime.notNil) { bundle.add([15, group.nodeID, "fadeTime", fadeTime]) };
 			this.stopAllToBundle(bundle, fadeTime);
 			if(freeGroup) {
-				bundle.sched((fadeTime ? this.fadeTime) + (server.latency ? 0), { group.free });
+				oldGroup = group;
+				group = nil;
+				bundle.sched((fadeTime ? this.fadeTime) + (server.latency ? 0), { 
+					oldGroup.free(true, true)
+				});
 			};
 			bundle.send(server);
+			this.changed(\free, [fadeTime, freeGroup]);
 		}
  	}
 
@@ -59,11 +66,13 @@ NodeProxy : BusPlug {
 	pause {
 		if(this.isPlaying) { objects.do { |item| item.pause(clock, quant) } };
 		paused = true;
+		this.changed(\pause);
 	}
 
 	resume {
 		paused = false;
 		if(this.isPlaying) { objects.do { |item| item.resume(clock, quant) } };
+		this.changed(\resume);
 	}
 
 	fadeTime_ { | dur |
@@ -83,7 +92,7 @@ NodeProxy : BusPlug {
 	parentGroup_ { | node |
 		if(node.isPlaying.not) { "node not playing and registered: % \n".postf(node); ^this };
 		parentGroup = node;
-		if(group.isPlaying) { group.moveToHead(parentGroup) }
+		if(group.isPlaying) { group.moveToHead(parentGroup) };
 	}
 
 
@@ -114,53 +123,55 @@ NodeProxy : BusPlug {
 		^objects.at(index).source
 	}
 
-	put { | index, obj, channelOffset = 0, extraArgs, now = true |			var container, bundle, orderIndex;
-			if(obj.isNil) { this.removeAt(index); ^this };
-			if(index.isSequenceableCollection) { 						^this.putAll(obj.asArray, index, channelOffset)
-			};
+	put { | index, obj, channelOffset = 0, extraArgs, now = true |		var container, bundle, orderIndex;
+		if(obj.isNil) { this.removeAt(index); ^this };
+		if(index.isSequenceableCollection) {
+			^this.putAll(obj.asArray, index, channelOffset)
+		};
 
-			orderIndex = index ? 0;
-			container = obj.makeProxyControl(channelOffset, this);
-			container.build(this, orderIndex); // bus allocation happens here
+		orderIndex = index ? 0;
+		container = obj.makeProxyControl(channelOffset, this);
+		container.build(this, orderIndex); // bus allocation happens here
 
-			if(this.shouldAddObject(container, index)) {
-				bundle = MixedBundle.new;
-				if(index.isNil)
-					{ this.removeAllToBundle(bundle) }
-					{ this.removeToBundle(bundle, index) };
-				objects = objects.put(orderIndex, container);
-			} {
-				format("failed to add % to node proxy: %", obj, this).inform;
-				^this
-			};
+		if(this.shouldAddObject(container, index)) {
+			bundle = MixedBundle.new;
+			if(index.isNil)
+				{ this.removeAllToBundle(bundle) }
+				{ this.removeToBundle(bundle, index) };
+			objects = objects.put(orderIndex, container);
+			this.changed(\source, [obj, index, channelOffset, extraArgs, now]);
+		} {
+			format("failed to add % to node proxy: %", obj, this).inform;
+			^this
+		};
 
-			if(server.serverRunning) {
-				now = awake && now;
-				if(now) {
-					this.prepareToBundle(nil, bundle);
-				};
-				container.loadToBundle(bundle, server);
-				loaded = true;
-				if(now) {
-					container.wakeUpParentsToBundle(bundle);
-					this.sendObjectToBundle(bundle, container, extraArgs, index);
-				};
-				nodeMap.wakeUpParentsToBundle(bundle);
-				bundle.schedSend(server, clock ? TempoClock.default, quant);
-			} {
-				loaded = false;
-			}
+		if(server.serverRunning) {
+			now = awake && now;
+			if(now) {
+				this.prepareToBundle(nil, bundle);
+			};
+			container.loadToBundle(bundle, server);
+			loaded = true;
+			if(now) {
+				container.wakeUpParentsToBundle(bundle);
+				this.sendObjectToBundle(bundle, container, extraArgs, index);
+			};
+			nodeMap.wakeUpParentsToBundle(bundle);
+			bundle.schedSend(server, clock ? TempoClock.default, quant);
+		} {
+			loaded = false;
+		}
 
 	}
 
 	putAll { | list, index = (0), channelOffset = 0 |
-				channelOffset = channelOffset.asArray;
-				if(index.isSequenceableCollection) {
-					max(list.size, index.size).do { |i|
-						this.put(index.wrapAt(i), list.wrapAt(i), channelOffset.wrapAt(i))
-					}
-				}{
-					list.do { |item, i| this.put(i + index, item, channelOffset.wrapAt(i)) }				}
+		channelOffset = channelOffset.asArray;
+		if(index.isSequenceableCollection) {
+			max(list.size, index.size).do { |i|
+				this.put(index.wrapAt(i), list.wrapAt(i), channelOffset.wrapAt(i))
+			}
+		}{
+			list.do { |item, i| this.put(i + index, item, channelOffset.wrapAt(i)) }		}
 	}
 
 	putSeries { | first, second, last, value |
@@ -180,6 +191,7 @@ NodeProxy : BusPlug {
 		if(index.isNil)
 			{ this.removeAllToBundle(bundle, fadeTime) }
 			{ this.removeToBundle(bundle, index, fadeTime) };
+		this.changed(\source, [nil, index, fadeTime]);
 		bundle.schedSend(server);
 	}
 
@@ -270,14 +282,14 @@ NodeProxy : BusPlug {
 		nodeMap.set(*args);
 		if(this.isPlaying) {
 			server.sendBundle(server.latency, [15, group.nodeID] ++ args);
-		};
+		}
 	}
 
 	setn { | ... args |
 		nodeMap.set(*args);
 		if(this.isPlaying) {
 			server.sendBundle(server.latency, group.setnMsg(*args));
-		};
+		}
 	}
 
 	setGroup { | args, useLatency = false |
@@ -294,7 +306,7 @@ NodeProxy : BusPlug {
 			nodeMap.map(*args).updateBundle;
 			nodeMap.addToBundle(bundle, group.nodeID);
 			server.listSendBundle(server.latency, bundle);
-		} { nodeMap.map(*args) }
+		} { nodeMap.map(*args) };
 	}
 
 	mapn { | ... args |
@@ -334,7 +346,7 @@ NodeProxy : BusPlug {
 		nodeMap.mapEnvir(*keys);
 		if(this.isPlaying) {
 			nodeMap.sendToNode(group);
-		}
+		};
 	}
 
 	unset { | ... keys |
@@ -342,7 +354,7 @@ NodeProxy : BusPlug {
 		this.unsetToBundle(bundle, keys);
 		if(bundle.notEmpty) {
 			server.listSendBundle(server.latency, bundle)
-		}
+		};
 	}
 
 	unmap { | ... keys |
@@ -366,7 +378,9 @@ NodeProxy : BusPlug {
 		bundle = MixedBundle.new;
 		old = nodeMap;
 		nodeMap = map;
+		old.clear;
 		this.linkNodeMap;
+		this.nodeMapChanged;
 		if(this.isPlaying) {
 			if(xfade) { this.sendEach(nil,true) }
 			{
@@ -377,6 +391,19 @@ NodeProxy : BusPlug {
 		};
 	}
 
+	nodeMapChanged {
+		var set, map;
+		nodeMap.settings.do { |setting|
+			if(setting.isMapped) {
+				map = map.add(setting.key).add(setting.value)
+			} {
+				set = set.add(setting.key).add(setting.value)
+			}
+		};
+		if(set.notNil) { this.changed(\set, set) };
+		if(map.notNil) { this.changed(\map, map) };
+	}
+
 
 	// play proxy as source of receiver
 	<-- { | proxy |
@@ -430,37 +457,37 @@ NodeProxy : BusPlug {
 	// starting processes
 
 	spawn { | extraArgs, index = 0 |
-			var bundle, obj, i;
-			obj = objects.at(index);
-			if(obj.notNil) {
-				i = this.index;
-				bundle = this.getBundle;
-				obj.spawnToBundle(bundle, extraArgs, this);
-				nodeMap.addToBundle(bundle, -1);
-				bundle.schedSend(server);
-			}
+		var bundle, obj, i;
+		obj = objects.at(index);
+		if(obj.notNil) {
+			i = this.index;
+			bundle = this.getBundle;
+			obj.spawnToBundle(bundle, extraArgs, this);
+			nodeMap.addToBundle(bundle, -1);
+			bundle.schedSend(server);
+		}
 	}
 
 
 	send { | extraArgs, index, freeLast = true |
-			var bundle, obj;
-			if(objects.isEmpty) { ^this };
-			if(index.isNil) {
-				bundle = this.getBundle;
-				if(freeLast) { this.stopAllToBundle(bundle) };
-				this.sendAllToBundle(bundle, extraArgs);
-				bundle.schedSend(server);
+		var bundle, obj;
+		if(objects.isEmpty) { ^this };
+		if(index.isNil) {
+			bundle = this.getBundle;
+			if(freeLast) { this.stopAllToBundle(bundle) };
+			this.sendAllToBundle(bundle, extraArgs);
+			bundle.schedSend(server);
 
-			} {
-				obj = objects.at(index);
-				if(obj.notNil) {
-					bundle = this.getBundle;
-					if(freeLast) { obj.stopToBundle(bundle) };
+		} {
+			obj = objects.at(index);
+			if(obj.notNil) {
+				bundle = this.getBundle;
+				if(freeLast) { obj.stopToBundle(bundle) };
 
-					this.sendObjectToBundle(bundle, obj, extraArgs, index);
-					bundle.schedSend(server);
-				}
+				this.sendObjectToBundle(bundle, obj, extraArgs, index);
+				bundle.schedSend(server);
 			}
+		}
 	}
 
 	sendAll { | extraArgs, freeLast = true |
@@ -468,11 +495,11 @@ NodeProxy : BusPlug {
 	}
 
 	sendEach { | extraArgs, freeLast = true |
-			var bundle;
-			bundle = this.getBundle;
-			if(freeLast, { this.stopAllToBundle(bundle) });
-			this.sendEachToBundle(bundle, extraArgs);
-			bundle.schedSend(server);
+		var bundle;
+		bundle = this.getBundle;
+		if(freeLast, { this.stopAllToBundle(bundle) });
+		this.sendEachToBundle(bundle, extraArgs);
+		bundle.schedSend(server);
 
 	}
 
@@ -489,10 +516,9 @@ NodeProxy : BusPlug {
 	}
 
 	deepWakeUp {
-			var bundle;
-			bundle = MixedBundle.new;
-			this.wakeUpToBundle(bundle);
-			bundle.schedSend(server, clock ? TempoClock.default, quant)
+		var bundle = MixedBundle.new;
+		this.wakeUpToBundle(bundle);
+		bundle.schedSend(server, clock ? TempoClock.default, quant)
 	}
 
 
@@ -679,20 +705,18 @@ NodeProxy : BusPlug {
 	// derive names and default args from synthDefs
 	supplementNodeMap { | keys, replaceOldKeys=false |
 		this.controlNames.do { |el|
-					var key;
-					key = el.name;
-					if (
-						( replaceOldKeys or: { nodeMap.at(key).isNil } )
-						and:
-						{ keys.isNil or: { keys.includes(key) } }
-					) { nodeMap.set(key, el.defaultValue) }
+			var key = el.name;
+			if (
+				( replaceOldKeys or: { nodeMap.at(key).isNil } )
+				and:
+				{ keys.isNil or: { keys.includes(key) } }
+			) { nodeMap.set(key, el.defaultValue) }
 		}
 	}
 
 
 
 
-
 	// bundling messages
 
 	getBundle {
@@ -704,46 +728,46 @@ NodeProxy : BusPlug {
 
 	prepareToBundle { | argGroup, bundle, addAction = \addToTail |
 		if(this.isPlaying.not) {
-				group = Group.basicNew(server, this.defaultGroupID);
-				NodeWatcher.register(group);
-				group.isPlaying = server.serverRunning;
-				if(argGroup.isNil and: { parentGroup.isPlaying }) { argGroup = parentGroup };
-				bundle.addPrepare(group.newMsg(argGroup ?? { server.asGroup }, addAction));
+			group = Group.basicNew(server, this.defaultGroupID);
+			NodeWatcher.register(group);
+			group.isPlaying = server.serverRunning;
+			if(argGroup.isNil and: { parentGroup.isPlaying }) { argGroup = parentGroup };
+			bundle.addPrepare(group.newMsg(argGroup ?? { server.asGroup }, addAction));
 		}
 	}
 
 	// bundle: apply the node map settings to the entire group
 	sendAllToBundle { | bundle, extraArgs |
-				objects.do { arg item;
-					item.playToBundle(bundle, extraArgs.value, this);
-				};
-				if(objects.notEmpty) { nodeMap.addToBundle(bundle, group) };
+		objects.do { arg item;
+			item.playToBundle(bundle, extraArgs.value, this);
+		};
+		if(objects.notEmpty) { nodeMap.addToBundle(bundle, group) };
 	}
 
 	// bundle: apply the node map settings to each synth separately
 	sendEachToBundle { | bundle, extraArgs |
-				objects.do { arg item;
-					this.sendObjectToBundle(bundle, item, extraArgs.value)
-				}
+		objects.do { arg item;
+			this.sendObjectToBundle(bundle, item, extraArgs.value)
+		}
 	}
 
 	// bundle: send single object
 	sendObjectToBundle { | bundle, object, extraArgs, index |
-				var synthID, target, nodes;
-				synthID = object.playToBundle(bundle, extraArgs.value, this);
-				if(synthID.notNil) {
-					if(index.notNil and: { objects.size > 1 }) { // if nil, all are sent anyway
-						// make list of nodeIDs following the index
-						nodes = Array(4);
-						objects.doRange({ arg obj;
-							var id = obj.nodeID;
-							if(id.notNil and: { id != synthID })
-								{ nodes = nodes ++ id ++ synthID };
-						}, index + 1);
-						if(nodes.size > 0) { bundle.add(["/n_before"] ++ nodes.reverse) };
-					};
-				nodeMap.addToBundle(bundle, synthID)
-				}
+		var synthID, target, nodes;
+		synthID = object.playToBundle(bundle, extraArgs.value, this);
+		if(synthID.notNil) {
+			if(index.notNil and: { objects.size > 1 }) { // if nil, all are sent anyway
+				// make list of nodeIDs following the index
+				nodes = Array(4);
+				objects.doRange({ arg obj;
+					var id = obj.nodeID;
+					if(id.notNil and: { id != synthID })
+						{ nodes = nodes ++ id ++ synthID };
+				}, index + 1);
+				if(nodes.size > 0) { bundle.add(["/n_before"] ++ nodes.reverse) };
+			};
+		nodeMap.addToBundle(bundle, synthID)
+		}
 	}
 
 	// bundle: remove single object
diff --git a/SCClassLibrary/JITLib/ProxySpace/ProxyInterfaces.sc b/SCClassLibrary/JITLib/ProxySpace/ProxyInterfaces.sc
index 89d047d..61a0b5e 100644
--- a/SCClassLibrary/JITLib/ProxySpace/ProxyInterfaces.sc
+++ b/SCClassLibrary/JITLib/ProxySpace/ProxyInterfaces.sc
@@ -191,42 +191,16 @@ SynthControl : AbstractPlayControl {
 	}
 
 	spawnToBundle { | bundle, extraArgs, target, addAction = 0 | // assumes self freeing
-		var synthMsg, msg, targetID = target.asTarget.nodeID;
-		if(extraArgs.notNil and: { extraArgs.any { |x| x.size > 1 } }) {
-			synthMsg = [9, this.asDefName, -1, addAction, targetID];
-			bundle.add(synthMsg);
-			synthMsg = ["/n_setn", -1];
-			extraArgs.pairsDo { |key, val|
-				synthMsg = synthMsg.add(key);
-				synthMsg = synthMsg.add(val.size.max(1));
-				synthMsg = synthMsg.addAll(val);
-			};
-			bundle.add(synthMsg);
-
-		} {
-			synthMsg = [9, this.asDefName, -1, addAction, targetID] ++ extraArgs;
-			bundle.add(synthMsg);
-		}
+		var targetID = target.asTarget.nodeID;
+		bundle.add([9, this.asDefName, -1, addAction, targetID]++extraArgs.asOSCArgArray);
 	}
 
 	playToBundle { | bundle, extraArgs, target, addAction = 1 |
-		var group, synthMsg;
+		var group;
 		server = target.server;
 		group = target.asTarget;
 		nodeID = server.nextNodeID;
-		if(extraArgs.notNil and: { extraArgs.any { |x| x.size > 1 } }) {
-			synthMsg = [9, this.asDefName, nodeID, addAction, group.nodeID];
-			bundle.add(synthMsg);
-			synthMsg = ["/n_setn", -1];
-			extraArgs.pairsDo { |key, val|
-				synthMsg = synthMsg.add(key);
-				synthMsg = synthMsg.add(val.size.max(1));
-				synthMsg = synthMsg.addAll(val);
-			};
-			bundle.add(synthMsg);
-		} {
-			bundle.add([9, this.asDefName, nodeID, addAction, group.nodeID]++extraArgs)
-		};
+		bundle.add([9, this.asDefName, nodeID, addAction, group.nodeID]++extraArgs.asOSCArgArray);
 		if(paused) { bundle.add(["/n_run", nodeID, 0]) };
 		^nodeID
 	}
diff --git a/SCClassLibrary/Platform/Platform.sc b/SCClassLibrary/Platform/Platform.sc
index 65f1df7..0f958dd 100644
--- a/SCClassLibrary/Platform/Platform.sc
+++ b/SCClassLibrary/Platform/Platform.sc
@@ -30,6 +30,9 @@ Platform
 	*classLibraryDir { ^thisProcess.platform.classLibraryDir }
 	*helpDir { ^thisProcess.platform.helpDir }
 
+	userHomeDir { _Platform_userHomeDir }
+	*userHomeDir { ^thisProcess.platform.userHomeDir }
+
 	systemAppSupportDir { _Platform_systemAppSupportDir }
 	*systemAppSupportDir { ^thisProcess.platform.systemAppSupportDir }
 
diff --git a/SCClassLibrary/QtCollider/BasicViews.sc b/SCClassLibrary/QtCollider/BasicViews.sc
index fb3debf..c6c5347 100644
--- a/SCClassLibrary/QtCollider/BasicViews.sc
+++ b/SCClassLibrary/QtCollider/BasicViews.sc
@@ -32,6 +32,10 @@ QItemViewBase : QView
     this.value_(val);
     action.value(this);
   }
+
+  clear {
+    this.invokeMethod(\clear);
+  }
 }
 
 QAbstractScroll : QView {
@@ -118,25 +122,18 @@ QAbstractStepValue : QView {
 /////////////////////// CONTAINERS ////////////////////////////////
 
 QHLayoutView : QView {
-  *qtClass { ^"QcHLayoutWidget" }
+  *qtClass { ^'QcHLayoutWidget' }
 }
 
 QVLayoutView : QView {
-  *qtClass { ^"QcVLayoutWidget" }
+  *qtClass { ^'QcVLayoutWidget' }
 }
 
 QScrollCanvas : QObject {
   *qtClass { ^'QcScrollWidget' }
 
-  background {
-    ^this.getProperty(\palette).window;
-  }
-
-  background_ { arg color;
-    // Do not autoFillBackground; the widget will paint it if necessary.
-    var p = this.getProperty(\palette);
-    this.setProperty( \palette, p.window_(color) );
-  }
+  background { ^this.getProperty(\background); }
+  background_ { arg color; this.setProperty(\background, color); }
 }
 
 QScrollView : QAbstractScroll {
@@ -148,7 +145,7 @@ QScrollView : QAbstractScroll {
     ^super.new( parent, bounds ).initQScrollView;
   }
 
-  *qtClass { ^"QcScrollArea" }
+  *qtClass { ^'QcScrollArea' }
 
   children { arg class = QView;
     ^canvas.children( class );
@@ -196,7 +193,7 @@ QScrollView : QAbstractScroll {
 /////////////////////////// WIDGETS ///////////////////////////////
 
 QStaticText : QTextViewBase {
-  *qtClass { ^"QLabel" }
+  *qtClass { ^'QLabel' }
 
   *new { arg aParent, aBounds;
     var obj = super.new( aParent, aBounds );
@@ -204,11 +201,16 @@ QStaticText : QTextViewBase {
     ^obj;
   }
 
-  background_ { arg aColor;
-    if( this.background.isNil ) {
-      this.setProperty( \autoFillBackground, true);
-    };
-    super.background_( aColor );
+  background {
+    var p = this.palette;
+    ^if(p.hasColor(\window)) {p.window} {nil}
+  }
+
+  background_ { arg color;
+    var p = this.palette;
+    if(p.hasColor(\window).not)
+      { this.setProperty( \autoFillBackground, true) };
+    this.palette = p.window_(color);
   }
 
   string { ^this.getProperty(\text) }
@@ -224,7 +226,7 @@ QStaticText : QTextViewBase {
 }
 
 QTextField : QTextViewBase {
-  *qtClass { ^"QcTextField" }
+  *qtClass { ^'QcTextField' }
 
   string {
     ^this.getProperty( \text );
@@ -273,7 +275,7 @@ QTextField : QTextViewBase {
 QButton : QView {
   var <states;
 
-  *qtClass { ^"QcButton" }
+  *qtClass { ^'QcButton' }
 
   value {
     ^this.getProperty( \value );
@@ -317,7 +319,7 @@ QButton : QView {
 
 QCheckBox : QView {
 
-  *qtClass { ^"QcCheckBox" }
+  *qtClass { ^'QcCheckBox' }
 
   *new{ |parent,bounds,text|
     ^super.new(parent,bounds).init(text)
@@ -357,7 +359,7 @@ QCheckBox : QView {
 
 QPopUpMenu : QItemViewBase {
 
-  *qtClass { ^"QcPopUpMenu" }
+  *qtClass { ^'QcPopUpMenu' }
 
   allowsReselection { ^this.getProperty( \reactivationEnabled ) }
 
diff --git a/SCClassLibrary/QtCollider/QDialog.sc b/SCClassLibrary/QtCollider/QDialog.sc
index 0393bf6..963edef 100644
--- a/SCClassLibrary/QtCollider/QDialog.sc
+++ b/SCClassLibrary/QtCollider/QDialog.sc
@@ -25,6 +25,8 @@ QFileDialog : QObject {
 }
 
 QDialog {
+  *implementsClass {^'Dialog'}
+
   *getPaths { arg okFunc, cancelFunc, allowsMultiple=true;
     var fileMode;
     if( allowsMultiple ) { fileMode = 3 } { fileMode = 1 };
diff --git a/SCClassLibrary/QtCollider/QEnvelopeView.sc b/SCClassLibrary/QtCollider/QEnvelopeView.sc
index c1cae61..a28f060 100644
--- a/SCClassLibrary/QtCollider/QEnvelopeView.sc
+++ b/SCClassLibrary/QtCollider/QEnvelopeView.sc
@@ -1,11 +1,11 @@
 QEnvelopeView : QView
 {
   var <editable, <step, <grid, <gridOn = false;
-  var <gridColor, <strokeColor, <fillColor, <selectionColor;
+  var <fillColor;
   var <drawLines = true, <drawRects = true;
   var <metaAction;
 
-  *qtClass {^"QcGraph"}
+  *qtClass {^'QcGraph'}
 
   editable_ { arg aBool;
     editable = aBool;
@@ -128,27 +128,18 @@ QEnvelopeView : QView
     this.setProperty( \gridOn, aBool );
   }
 
-  gridColor_ { arg aColor;
-    gridColor = aColor;
-    this.setProperty( \gridColor, aColor );
-  }
-
   connect { arg source, targets;
     this.invokeMethod( \connectElements, [source, targets] );
   }
 
-  strokeColor_ { arg aColor;
-    strokeColor = aColor;
-    this.setProperty( \strokeColor, aColor );
-  }
+  gridColor { ^this.getProperty(\gridColor) }
+  gridColor_ { arg color; this.setProperty( \gridColor, color ) }
 
-  background {
-    ^this.palette.base;
-  }
+  selectionColor { ^this.getProperty(\selectionColor) }
+  selectionColor_ { arg color; this.setProperty(\selectionColor, color) }
 
-  background_ { arg color;
-    this.palette = this.palette.base_(color);
-  }
+  strokeColor { ^this.getProperty(\strokeColor) }
+  strokeColor_ { arg color; this.setProperty( \strokeColor, color ) }
 
   fillColor_ { arg aColor;
     fillColor = aColor;
@@ -164,10 +155,6 @@ QEnvelopeView : QView
     this.fillColor_( fillColor );
   }
 
-  selectionColor_ { arg color;
-    this.palette = this.palette.highlight_(color);
-  }
-
   drawLines_ { arg aBool;
     drawLines = aBool;
     this.setProperty( \drawLines, aBool );
diff --git a/SCClassLibrary/QtCollider/QFont.sc b/SCClassLibrary/QtCollider/QFont.sc
index 9c2eec5..2845510 100644
--- a/SCClassLibrary/QtCollider/QFont.sc
+++ b/SCClassLibrary/QtCollider/QFont.sc
@@ -1,10 +1,15 @@
 QFont {
-  classvar defaultSansFace, defaultSerifFace, defaultMonoFace;
+  classvar <defaultSansFace, <defaultSerifFace, <defaultMonoFace;
+
   var <>name, <size, <>bold, <>italic, <hasPointSize=false;
   /* ----------------- class -------------------*/
 
-  *initClass {
+  *implementsClass {^'Font'}
 
+  *initClass {
+    defaultSansFace = this.prDefaultFamilyForStyle(0);
+    defaultSerifFace = this.prDefaultFamilyForStyle(1);
+    defaultMonoFace = this.prDefaultFamilyForStyle(2);
   }
 
   *new { arg name, size, bold = false, italic = false, usePointSize = false;
@@ -21,20 +26,16 @@ QFont {
   *smoothing_ { arg flag;
   }
 
-  *defaultSansFace {
-    ^"sans-serif";
-  }
-
-  *defaultSerifFace {
-    ^"serif";
+  *default {
+    ^QFont();
   }
 
-  *defaultMonoFace {
-    ^"monospace";
+  *default_ { arg font;
+    this.setDefault(font);
   }
 
-  *default {
-    ^QFont();
+  *setDefault { arg font, class;
+    this.prSetDefault(font, class !? {class.qtClass});
   }
 
   *monospace {|size, bold = false, italic = false, usePointSize = false|
@@ -51,7 +52,8 @@ QFont {
 
   /* ------------------instance------------------*/
 
-  setDefault {
+  setDefault { arg class;
+    QFont.setDefault(this, class);
   }
 
   boldVariant {
@@ -89,4 +91,13 @@ QFont {
 
   /* ------------------ private -----------------*/
 
+  *prSetDefault { arg font, className;
+    _QFont_SetDefaultFont
+    ^this.primitiveFailed;
+  }
+
+  *prDefaultFamilyForStyle { arg style = -1;
+    _QFont_DefaultFamilyForStyle
+    ^this.primitiveFailed;
+  }
 }
diff --git a/SCClassLibrary/QtCollider/QKnob.sc b/SCClassLibrary/QtCollider/QKnob.sc
index 33a8c16..7797d46 100644
--- a/SCClassLibrary/QtCollider/QKnob.sc
+++ b/SCClassLibrary/QtCollider/QKnob.sc
@@ -18,7 +18,7 @@ QKnob : QAbstractStepValue {
 
   var <>keystep = 0.01;
 
-  *qtClass {^"QcKnob"}
+  *qtClass {^'QcKnob'}
 
   *new { arg parent, bounds;
     var me = super.new(parent,bounds);
diff --git a/SCClassLibrary/QtCollider/QLayout.sc b/SCClassLibrary/QtCollider/QLayout.sc
index 81d3454..9d2f969 100644
--- a/SCClassLibrary/QtCollider/QLayout.sc
+++ b/SCClassLibrary/QtCollider/QLayout.sc
@@ -55,16 +55,20 @@ QLineLayout : QLayout {
 }
 
 QHLayout : QLineLayout {
-  *qtClass { ^'QcHBoxLayout'; }
+  *implementsClass {^'HLayout'}
+  *qtClass { ^'QcHBoxLayout' }
 }
 
 QVLayout : QLineLayout {
-  *qtClass { ^'QcVBoxLayout'; }
+  *implementsClass {^'VLayout'}
+  *qtClass { ^'QcVBoxLayout' }
 }
 
 // GRID LAYOUT ///////////////////////////////////////////////////
 
 QGridLayout : QLayout {
+  *implementsClass {^'GridLayout'}
+
   *new {
     // get rid of QObject's arguments
     ^super.new;
@@ -179,6 +183,8 @@ QGridLayout : QLayout {
 
 QStackLayout : QLayout
 {
+  *implementsClass {^'StackLayout'}
+
   *qtClass { ^'QcStackLayout' }
 
   *new { arg ...views; ^super.new([views]) }
diff --git a/SCClassLibrary/QtCollider/QLevelIndicator.sc b/SCClassLibrary/QtCollider/QLevelIndicator.sc
index 51fb900..f061f54 100644
--- a/SCClassLibrary/QtCollider/QLevelIndicator.sc
+++ b/SCClassLibrary/QtCollider/QLevelIndicator.sc
@@ -1,6 +1,6 @@
 QLevelIndicator : QView {
 
-  *qtClass {^"QcLevelIndicator"}
+  *qtClass {^'QcLevelIndicator'}
 
   value {
     ^this.getProperty(\value)
diff --git a/SCClassLibrary/QtCollider/QListView.sc b/SCClassLibrary/QtCollider/QListView.sc
index f82e817..8861353 100644
--- a/SCClassLibrary/QtCollider/QListView.sc
+++ b/SCClassLibrary/QtCollider/QListView.sc
@@ -2,7 +2,7 @@ QListView : QItemViewBase {
   var <colors;
   var <enterKeyAction;
 
-  *qtClass { ^"QcListWidget" }
+  *qtClass { ^'QcListWidget' }
 
   mouseDownEvent { arg x, y, modifiers, buttonNumber, clickCount;
     // Override QView:mouseDownEvent:
diff --git a/SCClassLibrary/QtCollider/QMultiSliderView.sc b/SCClassLibrary/QtCollider/QMultiSliderView.sc
index c65b18d..5ae220c 100644
--- a/SCClassLibrary/QtCollider/QMultiSliderView.sc
+++ b/SCClassLibrary/QtCollider/QMultiSliderView.sc
@@ -6,7 +6,7 @@ QMultiSliderView : QView {
   var <metaAction;
 
 
-  *qtClass { ^"QcMultiSlider" }
+  *qtClass { ^'QcMultiSlider' }
 
   size { ^this.getProperty(\sliderCount) }
   size_ { arg int; this.setProperty( \sliderCount, int ) }
@@ -131,21 +131,11 @@ QMultiSliderView : QView {
     this.setProperty( \isFilled, aBool );
   }
 
-  background {
-    ^this.palette.base;
-  }
-
-  background_ { arg color;
-    this.palette = this.palette.base_(color);
-  }
+  fillColor { ^this.getProperty(\fillColor) }
+  fillColor_ { arg color; this.setProperty( \fillColor, color ) }
 
-  fillColor_ { arg aColor;
-    this.setProperty( \fillColor, aColor );
-  }
-
-  strokeColor_ { arg aColor;
-    this.setProperty( \strokeColor, aColor );
-  }
+  strokeColor { ^this.getProperty(\strokeColor) }
+  strokeColor_ { arg color; this.setProperty( \strokeColor, color ) }
 
   colors_ { arg colorStroke, colorFill;
     this.strokeColor_( colorStroke );
diff --git a/SCClassLibrary/QtCollider/QNumberBox.sc b/SCClassLibrary/QtCollider/QNumberBox.sc
index c11caf0..b488ef5 100644
--- a/SCClassLibrary/QtCollider/QNumberBox.sc
+++ b/SCClassLibrary/QtCollider/QNumberBox.sc
@@ -4,7 +4,7 @@ QNumberBox : QAbstractStepValue {
   var <normalColor, <typingColor;
   var <object, <>setBoth = true;
 
-  *qtClass { ^"QcNumberBox" }
+  *qtClass { ^'QcNumberBox' }
 
   *new { arg aParent, aBounds;
     var obj = super.new( aParent, aBounds );
diff --git a/SCClassLibrary/QtCollider/QObject.sc b/SCClassLibrary/QtCollider/QObject.sc
index fdf49e7..ea0641a 100644
--- a/SCClassLibrary/QtCollider/QObject.sc
+++ b/SCClassLibrary/QtCollider/QObject.sc
@@ -38,7 +38,7 @@ QObject {
 
   *qtClass { ^nil }
 
-  *meta { ^QMetaObject(this.qtClass); }
+  *meta { ^QMetaObject(this.qtClass) }
 
   *new { arg argumentArray;
     var className = this.qtClass;
@@ -50,12 +50,6 @@ QObject {
 
   *heap { ^heap.copy }
 
-  *initClass {
-      ShutDown.add {
-          heap.do { |x| x.prFinalize; };
-      };
-  }
-
   initQObject{ arg className, argumentArray;
     this.prConstruct( className, argumentArray );
     heap = heap.add( this );
@@ -171,11 +165,6 @@ QObject {
     ^this.primitiveFailed
   }
 
-  prFinalize {
-    _QObject_ManuallyFinalize
-    ^this.primitiveFailed
-  }
-
   prRelease { heap.remove(this); }
 
   doFunction { arg f ... args; f.performList(\value, this, args); }
diff --git a/SCClassLibrary/QtCollider/QPen.sc b/SCClassLibrary/QtCollider/QPen.sc
index b59305d..53f4549 100644
--- a/SCClassLibrary/QtCollider/QPen.sc
+++ b/SCClassLibrary/QtCollider/QPen.sc
@@ -1,6 +1,6 @@
 QPen {
   classvar <font;
-
+  *implementsClass {^'Pen'}
 //-------------------------- Global state control ------------------------------
 
   *push {
@@ -119,8 +119,10 @@ QPen {
     ^this.primitiveFailed;
   }
 
+  *matrix { _QPen_Transform }
+
   *matrix_ { arg matrixArray;
-    _QPen_Transform
+    _QPen_SetTransform
     ^this.primitiveFailed;
   }
 
diff --git a/SCClassLibrary/QtCollider/QRangeSlider.sc b/SCClassLibrary/QtCollider/QRangeSlider.sc
index 09ff241..70f4e49 100644
--- a/SCClassLibrary/QtCollider/QRangeSlider.sc
+++ b/SCClassLibrary/QtCollider/QRangeSlider.sc
@@ -1,5 +1,5 @@
 QRangeSlider : QAbstractStepValue {
-  *qtClass { ^"QcRangeSlider" }
+  *qtClass { ^'QcRangeSlider' }
 
   *new { arg parent, bounds;
     ^super.new( parent, bounds ).initQRangeSlider( bounds );
@@ -80,21 +80,11 @@ QRangeSlider : QAbstractStepValue {
     this.hi_( average + deviation );
   }
 
-  knobColor {
-    ^this.palette.buttonText;
-  }
-
-  knobColor_ { arg color;
-    this.palette = this.palette.buttonText_(color);
-  }
+  knobColor { ^this.getProperty(\knobColor) }
+  knobColor_ { arg color; this.setProperty(\knobColor, color) }
 
-  background {
-    ^this.getProperty(\grooveColor);
-  }
-
-  background_ { arg color;
-    this.setProperty(\grooveColor, color);
-  }
+  background { ^this.getProperty(\grooveColor) }
+  background_ { arg color; this.setProperty(\grooveColor, color) }
 
   defaultGetDrag { ^Point(this.lo,this.hi); }
   defaultCanReceiveDrag { ^(QView.currentDrag.class === Point); }
diff --git a/SCClassLibrary/QtCollider/QScope.sc b/SCClassLibrary/QtCollider/QScope.sc
index ae3d12d..f29d388 100644
--- a/SCClassLibrary/QtCollider/QScope.sc
+++ b/SCClassLibrary/QtCollider/QScope.sc
@@ -2,7 +2,7 @@ QScope : QView {
   var <bufnum, <style=0, <xZoom=1.0, <yZoom=1.0, <x=0.0, <y=0.0;
   var <waveColors;
 
-  *qtClass { ^"QcScope" }
+  *qtClass { ^'QcScope' }
 
   bufnum_ { arg anInt;
     bufnum = anInt;
@@ -38,8 +38,4 @@ QScope : QView {
     waveColors = aColorArray;
     this.setProperty( \waveColors, aColorArray );
   }
-
-  background { ^this.getProperty( \background ); }
-
-  background_ { arg color; this.setProperty( \background, color, true ); }
 }
diff --git a/SCClassLibrary/QtCollider/QScope2.sc b/SCClassLibrary/QtCollider/QScope2.sc
index c0fba11..c92c5b6 100644
--- a/SCClassLibrary/QtCollider/QScope2.sc
+++ b/SCClassLibrary/QtCollider/QScope2.sc
@@ -3,7 +3,7 @@ QScope2 : QView {
   var <xZoom=1.0, <yZoom=1.0, <x=0.0, <y=0.0;
   var <waveColors;
 
-  *qtClass { ^"QcScopeShm" }
+  *qtClass { ^'QcScopeShm' }
 
   bufnum_ { arg anInt;
     bufnum = anInt;
@@ -50,8 +50,4 @@ QScope2 : QView {
     waveColors = aColorArray;
     this.setProperty( \waveColors, aColorArray );
   }
-
-  background { ^this.getProperty( \background, Color.new ); }
-
-  background_ { arg color; this.setProperty( \background, color, true ); }
 }
diff --git a/SCClassLibrary/QtCollider/QSlider.sc b/SCClassLibrary/QtCollider/QSlider.sc
index 377eacb..9cc4735 100644
--- a/SCClassLibrary/QtCollider/QSlider.sc
+++ b/SCClassLibrary/QtCollider/QSlider.sc
@@ -2,7 +2,7 @@ QSlider : QAbstractStepValue {
   //compatibility stuff:
   var <orientation;
 
-  *qtClass { ^"QcSlider" }
+  *qtClass { ^'QcSlider' }
 
   *new { arg parent, bounds;
     ^super.new( parent, bounds ).initQSlider( bounds );
@@ -26,21 +26,11 @@ QSlider : QAbstractStepValue {
   thumbSize { ^this.getProperty(\handleLength) }
   thumbSize_ { arg pixels; this.setProperty(\handleLength, pixels) }
 
-  knobColor {
-    ^this.palette.buttonText;
-  }
-
-  knobColor_ { arg color;
-    this.palette = this.palette.buttonText_(color);
-  }
+  knobColor { ^this.getProperty(\knobColor) }
+  knobColor_ { arg color; this.setProperty(\knobColor, color) }
 
-  background {
-    ^this.getProperty(\grooveColor);
-  }
-
-  background_ { arg color;
-    this.setProperty(\grooveColor, color);
-  }
+  background { ^this.getProperty(\grooveColor) }
+  background_ { arg color; this.setProperty(\grooveColor, color) }
 
   initQSlider { arg bounds;
     var r;
diff --git a/SCClassLibrary/QtCollider/QSlider2D.sc b/SCClassLibrary/QtCollider/QSlider2D.sc
index 3fa061f..7c74c80 100644
--- a/SCClassLibrary/QtCollider/QSlider2D.sc
+++ b/SCClassLibrary/QtCollider/QSlider2D.sc
@@ -1,9 +1,9 @@
 QSlider2D : QAbstractStepValue {
-  *qtClass { ^"QcSlider2D" }
+  *qtClass { ^'QcSlider2D' }
 
   *new { arg parent, bounds;
     var me = super.new( parent, bounds );
-    me.connectMethod( "randomize()", \randomize );
+    me.connectMethod( 'randomize()', \randomize );
     ^me;
   }
 
@@ -62,21 +62,11 @@ QSlider2D : QAbstractStepValue {
     this.setXYActive( 1.0.rand, 1.0.rand );
   }
 
-  knobColor {
-    ^this.palette.buttonText;
-  }
-
-  knobColor_ { arg color;
-    this.palette = this.palette.buttonText_(color);
-  }
+  knobColor { ^this.getProperty(\knobColor) }
+  knobColor_ { arg color; this.setProperty(\knobColor, color) }
 
-  background {
-    ^this.getProperty(\grooveColor);
-  }
-
-  background_ { arg color;
-    this.setProperty(\grooveColor, color);
-  }
+  background { ^this.getProperty(\grooveColor) }
+  background_ { arg color; this.setProperty(\grooveColor, color) }
 
   defaultGetDrag { ^Point(this.x,this.y); }
   defaultCanReceiveDrag { ^(QView.currentDrag.class === Point); }
diff --git a/SCClassLibrary/QtCollider/QSoundFileView.sc b/SCClassLibrary/QtCollider/QSoundFileView.sc
index a50e361..1a0c005 100644
--- a/SCClassLibrary/QtCollider/QSoundFileView.sc
+++ b/SCClassLibrary/QtCollider/QSoundFileView.sc
@@ -5,7 +5,7 @@ QSoundFileView : QView {
   var <>elasticMode; // NOTE: no-op, only for compatibility
   var curDoneAction;
 
-  *qtClass { ^"QcWaveform" }
+  *qtClass { ^'QcWaveform' }
 
   load { arg filename, startframe, frames, block, doneAction;
     if( filename.isString && filename != "" ) {
@@ -152,9 +152,9 @@ QSoundFileView : QView {
     this.setSelection( index, sel );
   }
 
-  selectAll { arg index; this.setSelection( this.currentSelection, [0, this.numFrames] ); }
+  selectAll { arg index; this.setSelection( index, [0, this.numFrames] ); }
 
-  selectNone { arg index; this.setSelection( this.currentSelection, [0, 0] );  }
+  selectNone { arg index; this.setSelection( index, [0, 0] ); }
 
 
   setEditableSelectionStart { arg index, editable; ^this.nonimpl("setEditableSelectionStart"); }
@@ -184,9 +184,6 @@ QSoundFileView : QView {
   timeCursorPosition { ^this.getProperty( \cursorPosition ); }
   timeCursorPosition_ { arg frame; this.setProperty( \cursorPosition, frame ) }
 
-  timeCursorColor { ^this.getProperty( \cursorColor ); }
-  timeCursorColor_ { arg color; this.setProperty( \cursorColor, color ) }
-
   // grid
 
   gridOn { ^this.getProperty( \gridVisible ); }
@@ -198,6 +195,17 @@ QSoundFileView : QView {
   gridOffset { ^this.getProperty( \gridOffset ) }
   gridOffset_ { arg seconds; this.setProperty( \gridOffset, seconds ) }
 
+  // colors
+
+  peakColor { ^this.getProperty(\peakColor) }
+  peakColor_ { arg color; this.setProperty(\peakColor, color) }
+
+  rmsColor { ^this.getProperty(\rmsColor) }
+  rmsColor_ { arg color; this.setProperty(\rmsColor, color) }
+
+  timeCursorColor { ^this.getProperty( \cursorColor ); }
+  timeCursorColor_ { arg color; this.setProperty( \cursorColor, color ) }
+
   gridColor { ^this.getProperty( \gridColor ) }
   gridColor_ { arg color; this.setProperty( \gridColor, color ) }
 
diff --git a/SCClassLibrary/QtCollider/QStethoscope.sc b/SCClassLibrary/QtCollider/QStethoscope.sc
index c610563..e393c01 100644
--- a/SCClassLibrary/QtCollider/QStethoscope.sc
+++ b/SCClassLibrary/QtCollider/QStethoscope.sc
@@ -10,6 +10,7 @@ QStethoscope {
   var scopeView, indexView, nChanView, xZoomSlider, yZoomSlider;
   var style=0, sizeToggle=0, zx, zy, ai=0, ki=0, audiospec, controlspec, zoomspec;
 
+  *implementsClass {^'Stethoscope'}
 
   *new { arg server, numChannels = 2, index, bufsize = 4096, zoom, rate, view, bufnum;
     if(server.inProcess.not, { "scope works only with internal server".error; ^nil });
diff --git a/SCClassLibrary/QtCollider/QStethoscope2.sc b/SCClassLibrary/QtCollider/QStethoscope2.sc
index d540dbd..7c362cd 100644
--- a/SCClassLibrary/QtCollider/QStethoscope2.sc
+++ b/SCClassLibrary/QtCollider/QStethoscope2.sc
@@ -23,6 +23,8 @@ QStethoscope2 {
   var sizeToggle=false;
   var running = false;
 
+  *implementsClass {^'Stethoscope'}
+
   *defaultServer { ^if( Server.default.isLocal, Server.default, Server.local ) }
 
   *isValidServer { arg aServer; ^aServer.isLocal }
@@ -121,19 +123,19 @@ QStethoscope2 {
 
       // LAYOUT
 
-      gizmo = idxNumBox.minSizeHint.width * 2;
-      idxNumBox.minWidth = gizmo;
-      idxNumBox.maxWidth = gizmo;
-      chNumBox.minWidth = gizmo;
-      chNumBox.maxWidth = gizmo;
+      gizmo = "999".bounds( idxNumBox.font ).width + 20;
+      idxNumBox.fixedWidth = gizmo;
+      chNumBox.fixedWidth = gizmo;
+      idxNumBox.align = \center;
+      chNumBox.align = \center;
 
       view.layout =
         QGridLayout()
           .add(
             QHLayout(
               rateMenu,
-              idxNumBox.minWidth_(35),
-              chNumBox.minWidth_(35),
+              idxNumBox,
+              chNumBox,
               nil,
               styleMenu
             ).margins_(0).spacing_(2), 0, 0
diff --git a/SCClassLibrary/QtCollider/QTextView.sc b/SCClassLibrary/QtCollider/QTextView.sc
index ea3dee8..e865a7c 100644
--- a/SCClassLibrary/QtCollider/QTextView.sc
+++ b/SCClassLibrary/QtCollider/QTextView.sc
@@ -1,7 +1,7 @@
 QTextView : QAbstractScroll {
   var <stringColor, <font, <editable=true;
 
-  *qtClass { ^"QcTextEdit" }
+  *qtClass { ^'QcTextEdit' }
 
   enterInterpretsSelection { ^this.getProperty( \enterInterpretsSelection ); }
 
diff --git a/SCClassLibrary/QtCollider/QTreeView.sc b/SCClassLibrary/QtCollider/QTreeView.sc
index 530ff25..dde4213 100644
--- a/SCClassLibrary/QtCollider/QTreeView.sc
+++ b/SCClassLibrary/QtCollider/QTreeView.sc
@@ -2,7 +2,7 @@ QTreeView : QView {
   var <itemPressedAction;
   var <onItemChanged;
 
-  *qtClass { ^"QcTreeWidget" }
+  *qtClass { ^'QcTreeWidget' }
 
   columns_ { arg labels; this.setProperty( \columns, labels ); }
   columns { ^this.getProperty( \columns ); }
@@ -20,6 +20,8 @@ QTreeView : QView {
 
   numItems { ^this.getProperty( \topLevelItemCount ); }
 
+  clear { this.invokeMethod(\clear); }
+
   currentItem {
     ^this.getProperty( \currentItem ).prValidItem(this);
   }
@@ -41,20 +43,20 @@ QTreeView : QView {
 
   itemPressedAction_ { arg action;
     if(itemPressedAction.notNil) {
-      this.disconnectFunction( "itemPressedAction()", itemPressedAction );
+      this.disconnectFunction( 'itemPressedAction()', itemPressedAction );
     };
     if(action.notNil) {
-      this.connectFunction( "itemPressedAction()", action );
+      this.connectFunction( 'itemPressedAction()', action );
     };
     itemPressedAction = action;
   }
 
   onItemChanged_ { arg hook;
     if(onItemChanged.notNil) {
-      this.disconnectFunction( "currentItemChanged()", onItemChanged );
+      this.disconnectFunction( 'currentItemChanged()', onItemChanged );
     };
     if(hook.notNil) {
-      this.connectFunction( "currentItemChanged()", hook );
+      this.connectFunction( 'currentItemChanged()', hook );
     };
     onItemChanged = hook;
   }
diff --git a/SCClassLibrary/QtCollider/QUserView.sc b/SCClassLibrary/QtCollider/QUserView.sc
index 170d389..8c412fb 100644
--- a/SCClassLibrary/QtCollider/QUserView.sc
+++ b/SCClassLibrary/QtCollider/QUserView.sc
@@ -1,7 +1,7 @@
 QUserView : QView {
   var <drawFunc, <drawingEnabled=true;
 
-  *qtClass { ^"QcCustomPainted" }
+  *qtClass { ^'QcCustomPainted' }
 
   *new { arg parent, bounds;
     var me = super.new(parent, bounds ?? {this.sizeHint} );
@@ -43,11 +43,6 @@ QUserView : QView {
 
   frame { ^this.getProperty( \frameCount ); }
 
-  background_ { arg color;
-    // Do not autoFillBackground; the widget will paint it if necessary.
-    this.palette = this.palette.window_(color);
-  }
-
   // override QView's action_ to not connect to 'action()' signal
   action_ { arg func;
     action = func;
diff --git a/SCClassLibrary/QtCollider/QView.sc b/SCClassLibrary/QtCollider/QView.sc
index 488e60b..ed68abb 100644
--- a/SCClassLibrary/QtCollider/QView.sc
+++ b/SCClassLibrary/QtCollider/QView.sc
@@ -28,6 +28,8 @@ QView : QObject {
   // hooks
   var <onClose, <onResize, <onMove;
 
+  *implementsClass { ^this.name.asString[1..].asSymbol }
+
   *initClass {
     hSizePolicy = [1,2,3,1,2,3,1,2,3];
     vSizePolicy = [1,1,1,2,2,2,3,3,3];
@@ -81,14 +83,8 @@ QView : QObject {
     this.setProperty( \palette, p );
   }
 
-  background {
-    ^this.palette.window;
-  }
-
-  background_ { arg color;
-    this.palette = this.palette.window_(color);
-    this.setProperty( \autoFillBackground, true );
-  }
+  background { ^this.getProperty(\background); }
+  background_ { arg color; this.setProperty(\background, color); }
 
   // NOTE: only for backwards compatibility
   backColor_ { arg color;
diff --git a/SCClassLibrary/QtCollider/QWebView.sc b/SCClassLibrary/QtCollider/QWebView.sc
index 875c7e2..6c135dd 100644
--- a/SCClassLibrary/QtCollider/QWebView.sc
+++ b/SCClassLibrary/QtCollider/QWebView.sc
@@ -1,6 +1,6 @@
 QWebView : QView {
 
-  var <onLoadFinished, <onLoadFailed, <onLinkActivated, <onReload;
+  var <onLoadFinished, <onLoadFailed, <onLinkActivated, <onReload, <onJavaScriptMsg;
 
   *qtClass { ^'QtCollider::WebView'; }
 
@@ -101,6 +101,12 @@ QWebView : QView {
     onReload = func;
   }
 
+  onJavaScriptMsg_ { arg func;
+    this.manageFunctionConnection( onJavaScriptMsg, func,
+      'jsConsoleMsg(const QString&, int, const QString&)' );
+    onJavaScriptMsg = func;
+  }
+
   enterInterpretsSelection { ^this.getProperty( \enterInterpretsSelection ); }
 
   enterInterpretsSelection_ { arg bool;
diff --git a/SCClassLibrary/QtCollider/QWindow.sc b/SCClassLibrary/QtCollider/QWindow.sc
index bed1b89..d034634 100644
--- a/SCClassLibrary/QtCollider/QWindow.sc
+++ b/SCClassLibrary/QtCollider/QWindow.sc
@@ -64,11 +64,6 @@ QTopView : QView {
     this.setProperty( \geometry, rOld.resizeTo( rNew.width, rNew.height ) );
   }
 
-  background_ { arg color;
-    // Do not autoFillBackground; the widget will paint it if necessary.
-    this.palette = this.palette.window_(color);
-  }
-
   drawingEnabled_ { arg bool; this.setProperty( \drawingEnabled, bool ); }
 
   findWindow { ^window; }
@@ -80,16 +75,14 @@ QWindow
 {
   classvar <allWindows, <>initAction;
 
-  var resizable, <drawFunc, <onClose;
+  var resizable, <drawFunc;
   var <view;
 
   //TODO
   var <>acceptsClickThrough=false;
   var <currentSheet;
 
-  *initClass {
-    ShutDown.add( { QWindow.closeAll } );
-  }
+  *implementsClass {^'Window'}
 
   *screenBounds {
     _QWindow_ScreenBounds
@@ -173,10 +166,8 @@ QWindow
     view.setProperty( \geometry, rect.moveBy( 0, menuSpacer ) );
   }
 
-  onClose_ { arg func;
-    view.manageFunctionConnection( onClose, func, 'destroyed()', false );
-    onClose = func;
-  }
+  onClose { ^view.onClose }
+  onClose_ { arg func; view.onClose_(func) }
 
   // TODO
   addToOnClose{ arg function; }
diff --git a/SCClassLibrary/SCDoc/Help.sc b/SCClassLibrary/SCDoc/Help.sc
new file mode 100644
index 0000000..eadb0f1
--- /dev/null
+++ b/SCClassLibrary/SCDoc/Help.sc
@@ -0,0 +1,47 @@
+Help {
+	// These classvars and vars are part of the deprecated Help.tree stuff. When that stuff is removed from the classlib, this can be removed too.
+	classvar <global, categoriesSkipThese;
+	classvar <filterUserDirEntries, <>cachePath;
+	var	tree, fileslist, <root;
+
+
+
+	*gui {
+		HelpBrowser.instance.goHome;
+	}
+	*dir {
+		^SCDoc.helpTargetDir
+	}
+    *methodArgs {|string|
+        var class, meth, f, m;
+        f = string.findRegexp("(\\w*)\\.(\\w+)").flop[1];
+        if(f.notNil) {#class, meth = f[1..]} {
+            if(string[0].isUpper) {
+                class = string;
+                meth = \new;
+            } {
+                meth = string;
+            }
+        };
+        f = {|m,c|
+            class = (c ?? {m.ownerClass}).name;
+            class = if(class.isMetaClassName) {class.asString[5..]++" *"} {class.asString++" -"};
+            class++m.name++" ("++m.argNames[1..].collect {|n,i|
+                n.asString++":"+m.prototypeFrame[i+1];
+            }.join(", ")++")";
+        };
+        class = class.asSymbol.asClass;
+        if(class.notNil) {
+            m = class.class.findRespondingMethodFor(meth.asSymbol);
+            ^if(m.notNil) {f.value(m,class.class)} {""};
+        } {
+            ^Class.allClasses.reject{|c|c.isMetaClass}.collect {|c|
+                c.findMethod(meth.asSymbol);
+            }.reject{|m|m.isNil}.collect {|m|
+                f.value(m);
+            }.join($\n);
+        }
+    }
+
+}
+
diff --git a/SCClassLibrary/SCDoc/SCDoc.sc b/SCClassLibrary/SCDoc/SCDoc.sc
index 6889974..b9b2a55 100644
--- a/SCClassLibrary/SCDoc/SCDoc.sc
+++ b/SCClassLibrary/SCDoc/SCDoc.sc
@@ -16,7 +16,8 @@ SCDocEntry {
         <>additions,
         <>isExtension,
         <>mtime,
-        <>fullPath;
+        <>fullPath,
+        <>oldHelp;
 
     var <>isClassDoc;
     var <>klass, <>implKlass, <>implements;
@@ -29,15 +30,15 @@ SCDocEntry {
     prJSONString {|stream, key, x|
         if(x.isNil) { x = "" };
         stream << "'" << key << "': \"" << x.escapeChar(34.asAscii) << "\",\n";
-        
+
     }
     prJSONList {|stream, key, v|
         if(v.isNil) { v = "" };
-        stream << "'" << key << "': [ " << v.collect{|x|"'"++x++"'"}.join(",") << " ],\n";
+        stream << "'" << key << "': [ " << v.collect{|x|"\""++x.escapeChar(34.asAscii)++"\""}.join(",") << " ],\n";
     }
 
     toJSON {|stream|
-        stream << "'" << path << "': {\n";
+        stream << "\"" << path.escapeChar(34.asAscii) << "\": {\n";
         this.prJSONString(stream, "title", title);
         this.prJSONString(stream, "path", path);
         this.prJSONString(stream, "summary", summary);
@@ -47,6 +48,9 @@ SCDocEntry {
         this.prJSONList(stream, "keywords", keywords);
         this.prJSONList(stream, "related", related);
         this.prJSONList(stream, "methods", this.makeMethodList);
+        if(oldHelp.notNil) {
+            this.prJSONString(stream, "oldhelp", oldHelp);
+        };
         if(klass.notNil) {
             klass.superclasses !? {
                 this.prJSONList(stream, "superclasses", klass.superclasses.collect {|c|
@@ -68,7 +72,7 @@ SCDocEntry {
     *new {|node,path|
         ^super.new.init(node,path);
     }
-    
+
     *newUndocClass {|name|
         var doc = super.new.init(nil,"Classes/"++name.asString);
         var f, cats, implements, c;
@@ -98,14 +102,17 @@ SCDocEntry {
         doc.klass.categories !? {
             cats = cats ++ doc.klass.categories;
         };
-        doc.categories = cats;        
+        doc.categories = cats;
 
         ^doc;
     }
 
     init {|node,aPath|
         var hdr, bdy;
-        path = aPath;
+        // 'path' variable is used as a key for SCDoc.documents dictionary.
+        // Make sure it always uses forward slashes.
+        // FIXME: implement & use a generic path conversion method?
+        path = aPath.replace("\\","/");
         if(node.isNil) {^this};
         #hdr, bdy = node.children;
         isExtension = false;
@@ -201,7 +208,7 @@ SCDocEntry {
         } {
             implKlass = nil;
         };
-                    
+
         docmets = docimethods | privimethods | ignoreMethods;
         (mets = klass.methods) !? {
             mets.collectAs({|m|m.name.asGetter},IdentitySet).do {|name|
@@ -228,7 +235,7 @@ SCDocEntry {
         }
         ^list;
     }
-    
+
     prAddCopyMethod {|node, list|
         ^list.add(node.text.split($ )[1].drop(1))
     }
@@ -295,7 +302,7 @@ SCDocNode {
         };
         node.children = node.children.add(mets);
     }
-    
+
     sortClassDoc {
         var x = 0;
         // FIXME: does this work correctly for prose before first section, etc?
@@ -350,9 +357,10 @@ SCDocNode {
 
 SCDoc {
     // Increment this whenever we make a change to the SCDoc system so that all help-files should be processed again
-    classvar version = 55;
+    classvar version = 56;
 
     classvar <helpTargetDir;
+    classvar <helpTargetUrl;
     classvar <helpSourceDir;
     classvar <>verbosity = 1;
     classvar <>renderer;
@@ -385,6 +393,34 @@ SCDoc {
         _SCDoc_ParseFile
         ^this.primitiveFailed
     }
+    *indexOldHelp {
+        var f = {|x,cat="Old Helpfiles",indent=0|
+            var a,b,doc;
+            x.pairsDo {|k,v|
+                if(v.isKindOf(Dictionary)) {
+                    k = k.asString;
+                    a = 0;
+                    b = k.size-1;
+                    while({ $[ == k[a]},{a=a+1});
+                    while({ $] == k[b]},{b=b-1});
+                    k = k.copyRange(a,b);
+                    f.(v,cat++">"++k.asString,indent+1);
+                } {
+                    if(v.size>0) {
+                        doc = SCDocEntry(nil,"Old Help"+/+v);
+                        doc.oldHelp = URI.fromLocalPath(v).asString;
+                        doc.title = v.basename;
+                        doc.summary = "(not yet converted to new help format)";
+                        doc.categories = [cat];
+                        doc.isExtension = true;
+                        SCDoc.documents[doc.path] = doc;
+                    }
+                }
+            }
+        };
+        Help.rebuildTree;
+        f.(Help.tree);
+    }
     *indexAllDocuments { |clearCache=false|
         var now = Main.elapsedTime;
         var key, doc;
@@ -400,7 +436,7 @@ SCDoc {
                 case
                 {f.fullPath.endsWith(".ext.schelp")} {
                     f = f.fullPath;
-                    key = f[dir.size+1 ..].drop(-11);
+                    key = f[dir.size+1 ..].drop(-11).replace("\\","/");
                     additions[key] = additions[key].add(f);
                 }
                 {f.extension=="schelp"} {
@@ -446,6 +482,8 @@ SCDoc {
                 File.copy(x[0],dest);
             };
         };
+        this.postMsg("Indexing old helpfiles...");
+        this.indexOldHelp;
         this.postMsg("Exporting docmap.js...",1);
         this.exportDocMapJS(this.helpTargetDir +/+ "docmap.js");
         this.postMsg("Indexed % documents in % seconds".format(documents.size,round(Main.elapsedTime-now,0.01)),0);
@@ -497,8 +535,9 @@ SCDoc {
     *helpTargetDir_ {|path|
 //        if(path!=helpTargetDir) {didRun = false};
         helpTargetDir = path.standardizePath;
+        helpTargetUrl = URI.fromLocalPath(helpTargetDir).asString;
     }
-    
+
     *postMsg {|txt, lvl=0|
         if(verbosity>lvl) {
             postln("SCDoc: "++txt);
@@ -514,7 +553,7 @@ SCDoc {
                     root.children[1].merge(add);
                 }
             };
-            this.handleCopyMethods(root);
+            this.handleCopyMethods(root,doc);
         };
         ^root;
     }
@@ -529,22 +568,52 @@ SCDoc {
     }
 
     *prepareHelpForURL {|url|
-        var proto, path, query, anchor;
+        var path, targetBasePath, pathIsCaseInsensitive;
         var subtarget, src, c, cmd, doc, destExist, destMtime;
         var verpath = this.helpTargetDir +/+ "version";
 
-        url = url.replace("%20"," ");
-        #proto, path, query, anchor = url.findRegexp("(^\\w+://)?([^#?]+)(\\?[^#]+)?(#.*)?")[1..].flop[1];
-        if(proto.isEmpty) {proto="file://"};
-        if(proto!="file://") {^url}; // just pass through remote url's
-        if(path.beginsWith(helpTargetDir).not) {^url}; // just pass through non-help url's
-        
-        if(destExist = File.existsCaseSensitive(path)) {
+        path = url.asLocalPath;
+
+        // detect old helpfiles and wrap them in OldHelpWrapper
+        if(url.scheme == "sc") { ^URI(SCDoc.findHelpFile(path)); };
+
+        // just pass through remote url's
+        if(url.scheme != "file") {^url};
+
+        targetBasePath = SCDoc.helpTargetDir;
+        if (thisProcess.platform.name === \windows)
+            { targetBasePath = targetBasePath.replace("/","\\") };
+        pathIsCaseInsensitive = thisProcess.platform.name === \windows;
+
+        // detect old helpfiles and wrap them in OldHelpWrapper
+        if(
+            /*
+            // this didn't work for quarks due to difference between registered old help path and the quarks symlink in Extensions.
+            // we could use File.realpath(path) below but that would double the execution time,
+            // so let's just assume any local file outside helpTargetDir is an old helpfile.
+            block{|break|
+            Help.do {|key, path|
+            if(url.endsWith(path)) {
+            break.value(true)
+            }
+            }; false
+            }*/
+            compare(
+                path [..(targetBasePath.size-1)],
+                targetBasePath,
+                pathIsCaseInsensitive
+            ) != 0
+        ) {
+            ^SCDoc.getOldWrapUrl(url)
+        };
+
+        if(destExist = File.exists(path))
+        {
             destMtime = File.mtime(path);
         };
-                
+
         if(path.endsWith(".html")) {
-            subtarget = path.drop(this.helpTargetDir.size+1).drop(-5);
+            subtarget = path.drop(this.helpTargetDir.size+1).drop(-5).replace("\\","/");
             doc = this.documents[subtarget];
             doc !? {
                 if(doc.isUndocumentedClass) {
@@ -575,7 +644,7 @@ SCDoc {
             ^url;
         };
 
-        warn("SCDoc: Broken link:"+url);
+        warn("SCDoc: Broken link:" + url.asString);
         ^nil;
     }
 
@@ -584,7 +653,7 @@ SCDoc {
         this.helpTargetDir_(thisProcess.platform.userAppSupportDir +/+ "Help");
         renderer = SCDocHTMLRenderer;
     }
-    
+
     *classHasArKrIr {|c|
         ^#[\ar,\kr,\ir].collect {|m| c.class.findRespondingMethodFor(m).notNil }.reduce {|a,b| a or: b};
     }
@@ -606,7 +675,7 @@ SCDoc {
     *renderAll {|includeExtensions=true|
         this.postMsg("Rendering all documents");
         this.documents.do {|doc|
-            if(includeExtensions or: {doc.isExtension.not}) {
+            if(doc.oldHelp.isNil and: {includeExtensions or: {doc.isExtension.not}}) {
                 if(doc.isUndocumentedClass) {
                     this.renderUndocClass(doc);
                 } {
@@ -723,7 +792,7 @@ SCDoc {
                 }
             }
         };
-        
+
         var err = {|txt|
             warn("SCDoc.getMethodDoc(%, %): %".format(classname,methodname,txt));
         };
@@ -756,11 +825,15 @@ SCDoc {
         ^node;
     }
 
-    *handleCopyMethods {|node|
+    *handleCopyMethods {|node,doc|
         var found = {|n|
-            var name, met;
+            var name, met, x;
             #name, met = n.text.findRegexp("[^ ,]+").flop[1];
-            this.getMethodDoc(name, met);
+            x = this.getMethodDoc(name, met);
+            if(x.isNil) {
+                warn("  from: %".format(doc.fullPath));
+            };
+            x;
         };
 
         node.children.do{|n,i|
@@ -769,32 +842,127 @@ SCDoc {
                 \ICOPYMETHOD, { n = found.(n); n !? {n.id_(\IMETHOD); node.children[i] = n} },
                 \COPYMETHOD, { n = found.(n); n !? {n.id_(\METHOD); node.children[i] = n} },
                 {
-                    this.handleCopyMethods(n);
+                    this.handleCopyMethods(n,doc);
                 }
             );
         };
     }
 
     *findHelpFile {|str|
-//        ^r.findHelpFile(str.stripWhiteSpace);
-        var old, sym, pfx = "file://" ++ SCDoc.helpTargetDir;
+        var old, sym, pfx = SCDoc.helpTargetUrl;
 
-        if(str.isNil or: {str.isEmpty}) { ^pfx +/+ "Help.html" };
-        if(this.documents[str].notNil) { ^pfx +/+ str ++ ".html" };
+        if(str.isNil or: {str.isEmpty}) { ^pfx ++ "/Help.html" };
+        if(this.documents[str].notNil) { ^pfx ++ "/" ++ str ++ ".html" };
 
         sym = str.asSymbol;
         if(sym.asClass.notNil) {
-            ^pfx +/+ (if(this.documents["Classes"+/+str].isUndocumentedClass) {
+            ^pfx ++ (if(this.documents["Classes/"++str].isUndocumentedClass) {
                 (old = Help.findHelpFile(str)) !? {
-                    "OldHelpWrapper.html#"++old++"?"++SCDoc.helpTargetDir +/+ "Classes" +/+ str ++ ".html"
+                    "/OldHelpWrapper.html#"++old++"?"++SCDoc.helpTargetUrl ++ "/Classes/" ++ str ++ ".html"
                 }
-            } ?? { "Classes" +/+ str ++ ".html" })
+            } ?? { "/Classes/" ++ str ++ ".html" });
         };
 
         if(str.last == $_) { str = str.drop(-1) };
-        ^pfx +/+ if("^[a-z][a-zA-Z0-9_]*$|^[-<>@|&%*+/!?=]+$".matchRegexp(str)) {
-            "Overviews/Methods.html#" ++ str
-        } { "Search.html#" ++ str }
+        ^pfx ++ if("^[a-z][a-zA-Z0-9_]*$|^[-<>@|&%*+/!?=]+$".matchRegexp(str))
+            { "/Overviews/Methods.html#" } { "/Search.html#" } ++ str;
+    }
+
+    *getOldWrapUrl {|url|
+        var urlString, className, newUrl;
+        urlString = url.asString;
+        newUrl = URI.fromLocalPath( SCDoc.helpTargetDir +/+ "OldHelpWrapper.html" );
+        newUrl.fragment = urlString;
+        newUrl.query =
+            SCDoc.helpTargetUrl
+            ++ if((className=urlString.basename.split($.).first).asSymbol.asClass.notNil)
+                {"/Classes/" ++ className ++ ".html"}
+                {"/Guides/WritingHelp.html"}
+        ^newUrl;
+    }
+}
+
+URI {
+    /*
+    NOTE:
+    This class attempts compliance with specification
+    Uniform Resource Identifier (URI): Generic Syntax (RFC 3986)
+    http://datatracker.ietf.org/doc/rfc3986/
+
+    If you intend to modify it, please consult the specification!
+    */
+
+    classvar parseRegexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?";
+
+    var <>scheme, <>authority, <>path, <>query, <>fragment;
+
+    *new { |validUriString|
+        ^super.new.init(validUriString)
+    }
+
+    *fromLocalPath { |string|
+        var uri = super.new;
+        uri.scheme = "file";
+        uri.authority = "";
+        uri.path = string;
+        if (thisProcess.platform.name === \windows) {
+            uri.path = uri.path.replace("\\","/");
+            if (uri.path.size >= 2 and: {uri.path[1] == $:})
+            { uri.path = "/" ++ uri.path; }
+        }
+        ^ uri;
+    }
+
+    *tolerant { |string|
+        var uri;
+
+        if (thisProcess.platform.name === \windows
+            and: { string.size >= 2 and: { string[1] == $:} } )
+        {
+            ^ this.fromLocalPath(string);
+        };
+
+        uri = this.new(string);
+        if (uri.scheme.isNil) {
+            uri.scheme = "file";
+            if (uri.authority.isNil) { uri.authority = "" }
+        };
+        ^ uri;
+    }
+
+    init { |string|
+        var result;
+        if (string.notNil) {
+            string = string.replace("%20"," ");
+            result = string.findRegexp( parseRegexp ).flop[1];
+            if (result[1].size > 0) { scheme = result[2] };
+            if (result[3].size>0) { authority = result[4] };
+            path = result[5];
+            if (result[6].size > 0) { query = result[7] };
+            if (result[8].size > 0) { fragment = result[9] };
+        };
+    }
+
+    asLocalPath {
+        var localPath;
+        if (scheme != "file") { ^nil };
+        if (thisProcess.platform.name === \windows) {
+            localPath = path;
+            if (localPath.beginsWith("/")) { localPath = localPath.drop(1) };
+            localPath = localPath.replace("/","\\");
+            ^localPath;
+        }
+        ^ path.copy;
+    }
+
+    asString {
+        var str = "";
+        if (scheme.notNil) { str = str ++ scheme ++ ":" };
+        if (authority.notNil) { str = str ++ "//" ++ authority };
+        str = str ++ path;
+        if (query.notNil) { str = str ++ "?" ++ query };
+        if (fragment.notNil) { str = str ++ "#" ++ fragment };
+        ^str;
     }
 }
 
@@ -817,7 +985,6 @@ SCDoc {
 
 		^lines;
 	}
-
 }
 
 + Method {
@@ -831,9 +998,3 @@ SCDoc {
         );
     }
 }
-
-+ Help {
-	*dir {
-		^SCDoc.helpTargetDir
-	}
-}
diff --git a/SCClassLibrary/SCDoc/SCDocRenderer.sc b/SCClassLibrary/SCDoc/SCDocRenderer.sc
index 9f5dff5..0ad846b 100644
--- a/SCClassLibrary/SCDoc/SCDocRenderer.sc
+++ b/SCClassLibrary/SCDoc/SCDocRenderer.sc
@@ -105,8 +105,9 @@ SCDocHTMLRenderer {
         var undocumented = false;
         if(folder==".",{folder=""});
         
+        // FIXME: use SCDoc.helpTargetDir relative to baseDir
         baseDir = ".";
-        doc.path.occurrencesOf(Platform.pathSeparator).do {
+        doc.path.occurrencesOf($/).do {
             baseDir = baseDir ++ "/..";
         };
 
@@ -158,7 +159,8 @@ SCDocHTMLRenderer {
             if(currentClass.notNil) {
                 m = currentClass.filenameSymbol.asString;
                 stream << "<div id='filename'>Source: "
-                << m.dirname << "/<a href='file://" << m << "'>" << m.basename << "</a></div>";
+                << m.dirname << "/<a href='" << URI.fromLocalPath(m).asString << "'>"
+                << m.basename << "</a></div>";
                 if(currentClass != Object) {
                     stream << "<div id='superclasses'>"
                     << "Inherits from: "
@@ -302,7 +304,8 @@ SCDocHTMLRenderer {
             m !? {
                 if(m.isExtensionOf(cls) and: {icls.isNil or: {m.isExtensionOf(icls)}}) {
                     stream << "<div class='extmethod'>From extension in <a href='"
-                    << m.filenameSymbol << "'>" << m.filenameSymbol << "</a></div>\n";
+                    << URI.fromLocalPath(m.filenameSymbol.asString).asString << "'>"
+                    << m.filenameSymbol << "</a></div>\n";
                 } {
                     if(m.ownerClass == icls) {
                         stream << "<div class='supmethod'>From implementing class</div>\n";
@@ -768,8 +771,8 @@ SCDocHTMLRenderer {
     *renderFooter {|stream, doc|
         stream << "<div class='doclink'>";
         doc.fullPath !? {
-            stream << "source: <a href='file://"
-            << doc.fullPath << "'>" << doc.fullPath << "</a><br>"
+            stream << "source: <a href='" << URI.fromLocalPath(doc.fullPath).asString << "'>"
+            << doc.fullPath << "</a><br>"
         };
         stream << "link::" << doc.path << "::<br>"
         << "sc version: " << Main.version << "</div>"
diff --git a/SCClassLibrary/SCDoc/TODO b/SCClassLibrary/SCDoc/TODO
index dff2594..294026b 100644
--- a/SCClassLibrary/SCDoc/TODO
+++ b/SCClassLibrary/SCDoc/TODO
@@ -4,7 +4,6 @@ TODO
 - should we allow *.ext.schelp to add to related:: and categories:: ?
 
 - clean up old-help compatibility, do we really need it in both HelpBrowser-goTo and SCDoc.findHelpFile?
-  And automatically call Help.rebuildTree on startup?
 
 - HelpBrowser: clean up openNewWindows setting. only have a single class variable?
 
@@ -90,7 +89,7 @@ Methods to deprecate?
 
 Methods done but could be improved:
     // Class : helpFileForMethod  - FIXME: should jump to method anchor
-    // Method : openHelpFile - FIXME: should jump to method anchor
+    // Method : help - FIXME: should jump to method anchor
 
 Also deprecate class.categories since this is now in the helpfiles instead?
 (categories can still be reached run-time from SCDoc.documents[path])
diff --git a/SCClassLibrary/deprecated/Helper/autoClassHelper.sc b/SCClassLibrary/deprecated/Helper/autoClassHelper.sc
deleted file mode 100644
index fed488c..0000000
--- a/SCClassLibrary/deprecated/Helper/autoClassHelper.sc
+++ /dev/null
@@ -1,357 +0,0 @@
-// a class for autogenerating help files from source markup
-// a special multiline comment is used: /*@@*/
-// plus some other conventions
-// After class name you can write
-/*@
-shortDesc: description of the method
-longDesc: longer one
-seeAlso: refs
-issues: other aspects
-testvar: a name of a instance var
-classtestvar: a name of a class var
-instDesc: the name of the instance methods section
-longInstDesc: a comment related to the instance methods section
-@*/
-//
-// After each method you can write
-/*@
-desc: a description of the method
-argName: for each arg. Default value is added automatically
-ex: multiline example
-@*/
-// started after 04/11/07
-// andreavalle
-
-AutoClassHelper {
-
-	var class, path, parser, classDoc, cmDict, imDict ;
-	var shortDesc, longDesc, seeAlso, issues, instDesc, longInstDesc ;
-	var varDict ;
-	var doctype, head, preface, examples ;
-
-	*new { arg undocumentedClass, path ;
-			^super.new.initClassHelper( undocumentedClass, path )
-	}
-
-	initClassHelper { arg aClass, aPath ;
-		class = aClass ;
-		parser = DocParser.new(class) ;
-		classDoc = parser.getDocs[0] ;
-		cmDict = parser.getDocs[1] ;
-		imDict = parser.getDocs[2] ;
-		varDict = IdentityDictionary.new ;
-		// <head> tag
-		head = "
-<head>
-<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
-<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
-<title></title>
-<meta name=\"Generator\" content=\"Cocoa HTML Writer\">
-<meta name=\"CocoaVersion\" content=\"824.42\">
-<style type=\"text/css\">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #d40000}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #d40000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1200c4}
-span.s3 {color: #1200c4}
-span.s4 {color: #000000}
-span.s5 {color: #1200c4}
-span.s6 {color: #d40000}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {color: #0000ff}
-span.s9 {color: #1200c4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-" ;
-			doctype = "
-<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
-" ;
-		path = aPath ;
-		if ( path.isNil, {
-			GUI.current.dialog.savePanel({ arg newPath ;
-				 path = newPath ; {this.makeHelp}.defer })
-			}, { this.makeHelp }) ;
-
-	}
-
-	makeHelp {
-		var title = class.name.asString ;
-		var preface = this.createPreface ;
-		var classMethodBlock = this.createClassMethodBlock ;
-		var getterSetter = this.createGetterSetterBlock ;
-		var instanceMethodBlock = this.createInstanceMethodBlock ;
-		var doc, content ;
-		// here we put together all the stuff
-		content = doctype +
-				 "<hmtl>\n"+
-				 head+
-				 "<body>\n"+
-				 preface +
-				 classMethodBlock +
-				 getterSetter +
-				instanceMethodBlock +
-				// examples+
-				 "</body>"+
-				 "</html>" ;
-		File.new(path, "w")
-				.write(content)
-				.close ;
-		// and reopen thru class.openHelpFile
-		// open works if the path is a place where SC looks for Help files
-		class.openHelpFile
-	}
-
-	createPreface {
-		var superclasses, parents = "" ;
-		this.createClassDocBlock ;
-		// here only for the special case of Object
-		superclasses = if ( class == Object, { nil }, { class.superclasses.reverse }) ;
-		superclasses.do({arg item ; parents = parents+item+":" }) ;
-		^preface = "
-<p class=\"p1\"><span class=\"s1\"><b>SomeClass<span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></b></span><b>shortDesc</b><span class=\"s1\"><b><span class=\"Apple-tab-span\">	</span></b></span></p>
-<p class=\"p2\"><br></p>
-<p class=\"p1\"><b>Inherits from: </b><b>Parents</b></p>
-<p class=\"p3\"><br></p>
-<p class=\"p1\">longDesc</p>
-<p class=\"p2\"><br></p>
-<p class=\"p1\"><b>See also:</b> seeAlso</p>
-<p class=\"p2\"><br></p>
-<p class=\"p4\"><b>Other Issues</b></p>
-<p class=\"p2\"><br></p>
-<p class=\"p1\">issues</a></p>
-<p class=\"p2\"><br></p>
-"			.replace("SomeClass", class.name.asString)
-			.replace("Parents", parents[..parents.size-2])
-			.replace("shortDesc", shortDesc)
-			.replace("longDesc", longDesc)
-			.replace("issues", issues)
-			.replace("seeAlso", seeAlso)
-
-	}
-
-	createClassMethodBlock {
-		var isEx, methodTitle ;
-		var classMethods = "
-<p class=\"p4\"><b>Creation / Class Methods</b></p>
-<p class=\"p5\"><br></p>
-" ;
-		var method, name, args, def, txt, ex, default ;
-		cmDict.keys.asArray.sort.do({ arg key ;
-			isEx = false ;
-			method = cmDict[key][0] ;
-			name = method.name ;
-			methodTitle = "
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>name</b></p>
-"				.replace("name", "*"++name+this.makeName(method)) ;
-			if ( cmDict[key][1] != "", {classMethods = classMethods + methodTitle }) ;
-			args = cmDict[key][1].split($\n).reject({|i| i.size < 2}) ;
-			args[..args.size-2].do({ arg line ;
-				case	{ line.contains("desc:") }
-						{ 	def = line.split($:)[0] ;
-							txt = line.split($:)[1] ;
-							classMethods = classMethods + "
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></b>desc</p>
-" 					.replace("desc", txt)
-							 }
-					{ line.contains("ex:") }
-						{ 	isEx = true ;
-							def = line.split($:)[0] ;
-							txt = line.split($:)[1] ;
-							classMethods = classMethods +
-"
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></p>
-<p class=\"p9\"><span class=\"s4\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></span>// Example</p>
-<p class=\"p10\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>ex</p>
-"
- 					.replace("ex", txt)
-							}
-
-					{ line.contains("desc:").not && isEx }
-						{ 	classMethods = classMethods +
-"<p class=\"p10\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>ex</p>"
- 					.replace("ex", line)
-							}
-
-					{ line.contains("desc:").not }
-						{
-							def = line.split($:)[0] ;
-							default = this.getDefault(method, def) ;
-							txt = line.split($:)[1] ;
-							classMethods = classMethods +
-"
-<p class=\"p8\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><b>def </b>- txt. Default value is dfv.</p>
-" 							.replace("def", def)
-							.replace("txt", txt).replace("dfv", default);
-
-							}
-			});
-		}) ;
-		^(classMethods+"<p class=\"p5\"><br></p>\n")
-
-	}
-
-
-	makeName { arg method ;
-		var name = method.argumentString.replace("this, ", "").split($,)
-			.collect({ arg i ; i.split($=)[0]}).asString ;
-			^"("++name[2..name.size-3]++")"
-
-	}
-
-	getDefault { arg method, name ;
-		var mString = method.argumentString.replace(" ", "") ;
-		var pos ;
-		var next ;
-		name = name.reject( { arg i; i.isAlphaNum.not } ) ;
-		pos = mString.find(name) ;
-		if ( pos.notNil, {
-			 next = mString[pos+name.size] ;
-				if (next == $=, { mString = mString[pos+name.size..].split($=)[1] ;
-								^mString = mString.split($,)[0] },
-							{^"nil"})
-			}, {^"nil"})
-	}
-
-	createInstanceMethodBlock {
-		var isEx, methodTitle ;
-		var instanceMethods = "<p class=\"p11\"><b>instDesc</b></p>
-<p class=\"p12\"><br></p>
-<p class=\"p6\">longInstDesc</p>
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span></p>
-" 			.replace("instDesc", instDesc)
-			.replace("longInstDesc", longInstDesc)
-			;
-		var method, name, args, def, txt, ex, default ;
-		imDict.keys.asArray.sort.do({ arg key ;
-		 	isEx = false ;
-			method = imDict[key][0] ;
-			name = method.name ;
-			methodTitle = "<p class=\"p5\"><br></p>\n"+
-			"
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>name</b></p>
-"				.replace("name", name++" "++this.makeName(method)) ;
-			if ( imDict[key][1] != "", { instanceMethods = instanceMethods + methodTitle }) ;
-			args = imDict[key][1].split($\n).reject({|i| i.size < 2}) ;
-			args[..args.size-2].do({ arg line ;
-				case	{ line.contains("desc:") }
-						{ 	def = line.split($:)[0] ;
-							txt = line.split($:)[1] ;
-							instanceMethods = instanceMethods + "
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></b>desc</p>
-" 					.replace("desc", txt)
-							 }
-					{ line.contains("ex:") }
-						{ 	isEx = true ;
-							def = line.split($:)[0] ;
-							txt = line.split($:)[1] ;
-							instanceMethods = instanceMethods +
-"
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></p>
-<p class=\"p9\"><span class=\"s4\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></span>// Example</p>
-<p class=\"p10\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>ex</p>
-"
- 					.replace("ex", txt)
-							}
-
-					{ line.contains("desc:").not && isEx }
-						{
-							instanceMethods = instanceMethods +
-"<p class=\"p10\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>ex</p>"
- 					.replace("ex", line)
-							}
-
-
-					{ line.contains("desc:").not }
-						{ 	def = line.split($:)[0] ;							default = this.getDefault(method, def) ;
-							txt = line.split($:)[1] ;
-							instanceMethods = instanceMethods +
-"
-<p class=\"p8\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><b>def </b>- txt. Default value is dfv.</p>
-" 							.replace("def", def).replace("txt", txt).replace("dfv", default);
-
-							}
-			});
-		}) ;
-		^(instanceMethods+"<p class=\"p5\"><br></p>\n")
-	}
-
-
-	createClassDocBlock {
-		var args = classDoc.split($\n).reject({|i| i.size < 2}) ;
-		args.do({ arg line ;
-			case	{ line.contains("shortDesc:") }
-					{ shortDesc = line.split($:)[1] ; }
-				{ line.contains("longDesc:") }
-					{ longDesc = line.split($:)[1] ; }
-				{ line.contains("seeAlso:") }
-					{ seeAlso = line.split($:)[1] ; }
-				{ line.contains("issues:") }
-					{ issues = line.split($:)[1] ; }
-				{ line.contains("instDesc:") }
-					{ instDesc = line.split($:)[1] ; }
-				{ line.contains("longInstDesc:") }
-					{ longInstDesc = line.split($:)[1] ; }
-				// residual: allows to create the varDict
-				{ line.contains("longInstDesc:").not }
-					{ varDict.add( line.split($:)[0]
-						.select({|i| i.isAlphaNum })
-						.asSymbol
-						-> line.split($:)[1] ); }
-			}) ;
-	}
-
-
-	createGetterSetterBlock {
-		var getterSetterBlock = "
-<p class=\"p11\"><b>Accessing Instance and Class Variables</b></p>
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span></p>
-" ;
-		var getters = parser.getters.collect(_.name) ;
-		var setters = parser.setters.collect(_.name) ;
-		var name, comment, line ;
-		varDict.keys.do({ arg key ;
-			comment = varDict[key] ;
-			line = "" ;
-			line = if ( getters.includes(key), {
-"
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>someVar</b></p>
-"				.replace("someVar", key.asString)
-			},{""}) ;
-			if ( setters.includes((key++"_").asSymbol), {  line = line +
-"
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>someVar_</b></p>
-"				.replace("someVar", key.asString)
-			}) ;
-			if ( class.classVarNames.includes(key), {  line = line +
-"
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>someVar</b></p>
-"				.replace("someVar", key.asString)
-
-			}) ;
-			getterSetterBlock = getterSetterBlock + line +
-"
-<p class=\"p7\"><b><span class=\"Apple-tab-span\">	</span></b><span class=\"Apple-tab-span\">	</span></p>
-<p class=\"p6\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>"+comment+"</p>
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></p>
-"
-		}) ;
-		^getterSetterBlock
-	}
-
-}
-
-//"
diff --git a/SCClassLibrary/deprecated/Helper/autoClassHelperTest.sc b/SCClassLibrary/deprecated/Helper/autoClassHelperTest.sc
deleted file mode 100644
index fa53464..0000000
--- a/SCClassLibrary/deprecated/Helper/autoClassHelperTest.sc
+++ /dev/null
@@ -1,127 +0,0 @@
-// a class testing autodoc. You will see some naming conventions and a special comment block
-// adding @ to multiline comment
-// In the following we try to test all the possible situations
-
-/*
-You can use multiline comments here
-*/
-
-AutoClassHelperTest {
-
-	// this is a fake class indeed
-
-	/*@
-	shortDesc: A class to test automatic documentation from source
-	longDesc: The only limit of this tag is that it cannot break a line. This can be cumbersone, indeed. You can use <br> blocks. You will see that you have to specify in the source what you want to document. Note in any case that for specified args in method the default value is extracted automatically. Works with the Class template (no sense for UGens).
-	seeAlso: Homunculus, Leviathan
-	issues: Caution! Frailty thy name is AutoClassHelper. You can omit tags but in order to have it running you cannot change their order. More, it works only for the first class defined in a source file. Note also that actually it assumes that you have one class for sourcefile.  It crashes if there's no class desc block. If method block descriptions are not indented as demonstrated they are not recognized properly. <br> Please use conventions specified in this class source file.
-	testvar: nothing special
-	classtestvar: really interesting
-	instDesc: How to become an anthropogenist
-	longInstDesc: It's easy. Consider using the following methods.
-	@*/
-
-	var <>testvar, <another, >one, last ;
-	// if you like to comment here, you can
-	classvar classtestvar ;
-
-	*new { arg ens = "Adam";
-
-		// if you like to comment here, you can
-		// for each method you can (optionally) provide
-		// desc: a description line
-		// arg: each argument
-		// ex: a (multiline) example
-
-		/*@
-		desc: creation is typically reserved to God. Args follows.
-		ens: it's a good start
-		ex:
-		// a multiline example is possible
-		// assuming that ex tag is the LAST one
-		// a pity: no colored syntax
-		TestClass.new("Eve").postln ; // comment
-		TestClass.class.postln ;
-		k = \aSymbol ;
-		j = "a string" ;
-		@*/
-		// if you like to comment here, you can
-		^super.new.init(ens);
-	}
-
-	*open { arg ensPattern ;
-		// nothing should appear in docs
-		"creating from a mould".postln ;
-	}
-
-	init { arg testArg ;
-		// here we omit description
-		^testArg ;
-	}
-
-/*
-Maybe you want to separate blocks of source code
-with multiline.
-You can, indeed
-*/
-
-// start working stuff
-
-	generate { arg fromScratch = true, deus ;
-		/*@
-		fromScratch: whether you're a real constructivist or not
-		deus: sive natura (as you prefer)
-		@*/
-		"I like test".postln ;
-	}
-
-	destroy { arg ens, method = \evaporate ;
-		/*@
-		desc: it's a dirty job, but someone's got to do it
-		method: there are many options. Quite efficient implementation
-		@*/
-		^nil
-	}
-
-	makeBadKarma { arg ens, toMineral = true ;
-		/*@
-		desc: "you can't always get what you want"
-		toMineral: back to the roots
-		ex:
-		k = AutoDocTestClass.new ;
-		k.makeBadKarma(toMineral: false) ;
-		@*/
-		^nil
-	}
-
-// stop real working stuff
-
-}
-
-
-// only the first class in a source file can be documented.
-// If you ask for autodoc on AutoDocTestClass2, e.g.
-// 		AutoClassHelper(AutoDocTestClass2)
-// SC raises an error.
-// If AutoDocTestClass2 is in a separate file, all is ok.
-// Note that at least you need a /*@@*/ block in the class you need to document,
-// otherwise SC raises an error
-// (well, does not make sense to autogenerate ah help file from no provided infos)
-
-
-AutoDocTestClass2 {
-
-
-	print { arg first, second ;
-		[first, second].postln ;
-	}
-
-	test { arg aTest ;
-		/*@
-		desc: "Saigon, shit, I'm still only in Saigon"
-		@*/
-		aTest.postln ;
-	}
-
-
-}
diff --git a/SCClassLibrary/deprecated/Helper/classHelper.sc b/SCClassLibrary/deprecated/Helper/classHelper.sc
deleted file mode 100644
index 9423e9d..0000000
--- a/SCClassLibrary/deprecated/Helper/classHelper.sc
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
-// Helper, ClassHelper, UGenHelper, TopicHelper
-// (In this file: ClassHelper)
-// ________________________________
-//
-// Classes to auto generate help files following style guides.
-// See Helper source for more comments
-// started on 04/11/07 - andreavalle
-*/
-
-
-ClassHelper {
-
-	var <>class, <>path ;
-	classvar doctype, head, preface, examples, parents ;
-
-	*new { arg class, path ;
-		this.deprecated;
-		^super.new.initClassHelper( class, path )
-	}
-
-	initClassHelper { arg aClass, aPath ;
-		var superclasses ;
-		parents  = "" ;
-		// here only for the special case of Object
-		superclasses = if ( aClass == Object, { nil }, { aClass.superclasses.reverse }) ;
-		superclasses.do({arg item ; parents = parents+item+":" }) ;
-		class = aClass ;
-		path = aPath ;
-		if ( path.isNil, {
-			GUI.current.dialog.savePanel({ arg newPath ;
-				 path = newPath ; {this.makeHelp}.defer })
-			}, { this.makeHelp }) ;
-	}
-
-	createText {
-		// <head> tag
-		head = "
-<head>
-<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
-<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
-<title>SuperCollider Help -"++class.name.asString++"</title>
-<meta name=\"Generator\" content=\"Cocoa HTML Writer\">
-<meta name=\"CocoaVersion\" content=\"824.42\">
-<style type=\"text/css\">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica}
-p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #d40000}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica}
-p.p12 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 14.0px Helvetica; min-height: 17.0px}
-p.p13 {margin: 0.0px 0.0px 0.0px 85.0px; text-indent: -85.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #d40000}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1200c4}
-span.s3 {color: #1200c4}
-span.s4 {color: #000000}
-span.s5 {color: #1200c4}
-span.s6 {color: #d40000}
-span.s7 {font: 12.0px Helvetica; color: #000000}
-span.s8 {color: #1200c4}
-span.s9 {color: #1200c4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-" ;
-		preface = "
-<p class=\"p1\"><span class=\"s1\"><b>SomeClass<span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></b></span><b>explanation of what SomeClass is and/or does</b><span class=\"s1\"><b><span class=\"Apple-tab-span\">	</span></b></span></p>
-<p class=\"p2\"><br></p>
-<p class=\"p1\"><b>Inherits from: </b><b>Parents</b></p>
-<p class=\"p3\"><br></p>
-<p class=\"p1\">More detailed prose description of SomeClass.</p>
-<p class=\"p2\"><br></p>
-<p class=\"p1\"><b>See also:</b> <a href=\"../Core/Object.html\"><span class=\"s2\">Object</span></a> [some other help files]</p>
-<p class=\"p2\"><br></p>
-<p class=\"p4\"><b>Some Important Issues Regarding SomeClass (optional)</b></p>
-<p class=\"p2\"><br></p>
-<p class=\"p1\">Explanation of the issues. For more information see <a href=\"../Core/Nil.html\"><span class=\"s3\">Nil</span></a> and [some other help files].</p>
-<p class=\"p2\"><br></p>
-"			.replace("SomeClass", class.name.asString)
-			.replace("Parents", parents[..parents.size-2]) ;
-			doctype = "
-<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
-" ;
-		examples = "
-<p class=\"p11\"><b>Examples</b></p>
-<p class=\"p3\"><br></p>
-<p class=\"p14\">// what this example does</p>
-<p class=\"p15\">e = <span class=\"s9\">SomeClass</span>.new;</p>
-<p class=\"p15\">e.instanceMethod(someObject);</p>
-<p class=\"p15\">e.cleanUp;</p>
-<p class=\"p3\"><br></p>
-<p class=\"p15\">...</p>
-"			.replace("SomeClass", class.name.asString) ; // g is default SwingOSC server, hence e
-	}
-
-	makeHelp {
-		var title = class.name.asString ;
-		var classMethodBlock = this.createClassMethodBlock ;
-		var getterSetter = this.createGetterSetterBlock ;
-		var instanceMethodBlock = this.createInstanceMethodBlock ;
-		var doc, content ;
-		this.createText ;
-		// here we put together all the stuff
-		content = doctype +
-				 "<hmtl>\n"+
-				 head+
-				 "<body>\n"+
-				 preface+
-				 classMethodBlock +
-				 getterSetter +
-				 instanceMethodBlock +
-				 examples+
-				 "</body>"+
-				 "</html>" ;
-		// when a path is provided, the file is written there
-		File.new(path, "w")
-				.write(content)
-				.close ;
-		// and reopen thru class.openHelpFile
-		// open works if the path is a place where SC looks for Help files
-		class.openHelpFile
-	}
-
-
-
-	createClassMethodBlock {
-		var classMethods = "
-<p class=\"p4\"><b>Creation / Class Methods</b></p>
-<p class=\"p5\"><br></p>
-" ;
-		var methods = class.class.methods.collect(_.name) ;
-		var methodBlock = "" ;
-		methods.do({ arg m ;
-			methodBlock = methodBlock+
-			this.createMethod([m,
-				class.class.findMethod(m).argNames,
-				 class.class.findMethod(m).argumentString
-				]) ;
-		 }) ;
-		^(classMethods+methodBlock) ;
-	}
-
-
-	// replicated
-	createInstanceMethodBlock {
-		var instanceMethods = "<p class=\"p11\"><b>Doing Some Task (optional)</b></p>
-<p class=\"p12\"><br></p>
-<p class=\"p6\">A short bit of prose explaining something about the task.</p>
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span></p>
-" ;
-		var methods = class.methods.collect(_.name) ;
-		var methodBlock = "" ;
-		methods.do({ arg m ;
-			methodBlock = methodBlock+
-			this.createMethod([m,
-						class.findMethod(m).argNames,
-						class.findMethod(m).argumentString],
-						true) ;
-		 }) ;
-		^(instanceMethods+methodBlock) ;
-	}
-
-// this generates the (class/instance) method block
-
-	createMethod { arg methodArr, instance = false ;
-		var methodBlock, argsBlock, defaultValue ;
-		var name = methodArr[0].asString ;
-		var example = "
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></p>
-<p class=\"p9\"><span class=\"s4\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></span>// inline example</p>
-<p class=\"p10\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>g = <span class=\"s5\">SomeClass</span>.new;</p>
-<p class=\"p10\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>g.doSomething; <span class=\"s6\">// explanation</span></p>
-<p class=\"p10\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>g.cleanUpMethod;</p>
-<p class=\"p5\"><br></p>
-"		.replace("SomeClass", class.name).replace("new", name) ;
-		methodBlock = "
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>*new(arg1, arg2)</b></p>
-<p class=\"p7\"><b><span class=\"Apple-tab-span\">	</span></b></p>
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></b>Short prose description of method.</p>
-" ;
-		if	( methodArr[1].class != SymbolArray, { ^""} ) ;	// this creates the name line
-		if (methodArr[1].size >1, {
-			name = name+"(" ;
-			methodArr[1][1..].do({ arg anArg ; name = name++anArg.asString++", " ;
-			}) ;
-			name = name[..name.size-3]++")" ; // just to skip comma
-			}) ;
-		if (instance == false, { name = "*"++name }) ; // class or instance?
-		// this adds args
-		methodBlock = methodBlock.replace("*new(arg1, arg2)", name) ;
-		argsBlock = "
-<p class=\"p8\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><b>arg1 </b>- Explanation of arg1. Default value is argDefault. Other information.</p>
-" ;
-		// OK, the following is tricky
-		methodArr[1][1..].do({ arg anArg, index ;
-			defaultValue = methodArr[2].split($,)[index+1].split($=) ;
-			defaultValue = if (defaultValue.size == 1, { "nil" }, {
-				defaultValue[1] }) ;
-			methodBlock = methodBlock+argsBlock
-				.replace("arg1", anArg)
-				.replace( "argDefault", defaultValue) ;
-		}) ;
-		^methodBlock +
-			example +
-			"<p class=\"p5\"><br></p>\n"
-	}
-
-
-	createGetterSetterBlock {
-		var getterSetter ;
-		var getterSetterBlock = "
-<p class=\"p11\"><b>Accessing Instance and Class Variables</b></p>
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span></p>
-" ;
-		var methods = class.methods
-			.collect(_.name)
-			.reject({ arg item ;
-				class.findMethod(item).argNames.class == SymbolArray}) ;
-		var getter = methods.reject({ arg item ; item.asString.includes($_) }) ;
-		var setter = methods.reject({ arg item ; item.asString.includes($_).not }) ;
-		var names = methods.collect({ arg item ; item.asString.split($_)[0] }) ;
-		var methodBlock = "" ;
-		var defaultValue = "nil" ;
-		if (names.notNil, { names = names.asSet.asArray } ) ;
-
-		class.classVarNames.do({ arg clvar ;
-				getterSetterBlock = getterSetterBlock +
-"
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>someVar</b></p>
-".replace("someVar", clvar.asString)+
-"
-<p class=\"p7\"><b><span class=\"Apple-tab-span\">	</span></b><span class=\"Apple-tab-span\">	</span></p>
-<p class=\"p6\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>Explanation including the type of <b>someVar </b>and a link to its help file.</p>
-<p class=\"p6\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>Default value is defaultValue.</p>
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></p>
-"		.replace("someVar", clvar.asString)
-			});
-
-		names.do({ arg m ;
-			case
-				{ getter.includes(m.asSymbol) and: setter.includes((m++"_").asSymbol) }
-					{
-					defaultValue = class.findMethod(m.asSymbol).argumentString ;
-					getterSetter =
-"
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>someVar_(arg1)</b></p>
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>someVar</b></p>
-"
-					}
-				{ getter.includes(m.asSymbol) and: setter.includes((m++"_").asSymbol).not }
-					{
-					defaultValue = class.findMethod(m.asSymbol).argumentString ;
-					getterSetter =
-"
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>someVar</b></p>
-"
-					}
-				{ getter.includes(m.asSymbol).not and: setter.includes((m++"_").asSymbol) }
-					{
-					defaultValue = class.findMethod((m++"_").asSymbol).argumentString ;					getterSetter =
-"
-<p class=\"p6\"><b><span class=\"Apple-tab-span\">	</span>someVar_(arg1)</b></p>
-"
-					} ;
-			if ( defaultValue.isNil, { defaultValue = "nil" }) ;
-			methodBlock = methodBlock+
-						getterSetter.replace("someVar", m.asString) +
-"
-<p class=\"p7\"><b><span class=\"Apple-tab-span\">	</span></b><span class=\"Apple-tab-span\">	</span></p>
-<p class=\"p6\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>Explanation including the type of <b>someVar </b>and a link to its help file.</p>
-<p class=\"p6\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span>Default value is defaultValue.</p>
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></p>
-"		.replace("someVar", m.asString)
-		.replace("defaultValue", defaultValue)
-		 }) ;
-		^(getterSetterBlock+methodBlock+
-"
-<p class=\"p7\"><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></p>
-"
-		) ;
-	}
-
-}
-
-//"
diff --git a/SCClassLibrary/deprecated/Helper/docParser.sc b/SCClassLibrary/deprecated/Helper/docParser.sc
deleted file mode 100644
index ebc1619..0000000
--- a/SCClassLibrary/deprecated/Helper/docParser.sc
+++ /dev/null
@@ -1,112 +0,0 @@
-// Required by AutoClassHelper
-// Parses sources in search for comments
-// andreavalle
-
-DocParser {
-
-	var <>targetClass ;
-	var <classMethodList, <instMethodList, <getters, <setters ;
-	var <file, <source ;
-
-
-	*new {  arg class ;
-		this.deprecated;
-		^super.new.initDocParser(class) ;
-	}
-
-	initDocParser { arg aClass ;
-		var instVarNames = aClass.instVarNames ;
-		instVarNames = instVarNames ? [] ;
-		targetClass = aClass ;
-		classMethodList = targetClass.class.methods ;
-		file = File.new(targetClass.filenameSymbol.asString, "r") ;
-		source = file.readAllString ;
-		file.close ;
-		instMethodList = targetClass.methods ;
-		instMethodList = instMethodList ? [] ;
-		setters = instMethodList.reject({ arg item ; item.name.asString.includes($_).not }) ;
-		getters = instMethodList.select({ arg item ;
-			instVarNames.includes(item.name) }) ;
-		setters = setters ? [] ; getters = getters ? [] ;
-		instMethodList = instMethodList.reject({ arg item ;
-			 getters.includes(item) || setters.includes(item) }) ;
-		^this
-	}
-
-	createCmIndices {
-		var cmIndices = [] ;
-		classMethodList.do({ arg method ;
-			cmIndices = cmIndices.add(method.charPos)
-		}) ;
-		^cmIndices
-	}
-
-	createImIndices {
-		var imIndices = [] ;
-		instMethodList.do({ arg method ;
-			imIndices = imIndices.add(method.charPos)
-		}) ;
-		^imIndices
-	}
-
-
-	createGetSetIndices {
-		var getSetIndices = [] ;
-		getters.do({ arg method ;
-			getSetIndices = getSetIndices.add(method.charPos)
-		}) ;
-		setters.do({ arg method ;
-			getSetIndices = getSetIndices.add(method.charPos)
-		}) ;
-		^getSetIndices = getSetIndices.sort ;
-
-	}
-
-	getDocs {
-		var imIndices = this.createImIndices ;
-		var cmIndices = this.createCmIndices ;
-		var getSetIndices = this.createGetSetIndices ;
-		var total ;
-		var imDict = IdentityDictionary.new ;
-		var cmDict = IdentityDictionary.new ;
-		var classDoc ;
-		cmIndices = cmIndices.add(imIndices[0]) ;
-		imIndices =imIndices.add(source.size) ;
-		classMethodList.do({ arg method, i ;
-			cmDict.add( i ->
-				[method, this.getMethodDoc(method, cmIndices[i], cmIndices[i+1])]
-			)
-		}) ;
-		instMethodList.do({ arg method, i ;
-			imDict.add( i ->
-				[method, this.getMethodDoc(method, imIndices[i], imIndices[i+1])]
-			)
-		}) ;
-		total = getSetIndices.addAll(cmIndices).addAll(imIndices).sort ;
-		classDoc = this.getClassDoc(total[0]) ;
-		^[classDoc, cmDict, imDict]
-	}
-
-	getMethodDoc { arg method, start, stop ;
- 		var block = source[start..stop] ;
- 		var begin = block.find("/*@") ;
- 		var end ;
- 		if (begin.notNil, {
- 			 end  = block.find("@*/") ;
- 			 ^block[begin+3..end-1] ;
- 		 }, {^""})
-
-	}
-
-	getClassDoc { arg start ;
- 		var begin = source.find("/*@") ;
- 		var end ;
- 		if (begin < start, {
- 			 end  = source.find("@*/") ;
- 			 ^source[begin+3..end-1] ;
- 		 }, {^""})
-
-
-	}
-
-}
diff --git a/SCClassLibrary/deprecated/Helper/helper.sc b/SCClassLibrary/deprecated/Helper/helper.sc
deleted file mode 100644
index 3482e92..0000000
--- a/SCClassLibrary/deprecated/Helper/helper.sc
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-// Helper, ClassHelper, UGenHelper, TopicHelper
-// (In this file: Helper)
-// ________________________________
-//
-// Helper chooses  between ClassHelper, UGenHelpe, TopicHelper by verifying
-// the class of the passed undocumentedObject. Only Helper must be used directly
-// UGenHelper is fitted for ar/kr/ir methods.
-// UGens not implementing the rate methods receive as a tag line:
-// Name -->no ar/kr/ir methods: sorry, you have to complete as required
-//
-// Accepts as args the class name (for classes and ugens) or a string describing a topic
-// Generates an html and then open it in with openHelpFile
-//
-// Usage: Helper(undocumentedObject, path)
-// where if path.isNil, it prompts for a path where to save as
-//
-Helper(Helper, "Help/Helper.html")
-// ok
-Helper(Helper)
-// prompt for path (must be complete).
-//
-Helper(SinOsc, "/Users/andreavalle/Library/Application\ Support/SuperCollider/Extensions/Help/mine/SinOsc.html")
-Helper(SinOsc)
-// In this case SinOsc has already a help file, so Helper opens that one
-// as it calls SinOsc.openHelpFile
-//
-Helper("On_Helper", "/Users/andreavalle/Library/Application\ Support/SuperCollider/Extensions/Help/mine/On_Helper.html")
-Helper("On_Helper")
-// it's a bit boring to repeat the class or the topic name with html as a path
-// but I don't see a way to propose to GUI save dialog a fileName, so in that case you would have
-// to specify it the same.
-// Document was indeed more flexible
-//
-// or with an Help extension:
-//
-// + Help {
-//
-//	*makeHelp { arg undocumentedObject, path ;
-//		Helper( undocumentedObject )
-//
-//	}
-//
-// }
-// Help.makeHelp(MyClass)
-// e.g.
-Help.makeHelp(Helper)
-//
-// Help.makeHelp(MyUGen)
-// e.g.
-Help.makeHelp(SinOsc)
-//
-// Help.makeHelp("MyClass")
-// e.g. Help.makeHelp("Helper's corner")
-//
-// Escapes make the sources totally unreadable...
-// andreavalle (started: 04/11/2007)
-*/
-
-
-Helper {
-
-	*new { arg undocumentedObject, path ;
-		this.deprecated;
-		^super.new.initHelper( undocumentedObject, path )
-	}
-
-	initHelper { arg undocumentedObject, path ;
-		case
-			{ undocumentedObject.class == Meta_Object }
-				{ ^ClassHelper.new( undocumentedObject, path )  }
-			{ undocumentedObject.class == String }
-				{ ^TopicHelper.new( undocumentedObject, path ) }
-			{ undocumentedObject.superclasses.includes(UGen).not }
-				{ ^ClassHelper.new( undocumentedObject, path ) }
-			{ undocumentedObject.superclasses.includes(UGen) }
-			  	{ ^UGenHelper.new( undocumentedObject, path ) }
-		}
-}
diff --git a/SCClassLibrary/deprecated/Helper/helperExt.sc b/SCClassLibrary/deprecated/Helper/helperExt.sc
deleted file mode 100644
index 60c8d49..0000000
--- a/SCClassLibrary/deprecated/Helper/helperExt.sc
+++ /dev/null
@@ -1,22 +0,0 @@
-// Extension for Helper and AutoClassHelper classes: documentation autogeneration
-// so that
-// 		Help.makeHelp(MyClass)
-// 		Help.makeAutoHelp(MyClass)
-// is allowed
-// andrea valle (started: 04/11/2007)
-/*
-+ Help {
-
-	*makeHelp { arg undocumentedObject, path ;
-		Helper( undocumentedObject, path )
-
-	}
-
-
-	*makeAutoHelp { arg andocumentedClass, path ;
-		AutoClassHelper( andocumentedClass, path )
-	}
-
-
-}
-*/
diff --git a/SCClassLibrary/deprecated/Helper/topicHelper.sc b/SCClassLibrary/deprecated/Helper/topicHelper.sc
deleted file mode 100644
index da56490..0000000
--- a/SCClassLibrary/deprecated/Helper/topicHelper.sc
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-// Helper, ClassHelper, UGenHelper, TopicHelper
-// (In this file: TopicHelper)
-// ________________________________
-//
-// Classes to auto generate help files following style guides.
-// See Helper source for more comments
-// started on 04/11/07 - andreavalle
-*/
-
-TopicHelper {
-
-	// Topic si the simplest case.
-	// Just a replacement in the template
-
-	var <>topic, <>path ;
-	classvar text ;
-
-	*new { arg topic, path ;
-		this.deprecated;
-		^super.new.initTopicHelper( topic, path )
-	}
-
-	initTopicHelper { arg aTopic, aPath ;
-		topic = aTopic ;
-		path = aPath ;
-		if ( path.isNil, {
-			GUI.current.dialog.savePanel({ arg newPath ;
-				 path = newPath ; {this.makeHelp}.defer })
-			}, { this.makeHelp }) ;
-
-	}
-
-	createText {
-		text = "
-<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
-<html>
-<head>
-<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
-<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
-<title></title>
-<meta name=\"Generator\" content=\"Cocoa HTML Writer\">
-<meta name=\"CocoaVersion\" content=\"824.41\">
-<style type=\"text/css\">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p6 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; color: #d40000}
-p.p7 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 9.0px Monaco}
-p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
-span.s1 {color: #000000}
-span.s2 {color: #1200c4}
-span.s3 {color: #d40000}
-span.s4 {color: #1200c4}
-span.s5 {text-decoration: underline ; color: #1200c4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-<body>
-<p class=\"p1\"><b>Some Topic</b></p>
-<p class=\"p2\"><br></p>
-<p class=\"p3\">Introductory prose discussing Some Topic.</p>
-<p class=\"p2\"><br></p>
-<p class=\"p4\"><b>Some aspect of Some Topic</b></p>
-<p class=\"p2\"><br></p>
-<p class=\"p3\">Prose discussion which leads to this example:</p>
-<p class=\"p5\"><br></p>
-<p class=\"p6\"><span class=\"s1\"><span class=\"Apple-tab-span\">	</span></span>// inline example</p>
-<p class=\"p6\"><span class=\"s1\"><span class=\"Apple-tab-span\">	</span>b = </span><span class=\"s2\">SomeClass</span><span class=\"s1\">.new(s, 100, 2); <span class=\"Apple-tab-span\">	</span></span>// explanation of this line</p>
-<p class=\"p6\"><span class=\"s1\"><span class=\"Apple-tab-span\">	</span>b.doSomething;<span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></span>// explanation of this line</p>
-<p class=\"p7\"><br></p>
-<p class=\"p3\">Further discussion leading to the next bit of code which continues from the previous example:</p>
-<p class=\"p5\"><span class=\"Apple-tab-span\">	</span></p>
-<p class=\"p8\"><span class=\"Apple-tab-span\">	</span>b.doSomethingMore</p>
-<p class=\"p8\"><span class=\"s3\"><span class=\"Apple-tab-span\">	</span></span>b.cleanUp;</p>
-<p class=\"p2\"><br></p>
-<p class=\"p4\"><b>Some other aspect</b></p>
-<p class=\"p2\"><span class=\"Apple-converted-space\"></span></p>
-<p class=\"p3\">More prose... Explains how <a href=\"../Core/Object.html\"><span class=\"s4\">Object</span></a> and <a href=\"../Language/Polymorphism.html\"><span class=\"s4\">Polymorphism</span></a> are very important to Some Topic.</p>
-<p class=\"p2\"><br></p>
-<p class=\"p3\"><b>See also: </b><a href=\"../ServerArchitecture/Buffer.html\"><span class=\"s5\">Buffer</span></a><b> </b>[other related help files]</p>
-<p class=\"p2\"><br></p>
-<p class=\"p4\"><b>More detailed examples</b></p>
-<p class=\"p9\"><br></p>
-<p class=\"p6\"><span class=\"s1\">b = </span><span class=\"s2\">SomeClass</span><span class=\"s1\">.new(s, 100, 2); <span class=\"Apple-tab-span\">	</span></span>// explanation of this line</p>
-<p class=\"p6\"><span class=\"s1\">b.doSomething;<span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></span>// explanation of this line</p>
-<p class=\"p8\">b.cleanUp</p>
-<p class=\"p7\"><br></p>
-<p class=\"p8\">...</p>
-</body>
-</html>
-"		.replace("Some Topic", topic) ;  // et voila
-
-	}
-
-
-	makeHelp {
-		// see ClassHelper
-		this.createText ;
-		File.new(path, "w")
-			.write(text)
-			.close ;
-		// and reopen thru topic.openHelpFile
-		// open works if the path is a place where SC looks for Help files
-		topic.openHelpFile
-	}
-}
-
-//"
diff --git a/SCClassLibrary/deprecated/Helper/uGenHelper.sc b/SCClassLibrary/deprecated/Helper/uGenHelper.sc
deleted file mode 100644
index fd728d0..0000000
--- a/SCClassLibrary/deprecated/Helper/uGenHelper.sc
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
-// Helper, ClassHelper, UGenHelper, TopicHelper
-// (In this file: UGenHelper)
-// ________________________________
-//
-// Classes to auto generate help files following style guides.
-// See Helper source for more comments
-// started on 04/11/07 - andreavalle
-*/
-
-
-UGenHelper {
-
-	var <>class, <>path ;
-	classvar doctype, head, preface, examples, parents ;
-
-	*new { arg class, path ;
-		this.deprecated;
-		^super.new.initUGenHelper( class, path )
-	}
-
-	initUGenHelper { arg aClass, aPath ;
-		class = aClass ;
-		path = aPath ;
-		parents  = "" ;
-		if ( path.isNil, {
-			GUI.current.dialog.savePanel({ arg newPath ;
-				 path = newPath ; {this.makeHelp}.defer })
-			}, { this.makeHelp }) ;
-	}
-
-	createText {
-		head = "
-<head>
-<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
-<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
-<title></title>
-<meta name=\"Generator\" content=\"Cocoa HTML Writer\">
-<meta name=\"CocoaVersion\" content=\"824.42\">
-<style type=\"text/css\">
-p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #d40000}
-p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
-p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #007700}
-span.s1 {font: 18.0px Helvetica}
-span.s2 {color: #1200c4}
-span.s3 {color: #1200c4}
-span.s4 {color: #000000}
-span.s5 {color: #1200c4}
-span.Apple-tab-span {white-space:pre}
-</style>
-</head>
-" ;
-		preface = "
-<p class=\"p1\"><span class=\"s1\"><b>SomeUGen<span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span><span class=\"Apple-tab-span\">	</span></b></span><b>explanation of the what SomeUGen does</b></p>
-<p class=\"p2\"><b></b><br></p>
-"			.replace("SomeUGen", class.name.asString) ;
-			doctype = "
-<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
-" ;
-		examples = "
-<p class=\"p4\">// what this example does</p>
-<p class=\"p5\">x = { <span class=\"s3\">SomeUGen</span>.ar(<span class=\"s3\">XLine</span>.kr(2000, 200), 0, 0.5) }.play;</p>
-<p class=\"p5\">x.free;</p>
-<p class=\"p3\"><br></p>
-<p class=\"p4\">// what this example does</p>
-<p class=\"p5\">(</p>
-<p class=\"p6\"><span class=\"s4\">x = </span><span class=\"s5\">SynthDef</span><span class=\"s4\">(</span>\\helpSomeUGen<span class=\"s4\">, {<span class=\"Apple-converted-space\"></span></span></p>
-<p class=\"p5\"><span class=\"Apple-tab-span\"></span><span class=\"s3\">Out</span>.ar(0, <span class=\"s3\">SomeUGen</span>.ar(<span class=\"s3\">SinOsc</span>.ar(<span class=\"s3\">XLine</span>.kr(1, 1000, 9), 0, 200, 800), 0, 0.25));<span class=\"Apple-converted-space\"></span></p>
-<p class=\"p5\">}).play;<span class=\"Apple-converted-space\"></span></p>
-<p class=\"p5\">)</p>
-<p class=\"p5\">x.free;</p>
-"			.replace("SomeUGen", class.name.asString) ;
-	}
-
-
-	makeHelp {
-		var title = class.name.asString ;
-		var classMethodBlock = this.createClassMethodBlock ;
-		this.createText ;
-		// see ClassHelper
-		// write a html file in tmp
-		File.new(path, "w")
-			.write(doctype +
-				 "<hmtl>\n"+
-				 head+
-				 "<body>\n"+
-				 preface+
-				 classMethodBlock +
-				 examples+
-				 "</body>"+
-				 "</html>")
-				.close ;
-		// and reopen thru class.openHelpFile
-		// open works if the path is a place where SC looks for Help files
-		class.openHelpFile
-	}
-
-	createClassMethodBlock {
-		var arArgs, krArgs, irArgs ;
-		var arBlock = "", krBlock = "", irBlock = "" ;
-		var explanation = "
-<p class=\"p2\"><br></p>
-<p class=\"p1\">Here is a short prose explanation of what the UGen does, and any other relevant points.</p>
-" ;
-		var total, defaults, default ;
-		var par ;
-		var uGen, uGenParent = class ; // we need to get the args
-		var uGenParentMethods = uGenParent.class.methods.collect(_.name) ;
-		var arMethod, krMethod, irMethod ;
-		if ( uGenParentMethods == nil, { uGenParentMethods = [] }) ;
-		// in the following we crawl on the tree untile we find ar/kr/ir methods
-		// this works fine for most UGen
-		// but not for the ones not implementing *r methods
-		// in that case a default generic string is returned
-		// The aim being to generate a template, not such a bad solution
-		while {
-			( uGenParentMethods.includes(\ar) or:
-			uGenParentMethods.includes(\kr) or:
-			uGenParentMethods.includes(\ir)).not
-		 }
-			{ uGen = uGenParent ;
-				// returns a "warning" but styled message
-				// if *r methods are not found
-				if (uGenParent == nil, {
-				^"<p class=\"p1\"><b>"++
-				class.name.asString+
-				"-->no ar/kr/ir methods: sorry, you have to complete as required"+
-				explanation+"</p></b>"
-				} );
-			uGenParent = uGenParent.superclass ;
-			 uGenParentMethods = uGenParent.class.methods.collect(_.name) ;
-			 if ( uGenParentMethods == nil, { uGenParentMethods = [] }) ;
-			 } ;
-
-		arMethod = uGenParent.class.findMethod(\ar) ;
-		krMethod = uGenParent.class.findMethod(\kr) ;
-		irMethod = uGenParent.class.findMethod(\ir) ;
-
- 		defaults = arMethod ;
- 		if ( defaults.isNil, { defaults = krMethod }) ;
- 		if ( defaults.isNil, { defaults = irMethod }) ;
- 		defaults = defaults.argumentString ;
- 		defaults = defaults.split($,) ;
-		arArgs = arMethod.argNames ;
-		krArgs = krMethod.argNames ;
-		irArgs = irMethod.argNames ;
-		case
-		{ arArgs.size == 1 }{
-		arBlock = "
-<p class=\"p1\"><b>SomeUGen.ar".replace("SomeUGen", class.name.asString) }
-
-		{ arArgs.notNil} {
-		 arBlock = "
-<p class=\"p1\"><b>SomeUGen.ar(".replace("SomeUGen", class.name.asString) ;
-		arArgs = arArgs[1..] ;
-		arArgs.do({ arg anArg ;
-			arBlock = arBlock++anArg.asString++", "
-		}) ;
-		arBlock = arBlock[..arBlock.size-3]+")</b></p>" ;
-		} ;
-
-		case
-		{ krArgs.size == 1 }{
-		krBlock = "
-<p class=\"p1\"><b>SomeUGen.kr".replace("SomeUGen", class.name.asString) }
-
-		{ krArgs.notNil} {
-		krBlock = "
-<p class=\"p1\"><b>SomeUGen.kr(".replace("SomeUGen", class.name.asString) ;
-		krArgs = krArgs[1..] ;
-		krArgs.do({ arg anArg ;
-			krBlock = krBlock++anArg.asString++", "
-		}) ;
-		krBlock = krBlock[..krBlock.size-3]+")</b></p>" ;
-		} ;
-
-		case
-		{ irArgs.size == 1 }{
-		irBlock = "
-<p class=\"p1\"><b>SomeUGen.ir".replace("SomeUGen", class.name.asString) ;}
-
-		{irArgs.notNil} {
-		irBlock = "
-<p class=\"p1\"><b>SomeUGen.ir(".replace("SomeUGen", class.name.asString) ;
-		irArgs = irArgs[1..] ;
-		irArgs.do({ arg anArg ;
-			irBlock = irBlock++anArg.asString++", "
-		}) ;
-		irBlock = irBlock[..irBlock.size-3]+")</b></p>" ;
-		} ;
-		par = if (arArgs.notNil, { arArgs }, { if (krArgs.notNil, { krArgs }, { irArgs } ) }) ;
-		//par = if ( par.size == 1, { [] }, { par }) ;
-		// all those replacements are tricky, indeed
-		// could be implemented much better, probably
-		par.do({ arg anArg, index ;
-			default = defaults[index+1].asString ;
-			default = if ( default.split($=).size == 1, { "nil" }, {
-				 default.split($=)[1] });
-			explanation = explanation +
-"
-<p class=\"p1\"><b>arg1</b> - explanation of arg1. Default value is defaultValue.</p>
-"				.replace("arg1", anArg.asString)
-				.replace("defaultValue", default) ;
-
-		}) ;
-		explanation = explanation +
-"
-<p class=\"p2\"><br></p>
-<p class=\"p1\"><b>See also:</b> <a href=\"../UGens/Oscillators/SinOsc.html\"><span class=\"s2\">SinOsc</span></a> [other related UGens...]</p>
-<p class=\"p2\"><br></p>
-<p class=\"p3\"><br></p>
-" ;
-		total = arBlock+krBlock+irBlock+explanation ;
-		^total
-	}
-
-
-}
-//"
diff --git a/SCClassLibrary/deprecated/deprecated-3.5.sc b/SCClassLibrary/deprecated/deprecated-3.5.sc
deleted file mode 100644
index c958140..0000000
--- a/SCClassLibrary/deprecated/deprecated-3.5.sc
+++ /dev/null
@@ -1,505 +0,0 @@
-UI {
-	classvar resetActions, shutdownActions;
-
-	initClass {
-		resetActions = Array.new;
-		shutdownActions = Array.new; // braindead extensions may rely on these
-	}
-
-	*registerForReset {|aFunction|
-		this.deprecated(thisMethod, OnError.class.findMethod(\add));
-		OnError.add(aFunction)
-	}
-	*registerForShutdown {|aFunction|
-		this.deprecated(thisMethod, ShutDown.class.findMethod(\add));
-		ShutDown.add(aFunction)
-	}
-}
-
-Pflow : FilterPattern {
-	*new {
-		Error("Pflow was replaced. please use Pstep instead").throw;
-	}
-}
-
-Model {
-	var <>dependants;
-
-	*new {
-		this.deprecated(thisMethod, Object.class.findMethod(\new));
-		"NB Model's functionality is duplicated by Object".postln;
-		^super.new;
-	}
-	changed { arg what ... moreArgs;
-		dependants.do({ arg item;
-			item.update(this, what, *moreArgs);
-		});
-	}
-	addDependant { arg dependant;
-		if (dependants.isNil, {
-			dependants = IdentitySet.new(4);
-		});
-		dependants.add(dependant);
-	}
-	removeDependant { arg dependant;
-		if (dependants.notNil, {
-			dependants.remove(dependant);
-		});
-	}
-	release {
-		dependants = nil;
-	}
-}
-
-Panner : MultiOutUGen {
-	*new {|...x|
-		this.deprecated(thisMethod);
-		^super.new(*x);
-	}
-	*new1 {|...x|
-		this.deprecated(thisMethod);
-		^super.new1(*x);
-	}
-}
-
-XFade : UGen {
-	*new {|...x|
-		this.deprecated(thisMethod);
-		^super.new(*x);
-	}
-	*new1 {|...x|
-		this.deprecated(thisMethod);
-		^super.new1(*x);
-	}
-}
-
-GetFileDialog {
-
-	*new { arg function;
-		// platform neutral (eventually)
-		this.deprecated(thisMethod, File.class.findMethod(\openDialog));
-		File.openDialog(nil,
-			{ arg path; function.value(true,path) },
-			{  function.value(false) } );
-		//CocoaDialog.getPaths({arg paths; function.value(paths.first) },nil)
-	}
-	// warning:  doesn't handle doAction (no instance)
-
-}
-
-
-GetStringDialog  {
-
-	*new { arg prompt,defaultString="",func;
-		var b;
-		this.deprecated(thisMethod);
-		Sheet({ arg l;
-			b = 	TextField(l,Rect(0,0,150,30));
-			b.string = String.new ++ defaultString;
-			b.action = {arg field; func.value(true,field.value); l.close; };
-		},prompt);
-		{ b.focus }.defer;
-	}
-}
-
-+ Mix {
-
-	*arFill { arg n,func;
-		this.deprecated(thisMethod, Mix.class.findMethod(\fill));
-		^this.fill(n,func);
-	}
-}
-
-+ SimpleNumber {
-	// rgb() still will not work in variable declarations in classes
-	// because rgb is no longer a literal
-
-	// move them to init methods
-	rgb { arg green,blue;
-		this.deprecated(thisMethod, Color.class.findMethod(\new255));
-		^Color(this / 255.0,green / 255.0, blue / 255.0)
-	}
-
-}
-
-+ Synth {
-
-	*stop {
-		this.deprecated(thisMethod, Server.findMethod(\free));
-		RootNode.new.freeAll;
-	}
-	*play { arg func;
-		this.deprecated(thisMethod, Synth.class.findMethod(\new));
-		Server.default.doWhenBooted({
-			func.play;
-		})
-	}
-	play {
-		this.deprecated(thisMethod, Synth.class.findMethod(\new));
-		//if not already playing, play
-	}
-	*sampleRate {
-		this.deprecated(thisMethod, Server.findMethod(\sampleRate));
-		^Server.default.sampleRate ? Server.default.options.sampleRate ? 44100.0
-	}
-
-}
-
-+ RawArray {
-
-	write { arg path;
-		var file;
-		this.deprecated(thisMethod, File.findMethod(\write));
-		file = File.new(path, "wb");
-		if (file.notNil, {
-			file.write(this);
-			if(file.length < this.size,{
-				Error("Write file failed !!!! " ++ path).throw;
-			});
-			file.close;
-		});
-	}
-
-}
-
-+ ServerOptions {
-	blockAllocClass {
-		this.deprecated(thisMethod)
-	}
-	blockAllocClass_ {
-		this.deprecated(thisMethod)
-	}
-
-	rendezvous_ {|bool|
-		zeroConf = bool;
-		this.deprecated(thisMethod, ServerOptions.findMethod(\zeroConf_))
-	}
-
-	rendezvous {|bool|
-		this.deprecated(thisMethod, ServerOptions.findMethod(\zeroConf));
-		^zeroConf;
-	}
-
-	numAudioBusChannels_{|num|
-		this.numPrivateAudioBusChannels = num - (numInputBusChannels + numOutputBusChannels);
-		this.deprecated(thisMethod);
-	}
-}
-
-+ Server {
-	// Buffer objects are cached in an Array for easy
-	// auto buffer info updating
-	addBuf { |buffer|
-		this.deprecated(thisMethod, Buffer.findRespondingMethodFor(\cache));
-		buffer.cache;
-	}
-
-	freeBuf { |i|
-		var	buf;
-		this.deprecated(thisMethod, Buffer.findRespondingMethodFor(\uncache));
-		if((buf = Buffer.cachedBufferAt(this, i)).notNil) { buf.free };
-	}
-
-	// /b_info on the way
-	// keeps a reference count of waiting Buffers so that only one responder is needed
-	waitForBufInfo {
-		this.deprecated(thisMethod, Buffer.findRespondingMethodFor(\cache));
-	}
-
-	resetBufferAutoInfo {
-		this.deprecated(thisMethod, Meta_Buffer.findRespondingMethodFor(\clearServerCaches));
-		Buffer.clearServerCaches(this);
-	}
-}
-
-+ Node {
-	// map to Bus objects
-	busMap { arg firstControl, aBus ... args;
-		var values;
-		this.deprecated(thisMethod, Node.findMethod(\map));
-		values = List.new;
-		args.pairsDo({ arg control, bus; values.addAll([control, bus.index, bus.numChannels])});
-		server.sendMsg(48, nodeID, firstControl, aBus.index, aBus.numChannels, *values);
-		//"/n_mapn"
-	}
-	busMapMsg { arg firstControl, aBus ... args;
-		var values;
-		this.deprecated(thisMethod, Node.findMethod(\mapMsg));
-		values = List.new;
-		args.pairsDo({ arg control, bus; values.addAll([control, bus.index, bus.numChannels])});
-		^[48, nodeID, firstControl, aBus.index, aBus.numChannels] ++ values;
-		//"/n_mapn"
-	}
-}
-
-+ SynthDef {
-	memStore { arg libname = \global, completionMsg, keepDef = true;
-		this.deprecated(thisMethod, this.class.findRespondingMethodFor(\add));
-		this.add(libname, completionMsg, keepDef);
-	}
-}
-
-+ Env {
-	shapeNumber { arg shapeName;
-		this.deprecated(thisMethod, this.class.class.findMethod(\shapeNumber));
-		^this.class.shapeNumber(shapeName)
-	}
-}
-
-+ Help {
-	searchGUI {
-		this.deprecated(thisMethod, Meta_Help.findRespondingMethodFor(\gui));
-		^this.gui
-	}
-}
-
-+ Collection{
-	occurencesOf { | obj |
-		this.deprecated(thisMethod, Collection.findRespondingMethodFor(\occurrencesOf));
-		^this.occurrencesOf(obj);
-	}
-}
-
-+ Buffer {
-	copy { arg buf, dstStartAt = 0, srcStartAt = 0, numSamples = -1;
-		if(buf.notNil) {
-			this.deprecated(thisMethod, this.class.findRespondingMethodFor(\copyData));
-			this.copyData(buf, dstStartAt, srcStartAt, numSamples);
-		} {
-			^super.copy
-		}
-	}
-}
-
-+ ArrayedCollection {
-	plotOld { arg name, bounds, discrete=false, numChannels, minval, maxval, parent, labels=true;
-		var plotter, txt, chanArray, unlaced, val, window, thumbsize, zoom, width,
-			layout, write=false, msresize, gui;
-		var flattened;
-		this.deprecated(thisMethod, ArrayedCollection.findRespondingMethodFor(\plot));
-
-		gui = GUI.current;
-
-		bounds = bounds ?? {
-				if(parent.notNil) {
-					if(parent.respondsTo(\view)) {
-						parent.view.bounds
-					} {
-						parent.bounds
-					}
-			} {
-				Rect(200 ,140, 705, 410);
-			}
-		};
-
-		width = bounds.width - 8;
-
-		name = name ? "plot";
-
-		numChannels = numChannels ? this.first.size.max(1);
-		flattened = if(numChannels > 1) { this.flat } { this };
-		unlaced = flattened.unlace(numChannels);
-
-		minval = if(minval.isArray) {
-			numChannels.collect {|index| minval.wrapAt(index) ?? { unlaced[index].minItem } }
-		} {
-			{ minval ?? { flattened.minItem } }.dup(numChannels);
-		};
-		maxval = if(maxval.isArray) {
-			numChannels.collect{|index| maxval.wrapAt(index) ?? { unlaced[index].maxItem } }
-		} {
-			{maxval ?? { flattened.maxItem }}.dup(numChannels);
-		};
-
-		chanArray = Array.newClear(numChannels);
-		if(discrete) {
-			zoom = 1;
-			thumbsize = max(1.0, width / (flattened.size / numChannels));
-			unlaced.do { |chan, j|
-				chanArray[j] = chan.linlin( minval[j], maxval[j], 0.0, 1.0 );
-			};
-		} {
-			zoom = (width / (flattened.size / numChannels));
-			thumbsize = 1;
-			unlaced.do { |chan, j|
-				val = Array.newClear(width);
-				width.do { arg i;
-					var x;
-					x = chan.blendAt(i / zoom);
-					val[i] = x.linlin(minval[j], maxval[j], 0.0, 1.0);
-				};
-				chanArray[j] = val;
-			}
-		};
-		window = parent ?? { gui.window.new( name, bounds ) };
-
-		layout = gui.vLayoutView.new(window,
-			if(parent.notNil) {
-				Rect(bounds.left + 4, bounds.top + 4, bounds.width - 10, bounds.height - 10)
-			} {
-				Rect(4, 4, bounds.width - 10, bounds.height - 10)
-			}
-		).resize_(5);
-
-		if(labels) {
-			txt = gui.staticText.new(layout, Rect( 8, 0, width, 18))
-					.string_("index: 0, value: " ++ flattened[0].asString);
-		};
-
-		numChannels.do { |i|
-			plotter = gui.multiSliderView.new(layout,
-				Rect(0, 0,
-					// compensate for the text
-					layout.bounds.width, layout.bounds.height - if(labels, {26}, {0})
-				))
-				.readOnly_(true)
-				.drawLines_(discrete.not)
-				.drawRects_(discrete)
-				.indexThumbSize_(thumbsize)
-				.valueThumbSize_(1)
-				.background_(Color.white)
-				.colors_(Color.black, Color.blue(1.0,1.0))
-				.action_({|v|
-					var curval;
-					curval = v.currentvalue.linlin(0.0, 1.0, minval[i], maxval[i]);
-
-					if(labels){
-						txt.string_("index: " ++ (v.index / zoom).roundUp(0.01).asString ++
-						", value: " ++ curval);
-					};
-					if(write) { flattened[(v.index / zoom).asInteger * numChannels + i ]  = curval };
-				})
-				.keyDownAction_({ |v, char|
-					if(char === $l) { write = write.not; v.readOnly = write.not;  };
-				})
-				.value_(chanArray[i])
-				.elasticMode_(1);
-			if(numChannels > 1) { plotter.resize_(5) };
-		};
-
-		^window.tryPerform(\front) ?? { window }
-	}
-
-	plot2 {|name, bounds, discrete=false, numChannels, minval, maxval|
-		this.deprecated(thisMethod, ArrayedCollection.findRespondingMethodFor(\plot));
-		^this.plot(name, bounds, discrete, numChannels, minval, maxval)
-	}
-}
-
-+ Function {
-	plotOld { arg duration	= 0.01, server, bounds, minval = -1.0, maxval = 1.0, parent, labels=true;
-		var gui;
-		this.deprecated(thisMethod, Function.findRespondingMethodFor(\plot));
-		gui = GUI.current;
-		this.loadToFloatArray(duration, server, { |array, buf|
-			var numChan;
-			numChan = buf.numChannels;
-			{
-				GUI.use( gui, {
-					array.plotOld(bounds: bounds, numChannels: numChan, minval: minval, maxval: maxval,
-						parent: parent, labels: labels)
-				});
-			}.defer;
-		})
-	}
-	plot2 {|duration = 0.01, server, bounds, minval, maxval|
-		this.deprecated(thisMethod, Function.findRespondingMethodFor(\plot));
-		^this.plot(duration, server, bounds, minval, maxval)
-	}
-}
-
-+ Wavetable {
-	plotOld { arg name, bounds, minval, maxval, parent, labels=true;
-		this.deprecated(thisMethod, Wavetable.findRespondingMethodFor(\plot));
-		^this.asSignal.plotOld(name, bounds, minval: minval, maxval: maxval, parent: parent, labels: labels);
-	}
-
-	plot2 { |name, bounds, minval, maxval|
-		this.deprecated(thisMethod, Wavetable.findRespondingMethodFor(\plot));
-		^this.plot(name, bounds, minval, maxval)
-	}
-}
-
-+ Buffer {
-	plotOld { arg name, bounds, minval = -1.0, maxval = 1.0, parent, labels=true;
-		var gui;
-		gui = GUI.current;
-		this.deprecated(thisMethod, Buffer.findRespondingMethodFor(\plot));
-		this.loadToFloatArray(action: { |array, buf|
-			{
-				GUI.use( gui, {
-					array.plotOld(name, bounds, numChannels: buf.numChannels, minval: minval, maxval: maxval, parent: parent, labels: labels);
-				});
-			}.defer;
-		});
-	}
-	plot2 { |name, bounds, minval, maxval|
-		this.deprecated(thisMethod, Buffer.findRespondingMethodFor(\plot));
-		^this.plot(name, bounds, minval, maxval)
-	}
-}
-
-+ Env {
-	plot2 { |size = 400, bounds, minval, maxval|
-		this.deprecated(thisMethod, Env.findRespondingMethodFor(\plot));
-		^this.plot(size, bounds, minval, maxval)
-	}
-
-	plotOld { arg size = 400, bounds, minval, maxval, parent;
-		this.deprecated(thisMethod, Env.findRespondingMethodFor(\plot));
-		this.asSignal(size).plotOld(bounds: bounds, minval: minval, maxval: maxval, parent: parent);
-	}
-}
-
-+ AbstractFunction{
-	plotGraphOld { arg n=500, from = 0.0, to = 1.0, name, bounds, discrete = false,
-				numChannels, minval, maxval, parent, labels = true;
-		var array, res;
-		this.deprecated(thisMethod, AbstractFunction.findRespondingMethodFor(\plotGraph));
-		array = Array.interpolation(n, from, to);
-		res = array.collect { |x| this.value(x) };
-		res.plotOld(name, bounds, discrete, numChannels, minval, maxval, parent, labels)
-	}
-
-	plotGraph2 { arg n=500, from = 0.0, to = 1.0, name, bounds, discrete = false,
-		numChannels, minval, maxval, parent, labels = true;
-		this.deprecated(thisMethod, AbstractFunction.findRespondingMethodFor(\plotGraph));
-		this.plotGraph(n, from, to, name, bounds, discrete, numChannels, minval, maxval, parent, labels)
-	}
-}
-
-+ Main {
-
-	recvOSCfunc { this.deprecated(thisMethod); ^recvOSCfunc; }
-
-	recvOSCfunc_ { |newFunc|
-		this.deprecated(thisMethod, Main.findMethod(\addOSCRecvFunc));
-		recvOSCfunc = newFunc;
-	}
-
-}
-
-+ SCViewHolder {
-
-	layRight { arg x,y;
-		this.deprecated(thisMethod);
-		^Rect(0,0,x,y)
-	}
-}
-
-
-+ Nil {
-	fontID { this.deprecated(thisMethod); ^nil }
-}
-
-+ SimpleNumber {
-	fontID { this.deprecated(thisMethod); ^this }
-}
-
-+ String {
-	getSCDir {
-		this.deprecated(thisMethod, Platform.class.findMethod(\resourceDir));
-		^Platform.resourceDir
-	}
-}
-
diff --git a/SCClassLibrary/deprecated/deprecated-3.6-categories/PatternCategories.sc b/SCClassLibrary/deprecated/deprecated-3.6-categories/PatternCategories.sc
new file mode 100644
index 0000000..320ff60
--- /dev/null
+++ b/SCClassLibrary/deprecated/deprecated-3.6-categories/PatternCategories.sc
@@ -0,0 +1,141 @@
++ FilterPattern { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
++ ListPattern { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
+
+
++ Pclutch { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
++ Pn { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
++ Pgate { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
++ Pstutter { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
++ PdurStutter { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
++ Pfin { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
++ Pconst { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
++ Pfindur { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
++ Psync { *categories{ ^ #["Streams-Patterns-Events>Patterns>Repetition"]  }}
+
++ Ptime { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
++ Pstep { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
++ Pstep2add { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
++ Pstep3add { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
++ PstepNadd { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
++ PstepNfunc { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
++ Pseg { *categories{ ^ #["Streams-Patterns-Events>Patterns>Time"]  }}
+
++ Pbindf { *categories{ ^ #["Streams-Patterns-Events>Patterns>Composition"]  }}
++ Pchain { *categories{ ^ #["Streams-Patterns-Events>Patterns>Composition"]  }}
+
++ Ppar { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
++ Ptpar { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
++ Pgpar { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
++ Pgtpar { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
+
++ Spawner { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
++ Pspawner { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
++ Pspawn { *categories{ ^ #["Streams-Patterns-Events>Patterns>Parallel"]  }}
+
++ Pif { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
++ Pseed { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
++ Pprotect { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
++ Ptrace { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
++ Pwhile { *categories{ ^ #["Streams-Patterns-Events>Patterns>Language Control"]  }}
+
++ Pbus { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
++ Pgroup { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
+
++ Pfx { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
++ Pfxb { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
+
++ Pproto { *categories{ ^ #["Streams-Patterns-Events>Patterns>Server Control"]  }}
+
++ Pkey { *categories{ ^ #["Streams-Patterns-Events>Patterns>Data Sharing"]  }}
++ Penvir { *categories{ ^ #["Streams-Patterns-Events>Patterns>Data Sharing"]  }}
++ Pfset { *categories{ ^ #["Streams-Patterns-Events>Patterns>Data Sharing"]  }}
++ Plambda { *categories{ ^ #["Streams-Patterns-Events>Patterns>Data Sharing"]  }}
+
++ Pset { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
++ Psetp { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
++ Ppatmod { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
+
++ Pcollect { *categories{ ^ #["Streams-Patterns-Events>Patterns>Filter"]  }}
+
+
++ Padd { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
++ Paddp { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
++ Paddpre { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
+
+
++ Punop { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
++ Pbinop { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
++ Pnaryop { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
+
++ Pavaroh { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
++ PdegreeToKey { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
++ Pdiff { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
++ Prorate { *categories{ ^ #["Streams-Patterns-Events>Patterns>Math"]  }}
+
++ Pseq { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Prand { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Pxrand { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Pshuf { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Pwrand { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
+
++ Pseries { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Pgeom { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
+
++ Pwhite { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Pexprand { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Pbrown { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
+
++ Pfunc { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
++ Pfuncn { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
++ Proutine { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
++ Plazy { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
++ PlazyEnvir { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
++ PlazyEnvirN { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
++ Prout { *categories{ ^ #["Streams-Patterns-Events>Patterns>Function"]  }}
+
+
++ Pser { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Pslide { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Pwalk { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Place { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Ppatlace { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
++ Ptuple { *categories{ ^ #["Streams-Patterns-Events>Patterns>List"]  }}
+
++ Pgbrown { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Pbeta { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Pcauchy { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Pgauss { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Phprand { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Plprand { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Pmeanrand { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Ppoisson { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
++ Pprob { *categories{ ^ #["Streams-Patterns-Events>Patterns>Random"]  }}
+
+//+ DebugPbind { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
+
++ Pevent { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
+
++ Pbind { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
++ Pmono { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
++ PmonoArtic { *categories{ ^ #["Streams-Patterns-Events>Patterns>Event"]  }}
+
++ Pindex { *categories{ ^ #["Streams-Patterns-Events>Patterns>List>Indexing"]  }}
++ Pswitch { *categories{ ^ #["Streams-Patterns-Events>Patterns>List>Indexing"]  }}
++ Pfsm { *categories{ ^ #["Streams-Patterns-Events>Patterns>List>Indexing"]  }}
++ Pdfsm { *categories{ ^ #["Streams-Patterns-Events>Patterns>List>Indexing"]  }}
+
+
+
++ PatternProxy { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
++ Psym { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
++ Pdef { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
++ Pdefn { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
++ Pbindef { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
++ PbindProxy { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
+
++ Pdict { *categories{ ^ #["Streams-Patterns-Events>Patterns>Lookup"]  }}
+
+
++ PhidKey { *categories{ ^ #["Streams-Patterns-Events>Patterns>User Input"]  }}
++ PhidSlot { *categories{ ^ #["Streams-Patterns-Events>Patterns>User Input"]  }}
++ Phid { *categories{ ^ #["Streams-Patterns-Events>Patterns>User Input"]  }}
diff --git a/SCClassLibrary/deprecated/deprecated-3.6-categories/UGenCategories.sc b/SCClassLibrary/deprecated/deprecated-3.6-categories/UGenCategories.sc
new file mode 100644
index 0000000..48847cd
--- /dev/null
+++ b/SCClassLibrary/deprecated/deprecated-3.6-categories/UGenCategories.sc
@@ -0,0 +1,218 @@
+/*
+Categorisation of SC UGens, created by Dan Stowell, 2007.
+*/
++ A2K             { *categories { ^ #["UGens>Conversion"] } }
++ AbstractIn      { *categories { ^ #["UGens>InOut"] } }
++ AbstractOut     { *categories { ^ #["UGens>InOut"] } }
++ AmpComp         { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ AmpCompA        { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ Amplitude       { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ AudioIn         { *categories { ^ #["UGens>InOut"] } }
++ Ball            { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ BasicOpUGen     { }
++ BeatTrack       { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
++ BeatTrack2      { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
++ BiPanB2         { *categories { ^ #["UGens>Multichannel>Ambisonics"] } }
++ Blip            { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ BufCombN        { *categories { ^ #["UGens>Delays"] } }
++ BufDelayN       { *categories { ^ #["UGens>Delays"] } }
++ BufInfoUGenBase { *categories { ^ #["UGens>Buffer>Info"] } }
++ BufRd           { *categories { ^ #["UGens>Buffer"] } }
++ BufWr           { *categories { ^ #["UGens>Buffer"] } }
++ ChaosGen        { *categories { ^ #["UGens>Generators>Chaotic"] } }
++ CheckBadValues  { *categories { ^ #["UGens>Info"] } }
++ ClearBuf           { *categories { ^ #["UGens>Buffer"] } }
++ CoinGate        { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ CombN           { *categories { ^ #["UGens>Delays"] } }
++ Compander       { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ CompanderD      { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ Convolution     { *categories { ^ #["UGens>FFT"] } }
++ Convolution2    { *categories { ^ #["UGens>FFT"] } }
++ Convolution2L   { *categories { ^ #["UGens>FFT"] } }
++ StereoConvolution2L   { *categories { ^ #["UGens>FFT"] } }
++ Convolution3    { *categories { ^ #["UGens>FFT"] } }
++ COsc            { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Crackle         { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ DecodeB2		{ *categories { ^ #["UGens>Multichannel>Ambisonics"] } }
++ DUGen			{ *categories { ^ #["UGens>Demand"] } }
++ DC              { *categories { ^ #["UGens>Generators>Single-value"] } }
++ DegreeToKey     { *categories { ^ #["UGens>Conversion"] } }
++ Delay1          { *categories { ^ #["UGens>Delays"] } }
++ DelayN          { *categories { ^ #["UGens>Delays"] } }
++ Demand          { *categories { ^ #["UGens>Demand"] } }
++ DemandEnvGen    { *categories { ^ #["UGens>Demand", "UGens>Envelopes"] } }
++ DetectSilence   { *categories { ^ #["UGens>Synth control", "UGens>Analysis>Amplitude"] } }
++ DiskIn          { *categories { ^ #["UGens>InOut", "UGens>Buffer"] } }
++ DiskOut         { *categories { ^ #["UGens>InOut", "UGens>Buffer"] } }
++ Done            { *categories { ^ #["UGens>Synth control"] } }
++ Dust            { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ Dust2           { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ Duty            { *categories { ^ #["UGens>Demand"] } }
++ Dwhite          { *categories { ^ #["UGens>Demand"] } }
++ DynKlang        { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ DynKlank        { *categories { ^ #["UGens>Generators>Deterministic", "UGens>Filters>Linear"] } }
++ Env             {  }
++ EnvGen          { *categories { ^ #["UGens>Envelopes"] } }
++ ExpRand         { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"]} }
++ FFT             { *categories { ^ #["UGens>FFT"] } }
++ FFTTrigger	    { *categories { ^ #["UGens>FFT"] } }
++ Filter          { *categories { ^ #["UGens>Filters>Linear"] } }
++ Formant         { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Free            { *categories { ^ #["UGens>Synth control"] } }
++ FreeSelf        { *categories { ^ #["UGens>Synth control"] } }
++ FreeSelfWhenDone{ *categories { ^ #["UGens>Synth control"] } }
++ FreeVerb        { *categories { ^ #["UGens>Reverbs"] } }
++ FreeVerb2       { *categories { ^ #["UGens>Reverbs"] } }
++ FreqShift       { *categories { ^ #["UGens>Filters>Nonlinear", "UGens>Filters>Pitch"] } }
++ FSinOsc         { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Gendy1          { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ Gendy2          { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ Gendy3          { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ GrainBuf        { *categories { ^ #["UGens>Buffer", "UGens>Generators>Granular"] } }
++ GrainFM         { *categories { ^ #["UGens>Generators>Granular"] } }
++ GrainSin        { *categories { ^ #["UGens>Generators>Granular"] } }
++ GrainIn         { *categories { ^ #["UGens>Generators>Granular"] } }
++ GVerb           { *categories { ^ #["UGens>Reverbs"] } }
++ Hasher          { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ Hilbert         { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ HilbertFIR      { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ IEnvGen         { *categories { ^ #["UGens>Envelopes"] } }
++ IFFT            { *categories { ^ #["UGens>FFT"] } }
++ Impulse         { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Index           { *categories { ^ #["UGens>Buffer"] } }
++ IndexL          { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ InfoUGenBase    { *categories { ^ #["UGens>Info"] } }
++ InRange         { *categories { ^ #["UGens>Maths"] } }
++ InRect          { *categories { ^ #["UGens>Maths"] } }
++ Integrator      { *categories { ^ #["UGens>Filters>Linear", "UGens>Maths"] } }
++ IRand           { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"]} }
++ K2A             { *categories { ^ #["UGens>Conversion"] } }
++ KeyTrack        { *categories { ^ #["UGens>Analysis>Pitch"] } }
++ KeyState        { *categories { ^ #["UGens>User interaction"] } }
++ Klang           { *categories { ^ #["UGens>Generators>Deterministic", "UGens>Filters>Linear"] } }
++ Klank           { *categories { ^ #["UGens>Generators>Deterministic", "UGens>Filters>Linear"] } }
++ LastValue       { *categories { ^ #["UGens>Triggers"] } }
++ Latch           { *categories { ^ #["UGens>Triggers"] } }
++ LFGauss        { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ LFNoise0        { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ LFPulse         { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ LFSaw           { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Line            { *categories { ^ #["UGens>Envelopes"] } }
++ Linen           { *categories { ^ #["UGens>Envelopes"] } }
++ LinExp          { *categories { ^ #["UGens>Maths"] } }
++ LinLin          { *categories { ^ #["UGens>Maths"] } }
++ LinRand         { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"]} }
++ LocalBuf           { *categories { ^ #["UGens>Buffer"] } }
++ Logistic        { *categories { ^ #["UGens>Generators>Chaotic"] } }
++ Loudness        { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ MantissaMask    { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ MaxLocalBufs { *categories { ^ #["UGens>Buffer>Info"] } }
++ Median          { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ MFCC            { *categories { ^ #["UGens>Analysis"] } }
++ Mix {}
++ MostChange      { *categories { ^ #["UGens>Maths"] } }
++ MouseButton     { *categories { ^ #["UGens>User interaction"] } }
++ MouseX          { *categories { ^ #["UGens>User interaction"] } }
++ MulAdd          {}
++ Normalizer      { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ NRand           { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"]} }
++ Onsets          { *categories { ^ #["UGens>Analysis"] } }
++ Osc             { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ OscN            { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ PackFFT		    { *categories { ^ #["UGens>FFT"] } }
++ PanB            { *categories { ^ #["UGens>Multichannel>Ambisonics"] } }
++ PanB2           { *categories { ^ #["UGens>Multichannel>Ambisonics"] } }
++ PartConv   { *categories { ^ #["UGens>FFT"] } }
++ Pause           { *categories { ^ #["UGens>Synth control"] } }
++ PauseSelf       { *categories { ^ #["UGens>Synth control"] } }
++ PauseSelfWhenDone {  *categories { ^ #["UGens>Synth control"] } }
++ Peak    { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ PeakFollower    { *categories { ^ #["UGens>Analysis>Amplitude"] } }
++ Phasor          { *categories { ^ #["UGens>Triggers", "UGens>Buffer"] } }
++ Pitch           { *categories { ^ #["UGens>Analysis>Pitch", "UGens>MachineListening"] } }
++ PitchShift      { *categories { ^ #["UGens>Filters>Pitch"] } }
++ PlayBuf         { *categories { ^ #["UGens>Buffer"] } }
++ Pluck           { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ PMOsc           { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Poll            { *categories { ^ #["UGens>Info"] } }
++ PSinGrain       { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Pulse           { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ PulseCount      { *categories { ^ #["UGens>Triggers"] } }
++ PulseDivider    { *categories { ^ #["UGens>Triggers"] } }
++ PV_BinScramble  { *categories { ^ #["UGens>FFT"] } }
++ PV_BinShift     { *categories { ^ #["UGens>FFT"] } }
++ PV_BinWipe      { *categories { ^ #["UGens>FFT"] } }
++ PV_BrickWall    { *categories { ^ #["UGens>FFT"] } }
++ PV_ChainUGen    { *categories { ^ #["UGens>FFT"] } }
++ PV_ConformalMap { *categories { ^ #["UGens>FFT"] } }
++ PV_Diffuser     { *categories { ^ #["UGens>FFT"] } }
++ PV_HainsworthFoote{ *categories { ^ #["UGens>FFT"] } }
++ PV_JensenAndersen { *categories { ^ #["UGens>FFT"] } }
++ PV_MagAbove     { *categories { ^ #["UGens>FFT"] } }
++ PV_MagDiv       { *categories { ^ #["UGens>FFT"] } }
++ PV_MagFreeze    { *categories { ^ #["UGens>FFT"] } }
++ PV_MagMul       { *categories { ^ #["UGens>FFT"] } }
++ PV_MagSmear     { *categories { ^ #["UGens>FFT"] } }
++ PV_MagSquared   { *categories { ^ #["UGens>FFT"] } }
++ PV_PhaseShift   { *categories { ^ #["UGens>FFT"] } }
++ PV_RandComb     { *categories { ^ #["UGens>FFT"] } }
++ PV_RandWipe     { *categories { ^ #["UGens>FFT"] } }
++ PV_RectComb     { *categories { ^ #["UGens>FFT"] } }
++ PV_RectComb2    { *categories { ^ #["UGens>FFT"] } }
++ Rand            { *categories { ^ #["UGens>Generators>Stochastic", "UGens>Generators>Single-value"] } }
++ RandID          { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ RandSeed        { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ RecordBuf       { *categories { ^ #["UGens>Buffer"] } }
++ Rotate2         { *categories { ^ #["UGens>Multichannel>Ambisonics","UGens>Multichannel>Panners"] } }
++ RunningSum      { *categories { ^ #["UGens>Maths"] } }
++ RunningMin      { *categories { ^ #["UGens>Maths"] } }
++ RunningMax      { *categories { ^ #["UGens>Maths"] } }
++ Saw             { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ ScopeOut        { *categories { ^ #["UGens>Buffer"] } }
++ Select          { *categories { ^ #["UGens>Multichannel>Select"] } }
++ SelectX         { *categories { ^ #["UGens>Multichannel>Select"] } }
++ SelectXFocus    { *categories { ^ #["UGens>Multichannel>Select"] } }
++ SendTrig        { *categories { ^ #["UGens>Triggers"] } }
++ SetBuf           { *categories { ^ #["UGens>Buffer"] } }
++ Silent          { *categories { ^ #["UGens>Generators>Single-value"] } }
++ SinOsc          { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ SinOscFB        { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Slew            { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ Slope           { *categories { ^ #["UGens>Filters>Linear", "UGens>Maths"] } }
++ SpecCentroid    { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
++ SpecFlatness    { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
++ SpecPcile       { *categories { ^ #["UGens>Analysis", "UGens>FFT"] } }
++ Spring          { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ Stepper         { *categories { ^ #["UGens>Triggers"] } }
++ Sweep           { *categories { ^ #["UGens>Triggers"] } }
++ SyncSaw         { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ T2A             { *categories { ^ #["UGens>Conversion"] } }
++ T2K             { *categories { ^ #["UGens>Conversion"] } }
++ Tap             { *categories { ^ #["UGens>Buffer"] } }
++ TBall           { *categories { ^ #["UGens>Filters>Nonlinear"] } }
++ TDelay          { *categories { ^ #["UGens>Triggers", "UGens>Delays"] } }
++ TExpRand        { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ TGrains         { *categories { ^ #["UGens>Buffer", "UGens>Generators>Granular"] } }
++ Timer           { *categories { ^ #["UGens>Triggers"] } }
++ TIRand          { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ ToggleFF        { *categories { ^ #["UGens>Triggers"] } }
++ TRand           { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ Trig1           { *categories { ^ #["UGens>Triggers"] } }
++ TWindex         { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ TWChoose        { *categories { ^ #["UGens>Multichannel>Select"] } }
++ UGen            { *categories { ^ #["UGens>Unclassified"] } }
++ UnpackFFT	    { *categories { ^ #["UGens>FFT"] } }
++ Unpack1FFT	    { *categories { ^ #["UGens>FFT"] } }
++ VarSaw          { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ VDiskIn          { *categories { ^ #["UGens>InOut", "UGens>Buffer"] } }
++ Vibrato         { *categories { ^ #["UGens>Filters>Pitch"] } }
++ VOsc            { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ VOsc3           { *categories { ^ #["UGens>Generators>Deterministic"] } }
++ Warp1           { *categories { ^ #["UGens>Buffer", "UGens>Generators>Granular"] } }
++ WhiteNoise      { *categories { ^ #["UGens>Generators>Stochastic"] } }
++ XLine           { *categories { ^ #["UGens>Envelopes"] } }
++ ZeroCrossing    { *categories { ^ #["UGens>Analysis>Pitch"] } }
++ Control { *categories { ^#["UGens>Synth control"]}}
++ AudioControl { *categories { ^#["UGens>Synth control"]}}
++ LagControl { *categories { ^#["UGens>Synth control"]}}
++ TrigControl { *categories { ^#["UGens>Synth control"]}}
diff --git a/SCClassLibrary/deprecated/deprecated-3.6-help/Help.sc b/SCClassLibrary/deprecated/deprecated-3.6-help/Help.sc
new file mode 100644
index 0000000..88b2707
--- /dev/null
+++ b/SCClassLibrary/deprecated/deprecated-3.6-help/Help.sc
@@ -0,0 +1,916 @@
+/*
+Help.tree and Help.gui - a scheme to allow UGens, no wait I mean ALL classes,
+to be "self-classified" and provide a pleasant-ish browsing interface. No wait,
+let's put all help docs into the tree too! Yeah!
+
+By Dan Stowell, 2007
+with lots of input from Scott Wilson
+and crossplatform tips from nescivi
+
+Try it:
+Help.gui
+
+Help.dumpTree
+
+see also:
+Class.browse
+*/
+
++ Help {
+	*initClass {
+		var	dir;
+		cachePath = Platform.userAppSupportDir +/+ "SC_helptree.cache.txt";
+		categoriesSkipThese = [
+			Filter, BufInfoUGenBase, InfoUGenBase, MulAdd, BinaryOpUGen,
+			UnaryOpUGen, BasicOpUGen, MultiOutUGen, ChaosGen,
+			OutputProxy, AbstractOut, AbstractIn, Object, Class, UGen];
+		if(\SCImageFilter.asClass.notNil) {
+			categoriesSkipThese = categoriesSkipThese.add(\SCImageFilter.asClass)
+		};
+		filterUserDirEntries = [ "Extensions", "SuperCollider", "SuperCollider3", "Help", "svn", "share", "classes", "trunk", "Downloads", "Application Support" ];
+		[Platform.systemExtensionDir, Platform.userExtensionDir].do({ |path|
+			path.split(Platform.pathSeparator).do({ |dirname|
+				if(filterUserDirEntries.detect(_ == dirname).isNil) {
+					filterUserDirEntries = filterUserDirEntries.add(dirname);
+				};
+			});
+		});
+		global = this.new;
+	}
+
+	*new { |root|
+		if(root.isNil and: { global.notNil }) {
+			^global
+		} {
+			^super.new.init(root)
+		}
+	}
+
+	init { |rootdir|
+		root = rootdir !? { rootdir.absolutePath };
+		if(root.isNil or: { root.size == 0 }) {
+			this.tree;
+		} {
+			this.tree(false, false, false, root, false);
+		}
+	}
+
+	tree { |sysext=true, userext=true, allowCached=true, root, writeCache=true|
+		var classes, node, subc, helpRootLen;
+		var helpExtensions = ['html', 'htm', 'scd', 'rtf', 'rtfd'];
+		var helpDirs = Array.new;
+		var thisHelpExt;
+		if(allowCached and: {tree.isNil and: {File.exists(this.cachePath)}}){
+			"Help tree read from cache in % seconds".format({
+				this.readTextArchive; // Attempt to read cached version
+			}.bench(false)).postln;
+		};
+		if(tree.isNil, { "Help files scanned in % seconds".format({
+			// Building the tree
+
+			// Help file paths - will be used for categorising, if categories is nil or if not a class's helpfile.
+			// Otherwise they'll be stored for quick access to helpfile.
+			fileslist = IdentityDictionary.new;
+			if(root.isNil) {
+				helpDirs = helpDirs.add( Platform.helpDir );
+			} {
+				helpDirs = helpDirs.add(root);
+			};
+			if ( sysext ,{
+				helpDirs = helpDirs.add( Platform.systemExtensionDir );
+			});
+			if ( userext ,{
+				helpDirs = helpDirs.add( Platform.userExtensionDir );
+			});
+
+			// Now check each class's ".categories" response
+			classes = Object.allSubclasses.difference(categoriesSkipThese).reject({|c| c.asString.beginsWith("Meta_")});
+			if(root.notNil) {
+					// consider only classes whose main definition is in the root folder
+				classes = classes.select({ |c| c.filenameSymbol.asString.beginsWith(root) });
+			};
+			tree = Dictionary.new(8);
+			classes.do({|class| this.addCatsToTree(class, fileslist)});
+
+			// Now add the remaining ones to the tree - they're everything except the classes which
+			//      have declared their own categorisation(s).
+
+			helpDirs.do{ |helpDir|
+				this.addDirTree( helpDir,tree );
+			};
+			if(writeCache) {
+				{
+					this.writeTextArchive;
+				}.defer(4.312);
+				{
+					var sclang_completion_dict, dictfile;
+					// Also piggyback on the tree struct to write out an auto-completion dictionary:
+					sclang_completion_dict = SortedList.new;
+					this.do{|key, value|
+						if("0123456789".includes(key[0]).not and:{key.includes($ ).not}){
+							sclang_completion_dict.add(key);
+						}
+					};
+					dictfile = File(Platform.userAppSupportDir +/+ "sclang_completion_dict", "w");
+					if(dictfile.isOpen){
+						sclang_completion_dict.do{|entry| dictfile.write(entry ++ Char.nl)};
+						dictfile.close;
+					};
+				}.defer(7.1101);
+			};
+		}.bench(false)).postln});
+		^tree;
+	}
+
+	findKeysForValue{|val|
+		var func, node, keyPath;
+		keyPath =[];
+		if( val.beginsWith( "SC://" ), { ^keyPath });
+		// only file scheme urls in tree
+		if( val.beginsWith( "file:" ), {
+			val = val.copyToEnd( if( val.copyRange( 5, 6 ) == "//", 7, 5 ));
+		});
+		val = val.replace("%20", " ");
+		func = {|dict, depth = 0|
+			node = dict.findKeyForValue(val);
+			node.isNil.if({
+				dict.keysValuesDo({|key, item|
+					item.isKindOf(Dictionary).if({
+						keyPath = keyPath.copyFromStart(depth - 1).add(key);
+						func.value(item, depth + 1)
+					})
+				});
+			}, {^keyPath.add(node)});
+		};
+		func.value(this.tree);
+		^[];
+	}
+
+	addUserFilter{ |subpath|
+		filterUserDirEntries = filterUserDirEntries.add( subpath );
+		this.forgetTree;
+	}
+
+	addDirTree{ |helppath,tree|
+		var helpExtensions = #['html', 'htm', 'scd', 'rtf', 'rtfd'];
+		var subfileslist;
+		var node, subc, helpRootLen, thisHelpExt;
+
+		subfileslist = IdentityDictionary.new;
+
+		PathName.new(helppath.standardizePath).helpFilesDo({|pathname|
+				if( pathname.fullPath.contains("ignore")){
+					"Not ignoring: %".format(pathname.fullPath).postln;
+				};
+				if( pathname.fullPath.contains("3vs2").not
+					and: { pathname.fullPath.contains("help-scripts").not }
+					, {
+						subfileslist[pathname.fileNameWithoutDoubleExtension.asSymbol] = pathname.fullPath;
+						fileslist[pathname.fileNameWithoutDoubleExtension.asSymbol] = pathname.fullPath;
+					})
+			});
+
+		helpRootLen = (helppath.standardizePath).size + 1;
+		subfileslist.keysValuesDo({ |classsym, path|
+
+			subc = path[helpRootLen..].split(Platform.pathSeparator);
+			if ( helppath == Platform.helpDir,
+				{
+					subc = subc[0..subc.size-2]; // Ignore "Help" and the filename at the end
+//					subc = path[helpRootLen..].split(Platform.pathSeparator);
+				},{
+					//helpRootLen = "~".standardizePath;
+					if ( helppath == Platform.systemExtensionDir,
+						{
+//							subc = path[helpRootLen..].split(Platform.pathSeparator);
+							subc = [ "SystemExtensions" ] ++ subc;
+							//subc.postcs;
+						});
+					if ( helppath == Platform.userExtensionDir,
+						{
+							helpRootLen = "~/".absolutePath.size; // + 1;
+							subc = path[helpRootLen..].split(Platform.pathSeparator);
+							subc = [ "UserExtensions" ] ++ subc;
+							// check for common superfluous names that may confuse the categorisation;
+							filterUserDirEntries.do{ |spath|
+								subc = subc.reject{ |it|
+									it == spath;
+								};
+							};
+							// check for double entries (e.g. SwingOSC)
+							subc[..subc.size-2].do{ |it,i|
+								var subset;
+								subset = subc[..i-1];
+								if ( subset.detect( { |jt| jt == it } ).size > 0, {
+									subc = subc[..i-1] ++ subc[i+1..];
+								});
+							};
+						});
+					if ( helppath == root,
+						{
+								// exactly the same as the previous if,
+								// but it isn't right to change helpRootLen
+							// check for common superfluous names that may confuse the categorisation;
+							filterUserDirEntries.do{ |spath|
+								subc = subc.reject{ |it|
+									it == spath;
+								};
+							};
+							// check for double entries (e.g. SwingOSC)
+							subc[..subc.size-2].do{ |it,i|
+								var subset;
+								subset = subc[..i-1];
+								if ( subset.detect( { |jt| jt == it } ).size > 0, {
+									subc = subc[..i-1] ++ subc[i+1..];
+								});
+							};
+						});
+					subc = subc[..subc.size-2];
+				}
+			);
+			if(subc.size > 0) {
+				thisHelpExt = helpExtensions.select{ |ext|
+					subc.last.endsWith("."++ext)
+				};
+			};
+			if ( thisHelpExt.size > 0 , {
+				subc = subc[..subc.size-2];
+			});
+
+			subc = subc.collect({|i| "[["++i++"]]"});
+			node = tree;
+			// Crawl up the tree, creating hierarchy as needed
+			subc.do({|catname|
+				if(node[catname].isNil, {
+					node[catname] = Dictionary.new(3);
+				});
+				node = node[catname];
+			});
+			// "node" should now be the tiniest branch
+			node[classsym.asClass ? classsym] = path;
+		});
+	}
+
+	rebuildTree {
+		this.forgetTree;
+		if(root.isNil) {
+			this.tree(allowCached:false);
+		} {
+			this.tree(false, false, false, root, false);
+		}
+	}
+
+	forgetTree {
+		tree = nil;
+	}
+
+	dumpTree { |node, prefix=""|
+		node = node ?? {this.tree};
+		node.keysValuesDo({ |key, val|
+			if(val.isKindOf(Dictionary), {
+				(prefix + key).postln;
+				this.dumpTree(val, prefix ++ "   ");
+			}, {
+				(prefix + key ++":" + val).postln;
+			});
+		});
+	}
+
+	addCatsToTree { |class, fileslist|
+		var subc, node;
+
+		if(class.categories.isNil.not, {
+			class.categories.do({|cat|
+				subc = cat.split($>).collect({|i| "[["++i++"]]"});
+				node = tree;
+				// Crawl up the tree, creating hierarchy as needed
+				subc.do({|catname|
+					if(node[catname].isNil, {
+						node[catname] = Dictionary.new(3);
+					});
+					node = node[catname];
+				});
+				// "node" should now be the tiniest branch
+				node[class] = fileslist[class.asSymbol] ? "";
+			});
+
+			// Class has been added to list so we're OK
+			fileslist.removeAt(class.asSymbol);
+		}); // end if
+
+	}
+
+	writeTextArchive{ |path|
+		var fp;
+		if(path.isNil){ path = this.cachePath };
+		fp = File(path, "w");
+		this.prRecurseTreeToFile(fp, this.tree); // Must use this.tree - will create if not exists
+		fp.write(fileslist.asTextArchive);
+		fp.close;
+	}
+
+	prRecurseTreeToFile{ | fp, treeBit, numtabs=0 |
+		fp.write("%%\n".format($\t.dup(numtabs).join, treeBit.size));
+		treeBit.keysValuesDo{| key, val |
+			fp.write("%%\n".format($\t.dup(numtabs).join, key.asString));
+			if(val.isKindOf(Dictionary)){
+				this.prRecurseTreeToFile(fp, val, numtabs + 1)
+			}{
+				fp.write("%%\n".format($\t.dup(numtabs).join, val.asString));
+			}
+		};
+	}
+
+	readTextArchive{ |path|
+		var fp, filesliststr;
+		if(path.isNil){ path = this.cachePath };
+		fp = File(path, "r");
+		try{
+			tree = this.prRecurseTreeFromFile(fp);
+		}{
+			"Failure to read tree in Help.treeFromFile(%)".format(path).warn;
+			this.forgetTree;
+		};
+		try{
+			filesliststr = fp.readAllString;
+			if(filesliststr.size < 10){ // Old version of cache didn't store it...
+				"Help.tree cache has no fileslisttree. Will regenerate it".warn;
+				this.forgetTree;
+			}{
+				fileslist = filesliststr.interpret;
+			};
+		}{
+			"Failure to read fileslist in Help.treeFromFile(%)".format(path).warn;
+			this.forgetTree;
+		};
+		fp.close;
+	}
+
+	prRecurseTreeFromFile{ | fp, numtabs=0 |
+		var line, numentries, dict, key;
+		line = fp.getLine[numtabs..];
+		numentries = line.asInteger;
+		dict = Dictionary.new(numentries);
+		numentries.do{
+			line = fp.getLine[numtabs..];
+			key = line;
+			if(key[0]==$[ and:{ key[1]==$[ }){
+				// starting with [[ is indicator of being a category
+				dict[key] = this.prRecurseTreeFromFile(fp, numtabs+1);
+			}{
+				line = fp.getLine[numtabs..];
+				key = key.asSymbol;
+				key = key.asClass ? key; // Classes become classes, topics stay as symbols
+				dict[key] = line;
+			}
+		};
+		^dict
+	}
+
+gui { |sysext=true,userext=true, allowCached=true|
+	var classes, win, lists, listviews, numcols=7, selecteditem, node, newlist, curkey;
+	var selectednodes, scrollView, compView, textView, keys;
+	var classButt, browseButt, bwdButt, fwdButt;
+	var isClass, history = [], historyIdx = 0, fBwdFwd, fHistoryDo, fHistoryMove;
+	var screenBounds, bounds, textViewBounds, results, resultsview, statictextloc;
+	var searchField, helpguikeyacts, fSelectTreePath, inPathSelect = false, fUpdateWinTitle, fLoadError;
+
+	// Call to ensure the tree has been built
+	this.tree( sysext, userext, allowCached );
+
+	// Now for a GUI
+	screenBounds = Window.screenBounds;
+	bounds = Rect(128, 264, 1040, 564);
+	bounds = bounds.center_(screenBounds.center);
+	bounds = bounds.sect(screenBounds.insetBy(15));
+	win = Window.new("Help browser", bounds); // SCWindow
+	// scrollView and compView hold the category-browsing list widgets
+	scrollView = ScrollView.new(win, Rect(5, 0, 425, 529)).hasBorder_(true).resize_(4);
+	compView = CompositeView.new(scrollView, Rect(0, 0, numcols * 200, /*504*/ bounds.height-60));
+	// textView displays a help file "inline"
+	textViewBounds = Rect(435, 0, /*620*/bounds.width-435, /*554*/ bounds.height-35);
+	textView = TextView.new(win, textViewBounds)
+		.hasVerticalScroller_(true)
+		.hasHorizontalScroller_(false)
+		.autohidesScrollers_(false)
+		.resize_(5)
+		.canFocus_(true);
+
+	if(GUI.current.id == \swing, { textView.editable_( false ).canFocus_( true ) });
+
+	textView.bounds = textView.bounds; // hack to fix origin on first load
+
+	// hidden at first, this will receive search results when the search field is activated
+	resultsview = ScrollView(win, textViewBounds)
+				.resize_(5)
+				.visible_(false);
+
+	// updates the history arrow buttons
+	fBwdFwd = {
+		bwdButt.enabled = historyIdx > 0;
+		fwdButt.enabled = historyIdx < (history.size -	1);
+	};
+
+	fLoadError = { |error|
+		error.reportError;
+		"\n\nA discrepancy was found in the help tree.".postln;
+		if(allowCached) {
+			"rm \"%\"".format(cachePath).unixCmd;
+			"The help tree cache may be out of sync with the file system. Rebuilding cache. Please reopen the Help GUI when this is finished.".postln;
+			this.rebuildTree;
+			win.close;
+		} {
+			"Please report the above error dump on the sc-users mailing list.".postln;
+		};
+	};
+
+	// cuts the redo history, adds and performs a new text open action
+	fHistoryDo = { arg selector, argum;
+		history		= history.copyFromStart( historyIdx ).add([ selector, argum ]);
+		historyIdx	= history.size - 1;
+		try({ textView.perform( selector, argum ) }, fLoadError);
+		fBwdFwd.value;
+	};
+
+	// moves relatively in the history, and performs text open action
+	fHistoryMove = { arg incr; var entry;
+		historyIdx	= historyIdx + incr;
+		entry		= history[ historyIdx ];
+		try({ textView.perform( entry[ 0 ], entry[ 1 ]) }, fLoadError);
+		fBwdFwd.value;
+	};
+
+	// keep this check for compatibility with old versions of swingOSC
+	if( textView.respondsTo( \linkAction ), {
+		textView
+			.linkAction_({ arg view, url, descr;
+				var path;
+				if( url.notEmpty, {
+					//fHistoryDo.value( \open, url );
+					keys = this.findKeysForValue(url);
+					if(keys.size == 0, {
+						("Invalid hyperlink:" + url + "Please repair this.\nSearching help directories for alternative.").warn;
+						url = Help.findHelpFile(url.basename.splitext.first);
+						url.notNil.if({keys = this.findKeysForValue(url)});
+					});
+					if(keys.size > 0, {
+						fSelectTreePath.value(keys.drop(-1), keys.last.asString);
+					});
+				}, {
+					if( descr.beginsWith( "SC://" ), {
+						fHistoryDo.value( \open, descr );
+					});
+				});
+			});
+	});
+
+	lists = Array.newClear(numcols);
+	lists[0] = tree.keys(Array).collect(_.asString).sort;
+	selectednodes = Array.newClear(numcols);
+
+	// SCListView
+	listviews = (0..numcols-1).collect({ arg index; var view;
+		view = ListView( compView, Rect( 5 + (index * 200), 4, 190, /* 504 */ bounds.height - 60 ));
+		//view.items = []; // trick me into drawing correctly in scrollview
+		if( view.respondsTo( \allowsDeselection ), {
+			view.allowsDeselection_( true ).value_( nil );
+		});
+		view
+		.resize_(4)
+		.action_({ arg lv; var lv2;
+			if( lv.value.notNil, {
+				// We've clicked on a category or on a class
+
+				if((lv.items.size != 0), {
+					lv2 = if( index < (listviews.size - 1), { listviews[ index + 1 ]});
+
+					selecteditem = lists[index][lv.value];
+					if( lv2.notNil, {
+						// Clear the GUI for the subsequent panels
+						listviews[index+1..].do({ arg lv; lv.items=#[];
+							if( lv.respondsTo( \allowsDeselection ), { lv.value = nil })});
+					});
+
+					// Get the current node, from the parent node
+					node = try { if(index==0, tree, {selectednodes[index-1]})[selecteditem] };
+					curkey = selecteditem;
+					selectednodes[index] = node;
+
+					if(node.isNil, {
+						// We have a "leaf" (class or helpdoc), since no keys found
+
+						if( (index + 1 < lists.size), { lists[index+1] = #[] });
+
+						if(inPathSelect.not, {
+						{
+							// Note: the "isClosed" check is to prevent errors caused by event triggering while user closing window
+							if(textView.isClosed.not){textView.visible = true};
+							if(resultsview.isClosed.not){resultsview.visible = false};
+							fHistoryDo.value( \open, fileslist.at( selecteditem.asSymbol ) ? fileslist.at( \Help ));
+						}.defer( 0.001 );
+						});
+						isClass = selecteditem.asSymbol.asClass.notNil;
+						// Note: "Help" class is not the class that matches "Help.html", so avoid potential confusion via special case
+                            if(classButt.notNil){
+                            	classButt.enabled_((selecteditem!="Help") and: {isClass});
+                            };
+						browseButt.enabled_((selecteditem!="Help") and: {isClass});
+						// The "selectednodes" entry for the leaf, is the path to the helpfile (or "")
+						selectednodes[index] = try { if(index==0, {tree}, {selectednodes[index-1]})
+									[curkey.asSymbol.asClass ? curkey.asSymbol]};
+
+						fUpdateWinTitle.value;
+					}, {
+						// We have a category on our hands
+						if( lv2.notNil, {
+							lists[ index + 1 ] = node.keys(Array).collect(_.asString).sort({|a,b|
+									// the outcomes:
+									// a and b both start with open-bracket:
+									//	test result should be a < b
+									// or one starts with open-bracket and the other doesn't (xor)
+									//	test result should be whether it's a that has the bracket
+								if(a[0] == $[ /*]*/ xor: (b[0] == $[ /*]*/)) {
+									a[0] == $[ /*]*/
+								} {
+									a < b
+								}
+							});
+							lv2.items = lists[index+1];
+						});
+
+					});
+
+					if( (index + 1) < listviews.size, {
+						listviews[index+1].value = if( listviews[index+1].respondsTo( \allowsDeselection ).not, 1 );
+						listviews[index+1].valueAction_( 0 );
+					});
+					selectednodes[index+2 ..] = nil; // Clear out the now-unselected
+				});
+			});
+		});
+	});
+
+	listviews[0].items = lists[0];
+
+	// Add keyboard navigation between columns
+	listviews.do({ |lv, index| // SCView
+		lv.keyDownAction_({|view,char,modifiers,unicode,keycode|
+			var nowFocused, lv2;
+			nowFocused = lv;
+			switch(unicode,
+			// cursor left
+			63234, { if(index > 0, { lv2 = listviews[ index - 1 ]; lv2.focus; nowFocused = lv2 })
+			},
+			// cursor right
+			63235, { if( index < (listviews.size - 1) and: { listviews[ index + 1 ].items.notNil }, {
+						lv2 = listviews[ index + 1 ];
+						try {
+							lv2.value_( if( lv2.respondsTo( \allowsDeselection ).not, - 1 )).valueAction_( 0 ).focus;
+							nowFocused = lv2;
+						}
+				   })
+			},
+			13, { // Hit RETURN to open source or helpfile
+				// The class name, or helpfile name we're after
+
+				if(lv.value.notNil and: {if(index==0, tree, {selectednodes[index-1]})[lists[index][lv.value]].isNil}, {
+					{ selecteditem.help }.defer;
+				});
+			},
+			//default:
+			{
+				// Returning nil is supposed to be sufficient to trigger the default action,
+				// but on my SC this doesn't happen.
+				view.defaultKeyDownAction(char,modifiers,unicode);
+			});
+			if(scrollView.visibleOrigin.x > nowFocused.bounds.left or: {scrollView.visibleOrigin.x + scrollView.bounds.width > nowFocused.bounds.left}, {
+				scrollView.visibleOrigin_(Point(nowFocused.bounds.left - 5, 0));
+			});
+		})
+		.mouseDownAction_({|view, x, y, modifiers, buttonNumber, clickCount|
+			{
+			if(lists[index][lv.value][0]==$[, {
+				if(scrollView.visibleOrigin.x != (lv.bounds.left - 5), {
+					{
+					10.do({|i| { scrollView.visibleOrigin_(
+									Point(((lv.bounds.left - lv.bounds.width)+((10+i)*10)-5), 0))
+								}.defer;
+						0.02.wait;
+					});
+					}.fork;
+				});
+			});
+			}.defer(0.01); // defer because .action above needs to register the new index
+
+			if(clickCount == 2, {
+				if(lv.value.notNil and: { try { if(index==0, tree, {selectednodes[index-1]})[lists[index][lv.value]] }.isNil}, {
+					{ selecteditem.help }.defer;
+				});
+			});
+		});
+	});
+
+	// Add ability to programmatically select an item in a tree
+	fSelectTreePath = { | catpath, leaf |
+		var foundIndex;
+		Task{
+			0.001.wait;
+			inPathSelect = true;
+			catpath.do{ |item, index|
+				foundIndex = listviews[index].items.indexOfEqual(item);
+				if(foundIndex.notNil){
+					listviews[index].value_(foundIndex).doAction;
+				}{
+					"Could not select menu list item % in %".format(item, listviews[index].items).postln;
+				};
+				0.02.wait;
+			};
+			inPathSelect = false;
+			foundIndex = listviews[catpath.size].items.indexOfEqual(leaf);
+			if(foundIndex.notNil){
+				listviews[catpath.size].value_(foundIndex).doAction;
+//				history = history.drop(-1);
+//				historyIdx = history.size - 1;
+			}{
+				"Could not select menu list item %".format(leaf).postln;
+			};
+			textView.visible = true;
+			resultsview.visible = false;
+			fUpdateWinTitle.value;
+			win.front;
+		}.play(AppClock);
+	};
+
+	fUpdateWinTitle = {
+		win.name_(
+			(["Help browser"] ++ listviews.collect{|lv| lv.value !? {lv.items[lv.value]} }.reject(_.isNil)).join(" > ") );
+	};
+
+	Platform.case(\windows, {
+            // TEMPORARY WORKAROUND:
+            // At present, opening text windows from GUI code can cause crashes on Psycollider
+            // (thread safety issue?). To work around this we just remove those buttons.
+	}, {
+		Button.new( win, Rect( 5, /* 534 */ bounds.height - 30, 110, 20 ))
+			.states_([["Open Help File", Color.black, Color.clear]])
+			.resize_(7)
+			.action_({{ selecteditem.help }.defer;});
+		classButt = Button.new( win, Rect( 119, /* 534 */ bounds.height - 30, 110, 20 ))
+			.states_([["Open Class File", Color.black, Color.clear]])
+			.resize_(7)
+			.action_({
+				if(selecteditem.asSymbol.asClass.notNil, {
+					{selecteditem.asSymbol.asClass.openCodeFile }.defer;
+				});
+			});
+	});
+	browseButt = Button.new( win, Rect( 233, /* 534 */ bounds.height - 30, 110, 20 ))
+		.states_([["Browse Class", Color.black, Color.clear]])
+		.resize_(7)
+		.action_({
+			if(selecteditem.asSymbol.asClass.notNil, {
+				{selecteditem.asSymbol.asClass.browse }.defer;
+			});
+		});
+	bwdButt = Button.new( win, Rect( 347, /* 534 */ bounds.height - 30, 30, 20 ))
+		.states_([[ "<" ]])
+		.resize_(7)
+		.action_({
+			if( historyIdx > 0, {
+				fHistoryMove.value( -1 );
+			});
+		});
+	fwdButt = Button.new( win, Rect( 380, /* 534 */ bounds.height - 30, 30, 20 ))
+		.states_([[ ">" ]])
+		.resize_(7)
+		.action_({
+			if( historyIdx < (history.size - 1), {
+				fHistoryMove.value( 1 );
+			});
+		});
+	fBwdFwd.value;
+
+	// textfield for searching:
+	statictextloc = Rect(10, 10, textViewBounds.width-20, 200);
+	StaticText.new(win, Rect(435, bounds.height-35, 100 /* bounds.width-435 */, 35))
+		.align_(\right).resize_(7).string_("Search help files:");
+	searchField = TextField.new(win, Rect(535, bounds.height-35, bounds.width-535-35, 35).insetBy(8))
+		.resize_(8).action_({|widget|
+
+			if(widget.value != ""){
+				// Let's search!
+				// hide the textView, show the resultsview, do a query
+				textView.visible = false;
+				resultsview.visible = true;
+				resultsview.removeAll;
+				results = this.search(widget.value);
+				// Now add the results!
+				StaticText(resultsview, Rect(0, 0, textViewBounds.width / 2, 30))
+					.resize_(1)
+					.align_(\right)
+					.string_("% results found for query '%'.".format(results.size, widget.value));
+				Button(resultsview, Rect(textViewBounds.width / 2, 0, 100, 30).insetBy(5))
+					.resize_(1)
+					.states_([["Clear"]])
+					.action_({ searchField.valueAction_("") })
+					.focus();
+				results.do{|res, index|
+					res.drawRow(resultsview, Rect(0, index*30 + 30, textViewBounds.width, 30),
+						// Add an action that uses the gui itself:
+						{ fSelectTreePath.(res.catpath, res.docname) }
+						);
+				};
+
+			}{
+				// Empty query string, go back to textView
+				textView.visible = true;
+				resultsview.visible = false;
+			};
+
+		});
+
+	// Handle some "global" (for the Help gui) key actions
+	helpguikeyacts = {|view, char, modifiers, unicode, keycode|
+		if((modifiers & (262144 | 1048576)) != 0){ // cmd or control key is pressed
+			unicode.switch(
+				6, { // f for find
+					searchField.focus;
+				},
+				8, // h for home
+				{
+					{
+						listviews[0].valueAction_(listviews[0].items.find(["Help"]));
+						scrollView.visibleOrigin_(0 at 0);
+					}.defer(0.001)
+				}
+			);
+		};
+	};
+	win.view.addAction(helpguikeyacts, \keyUpAction);
+
+	win.onClose_{
+		// This is done to prevent Cmd+W winclose from trying to do things in vanishing textviews!
+		fHistoryDo = {};
+	};
+
+	win.front;
+	listviews[0].focus;
+	if(listviews[0].items.detect({ |item| item == "Help" }).notNil) {
+		fSelectTreePath.([], "Help"); // Select the "Help" entry in the root
+		selecteditem = "Help";
+	} {
+		selecteditem = listviews[0].items.first;
+		fSelectTreePath.([], selecteditem);
+	}
+}
+// end gui
+
+	all {
+		//		^this.new("Help/").dumpToDoc("all-helpfiles");
+		var doc;
+		var helpExtensions = ['html', 'htm', 'scd', 'rtf', 'rtfd'];
+		var str = CollStream.new;
+		doc = Document.new("all-helpfiles");
+		[       Platform.helpDir,
+			Platform.systemExtensionDir,
+			Platform.userExtensionDir
+		].do{ |it|
+			PathName.new( it ).foldersWithoutSVN.do{ |folderPn|
+				str << folderPn.fullPath << Char.nl;
+				folderPn.helpFilesDo { |filePn|
+					str << Char.tab <<
+					filePn.fileNameWithoutExtension  << Char.nl;
+				};
+			}
+		};
+		doc.string = str.collection;
+	}
+
+	// Iterates the tree, finding the help-doc paths and calling action.value(docname, path)
+	do { |action|
+		this.pr_do(action, this.tree, []);
+	}
+	pr_do { |action, curdict, catpath|
+		curdict.keysValuesDo{|key, val|
+			if(val.class == Dictionary){
+				this.pr_do(action, val, catpath ++ [key]) // recurse
+			}{
+				action.value(key.asString, val, catpath)
+			}
+		}
+	}
+
+	// Returns an array of hits as HelpSearchResult instances
+	search { |query, ignoreCase=true|
+		var results = List.new, file, ext, docstr, pos;
+		this.do{ |docname, path, catpath|
+			if(path != ""){
+				if(docname.find(query, ignoreCase).notNil){
+					results.add(HelpSearchResult(docname, path, 100 / (docname.size - query.size + 1), "", catpath.deepCopy));
+				}{
+					ext = path.splitext[1];
+					// OK, let's open the document, see if it contains the string... HEAVY!
+					file = File(path, "r");
+					if(file.isOpen){
+						docstr = ext.switch(
+							"html", {file.readAllStringHTML},
+							"htm",  {file.readAllStringHTML},
+							"rtf",  {file.readAllStringRTF},
+							        {file.readAllString}
+							);
+						file.close;
+						pos = docstr.findAll(query, ignoreCase);
+						if(pos.notNil){
+							results.add(HelpSearchResult(docname, path, pos.size, docstr[pos[0] ..  pos[0]+50], catpath.deepCopy));
+						}
+					}{
+						"Help.search will rebuild help cache, since an expected file was not found: %".format(path).postln;
+						// EXPERIMENTAL:
+						// File:isOpen failure means that the help tree cache is out of date.
+						// So let's explicitly destroy and recreate it.
+						// There may be a danger of infinite loops if some weird filesystem stuff is happening...?
+						this.forgetTree;
+						this.tree(allowCached: false);
+						^this.search(query, ignoreCase);
+					}
+				}
+			}{
+				//"empty path: %".format(docname).postln;
+			}
+		};
+		results = results.sort;
+
+		^results
+	}
+	// This iterates the Help.tree to find the file. Can be used instead of platform-specific approaches
+	findHelpFile { |str|
+		str = str.asString;
+		this.do { |key, path|
+			if(key == str and: { path.size > 0 }) { ^path }
+		};
+		^nil
+	}
+
+	// does the same as findHelpFile, but replaces the string with "Help" if the string is empty. This makes it possible in sced to open the main help if nothing is selected.
+	findHelpFileOrElse { |str|
+		str = str.asString;
+		if ( str.isEmpty ) { str = "Help" };
+		^Help.findHelpFile( str );
+	}
+
+// class method interface
+
+	*tree { |sysext = true, userext = true, allowCached = true| ^global.tree(sysext, userext, allowCached) }
+	*addUserFilter { |subpath| ^global.addUserFilter(subpath) }
+	*addDirTree { |helppath, tree| ^global.addDirTree(helppath, tree) }
+	*rebuildTree { ^global.rebuildTree }
+	*forgetTree { ^global.forgetTree }
+	*dumpTree { |node, prefix = ""| ^global.dumpTree(node, prefix) }
+	*addCatsToTree { |class, fileslist| ^global.addCatsToTree(class, fileslist) }
+	*all { ^global.all }
+	*do { |action| ^global.do(action) }
+	*pr_do { |action, curdict| ^global.pr_do(action, curdict) }
+	*searchGUI { ^global.searchGUI }
+	*search { |query, ignoreCase| ^global.search(query, ignoreCase) }
+	*findHelpFile { |str| ^global.findHelpFile(str) }
+	*makeHelp { |undocumentedObject, path| ^global.makeHelp(undocumentedObject, path) }
+	*makeAutoHelp { |andocumentedClass, path| ^global.makeAutoHelp(andocumentedClass, path) }
+
+		// instance-based getters
+	filterUserDirEntries { ^filterUserDirEntries }
+	cachePath { ^cachePath }
+} // End class
+
+
+
+
++ Object {
+
+// Classes may override this to specify where they fit in a thematic classification,
+// if they want to classify differently than the help doc location would indicate.
+//
+// Multiple categorisations are allowed (hence the array).
+//
+// Extension libs (which won't automatically get allocated, since their help won't be in the main
+//   help tree) SHOULD override this to specify where best to fit.
+//   (Note: *Please* use the "Libraries" and/or "UGens" main classifications, those are the best
+//   places for users to find extensions docs. Don't add new "root" help categories, that's
+//   not good for GUI usability.)
+//
+// Each categorisation should be a string using ">" marks to separate categories from subcategories.
+// For examples see (e.g.) SinOsc, Gendy1, LPF, Integrator, EnvGen
+//*categories {	^ #["Unclassified"]	}
+*categories {	^ nil	}
+
+}
+
++ Pattern {
+	*categories {	^ #["Streams-Patterns-Events>Patterns"] }
+}
+
+// This allows it to be called from sclang menu item
++ Process {
+	helpGui {
+		Help.gui
+	}
+}
diff --git a/SCClassLibrary/deprecated/deprecated-3.6-help/HelpSearchResult.sc b/SCClassLibrary/deprecated/deprecated-3.6-help/HelpSearchResult.sc
new file mode 100644
index 0000000..338c2c4
--- /dev/null
+++ b/SCClassLibrary/deprecated/deprecated-3.6-help/HelpSearchResult.sc
@@ -0,0 +1,31 @@
+HelpSearchResult {
+	var <>docname, <>path, <>goodness, <>context, <>catpath;
+	*new{|docname, path, goodness, context, catpath|
+		^this.newCopyArgs(docname, path, goodness, context, catpath);
+	}
+
+	asString {
+		^ "HelpSearchResult(%, %, %, %)".format(docname, path.basename, goodness, this.contextTrimmed)
+	}
+	// used for sorting:
+	<= { |that|
+		^ this.goodness >= that.goodness
+	}
+
+	contextTrimmed {
+		^context.tr($\n, $ ).tr($\t, $ )
+	}
+
+	drawRow { |parent, bounds, action|
+		// SCButton
+		Button.new(parent, bounds.copy.setExtent(bounds.width * 0.3, bounds.height).insetBy(5, 5))
+				.states_([[docname]]).action_(action ? { path.openHTMLFile });
+
+		StaticText.new(parent, bounds.copy.setExtent(bounds.width * 0.7, bounds.height)
+										.moveBy(bounds.width * 0.3, 0)
+										.insetBy(5, 5))
+				.string_(this.contextTrimmed);
+
+	}
+}
+
diff --git a/SCClassLibrary/deprecated/deprecated-3.6.sc b/SCClassLibrary/deprecated/deprecated-3.6.sc
new file mode 100644
index 0000000..6d3f815
--- /dev/null
+++ b/SCClassLibrary/deprecated/deprecated-3.6.sc
@@ -0,0 +1,14 @@
++ MIDIIn {
+	*new { arg port;
+		DeprecatedError(this, thisMethod).throw;
+		^super.new.port_(port)
+	}
+	port {
+		DeprecatedError(this, thisMethod).throw;		
+		^port
+	}
+	port_ { |newPort|
+		DeprecatedError(this, thisMethod).throw;		
+		port = newPort;
+	}
+}
\ No newline at end of file
diff --git a/SCClassLibrary/deprecated/deprecated-3.7.sc b/SCClassLibrary/deprecated/deprecated-3.7.sc
new file mode 100644
index 0000000..9639dac
--- /dev/null
+++ b/SCClassLibrary/deprecated/deprecated-3.7.sc
@@ -0,0 +1,102 @@
+// in 3.6, both "help" and "openHelpFile" will work fine. In 3.7, "openHelpFile" will be deprecated. In 3.8 it will be gone.
+
++ Object {
+	openHelpFile {
+		this.help
+	}
+}
+
++ String {
+	openHelpFile {
+		this.help
+	}
+}
+
++ Method {
+	openHelpFile {
+		this.help
+	}
+}
+
++ Quark {
+	openHelpFile {
+		this.help
+	}
+}
+
+
+// openTextFile is actually the same as openDocument
++ String {
+	openTextFile { arg selectionStart=0, selectionLength=0;
+		this.openDocument(selectionStart, selectionLength)
+	}
+}
+
++ Symbol {
+	openTextFile { arg selectionStart=0, selectionLength=0;
+		^this.openDocument(selectionStart, selectionLength)
+	}
+}
+
+// Document: themes are cocoa-specific
++ Document {
+	*theme_ { |...args|
+		this.deprecated(thisMethod);
+		this.implementationClass.tryPerform(\theme_, args)
+	}
+
+	*theme {
+		this.deprecated(thisMethod);
+		^this.implementationClass.tryPerform(\theme)
+	}
+
+	*postColor {
+		this.deprecated(thisMethod);
+		^this.implementationClass.tryPerform(\postColor)
+	}
+
+	*postColor_ {|...args|
+		this.deprecated(thisMethod);
+		^this.implementationClass.tryPerform(\postColor_, args)
+	}
+
+	*background {
+		this.deprecated(thisMethod);
+		^this.implementationClass.tryPerform(\background)
+	}
+
+	*background_ {|...args|
+		this.deprecated(thisMethod);
+		^this.implementationClass.tryPerform(\background_, args)
+	}
+
+	*selectedBackground {
+		this.deprecated(thisMethod);
+		^this.implementationClass.tryPerform(\selectedBackground)
+	}
+
+	*selectedBackground_ {|...args|
+		this.deprecated(thisMethod);
+		^this.implementationClass.tryPerform(\selectedBackground_, args)
+	}
+
+	*stringColor_ {|...args|
+		this.deprecated(thisMethod);
+		^this.implementationClass.tryPerform(\stringColor_, args)
+	}
+
+	setFont { | ...args |
+		this.deprecated(thisMethod);
+		^this.subclassResponsibility(thisMethod)
+	}
+
+	setTextColor { | ...args |
+		this.deprecated(thisMethod);
+		^this.subclassResponsibility(thisMethod)
+	}
+
+	syntaxColorize {
+		this.deprecated(thisMethod);
+		^this.subclassResponsibility(thisMethod)
+	}
+}
diff --git a/SCClassLibrary/scide_scqt/ScIDE.sc b/SCClassLibrary/scide_scqt/ScIDE.sc
new file mode 100644
index 0000000..13cc90a
--- /dev/null
+++ b/SCClassLibrary/scide_scqt/ScIDE.sc
@@ -0,0 +1,311 @@
+ScIDE {
+	classvar subListSorter;
+	classvar <>currentPath;
+	classvar <defaultServer;
+	classvar serverController;
+	classvar docRoutine;
+
+	*initClass {
+		subListSorter = { | a b | a[0].perform('<', b[0]) };
+
+		Class.initClassTree(Server);
+
+		StartUp.add {
+			if (ScIDE.connected) {
+				this.handshake
+			};
+		}
+	}
+
+	*connect {|ideName|
+		this.prConnect(ideName);
+		defer {
+			this.handshake
+		}
+	}
+
+	*handshake {
+		this.prSend(\classLibraryRecompiled);
+		this.prSend(\requestCurrentPath);
+
+		this.defaultServer = Server.default;
+		this.sendIntrospection;
+	}
+
+	*defaultServer_ {|server|
+		serverController.remove;
+		serverController = SimpleController(server)
+		.put(\serverRunning, { | server, what, extraArg |
+			this.prSend(\defaultServerRunningChanged, [
+				server.serverRunning, server.addr.hostname, server.addr.port]);
+		})
+		.put(\default, { | server, what, newServer |
+			("changed default server to:" + newServer.name).postln;
+			this.defaultServer = newServer;
+		});
+		defaultServer = server;
+		this.prSend(\defaultServerRunningChanged, [
+			server.serverRunning, server.addr.hostname, server.addr.port]);
+	}
+
+	*request { |id, command, data|
+		this.tryPerform(command, id, data);
+	}
+
+	*connected {
+		_ScIDE_Connected
+	}
+
+	*open { |path, charPos = 0, selectionLength = 0|
+		this.prSend(\openFile, [path, charPos, selectionLength])
+	}
+
+	*sendIntrospection {
+		var res = [];
+		Class.allClasses.do { |class|
+			var classData;
+			classData = [
+				class.name,
+				class.class.name,
+				class.superclass !? {class.superclass.name},
+				class.filenameSymbol,
+				class.charPos,
+				class.methods.collect { |m| this.serializeMethodDetailed(m) };
+			];
+			res = res.add(classData);
+		};
+		this.prSend(\introspection, res);
+	}
+
+	*sendAllClasses { |id|
+		this.prSend(id, Class.allClasses.collectAs(_.asString, Array))
+	}
+
+	*sendSymbolTable { |id|
+		var result, dt;
+
+		dt = {
+			result = IdentitySet(16384);
+			Class.allClasses.do { | class |
+				if (class.isMetaClass.not) {
+					result.add(class.name);
+				};
+				class.methods.do { | method |
+					result.add(method.name);
+				};
+			};
+
+			result = result.collectAs(_.asString, Array)
+		}.bench(false);
+
+		"ScIDE: Built symbol table in % seconds\n".postf(dt.asStringPrec(3));
+
+		this.prSend(id, result)
+	}
+
+	*completeClass { |id, text|
+		var res = [];
+		Class.allClasses.do { |class|
+			var name = class.name.asString;
+			if (name.beginsWith(text)) {
+				res = res.add(name);
+			};
+		};
+		if (res.size > 0) {
+			this.prSend(id, res);
+		};
+	}
+
+	*completeClassMethod { |id, text|
+		var class, methods, res;
+		class = text.asSymbol.asClass;
+		if (class.notNil) {
+			methods = IdentityDictionary();
+			class = class.class;
+			while { class.notNil } {
+				class.methods.do { |method|
+					// methods include operators like "+", but those are
+					// actually not valid in the method call syntax
+					if (method.name.asString[0].isAlpha &&
+						methods[method.name].isNil)
+					{
+						methods.put(method.name, method);
+					};
+				};
+				class = class.superclass;
+			};
+			res = methods.values.collect { |m| this.serializeMethod(m) };
+			if (res.size > 0) { this.prSend(id, res) };
+		}
+	}
+
+	*completeMethod { |id, text|
+		var res = [];
+		Class.allClasses.do { |class|
+			class.methods.do { |method|
+				var signature;
+				var definition;
+				if (method.name.asString.beginsWith(text)) {
+					res = res.add( this.serializeMethod(method) );
+				};
+			};
+		};
+		if (res.size > 0) { this.prSend(id, res) };
+	}
+
+	*findMethod { |id, text|
+		var cname, mname, tokens, res;
+		var class, method;
+
+		tokens = text.split($.);
+		if (tokens.size > 1) {
+			cname = tokens[0];
+			mname = tokens[1];
+		}{
+			mname = tokens[0];
+		};
+		if (mname.size < 1) { ^this };
+
+		if (cname.size > 0) {
+			class = cname.asSymbol.asClass;
+			if (class.isNil) {
+				warn("No class named" + cname.asString);
+				^this;
+			};
+			method = class.class.findRespondingMethodFor(mname.asSymbol);
+			if (method.isNil) {
+				warn("No such method:" + cname.asString ++ "." ++ mname.asString);
+				^this;
+			};
+			this.prSend(id, [this.serializeMethod(method)]);
+		}{
+			res = [];
+			this.allMethodsDo { |method|
+				if (method.name.asString == mname) {
+					res = res.add( this.serializeMethod(method) );
+				};
+			};
+			if (res.size > 0) {
+				this.prSend(id, res)
+			}{
+				warn("No such method:" + mname.asString);
+				^this;
+			};
+		}
+	}
+
+	*serializeMethod { arg method;
+		var data = [method.ownerClass.name, method.name];
+		if (method.argNames.size > 1) {
+			data = data ++ [
+				method.argNames.as(Array),
+				method.prototypeFrame.collect { |val| val !? val.cs }
+			].lace [2..];
+		};
+		^data;
+	}
+
+	*serializeMethodDetailed { arg method;
+		var args, data;
+		args = [];
+		if (method.argNames.size > 1) {
+			args = args ++ [
+				method.argNames.as(Array),
+				method.prototypeFrame.collect { |val|
+					val !? {
+						if (val.class === Float) { val.asString } { val.cs }
+					}
+				};
+			].lace [2..];
+		};
+		data = [
+			method.ownerClass.name,
+			method.name,
+			method.filenameSymbol,
+			method.charPos,
+			args
+		];
+		^data;
+	}
+
+	*allMethodsDo { arg func;
+		Class.allClasses.do { |class|
+			class.methods.do { |method|
+				func.value(method);
+			};
+		};
+	}
+
+	*findReferencesToSymbol {|requestId, symbol|
+		var methods;
+		var result = SortedList(8, subListSorter);
+		var references = Class.findAllReferences(symbol.asSymbol);
+
+		if (references.notNil) {
+			methods = IdentitySet.new;
+			references.do { | funcDef |
+				var homeContext;
+				homeContext = if(funcDef.context.isNil) {funcDef} {funcDef.context.homeContext};
+				if (homeContext.isKindOf(Method)) {
+					methods.add(homeContext);
+				};
+			};
+			methods.do { | method |
+				result.add([
+					method.ownerClass.name,
+					method.name,
+					method.filenameSymbol.asString,
+					method.charPos + 1
+				])
+			}
+		};
+
+		ScIDE.prSend(requestId, [symbol, result.asArray])
+	}
+
+	*openHelpUrl { |url|
+		ScIDE.processUrl(url, { |processedUrl|
+			this.prSend("openHelpUrl", processedUrl.asString)
+		});
+	}
+
+	*cmdPeriod { docRoutine.play(AppClock) }
+
+	*processUrl { |urlString, doneAction|
+		// NOTE: Copied and modified from HelpBrower:-goTo
+		var url, brokenFunc;
+
+		brokenFunc = { |fragment|
+			var brokenUrl = URI.fromLocalPath( SCDoc.helpTargetDir++"/BrokenLink.html" );
+			brokenUrl.fragment = fragment;
+			brokenUrl;
+		};
+
+		url = URI(urlString);
+
+		if (docRoutine.notNil) { docRoutine.stop };
+		docRoutine = Routine {
+			try {
+				url = SCDoc.prepareHelpForURL(url) ?? { brokenFunc.(urlString) };
+				doneAction.value(url);
+			} {|err|
+				err.throw;
+			};
+			CmdPeriod.remove(this);
+			docRoutine = nil;
+		}.play(AppClock);
+		CmdPeriod.add(this);
+	}
+
+	// PRIVATE ///////////////////////////////////////////////////////////
+
+	*prSend {|id, data|
+		_ScIDE_Send
+		this.primitiveFailed
+	}
+
+	*prConnect {|ideName|
+		_ScIDE_Connect
+		this.primitiveFailed
+	}
+}
diff --git a/SCDoc/SCDoc.tab.cpp b/SCDoc/SCDoc.tab.cpp
index d980b71..8f5554c 100644
--- a/SCDoc/SCDoc.tab.cpp
+++ b/SCDoc/SCDoc.tab.cpp
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.5.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* Bison implementation for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    
    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
@@ -46,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.5"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -75,7 +73,7 @@
 
 /* Copy the first part of user declarations.  */
 
-/* Line 189 of yacc.c  */
+/* Line 268 of yacc.c  */
 #line 1 "SCDoc.y"
 
 /************************************************************************
@@ -123,10 +121,15 @@ void scdocerror(const char *str);
 extern void error(const char *fmt, ...);
 extern void post(const char *fmt, ...);
 
+static inline bool stringEqual(const char * a, const char * b)
+{
+    return strcmp(a, b) == 0;
+}
+
 
 
-/* Line 189 of yacc.c  */
-#line 130 "SCDoc.tab.cpp"
+/* Line 268 of yacc.c  */
+#line 133 "SCDoc.tab.cpp"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -217,8 +220,8 @@ extern void post(const char *fmt, ...);
 typedef union YYSTYPE
 {
 
-/* Line 214 of yacc.c  */
-#line 50 "SCDoc.y"
+/* Line 293 of yacc.c  */
+#line 55 "SCDoc.y"
 
     int i;
     const char *id;
@@ -227,8 +230,8 @@ typedef union YYSTYPE
 
 
 
-/* Line 214 of yacc.c  */
-#line 232 "SCDoc.tab.cpp"
+/* Line 293 of yacc.c  */
+#line 235 "SCDoc.tab.cpp"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -251,15 +254,15 @@ typedef struct YYLTYPE
 
 /* Copy the second part of user declarations.  */
 
-/* Line 264 of yacc.c  */
-#line 95 "SCDoc.y"
+/* Line 343 of yacc.c  */
+#line 100 "SCDoc.y"
 
 //int scdoclex (YYSTYPE * yylval_param, struct YYLTYPE * yylloc_param );
 int scdoclex (void);
 
 
-/* Line 264 of yacc.c  */
-#line 263 "SCDoc.tab.cpp"
+/* Line 343 of yacc.c  */
+#line 266 "SCDoc.tab.cpp"
 
 #ifdef short
 # undef short
@@ -309,7 +312,7 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -362,11 +365,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -389,24 +392,24 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
 	     && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
@@ -437,23 +440,7 @@ union yyalloc
      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
       + 2 * YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -473,6 +460,26 @@ union yyalloc
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (YYID (0))
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  70
 /* YYLAST -- Last index in YYTABLE.  */
@@ -595,20 +602,20 @@ static const yytype_int8 yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   102,   102,   103,   106,   112,   116,   124,   125,   128,
-     129,   132,   133,   134,   137,   138,   139,   140,   143,   144,
-     145,   146,   149,   150,   153,   154,   155,   158,   158,   159,
-     162,   163,   166,   167,   168,   171,   174,   175,   178,   179,
-     180,   183,   190,   194,   197,   198,   209,   220,   221,   224,
-     233,   234,   237,   238,   241,   242,   245,   246,   249,   250,
-     253,   254,   262,   263,   266,   267,   268,   271,   272,   275,
-     276,   277,   278,   279,   280,   281,   284,   285,   288,   289,
-     292,   293,   294,   295,   296,   299,   300,   301,   302,   303,
-     304,   305,   306,   309,   310,   311,   314,   315,   316,   319,
-     320,   323,   324,   327,   330,   331,   334,   335,   338,   339,
-     342,   349,   350,   353,   354,   357,   358,   361,   362,   365,
-     366,   369,   370,   373,   374,   377,   378,   381,   382,   385,
-     386,   387,   388,   391,   392
+       0,   107,   107,   108,   111,   117,   121,   129,   130,   133,
+     134,   137,   138,   139,   142,   143,   144,   145,   148,   149,
+     150,   151,   154,   155,   158,   159,   160,   163,   163,   164,
+     167,   168,   171,   172,   173,   176,   179,   180,   183,   184,
+     185,   188,   195,   201,   206,   207,   218,   229,   230,   233,
+     242,   243,   246,   247,   250,   251,   254,   255,   258,   259,
+     262,   263,   271,   272,   275,   276,   277,   280,   281,   284,
+     285,   286,   287,   288,   289,   290,   293,   294,   297,   298,
+     301,   302,   303,   304,   305,   308,   309,   310,   311,   312,
+     313,   314,   315,   318,   319,   320,   323,   324,   325,   328,
+     329,   332,   333,   336,   339,   340,   343,   344,   347,   348,
+     351,   358,   359,   362,   363,   366,   367,   370,   371,   374,
+     375,   378,   379,   382,   383,   386,   387,   390,   391,   394,
+     395,   396,   397,   400,   401
 };
 #endif
 
@@ -693,8 +700,8 @@ static const yytype_uint8 yyr2[] =
        2,     1,     1,     3,     1
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
@@ -771,8 +778,7 @@ static const yytype_int16 yypgoto[] =
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
 #define YYTABLE_NINF -3
 static const yytype_int16 yytable[] =
 {
@@ -822,6 +828,12 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,    44
 };
 
+#define yypact_value_is_default(yystate) \
+  ((yystate) == (-125))
+
+#define yytable_value_is_error(yytable_value) \
+  YYID (0)
+
 static const yytype_int16 yycheck[] =
 {
        1,    10,    11,    45,    11,    46,    54,     0,    48,    96,
@@ -908,9 +920,18 @@ static const yytype_uint8 yystos[] =
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
 #define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -920,7 +941,6 @@ do								\
     {								\
       yychar = (Token);						\
       yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
       YYPOPSTACK (1);						\
       goto yybackup;						\
     }								\
@@ -967,7 +987,7 @@ while (YYID (0))
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)			\
      fprintf (File, "%d.%d-%d.%d",			\
 	      (Loc).first_line, (Loc).first_column,	\
@@ -1172,7 +1192,6 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
 
 #if YYERROR_VERBOSE
 
@@ -1275,115 +1294,142 @@ yytnamerr (char *yyres, const char *yystr)
 }
 # endif
 
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
 
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                yytype_int16 *yyssp, int yytoken)
+{
+  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+  YYSIZE_T yysize = yysize0;
+  YYSIZE_T yysize1;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = 0;
+  /* Arguments of yyformat. */
+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the "unexpected", one per
+     "expected"). */
+  int yycount = 0;
+
+  /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+       for details.  YYERROR is fine as it does not invoke this
+       function.
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple "syntax error".
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (yytoken != YYEMPTY)
     {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
+      int yyn = yypact[*yyssp];
+      yyarg[yycount++] = yytname[yytoken];
+      if (!yypact_value_is_default (yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          int yyxbegin = yyn < 0 ? -yyn : 0;
+          /* Stay within bounds of both yycheck and yytname.  */
+          int yychecklim = YYLAST - yyn + 1;
+          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+          int yyx;
+
+          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+                && !yytable_value_is_error (yytable[yyx + yyn]))
+              {
+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    yycount = 1;
+                    yysize = yysize0;
+                    break;
+                  }
+                yyarg[yycount++] = yytname[yyx];
+                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+                if (! (yysize <= yysize1
+                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  return 2;
+                yysize = yysize1;
+              }
+        }
+    }
 
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_("syntax error"));
+      YYCASE_(1, YY_("syntax error, unexpected %s"));
+      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+    }
 
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
+  yysize1 = yysize + yystrlen (yyformat);
+  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    return 2;
+  yysize = yysize1;
 
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
+  if (*yymsg_alloc < yysize)
+    {
+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize <= *yymsg_alloc
+             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
     }
+
+  /* Avoid sprintf, as that infringes on the user's name space.
+     Don't have undefined behavior even if the translation
+     produced a string with the wrong number of "%s"s.  */
+  {
+    char *yyp = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+        {
+          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyformat += 2;
+        }
+      else
+        {
+          yyp++;
+          yyformat++;
+        }
+  }
+  return 0;
 }
 #endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
@@ -1414,435 +1460,435 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
     {
       case 46: /* "\"text\"" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1423 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1469 "SCDoc.tab.cpp"
 	break;
       case 47: /* "URL" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1432 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1478 "SCDoc.tab.cpp"
 	break;
       case 48: /* "COMMA" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1441 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1487 "SCDoc.tab.cpp"
 	break;
       case 49: /* "\"method name\"" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1450 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1496 "SCDoc.tab.cpp"
 	break;
       case 50: /* "\"arguments string\"" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1459 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1505 "SCDoc.tab.cpp"
 	break;
       case 59: /* "document" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1468 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1514 "SCDoc.tab.cpp"
 	break;
       case 61: /* "dochead" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1477 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1523 "SCDoc.tab.cpp"
 	break;
       case 62: /* "headline" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1486 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1532 "SCDoc.tab.cpp"
 	break;
       case 65: /* "optsections" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1495 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1541 "SCDoc.tab.cpp"
 	break;
       case 66: /* "sections" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1504 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1550 "SCDoc.tab.cpp"
 	break;
       case 67: /* "section" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1513 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1559 "SCDoc.tab.cpp"
 	break;
       case 69: /* "optsubsections" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1522 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1568 "SCDoc.tab.cpp"
 	break;
       case 70: /* "subsections" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1531 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1577 "SCDoc.tab.cpp"
 	break;
       case 71: /* "subsection" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1540 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1586 "SCDoc.tab.cpp"
 	break;
       case 72: /* "optsubsubsections" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1549 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1595 "SCDoc.tab.cpp"
 	break;
       case 73: /* "subsubsections" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1558 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1604 "SCDoc.tab.cpp"
 	break;
       case 74: /* "subsubsection" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1567 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1613 "SCDoc.tab.cpp"
 	break;
       case 75: /* "optMETHODARGS" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1576 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1622 "SCDoc.tab.cpp"
 	break;
       case 76: /* "methodname" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1585 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1631 "SCDoc.tab.cpp"
 	break;
       case 77: /* "methnames" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1594 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1640 "SCDoc.tab.cpp"
 	break;
       case 78: /* "methodbody" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1603 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1649 "SCDoc.tab.cpp"
 	break;
       case 79: /* "optbody" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1612 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1658 "SCDoc.tab.cpp"
 	break;
       case 80: /* "optargs" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1621 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1667 "SCDoc.tab.cpp"
 	break;
       case 81: /* "args" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1630 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1676 "SCDoc.tab.cpp"
 	break;
       case 82: /* "arg" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1639 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1685 "SCDoc.tab.cpp"
 	break;
       case 83: /* "optreturns" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1648 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1694 "SCDoc.tab.cpp"
 	break;
       case 84: /* "optdiscussion" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1657 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1703 "SCDoc.tab.cpp"
 	break;
       case 85: /* "body" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1666 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1712 "SCDoc.tab.cpp"
 	break;
       case 86: /* "blockA" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1675 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1721 "SCDoc.tab.cpp"
 	break;
       case 87: /* "blockB" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1684 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1730 "SCDoc.tab.cpp"
 	break;
       case 88: /* "bodyelem" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1693 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1739 "SCDoc.tab.cpp"
 	break;
       case 89: /* "prose" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1702 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1748 "SCDoc.tab.cpp"
 	break;
       case 90: /* "proseelem" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1711 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1757 "SCDoc.tab.cpp"
 	break;
       case 95: /* "listbody" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1720 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1766 "SCDoc.tab.cpp"
 	break;
       case 96: /* "tablerow" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1729 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1775 "SCDoc.tab.cpp"
 	break;
       case 97: /* "tablebody" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1738 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1784 "SCDoc.tab.cpp"
 	break;
       case 98: /* "tablecells" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1747 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1793 "SCDoc.tab.cpp"
 	break;
       case 99: /* "defterms" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1756 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1802 "SCDoc.tab.cpp"
 	break;
       case 100: /* "deflistrow" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1765 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1811 "SCDoc.tab.cpp"
 	break;
       case 101: /* "deflistbody" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1774 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1820 "SCDoc.tab.cpp"
 	break;
       case 102: /* "anywordurl" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1783 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1829 "SCDoc.tab.cpp"
 	break;
       case 103: /* "anyword" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1792 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1838 "SCDoc.tab.cpp"
 	break;
       case 104: /* "words" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1801 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1847 "SCDoc.tab.cpp"
 	break;
       case 105: /* "words2" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1810 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1856 "SCDoc.tab.cpp"
 	break;
       case 108: /* "anywordnl" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1819 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1865 "SCDoc.tab.cpp"
 	break;
       case 109: /* "wordsnl" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1828 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1874 "SCDoc.tab.cpp"
 	break;
       case 110: /* "nocommawords" */
 
-/* Line 1000 of yacc.c  */
-#line 93 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 98 "SCDoc.y"
 	{ free((yyvaluep->str)); };
 
-/* Line 1000 of yacc.c  */
-#line 1837 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1883 "SCDoc.tab.cpp"
 	break;
       case 111: /* "commalist" */
 
-/* Line 1000 of yacc.c  */
-#line 92 "SCDoc.y"
+/* Line 1391 of yacc.c  */
+#line 97 "SCDoc.y"
 	{ doc_node_free_tree((yyvaluep->doc_node)); };
 
-/* Line 1000 of yacc.c  */
-#line 1846 "SCDoc.tab.cpp"
+/* Line 1391 of yacc.c  */
+#line 1892 "SCDoc.tab.cpp"
 	break;
 
       default:
@@ -1850,6 +1896,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
     }
 }
 
+
 /* Prevent warnings from -Wmissing-prototypes.  */
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
@@ -1879,10 +1926,9 @@ YYLTYPE yylloc;
 int yynerrs;
 
 
-
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
+/*----------.
+| yyparse.  |
+`----------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -1906,8 +1952,6 @@ yyparse ()
 #endif
 #endif
 {
-
-
     int yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
@@ -1936,7 +1980,7 @@ yyparse ()
     YYLTYPE *yylsp;
 
     /* The locations where the error started and ended.  */
-    YYLTYPE yyerror_range[2];
+    YYLTYPE yyerror_range[3];
 
     YYSIZE_T yystacksize;
 
@@ -1983,7 +2027,7 @@ yyparse ()
   yyvsp = yyvs;
   yylsp = yyls;
 
-#if YYLTYPE_IS_TRIVIAL
+#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
   /* Initialize the default location before parsing starts.  */
   yylloc.first_line   = yylloc.last_line   = 1;
   yylloc.first_column = yylloc.last_column = 1;
@@ -2085,7 +2129,7 @@ yybackup:
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
@@ -2116,8 +2160,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -2173,299 +2217,303 @@ yyreduce:
     {
         case 2:
 
-/* Line 1455 of yacc.c  */
-#line 102 "SCDoc.y"
-    { topnode = (yyvsp[(1) - (1)].doc_node); ;}
+/* Line 1806 of yacc.c  */
+#line 107 "SCDoc.y"
+    { topnode = (yyvsp[(1) - (1)].doc_node); }
     break;
 
   case 3:
 
-/* Line 1455 of yacc.c  */
-#line 103 "SCDoc.y"
-    { topnode = NULL; doc_node_free_tree((yyvsp[(1) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 108 "SCDoc.y"
+    { topnode = NULL; doc_node_free_tree((yyvsp[(1) - (2)].doc_node)); }
     break;
 
   case 4:
 
-/* Line 1455 of yacc.c  */
-#line 107 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 112 "SCDoc.y"
     {
         (yyval.doc_node) = doc_node_create("DOCUMENT");
         doc_node_add_child((yyval.doc_node), (yyvsp[(3) - (4)].doc_node));
         doc_node_add_child((yyval.doc_node), (yyvsp[(4) - (4)].doc_node));
-    ;}
+    }
     break;
 
   case 5:
 
-/* Line 1455 of yacc.c  */
-#line 113 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 118 "SCDoc.y"
     {
         (yyval.doc_node) = doc_node_make_take_children("BODY",NULL,(yyvsp[(2) - (2)].doc_node));
-    ;}
+    }
     break;
 
   case 6:
 
-/* Line 1455 of yacc.c  */
-#line 117 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 122 "SCDoc.y"
     {
         (yyval.doc_node) = doc_node_create("DOCUMENT");
         doc_node_add_child((yyval.doc_node), (yyvsp[(2) - (3)].doc_node));
         doc_node_add_child((yyval.doc_node), (yyvsp[(3) - (3)].doc_node));
-    ;}
+    }
     break;
 
   case 9:
 
-/* Line 1455 of yacc.c  */
-#line 128 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 133 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 10:
 
-/* Line 1455 of yacc.c  */
-#line 129 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("HEADER",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 134 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("HEADER",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 11:
 
-/* Line 1455 of yacc.c  */
-#line 132 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make((yyvsp[(1) - (3)].id),(yyvsp[(2) - (3)].str),NULL); ;}
+/* Line 1806 of yacc.c  */
+#line 137 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make((yyvsp[(1) - (3)].id),(yyvsp[(2) - (3)].str),NULL); }
     break;
 
   case 12:
 
-/* Line 1455 of yacc.c  */
-#line 133 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("CATEGORIES",NULL,(yyvsp[(2) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 138 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("CATEGORIES",NULL,(yyvsp[(2) - (3)].doc_node)); }
     break;
 
   case 13:
 
-/* Line 1455 of yacc.c  */
-#line 134 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("RELATED",NULL,(yyvsp[(2) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 139 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("RELATED",NULL,(yyvsp[(2) - (3)].doc_node)); }
     break;
 
   case 14:
 
-/* Line 1455 of yacc.c  */
-#line 137 "SCDoc.y"
-    { (yyval.id) = "TITLE"; ;}
+/* Line 1806 of yacc.c  */
+#line 142 "SCDoc.y"
+    { (yyval.id) = "TITLE"; }
     break;
 
   case 15:
 
-/* Line 1455 of yacc.c  */
-#line 138 "SCDoc.y"
-    { (yyval.id) = "TITLE"; ;}
+/* Line 1806 of yacc.c  */
+#line 143 "SCDoc.y"
+    { (yyval.id) = "TITLE"; }
     break;
 
   case 16:
 
-/* Line 1455 of yacc.c  */
-#line 139 "SCDoc.y"
-    { (yyval.id) = "SUMMARY"; ;}
+/* Line 1806 of yacc.c  */
+#line 144 "SCDoc.y"
+    { (yyval.id) = "SUMMARY"; }
     break;
 
   case 17:
 
-/* Line 1455 of yacc.c  */
-#line 140 "SCDoc.y"
-    { (yyval.id) = "REDIRECT"; ;}
+/* Line 1806 of yacc.c  */
+#line 145 "SCDoc.y"
+    { (yyval.id) = "REDIRECT"; }
     break;
 
   case 18:
 
-/* Line 1455 of yacc.c  */
-#line 143 "SCDoc.y"
-    { (yyval.id) = "CLASSMETHODS"; method_type = "CMETHOD"; ;}
+/* Line 1806 of yacc.c  */
+#line 148 "SCDoc.y"
+    { (yyval.id) = "CLASSMETHODS"; method_type = "CMETHOD"; }
     break;
 
   case 19:
 
-/* Line 1455 of yacc.c  */
-#line 144 "SCDoc.y"
-    { (yyval.id) = "INSTANCEMETHODS"; method_type = "IMETHOD"; ;}
+/* Line 1806 of yacc.c  */
+#line 149 "SCDoc.y"
+    { (yyval.id) = "INSTANCEMETHODS"; method_type = "IMETHOD"; }
     break;
 
   case 20:
 
-/* Line 1455 of yacc.c  */
-#line 145 "SCDoc.y"
-    { (yyval.id) = "DESCRIPTION"; method_type = "METHOD"; ;}
+/* Line 1806 of yacc.c  */
+#line 150 "SCDoc.y"
+    { (yyval.id) = "DESCRIPTION"; method_type = "METHOD"; }
     break;
 
   case 21:
 
-/* Line 1455 of yacc.c  */
-#line 146 "SCDoc.y"
-    { (yyval.id) = "EXAMPLES"; method_type = "METHOD"; ;}
+/* Line 1806 of yacc.c  */
+#line 151 "SCDoc.y"
+    { (yyval.id) = "EXAMPLES"; method_type = "METHOD"; }
     break;
 
   case 23:
 
-/* Line 1455 of yacc.c  */
-#line 150 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("BODY",NULL,NULL); ;}
+/* Line 1806 of yacc.c  */
+#line 155 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("BODY",NULL,NULL); }
     break;
 
   case 24:
 
-/* Line 1455 of yacc.c  */
-#line 153 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 158 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 25:
 
-/* Line 1455 of yacc.c  */
-#line 154 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("BODY",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 159 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("BODY",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 26:
 
-/* Line 1455 of yacc.c  */
-#line 155 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("BODY",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 160 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("BODY",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 27:
 
-/* Line 1455 of yacc.c  */
-#line 158 "SCDoc.y"
-    { method_type = "METHOD"; ;}
+/* Line 1806 of yacc.c  */
+#line 163 "SCDoc.y"
+    { method_type = "METHOD"; }
     break;
 
   case 28:
 
-/* Line 1455 of yacc.c  */
-#line 158 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("SECTION",(yyvsp[(3) - (5)].str),(yyvsp[(5) - (5)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 163 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("SECTION",(yyvsp[(3) - (5)].str),(yyvsp[(5) - (5)].doc_node)); }
     break;
 
   case 29:
 
-/* Line 1455 of yacc.c  */
-#line 159 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children((yyvsp[(1) - (2)].id), NULL,(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 164 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children((yyvsp[(1) - (2)].id), NULL,(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 31:
 
-/* Line 1455 of yacc.c  */
-#line 163 "SCDoc.y"
-    { (yyval.doc_node) = NULL; ;}
+/* Line 1806 of yacc.c  */
+#line 168 "SCDoc.y"
+    { (yyval.doc_node) = NULL; }
     break;
 
   case 32:
 
-/* Line 1455 of yacc.c  */
-#line 166 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 171 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 33:
 
-/* Line 1455 of yacc.c  */
-#line 167 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(SUBSECTIONS)",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 172 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(SUBSECTIONS)",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 35:
 
-/* Line 1455 of yacc.c  */
-#line 171 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("SUBSECTION", (yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 176 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("SUBSECTION", (yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].doc_node)); }
     break;
 
   case 37:
 
-/* Line 1455 of yacc.c  */
-#line 175 "SCDoc.y"
-    { (yyval.doc_node) = NULL; ;}
+/* Line 1806 of yacc.c  */
+#line 180 "SCDoc.y"
+    { (yyval.doc_node) = NULL; }
     break;
 
   case 38:
 
-/* Line 1455 of yacc.c  */
-#line 178 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 183 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 39:
 
-/* Line 1455 of yacc.c  */
-#line 179 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(SUBSUBSECTIONS)",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 184 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(SUBSUBSECTIONS)",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 40:
 
-/* Line 1455 of yacc.c  */
-#line 180 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("(SUBSUBSECTIONS)",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 185 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("(SUBSUBSECTIONS)",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 41:
 
-/* Line 1455 of yacc.c  */
-#line 184 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 189 "SCDoc.y"
     {
         (yyvsp[(2) - (5)].doc_node)->id = "METHODNAMES";
         (yyval.doc_node) = doc_node_make(method_type,(yyvsp[(3) - (5)].str),(yyvsp[(2) - (5)].doc_node));
         doc_node_add_child((yyval.doc_node), (yyvsp[(5) - (5)].doc_node));
 //        doc_node_add_child($2, $3);
-    ;}
+    }
     break;
 
   case 42:
 
-/* Line 1455 of yacc.c  */
-#line 190 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 195 "SCDoc.y"
     { (yyval.doc_node) = doc_node_make(
-                method_type=="CMETHOD"?"CCOPYMETHOD":(method_type=="IMETHOD"?"ICOPYMETHOD":"COPYMETHOD"),
-                (yyvsp[(2) - (3)].str),NULL
-                ); ;}
+                stringEqual(method_type, "CMETHOD") ? "CCOPYMETHOD"
+                                                    : (stringEqual(method_type, "IMETHOD") ? "ICOPYMETHOD"
+                                                                                           : "COPYMETHOD"),
+                (yyvsp[(2) - (3)].str), NULL
+                ); }
     break;
 
   case 43:
 
-/* Line 1455 of yacc.c  */
-#line 194 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children(method_type=="CMETHOD"?"CPRIVATE":"IPRIVATE",NULL,(yyvsp[(2) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 201 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children( stringEqual(method_type, "CMETHOD") ? "CPRIVATE"
+                                                                                                                : "IPRIVATE",
+                NULL, (yyvsp[(2) - (3)].doc_node)); }
     break;
 
   case 44:
 
-/* Line 1455 of yacc.c  */
-#line 197 "SCDoc.y"
-    { (yyval.str) = NULL; ;}
+/* Line 1806 of yacc.c  */
+#line 206 "SCDoc.y"
+    { (yyval.str) = NULL; }
     break;
 
   case 45:
 
-/* Line 1455 of yacc.c  */
-#line 199 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 208 "SCDoc.y"
     {
 //        $$ = doc_node_make("ARGSTRING",$1,NULL);
         (yyval.str) = (yyvsp[(1) - (1)].str);
-        if(method_type!="METHOD") {
+        if(!stringEqual(method_type, "METHOD")) {
             yyerror("METHOD argument string is not allowed inside CLASSMETHODS or INSTANCEMETHODS");
             YYERROR;
         }
-    ;}
+    }
     break;
 
   case 46:
 
-/* Line 1455 of yacc.c  */
-#line 210 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 219 "SCDoc.y"
     {
         char *p = (yyvsp[(1) - (1)].str)+strlen((yyvsp[(1) - (1)].str))-1;
         if(*p=='_') {
@@ -2473,515 +2521,526 @@ yyreduce:
             *p = '\0';
         };
         (yyval.str) = (yyvsp[(1) - (1)].str);
-    ;}
+    }
     break;
 
   case 47:
 
-/* Line 1455 of yacc.c  */
-#line 220 "SCDoc.y"
-    { free((yyvsp[(2) - (3)].str)); (yyvsp[(2) - (3)].str) = NULL; (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node), doc_node_make("STRING",(yyvsp[(3) - (3)].str),NULL)); ;}
+/* Line 1806 of yacc.c  */
+#line 229 "SCDoc.y"
+    { free((yyvsp[(2) - (3)].str)); (yyvsp[(2) - (3)].str) = NULL; (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node), doc_node_make("STRING",(yyvsp[(3) - (3)].str),NULL)); }
     break;
 
   case 48:
 
-/* Line 1455 of yacc.c  */
-#line 221 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(METHODNAMES)",NULL,doc_node_make("STRING",(yyvsp[(1) - (1)].str),NULL)); ;}
+/* Line 1806 of yacc.c  */
+#line 230 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(METHODNAMES)",NULL,doc_node_make("STRING",(yyvsp[(1) - (1)].str),NULL)); }
     break;
 
   case 49:
 
-/* Line 1455 of yacc.c  */
-#line 225 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 234 "SCDoc.y"
     {
         (yyval.doc_node) = doc_node_make_take_children("METHODBODY",NULL,(yyvsp[(1) - (4)].doc_node));
         doc_node_add_child((yyval.doc_node), (yyvsp[(2) - (4)].doc_node));
         doc_node_add_child((yyval.doc_node), (yyvsp[(3) - (4)].doc_node));
         doc_node_add_child((yyval.doc_node), (yyvsp[(4) - (4)].doc_node));
-    ;}
+    }
     break;
 
   case 51:
 
-/* Line 1455 of yacc.c  */
-#line 234 "SCDoc.y"
-    { (yyval.doc_node) = NULL; ;}
+/* Line 1806 of yacc.c  */
+#line 243 "SCDoc.y"
+    { (yyval.doc_node) = NULL; }
     break;
 
   case 53:
 
-/* Line 1455 of yacc.c  */
-#line 238 "SCDoc.y"
-    { (yyval.doc_node) = NULL; ;}
+/* Line 1806 of yacc.c  */
+#line 247 "SCDoc.y"
+    { (yyval.doc_node) = NULL; }
     break;
 
   case 54:
 
-/* Line 1455 of yacc.c  */
-#line 241 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 250 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 55:
 
-/* Line 1455 of yacc.c  */
-#line 242 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("ARGUMENTS",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 251 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("ARGUMENTS",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 56:
 
-/* Line 1455 of yacc.c  */
-#line 245 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("ARGUMENT", (yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 254 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("ARGUMENT", (yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].doc_node)); }
     break;
 
   case 57:
 
-/* Line 1455 of yacc.c  */
-#line 246 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("ARGUMENT", NULL, (yyvsp[(3) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 255 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("ARGUMENT", NULL, (yyvsp[(3) - (3)].doc_node)); }
     break;
 
   case 58:
 
-/* Line 1455 of yacc.c  */
-#line 249 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("RETURNS",NULL,(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 258 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("RETURNS",NULL,(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 59:
 
-/* Line 1455 of yacc.c  */
-#line 250 "SCDoc.y"
-    { (yyval.doc_node) = NULL; ;}
+/* Line 1806 of yacc.c  */
+#line 259 "SCDoc.y"
+    { (yyval.doc_node) = NULL; }
     break;
 
   case 60:
 
-/* Line 1455 of yacc.c  */
-#line 253 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("DISCUSSION",NULL,(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 262 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("DISCUSSION",NULL,(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 61:
 
-/* Line 1455 of yacc.c  */
-#line 254 "SCDoc.y"
-    { (yyval.doc_node) = NULL; ;}
+/* Line 1806 of yacc.c  */
+#line 263 "SCDoc.y"
+    { (yyval.doc_node) = NULL; }
     break;
 
   case 64:
 
-/* Line 1455 of yacc.c  */
-#line 266 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 275 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 65:
 
-/* Line 1455 of yacc.c  */
-#line 267 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 276 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 66:
 
-/* Line 1455 of yacc.c  */
-#line 268 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(SECTIONBODY)",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 277 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(SECTIONBODY)",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 67:
 
-/* Line 1455 of yacc.c  */
-#line 271 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 280 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 68:
 
-/* Line 1455 of yacc.c  */
-#line 272 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(SECTIONBODY)",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 281 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(SECTIONBODY)",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 69:
 
-/* Line 1455 of yacc.c  */
-#line 275 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children((yyvsp[(1) - (3)].id),NULL,(yyvsp[(2) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 284 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children((yyvsp[(1) - (3)].id),NULL,(yyvsp[(2) - (3)].doc_node)); }
     break;
 
   case 70:
 
-/* Line 1455 of yacc.c  */
-#line 276 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children((yyvsp[(1) - (3)].id),NULL,(yyvsp[(2) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 285 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children((yyvsp[(1) - (3)].id),NULL,(yyvsp[(2) - (3)].doc_node)); }
     break;
 
   case 71:
 
-/* Line 1455 of yacc.c  */
-#line 277 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("TABLE",NULL,(yyvsp[(2) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 286 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("TABLE",NULL,(yyvsp[(2) - (3)].doc_node)); }
     break;
 
   case 72:
 
-/* Line 1455 of yacc.c  */
-#line 278 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("DEFINITIONLIST",NULL,(yyvsp[(2) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 287 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("DEFINITIONLIST",NULL,(yyvsp[(2) - (3)].doc_node)); }
     break;
 
   case 73:
 
-/* Line 1455 of yacc.c  */
-#line 279 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make((yyvsp[(1) - (3)].id),(yyvsp[(2) - (3)].str),NULL); ;}
+/* Line 1806 of yacc.c  */
+#line 288 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make((yyvsp[(1) - (3)].id),(yyvsp[(2) - (3)].str),NULL); }
     break;
 
   case 74:
 
-/* Line 1455 of yacc.c  */
-#line 280 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("CLASSTREE",(yyvsp[(2) - (3)].str),NULL); ;}
+/* Line 1806 of yacc.c  */
+#line 289 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("CLASSTREE",(yyvsp[(2) - (3)].str),NULL); }
     break;
 
   case 75:
 
-/* Line 1455 of yacc.c  */
-#line 281 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 290 "SCDoc.y"
     { (yyval.doc_node) = doc_node_make_take_children("KEYWORD",NULL,(yyvsp[(2) - (3)].doc_node));
 //            printf("keyword '%s'\n",$2->children[0]->text);
-        ;}
+        }
     break;
 
   case 76:
 
-/* Line 1455 of yacc.c  */
-#line 284 "SCDoc.y"
-    { (yyval.doc_node) = NULL; ;}
+/* Line 1806 of yacc.c  */
+#line 293 "SCDoc.y"
+    { (yyval.doc_node) = NULL; }
     break;
 
   case 77:
 
-/* Line 1455 of yacc.c  */
-#line 285 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("IMAGE",(yyvsp[(2) - (3)].str),NULL); ;}
+/* Line 1806 of yacc.c  */
+#line 294 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("IMAGE",(yyvsp[(2) - (3)].str),NULL); }
     break;
 
   case 78:
 
-/* Line 1455 of yacc.c  */
-#line 288 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node), (yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 297 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node), (yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 79:
 
-/* Line 1455 of yacc.c  */
-#line 289 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("PROSE",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 298 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("PROSE",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 80:
 
-/* Line 1455 of yacc.c  */
-#line 292 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make(NODE_TEXT,(yyvsp[(1) - (1)].str),NULL); ;}
+/* Line 1806 of yacc.c  */
+#line 301 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make(NODE_TEXT,(yyvsp[(1) - (1)].str),NULL); }
     break;
 
   case 81:
 
-/* Line 1455 of yacc.c  */
-#line 293 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("LINK",(yyvsp[(1) - (1)].str),NULL); ;}
+/* Line 1806 of yacc.c  */
+#line 302 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("LINK",(yyvsp[(1) - (1)].str),NULL); }
     break;
 
   case 82:
 
-/* Line 1455 of yacc.c  */
-#line 294 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make((yyvsp[(1) - (3)].id),(yyvsp[(2) - (3)].str),NULL); ;}
+/* Line 1806 of yacc.c  */
+#line 303 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make((yyvsp[(1) - (3)].id),(yyvsp[(2) - (3)].str),NULL); }
     break;
 
   case 83:
 
-/* Line 1455 of yacc.c  */
-#line 295 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("FOOTNOTE",NULL,(yyvsp[(2) - (3)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 304 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("FOOTNOTE",NULL,(yyvsp[(2) - (3)].doc_node)); }
     break;
 
   case 84:
 
-/* Line 1455 of yacc.c  */
-#line 296 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_create(NODE_NL); ;}
+/* Line 1806 of yacc.c  */
+#line 305 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_create(NODE_NL); }
     break;
 
   case 85:
 
-/* Line 1455 of yacc.c  */
-#line 299 "SCDoc.y"
-    { (yyval.id) = "LINK"; ;}
+/* Line 1806 of yacc.c  */
+#line 308 "SCDoc.y"
+    { (yyval.id) = "LINK"; }
     break;
 
   case 86:
 
-/* Line 1455 of yacc.c  */
-#line 300 "SCDoc.y"
-    { (yyval.id) = "STRONG"; ;}
+/* Line 1806 of yacc.c  */
+#line 309 "SCDoc.y"
+    { (yyval.id) = "STRONG"; }
     break;
 
   case 87:
 
-/* Line 1455 of yacc.c  */
-#line 301 "SCDoc.y"
-    { (yyval.id) = "SOFT"; ;}
+/* Line 1806 of yacc.c  */
+#line 310 "SCDoc.y"
+    { (yyval.id) = "SOFT"; }
     break;
 
   case 88:
 
-/* Line 1455 of yacc.c  */
-#line 302 "SCDoc.y"
-    { (yyval.id) = "EMPHASIS"; ;}
+/* Line 1806 of yacc.c  */
+#line 311 "SCDoc.y"
+    { (yyval.id) = "EMPHASIS"; }
     break;
 
   case 89:
 
-/* Line 1455 of yacc.c  */
-#line 303 "SCDoc.y"
-    { (yyval.id) = "CODE"; ;}
+/* Line 1806 of yacc.c  */
+#line 312 "SCDoc.y"
+    { (yyval.id) = "CODE"; }
     break;
 
   case 90:
 
-/* Line 1455 of yacc.c  */
-#line 304 "SCDoc.y"
-    { (yyval.id) = "TELETYPE"; ;}
+/* Line 1806 of yacc.c  */
+#line 313 "SCDoc.y"
+    { (yyval.id) = "TELETYPE"; }
     break;
 
   case 91:
 
-/* Line 1455 of yacc.c  */
-#line 305 "SCDoc.y"
-    { (yyval.id) = "MATH"; ;}
+/* Line 1806 of yacc.c  */
+#line 314 "SCDoc.y"
+    { (yyval.id) = "MATH"; }
     break;
 
   case 92:
 
-/* Line 1455 of yacc.c  */
-#line 306 "SCDoc.y"
-    { (yyval.id) = "ANCHOR"; ;}
+/* Line 1806 of yacc.c  */
+#line 315 "SCDoc.y"
+    { (yyval.id) = "ANCHOR"; }
     break;
 
   case 93:
 
-/* Line 1455 of yacc.c  */
-#line 309 "SCDoc.y"
-    { (yyval.id) = "CODEBLOCK"; ;}
+/* Line 1806 of yacc.c  */
+#line 318 "SCDoc.y"
+    { (yyval.id) = "CODEBLOCK"; }
     break;
 
   case 94:
 
-/* Line 1455 of yacc.c  */
-#line 310 "SCDoc.y"
-    { (yyval.id) = "TELETYPEBLOCK"; ;}
+/* Line 1806 of yacc.c  */
+#line 319 "SCDoc.y"
+    { (yyval.id) = "TELETYPEBLOCK"; }
     break;
 
   case 95:
 
-/* Line 1455 of yacc.c  */
-#line 311 "SCDoc.y"
-    { (yyval.id) = "MATHBLOCK"; ;}
+/* Line 1806 of yacc.c  */
+#line 320 "SCDoc.y"
+    { (yyval.id) = "MATHBLOCK"; }
     break;
 
   case 96:
 
-/* Line 1455 of yacc.c  */
-#line 314 "SCDoc.y"
-    { (yyval.id) = "LIST"; ;}
+/* Line 1806 of yacc.c  */
+#line 323 "SCDoc.y"
+    { (yyval.id) = "LIST"; }
     break;
 
   case 97:
 
-/* Line 1455 of yacc.c  */
-#line 315 "SCDoc.y"
-    { (yyval.id) = "TREE"; ;}
+/* Line 1806 of yacc.c  */
+#line 324 "SCDoc.y"
+    { (yyval.id) = "TREE"; }
     break;
 
   case 98:
 
-/* Line 1455 of yacc.c  */
-#line 316 "SCDoc.y"
-    { (yyval.id) = "NUMBEREDLIST"; ;}
+/* Line 1806 of yacc.c  */
+#line 325 "SCDoc.y"
+    { (yyval.id) = "NUMBEREDLIST"; }
     break;
 
   case 99:
 
-/* Line 1455 of yacc.c  */
-#line 319 "SCDoc.y"
-    { (yyval.id) = "WARNING"; ;}
+/* Line 1806 of yacc.c  */
+#line 328 "SCDoc.y"
+    { (yyval.id) = "WARNING"; }
     break;
 
   case 100:
 
-/* Line 1455 of yacc.c  */
-#line 320 "SCDoc.y"
-    { (yyval.id) = "NOTE"; ;}
+/* Line 1806 of yacc.c  */
+#line 329 "SCDoc.y"
+    { (yyval.id) = "NOTE"; }
     break;
 
   case 101:
 
-/* Line 1455 of yacc.c  */
-#line 323 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node), doc_node_make_take_children("ITEM",NULL,(yyvsp[(3) - (3)].doc_node))); ;}
+/* Line 1806 of yacc.c  */
+#line 332 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node), doc_node_make_take_children("ITEM",NULL,(yyvsp[(3) - (3)].doc_node))); }
     break;
 
   case 102:
 
-/* Line 1455 of yacc.c  */
-#line 324 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(LISTBODY)",NULL, doc_node_make_take_children("ITEM",NULL,(yyvsp[(2) - (2)].doc_node))); ;}
+/* Line 1806 of yacc.c  */
+#line 333 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(LISTBODY)",NULL, doc_node_make_take_children("ITEM",NULL,(yyvsp[(2) - (2)].doc_node))); }
     break;
 
   case 103:
 
-/* Line 1455 of yacc.c  */
-#line 327 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make_take_children("TABROW",NULL,(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 336 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make_take_children("TABROW",NULL,(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 104:
 
-/* Line 1455 of yacc.c  */
-#line 330 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 339 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 105:
 
-/* Line 1455 of yacc.c  */
-#line 331 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(TABLEBODY)",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 340 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(TABLEBODY)",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 106:
 
-/* Line 1455 of yacc.c  */
-#line 334 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node), doc_node_make_take_children("TABCOL",NULL,(yyvsp[(3) - (3)].doc_node))); ;}
+/* Line 1806 of yacc.c  */
+#line 343 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node), doc_node_make_take_children("TABCOL",NULL,(yyvsp[(3) - (3)].doc_node))); }
     break;
 
   case 107:
 
-/* Line 1455 of yacc.c  */
-#line 335 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(TABLECELLS)",NULL, doc_node_make_take_children("TABCOL",NULL,(yyvsp[(1) - (1)].doc_node))); ;}
+/* Line 1806 of yacc.c  */
+#line 344 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(TABLECELLS)",NULL, doc_node_make_take_children("TABCOL",NULL,(yyvsp[(1) - (1)].doc_node))); }
     break;
 
   case 108:
 
-/* Line 1455 of yacc.c  */
-#line 338 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node),doc_node_make_take_children("TERM",NULL,(yyvsp[(3) - (3)].doc_node))); ;}
+/* Line 1806 of yacc.c  */
+#line 347 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node),doc_node_make_take_children("TERM",NULL,(yyvsp[(3) - (3)].doc_node))); }
     break;
 
   case 109:
 
-/* Line 1455 of yacc.c  */
-#line 339 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(TERMS)",NULL,doc_node_make_take_children("TERM",NULL,(yyvsp[(2) - (2)].doc_node))); ;}
+/* Line 1806 of yacc.c  */
+#line 348 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(TERMS)",NULL,doc_node_make_take_children("TERM",NULL,(yyvsp[(2) - (2)].doc_node))); }
     break;
 
   case 110:
 
-/* Line 1455 of yacc.c  */
-#line 343 "SCDoc.y"
+/* Line 1806 of yacc.c  */
+#line 352 "SCDoc.y"
     {
         (yyval.doc_node) = doc_node_make_take_children("DEFLISTITEM", NULL, (yyvsp[(1) - (3)].doc_node));
         doc_node_add_child((yyval.doc_node), doc_node_make_take_children("DEFINITION", NULL, (yyvsp[(3) - (3)].doc_node)));
-    ;}
+    }
     break;
 
   case 111:
 
-/* Line 1455 of yacc.c  */
-#line 349 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 358 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (2)].doc_node),(yyvsp[(2) - (2)].doc_node)); }
     break;
 
   case 112:
 
-/* Line 1455 of yacc.c  */
-#line 350 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(DEFLISTBODY)",NULL,(yyvsp[(1) - (1)].doc_node)); ;}
+/* Line 1806 of yacc.c  */
+#line 359 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(DEFLISTBODY)",NULL,(yyvsp[(1) - (1)].doc_node)); }
     break;
 
   case 117:
 
-/* Line 1455 of yacc.c  */
-#line 361 "SCDoc.y"
-    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); ;}
+/* Line 1806 of yacc.c  */
+#line 370 "SCDoc.y"
+    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); }
     break;
 
   case 119:
 
-/* Line 1455 of yacc.c  */
-#line 365 "SCDoc.y"
-    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); ;}
+/* Line 1806 of yacc.c  */
+#line 374 "SCDoc.y"
+    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); }
     break;
 
   case 126:
 
-/* Line 1455 of yacc.c  */
-#line 378 "SCDoc.y"
-    { (yyval.str) = strdup("\n"); ;}
+/* Line 1806 of yacc.c  */
+#line 387 "SCDoc.y"
+    { (yyval.str) = strdup("\n"); }
     break;
 
   case 127:
 
-/* Line 1455 of yacc.c  */
-#line 381 "SCDoc.y"
-    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); ;}
+/* Line 1806 of yacc.c  */
+#line 390 "SCDoc.y"
+    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); }
     break;
 
   case 129:
 
-/* Line 1455 of yacc.c  */
-#line 385 "SCDoc.y"
-    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); ;}
+/* Line 1806 of yacc.c  */
+#line 394 "SCDoc.y"
+    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); }
     break;
 
   case 130:
 
-/* Line 1455 of yacc.c  */
-#line 386 "SCDoc.y"
-    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); ;}
+/* Line 1806 of yacc.c  */
+#line 395 "SCDoc.y"
+    { (yyval.str) = strmerge((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str)); }
     break;
 
   case 133:
 
-/* Line 1455 of yacc.c  */
-#line 391 "SCDoc.y"
-    { free((yyvsp[(2) - (3)].str)); (yyvsp[(2) - (3)].str)=NULL; (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node),doc_node_make("STRING",(yyvsp[(3) - (3)].str),NULL)); ;}
+/* Line 1806 of yacc.c  */
+#line 400 "SCDoc.y"
+    { free((yyvsp[(2) - (3)].str)); (yyvsp[(2) - (3)].str)=NULL; (yyval.doc_node) = doc_node_add_child((yyvsp[(1) - (3)].doc_node),doc_node_make("STRING",(yyvsp[(3) - (3)].str),NULL)); }
     break;
 
   case 134:
 
-/* Line 1455 of yacc.c  */
-#line 392 "SCDoc.y"
-    { (yyval.doc_node) = doc_node_make("(COMMALIST)",NULL,doc_node_make("STRING",(yyvsp[(1) - (1)].str),NULL)); ;}
+/* Line 1806 of yacc.c  */
+#line 401 "SCDoc.y"
+    { (yyval.doc_node) = doc_node_make("(COMMALIST)",NULL,doc_node_make("STRING",(yyvsp[(1) - (1)].str),NULL)); }
     break;
 
 
 
-/* Line 1455 of yacc.c  */
-#line 2983 "SCDoc.tab.cpp"
+/* Line 1806 of yacc.c  */
+#line 3031 "SCDoc.tab.cpp"
       default: break;
     }
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
@@ -3010,6 +3069,10 @@ yyreduce:
 | yyerrlab -- here on detecting error |
 `------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
@@ -3017,41 +3080,40 @@ yyerrlab:
 #if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
 #else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+                                        yyssp, yytoken)
       {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
+        char const *yymsgp = YY_("syntax error");
+        int yysyntax_error_status;
+        yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 1)
+          {
+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = 2;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
+          }
+        yyerror (yymsgp);
+        if (yysyntax_error_status == 2)
+          goto yyexhaustedlab;
       }
+# undef YYSYNTAX_ERROR
 #endif
     }
 
-  yyerror_range[0] = yylloc;
+  yyerror_range[1] = yylloc;
 
   if (yyerrstatus == 3)
     {
@@ -3088,7 +3150,7 @@ yyerrorlab:
   if (/*CONSTCOND*/ 0)
      goto yyerrorlab;
 
-  yyerror_range[0] = yylsp[1-yylen];
+  yyerror_range[1] = yylsp[1-yylen];
   /* Do not reclaim the symbols of the rule which action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
@@ -3107,7 +3169,7 @@ yyerrlab1:
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
+      if (!yypact_value_is_default (yyn))
 	{
 	  yyn += YYTERROR;
 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -3122,7 +3184,7 @@ yyerrlab1:
       if (yyssp == yyss)
 	YYABORT;
 
-      yyerror_range[0] = *yylsp;
+      yyerror_range[1] = *yylsp;
       yydestruct ("Error: popping",
 		  yystos[yystate], yyvsp, yylsp);
       YYPOPSTACK (1);
@@ -3132,10 +3194,10 @@ yyerrlab1:
 
   *++yyvsp = yylval;
 
-  yyerror_range[1] = yylloc;
+  yyerror_range[2] = yylloc;
   /* Using YYLLOC is tempting, but would change the location of
      the lookahead.  YYLOC is available though.  */
-  YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
+  YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
   *++yylsp = yyloc;
 
   /* Shift the error token.  */
@@ -3171,8 +3233,13 @@ yyexhaustedlab:
 
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval, &yylloc);
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval, &yylloc);
+    }
   /* Do not reclaim the symbols of the rule which action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
@@ -3197,8 +3264,8 @@ yyreturn:
 
 
 
-/* Line 1675 of yacc.c  */
-#line 395 "SCDoc.y"
+/* Line 2067 of yacc.c  */
+#line 404 "SCDoc.y"
 
 
 DocNode * scdoc_parse_run(int mode) {
diff --git a/SCDoc/SCDoc.tab.hpp b/SCDoc/SCDoc.tab.hpp
index 2d79810..322a6be 100644
--- a/SCDoc/SCDoc.tab.hpp
+++ b/SCDoc/SCDoc.tab.hpp
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.5.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
-
-/* Skeleton interface for Bison's Yacc-like parsers in C
+/* Bison interface for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    
    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
@@ -103,8 +101,8 @@
 typedef union YYSTYPE
 {
 
-/* Line 1676 of yacc.c  */
-#line 50 "SCDoc.y"
+/* Line 2068 of yacc.c  */
+#line 55 "SCDoc.y"
 
     int i;
     const char *id;
@@ -113,8 +111,8 @@ typedef union YYSTYPE
 
 
 
-/* Line 1676 of yacc.c  */
-#line 118 "SCDoc.tab.hpp"
+/* Line 2068 of yacc.c  */
+#line 116 "SCDoc.tab.hpp"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
diff --git a/SCDoc/SCDoc.y b/SCDoc/SCDoc.y
index a1235ec..b7710f9 100644
--- a/SCDoc/SCDoc.y
+++ b/SCDoc/SCDoc.y
@@ -44,6 +44,11 @@ void scdocerror(const char *str);
 extern void error(const char *fmt, ...);
 extern void post(const char *fmt, ...);
 
+static inline bool stringEqual(const char * a, const char * b)
+{
+    return strcmp(a, b) == 0;
+}
+
 %}
 %locations
 %error-verbose
@@ -188,10 +193,14 @@ subsubsection: METHOD methnames optMETHODARGS eol methodbody
 //        doc_node_add_child($2, $3);
     }
              | COPYMETHOD words eol { $$ = doc_node_make(
-                method_type=="CMETHOD"?"CCOPYMETHOD":(method_type=="IMETHOD"?"ICOPYMETHOD":"COPYMETHOD"),
-                $2,NULL
+                stringEqual(method_type, "CMETHOD") ? "CCOPYMETHOD"
+                                                    : (stringEqual(method_type, "IMETHOD") ? "ICOPYMETHOD"
+                                                                                           : "COPYMETHOD"),
+                $2, NULL
                 ); }
-             | PRIVATE commalist eoleof { $$ = doc_node_make_take_children(method_type=="CMETHOD"?"CPRIVATE":"IPRIVATE",NULL,$2); }
+             | PRIVATE commalist eoleof { $$ = doc_node_make_take_children( stringEqual(method_type, "CMETHOD") ? "CPRIVATE"
+                                                                                                                : "IPRIVATE",
+                NULL, $2); }
 ;
 
 optMETHODARGS: { $$ = NULL; }
@@ -199,7 +208,7 @@ optMETHODARGS: { $$ = NULL; }
     {
 //        $$ = doc_node_make("ARGSTRING",$1,NULL);
         $$ = $1;
-        if(method_type!="METHOD") {
+        if(!stringEqual(method_type, "METHOD")) {
             yyerror("METHOD argument string is not allowed inside CLASSMETHODS or INSTANCEMETHODS");
             YYERROR;
         }
diff --git a/SCVersion.txt b/SCVersion.txt
index 8c78983..0d10695 100644
--- a/SCVersion.txt
+++ b/SCVersion.txt
@@ -2,5 +2,5 @@
 # Note that you need to "make install" for this information to be copied into all places..
 
 set(PROJECT_VERSION_MAJOR 3)
-set(PROJECT_VERSION_MINOR 5)
-set(PROJECT_VERSION_PATCH .4)
+set(PROJECT_VERSION_MINOR 6)
+set(PROJECT_VERSION_PATCH .1)
diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt
deleted file mode 100644
index a1fd165..0000000
--- a/bindings/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-if (SC_PSYCOLLIDER)
-	add_subdirectory(PySCLang)
-endif()
diff --git a/bindings/PySCLang/CMakeLists.txt b/bindings/PySCLang/CMakeLists.txt
deleted file mode 100644
index 2159987..0000000
--- a/bindings/PySCLang/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-find_package(PythonLibs)
-
-set(pycxxdir ${CMAKE_SOURCE_DIR}/external_libraries/pycxx-6.2.2)
-
-set(PySCLangSource
-	${pycxxdir}/Src/cxx_extensions.cxx
-	${pycxxdir}/Src/cxxextensions.c
-	${pycxxdir}/Src/cxxsupport.cxx
-	${pycxxdir}/Src/IndirectPythonInterface.cxx
-
-	PySCLang_Module.cpp
-	PySCLang_Module_GUIStuff.cpp
-	PySCLang_vpost_stuff.cpp
-)
-
-if(WIN32)
-	list(APPEND PySCLangSource PySCLang.cpp)
-endif()
-
-include_directories(${PYTHON_INCLUDE_PATH})
-include_directories(${pycxxdir})
-
-include_directories(${CMAKE_SOURCE_DIR}/include/common
-					${CMAKE_SOURCE_DIR}/include/lang
-					${CMAKE_SOURCE_DIR}/include/plugin_interface
-					${CMAKE_SOURCE_DIR}/editors/scapp/include
-				   )
-
-add_library(PySCLang MODULE ${PySCLangSource})
-set_target_properties(PySCLang
-					  PROPERTIES LINKER_LANGUAGE C
-								 PREFIX ""
-								 SUFFIX .pyd)
-
-target_link_libraries(PySCLang ${PYTHON_LIBRARY})
-target_link_libraries(PySCLang libsclang)
-
-if (WIN32)
-	install(TARGETS PySCLang
-		DESTINATION "SuperCollider")
-
-	install(FILES ${PYTHON_LIBRARY}
-		DESTINATION "SuperCollider")
-
-elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
-	find_package(PythonInterp)
-
-	execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
-		OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-	install(TARGETS PySCLang DESTINATION ${PYTHON_SITE_PACKAGES})
-endif()
diff --git a/bindings/PySCLang/PySCLang.cpp b/bindings/PySCLang/PySCLang.cpp
deleted file mode 100644
index 00b5502..0000000
--- a/bindings/PySCLang/PySCLang.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-// PySCLang.cpp : Defines the entry point for the DLL application.
-//
-
-#include "stdafx.h"
diff --git a/bindings/PySCLang/PySCLang.def b/bindings/PySCLang/PySCLang.def
deleted file mode 100644
index a389005..0000000
--- a/bindings/PySCLang/PySCLang.def
+++ /dev/null
@@ -1,3 +0,0 @@
-EXPORTS
-	initPySCLang_d
-	initPySCLang
diff --git a/bindings/PySCLang/PySCLang_Module.cpp b/bindings/PySCLang/PySCLang_Module.cpp
deleted file mode 100755
index 5286a68..0000000
--- a/bindings/PySCLang/PySCLang_Module.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * File: PYSCLang_Module.cpp
- * Project : Psycollider
- *
- * by:
- * Benjamin Golinvaux
- * benjamin.golinvaux at euresys.com
- * messenger: bgolinvaux at hotmail.com
- *
- * currently maintained by:
- * Christopher Frauenberger
- * frauenberger at iem.at
- *
- *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- *  USA
- *
- */
-
-#ifndef SC_WIN32
-#include "CXX/Objects.hxx"
-#include "CXX/Extensions.hxx"
-#else
-#include "stdafx.h"
-#endif
-
-#include "PySCLang_Module.h"
-
-extern "C" {
-  void initPySCLang()
-	{
-#if defined(PY_WIN32_DELAYLOAD_PYTHON_DLL)
-	Py::InitialisePythonIndirectInterface();
-#endif
-  static PySCLang_Module* thePySCLang_Module = new PySCLang_Module;
-	}
-}
-
-ChangeCounter gUIChangeCounter;
-
-extern bool compiledOK;
-extern pthread_mutex_t gLangMutex;
-extern PyrSymbol *s_tick;
-
-PyrString* newPyrStringN(class PyrGC *gc, long length, long flags, bool collect);
-void dumpByteCodes(PyrBlock *theBlock);
-
-void flushPostBuf();
-// void SetupHomeDirectory();
-double elapsedTime();
-
-extern char *gHomePath;
-
-#ifdef SC_WIN32
-void PySCLang_InitNetwork( )
-{
-#ifdef SC_WIN32_STATIC_PTHREADS
-  // initialize statically linked pthreads library
-  pthread_win32_process_attach_np();
-#endif
-
-  // initialize winsock
-  WSAData wsaData;
-  int nCode;
-
-  if ((nCode = WSAStartup(MAKEWORD(1, 1), &wsaData)) != 0) {
-    char msg[1024];
-    sprintf(msg, "WSAStartup() failed with error code %d.\n", nCode );
-    ::MessageBox(NULL,msg,"Error",MB_OK);
-  }
-}
-#endif
-
-// triggered for app clock ticks
-extern "C" void *appClockTimer(void * pymod) {
-	((PySCLang_Module *)pymod)->appClock();
-	return NULL;
-}
-
-void PySCLang_Module::appClock() {
-	while(true) {
-		pthread_mutex_lock(&gLangMutex);
-		if (compiledOK) runLibrary(getsym("tick"));
-		pthread_mutex_unlock(&gLangMutex);
-
-#ifdef SC_WIN32
-		Sleep(20);      // Sleep (windows) takes a time in milliseconds
-#else
-		usleep(20000);  // usleep (posix) takes a time in microseconds
-#endif
-	}
-}
-
-  PySCLang_Module::PySCLang_Module() : ExtensionModule<PySCLang_Module>( "PySCLang" )
-  {
-#ifdef SC_WIN32
-    PySCLang_InitNetwork( );
-#endif
-    add_varargs_method("sendMain", &PySCLang_Module::sendMain, "sendMain");
-    add_varargs_method("compileLibrary", &PySCLang_Module::compileLibrary, "compileLibrary");
-    add_varargs_method("setCmdLine", &PySCLang_Module::setCmdLine, "setCmdLine");
-    add_varargs_method("start", &PySCLang_Module::start, "start");
-    add_varargs_method("setSCLogSink", &PySCLang_Module::setSCLogSink, "setSCLogSink");
-    add_varargs_method("compiledOK", &PySCLang_Module::compiledOK__, "compiledOK");
-    add_varargs_method("setPyPrOpenWinTextFile", &PySCLang_Module::setPyPrOpenWinTextFile, "setPyPrOpenWinTextFile callable with (path,startRange,rangeSize)");
-
-    initialize( "<documentation for the PySCLang_Module forthcoming>" );
-  }
-
-
-
-// symbol required for the debug version
-extern "C" {
-  void initPySCLang_d() {
-    initPySCLang();
-  }
-}
-
-Py::Object PySCLang_Module::sendMain(const Py::Tuple &a)
-{
-  if(a.size() != 1) {
-    PyErr_SetString(PyExc_IndexError,"requires 1 string argument");
-    return Py::Object(Py::Null());
-  }
-  if (!compiledOK) {
-	PyErr_SetString(PyExc_RuntimeError,"PySCLang: The library has not been compiled successfully");
-	return Py::Object(Py::Null());
-  }
-  Py::String pystr(a[0]);
-  std::string str = pystr;
-  const char* methodName = str.c_str();
-  pthread_mutex_lock(&gLangMutex);
-  runLibrary(getsym(methodName));
-  pthread_mutex_unlock(&gLangMutex);
-  if (PyErr_Occurred( ) != NULL) // there might be python calls from within sclang
-    return Py::Object(Py::Null());
-  return Py::Nothing();
-}
-
-Py::Object PySCLang_Module::compileLibrary(const Py::Tuple &a)
-{
-  if(a.size() != 0) {
-    PyErr_SetString(PyExc_IndexError,"requires 0 args");
-    return Py::Object(Py::Null());
-  }
-  ::compileLibrary( );
-  return Py::Nothing();
-}
-
-Py::Object PySCLang_Module::setCmdLine(const Py::Tuple &a)
-{
-  if(a.size() != 1) {
-    PyErr_SetString(PyExc_IndexError,"requires 1 string argument");
-    return Py::Object(Py::Null());
-  }
-  Py::String pystr(a[0]);
-  const char* text = ::PyString_AsString(pystr.ptr());
-  int length = strlen(text);
-
-  if (!compiledOK) {
-	PyErr_SetString(PyExc_RuntimeError,"PySCLang: The library has not been compiled successfully");
-	return Py::Object(Py::Null());
-  }
-  pthread_mutex_lock(&gLangMutex);
-
-  if (compiledOK) {
-		VMGlobals *g = gMainVMGlobals;
-
-			int textlen = length;
-		PyrString* strobj = newPyrStringN(g->gc, textlen, 0, true);
-		memcpy(strobj->s, (char*)text, textlen);
-
-		SetObject(&slotRawInterpreter(&g->process->interpreter)->cmdLine, strobj);
-		g->gc->GCWrite(slotRawObject(&g->process->interpreter), strobj);
-	}
-	pthread_mutex_unlock(&gLangMutex);
-  return Py::Nothing();
-}
-
-Py::Object PySCLang_Module::compiledOK__(const Py::Tuple &a)
-{
-  if(a.size() != 0) {
-    PyErr_SetString(PyExc_IndexError,"requires 0 args");
-    return Py::Object(Py::Null());
-  }
-  if( compiledOK )
-    return Py::Int(1);
-  else
-    return Py::Int(0);
-}
-
-Py::Object PySCLang_Module::start(const Py::Tuple &a)
-{
-	if(a.size() != 0) {
-		PyErr_SetString(PyExc_IndexError,"requires 0 args");
-		return Py::Object(Py::Null());
-	}
-	pyr_init_mem_pools( 2*1024*1024, 256*1024 );
-	init_OSC(57120);
-	schedInit();
-	::compileLibrary();
-
-  	// appClock timer
-	pthread_t t;
-	pthread_create(&t, NULL, &appClockTimer, (void *)this);
-
-	// deferred task timer still missing... (cf, 16 May 2006)
-
-//!!!
-// Rendezvous is broken in a way that makes SC become unusable
-//	// CR ADDED
-//	[[RendezvousClient sharedClient] findOSCServices];
-//!!!
-  return Py::Nothing();
-}
-
-PyObject* PySCLang_Module::scLogSink_s = NULL;
-PyObject* PySCLang_Module::PyPrOpenWinTextFile_s = NULL;
-
-Py::Object PySCLang_Module::setPyPrOpenWinTextFile(const Py::Tuple &a)
-{
-  if(a.size() != 1) {
-    PyErr_SetString(PyExc_IndexError,"requires 1 callable argument");
-    return Py::Object(Py::Null());
-  }
-  PyObject* openTextFile = a[0].ptr();
-  if( PyCallable_Check( openTextFile ) == 0)
-    PyErr_SetString(PyExc_TypeError,"object must be callable");
-  else {
-    PyPrOpenWinTextFile_s = openTextFile;
-    Py_INCREF(openTextFile);
-  }
-  return Py::Nothing();
-}
-
-
-Py::Object PySCLang_Module::setSCLogSink(const Py::Tuple &a)
-{
-  if(a.size() != 1) {
-    PyErr_SetString(PyExc_IndexError,"requires 1 callable argument");
-    return Py::Object(Py::Null());
-  }
-  PyObject* logSink = a[0].ptr();
-  if( PyCallable_Check( logSink ) == 0)
-    PyErr_SetString(PyExc_TypeError,"object must be callable");
-  else {
-    scLogSink_s = logSink;
-    Py_INCREF(logSink);
-  }
-  return Py::Nothing();
-}
-
-
diff --git a/bindings/PySCLang/PySCLang_Module.h b/bindings/PySCLang/PySCLang_Module.h
deleted file mode 100755
index ec5d9bd..0000000
--- a/bindings/PySCLang/PySCLang_Module.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * File: PYSCLang_Module.h
- * Project : Psycollider
- *
- * by:
- * Benjamin Golinvaux
- * benjamin.golinvaux at euresys.com
- * messenger: bgolinvaux at hotmail.com
- *
- * currently maintained by:
- * Christopher Frauenberger
- * frauenberger at iem.at
- *
- *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- *  USA
- *
- */
-
-#ifndef _PYSCLANG_MODULE_
-#define _PYSCLANG_MODULE_
-
-using namespace Py;
-
-#include "SCBase.h"
-#include "PyrObject.h"
-#include "PyrKernel.h"
-#include "GC.h"
-#include "VMGlobals.h"
-//#include "UserPanel.h"
-#include "ChangeCounter.h"
-
-#include <pthread.h>
-
-class PySCLang_Module : public ExtensionModule<PySCLang_Module>
-{
-public:
-            PySCLang_Module();
-  virtual  ~PySCLang_Module() { }
-
-  static PyObject* scLogSink_s;
-  static PyObject* PyPrOpenWinTextFile_s;
-
-	void appClock();
-
-private:
-  Py::Object sendMain(const Py::Tuple &a);
-  Py::Object compileLibrary(const Py::Tuple &a);
-  Py::Object setCmdLine(const Py::Tuple &a);
-  Py::Object start(const Py::Tuple &a);
-  Py::Object compiledOK__(const Py::Tuple &a);
-  Py::Object setSCLogSink(const Py::Tuple &a);
-  Py::Object setPyPrOpenWinTextFile(const Py::Tuple &a);
-};
-
-#endif
\ No newline at end of file
diff --git a/bindings/PySCLang/PySCLang_Module_GUIStuff.cpp b/bindings/PySCLang/PySCLang_Module_GUIStuff.cpp
deleted file mode 100755
index 693629f..0000000
--- a/bindings/PySCLang/PySCLang_Module_GUIStuff.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * File: PYSCLang_Module_GUIStuff.cpp
- * Project : Psycollider
- *
- * by:
- * Benjamin Golinvaux
- * benjamin.golinvaux at euresys.com
- * messenger: bgolinvaux at hotmail.com
- *
- * currently maintained by:
- * Christopher Frauenberger
- * frauenberger at iem.at
- *
- *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- *  USA
- *
- */
-
-#ifndef SC_WIN32
-#include "CXX/Objects.hxx"
-#include "CXX/Extensions.hxx"
-#else
-#include "stdafx.h"
-#endif
-
-#include "PyrPrimitive.h"
-#include "PyrObject.h"
-#include "PyrKernel.h"
-#include "VMGlobals.h"
-#include "SC_RGen.h"
-#include "GC.h"
-#include "PySCLang_Module.h"
-
-int prOpenWinTextFile(struct VMGlobals *g, int numArgsPushed);
-int prOpenWinTextFile(struct VMGlobals *g, int numArgsPushed)
-{
-
-  if (!g->canCallOS)
-    return errCantCallOS;
-
-  PyrSlot *d = g->sp - 3;
-	PyrSlot *a = g->sp - 2; // path
-	PyrSlot *b = g->sp - 1; // rangeStart
-	PyrSlot *c = g->sp;     // rangeSize
-
-  int rangeStart, rangeSize;
-
-  // retrieve path
-  if (!(isKindOfSlot(a, class_string)))
-    return errWrongType;
-  PyrString* string = slotRawString(a);
-  if(string->size == 0)
-    return errFailed;
-
-
-  // start char in sel range
-  int err = slotIntVal(b, &rangeStart);
-  if (err)
-    return err;
-  // sel range size
-  err = slotIntVal(c, &rangeSize);
-  if (err)
-    return err;
-
-  if( PySCLang_Module::PyPrOpenWinTextFile_s != NULL) {
-    // TODO : send text in the scLogSink_
-    char* szString = new char[string->size+1];
-    memcpy(szString,string->s,string->size);
-    szString[string->size] = 0;
-   PyObject* pystr = PyString_FromString(szString);
-    delete [] szString;
-    PyObject* pyRangeStart = PyInt_FromLong(rangeStart);
-    PyObject* pyRangeSize = PyInt_FromLong(rangeSize);
-    PyObject* tuple = PyTuple_New(3);
-    PyTuple_SetItem(tuple,0,pystr);
-    PyTuple_SetItem(tuple,1,pyRangeStart);
-    PyTuple_SetItem(tuple,2,pyRangeSize);
-
-   /* make the Python call thread safe (global interpreter clock) */
-	PyGILState_STATE gstate;
-	gstate = PyGILState_Ensure();
-	PyObject* result = PyObject_Call(PySCLang_Module::PyPrOpenWinTextFile_s,tuple,NULL);
-	PyGILState_Release(gstate);
-
-	result = PyErr_Occurred( );
-	if (result) {
-		post("logSink call failed, result: %d\n", result);
-		return errFailed;
-	}
-  }
-  else { // no log sink callable..
-    post("No Python callable bound to PySCLang_Module::PyPrOpenWinTextFile_s with setPyPrOpenWinTextFile\n");
-    return errFailed;
-  }
-  //NSString *nsstring = [NSString stringWithCString: string->s length: string->size];
-
-	//  SetInt(a, result---->window->Id);
-	return errNone;
-}
-
-void initGUIPrimitives()
-{
-  int base,index;
-
-	base = nextPrimitiveIndex();
-	index = 0;
-
-	definePrimitive(base, index++, "_OpenWinTextFile", prOpenWinTextFile, 3, 0);
-}
-
-
-
diff --git a/bindings/PySCLang/PySCLang_VM.h b/bindings/PySCLang/PySCLang_VM.h
deleted file mode 100644
index 23f7971..0000000
--- a/bindings/PySCLang/PySCLang_VM.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * File: PYSCLang_VM.h
- * Project : Psycollider
- *
- * by:
- * Benjamin Golinvaux
- * benjamin.golinvaux at euresys.com
- * messenger: bgolinvaux at hotmail.com
- *
- * currently maintained by:
- * Christopher Frauenberger
- * frauenberger at iem.at
- *
- *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- *  USA
- *
- */
-
-
-void PySCLang_VM_sendMain(const char* cstr)
-{
-
-
-}
-
diff --git a/bindings/PySCLang/PySCLang_vpost_stuff.cpp b/bindings/PySCLang/PySCLang_vpost_stuff.cpp
deleted file mode 100644
index 67af869..0000000
--- a/bindings/PySCLang/PySCLang_vpost_stuff.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * File: PYSCLang_Module_GUIStuff.cpp
- * Project : Psycollider
- *
- * by:
- * Benjamin Golinvaux
- * benjamin.golinvaux at euresys.com
- * messenger: bgolinvaux at hotmail.com
- *
- * currently maintained by:
- * Christopher Frauenberger
- * frauenberger at iem.at
- *
- *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- *  USA
- *
- */
-
-#ifndef SC_WIN32
-#include "CXX/Objects.hxx"
-#include "CXX/Extensions.hxx"
-#else
-#include "stdafx.h"
-#endif
-
-#include "PySCLang_Module.h"
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <iostream>
-
-const int kPostBufferSize = 1024;
-
-static char* _postBuffer = NULL;
-using std::cout;
-using std::flush;
-
-int PySCLang_vpost(const char *fmt, va_list ap)
-{
-  if(_postBuffer == NULL)
-    _postBuffer = new char[kPostBufferSize];
-#ifdef SC3_WIN
-  int size = _vscprintf(fmt, ap);
-#else
-  int size = vprintf(fmt, ap);
-#endif
-
-  if (size < kPostBufferSize) {
-    vsprintf(_postBuffer, fmt, ap);
-    //_txtCtrl->AppendText(wxString(_postBuffer));
-
-	if( PySCLang_Module::scLogSink_s != NULL) {
-		/* make the Python call thread safe (global interpreter clock) */
-		PyGILState_STATE gstate;
-		gstate = PyGILState_Ensure();
-
-		PyObject *arglist = Py_BuildValue("(s)", _postBuffer);
-		PyEval_CallObject(PySCLang_Module::scLogSink_s, arglist);
-
-		PyGILState_Release(gstate);
-	}
-    else { // no log sink callable..
-      cout << _postBuffer;
-    }
-
-  }
-  else {
-    char* tmpPostBuffer = new char[size+1]; // +1 : NULL ending
-    vsprintf(tmpPostBuffer, fmt, ap);
-    cout << tmpPostBuffer << flush; //implement in python !!!!!!
-    delete [] tmpPostBuffer;
-  }
-  return 0;
-}
-
-void setPostFile(FILE* file)
-{
-  // we're not using that , are we ?
-}
-
-#ifndef SC3_WIN
-extern "C" {
-	int vpost(const char *fmt, va_list ap);
-}
-#endif
-int vpost(const char *fmt, va_list ap)
-{
-	PySCLang_vpost(fmt, ap);
-	return 0;
-}
-
-void post(const char *fmt, ...)
-{
-  va_list ap;
-  va_start(ap, fmt);
-  PySCLang_vpost(fmt, ap);
-}
-
-void postfl(const char *fmt, ...)
-{
-  va_list ap;
-  va_start(ap, fmt);
-  PySCLang_vpost(fmt, ap);
-}
-
-void postText(const char *str, long len)
-{
-  char* txt = new char[len+1];
-  memcpy(txt,str,len);
-  txt[len] = 0;
-  post("%s",txt);
-  delete [] txt;
-}
-
-void postChar(char c)
-{
-  char txt[2];
-  txt[0] = c;
-  txt[1] = 0;
-  post("%s",txt);
-}
-
-void error(const char *fmt, ...)
-{
-  va_list ap;
-  va_start(ap, fmt);
-  PySCLang_vpost(fmt, ap);
-}
-
-
-void flushPostBuf(void)
-{
-}
-
-void closeAllGUIScreens()
-{
-}
-
-void initGUI()
-{
-}
-
-
-void initSCViewPrimitives()
-{
-}
-
-void initCocoaFilePrimitives()
-{
-}
-
-void initRendezvousPrimitives()
-{
-}
-
-
-#ifdef SC3_WIN
-void initSpeechPrimitives()
-{
-}
-#endif
-
-long scMIDIout(int port, int len, int statushi, int chan, int data1, int data2)
-{
-    return 0;
-}
diff --git a/bindings/PySCLang/ReadMe.txt b/bindings/PySCLang/ReadMe.txt
deleted file mode 100644
index 113acbd..0000000
--- a/bindings/PySCLang/ReadMe.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-PySCLang - a python module for SuperCollider Lang
-Project : Psycollider
-
-by:
-Benjamin Golinvaux
-benjamin.golinvaux at euresys.com
-messenger: bgolinvaux at hotmail.com
-
-currently maintained by:
-Christopher Frauenberger
-frauenberger at iem.at
-
--------------------------------------------------------------------------------
-
-PySCLang is a python module that implements the SuperCollider lang and makes it
-scriptable from python.
-
-Functions available from python:
-
-sendMain(string)
-	string is one of the following commands to the language:
-	interpretPrintCmdLine - evaluates the current command line string
-	run - runs something (defined in the library, does nothing if you didint override it)
-	stop - stops the lang
-	openWinCodeFile - opens any code window
-	methodTemplates -
-	methodReferences - finds references to the method selected
-
-compileLibrary()
-	compiles the library
-
-setCmdLine(string)
-	sets the current command line to any string that contains usually sc3 code
-
-start()
-	start the module
-
-setSCLogSink(window)
-	set where the module should post to
-
-compiledOK
-	returns a bool whether the library was compiled correctly
-
-Rtf2Ascii
-	ugly conversion...
-
-setPyPrOpenWinTextFile(path,startRange,rangeSize)
-	a file to open
-
-Example usage in python:
-
->>> import PySCLang, os
->>> os.chdir("/Applications/SuperCollider3/")
->>> PySCLang.start()
-
->>> PySCLang.setCmdLine("s = Server.local; s.boot; ")
->>> PySCLang.sendMain('interpretPrintCmdLine')
->>> PySCLang.setCmdLine("s.initTree; s.serverRunning=true")
->>> PySCLang.sendMain('interpretPrintCmdLine')
-
->>> PySCLang.setCmdLine(" { SinOsc.ar(440, 0, 0.4) }.play(s) ")
->>> PySCLang.sendMain('interpretPrintCmdLine')
-
--------------------------------------------------------------------------------
-Compilation
-
-Windows: PySCLang is part of the Solution, please refer to the Windows documentation
-
-OSX: open the Xcode file and
-	* make sure Xcode findes libscsysnth.a (in Frameworks) - if in red navigate to it manually
-	* set the active build to "Deployment"
-
-Have fun!
diff --git a/bindings/PySCLang/setup.py b/bindings/PySCLang/setup.py
deleted file mode 100755
index 2039fb5..0000000
--- a/bindings/PySCLang/setup.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# setup.py for use with py2exe to create the python module PySCLang
-# Created in March 2008 for SC 3.2 by John Glover (glover.john at gmail.com)
-
-# Usage: edit lines 13 and 16 below if necessary then run:
-#
-#        python setup.py build
-#        python setup.py install
-
-from distutils.core import setup, Extension
-import sys, os
-
-# use LID on linux?
-useLID = False
-
-# linux WII support?
-linuxWii = False        # not implemented yet
-
-# ------------------------------------------------------------------------------
-
-# Detect OS
-def getPlatform():
-    if sys.platform[:5] == 'linux':
-        return 'linux'
-    elif sys.platform[:3] == 'win':
-        return 'win32'
-    elif sys.platform[:6] == 'darwin':
-        return 'darwin'
-    else:
-        return 'unsupported'
-
-# get version
-VERSION = 'unknown'
-try:
-    f = open('../../VERSION')
-    VERSION = f.readline()
-    f.close()
-except:
-    pass
-
-# ------------------------------------------------------------------------------
-# platform independent
-defines = [('PYSCLANG', '1')]
-
-sourceFiles = [	'../../Source/common/fftlib.c',
-				'../../Source/common/SC_AllocPool.cpp',
-				'../../Source/common/SC_DirUtils.cpp',
-				'../../Source/common/SC_Sem.cpp',
-				'../../Source/common/SC_StringBuffer.cpp',
-				'../../Source/common/SC_StringParser.cpp',
-				'../../Source/common/scsynthsend.cpp',
-				'../../Source/lang/LangSource/AdvancingAllocPool.cpp',
-				'../../Source/lang/LangSource/alloca.cpp',			
-				'../../Source/lang/LangSource/ByteCodeArray.cpp',
-				'../../Source/lang/LangSource/dumpByteCodes.cpp',
-				'../../Source/lang/LangSource/DumpParseNode.cpp',
-				'../../Source/lang/LangSource/GC.cpp',
-				'../../Source/lang/LangSource/InitAlloc.cpp',
-				'../../Source/lang/LangSource/PyrFileUtils.cpp',
-				'../../Source/lang/LangSource/PyrInterpreter3.cpp',
-				'../../Source/lang/LangSource/PyrLexer.cpp',
-				'../../Source/lang/LangSource/PyrMathOps.cpp',
-				'../../Source/lang/LangSource/PyrMathSupport.cpp',
-				'../../Source/lang/LangSource/PyrMessage.cpp',
-				'../../Source/lang/LangSource/PyrObject.cpp',
-				'../../Source/lang/LangSource/PyrParseNode.cpp',
-				'../../Source/lang/LangSource/PyrSignal.cpp',
-				'../../Source/lang/LangSource/PyrSymbolTable.cpp',
-				'../../Source/lang/LangSource/Samp.cpp',
-				'../../Source/lang/LangSource/SC_LanguageClient.cpp',
-				'../../Source/lang/LangSource/SC_LibraryConfig.cpp',
-				'../../Source/lang/LangSource/SC_TerminalClient.cpp',
-				'../../Source/lang/LangSource/SimpleStack.cpp',
-				'../../Source/lang/LangSource/VMGlobals.cpp',
-				'../../Source/lang/LangSource/Bison/lang11d_tab.cpp',
-				'../../Source/lang/LangPrimSource/OSCData.cpp',
-				'../../Source/lang/LangPrimSource/PyrArchiver.cpp',
-				'../../Source/lang/LangPrimSource/PyrArrayPrimitives.cpp',
-				'../../Source/lang/LangPrimSource/PyrBitPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrCharPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrFilePrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrListPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrMathPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrPlatformPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrPrimitive.cpp',
-				'../../Source/lang/LangPrimSource/PyrSched.cpp',
-				'../../Source/lang/LangPrimSource/PyrSignalPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrStringPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrSymbolPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrSerialPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrUnixPrim.cpp',
-				'../../Source/lang/LangPrimSource/PyrUStringPrim.cpp',
-				'../../Source/lang/LangPrimSource/SC_ComPort.cpp',
-				'../../Source/lang/LangPrimSource/SC_Wii.cpp',
-
-                # PySCLang files
-				'./pycxx/Src/cxxextensions.c',
-				'./pycxx/Src/cxx_extensions.cxx',
-				'./pycxx/Src/cxxsupport.cxx',
-				'./pycxx/Src/IndirectPythonInterface.cxx',
-				'./PySCLang_Module_GUIStuff.cpp',
-				'./PySCLang_vpost_stuff.cpp',
-				'./PySCLang_Module.cpp'
-			  ]
-
-# ------------------------------------------------------------------------------
-# platform specific files and defines
-
-# midi
-if os.path.exists('/System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h'):
-    sourceFiles += ['../../Source/lang/LangPrimSource/SC_CoreMIDI.cpp']
-else:
-    sourceFiles += ['../../Source/lang/LangPrimSource/SC_AlsaMIDI.cpp']
-
-# Linux
-if getPlatform() == 'linux':
-    defines += [('SC_LINUX', '1')]
-
-    if useLID:
-        defines += [('HAVE_LID', '1')]
-        sourceFiles += ['../../Source/lang/LangPrimSource/SC_LID.cpp']
-
-    if linuxWii:
-        pass    # todo: add linux wii support
-
-# Mac OS
-elif getPlatform() == 'darwin':
-    defines += [('SC_DARWIN', '1'), ('HAVE_SPEECH', '1')]
-
-    sourceFiles += ['../../Source/lang/LangPrimSource/SC_Speech.cpp',
-                    '../../Source/lang/LangPrimSource/SC_HID.cpp',
-                    '../../Source/lang/LangPrimSource/HID_Utilities/HID_Error_Handler.c',
-                    '../../Source/lang/LangPrimSource/HID_Utilities/HID_Name_Lookup.c',
-                    '../../Source/lang/LangPrimSource/HID_Utilities/HID_Queue_Utilities.c',
-                    '../../Source/lang/LangPrimSource/HID_Utilities/HID_Utilities.c',
-                    '../../Source/lang/LangPrimSource/WiiMote_OSX/wiiremote.c'
-                   ]
-
-# Windows
-elif getPlatform() == 'win':
-    defines += [('SC_WIN32', '1')]
-
-# ------------------------------------------------------------------------------
-# PySCLang module
-pysclang = Extension('PySCLang',
-                    define_macros = defines,
-                    include_dirs = ['../../Headers/app',
-									'../../Headers/common',
-									'../../Headers/lang',
-									'../../Headers/plugin_interface',
-									'../../Headers/server',
-									'../../Source/lang/LangSource/Bison',
-									'./pycxx'
-								   ],
-                    libraries = ['sndfile', 'scsynth', 'sclang'],
-                    library_dirs = ['../../build'],
-                    sources = sourceFiles)
-
-setup (name = 'PySCLang',
-       version = VERSION,
-       description = 'PySCLang module, the python wrapper around the SuperCollider3 sclang program',
-       ext_modules = [pysclang])
-
diff --git a/bindings/PySCLang/stdafx.cpp b/bindings/PySCLang/stdafx.cpp
deleted file mode 100644
index 5074a70..0000000
--- a/bindings/PySCLang/stdafx.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-// stdafx.cpp : source file that includes just the standard includes
-// PySCLang.pch will be the pre-compiled header
-// stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
-
-// TODO: reference any additional headers you need in STDAFX.H
-// and not in this file
diff --git a/bindings/PySCLang/stdafx.h b/bindings/PySCLang/stdafx.h
deleted file mode 100644
index 2130888..0000000
--- a/bindings/PySCLang/stdafx.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently, but
-// are changed infrequently
-//
-
-#pragma once
-
-#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
-// Windows Header Files:
-#include <windows.h>
-
-// TODO: reference additional headers your program requires here
-
-#include "CXX/Objects.hxx"
-#include "CXX/Extensions.hxx"
-#include <winsock2.h>
diff --git a/cmake_modules/FindSndfile.cmake b/cmake_modules/FindSndfile.cmake
index 8a1a1fa..554ced7 100644
--- a/cmake_modules/FindSndfile.cmake
+++ b/cmake_modules/FindSndfile.cmake
@@ -18,9 +18,9 @@ elseif (SNDFILE_INCLUDE_DIR AND SNDFILE_LIBRARY)
 	set(SNDFILE_FOUND TRUE)
 elseif (APPLE)
 	set(SNDFILE_FOUND TRUE)
-	set(SNDFILE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/external_libraries/libsndfile/)
-	set(SNDFILE_LIBRARIES ${CMAKE_SOURCE_DIR}/platform/mac/lib/scUBlibsndfile.a)
-	add_definitions("-isystem ${CMAKE_SOURCE_DIR}/external_libraries/libsndfile")
+	set(SNDFILE_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/../external_libraries/libsndfile/)
+	set(SNDFILE_LIBRARIES ${CMAKE_CURRENT_LIST_DIR}/../platform/mac/lib/scUBlibsndfile.a)
+	add_definitions("-isystem ${CMAKE_CURRENT_LIST_DIR}/../external_libraries/libsndfile")
 
 	# TODO on non-apple platforms, we need to be able to test for >=1018.
 	# (On apple it is known true, because we bundle a later version.)
diff --git a/cmake_modules/FindYamlCpp.cmake b/cmake_modules/FindYamlCpp.cmake
new file mode 100644
index 0000000..1ec9798
--- /dev/null
+++ b/cmake_modules/FindYamlCpp.cmake
@@ -0,0 +1,50 @@
+# Locate yaml-cpp
+#
+# This module defines
+#  YAMLCPP_FOUND, if false, do not try to link to yaml-cpp
+#  YAMLCPP_LIBRARY, where to find yaml-cpp
+#  YAMLCPP_INCLUDE_DIR, where to find yaml.h
+#
+# By default, the dynamic libraries of yaml-cpp will be found. To find the static ones instead,
+# you must set the YAMLCPP_STATIC_LIBRARY variable to TRUE before calling find_package(YamlCpp ...).
+#
+# If yaml-cpp is not installed in a standard path, you can use the YAMLCPP_DIR CMake variable
+# to tell CMake where yaml-cpp is.
+
+# attempt to find static library first if this is set
+if(YAMLCPP_STATIC_LIBRARY)
+    set(YAMLCPP_STATIC libyaml-cpp.a)
+endif()
+
+# find the yaml-cpp include directory
+find_path(YAMLCPP_INCLUDE_DIR yaml-cpp/yaml.h
+          PATH_SUFFIXES include
+          PATHS
+          ~/Library/Frameworks/yaml-cpp/include/
+          /Library/Frameworks/yaml-cpp/include/
+          /usr/local/include/
+          /usr/include/
+          /sw/yaml-cpp/         # Fink
+          /opt/local/yaml-cpp/  # DarwinPorts
+          /opt/csw/yaml-cpp/    # Blastwave
+          /opt/yaml-cpp/
+          ${YAMLCPP_DIR}/include/)
+
+# find the yaml-cpp library
+find_library(YAMLCPP_LIBRARY
+             NAMES ${YAMLCPP_STATIC} yaml-cpp
+             PATH_SUFFIXES lib64 lib
+             PATHS ~/Library/Frameworks
+                    /Library/Frameworks
+                    /usr/local
+                    /usr
+                    /sw
+                    /opt/local
+                    /opt/csw
+                    /opt
+                    ${YAMLCPP_DIR}/lib)
+
+# handle the QUIETLY and REQUIRED arguments and set YAMLCPP_FOUND to TRUE if all listed variables are TRUE
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(YAMLCPP DEFAULT_MSG YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
+mark_as_advanced(YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
diff --git a/cmake_modules/MacAppFolder.cmake b/cmake_modules/MacAppFolder.cmake
index 789d8d9..a55397e 100644
--- a/cmake_modules/MacAppFolder.cmake
+++ b/cmake_modules/MacAppFolder.cmake
@@ -1,7 +1,7 @@
 if(APPLE)
 
 	###### The user may set the app name, causing a standalone build
-	######  cmake -D standalone:string=MyFabApp ../
+	######	cmake -D standalone:string=MyFabApp ../
 	if ("${standalone}" STREQUAL "")
 		set(scappbundlename ${PROJECT_NAME})
 	else()
@@ -9,7 +9,7 @@ if(APPLE)
 		set(scappbundlename ${standalone})
 		message(STATUS "Building sc in STANDALONE mode. App name: " ${standalone})
 	endif()
-	
+
 	set(scappauxresourcesdir "${scappbundlename}/${scappbundlename}.app/Contents/Resources")
 
 	###### Allow user to select a FHS-style install
@@ -17,5 +17,5 @@ if(APPLE)
 	option(INSTALL_FHS
 		"use FHS-style install (e.g. to /usr/local) rather than to a mac-style app folder"
 		FALSE)
-	
+
 endif(APPLE)
diff --git a/common/SC_AllocPool.cpp b/common/SC_AllocPool.cpp
index b10c91c..3ed832a 100644
--- a/common/SC_AllocPool.cpp
+++ b/common/SC_AllocPool.cpp
@@ -535,7 +535,7 @@ void* AllocPool::Realloc(void* inPtr, size_t inReqSize)
 void AllocPool::LinkFree(AllocChunkPtr inChunk)
 {
 	size_t size = inChunk->Size();
-	int index = BinIndex(size);
+	size_t index = BinIndex(size);
 
 	AllocChunkPtr bin = mBins + index;
 
diff --git a/common/SC_DirUtils.cpp b/common/SC_DirUtils.cpp
index a08e083..0e3a40e 100644
--- a/common/SC_DirUtils.cpp
+++ b/common/SC_DirUtils.cpp
@@ -25,7 +25,9 @@
 #include <stdexcept>
 
 #ifdef _WIN32
+# include <windows.h>
 # include <direct.h>
+# include <shlobj.h>
 # include "SC_Win32Utils.h"
 #else
 # include <unistd.h>
@@ -169,8 +171,8 @@ inline static bool sc_IsSpecialDirectory(const char* name)
 
 bool sc_SkipDirectory(const char *name)
 {
-	return ((strcasecmp(name, "help") == 0) ||
-			(strcasecmp(name, "ignore") == 0) ||
+	return (stringCaseCompare(name, "help")   ||
+			stringCaseCompare(name, "ignore") ||
 			(strcmp(name, ".svn") == 0) ||
 			(strcmp(name, ".git") == 0) ||
 			(strcmp(name, "_darcs") == 0) ||
@@ -227,19 +229,24 @@ void sc_GetResourceDirectory(char* pathBuf, int length)
 	SC_StandAloneInfo::GetResourceDir(pathBuf, length);
 }
 
+
 void sc_AppendBundleName(char *str, int size)
 {
 	CFBundleRef mainBundle;
 	mainBundle = CFBundleGetMainBundle();
-	CFDictionaryRef dictRef = CFBundleGetInfoDictionary(mainBundle);
-	CFStringRef strRef;
-	strRef = (CFStringRef)CFDictionaryGetValue(dictRef, CFSTR("CFBundleName"));
-	if(!mainBundle || !strRef){
-		sc_AppendToPath(str, size, "SuperCollider");
-	} else {
-		const char *bundleName = CFStringGetCStringPtr(strRef, kCFStringEncodingMacRoman);
-		sc_AppendToPath(str, size, bundleName);
+	if(mainBundle){
+		CFDictionaryRef dictRef = CFBundleGetInfoDictionary(mainBundle);
+		CFStringRef strRef;
+		strRef = (CFStringRef)CFDictionaryGetValue(dictRef, CFSTR("CFBundleName"));
+		if(strRef){
+			const char *bundleName = CFStringGetCStringPtr(strRef, CFStringGetSystemEncoding());
+			if(bundleName) {
+				sc_AppendToPath(str, size, bundleName);
+				return;
+			}
+		}
 	}
+	sc_AppendToPath(str, size, "SuperCollider");
 }
 
 #elif defined(SC_IPHONE)
@@ -270,6 +277,21 @@ void sc_GetResourceDirectory(char* pathBuf, int length)
 #endif
 }
 
+#elif defined(_WIN32)
+
+bool sc_IsStandAlone()
+{
+	return false;
+}
+
+void sc_GetResourceDirectory(char* dest, int length)
+{
+	char buf[length];
+	GetModuleFileName( NULL, buf, length );
+	char *path = win32_dirname(buf);
+	strcpy(dest, path);
+}
+
 #else
 
 bool sc_IsStandAlone()
@@ -316,6 +338,16 @@ void sc_GetUserHomeDirectory(char *str, int size)
 
 void sc_GetSystemAppSupportDirectory(char *str, int size)
 {
+#ifdef _WIN32
+	ITEMIDLIST * pidl;
+	char buf[MAX_PATH];
+	SHGetFolderLocation(NULL, CSIDL_COMMON_APPDATA, NULL, 0, &pidl);
+	SHGetPathFromIDList( pidl, buf );
+	ILFree(pidl);
+	strncpy(str, buf, size);
+	sc_AppendToPath(str, size, "SuperCollider");
+#else
+
 	strncpy(str,
 #if defined(SC_DATA_DIR)
 			SC_DATA_DIR,
@@ -323,17 +355,17 @@ void sc_GetSystemAppSupportDirectory(char *str, int size)
 			"/",
 #elif defined(__APPLE__)
 			"/Library/Application Support",
-#elif defined(_WIN32)
-			( getenv("SC_SYSAPPSUP_PATH")==NULL ) ? "C:\\SuperCollider" : getenv("SC_SYSAPPSUP_PATH"),
 #else
 			"/usr/local/share/SuperCollider",
 #endif
 			size);
-			
+
 #if defined(__APPLE__)
 	// Get the main bundle name for the app from the enclosed Info.plist 
 	sc_AppendBundleName(str, size);
 #endif
+
+#endif
 }
 
 
@@ -349,6 +381,16 @@ void sc_GetUserAppSupportDirectory(char *str, int size)
 		return;
 	}
 
+#if defined(_WIN32)
+	ITEMIDLIST * pidl;
+	char buf[MAX_PATH];
+	SHGetFolderLocation(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, &pidl);
+	SHGetPathFromIDList( pidl, buf );
+	ILFree(pidl);
+	strncpy(str, buf, size);
+	sc_AppendToPath(str, size, "SuperCollider");
+#else
+
 	sc_GetUserHomeDirectory(str, size);
 
 #if defined(SC_IPHONE)
@@ -357,11 +399,11 @@ void sc_GetUserAppSupportDirectory(char *str, int size)
 	// Get the main bundle name for the app
 	sc_AppendToPath(str, size, "Library/Application Support");
 	sc_AppendBundleName(str, size);
-#elif defined(_WIN32)
-	sc_AppendToPath(str, size, "SuperCollider");
 #else
 	sc_AppendToPath(str, size, ".local/share/SuperCollider");
 #endif
+
+#endif
 }
 
 
@@ -394,8 +436,6 @@ void sc_GetUserConfigDirectory(char *str, int size)
 	}
 
 #if defined(__linux__) || defined(__freebsd__)
-	char * home = str;
-
 	sc_GetUserHomeDirectory(str, size);
 	sc_AppendToPath(str, size, ".config/SuperCollider");
 #else
diff --git a/common/SC_Reply.cpp b/common/SC_Reply.cpp
new file mode 100644
index 0000000..2517418
--- /dev/null
+++ b/common/SC_Reply.cpp
@@ -0,0 +1,36 @@
+/*
+	SuperCollider real time audio synthesis system
+	Copyright (c) 2002 James McCartney. All rights reserved.
+	Copyright (c) 2012 Tim Blechmann
+	http://www.audiosynth.com
+
+	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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "SC_Reply.h"
+
+void null_reply_func(struct ReplyAddress *addr, char* msg, int size)
+{}
+
+bool operator==(const ReplyAddress& a, const ReplyAddress& b)
+{
+	return a.mSockAddr.sin_addr.s_addr == b.mSockAddr.sin_addr.s_addr
+	&& a.mSockAddr.sin_family == b.mSockAddr.sin_family
+	&& a.mSockAddr.sin_port == b.mSockAddr.sin_port
+	#ifdef __APPLE__
+	&& a.mSockAddr.sin_len == b.mSockAddr.sin_len
+	#endif
+	&& a.mSocket == b.mSocket;
+}
diff --git a/common/SC_SndFileHelpers.hpp b/common/SC_SndFileHelpers.hpp
new file mode 100644
index 0000000..071d709
--- /dev/null
+++ b/common/SC_SndFileHelpers.hpp
@@ -0,0 +1,117 @@
+//  sndfile helper functions
+//
+//  Copyright (c) 2002 James McCartney. All rights reserved.
+//  Copyright (C) 2012 Tim Blechmann
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; see the file COPYING.  If not, write to
+//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+//  Boston, MA 02111-1307, USA.
+
+#ifndef SC_SNDFILEHELPERS_HPP_INCLUDED
+#define SC_SNDFILEHELPERS_HPP_INCLUDED
+
+#include "SC_Errors.h"
+
+#ifndef NO_LIBSNDFILE
+#include "sndfile.h"
+#include "string.h"
+#include "SC_DirUtils.h"
+
+static inline int headerFormatFromString(const char *name)
+{
+	if (!name) return SF_FORMAT_AIFF;
+	if (stringCaseCompare(name, "AIFF"))  return SF_FORMAT_AIFF;
+	if (stringCaseCompare(name, "AIFC"))  return SF_FORMAT_AIFF;
+	if (stringCaseCompare(name, "RIFF"))  return SF_FORMAT_WAV;
+	if (stringCaseCompare(name, "WAVEX")) return SF_FORMAT_WAVEX;
+	if (stringCaseCompare(name, "WAVE"))  return SF_FORMAT_WAV;
+	if (stringCaseCompare(name, "WAV" ))  return SF_FORMAT_WAV;
+	if (stringCaseCompare(name, "Sun" ))  return SF_FORMAT_AU;
+	if (stringCaseCompare(name, "IRCAM")) return SF_FORMAT_IRCAM;
+	if (stringCaseCompare(name, "NeXT"))  return SF_FORMAT_AU;
+	if (stringCaseCompare(name, "raw"))   return SF_FORMAT_RAW;
+	if (stringCaseCompare(name, "MAT4"))  return SF_FORMAT_MAT4;
+	if (stringCaseCompare(name, "MAT5"))  return SF_FORMAT_MAT5;
+	if (stringCaseCompare(name, "PAF"))   return SF_FORMAT_PAF;
+	if (stringCaseCompare(name, "SVX"))   return SF_FORMAT_SVX;
+	if (stringCaseCompare(name, "NIST"))  return SF_FORMAT_NIST;
+	if (stringCaseCompare(name, "VOC"))   return SF_FORMAT_VOC;
+	if (stringCaseCompare(name, "W64"))   return SF_FORMAT_W64;
+	if (stringCaseCompare(name, "PVF"))   return SF_FORMAT_PVF;
+	if (stringCaseCompare(name, "XI"))    return SF_FORMAT_XI;
+	if (stringCaseCompare(name, "HTK"))   return SF_FORMAT_HTK;
+	if (stringCaseCompare(name, "SDS"))   return SF_FORMAT_SDS;
+	if (stringCaseCompare(name, "AVR"))   return SF_FORMAT_AVR;
+	if (stringCaseCompare(name, "SD2"))   return SF_FORMAT_SD2;
+	if (stringCaseCompare(name, "FLAC"))  return SF_FORMAT_FLAC;
+	// TODO allow other platforms to know vorbis once libsndfile 1.0.18 is established
+	#if defined(__APPLE__) || defined(_WIN32) || LIBSNDFILE_1018
+	if (stringCaseCompare(name, "vorbis")) return SF_FORMAT_VORBIS;
+	#endif
+	if (stringCaseCompare(name, "CAF"))   return SF_FORMAT_CAF;
+	if (stringCaseCompare(name, "RF64"))  return SF_FORMAT_RF64;
+	return 0;
+}
+
+static inline int sampleFormatFromString(const char* name)
+{
+	if (!name) return SF_FORMAT_PCM_16;
+
+	size_t len = strlen(name);
+	if (len < 1) return 0;
+
+	if (name[0] == 'u') {
+		if (len < 5) return 0;
+		if (name[4] == '8') return SF_FORMAT_PCM_U8; // uint8
+		return 0;
+	} else if (name[0] == 'i') {
+		if (len < 4) return 0;
+		if (name[3] == '8') return SF_FORMAT_PCM_S8;      // int8
+		else if (name[3] == '1') return SF_FORMAT_PCM_16; // int16
+		else if (name[3] == '2') return SF_FORMAT_PCM_24; // int24
+		else if (name[3] == '3') return SF_FORMAT_PCM_32; // int32
+	} else if (name[0] == 'f') {
+		return SF_FORMAT_FLOAT; // float
+	} else if (name[0] == 'd') {
+		return SF_FORMAT_DOUBLE; // double
+	} else if (name[0] == 'm' || name[0] == 'u') {
+		return SF_FORMAT_ULAW; // mulaw ulaw
+	} else if (name[0] == 'a') {
+		return SF_FORMAT_ALAW; // alaw
+	}
+	return 0;
+}
+
+static inline int sndfileFormatInfoFromStrings(struct SF_INFO *info, const char *headerFormatString, const char *sampleFormatString)
+{
+	int headerFormat = headerFormatFromString(headerFormatString);
+	if (!headerFormat) return kSCErr_Failed;
+
+	int sampleFormat = sampleFormatFromString(sampleFormatString);
+	if (!sampleFormat) return kSCErr_Failed;
+
+	info->format = (unsigned int)(headerFormat | sampleFormat);
+	return kSCErr_None;
+}
+
+#else
+
+static inline int sndfileFormatInfoFromStrings(struct SF_INFO *info, const char *headerFormatString, const char *sampleFormatString)
+{
+	return kSCErr_Failed;
+}
+
+#endif
+
+#endif /* SC_SNDFILEHELPERS_HPP_INCLUDED */
diff --git a/common/SC_StandAloneInfo_Darwin.cpp b/common/SC_StandAloneInfo_Darwin.cpp
index c642a60..bc64d74 100644
--- a/common/SC_StandAloneInfo_Darwin.cpp
+++ b/common/SC_StandAloneInfo_Darwin.cpp
@@ -6,6 +6,7 @@
 #include <mach-o/dyld.h> // for _NSGetExecutablePath
 #include <libgen.h>
 #include <stdlib.h>
+#include <unistd.h>
 
 #include <CoreFoundation/CFString.h>
 #include <CoreFoundation/CFBundle.h>
@@ -21,12 +22,21 @@ void SC_StandAloneInfo::SC_StandAloneInfoInit() {
 	CFStringEncoding encoding = kCFStringEncodingASCII;
 	if(!haveCheckedBundleStatus) {
 		haveCheckedBundleStatus = true;
+		
 		CFURLRef enablerURL = CFBundleCopyResourceURL (
 			CFBundleGetMainBundle(),
 			CFSTR("SCClassLibrary"),
 			NULL,
 			NULL
 		);
+		if( !enablerURL ) {
+			enablerURL = CFBundleCopyResourceURL (
+				  CFBundleGetMainBundle(),
+				  CFSTR("sclang.app"),
+				  NULL,
+				  NULL
+				  );
+		}
 		if ( enablerURL ) {
 			// If sclang or SuperCollider binary is run within the .app bundle,
 			// this is how we find the Resources path.
diff --git a/common/SC_TextUtils.cpp b/common/SC_TextUtils.cpp
new file mode 100644
index 0000000..105abf2
--- /dev/null
+++ b/common/SC_TextUtils.cpp
@@ -0,0 +1,128 @@
+/*
+	SuperCollider real time audio synthesis system
+	Copyright (c) 2002 James McCartney. All rights reserved.
+	http://www.audiosynth.com
+	Copyright (c) 2012 Tim Blechmann. All rights reserved.
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include <cstring>
+
+#define OPENCURLY '{'
+#define CLOSCURLY '}'
+
+int rtf2txt(char* txt)
+{
+	int rdpos=0, wrpos=0;
+	char c;
+	if (strncmp(txt,"{\\rtf",5)!=0) return 0;  // OK, not an RTF file
+text:
+	switch (txt[wrpos]=txt[rdpos++])
+	{
+	case 0:
+		/*{
+					char fname[32];
+					sprintf(fname, "rtf2txt_out%d.txt", bugctr++);
+					FILE *fp = fopen(fname, "w");
+					fwrite(txt,wrpos,1,fp);
+					fclose(fp);
+				}*/
+		return wrpos;
+	case OPENCURLY:
+	case CLOSCURLY:
+	case '\n': goto text;
+	case '\\':
+		if (strncmp(txt+rdpos,"fonttbl",7)==0
+			|| strncmp(txt+rdpos,"filetbl",7)==0
+			|| strncmp(txt+rdpos,"colortbl",8)==0
+			|| strncmp(txt+rdpos,"stylesheet",10)==0
+			)
+		{
+			int level = 1;
+			while(level && (c=txt[rdpos++]) != 0) {
+				if (c == OPENCURLY) level++;
+				else if (c == CLOSCURLY) level--;
+			}
+		} else if (strncmp(txt+rdpos,"\'a0",3)==0 || (strncmp(txt+rdpos,"\'A0",3)==0))
+		{
+			txt[wrpos++] = ' '; rdpos = rdpos + 3;
+		} else {
+			if (txt[rdpos]==CLOSCURLY || txt[rdpos]==OPENCURLY
+				|| txt[rdpos]=='\\' || txt[rdpos]=='\t'|| txt[rdpos]=='\n')
+			{ txt[wrpos++] = txt[rdpos++]; goto text; }
+			if (strncmp(txt+rdpos,"tab",3)==0) { txt[wrpos++] = '\t'; }
+			if (strncmp(txt+rdpos,"par",3)==0) { txt[wrpos++] = '\n'; }
+
+			while((c=txt[rdpos++]) && c!=' ' && c!='\\');
+			if (c=='\\') rdpos--;
+		}
+		goto text;
+	default :
+		wrpos++;
+		goto text;
+	}
+}
+
+// strips HTML down to plaintext tags in a fairly simple-minded way
+int html2txt(char* txt)
+{
+	int rdpos=-1, wrpos=0, bodypos=-1;
+	bool intag = false;
+
+	// First check if we can find a BODY tag to start at
+	while(bodypos == -1 && txt[++rdpos] != 0){
+		if(strncmp(txt+rdpos, "<body", 5) == 0) // FIXME: should be case-insensitive, ideally
+			bodypos = rdpos;
+	}
+	if(bodypos != -1)
+		rdpos = bodypos;
+	else
+		rdpos = 0;
+
+	// Now we start from our start, and add the non-tag text to the result
+	while(txt[rdpos] != 0){
+		if(intag){
+			if(txt[rdpos++] == '>')
+				intag = false;
+		}else{
+			if(txt[rdpos] == '<'){
+				intag = true;
+				++rdpos;
+			}else{
+				/*
+				if(strncmp(txt+rdpos, "&", 5)==0){
+					txt[wrpos++] = '&';
+					rdpos += 5;
+				}else if(strncmp(txt+rdpos, " ", 6)==0){
+					txt[wrpos++] = ' ';
+					rdpos += 6;
+				}else if(strncmp(txt+rdpos, "<", 4)==0){
+					txt[wrpos++] = '<';
+					rdpos += 4;
+				}else if(strncmp(txt+rdpos, ">", 4)==0){
+					txt[wrpos++] = '>';
+					rdpos += 4;
+				}else{
+				*/
+					txt[wrpos++] = txt[rdpos++];
+				//}
+			}
+		}
+	}
+	txt[wrpos] = 0;
+	return wrpos;
+}
+
diff --git a/common/SC_TextUtils.hpp b/common/SC_TextUtils.hpp
new file mode 100644
index 0000000..3f519ab
--- /dev/null
+++ b/common/SC_TextUtils.hpp
@@ -0,0 +1,30 @@
+/*
+	SuperCollider real time audio synthesis system
+	Copyright (c) 2002 James McCartney. All rights reserved.
+	http://www.audiosynth.com
+	Copyright (c) 2012 Tim Blechmann. All rights reserved.
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SC_TEXTUTILS_HPP
+#define SC_TEXTUTILS_HPP
+
+// strips out all the RichTextFile crap
+int rtf2txt(char* txt);
+int html2txt(char* txt);
+
+
+#endif // SC_TEXTUTILS_HPP
diff --git a/common/SC_fftlib.cpp b/common/SC_fftlib.cpp
index 6f071ac..0015e77 100644
--- a/common/SC_fftlib.cpp
+++ b/common/SC_fftlib.cpp
@@ -33,6 +33,11 @@ For speed we keep this global, although this makes the code non-thread-safe.
 #include <cassert>
 
 #include "SC_fftlib.h"
+#include "../server/supernova/utilities/malloc_aligned.hpp"
+
+#ifdef NOVA_SIMD
+#include "simd_binary_arithmetic.hpp"
+#endif
 
 
 // We include vDSP even if not using for FFT, since we want to use some vectorised add/mul tricks
@@ -80,9 +85,6 @@ typedef struct scfft {
 	short wintype;
 	float *indata, *outdata, *trbuf;
 	float scalefac; // Used to rescale the data to unity gain
-	#if SC_FFT_FFTW
-		fftwf_plan plan;
-	#endif
 } scfft;
 
 
@@ -100,6 +102,13 @@ static float *fftWindow[2][SC_FFT_LOG2_ABSOLUTE_MAXSIZE_PLUS1];
 	}
 #endif
 
+#if SC_FFT_FFTW
+static fftwf_plan precompiledForwardPlans[SC_FFT_LOG2_ABSOLUTE_MAXSIZE_PLUS1];
+static fftwf_plan precompiledBackwardPlans[SC_FFT_LOG2_ABSOLUTE_MAXSIZE_PLUS1];
+static fftwf_plan precompiledForwardPlansInPlace[SC_FFT_LOG2_ABSOLUTE_MAXSIZE_PLUS1];
+static fftwf_plan precompiledBackwardPlansInPlace[SC_FFT_LOG2_ABSOLUTE_MAXSIZE_PLUS1];
+#endif
+
 #define pi 3.1415926535898f
 #define twopi 6.28318530717952646f
 
@@ -112,7 +121,10 @@ static float* create_cosTable(int log2n)
 {
 	int size = 1 << log2n;
 	int size2 = size / 4 + 1;
-	float *win = (float*)malloc(size2 * sizeof(float));
+	float *win = (float*)nova::malloc_aligned(size2 * sizeof(float));
+	if (win == NULL)
+		return NULL;
+
 	double winc = twopi / size;
 	for (int i=0; i<size2; ++i) {
 		double w = i * winc;
@@ -122,11 +134,14 @@ static float* create_cosTable(int log2n)
 }
 #endif
 
-static float* scfft_create_fftwindow(int wintype, int log2n)
+static inline float* scfft_create_fftwindow(int wintype, int log2n)
 {
 	int size = 1 << log2n;
 	unsigned short i;
-	float *win = (float*)malloc(size * sizeof(float));
+
+	float * win = (float*)nova::malloc_aligned(size * sizeof(float));
+
+	if (!win) return NULL;
 
 	double winc;
 	switch(wintype) {
@@ -147,7 +162,6 @@ static float* scfft_create_fftwindow(int wintype, int log2n)
 	}
 
 	return win;
-
 }
 
 static void scfft_ensurewindow(unsigned short log2_fullsize, unsigned short log2_winsize, short wintype);
@@ -185,7 +199,20 @@ static bool scfft_global_initialization (void)
 	splitBuf.imagp = (float*) malloc ( SC_FFT_MAXSIZE * sizeof(float) / 2);
 	//printf("SC FFT global init: vDSP initialised.\n");
 #elif SC_FFT_FFTW
-	//printf("SC FFT global init: FFTW, no init needed.\n");
+	size_t maxSize = 1<<SC_FFT_LOG2_MAXSIZE;
+	float * buffer1 = (float*)fftwf_malloc((maxSize + 1) * sizeof(float));
+	float * buffer2 = (float*)fftwf_malloc((maxSize + 1) * sizeof(float));
+	for (int i= SC_FFT_LOG2_MINSIZE; i < SC_FFT_LOG2_MAXSIZE+1; ++i) {
+		size_t currentSize = 1<<i;
+
+		precompiledForwardPlans[i]  = fftwf_plan_dft_r2c_1d(currentSize, buffer1, (fftwf_complex*) buffer2, FFTW_ESTIMATE);
+		precompiledBackwardPlans[i] = fftwf_plan_dft_c2r_1d(currentSize, (fftwf_complex*) buffer2, buffer1, FFTW_ESTIMATE);
+
+		precompiledForwardPlansInPlace[i]  = fftwf_plan_dft_r2c_1d(currentSize, buffer1, (fftwf_complex*) buffer1, FFTW_ESTIMATE);
+		precompiledBackwardPlansInPlace[i] = fftwf_plan_dft_c2r_1d(currentSize, (fftwf_complex*) buffer1, buffer1, FFTW_ESTIMATE);
+	}
+	fftwf_free(buffer1);
+	fftwf_free(buffer2);
 #endif
 	return false;
 }
@@ -213,12 +240,21 @@ static size_t scfft_trbufsize(unsigned int fullsize)
 scfft * scfft_create(size_t fullsize, size_t winsize, SCFFT_WindowFunction wintype,
 					 float *indata, float *outdata, SCFFT_Direction forward, SCFFT_Allocator & alloc)
 {
-	char * chunk = (char*) alloc.alloc(sizeof(scfft) + scfft_trbufsize(fullsize));
+	if ( (fullsize > SC_FFT_MAXSIZE) || (fullsize < SC_FFT_MINSIZE) )
+		return NULL;
+
+	const int alignment = 128; // in bytes
+	char * chunk = (char*) alloc.alloc(sizeof(scfft) + scfft_trbufsize(fullsize) + alignment);
 	if (!chunk)
 		return NULL;
 
 	scfft * f = (scfft*)chunk;
 	float *trbuf = (float*)(chunk + sizeof(scfft));
+	trbuf = (float*) ((intptr_t)((char*)trbuf + (alignment - 1)) & -alignment);
+
+#ifdef NOVA_SIMD
+	assert(nova::vec<float>::is_aligned(trbuf));
+#endif
 
 	f->nfull = fullsize;
 	f->nwin  =  winsize;
@@ -233,15 +269,8 @@ scfft * scfft_create(size_t fullsize, size_t winsize, SCFFT_WindowFunction winty
 	if (fullsize > SC_FFT_MAXSIZE)
 		scfft_ensurewindow(f->log2nfull, f->log2nwin, wintype);
 
-#if SC_FFT_FFTW
-	if(forward)
-		f->plan = fftwf_plan_dft_r2c_1d(fullsize, trbuf, (fftwf_complex*) trbuf, FFTW_ESTIMATE);
-	else
-		f->plan = fftwf_plan_dft_c2r_1d(fullsize, (fftwf_complex*) trbuf, outdata, FFTW_ESTIMATE);
-#endif
-
 	// The scale factors rescale the data to unity gain. The old Green lib did this itself, meaning scalefacs would here be 1...
-	if(forward){
+	if (forward) {
 #if SC_FFT_VDSP
 		f->scalefac = 0.5f;
 #else // forward FFTW and Green factor
@@ -269,11 +298,11 @@ void scfft_ensurewindow(unsigned short log2_fullsize, unsigned short log2_winsiz
 	// Ensure we have enough space to do our calcs
 	if(log2_fullsize > largest_log2n){
 		largest_log2n = log2_fullsize;
- 		#if SC_FFT_VDSP
-			size_t newsize = (1 << largest_log2n) * sizeof(float) / 2;
-			splitBuf.realp = (float*) realloc (splitBuf.realp, newsize);
-			splitBuf.imagp = (float*) realloc (splitBuf.imagp, newsize);
-   		#endif
+#if SC_FFT_VDSP
+		size_t newsize = (1 << largest_log2n) * sizeof(float) / 2;
+		splitBuf.realp = (float*) realloc (splitBuf.realp, newsize);
+		splitBuf.imagp = (float*) realloc (splitBuf.imagp, newsize);
+#endif
 	}
 
 	// Ensure our window has been created
@@ -282,13 +311,13 @@ void scfft_ensurewindow(unsigned short log2_fullsize, unsigned short log2_winsiz
 	}
 
 	// Ensure our FFT twiddle factors (or whatever) have been created
- 	#if SC_FFT_VDSP
-		if(fftSetup[log2_fullsize] == 0)
-			fftSetup[log2_fullsize] = vDSP_create_fftsetup (log2_fullsize, FFT_RADIX2);
-	#elif SC_FFT_GREEN
-		if(cosTable[log2_fullsize] == 0)
-			cosTable[log2_fullsize] = create_cosTable(log2_fullsize);
-   	#endif
+#if SC_FFT_VDSP
+	if(fftSetup[log2_fullsize] == 0)
+		fftSetup[log2_fullsize] = vDSP_create_fftsetup (log2_fullsize, FFT_RADIX2);
+#elif SC_FFT_GREEN
+	if(cosTable[log2_fullsize] == 0)
+		cosTable[log2_fullsize] = create_cosTable(log2_fullsize);
+#endif
 }
 
 // these do the main jobs.
@@ -296,30 +325,34 @@ void scfft_ensurewindow(unsigned short log2_fullsize, unsigned short log2_winsiz
 static void scfft_dowindowing(float *data, unsigned int winsize, unsigned int fullsize, unsigned short log2_winsize,
 							  short wintype, float scalefac)
 {
-	int i;
 	if (wintype != kRectWindow) {
 		float *win = fftWindow[wintype][log2_winsize];
 		if (!win) return;
-		#if SC_FFT_VDSP
-			vDSP_vmul(data, 1, win, 1, data, 1, winsize);
-		#else
-			--win;
-			float *in = data - 1;
-			for (i=0; i< winsize ; ++i) {
-				*++in *= *++win;
-			}
-		#endif
-
+#if SC_FFT_VDSP
+		vDSP_vmul(data, 1, win, 1, data, 1, winsize);
+#elif defined (NOVA_SIMD)
+		using namespace nova;
+		if (((vec<float>::objects_per_cacheline & winsize) == 0) && vec<float>::is_aligned(data))
+			times_vec_simd(data, data, win, winsize);
+		else
+			times_vec(data, data, win, winsize);
+#else
+		--win;
+		float *in = data - 1;
+		for (int i=0; i< winsize ; ++i) {
+			*++in *= *++win;
+		}
+#endif
 	}
 
-		// scale factor is different for different libs. But the compiler switch here is about using vDSP's fast multiplication method.
-	#if SC_FFT_VDSP
-		vDSP_vsmul(data, 1, &scalefac, data, 1, winsize);
-	#else
-		for(int i=0; i<winsize; ++i){
-			data[i] *= scalefac;
-		}
-	#endif
+	// scale factor is different for different libs. But the compiler switch here is about using vDSP's fast multiplication method.
+#if SC_FFT_VDSP
+	vDSP_vsmul(data, 1, &scalefac, data, 1, winsize);
+#else
+	for(int i=0; i<winsize; ++i){
+		data[i] *= scalefac;
+	}
+#endif
 
 	// Zero-padding:
 	memset(data + winsize, 0, (fullsize - winsize) * sizeof(float));
@@ -330,61 +363,57 @@ void scfft_dofft(scfft * f)
 	// Data goes to transform buf
 	memcpy(f->trbuf, f->indata, f->nwin * sizeof(float));
 	scfft_dowindowing(f->trbuf, f->nwin, f->nfull, f->log2nwin, f->wintype, f->scalefac);
-	#if SC_FFT_FFTW
-		fftwf_execute(f->plan);
-		// Rearrange output data onto public buffer
-		memcpy(f->outdata, f->trbuf, f->nfull * sizeof(float));
-		f->outdata[1] = f->trbuf[f->nfull]; // Pack nyquist val in
-	#elif SC_FFT_VDSP
-		// Perform even-odd split
-		vDSP_ctoz((COMPLEX*) f->trbuf, 2, &splitBuf, 1, f->nfull >> 1);
-		// Now the actual FFT
-		vDSP_fft_zrip(fftSetup[f->log2nfull], &splitBuf, 1, f->log2nfull, FFT_FORWARD);
-		// Copy the data to the public output buf, transforming it back out of "split" representation
-		vDSP_ztoc(&splitBuf, 1, (DSPComplex*) f->outdata, 2, f->nfull >> 1);
-	#elif SC_FFT_GREEN
-		// Green FFT is in-place
-		rffts(f->trbuf, f->log2nfull, 1, cosTable[f->log2nfull]);
-		// Copy to public buffer
-		memcpy(f->outdata, f->trbuf, f->nfull * sizeof(float));
-	#endif
+#if SC_FFT_FFTW
+	// forward transformation is in-place
+	fftwf_execute_dft_r2c(precompiledForwardPlansInPlace[f->log2nfull], f->trbuf, (fftwf_complex*)f->trbuf);
+
+	// Rearrange output data onto public buffer
+	memcpy(f->outdata, f->trbuf, f->nfull * sizeof(float));
+	f->outdata[1] = f->trbuf[f->nfull]; // Pack nyquist val in
+#elif SC_FFT_VDSP
+	// Perform even-odd split
+	vDSP_ctoz((COMPLEX*) f->trbuf, 2, &splitBuf, 1, f->nfull >> 1);
+	// Now the actual FFT
+	vDSP_fft_zrip(fftSetup[f->log2nfull], &splitBuf, 1, f->log2nfull, FFT_FORWARD);
+	// Copy the data to the public output buf, transforming it back out of "split" representation
+	vDSP_ztoc(&splitBuf, 1, (DSPComplex*) f->outdata, 2, f->nfull >> 1);
+#elif SC_FFT_GREEN
+	// Green FFT is in-place
+	rffts(f->trbuf, f->log2nfull, 1, cosTable[f->log2nfull]);
+	// Copy to public buffer
+	memcpy(f->outdata, f->trbuf, f->nfull * sizeof(float));
+#endif
 }
 
 void scfft_doifft(scfft * f)
 {
-	#if SC_FFT_FFTW
-		float *trbuf = f->trbuf;
-		size_t bytesize = f->nfull * sizeof(float);
-		memcpy(trbuf, f->indata, bytesize);
-		trbuf[1] = 0.f;
-		trbuf[f->nfull] = f->indata[1];  // Nyquist goes all the way down to the end of the line...
-		trbuf[f->nfull+1] = 0.f;
-
-		fftwf_execute(f->plan);
-		// NB the plan already includes copying data to f->outbuf
-
-	#elif SC_FFT_VDSP
-		vDSP_ctoz((COMPLEX*) f->indata, 2, &splitBuf, 1, f->nfull >> 1);
-		vDSP_fft_zrip(fftSetup[f->log2nfull], &splitBuf, 1, f->log2nfull, FFT_INVERSE);
-		vDSP_ztoc(&splitBuf, 1, (DSPComplex*) f->outdata, 2, f->nfull >> 1);
-	#elif SC_FFT_GREEN
-		float *trbuf = f->trbuf;
-		size_t bytesize = f->nfull * sizeof(float);
-		memcpy(trbuf, f->indata, bytesize);
-		// Green FFT is in-place
-		riffts(trbuf, f->log2nfull, 1, cosTable[f->log2nfull]);
-		// Copy to public buffer
-		memcpy(f->outdata, trbuf, f->nwin * sizeof(float));
-	#endif
+#if SC_FFT_FFTW
+	float *trbuf = f->trbuf;
+	size_t bytesize = f->nfull * sizeof(float);
+	memcpy(trbuf, f->indata, bytesize);
+	trbuf[1] = 0.f;
+	trbuf[f->nfull] = f->indata[1];  // Nyquist goes all the way down to the end of the line...
+	trbuf[f->nfull+1] = 0.f;
+
+	fftwf_execute_dft_c2r(precompiledBackwardPlans[f->log2nfull], (fftwf_complex*)trbuf, f->outdata);
+
+#elif SC_FFT_VDSP
+	vDSP_ctoz((COMPLEX*) f->indata, 2, &splitBuf, 1, f->nfull >> 1);
+	vDSP_fft_zrip(fftSetup[f->log2nfull], &splitBuf, 1, f->log2nfull, FFT_INVERSE);
+	vDSP_ztoc(&splitBuf, 1, (DSPComplex*) f->outdata, 2, f->nfull >> 1);
+#elif SC_FFT_GREEN
+	float *trbuf = f->trbuf;
+	size_t bytesize = f->nfull * sizeof(float);
+	memcpy(trbuf, f->indata, bytesize);
+	// Green FFT is in-place
+	riffts(trbuf, f->log2nfull, 1, cosTable[f->log2nfull]);
+	// Copy to public buffer
+	memcpy(f->outdata, trbuf, f->nwin * sizeof(float));
+#endif
 	scfft_dowindowing(f->outdata, f->nwin, f->nfull, f->log2nwin, f->wintype, f->scalefac);
 }
 
 void scfft_destroy(scfft *f, SCFFT_Allocator & alloc)
 {
-	if (f == NULL)
-		return;
-#if SC_FFT_FFTW
-	fftwf_destroy_plan(f->plan);
-#endif
 	alloc.free(f);
 }
diff --git a/common/scope_buffer.hpp b/common/scope_buffer.hpp
index 5deba28..ce693fc 100644
--- a/common/scope_buffer.hpp
+++ b/common/scope_buffer.hpp
@@ -33,8 +33,8 @@ namespace detail_server_shm {
 using boost::interprocess::offset_ptr;
 using boost::atomic;
 
-struct scope_buffer_writer;
-struct scope_buffer_reader;
+class scope_buffer_writer;
+class scope_buffer_reader;
 
 class scope_buffer_pool
 {
@@ -186,8 +186,10 @@ private:
 	}
 };
 
-struct scope_buffer_writer
+class scope_buffer_writer
 {
+public:
+
 	scope_buffer *buffer;
 
 	scope_buffer_writer( scope_buffer *buffer = 0 ):
diff --git a/common/server_shm.hpp b/common/server_shm.hpp
index 05affaf..5a93c90 100644
--- a/common/server_shm.hpp
+++ b/common/server_shm.hpp
@@ -22,6 +22,7 @@
 
 #include "scope_buffer.hpp"
 
+#include <boost/version.hpp>
 #include <boost/foreach.hpp>
 #include <boost/ref.hpp>
 #include <boost/lexical_cast.hpp>
@@ -43,8 +44,9 @@ static inline string make_shmem_name(unsigned int port_number)
 	return string("SuperColliderServer_") + boost::lexical_cast<string>(port_number);
 }
 
-struct server_shared_memory
+class server_shared_memory
 {
+public:
 	typedef offset_ptr<float> sh_float_ptr;
 	typedef offset_ptr<scope_buffer> scope_buffer_ptr;
 
@@ -71,7 +73,7 @@ struct server_shared_memory
 	{
 		segment.deallocate(control_busses_.get());
 
-		for (int i = 0; i != scope_buffers.size(); ++i)
+		for (size_t i = 0; i != scope_buffers.size(); ++i)
 			segment.deallocate(scope_buffers[i].get());
 	}
 
@@ -107,7 +109,9 @@ public:
 		shmem_name(detail_server_shm::make_shmem_name(port_number)),
 		segment(bi::open_or_create, shmem_name.c_str(), 8192 * 1024)
 	{
+#if (BOOST_VERSION < 105100)
 		segment.flush();
+#endif
 
 		const int num_scope_buffers = 128;
 		size_t scope_pool_size = num_scope_buffers * sizeof(float) * 8192; // pessimize, about 4 MB
@@ -125,9 +129,16 @@ public:
 
 	~server_shared_memory_creator(void)
 	{
+		if (shm)
+			disconnect();
+	}
+
+	void disconnect()
+	{
 		shm->destroy(segment);
 		segment.destroy<server_shared_memory>(shmem_name.c_str());
 		shared_memory_object::remove(shmem_name.c_str());
+		shm = NULL;
 	}
 
 	float * get_control_busses(void)
diff --git a/editors/CMakeLists.txt b/editors/CMakeLists.txt
index 65ab42b..1f730d8 100644
--- a/editors/CMakeLists.txt
+++ b/editors/CMakeLists.txt
@@ -9,6 +9,10 @@ else()
     option(SC_VIM "Build vim-based IDE." OFF)
 endif()
 
+if(SC_IDE)
+	message(STATUS "Building the Qt IDE")
+	add_subdirectory(sc-ide)
+endif()
 
 if(SC_EL)
 	add_subdirectory(scel)
@@ -22,6 +26,3 @@ if(SC_VIM)
 	add_subdirectory(scvim)
 endif()
 
-if(SC_PSYCOLLIDER)
-	add_subdirectory(Psycollider)
-endif()
diff --git a/editors/sc-ide/.kateconfig b/editors/sc-ide/.kateconfig
new file mode 100644
index 0000000..86b4ce5
--- /dev/null
+++ b/editors/sc-ide/.kateconfig
@@ -0,0 +1 @@
+kate: space-indent on; tab-width 4; indent-width 4; replace-tabs on; eol unix;
diff --git a/editors/sc-ide/CMakeLists.txt b/editors/sc-ide/CMakeLists.txt
new file mode 100644
index 0000000..f374ed7
--- /dev/null
+++ b/editors/sc-ide/CMakeLists.txt
@@ -0,0 +1,254 @@
+cmake_minimum_required( VERSION 2.8 )
+
+find_package(Qt4 4.7 REQUIRED QtCore QtGui QtWebKit)
+
+if(${CMAKE_COMPILER_IS_GNUCXX})
+    add_definitions(-Wreorder)
+endif()
+
+if (APPLE)
+  include (${CMAKE_SOURCE_DIR}/cmake_modules/MacAppFolder.cmake)
+  set(ide_name ${scappbundlename})
+else()
+  set(ide_name scide)
+endif()
+
+set ( ide_moc_hdr
+    core/main.hpp
+    core/sig_mux.hpp
+    core/sc_process.hpp
+    core/sc_server.hpp
+    core/doc_manager.hpp
+    core/settings/manager.hpp
+    core/session_manager.hpp
+    widgets/cmd_line.hpp
+    widgets/doc_list.hpp
+    widgets/documents_dialog.hpp
+    widgets/editor_box.hpp
+    widgets/find_replace_tool.hpp
+    widgets/goto_line_tool.hpp
+    widgets/lookup_dialog.hpp
+    widgets/main_window.hpp
+    widgets/multi_editor.hpp
+    widgets/popup_text_input.hpp
+    widgets/post_window.hpp
+    widgets/session_switch_dialog.hpp
+    widgets/sessions_dialog.hpp
+    widgets/tool_box.hpp
+    widgets/help_browser.hpp
+    widgets/code_editor/editor.hpp
+    widgets/code_editor/sc_editor.hpp
+    widgets/code_editor/highlighter.hpp
+    widgets/code_editor/line_indicator.hpp
+    widgets/code_editor/overlay.hpp
+    widgets/code_editor/autocompleter.hpp
+    widgets/settings/dialog.hpp
+    widgets/settings/general_page.hpp
+    widgets/settings/sclang_page.hpp
+    widgets/settings/editor_page.hpp
+    widgets/settings/shortcuts_page.hpp
+    widgets/util/path_chooser_widget.hpp
+    widgets/util/text_format_list_widget.hpp
+    widgets/util/key_sequence_edit.hpp
+    widgets/util/popup_widget.hpp
+    widgets/util/color_widget.hpp
+    widgets/util/docklet.hpp
+
+    ${CMAKE_SOURCE_DIR}/QtCollider/widgets/web_page.hpp
+)
+
+file (GLOB_RECURSE all_hdr *hpp)
+
+set ( ide_src
+    core/main.cpp
+    core/sig_mux.cpp
+    core/doc_manager.cpp
+    core/sc_process.cpp
+    core/sc_server.cpp
+    core/sc_introspection.cpp
+    core/sc_lexer.cpp
+    core/settings/serialization.cpp
+    core/settings/manager.cpp
+    core/session_manager.cpp
+    widgets/cmd_line.cpp
+    widgets/doc_list.cpp
+    widgets/documents_dialog.cpp
+    widgets/editor_box.cpp
+    widgets/find_replace_tool.cpp
+    widgets/lookup_dialog.cpp
+    widgets/main_window.cpp
+    widgets/multi_editor.cpp
+    widgets/post_window.cpp
+    widgets/session_switch_dialog.cpp
+    widgets/help_browser.cpp
+    widgets/code_editor/editor.cpp
+    widgets/code_editor/sc_editor.cpp
+    widgets/code_editor/highlighter.cpp
+    widgets/code_editor/line_indicator.cpp
+    widgets/code_editor/overlay.cpp
+    widgets/code_editor/autocompleter.cpp
+    widgets/settings/dialog.cpp
+    widgets/settings/general_page.cpp
+    widgets/settings/sclang_page.cpp
+    widgets/settings/editor_page.cpp
+    widgets/settings/shortcuts_page.cpp
+    widgets/util/text_format_list_widget.cpp
+    widgets/util/popup_widget.cpp
+    widgets/util/docklet.cpp
+    widgets/style/style.cpp
+
+    ${CMAKE_SOURCE_DIR}/QtCollider/widgets/web_page.cpp
+
+    ${CMAKE_SOURCE_DIR}/common/SC_TextUtils.cpp
+)
+
+set( ide_forms
+    forms/settings_dialog.ui
+    forms/settings_general.ui
+    forms/settings_sclang.ui
+    forms/settings_editor.ui
+    forms/settings_shortcuts.ui
+)
+
+# QtCollider shared sources:
+list(APPEND ide_moc_hdr
+    ${CMAKE_SOURCE_DIR}/QtCollider/layouts/stack_layout.hpp
+)
+list(APPEND ide_src
+    ${CMAKE_SOURCE_DIR}/QtCollider/layouts/stack_layout.cpp
+)
+
+list(APPEND ide_src ${CMAKE_SOURCE_DIR}/common/SC_DirUtils.cpp)
+
+if(APPLE)
+	list(APPEND ide_src ${CMAKE_SOURCE_DIR}/common/SC_StandAloneInfo_Darwin.cpp)
+elseif(WIN32)
+    list(APPEND ide_src ${CMAKE_SOURCE_DIR}/common/SC_Win32Utils.cpp)
+endif()
+
+include_directories(${CMAKE_SOURCE_DIR}/include/common)
+include_directories(${CMAKE_SOURCE_DIR}/include/plugin_interface)
+include_directories(${YAMLCPP_INCLUDE_DIR})
+include_directories(${CMAKE_SOURCE_DIR}/external_libraries/boost)
+# For QtCollider headers:
+include_directories(${CMAKE_SOURCE_DIR})
+# Needed for auto-generated forms headers:
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/widgets/util)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/widgets)
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+# Translation files
+set( translation_src
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_de.ts
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_es.ts
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_fr.ts
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_ja.ts
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_pt.ts
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_ru.ts
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_sl.ts
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_sv.ts
+    ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_zh.ts
+)
+
+# Translation file for source code native language, used only to handle singular/plural forms
+set( native_translation_src ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide.ts )
+
+# A handy target to update translation source files
+add_custom_target( update_ide_translations
+    COMMAND lupdate ${CMAKE_CURRENT_SOURCE_DIR} -ts ${translation_src}
+            -no-obsolete
+    COMMAND lupdate ${CMAKE_CURRENT_SOURCE_DIR} -ts ${native_translation_src}
+            -no-obsolete -pluralonly
+)
+
+include( ${QT_USE_FILE} )
+
+qt4_wrap_cpp( ide_moc_src ${ide_moc_hdr} )
+qt4_wrap_ui( ide_forms_src ${ide_forms} )
+qt4_add_resources( ide_rcc resources.qrc )
+qt4_add_translation( translations ${translation_src} ${native_translation_src} )
+
+set(ide_sources ${ide_src} ${all_hdr} )
+
+set(ide_rc_sources ${ide_moc_src} ${ide_forms_src} ${ide_rcc} ${translations})
+
+if(FINAL_BUILD)
+  CREATE_FINAL_FILE(scide_final.cpp ${ide_sources})
+  add_executable( ${ide_name} MACOSX_BUNDLE scide_final.cpp ${ide_rc_sources} )
+else()
+  add_executable( ${ide_name} MACOSX_BUNDLE ${ide_sources} ${ide_rc_sources} )
+endif()
+
+
+target_link_libraries( ${ide_name} ${QT_LIBRARIES} ${QT_QTNETWORK_LIBRARY} ${YAMLCPP_LIBRARY})
+
+if(APPLE)
+    target_link_libraries( ${ide_name} "-framework CoreServices")
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -F/Library/Frameworks")
+elseif(WIN32)
+    target_link_libraries( ${ide_name} wsock32 )
+    # The following prevents a Windows console from showing up
+    # when the executable is started:
+    set_target_properties( ${ide_name} PROPERTIES WIN32_EXECUTABLE TRUE )
+endif()
+
+if(PTHREADS_FOUND)
+    target_link_libraries(${ide_name} ${PTHREADS_LIBRARIES})
+endif()
+
+if(LTO)
+    set_property(TARGET ${ide_name}
+                 APPEND PROPERTY COMPILE_FLAGS "-flto -flto-report")
+
+    set_property(TARGET ${ide_name}
+                 APPEND PROPERTY LINK_FLAGS "-flto -flto-report -fwhole-program")
+endif()
+
+
+# Installation
+
+if(APPLE)
+    if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+        set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/Install" CACHE PATH "Install path prefix" FORCE)
+    endif()
+
+    # set how it shows up in the Info.plist file
+    SET(MACOSX_BUNDLE_ICON_FILE ../../platform/mac/SCcube.icns)
+
+    install(DIRECTORY ../../platform/mac/Resources/ DESTINATION ${scappauxresourcesdir})
+
+    install(FILES ${translations}
+            DESTINATION ${scappauxresourcesdir}/translations)
+
+    install(TARGETS ${ide_name}
+        DESTINATION ${scappbundlename}
+        )
+
+    # for processing into the plist:
+    set_property(TARGET ${ide_name}
+	    PROPERTY MACOSX_BUNDLE_BUNDLE_NAME ${scappbundlename})
+
+    set(MACOSX_BUNDLE_BUNDLE_NAME "${scappbundlename}")
+
+    include(InstallRequiredSystemLibraries)
+
+    include(DeployQt4)
+    install_qt4_executable("${scappbundlename}/${scappbundlename}.app" "" "" "${CMAKE_BINARY_DIR}/server/scsynth;${CMAKE_BINARY_DIR}/external_libraries")
+
+elseif(WIN32)
+	install(TARGETS ${ide_name}
+			DESTINATION "SuperCollider"
+			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+    install(FILES ${translations}
+            DESTINATION "SuperCollider/translations")
+else()
+	install(TARGETS ${ide_name}
+			RUNTIME DESTINATION "bin"
+			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+    install(FILES ${translations}
+            DESTINATION "share/SuperCollider/translations")
+endif()
+
+if (LINUX)
+   install( PROGRAMS SuperColliderIDE.desktop  DESTINATION "share/applications")
+endif()
diff --git a/editors/sc-ide/SuperColliderIDE.desktop b/editors/sc-ide/SuperColliderIDE.desktop
new file mode 100755
index 0000000..7f8f529
--- /dev/null
+++ b/editors/sc-ide/SuperColliderIDE.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=SuperCollider IDE
+GenericName=SuperCollider IDE
+Exec=scide %f
+Icon=sc_ide
+Type=Application
+Terminal=false
+Patterns=*.scd;*.sc;*.schelp
+Categories=Application;Multimedia;Audio;AudioVideo
+MimeType=text/x-sc;
diff --git a/editors/sc-ide/core/doc_manager.cpp b/editors/sc-ide/core/doc_manager.cpp
new file mode 100644
index 0000000..63b1563
--- /dev/null
+++ b/editors/sc-ide/core/doc_manager.cpp
@@ -0,0 +1,384 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "doc_manager.hpp"
+#include "main.hpp"
+#include "main_window.hpp"
+#include "settings/manager.hpp"
+#include "../widgets/code_editor/highlighter.hpp"
+#include "../../common/SC_TextUtils.hpp"
+
+#include <QPlainTextDocumentLayout>
+#include <QDebug>
+#include <QDir>
+#include <QFile>
+#include <QMessageBox>
+#include <QTextBlock>
+#include <QApplication>
+
+using namespace ScIDE;
+
+Document::Document( bool isPlainText ):
+    mId( QUuid::createUuid().toString().toAscii() ),
+    mDoc( new QTextDocument(this) ),
+    mTitle( tr("Untitled") ),
+    mIndentWidth(4),
+    mHighlighter(NULL)
+{
+    mDoc->setDocumentLayout( new QPlainTextDocumentLayout(mDoc) );
+
+    if (!isPlainText)
+        mHighlighter = new SyntaxHighlighter(mDoc);
+
+    connect( Main::instance(), SIGNAL(applySettingsRequest(Settings::Manager*)),
+             this, SLOT(applySettings(Settings::Manager*)) );
+
+    applySettings( Main::settings() );
+}
+
+void Document::applySettings( Settings::Manager *settings )
+{
+    QFont font = settings->codeFont();
+    int indentWidth = settings->value("IDE/editor/indentWidth").toInt();
+
+    setDefaultFont(font);
+    setIndentWidth(indentWidth);
+}
+
+void Document::deleteTrailingSpaces()
+{
+    QTextCursor cursor (textDocument());
+    cursor.beginEditBlock();
+    cursor.movePosition(QTextCursor::EndOfBlock);
+    QTextDocument * doc = textDocument();
+
+    while( !cursor.atEnd() ) {
+        while( (cursor.block().length() > 1) && doc->characterAt(cursor.position() - 1).isSpace())
+            cursor.deletePreviousChar();
+
+        cursor.movePosition(QTextCursor::NextBlock);
+        cursor.movePosition(QTextCursor::EndOfBlock);
+    }
+    cursor.endEditBlock();
+}
+
+void Document::setDefaultFont( const QFont & font )
+{
+    mDoc->setDefaultFont( font );
+    // update tab stop, since it depends on font:
+    setIndentWidth( mIndentWidth );
+    emit defaultFontChanged();
+}
+
+void Document::resetDefaultFont()
+{
+    Settings::Manager *settings = Main::settings();
+    setDefaultFont( settings->codeFont() );
+}
+
+void Document::setIndentWidth( int numSpaces )
+{
+    mIndentWidth = numSpaces;
+
+    QFontMetricsF fontMetrics( mDoc->defaultFont() );
+    qreal tabStop = fontMetrics.width(' ') * numSpaces;
+
+    QTextOption options = mDoc->defaultTextOption();
+    options.setTabStop(tabStop);
+    mDoc->setDefaultTextOption(options);
+}
+
+
+DocumentManager::DocumentManager( Main *main, Settings::Manager * settings ):
+    QObject(main)
+{
+    connect(&mFsWatcher, SIGNAL(fileChanged(QString)), this, SLOT(onFileChanged(QString)));
+
+    connect(main, SIGNAL(storeSettingsRequest(Settings::Manager*)),
+            this, SLOT(storeSettings(Settings::Manager*)));
+
+    loadRecentDocuments( settings );
+}
+
+Document * DocumentManager::createDocument( bool isPlainText )
+{
+    Document *doc = new Document( isPlainText );
+    mDocHash.insert( doc->id(), doc );
+    return doc;
+}
+
+void DocumentManager::create()
+{
+    Document *doc = createDocument( false );
+
+    Q_EMIT( opened(doc, 0, 0) );
+}
+
+Document *DocumentManager::open( const QString & path, int initialCursorPosition, int selectionLength, bool toRecent )
+{
+    QFileInfo info(path);
+    QString cpath = info.canonicalFilePath();
+    info.setFile(cpath);
+
+    if (cpath.isEmpty()) {
+        MainWindow::instance()->showStatusMessage (
+                    tr("Cannot open file: %1 (file does not exist)").arg(path) );
+        return 0;
+    }
+
+    // Check if file already opened
+    for( DocIterator it = mDocHash.begin(); it != mDocHash.end(); ++it ) {
+        Document *doc = it.value();
+        if(doc->mFilePath == cpath) {
+            Q_EMIT( showRequest(doc, initialCursorPosition, selectionLength) );
+            if (toRecent) addToRecent(doc);
+            return doc;
+        }
+    }
+
+    // Open the file
+    QFile file(cpath);
+    if(!file.open(QIODevice::ReadOnly)) {
+        MainWindow::instance()->showStatusMessage(
+                    tr("Cannot open file for reading: %1").arg(cpath));
+        return 0;
+    }
+    QByteArray bytes( file.readAll() );
+    file.close();
+
+    // strip .rtf
+    bool isRTF = false;
+    QString filePath = cpath;
+    if (info.suffix() == QString("rtf")) {
+        isRTF = true;
+
+        filePath += QString(".scd");
+        int result = rtf2txt(bytes.data());
+        bytes = bytes.left(result);
+        QMessageBox::warning(NULL, QString(tr("Opening RTF File")),
+                             QString(tr("Warning: RTF file will be converted to plain-text scd file.")));
+    }
+
+    closeSingleUntitledIfUnmodified();
+
+    const bool fileIsPlainText = !(info.suffix() == QString("sc") ||
+                                   (info.suffix() == QString("scd")));
+
+    Document *doc = createDocument( fileIsPlainText );
+    doc->mDoc->setPlainText( QString::fromUtf8( bytes.data(), bytes.size() ) );
+    doc->mDoc->setModified(false);
+    doc->mFilePath = filePath;
+    doc->mTitle = info.fileName();
+    doc->mSaveTime = info.lastModified();
+
+    if (!isRTF)
+        mFsWatcher.addPath(cpath);
+
+    Q_EMIT( opened(doc, initialCursorPosition, selectionLength) );
+
+    if (toRecent) this->addToRecent(doc);
+
+    return doc;
+}
+
+bool DocumentManager::reload( Document *doc )
+{
+    Q_ASSERT(doc);
+
+    if (doc->mFilePath.isEmpty())
+        return false;
+
+    QFile file(doc->mFilePath);
+    if(!file.open(QIODevice::ReadOnly)) {
+        MainWindow::instance()->showStatusMessage(
+                    tr("Cannot open file for reading: %1").arg(doc->mFilePath));
+        return false;
+    }
+
+    QByteArray bytes( file.readAll() );
+    file.close();
+
+    doc->mDoc->setPlainText( QString::fromUtf8( bytes.data(), bytes.size() ) );
+    doc->mDoc->setModified(false);
+
+    QFileInfo info(doc->mFilePath);
+    doc->mSaveTime = info.lastModified();
+
+    if (!mFsWatcher.files().contains(doc->mFilePath))
+        mFsWatcher.addPath(doc->mFilePath);
+
+    return true;
+}
+
+void DocumentManager::close( Document *doc )
+{
+    Q_ASSERT(doc);
+
+    if( mDocHash.remove(doc->id()) == 0 ) {
+        qWarning("DocumentManager: trying to close an unmanaged document.");
+        return;
+    }
+
+    if (!doc->mFilePath.isEmpty())
+        mFsWatcher.removePath(doc->mFilePath);
+
+    Q_EMIT( closed(doc) );
+    delete doc;
+}
+
+bool DocumentManager::save( Document *doc )
+{
+    Q_ASSERT(doc);
+
+    return doSaveAs( doc, doc->mFilePath );
+}
+
+bool DocumentManager::saveAs( Document *doc, const QString & path )
+{
+    Q_ASSERT(doc);
+
+    if (path.isEmpty()) {
+        qWarning() << "DocumentManager: the saving path is empty.";
+        return false;
+    }
+
+    bool ok = doSaveAs( doc, path );
+    if (ok)
+        addToRecent(doc);
+    return ok;
+}
+
+bool DocumentManager::doSaveAs( Document *doc, const QString & path )
+{
+    Q_ASSERT(doc);
+
+    doc->deleteTrailingSpaces();
+
+
+    QFile file(path);
+    if(!file.open(QIODevice::WriteOnly)) {
+        qWarning() << "DocumentManager: the file" << path << "could not be opened for writing.";
+        return false;
+    }
+
+    QFileInfo info(path);
+    QString cpath = info.canonicalFilePath();
+
+    const bool pathChanged = ( !(doc->filePath().isEmpty()) && (cpath != doc->filePath()) );
+    if (pathChanged) {
+        mFsWatcher.removePath(doc->filePath());
+
+        QFileInfo oldInfo(doc->mFilePath);
+        if (info.suffix() != oldInfo.suffix()) {
+            QMessageBox::information(MainWindow::instance(), tr("File Extension Changed"),
+                                     tr("The extension of the file has changed. Please reopen file to update editor mode")
+                                     );
+        }
+    }
+
+    if (doc->filePath().isEmpty() && !(info.suffix() == "scd" || info.suffix() == "sc") ) {
+        QMessageBox::information(MainWindow::instance(), tr("File Extension Changed"),
+                                 tr("The extension of the file has changed. Please reopen file to update editor mode")
+                                 );
+    }
+
+    QString str = doc->textDocument()->toPlainText();
+    file.write(str.toUtf8());
+    file.close();
+
+    doc->mFilePath = cpath;
+    doc->mTitle = info.fileName();
+    doc->mDoc->setModified(false);
+    doc->mSaveTime = info.lastModified();
+
+    // Always try to start watching, because the file could have been removed:
+    if (!mFsWatcher.files().contains(cpath))
+        mFsWatcher.addPath(cpath);
+
+    Q_EMIT(saved(doc));
+
+    return true;
+}
+
+void DocumentManager::onFileChanged( const QString & path )
+{
+    DocIterator it;
+    for( it = mDocHash.begin(); it != mDocHash.end(); ++it )
+    {
+        Document *doc = it.value();
+        if (doc->mFilePath == path) {
+            QFileInfo info(doc->mFilePath);
+            if (doc->mSaveTime < info.lastModified()) {
+                doc->mDoc->setModified(true);
+                doc->mSaveTime = info.lastModified();
+                emit changedExternally(doc);
+            }
+        }
+    }
+}
+
+void DocumentManager::addToRecent( Document *doc )
+{
+    const QString &path = doc->mFilePath;
+    int i = mRecent.indexOf(path);
+    if (i != -1)
+        mRecent.move( i, 0 );
+    else {
+        mRecent.prepend(path);
+        if (mRecent.count() > mMaxRecent)
+            mRecent.removeLast();
+    }
+
+    emit recentsChanged();
+}
+
+void DocumentManager::clearRecents()
+{
+    mRecent.clear();
+    emit recentsChanged();
+}
+
+void DocumentManager::loadRecentDocuments( Settings::Manager *settings )
+{
+    QVariantList list = settings->value("IDE/recentDocuments").value<QVariantList>();
+    mRecent.clear();
+    foreach (const QVariant & var, list)
+        mRecent << var.toString();
+}
+
+void DocumentManager::storeSettings( Settings::Manager *settings )
+{
+    QVariantList list;
+    foreach (const QString & path, mRecent)
+        list << QVariant(path);
+
+    settings->setValue("IDE/recentDocuments", QVariant::fromValue<QVariantList>(list));
+}
+
+void DocumentManager::closeSingleUntitledIfUnmodified()
+{
+    QList<Document*> openDocuments = documents();
+
+    if (openDocuments.size() == 1) {
+        Document * document = openDocuments.front();
+        if (document->filePath().isEmpty() && !document->isModified())
+            close(document);
+    }
+}
diff --git a/editors/sc-ide/core/doc_manager.hpp b/editors/sc-ide/core/doc_manager.hpp
new file mode 100644
index 0000000..adf36b2
--- /dev/null
+++ b/editors/sc-ide/core/doc_manager.hpp
@@ -0,0 +1,142 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_DOC_MANAGER_HPP_INCLUDED
+#define SCIDE_DOC_MANAGER_HPP_INCLUDED
+
+#include <QDateTime>
+#include <QFileSystemWatcher>
+#include <QHash>
+#include <QList>
+#include <QMetaType>
+#include <QObject>
+#include <QStringList>
+#include <QTextDocument>
+#include <QPlainTextDocumentLayout>
+#include <QUuid>
+
+namespace ScIDE {
+
+namespace Settings { class Manager; }
+class SyntaxHighlighter;
+
+class Main;
+class DocumentManager;
+
+class Document : public QObject
+{
+    Q_OBJECT
+
+    friend class DocumentManager;
+
+public:
+    Document( bool isPlainText );
+
+    QTextDocument *textDocument() { return mDoc; }
+    const QByteArray & id() { return mId; }
+    const QString & filePath() { return mFilePath; }
+    const QString & title() { return mTitle; }
+
+    QFont defaultFont() const { return mDoc->defaultFont(); }
+    void setDefaultFont( const QFont & font );
+
+    int indentWidth() const { return mIndentWidth; }
+    void setIndentWidth( int numSpaces );
+
+    void deleteTrailingSpaces();
+
+    bool isPlainText() const { return mHighlighter == NULL; }
+    bool isModified() const  { return mDoc->isModified(); }
+
+public slots:
+    void applySettings( Settings::Manager * );
+    void resetDefaultFont();
+
+signals:
+    void defaultFontChanged();
+
+private:
+    QByteArray mId;
+    QTextDocument *mDoc;
+    QString mFilePath;
+    QString mTitle;
+    QDateTime mSaveTime;
+    int mIndentWidth;
+    SyntaxHighlighter * mHighlighter;
+};
+
+class DocumentManager : public QObject
+{
+    Q_OBJECT
+
+public:
+    typedef QList< Document * > DocumentList;
+
+    DocumentManager( Main *, Settings::Manager * );
+    QList<Document*> documents() {
+        return mDocHash.values();
+    }
+
+    void create();
+    void close( Document * );
+    bool save( Document * );
+    bool saveAs( Document *, const QString & path );
+    bool reload( Document * );
+    const QStringList & recents() const { return mRecent; }
+
+public slots:
+    // initialCursorPosition -1 means "don't change position if already open"
+    Document * open( const QString & path, int initialCursorPosition = -1, int selectionLength = 0, bool addToRecent = true );
+    void clearRecents();
+    void storeSettings( Settings::Manager * );
+
+Q_SIGNALS:
+    void opened( Document *, int cursorPosition, int selectionLength );
+    void closed( Document * );
+    void saved( Document * );
+    void showRequest( Document *, int pos = -1, int selectionLength = 0 );
+    void changedExternally( Document * );
+    void recentsChanged();
+
+private slots:
+    void onFileChanged( const QString & path );
+
+private:
+    Document * createDocument( bool isPlainText );
+    bool doSaveAs( Document *, const QString & path );
+    void addToRecent( Document * );
+    void loadRecentDocuments( Settings::Manager * );
+    void closeSingleUntitledIfUnmodified();
+
+
+    typedef QHash<QByteArray, Document*>::iterator DocIterator;
+
+    QHash<QByteArray, Document*> mDocHash;
+    QFileSystemWatcher mFsWatcher;
+
+    QStringList mRecent;
+    static const int mMaxRecent = 10;
+};
+
+} // namespace ScIDE
+
+Q_DECLARE_METATYPE( ScIDE::Document* )
+
+#endif // SCIDE_DOC_MANAGER_HPP_INCLUDED
diff --git a/editors/sc-ide/core/main.cpp b/editors/sc-ide/core/main.cpp
new file mode 100644
index 0000000..41e28ff
--- /dev/null
+++ b/editors/sc-ide/core/main.cpp
@@ -0,0 +1,326 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "main.hpp"
+#include "settings/manager.hpp"
+#include "session_manager.hpp"
+#include "../widgets/main_window.hpp"
+#include "../widgets/help_browser.hpp"
+#include "../widgets/lookup_dialog.hpp"
+#include "../widgets/code_editor/highlighter.hpp"
+#include "../widgets/style/style.hpp"
+
+#include "SC_DirUtils.h"
+
+#include "yaml-cpp/node.h"
+#include "yaml-cpp/parser.h"
+
+#include <QAction>
+#include <QApplication>
+#include <QBuffer>
+#include <QDataStream>
+#include <QDir>
+#include <QFileOpenEvent>
+#include <QLibraryInfo>
+#include <QTranslator>
+#include <QDebug>
+
+using namespace ScIDE;
+
+int main( int argc, char *argv[] )
+{
+    QApplication app(argc, argv);
+
+    QStringList arguments (QApplication::arguments());
+    arguments.pop_front(); // application path
+
+    // Pass files to existing instance and quit
+
+    SingleInstanceGuard guard;
+    if (guard.tryConnect(arguments))
+        return 0;
+
+    // Set up translations
+
+    QTranslator qtTranslator;
+    qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+    app.installTranslator(&qtTranslator);
+
+    char resourcePath[PATH_MAX];
+    sc_GetResourceDirectory(resourcePath, PATH_MAX);
+    QString ideTranslationPath = QString(resourcePath) + "/translations";
+
+    bool translationLoaded;
+
+    // Load fallback translator that only handles plural forms in English
+    QTranslator fallbackTranslator;
+    translationLoaded = fallbackTranslator.load( "scide", ideTranslationPath );
+    app.installTranslator(&fallbackTranslator);
+    if (!translationLoaded)
+        qWarning("scide warning: Failed to load fallback translation file.");
+
+    // Load translator for locale
+    QString ideTranslationFile = "scide_" + QLocale::system().name();
+    QTranslator scideTranslator;
+    scideTranslator.load( ideTranslationFile, ideTranslationPath );
+    app.installTranslator(&scideTranslator);
+
+    // Set up style
+
+    app.setStyle( new ScIDE::Style(app.style()) );
+
+    // Go...
+
+    Main * main = Main::instance();
+
+    MainWindow *win = new MainWindow(main);
+
+    // NOTE: load session after GUI is created, so that GUI can respond
+    Settings::Manager *settings = main->settings();
+    SessionManager *sessions = main->sessionManager();
+
+    // NOTE: window has to be shown before restoring its geometry,
+    // or else restoring maximized state will fail, if it has ever before
+    // been saved un-maximized.
+    win->show();
+
+    QString startSessionName = settings->value("IDE/startWithSession").toString();
+    if (startSessionName == "last") {
+        QString lastSession = sessions->lastSession();
+        if (!lastSession.isEmpty()) {
+            sessions->openSession(lastSession);
+        }
+    }
+    else if (!startSessionName.isEmpty()) {
+        sessions->openSession(startSessionName);
+    }
+
+    if (!sessions->currentSession()) {
+        win->restoreWindowState();
+        sessions->newSession();
+    }
+
+    foreach (QString argument, arguments) {
+        main->documentManager()->open(argument);
+    }
+
+    bool startInterpreter = settings->value("IDE/interpreter/autoStart").toBool();
+    if (startInterpreter)
+        main->scProcess()->startLanguage();
+
+    return app.exec();
+}
+
+
+bool SingleInstanceGuard::tryConnect(QStringList const & arguments)
+{
+    const int maxNumberOfInstances = 128;
+    if (!arguments.empty()) {
+        for (int socketID = 0; socketID != maxNumberOfInstances; ++socketID) {
+            QString serverName = QString("SuperColliderIDE_Singleton_%1").arg(socketID);
+            QSharedPointer<QLocalSocket> socket (new QLocalSocket(this));
+            socket->connectToServer(serverName);
+
+            QStringList canonicalArguments;
+            foreach (QString path, arguments) {
+                QFileInfo info(path);
+                canonicalArguments << info.canonicalFilePath();
+            }
+
+            if (socket->waitForConnected(200)) {
+                QDataStream stream(socket.data());
+                stream.setVersion(QDataStream::Qt_4_6);
+
+                stream << QString("open");
+                stream << canonicalArguments;
+                if (!socket->waitForBytesWritten(300))
+                    qWarning("SingleInstanceGuard: writing data to another IDE instance timed out");
+
+                return true;
+            }
+        }
+    }
+
+    mIpcServer = new QLocalServer(this);
+    for (int socketID = 0; socketID != maxNumberOfInstances; ++socketID) {
+        QString serverName = QString("SuperColliderIDE_Singleton_%1").arg(socketID);
+
+        bool listening = mIpcServer->listen(serverName);
+        if (listening) {
+            connect(mIpcServer, SIGNAL(newConnection()), this, SLOT(onNewIpcConnection()));
+            return false;
+        }
+    }
+    return false;
+}
+
+void SingleInstanceGuard::onIpcData()
+{
+    QByteArray ipcData = mIpcSocket->readAll();
+
+    QBuffer receivedData ( &ipcData );
+    receivedData.open ( QIODevice::ReadOnly );
+
+    QDataStream in ( &receivedData );
+    in.setVersion ( QDataStream::Qt_4_6 );
+    QString id;
+    in >> id;
+    if ( in.status() != QDataStream::Ok )
+        return;
+
+    QStringList message;
+    in >> message;
+    if ( in.status() != QDataStream::Ok )
+        return;
+
+    if (id == QString("open")) {
+        foreach (QString path, message)
+            Main::documentManager()->open(path);
+    }
+}
+
+
+static QString getSettingsFile()
+{
+    char config_dir[PATH_MAX];
+    sc_GetUserConfigDirectory(config_dir, PATH_MAX);
+    return QString(config_dir) + SC_PATH_DELIMITER + "sc_ide_conf.yaml";
+}
+
+// NOTE: mSettings must be the first to initialize,
+// because other members use it!
+
+Main::Main(void) :
+    mSettings( new Settings::Manager( getSettingsFile(), this ) ),
+    mScProcess( new ScProcess(mSettings, this) ),
+    mScServer( new ScServer(mScProcess, mSettings, this) ),
+    mDocManager( new DocumentManager(this, mSettings) ),
+    mSessionManager( new SessionManager(mDocManager, this) )
+{
+    new SyntaxHighlighterGlobals(this, mSettings);
+
+    connect(mScProcess, SIGNAL(response(QString,QString)), this, SLOT(onScLangResponse(QString,QString)));
+
+    qApp->installEventFilter(this);
+}
+
+void Main::quit() {
+    mSessionManager->saveSession();
+    storeSettings();
+    QApplication::quit();
+}
+
+bool Main::eventFilter(QObject *object, QEvent *event)
+{
+    switch (event->type()) {
+    case QEvent::FileOpen:
+    {
+        // open the file dragged onto the application icon on Mac
+        QFileOpenEvent *openEvent = static_cast<QFileOpenEvent*>(event);
+        mDocManager->open(openEvent->file());
+        return true;
+    }
+
+    case QEvent::MouseMove:
+        QApplication::restoreOverrideCursor();
+        break;
+
+    default:
+        break;
+    }
+
+    return QObject::eventFilter(object, event);
+}
+
+bool Main::openDocumentation(const QString & string)
+{
+    QString symbol = string.trimmed();
+    if (symbol.isEmpty())
+        return false;
+
+    HelpBrowserDocklet *helpDock = MainWindow::instance()->helpBrowserDocklet();
+    helpDock->browser()->gotoHelpFor(symbol);
+    helpDock->raiseAndFocus();
+    return true;
+}
+
+bool Main::openDocumentationForMethod(const QString & className, const QString & methodName)
+{
+    HelpBrowserDocklet *helpDock = MainWindow::instance()->helpBrowserDocklet();
+    helpDock->browser()->gotoHelpForMethod(className, methodName);
+    helpDock->raiseAndFocus();
+    return true;
+}
+
+void Main::openDefinition(const QString &string, QWidget * parent)
+{
+    QString definitionString = string.trimmed();
+    if (definitionString.isEmpty())
+        return;
+
+    LookupDialog dialog(parent);
+    dialog.query(definitionString);
+    dialog.exec();
+}
+
+void Main::findReferences(const QString &string, QWidget * parent)
+{
+    QString definitionString = string.trimmed();
+    if (definitionString.isEmpty())
+        return;
+
+    ReferencesDialog dialog(parent);
+    dialog.query(definitionString);
+    dialog.exec();
+}
+
+void Main::onScLangResponse( const QString & selector, const QString & data )
+{
+    static QString openFileSelector("openFile");
+
+    if (selector == openFileSelector)
+        handleOpenFileScRequest(data);
+}
+
+void Main::handleOpenFileScRequest( const QString & data )
+{
+    std::stringstream stream;
+    stream << data.toStdString();
+    YAML::Parser parser(stream);
+
+    YAML::Node doc;
+    if (parser.GetNextDocument(doc)) {
+        if (doc.Type() != YAML::NodeType::Sequence)
+            return;
+
+        std::string path;
+        bool success = doc[0].Read(path);
+        if (!success)
+            return;
+
+        int position = 0;
+        doc[1].Read(position);
+
+        int selectionLength = 0;
+        doc[2].Read(selectionLength);
+
+        mDocManager->open(QString(path.c_str()), position, selectionLength);
+    }
+}
diff --git a/editors/sc-ide/core/main.hpp b/editors/sc-ide/core/main.hpp
new file mode 100644
index 0000000..b9106e1
--- /dev/null
+++ b/editors/sc-ide/core/main.hpp
@@ -0,0 +1,125 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_MAIN_HPP_INCLUDED
+#define SCIDE_MAIN_HPP_INCLUDED
+
+#include <QAction>
+#include <QObject>
+
+#include <QtNetwork/QLocalSocket>
+#include <QtNetwork/QLocalServer>
+
+#include "sc_process.hpp"
+#include "sc_server.hpp"
+#include "doc_manager.hpp"
+#include "settings/manager.hpp"
+
+namespace ScIDE {
+
+class SessionManager;
+
+// scide instances have a LocalServer. when called with an argument, it will try to reconnect
+// to the instance with the lowest number.
+class SingleInstanceGuard:
+    public QObject
+{
+    Q_OBJECT
+
+public:
+    bool tryConnect(QStringList const & arguments);
+
+public Q_SLOTS:
+    void onNewIpcConnection()
+    {
+        mIpcSocket = mIpcServer->nextPendingConnection();
+        connect(mIpcSocket, SIGNAL(disconnected()), mIpcSocket, SLOT(deleteLater()));
+        connect(mIpcSocket, SIGNAL(readyRead()), this, SLOT(onIpcData()));
+    }
+
+    void onIpcData();
+
+private:
+    QLocalServer * mIpcServer;
+    QLocalSocket * mIpcSocket;
+};
+
+class Main:
+    public QObject
+{
+    Q_OBJECT
+
+public:
+    static Main * instance(void)
+    {
+        static Main * singleton = new Main;
+        return singleton;
+    }
+
+    static ScProcess * scProcess()             { return instance()->mScProcess;      }
+    static ScServer  * scServer()              { return instance()->mScServer;       }
+    static SessionManager * sessionManager()   { return instance()->mSessionManager; }
+    static DocumentManager * documentManager() { return instance()->mDocManager;     }
+    static Settings::Manager *settings()       { return instance()->mSettings;       }
+
+    static void evaluateCode(QString const & text, bool silent = false)
+    {
+        instance()->scProcess()->evaluateCode(text, silent);
+    }
+
+    static bool openDocumentation(const QString & string);
+    static bool openDocumentationForMethod(const QString & className, const QString & methodName);
+    static void openDefinition(const QString &string, QWidget * parent);
+    static void findReferences(const QString &string, QWidget * parent);
+
+public Q_SLOTS:
+    void storeSettings() {
+        Q_EMIT(storeSettingsRequest(mSettings));
+        mSettings->sync();
+    }
+
+    void applySettings() {
+        Q_EMIT(applySettingsRequest(mSettings));
+    }
+
+    void quit();
+
+Q_SIGNALS:
+    void storeSettingsRequest(Settings::Manager *);
+    void applySettingsRequest(Settings::Manager *);
+
+private slots:
+    void onScLangResponse( const QString &, const QString & );
+
+private:
+    Main(void);
+    bool eventFilter(QObject *obj, QEvent *event);
+    void handleOpenFileScRequest( const QString & data );
+
+    Settings::Manager *mSettings;
+    ScProcess * mScProcess;
+    ScServer * mScServer;
+    DocumentManager *mDocManager;
+    SessionManager *mSessionManager;
+};
+
+}
+
+#endif
diff --git a/editors/sc-ide/core/sc_introspection.cpp b/editors/sc-ide/core/sc_introspection.cpp
new file mode 100644
index 0000000..3e0643b
--- /dev/null
+++ b/editors/sc-ide/core/sc_introspection.cpp
@@ -0,0 +1,342 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "sc_introspection.hpp"
+
+#include "../common/SC_DirUtils.h"
+#include "../widgets/main_window.hpp"
+
+#include "yaml-cpp/node.h"
+#include "yaml-cpp/parser.h"
+
+#include <cassert>
+
+#include <QDebug>
+#include <QHash>
+#include <QObject>
+
+namespace ScIDE {
+namespace ScLanguage {
+
+Introspection::Introspection()
+{
+    initPaths();
+}
+
+Introspection::Introspection( QString const & yamlString )
+{
+    initPaths();
+    bool parsingSuccessful = parse(yamlString);
+    if (!parsingSuccessful)
+        throw std::runtime_error("Introspection parse error");
+}
+
+void Introspection::initPaths()
+{
+    char userExtensionDir[PATH_MAX];
+    sc_GetUserExtensionDirectory(userExtensionDir, PATH_MAX);
+    mUserExtensionDir = QString(userExtensionDir) + QString("/");
+
+    char systemExtensionDir[PATH_MAX];
+    sc_GetSystemExtensionDirectory(systemExtensionDir, PATH_MAX);
+    mSystemExtensionDir = QString(systemExtensionDir) + QString("/");
+}
+
+Introspection::~Introspection()
+{
+    clear();
+}
+
+struct IndirectMethodCompare
+{
+    bool operator()(Method * lhs, Method * rhs) const
+    {
+        return lhs->name.get() < rhs->name.get();
+    }
+};
+
+bool Introspection::parse(const QString & yamlString )
+{
+    using std::make_pair;
+
+    clear();
+
+    //qDebug("parsing introspection...");
+
+    std::stringstream stream;
+    stream << yamlString.toStdString();
+    YAML::Parser parser(stream);
+
+    YAML::Node doc;
+    if(!parser.GetNextDocument(doc)) {
+        MainWindow::instance()->showStatusMessage("no YAML document");
+        return false;
+    }
+
+    assert (doc.Type() == YAML::NodeType::Sequence);
+    for (YAML::Iterator it = doc.begin(); it != doc.end(); ++it)
+    {
+        assert(it->Type() == YAML::NodeType::Sequence);
+        QString name = (*it)[0].to<std::string>().c_str();
+        Class *klass = new Class;
+        klass->name = name;
+        mClassMap.insert(make_pair(klass->name, QSharedPointer<Class>(klass)));
+    }
+
+    for (YAML::Iterator docIterator = doc.begin(); docIterator != doc.end(); ++docIterator)
+    {
+        const YAML::Node & node = *docIterator;
+        QString name = node[0].to<std::string>().c_str();
+        ClassMap::iterator it = mClassMap.find(name);
+        assert(it != mClassMap.end());
+        Class *klass = it->second.data();
+
+        //qDebug() << klass->name;
+
+        ClassMap::iterator class_it;
+
+        QString metaClassName = node[1].to<std::string>().c_str();
+        class_it = mClassMap.find(metaClassName);
+        assert(class_it != mClassMap.end());
+        klass->metaClass = class_it->second.data();
+
+        if (node[2].Read(YAML::Null))
+            klass->superClass = 0;
+        else {
+            QString superClassName = node[2].to<std::string>().c_str();
+            class_it = mClassMap.find(superClassName);
+            assert(class_it != mClassMap.end());
+            klass->superClass = class_it->second.data();
+        }
+
+        klass->definition.path = node[3].to<std::string>().c_str();
+        klass->definition.position = node[4].to<int>();
+
+        const YAML::Node &methodSeq = node[5];
+        if (methodSeq.Type() != YAML::NodeType::Sequence)
+            continue;
+
+        //assert(methodSeq.Type() == YAML::NodeType::Sequence);
+        for (YAML::Iterator mit = methodSeq.begin(); mit != methodSeq.end(); ++mit)
+        {
+            const YAML::Node &methodNode = *mit;
+            assert(methodNode.Type() == YAML::NodeType::Sequence);
+            assert(methodNode.size() >= 2);
+
+            assert(methodNode[0].Type() == YAML::NodeType::Scalar);
+            assert(methodNode[1].Type() == YAML::NodeType::Scalar);
+
+            Method *method = new Method;
+            method->ownerClass = klass;
+            method->name = methodNode[1].to<std::string>().c_str();
+            method->definition.path = methodNode[2].to<std::string>().c_str();
+            method->definition.position = methodNode[3].to<int>();
+
+            //qDebug() << "--" << method->name;
+
+            const YAML::Node &argNode = methodNode[4];
+            assert(argNode.Type() == YAML::NodeType::Sequence);
+            YAML::Iterator arg = argNode.begin();
+            while (arg != argNode.end())
+            {
+                Argument argument;
+
+                // get arg name
+                assert(arg->Type() == YAML::NodeType::Scalar);
+                argument.name = arg->to<std::string>().c_str();
+
+                //qDebug() << "---# " << argument.name;
+
+                // get arg default value
+                ++arg;
+                if (arg == argNode.end())
+                    break;
+                if(!arg->Read(YAML::Null)) {
+                    assert(arg->Type() == YAML::NodeType::Scalar);
+                    argument.defaultValue = arg->to<std::string>().c_str();
+                }
+
+                method->arguments.append(argument);
+
+                // next arg
+                ++arg;
+            }
+
+            klass->methods.append(method);
+            mMethodMap.insert(make_pair(method->name, QSharedPointer<Method>(method)));
+        }
+
+        qSort(klass->methods.begin(), klass->methods.end(), IndirectMethodCompare());
+    }
+
+    inferClassLibraryPath();
+
+    //qDebug("done parsing introspection.");
+    return true;
+}
+
+QString Introspection::compactLibraryPath(QString const & path) const
+{
+    if (path.startsWith(mClassLibraryPath))
+        return path.mid(mClassLibraryPath.length());
+
+    if (path.startsWith(mUserExtensionDir))
+        return QString("Extensions/") + path.mid(mUserExtensionDir.length());
+
+    if (path.startsWith(mSystemExtensionDir))
+        return QString("Extensions/") + path.mid(mSystemExtensionDir.length());
+
+    return path;
+}
+
+void Introspection::inferClassLibraryPath()
+{
+    ClassMap::const_iterator object_class_it = mClassMap.find("Object");
+    assert(object_class_it != mClassMap.end());
+    Class *objectClass = object_class_it->second.data();
+
+    QString classLibPath = objectClass->definition.path;
+    int len = classLibPath.lastIndexOf("Common");
+    if (len != -1)
+        classLibPath.truncate(len);
+    else
+        classLibPath.clear();
+
+    mClassLibraryPath = classLibPath;
+}
+
+bool Introspection::ensureIntrospectionData() const
+{
+    if (!introspectionAvailable()) {
+        MainWindow::instance()->showStatusMessage(
+                    QObject::tr("Sclang Introspection not available, yet!"));
+        return false;
+    } else
+        return true;
+}
+
+const Class * Introspection::findClass(const QString &className) const
+{
+    if (!ensureIntrospectionData())
+        return NULL;
+
+    ClassMap::const_iterator klass_it = mClassMap.find(className);
+    if (klass_it == mClassMap.end()) {
+        MainWindow::instance()->showStatusMessage(
+                    QObject::tr("Class not defined!"));
+        return NULL;
+    }
+    return klass_it->second.data();
+}
+
+std::vector<const Class*> Introspection::findClassPartial(const QString & partialClassName) const
+{
+    std::vector<const Class*> matchingClasses;
+    if (!ensureIntrospectionData())
+        return matchingClasses;
+
+    typedef ClassMap::const_iterator class_iterator;
+
+    for (class_iterator it = mClassMap.begin(); it != mClassMap.end(); ++it) {
+        QString const & key = it->first;
+        if (key.contains(partialClassName, Qt::CaseInsensitive)) {
+            if (!key.startsWith("Meta_"))
+                matchingClasses.push_back(it->second.data());
+        }
+    }
+
+    return matchingClasses;
+}
+
+
+std::vector<const Method*> Introspection::findMethodPartial(const QString & partialMethodName) const
+{
+    std::vector<const Method*> matchingMethods;
+    if (!ensureIntrospectionData())
+        return matchingMethods;
+
+    typedef MethodMap::const_iterator class_iterator;
+
+    for (class_iterator it = mMethodMap.begin(); it != mMethodMap.end(); ++it) {
+        QString const & key = it->first;
+        if (key.contains(partialMethodName, Qt::CaseInsensitive))
+            matchingMethods.push_back(it->second.data());
+    }
+
+    return matchingMethods;
+}
+
+Introspection::ClassMethodMap Introspection::constructMethodMap(const Class * klass) const
+{
+    ClassMethodMap methodMap;
+    if (!klass)
+        return methodMap;
+
+    foreach (Method *method, klass->metaClass->methods) {
+        QList<Method*> & list = methodMap[method->definition.path];
+        list.append(method);
+    }
+
+    foreach (Method *method, klass->methods) {
+        QList<Method*> & list = methodMap[method->definition.path];
+        list.append(method);
+    }
+    return methodMap;
+}
+
+QString Method::signature( SignatureStyle style ) const
+{
+    QString sig = ownerClass->name.get();
+    if (sig.startsWith("Meta_")) {
+        sig.remove(0, 5);
+        sig.append(": *");
+    }
+    else
+        sig.append(": ");
+
+    sig.append(name.get());
+
+    if (style == SignatureWithoutArguments)
+        return sig;
+
+    int argc = arguments.count();
+    if (argc) {
+        sig.append(" (");
+        for( int i = 0; i < argc; ++i )
+        {
+            const Argument & arg = arguments[i];
+            if (i > 0)
+                sig.append(", ");
+            sig.append(arg.name);
+            if (style == SignatureWithArgumentsAndDefaultValues && !arg.defaultValue.get().isEmpty()) {
+                sig.append(" = ");
+                sig.append(arg.defaultValue);
+            }
+        }
+        sig.append(")");
+    }
+    else if (name.get().endsWith('_'))
+        sig.append(" (value)");
+
+    return sig;
+}
+
+} // namespace ScLanguage
+} // namespace ScIDE
diff --git a/editors/sc-ide/core/sc_introspection.hpp b/editors/sc-ide/core/sc_introspection.hpp
new file mode 100644
index 0000000..15f770e
--- /dev/null
+++ b/editors/sc-ide/core/sc_introspection.hpp
@@ -0,0 +1,177 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_CORE_SC_INTROSPECTION_HPP_INCLUDED
+#define SCIDE_CORE_SC_INTROSPECTION_HPP_INCLUDED
+
+#include <QHash>
+#include <QList>
+#include <QMap>
+#include <QMetaType>
+#include <QSharedPointer>
+#include <QString>
+#include <QVector>
+
+#include <string>
+#include <map>
+
+#include <boost/flyweight.hpp>
+
+
+static inline std::size_t hash_value(QString const& b)
+{
+    return qHash(b);
+}
+
+namespace ScIDE {
+namespace ScLanguage {
+
+typedef boost::flyweight<QString> FlyweightString;
+
+typedef std::map<QString, QSharedPointer<class Class> > ClassMap;
+typedef std::multimap<QString, QSharedPointer<class Method> > MethodMap;
+typedef QVector<class Argument> ArgumentVector;
+typedef QVector<class Method*> MethodVector;
+
+struct Argument {
+    FlyweightString name;
+    FlyweightString defaultValue;
+};
+
+struct Class {
+    FlyweightString name;
+    Class *metaClass;
+    Class *superClass;
+    MethodVector methods;
+    struct {
+        FlyweightString path;
+        int position;
+    } definition;
+
+    bool isSubclassOf(const Class * parentClass) const
+    {
+        if (superClass == parentClass)
+            return true;
+
+        if (superClass == NULL)
+            return false;
+
+        return superClass->isSubclassOf(parentClass);
+    }
+};
+
+struct Method {
+    enum SignatureStyle {
+        SignatureWithoutArguments,
+        SignatureWithArguments,
+        SignatureWithArgumentsAndDefaultValues
+    };
+
+    QString signature( SignatureStyle style ) const;
+
+    Class *ownerClass;
+    FlyweightString name;
+    ArgumentVector arguments;
+    struct {
+        FlyweightString path;
+        int position;
+    } definition;
+};
+
+static inline QString makeFullMethodName(QString const & className, QString const & methodName)
+{
+    QString ret (className);
+    if (ret.startsWith("Meta_")) {
+        ret.remove(0, 5);
+        ret.append("-*");
+    } else
+        ret.append("-");
+    ret.append(methodName);
+    return ret;
+}
+
+class Introspection
+{
+public:
+    Introspection();
+    Introspection( QString const & yamlString );
+    ~Introspection();
+
+    typedef QMap< QString, QList<Method*> > ClassMethodMap; // maps Path to List of Methods
+
+    const ClassMap & classMap() const { return mClassMap; }
+    const MethodMap & methodMap() const { return mMethodMap; }
+
+    const Class * findClass( QString const & className ) const;
+    std::vector<const Class *> findClassPartial(const QString &partialClassName) const;
+    std::vector<const Method *> findMethodPartial(const QString &partialMethodName) const;
+
+    ClassMethodMap constructMethodMap( const Class * klass ) const;
+    ClassMethodMap constructMethodMap( QString const & className ) const
+    {
+        return constructMethodMap(findClass(className));
+    }
+
+    QString const & classLibraryPath() const
+    {
+        return mClassLibraryPath;
+    }
+
+    // remove class library path, userExtensionDir and systemExtensionDir
+    QString compactLibraryPath(QString const & path) const;
+
+    bool isClassMethod (const Method * method) const
+    {
+        return (method->ownerClass->name.get().startsWith("Meta_"));
+    }
+
+    bool introspectionAvailable() const
+    {
+        return !mClassMap.empty();
+    }
+
+private:
+    void initPaths();
+    bool parse(const QString & yamlString );
+    void inferClassLibraryPath();
+    bool ensureIntrospectionData() const;
+
+    void clear()
+    {
+        mClassMap.clear();
+        mMethodMap.clear();
+        mClassLibraryPath.clear();
+    }
+
+    ClassMap mClassMap;
+    MethodMap mMethodMap;
+    QString mClassLibraryPath;
+    QString mUserExtensionDir;
+    QString mSystemExtensionDir;
+};
+
+} // namespace ScLanguage
+
+} // namespace ScIDE
+
+Q_DECLARE_METATYPE(ScIDE::ScLanguage::Class*)
+Q_DECLARE_METATYPE(const ScIDE::ScLanguage::Method*)
+
+#endif // SCIDE_CORE_SC_INTROSPECTION_HPP_INCLUDED
diff --git a/editors/sc-ide/core/sc_lexer.cpp b/editors/sc-ide/core/sc_lexer.cpp
new file mode 100644
index 0000000..b974460
--- /dev/null
+++ b/editors/sc-ide/core/sc_lexer.cpp
@@ -0,0 +1,303 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "sc_lexer.hpp"
+#include <QDebug>
+
+namespace ScIDE {
+
+QVector<ScLexer::LexicalRule> ScLexer::mLexicalRules;
+
+void ScLexer::initLexicalRules()
+{
+    /* NOTE:
+
+    The lexical analysis algorithm demands that all regexps
+    start with a caret "^", to only match at beginning of string.
+
+    Order is important:
+    -- floatRegexp is subset of radixFloatRegex -> must come later
+    -- classRegexp and primitiveRegexp are subsets of symbolArgRegexp -> must come later
+
+    */
+
+    mLexicalRules << LexicalRule( Token::WhiteSpace, "^\\s+" );
+
+    initKeywordsRules();
+    initBuiltinsRules();
+
+    mLexicalRules << LexicalRule( Token::SymbolArg, "^\\b[A-Za-z_]\\w*\\:" );
+
+    mLexicalRules << LexicalRule( Token::Name, "^[a-z]\\w*" );
+
+    mLexicalRules << LexicalRule( Token::Class, "^\\b[A-Z]\\w*" );
+
+    mLexicalRules << LexicalRule( Token::Primitive, "^\\b_\\w+" );
+
+    mLexicalRules << LexicalRule( Token::Symbol, "^\\\\\\w*" );
+
+    mLexicalRules << LexicalRule( Token::Char, "^\\$\\\\?." );
+
+    mLexicalRules << LexicalRule( Token::EnvVar, "^~\\w+" );
+
+    mLexicalRules << LexicalRule( Token::RadixFloat, "^\\b\\d+r[0-9a-zA-Z]*(\\.[0-9A-Z]*)?" );
+
+    // do not include leading "-" in Float, as left-to-right algorithm does
+    // not know whether it is not rather a binary operator
+    mLexicalRules << LexicalRule( Token::Float, "^\\b((\\d+(\\.\\d+)?([eE][-+]?\\d+)?(pi)?)|pi)" );
+
+    mLexicalRules << LexicalRule( Token::HexInt, "^\\b0(x|X)(\\d|[a-f]|[A-F])+" );
+
+    mLexicalRules << LexicalRule( Token::SingleLineComment, "^//[^\r\n]*" );
+
+    mLexicalRules << LexicalRule( Token::MultiLineCommentStart, "^/\\*" );
+
+    mLexicalRules << LexicalRule( Token::Operator, "^[\\+-\\*/&\\|\\^%<>=]+" );
+}
+
+void ScLexer::initKeywordsRules()
+{
+    QStringList keywords;
+    keywords << "arg"
+             << "classvar"
+             << "const"
+             << "super"
+             << "this"
+             << "var";
+
+    QString keywordPattern = QString("^\\b(%1)\\b").arg(keywords.join("|"));
+    mLexicalRules << LexicalRule(Token::Keyword, keywordPattern);
+}
+
+void ScLexer::initBuiltinsRules()
+{
+    QStringList builtins;
+    builtins << "false"
+             << "inf"
+             << "nil"
+             << "true"
+             << "thisFunction"
+             << "thisFunctionDef"
+             << "thisMethod"
+             << "thisProcess"
+             << "thisThread"
+             << "currentEnvironment"
+             << "topEnvironment"
+                ;
+
+    QString builtinsPattern = QString("^\\b(%1)\\b").arg(builtins.join("|"));
+    mLexicalRules << LexicalRule(Token::Builtin, builtinsPattern);
+}
+
+Token::Type ScLexer::nextToken ( int & lengthResult )
+{
+    Q_ASSERT(mOffset < mText.size());
+
+    switch(mState) {
+    case InCode:
+        return nextTokenInCode(lengthResult);
+    case InString:
+        return nextTokenInString(lengthResult);
+    case InSymbol:
+        return nextTokenInSymbol(lengthResult);
+    default:
+        if (mState >= InComment)
+            return nextTokenInComment(lengthResult);
+    }
+
+    lengthResult = 0;
+    return Token::Unknown;
+}
+
+Token::Type ScLexer::nextTokenInCode( int & lengthResult )
+{
+    static QString openingBrackets("({[");
+    static QString closingBrackets(")}]");
+    static QChar stringMark('\"');
+    static QChar symbolMark('\'');
+
+    QChar currentChar = mText[mOffset];
+
+    Token::Type type = Token::Unknown;
+    int length = 1;
+
+    if (currentChar == stringMark) {
+        type = Token::StringMark;
+        mState = InString;
+    }
+    else if (currentChar == symbolMark) {
+        type = Token::SymbolMark;
+        if (mOffset + 1 < mText.size()) // line break ends a symbol
+            mState = InSymbol;
+    }
+    else if (openingBrackets.contains(currentChar)) {
+        type = Token::OpeningBracket;
+    }
+    else if (closingBrackets.contains(currentChar)) {
+        type = Token::ClosingBracket;
+    }
+    else {
+        QVector<LexicalRule>::const_iterator it  = mLexicalRules.constBegin();
+        QVector<LexicalRule>::const_iterator end = mLexicalRules.constEnd();
+
+        for (; it != end; ++it) {
+            LexicalRule const & rule = *it;
+            int matchIndex = rule.expr.indexIn(mText, mOffset, QRegExp::CaretAtOffset);
+            // a guard to ensure all regexps match only at beginning of string:
+            Q_ASSERT(matchIndex <= mOffset);
+            if (matchIndex != -1) {
+                type = rule.type;
+                length = rule.expr.matchedLength();
+                break;
+            }
+        }
+
+        if (type == Token::MultiLineCommentStart)
+            mState = InComment;
+    }
+
+    length = qMax( length, 1 ); // process at least 1 char
+    mOffset += length;
+
+    lengthResult = length;
+    return type;
+}
+
+Token::Type ScLexer::nextTokenInString( int & length )
+{
+    // TODO: Provide simple tokenization by word delimiters
+
+    static QChar stringMark('"');
+    static QChar escapeChar('\\');
+
+    length = 0;
+    Token::Type type = Token::Unknown;
+
+    int textLength = mText.length();
+    while (mOffset < textLength)
+    {
+        QChar chr = mText[mOffset];
+        ++mOffset;
+        if (chr == escapeChar) {
+            ++mOffset;
+        }
+        else if (chr == stringMark) {
+            length = 1;
+            type = Token::StringMark;
+            mState = InCode;
+            break;
+        }
+    }
+
+    mOffset = qMin(mOffset, textLength);
+    return type;
+}
+
+Token::Type ScLexer::nextTokenInSymbol( int & length )
+{
+    // TODO: Provide simple tokenization by word delimiters
+
+    static QChar symbolMark('\'');
+    static QChar escapeChar('\\');
+
+    length = 0;
+    Token::Type type = Token::Unknown;
+
+    int textLength = mText.length();
+    while (mOffset < textLength)
+    {
+        QChar chr = mText[mOffset];
+        ++mOffset;
+        if (chr == escapeChar) {
+            ++mOffset;
+        }
+        else if (chr == symbolMark) {
+            length = 1;
+            type = Token::SymbolMark;
+            break;
+        }
+    }
+
+    mOffset = qMin(mOffset, textLength);
+    mState = InCode;
+    return type;
+}
+
+Token::Type ScLexer::nextTokenInComment( int & lengthResult )
+{
+    // TODO: Provide tokenization using (some) lexical rules for code
+
+    int index = mOffset;
+    int maxIndex = mText.size() - 1;
+
+    static const QString commentStart("/*");
+    static const QString commentEnd("*/");
+
+    int commentStartIndex = -2;
+    int commentEndIndex   = -2;
+
+    while(index < maxIndex) {
+        if ((commentStartIndex == -2) || (commentStartIndex < index))
+            if (commentStartIndex != -1)
+                commentStartIndex = mText.indexOf(commentStart, index);
+
+        if ((commentEndIndex == -2) || (commentEndIndex < index))
+            if (commentEndIndex != -1)
+                commentEndIndex   = mText.indexOf(commentEnd, index);
+
+        if (commentStartIndex == -1) {
+            if (commentEndIndex == -1) {
+                index = maxIndex;
+            } else {
+                index = commentEndIndex + 2;
+                --mState;
+            }
+        } else {
+            if (commentEndIndex == -1) {
+                index = commentStartIndex + 2;
+                ++mState;
+            } else {
+                if (commentStartIndex < commentEndIndex) {
+                    index = commentStartIndex + 2;
+                    ++mState;
+                } else {
+                    index = commentEndIndex + 2;
+                    --mState;
+                }
+            }
+        }
+        if (mState < InComment) {
+            mState = InCode;
+            break;
+        }
+    }
+
+    if(mState == InCode) {
+        mOffset = index;
+        lengthResult = 2;
+        return Token::MultiLineCommentEnd;
+    }
+
+    mOffset = mText.size();
+    lengthResult = 0;
+    return Token::Unknown;
+}
+
+}
diff --git a/editors/sc-ide/core/sc_lexer.hpp b/editors/sc-ide/core/sc_lexer.hpp
new file mode 100644
index 0000000..d45c147
--- /dev/null
+++ b/editors/sc-ide/core/sc_lexer.hpp
@@ -0,0 +1,90 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_CORE_SC_LEXER_HPP_INCLUDED
+#define SCIDE_CORE_SC_LEXER_HPP_INCLUDED
+
+#include "../widgets/code_editor/tokens.hpp"
+
+#include <QVector>
+#include <QRegExp>
+#include <QString>
+
+namespace ScIDE {
+
+class ScLexer
+{
+public:
+
+    enum State {
+        InCode = 0,
+        InString = 1,
+        InSymbol = 2,
+        InComment = 100
+        // NOTE: Values higher than InComment are reserved for multi line comments,
+        // and indicate the comment nesting level!
+    };
+
+    static void initLexicalRules();
+
+private:
+    struct LexicalRule
+    {
+        LexicalRule(): type(Token::Unknown) {}
+        LexicalRule( Token::Type t, const QString &s ): type(t), expr(s) {}
+
+        Token::Type type;
+        QRegExp expr;
+    };
+
+    static void initKeywordsRules();
+    static void initBuiltinsRules();
+
+    static QVector<LexicalRule> mLexicalRules;
+
+public:
+    ScLexer( const QString & text, int offset = 0, int state = InCode):
+        mText(text), mOffset(offset), mState(state)
+    {}
+
+    const QString & text() const { return mText; }
+
+    int state() const { return mState; }
+    void setState( int state ) { mState = state; }
+
+    int offset() const { return mOffset; }
+    void setOffset( int offset ) { mOffset = offset; }
+
+    Token::Type nextToken ( int & length );
+
+private:
+    Token::Type nextTokenInCode( int & length );
+    Token::Type nextTokenInString( int & length );
+    Token::Type nextTokenInSymbol( int & length );
+    Token::Type nextTokenInComment( int & length );
+
+    const QString & mText;
+    int mOffset;
+    int mState;
+};
+
+}
+
+#endif // SCIDE_CORE_SC_LEXER_HPP_INCLUDED
diff --git a/editors/sc-ide/core/sc_process.cpp b/editors/sc-ide/core/sc_process.cpp
new file mode 100644
index 0000000..4496a6b
--- /dev/null
+++ b/editors/sc-ide/core/sc_process.cpp
@@ -0,0 +1,361 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include <QCoreApplication>
+#include <QBuffer>
+
+#include "SC_DirUtils.h"
+
+#include "main.hpp"
+#include "main_window.hpp"
+#include "sc_introspection.hpp"
+#include "sc_process.hpp"
+#include "sc_server.hpp"
+#include "settings/manager.hpp"
+
+#include "../widgets/help_browser.hpp"
+
+#include "yaml-cpp/node.h"
+#include "yaml-cpp/parser.h"
+
+namespace ScIDE {
+
+ScProcess::ScProcess( Settings::Manager * settings, QObject * parent ):
+    QProcess( parent ),
+    mIpcServer( new QLocalServer(this) ),
+    mIpcSocket(NULL),
+    mIpcServerName("SCIde_" + QString::number(QCoreApplication::applicationPid())),
+    mTerminationRequested(false)
+{
+    mIntrospectionParser = new ScIntrospectionParser( this );
+    mIntrospectionParser->start();
+
+    prepareActions(settings);
+
+    connect(this, SIGNAL( readyRead() ),
+            this, SLOT( onReadyRead() ));
+    connect(mIpcServer, SIGNAL(newConnection()), this, SLOT(onNewIpcConnection()));
+    connect(mIntrospectionParser, SIGNAL(done(ScLanguage::Introspection*)),
+            this, SLOT(swapIntrospection(ScLanguage::Introspection*)));
+
+    connect(this, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(onProcessStateChanged(QProcess::ProcessState)));
+}
+
+void ScProcess::prepareActions(Settings::Manager * settings)
+{
+    QAction * action;
+
+    const QString interpreterCategory(tr("Interpreter"));
+
+    mActions[ToggleRunning] = action = new QAction(tr("Boot Interpreter"), this);
+    connect(action, SIGNAL(triggered()), this, SLOT(toggleRunning()) );
+    settings->addAction( action, "interpreter-toggle-running", interpreterCategory);
+
+    mActions[Start] = action = new QAction(tr("Boot Interpreter"), this);
+    connect(action, SIGNAL(triggered()), this, SLOT(startLanguage()) );
+    settings->addAction( action, "interpreter-start", interpreterCategory);
+
+    mActions[Stop] = action = new QAction(tr("Quit Interpreter"), this);
+    connect(action, SIGNAL(triggered()), this, SLOT(stopLanguage()) );
+    settings->addAction( action, "interpreter-stop", interpreterCategory);
+
+    mActions[Restart] = action = new QAction(
+        QIcon::fromTheme("system-reboot"), tr("Reboot Interpreter"), this);
+    connect(action, SIGNAL(triggered()), this, SLOT(restartLanguage()) );
+    settings->addAction( action, "interpreter-restart", interpreterCategory);
+
+    mActions[RecompileClassLibrary] = action = new QAction(
+        QIcon::fromTheme("system-reboot"), tr("Recompile Class Library"), this);
+    action->setShortcut(tr("Ctrl+Shift+l", "Recompile Class Library)"));
+    connect(action, SIGNAL(triggered()), this, SLOT(recompileClassLibrary()) );
+    settings->addAction( action, "interpreter-recompile-lib", interpreterCategory);
+
+    mActions[StopMain] = action = new QAction(
+        QIcon::fromTheme("media-playback-stop"), tr("Stop"), this);
+    action->setShortcut(tr("Ctrl+.", "Stop (a.k.a. cmd-period)"));
+    connect(action, SIGNAL(triggered()), this, SLOT(stopMain()));
+    settings->addAction( action, "interpreter-main-stop", interpreterCategory);
+
+    onProcessStateChanged(QProcess::NotRunning);
+}
+
+void ScProcess::toggleRunning()
+{
+    switch(state()) {
+    case NotRunning:
+        startLanguage();
+        break;
+    default:
+        stopLanguage();
+    }
+}
+
+void ScProcess::startLanguage (void)
+{
+    if (state() != QProcess::NotRunning) {
+        statusMessage(tr("Interpreter is already running."));
+        return;
+    }
+
+    Settings::Manager *settings = Main::settings();
+    settings->beginGroup("IDE/interpreter");
+
+    QString workingDirectory = settings->value("runtimeDir").toString();
+    QString configFile = settings->value("configFile").toString();
+
+    settings->endGroup();
+
+    QString sclangCommand;
+#ifdef Q_OS_MAC
+    char resourcePath[PATH_MAX];
+    sc_GetResourceDirectory(resourcePath, PATH_MAX);
+
+    sclangCommand = QString(resourcePath) + "/sclang";
+#else
+    sclangCommand = "sclang";
+#endif
+
+    QStringList sclangArguments;
+    if(!configFile.isEmpty())
+        sclangArguments << "-l" << configFile;
+    sclangArguments << "-i" << "scqt";
+
+    if(!workingDirectory.isEmpty())
+        setWorkingDirectory(workingDirectory);
+
+    QProcess::start(sclangCommand, sclangArguments);
+    bool processStarted = QProcess::waitForStarted();
+    if (!processStarted)
+        emit statusMessage(tr("Failed to start interpreter!"));
+}
+
+void ScProcess::recompileClassLibrary (void)
+{
+    if(state() != QProcess::Running) {
+        emit statusMessage(tr("Interpreter is not running!"));
+        return;
+    }
+
+    write("\x18");
+}
+
+
+void ScProcess::stopLanguage (void)
+{
+    if(state() != QProcess::Running) {
+        emit statusMessage(tr("Interpreter is not running!"));
+        return;
+    }
+
+    closeWriteChannel();
+
+    mTerminationRequested   = true;
+    mTerminationRequestTime = QDateTime::currentDateTimeUtc();
+
+    bool finished = waitForFinished(200);
+    if ( !finished && (state() != QProcess::NotRunning) ) {
+#ifdef Q_OS_WIN32
+        kill();
+#else
+        terminate();
+#endif
+        bool reallyFinished = waitForFinished(200);
+        if (!reallyFinished)
+            emit statusMessage(tr("Failed to stop interpreter!"));
+    }
+    mTerminationRequested = false;
+}
+
+void ScProcess::restartLanguage()
+{
+    stopLanguage();
+    startLanguage();
+}
+
+
+
+void ScProcess::onReadyRead(void)
+{
+    if (mTerminationRequested) {
+        // when stopping the language, we don't want to post for longer than 200 ms to prevent the UI to freeze
+        if (QDateTime::currentDateTimeUtc().toMSecsSinceEpoch() - mTerminationRequestTime.toMSecsSinceEpoch() > 200)
+            return;
+    }
+
+    QByteArray out = QProcess::readAll();
+    QString postString = QString::fromUtf8(out);
+    emit scPost(postString);
+}
+
+void ScProcess::evaluateCode(QString const & commandString, bool silent)
+{
+    if(state() != QProcess::Running) {
+        emit statusMessage(tr("Interpreter is not running!"));
+        return;
+    }
+
+    QByteArray bytesToWrite = commandString.toUtf8();
+    size_t writtenBytes = write(bytesToWrite);
+    if (writtenBytes != bytesToWrite.size()) {
+        emit statusMessage(tr("Error when passing data to interpreter!"));
+        return;
+    }
+
+    char commandChar = silent ? '\x1b' : '\x0c';
+
+    write( &commandChar, 1 );
+}
+
+void ScProcess::onNewIpcConnection()
+{
+    if (mIpcSocket)
+        // we can handle only one ipc connection at a time
+        mIpcSocket->disconnect();
+
+    mIpcSocket = mIpcServer->nextPendingConnection();
+    connect(mIpcSocket, SIGNAL(disconnected()), this, SLOT(finalizeConnection()));
+    connect(mIpcSocket, SIGNAL(readyRead()), this, SLOT(onIpcData()));
+}
+
+void ScProcess::finalizeConnection()
+{
+    mIpcData.clear();
+    mIpcSocket->deleteLater();
+    mIpcSocket = NULL;
+}
+
+void ScProcess::onProcessStateChanged(QProcess::ProcessState state)
+{
+    switch (state) {
+    case QProcess::Starting:
+        mActions[ToggleRunning]->setText(tr("Quit Interpreter"));
+        mActions[ToggleRunning]->setIcon(QIcon::fromTheme("system-shutdown"));
+        mActions[Start]->setEnabled(false);
+        mActions[Stop]->setEnabled(true);
+        mActions[Restart]->setEnabled(true);
+
+        break;
+
+    case QProcess::Running:
+        mActions[StopMain]->setEnabled(true);
+        mActions[RecompileClassLibrary]->setEnabled(true);
+
+        onStart();
+
+        break;
+
+    case QProcess::NotRunning:
+        mActions[ToggleRunning]->setText(tr("Boot Interpreter"));
+        mActions[ToggleRunning]->setIcon(QIcon::fromTheme("system-run"));
+        mActions[Start]->setEnabled(true);
+        mActions[Stop]->setEnabled(false);
+        mActions[Restart]->setEnabled(false);
+        mActions[StopMain]->setEnabled(false);
+        mActions[RecompileClassLibrary]->setEnabled(false);
+
+        break;
+    }
+}
+
+void ScProcess::onIpcData()
+{
+    mIpcData.append(mIpcSocket->readAll());
+
+    while (mIpcData.size()) {
+        QBuffer receivedData ( &mIpcData );
+        receivedData.open ( QIODevice::ReadOnly );
+
+        QDataStream in ( &receivedData );
+        in.setVersion ( QDataStream::Qt_4_6 );
+        QString selector, message;
+        in >> selector;
+        if ( in.status() != QDataStream::Ok )
+            return;
+
+        in >> message;
+        if ( in.status() != QDataStream::Ok )
+            return;
+
+        mIpcData.remove ( 0, receivedData.pos() );
+
+        onResponse(selector, message);
+
+        emit response(selector, message);
+    }
+}
+
+void ScProcess::onResponse( const QString & selector, const QString & data )
+{
+    static QString introspectionSelector("introspection");
+    static QString classLibraryRecompiledSelector("classLibraryRecompiled");
+    static QString requestCurrentPathSelector("requestCurrentPath");
+
+    if (selector == introspectionSelector)
+        mIntrospectionParser->process(data);
+
+    else if (selector == classLibraryRecompiledSelector)
+        emit classLibraryRecompiled();
+
+    else if (selector == requestCurrentPathSelector)
+        sendActiveDocument();
+}
+
+void ScProcess::onStart()
+{
+    if(!mIpcServer->isListening()) // avoid a warning on stderr
+        mIpcServer->listen(mIpcServerName);
+
+    QString command = QString("ScIDE.connect(\"%1\")").arg(mIpcServerName);
+    evaluateCode ( command, true );
+    sendActiveDocument();
+}
+
+void ScProcess::setActiveDocument(Document * document)
+{
+    if (document)
+        mCurrentDocumentPath = document->filePath();
+    else
+        mCurrentDocumentPath.clear();
+
+    sendActiveDocument();
+}
+
+void ScProcess::sendActiveDocument()
+{
+    if (state() != QProcess::Running)
+        return;
+
+    if (!mCurrentDocumentPath.isEmpty())
+        evaluateCode(QString("ScIDE.currentPath_(\"%1\")").arg(mCurrentDocumentPath), true);
+    else
+        evaluateCode(QString("ScIDE.currentPath_(nil)"), true);
+}
+
+void ScIntrospectionParserWorker::process(const QString &input)
+{
+    try {
+        ScLanguage::Introspection *introspection = new ScLanguage::Introspection (input);
+        emit done(introspection);
+    } catch (std::exception & e) {
+        MainWindow::instance()->showStatusMessage(e.what());
+    }
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/core/sc_process.hpp b/editors/sc-ide/core/sc_process.hpp
new file mode 100644
index 0000000..2b7a2f9
--- /dev/null
+++ b/editors/sc-ide/core/sc_process.hpp
@@ -0,0 +1,225 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_SC_PROCESS_HPP_INCLUDED
+#define SCIDE_SC_PROCESS_HPP_INCLUDED
+
+#include "sc_introspection.hpp"
+
+#include <QAction>
+#include <QByteArray>
+#include <QDateTime>
+#include <QDebug>
+#include <QProcess>
+#include <QThread>
+#include <QUuid>
+#include <QtNetwork/QLocalSocket>
+#include <QtNetwork/QLocalServer>
+
+namespace ScIDE {
+
+namespace Settings { class Manager; }
+class ScIntrospectionParser;
+
+class ScProcess:
+    public QProcess
+{
+    Q_OBJECT
+
+public:
+    ScProcess( Settings::Manager *, QObject * parent );
+
+    enum ActionRole {
+        ToggleRunning = 0,
+        Start,
+        Stop,
+        Restart,
+        RecompileClassLibrary,
+        StopMain,
+
+        ActionCount
+    };
+
+    const ScLanguage::Introspection & introspection() { return mIntrospection; }
+
+    void sendRequest( const QString &id, const QString &command, const QString &data )
+    {
+        QString cmd = QString("ScIDE.request(\"%1\",'%2',\"%3\")")
+            .arg(id)
+            .arg(command)
+            .arg(data);
+
+        evaluateCode(cmd, true);
+    }
+
+    void setActiveDocument(class Document *);
+    void sendActiveDocument();
+
+    QAction *action(ActionRole role)
+    {
+        return mActions[role];
+    }
+
+public slots:
+    void toggleRunning();
+    void startLanguage (void);
+    void stopLanguage (void);
+    void restartLanguage (void);
+    void recompileClassLibrary (void);
+    void stopMain(void) { evaluateCode("thisProcess.stop", false); }
+    void evaluateCode(QString const & commandString, bool silent = false);
+
+signals:
+    void scPost(QString const &);
+    void statusMessage(const QString &);
+    void response(const QString & selector, const QString & data);
+    void classLibraryRecompiled();
+    void introspectionAboutToSwap();
+
+private slots:
+    void swapIntrospection (ScLanguage::Introspection *newIntrospection)
+    {
+        emit introspectionAboutToSwap();
+        // LATER: use c++11/std::move
+        mIntrospection = *newIntrospection;
+        delete newIntrospection;
+    }
+    void onNewIpcConnection();
+    void onIpcData();
+    void finalizeConnection();
+    void onProcessStateChanged( QProcess::ProcessState state);
+    void onReadyRead(void);
+
+private:
+    void onStart();
+    void onResponse( const QString & selector, const QString & data );
+
+    void prepareActions(Settings::Manager * settings);
+
+    QAction * mActions[ActionCount];
+
+    ScLanguage::Introspection mIntrospection;
+    ScIntrospectionParser *mIntrospectionParser;
+
+    QLocalServer *mIpcServer;
+    QLocalSocket *mIpcSocket;
+    QString mIpcServerName;
+    QByteArray mIpcData;
+
+    QString mCurrentDocumentPath;
+    bool mTerminationRequested;
+    QDateTime mTerminationRequestTime;
+};
+
+class ScRequest : public QObject
+{
+    Q_OBJECT
+public:
+    ScRequest( ScProcess *sc, QObject * parent = 0 ):
+        QObject(parent),
+        mSc(sc)
+    {
+        connect(mSc, SIGNAL(response(QString,QString)),
+                this, SLOT(onResponse(QString,QString)));
+
+        connect(mSc, SIGNAL(classLibraryRecompiled()),
+                this, SLOT(cancel()));
+    }
+
+    void send( const QString & command, const QString & data )
+    {
+        mId = QUuid::createUuid();
+        mCommand = command;
+        mSc->sendRequest(mId.toString(), command, data);
+    }
+
+public slots:
+    void cancel()
+    {
+        mId = QUuid();
+        emit cancelled();
+    }
+
+signals:
+    void response( const QString & command, const QString & data );
+    void cancelled();
+
+private slots:
+    void onResponse( const QString & responseId, const QString & responseData )
+    {
+        if (responseId == mId.toString())
+            emit response(mCommand, responseData);
+    }
+
+private:
+    QString mCommand;
+    QUuid mId;
+    ScProcess *mSc;
+};
+
+class ScIntrospectionParserWorker : public QObject
+{
+    Q_OBJECT
+signals:
+    void done( ScLanguage::Introspection * output );
+private slots:
+    void process( const QString & input );
+
+    void quit()
+    {
+        thread()->quit();
+    }
+};
+
+class ScIntrospectionParser : public QThread
+{
+    Q_OBJECT
+public:
+    ScIntrospectionParser( QObject * parent = 0 ):
+        QThread(parent)
+    {
+        connect(this, SIGNAL(newIntrospectionData(QString)),
+                &mWorker, SLOT(process(QString)), Qt::QueuedConnection);
+        connect(&mWorker, SIGNAL(done(ScLanguage::Introspection*)),
+                this, SIGNAL(done(ScLanguage::Introspection*)), Qt::QueuedConnection);
+        mWorker.moveToThread(this);
+    }
+    ~ScIntrospectionParser()
+    {
+        QMetaObject::invokeMethod(&mWorker, "quit");
+        wait();
+    }
+
+    void process( const QString & introspectionData )
+    {
+        emit newIntrospectionData(introspectionData);
+    }
+
+signals:
+    void newIntrospectionData( const QString & data );
+    void done( ScLanguage::Introspection * );
+
+private:
+    ScIntrospectionParserWorker mWorker;
+};
+
+}
+
+#endif
diff --git a/editors/sc-ide/core/sc_server.cpp b/editors/sc-ide/core/sc_server.cpp
new file mode 100644
index 0000000..5630c57
--- /dev/null
+++ b/editors/sc-ide/core/sc_server.cpp
@@ -0,0 +1,245 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include <QDebug>
+
+#include "sc_server.hpp"
+#include "sc_process.hpp"
+#include "main.hpp"
+
+#include "scsynthsend.h"
+#include "sc_msg_iter.h"
+
+#include "yaml-cpp/node.h"
+#include "yaml-cpp/parser.h"
+
+namespace ScIDE {
+
+ScServer::ScServer(ScProcess *scLang, Settings::Manager *settings, QObject *parent):
+    QObject(parent), mPort(0)
+{
+    createActions(settings);
+
+    mUdpSocket = new QUdpSocket(this);
+    for (int port = 57140; port != 57150; ++port) {
+        bool success = mUdpSocket->bind(port);
+        if (success)
+            break;
+    }
+    startTimer(333);
+
+    connect(scLang, SIGNAL(stateChanged(QProcess::ProcessState)),
+            this, SLOT(onScLangStateChanged(QProcess::ProcessState)));
+    connect(scLang, SIGNAL(response(QString,QString)),
+            this, SLOT(onScLangReponse(QString,QString)));
+
+    onRunningStateChanged(false, QString(), 0); // initialize ToggleRunning action
+}
+
+void ScServer::createActions(Settings::Manager * settings)
+{
+    const QString synthServerCategory(tr("Sound Synthesis Server"));
+    QAction *action;
+
+    mActions[ToggleRunning] = action = new QAction(tr("Boot or quit server"), this);
+    action->setShortcut(tr("Ctrl+B", "Boot or quit default server"));
+    connect(action, SIGNAL(triggered()), this, SLOT(toggleRunning()));
+    settings->addAction( action, "synth-server-toggle-running", synthServerCategory);
+
+    mActions[Reboot] = action = new QAction(tr("Reboot server"), this);
+    action->setShortcut(tr("Ctrl+Shift+B", "Reboot default server"));
+    connect(action, SIGNAL(triggered()), this, SLOT(reboot()));
+    settings->addAction( action, "synth-server-reboot", synthServerCategory);
+
+    mActions[ShowMeters] = action = new QAction(tr("Show server meter"), this);
+    action->setShortcut(tr("Ctrl+M", "Show server meter"));
+    connect(action, SIGNAL(triggered()), this, SLOT(showMeters()));
+    settings->addAction( action, "synth-server-meter", synthServerCategory);
+
+    mActions[DumpNodeTree] = action = new QAction(tr("Dump node tree"), this);
+    action->setShortcut(tr("Ctrl+T", "Dump node tree"));
+    connect(action, SIGNAL(triggered()), this, SLOT(dumpNodeTree()));
+    settings->addAction( action, "synth-server-dump-nodes", synthServerCategory);
+
+    mActions[DumpNodeTreeWithControls] = action = new QAction(tr("Dump node tree with controls"), this);
+    action->setShortcut(tr("Ctrl+Shift+T", "Dump node tree with controls"));
+    connect(action, SIGNAL(triggered()), this, SLOT(dumpNodeTreeWithControls()));
+    settings->addAction( action, "synth-server-dump-nodes-with-controls", synthServerCategory);
+}
+
+void ScServer::boot()
+{
+    if (isRunning())
+        return;
+
+    Main::scProcess()->evaluateCode( "ScIDE.defaultServer.boot", true );
+}
+
+void ScServer::quit()
+{
+    if (!isRunning())
+        return;
+
+    Main::scProcess()->evaluateCode( "ScIDE.defaultServer.quit", true );
+}
+
+void ScServer::reboot()
+{
+    Main::scProcess()->evaluateCode( "ScIDE.defaultServer.reboot", true );
+}
+
+void ScServer::toggleRunning()
+{
+    if (isRunning())
+        quit();
+    else
+        boot();
+}
+
+void ScServer::showMeters()
+{
+    Main::evaluateCode("ScIDE.defaultServer.meter", true);
+}
+
+void ScServer::dumpNodeTree()
+{
+    queryAllNodes(false);
+}
+
+void ScServer::dumpNodeTreeWithControls()
+{
+    queryAllNodes(true);
+}
+
+void ScServer::queryAllNodes(bool dumpControls)
+{
+    QString arg = dumpControls ? QString("true") : QString("false");
+
+    Main::scProcess()->evaluateCode( QString("ScIDE.defaultServer.queryAllNodes(%1)").arg(arg), true );
+}
+
+void ScServer::onScLangStateChanged( QProcess::ProcessState state )
+{
+    bool langIsRunning = state == QProcess::Running;
+    mActions[ToggleRunning]->setEnabled(langIsRunning);
+    mActions[Reboot]->setEnabled(langIsRunning);
+    mActions[ShowMeters]->setEnabled(langIsRunning);
+    mActions[DumpNodeTree]->setEnabled(langIsRunning);
+    mActions[DumpNodeTreeWithControls]->setEnabled(langIsRunning);
+}
+
+void ScServer::onScLangReponse( const QString & selector, const QString & data )
+{
+    static QString defaultServerRunningChangedSelector("defaultServerRunningChanged");
+
+    if (selector != defaultServerRunningChangedSelector)
+        return;
+
+    std::stringstream stream;
+    stream << data.toStdString();
+    YAML::Parser parser(stream);
+
+    bool serverRunningState;
+    std::string hostName;
+    int port;
+
+    YAML::Node doc;
+    while(parser.GetNextDocument(doc)) {
+        assert(doc.Type() == YAML::NodeType::Sequence);
+
+        bool success = doc[0].Read(serverRunningState);
+        if (!success) return; // LATER: report error?
+
+        success = doc[1].Read(hostName);
+        if (!success) return; // LATER: report error?
+
+        success = doc[2].Read(port);
+        if (!success) return; // LATER: report error?
+    }
+
+    QString qstrHostName( hostName.c_str() );
+
+    onRunningStateChanged( serverRunningState, qstrHostName, port );
+
+    emit runningStateChange( serverRunningState, qstrHostName, port );
+}
+
+void ScServer::timerEvent(QTimerEvent * event)
+{
+    if (mUdpSocket->hasPendingDatagrams()) {
+        size_t datagramSize = mUdpSocket->pendingDatagramSize();
+        QByteArray array(datagramSize, 0);
+        mUdpSocket->readDatagram(array.data(), datagramSize);
+
+        if (!mPort)
+            return;
+
+        if (array[0]) {
+            char *addr = array.data();
+            const char * data = OSCstrskip(array.data());
+            int size = datagramSize - (data - addr);
+
+            if (strcmp(addr, "/status.reply") == 0) {
+                sc_msg_iter reply(size, data);
+                int	unused     = reply.geti();
+                int	ugenCount  = reply.geti();
+                int	synthCount = reply.geti();
+                int	groupCount = reply.geti();
+                int	defCount   = reply.geti();
+                float avgCPU   = reply.getf();
+                float peakCPU  = reply.getf();
+                double srNom   = reply.getd();
+                double srAct   = reply.getd();
+
+                emit updateServerStatus(ugenCount, synthCount, groupCount, defCount, avgCPU, peakCPU);
+            }
+        }
+    }
+
+    if (mPort) {
+        small_scpacket packet;
+        packet.BeginMsg();
+        packet.adds_slpre("status");
+        packet.maketags(1);
+        packet.addtag(',');
+        packet.EndMsg();
+
+        mUdpSocket->writeDatagram(packet.data(), packet.size(), mServerAddress, mPort);
+    }
+}
+
+void ScServer::onRunningStateChanged( bool running, QString const & hostName, int port )
+{
+    if (running) {
+        mServerAddress = QHostAddress(hostName);
+        mPort = port;
+
+        mActions[ToggleRunning]->setText( tr("&Quit Server") );
+        mActions[ToggleRunning]->setStatusTip(tr("Quit sound synthesis server"));
+    } else {
+        mServerAddress.clear();
+        mPort = 0;
+
+        mActions[ToggleRunning]->setText( tr("&Boot Server") );
+        mActions[ToggleRunning]->setStatusTip(tr("Boot sound synthesis server"));
+    }
+}
+
+}
diff --git a/editors/sc-ide/core/sc_server.hpp b/editors/sc-ide/core/sc_server.hpp
new file mode 100644
index 0000000..0a59bc0
--- /dev/null
+++ b/editors/sc-ide/core/sc_server.hpp
@@ -0,0 +1,90 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_SC_SERVER_HPP_INCLUDED
+#define SCIDE_SC_SERVER_HPP_INCLUDED
+
+#include <QObject>
+#include <QtNetwork/QUdpSocket>
+#include <QAction>
+#include <QProcess>
+
+namespace ScIDE {
+
+class ScProcess;
+namespace Settings { class Manager; }
+
+class ScServer : public QObject
+{
+    Q_OBJECT
+
+public:
+    enum ActionRole {
+        ToggleRunning,
+        Reboot,
+        ShowMeters,
+        DumpNodeTree,
+        DumpNodeTreeWithControls,
+
+        ActionCount
+    };
+
+    ScServer(ScProcess *scLang, Settings::Manager * settings, QObject * parent);
+
+    bool isRunning() { return mPort != 0; }
+
+    QAction *action(ActionRole role) { return mActions[role]; }
+
+public slots:
+    void boot();
+    void reboot();
+    void quit();
+    void toggleRunning();
+    void showMeters();
+    void dumpNodeTree();
+    void dumpNodeTreeWithControls();
+    void queryAllNodes(bool dumpControls);
+
+signals:
+    void runningStateChange( bool running, QString const & hostName, int port );
+    void updateServerStatus (int ugenCount, int synthCount, int groupCount, int defCount, float avgCPU, float peakCPU);
+
+private slots:
+    void onScLangStateChanged( QProcess::ProcessState );
+    void onScLangReponse( const QString & selector, const QString & data );
+
+protected:
+    virtual void timerEvent(QTimerEvent * event);
+
+private:
+    void createActions( Settings::Manager * );
+
+    void onRunningStateChanged( bool running, QString const & hostName, int port );
+
+    QUdpSocket * mUdpSocket;
+    QHostAddress mServerAddress;
+    int mPort;
+
+    QAction * mActions[ActionCount];
+};
+
+}
+
+#endif // SCIDE_SC_SERVER_HPP_INCLUDED
diff --git a/editors/sc-ide/core/session_manager.cpp b/editors/sc-ide/core/session_manager.cpp
new file mode 100644
index 0000000..620520f
--- /dev/null
+++ b/editors/sc-ide/core/session_manager.cpp
@@ -0,0 +1,227 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "doc_manager.hpp"
+#include "session_manager.hpp"
+#include "settings/manager.hpp"
+
+#include "../widgets/main_window.hpp"
+
+#include "SC_DirUtils.h"
+
+#include <QFile>
+#include <QFileInfo>
+
+namespace ScIDE {
+
+static QString sessionFilePath( const QString & name )
+{
+    char config_dir[PATH_MAX];
+    sc_GetUserConfigDirectory(config_dir, PATH_MAX);
+
+    QDir dir(config_dir);
+
+    if (!dir.mkpath("sessions")) {
+        qWarning("The path to sessions does not exist and could not be created!");
+        return QString();
+    }
+
+    dir.cd("sessions");
+
+    return dir.filePath(name + ".yaml");
+}
+
+SessionManager::SessionManager( DocumentManager *docMng, QObject * parent ) :
+    QObject(parent),
+    mDocMng(docMng),
+    mCurrentSession(0)
+{}
+
+QDir SessionManager::sessionsDir()
+{
+    char config_dir[PATH_MAX];
+    sc_GetUserConfigDirectory(config_dir, PATH_MAX);
+
+    QDir dir(config_dir);
+
+    if (dir.mkpath("sessions"))
+        dir.cd("sessions");
+    else {
+        qWarning("The path to sessions does not exist and could not be created!");
+        return QDir();
+    }
+
+    dir.setFilter( QDir::Files );
+    dir.setNameFilters( QStringList() << "*.yaml" );
+
+    return dir;
+}
+
+QStringList SessionManager::availableSessions()
+{
+    QStringList sessions = sessionsDir().entryList();
+    QStringList::iterator it;
+    for ( it = sessions.begin(); it != sessions.end(); ++it )
+        *it = QFileInfo(*it).baseName();
+    return sessions;
+}
+
+QString SessionManager::lastSession()
+{
+    QDir dir = sessionsDir();
+    if (dir.path().isEmpty())
+        return QString();
+
+    QString path = QFile::symLinkTarget( dir.filePath( ".last-session.lnk" ) );
+
+    return QFileInfo(path).baseName();
+}
+
+void SessionManager::newSession()
+{
+    closeSession();
+
+    QDir dir = sessionsDir();
+    if (!dir.path().isEmpty())
+        saveLastSession( dir, QString() );
+
+    emit switchSessionRequest(0);
+}
+
+Session *SessionManager::openSession( const QString & name )
+{
+    // NOTE: This will create a session if it doesn't exists
+
+    closeSession();
+
+    QDir dir = sessionsDir();
+    if (dir.path().isEmpty())
+        return 0;
+
+    QString sessionFile = dir.filePath(name + ".yaml");
+    mCurrentSession = new Session( sessionFile, name, Settings::serializationFormat() );
+
+    saveLastSession( dir, sessionFile );
+
+    emit switchSessionRequest(mCurrentSession);
+
+    return mCurrentSession;
+}
+
+void SessionManager::saveSession()
+{
+    if (mCurrentSession) {
+        emit saveSessionRequest(mCurrentSession);
+        mCurrentSession->sync();
+    }
+}
+
+Session * SessionManager::saveSessionAs( const QString & name )
+{
+    // TODO:
+    // Maybe use a different data structure for Session instead of QSettings?
+    // A new class that would allow closing without saving would be nice.
+
+    if (mCurrentSession) {
+        delete mCurrentSession;
+        mCurrentSession = 0;
+    }
+
+    QDir dir = sessionsDir();
+    if (dir.path().isEmpty()) {
+        emit switchSessionRequest(0);
+        return 0;
+    }
+
+    QString sessionFile = dir.filePath(name + ".yaml");
+    mCurrentSession = new Session( sessionFile, name, Settings::serializationFormat() );
+
+    emit saveSessionRequest(mCurrentSession);
+
+    mCurrentSession->sync();
+
+    saveLastSession( dir, sessionFile );
+
+    emit currentSessionNameChanged();
+
+    return mCurrentSession;
+}
+
+void SessionManager::closeSession()
+{
+    MainWindow::instance()->promptSaveDocs();
+
+    if (mCurrentSession)
+        emit saveSessionRequest(mCurrentSession);
+
+    delete mCurrentSession;
+    mCurrentSession = 0;
+}
+
+void SessionManager::removeSession( const QString & name )
+{
+    QDir dir = sessionsDir();
+    if (dir.path().isEmpty())
+        return;
+
+    if (mCurrentSession && mCurrentSession->name() == name) {
+        closeSession();
+        saveLastSession(dir, QString());
+        emit switchSessionRequest(0);
+    }
+
+    if (!QFile::remove(dir.filePath(name + ".yaml")))
+        qWarning("Could not remove a session file!");
+}
+
+void SessionManager::renameSession( const QString & oldName, const QString & newName )
+{
+    if (mCurrentSession && mCurrentSession->name() == oldName) {
+        saveSessionAs(newName);
+        removeSession(oldName);
+    } else {
+        QDir dir = sessionsDir();
+        if (dir.path().isEmpty())
+            return;
+
+        if (!dir.rename(oldName + ".yaml", newName + ".yaml"))
+            qWarning("Could not rename session file!");
+    }
+}
+
+bool SessionManager::saveLastSession( const QDir & dir, const QString & sessionFile )
+{
+    QString linkFile = dir.filePath(".last-session.lnk");
+
+    if ( QFile::exists(linkFile) )
+        if (!QFile::remove(linkFile)) {
+            qWarning("Could not remove old link to last session!");
+            return false;
+        }
+
+    if ( sessionFile.isEmpty() || QFile::link( sessionFile, linkFile ) )
+        return true;
+    else
+        qWarning("Could not create link to last session!");
+
+    return false;
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/core/session_manager.hpp b/editors/sc-ide/core/session_manager.hpp
new file mode 100644
index 0000000..20486d1
--- /dev/null
+++ b/editors/sc-ide/core/session_manager.hpp
@@ -0,0 +1,79 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_SESSION_MANAGER_HPP_INCLUDED
+#define SCIDE_SESSION_MANAGER_HPP_INCLUDED
+
+#include <QObject>
+#include <QDir>
+#include <QStringList>
+#include <QSettings>
+
+namespace ScIDE {
+
+class DocumentManager;
+
+struct Session : public QSettings
+{
+    Session( const QString & file, const QString & name, Format format, QObject * parent = 0 ):
+        QSettings(file, format, parent),
+        mName(name)
+    {}
+
+    const QString & name() { return mName; }
+
+private:
+    QString mName;
+};
+
+class SessionManager : public QObject
+{
+    Q_OBJECT
+
+public:
+    SessionManager( DocumentManager *, QObject * parent = 0 );
+
+    QDir sessionsDir();
+    QStringList availableSessions();
+    QString lastSession();
+
+    void newSession();
+    void saveSession();
+    Session * saveSessionAs( const QString & name );
+    Session * openSession( const QString & name );
+    void removeSession( const QString & name );
+    void renameSession( const QString & oldName, const QString & newName );
+    Session *currentSession() { return mCurrentSession; }
+
+signals:
+    void saveSessionRequest(Session * session);
+    void switchSessionRequest(Session * session);
+    void currentSessionNameChanged();
+
+private:
+    void closeSession();
+    bool saveLastSession( const QDir & dir, const QString & file );
+    DocumentManager *mDocMng;
+    Session *mCurrentSession;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_SESSION_MANAGER_HPP_INCLUDED
diff --git a/editors/sc-ide/core/settings/manager.cpp b/editors/sc-ide/core/settings/manager.cpp
new file mode 100644
index 0000000..f13b91d
--- /dev/null
+++ b/editors/sc-ide/core/settings/manager.cpp
@@ -0,0 +1,199 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "manager.hpp"
+#include "serialization.hpp"
+
+#include <QApplication>
+#include <QPalette>
+#include <QTextCharFormat>
+
+namespace ScIDE { namespace Settings {
+
+Manager::Manager( const QString & filename, QObject * parent ):
+    QObject(parent),
+    mSettings( new QSettings(filename, serializationFormat(), this) )
+{
+    initDefaults();
+}
+
+void Manager::initDefaults()
+{
+    QPalette appPlt( QApplication::palette() );
+
+    beginGroup("IDE");
+
+    setDefault("startWithSession", "last");
+
+    beginGroup("interpreter");
+    setDefault("autoStart", true);
+    endGroup();
+
+    setDefault("postWindow/scrollback", 1000);
+
+    beginGroup("editor");
+
+    setDefault("spaceIndent", false);
+    setDefault("indentWidth", 4);
+    setDefault("stepForwardEvaluation", false);
+    setDefault("lineWrap", true);
+
+    setDefault("blinkDuration", 600);
+
+    setDefault("font/family", "monospace");
+    setDefault("font/antialias", true);
+
+    beginGroup("colors");
+
+    QTextCharFormat matchingBracketsFormat;
+    matchingBracketsFormat.setForeground(Qt::red);
+    matchingBracketsFormat.setFontWeight(QFont::Bold);
+    setDefault("matchingBrackets", QVariant::fromValue(matchingBracketsFormat));
+
+    QTextCharFormat bracketMismatchFormat;
+    bracketMismatchFormat.setBackground(QColor(150,0,0));
+    bracketMismatchFormat.setForeground(Qt::white);
+    setDefault("mismatchedBrackets", QVariant::fromValue(bracketMismatchFormat));
+
+    QTextCharFormat evaluatedCodeFormat;
+    evaluatedCodeFormat.setBackground(QColor("#F8A200"));
+    evaluatedCodeFormat.setForeground(Qt::black);
+    setDefault("evaluatedCode", QVariant::fromValue(evaluatedCodeFormat));
+
+    QTextCharFormat searchResultFormat;
+    searchResultFormat.setBackground(appPlt.color(QPalette::Highlight).darker(200));
+    searchResultFormat.setForeground(appPlt.color(QPalette::HighlightedText).darker(200));
+    setDefault("searchResult", QVariant::fromValue(searchResultFormat));
+
+    endGroup(); // colors
+
+    beginGroup("highlighting");
+    initHighlightingDefaults();
+    endGroup(); // highlighting
+
+    endGroup(); // editor
+
+    endGroup(); // IDE
+}
+
+inline static QVariant makeHlFormat
+    ( const QBrush &fg, QFont::Weight w = QFont::Normal )
+{
+    QTextCharFormat f;
+    f.setForeground(fg);
+    if(w != QFont::Normal)
+        f.setFontWeight(w);
+    return QVariant::fromValue<QTextCharFormat>(f);
+}
+
+void Manager::initHighlightingDefaults()
+{
+    QPalette plt( QApplication::palette() );
+    QColor base = plt.color(QPalette::Base);
+    int shade = (base.red() + base.green() + base.blue() < 380) ? 160 : 100;
+
+    setDefault( "keyword", makeHlFormat( QColor(0,0,230).lighter(shade), QFont::Bold ) );
+    setDefault( "built-in", makeHlFormat( QColor(51,51,191).lighter(shade) ) );
+    setDefault( "env-var", makeHlFormat( QColor(140,70,20).lighter(shade) ) );
+    setDefault( "class", makeHlFormat( QColor(0,0,210).lighter(shade) ) );
+    setDefault( "number", makeHlFormat( QColor(152,0,153).lighter(shade) ) );
+    setDefault( "symbol", makeHlFormat( QColor(0,115,0).lighter(shade) ) );
+    setDefault( "string", makeHlFormat( QColor(95,95,95).lighter(shade) ) );
+    setDefault( "char", makeHlFormat( QColor(0,115,0).lighter(shade) ) );
+    setDefault( "comment", makeHlFormat( QColor(191,0,0).lighter(shade) ) );
+    setDefault( "primitive", makeHlFormat( QColor(51,51,191).lighter(shade) ) );
+}
+
+bool Manager::contains ( const QString & key ) const
+{
+    if ( mSettings->contains(key) )
+        return true;
+    else
+        return mDefaults.contains( resolvedKey(key) );
+}
+
+QVariant Manager::value ( const QString & key ) const
+{
+    if ( mSettings->contains(key) )
+        return mSettings->value(key);
+    else
+        return mDefaults.value(resolvedKey(key));
+}
+
+void Manager::setValue ( const QString & key, const QVariant & value )
+{
+    mSettings->setValue(key, value);
+}
+
+QKeySequence Manager::shortcut( const QString & key )
+{
+    return QKeySequence( value(key).toString() );
+}
+
+void Manager::addAction ( QAction *action, const QString &key, const QString &category )
+{
+    ActionData actionData;
+    actionData.category = category;
+    actionData.key = key;
+
+    if (action->data().isValid()) {
+        qWarning( "Settings::Manager: action '%s' of class '%s' has data."
+                  " It will be overridden for settings purposes!",
+                  qPrintable(action->text()),
+                  action->parent()->metaObject()->className() );
+    }
+
+    action->setData( QVariant::fromValue(actionData) );
+
+    mActions.append(action);
+
+    beginGroup("IDE/shortcuts");
+
+    setDefault( actionData.key, QVariant::fromValue(action->shortcut()) );
+    action->setShortcut( value(actionData.key).value<QKeySequence>() );
+
+    endGroup();
+}
+
+QString Manager::keyForAction ( QAction *action )
+{
+    ActionData actionData = action->data().value<ActionData>();
+    return actionData.key;
+}
+
+QFont Manager::codeFont()
+{
+    QString fontFamily = value("IDE/editor/font/family").toString();
+    int fontSize = value("IDE/editor/font/size").toInt();
+    bool fontAntialas = value("IDE/editor/font/antialias").toBool();
+
+    QFont font = QApplication::font("QPlainTextEdit");
+    font.setStyleHint(QFont::TypeWriter);
+    font.setFamily(fontFamily);
+    if (fontSize > 0)
+        font.setPointSize(fontSize);
+
+    if (!fontAntialas)
+        font.setStyleStrategy(QFont::StyleStrategy(font.styleStrategy() | QFont::NoAntialias));
+
+    return font;
+}
+
+}} // namespace ScIDE::Settings
diff --git a/editors/sc-ide/core/settings/manager.hpp b/editors/sc-ide/core/settings/manager.hpp
new file mode 100644
index 0000000..a1ed72f
--- /dev/null
+++ b/editors/sc-ide/core/settings/manager.hpp
@@ -0,0 +1,117 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_CORE_SETTINGS_MANAGER_HPP_INCLUDED
+#define SCIDE_CORE_SETTINGS_MANAGER_HPP_INCLUDED
+
+#include "serialization.hpp" // to forward meta type declarations
+
+#include <QObject>
+#include <QKeySequence>
+#include <QList>
+#include <QAction>
+
+namespace ScIDE { namespace Settings {
+
+class Manager : public QObject
+{
+    Q_OBJECT
+
+public:
+    Manager( const QString & filename, QObject * parent = 0 );
+
+    // forwarded
+
+    void beginGroup ( const QString & prefix ) { mSettings->beginGroup(prefix); }
+
+    void endGroup () { mSettings->endGroup(); }
+
+    QString group() const { return mSettings->group(); }
+
+    QStringList childGroups () const { return mSettings->childGroups(); }
+
+    QStringList childKeys () const { return mSettings->childKeys(); }
+
+    QStringList allKeys() const { return mSettings->allKeys(); }
+
+    void sync() { mSettings->sync(); }
+
+    void remove ( const QString &key ) { mSettings->remove(key); }
+
+    // extended
+
+    bool contains ( const QString & key ) const;
+
+    bool isOverridden( const QString & key ) const
+    {
+        return mSettings->contains( key );
+    }
+
+    QVariant value ( const QString & key ) const;
+
+    QVariant defaultValue ( const QString & key ) const
+    {
+        return mDefaults.value(resolvedKey(key));
+    }
+
+    void setValue ( const QString & key, const QVariant & value );
+
+    QKeySequence shortcut( const QString & key );
+
+    const QList<QAction*> & actions() { return mActions; }
+    void addAction ( QAction *action, const QString & key, const QString & category = QString() );
+    QString keyForAction ( QAction *action );
+
+    QFont codeFont();
+
+private:
+    void setDefault ( const QString & key, const QVariant & value )
+    {
+        mDefaults.insert(resolvedKey(key), value);
+    }
+
+    typedef QSettings::SettingsMap SettingsMap;
+
+    QString resolvedKey( const QString & key ) const
+    {
+        QString fullKey = mSettings->group();
+        if(!fullKey.isEmpty()) fullKey.append("/");
+        fullKey.append(key);
+        return fullKey;
+    }
+
+    void initDefaults();
+    void initHighlightingDefaults();
+
+    QSettings *mSettings;
+    SettingsMap mDefaults;
+    QList<QAction*> mActions;
+};
+
+struct ActionData {
+    QString category;
+    QString key;
+};
+
+}} // namespace ScIDE::Settings
+
+Q_DECLARE_METATYPE( ScIDE::Settings::ActionData );
+
+#endif
diff --git a/editors/sc-ide/core/settings/serialization.cpp b/editors/sc-ide/core/settings/serialization.cpp
new file mode 100644
index 0000000..430573f
--- /dev/null
+++ b/editors/sc-ide/core/settings/serialization.cpp
@@ -0,0 +1,386 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "serialization.hpp"
+
+#include "yaml-cpp/yaml.h"
+
+#include <QDebug>
+#include <QStringList>
+#include <QKeySequence>
+#include <boost/iostreams/concepts.hpp>
+#include <boost/iostreams/stream.hpp>
+#include <iostream>
+
+namespace ScIDE { namespace Settings {
+
+typedef QSettings::SettingsMap::const_iterator SettingsIterator;
+
+struct IODeviceSource : boost::iostreams::source {
+
+    IODeviceSource ( QIODevice *dev ) : mDev(dev) {}
+    std::streamsize read(char* s, std::streamsize n)
+    {
+        // Read up to n characters from the input
+        // sequence into the buffer s, returning
+        // the number of characters read, or -1
+        // to indicate end-of-sequence.
+
+        qint64 ret = mDev->read(s, n);
+        if( ret == 0 ) ret = -1;
+        return ret;
+    }
+
+    QIODevice *mDev;
+};
+
+static QVariant parseTextFormat( const YAML::Node & node )
+{
+    using namespace YAML;
+
+    if(node.Type() != NodeType::Map) {
+        qWarning("YAML parsing: a node tagged 'textFormat' has wrong type (not a map)");
+        return QVariant();
+    }
+
+    const Node *n;
+    std::string val;
+    QTextCharFormat fm;
+
+    n = node.FindValue("color");
+    if(n && n->Type() == NodeType::Scalar) {
+        n->GetScalar(val);
+        fm.setForeground(QColor(val.c_str()));
+    }
+
+    n = node.FindValue("background");
+    if(n && n->Type() == NodeType::Scalar) {
+        n->GetScalar(val);
+        QColor color(val.c_str());
+        if(color.isValid())
+            fm.setBackground(color);
+    }
+
+    n = node.FindValue("bold");
+    if(n && n->Type() == NodeType::Scalar) {
+        bool bold = n->to<bool>();
+        if(bold) fm.setFontWeight(QFont::Bold);
+    }
+
+    n = node.FindValue("italic");
+    if(n && n->Type() == NodeType::Scalar) {
+        bool italic = n->to<bool>();
+        fm.setFontItalic(italic);
+    }
+
+    n = node.FindValue("underline");
+    if(n && n->Type() == NodeType::Scalar) {
+        bool underline = n->to<bool>();
+        fm.setFontUnderline(underline);
+    }
+
+    return QVariant::fromValue<QTextCharFormat>(fm);
+}
+
+static QVariant parseScalar( const YAML::Node & node )
+{
+    using namespace YAML;
+
+    switch (node.Type())
+    {
+        case NodeType::Scalar:
+        {
+            std::string val;
+            node >> val;
+            return QVariant( QString::fromUtf8(val.c_str()) );
+        }
+
+        case NodeType::Sequence:
+        {
+            QVariantList list;
+            YAML::Iterator it;
+            for(it = node.begin(); it != node.end(); ++it)
+                list.append( parseScalar( *it ) );
+            return QVariant::fromValue<QVariantList>( list );
+        }
+
+        case NodeType::Map:
+        {
+            QVariantMap map;
+            YAML::Iterator it;
+            for(it = node.begin(); it != node.end(); ++it)
+            {
+                std::string key;
+                it.first() >> key;
+                QVariant value = parseScalar( it.second() );
+                map.insert( QString(key.c_str()), value );
+            }
+            return QVariant::fromValue<QVariantMap>( map );
+        }
+
+        case NodeType::Null:
+            return QVariant();
+
+        default:
+            qWarning("YAML parsing: unsupported node type.");
+            return QVariant();
+    }
+}
+
+static void parseNode( const YAML::Node &node, const QString &parentKey, QSettings::SettingsMap &map )
+{
+    using namespace YAML;
+
+    static const std::string textFormatTag("!textFormat");
+    static const std::string qVariantListTag("!QVariantList");
+    static const std::string qVariantMapTag("!QVariantMap");
+
+    Q_ASSERT(node.Type() == NodeType::Map);
+
+    YAML::Iterator it;
+    for(it = node.begin(); it != node.end(); ++it) {
+        std::string key;
+        it.first() >> key;
+        QString childKey( parentKey );
+        if (!childKey.isEmpty()) childKey += "/";
+        childKey += key.c_str();
+
+        const YAML::Node & childNode = it.second();
+        const std::string & childTag = childNode.Tag();
+
+        if (childTag == textFormatTag)
+            map.insert( childKey, parseTextFormat(childNode) );
+        else if (childTag == qVariantListTag || childTag == qVariantMapTag || childNode.Type() != NodeType::Map)
+            map.insert( childKey, parseScalar( childNode ) );
+        else if (childNode.Type() == NodeType::Map)
+            parseNode( childNode, childKey, map );
+    }
+}
+
+bool readSettings(QIODevice &device, QSettings::SettingsMap &map)
+{
+    using namespace YAML;
+
+    try {
+        boost::iostreams::stream<IODeviceSource> in( &device );
+        Parser parser(in);
+        Node doc;
+        while(parser.GetNextDocument(doc)) {
+            if( doc.Type() != NodeType::Map ) continue;
+            QString key;
+            parseNode( doc, key, map );
+        }
+
+        return true;
+    }
+    catch (std::exception & e) {
+        qWarning() << "Exception when parsing YAML config file:" << e.what();
+        return false;
+    }
+}
+
+static void writeTextFormat( const QTextCharFormat &fm, YAML::Emitter &out )
+{
+    out << YAML::LocalTag("textFormat");
+    out << YAML::BeginMap;
+
+    if (fm.hasProperty(QTextFormat::ForegroundBrush)) {
+        out << YAML::Key << "color";
+        out << YAML::Value << fm.foreground().color().name().toStdString();
+    }
+
+    if (fm.hasProperty(QTextFormat::BackgroundBrush)) {
+        out << YAML::Key << "background";
+        out << YAML::Value << fm.background().color().name().toStdString();
+    }
+
+    if (fm.hasProperty(QTextFormat::FontWeight)) {
+        out << YAML::Key << "bold";
+        out << YAML::Value << (fm.fontWeight() == QFont::Bold);
+    }
+
+    if (fm.hasProperty(QTextFormat::FontItalic)) {
+        out << YAML::Key << "italic";
+        out << YAML::Value << fm.fontItalic();
+    }
+
+    if (fm.hasProperty(QTextFormat::TextUnderlineStyle)) {
+        qDebug("saving underline");
+        out << YAML::Key << "underline";
+        out << YAML::Value << fm.fontUnderline();
+    }
+
+    out << YAML::EndMap;
+}
+
+static void writeValue( const QVariant &var, YAML::Emitter &out )
+{
+    switch(var.type()) {
+    case QVariant::Invalid:
+    {
+        out << YAML::Null;
+        break;
+    }
+    case QVariant::KeySequence:
+    {
+        QKeySequence kseq = var.value<QKeySequence>();
+
+        out << kseq.toString( QKeySequence::PortableText ).toUtf8().constData();
+
+        break;
+    }
+    case QVariant::List:
+    {
+        out << YAML::LocalTag("QVariantList") << YAML::BeginSeq;
+
+        QVariantList list = var.value<QVariantList>();
+        foreach (const QVariant & var, list)
+            writeValue( var, out );
+
+        out << YAML::EndSeq;
+
+        break;
+    }
+    case QVariant::Map:
+    {
+        out << YAML::LocalTag("QVariantMap") << YAML::BeginMap;
+
+        QVariantMap map = var.value<QVariantMap>();
+        QVariantMap::iterator it;
+        for (it = map.begin(); it != map.end(); ++it)
+        {
+            out << YAML::Key << it.key().toStdString();
+            out << YAML::Value;
+            writeValue( it.value(), out );
+        }
+
+        out << YAML::EndMap;
+
+        break;
+    }
+    case QVariant::UserType:
+    {
+        int utype = var.userType();
+
+        if (utype == qMetaTypeId<QTextCharFormat>())
+        {
+            writeTextFormat( var.value<QTextCharFormat>(), out );
+        }
+        else
+        {
+            out << var.toString().toUtf8().constData();
+        }
+        break;
+    }
+    default:
+    {
+        out << var.toString().toUtf8().constData();
+    }
+    }
+}
+
+static void writeGroup( const QString &groupKey, YAML::Emitter &out,
+                        SettingsIterator &it, const QSettings::SettingsMap &map )
+{
+    out << YAML::BeginMap;
+
+    int groupKeyLen = groupKey.size();
+
+    while(it != map.end())
+    {
+        QString key( it.key() );
+
+        if (!key.startsWith(groupKey)) break;
+
+        int i_separ = key.indexOf("/", groupKeyLen);
+        if (i_separ != -1) {
+            // There is child nodes
+            key.truncate( i_separ + 1 );
+
+            QString yamlKey(key);
+            yamlKey.remove(0, groupKeyLen);
+            yamlKey.chop(1);
+
+            out << YAML::Key << yamlKey.toStdString();
+            out << YAML::Value;
+
+            writeGroup( key, out, it, map );
+        }
+        else
+        {
+            // There is no child nodes
+            key.remove(0, groupKeyLen);
+
+            out << YAML::Key << key.toStdString();
+            out << YAML::Value;
+
+            writeValue( it.value(), out );
+
+            ++it;
+        }
+    }
+
+    out << YAML::EndMap;
+}
+
+bool writeSettings(QIODevice &device, const QSettings::SettingsMap &map)
+{
+    try {
+        YAML::Emitter out;
+        SettingsIterator it = map.begin();
+        writeGroup( "", out, it, map );
+        device.write(out.c_str());
+        return true;
+    }
+    catch (std::exception & e) {
+        qWarning() << "Exception when writing YAML config file:" << e.what();
+        return false;
+    }
+}
+
+QSettings::Format serializationFormat() {
+    static QSettings::Format format =
+        QSettings::registerFormat( "yaml", readSettings, writeSettings );
+
+    if( format == QSettings::InvalidFormat )
+        qWarning("Could not register settings format");
+
+    return format;
+}
+
+void printSettings (const QSettings * settings)
+{
+    using namespace std;
+
+    cout << "config filename: " << settings->fileName().toStdString() << endl;
+    QStringList keys = settings->allKeys();
+    cout << "num keys: " << keys.count() << endl;
+    Q_FOREACH( QString key, keys ) {
+        QVariant var = settings->value(key);
+        if (var.type() == QVariant::Invalid)
+            cout << key.toStdString() << ": <null>" << endl;
+        else if (var.type() == QVariant::String)
+            cout << key.toStdString() << ": " << var.toString().toStdString() << endl;
+        else
+            cout << key.toStdString() << ": <unknown value type>" << endl;
+    }
+}
+
+}} // namespace ScIDE::Settings
diff --git a/editors/sc-ide/core/settings/serialization.hpp b/editors/sc-ide/core/settings/serialization.hpp
new file mode 100644
index 0000000..21ec7c6
--- /dev/null
+++ b/editors/sc-ide/core/settings/serialization.hpp
@@ -0,0 +1,36 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_CORE_SETTINGS_SERIALIZATION_HPP_INCLUDED
+#define SCIDE_CORE_SETTINGS_SERIALIZATION_HPP_INCLUDED
+
+#include <QSettings>
+#include <QTextCharFormat>
+#include <QVariant>
+
+namespace ScIDE { namespace Settings {
+
+QSettings::Format serializationFormat();
+
+}} // namespace ScIDE::Settings
+
+Q_DECLARE_METATYPE( QTextCharFormat )
+
+#endif // SCIDE_CORE_SETTINGS_SERIALIZATION_HPP_INCLUDED
diff --git a/editors/sc-ide/core/sig_mux.cpp b/editors/sc-ide/core/sig_mux.cpp
new file mode 100644
index 0000000..8853477
--- /dev/null
+++ b/editors/sc-ide/core/sig_mux.cpp
@@ -0,0 +1,147 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "sig_mux.hpp"
+#include <cstring>
+
+namespace ScIDE {
+
+SignalMultiplexer::SignalMultiplexer(QObject *parent) :
+    QObject(parent)
+{}
+
+void SignalMultiplexer::connect(QObject *sender, const char *signal, const char *slot, ConnectionMode mode)
+{
+    Q_ASSERT(strlen(signal) > 0);
+    Q_ASSERT(strlen(slot) > 0);
+
+    Connection conn;
+    conn.sender = sender;
+    conn.signal = signal;
+    conn.slot = slot;
+    conn.mode = mode;
+
+    mConnections << conn;
+    connect(conn);
+}
+
+bool SignalMultiplexer::disconnect(QObject *sender, const char *signal, const char *slot)
+{
+    QList<Connection>::Iterator it;
+    for (it = mConnections.begin(); it != mConnections.end(); ++it) {
+        Connection conn = *it;
+        if ((QObject*)conn.sender == sender &&
+                qstrcmp(conn.signal, signal) == 0 && qstrcmp(conn.slot, slot) == 0) {
+            disconnect(conn);
+            mConnections.erase(it);
+            return true;
+        }
+    }
+    return false;
+}
+
+void SignalMultiplexer::connect(const char *signal, QObject *receiver, const char *slot, ConnectionMode mode)
+{
+    Connection conn;
+    conn.receiver = receiver;
+    conn.signal = signal;
+    conn.slot = slot;
+    conn.mode = mode;
+
+    mConnections << conn;
+    connect(conn);
+}
+
+bool SignalMultiplexer::disconnect(const char *signal, QObject *receiver, const char *slot)
+{
+    QList<Connection>::Iterator it;
+    for (it = mConnections.begin(); it != mConnections.end(); ++it) {
+        Connection conn = *it;
+        if ((QObject*)conn.receiver == receiver &&
+                qstrcmp(conn.signal, signal) == 0 && qstrcmp(conn.slot, slot) == 0) {
+            disconnect(conn);
+            mConnections.erase(it);
+            return true;
+        }
+    }
+    return false;
+}
+
+void SignalMultiplexer::connect(const Connection &conn)
+{
+    if (!mObject)
+        return;
+    if (!conn.sender && !conn.receiver)
+        return;
+
+    bool optional = conn.mode == ConnectionOptional;
+
+    // HACK: for QMetaObject::indexOfSlot/Signal we have to skip first char
+    // that's added by SLOT() and SIGNAL() macros
+
+    if (conn.sender) {
+        if (optional && (mObject->metaObject()->indexOfSlot(conn.slot+1) == -1))
+            return;
+        QObject::connect((QObject*)conn.sender, conn.signal, (QObject*)mObject, conn.slot);
+    } else {
+        if (optional && (mObject->metaObject()->indexOfSignal(conn.signal+1) == -1))
+            return;
+        QObject::connect((QObject*)mObject, conn.signal, (QObject*)conn.receiver, conn.slot);
+    }
+}
+
+void SignalMultiplexer::disconnect(const Connection &conn)
+{
+    if (!mObject)
+        return;
+    if (!conn.sender && !conn.receiver)
+        return;
+
+    bool optional = conn.mode == ConnectionOptional;
+
+    // HACK: for QMetaObject::indexOfSlot/Signal we have to skip first char
+    // that's added by SLOT() and SIGNAL() macros
+
+    if (conn.sender) {
+        if (optional && (mObject->metaObject()->indexOfSlot(conn.slot+1) == -1))
+            return;
+        QObject::disconnect((QObject*)conn.sender, conn.signal, (QObject*)mObject, conn.slot);
+    } else {
+        if (optional && (mObject->metaObject()->indexOfSignal(conn.signal+1) == -1))
+            return;
+        QObject::disconnect((QObject*)mObject, conn.signal, (QObject*)conn.receiver, conn.slot);
+    }
+}
+
+
+void SignalMultiplexer::setCurrentObject(QObject *newObject)
+{
+    if (newObject == mObject)
+        return;
+
+    QList<Connection>::ConstIterator it;
+    for (it = mConnections.begin(); it != mConnections.end(); ++it)
+        disconnect(*it);
+    mObject = newObject;
+    for (it = mConnections.begin(); it != mConnections.end(); ++it)
+        connect(*it);
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/core/sig_mux.hpp b/editors/sc-ide/core/sig_mux.hpp
new file mode 100644
index 0000000..321a171
--- /dev/null
+++ b/editors/sc-ide/core/sig_mux.hpp
@@ -0,0 +1,71 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_SIG_MUX_HPP_INCLUDED
+#define SCIDE_SIG_MUX_HPP_INCLUDED
+
+#include <QObject>
+#include <QPointer>
+#include <QList>
+
+namespace ScIDE {
+
+class SignalMultiplexer : public QObject
+{
+    Q_OBJECT
+
+public:
+    enum ConnectionMode {
+        ConnectionNecessary = 0,
+        ConnectionOptional = 1
+    };
+
+    SignalMultiplexer(QObject *parent = 0);
+
+    void connect(QObject *sender, const char *signal, const char *slot, ConnectionMode = ConnectionNecessary);
+    bool disconnect(QObject *sender, const char *signal, const char *slot);
+    void connect(const char *signal, QObject *receiver, const char *slot, ConnectionMode = ConnectionNecessary);
+    bool disconnect(const char *signal, QObject *receiver, const char *slot);
+
+    QObject *currentObject() const { return mObject; }
+
+public slots:
+    void setCurrentObject(QObject *newObject);
+
+private:
+    struct Connection
+    {
+        QPointer<QObject> sender;
+        QPointer<QObject> receiver;
+        const char *signal;
+        const char *slot;
+        ConnectionMode mode;
+    };
+
+    void connect(const Connection &conn);
+    void disconnect(const Connection &conn);
+
+    QPointer<QObject> mObject;
+    QList<Connection> mConnections;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/core/util/overriding_action.hpp b/editors/sc-ide/core/util/overriding_action.hpp
new file mode 100644
index 0000000..709d854
--- /dev/null
+++ b/editors/sc-ide/core/util/overriding_action.hpp
@@ -0,0 +1,107 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_CORE_UTIL_OVERRIDING_ACTION_HPP_INCLUDED
+#define SCIDE_CORE_UTIL_OVERRIDING_ACTION_HPP_INCLUDED
+
+#include <QAction>
+#include <QWidget>
+#include <QKeyEvent>
+#include <QKeySequence>
+
+namespace ScIDE {
+
+class OverridingAction : public QAction
+{
+public:
+    OverridingAction( QObject * parent ):
+        QAction(parent)
+    {
+        setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    }
+
+    OverridingAction ( const QString & text, QObject * parent ):
+        QAction(text, parent)
+    {
+        setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    }
+
+    OverridingAction ( const QIcon & icon, const QString & text, QObject * parent ):
+        QAction(icon, text, parent)
+    {
+        setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    }
+
+    void addToWidget( QWidget * widget )
+    {
+        widget->addAction(this);
+        widget->installEventFilter(this);
+    }
+
+    static QKeySequence keySequence( QKeyEvent *event )
+    {
+        if ( event->key() >= Qt::Key_Shift &&
+             event->key() <= Qt::Key_Alt )
+            return QKeySequence();
+
+        return QKeySequence( event->modifiers() | event->key() );
+    }
+
+protected:
+    virtual bool eventFilter ( QObject * object, QEvent * event )
+    {
+        Q_UNUSED(object);
+        switch (event->type()) {
+        case QEvent::ShortcutOverride: {
+            QKeySequence sequence = keySequence( static_cast<QKeyEvent*>(event) );
+            if (sequence.isEmpty())
+                break;
+            foreach ( const QKeySequence & shortcut, shortcuts() ) {
+                if (shortcut == sequence) {
+                    event->accept();
+                    return true;
+                }
+            }
+            break;
+        }
+        case QEvent::KeyPress: {
+            QKeySequence sequence = keySequence( static_cast<QKeyEvent*>(event) );
+            if (sequence.isEmpty())
+                break;
+            foreach ( const QKeySequence & shortcut, shortcuts() ) {
+                if (shortcut == sequence) {
+                    event->accept();
+                    activate( QAction::Trigger );
+                    return true;
+                }
+            }
+            break;
+        }
+        default:
+            break;
+        }
+
+        return QAction::eventFilter(object, event);
+    }
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_CORE_UTIL_OVERRIDING_ACTION_HPP_INCLUDED
diff --git a/editors/sc-ide/forms/settings_dialog.ui b/editors/sc-ide/forms/settings_dialog.ui
new file mode 100644
index 0000000..06c6f89
--- /dev/null
+++ b/editors/sc-ide/forms/settings_dialog.ui
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ConfigDialog</class>
+ <widget class="QDialog" name="ConfigDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>579</width>
+    <height>365</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>SuperCollider IDE Configuration</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="ScIDE::IconListWidget" name="configPageList">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>100</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="dragDropMode">
+        <enum>QAbstractItemView::NoDragDrop</enum>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>32</width>
+         <height>32</height>
+        </size>
+       </property>
+       <property name="isWrapping" stdset="0">
+        <bool>false</bool>
+       </property>
+       <property name="viewMode">
+        <enum>QListView::ListMode</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QStackedWidget" name="configPageStack">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>1</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="layoutDirection">
+        <enum>Qt::LeftToRight</enum>
+       </property>
+       <property name="currentIndex">
+        <number>-1</number>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
+     </property>
+     <property name="centerButtons">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScIDE::IconListWidget</class>
+   <extends>QListWidget</extends>
+   <header>icon_list_widget.hpp</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>ConfigDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>ConfigDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>configPageList</sender>
+   <signal>currentRowChanged(int)</signal>
+   <receiver>configPageStack</receiver>
+   <slot>setCurrentIndex(int)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>54</x>
+     <y>167</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>341</x>
+     <y>167</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/editors/sc-ide/forms/settings_editor.ui b/editors/sc-ide/forms/settings_editor.ui
new file mode 100644
index 0000000..c96521e
--- /dev/null
+++ b/editors/sc-ide/forms/settings_editor.ui
@@ -0,0 +1,522 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EditorConfigPage</class>
+ <widget class="QWidget" name="EditorConfigPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>615</width>
+    <height>471</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QSplitter" name="splitter">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <widget class="QTabWidget" name="tabs">
+      <property name="currentIndex">
+       <number>0</number>
+      </property>
+      <property name="documentMode">
+       <bool>false</bool>
+      </property>
+      <widget class="QWidget" name="tab">
+       <attribute name="title">
+        <string>Behavior</string>
+       </attribute>
+       <layout class="QVBoxLayout" name="verticalLayout_4">
+        <item>
+         <widget class="QGroupBox" name="groupBox_3">
+          <property name="title">
+           <string>Indentation</string>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_3">
+           <item>
+            <layout class="QHBoxLayout" name="horizontalLayout">
+             <item>
+              <widget class="QLabel" name="label">
+               <property name="text">
+                <string>Indentation width:</string>
+               </property>
+               <property name="indent">
+                <number>4</number>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QSpinBox" name="indentWidth">
+               <property name="alignment">
+                <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+               </property>
+               <property name="specialValueText">
+                <string/>
+               </property>
+               <property name="suffix">
+                <string> spaces</string>
+               </property>
+               <property name="prefix">
+                <string/>
+               </property>
+               <property name="minimum">
+                <number>1</number>
+               </property>
+               <property name="value">
+                <number>4</number>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <spacer name="horizontalSpacer">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>40</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+            </layout>
+           </item>
+           <item>
+            <widget class="QCheckBox" name="spaceIndent">
+             <property name="text">
+              <string>Use spaces instead of tabs</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="groupBox_4">
+          <property name="title">
+           <string>Code Evaluation</string>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_5">
+           <item>
+            <layout class="QHBoxLayout" name="horizontalLayout_4">
+             <item>
+              <widget class="QLabel" name="label_11">
+               <property name="text">
+                <string>Blink duration:</string>
+               </property>
+               <property name="indent">
+                <number>4</number>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QSpinBox" name="blinkDuration">
+               <property name="alignment">
+                <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+               </property>
+               <property name="suffix">
+                <string>ms</string>
+               </property>
+               <property name="minimum">
+                <number>1</number>
+               </property>
+               <property name="maximum">
+                <number>1000</number>
+               </property>
+               <property name="value">
+                <number>600</number>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <spacer name="horizontalSpacer_2">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>40</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+            </layout>
+           </item>
+           <item>
+            <widget class="QCheckBox" name="stepForwardEvaluation">
+             <property name="text">
+              <string>Step forward after evaluating a line</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>248</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tab_2">
+       <attribute name="title">
+        <string>Display</string>
+       </attribute>
+       <layout class="QVBoxLayout" name="verticalLayout_6">
+        <item>
+         <widget class="QCheckBox" name="editorLineWrap">
+          <property name="text">
+           <string>Wrap text in code editor</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QCheckBox" name="postWindowLineWrap">
+          <property name="text">
+           <string>Wrap text in post window</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_3">
+          <item>
+           <widget class="QLabel" name="label_12">
+            <property name="text">
+             <string>Post window scrollback:</string>
+            </property>
+            <property name="indent">
+             <number>4</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="postWindowScrollback">
+            <property name="alignment">
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+            <property name="suffix">
+             <string> lines</string>
+            </property>
+            <property name="minimum">
+             <number>0</number>
+            </property>
+            <property name="maximum">
+             <number>1000000</number>
+            </property>
+            <property name="singleStep">
+             <number>1</number>
+            </property>
+            <property name="value">
+             <number>1000</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_3">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>346</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="colorsTab">
+       <attribute name="title">
+        <string>Font && Colors</string>
+       </attribute>
+       <layout class="QVBoxLayout" name="verticalLayout_8">
+        <item>
+         <widget class="QGroupBox" name="groupBox">
+          <property name="title">
+           <string>Font</string>
+          </property>
+          <layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,0,0,0,0,0,0">
+           <item row="1" column="1">
+            <widget class="QComboBox" name="fontCombo">
+             <property name="frame">
+              <bool>true</bool>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="4">
+            <widget class="QSpinBox" name="fontSize">
+             <property name="minimum">
+              <number>1</number>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="0" colspan="2">
+            <widget class="QCheckBox" name="onlyMonoFonts">
+             <property name="text">
+              <string>Show only monospaced</string>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="2">
+            <spacer name="horizontalSpacer_4">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeType">
+              <enum>QSizePolicy::Fixed</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item row="1" column="0">
+            <widget class="QLabel" name="label_16">
+             <property name="text">
+              <string>Family:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="3">
+            <widget class="QLabel" name="label_15">
+             <property name="text">
+              <string>Size:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="7">
+            <spacer name="horizontalSpacer_6">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item row="1" column="6">
+            <widget class="QCheckBox" name="fontAntialias">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="text">
+              <string>Antialias</string>
+             </property>
+             <property name="checked">
+              <bool>true</bool>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="5">
+            <spacer name="horizontalSpacer_5">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeType">
+              <enum>QSizePolicy::Fixed</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="groupBox_2">
+          <property name="title">
+           <string>Colors</string>
+          </property>
+          <layout class="QHBoxLayout" name="horizontalLayout_5">
+           <item>
+            <widget class="QTreeWidget" name="textFormats">
+             <property name="rootIsDecorated">
+              <bool>false</bool>
+             </property>
+             <property name="headerHidden">
+              <bool>true</bool>
+             </property>
+             <attribute name="headerVisible">
+              <bool>false</bool>
+             </attribute>
+             <column>
+              <property name="text">
+               <string notr="true">1</string>
+              </property>
+             </column>
+            </widget>
+           </item>
+           <item>
+            <widget class="QWidget" name="textFormatEdit" native="true">
+             <layout class="QVBoxLayout" name="verticalLayout_2">
+              <item>
+               <layout class="QGridLayout" name="gridLayout">
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_13">
+                  <property name="text">
+                   <string>Background:</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <widget class="ScIDE::ColorWidget" name="bgPicker">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>25</width>
+                    <height>25</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="2">
+                 <widget class="QToolButton" name="bgClearBtn">
+                  <property name="minimumSize">
+                   <size>
+                    <width>25</width>
+                    <height>25</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string>X</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_14">
+                  <property name="text">
+                   <string>Foreground:</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="ScIDE::ColorWidget" name="fgPicker">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>25</width>
+                    <height>25</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="2">
+                 <widget class="QToolButton" name="fgClearBtn">
+                  <property name="minimumSize">
+                   <size>
+                    <width>25</width>
+                    <height>25</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string>X</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <layout class="QVBoxLayout" name="verticalLayout_7">
+                <item>
+                 <widget class="QCheckBox" name="italicOption">
+                  <property name="text">
+                   <string>Italic</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QCheckBox" name="boldOption">
+                  <property name="text">
+                   <string>Bold</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <spacer name="verticalSpacer_3">
+                <property name="orientation">
+                 <enum>Qt::Vertical</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>294</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+             </layout>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScIDE::ColorWidget</class>
+   <extends>QLabel</extends>
+   <header>color_widget.hpp</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/editors/sc-ide/forms/settings_general.ui b/editors/sc-ide/forms/settings_general.ui
new file mode 100644
index 0000000..ce98720
--- /dev/null
+++ b/editors/sc-ide/forms/settings_general.ui
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>GeneralConfigPage</class>
+ <widget class="QWidget" name="GeneralConfigPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>500</width>
+    <height>356</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>On application start:</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="startNewSessionOption">
+     <property name="text">
+      <string>Start a new session</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">startSessionOptions</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <widget class="QRadioButton" name="startLastSessionOption">
+     <property name="text">
+      <string>Load last session</string>
+     </property>
+     <attribute name="buttonGroup">
+      <string notr="true">startSessionOptions</string>
+     </attribute>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QRadioButton" name="startNamedSessionOption">
+       <property name="text">
+        <string>Load session:</string>
+       </property>
+       <attribute name="buttonGroup">
+        <string notr="true">startSessionOptions</string>
+       </attribute>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="startSessionName"/>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>250</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+ <buttongroups>
+  <buttongroup name="startSessionOptions"/>
+ </buttongroups>
+</ui>
diff --git a/editors/sc-ide/forms/settings_sclang.ui b/editors/sc-ide/forms/settings_sclang.ui
new file mode 100644
index 0000000..f110a62
--- /dev/null
+++ b/editors/sc-ide/forms/settings_sclang.ui
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SclangConfigPage</class>
+ <widget class="QWidget" name="SclangConfigPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>613</width>
+    <height>421</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QWidget" name="widget" native="true">
+     <layout class="QFormLayout" name="formLayout">
+      <property name="fieldGrowthPolicy">
+       <enum>QFormLayout::ExpandingFieldsGrow</enum>
+      </property>
+      <item row="0" column="1">
+       <widget class="QCheckBox" name="autoStart">
+        <property name="text">
+         <string>Start Interpreter With IDE</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="label_3">
+        <property name="text">
+         <string>Runtime Directory:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="ScIDE::PathChooserWidget" name="runtimeDir"/>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="ide_sclang_override_configuration_file">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title">
+      <string>Interpreter Options</string>
+     </property>
+     <property name="flat">
+      <bool>false</bool>
+     </property>
+     <property name="checkable">
+      <bool>false</bool>
+     </property>
+     <property name="checked">
+      <bool>false</bool>
+     </property>
+     <layout class="QFormLayout" name="formLayout_2">
+      <property name="fieldGrowthPolicy">
+       <enum>QFormLayout::ExpandingFieldsGrow</enum>
+      </property>
+      <item row="0" column="0">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Include:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QWidget" name="widget_3" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <layout class="QGridLayout" name="gridLayout">
+         <property name="sizeConstraint">
+          <enum>QLayout::SetDefaultConstraint</enum>
+         </property>
+         <item row="0" column="0" rowspan="2">
+          <widget class="QListWidget" name="sclang_include_directories"/>
+         </item>
+         <item row="0" column="2">
+          <layout class="QVBoxLayout" name="verticalLayout_3">
+           <item>
+            <widget class="QToolButton" name="sclang_add_include">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="text">
+              <string>+</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="sclang_remove_include">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="text">
+              <string>-</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="excludeLabel">
+        <property name="text">
+         <string>Exclude:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QWidget" name="widget_2" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_2">
+         <item row="0" column="1" rowspan="3">
+          <widget class="QListWidget" name="sclang_exclude_directories"/>
+         </item>
+         <item row="0" column="3">
+          <layout class="QVBoxLayout" name="verticalLayout_2">
+           <item>
+            <widget class="QToolButton" name="sclang_add_exclude">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="text">
+              <string>+</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="sclang_remove_exclude">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="text">
+              <string>-</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QCheckBox" name="sclang_post_inline_warnings">
+        <property name="text">
+         <string>Post Inline Warnings</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+  <zorder>ide_sclang_override_configuration_file</zorder>
+  <zorder>widget</zorder>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScIDE::PathChooserWidget</class>
+   <extends>QLineEdit</extends>
+   <header>path_chooser_widget.hpp</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/editors/sc-ide/forms/settings_shortcuts.ui b/editors/sc-ide/forms/settings_shortcuts.ui
new file mode 100644
index 0000000..f807ec0
--- /dev/null
+++ b/editors/sc-ide/forms/settings_shortcuts.ui
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ShortcutConfigPage</class>
+ <widget class="QWidget" name="ShortcutConfigPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>507</width>
+    <height>378</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLabel" name="label_3">
+       <property name="text">
+        <string>Filter:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="filter"/>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QTreeWidget" name="actionTree">
+     <column>
+      <property name="text">
+       <string>Action</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Shortcut</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Description</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <layout class="QFormLayout" name="formLayout">
+     <property name="labelAlignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+     </property>
+     <item row="0" column="0">
+      <widget class="QRadioButton" name="defaultOpt">
+       <property name="text">
+        <string>Default:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLabel" name="defaultSeq"/>
+     </item>
+     <item row="1" column="0">
+      <widget class="QRadioButton" name="customOpt">
+       <property name="text">
+        <string>Custom:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="ScIDE::KeySequenceEdit" name="customSeq">
+         <property name="readOnly">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="clearSeq">
+         <property name="text">
+          <string>Clear</string>
+         </property>
+         <property name="toolButtonStyle">
+          <enum>Qt::ToolButtonIconOnly</enum>
+         </property>
+         <property name="autoRaise">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ScIDE::KeySequenceEdit</class>
+   <extends>QLineEdit</extends>
+   <header>key_sequence_edit.hpp</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/editors/sc-ide/primitives/sc_ipc_client.cpp b/editors/sc-ide/primitives/sc_ipc_client.cpp
new file mode 100644
index 0000000..8773c44
--- /dev/null
+++ b/editors/sc-ide/primitives/sc_ipc_client.cpp
@@ -0,0 +1,209 @@
+/*
+ *    SuperCollider Qt IDE
+ *    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+ *    http://www.audiosynth.com
+ *
+ *    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+#include <QtNetwork/QLocalSocket>
+
+#include <cstdlib>
+
+#include <yaml-cpp/emitter.h>
+
+#include "PyrPrimitive.h"
+#include "SCBase.h"
+#include "GC.h"
+#include "PyrKernel.h"
+#include "PyrSymbol.h"
+
+class SCIpcClient
+{
+public:
+    QLocalSocket * mSocket;
+    SCIpcClient( const char * ideName ):
+        mSocket(NULL)
+    {
+        mSocket = new QLocalSocket();
+        mSocket->connectToServer(QString(ideName));
+    }
+
+    void send(const char * data, size_t length)
+    {
+        mSocket->write(data, length);
+    }
+
+    ~SCIpcClient()
+    {
+        mSocket->disconnectFromServer();
+    }
+};
+
+static SCIpcClient * gIpcClient = NULL;
+
+
+int ScIDE_Connect(struct VMGlobals *g, int numArgsPushed)
+{
+    if (gIpcClient) {
+        error("ScIDE already connected\n");
+        return errFailed;
+    }
+
+    PyrSlot * ideNameSlot = g->sp;
+
+    char ideName[1024];
+    int status = slotStrVal(ideNameSlot, ideName, 1024);
+    if (status != errNone)
+        return errWrongType;
+
+    gIpcClient = new SCIpcClient(ideName);
+
+    return errNone;
+}
+
+int ScIDE_Connected(struct VMGlobals *g, int numArgsPushed)
+{
+    PyrSlot * returnSlot = g->sp - numArgsPushed + 1;
+
+    SetBool(returnSlot, gIpcClient != 0);
+
+    return errNone;
+}
+
+struct YAMLSerializer
+{
+    YAML::Emitter emitter;
+
+public:
+    explicit YAMLSerializer (PyrSlot * slot)
+    {
+        serialize(slot);
+    }
+
+    const char * data ()
+    {
+        return emitter.c_str();
+    }
+
+    size_t size()
+    {
+        return emitter.size();
+    }
+
+private:
+    void serialize(PyrSlot * slot)
+    {
+        if (IsFloat(slot)) {
+            emitter << slotRawFloat(slot);
+            return;
+        }
+
+        switch (GetTag(slot)) {
+        case tagNil:
+            emitter << YAML::Null;
+            return;
+
+        case tagInt:
+            emitter << slotRawInt(slot);
+            return;
+
+        case tagFalse:
+            emitter << false;
+            return;
+
+        case tagTrue:
+            emitter << true;
+            return;
+
+        case tagObj:
+            serialize(slotRawObject(slot));
+            return;
+
+        case tagSym:
+            emitter << YAML::DoubleQuoted << slotRawSymbol(slot)->name;
+            return;
+
+        default:
+            printf ("type: %d\n", GetTag(slot));
+            throw std::runtime_error("YAMLSerializer: not implementation for this type");
+        }
+    }
+
+    void serialize(PyrObject * object)
+    {
+        if (isKindOf(object, class_string)) {
+            PyrObjectHdr * hdr = static_cast<PyrObjectHdr*>(object);
+            PyrString * str = static_cast<PyrString*>(hdr);
+
+            size_t len = str->size;
+            char * cstr = new char[len + 10];
+            memcpy(cstr, str->s, len);
+            cstr[len] = 0; // zero-terminate
+            emitter << YAML::DoubleQuoted << cstr;
+            delete[] cstr;
+            return;
+        }
+
+        if (isKindOf(object, class_arrayed_collection)) {
+            emitter << YAML::BeginSeq;
+            for (size_t i = 0; i != object->size; ++i)
+                serialize(object->slots + i);
+
+            emitter << YAML::EndSeq;
+            return;
+        }
+        throw std::runtime_error("YAMLSerializer: not implementation for this type");
+    }
+};
+
+int ScIDE_Send(struct VMGlobals *g, int numArgsPushed)
+{
+    if (!gIpcClient) {
+        error("ScIDE not connected\n");
+        return errFailed;
+    }
+
+    PyrSlot * idSlot = g->sp - 1;
+    char id[255];
+    if (slotStrVal( idSlot, id, 255 ))
+        return errWrongType;
+
+    PyrSlot * argSlot = g->sp;
+
+    try {
+        YAMLSerializer serializer(argSlot);
+
+        QDataStream stream(gIpcClient->mSocket);
+        stream.setVersion(QDataStream::Qt_4_6);
+        stream << QString(id);
+        stream << QString::fromUtf8(serializer.data());
+    } catch (std::exception const & e) {
+        postfl("Exception during ScIDE_Send: %s\n", e.what());
+        return errFailed;
+    }
+
+    return errNone;
+}
+
+
+void initScIDEPrimitives()
+{
+    int base = nextPrimitiveIndex();
+    int index = 0;
+    definePrimitive(base, index++, "_ScIDE_Connect",   ScIDE_Connect, 2, 0);
+    definePrimitive(base, index++, "_ScIDE_Connected", ScIDE_Connected, 1, 0);
+    definePrimitive(base, index++, "_ScIDE_Send",      ScIDE_Send, 3, 0);
+}
diff --git a/editors/sc-ide/resources.qrc b/editors/sc-ide/resources.qrc
new file mode 100644
index 0000000..efc1788
--- /dev/null
+++ b/editors/sc-ide/resources.qrc
@@ -0,0 +1,18 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file alias="icons/sc-cube-16">../../icons/sc_cube_16x16.png</file>
+    <file alias="icons/sc-cube-32">../../icons/sc_cube_32x32.png</file>
+    <file alias="icons/sc-cube-48">../../icons/sc_cube_48x48.png</file>
+    <file alias="icons/sc-cube-128">../../icons/sc_cube_128x128.png</file>
+    <file alias="icons/sc-ide-svg">../../icons/sc_ide.svg</file>
+    <file alias="icons/sc-ide-16">../../icons/sc_ide_16.png</file>
+    <file alias="icons/sc-ide-24">../../icons/sc_ide_24.png</file>
+    <file alias="icons/sc-ide-32">../../icons/sc_ide_32.png</file>
+    <file alias="icons/sc-ide-48">../../icons/sc_ide_48.png</file>
+    <file alias="icons/sc-ide-64">../../icons/sc_ide_64.png</file>
+    <file alias="icons/sc-ide-128">../../icons/sc_ide_128.png</file>
+    <file alias="icons/sc-ide-256">../../icons/sc_ide_256.png</file>
+    <file alias="icons/sc-ide-512">../../icons/sc_ide_512.png</file>
+    <file alias="icons/sc-ide-1024">../../icons/sc_ide_1024.png</file>
+</qresource>
+</RCC>
diff --git a/editors/sc-ide/translations/scide.ts b/editors/sc-ide/translations/scide.ts
new file mode 100644
index 0000000..a6fc833
--- /dev/null
+++ b/editors/sc-ide/translations/scide.ts
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message numerus="yes">
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation>
+            <numerusform>%n occurrence found.</numerusform>
+            <numerusform>%n occurrencies found.</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation>
+            <numerusform>%n occurrence replaced.</numerusform>
+            <numerusform>%n occurrencies replaced.</numerusform>
+        </translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_de.ts b/editors/sc-ide/translations/scide_de.ts
new file mode 100644
index 0000000..5c79d8e
--- /dev/null
+++ b/editors/sc-ide/translations/scide_de.ts
@@ -0,0 +1,2209 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de_DE">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_es.ts b/editors/sc-ide/translations/scide_es.ts
new file mode 100644
index 0000000..809fdba
--- /dev/null
+++ b/editors/sc-ide/translations/scide_es.ts
@@ -0,0 +1,2209 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es_ES">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_fr.ts b/editors/sc-ide/translations/scide_fr.ts
new file mode 100644
index 0000000..72c279f
--- /dev/null
+++ b/editors/sc-ide/translations/scide_fr.ts
@@ -0,0 +1,2209 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_ja.ts b/editors/sc-ide/translations/scide_ja.ts
new file mode 100644
index 0000000..569aef9
--- /dev/null
+++ b/editors/sc-ide/translations/scide_ja.ts
@@ -0,0 +1,2207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja_JP">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_pt.ts b/editors/sc-ide/translations/scide_pt.ts
new file mode 100644
index 0000000..9056291
--- /dev/null
+++ b/editors/sc-ide/translations/scide_pt.ts
@@ -0,0 +1,2209 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pt_PT">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_ru.ts b/editors/sc-ide/translations/scide_ru.ts
new file mode 100644
index 0000000..1ada17e
--- /dev/null
+++ b/editors/sc-ide/translations/scide_ru.ts
@@ -0,0 +1,2211 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru_RU">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_sl.ts b/editors/sc-ide/translations/scide_sl.ts
new file mode 100644
index 0000000..ef10905
--- /dev/null
+++ b/editors/sc-ide/translations/scide_sl.ts
@@ -0,0 +1,2213 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sl_SI">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_sv.ts b/editors/sc-ide/translations/scide_sv.ts
new file mode 100644
index 0000000..ecd5183
--- /dev/null
+++ b/editors/sc-ide/translations/scide_sv.ts
@@ -0,0 +1,2209 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sv_SE">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/translations/scide_zh.ts b/editors/sc-ide/translations/scide_zh.ts
new file mode 100644
index 0000000..72b6c93
--- /dev/null
+++ b/editors/sc-ide/translations/scide_zh.ts
@@ -0,0 +1,2207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_CN">
+<context>
+    <name>ConfigDialog</name>
+    <message>
+        <location filename="../forms/settings_dialog.ui" line="14"/>
+        <source>SuperCollider IDE Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>EditorConfigPage</name>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="37"/>
+        <source>Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="92"/>
+        <source>Use spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="45"/>
+        <source>Indentation width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="31"/>
+        <source>Behavior</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="61"/>
+        <source> spaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="102"/>
+        <source>Code Evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="110"/>
+        <source>Blink duration:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="123"/>
+        <source>ms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="154"/>
+        <source>Step forward after evaluating a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="178"/>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="184"/>
+        <source>Wrap text in code editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="191"/>
+        <source>Wrap text in post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="200"/>
+        <source>Post window scrollback:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="213"/>
+        <source> lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="261"/>
+        <source>Font && Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="267"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="287"/>
+        <source>Show only monospaced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="310"/>
+        <source>Family:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="317"/>
+        <source>Size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="340"/>
+        <source>Antialias</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="369"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="398"/>
+        <source>Background:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="427"/>
+        <location filename="../forms/settings_editor.ui" line="463"/>
+        <source>X</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="434"/>
+        <source>Foreground:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="474"/>
+        <source>Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_editor.ui" line="481"/>
+        <source>Bold</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>GeneralConfigPage</name>
+    <message>
+        <location filename="../forms/settings_general.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="20"/>
+        <source>On application start:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="27"/>
+        <source>Start a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="37"/>
+        <source>Load last session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_general.ui" line="49"/>
+        <source>Load session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="229"/>
+        <source>Sclang Introspection not available, yet!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_introspection.cpp" line="243"/>
+        <source>Class not defined!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Docklet</name>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="128"/>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Undock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="132"/>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Detach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="136"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="247"/>
+        <source>Attach</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/docklet.cpp" line="277"/>
+        <source>Dock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Document</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="41"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentManager</name>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="142"/>
+        <source>Cannot open file: %1 (file does not exist)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="160"/>
+        <location filename="../core/doc_manager.cpp" line="211"/>
+        <source>Cannot open file for reading: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="175"/>
+        <source>Opening RTF File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="176"/>
+        <source>Warning: RTF file will be converted to plain-text scd file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="290"/>
+        <location filename="../core/doc_manager.cpp" line="297"/>
+        <source>File Extension Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/doc_manager.cpp" line="291"/>
+        <location filename="../core/doc_manager.cpp" line="298"/>
+        <source>The extension of the file has changed. Please reopen file to update editor mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDialog</name>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="61"/>
+        <source>Path</source>
+        <comment>File path.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="63"/>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="74"/>
+        <source>Externally Changed Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="75"/>
+        <source>The following documents have changed externally.
+
+Apply the desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="79"/>
+        <source>Unsaved Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="80"/>
+        <source>The following documents have unsaved changes.
+
+Apply desired actions to selected documents, until the list is empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="92"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="96"/>
+        <source>Over&write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="100"/>
+        <source>&Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="104"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="109"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="113"/>
+        <source>&Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="117"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="122"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="125"/>
+        <source>Select N&one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="275"/>
+        <source>Removed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/documents_dialog.cpp" line="279"/>
+        <source>Modified</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::DocumentsDocklet</name>
+    <message>
+        <location filename="../widgets/doc_list.cpp" line="126"/>
+        <source>Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::GoToLineTool</name>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="52"/>
+        <source>Go</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/goto_line_tool.hpp" line="55"/>
+        <source>Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowser</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="103"/>
+        <source>Home</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="106"/>
+        <source>Zoom In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="110"/>
+        <source>Zoom Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="114"/>
+        <source>Evaluate as Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="256"/>
+        <source>Can not use help - interpreter not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="261"/>
+        <source>Sending request</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserDocklet</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="378"/>
+        <source>Help browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::HelpBrowserFindBox</name>
+    <message>
+        <location filename="../widgets/help_browser.cpp" line="339"/>
+        <source>Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LoadProgressIndicator</name>
+    <message>
+        <location filename="../widgets/help_browser.hpp" line="45"/>
+        <source>Loading</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::LookupDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="186"/>
+        <source>Look Up Implementations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="188"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="203"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="365"/>
+        <source>No result for query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MainWindow</name>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="78"/>
+        <location filename="../widgets/main_window.cpp" line="822"/>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="83"/>
+        <source>Interpreter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="85"/>
+        <source>Server:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="93"/>
+        <source>Command Line:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="219"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="220"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="224"/>
+        <source>&Quit...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="225"/>
+        <source>Ctrl+Q</source>
+        <comment>Quit application</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="226"/>
+        <source>Quit SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="231"/>
+        <source>&New</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="232"/>
+        <source>Ctrl+N</source>
+        <comment>New document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="233"/>
+        <source>Create a new document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="238"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="239"/>
+        <source>Ctrl+O</source>
+        <comment>Open document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="240"/>
+        <source>Open an existing file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="245"/>
+        <location filename="../widgets/main_window.cpp" line="246"/>
+        <source>Open startup file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="251"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="252"/>
+        <source>Ctrl+S</source>
+        <comment>Save document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="253"/>
+        <source>Save the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="258"/>
+        <source>Save &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="259"/>
+        <source>Ctrl+Shift+S</source>
+        <comment>Save &As...</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="260"/>
+        <source>Save the current document into a different file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="265"/>
+        <source>Save All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="266"/>
+        <source>Ctrl+Alt+S</source>
+        <comment>Save all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="267"/>
+        <source>Save all open documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="272"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="273"/>
+        <source>Ctrl+W</source>
+        <comment>Close document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="274"/>
+        <source>Close the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="279"/>
+        <source>Close All...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="280"/>
+        <source>Ctrl+Shift+W</source>
+        <comment>Close all documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="281"/>
+        <source>Close all documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="286"/>
+        <source>&Reload</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="287"/>
+        <source>F5</source>
+        <comment>Reload document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="288"/>
+        <source>Reload the current document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="292"/>
+        <source>Clear</source>
+        <comment>Clear recent documents</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="293"/>
+        <source>Clear list of recent documents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="300"/>
+        <source>&New Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="301"/>
+        <source>Open a new session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="306"/>
+        <source>Save Session &As...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="307"/>
+        <source>Save the current session with a different name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="312"/>
+        <source>&Manage Sessions...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="317"/>
+        <source>&Switch Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="319"/>
+        <source>Ctrl+Shift+Q</source>
+        <comment>Switch Session</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="324"/>
+        <source>&Find...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="325"/>
+        <source>Ctrl+F</source>
+        <comment>Find</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="326"/>
+        <source>Find text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="331"/>
+        <source>&Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="332"/>
+        <source>Ctrl+R</source>
+        <comment>Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="333"/>
+        <source>Find and replace text in document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="338"/>
+        <source>&Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="339"/>
+        <source>Command line for quick code evaluation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="340"/>
+        <source>Ctrl+E</source>
+        <comment>Show command line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="344"/>
+        <source>&Go To Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="345"/>
+        <source>Tool to jump to a line by number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="346"/>
+        <source>Ctrl+L</source>
+        <comment>Show go-to-line tool</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="351"/>
+        <source>&Close Tool Panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="352"/>
+        <source>Close any open tool panel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="353"/>
+        <source>Esc</source>
+        <comment>Close tool box</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="357"/>
+        <source>&Full Screen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="359"/>
+        <source>Ctrl+Shift+F</source>
+        <comment>Show ScIDE in Full Screen</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="363"/>
+        <source>Focus Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="364"/>
+        <source>Focus post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="365"/>
+        <source>Ctrl+P</source>
+        <comment>Focus post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="371"/>
+        <source>Look Up Implementations...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="372"/>
+        <source>Ctrl+Shift+I</source>
+        <comment>Look Up Implementations</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="373"/>
+        <source>Open dialog to look up implementations of a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="377"/>
+        <source>Look Up Implementations for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="378"/>
+        <source>Ctrl+I</source>
+        <comment>Look Up Implementations for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="379"/>
+        <source>Look up implementations of class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="384"/>
+        <source>Look Up References...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="385"/>
+        <source>Ctrl+Shift+U</source>
+        <comment>Look Up References</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="386"/>
+        <source>Open dialog to look up references to a class or a method</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="390"/>
+        <source>Look Up References for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="391"/>
+        <source>Ctrl+U</source>
+        <comment>Look Up References For Selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="392"/>
+        <source>Look up references to class or method under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="397"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="399"/>
+        <source>Ctrl+,</source>
+        <comment>Show configuration dialog</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="401"/>
+        <source>Show configuration dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="407"/>
+        <source>Open &Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="408"/>
+        <source>Open help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="413"/>
+        <source>Look Up Documentation for Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="414"/>
+        <source>Ctrl+D</source>
+        <comment>Look Up Documentation for Cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="415"/>
+        <source>Look up documentation for text under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="420"/>
+        <source>Look Up Documentation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="421"/>
+        <source>Ctrl+Shift+D</source>
+        <comment>Look Up Documentation</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="422"/>
+        <source>Enter text to look up in documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="427"/>
+        <source>&About SuperCollider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="432"/>
+        <source>About &Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="439"/>
+        <source>Show/hide Post docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="445"/>
+        <source>Show/hide Documents docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="451"/>
+        <source>Show/hide Help browser docklet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="461"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="464"/>
+        <source>Open Recent</source>
+        <comment>Open a recent document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="481"/>
+        <source>&Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="484"/>
+        <source>&Open Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="495"/>
+        <source>&Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="519"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="520"/>
+        <source>&Docklets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="526"/>
+        <source>&Tool Panels</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="554"/>
+        <source>&Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="577"/>
+        <source>&Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="697"/>
+        <source>Save Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="698"/>
+        <source>Enter a name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="827"/>
+        <source>Booting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="834"/>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="878"/>
+        <location filename="../widgets/main_window.cpp" line="910"/>
+        <source>SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="879"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to save it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="911"/>
+        <source>There are unsaved changes in document '%1'.
+
+Do you want to reload it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="938"/>
+        <source>Saving read-only file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="939"/>
+        <source>File is read-only. Please select a new location to save to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="950"/>
+        <source>SuperCollider Document (*.scd)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="951"/>
+        <source>SuperCollider Class file (*.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="953"/>
+        <location filename="../widgets/main_window.cpp" line="1002"/>
+        <source>All files (*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1003"/>
+        <source>SuperCollider (*.scd *.sc)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1004"/>
+        <source>SCDoc (*.schelp)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1148"/>
+        <source>Untitled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1274"/>
+        <source>About SuperCollider IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1356"/>
+        <source>Look up Documentation For</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1405"/>
+        <source>Open binary file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/main_window.cpp" line="1406"/>
+        <source>
+
+The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::MultiEditor</name>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="265"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="270"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="271"/>
+        <source>Ctrl+Z</source>
+        <comment>Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="272"/>
+        <source>Undo last editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="278"/>
+        <source>Re&do</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="279"/>
+        <source>Ctrl+Shift+Z</source>
+        <comment>Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="280"/>
+        <source>Redo next editing action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="286"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="287"/>
+        <source>Ctrl+X</source>
+        <comment>Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="289"/>
+        <source>Cut text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="295"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="296"/>
+        <source>Ctrl+C</source>
+        <comment>Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="298"/>
+        <source>Copy text to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="304"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="305"/>
+        <source>Ctrl+V</source>
+        <comment>Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="307"/>
+        <source>Paste text from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="312"/>
+        <location filename="../widgets/multi_editor.cpp" line="313"/>
+        <source>Autoindent Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="318"/>
+        <source>Trigger Autocompletion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="319"/>
+        <source>Suggest possible completions of text at cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="320"/>
+        <source>Ctrl+Space</source>
+        <comment>Trigger Autocompletion</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="326"/>
+        <source>Trigger Method Call Aid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="327"/>
+        <source>Show arguments for currently typed method call</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="328"/>
+        <source>Ctrl+Shift+Space</source>
+        <comment>Trigger Method Call Aid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="335"/>
+        <source>Toggle &Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="336"/>
+        <source>Ctrl+/</source>
+        <comment>Toggle Comment</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="338"/>
+        <source>Toggle Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="344"/>
+        <source>Toggle &Overwrite Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="345"/>
+        <source>Insert</source>
+        <comment>Toggle Overwrite Mode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="351"/>
+        <source>Copy Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="352"/>
+        <source>Ctrl+Alt+Up</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="358"/>
+        <source>Copy Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="359"/>
+        <source>Ctrl+Alt+Down</source>
+        <comment>Copy Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="365"/>
+        <source>Move Line Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="366"/>
+        <source>Ctrl+Shift+Up</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="372"/>
+        <source>Move Line Down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="373"/>
+        <source>Ctrl+Shift+Down</source>
+        <comment>Move Line Up</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="379"/>
+        <source>Go to Previous Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="380"/>
+        <source>Ctrl+[</source>
+        <comment>Go to Previous Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="387"/>
+        <source>Go to Next Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="388"/>
+        <source>Ctrl+]</source>
+        <comment>Go to Next Block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="395"/>
+        <source>Go to Previous Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="396"/>
+        <source>Alt+[</source>
+        <comment>Go to Previous Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="403"/>
+        <source>Go to Next Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="404"/>
+        <source>Alt+]</source>
+        <comment>Go to Next Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="410"/>
+        <source>Go to Previous Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="411"/>
+        <source>Ctrl+Up</source>
+        <comment>Go to Previous Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="416"/>
+        <source>Go to Next Empty Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="417"/>
+        <source>Ctrl+Down</source>
+        <comment>Go to Next Empty Line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="422"/>
+        <source>Select Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="423"/>
+        <source>Ctrl+Shift+R</source>
+        <comment>Select Region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="432"/>
+        <source>&Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="433"/>
+        <source>Ctrl++</source>
+        <comment>Enlarge font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="435"/>
+        <source>Increase displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="440"/>
+        <source>&Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="441"/>
+        <source>Ctrl+-</source>
+        <comment>Shrink font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="443"/>
+        <source>Decrease displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="448"/>
+        <source>&Reset Font Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="449"/>
+        <source>Ctrl+0</source>
+        <comment>Reset font</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="450"/>
+        <source>Reset displayed font size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="454"/>
+        <source>Show Spaces and Tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="460"/>
+        <source>Use Spaces for Indentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="462"/>
+        <source>Indent with spaces instead of tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="468"/>
+        <source>Next Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="470"/>
+        <source>Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="472"/>
+        <source>Ctrl+Alt+Right</source>
+        <comment>Next Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="477"/>
+        <source>Previous Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="479"/>
+        <source>Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="481"/>
+        <source>Ctrl+Alt+Left</source>
+        <comment>Previous Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="486"/>
+        <source>Switch Document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="488"/>
+        <source>Ctrl+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="490"/>
+        <source>Meta+Tab</source>
+        <comment>Switch Document</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="495"/>
+        <source>Split To Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="500"/>
+        <source>Split To Bottom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="505"/>
+        <source>Remove Current Split</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="510"/>
+        <source>Remove All Splits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="518"/>
+        <source>Evaluate &File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="519"/>
+        <source>Evaluate current File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="526"/>
+        <source>&Evaluate Selection, Line or Region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="527"/>
+        <source>Ctrl+Return</source>
+        <comment>Evaluate region</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="528"/>
+        <source>Evaluate current region</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="535"/>
+        <source>&Evaluate Selection or Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="536"/>
+        <source>Shift+Return</source>
+        <comment>Evaluate selection/line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/multi_editor.cpp" line="537"/>
+        <source>Evaluate current selection/line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostDocklet</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="294"/>
+        <source>Post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::PostWindow</name>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="64"/>
+        <source>Post Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="66"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="74"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="75"/>
+        <source>Clear post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="77"/>
+        <source>Ctrl+Shift+P</source>
+        <comment>Clear post window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="86"/>
+        <source>Enlarge Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="88"/>
+        <source>Enlarge post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="92"/>
+        <source>Shrink Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="94"/>
+        <source>Shrink post window font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="102"/>
+        <source>Wrap Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="103"/>
+        <source>Wrap lines wider than the post window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="109"/>
+        <source>Auto Scroll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/post_window.cpp" line="110"/>
+        <source>Scroll to bottom on new posts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ReferencesDialog</name>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="431"/>
+        <source>Look Up References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="433"/>
+        <source>Enter class or method name...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/lookup_dialog.cpp" line="469"/>
+        <source>Introspection data not yet available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScProcess</name>
+    <message>
+        <location filename="../core/sc_process.cpp" line="65"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="67"/>
+        <location filename="../core/sc_process.cpp" line="71"/>
+        <location filename="../core/sc_process.cpp" line="265"/>
+        <source>Boot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="75"/>
+        <location filename="../core/sc_process.cpp" line="248"/>
+        <source>Quit Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="80"/>
+        <source>Reboot Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="85"/>
+        <source>Recompile Class Library</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="86"/>
+        <source>Ctrl+Shift+l</source>
+        <comment>Recompile Class Library)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="91"/>
+        <source>Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="92"/>
+        <source>Ctrl+.</source>
+        <comment>Stop (a.k.a. cmd-period)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="113"/>
+        <source>Interpreter is already running.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="146"/>
+        <source>Failed to start interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="152"/>
+        <location filename="../core/sc_process.cpp" line="163"/>
+        <location filename="../core/sc_process.cpp" line="210"/>
+        <source>Interpreter is not running!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="181"/>
+        <source>Failed to stop interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_process.cpp" line="217"/>
+        <source>Error when passing data to interpreter!</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::ScServer</name>
+    <message>
+        <location filename="../core/sc_server.cpp" line="58"/>
+        <source>Sound Synthesis Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="61"/>
+        <source>Boot or quit server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="62"/>
+        <source>Ctrl+B</source>
+        <comment>Boot or quit default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="66"/>
+        <source>Reboot server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="67"/>
+        <source>Ctrl+Shift+B</source>
+        <comment>Reboot default server</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="71"/>
+        <source>Show server meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="72"/>
+        <source>Ctrl+M</source>
+        <comment>Show server meter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="76"/>
+        <source>Dump node tree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="77"/>
+        <source>Ctrl+T</source>
+        <comment>Dump node tree</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="81"/>
+        <source>Dump node tree with controls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="82"/>
+        <source>Ctrl+Shift+T</source>
+        <comment>Dump node tree with controls</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="234"/>
+        <source>&Quit Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="235"/>
+        <source>Quit sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="240"/>
+        <source>&Boot Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../core/sc_server.cpp" line="241"/>
+        <source>Boot sound synthesis server</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionSwitchDialog</name>
+    <message>
+        <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
+        <source>Switch Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::SessionsDialog</name>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="50"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="51"/>
+        <source>Rename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="88"/>
+        <source>Delete Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="89"/>
+        <source>Are you sure you want to delete session '%1'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="108"/>
+        <source>Rename Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/sessions_dialog.hpp" line="109"/>
+        <source>Enter a new name for the session:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::Dialog</name>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="53"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="60"/>
+        <source>Interpreter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="67"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/dialog.cpp" line="74"/>
+        <source>Shortcuts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::EditorPage</name>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="136"/>
+        <source>General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="140"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="151"/>
+        <source>Line Numbers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="159"/>
+        <source>Selected Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Search Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="168"/>
+        <source>Matching Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Mismatched Brackets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="169"/>
+        <source>Evaluated Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="182"/>
+        <source>Syntax Highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Built-in Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="190"/>
+        <source>Environment Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Class</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>String</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="191"/>
+        <source>Char</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/editor_page.cpp" line="192"/>
+        <source>Primitive</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::SclangPage</name>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
+        <source>ScLang include directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
+        <source>ScLang exclude directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
+        <source>ScLang configuration file updated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
+        <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::Settings::ShortcutsPage</name>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
+        <source>Shortcut '%1' has already been assigned to '%2'.
+
+Would you like to override it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
+        <source>Duplicate Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFindReplacePanel</name>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="46"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="126"/>
+        <source>Find Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="50"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="131"/>
+        <source>Find Previous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="53"/>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="55"/>
+        <source>Replace All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="58"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="63"/>
+        <source>Match Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="65"/>
+        <source>Regular Expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="67"/>
+        <source>Whole Words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="71"/>
+        <source>Find:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="73"/>
+        <source>Replace:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="127"/>
+        <source>Ctrl+G</source>
+        <comment>Find Next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="129"/>
+        <location filename="../widgets/find_replace_tool.cpp" line="134"/>
+        <source>Text Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/find_replace_tool.cpp" line="132"/>
+        <source>Ctrl+Shift+G</source>
+        <comment>Find Previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="299"/>
+        <source>%n occurrencies found.</source>
+        <comment>Find text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../widgets/find_replace_tool.cpp" line="305"/>
+        <source>%n occurrencies replaced.</source>
+        <comment>Find/replace text in document...</comment>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ScIDE::TextFormatListWidget</name>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SclangConfigPage</name>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="33"/>
+        <source>Runtime Directory:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="26"/>
+        <source>Start Interpreter With IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="55"/>
+        <source>Interpreter Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="73"/>
+        <source>Include:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="122"/>
+        <source>Exclude:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="168"/>
+        <source>Post Inline Warnings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="100"/>
+        <location filename="../forms/settings_sclang.ui" line="146"/>
+        <source>+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_sclang.ui" line="110"/>
+        <location filename="../forms/settings_sclang.ui" line="156"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ShortcutConfigPage</name>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="22"/>
+        <source>Filter:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="35"/>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="40"/>
+        <source>Shortcut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="45"/>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="58"/>
+        <source>Default:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="68"/>
+        <source>Custom:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../forms/settings_shortcuts.ui" line="84"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/editors/sc-ide/widgets/cmd_line.cpp b/editors/sc-ide/widgets/cmd_line.cpp
new file mode 100644
index 0000000..57193bf
--- /dev/null
+++ b/editors/sc-ide/widgets/cmd_line.cpp
@@ -0,0 +1,132 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2010-2012 Jakob Leben
+    Copyright (c) 2012 Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "cmd_line.hpp"
+#include "main_window.hpp"
+#include "util/gui_utilities.hpp"
+#include "../core/main.hpp"
+#include "../core/settings/manager.hpp"
+
+#include <QHBoxLayout>
+#include <QLabel>
+#include <QKeyEvent>
+
+namespace ScIDE {
+
+QString CmdLineEdit::symbolUnderCursor()
+{
+    if (hasSelectedText())
+        return selectedText();
+    else {
+        int position = cursorPosition();
+        return wordInStringAt( position, text() );
+    }
+}
+
+bool CmdLineEdit::openDocumentation()
+{
+    return Main::openDocumentation(symbolUnderCursor());
+}
+
+void CmdLineEdit::openDefinition()
+{
+    return Main::openDefinition(symbolUnderCursor(), MainWindow::instance());
+}
+
+void CmdLineEdit::findReferences()
+{
+    return Main::findReferences(symbolUnderCursor(), MainWindow::instance());
+}
+
+
+CmdLine::CmdLine( const QString &text, int maxHist ) :
+    curHistory( -1 ),
+    maxHistory( qMax(1,maxHist) )
+{
+    QLabel *lbl = new QLabel(text);
+
+    expr = new CmdLineEdit;
+
+    QHBoxLayout *l = new QHBoxLayout;
+    l->setContentsMargins(0,0,0,0);
+    l->addWidget(lbl);
+    l->addWidget(expr);
+    setLayout( l );
+
+    expr->installEventFilter( this );
+    setFocusProxy(expr);
+
+    applySettings( Main::settings() );
+}
+
+void CmdLine::applySettings( Settings::Manager *settings )
+{
+    QFont codeFont = settings->codeFont();
+    expr->setFont( codeFont );
+}
+
+bool CmdLine::eventFilter( QObject *, QEvent *e )
+{
+    int type = e->type();
+    if( type != QEvent::KeyPress ) return false;
+
+    QKeyEvent *ke = static_cast<QKeyEvent*>(e);
+
+    switch( ke->key() )
+    {
+    case Qt::Key_Return:
+    case Qt::Key_Enter:
+
+        if( expr->text().isEmpty() ) return true;
+
+        emit invoked( expr->text(), false );
+        if( history.count() == 0 || history[0] != expr->text() )
+        {
+            if( history.count() >= maxHistory ) history.removeAt( history.count() - 1 );
+            history.prepend( expr->text() );
+        }
+        curHistory = -1;
+        expr->clear();
+        return true;
+
+    case Qt::Key_Up:
+        if( curHistory < history.count() - 1 ) {
+            expr->blockSignals(true);
+            expr->setText( history[++curHistory] );
+            expr->blockSignals(false);
+        }
+        return true;
+
+    case Qt::Key_Down:
+        if( curHistory > -1 ) {
+            --curHistory;
+            expr->blockSignals(true);
+            if( curHistory == -1 ) expr->clear();
+            else expr->setText( history[curHistory] );
+            expr->blockSignals(false);
+        }
+        return true;
+
+        default: return false;
+    }
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/cmd_line.hpp b/editors/sc-ide/widgets/cmd_line.hpp
new file mode 100644
index 0000000..f7a4d25
--- /dev/null
+++ b/editors/sc-ide/widgets/cmd_line.hpp
@@ -0,0 +1,73 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2010-2012 Jakob Leben
+    Copyright (c) 2012 Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_CMD_LINE_HPP_INCLUDED
+#define SCIDE_WIDGETS_CMD_LINE_HPP_INCLUDED
+
+#include <QLineEdit>
+#include <QString>
+#include <QWidget>
+
+namespace ScIDE {
+
+namespace Settings { class Manager; }
+
+class CmdLineEdit : public QLineEdit
+{
+    Q_OBJECT
+
+public:
+    explicit CmdLineEdit(QWidget * parent = NULL) :
+        QLineEdit(parent)
+    {}
+
+public Q_SLOTS:
+    bool openDocumentation();
+    void openDefinition();
+    void findReferences();
+
+private:
+    QString symbolUnderCursor();
+};
+
+class CmdLine : public QWidget
+{
+    Q_OBJECT
+
+public:
+    CmdLine( const QString &text, int maxHistory = 30 );
+    void applySettings( Settings::Manager * );
+
+signals:
+    void invoked( const QString &, bool silent );
+
+private:
+    bool eventFilter( QObject *, QEvent * );
+
+    CmdLineEdit *expr;
+    QStringList history;
+    int curHistory;
+    int maxHistory;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_CMD_LINE_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/code_editor/autocompleter.cpp b/editors/sc-ide/widgets/code_editor/autocompleter.cpp
new file mode 100644
index 0000000..d049582
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/autocompleter.cpp
@@ -0,0 +1,1307 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#define QT_NO_DEBUG_OUTPUT
+
+#include "autocompleter.hpp"
+#include "sc_editor.hpp"
+#include "tokens.hpp"
+#include "../util/popup_widget.hpp"
+#include "../../core/sc_introspection.hpp"
+#include "../../core/sc_process.hpp"
+#include "../../core/main.hpp"
+
+#include "yaml-cpp/node.h"
+#include "yaml-cpp/parser.h"
+
+#include <QDebug>
+#include <QLabel>
+#include <QListView>
+#include <QStandardItemModel>
+#include <QStandardItem>
+#include <QHBoxLayout>
+#include <QScrollBar>
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QProxyStyle>
+
+#ifdef Q_WS_X11
+# include <QGtkStyle>
+#endif
+
+namespace ScIDE {
+
+static bool tokenMaybeName( Token::Type type )
+{
+    return (type == Token::Name || type == Token::Keyword || type == Token::Builtin);
+}
+
+static QString incrementedString( const QString & other )
+{
+    if(other.isEmpty())
+        return QString();
+
+    QString str = other;
+    int pos = str.length()-1;
+    str[pos] = QChar( str[pos].unicode() + 1 );
+    return str;
+}
+
+class CompletionMenu : public PopUpWidget
+{
+public:
+    enum DataRole {
+        CompletionRole = Qt::UserRole,
+        MethodRole
+    };
+
+    CompletionMenu( QWidget * parent = 0 ):
+        PopUpWidget(parent),
+        mCompletionRole( Qt::DisplayRole )
+    {
+        mModel = new QStandardItemModel(this);
+        mFilterModel = new QSortFilterProxyModel(this);
+        mFilterModel->setSourceModel(mModel);
+
+        mListView = new QListView();
+        mListView->setModel(mFilterModel);
+        mListView->setFrameShape(QFrame::NoFrame);
+
+        QHBoxLayout *layout = new QHBoxLayout(this);
+        layout->addWidget(mListView);
+        layout->setContentsMargins(1,1,1,1);
+
+        connect(mListView, SIGNAL(clicked(QModelIndex)), this, SLOT(accept()));
+
+        mListView->setFocus(Qt::OtherFocusReason);
+
+        resize(200, 200);
+
+        parent->installEventFilter(this);
+    }
+
+    void addItem( QStandardItem * item )
+    {
+        mModel->appendRow( item );
+    }
+
+    void setCompletionRole( int role )
+    {
+        mFilterModel->setFilterRole(role);
+        mFilterModel->setSortRole(role);
+        mCompletionRole = role;
+    }
+
+    QString currentText()
+    {
+        QStandardItem *item =
+            mModel->itemFromIndex (
+                mFilterModel->mapToSource (
+                    mListView->currentIndex()));
+        if (item)
+            return item->data(mCompletionRole).toString();
+
+        return QString();
+    }
+
+    const ScLanguage::Method * currentMethod()
+    {
+        QStandardItem *item =
+            mModel->itemFromIndex (
+                mFilterModel->mapToSource (
+                    mListView->currentIndex()));
+
+        return item ? item->data(MethodRole).value<const ScLanguage::Method*>() : 0;
+    }
+
+    QString exec( const QRect & rect )
+    {
+        QString result;
+        QPointer<CompletionMenu> self = this;
+        if (PopUpWidget::exec(rect)) {
+            if (!self.isNull())
+                result = currentText();
+        }
+        return result;
+    }
+
+    QSortFilterProxyModel *model() { return mFilterModel; }
+
+    QListView *view() { return mListView; }
+
+protected:
+    virtual bool eventFilter( QObject * obj, QEvent * ev )
+    {
+        if (isVisible() && obj == parentWidget() && ev->type() == QEvent::KeyPress)
+        {
+            QKeyEvent *kev = static_cast<QKeyEvent*>(ev);
+            switch(kev->key())
+            {
+            case Qt::Key_Up:
+            case Qt::Key_Down:
+            case Qt::Key_PageUp:
+            case Qt::Key_PageDown:
+                QApplication::sendEvent( mListView, ev );
+                return true;
+            case Qt::Key_Return:
+            case Qt::Key_Enter:
+                accept();
+                return true;
+            }
+        }
+
+        return PopUpWidget::eventFilter(obj, ev);
+    }
+
+private:
+    QListView *mListView;
+    QStandardItemModel *mModel;
+    QSortFilterProxyModel *mFilterModel;
+    int mCompletionRole;
+};
+
+class MethodCallWidget : public QWidget
+{
+public:
+    MethodCallWidget( QWidget * parent = 0 ):
+        QWidget( parent, Qt::ToolTip )
+    {
+        mLabel = new QLabel(this);
+        mLabel->setTextFormat( Qt::RichText );
+        mLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+
+#ifdef Q_WS_X11
+        QStyle *style = this->style();
+        if (QProxyStyle *proxyStyle = qobject_cast<QProxyStyle*>(style))
+            style = proxyStyle->baseStyle();
+        if ( qobject_cast<QGtkStyle*>(style) ) {
+            QPalette p;
+            p.setColor( QPalette::Window, QColor(255, 255, 220) );
+            p.setColor( QPalette::WindowText, Qt::black );
+            setPalette(p);
+        }
+        else
+#endif
+        {
+            QPalette p( palette() );
+            p.setColor( QPalette::Window, p.color(QPalette::ToolTipBase) );
+            setPalette(p);
+            mLabel->setForegroundRole(QPalette::ToolTipText);
+        }
+    }
+
+    void showMethod( const AutoCompleter::MethodCall & methodCall,
+                     int argNum, const QRect & cursorRect )
+    {
+        const ScLanguage::Method *method = methodCall.method;
+        int argc = method->arguments.count();
+
+        QString text;
+
+        if (methodCall.functionalNotation) {
+            addArgument(text, "receiver", QString(), argNum == 0 );
+            --argNum;
+            if (argc)
+                text += ",   ";
+        }
+
+        for (int i = 0; i < argc; ++i)
+        {
+            const ScLanguage::Argument & arg = method->arguments[i];
+
+            addArgument(text, arg.name, arg.defaultValue, argNum == i);
+
+            if (i != argc - 1)
+                text += ",   ";
+        }
+
+        mLabel->setText(text);
+
+        mTargetRect = cursorRect;
+
+        updateGeometry();
+        show();
+    }
+
+private:
+    void static addArgument ( QString & text, const QString & argText, const QString & valText, bool highlight )
+    {
+        if (highlight) {
+            text += QString(
+                "<span style=\""
+                //"text-decoration: underline;"
+                "font-weight: bold;"
+                "\">");
+        }
+
+        text += argText;
+
+        if (!valText.isEmpty())
+            text += " = " + valText;
+
+        if (highlight)
+            text += "</span>";
+    }
+
+    void updateGeometry() {
+        static const QSize margins = QSize(5,2);
+
+        QSize labelSize = mLabel->sizeHint();
+        mLabel->move(margins.width(), margins.height());
+        mLabel->resize(labelSize);
+
+        QRect rect;
+        rect.setSize( labelSize  + (margins * 2) );
+        rect.moveBottomLeft( mTargetRect.topLeft() );
+
+        QWidget * parentWid = parentWidget();
+        QWidget * referenceWidget = parentWid ? parentWid : this;
+
+        QRect screen = QApplication::desktop()->availableGeometry(referenceWidget);
+        if (!screen.contains(rect))
+        {
+            if (rect.right() > screen.right())
+                rect.moveRight( screen.right() );
+            if (rect.left() < screen.left())
+                rect.moveLeft( screen.left() );
+            if (rect.top() < screen.top())
+                rect.moveTop( qMax( mTargetRect.bottom(), screen.top() ) );
+            if (rect.bottom() > screen.bottom())
+                rect.moveBottom( screen.bottom() );
+        }
+
+        setGeometry(rect);
+    }
+
+    QLabel *mLabel;
+    QRect mTargetRect;
+};
+
+AutoCompleter::AutoCompleter( ScCodeEditor *editor ):
+    QObject(editor),
+    mEditor(editor)
+{
+    mCompletion.on = false;
+    mEditor->installEventFilter(this);
+
+    connect(editor, SIGNAL(cursorPositionChanged()),
+            this, SLOT(onCursorChanged()));
+    connect( editor->horizontalScrollBar(), SIGNAL(valueChanged(int)),
+             this, SLOT(hideWidgets()) );
+    connect( editor->verticalScrollBar(), SIGNAL(valueChanged(int)),
+             this, SLOT(hideWidgets()) );
+    connect(Main::scProcess(), SIGNAL(introspectionAboutToSwap()),
+            this, SLOT(clearMethodCallStack()));
+}
+
+void AutoCompleter::documentChanged( QTextDocument * doc )
+{
+    connect(doc, SIGNAL(contentsChange(int,int,int)),
+            this, SLOT(onContentsChange(int,int,int)));
+}
+
+inline QTextDocument *AutoCompleter::document()
+{
+    return static_cast<QPlainTextEdit*>(mEditor)->document();
+}
+
+void AutoCompleter::keyPress( QKeyEvent *e )
+{
+    int key = e->key();
+    switch (e->key())
+    {
+    case Qt::Key_ParenLeft:
+    case Qt::Key_Comma:
+        triggerMethodCallAid(false);
+        break;
+    case Qt::Key_Backspace:
+    case Qt::Key_Delete:
+        return;
+    default:
+        qDebug(">>> key");
+        // Only trigger completion if event produces at least 1 printable character:
+        if (!mCompletion.on && !e->text().isEmpty() && e->text()[0].isPrint() )
+            triggerCompletion();
+    }
+}
+
+bool AutoCompleter::eventFilter( QObject *object, QEvent *event )
+{
+    if (object != mEditor)
+        return false;
+
+    switch(event->type()) {
+    case QEvent::FocusOut:
+        hideWidgets();
+        break;
+    case QEvent::ShortcutOverride: {
+        QKeyEvent * kevent = static_cast<QKeyEvent*>(event);
+        switch(kevent->key()) {
+        case Qt::Key_Escape:
+            if (mCompletion.menu && mCompletion.menu->isVisible())
+                mCompletion.menu->reject();
+            else if (mMethodCall.menu && mMethodCall.menu->isVisible())
+                mMethodCall.menu->reject();
+            else if (mMethodCall.widget && mMethodCall.widget->isVisible()) {
+                // disable method call aid for current call:
+                Q_ASSERT(!mMethodCall.stack.isEmpty());
+                mMethodCall.stack.top().suppressed = true;
+                hideMethodCall();
+            }
+            else break;
+            return true;
+        }
+        break;
+    }
+    case QEvent::KeyPress: {
+        QKeyEvent * kevent = static_cast<QKeyEvent*>(event);
+        switch(kevent->key()) {
+        case Qt::Key_Tab:
+        case Qt::Key_Backtab:
+            if( trySwitchMethodCallArgument(kevent->key() == Qt::Key_Backtab) ) {
+                event->accept();
+                return true;
+            }
+            break;
+        }
+        break;
+    }
+    default:;
+    }
+
+    return QObject::eventFilter(object, event);
+}
+
+void AutoCompleter::onContentsChange( int pos, int removed, int added )
+{
+    qDebug() << ">>> contentsChange:" << pos << "-" << removed << "+" << added;
+
+    int callIdx = 0;
+    while (callIdx < mMethodCall.stack.count())
+    {
+        MethodCall & call = mMethodCall.stack[callIdx];
+        if (pos > call.position) {
+            break;
+        } else if (pos + removed > call.position) {
+            qDebug("Method call: opening bracket deleted. popping.");
+            mMethodCall.stack.remove(callIdx);
+        } else {
+            // Adjust method call positions.
+            // FIXME: We are disregarding changes in context that defines the method call.
+            // This is for reason of simplicity, and with the benefit that (irrelevant)
+            // indentation changes don't destroy the method call stack
+            qDebug("Method call: adjusting position: %i", call.position);
+            call.position -= removed;
+            call.position += added;
+            qDebug("Method call: adjusted position: %i", call.position);
+            ++callIdx;
+        }
+    }
+
+    if (mCompletion.on)
+    {
+        if(pos < mCompletion.contextPos)
+        {
+            quitCompletion("context changed");
+        }
+        else if(pos <= mCompletion.pos + mCompletion.len)
+        {
+            QTextBlock block( document()->findBlock(mCompletion.pos) );
+            TokenIterator it( block, mCompletion.pos - block.position() );
+            Token::Type type = it.type();
+            if (type == Token::Class || tokenMaybeName(type)) {
+                mCompletion.len = it->length;
+                mCompletion.text = tokenText(it);
+            }
+            else {
+                mCompletion.len = 0;
+                mCompletion.text.clear();
+            }
+            if (!mCompletion.menu.isNull())
+                updateCompletionMenu(false);
+        }
+    }
+}
+
+void AutoCompleter::onCursorChanged()
+{
+    int cursorPos = mEditor->textCursor().position();
+    qDebug(">>> cursorChanged: %i", cursorPos);
+
+    // completion
+    if (mCompletion.on) {
+        if (cursorPos < mCompletion.pos ||
+            cursorPos > mCompletion.pos + mCompletion.len)
+        {
+            quitCompletion("out of bounds");
+        }
+    }
+
+    if (!mMethodCall.menu.isNull()) {
+        qDebug("Method call: quitting menu");
+        delete mMethodCall.menu;
+    }
+
+    updateMethodCall(cursorPos);
+}
+
+void AutoCompleter::triggerCompletion(bool forceShow)
+{
+    if (mCompletion.on) {
+        qDebug("AutoCompleter::triggerCompletion(): completion already started.");
+        updateCompletionMenu(forceShow);
+        return;
+    }
+
+    QTextCursor cursor( mEditor->textCursor() );
+    const int cursorPos = cursor.positionInBlock();
+    QTextBlock block( cursor.block() );
+    TokenIterator it( block, cursorPos - 1 );
+
+    if (!it.isValid())
+        return;
+
+    const Token & triggeringToken = *it;
+
+    if (triggeringToken.type == Token::Class)
+    {
+        if (triggeringToken.length < 3)
+            return;
+        mCompletion.type = ClassCompletion;
+        mCompletion.pos = it.position();
+        mCompletion.len = it->length;
+        mCompletion.text = tokenText(it);
+        mCompletion.contextPos = mCompletion.pos + 3;
+        mCompletion.base = mCompletion.text;
+        mCompletion.base.truncate(3);
+    }
+    else {
+        TokenIterator objectIt, dotIt, nameIt;
+
+        Token::Type objectTokenType = Token::Unknown;
+
+        if (tokenMaybeName(it.type())) {
+            nameIt = it;
+            --it;
+        }
+
+        if (it.isValid() && it.character() == '.') {
+            dotIt = it;
+            --it;
+        }
+        else
+            // don't trigger on method names without preceding dot (for now)
+            return;
+
+        if (dotIt.isValid()) {
+            objectTokenType = it.type();
+            switch (objectTokenType) {
+            case Token::Class:
+            case Token::Char:
+            case Token::StringMark:
+            case Token::Builtin:
+            case Token::Symbol:
+            case Token::SymbolMark:
+            case Token::Float:
+            case Token::RadixFloat:
+            case Token::HexInt:
+                objectIt = it;
+                break;
+
+            default:;
+            }
+        }
+
+        if (!objectIt.isValid() && (!nameIt.isValid() || nameIt->length < 3))
+            return;
+
+        if (nameIt.isValid()) {
+            mCompletion.pos = nameIt.position();
+            mCompletion.len = nameIt->length;
+            mCompletion.text = tokenText(nameIt);
+        } else {
+            mCompletion.pos = dotIt.position() + 1;
+            mCompletion.len = 0;
+            mCompletion.text.clear();
+        }
+
+        if (objectIt.isValid()) {
+            mCompletion.contextPos = mCompletion.pos;
+            mCompletion.base       = tokenText(objectIt);
+            mCompletion.tokenType  = objectTokenType;
+            mCompletion.type       = ClassMethodCompletion;
+        }
+        else {
+            mCompletion.contextPos = mCompletion.pos + 3;
+            mCompletion.base       = tokenText(nameIt);
+            mCompletion.type       = MethodCompletion;
+        }
+    }
+
+    mCompletion.on = true;
+
+    qDebug() << QString("Completion: ON <%1>").arg(mCompletion.base);
+
+    showCompletionMenu(forceShow);
+
+    if (mCompletion.menu.isNull())
+        mCompletion.on = false;
+}
+
+void AutoCompleter::quitCompletion( const QString & reason )
+{
+    Q_ASSERT(mCompletion.on);
+
+    qDebug() << QString("Completion: OFF (%1)").arg(reason);
+
+    if (mCompletion.menu) {
+        mCompletion.menu->hide();
+        mCompletion.menu->deleteLater();
+        mCompletion.menu = 0;
+    }
+
+    mCompletion.on = false;
+}
+
+void AutoCompleter::showCompletionMenu(bool forceShow)
+{
+    qDebug(">>> showCompletionMenu");
+
+    using namespace ScLanguage;
+    using ScLanguage::Method;
+
+    Q_ASSERT(mCompletion.on);
+    Q_ASSERT(mCompletion.menu.isNull());
+
+    QPointer<CompletionMenu> menu;
+
+    switch (mCompletion.type) {
+    case ClassCompletion:
+        menu = menuForClassCompletion(mCompletion, mEditor);
+        break;
+
+    case ClassMethodCompletion:
+        menu = menuForClassMethodCompletion(mCompletion, mEditor);
+        break;
+
+    case MethodCompletion:
+        menu = menuForMethodCompletion(mCompletion, mEditor);
+        break;
+    }
+
+
+    if (menu == NULL) return;
+
+    mCompletion.menu = menu;
+
+    connect(menu, SIGNAL(finished(int)), this, SLOT(onCompletionMenuFinished(int)));
+
+    QRect popupTargetRect = globalCursorRect(mCompletion.pos).adjusted(0,-5,0,5);
+
+    menu->popup( popupTargetRect );
+
+    updateCompletionMenu(forceShow);
+}
+
+CompletionMenu * AutoCompleter::menuForClassCompletion(CompletionDescription const & completion,
+                                                       ScCodeEditor * editor)
+{
+    using namespace ScLanguage;
+    const Introspection & introspection = Main::scProcess()->introspection();
+
+    const ClassMap & classes = introspection.classMap();
+
+    QString min = completion.base;
+    QString max = incrementedString(min);
+
+    ClassMap::const_iterator matchStart, matchEnd;
+    matchStart = classes.lower_bound(min);
+    matchEnd = classes.lower_bound(max);
+    if (matchStart == matchEnd) {
+        qDebug() << "Completion: no class matches:" << completion.base;
+        return NULL;
+    }
+
+    CompletionMenu * menu = new CompletionMenu(editor);
+
+    for (ClassMap::const_iterator it = matchStart; it != matchEnd; ++it) {
+        Class *klass = it->second.data();
+        menu->addItem( new QStandardItem(klass->name) );
+    }
+
+    return menu;
+}
+
+CompletionMenu * AutoCompleter::menuForClassMethodCompletion(CompletionDescription const & completion,
+                                                             ScCodeEditor * editor)
+{
+    using namespace ScLanguage;
+    const Introspection & introspection = Main::scProcess()->introspection();
+
+    const Class *klass = NULL;
+
+    switch (completion.tokenType) {
+    case Token::Float:
+    case Token::RadixFloat:
+    case Token::HexInt:
+        // Only show completion if at least 1 character after dot
+        if(!completion.base.contains(".") && completion.text.isEmpty())
+            return NULL;
+    default:;
+    }
+
+    klass = classForToken(completion.tokenType, completion.base);
+
+    if (klass == NULL) {
+        qDebug() << "Autocompletion not implemented for" << completion.base;
+        return NULL;
+    }
+
+    QMap<QString, const Method*> relevantMethods;
+    do {
+        foreach (const Method * method, klass->methods)
+        {
+            QString methodName = method->name.get();
+
+            // Operators are also methods, but are not valid in
+            // a method call syntax, so filter them out.
+            Q_ASSERT(!methodName.isEmpty());
+            if (!methodName[0].isLetter())
+                continue;
+
+            if (relevantMethods.value(methodName) != 0)
+                continue;
+
+            relevantMethods.insert(methodName, method);
+        }
+        klass = klass->superClass;
+    } while (klass);
+
+    CompletionMenu * menu = new CompletionMenu(editor);
+    menu->setCompletionRole(CompletionMenu::CompletionRole);
+
+    foreach(const Method *method, relevantMethods) {
+        QString methodName = method->name.get();
+        QString detail(" [ %1 ]");
+
+        QStandardItem *item = new QStandardItem();
+        item->setText( methodName + detail.arg(method->ownerClass->name) );
+        item->setData( QVariant::fromValue(method), CompletionMenu::MethodRole );
+        item->setData( methodName, CompletionMenu::CompletionRole );
+        menu->addItem(item);
+    }
+
+    return menu;
+}
+
+CompletionMenu * AutoCompleter::menuForMethodCompletion(CompletionDescription const & completion,
+                                                        ScCodeEditor * editor)
+{
+    using namespace ScLanguage;
+    const Introspection & introspection = Main::scProcess()->introspection();
+
+    const MethodMap & methods = introspection.methodMap();
+
+    QString min = completion.base;
+    QString max = incrementedString(min);
+
+    MethodMap::const_iterator matchStart, matchEnd;
+    matchStart = methods.lower_bound(min);
+    matchEnd = methods.lower_bound(max);
+    if (matchStart == matchEnd) {
+        qDebug() << "Completion: no method matches:" << completion.base;
+        return NULL;
+    }
+
+    CompletionMenu *menu = new CompletionMenu(editor);
+    menu->setCompletionRole(CompletionMenu::CompletionRole);
+
+    for (MethodMap::const_iterator it = matchStart; it != matchEnd; ) {
+        const Method *method = it->second.data();
+
+        std::pair<MethodMap::const_iterator, MethodMap::const_iterator> range
+            = methods.equal_range(it->first);
+
+        int count = std::distance(range.first, range.second);
+
+        QStandardItem *item = new QStandardItem();
+
+        QString methodName = method->name.get();
+        QString detail(" [ %1 ]");
+        if (count == 1) {
+            item->setText( methodName + detail.arg(method->ownerClass->name) );
+            item->setData( QVariant::fromValue(method), CompletionMenu::MethodRole );
+        } else
+            item->setText(methodName + detail.arg(count));
+
+        item->setData(methodName, CompletionMenu::CompletionRole);
+
+        menu->addItem(item);
+
+        it = range.second;
+    }
+    return menu;
+}
+
+const ScLanguage::Class * AutoCompleter::classForToken( Token::Type tokenType, const QString & tokenString )
+{
+    using namespace ScLanguage;
+    const Introspection & introspection = Main::scProcess()->introspection();
+
+    switch (tokenType) {
+    case Token::Class: {
+        const Class * klass = introspection.findClass(tokenString);
+        if (klass) klass = klass->metaClass;
+        return klass;
+    }
+
+    case Token::Float:
+    case Token::RadixFloat:
+    case Token::HexInt:
+        if (tokenString.contains(".")) // else it is an int
+            return introspection.findClass("Float");
+        else
+            return introspection.findClass("Integer");
+
+    case Token::Char:
+        return introspection.findClass("Char");
+
+    case Token::StringMark:
+        return introspection.findClass("String");
+
+    case Token::Symbol:
+    case Token::SymbolMark:
+        return introspection.findClass("Symbol");
+
+    default:
+        ;
+    }
+
+    if (tokenString == QString("true"))
+        return introspection.findClass("True");
+
+    if (tokenString == QString("false"))
+        return introspection.findClass("False");
+
+    if (tokenString == QString("nil"))
+        return introspection.findClass("Nil");
+
+    if (tokenString == QString("thisProcess"))
+        return introspection.findClass("Main");
+
+    if (tokenString == QString("thisFunction"))
+        return introspection.findClass("Function");
+
+    if (tokenString == QString("thisMethod"))
+        return introspection.findClass("Method");
+
+    if (tokenString == QString("thisFunctionDef"))
+        return introspection.findClass("FunctionDef");
+
+    if (tokenString == QString("thisThread"))
+        return introspection.findClass("Thread");
+
+    if (tokenString == QString("currentEnvironment"))
+        return introspection.findClass("Environment");
+
+    if (tokenString == QString("topEnvironment"))
+        return introspection.findClass("Environment");
+
+    if (tokenString == QString("inf"))
+        return introspection.findClass("Float");
+
+    return NULL;
+}
+
+void AutoCompleter::updateCompletionMenu(bool forceShow)
+{
+    Q_ASSERT(mCompletion.on && !mCompletion.menu.isNull());
+
+    CompletionMenu *menu = mCompletion.menu;
+
+    if (!mCompletion.text.isEmpty()) {
+        QString pattern = mCompletion.text;
+        pattern.prepend("^");
+        menu->model()->setFilterRegExp(pattern);
+    } else
+        menu->model()->setFilterRegExp(QString());
+
+    if (menu->model()->hasChildren()) {
+        menu->model()->sort(0);
+        menu->view()->setCurrentIndex( menu->model()->index(0,0) );
+        if (forceShow || menu->currentText() != mCompletion.text) {
+            if (!menu->isVisible())
+                menu->setTargetRect( globalCursorRect(mCompletion.pos).adjusted(0,-5,0,5) );
+            // The Show event will adjust position.
+            menu->show();
+        } else
+            menu->hide();
+    } else
+        menu->hide();
+}
+
+void AutoCompleter::onCompletionMenuFinished( int result )
+{
+    qDebug("Completion: menu finished");
+
+    if (!mCompletion.on)
+        return;
+
+    if (result) {
+        QString text = mCompletion.menu->currentText();
+
+        if (!text.isEmpty()) {
+            quitCompletion("done");
+
+            QTextCursor cursor( mEditor->textCursor() );
+            cursor.setPosition( mCompletion.pos );
+            cursor.setPosition( mCompletion.pos + mCompletion.len, QTextCursor::KeepAnchor );
+            cursor.insertText(text);
+
+            return;
+        }
+    }
+
+    // Do not cancel completion whenever menu hidden.
+    // It could be hidden because of current filter yielding 0 results.
+
+    //quitCompletion("cancelled");
+}
+
+void AutoCompleter::triggerMethodCallAid( bool explicitTrigger )
+{
+    using namespace ScLanguage;
+    const Introspection & introspection = Main::scProcess()->introspection();
+
+    if (!mMethodCall.menu.isNull()) {
+        qDebug("Method call: disambiguation menu already shown. Aborting.");
+        return;
+    }
+
+    QTextDocument *doc = document();
+    QTextCursor cursor( mEditor->textCursor() );
+
+    // Find the first bracket that defines a method call
+    TokenIterator tokenIt;
+    TokenIterator bracketIt = TokenIterator::leftOf( cursor.block(), cursor.positionInBlock() );
+    while (true)
+    {
+        bracketIt = ScCodeEditor::previousOpeningBracket(bracketIt);
+        if (!bracketIt.isValid())
+            return;
+
+        if (bracketIt->character == '(') {
+            tokenIt = bracketIt.previous();
+            Token::Type tokenType = tokenIt.type();
+
+            if ( tokenIt.block() == bracketIt.block() &&
+                 ( tokenType == Token::Name ||
+                   tokenType == Token::Class ) )
+                break;
+        }
+
+        if (!explicitTrigger)
+            return;
+
+        --bracketIt;
+    }
+
+    int bracketPos = bracketIt.position();
+
+    // Compare against stack
+    if ( !mMethodCall.stack.isEmpty() && mMethodCall.stack.top().position == bracketPos )
+    {
+        // A matching call is already on stack
+        qDebug("Method call: trigger -> call already on stack");
+
+        // If triggered explicitly, then either retrigger disambiguation (if needed),
+        // or unsuppress it.
+        if (explicitTrigger && !mMethodCall.stack.top().method) {
+            qDebug("Method call: forced re-trigger, popping current call.");
+            mMethodCall.stack.pop();
+            hideMethodCall();
+        } else {
+            if (explicitTrigger) {
+                mMethodCall.stack.top().suppressed = false;
+                updateMethodCall(cursor.position());
+            }
+            // Else, method call popup has been updated by updateMethodCall()
+            // called on cursor change, before this function.
+            return;
+        }
+    }
+
+    QString methodName;
+    bool functionalNotation = false;
+    const Class *receiverClass = NULL;
+    Token::Type tokenType = tokenIt.type();
+
+    Q_ASSERT( tokenType == Token::Name || tokenType == Token::Class );
+
+    if (tokenType == Token::Name) {
+        methodName = tokenText(tokenIt);
+        --tokenIt;
+        if (tokenIt.isValid() && tokenIt.character() == '.')
+            --tokenIt;
+        else
+            functionalNotation = true;
+    }
+    else
+        methodName = "new";
+
+    if (!functionalNotation && tokenIt.isValid())
+        receiverClass = classForToken( tokenIt->type, tokenText(tokenIt) );
+
+    // Ok, this is a valid method call, push on stack
+
+    qDebug("Method call: found call: %s:%s",
+           receiverClass ? qPrintable(receiverClass->name.get()) : "",
+           methodName.toStdString().c_str());
+
+    qDebug("Method call: new call");
+    MethodCall call;
+    call.position = bracketPos;
+    call.functionalNotation = functionalNotation;
+    pushMethodCall(call);
+
+    // Obtain method data, either by inferrence or by user-disambiguation via a menu
+
+    const Method *method = 0;
+
+    if (receiverClass)
+    {
+        const Class *klass = receiverClass;
+        do {
+            foreach (const Method * m, klass->methods)
+            {
+                if (m->name == methodName) {
+                    method = m;
+                    break;
+                }
+            }
+            if (method) break;
+            klass = klass->superClass;
+        } while (klass);
+    }
+    else {
+        method = disambiguateMethod( methodName, bracketPos );
+    }
+
+    // Finally, show the aid for the method
+
+    if (method) {
+        Q_ASSERT(!mMethodCall.stack.isEmpty());
+        mMethodCall.stack.top().method = method;
+        updateMethodCall( mEditor->textCursor().position() );
+    }
+}
+
+const ScLanguage::Method *AutoCompleter::disambiguateMethod
+( const QString & methodName, int cursorPos )
+{
+    Q_ASSERT(mMethodCall.menu.isNull());
+
+    using namespace ScLanguage;
+    using std::pair;
+
+    const Introspection & introspection = Main::scProcess()->introspection();
+    const MethodMap & methods = introspection.methodMap();
+
+    pair<MethodMap::const_iterator, MethodMap::const_iterator> match =
+        methods.equal_range(methodName);
+
+    const Method *method = 0;
+
+    if (match.first == match.second) {
+        qDebug() << "MethodCall: no method matches:" << methodName;
+        method = 0;
+    }
+    else if (std::distance(match.first, match.second) == 1)
+        method = match.first->second.data();
+    else {
+        QPointer<CompletionMenu> menu = new CompletionMenu(mEditor);
+        mMethodCall.menu = menu;
+
+        for (MethodMap::const_iterator it = match.first; it != match.second; ++it)
+        {
+            const Method *method = it->second.data();
+            QStandardItem *item = new QStandardItem();
+            item->setText(method->name + " (" + method->ownerClass->name + ')');
+            item->setData( QVariant::fromValue(method), CompletionMenu::MethodRole );
+            menu->addItem(item);
+        }
+
+        QRect popupTargetRect = globalCursorRect( cursorPos ).adjusted(0,-5,0,5);
+
+        if ( static_cast<PopUpWidget*>(menu)->exec(popupTargetRect) )
+            method = menu->currentMethod();
+
+        delete menu;
+    }
+
+    return method;
+}
+
+void AutoCompleter::updateMethodCall( int cursorPos )
+{
+    int i = mMethodCall.stack.count();
+    while (i--)
+    {
+        MethodCall & call = mMethodCall.stack[i];
+        int argNum = -1;
+        TokenIterator argNameToken;
+
+        if (!testMethodCall(call, cursorPos, argNum, argNameToken)) {
+            qDebug("Method call: popping.");
+            Q_ASSERT(i == mMethodCall.stack.count() - 1);
+            mMethodCall.stack.pop();
+            continue;
+        }
+
+        if (call.suppressed) {
+            qDebug("Method call: suppressed, not showing anything");
+            break;
+        }
+
+        if (!call.method || !call.method->arguments.count()) {
+            qDebug("Method call: no info to show. skipping.");
+            continue;
+        }
+
+        if (argNameToken.isValid()) {
+            QString argName = tokenText(argNameToken);
+            argName.chop(1);
+            for (int idx = 0; idx < call.method->arguments.count(); ++idx) {
+                if (call.method->arguments[idx].name == argName) {
+                    argNum = idx;
+                    if (call.functionalNotation)
+                        ++argNum;
+                    break;
+                }
+            }
+        }
+        qDebug("Method call: found current call: %s(%i)",
+            call.method->name.get().toStdString().c_str(), argNum);
+        showMethodCall(call, argNum);
+        return;
+    }
+
+    hideMethodCall();
+}
+
+void AutoCompleter::pushMethodCall( const MethodCall & call )
+{
+    qDebug("Method Call: pushing on stack.");
+    Q_ASSERT( mMethodCall.stack.isEmpty()
+        || mMethodCall.stack.last().position < call.position );
+
+    mMethodCall.stack.push(call);
+}
+
+void AutoCompleter::showMethodCall( const MethodCall & call, int arg )
+{
+    if (mMethodCall.widget.isNull())
+        mMethodCall.widget = new MethodCallWidget(mEditor);
+
+    MethodCallWidget *w = mMethodCall.widget;
+
+    w->showMethod( call, arg, globalCursorRect(call.position).adjusted(0, -7, 0, 5) );
+}
+
+void AutoCompleter::hideMethodCall()
+{
+    delete mMethodCall.widget;
+}
+
+bool AutoCompleter::trySwitchMethodCallArgument(bool backwards)
+{
+    // FIXME: Only cycle through argument names that have not been entered already
+
+    using namespace ScLanguage;
+
+    QTextCursor cursor( mEditor->textCursor() );
+    if (cursor.hasSelection())
+        return false;
+
+    if (mMethodCall.stack.isEmpty()) {
+        qDebug("Insert arg name: empty stack");
+        return false;
+    }
+
+    MethodCall & call = mMethodCall.stack.top();
+    if (!call.method || !call.method->arguments.count()) {
+        qDebug("Insert arg name: no method, or method has no args");
+        return false;
+    }
+
+    int cursorPos = cursor.position();
+    int argNum = -1;
+    TokenIterator argNameToken;
+
+    static const bool strict = true;
+    bool callValid = testMethodCall( call, cursorPos, argNum, argNameToken, strict );
+    if (!callValid) {
+        qDebug("Insert arg name: call invalid");
+        return false;
+    }
+
+    bool cursorAtArgName = argNum == -1;
+
+    if (argNameToken.isValid()) {
+        qDebug("Insert arg name: have a reference arg name");
+        QString argName = tokenText(argNameToken);
+        argName.chop(1);
+        for (int idx = 0; idx < call.method->arguments.count(); ++idx) {
+            if (call.method->arguments[idx].name == argName) {
+                argNum = idx;
+                break;
+            }
+        }
+        // only increment/decrement if a reference name exists
+        if (backwards)
+            --argNum;
+        else
+            ++argNum;
+    }
+
+    // limit / wrap
+    if (argNum < 0)
+        argNum = call.method->arguments.count() - 1;
+    else if (argNum >= call.method->arguments.count())
+        argNum = 0;
+
+    QString text = call.method->arguments[argNum].name;
+    text.append(":");
+
+    // insert argument name
+    if (argNameToken.isValid() && cursorAtArgName) {
+        int pos = argNameToken.position();
+        cursor.setPosition(pos);
+        cursor.setPosition(pos + argNameToken->length, QTextCursor::KeepAnchor);
+    }
+    cursor.insertText(text);
+
+    return true;
+}
+
+bool AutoCompleter::testMethodCall( const MethodCall &call, int cursorPos,
+                                    int &outArgNum, TokenIterator &outArgNameToken,
+                                    bool strict )
+{
+    // The 'strict' argument denotes whether the test passes if token before cursor is
+    // not a comma or an argument name - i.e. the user is typing the value of an argument
+
+    if (call.position >= cursorPos) {
+        qDebug("Method call: call right of cursor.");
+        return false;
+    }
+
+    QTextBlock block( document()->findBlock( call.position ) );
+    TokenIterator token = TokenIterator::rightOf(block, call.position - block.position());
+    if (!token.isValid())
+        qWarning("Method call: call stack out of sync!");
+    Q_ASSERT(token.isValid());
+
+    int argNum = 0;
+    int level = 1;
+    TokenIterator argNameToken;
+    bool strictlyValid = true;
+
+    ++token;
+    while( level > 0 && token.isValid() && token.position() < cursorPos )
+    {
+        strictlyValid = false;
+
+        char chr = token.character();
+        Token::Type type = token->type;
+        if (level == 1) {
+            if (type == Token::SymbolArg) {
+                argNameToken = token;
+                argNum = -1; // denote argument name
+                strictlyValid = true;
+            }
+            else if (chr == ',') {
+                if (argNum >= 0)
+                    ++argNum;
+                else
+                    argNum = -2; // denote comma after argument name
+                strictlyValid = true;
+            }
+        }
+
+        if (type == Token::OpeningBracket)
+            ++level;
+        else if (type == Token::ClosingBracket)
+            --level;
+
+        ++token;
+    }
+
+    if (level <= 0) {
+        qDebug("Method call: call left of cursor.");
+        return false;
+    }
+
+    outArgNameToken = argNameToken;
+    outArgNum = argNum;
+
+    return (strictlyValid || !strict);
+}
+
+void AutoCompleter::clearMethodCallStack()
+{
+    mMethodCall.stack.clear();
+    hideMethodCall();
+}
+
+void AutoCompleter::hideWidgets()
+{
+    if (mCompletion.menu)
+        mCompletion.menu->reject();
+    if (mMethodCall.menu)
+        mMethodCall.menu->reject();
+    if (mMethodCall.widget)
+        mMethodCall.widget->hide();
+}
+
+QString AutoCompleter::tokenText( TokenIterator & it )
+{
+    if (!it.isValid())
+        return QString();
+
+    int pos = it.position();
+    QTextCursor cursor(document());
+    cursor.setPosition(pos);
+    cursor.setPosition(pos + it->length, QTextCursor::KeepAnchor);
+    return cursor.selectedText();
+}
+
+QRect AutoCompleter::globalCursorRect( int cursorPosition )
+{
+    QTextCursor cursor(document());
+    cursor.setPosition(cursorPosition);
+    QRect r = mEditor->cursorRect(cursor);
+    r.moveTopLeft( mEditor->viewport()->mapToGlobal( r.topLeft() ) );
+    return r;
+}
+
+} // namespace ScIDE
+
+#undef QT_NO_DEBUG_OUTPUT
diff --git a/editors/sc-ide/widgets/code_editor/autocompleter.hpp b/editors/sc-ide/widgets/code_editor/autocompleter.hpp
new file mode 100644
index 0000000..be26a0b
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/autocompleter.hpp
@@ -0,0 +1,144 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_CODE_EDITOR_AUTOCOMPLETER_HPP_INCLUDED
+#define SCIDE_WIDGETS_CODE_EDITOR_AUTOCOMPLETER_HPP_INCLUDED
+
+#include <QObject>
+#include <QTextDocument>
+#include <QStack>
+#include <QKeyEvent>
+#include <QStringList>
+#include <QSortFilterProxyModel>
+#include <QPointer>
+
+#include "tokens.hpp"
+
+namespace ScIDE {
+
+class ScCodeEditor;
+class TokenIterator;
+class CompletionMenu;
+class MethodCallWidget;
+
+namespace ScLanguage { struct Method; struct Class; }
+
+class AutoCompleter : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    AutoCompleter( ScCodeEditor * );
+
+    void keyPress( QKeyEvent * );
+    void documentChanged( QTextDocument * );
+    // NOTE: default 'force' to true in the following methods
+    // for the purpose of argument-less QAction::triggered() signal:
+    void triggerCompletion( bool forceShow = true );
+    void triggerMethodCallAid( bool explicitly = true );
+
+private slots:
+    void onContentsChange(int pos, int removed, int added);
+    void onCursorChanged();
+    void onCompletionMenuFinished( int result );
+    void clearMethodCallStack();
+    void hideWidgets();
+
+private:
+    friend class MethodCallWidget;
+
+    struct MethodCall {
+        MethodCall(): position(0), method(0), functionalNotation(false), suppressed(false) {}
+        int position;
+        const ScLanguage::Method *method;
+        bool functionalNotation;
+        bool suppressed;
+    };
+
+    enum CompletionType {
+        ClassCompletion,
+        ClassMethodCompletion,
+        MethodCompletion,
+        InvalidCompletion
+    };
+
+    struct CompletionDescription {
+        bool on;
+        CompletionType type;
+        int pos;
+        int len;
+        int contextPos;
+        QString base;
+        QString text;
+        QPointer<CompletionMenu> menu;
+        Token::Type tokenType;
+    };
+
+    struct MethodCallContext {
+        QStack<MethodCall> stack;
+        QPointer<CompletionMenu> menu;
+        QPointer<MethodCallWidget> widget;
+    };
+
+    typedef QStack<MethodCall>::iterator MethodCallIterator;
+
+    bool eventFilter( QObject *, QEvent * );
+
+    QTextDocument *document();
+
+    // completion
+
+    void quitCompletion( const QString & reason = QString() );
+    void showCompletionMenu( bool forceShow );
+    void updateCompletionMenu( bool forceShow );
+
+    // method call aid
+
+    const ScLanguage::Method *disambiguateMethod( const QString & methodName, int cursorPos );
+    void updateMethodCall( int cursorPos );
+    void pushMethodCall( const MethodCall & call );
+    void showMethodCall( const MethodCall & call, int arg = 0 );
+    void hideMethodCall();
+    bool trySwitchMethodCallArgument( bool backwards = false );
+    bool testMethodCall( const MethodCall &, int cursorPos,
+                         int & argNum, TokenIterator & argNameToken, bool strict = false );
+
+    static CompletionMenu * menuForClassCompletion(CompletionDescription const & completion, ScCodeEditor * editor);
+    static CompletionMenu * menuForClassMethodCompletion(CompletionDescription const & completion, ScCodeEditor * editor);
+    static CompletionMenu * menuForMethodCompletion(CompletionDescription const & completion, ScCodeEditor * editor);
+
+    static const ScLanguage::Class * classForToken( Token::Type type, const QString & string );
+
+    // utilities
+
+    QString tokenText( TokenIterator & it );
+    QRect globalCursorRect( int cursorPosition );
+
+    // data
+
+    ScCodeEditor *mEditor;
+    CompletionDescription mCompletion;
+    MethodCallContext mMethodCall;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/widgets/code_editor/editor.cpp b/editors/sc-ide/widgets/code_editor/editor.cpp
new file mode 100644
index 0000000..738419f
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/editor.cpp
@@ -0,0 +1,915 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "editor.hpp"
+#include "line_indicator.hpp"
+#include "../util/gui_utilities.hpp"
+#include "../../core/main.hpp"
+#include "../../core/doc_manager.hpp"
+#include "../../core/settings/manager.hpp"
+
+#include <QApplication>
+#include <QDebug>
+#include <QGraphicsView>
+#include <QKeyEvent>
+#include <QPainter>
+#include <QPaintEvent>
+#include <QTextBlock>
+#include <QTextDocumentFragment>
+#include <QUrl>
+#include <QScrollBar>
+
+namespace ScIDE {
+
+GenericCodeEditor::GenericCodeEditor( Document *doc, QWidget *parent ):
+    QPlainTextEdit( parent ),
+    mDoc(doc)
+{
+    Q_ASSERT(mDoc != 0);
+
+    setFrameShape( QFrame::NoFrame );
+
+    mLineIndicator = new LineIndicator(this);
+    mLineIndicator->move( contentsRect().topLeft() );
+
+    mOverlay = new QGraphicsScene(this);
+
+    QGraphicsView *overlayView = new QGraphicsView(mOverlay, this);
+    overlayView->setFrameShape( QFrame::NoFrame );
+    overlayView->setBackgroundBrush( Qt::NoBrush );
+    overlayView->setStyleSheet("background: transparent");
+    overlayView->setFocusPolicy( Qt::NoFocus );
+    overlayView->setAttribute(Qt::WA_TransparentForMouseEvents, true);
+    overlayView->setSceneRect(QRectF(0,0,1,1));
+    overlayView->setAlignment(Qt::AlignLeft | Qt::AlignTop);
+
+    mOverlayWidget = overlayView;
+
+    connect( mDoc, SIGNAL(defaultFontChanged()), this, SLOT(onDocumentFontChanged()) );
+
+    connect( this, SIGNAL(blockCountChanged(int)),
+             mLineIndicator, SLOT(setLineCount(int)) );
+
+    connect( mLineIndicator, SIGNAL( widthChanged() ),
+             this, SLOT( updateLayout() ) );
+
+    connect( this, SIGNAL(updateRequest(QRect,int)),
+             this, SLOT(updateLineIndicator(QRect,int)) );
+
+    connect( this, SIGNAL(selectionChanged()),
+             mLineIndicator, SLOT(update()) );
+
+    connect( Main::instance(), SIGNAL(applySettingsRequest(Settings::Manager*)),
+             this, SLOT(applySettings(Settings::Manager*)) );
+
+    QTextDocument *tdoc = doc->textDocument();
+    QPlainTextEdit::setDocument(tdoc);
+    onDocumentFontChanged();
+    mLineIndicator->setLineCount(blockCount());
+
+    applySettings( Main::settings() );
+}
+
+void GenericCodeEditor::applySettings( Settings::Manager *settings )
+{
+    settings->beginGroup("IDE/editor");
+
+    bool lineWrap = settings->value("lineWrap").toBool();
+
+    QPalette palette;
+
+    settings->beginGroup("colors");
+
+    if (settings->contains("text")) {
+        QTextCharFormat format = settings->value("text").value<QTextCharFormat>();
+        QBrush bg = format.background();
+        QBrush fg = format.foreground();
+        if (bg.style() != Qt::NoBrush)
+            palette.setBrush(QPalette::Base, bg);
+        if (fg.style() != Qt::NoBrush)
+            palette.setBrush(QPalette::Text, fg);
+    }
+
+    if (settings->contains("lineNumbers")) {
+        // NOTE: the line number widget will inherit the palette from the editor
+        QTextCharFormat format = settings->value("lineNumbers").value<QTextCharFormat>();
+        QBrush bg = format.background();
+        QBrush fg = format.foreground();
+        if (bg.style() != Qt::NoBrush)
+            palette.setBrush(QPalette::Mid, bg);
+        if (fg.style() != Qt::NoBrush)
+            palette.setBrush(QPalette::ButtonText, fg);
+    }
+
+    if (settings->contains("selection")) {
+        QTextCharFormat format = settings->value("selection").value<QTextCharFormat>();
+        QBrush bg = format.background();
+        QBrush fg = format.foreground();
+        if (bg.style() != Qt::NoBrush)
+            palette.setBrush(QPalette::Highlight, bg);
+        if (fg.style() != Qt::NoBrush)
+            palette.setBrush(QPalette::HighlightedText, fg);
+    }
+
+    mSearchResultTextFormat = settings->value("searchResult").value<QTextCharFormat>();
+
+    settings->endGroup(); // colors
+
+    settings->endGroup(); // IDE/editor
+
+    setLineWrapMode( lineWrap ? QPlainTextEdit::WidgetWidth : QPlainTextEdit::NoWrap );
+    setPalette(palette);
+}
+
+bool GenericCodeEditor::showWhitespace()
+{
+    QTextOption options( textDocument()->defaultTextOption() );
+    return options.flags().testFlag( QTextOption::ShowTabsAndSpaces );
+}
+
+void GenericCodeEditor::setShowWhitespace(bool show)
+{
+    QTextDocument *doc = textDocument();
+    QTextOption opt( doc->defaultTextOption() );
+    if( show )
+        opt.setFlags( opt.flags() | QTextOption::ShowTabsAndSpaces );
+    else
+        opt.setFlags( opt.flags() & ~QTextOption::ShowTabsAndSpaces );
+    doc->setDefaultTextOption(opt);
+}
+
+static bool findInBlock(QTextDocument *doc, const QTextBlock &block, const QRegExp &expr, int offset,
+                        QTextDocument::FindFlags options, QTextCursor &cursor)
+{
+    QString text = block.text();
+    if(options & QTextDocument::FindBackward)
+        text.truncate(offset);
+    text.replace(QChar::Nbsp, QLatin1Char(' '));
+
+    int idx = -1;
+    while (offset >=0 && offset <= text.length()) {
+        idx = (options & QTextDocument::FindBackward) ?
+               expr.lastIndexIn(text, offset) : expr.indexIn(text, offset);
+        if (idx == -1)
+            return false;
+
+        if (options & QTextDocument::FindWholeWords) {
+            const int start = idx;
+            const int end = start + expr.matchedLength();
+            if ((start != 0 && text.at(start - 1).isLetterOrNumber())
+                || (end != text.length() && text.at(end).isLetterOrNumber())) {
+                //if this is not a whole word, continue the search in the string
+                offset = (options & QTextDocument::FindBackward) ? idx-1 : end+1;
+                idx = -1;
+                continue;
+            }
+        }
+        //we have a hit, return the cursor for that.
+        break;
+    }
+
+    if (idx == -1)
+        return false;
+
+    cursor = QTextCursor(doc);
+    cursor.setPosition(block.position() + idx);
+    cursor.setPosition(cursor.position() + expr.matchedLength(), QTextCursor::KeepAnchor);
+    return true;
+}
+
+bool GenericCodeEditor::find( const QRegExp &expr, QTextDocument::FindFlags options )
+{
+    // Although QTextDocument provides a find() method, we implement
+    // our own, because the former one is not adequate.
+
+    if(expr.isEmpty()) return true;
+
+    bool backwards = options & QTextDocument::FindBackward;
+
+    QTextCursor c( textCursor() );
+    int pos;
+    if (c.hasSelection())
+    {
+        bool matching = expr.exactMatch(c.selectedText());
+
+        if( backwards == matching )
+            pos = c.selectionStart();
+        else
+            pos = c.selectionEnd();
+    }
+    else
+        pos = c.position();
+
+    QTextDocument *doc = QPlainTextEdit::document();
+    QTextBlock startBlock = doc->findBlock(pos);
+    int startBlockOffset = pos - startBlock.position();
+
+    QTextCursor cursor;
+
+    if (!backwards) {
+        int blockOffset = startBlockOffset;
+        QTextBlock block = startBlock;
+        while (block.isValid()) {
+            if (findInBlock(doc, block, expr, blockOffset, options, cursor))
+                break;
+            blockOffset = 0;
+            block = block.next();
+        }
+        if(cursor.isNull())
+        {
+            blockOffset = 0;
+            block = doc->begin();
+            while(true) {
+                if (findInBlock(doc, block, expr, blockOffset, options, cursor)
+                    || block == startBlock)
+                    break;
+                block = block.next();
+            }
+        }
+    } else {
+        int blockOffset = startBlockOffset;
+        QTextBlock block = startBlock;
+        while (block.isValid()) {
+            if (findInBlock(doc, block, expr, blockOffset, options, cursor))
+                break;
+            block = block.previous();
+            blockOffset = block.length() - 1;
+        }
+        if(cursor.isNull())
+        {
+            block = doc->end();
+            while(true) {
+                blockOffset = block.length() - 1;
+                if (findInBlock(doc, block, expr, blockOffset, options, cursor)
+                    || block == startBlock)
+                    break;
+                block = block.previous();
+            }
+        }
+    }
+
+    if(!cursor.isNull()) {
+        setTextCursor(cursor);
+        return true;
+    }
+    else
+        return false;
+}
+
+int GenericCodeEditor::findAll( const QRegExp &expr, QTextDocument::FindFlags options )
+{
+    mSearchSelections.clear();
+
+    if(expr.isEmpty()) {
+        this->updateExtraSelections();
+        return 0;
+    }
+
+    QTextEdit::ExtraSelection selection;
+    selection.format = mSearchResultTextFormat;
+
+    QTextDocument *doc = QPlainTextEdit::document();
+    QTextBlock block = doc->begin();
+    QTextCursor cursor;
+
+    while (block.isValid()) {
+        int blockPos = block.position();
+        int offset = 0;
+        while(findInBlock(doc, block, expr, offset, options, cursor)) {
+            offset = cursor.selectionEnd() - blockPos;
+
+            if (cursor.hasSelection()) {
+                selection.cursor = cursor;
+                mSearchSelections.append(selection);
+            } else
+                offset += 1;
+        }
+        block = block.next();
+    }
+
+    this->updateExtraSelections();
+
+    return mSearchSelections.count();
+}
+
+//#define CSTR(QSTR) QSTR.toStdString().c_str()
+
+static QString resolvedReplacement( const QString &replacement, const QRegExp &expr )
+{
+    //qDebug("START");
+    static const QRegExp rexpr("(\\\\\\\\)|(\\\\[0-9]+)");
+    QString str( replacement );
+    int i=0;
+    while(i < str.size() && ((i = rexpr.indexIn(str, i)) != -1))
+    {
+        int len = rexpr.matchedLength();
+        if(rexpr.pos(1) != -1)
+        {
+            //qDebug("%i (%s): escape", i, CSTR(rexpr.cap(1)));
+            str.replace(i, len, "\\");
+            i += 1;
+        }
+        else if(rexpr.pos(2) != -1)
+        {
+            QString num_str = rexpr.cap(2);
+            num_str.remove(0, 1);
+            int num = num_str.toInt();
+            //qDebug("%i (%s): backref = %i", i, CSTR(rexpr.cap(2)), num);
+            if(num <= expr.captureCount())
+            {
+                QString cap = expr.cap(num);
+                //qDebug("resolving ref to: %s", CSTR(cap));
+                str.replace(i, len, cap);
+                i += cap.size();
+            }
+            else
+            {
+                //qDebug("ref out of range", i, num);
+                str.remove(i, len);
+            }
+        }
+        else
+        {
+            //qDebug("%i (%s): unknown match", i, CSTR(rexpr.cap(0)));
+            str.remove(i, len);
+        }
+        //qDebug(">> [%s] %i", CSTR(str), i);
+    }
+    //qDebug("END");
+    return str;
+}
+
+bool GenericCodeEditor::replace( const QRegExp &expr, const QString &replacement, QTextDocument::FindFlags options )
+{
+    if(expr.isEmpty()) return true;
+
+    QTextCursor cursor = textCursor();
+    if (cursor.hasSelection() && expr.exactMatch(cursor.selectedText()))
+    {
+        QString rstr = replacement;
+        if(expr.patternSyntax() != QRegExp::FixedString)
+            rstr = resolvedReplacement(rstr, expr);
+        cursor.insertText(rstr);
+    }
+
+    return find(expr, options);
+}
+
+int GenericCodeEditor::replaceAll( const QRegExp &expr, const QString &replacement, QTextDocument::FindFlags options )
+{
+    mSearchSelections.clear();
+    updateExtraSelections();
+
+    if(expr.isEmpty()) return 0;
+
+    int replacements = 0;
+    bool caps = expr.patternSyntax() != QRegExp::FixedString;
+
+    QTextDocument *doc = QPlainTextEdit::document();
+    QTextBlock block = doc->begin();
+    QTextCursor cursor;
+
+    QTextCursor(doc).beginEditBlock();
+
+    while (block.isValid())
+    {
+        int blockPos = block.position();
+        int offset = 0;
+        while(findInBlock(doc, block, expr, offset, options, cursor))
+        {
+            QString rstr = replacement;
+            if(caps)
+                rstr = resolvedReplacement(rstr, expr);
+            cursor.insertText(rstr);
+            ++replacements;
+            offset = cursor.selectionEnd() - blockPos;
+        }
+        block = block.next();
+    }
+
+    QTextCursor(doc).endEditBlock();
+
+    return replacements;
+}
+
+void GenericCodeEditor::showPosition( int pos, int selectionLength )
+{
+    if (pos < 0) return;
+
+    QTextDocument *doc = QPlainTextEdit::document();
+    if (!doc) return;
+
+    int lineNumber = doc->findBlock(pos).firstLineNumber();
+    verticalScrollBar()->setValue(lineNumber);
+
+    QTextCursor cursor(doc);
+    cursor.setPosition(pos);
+    if (selectionLength)
+        cursor.setPosition(pos + selectionLength, QTextCursor::KeepAnchor);
+
+    setTextCursor(cursor);
+}
+
+QString GenericCodeEditor::symbolUnderCursor()
+{
+    QTextCursor cursor = textCursor();
+    if (cursor.hasSelection())
+        return cursor.selectedText();
+    else
+    {
+        QString blockString = cursor.block().text();
+        int position = cursor.positionInBlock();
+        return wordInStringAt( position, blockString );
+    }
+}
+
+bool GenericCodeEditor::event( QEvent * event )
+{
+    switch (event->type()) {
+    case QEvent::ShortcutOverride: {
+        // Prevent overriding certain shortcuts,
+        // as they are useful in our application.
+        QKeyEvent* kevent = static_cast<QKeyEvent*>(event);
+        switch (kevent->key()) {
+        case Qt::Key_Return:
+        case Qt::Key_Enter:
+            event->ignore();
+            return true;
+        }
+        break;
+    }
+    default:
+        break;
+    }
+
+    return QPlainTextEdit::event(event);
+}
+
+void GenericCodeEditor::keyPressEvent(QKeyEvent * e)
+{
+    hideMouseCursor(e);
+
+    QTextCursor cursor( textCursor() );
+
+    bool updateCursor = false;
+
+    if (e == QKeySequence::InsertLineSeparator) {
+        // override to avoid entering a "soft" new line
+        cursor.insertBlock();
+        updateCursor = true;
+    }
+    else {
+
+    switch (e->key()) {
+
+    case Qt::Key_Delete:
+        if (e->modifiers() & Qt::META) {
+            cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
+            cursor.removeSelectedText();
+        } else
+            QPlainTextEdit::keyPressEvent(e);
+        break;
+
+    case Qt::Key_Backspace:
+        if (e->modifiers() & Qt::META) {
+            cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);
+            cursor.removeSelectedText();
+        } else {
+            QPlainTextEdit::keyPressEvent(e);
+            updateCursor = true;
+        }
+        break;
+
+    case Qt::Key_Down:
+    {
+        if (cursor.block() == textDocument()->lastBlock()) {
+            QTextCursor::MoveMode moveMode = e->modifiers() & Qt::SHIFT ? QTextCursor::KeepAnchor
+                                                                        : QTextCursor::MoveAnchor;
+
+            cursor.movePosition(QTextCursor::EndOfBlock, moveMode);
+            setTextCursor(cursor);
+        } else
+            QPlainTextEdit::keyPressEvent(e);
+        break;
+    }
+
+    case Qt::Key_Up:
+    {
+        if (cursor.block() == textDocument()->firstBlock()) {
+            QTextCursor::MoveMode moveMode = e->modifiers() & Qt::SHIFT ? QTextCursor::KeepAnchor
+                                                                        : QTextCursor::MoveAnchor;
+
+            cursor.movePosition(QTextCursor::StartOfBlock, moveMode);
+            setTextCursor(cursor);
+        } else
+            QPlainTextEdit::keyPressEvent(e);
+        break;
+    }
+
+    default:
+        QPlainTextEdit::keyPressEvent(e);
+
+    } // switch (e->type())
+
+    } // else...
+
+    if (updateCursor) {
+        cursor.setVerticalMovementX(-1);
+        setTextCursor( cursor );
+        ensureCursorVisible();
+    }
+}
+
+void GenericCodeEditor::wheelEvent( QWheelEvent * e )
+{
+    if (e->modifiers() == Qt::ControlModifier) {
+        if (e->delta() > 0)
+            zoomIn();
+        else
+            zoomOut();
+        return;
+    }
+
+    QPlainTextEdit::wheelEvent(e);
+}
+
+void GenericCodeEditor::dragEnterEvent( QDragEnterEvent * event )
+{
+    const QMimeData * data = event->mimeData();
+    if (data->hasUrls()) {
+        // Propagate event to parent.
+        // URL drops are ultimately handled by MainWindow.
+        event->ignore();
+        return;
+    }
+
+    QPlainTextEdit::dragEnterEvent(event);
+}
+
+void GenericCodeEditor::hideMouseCursor(QKeyEvent * event)
+{
+    switch (event->key()) {
+    case Qt::Key_Shift:
+    case Qt::Key_Control:
+    case Qt::Key_Meta:
+    case Qt::Key_Alt:
+    case Qt::Key_Super_L:
+    case Qt::Key_Super_R:
+    case Qt::Key_Hyper_L:
+    case Qt::Key_Hyper_R:
+    case Qt::Key_Menu:
+        return;
+
+    default:
+        hideMouseCursor();
+    }
+}
+
+void GenericCodeEditor::clearSearchHighlighting()
+{
+    mSearchSelections.clear();
+    this->updateExtraSelections();
+}
+
+void GenericCodeEditor::zoomIn(int steps)
+{
+    zoomFont(steps);
+}
+
+void GenericCodeEditor::zoomOut(int steps)
+{
+    zoomFont(-steps);
+}
+
+void GenericCodeEditor::resetFontSize()
+{
+    mDoc->resetDefaultFont();
+}
+
+void GenericCodeEditor::zoomFont(int steps)
+{
+    QFont currentFont = mDoc->defaultFont();
+    const int newSize = currentFont.pointSize() + steps;
+    if (newSize <= 0)
+        return;
+    currentFont.setPointSize(newSize);
+    mDoc->setDefaultFont(currentFont);
+}
+
+void GenericCodeEditor::onDocumentFontChanged()
+{
+    QFont font = mDoc->defaultFont();
+    setFont(font);
+}
+
+void GenericCodeEditor::updateLayout()
+{
+    setViewportMargins( mLineIndicator->width(), 0, 0, 0 );
+    mOverlayWidget->setGeometry( viewport()->geometry() );
+}
+
+void GenericCodeEditor::updateLineIndicator( QRect r, int dy )
+{
+    if (dy)
+        mLineIndicator->scroll(0, dy);
+    else
+        mLineIndicator->update(0, r.y(), mLineIndicator->width(), r.height() );
+}
+
+void GenericCodeEditor::updateExtraSelections()
+{
+    QList<QTextEdit::ExtraSelection> selections;
+    selections.append(mSearchSelections);
+    setExtraSelections(selections);
+}
+
+void GenericCodeEditor::resizeEvent( QResizeEvent *e )
+{
+    QPlainTextEdit::resizeEvent( e );
+
+    QRect cr = contentsRect();
+    mLineIndicator->resize( mLineIndicator->width(), cr.height() );
+
+    mOverlayWidget->setGeometry( viewport()->geometry() );
+}
+
+void GenericCodeEditor::paintLineIndicator( QPaintEvent *e )
+{
+    QPalette plt( mLineIndicator->palette() );
+    QRect r( e->rect() );
+    QPainter p( mLineIndicator );
+
+    p.fillRect( r, plt.color( QPalette::Mid ) );
+    p.setPen( plt.color(QPalette::Dark) );
+    p.drawLine( r.topRight(), r.bottomRight() );
+
+    p.setPen( plt.color(QPalette::ButtonText) );
+
+    QTextDocument *doc = QPlainTextEdit::document();
+    QTextCursor cursor(textCursor());
+    int selStartBlock, selEndBlock;
+    if (cursor.hasSelection()) {
+        selStartBlock = doc->findBlock(cursor.selectionStart()).blockNumber();
+        selEndBlock = doc->findBlock(cursor.selectionEnd()).blockNumber();
+    }
+    else
+        selStartBlock = selEndBlock = -1;
+
+    QTextBlock block = firstVisibleBlock();
+    int blockNumber = block.blockNumber();
+    qreal top = blockBoundingGeometry(block).translated(contentOffset()).top();
+    qreal bottom = top + blockBoundingRect(block).height();
+
+    while (block.isValid() && top <= e->rect().bottom()) {
+        if (block.isVisible() && bottom >= e->rect().top()) {
+            p.save();
+
+            QRectF numRect( 0, top, mLineIndicator->width() - 1, bottom - top );
+
+            int num = blockNumber;
+            if (num >= selStartBlock && num <= selEndBlock) {
+                num -= selStartBlock;
+                p.setPen(Qt::NoPen);
+                p.setBrush(plt.color(QPalette::Highlight));
+                p.drawRect(numRect);
+                p.setPen(plt.color(QPalette::HighlightedText));
+            }
+
+            QString number = QString::number(num + 1);
+            p.drawText(0, top, mLineIndicator->width() - 4, bottom - top,
+                       Qt::AlignRight, number);
+
+            p.restore();
+        }
+
+        block = block.next();
+        top = bottom;
+        bottom = top + blockBoundingRect(block).height();
+        ++blockNumber;
+    }
+}
+
+void GenericCodeEditor::copyUpDown(bool up)
+{
+    // directly taken from qtcreator
+    // Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+    // GNU Lesser General Public License
+    QTextCursor cursor = textCursor();
+    QTextCursor move = cursor;
+    move.beginEditBlock();
+
+    bool hasSelection = cursor.hasSelection();
+
+    if (hasSelection) {
+        move.setPosition(cursor.selectionStart());
+        move.movePosition(QTextCursor::StartOfBlock);
+        move.setPosition(cursor.selectionEnd(), QTextCursor::KeepAnchor);
+        move.movePosition(move.atBlockStart() ? QTextCursor::Left: QTextCursor::EndOfBlock,
+                          QTextCursor::KeepAnchor);
+    } else {
+        move.movePosition(QTextCursor::StartOfBlock);
+        move.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
+    }
+
+    QString text = move.selectedText();
+
+    if (up) {
+        move.setPosition(cursor.selectionStart());
+        move.movePosition(QTextCursor::StartOfBlock);
+        move.insertBlock();
+        move.movePosition(QTextCursor::Left);
+    } else {
+        move.movePosition(QTextCursor::EndOfBlock);
+        if (move.atBlockStart()) {
+            move.movePosition(QTextCursor::NextBlock);
+            move.insertBlock();
+            move.movePosition(QTextCursor::Left);
+        } else {
+            move.insertBlock();
+        }
+    }
+
+    int start = move.position();
+    move.clearSelection();
+    move.insertText(text);
+    int end = move.position();
+
+    move.setPosition(start);
+    move.setPosition(end, QTextCursor::KeepAnchor);
+
+    move.endEditBlock();
+
+    setTextCursor(move);
+}
+
+
+void GenericCodeEditor::toggleOverwriteMode()
+{
+    setOverwriteMode(!overwriteMode());
+}
+
+
+void GenericCodeEditor::copyLineDown()
+{
+    copyUpDown(false);
+}
+
+void GenericCodeEditor::copyLineUp()
+{
+    copyUpDown(true);
+}
+
+void GenericCodeEditor::moveLineUpDown(bool up)
+{
+    // directly taken from qtcreator
+    // Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+    // GNU Lesser General Public License
+    QTextCursor cursor = textCursor();
+    QTextCursor move = cursor;
+
+    move.setVisualNavigation(false); // this opens folded items instead of destroying them
+
+    move.beginEditBlock();
+
+    bool hasSelection = cursor.hasSelection();
+
+    if (cursor.hasSelection()) {
+        move.setPosition(cursor.selectionStart());
+        move.movePosition(QTextCursor::StartOfBlock);
+        move.setPosition(cursor.selectionEnd(), QTextCursor::KeepAnchor);
+        move.movePosition(move.atBlockStart() ? QTextCursor::Left: QTextCursor::EndOfBlock,
+                          QTextCursor::KeepAnchor);
+    } else {
+        move.movePosition(QTextCursor::StartOfBlock);
+        move.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
+    }
+    QString text = move.selectedText();
+
+    move.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);
+    move.removeSelectedText();
+
+    if (up) {
+        move.movePosition(QTextCursor::PreviousBlock);
+        move.insertBlock();
+        move.movePosition(QTextCursor::Left);
+    } else {
+        move.movePosition(QTextCursor::EndOfBlock);
+        if (move.atBlockStart()) { // empty block
+            move.movePosition(QTextCursor::NextBlock);
+            move.insertBlock();
+            move.movePosition(QTextCursor::Left);
+        } else {
+            move.insertBlock();
+        }
+    }
+
+    int start = move.position();
+    move.clearSelection();
+    move.insertText(text);
+    int end = move.position();
+
+    if (hasSelection) {
+        move.setPosition(start);
+        move.setPosition(end, QTextCursor::KeepAnchor);
+    }
+
+    move.endEditBlock();
+
+    setTextCursor(move);
+}
+
+void GenericCodeEditor::moveLineUp()
+{
+    moveLineUpDown(true);
+}
+
+void GenericCodeEditor::moveLineDown()
+{
+    moveLineUpDown(false);
+}
+
+void GenericCodeEditor::gotoPreviousEmptyLine()
+{
+    gotoEmptyLineUpDown(true);
+}
+
+void GenericCodeEditor::gotoNextEmptyLine()
+{
+    gotoEmptyLineUpDown(false);
+}
+
+void GenericCodeEditor::gotoEmptyLineUpDown(bool up)
+{
+    static const QRegExp whiteSpaceLine("^\\s*$");
+
+    const QTextCursor::MoveOperation direction = up ? QTextCursor::PreviousBlock
+                                                    : QTextCursor::NextBlock;
+
+    QTextCursor cursor = textCursor();
+    cursor.beginEditBlock();
+
+    bool cursorMoved = false;
+
+    // find first non-whitespace line
+    while ( cursor.movePosition(direction) ) {
+        if ( !whiteSpaceLine.exactMatch(cursor.block().text()) )
+            break;
+    }
+
+    // find first whitespace line
+    while ( cursor.movePosition(direction) ) {
+        if ( whiteSpaceLine.exactMatch(cursor.block().text()) ) {
+            setTextCursor(cursor);
+            cursorMoved = true;
+            break;
+        }
+    }
+
+    if (!cursorMoved) {
+        const QTextCursor::MoveOperation startOrEnd = up ? QTextCursor::Start
+                                                         : QTextCursor::End;
+
+        cursor.movePosition(startOrEnd);
+        setTextCursor(cursor);
+    }
+
+    cursor.endEditBlock();
+}
+
+void GenericCodeEditor::hideMouseCursor()
+{
+#ifdef Q_OS_MAC
+    return; // LATER: for some reason this crashes on osx. we should try to figure out why
+#endif
+    QCursor * overrideCursor = QApplication::overrideCursor();
+    if (!overrideCursor || overrideCursor->shape() != Qt::BlankCursor)
+        QApplication::setOverrideCursor( Qt::BlankCursor );
+}
+
+QMimeData *GenericCodeEditor::createMimeDataFromSelection() const
+{
+    // Here, we bundle up just the plaintext (not HTML, as is the default) of
+    // the editor's selected contents.
+    QMimeData *data = new QMimeData;
+    data->setText(textCursor().selection().toPlainText());
+    return data;
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/code_editor/editor.hpp b/editors/sc-ide/widgets/code_editor/editor.hpp
new file mode 100644
index 0000000..8335bd8
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/editor.hpp
@@ -0,0 +1,111 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_CODE_EDITOR_EDITOR_HPP_INCLUDED
+#define SCIDE_WIDGETS_CODE_EDITOR_EDITOR_HPP_INCLUDED
+
+#include <QPlainTextEdit>
+#include <QGraphicsScene>
+#include <QList>
+
+namespace ScIDE {
+
+namespace Settings { class Manager; }
+
+class Document;
+
+class GenericCodeEditor : public QPlainTextEdit
+{
+    Q_OBJECT
+
+    friend class LineIndicator;
+
+public:
+    GenericCodeEditor (Document *, QWidget * parent = NULL);
+
+    Document *document() { return mDoc; }
+    QTextDocument *textDocument() { return QPlainTextEdit::document(); }
+    void setDocument( Document * );
+    bool showWhitespace();
+    bool find( const QRegExp &expr, QTextDocument::FindFlags options = 0);
+    bool replace( const QRegExp &expr, const QString &replacement, QTextDocument::FindFlags options = 0);
+    int findAll( const QRegExp &expr, QTextDocument::FindFlags options = 0 );
+    int replaceAll( const QRegExp &expr, const QString &replacement,
+                    QTextDocument::FindFlags options = 0 );
+
+    void showPosition( int charPosition, int selectionLength );
+    QString symbolUnderCursor();
+
+protected:
+    virtual bool event( QEvent * );
+    virtual void keyPressEvent( QKeyEvent * );
+    virtual void wheelEvent( QWheelEvent * );
+    virtual void dragEnterEvent( QDragEnterEvent * );
+    void hideMouseCursor(QKeyEvent *);
+    virtual QMimeData *createMimeDataFromSelection() const;
+
+public slots:
+    void applySettings( Settings::Manager * );
+    void zoomIn(int steps = 1);
+    void zoomOut(int steps = 1);
+    void resetFontSize();
+    void setShowWhitespace(bool);
+    void clearSearchHighlighting();
+    void toggleOverwriteMode();
+    void copyLineUp();
+    void copyLineDown();
+    void moveLineUp();
+    void moveLineDown();
+    void gotoPreviousEmptyLine();
+    void gotoNextEmptyLine();
+
+protected slots:
+    void updateLayout();
+    void updateLineIndicator( QRect, int );
+    void onDocumentFontChanged();
+
+protected:
+    void resizeEvent( QResizeEvent * );
+    void paintLineIndicator( QPaintEvent * );
+    virtual void updateExtraSelections();
+    virtual void indentCurrentRegion() {}
+
+    void zoomFont(int steps);
+
+    void copyUpDown(bool up);
+    void moveLineUpDown(bool up);
+    void gotoEmptyLineUpDown(bool up);
+
+    void hideMouseCursor();
+
+    class LineIndicator *mLineIndicator;
+    QGraphicsScene *mOverlay;
+    QWidget *mOverlayWidget;
+
+    Document *mDoc;
+
+    QTextCharFormat mSearchResultTextFormat;
+
+    QList<QTextEdit::ExtraSelection> mSearchSelections;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_CODE_EDITOR_EDITOR_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/code_editor/highlighter.cpp b/editors/sc-ide/widgets/code_editor/highlighter.cpp
new file mode 100644
index 0000000..1550ca8
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/highlighter.cpp
@@ -0,0 +1,234 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include <cassert>
+#include <algorithm>
+
+#include "highlighter.hpp"
+#include "../../core/main.hpp"
+#include "../../core/settings/manager.hpp"
+
+#include <QApplication>
+
+namespace ScIDE {
+
+SyntaxHighlighterGlobals * SyntaxHighlighterGlobals::mInstance = 0;
+
+SyntaxHighlighterGlobals::SyntaxHighlighterGlobals( Main *main, Settings::Manager * settings ):
+    QObject(main)
+{
+    Q_ASSERT(mInstance == 0);
+    mInstance = this;
+
+    ScLexer::initLexicalRules();
+
+    // initialize formats from settings:
+    applySettings(settings);
+
+    connect(main, SIGNAL(applySettingsRequest(Settings::Manager*)),
+            this, SLOT(applySettings(Settings::Manager*)));
+}
+
+void SyntaxHighlighterGlobals::applySettings( Settings::Manager *s )
+{
+    QString key("IDE/editor/highlighting");
+    applySettings( s, key + "/normal", PlainFormat );
+    applySettings( s, key + "/keyword", KeywordFormat );
+    applySettings( s, key + "/built-in", BuiltinFormat );
+    applySettings( s, key + "/primitive", PrimitiveFormat );
+    applySettings( s, key + "/class", ClassFormat );
+    applySettings( s, key + "/number", NumberFormat );
+    applySettings( s, key + "/symbol", SymbolFormat );
+    applySettings( s, key + "/env-var", EnvVarFormat );
+    applySettings( s, key + "/string", StringFormat );
+    applySettings( s, key + "/char", CharFormat );
+    applySettings( s, key + "/comment", CommentFormat );
+
+    Q_EMIT(syntaxFormatsChanged());
+}
+
+void SyntaxHighlighterGlobals::applySettings( Settings::Manager *s, const QString &key, SyntaxFormat type )
+{
+    mFormats[type] = s->value(key).value<QTextCharFormat>();
+}
+
+SyntaxHighlighter::SyntaxHighlighter(QTextDocument *parent):
+    QSyntaxHighlighter( parent )
+{
+    mGlobals = SyntaxHighlighterGlobals::instance();
+
+    connect(mGlobals, SIGNAL(syntaxFormatsChanged()), this, SLOT(rehighlight()));
+}
+
+void SyntaxHighlighter::highlightBlockInCode(ScLexer & lexer)
+{
+    TextBlockData *blockData = static_cast<TextBlockData*>(currentBlockUserData());
+    Q_ASSERT(blockData);
+
+    const QTextCharFormat * formats = mGlobals->formats();
+
+    do {
+        int tokenPosition = lexer.offset();
+        int tokenLength;
+        Token::Type tokenType = lexer.nextToken(tokenLength);
+
+        switch (tokenType)
+        {
+        case Token::Class:
+            setFormat(tokenPosition, tokenLength, formats[ClassFormat]);
+            break;
+
+        case Token::Builtin:
+            setFormat(tokenPosition, tokenLength, formats[BuiltinFormat]);
+            break;
+
+        case Token::Primitive:
+            setFormat(tokenPosition, tokenLength, formats[PrimitiveFormat]);
+            break;
+
+        case Token::Keyword:
+            setFormat(tokenPosition, tokenLength, formats[KeywordFormat]);
+            break;
+
+        case Token::Symbol:
+            setFormat(tokenPosition, tokenLength, formats[SymbolFormat]);
+            break;
+
+        case Token::SymbolArg:
+            // Don't highlight the trailing ':'
+            setFormat(tokenPosition, tokenLength-1, formats[SymbolFormat]);
+            break;
+
+        case Token::EnvVar:
+            setFormat(tokenPosition, tokenLength, formats[EnvVarFormat]);
+            break;
+
+        case Token::Char:
+            setFormat(tokenPosition, tokenLength, formats[CharFormat]);
+            break;
+
+        case Token::Float:
+        case Token::HexInt:
+        case Token::RadixFloat:
+            setFormat(tokenPosition, tokenLength, formats[NumberFormat]);
+            break;
+
+        case Token::SingleLineComment:
+            setFormat(tokenPosition, tokenLength, formats[CommentFormat]);
+            break;
+
+        case Token::MultiLineCommentStart:
+            setFormat(tokenPosition, tokenLength, formats[CommentFormat]);
+            break;
+
+        case Token::StringMark:
+            setFormat(tokenPosition, tokenLength, formats[StringFormat]);
+            break;
+
+        case Token::SymbolMark:
+            setFormat(tokenPosition, tokenLength, formats[SymbolFormat]);
+            break;
+
+        default:
+            ;
+        }
+
+        if ( (tokenType != Token::WhiteSpace) &&
+             (tokenType != Token::SingleLineComment) &&
+             (tokenType != Token::MultiLineCommentStart) )
+        {
+            Token token(tokenType, tokenPosition, tokenLength);
+            if (token.length == 1)
+                token.character = lexer.text()[tokenPosition].toAscii();
+            blockData->tokens.push_back( token );
+        }
+
+    } while (lexer.state() == ScLexer::InCode && lexer.offset() < lexer.text().size());
+}
+
+void SyntaxHighlighter::highlightBlockInString(ScLexer & lexer)
+{
+    int originalOffset = lexer.offset();
+    int tokenLength;
+    Token::Type tokenType = lexer.nextToken(tokenLength);
+    int range = lexer.offset() - originalOffset;
+    setFormat(originalOffset, range, mGlobals->format(StringFormat));
+}
+
+void SyntaxHighlighter::highlightBlockInSymbol(ScLexer & lexer)
+{
+    int originalOffset = lexer.offset();
+    int tokenLength;
+    Token::Type tokenType = lexer.nextToken(tokenLength);
+    int range = lexer.offset() - originalOffset;
+    setFormat(originalOffset, range, mGlobals->format(SymbolFormat));
+}
+
+void SyntaxHighlighter::highlightBlockInComment(ScLexer & lexer)
+{
+    int originalOffset = lexer.offset();
+    int tokenLength;
+    lexer.nextToken(tokenLength);
+    int range = lexer.offset() - originalOffset;
+    setFormat(originalOffset, range, mGlobals->format(CommentFormat));
+}
+
+void SyntaxHighlighter::highlightBlock(const QString& text)
+{
+    TextBlockData *blockData = static_cast<TextBlockData*>(currentBlockUserData());
+    if(!blockData) {
+        blockData = new TextBlockData;
+        blockData->tokens.reserve(8);
+        setCurrentBlockUserData(blockData);
+    }
+    else {
+        blockData->tokens.clear();
+    }
+
+    int previousState = previousBlockState();
+    if (previousState == -1)
+        previousState = ScLexer::InCode;
+
+    ScLexer lexer( text, 0, previousState );
+
+    while (lexer.offset() < text.size()) {
+        switch (lexer.state()) {
+        case ScLexer::InCode:
+            highlightBlockInCode(lexer);
+            break;
+
+        case ScLexer::InString:
+            highlightBlockInString(lexer);
+            break;
+
+        case ScLexer::InSymbol:
+            highlightBlockInSymbol(lexer);
+            break;
+
+        default:
+            if(lexer.state() >= ScLexer::InComment)
+                highlightBlockInComment(lexer);
+        }
+    }
+
+    setCurrentBlockState( lexer.state() );
+}
+
+}
diff --git a/editors/sc-ide/widgets/code_editor/highlighter.hpp b/editors/sc-ide/widgets/code_editor/highlighter.hpp
new file mode 100644
index 0000000..01f4418
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/highlighter.hpp
@@ -0,0 +1,107 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_SC_SYNTAX_HIGHLIGHTER_HPP_INCLUDED
+#define SCIDE_SC_SYNTAX_HIGHLIGHTER_HPP_INCLUDED
+
+#include "../../core/sc_lexer.hpp"
+
+#include <QSyntaxHighlighter>
+#include <QVector>
+
+namespace ScIDE {
+
+namespace Settings { class Manager; }
+
+class Main;
+
+enum SyntaxFormat
+{
+    PlainFormat,
+    ClassFormat,
+    KeywordFormat,
+    BuiltinFormat,
+    PrimitiveFormat,
+    SymbolFormat,
+    StringFormat,
+    CharFormat,
+    NumberFormat,
+    EnvVarFormat,
+    CommentFormat,
+
+    FormatCount
+};
+
+class SyntaxHighlighterGlobals : public QObject
+{
+    Q_OBJECT
+
+public:
+    SyntaxHighlighterGlobals( Main *, Settings::Manager * settings );
+
+    inline const QTextCharFormat * formats() const
+    {
+        return mFormats;
+    }
+
+    inline const QTextCharFormat & format( SyntaxFormat type ) const
+    {
+        return mFormats[type];
+    }
+
+    inline static const SyntaxHighlighterGlobals * instance() { Q_ASSERT(mInstance); return mInstance; }
+
+public Q_SLOTS:
+    void applySettings( Settings::Manager * );
+
+Q_SIGNALS:
+    void syntaxFormatsChanged();
+
+private:
+    friend class SyntaxHighlighter;
+
+    void applySettings( Settings::Manager*, const QString &key, SyntaxFormat );
+
+    QTextCharFormat mFormats[FormatCount];
+
+    static SyntaxHighlighterGlobals *mInstance;
+};
+
+class SyntaxHighlighter:
+    public QSyntaxHighlighter
+{
+    Q_OBJECT
+
+public:
+    SyntaxHighlighter(QTextDocument *parent = 0);
+
+private:
+    void highlightBlock(const QString &text);
+    void highlightBlockInCode(ScLexer & lexer);
+    void highlightBlockInString(ScLexer & lexer);
+    void highlightBlockInSymbol(ScLexer & lexer);
+    void highlightBlockInComment(ScLexer & lexer);
+
+    const SyntaxHighlighterGlobals *mGlobals;
+};
+
+}
+
+#endif
diff --git a/editors/sc-ide/widgets/code_editor/line_indicator.cpp b/editors/sc-ide/widgets/code_editor/line_indicator.cpp
new file mode 100644
index 0000000..8ff7480
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/line_indicator.cpp
@@ -0,0 +1,94 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "editor.hpp"
+#include "line_indicator.hpp"
+
+using namespace ScIDE;
+
+LineIndicator::LineIndicator( GenericCodeEditor *editor ):
+    QWidget( editor ), mEditor(editor)
+{
+    setLineCount(1);
+}
+
+void LineIndicator::setLineCount( int count )
+{
+    mLineCount = count;
+    setFixedWidth( widthForLineCount(count) );
+    Q_EMIT( widthChanged() );
+}
+
+void LineIndicator::changeEvent( QEvent *e )
+{
+    if( e->type() == QEvent::FontChange ) {
+        setFixedWidth( widthForLineCount(mLineCount) );
+        Q_EMIT( widthChanged() );
+    }
+    else
+        QWidget::changeEvent(e);
+}
+
+void LineIndicator::paintEvent( QPaintEvent *e )
+{ mEditor->paintLineIndicator(e); }
+
+void LineIndicator::mousePressEvent( QMouseEvent *e )
+{
+    QTextCursor cursor = mEditor->cursorForPosition(QPoint(0, e->pos().y()));
+    if(cursor.isNull()) {
+        mLastCursorPos = -1;
+        return;
+    }
+    mEditor->setTextCursor(cursor);
+    mLastCursorPos = cursor.position();
+}
+
+void LineIndicator::mouseMoveEvent( QMouseEvent *e )
+{
+    QTextCursor cursor = mEditor->cursorForPosition(QPoint(0, e->pos().y()));
+    if(cursor.isNull() || cursor.position() == mLastCursorPos)
+        return;
+    QTextCursor origCursor = mEditor->textCursor();
+    origCursor.setPosition( cursor.position(), QTextCursor::KeepAnchor );
+    mEditor->setTextCursor(origCursor);
+    mLastCursorPos = cursor.position();
+    // The selectionChanged() signal of the editor does not always fire here!
+    // Qt bug?
+    update();
+}
+
+void LineIndicator::mouseDoubleClickEvent( QMouseEvent *e )
+{
+    QTextCursor cursor = mEditor->cursorForPosition(QPoint(0, e->pos().y()));
+    cursor.movePosition( QTextCursor::EndOfBlock, QTextCursor::KeepAnchor );
+    mEditor->setTextCursor(cursor);
+}
+
+int LineIndicator::widthForLineCount( int lineCount )
+{
+    int digits = 2;
+    while( lineCount >= 100 ) {
+        lineCount /= 10;
+        ++digits;
+    }
+
+    return 6 + fontMetrics().width('9') * digits;
+}
+
diff --git a/editors/sc-ide/widgets/code_editor/line_indicator.hpp b/editors/sc-ide/widgets/code_editor/line_indicator.hpp
new file mode 100644
index 0000000..ad17ed9
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/line_indicator.hpp
@@ -0,0 +1,55 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_CODE_EDITOR_LINE_INDICATOR_HPP_INCLUDED
+#define SCIDE_WIDGETS_CODE_EDITOR_LINE_INDICATOR_HPP_INCLUDED
+
+#include <QWidget>
+
+namespace ScIDE {
+
+class LineIndicator : public QWidget
+{
+    Q_OBJECT
+
+public:
+    LineIndicator( class GenericCodeEditor *editor );
+Q_SIGNALS:
+    void widthChanged();
+public Q_SLOTS:
+    void setLineCount( int );
+protected:
+    virtual void paintEvent( QPaintEvent *e );
+    virtual void mousePressEvent( QMouseEvent * );
+    virtual void mouseMoveEvent( QMouseEvent * );
+    virtual void mouseDoubleClickEvent( QMouseEvent * );
+    virtual void changeEvent( QEvent * );
+private:
+    int widthForLineCount( int lineCount );
+
+    class GenericCodeEditor *mEditor;
+    int mLineCount;
+    int mLastCursorPos;
+};
+
+}
+
+
+#endif // SCIDE_WIDGETS_CODE_EDITOR_LINE_INDICATOR_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/code_editor/overlay.cpp b/editors/sc-ide/widgets/code_editor/overlay.cpp
new file mode 100644
index 0000000..10bd2ab
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/overlay.cpp
@@ -0,0 +1,173 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "overlay.hpp"
+#include "sc_editor.hpp"
+#include "../../core/main.hpp"
+
+#include <QTextDocument>
+#include <QTextLayout>
+#include <QTextBlock>
+#include <QPainter>
+#include <QPropertyAnimation>
+#include <QtCore/qmath.h>
+#include <QDebug>
+
+namespace ScIDE {
+
+void ScCodeEditor::blinkCode( const QTextCursor & c )
+{
+    if( !c.document() || !c.hasSelection() ) return;
+
+    Settings::Manager *settings = Main::settings();
+    settings->beginGroup("IDE/editor/colors");
+    QTextCharFormat evalCodeTextFormat = settings->value("evaluatedCode").value<QTextCharFormat>();
+    settings->endGroup();
+
+    QTextDocument *doc = c.document();
+
+    int startPos = c.selectionStart();
+    int endPos = c.selectionEnd();
+    QTextBlock startBlock = doc->findBlock(startPos);
+    QTextBlock endBlock = doc->findBlock(endPos);
+    startPos -= startBlock.position();
+    endPos -= endBlock.position();
+
+    // Get the bounds of visible blocks within the cursor's selection:
+
+    QTextBlock block = firstVisibleBlock();
+    int idx = block.blockNumber();
+    int sidx = startBlock.blockNumber();
+
+    QTextBlock firstBlock, lastBlock;
+    firstBlock = lastBlock = block;
+
+    QRectF geom = blockBoundingGeometry(block).translated(contentOffset());
+    qreal top = geom.top();
+    qreal bottom = top;
+    qreal width=0;
+
+    while(block.isValid() && bottom < viewport()->rect().height())
+    {
+        if(block.isVisible())
+        {
+            QTextLayout *l = block.layout();
+            QRectF r = l->boundingRect();
+            bottom += r.height();
+            if(idx < sidx) {
+                // Block not within the selection. Will skip it.
+                top = bottom;
+            }
+            else {
+                // Block within the selection.
+                width = qMax(width, l->maximumWidth() + r.left());
+            }
+        }
+
+        if(block == endBlock) break;
+
+        block = block.next();
+        ++idx;
+        if(top == bottom)
+            firstBlock = block;
+    }
+
+    lastBlock = block;
+
+    if(bottom == top) {
+        //qDebug("no visible block.");
+        return;
+    }
+
+    // Construct a pixmap to render the code on:
+
+    QPixmap pix( QSize(qCeil(width), qCeil(bottom - top)) );
+    pix.fill(QColor(0,0,0,0));
+
+    // Render the visible blocks:
+
+    QPainter painter(&pix);
+    QVector<QTextLayout::FormatRange> selections;
+    block = firstBlock;
+    int y=0;
+    while( block.isValid() )
+    {
+        if (block.isVisible())
+        {
+            QRectF blockRect = block.layout()->boundingRect();
+
+            // Use extra char formatting to hide code outside of selection
+            // and modify the appearance of selected code:
+
+            QTextLayout::FormatRange range;
+            selections.clear();
+
+            int start = 0;
+            if(block == startBlock) {
+                range.start = 0;
+                range.length = startPos;
+                range.format.setForeground(QColor(0,0,0,0));
+                range.format.setBackground(Qt::NoBrush);
+                selections.append(range);
+                start = startPos;
+            }
+
+            range.start = start;
+            range.length = (block == endBlock ? endPos : block.length() - 1) - range.start;
+            range.format = evalCodeTextFormat;
+            selections.append(range);
+
+            if(block == endBlock) {
+                range.start = range.start + range.length;
+                range.length = block.length() - 1 - range.start;
+                range.format.setForeground(QColor(0,0,0,0));
+                range.format.setBackground(Qt::NoBrush);
+                selections.append(range);
+            }
+
+            block.layout()->draw(&painter, QPointF(0,y), selections);
+
+            y += blockRect.height();
+        }
+
+        if(block == lastBlock) break;
+
+        block = block.next();
+    }
+
+    // Create an overlay item to display the pixmap, and animate it:
+
+    CodeFragmentOverlay *item = new CodeFragmentOverlay();
+    item->setPixmap(pix);
+    item->setPos(geom.left(), top);
+
+    mOverlay->addItem(item);
+
+    QPropertyAnimation *anim = new QPropertyAnimation(item, "opacity", item);
+    anim->setDuration(mBlinkDuration);
+    anim->setStartValue(1.0);
+    anim->setEndValue(0.0);
+    anim->setEasingCurve( QEasingCurve::InCubic );
+    anim->start();
+
+    connect(anim, SIGNAL(finished()), item, SLOT(deleteLater()));
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/code_editor/overlay.hpp b/editors/sc-ide/widgets/code_editor/overlay.hpp
new file mode 100644
index 0000000..726a358
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/overlay.hpp
@@ -0,0 +1,37 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_CODE_EDITOR_OVERLAY_HPP_INCLUDED
+#define SCIDE_WIDGETS_CODE_EDITOR_OVERLAY_HPP_INCLUDED
+
+#include <QGraphicsPixmapItem>
+
+namespace ScIDE {
+
+class CodeFragmentOverlay : public QObject, public QGraphicsPixmapItem
+{
+    Q_OBJECT
+    Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity)
+    Q_PROPERTY(qreal scale READ scale WRITE setScale )
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_CODE_EDITOR_OVERLAY_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/code_editor/sc_editor.cpp b/editors/sc-ide/widgets/code_editor/sc_editor.cpp
new file mode 100644
index 0000000..7dc35af
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/sc_editor.cpp
@@ -0,0 +1,1204 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "sc_editor.hpp"
+#include "autocompleter.hpp"
+#include "line_indicator.hpp"
+#include "../util/gui_utilities.hpp"
+#include "../../core/main.hpp"
+#include "../../core/doc_manager.hpp"
+#include "../../core/settings/manager.hpp"
+
+#include <QKeyEvent>
+#include <QStack>
+#include <QMimeData>
+#include <QUrl>
+
+namespace ScIDE {
+
+static void matchBracket( const TokenIterator & bracket, BracketPair & match );
+
+ScCodeEditor::ScCodeEditor( Document *doc, QWidget *parent ) :
+    GenericCodeEditor( doc, parent ),
+    mSpaceIndent(true),
+    mBlinkDuration(600),
+    mMouseBracketMatch(false),
+    mAutoCompleter( new AutoCompleter(this) )
+{
+    Q_ASSERT(mDoc != 0);
+
+    connect( this, SIGNAL(cursorPositionChanged()),
+             this, SLOT(matchBrackets()) );
+
+    connect( Main::instance(), SIGNAL(applySettingsRequest(Settings::Manager*)),
+             this, SLOT(applySettings(Settings::Manager*)) );
+
+    mAutoCompleter->documentChanged(textDocument());
+
+    applySettings( Main::settings() );
+}
+
+void ScCodeEditor::applySettings( Settings::Manager *settings )
+{
+    settings->beginGroup("IDE/editor");
+
+    mSpaceIndent = settings->value("spaceIndent").toBool();
+    mBlinkDuration = settings->value("blinkDuration").toInt();
+    mBracketHighlight = settings->value("colors/matchingBrackets").value<QTextCharFormat>();
+    mBracketMismatchFormat = settings->value("colors/mismatchedBrackets").value<QTextCharFormat>();
+    mStepForwardEvaluation = settings->value("stepForwardEvaluation").toBool();
+
+    settings->endGroup();
+}
+
+bool ScCodeEditor::event( QEvent *e )
+{
+    switch (e->type()) {
+    case QEvent::KeyPress:
+    {
+        QKeyEvent *ke = static_cast<QKeyEvent*>(e);
+        switch (ke->key()) {
+        case Qt::Key_Tab:
+            indent();
+            e->accept();
+            return true;
+        default:
+            break;
+        }
+        break;
+    }
+    default:
+        break;
+    }
+
+    return GenericCodeEditor::event(e);
+}
+
+void ScCodeEditor::keyPressEvent( QKeyEvent *e )
+{
+    QTextCursor cursor( textCursor() );
+    bool cursorMoved = true;
+    if (e == QKeySequence::MoveToNextWord)
+        moveToNextToken( cursor, QTextCursor::MoveAnchor );
+    else if (e == QKeySequence::MoveToPreviousWord)
+        moveToPreviousToken( cursor, QTextCursor::MoveAnchor );
+    else if (e == QKeySequence::SelectNextWord)
+        moveToNextToken( cursor, QTextCursor::KeepAnchor );
+    else if (e == QKeySequence::SelectPreviousWord)
+        moveToPreviousToken( cursor, QTextCursor::KeepAnchor );
+    else
+        cursorMoved = false;
+
+    if (cursorMoved) {
+        setTextCursor( cursor );
+        return;
+    }
+
+    switch (e->key()) {
+    case Qt::Key_Home:
+    {
+        Qt::KeyboardModifiers mods(e->modifiers());
+        if (mods && mods != Qt::ShiftModifier) {
+            GenericCodeEditor::keyPressEvent(e);
+            return;
+        }
+
+        hideMouseCursor();
+
+        QTextCursor::MoveMode mode =
+            mods & Qt::ShiftModifier ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor;
+
+        QTextCursor c(textCursor());
+        QTextBlock b(c.block());
+
+        int pos = indentedStartOfLine(b);
+        pos += b.position();
+
+        if (c.position() == pos)
+            c.movePosition(QTextCursor::StartOfLine, mode);
+        else
+            c.setPosition(pos, mode);
+
+        setTextCursor(c);
+
+        return;
+    }
+
+    case Qt::Key_Backtab:
+    {
+        hideMouseCursor();
+        QTextCursor cursor = textCursor();
+        insertSpaceToNextTabStop( cursor );
+        ensureCursorVisible();
+        return;
+    }
+
+    case Qt::Key_Enter:
+    case Qt::Key_Return:
+    case Qt::Key_BraceRight:
+    case Qt::Key_BracketRight:
+    case Qt::Key_ParenRight: {
+        hideMouseCursor();
+
+        // Wrap superclass' implementation into an edit block,
+        // so it can be joined with indentation later:
+
+        QTextCursor cursor = textCursor();
+
+        cursor.beginEditBlock();
+        GenericCodeEditor::keyPressEvent(e);
+        cursor.endEditBlock();
+
+        cursor.joinPreviousEditBlock();
+        indent();
+        cursor.endEditBlock();
+
+        cursor.setVerticalMovementX(-1);
+        setTextCursor(cursor);
+
+        break;
+    }
+    default:
+        GenericCodeEditor::keyPressEvent(e);
+    }
+
+    mAutoCompleter->keyPress(e);
+}
+
+void ScCodeEditor::mouseReleaseEvent ( QMouseEvent *e )
+{
+    // Prevent deselection of bracket match:
+    if(!mMouseBracketMatch)
+        GenericCodeEditor::mouseReleaseEvent(e);
+
+    mMouseBracketMatch = false;
+}
+
+void ScCodeEditor::mouseDoubleClickEvent( QMouseEvent * e )
+{
+    if (e->button() == Qt::LeftButton) {
+        QTextCursor cursor = cursorForPosition(e->pos());
+        QTextCursor selection = selectionForPosition( cursor.position() );
+
+        if (!selection.isNull()) {
+            mMouseBracketMatch = true;
+            setTextCursor(selection);
+            return;
+        }
+    }
+
+    GenericCodeEditor::mouseDoubleClickEvent(e);
+}
+
+void ScCodeEditor::mouseMoveEvent( QMouseEvent *e )
+{
+    // Prevent initiating a text drag:
+    if(!mMouseBracketMatch)
+        GenericCodeEditor::mouseMoveEvent(e);
+}
+
+void ScCodeEditor::dragEnterEvent( QDragEnterEvent * event )
+{
+    // The purpose is only to bypass GenericCodeEditor::dragEnterEvent:
+    QPlainTextEdit::dragEnterEvent(event);
+}
+
+bool ScCodeEditor::canInsertFromMimeData ( const QMimeData * data ) const
+{
+    if (data->hasUrls())
+        return true;
+
+    return QPlainTextEdit::canInsertFromMimeData(data);
+}
+
+void ScCodeEditor::insertFromMimeData ( const QMimeData * data )
+{
+    if (data->hasUrls()) {
+        QTextCursor cursor = textCursor();
+        QList<QUrl> urls = data->urls();
+        bool multiple = urls.size() > 1;
+        if (multiple) {
+            cursor.insertText("[");
+            cursor.insertBlock();
+        }
+        for (int i = 0; i < urls.size(); ++ i) {
+            QUrl url = urls[i];
+            cursor.insertText("\"");
+            if (url.scheme() == QString("file"))
+                cursor.insertText(url.toLocalFile());
+            else
+                cursor.insertText(url.toString());
+            cursor.insertText("\"");
+            if (i < urls.size() - 1) {
+                cursor.insertText(",");
+                cursor.insertBlock();
+            }
+        }
+        if (multiple) {
+            cursor.insertBlock();
+            cursor.insertText("]");
+        }
+    }
+    else
+        QPlainTextEdit::insertFromMimeData(data);
+}
+
+void ScCodeEditor::moveToNextToken( QTextCursor & cursor, QTextCursor::MoveMode mode )
+{
+    if (cursor.atBlockEnd()) {
+        cursor.movePosition( QTextCursor::NextCharacter, mode );
+        return;
+    }
+
+    QTextBlock block( cursor.block() );
+    QString blockText = block.text();
+    int positionInBlock = cursor.position() - block.position();
+
+    // go to end of token or end of word
+    TokenIterator tokenIt( block, positionInBlock );
+    if (tokenIt.isValid())
+        positionInBlock = tokenIt->positionInBlock + tokenIt->length;
+    else {
+        int pos = positionInBlock;
+        if (blockText[pos].isLetterOrNumber()) {
+            ++pos;
+            while (pos < blockText.size() && blockText[pos].isLetterOrNumber())
+                ++pos;
+        } else {
+            ++pos;
+        }
+        positionInBlock = pos;
+    }
+
+    // skip whitespace
+    while (positionInBlock < blockText.size() && blockText[positionInBlock].isSpace())
+        ++positionInBlock;
+
+    cursor.setPosition( positionInBlock + block.position(), mode );
+}
+
+void ScCodeEditor::moveToPreviousToken( QTextCursor & cursor, QTextCursor::MoveMode mode )
+{
+    if (cursor.atBlockStart()) {
+        cursor.movePosition( QTextCursor::PreviousCharacter, mode );
+        return;
+    }
+
+    QTextBlock block( cursor.block() );
+    QString blockText = block.text();
+    int positionInBlock = cursor.position() - block.position() - 1;
+
+    // skip whitespace
+    while (positionInBlock > 0 && blockText[positionInBlock].isSpace())
+        --positionInBlock;
+
+    cursor.setPosition(positionInBlock + block.position(), mode);
+    if (positionInBlock == 0)
+        return;
+
+    // go to beginning of token or beginning of word
+    TokenIterator tokenIt( block, positionInBlock );
+    if (tokenIt.isValid()) {
+        cursor.setPosition( tokenIt.position(), mode );
+    } else {
+        int pos = positionInBlock;
+        if (blockText[pos].isLetterOrNumber()) {
+            while (pos > 0 && blockText[pos-1].isLetterOrNumber())
+                --pos;
+        }
+        cursor.setPosition( pos + block.position(), mode );
+    }
+}
+
+QTextCursor ScCodeEditor::selectionForPosition( int position )
+{
+    QTextBlock block( textDocument()->findBlock(position) );
+    if (!block.isValid())
+        return QTextCursor();
+
+    int positionInBlock = position - block.position();
+
+    TokenIterator it = TokenIterator( block, positionInBlock );
+    if (it.type() == Token::Unknown) {
+        // Token is invalid, or Token::Unknown (i.e. punctuations).
+        // Prefer token at previous position.
+        TokenIterator alternativeIt = TokenIterator( block, positionInBlock - 1 );
+        if (alternativeIt.isValid())
+            it = alternativeIt;
+    }
+
+    if (it.isValid()) {
+        switch (it->type) {
+        case Token::OpeningBracket:
+        case Token::ClosingBracket:
+        {
+            BracketPair match;
+            matchBracket(it, match);
+            if (match.first.isValid() && match.second.isValid()) {
+                int start = match.first.position();
+                int end = match.second.position() + 1;
+                QTextCursor selection(textDocument());
+                if (it == match.second) {
+                    selection.setPosition(start);
+                    selection.setPosition(end, QTextCursor::KeepAnchor);
+                } else {
+                    selection.setPosition(end);
+                    selection.setPosition(start, QTextCursor::KeepAnchor);
+                }
+                return selection;
+            }
+            break;
+        }
+
+        default:
+            QTextCursor selection( textDocument() );
+            selection.setPosition( it.position() );
+            selection.setPosition( selection.position() + it->length, QTextCursor::KeepAnchor );
+            return selection;
+        }
+    }
+
+    return QTextCursor();
+}
+
+void ScCodeEditor::matchBrackets()
+{
+    mBracketSelections.clear();
+
+    QTextCursor cursor(textCursor());
+    QTextBlock block( cursor.block() );
+    int posInBlock = cursor.positionInBlock();
+    TokenIterator it(block);
+    while (it.isValid() && it.block() == block)
+    {
+        const Token & token = *it;
+        if (token.positionInBlock > posInBlock) {
+            it = TokenIterator();
+            break;
+        } else if (
+            (token.positionInBlock == posInBlock && token.type == Token::OpeningBracket) ||
+            (token.positionInBlock == posInBlock - 1 && token.type == Token::ClosingBracket)
+        )
+            break;
+        ++it;
+    }
+
+    BracketPair match;
+    if( it.isValid() && it.block() == block)
+        matchBracket( it, match );
+
+    if( match.first.isValid() && match.second.isValid() )
+    {
+        const Token & tok1 = *match.first;
+        const Token & tok2 = *match.second;
+
+        if (
+            (tok1.character == '(' && tok2.character == ')')
+            || (tok1.character == '[' && tok2.character == ']')
+            || (tok1.character == '{' && tok2.character == '}')
+        ){
+            QTextEdit::ExtraSelection selection;
+            selection.format = mBracketHighlight;
+
+            cursor.setPosition(match.first.position());
+            cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
+            selection.cursor = cursor;
+            mBracketSelections.append(selection);
+
+            cursor.setPosition(match.second.position());
+            cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
+            selection.cursor = cursor;
+            mBracketSelections.append(selection);
+        }
+        else {
+            QTextEdit::ExtraSelection selection;
+            selection.format = mBracketMismatchFormat;
+            cursor.setPosition(match.first.position());
+            cursor.setPosition(match.second.position()+1, QTextCursor::KeepAnchor);
+            selection.cursor = cursor;
+            mBracketSelections.append(selection);
+        }
+    }
+
+    updateExtraSelections();
+}
+
+int ScCodeEditor::indentedStartOfLine( const QTextBlock &b )
+{
+    QString t(b.text());
+    int n = t.size();
+    int i = 0;
+    while (i < n) {
+        QChar c(t[i]);
+        if (c != ' ' && c != '\t')
+            break;
+        ++i;
+    }
+
+    return i;
+}
+
+void ScCodeEditor::updateExtraSelections()
+{
+    QList<QTextEdit::ExtraSelection> selections;
+    selections.append(mBracketSelections);
+    selections.append(mSearchSelections);
+    setExtraSelections(selections);
+}
+
+void ScCodeEditor::indentCurrentRegion()
+{
+    indent(currentRegion());
+}
+
+void ScCodeEditor::indent()
+{
+    indent(textCursor());
+}
+
+void ScCodeEditor::indent( const QTextCursor & selection )
+{
+    if (selection.isNull())
+        return;
+
+    QTextCursor cursor(selection);
+
+    cursor.beginEditBlock();
+
+    QTextDocument *doc = QPlainTextEdit::document();
+    int startBlockNum = doc->findBlock(cursor.selectionStart()).blockNumber();
+    int endBlockNum = cursor.hasSelection() ?
+        doc->findBlock(cursor.selectionEnd()).blockNumber() : startBlockNum;
+
+    QStack<int> stack;
+    int level = 0;
+    int blockNum = 0;
+    QTextBlock block = QPlainTextEdit::document()->begin();
+    while (block.isValid())
+    {
+        if (level > 0) {
+            stack.push(level);
+            level = 0;
+        }
+
+        int initialStackSize = stack.size();
+
+        TextBlockData *data = static_cast<TextBlockData*>(block.userData());
+        if (data)
+        {
+            int count = data->tokens.size();
+            for (int idx = 0; idx < count; ++idx)
+            {
+                const Token & token = data->tokens[idx];
+                switch (token.type)
+                {
+                case Token::OpeningBracket:
+                    if (token.character != '(' || stack.size() || token.positionInBlock)
+                        level += 1;
+                    break;
+
+                case Token::ClosingBracket:
+                    if (level)
+                        level -= 1;
+                    else if(!stack.isEmpty()) {
+                        stack.top() -= 1;
+                        if (stack.top() <= 0)
+                            stack.pop();
+                    }
+                    break;
+
+                default:
+                    ;
+                }
+            }
+        }
+
+        if(blockNum >= startBlockNum) {
+            int indentLevel;
+            if (data && data->tokens.size() && data->tokens[0].type == Token::ClosingBracket)
+                indentLevel = stack.size();
+            else
+                indentLevel = initialStackSize;
+            block = indent(block, indentLevel);
+        }
+
+        if(blockNum == endBlockNum)
+            break;
+
+        block = block.next();
+        ++blockNum;
+    }
+
+    cursor.endEditBlock();
+}
+
+QString ScCodeEditor::makeIndentationString(int level)
+{
+    if (level <= 0)
+        return QString();
+
+    if ( mSpaceIndent ) {
+        const int spaces = mDoc->indentWidth() * level;
+        QString indentationString (spaces, QChar(' '));
+        return indentationString;
+    } else {
+        const int tabs = level;
+        QString indentationString (tabs, QChar('\t'));
+        return indentationString;
+    }
+}
+
+QTextBlock ScCodeEditor::indent( const QTextBlock & block, int level )
+{
+    QTextCursor cursor(block);
+    cursor.movePosition(QTextCursor::StartOfBlock);
+    cursor.setPosition(cursor.position() + indentedStartOfLine(block), QTextCursor::KeepAnchor);
+
+    cursor.insertText(makeIndentationString(level));
+
+    // modification has invalidated the block, so return a new one
+    return cursor.block();
+}
+
+int ScCodeEditor::indentationLevel(const QTextCursor & cursor)
+{
+    QTextDocument *doc = QPlainTextEdit::document();
+    int startBlockNum = doc->findBlock(cursor.selectionStart()).blockNumber();
+
+    QStack<int> stack;
+    int level = 0;
+    int blockNum = 0;
+    QTextBlock block = QPlainTextEdit::document()->begin();
+    while (block.isValid()) {
+        if (level > 0) {
+            stack.push(level);
+            level = 0;
+        }
+
+        TextBlockData *data = static_cast<TextBlockData*>(block.userData());
+        if (data) {
+            int count = data->tokens.size();
+            for (int idx = 0; idx < count; ++idx) {
+                const Token & token = data->tokens[idx];
+                switch (token.type) {
+                case Token::OpeningBracket:
+                    if (token.character != '(' || stack.size() || token.positionInBlock)
+                        level += 1;
+                    break;
+
+                case Token::ClosingBracket:
+                    if (level)
+                        level -= 1;
+                    else if(!stack.isEmpty()) {
+                        stack.top() -= 1;
+                        if (stack.top() <= 0)
+                            stack.pop();
+                    }
+                    break;
+
+                default:
+                    ;
+                }
+            }
+        }
+
+        if (blockNum == startBlockNum)
+            return stack.size();
+
+        block = block.next();
+        ++blockNum;
+    }
+
+    return -1;
+}
+
+void ScCodeEditor::insertSpaceToNextTabStop( QTextCursor &cursor )
+{
+    if ( mSpaceIndent ) {
+        const int indentWidth = mDoc->indentWidth();
+        if (indentWidth < 1) return;
+        const int spaces = indentWidth - (cursor.positionInBlock() % indentWidth);
+        QString spaceString (spaces, QChar(' '));
+        cursor.insertText( spaceString );
+    } else {
+        cursor.insertText("\t");
+    }
+}
+
+void ScCodeEditor::triggerAutoCompletion()
+{
+    mAutoCompleter->triggerCompletion();
+}
+
+void ScCodeEditor::triggerMethodCallAid()
+{
+    mAutoCompleter->triggerMethodCallAid();
+}
+
+static bool isSingleLineComment(QTextBlock const & block)
+{
+    static QRegExp commentRegex("^\\s*//.*");
+    return commentRegex.exactMatch(block.text());
+}
+
+static bool isSingleLineComment(QTextCursor const & selection)
+{
+    QTextCursor cursor(selection);
+    cursor.setPosition(selection.selectionStart());
+    QTextBlock startBlock = cursor.block();
+
+    cursor.setPosition(selection.selectionEnd() - 1);
+    QTextBlock endBlock = cursor.block();
+
+    for (QTextBlock block = startBlock; block != endBlock.next(); block = block.next()) {
+        if (!isSingleLineComment(block))
+            return false;
+    }
+
+    return true;
+}
+
+static bool isSelectionComment(QString const & text)
+{
+    QString trimmed = text.trimmed();
+    if ( trimmed.startsWith(QString("/*")) && trimmed.endsWith(QString("*/")) )
+        return true;
+    else
+        return false;
+}
+
+void ScCodeEditor::toggleComment()
+{
+    QTextCursor cursor = textCursor();
+
+    if (cursor.hasSelection())
+        toggleCommentSelection();
+    else
+        toggleCommentSingleLine();
+}
+
+void ScCodeEditor::toggleCommentSingleLine()
+{
+    QTextCursor cursor = textCursor();
+    cursor.beginEditBlock();
+
+    toggleCommentSingleLine( cursor );
+
+    cursor.endEditBlock();
+}
+
+void ScCodeEditor::addSingleLineComment(QTextCursor cursor, int indentation)
+{
+    QTextBlock currentBlock(cursor.block());
+    int blockIndentationLevel = indentationLevel(cursor);
+
+    cursor.movePosition(QTextCursor::StartOfBlock);
+    cursor.setPosition(cursor.position() + indentedStartOfLine(currentBlock), QTextCursor::KeepAnchor);
+
+    QString commentString = makeIndentationString(indentation) + QString("// ")
+                            + makeIndentationString(blockIndentationLevel - indentation);
+
+    cursor.insertText(commentString);
+
+    cursor.movePosition(QTextCursor::StartOfBlock);
+}
+
+void ScCodeEditor::removeSingleLineComment(QTextCursor cursor)
+{
+    QTextBlock currentBlock(cursor.block());
+    cursor.movePosition(QTextCursor::StartOfBlock);
+    const int startPosition = cursor.position();
+    const int indentPosition = indentedStartOfLine(currentBlock);
+    const int commentStartPosition = startPosition + indentPosition;
+
+    cursor.setPosition(commentStartPosition);
+    cursor.setPosition(commentStartPosition + 3, QTextCursor::KeepAnchor);
+
+    if (!cursor.selectedText().endsWith(QString("// "))) {
+        cursor.setPosition(commentStartPosition + 2, QTextCursor::KeepAnchor);
+        if (!cursor.selectedText().endsWith(QString("//")))
+            return;
+    }
+
+    cursor.insertText("");
+}
+
+void ScCodeEditor::toggleCommentSingleLine(QTextCursor cursor)
+{
+    QTextBlock currentBlock(cursor.block());
+
+    cursor.beginEditBlock();
+
+    if (!isSingleLineComment(currentBlock)) {
+        int blockIndentation = indentationLevel(cursor);
+        addSingleLineComment(cursor, blockIndentation);
+    } else
+        removeSingleLineComment(cursor);
+
+    cursor.endEditBlock();
+    indent(cursor);
+}
+
+static bool isBlockOnlySelection(QTextCursor cursor)
+{
+    Q_ASSERT(cursor.hasSelection());
+
+    QTextCursor begin(cursor);
+    begin.setPosition(begin.anchor());
+
+    if (begin.atBlockStart() && (cursor.atBlockStart() || cursor.atBlockEnd()))
+        return true;
+    else
+        return false;
+}
+
+void ScCodeEditor::toggleCommentSelection()
+{
+    QTextCursor cursor = textCursor();
+    cursor.beginEditBlock();
+
+    if (isBlockOnlySelection(cursor)) {
+        const bool isComment = isSingleLineComment(cursor);
+
+        QTextCursor selectionCursor(cursor);
+        selectionCursor.setPosition(cursor.selectionStart());
+
+        QTextBlock currentBlock = selectionCursor.block();
+        int firstBlockIndentation = isComment ? 0
+                                              : indentationLevel(selectionCursor);
+
+        do {
+            QTextCursor blockCursor(currentBlock);
+            if (!isComment)
+                addSingleLineComment(blockCursor, firstBlockIndentation);
+            else
+                removeSingleLineComment(blockCursor);
+            currentBlock = currentBlock.next();
+        } while (currentBlock.isValid() && currentBlock.position() < cursor.selectionEnd());
+
+        if (!isComment) {
+            // fix up selection
+            QTextCursor newSelection(cursor);
+            if (cursor.anchor() < cursor.position()) {
+                newSelection.setPosition(newSelection.selectionStart());
+                newSelection.movePosition(QTextCursor::StartOfBlock);
+                newSelection.setPosition(cursor.selectionEnd(), QTextCursor::KeepAnchor);
+            } else {
+                newSelection.setPosition(newSelection.selectionEnd());
+                newSelection.setPosition(cursor.selectionStart(), QTextCursor::KeepAnchor);
+                newSelection.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);
+            }
+            setTextCursor(newSelection);
+        }
+    } else {
+        QString selectionText = cursor.selectedText();
+        QTextCursor selectionCursor(cursor);
+        if (isSelectionComment(selectionText)) {
+            selectionText = selectionText.trimmed().remove(0, 2);
+            selectionText.chop(2);
+            selectionCursor.insertText(selectionText);
+        } else {
+            selectionText = QString("/*") + selectionText + QString("*/");
+            selectionCursor.insertText(selectionText);
+        }
+
+        // fix up selection
+        const int position = selectionCursor.position();
+        const int anchor   = selectionCursor.anchor();
+        if (position > anchor) {
+            cursor.setPosition(position - selectionText.size());
+            cursor.setPosition(position, QTextCursor::KeepAnchor);
+        } else {
+            cursor.setPosition(position);
+            cursor.setPosition(position - selectionText.size(), QTextCursor::KeepAnchor);
+        }
+        setTextCursor(cursor);
+    }
+
+    cursor.endEditBlock();
+}
+
+// taking nested brackets into account
+TokenIterator ScCodeEditor::previousOpeningBracket(TokenIterator it)
+{
+    int level = 0;
+    while (it.isValid()) {
+        switch (it->type) {
+        case Token::OpeningBracket:
+            if (level == 0)
+                return it;
+            --level;
+            break;
+
+        case Token::ClosingBracket:
+            ++level;
+
+        default:
+            break;
+        }
+        --it;
+    }
+    return it;
+}
+
+// taking nested brackets into account
+TokenIterator ScCodeEditor::nextClosingBracket(TokenIterator it)
+{
+    int level = 0;
+    while (it.isValid()) {
+        switch (it->type) {
+        case Token::ClosingBracket:
+            if (level == 0)
+                return it;
+            --level;
+            break;
+
+        case Token::OpeningBracket:
+            ++level;
+
+        default:
+            break;
+        }
+        ++it;
+    }
+    return it;
+}
+
+void ScCodeEditor::matchBracket( const TokenIterator & bracket, BracketPair & match )
+{
+    Q_ASSERT(bracket.isValid());
+
+    switch(bracket->type) {
+    case Token::OpeningBracket:
+        match.first = bracket;
+        match.second = nextClosingBracket(bracket.next());
+        break;
+    case Token::ClosingBracket:
+        match.second = bracket;
+        match.first = previousOpeningBracket(bracket.previous());
+        break;
+    default:
+        match.first = TokenIterator();
+        match.second = TokenIterator();
+    }
+}
+
+void ScCodeEditor::nextBracketPair( const TokenIterator & startIt, BracketPair & bracketPair )
+{
+    TokenIterator it( startIt );
+    while (it.isValid()) {
+        if (it->type == Token::OpeningBracket) {
+            matchBracket( it, bracketPair );
+            return;
+        }
+        ++it;
+    }
+    bracketPair = BracketPair();
+}
+
+inline static bool bracketPairContainsPosition( const BracketPair & bracketPair, int position )
+{
+    bool result =
+            bracketPair.first.isValid() && bracketPair.second.isValid()
+            && bracketPair.first.position() < position
+            && bracketPair.second.position() >= position;
+    return result;
+}
+
+void ScCodeEditor::gotoNextBlock()
+{
+    QTextCursor cursor = textCursor();
+
+    TokenIterator tokenIt = TokenIterator::rightOf( cursor.block(), cursor.positionInBlock() );
+    if (tokenIt.type() == Token::OpeningBracket
+            && tokenIt.block() == cursor.block()
+            && tokenIt->positionInBlock == cursor.positionInBlock())
+        ++tokenIt;
+
+    tokenIt = nextClosingBracket( tokenIt );
+
+    if (tokenIt.isValid())
+        setTextCursor( cursorAt(tokenIt, 1) );
+    else {
+        cursor.movePosition( QTextCursor::End );
+        setTextCursor( cursor );
+    }
+}
+
+void ScCodeEditor::gotoPreviousBlock()
+{
+    QTextCursor cursor = textCursor();
+
+    TokenIterator tokenIt = TokenIterator::leftOf(cursor.block(), cursor.positionInBlock());
+    if (tokenIt.type() == Token::ClosingBracket
+            && tokenIt.block() == cursor.block()
+            && tokenIt->positionInBlock == cursor.positionInBlock() - 1)
+        --tokenIt;
+
+
+    tokenIt = previousOpeningBracket( tokenIt );
+
+    if (tokenIt.isValid())
+        setTextCursor( cursorAt(tokenIt) );
+    else {
+        cursor.movePosition( QTextCursor::Start );
+        setTextCursor( cursor );
+    }
+}
+
+inline static bool tokenIsFirstAndOnlyInBlock( const TokenIterator & it )
+{
+    Q_ASSERT(it.isValid());
+    bool result = it->positionInBlock == 0;
+    result = result && static_cast<TextBlockData*>(it.block().userData())->tokens.size() == 1;
+    return result;
+}
+
+static bool bracketPairDefinesRegion( const BracketPair & bracketPair )
+{
+    Q_ASSERT(bracketPair.first.isValid());
+    Q_ASSERT(bracketPair.second.isValid());
+
+    if ( bracketPair.first->character != '(' || bracketPair.second->character != ')' )
+        return false;
+
+    if (!tokenIsFirstAndOnlyInBlock(bracketPair.second) || !tokenIsFirstAndOnlyInBlock(bracketPair.second))
+        return false;
+
+    // check whether this is an Event
+    TokenIterator it = bracketPair.first.next();
+    if (it.isValid()) {
+        if (it->type == Token::SymbolArg)
+            return false;
+        else {
+            ++it;
+            if (it.isValid() && it->character == ':')
+                return false;
+        }
+    }
+
+    return true;
+}
+
+QTextCursor ScCodeEditor::regionAroundCursor(const QTextCursor & cursor)
+{
+    int cursorPosition = cursor.position();
+
+    BracketPair bracketPair;
+    TokenIterator it = TokenIterator::rightOf( textDocument()->begin(), 0 );
+    while (it.isValid()) {
+        nextBracketPair(it, bracketPair);
+        if (bracketPair.first.isValid() && bracketPair.first.position() < cursorPosition)
+        {
+            if ( bracketPair.second.isValid() && bracketPair.second.position() >= cursorPosition
+                 && bracketPairDefinesRegion(bracketPair) )
+            {
+                QTextCursor regionCursor(QPlainTextEdit::document());
+                regionCursor.setPosition(bracketPair.first.position() + 1);
+                regionCursor.setPosition(bracketPair.second.position(), QTextCursor::KeepAnchor);
+                return regionCursor;
+            }
+        } else {
+            break;
+        }
+
+        it = bracketPair.second;
+    }
+
+    return QTextCursor();
+}
+
+QTextCursor ScCodeEditor::currentRegion()
+{
+    QTextCursor cursor = textCursor();
+    QTextBlock block = cursor.block();
+    int positionInBlock = cursor.positionInBlock();
+
+    if (TokenIterator(block, positionInBlock - 1).type() == Token::ClosingBracket)
+        cursor.movePosition( QTextCursor::PreviousCharacter );
+    else if (TokenIterator(block, positionInBlock).type() == Token::OpeningBracket)
+        cursor.movePosition( QTextCursor::NextCharacter );
+
+    return regionAroundCursor( cursor );
+}
+
+void ScCodeEditor::selectCurrentRegion()
+{
+    QTextCursor selectedRegionCursor = currentRegion();
+    if (!selectedRegionCursor.isNull() && selectedRegionCursor.hasSelection())
+        setTextCursor(selectedRegionCursor);
+}
+
+void ScCodeEditor::gotoNextRegion()
+{
+    QTextCursor cursor = textCursor();
+    int cursorPosition = cursor.position();
+
+    BracketPair bracketPair;
+    TokenIterator it = TokenIterator::rightOf( textDocument()->begin(), 0 );
+    while (it.isValid()) {
+        nextBracketPair(it, bracketPair);
+        if ( bracketPair.first.isValid() && bracketPair.second.isValid()
+             && bracketPair.first.position() > cursorPosition
+             && bracketPairDefinesRegion(bracketPair))
+        {
+            setTextCursor( cursorAt(bracketPair.first) );
+            return;
+        }
+        it = bracketPair.second;
+    }
+
+    cursor.movePosition(QTextCursor::End);
+    setTextCursor(cursor);
+}
+
+void ScCodeEditor::gotoPreviousRegion()
+{
+    QTextCursor cursor = textCursor();
+    int cursorPosition = cursor.position();
+
+    BracketPair prevBracketPair;
+    BracketPair bracketPair;
+    TokenIterator it = TokenIterator::rightOf( textDocument()->begin(), 0 );
+    while(it.isValid()) {
+        nextBracketPair(it, bracketPair);
+        if ( !bracketPair.second.isValid()
+             || bracketPair.second.position() >= cursorPosition - 1 )
+        {
+            break;
+        }
+        if (bracketPairDefinesRegion(bracketPair)) {
+            prevBracketPair = bracketPair;
+        }
+        it = bracketPair.second;
+    }
+
+    if ( prevBracketPair.first.isValid() && prevBracketPair.second.isValid() )
+    {
+        setTextCursor( cursorAt(prevBracketPair.second, 1) );
+        return;
+    }
+
+    cursor.movePosition(QTextCursor::Start);
+    setTextCursor(cursor);
+}
+
+bool ScCodeEditor::openDocumentation()
+{
+    return Main::openDocumentation(symbolUnderCursor());
+}
+
+void ScCodeEditor::openDefinition()
+{
+    Main::openDefinition(symbolUnderCursor(), this);
+}
+
+void ScCodeEditor::findReferences()
+{
+    Main::findReferences(symbolUnderCursor(), this);
+}
+
+void ScCodeEditor::evaluateLine()
+{
+    QString text;
+
+    // Try current selection
+    QTextCursor cursor = textCursor();
+    if (cursor.hasSelection())
+        text = cursor.selectedText();
+    else {
+        text = cursor.block().text();
+    
+        if( mStepForwardEvaluation ) {
+            QTextCursor newCursor = cursor;
+            newCursor.movePosition(QTextCursor::NextBlock);
+            setTextCursor(newCursor);
+        }
+
+        // Adjust cursor for code blinking:
+        cursor.movePosition(QTextCursor::StartOfBlock);
+        cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
+    }
+
+    if (text.isEmpty())
+        return;
+
+    text.replace( QChar( 0x2029 ), QChar( '\n' ) );
+
+    Main::evaluateCode(text);
+
+    blinkCode( cursor );
+}
+
+void ScCodeEditor::evaluateRegion()
+{
+    QString text;
+
+    // Try current selection
+    QTextCursor cursor = textCursor();
+    if (cursor.hasSelection())
+        text = cursor.selectedText();
+    else {
+        // If no selection, try current region
+        cursor = currentRegion();
+        if (!cursor.isNull()) {
+            text = cursor.selectedText();
+        } else {
+            // If no current region, try current line
+            cursor = textCursor();
+            text = cursor.block().text();
+            if( mStepForwardEvaluation ) {
+                QTextCursor newCursor = cursor;
+                newCursor.movePosition(QTextCursor::NextBlock);
+                setTextCursor(newCursor);
+            }
+            // Adjust cursor for code blinking:
+            cursor.movePosition(QTextCursor::StartOfBlock);
+            cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
+        }
+    }
+
+    if (text.isEmpty())
+        return;
+
+    text.replace( QChar( 0x2029 ), QChar( '\n' ) );
+
+    Main::evaluateCode(text);
+
+    blinkCode( cursor );
+}
+
+void ScCodeEditor::evaluateDocument()
+{
+    QString documentText = textDocument()->toPlainText();
+    Main::evaluateCode(documentText);
+}
+
+QTextCursor ScCodeEditor::cursorAt(const TokenIterator it, int offset)
+{
+    Q_ASSERT(it.isValid());
+
+    QTextCursor textCursor(textDocument());
+    textCursor.setPosition(it.position() + offset);
+
+    return textCursor;
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/code_editor/sc_editor.hpp b/editors/sc-ide/widgets/code_editor/sc_editor.hpp
new file mode 100644
index 0000000..3b7648b
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/sc_editor.hpp
@@ -0,0 +1,121 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_CODE_EDITOR_SC_EDITOR_HPP_INCLUDED
+#define SCIDE_WIDGETS_CODE_EDITOR_SC_EDITOR_HPP_INCLUDED
+
+#include "editor.hpp"
+#include "tokens.hpp"
+
+#include <QTextBlock>
+#include <utility>
+
+namespace ScIDE {
+
+typedef std::pair<TokenIterator, TokenIterator> BracketPair;
+
+class ScCodeEditor : public GenericCodeEditor
+{
+    Q_OBJECT
+
+public:
+    static TokenIterator previousOpeningBracket(TokenIterator it);
+    static TokenIterator nextClosingBracket(TokenIterator it);
+    static void matchBracket( const TokenIterator & bracket, BracketPair & match );
+    static void nextBracketPair( const TokenIterator & startIt, BracketPair & bracketPair );
+
+public:
+    ScCodeEditor( Document *, QWidget *parent = 0 );
+    void setIndentWidth( int );
+    QTextCursor currentRegion();
+    void blinkCode( const QTextCursor & c );
+    bool spaceIndent() { return mSpaceIndent; }
+
+public slots:
+    void applySettings( Settings::Manager * );
+    void setSpaceIndent(bool on) { mSpaceIndent = on; }
+    void indent();
+    void triggerAutoCompletion();
+    void triggerMethodCallAid();
+    void toggleComment();
+    void gotoPreviousBlock();
+    void gotoNextBlock();
+    void selectCurrentRegion();
+    void gotoNextRegion();
+    void gotoPreviousRegion();
+    bool openDocumentation();
+    void openDefinition();
+    void findReferences();
+    void evaluateLine();
+    void evaluateRegion();
+    void evaluateDocument();
+
+protected:
+    virtual bool event( QEvent * );
+    virtual void keyPressEvent( QKeyEvent * );
+    virtual void mouseReleaseEvent ( QMouseEvent * );
+    virtual void mouseDoubleClickEvent( QMouseEvent * );
+    virtual void mouseMoveEvent( QMouseEvent * );
+    virtual void dragEnterEvent( QDragEnterEvent * );
+    virtual bool canInsertFromMimeData ( const QMimeData * data ) const;
+    virtual void insertFromMimeData ( const QMimeData * data );
+
+private slots:
+    void matchBrackets();
+
+private:
+    QTextCursor cursorAt( const TokenIterator, int offset = 0 );
+    QTextCursor selectionForPosition( int position );
+    QTextCursor regionAroundCursor( const QTextCursor & );
+    void moveToNextToken( QTextCursor &, QTextCursor::MoveMode );
+    void moveToPreviousToken( QTextCursor &, QTextCursor::MoveMode );
+
+    void updateExtraSelections();
+    void indentCurrentRegion();
+
+    void toggleCommentSingleLine( QTextCursor );
+    void toggleCommentSingleLine();
+    void toggleCommentSelection();
+    void addSingleLineComment( QTextCursor, int indentationLevel );
+    void removeSingleLineComment( QTextCursor );
+
+    int indentedStartOfLine( const QTextBlock & );
+    void indent( const QTextCursor & );
+    QTextBlock indent( const QTextBlock & b, int level );
+    QString makeIndentationString( int level );
+    int indentationLevel( const QTextCursor & );
+    void insertSpaceToNextTabStop( QTextCursor & );
+
+    int mIndentWidth;
+    bool mSpaceIndent;
+    bool mStepForwardEvaluation;
+    int mBlinkDuration;
+    QTextCharFormat mBracketHighlight;
+    QTextCharFormat mBracketMismatchFormat;
+
+    QList<QTextEdit::ExtraSelection> mBracketSelections;
+    bool mMouseBracketMatch;
+
+    class AutoCompleter *mAutoCompleter;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_CODE_EDITOR_SC_EDITOR_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/code_editor/tokens.hpp b/editors/sc-ide/widgets/code_editor/tokens.hpp
new file mode 100644
index 0000000..944a556
--- /dev/null
+++ b/editors/sc-ide/widgets/code_editor/tokens.hpp
@@ -0,0 +1,346 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_CODE_EDITOR_BRACKETS_HPP_INCLUDED
+#define SCIDE_WIDGETS_CODE_EDITOR_BRACKETS_HPP_INCLUDED
+
+#include <QTextBlock>
+#include <vector>
+
+namespace ScIDE
+{
+
+struct Token
+{
+    enum Type
+    {
+        Unknown = 0,
+
+        WhiteSpace,
+
+        Keyword,
+        Builtin,
+        Primitive,
+        Name,
+        Class,
+        Symbol,
+        SymbolMark,
+        StringMark,
+        Char,
+        RadixFloat,
+        Float,
+        HexInt,
+        EnvVar,
+        SymbolArg,
+
+        SingleLineComment,
+        MultiLineCommentStart,
+        MultiLineCommentEnd,
+
+        OpeningBracket,
+        ClosingBracket,
+        Operator
+    };
+
+    Token( Type t, int pos, int len = 0, char c = 0 ):
+        type(t), positionInBlock(pos), length(len), character(c) {}
+    Token (Token const & rhs):
+        type(rhs.type),
+        positionInBlock(rhs.positionInBlock),
+        length(rhs.length),
+        character(rhs.character)
+    {}
+
+    Type type;
+    int positionInBlock;
+    int length;
+    char character;
+};
+
+struct TextBlockData : public QTextBlockUserData
+{
+    std::vector<Token> tokens;
+};
+
+class TokenIterator
+{
+
+/*
+TokenIterator allows easy iteration over tokens in a Document (produced by the syntax highlighter).
+
+An iterator is valid as long as it refers to an existing token.
+
+An invalid iterator must not be dereferenced, incremented or decremented.
+
+Incrementing and decrementing an iterator makes it refer to the next and previous token
+in the document, respectively, regardless of which block the tokens reside in.
+
+If there is no next/previous token, then incrementing/decrementing an iterator will make it invalid.
+*/
+
+private:
+    QTextBlock blk;
+    int idx;
+    TextBlockData *data;
+
+public:
+    TokenIterator(): idx(-1) {}
+    bool isValid() const             { return idx >= 0; }
+    const QTextBlock & block() const { return blk; }
+
+    bool operator == (TokenIterator &other) const
+    {
+        return blk == other.blk && idx == other.idx;
+    }
+
+    const Token & operator *()
+    {
+        Q_ASSERT(blk.isValid());
+        Q_ASSERT(idx >= 0);
+        Q_ASSERT(data);
+
+        return data->tokens[idx];
+    }
+
+    const Token * operator ->() const
+    {
+        Q_ASSERT(blk.isValid());
+        Q_ASSERT(idx >= 0);
+        Q_ASSERT(data);
+
+        return &data->tokens[idx];
+    }
+
+    // Constructs an iterator for the first token at the given block.
+    // If there's no token in the block, the new iterator is invalid.
+    TokenIterator( const QTextBlock & block ):
+        blk(block),
+        idx(-1)
+    {
+        if (block.isValid()) {
+            data = static_cast<TextBlockData*>(block.userData());
+            if (data && !data->tokens.empty())
+                idx = 0;
+        }
+    }
+
+    // Constructs an iterator for the token that starts at, or contains the given position.
+    // If there is no such token, the new iterator is invalid.
+    TokenIterator( const QTextBlock & block, int positionInBlock ):
+        blk(block)
+    {
+        if (block.isValid()) {
+            data = static_cast<TextBlockData*>(block.userData());
+            idx = data ? data->tokens.size() : 0;
+            while (idx--)
+            {
+                const Token & token = data->tokens[idx];
+                if (token.positionInBlock > positionInBlock)
+                    continue;
+                else if (token.positionInBlock == positionInBlock || token.positionInBlock + token.length > positionInBlock)
+                    break;
+            }
+        }
+        else
+            idx = -1;
+    }
+
+    // Return an iterator for the first token found left of given position, anywhere in the document.
+    // If there is no such token, the returned iterator is invalid.
+    static TokenIterator leftOf( const QTextBlock & block, int positionInBlock )
+    {
+        TokenIterator it;
+        it.blk = block;
+        it.idx = -1;
+
+        while(it.blk.isValid())
+        {
+            it.data = static_cast<TextBlockData*>(it.blk.userData());
+
+            it.idx = it.data ? it.data->tokens.size() : 0;
+
+            while(it.idx--)
+            {
+                Token const & token = it.data->tokens[it.idx];
+                if( positionInBlock < 0 || token.positionInBlock < positionInBlock )
+                    return it;
+            }
+
+            positionInBlock = -1; // match on first token in next block;
+            it.blk = it.blk.previous();
+        }
+
+        return it;
+    }
+
+    // Return an iterator for the first token found at or right of given position, anywhere in the document.
+    // If there is no such token, the returned iterator is invalid.
+    static TokenIterator rightOf( const QTextBlock & block, int positionInBlock )
+    {
+        TokenIterator it;
+        it.blk = block;
+        it.idx = -1;
+
+        while(it.blk.isValid())
+        {
+            it.data = static_cast<TextBlockData*>(it.blk.userData());
+
+            int n = it.data ? it.data->tokens.size() : 0;
+
+            while(++it.idx < n)
+            {
+                Token const & token = it.data->tokens[it.idx];
+                if( token.positionInBlock >= positionInBlock )
+                    return it;
+            }
+
+            it.idx = -1;
+            positionInBlock = -1; // match right on first token in next block;
+            it.blk = it.blk.next();
+        }
+
+        return it;
+    }
+
+    // Return an iterator for the token at 'pos' or 'pos-1'.
+    // If there is no such token, the returned iterator is invalid.
+    static TokenIterator around( const QTextBlock & block, int positionInBlock )
+    {
+        TokenIterator it;
+        it.blk = block;
+        it.idx = -1;
+
+        if(!block.isValid())
+            return it;
+
+        it.data = static_cast<TextBlockData*>(block.userData());
+
+        if (!it.data)
+            return it;
+
+        int n = it.data->tokens.size();
+        for( int i = 0; i < n; ++i )
+        {
+            Token const & token = it.data->tokens[i];
+            if(token.positionInBlock > positionInBlock) {
+                return it;
+            }
+            else if(token.positionInBlock == positionInBlock - 1 || token.positionInBlock == positionInBlock)
+            {
+                it.idx = i;
+                break;
+            }
+        }
+
+        return it;
+    }
+
+    TokenIterator& operator ++()
+    {
+        if(idx < 0)
+            return *this;
+
+        do
+        {
+            if(idx < 0)
+                data = static_cast<TextBlockData*>(blk.userData());
+
+            if (data)
+            {
+                int n = data->tokens.size();
+                if(++idx < n)
+                    return *this;
+            }
+
+            idx = -1;
+            blk = blk.next();
+        }
+        while( blk.isValid() );
+
+        return *this;
+    }
+
+    TokenIterator& operator --()
+    {
+        if(idx > 0)
+        {
+            --idx;
+            return *this;
+        }
+        else if( idx < 0 )
+        {
+            return *this;
+        }
+
+        idx = -1;
+        while( (blk = blk.previous()).isValid() )
+        {
+            data = static_cast<TextBlockData*>(blk.userData());
+
+            if(data)
+                idx = data->tokens.size() - 1;
+
+            if (idx < 0)
+                continue;
+
+            // we have a valid idx
+            break;
+        }
+
+        return *this;
+    }
+
+    TokenIterator previous() const
+    {
+        TokenIterator it(*this);
+        --it;
+        return it;
+    }
+
+    TokenIterator next() const
+    {
+        TokenIterator it(*this);
+        ++it;
+        return it;
+    }
+
+    char character() const
+    {
+        return (*this)->character;
+    }
+
+    // A convenience function returning the global position in document of the token
+    // referred to by this iterator
+    int position() const
+    {
+        return (*this)->positionInBlock + blk.position();
+    }
+
+    // A convenience function returning the type of token referred to by this iterator,
+    // or Token::Unknown if the iterator is invalid
+    Token::Type type() const
+    {
+        return isValid() ? (*this)->type : Token::Unknown;
+    }
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_CODE_EDITOR_BRACKETS_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/doc_list.cpp b/editors/sc-ide/widgets/doc_list.cpp
new file mode 100644
index 0000000..2fccb70
--- /dev/null
+++ b/editors/sc-ide/widgets/doc_list.cpp
@@ -0,0 +1,133 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "doc_list.hpp"
+#include "../core/doc_manager.hpp"
+
+#include <QApplication>
+#include <QStyle>
+
+namespace ScIDE {
+
+DocumentListWidget::DocumentListWidget(DocumentManager *manager, QWidget * parent):
+    QListWidget(parent),
+    mDocModifiedIcon( QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton) )
+{
+    setFrameShape( QFrame::NoFrame );
+
+    connect(manager, SIGNAL(opened(Document*, int, int)), this, SLOT(onOpen(Document*, int, int)));
+    connect(manager, SIGNAL(closed(Document*)), this, SLOT(onClose(Document*)));
+    connect(manager, SIGNAL(saved(Document*)), this, SLOT(onSaved(Document*)));
+    connect(&mModificationMapper, SIGNAL(mapped(QObject*)),
+            this, SLOT(onModificationChanged(QObject*)));
+    connect(this, SIGNAL(itemClicked(QListWidgetItem*)),
+            this, SLOT(onItemClicked(QListWidgetItem*)));
+}
+
+void DocumentListWidget::setCurrent( Document *doc )
+{
+    if(!doc)
+        setCurrentRow(-1);
+    else {
+        Item *itm = itemFor(doc);
+        if(itm)
+            setCurrentItem(itm);
+    }
+}
+
+void DocumentListWidget::onOpen( Document *doc, int, int )
+{
+    addItemFor(doc);
+}
+
+void DocumentListWidget::onClose( Document *doc )
+{
+    delete itemFor(doc);
+}
+
+void DocumentListWidget::onSaved( Document *doc )
+{
+    Item *item = itemFor(doc);
+    if(item)
+        item->setText(doc->title());
+}
+
+void DocumentListWidget::onModificationChanged( QObject * obj )
+{
+    Document *doc = qobject_cast<Document*>(obj);
+    Item *item = itemFor(doc);
+    if(item)
+        item->setIcon(
+            doc->textDocument()->isModified() ?
+            mDocModifiedIcon : QIcon()
+        );
+}
+
+void DocumentListWidget::onItemClicked(QListWidgetItem* litem)
+{
+    Item *item = itemFor(litem);
+    if(item)
+        Q_EMIT( clicked(item->mDoc) );
+}
+
+DocumentListWidget::Item * DocumentListWidget::addItemFor( Document *doc )
+{
+    Item *item = new Item(doc, this);
+
+    QTextDocument *tdoc = doc->textDocument();
+
+    if(tdoc->isModified())
+        item->setIcon( mDocModifiedIcon );
+
+    mModificationMapper.setMapping(tdoc, doc);
+    connect(tdoc, SIGNAL(modificationChanged(bool)),
+            &mModificationMapper, SLOT(map()));
+
+    return item;
+}
+
+DocumentListWidget::Item *DocumentListWidget::itemFor( Document *doc )
+{
+    int c = count();
+    for(int i = 0; i < c; ++i)
+    {
+        Item *itm = itemFor( item(i) );
+        if(itm && itm->mDoc == doc) return itm;
+    }
+    return 0;
+}
+
+DocumentListWidget::Item *DocumentListWidget::itemFor( QListWidgetItem *litem )
+{
+    if(litem->type() == QListWidgetItem::UserType)
+        return static_cast<Item*>(litem);
+    else
+        return 0;
+}
+
+DocumentsDocklet::DocumentsDocklet(DocumentManager *manager, QWidget* parent):
+    Docklet(tr("Documents"), parent),
+    mDocList(new DocumentListWidget(manager))
+{
+    setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+    setWidget(mDocList);
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/doc_list.hpp b/editors/sc-ide/widgets/doc_list.hpp
new file mode 100644
index 0000000..efebab4
--- /dev/null
+++ b/editors/sc-ide/widgets/doc_list.hpp
@@ -0,0 +1,98 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_DOC_LIST_HPP_INCLUDED
+#define SCIDE_WIDGETS_DOC_LIST_HPP_INCLUDED
+
+#include "util/docklet.hpp"
+#include "../core/doc_manager.hpp"
+
+#include <QListWidget>
+#include <QSignalMapper>
+
+namespace ScIDE {
+
+class DocumentManager;
+class Document;
+
+class DocumentListWidget : public QListWidget
+{
+    Q_OBJECT
+
+public:
+
+    DocumentListWidget(DocumentManager *, QWidget * parent = 0);
+
+public Q_SLOTS:
+
+    void setCurrent( Document * );
+
+Q_SIGNALS:
+
+    void clicked( Document * );
+
+private Q_SLOTS:
+
+    void onOpen( Document *, int, int );
+    void onClose( Document * );
+    void onSaved( Document * );
+    void onModificationChanged(QObject*);
+    void onItemClicked(QListWidgetItem*);
+
+protected:
+
+    virtual QSize sizeHint() const { return QSize(200,200); }
+
+private:
+    struct Item : public QListWidgetItem
+    {
+        Item( Document * doc, QListWidget * parent = 0 ):
+            QListWidgetItem(parent, QListWidgetItem::UserType),
+            mDoc(doc)
+        {
+            setText(doc->title());
+        }
+
+        Document *mDoc;
+    };
+
+    Item *addItemFor( Document * );
+    Item *itemFor( Document * );
+    Item *itemFor( QListWidgetItem * );
+    QSignalMapper mModificationMapper;
+    QIcon mDocModifiedIcon;
+};
+
+class DocumentsDocklet : public Docklet
+{
+    Q_OBJECT
+public:
+    DocumentsDocklet(DocumentManager *manager, QWidget* parent = 0);
+
+    DocumentListWidget *list() { return mDocList; }
+
+private:
+
+    DocumentListWidget *mDocList;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_DOC_LIST_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/documents_dialog.cpp b/editors/sc-ide/widgets/documents_dialog.cpp
new file mode 100644
index 0000000..55b747a
--- /dev/null
+++ b/editors/sc-ide/widgets/documents_dialog.cpp
@@ -0,0 +1,284 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "documents_dialog.hpp"
+#include "main_window.hpp"
+#include "../core/main.hpp"
+
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QDialogButtonBox>
+#include <QPushButton>
+#include <QHeaderView>
+#include <QDir>
+#include <QApplication>
+
+namespace ScIDE {
+
+DocumentsDialog::DocumentsDialog( Mode mode, QWidget * parent ):
+    QDialog(parent)
+{
+    init(mode);
+}
+
+DocumentsDialog::DocumentsDialog(const QList<Document*> & docs, Mode mode, QWidget *parent):
+    QDialog(parent)
+{
+    init(mode, docs);
+}
+
+void DocumentsDialog::init( Mode mode, const QList<Document*> &docs )
+{
+    DocumentManager *mng = Main::documentManager();
+    connect(mng, SIGNAL(changedExternally(Document*)), this, SLOT(onDocumentChangedExternally(Document*)));
+
+    mMode = mode;
+
+    mLabel = new QLabel;
+    mLabel->setWordWrap(true);
+
+    mDocTree = new QTreeWidget;
+    mDocTree->setRootIsDecorated(false);
+
+    QStringList headerLabels;
+    headerLabels << tr("Document") << tr("Path", "File path.");
+    if (mode == ExternalChange)
+        headerLabels << tr("Status");
+    mDocTree->setHeaderLabels(headerLabels);
+
+    mDocTree->header()->setStretchLastSection(false);
+    mDocTree->header()->setResizeMode(1, QHeaderView::Stretch);
+    if (mode == ExternalChange)
+        mDocTree->header()->setResizeMode(2, QHeaderView::ResizeToContents);
+
+    switch (mode)
+    {
+    case ExternalChange:
+        setWindowTitle(tr("Externally Changed Documents"));
+        mLabel->setText(tr("The following documents have changed externally.\n\n"
+            "Apply the desired actions to selected documents, until the list is empty."));
+        break;
+    case Quit:
+        setWindowTitle(tr("Unsaved Documents"));
+        mLabel->setText(tr("The following documents have unsaved changes.\n\n"
+            "Apply desired actions to selected documents, until the list is empty."));
+        break;
+    }
+
+    foreach(Document *doc, docs)
+        addDocument(doc);
+
+    QDialogButtonBox *dialogBtnBox = new QDialogButtonBox();
+    QPushButton *btn;
+    QPushButton *defaultBtn;
+    if (mode == ExternalChange) {
+        defaultBtn = btn = dialogBtnBox->addButton(tr("&Reload"), QDialogButtonBox::ActionRole);
+        btn->setIcon( QIcon::fromTheme("view-refresh") );
+        connect(btn, SIGNAL(clicked()), this, SLOT(reloadSelected()));
+
+        btn = dialogBtnBox->addButton(tr("Over&write"), QDialogButtonBox::ActionRole);
+        btn->setIcon( QIcon::fromTheme("document-save") );
+        connect(btn, SIGNAL(clicked()), this, SLOT(saveSelected()));
+
+        btn = dialogBtnBox->addButton(tr("&Ignore"), QDialogButtonBox::AcceptRole);
+        btn->setIcon( QIcon::fromTheme("window-close") );
+        connect(btn, SIGNAL(clicked()), this, SLOT(ignoreSelected()));
+
+        btn = dialogBtnBox->addButton(tr("&Close"), QDialogButtonBox::AcceptRole);
+        btn->setIcon( QIcon::fromTheme("window-close") );
+        connect(btn, SIGNAL(clicked()), this, SLOT(closeSelected()));
+    }
+    else {
+        defaultBtn = btn = dialogBtnBox->addButton(tr("&Save"), QDialogButtonBox::ActionRole);
+        btn->setIcon( QIcon::fromTheme("document-save") );
+        connect(btn, SIGNAL(clicked()), this, SLOT(saveSelected()));
+
+        btn = dialogBtnBox->addButton(tr("&Discard"), QDialogButtonBox::ActionRole);
+        btn->setIcon( QIcon::fromTheme("window-close") );
+        connect(btn, SIGNAL(clicked()), this, SLOT(ignoreSelected()));
+
+        btn = dialogBtnBox->addButton(tr("&Cancel"), QDialogButtonBox::RejectRole);
+        btn->setIcon( QIcon::fromTheme("window-close") );
+        connect(btn, SIGNAL(clicked()), this, SLOT(reject()));
+    }
+
+    QPushButton *selectAllBtn = new QPushButton(tr("Select &All"));
+    connect(selectAllBtn, SIGNAL(clicked()), this, SLOT(selectAll()));
+
+    QPushButton *selectNoneBtn = new QPushButton(tr("Select N&one"));
+    connect(selectNoneBtn, SIGNAL(clicked()), this, SLOT(selectNone()));
+
+    QLabel *iconLabel = new QLabel;
+    iconLabel->setPixmap( QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(48,48) );
+    iconLabel->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
+
+    QHBoxLayout *lblBox = new QHBoxLayout();
+    lblBox->addWidget( iconLabel );
+    lblBox->addWidget( mLabel );
+
+    QHBoxLayout *selectionBox = new QHBoxLayout();
+    selectionBox->addWidget(selectAllBtn);
+    selectionBox->addWidget(selectNoneBtn);
+
+    QVBoxLayout *vbox = new QVBoxLayout();
+    vbox->addLayout( lblBox );
+    vbox->addWidget( mDocTree );
+    vbox->addLayout( selectionBox );
+    vbox->addWidget( dialogBtnBox );
+
+    setLayout(vbox);
+
+    defaultBtn->setDefault(true);
+    defaultBtn->setFocus(Qt::OtherFocusReason);
+
+    resize(500,300);
+}
+
+void DocumentsDialog::addDocument( Document *doc )
+{
+    Item *item = new Item( doc );
+    mDocTree->addTopLevelItem(item);
+}
+
+void DocumentsDialog::selectAll()
+{
+    int c = count();
+    for (int i = 0; i < c; ++i)
+        item(i)->setChecked(true);
+}
+
+void DocumentsDialog::selectNone()
+{
+    int c = count();
+    for (int i = 0; i < c; ++i)
+        item(i)->setChecked(false);
+}
+
+void DocumentsDialog::saveSelected()
+{
+    int i = 0;
+    while (i < count())
+    {
+        Item *itm = item(i);
+        if ( itm->isChecked() )
+        {
+            if ( !MainWindow::save(itm->document()) )
+                return;
+            delete itm;
+        }
+        else
+            ++i;
+    }
+    if (!count())
+        accept();
+}
+
+void DocumentsDialog::reloadSelected()
+{
+    DocumentManager *mng = Main::documentManager();
+
+    int i = 0;
+    while (i < count())
+    {
+        Item *itm = item(i);
+        if ( itm->isChecked() )
+        {
+            if ( !mng->reload(itm->document()) )
+                return;
+            delete itm;
+        }
+        else
+            ++i;
+    }
+    if (!count())
+        accept();
+}
+
+void DocumentsDialog::ignoreSelected()
+{
+    int i = 0;
+    while (i < count())
+    {
+        Item *itm = item(i);
+        if ( itm->isChecked() )
+            delete itm;
+        else
+            ++i;
+    }
+    if (!count())
+        accept();
+}
+
+void DocumentsDialog::closeSelected()
+{
+    DocumentManager *mng = Main::documentManager();
+
+    int i = 0;
+    while (i < count())
+    {
+        Item *itm = item(i);
+        if ( itm->isChecked() )
+        {
+            mng->close(itm->document());
+            delete itm;
+        }
+        else
+            ++i;
+    }
+    if (!count())
+        accept();
+}
+
+void DocumentsDialog::onDocumentChangedExternally( Document *doc )
+{
+    int c = count();
+    for (int i = 0; i < c; ++i)
+    {
+        Item *itm = item(i);
+        if (itm->document() == doc) {
+            itm->update();
+            return;
+        }
+    }
+
+    addDocument(doc);
+}
+
+DocumentsDialog::Item::Item(Document *doc):
+    mDoc(doc)
+{
+    update();
+}
+
+void DocumentsDialog::Item::update()
+{
+    setTitle(mDoc->title());
+    setPath(mDoc->filePath());
+    if (!mDoc->filePath().isEmpty() && !QFile::exists(mDoc->filePath())) {
+        setStatus(tr("Removed"));
+        setChecked(false);
+    }
+    else {
+        setStatus(tr("Modified"));
+        setChecked(true);
+    }
+}
+
+}
diff --git a/editors/sc-ide/widgets/documents_dialog.hpp b/editors/sc-ide/widgets/documents_dialog.hpp
new file mode 100644
index 0000000..63593be
--- /dev/null
+++ b/editors/sc-ide/widgets/documents_dialog.hpp
@@ -0,0 +1,89 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_UTIL_DOCUMENTS_DIALOG_HPP_INCLUDED
+#define SCIDE_WIDGETS_UTIL_DOCUMENTS_DIALOG_HPP_INCLUDED
+
+#include "../core/doc_manager.hpp"
+
+#include <QDialog>
+#include <QTreeWidget>
+#include <QLabel>
+
+namespace ScIDE {
+
+class Document;
+
+class DocumentsDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    enum Mode
+    {
+        ExternalChange,
+        Quit
+    };
+
+    DocumentsDialog(Mode, QWidget *parent = 0);
+    DocumentsDialog(const QList<Document*> & docs, Mode, QWidget *parent = 0);
+    void setText( const QString &text ) { mLabel->setText(text); }
+    void addDocument( Document * );
+    int count() { return mDocTree->topLevelItemCount(); }
+
+public slots:
+    void selectAll();
+    void selectNone();
+
+private slots:
+    void saveSelected();
+    void reloadSelected();
+    void ignoreSelected();
+    void closeSelected();
+    void onDocumentChangedExternally( Document * );
+
+private:
+
+    class Item : public QTreeWidgetItem
+    {
+    public:
+        Item(Document *doc);
+        Document *document() const { return mDoc; }
+        bool isChecked() const { return checkState(0) == Qt::Checked; }
+        void setChecked( bool checked ) { setCheckState(0, checked ? Qt::Checked : Qt::Unchecked); }
+        void update();
+    private:
+        void setTitle( const QString &title ) { setText(0, title); }
+        void setPath( const QString &path ) { setText(1, path); }
+        void setStatus( const QString &status ) { setText(2, status); }
+        Document *mDoc;
+    };
+
+    void init( Mode mode, const QList<Document*> & = QList<Document*>() );
+    Item *item( int idx ) { return static_cast<Item*>(mDocTree->topLevelItem(idx)); }
+
+    Mode mMode;
+    QLabel *mLabel;
+    QTreeWidget *mDocTree;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_UTIL_DOCUMENTS_DIALOG_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/editor_box.cpp b/editors/sc-ide/widgets/editor_box.cpp
new file mode 100644
index 0000000..d255ef9
--- /dev/null
+++ b/editors/sc-ide/widgets/editor_box.cpp
@@ -0,0 +1,152 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "editor_box.hpp"
+#include "code_editor/sc_editor.hpp"
+#include "../../core/main.hpp"
+
+#include <QPainter>
+
+namespace ScIDE {
+
+QPointer<CodeEditorBox> CodeEditorBox::gActiveBox;
+
+CodeEditorBox::CodeEditorBox(QWidget *parent) :
+    QWidget(parent)
+{
+    setFocusPolicy(Qt::StrongFocus);
+    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+
+    mLayout = new QStackedLayout();
+    setLayout(mLayout);
+
+    connect(Main::documentManager(), SIGNAL(closed(Document*)),
+            this, SLOT(onDocumentClosed(Document*)));
+}
+
+void CodeEditorBox::setDocument(Document *doc, int pos, int selectionLength)
+{
+    if (!doc)
+        return;
+
+    GenericCodeEditor *editor = currentEditor();
+    bool switchEditor = !editor || editor->document() != doc;
+
+    if (switchEditor) {
+        editor = editorForDocument(doc);
+        if (!editor) {
+            editor = doc->isPlainText() ? new GenericCodeEditor(doc)
+                                        : new ScCodeEditor(doc);
+            editor->installEventFilter(this);
+            mHistory.prepend(editor);
+            mLayout->addWidget(editor);
+        }
+        else {
+            mHistory.removeOne(editor);
+            mHistory.prepend(editor);
+        }
+        mLayout->setCurrentWidget(editor);
+        setFocusProxy(editor);
+    }
+
+    if (pos != -1)
+        editor->showPosition(pos, selectionLength);
+
+    if (switchEditor)
+        emit currentChanged(editor);
+}
+
+void CodeEditorBox::onDocumentClosed(Document *doc)
+{
+    GenericCodeEditor * editor = editorForDocument(doc);
+    if (editor) {
+        bool wasCurrent = editor == currentEditor();
+        mHistory.removeAll(editor);
+        delete editor;
+        if (wasCurrent) {
+            editor = currentEditor();
+            if (editor)
+                mLayout->setCurrentWidget(editor);
+            setFocusProxy(editor);
+            emit currentChanged(editor);
+        }
+    }
+}
+
+GenericCodeEditor *CodeEditorBox::currentEditor()
+{
+    if (mHistory.count())
+        return mHistory.first();
+    else
+        return 0;
+}
+
+int CodeEditorBox::historyIndexOf(Document *doc)
+{
+    int count = mHistory.count();
+    for(int idx = 0; idx < count; ++idx)
+        if (mHistory[idx]->document() == doc)
+            return idx;
+    return -1;
+}
+
+GenericCodeEditor *CodeEditorBox::editorForDocument(Document* doc)
+{
+    foreach(GenericCodeEditor *editor, mHistory)
+        if (editor->document() == doc)
+            return editor;
+    return 0;
+}
+
+bool CodeEditorBox::eventFilter( QObject *object, QEvent *event )
+{
+    switch(event->type()) {
+    case QEvent::FocusIn:
+        setActive();
+    default:;
+    }
+
+    return QWidget::eventFilter(object, event);
+}
+
+void CodeEditorBox::focusInEvent( QFocusEvent * )
+{
+    setActive();
+}
+
+Document * CodeEditorBox::currentDocument()
+{
+    GenericCodeEditor *editor = currentEditor();
+    return editor ? editor->document() : 0;
+}
+
+void CodeEditorBox::paintEvent( QPaintEvent * )
+{
+    if (mLayout->currentWidget() == 0) {
+        QPainter painter(this);
+        painter.setRenderHint( QPainter::Antialiasing, true );
+        int colorRatio = isActive() ? 160 : 125;
+        painter.setBrush( palette().color(QPalette::Window).darker(colorRatio) );
+        painter.setPen( Qt::NoPen );
+        painter.drawRoundedRect( rect().adjusted(4, 4, -4, -4), 4, 4 );
+    }
+}
+
+} // namesapce ScIDE
diff --git a/editors/sc-ide/widgets/editor_box.hpp b/editors/sc-ide/widgets/editor_box.hpp
new file mode 100644
index 0000000..62ea96f
--- /dev/null
+++ b/editors/sc-ide/widgets/editor_box.hpp
@@ -0,0 +1,91 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+
+#ifndef SCIDE_WIDGET_CODE_EDITOR_EDITOR_BOX_HPP
+#define SCIDE_WIDGET_CODE_EDITOR_EDITOR_BOX_HPP
+
+#include <QWidget>
+#include <QStackedLayout>
+#include <QPointer>
+
+namespace ScIDE {
+
+class Document;
+class GenericCodeEditor;
+
+class CodeEditorBox : public QWidget
+{
+    Q_OBJECT
+
+public:
+    typedef QList< GenericCodeEditor * > History;
+
+    CodeEditorBox(QWidget *parent = 0);
+
+    void setDocument(Document *, int pos = -1, int selectionLength = 0);
+
+    GenericCodeEditor *currentEditor();
+    Document *currentDocument();
+
+    const History & history() { return mHistory; }
+
+    void setActive() {
+        if (isActive())
+            return;
+
+        CodeEditorBox *lastActiveBox = gActiveBox;
+        gActiveBox = this;
+
+        if (lastActiveBox)
+            lastActiveBox->update();
+
+        update();
+
+        emit activated(this);
+    }
+
+    bool isActive() { return gActiveBox == this; }
+
+    QSize minimumSizeHint() const { return QSize(100, 100); }
+    QSize sizeHint() const { return QSize(100, 100); }
+
+signals:
+    void currentChanged(GenericCodeEditor*);
+    void activated( CodeEditorBox *me );
+
+private slots:
+    void onDocumentClosed(Document*);
+
+private:
+    int historyIndexOf(Document*);
+    GenericCodeEditor *editorForDocument(Document*);
+    bool eventFilter( QObject *, QEvent * );
+    void focusInEvent( QFocusEvent * );
+    void paintEvent( QPaintEvent * );
+
+    QStackedLayout *mLayout;
+    History mHistory;
+    static QPointer<CodeEditorBox> gActiveBox;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGET_CODE_EDITOR_EDITOR_BOX_HPP
diff --git a/editors/sc-ide/widgets/find_replace_tool.cpp b/editors/sc-ide/widgets/find_replace_tool.cpp
new file mode 100644
index 0000000..b9c773d
--- /dev/null
+++ b/editors/sc-ide/widgets/find_replace_tool.cpp
@@ -0,0 +1,309 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "find_replace_tool.hpp"
+#include "main_window.hpp"
+#include "code_editor/editor.hpp"
+#include "../core/main.hpp"
+#include "../core/settings/manager.hpp"
+
+#include <QApplication>
+#include <QTextBlock>
+#include <QToolButton>
+#include <QStyle>
+#include <QHBoxLayout>
+
+namespace ScIDE {
+
+TextFindReplacePanel::TextFindReplacePanel( QWidget * parent ):
+    QWidget(parent),
+    mMode((Mode) 0), // a hack so that first setMode() works
+    mEditor(0),
+    mSearchPosition(-1)
+{
+    mFindField = new QLineEdit;
+    mReplaceField = new QLineEdit;
+
+    mNextBtn = new QToolButton();
+    mNextBtn->setIcon( style()->standardIcon( QStyle::SP_ArrowForward ) );
+    mNextBtn->setToolTip( tr("Find Next") );
+
+    mPrevBtn = new QToolButton();
+    mPrevBtn->setIcon( style()->standardIcon( QStyle::SP_ArrowBack ) );
+    mPrevBtn->setToolTip( tr("Find Previous") );
+
+    mReplaceBtn = new QToolButton();
+    mReplaceBtn->setText(tr("Replace"));
+    mReplaceAllBtn = new QToolButton();
+    mReplaceAllBtn->setText(tr("Replace All"));
+
+    mOptionsBtn = new QToolButton();
+    mOptionsBtn->setText(tr("Options"));
+    mOptionsBtn->setIcon( QIcon::fromTheme("preferences-other") );
+    mOptionsBtn->setPopupMode(QToolButton::InstantPopup);
+
+    QMenu *optMenu = new QMenu(this);
+    mMatchCaseAction = optMenu->addAction(tr("Match Case"));
+    mMatchCaseAction->setCheckable(true);
+    mRegExpAction = optMenu->addAction(tr("Regular Expression"));
+    mRegExpAction->setCheckable(true);
+    mWholeWordAction = optMenu->addAction(tr("Whole Words"));
+    mWholeWordAction->setCheckable(true);
+    mOptionsBtn->setMenu(optMenu);
+
+    mFindLabel = new QLabel(tr("Find:"));
+    mFindLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+    mReplaceLabel = new QLabel(tr("Replace:"));
+    mReplaceLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+
+    mGrid = new QGridLayout();
+    mGrid->setContentsMargins(0,0,0,0);
+    mGrid->setSpacing(2);
+
+    QHBoxLayout *findBtnLayout = new QHBoxLayout();
+    findBtnLayout->setContentsMargins(0,0,0,0);
+    findBtnLayout->setSpacing(1);
+    findBtnLayout->addWidget(mPrevBtn);
+    findBtnLayout->addWidget(mNextBtn);
+    findBtnLayout->addStretch(0);
+    findBtnLayout->addWidget(mOptionsBtn);
+
+    mGrid->addWidget(mFindLabel, 0, 0);
+    mGrid->addWidget(mFindField, 0, 1);
+    mGrid->addLayout(findBtnLayout, 0, 2);
+
+    QHBoxLayout *replaceBtnLayout = new QHBoxLayout();
+    replaceBtnLayout->setContentsMargins(0,0,0,0);
+    replaceBtnLayout->setSpacing(1);
+    replaceBtnLayout->addWidget(mReplaceBtn);
+    replaceBtnLayout->addWidget(mReplaceAllBtn);
+    replaceBtnLayout->addStretch(0);
+
+    mGrid->addWidget(mReplaceLabel, 1, 0);
+    mGrid->addWidget(mReplaceField, 1, 1);
+    mGrid->addLayout(replaceBtnLayout, 1, 2);
+
+    mGrid->setColumnStretch(1,1);
+
+    setLayout(mGrid);
+
+    setMode(Find);
+
+    setFocusProxy(mFindField);
+    QWidget::setTabOrder(mFindField, mReplaceField);
+    mFindField->installEventFilter(this);
+
+    connect(mNextBtn, SIGNAL(clicked()), this, SLOT(findNext()));
+    connect(mPrevBtn, SIGNAL(clicked()), this, SLOT(findPrevious()));
+    connect(mReplaceBtn, SIGNAL(clicked()), this, SLOT(replace()));
+    connect(mReplaceAllBtn, SIGNAL(clicked()), this, SLOT(replaceAll()));
+    connect(mFindField, SIGNAL(returnPressed()), this, SLOT(onFindFieldReturn()));
+    connect(mFindField, SIGNAL(textChanged(QString)), this, SLOT(onFindFieldTextChanged()));
+    connect(mReplaceField, SIGNAL(returnPressed()), this, SLOT(replace()));
+    // Update search results when options change:
+    connect(optMenu, SIGNAL(triggered(QAction*)), this, SLOT(findAll()));
+
+    Settings::Manager *settings = Main::settings();
+    QAction *action;
+
+    action = mActions[FindNext] = new QAction(tr("Find Next"), this);
+    action->setShortcut(tr("Ctrl+G", "Find Next"));
+    connect( action, SIGNAL(triggered()), this, SLOT(findNext()) );
+    settings->addAction( action, "editor-find-next", tr("Text Editor") );
+
+    action = mActions[FindPrevious] = new QAction(tr("Find Previous"), this);
+    action->setShortcut(tr("Ctrl+Shift+G", "Find Previous"));
+    connect( action, SIGNAL(triggered()), this, SLOT(findPrevious()) );
+    settings->addAction( action, "editor-find-previous", tr("Text Editor") );
+}
+
+void TextFindReplacePanel::setMode( Mode mode )
+{
+    if (mode == mMode) return;
+
+    mMode = mode;
+
+    bool visible = mMode == Replace;
+    mReplaceLabel->setVisible(visible);
+    mReplaceField->setVisible(visible);
+    mReplaceBtn->setVisible(visible);
+    mReplaceAllBtn->setVisible(visible);
+}
+
+void TextFindReplacePanel::initiate()
+{
+    mSearchPosition = -1;
+
+    if(mEditor)
+    {
+        QTextCursor c( mEditor->textCursor() );
+        if(c.hasSelection() &&
+           c.document()->findBlock(c.selectionStart()) ==
+           c.document()->findBlock(c.selectionEnd()))
+        {
+            mFindField->setText(c.selectedText());
+            mReplaceField->clear();
+        }
+    }
+
+    mFindField->selectAll();
+    findAll();
+}
+
+QRegExp TextFindReplacePanel::regexp()
+{
+    QRegExp expr(findString());
+    expr.setPatternSyntax(asRegExp() ? QRegExp::RegExp : QRegExp::FixedString);
+    expr.setCaseSensitivity(matchCase() ? Qt::CaseSensitive : Qt::CaseInsensitive);
+    return expr;
+}
+
+QTextDocument::FindFlags TextFindReplacePanel::flags()
+{
+    QTextDocument::FindFlags f;
+    if(wholeWords())
+        f |= QTextDocument::FindWholeWords;
+    return f;
+}
+
+void TextFindReplacePanel::findNext()
+{
+    find(false);
+}
+
+void TextFindReplacePanel::findPrevious()
+{
+    find(true);
+}
+
+void TextFindReplacePanel::onFindFieldReturn()
+{
+    find (QApplication::keyboardModifiers() & Qt::ShiftModifier);
+}
+
+void TextFindReplacePanel::onFindFieldTextChanged()
+{
+    // Incremental search
+
+    if (!mEditor) return;
+
+    QRegExp expr(regexp());
+    QTextDocument::FindFlags flagz(flags());
+
+    if (mSearchPosition == -1)
+        mSearchPosition = mEditor->textCursor().selectionStart();
+
+    int count = mEditor->findAll(expr, flagz);
+    if (!expr.isEmpty())
+        reportFoundOccurrencies(count);
+
+    QTextCursor searchCursor(mEditor->textDocument());
+    searchCursor.setPosition(mSearchPosition);
+
+    if (expr.isEmpty()) {
+        mEditor->setTextCursor(searchCursor);
+    } else if (count) {
+        mEditor->setTextCursor(searchCursor);
+        mEditor->find(expr, flagz);
+    }
+}
+
+bool TextFindReplacePanel::eventFilter (QObject *obj, QEvent *ev)
+{
+    if (obj == mFindField && ev->type() == QEvent::FocusOut)
+        mSearchPosition = -1;
+
+    return QWidget::eventFilter(obj,ev);
+}
+
+void TextFindReplacePanel::find (bool backwards)
+{
+    // Non incremental search!
+
+    if (!mEditor) return;
+
+    QRegExp expr = regexp();
+    if (expr.isEmpty()) return;
+
+    QTextDocument::FindFlags opt = flags();
+    if (backwards)
+        opt |= QTextDocument::FindBackward;
+
+    mEditor->find(expr, opt);
+
+    // This was not incremental search, so reset search position
+    mSearchPosition = -1;
+}
+
+void TextFindReplacePanel::findAll()
+{
+    if (!mEditor) return;
+
+    QRegExp expr = regexp();
+
+    // NOTE: empty expression removes any search highlighting
+    int count = mEditor->findAll(expr, flags());
+
+    if (!expr.isEmpty())
+        reportFoundOccurrencies(count);
+}
+
+void TextFindReplacePanel::replace()
+{
+    if (!mEditor) return;
+
+    QRegExp expr = regexp();
+    if (expr.isEmpty()) return;
+
+    mEditor->replace(expr, replaceString(), flags());
+
+    mSearchPosition = -1;
+}
+
+void TextFindReplacePanel::replaceAll()
+{
+    if (!mEditor) return;
+
+    QRegExp expr = regexp();
+    if (expr.isEmpty())
+        return;
+
+    QTextDocument::FindFlags opt = flags();
+
+    int count = mEditor->replaceAll(expr, replaceString(), opt);
+
+    reportReplacedOccurrencies( count );
+
+    mSearchPosition = -1;
+}
+
+void TextFindReplacePanel::reportFoundOccurrencies( int count )
+{
+    QString message = tr("%n occurrencies found.", "Find text in document...", count);
+    MainWindow::instance()->showStatusMessage( message );
+}
+
+void TextFindReplacePanel::reportReplacedOccurrencies( int count )
+{
+    QString message = tr("%n occurrencies replaced.", "Find/replace text in document...", count);
+    MainWindow::instance()->showStatusMessage( message );
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/find_replace_tool.hpp b/editors/sc-ide/widgets/find_replace_tool.hpp
new file mode 100644
index 0000000..3ff39f5
--- /dev/null
+++ b/editors/sc-ide/widgets/find_replace_tool.hpp
@@ -0,0 +1,116 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_FIND_REPLACE_TOOL_HPP_INCLUDED
+#define SCIDE_WIDGETS_FIND_REPLACE_TOOL_HPP_INCLUDED
+
+#include <QWidget>
+#include <QPushButton>
+#include <QLabel>
+#include <QLineEdit>
+#include <QGridLayout>
+#include <QTextDocument>
+#include <QAction>
+#include <QMenu>
+#include <QToolButton>
+
+namespace ScIDE {
+
+class GenericCodeEditor;
+
+class TextFindReplacePanel : public QWidget
+{
+    Q_OBJECT
+
+public:
+    enum Mode
+    {
+        Find = 1,
+        Replace
+    };
+
+    enum ActionRole {
+        FindNext,
+        FindPrevious,
+
+        ActionCount
+    };
+
+public:
+    TextFindReplacePanel( QWidget * parent = 0 );
+
+    void setEditor( GenericCodeEditor *editor ) { mEditor = editor; }
+
+    Mode mode () const { return mMode; }
+    void setMode( Mode );
+    void initiate();
+
+    QString findString() const { return mFindField->text(); }
+    QString replaceString() const { return mReplaceField->text(); }
+    bool matchCase() const { return mMatchCaseAction->isChecked(); }
+    bool asRegExp() const { return mRegExpAction->isChecked(); }
+    bool wholeWords() const { return mWholeWordAction->isChecked(); }
+    QRegExp regexp();
+    QTextDocument::FindFlags flags();
+
+    QAction *action ( ActionRole role ) { return mActions[role]; }
+
+public Q_SLOTS:
+    void findNext();
+    void findPrevious();
+    void findAll();
+    void replace();
+    void replaceAll();
+
+private Q_SLOTS:
+    void onFindFieldReturn();
+    void onFindFieldTextChanged();
+
+private:
+    void find (bool backwards);
+    bool eventFilter (QObject *, QEvent *);
+    static void reportFoundOccurrencies( int count );
+    static void reportReplacedOccurrencies( int count );
+
+    QLineEdit *mFindField;
+    QLabel *mFindLabel;
+    QLineEdit *mReplaceField;
+    QLabel *mReplaceLabel;
+    QToolButton *mNextBtn;
+    QToolButton *mPrevBtn;
+    QToolButton *mReplaceBtn;
+    QToolButton *mReplaceAllBtn;
+    QToolButton *mOptionsBtn;
+    QAction *mMatchCaseAction;
+    QAction *mRegExpAction;
+    QAction *mWholeWordAction;
+    QAction *mActions[ActionCount];
+
+    QGridLayout *mGrid;
+
+    Mode mMode;
+
+    GenericCodeEditor *mEditor;
+    int mSearchPosition;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/widgets/goto_line_tool.hpp b/editors/sc-ide/widgets/goto_line_tool.hpp
new file mode 100644
index 0000000..eb18b1d
--- /dev/null
+++ b/editors/sc-ide/widgets/goto_line_tool.hpp
@@ -0,0 +1,142 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_GOTO_LINE_TOOL_HPP_INCLUDED
+#define SCIDE_WIDGETS_GOTO_LINE_TOOL_HPP_INCLUDED
+
+#include "code_editor/editor.hpp"
+#include "../core/doc_manager.hpp"
+
+#include <QWidget>
+#include <QSpinBox>
+#include <QToolButton>
+#include <QHBoxLayout>
+#include <QKeyEvent>
+#include <QPointer>
+#include <QLabel>
+#include <QTextBlock>
+
+namespace ScIDE {
+
+class GoToLineTool : public QWidget
+{
+    Q_OBJECT
+
+public:
+    GoToLineTool( QWidget * parent = 0 ):
+        QWidget(parent),
+        mEditor(0)
+    {
+        mSpinBox = new QSpinBox;
+        mSpinBox->setMinimum(0);
+        mSpinBox->setMaximum(0);
+
+        QToolButton *goBtn = new QToolButton;
+        goBtn->setText(tr("Go"));
+        goBtn->setAutoRaise(true);
+
+        QLabel *label = new QLabel(tr("Line:"));
+
+        QHBoxLayout *layout = new QHBoxLayout;
+        layout->setContentsMargins(0,0,0,0);
+        layout->addWidget(label);
+        layout->addWidget(mSpinBox);
+        layout->addWidget(goBtn);
+        layout->addStretch();
+
+        setLayout(layout);
+
+        setFocusProxy(mSpinBox);
+
+        connect(goBtn, SIGNAL(clicked()), this, SLOT(go()));
+        connect(mSpinBox, SIGNAL(editingFinished()), this, SLOT(onEditingFinished()));
+    }
+
+    void setEditor( GenericCodeEditor *editor )
+    {
+        if (mEditor)
+            mEditor->disconnect( this, SLOT(setMaximum(int)) );
+
+        mEditor = editor;
+
+        if (mEditor) {
+            connect(mEditor, SIGNAL(blockCountChanged(int)), this, SLOT(setMaximum(int)));
+            setMaximum(mEditor->blockCount());
+        }
+        else
+            setMaximum(0);
+    }
+
+    void setValue( int value ) { mSpinBox->setValue(value); }
+
+public slots:
+
+    void setMaximum( int max ) {
+        if (max > 0)
+            mSpinBox->setRange(1, max);
+        else
+            mSpinBox->setRange(0,0);
+    }
+
+    void setFocus()
+    {
+        mSpinBox->setFocus(Qt::OtherFocusReason);
+        mSpinBox->selectAll();
+    }
+
+signals:
+
+    void activated( int lineNumber );
+
+private slots:
+
+    void go()
+    {
+        int lineNumber = mSpinBox->value();
+
+        if (mEditor) {
+            QTextDocument *doc = mEditor->textDocument();
+            QTextBlock block( doc->findBlockByNumber(lineNumber - 1) );
+            if (!block.isValid())
+                return;
+
+            QTextCursor cursor( doc );
+            cursor.setPosition( block.position() );
+            mEditor->setTextCursor(cursor);
+        }
+
+        emit activated( lineNumber );
+    }
+
+    void onEditingFinished()
+    {
+        if (mSpinBox->hasFocus())
+            go();
+    }
+
+private:
+
+    QSpinBox *mSpinBox;
+    QPointer<GenericCodeEditor> mEditor;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/widgets/help_browser.cpp b/editors/sc-ide/widgets/help_browser.cpp
new file mode 100644
index 0000000..0a77619
--- /dev/null
+++ b/editors/sc-ide/widgets/help_browser.cpp
@@ -0,0 +1,408 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#define QT_NO_DEBUG_OUTPUT
+
+#include "help_browser.hpp"
+#include "main_window.hpp"
+#include "../core/sc_process.hpp"
+#include "../core/main.hpp"
+#include "../core/util/overriding_action.hpp"
+#include "QtCollider/widgets/web_page.hpp"
+
+#include <QVBoxLayout>
+#include <QToolBar>
+#include <QWebSettings>
+#include <QWebFrame>
+#include <QWebElement>
+#include <QAction>
+#include <QMenu>
+#include <QStyle>
+#include <QShortcut>
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QDebug>
+#include <QKeyEvent>
+
+namespace ScIDE {
+
+HelpBrowser::HelpBrowser( QWidget * parent ):
+    QWidget(parent)
+{
+    QRect availableScreenRect = qApp->desktop()->availableGeometry(this);
+    mSizeHint = QSize( availableScreenRect.width() * 0.4, availableScreenRect.height() * 0.7 );
+
+    QtCollider::WebPage *webPage = new QtCollider::WebPage(this);
+    webPage->setDelegateReload(true);
+    webPage->setLinkDelegationPolicy( QWebPage::DelegateAllLinks );
+
+    mWebView = new QWebView;
+    mWebView->setPage( webPage );
+    mWebView->settings()->setAttribute( QWebSettings::LocalStorageEnabled, true );
+    mWebView->setContextMenuPolicy( Qt::CustomContextMenu );
+
+    // Set the style's standard palette to avoid system's palette incoherencies
+    // get in the way of rendering web pages
+    mWebView->setPalette( style()->standardPalette() );
+
+    mWebView->installEventFilter(this);
+
+    mLoadProgressIndicator = new LoadProgressIndicator;
+    mLoadProgressIndicator->setIndent(10);
+
+    QVBoxLayout *layout = new QVBoxLayout;
+    layout->setContentsMargins(0,0,0,0);
+    layout->setSpacing(0);
+    layout->addWidget(mWebView);
+    setLayout(layout);
+
+    connect( mWebView, SIGNAL(linkClicked(QUrl)), this, SLOT(onLinkClicked(QUrl)) );
+    connect( mWebView, SIGNAL(loadStarted()), mLoadProgressIndicator, SLOT(start()) );
+    connect( mWebView, SIGNAL(loadFinished(bool)), mLoadProgressIndicator, SLOT(stop()) );
+    connect( mWebView, SIGNAL(customContextMenuRequested(QPoint)),
+             this, SLOT(onContextMenuRequest(QPoint)) );
+
+    connect( webPage->action(QWebPage::Reload), SIGNAL(triggered(bool)), this, SLOT(onReload()) );
+    connect( webPage, SIGNAL(jsConsoleMsg(QString,int,QString)),
+             this, SLOT(onJsConsoleMsg(QString,int,QString)) );
+
+    ScProcess * scProcess = Main::scProcess();
+    connect( scProcess, SIGNAL(response(QString,QString)),
+             this, SLOT(onScResponse(QString,QString)) );
+    connect( scProcess, SIGNAL(finished(int)), mLoadProgressIndicator, SLOT(stop()) );
+    // FIXME: should actually respond to class library shutdown, but we don't have that signal
+    connect( scProcess, SIGNAL(classLibraryRecompiled()), mLoadProgressIndicator, SLOT(stop()) );
+
+    createActions();
+
+    applySettings( Main::settings() );
+}
+
+void HelpBrowser::createActions()
+{
+    QAction * action;
+    OverridingAction *ovrAction;
+
+    mActions[GoHome] = action = new QAction(tr("Home"), this);
+    connect( action, SIGNAL(triggered()), this, SLOT(goHome()) );
+
+    mActions[ZoomIn] = ovrAction = new OverridingAction(tr("Zoom In"), this);
+    connect(ovrAction, SIGNAL(triggered()), this, SLOT(zoomIn()));
+    ovrAction->addToWidget(mWebView);
+
+    mActions[ZoomOut] = ovrAction = new OverridingAction(tr("Zoom Out"), this);
+    connect(ovrAction, SIGNAL(triggered()), this, SLOT(zoomOut()));
+    ovrAction->addToWidget(mWebView);
+
+    mActions[Evaluate] = ovrAction = new OverridingAction(tr("Evaluate as Code"), this);
+    connect(ovrAction, SIGNAL(triggered()), this, SLOT(evaluateSelection()));
+    ovrAction->addToWidget(mWebView);
+
+    // For the sake of display:
+    mWebView->pageAction(QWebPage::Copy)->setShortcut( QKeySequence::Copy );
+    mWebView->pageAction(QWebPage::Paste)->setShortcut( QKeySequence::Paste );
+}
+
+void HelpBrowser::applySettings( Settings::Manager *settings )
+{
+    settings->beginGroup("IDE/shortcuts");
+
+    mActions[ZoomIn]->setShortcut( settings->shortcut("editor-enlarge-font") );
+
+    mActions[ZoomOut]->setShortcut( settings->shortcut("editor-shrink-font") );
+
+    QList<QKeySequence> evalShortcuts;
+    evalShortcuts.append( settings->shortcut("editor-eval-smart") );
+    evalShortcuts.append( settings->shortcut("editor-eval-line") );
+    evalShortcuts.append( QKeySequence(Qt::Key_Enter) );
+    mActions[Evaluate]->setShortcuts( evalShortcuts );
+
+    settings->endGroup();
+
+    QString codeFontFamily = settings->codeFont().family();
+    mWebView->settings()->setFontFamily( QWebSettings::FixedFont, codeFontFamily );
+}
+
+void HelpBrowser::goHome()
+{
+    static QString code( "HelpBrowser.goHome" );
+    sendRequest(code);
+}
+
+void HelpBrowser::gotoHelpFor( const QString & symbol )
+{
+    QString code = QString("HelpBrowser.openHelpFor(\"%1\")").arg(symbol);
+    sendRequest(code);
+}
+
+void HelpBrowser::gotoHelpForMethod( const QString & className, const QString & methodName )
+{
+    QString code = QString("HelpBrowser.openHelpForMethod( %1.findMethod(\\%2) )").arg(className, methodName);
+    sendRequest(code);
+}
+
+void HelpBrowser::onLinkClicked( const QUrl & url )
+{
+    qDebug() << "link clicked:" << url;
+
+    static const QStringList nonHelpFileExtensions = QStringList() << ".sc" << ".scd" << ".schelp" << ".txt" << ".rtf";
+    static const QString fileScheme("file");
+
+    QString urlString = url.toString();
+
+    foreach ( const QString & extension, nonHelpFileExtensions ) {
+        if (urlString.endsWith( extension )) {
+            if (url.scheme() == fileScheme) {
+                Main::documentManager()->open(url.toLocalFile());
+                return;
+            }
+            break;
+        }
+    }
+
+    sendRequest( QString("HelpBrowser.goTo(\"%1\")").arg( urlString ) );
+}
+
+void HelpBrowser::onReload()
+{
+    QWebSettings::clearMemoryCaches();
+    onLinkClicked( mWebView->url() );
+}
+
+void HelpBrowser::zoomIn()
+{
+    qreal zoomFactor = mWebView->zoomFactor();
+    zoomFactor = qMin( zoomFactor + 0.1, 2.0 );
+    mWebView->setZoomFactor(zoomFactor);
+}
+
+void HelpBrowser::zoomOut()
+{
+    qreal zoomFactor = mWebView->zoomFactor();
+    zoomFactor = qMax( zoomFactor - 0.1, 0.1 );
+    mWebView->setZoomFactor(zoomFactor);
+}
+
+void HelpBrowser::findText( const QString & text, bool backwards )
+{
+    QWebPage::FindFlags flags =
+            QWebPage::FindWrapsAroundDocument;// | QWebPage::HighlightAllOccurrences;
+    if (backwards)
+        flags |= QWebPage::FindBackward;
+
+    mWebView->findText( text, flags );
+}
+
+bool HelpBrowser::eventFilter(QObject *object, QEvent *event)
+{
+    if (object == mWebView) {
+        switch (event->type()) {
+        case QEvent::MouseButtonPress: {
+            QMouseEvent * mouseEvent = static_cast<QMouseEvent*>(event);
+            switch (mouseEvent->button()) {
+            case Qt::XButton1:
+                mWebView->pageAction(QWebPage::Back)->trigger();
+                return true;
+
+            case Qt::XButton2:
+                mWebView->pageAction(QWebPage::Forward)->trigger();
+                return true;
+
+            default:
+                break;
+            }
+            break;
+        }
+        case QEvent::ShortcutOverride: {
+            QKeyEvent * kevent = static_cast<QKeyEvent*>(event);
+            if ( kevent == QKeySequence::Copy ||
+                 kevent == QKeySequence::Paste )
+            {
+                kevent->accept();
+                return true;
+            }
+            break;
+        }
+        default:
+            break;
+        }
+    }
+    return false;
+}
+
+void HelpBrowser::sendRequest( const QString &code )
+{
+    ScProcess *scProcess = Main::scProcess();
+    if (scProcess->state() == QProcess::NotRunning) {
+        qDebug() << "HelpBrowser: aborting request - sclang not running.";
+        MainWindow::instance()->showStatusMessage(
+                    tr("Can not use help - interpreter not running!"));
+        return;
+    }
+
+    qDebug() << "sending request...";
+    mLoadProgressIndicator->start(tr("Sending request"));
+    Main::scProcess()->evaluateCode( code, true );
+}
+
+void HelpBrowser::onScResponse( const QString & command, const QString & data )
+{
+    const QString openHelpUrlString = "openHelpUrl";
+
+    if (command != openHelpUrlString)
+        return;
+
+    qDebug() << "HelpBrowser: got response:" << data;
+
+    mLoadProgressIndicator->stop();
+
+    QString urlString = data;
+    // undress YAML string:
+    urlString.remove(0,1).chop(1);
+
+    mWebView->load( urlString );
+
+    emit urlChanged();
+}
+
+void HelpBrowser::evaluateSelection()
+{
+    static const QString javaScript("selectLine()");
+    QWebFrame *frame = mWebView->page()->currentFrame();
+    if( frame ) frame->evaluateJavaScript( javaScript );
+
+    QString code( mWebView->selectedText() );
+    if (!code.isEmpty())
+        Main::scProcess()->evaluateCode(code);
+}
+
+void HelpBrowser::onJsConsoleMsg(const QString &arg1, int arg2, const QString & arg3 )
+{
+    qWarning() << "*** ERROR in JavaScript:" << arg1;
+    qWarning() << "* line:" << arg2;
+    qWarning() << "* source ID:" << arg3;
+}
+
+void HelpBrowser::onContextMenuRequest( const QPoint & pos )
+{
+    QMenu menu;
+
+    QWebHitTestResult hitTest = mWebView->page()->mainFrame()->hitTestContent( pos );
+
+    if (!hitTest.linkElement().isNull()) {
+        menu.addAction( mWebView->pageAction(QWebPage::CopyLinkToClipboard) );
+    }
+
+    menu.addSeparator();
+
+    if (hitTest.isContentEditable() || hitTest.isContentSelected())
+        menu.addAction( mWebView->pageAction(QWebPage::Copy) );
+    if (hitTest.isContentEditable())
+        menu.addAction( mWebView->pageAction(QWebPage::Paste) );
+    if (hitTest.isContentSelected())
+        menu.addAction( mActions[Evaluate] );
+
+    menu.addSeparator();
+
+    menu.addAction( mWebView->pageAction(QWebPage::Back) );
+    menu.addAction( mWebView->pageAction(QWebPage::Forward) );
+    menu.addAction( mWebView->pageAction(QWebPage::Reload) );
+
+    menu.addSeparator();
+
+    menu.addAction( mActions[ZoomIn] );
+    menu.addAction( mActions[ZoomOut] );
+
+    menu.exec( mWebView->mapToGlobal(pos) );
+}
+
+HelpBrowserFindBox::HelpBrowserFindBox( QWidget * parent ):
+    QLineEdit(parent)
+{
+    setPlaceholderText(tr("Find..."));
+    connect( this, SIGNAL(textChanged(QString)), this, SIGNAL(query(QString)) );
+}
+
+bool HelpBrowserFindBox::event( QEvent * event )
+{
+    switch(event->type()) {
+    case QEvent::ShortcutOverride:
+    {
+        QKeyEvent *kevent = static_cast<QKeyEvent*>(event);
+        if (kevent->key() == Qt::Key_Escape) {
+            event->accept();
+            return true;
+        }
+    }
+    case QEvent::KeyPress:
+    {
+        QKeyEvent *kevent = static_cast<QKeyEvent*>(event);
+        switch (kevent->key()) {
+        case Qt::Key_Return:
+        case Qt::Key_Enter: {
+            bool backwards = kevent->modifiers() & Qt::ShiftModifier;
+            emit query( text(), backwards );
+            return true;
+        }
+        case Qt::Key_Escape:
+            clear();
+        default:
+            break;
+        }
+    }
+    default:
+        break;
+    }
+
+    return QLineEdit::event(event);
+}
+
+HelpBrowserDocklet::HelpBrowserDocklet( QWidget *parent ):
+    Docklet(tr("Help browser"), parent)
+{
+    mHelpBrowser = new HelpBrowser;
+
+    setAllowedAreas(Qt::AllDockWidgetAreas);
+    setWidget(mHelpBrowser);
+
+    mFindBox = new HelpBrowserFindBox();
+
+    toolBar()->addWidget( mHelpBrowser->loadProgressIndicator(), 1 );
+    toolBar()->addAction( mHelpBrowser->mActions[HelpBrowser::GoHome] );
+    toolBar()->addAction( mHelpBrowser->mWebView->pageAction(QWebPage::Back) );
+    toolBar()->addAction( mHelpBrowser->mWebView->pageAction(QWebPage::Forward) );
+    toolBar()->addAction( mHelpBrowser->mWebView->pageAction(QWebPage::Reload) );
+    toolBar()->addWidget( mFindBox );
+
+    connect( mFindBox, SIGNAL(query(QString, bool)),
+             mHelpBrowser, SLOT(findText(QString, bool)) );
+
+    connect(Main::scProcess(), SIGNAL(started()), this, SLOT(onInterpreterStart()));
+
+    OverridingAction * action;
+    action = new OverridingAction(this);
+    action->setShortcut(QKeySequence::Find);
+    action->addToWidget(mHelpBrowser);
+    action->addToWidget(toolBar());
+    connect( action, SIGNAL(triggered(bool)), mFindBox, SLOT(setFocus()) );
+    connect( action, SIGNAL(triggered(bool)), mFindBox, SLOT(selectAll()) );
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/help_browser.hpp b/editors/sc-ide/widgets/help_browser.hpp
new file mode 100644
index 0000000..0e0f883
--- /dev/null
+++ b/editors/sc-ide/widgets/help_browser.hpp
@@ -0,0 +1,178 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_HELP_BROWSER_HPP_INCLUDED
+#define SCIDE_WIDGETS_HELP_BROWSER_HPP_INCLUDED
+
+#include "util/docklet.hpp"
+
+#include <QWebView>
+#include <QLabel>
+#include <QLineEdit>
+#include <QBasicTimer>
+#include <QTimerEvent>
+#include <QList>
+#include <QKeySequence>
+
+namespace ScIDE {
+
+namespace Settings { class Manager; }
+
+class HelpBrowserDocklet;
+class HelpBrowserFindBox;
+
+class LoadProgressIndicator : public QLabel
+{
+    Q_OBJECT
+public slots:
+    void start( const QString & msg = tr("Loading") )
+    {
+        mMsg = msg;
+        mDotCount = 0;
+        mUpdateTimer.start(200, this);
+    }
+    void stop()
+    {
+        mUpdateTimer.stop(); clear();
+    }
+
+protected:
+    virtual void timerEvent( QTimerEvent *event )
+    {
+        if (event->timerId() != mUpdateTimer.timerId())
+            return;
+
+        ++mDotCount;
+        if (mDotCount > 6)
+            mDotCount = 1;
+
+        QString string(mDotCount, '.');
+        string.prepend(mMsg);
+
+        setText(string);
+    }
+
+private:
+    QBasicTimer mUpdateTimer;
+    QString mMsg;
+    int mDotCount;
+};
+
+class HelpBrowser : public QWidget
+{
+    Q_OBJECT
+
+public:
+    enum ActionRole {
+        GoHome,
+        ZoomIn,
+        ZoomOut,
+        Evaluate,
+
+        ActionCount
+    };
+
+    HelpBrowser( QWidget * parent = 0 );
+
+    QSize sizeHint() const { return mSizeHint; }
+    QSize minimumSizeHint() const { return QSize(50,50); }
+
+    void gotoHelpFor( const QString & );
+    void gotoHelpForMethod( const QString & className, const QString & methodName );
+    QWidget *loadProgressIndicator() { return mLoadProgressIndicator; }
+
+    QUrl url() const { return mWebView->url(); }
+
+public slots:
+    void applySettings( Settings::Manager * );
+    void goHome();
+    void zoomIn();
+    void zoomOut();
+    void evaluateSelection();
+    void findText( const QString & text, bool backwards = false );
+
+signals:
+    void urlChanged();
+
+private slots:
+    void onContextMenuRequest( const QPoint & pos );
+    void onLinkClicked( const QUrl & );
+    void onReload();
+    void onScResponse( const QString & command, const QString & data );
+    void onJsConsoleMsg(const QString &, int, const QString & );
+
+private:
+    friend class HelpBrowserDocklet;
+
+    void createActions();
+    bool eventFilter( QObject * object, QEvent * event);
+    void sendRequest( const QString &code );
+
+    QWebView *mWebView;
+    LoadProgressIndicator *mLoadProgressIndicator;
+
+    QSize mSizeHint;
+
+    QAction *mActions[ActionCount];
+};
+
+class HelpBrowserFindBox : public QLineEdit
+{
+    Q_OBJECT
+
+public:
+    HelpBrowserFindBox( QWidget * parent = 0 );
+
+signals:
+    void query( const QString & text,  bool backwards = false );
+
+protected:
+    virtual bool event( QEvent * event );
+};
+
+class HelpBrowserDocklet : public Docklet
+{
+    Q_OBJECT
+
+public:
+    explicit HelpBrowserDocklet( QWidget *parent = 0 );
+    HelpBrowser *browser() { return mHelpBrowser; }
+
+    void raiseAndFocus()
+    {
+        show();
+        raise();
+        mHelpBrowser->setFocus();
+    }
+
+private slots:
+    void onInterpreterStart() {
+        if (isVisible() && mHelpBrowser->url().isEmpty())
+            mHelpBrowser->goHome();
+    }
+
+private:
+    HelpBrowser *mHelpBrowser;
+    HelpBrowserFindBox *mFindBox;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_HELP_BROWSER_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/lookup_dialog.cpp b/editors/sc-ide/widgets/lookup_dialog.cpp
new file mode 100644
index 0000000..22fad14
--- /dev/null
+++ b/editors/sc-ide/widgets/lookup_dialog.cpp
@@ -0,0 +1,508 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "lookup_dialog.hpp"
+#include "main_window.hpp"
+#include "../core/sc_introspection.hpp"
+#include "../core/main.hpp"
+
+#include <QVBoxLayout>
+#include <QHeaderView>
+#include <QKeyEvent>
+#include <QDesktopWidget>
+#include <QApplication>
+#include <QPainter>
+
+#include "yaml-cpp/node.h"
+#include "yaml-cpp/parser.h"
+
+namespace ScIDE {
+
+bool LookupDialogTreeView::openDocumentation()
+{
+    GenericLookupDialog * parent = qobject_cast<GenericLookupDialog*>(parentWidget());
+    parent->openDocumentation();
+
+    return true;
+}
+
+GenericLookupDialog::GenericLookupDialog( QWidget * parent ):
+    QDialog(parent)
+{
+    addAction(MainWindow::instance()->action(MainWindow::LookupDocumentationForCursor));
+
+    mQueryEdit = new QLineEdit(this);
+
+    mResult = new LookupDialogTreeView(this);
+    mResult->setRootIsDecorated(false);
+    mResult->setAllColumnsShowFocus(true);
+    mResult->setHeaderHidden(true);
+    mResult->header()->setStretchLastSection(false);
+
+    QVBoxLayout *layout = new QVBoxLayout;
+    layout->setContentsMargins(0,0,0,0);
+    layout->setSpacing(1);
+    layout->addWidget(mQueryEdit);
+    layout->addWidget(mResult);
+    setLayout(layout);
+
+    connect(mQueryEdit, SIGNAL(returnPressed()), this, SLOT(performQuery()));
+    connect(mResult, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onAccepted(QModelIndex)));
+    connect(mResult, SIGNAL(activated(QModelIndex)),     this, SLOT(onAccepted(QModelIndex)));
+
+    mResult->installEventFilter(this);
+
+    QRect bounds(0,0,600,300);
+    if (parent) {
+        QRect parentRect = parent->rect();
+        bounds.moveCenter( parent->mapToGlobal( parentRect.center() ) );
+    } else {
+        QRect availableBounds = QApplication::desktop()->availableGeometry(this);
+        bounds.moveCenter( availableBounds.center() );
+    }
+
+    setGeometry(bounds);
+
+    mQueryEdit->setFocus( Qt::OtherFocusReason );
+}
+
+void GenericLookupDialog::openDocumentation()
+{
+    QModelIndex currentIndex = mResult->currentIndex();
+    QStandardItemModel * model = qobject_cast<QStandardItemModel*>(mResult->model());
+    if (!model)
+        return;
+
+    currentIndex = currentIndex.sibling(currentIndex.row(), 0);
+    QStandardItem *currentItem = model->itemFromIndex(currentIndex);
+    if (!currentItem)
+        return;
+
+    bool isClass = currentItem->data(IsClassRole).toBool();
+    if (isClass) {
+        Main::openDocumentation(currentItem->text());
+        return;
+    } else {
+        QString className  = currentItem->data(ClassNameRole).toString();
+        QString methodName = currentItem->data(MethodNameRole).toString();
+        Main::openDocumentationForMethod(className, methodName);
+    }
+    accept();
+}
+
+void GenericLookupDialog::onAccepted(QModelIndex currentIndex)
+{
+    QStandardItem *currentItem = firstItemInLine(currentIndex);
+    if (!currentItem) {
+        reject();
+        return;
+    }
+
+    QString path = currentItem->data( PathRole ).toString();
+    int pos      = currentItem->data( CharPosRole ).toInt();
+
+    Main::documentManager()->open(path, pos);
+    accept();
+}
+
+QStandardItem * GenericLookupDialog::firstItemInLine(QModelIndex index)
+{
+    QStandardItemModel * model = qobject_cast<QStandardItemModel*>(mResult->model());
+    if (!model)
+        return NULL;
+    index = index.sibling(index.row(), 0);
+    return model->itemFromIndex(index);
+}
+
+bool GenericLookupDialog::event( QEvent *event )
+{
+    switch(event->type()) {
+    case QEvent::ShortcutOverride: {
+        QKeyEvent *kevent = static_cast<QKeyEvent*>(event);
+        if (kevent->key() == Qt::Key_Escape) {
+            accept();
+            return true;
+        }
+    }
+    default:;
+    }
+
+    return QDialog::event(event);
+}
+
+bool GenericLookupDialog::eventFilter( QObject *object, QEvent *event )
+{
+    if (object == mResult && event->type() == QEvent::KeyPress) {
+        QKeyEvent *ke = static_cast<QKeyEvent*>(event);
+        switch(ke->key()){
+        case Qt::Key_Enter:
+        case Qt::Key_Return:
+            onAccepted(mResult->currentIndex());
+            return true;
+        default:;
+        }
+    }
+
+    return QDialog::eventFilter(object,event);
+}
+
+void GenericLookupDialog::focusResults()
+{
+    mResult->header()->resizeSections(QHeaderView::ResizeToContents);
+    mResult->setFocus(Qt::OtherFocusReason);
+
+    QStandardItemModel * model = qobject_cast<QStandardItemModel*>(mResult->model());
+    QStandardItem * firstItem = model->item(0, 0);
+    if (firstItem) {
+        QModelIndex firstIndex = model->indexFromItem(firstItem);
+        mResult->setCurrentIndex(firstIndex);
+    }
+}
+
+using namespace ScLanguage;
+using std::pair;
+using std::vector;
+
+LookupDialog::LookupDialog( QWidget * parent ):
+    GenericLookupDialog(parent), mIsPartialQuery(false)
+{
+    setWindowTitle(tr("Look Up Implementations"));
+
+    mQueryEdit->setText(tr("Enter class or method name..."));
+    mQueryEdit->selectAll();
+}
+
+void LookupDialog::performQuery()
+{
+    QString queryString = mQueryEdit->text();
+
+    if (queryString.isEmpty()) {
+        mResult->setModel(NULL);
+        return;
+    }
+
+    const Introspection & introspection = Main::scProcess()->introspection();
+    if (!introspection.introspectionAvailable()) {
+        MainWindow::instance()->showStatusMessage(tr("Introspection data not yet available"));
+        return;
+    }
+
+    mIsPartialQuery = false;
+    if (queryString[0].isUpper()) {
+        bool success = performClassQuery(queryString);
+        if (success) {
+            focusResults();
+            return;
+        }
+    } else {
+        bool success = performMethodQuery(queryString);
+        if (success) {
+            focusResults();
+            return;
+        }
+    }
+
+    bool success = performPartialQuery(queryString);
+    if (success)
+        focusResults();
+}
+
+void LookupDialog::onAccepted(QModelIndex currentIndex)
+{
+    if (!mIsPartialQuery)  {
+        GenericLookupDialog::onAccepted(currentIndex);
+        return;
+    }
+
+    QStandardItemModel * model = qobject_cast<QStandardItemModel*>(mResult->model());
+    currentIndex = currentIndex.sibling(currentIndex.row(), 0);
+    QStandardItem *currentItem = model->itemFromIndex(currentIndex);
+
+    if (!currentItem) {
+        reject();
+        return;
+    }
+
+    bool isClass = currentItem->data(IsClassRole).toBool();
+    if (!isClass) {
+        GenericLookupDialog::onAccepted(currentIndex);
+        return;
+    }
+
+    QString className = currentItem->text();
+    mQueryEdit->setText(className);
+    performQuery();
+}
+
+QList<QStandardItem*> GenericLookupDialog::makeDialogItem( QString const & displayString, QString const & displayPath,
+                                                           QString const & path, int position,
+                                                           QString const & className, QString const & methodName,
+                                                           bool isClassItem )
+{
+    // LATER: shall we just store a shared pointer to the class or method?
+    QStandardItem * item = new QStandardItem( displayString );
+    item->setData( path,        PathRole );
+    item->setData( position,    CharPosRole );
+    item->setData( isClassItem, IsClassRole );
+    item->setData( className,   ClassNameRole );
+    item->setData( methodName,  MethodNameRole );
+
+    QStandardItem * pathItem = new QStandardItem( displayPath );
+
+    QList<QStandardItem*> ret;
+    ret << item << pathItem;
+
+    return ret;
+}
+
+QStandardItemModel * LookupDialog::modelForClass(const QString &className)
+{
+    const Introspection & introspection = Main::scProcess()->introspection();
+    const Class *klass = introspection.findClass(className);
+
+    if (!klass)
+        return NULL;
+
+    QStandardItemModel * model = new QStandardItemModel(this);
+    QStandardItem *parentItem = model->invisibleRootItem();
+
+    while (klass) {
+        Class *metaClass = klass->metaClass;
+
+        QString displayPath = introspection.compactLibraryPath(klass->definition.path);
+
+        parentItem->appendRow(makeDialogItem(klass->name.get(), displayPath,
+                                             klass->definition.path.get(),
+                                             klass->definition.position,
+                                             klass->name.get(), QString(""),
+                                             true ));
+
+        foreach (const Method * method, metaClass->methods) {
+            QString signature = method->signature( Method::SignatureWithoutArguments );
+            QString displayPath = introspection.compactLibraryPath(method->definition.path);
+
+            parentItem->appendRow(makeDialogItem( signature, displayPath,
+                                                  method->definition.path.get(),
+                                                  method->definition.position,
+                                                  metaClass->name.get(), method->name.get(),
+                                                  false ));
+        }
+
+        foreach (const Method * method, klass->methods) {
+            QString signature = method->signature( Method::SignatureWithoutArguments );
+            QString displayPath = introspection.compactLibraryPath(method->definition.path);
+
+            parentItem->appendRow(makeDialogItem( signature, displayPath,
+                                                  method->definition.path.get(),
+                                                  method->definition.position,
+                                                  klass->name.get(), method->name.get(),
+                                                  false ));
+        }
+
+        klass = klass->superClass;
+    }
+
+    return model;
+}
+
+QStandardItemModel * LookupDialog::modelForMethod(const QString & methodName)
+{
+    const Introspection & introspection = Main::scProcess()->introspection();
+
+    const MethodMap & methods = introspection.methodMap();
+    pair<MethodMap::const_iterator, MethodMap::const_iterator> matchingMethods = methods.equal_range(methodName);
+
+    if (matchingMethods.first == matchingMethods.second)
+        return NULL;
+
+    QStandardItemModel * model = new QStandardItemModel(this);
+    QStandardItem *parentItem = model->invisibleRootItem();
+
+    for (MethodMap::const_iterator it = matchingMethods.first; it != matchingMethods.second; ++it) {
+        Method *method = it->second.data();
+        QString signature = method->signature( Method::SignatureWithoutArguments );
+
+        const QString & path = method->definition.path;
+        QString displayPath = introspection.compactLibraryPath(path);
+
+        parentItem->appendRow(makeDialogItem( signature, displayPath,
+                                              method->definition.path.get(),
+                                              method->definition.position,
+                                              method->ownerClass->name.get(), method->name.get(),
+                                              false ));
+    }
+
+    model->sort(0);
+    return model;
+}
+
+QStandardItemModel * LookupDialog::modelForPartialQuery(const QString & queryString)
+{
+    const Introspection & introspection = Main::scProcess()->introspection();
+    vector<const Class *>  classes = introspection.findClassPartial(queryString);
+    vector<const Method *> methods = introspection.findMethodPartial(queryString);
+    typedef vector<const Method *>::const_iterator MethodIterator;
+    typedef vector<const Class *>::const_iterator  ClassIterator;
+
+    if (classes.empty() && methods.empty()) {
+        MainWindow::instance()->showStatusMessage(tr("No result for query"));
+        return NULL;
+    }
+
+    mIsPartialQuery = true;
+    QStandardItemModel * model = new QStandardItemModel(this);
+    QStandardItem *parentItem = model->invisibleRootItem();
+
+    for (MethodIterator it = methods.begin(); it != methods.end(); ++it) {
+        const Method *method = *it;
+        QString signature = method->signature( Method::SignatureWithoutArguments );
+
+        const QString & path = method->definition.path;
+        QString displayPath = introspection.compactLibraryPath(path);
+
+        parentItem->appendRow(makeDialogItem( signature, displayPath,
+                                              method->definition.path.get(),
+                                              method->definition.position,
+                                              method->ownerClass->name.get(), method->name.get(),
+                                              false ));
+    }
+
+    for (ClassIterator it = classes.begin(); it != classes.end(); ++it) {
+        const Class * klass = *it;
+        QString displayPath = introspection.compactLibraryPath(klass->definition.path);
+
+        parentItem->appendRow(makeDialogItem(klass->name.get(), displayPath,
+                                             klass->definition.path.get(),
+                                             klass->definition.position,
+                                             klass->name.get(), "",
+                                             true ));
+    }
+
+    model->sort(0);
+    return model;
+}
+
+bool LookupDialog::performClassQuery(const QString & className)
+{
+    QStandardItemModel * model = modelForClass(className);
+    mResult->setModel(model);
+    return model;
+}
+
+bool LookupDialog::performMethodQuery(const QString & methodName)
+{
+    QStandardItemModel * model = modelForMethod(methodName);
+    mResult->setModel(model);
+    return model;
+}
+
+bool LookupDialog::performPartialQuery(const QString & queryString)
+{
+    QStandardItemModel * model = modelForPartialQuery(queryString);
+    mResult->setModel(model);
+    return model;
+}
+
+
+ReferencesDialog::ReferencesDialog(QWidget * parent):
+    LookupDialog(parent)
+{
+    mRequest = new SymbolReferenceRequest(Main::scProcess(), this);
+    connect(mRequest, SIGNAL(response(QString,QString)), this, SLOT(onResposeFromLanguage(QString,QString)));
+    connect(mRequest, SIGNAL(cancelled()), this, SLOT(requestCancelled()));
+
+    setWindowTitle(tr("Look Up References"));
+
+    mQueryEdit->setText(tr("Enter class or method name..."));
+    mQueryEdit->selectAll();
+}
+
+void ReferencesDialog::performQuery()
+{
+    QString queryString = mQueryEdit->text();
+
+    if (queryString.isEmpty()) {
+        mResult->setModel(NULL);
+        return;
+    }
+
+    mRequest->sendRequest(queryString);
+}
+
+void ReferencesDialog::requestCancelled()
+{
+    mResult->setModel(NULL);
+}
+
+void ReferencesDialog::onResposeFromLanguage(const QString &, const QString &responseData)
+{
+    QStandardItemModel * model = parse(responseData);
+    mResult->setModel(model);
+
+    if (model)
+        focusResults();
+}
+
+QStandardItemModel * ReferencesDialog::parse(const QString &responseData)
+{
+    using namespace ScLanguage;
+    const Introspection & introspection = Main::scProcess()->introspection();
+
+    if (!introspection.introspectionAvailable()) { // just required for short path name
+        MainWindow::instance()->showStatusMessage(tr("Introspection data not yet available"));
+        return NULL;
+    }
+
+    std::stringstream stream;
+    stream << responseData.toStdString();
+    YAML::Parser parser(stream);
+
+    YAML::Node doc;
+    if(!parser.GetNextDocument(doc)) {
+        qWarning("no YAML document");
+        return NULL;
+    }
+
+    assert (doc.Type() == YAML::NodeType::Sequence);
+
+    QString symbol = doc[0].to<std::string>().c_str();
+
+    QStandardItemModel * model = new QStandardItemModel(this);
+    QStandardItem *parentItem = model->invisibleRootItem();
+
+    YAML::Node const & references = doc[1];
+
+    for (YAML::Iterator refIt = references.begin(); refIt != references.end(); ++refIt ) {
+        YAML::Node const & reference = *refIt;
+        QString className  = reference[0].to<std::string>().c_str();
+        QString methodName = reference[1].to<std::string>().c_str();
+        QString path       = reference[2].to<std::string>().c_str();
+        int charPos        = reference[3].to<int>();
+
+        QString displayPath = introspection.compactLibraryPath(path);
+        QString fullName = ScLanguage::makeFullMethodName(className, methodName);
+
+        parentItem->appendRow(makeDialogItem(fullName, displayPath, path, charPos, className, methodName, false));
+    }
+
+    return model;
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/lookup_dialog.hpp b/editors/sc-ide/widgets/lookup_dialog.hpp
new file mode 100644
index 0000000..9b45bbf
--- /dev/null
+++ b/editors/sc-ide/widgets/lookup_dialog.hpp
@@ -0,0 +1,142 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_LOOKUP_DIALOG_HPP_INCLUDED
+#define SCIDE_WIDGETS_LOOKUP_DIALOG_HPP_INCLUDED
+
+#include <QDialog>
+#include <QLineEdit>
+#include <QStandardItemModel>
+#include <QTreeWidget>
+
+#include "../core/sc_process.hpp"
+
+namespace ScIDE {
+
+class LookupDialogTreeView : public QTreeView
+{
+    Q_OBJECT
+
+public:
+    LookupDialogTreeView(QWidget * parent): QTreeView(parent) {}
+
+public Q_SLOTS:
+    bool openDocumentation();
+};
+
+class GenericLookupDialog: public QDialog
+{
+    Q_OBJECT
+
+public:
+    static const int PathRole       = Qt::UserRole + 1;
+    static const int CharPosRole    = Qt::UserRole + 2;
+    static const int IsClassRole    = Qt::UserRole + 3;
+    static const int ClassNameRole  = Qt::UserRole + 4;
+    static const int MethodNameRole = Qt::UserRole + 5;
+
+    explicit GenericLookupDialog(QWidget *parent = 0);
+    void query( const QString & query ) { mQueryEdit->setText(query); this->performQuery(); }
+    void clearQuery() { mQueryEdit->clear(); }
+
+public Q_SLOTS:
+    void openDocumentation();
+
+protected Q_SLOTS:
+    virtual void onAccepted(QModelIndex);
+
+private Q_SLOTS:
+    virtual void performQuery() = 0;
+
+protected:
+    QStandardItem * firstItemInLine(QModelIndex);
+    virtual bool event( QEvent * );
+    bool eventFilter( QObject *, QEvent * );
+    void focusResults();
+
+    static QList<QStandardItem *> makeDialogItem(QString const & displayString, QString const & displayPath,
+                                                 QString const & path, int position,
+                                                 QString const & className, QString const & methodName,
+                                                 bool isClassItem);
+
+    LookupDialogTreeView *mResult;
+    QLineEdit *mQueryEdit;
+};
+
+class LookupDialog : public GenericLookupDialog
+{
+    Q_OBJECT
+
+public:
+    explicit LookupDialog(QWidget *parent = 0);
+
+private slots:
+    void performQuery();
+    void onAccepted(QModelIndex);
+
+private:
+    QStandardItemModel * modelForClass(const QString & className);
+    QStandardItemModel * modelForMethod(const QString & methodName);
+    QStandardItemModel * modelForPartialQuery(const QString & queryString);
+    bool performClassQuery(const QString & className);
+    bool performMethodQuery(const QString & methodName);
+    bool performPartialQuery(const QString & queryString);
+
+    bool mIsPartialQuery;
+};
+
+// LATER: cache symbol references to avoid duplicate lookup
+class SymbolReferenceRequest:
+    public ScRequest
+{
+    Q_OBJECT
+
+public:
+    SymbolReferenceRequest(ScProcess * process, QObject * parent = NULL):
+        ScRequest(process, parent)
+    {}
+
+    void sendRequest(QString const & symbol)
+    {
+        send("findReferencesToSymbol", symbol);
+    }
+};
+
+class ReferencesDialog:
+    public LookupDialog
+{
+    Q_OBJECT
+
+public:
+    explicit ReferencesDialog(QWidget * parent = NULL);
+
+private slots:
+    void requestCancelled();
+    void performQuery();
+    void onResposeFromLanguage(const QString &command, const QString &responseData);
+    QStandardItemModel * parse(QString const & responseData);
+
+private:
+    SymbolReferenceRequest *mRequest;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_LOOKUP_DIALOG_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/main_window.cpp b/editors/sc-ide/widgets/main_window.cpp
new file mode 100644
index 0000000..6e3a8d9
--- /dev/null
+++ b/editors/sc-ide/widgets/main_window.cpp
@@ -0,0 +1,1484 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#define QT_NO_DEBUG_OUTPUT
+
+#include "cmd_line.hpp"
+#include "doc_list.hpp"
+#include "documents_dialog.hpp"
+#include "find_replace_tool.hpp"
+#include "goto_line_tool.hpp"
+#include "lookup_dialog.hpp"
+#include "main_window.hpp"
+#include "multi_editor.hpp"
+#include "popup_text_input.hpp"
+#include "post_window.hpp"
+#include "help_browser.hpp"
+#include "session_switch_dialog.hpp"
+#include "sessions_dialog.hpp"
+#include "tool_box.hpp"
+#include "../core/main.hpp"
+#include "../core/doc_manager.hpp"
+#include "../core/session_manager.hpp"
+#include "../core/sc_server.hpp"
+#include "code_editor/sc_editor.hpp"
+#include "settings/dialog.hpp"
+
+#include "SC_DirUtils.h"
+
+#include <QAction>
+#include <QApplication>
+#include <QFileDialog>
+#include <QFileInfo>
+#include <QGridLayout>
+#include <QInputDialog>
+#include <QMenu>
+#include <QMenuBar>
+#include <QMessageBox>
+#include <QPointer>
+#include <QShortcut>
+#include <QStatusBar>
+#include <QVBoxLayout>
+#include <QUrl>
+
+namespace ScIDE {
+
+MainWindow * MainWindow::mInstance = 0;
+
+MainWindow::MainWindow(Main * main) :
+    mMain(main),
+    mClockLabel(0),
+    mDocDialog(0)
+{
+    Q_ASSERT(!mInstance);
+    mInstance = this;
+
+    setAcceptDrops(true);
+
+    // Construct status bar:
+
+    mLangStatus = new StatusLabel();
+    mLangStatus->setText(tr("Inactive"));
+    mServerStatus = new StatusLabel();
+    onServerStatusReply(0, 0, 0, 0, 0, 0);
+
+    mStatusBar = statusBar();
+    mStatusBar->addPermanentWidget( new QLabel(tr("Interpreter:")) );
+    mStatusBar->addPermanentWidget( mLangStatus );
+    mStatusBar->addPermanentWidget( new QLabel(tr("Server:")) );
+    mStatusBar->addPermanentWidget( mServerStatus );
+
+    // Code editor
+    mEditors = new MultiEditor(main);
+
+    // Tools
+
+    mCmdLine = new CmdLine(tr("Command Line:"));
+    connect(mCmdLine, SIGNAL(invoked(QString, bool)),
+            main->scProcess(), SLOT(evaluateCode(QString, bool)));
+
+    mFindReplaceTool = new TextFindReplacePanel;
+
+    mGoToLineTool = new GoToLineTool();
+    connect(mGoToLineTool, SIGNAL(activated(int)), this, SLOT(hideToolBox()));
+
+    mToolBox = new ToolBox;
+    mToolBox->addWidget(mCmdLine);
+    mToolBox->addWidget(mFindReplaceTool);
+    mToolBox->addWidget(mGoToLineTool);
+    mToolBox->hide();
+
+    // Docks
+    mDocumentsDocklet = new DocumentsDocklet(main->documentManager(), this);
+    mDocumentsDocklet->setObjectName("documents-dock");
+    addDockWidget(Qt::LeftDockWidgetArea, mDocumentsDocklet->dockWidget());
+    mDocumentsDocklet->hide();
+
+    mHelpBrowserDocklet = new HelpBrowserDocklet(this);
+    mHelpBrowserDocklet->setObjectName("help-dock");
+    addDockWidget(Qt::RightDockWidgetArea, mHelpBrowserDocklet->dockWidget());
+    //mHelpBrowserDockable->hide();
+
+    mPostDocklet = new PostDocklet(this);
+    mPostDocklet->setObjectName("post-dock");
+    addDockWidget(Qt::RightDockWidgetArea, mPostDocklet->dockWidget());
+
+    // Layout
+    QVBoxLayout *center_box = new QVBoxLayout;
+    center_box->setContentsMargins(0,0,0,0);
+    center_box->setSpacing(0);
+    center_box->addWidget(mEditors);
+    center_box->addWidget(mToolBox);
+
+    QWidget *central = new QWidget;
+    central->setLayout(center_box);
+    setCentralWidget(central);
+
+    // Session management
+    connect(main->sessionManager(), SIGNAL(saveSessionRequest(Session*)),
+            this, SLOT(saveSession(Session*)));
+    connect(main->sessionManager(), SIGNAL(switchSessionRequest(Session*)),
+            this, SLOT(switchSession(Session*)));
+    connect(main->sessionManager(), SIGNAL(currentSessionNameChanged()),
+            this, SLOT(updateWindowTitle()));
+    // A system for easy evaluation of pre-defined code:
+    connect(&mCodeEvalMapper, SIGNAL(mapped(QString)),
+            this, SIGNAL(evaluateCode(QString)));
+    connect(this, SIGNAL(evaluateCode(QString,bool)),
+            main->scProcess(), SLOT(evaluateCode(QString,bool)));
+    // Interpreter: post output
+    connect(main->scProcess(), SIGNAL( scPost(QString) ),
+            mPostDocklet->mPostWindow, SLOT( post(QString) ) );
+    // Interpreter: monitor running state
+    connect(main->scProcess(), SIGNAL( stateChanged(QProcess::ProcessState) ),
+            this, SLOT( onInterpreterStateChanged(QProcess::ProcessState) ) );
+    // Interpreter: forward status messages
+    connect(main->scProcess(), SIGNAL(statusMessage(const QString&)),
+            this, SLOT(showStatusMessage(const QString&)));
+
+    // Document list interaction
+    connect(mDocumentsDocklet->list(), SIGNAL(clicked(Document*)),
+            mEditors, SLOT(setCurrent(Document*)));
+    connect(mEditors, SIGNAL(currentDocumentChanged(Document*)),
+            mDocumentsDocklet->list(), SLOT(setCurrent(Document*)),
+            Qt::QueuedConnection);
+
+    // Update actions on document change
+    connect(mEditors, SIGNAL(currentDocumentChanged(Document*)),
+            this, SLOT(onCurrentDocumentChanged(Document*)));
+    // Document management
+    DocumentManager *docMng = main->documentManager();
+    connect(docMng, SIGNAL(changedExternally(Document*)),
+            this, SLOT(onDocumentChangedExternally(Document*)));
+    connect(docMng, SIGNAL(recentsChanged()),
+            this, SLOT(updateRecentDocsMenu()));
+    connect(docMng, SIGNAL(saved(Document*)), this, SLOT(updateWindowTitle()) );
+
+    connect(main, SIGNAL(applySettingsRequest(Settings::Manager*)),
+            this, SLOT(applySettings(Settings::Manager*)));
+    connect(main, SIGNAL(storeSettingsRequest(Settings::Manager*)),
+            this, SLOT(storeSettings(Settings::Manager*)));
+
+    // ToolBox
+    connect(mToolBox->closeButton(), SIGNAL(clicked()), this, SLOT(hideToolBox()));
+
+    connect(main->scServer(), SIGNAL(runningStateChange(bool,QString,int)),
+            this, SLOT(onServerRunningChanged(bool,QString,int)));
+    connect(main->scServer(), SIGNAL(updateServerStatus(int,int,int,int,float,float)),
+            this, SLOT(onServerStatusReply(int,int,int,int,float,float)));
+
+    createActions();
+    createMenus();
+
+    // Must be called after createAtions(), because it accesses an action:
+    onServerRunningChanged(false, "", 0);
+    toggleInterpreterActions(false);
+
+    // Initialize recent documents menu
+    updateRecentDocsMenu();
+
+    QIcon icon;
+    icon.addFile(":/icons/sc-ide-svg");
+    icon.addFile(":/icons/sc-ide-16");
+    icon.addFile(":/icons/sc-ide-24");
+    icon.addFile(":/icons/sc-ide-32");
+    icon.addFile(":/icons/sc-ide-48");
+    icon.addFile(":/icons/sc-ide-64");
+    icon.addFile(":/icons/sc-ide-128");
+    icon.addFile(":/icons/sc-ide-256");
+    icon.addFile(":/icons/sc-ide-512");
+    icon.addFile(":/icons/sc-ide-1024");
+    QApplication::setWindowIcon(icon);
+
+    updateWindowTitle();
+}
+
+void MainWindow::createActions()
+{
+    Settings::Manager *settings = mMain->settings();
+
+    QAction *action;
+    const QString ideCategory("IDE");
+    const QString editorCategory(tr("Text Editor"));
+    const QString helpCategory(tr("Help"));
+
+    // File
+    mActions[Quit] = action = new QAction(
+        QIcon::fromTheme("application-exit"), tr("&Quit..."), this);
+    action->setShortcut(tr("Ctrl+Q", "Quit application"));
+    action->setStatusTip(tr("Quit SuperCollider IDE"));
+    QObject::connect( action, SIGNAL(triggered()), this, SLOT(onQuit()) );
+    settings->addAction( action, "ide-quit", ideCategory);
+
+    mActions[DocNew] = action = new QAction(
+        QIcon::fromTheme("document-new"), tr("&New"), this);
+    action->setShortcut(tr("Ctrl+N", "New document"));
+    action->setStatusTip(tr("Create a new document"));
+    connect(action, SIGNAL(triggered()), this, SLOT(newDocument()));
+    settings->addAction( action, "ide-document-new", ideCategory);
+
+    mActions[DocOpen] = action = new QAction(
+        QIcon::fromTheme("document-open"), tr("&Open..."), this);
+    action->setShortcut(tr("Ctrl+O", "Open document"));
+    action->setStatusTip(tr("Open an existing file"));
+    connect(action, SIGNAL(triggered()), this, SLOT(openDocument()));
+    settings->addAction( action, "ide-document-open", ideCategory);
+
+    mActions[DocOpenStartup] = action = new QAction(
+        QIcon::fromTheme("document-open"), tr("Open startup file"), this);
+    action->setStatusTip(tr("Open startup file"));
+    connect(action, SIGNAL(triggered()), this, SLOT(openStartupFile()));
+    settings->addAction( action, "ide-document-open-startup", ideCategory);
+
+    mActions[DocSave] = action = new QAction(
+        QIcon::fromTheme("document-save"), tr("&Save"), this);
+    action->setShortcut(tr("Ctrl+S", "Save document"));
+    action->setStatusTip(tr("Save the current document"));
+    connect(action, SIGNAL(triggered()), this, SLOT(saveDocument()));
+    settings->addAction( action, "ide-document-save", ideCategory);
+
+    mActions[DocSaveAs] = action = new QAction(
+        QIcon::fromTheme("document-save-as"), tr("Save &As..."), this);
+    action->setShortcut(tr("Ctrl+Shift+S", "Save &As..."));
+    action->setStatusTip(tr("Save the current document into a different file"));
+    connect(action, SIGNAL(triggered()), this, SLOT(saveDocumentAs()));
+    settings->addAction( action, "ide-document-save-as", ideCategory);
+
+    mActions[DocSaveAll] = action = new QAction(
+        QIcon::fromTheme("document-save"), tr("Save All..."), this);
+    action->setShortcut(tr("Ctrl+Alt+S", "Save all documents"));
+    action->setStatusTip(tr("Save all open documents"));
+    connect(action, SIGNAL(triggered()), this, SLOT(saveAllDocuments()));
+    settings->addAction( action, "ide-document-save-all", ideCategory);
+
+    mActions[DocClose] = action = new QAction(
+        QIcon::fromTheme("window-close"), tr("&Close"), this);
+    action->setShortcut(tr("Ctrl+W", "Close document"));
+    action->setStatusTip(tr("Close the current document"));
+    connect(action, SIGNAL(triggered()), this, SLOT(closeDocument()));
+    settings->addAction( action, "ide-document-close", ideCategory);
+
+    mActions[DocCloseAll] = action = new QAction(
+        QIcon::fromTheme("window-close"), tr("Close All..."), this);
+    action->setShortcut(tr("Ctrl+Shift+W", "Close all documents"));
+    action->setStatusTip(tr("Close all documents"));
+    connect(action, SIGNAL(triggered()), this, SLOT(closeAllDocuments()));
+    settings->addAction( action, "ide-document-close-all", ideCategory);
+
+    mActions[DocReload] = action = new QAction(
+        QIcon::fromTheme("view-refresh"), tr("&Reload"), this);
+    action->setShortcut(tr("F5", "Reload document"));
+    action->setStatusTip(tr("Reload the current document"));
+    connect(action, SIGNAL(triggered()), this, SLOT(reloadDocument()));
+    settings->addAction( action, "ide-document-reload", ideCategory);
+
+    mActions[ClearRecentDocs] = action = new QAction(tr("Clear", "Clear recent documents"), this);
+    action->setStatusTip(tr("Clear list of recent documents"));
+    connect(action, SIGNAL(triggered()),
+            Main::instance()->documentManager(), SLOT(clearRecents()));
+    settings->addAction( action, "ide-clear-recent-documents", ideCategory);
+
+    // Sessions
+    mActions[NewSession] = action = new QAction(
+        QIcon::fromTheme("document-new"), tr("&New Session"), this);
+    action->setStatusTip(tr("Open a new session"));
+    connect(action, SIGNAL(triggered()), this, SLOT(newSession()));
+    settings->addAction( action, "ide-session-new", ideCategory);
+
+    mActions[SaveSessionAs] = action = new QAction(
+        QIcon::fromTheme("document-save-as"), tr("Save Session &As..."), this);
+    action->setStatusTip(tr("Save the current session with a different name"));
+    connect(action, SIGNAL(triggered()), this, SLOT(saveCurrentSessionAs()));
+    settings->addAction( action, "ide-session-save-as", ideCategory);
+
+    mActions[ManageSessions] = action = new QAction(
+        tr("&Manage Sessions..."), this);
+    connect(action, SIGNAL(triggered()), this, SLOT(openSessionsDialog()));
+    settings->addAction( action, "ide-session-manage", ideCategory);
+
+    mActions[OpenSessionSwitchDialog] = action = new QAction(
+        tr("&Switch Session..."), this);
+    connect(action, SIGNAL(triggered()), this, SLOT(showSwitchSessionDialog()));
+    action->setShortcut(tr("Ctrl+Shift+Q", "Switch Session"));
+    settings->addAction( action, "ide-session-switch", ideCategory);
+
+    // Edit
+    mActions[Find] = action = new QAction(
+        QIcon::fromTheme("edit-find"), tr("&Find..."), this);
+    action->setShortcut(tr("Ctrl+F", "Find"));
+    action->setStatusTip(tr("Find text in document"));
+    connect(action, SIGNAL(triggered()), this, SLOT(showFindTool()));
+    settings->addAction( action, "editor-find", editorCategory);
+
+    mActions[Replace] = action = new QAction(
+        QIcon::fromTheme("edit-replace"), tr("&Replace..."), this);
+    action->setShortcut(tr("Ctrl+R", "Replace"));
+    action->setStatusTip(tr("Find and replace text in document"));
+    connect(action, SIGNAL(triggered()), this, SLOT(showReplaceTool()));
+    settings->addAction( action, "editor-replace", editorCategory);
+
+    // View
+    mActions[ShowCmdLine] = action = new QAction(tr("&Command Line"), this);
+    action->setStatusTip(tr("Command line for quick code evaluation"));
+    action->setShortcut(tr("Ctrl+E", "Show command line"));
+    connect(action, SIGNAL(triggered()), this, SLOT(showCmdLine()));
+    settings->addAction( action, "ide-command-line-show", ideCategory);
+
+    mActions[ShowGoToLineTool] = action = new QAction(tr("&Go To Line"), this);
+    action->setStatusTip(tr("Tool to jump to a line by number"));
+    action->setShortcut(tr("Ctrl+L", "Show go-to-line tool"));
+    connect(action, SIGNAL(triggered()), this, SLOT(showGoToLineTool()));
+    settings->addAction( action, "editor-go-to-line", editorCategory);
+
+    mActions[CloseToolBox] = action = new QAction(
+        QIcon::fromTheme("window-close"), tr("&Close Tool Panel"), this);
+    action->setStatusTip(tr("Close any open tool panel"));
+    action->setShortcut(tr("Esc", "Close tool box"));
+    connect(action, SIGNAL(triggered()), this, SLOT(hideToolBox()));
+    settings->addAction( action, "ide-tool-panel-hide", ideCategory);
+
+    mActions[ShowFullScreen] = action = new QAction(tr("&Full Screen"), this);
+    action->setCheckable(false);
+    action->setShortcut(tr("Ctrl+Shift+F", "Show ScIDE in Full Screen"));
+    connect(action, SIGNAL(triggered()), this, SLOT(toggleFullScreen()));
+    settings->addAction( action, "ide-show-fullscreen", ideCategory);
+
+    mActions[FocusPostWindow] = action = new QAction( tr("Focus Post Window"), this);
+    action->setStatusTip(tr("Focus post window"));
+    action->setShortcut(tr("Ctrl+P", "Focus post window"));
+    connect(action, SIGNAL(triggered()), mPostDocklet, SLOT(raiseAndFocus()));
+    settings->addAction( action, "post-focus", ideCategory);
+
+    // Language
+    mActions[LookupImplementation] = action = new QAction(
+        QIcon::fromTheme("window-lookupdefinition"), tr("Look Up Implementations..."), this);
+    action->setShortcut(tr("Ctrl+Shift+I", "Look Up Implementations"));
+    action->setStatusTip(tr("Open dialog to look up implementations of a class or a method"));
+    connect(action, SIGNAL(triggered()), this, SLOT(lookupImplementation()));
+    settings->addAction( action, "ide-lookup-implementation", ideCategory);
+
+    mActions[LookupImplementationForCursor] = action = new QAction(tr("Look Up Implementations for Cursor"), this);
+    action->setShortcut(tr("Ctrl+I", "Look Up Implementations for Cursor"));
+    action->setStatusTip(tr("Look up implementations of class or method under cursor"));
+    connect(action, SIGNAL(triggered(bool)), this, SLOT(lookupImplementationForCursor()));
+    settings->addAction( action, "ide-lookup-implementation-for-cursor", ideCategory);
+
+    mActions[LookupReferences] = action = new QAction(
+        QIcon::fromTheme("window-lookupreferences"), tr("Look Up References..."), this);
+    action->setShortcut(tr("Ctrl+Shift+U", "Look Up References"));
+    action->setStatusTip(tr("Open dialog to look up references to a class or a method"));
+    connect(action, SIGNAL(triggered()), this, SLOT(lookupReferences()));
+    settings->addAction( action, "ide-lookup-references", ideCategory);
+
+    mActions[LookupReferencesForCursor] = action = new QAction(tr("Look Up References for Cursor"), this);
+    action->setShortcut(tr("Ctrl+U", "Look Up References For Selection"));
+    action->setStatusTip(tr("Look up references to class or method under cursor"));
+    connect(action, SIGNAL(triggered(bool)), this, SLOT(lookupReferencesForCursor()));
+    settings->addAction( action, "ide-lookup-references-for-cursor", ideCategory);
+
+    // Settings
+    mActions[ShowSettings] = action = new QAction(tr("&Preferences"), this);
+#ifdef Q_OS_MAC
+    action->setShortcut(tr("Ctrl+,", "Show configuration dialog"));
+#endif
+    action->setStatusTip(tr("Show configuration dialog"));
+    connect(action, SIGNAL(triggered()), this, SLOT(showSettings()));
+    settings->addAction( action, "ide-settings-dialog", ideCategory);
+
+    // Help
+    mActions[Help] = action = new QAction(
+        QIcon::fromTheme("system-help"), tr("Open &Help Browser"), this);
+    action->setStatusTip(tr("Open help"));
+    connect(action, SIGNAL(triggered()), this, SLOT(openHelp()));
+    settings->addAction( action, "help-show", helpCategory);
+
+    mActions[LookupDocumentationForCursor] = action = new QAction(
+        QIcon::fromTheme("system-help"), tr("Look Up Documentation for Cursor"), this);
+    action->setShortcut(tr("Ctrl+D", "Look Up Documentation for Cursor"));
+    action->setStatusTip(tr("Look up documentation for text under cursor"));
+    connect(action, SIGNAL(triggered()), this, SLOT(lookupDocumentationForCursor()));
+    settings->addAction( action, "help-lookup-for-cursor", helpCategory);
+
+    mActions[LookupDocumentation] = action = new QAction(
+        QIcon::fromTheme("system-help"), tr("Look Up Documentation..."), this);
+    action->setShortcut(tr("Ctrl+Shift+D", "Look Up Documentation"));
+    action->setStatusTip(tr("Enter text to look up in documentation"));
+    connect(action, SIGNAL(triggered()), this, SLOT(lookupDocumentation()));
+    settings->addAction( action, "help-lookup", helpCategory);
+
+    mActions[ShowAbout] = action = new QAction(
+        QIcon::fromTheme("show-about"), tr("&About SuperCollider"), this);
+    connect(action, SIGNAL(triggered()), this, SLOT(showAbout()));
+    settings->addAction( action, "ide-about", ideCategory);
+
+    mActions[ShowAboutQT] = action = new QAction(
+        QIcon::fromTheme("show-about-qt"), tr("About &Qt"), this);
+    connect(action, SIGNAL(triggered()), this, SLOT(showAboutQT()));
+    settings->addAction( action, "ide-about-qt", ideCategory);
+
+    // Add external actions to settings:
+    action = mPostDocklet->toggleViewAction();
+    action->setIcon( QIcon::fromTheme("utilities-terminal"));
+    action->setStatusTip(tr("Show/hide Post docklet"));
+    settings->addAction( mPostDocklet->toggleViewAction(),
+                         "ide-docklet-post", ideCategory );
+
+    action = mDocumentsDocklet->toggleViewAction();
+    action->setIcon( QIcon::fromTheme("text-x-generic") );
+    action->setStatusTip(tr("Show/hide Documents docklet"));
+    settings->addAction( mDocumentsDocklet->toggleViewAction(),
+                         "ide-docklet-documents", ideCategory );
+
+    action = mHelpBrowserDocklet->toggleViewAction();
+    action->setIcon( QIcon::fromTheme("system-help") );
+    action->setStatusTip(tr("Show/hide Help browser docklet"));
+    settings->addAction( mHelpBrowserDocklet->toggleViewAction(),
+                         "ide-docklet-help", ideCategory );
+}
+
+void MainWindow::createMenus()
+{
+    QMenu *menu;
+    QMenu *submenu;
+
+    menu = new QMenu(tr("&File"), this);
+    menu->addAction( mActions[DocNew] );
+    menu->addAction( mActions[DocOpen] );
+    mRecentDocsMenu = menu->addMenu(tr("Open Recent", "Open a recent document"));
+    connect(mRecentDocsMenu, SIGNAL(triggered(QAction*)),
+            this, SLOT(onRecentDocAction(QAction*)));
+    menu->addAction( mActions[DocOpenStartup] );
+    menu->addAction( mActions[DocSave] );
+    menu->addAction( mActions[DocSaveAs] );
+    menu->addAction( mActions[DocSaveAll] );
+    menu->addSeparator();
+    menu->addAction( mActions[DocReload] );
+    menu->addSeparator();
+    menu->addAction( mActions[DocClose] );
+    menu->addAction( mActions[DocCloseAll] );
+    menu->addSeparator();
+    menu->addAction( mActions[Quit] );
+
+    menuBar()->addMenu(menu);
+
+    menu = new QMenu(tr("&Session"), this);
+    menu->addAction( mActions[NewSession] );
+    menu->addAction( mActions[SaveSessionAs] );
+    submenu = menu->addMenu(tr("&Open Session"));
+    connect(submenu, SIGNAL(triggered(QAction*)),
+            this, SLOT(onOpenSessionAction(QAction*)));
+    mSessionsMenu = submenu;
+    updateSessionsMenu();
+    menu->addSeparator();
+    menu->addAction( mActions[ManageSessions] );
+    menu->addAction( mActions[OpenSessionSwitchDialog] );
+
+    menuBar()->addMenu(menu);
+
+    menu = new QMenu(tr("&Edit"), this);
+    menu->addAction( mEditors->action(MultiEditor::Undo) );
+    menu->addAction( mEditors->action(MultiEditor::Redo) );
+    menu->addSeparator();
+    menu->addAction( mEditors->action(MultiEditor::Cut) );
+    menu->addAction( mEditors->action(MultiEditor::Copy) );
+    menu->addAction( mEditors->action(MultiEditor::Paste) );
+    menu->addSeparator();
+    menu->addAction( mActions[Find] );
+    menu->addAction( mFindReplaceTool->action(TextFindReplacePanel::FindNext) );
+    menu->addAction( mFindReplaceTool->action(TextFindReplacePanel::FindPrevious) );
+    menu->addAction( mActions[Replace] );
+    menu->addSeparator();
+    menu->addAction( mEditors->action(MultiEditor::IndentWithSpaces) );
+    menu->addAction( mEditors->action(MultiEditor::IndentLineOrRegion) );
+    menu->addAction( mEditors->action(MultiEditor::ToggleComment) );
+    menu->addAction( mEditors->action(MultiEditor::ToggleOverwriteMode) );
+    menu->addAction( mEditors->action(MultiEditor::SelectRegion) );
+
+    menu->addSeparator();
+    menu->addAction( mActions[ShowSettings] );
+
+    menuBar()->addMenu(menu);
+
+    menu = new QMenu(tr("&View"), this);
+    submenu = new QMenu(tr("&Docklets"), this);
+    submenu->addAction( mPostDocklet->toggleViewAction() );
+    submenu->addAction( mDocumentsDocklet->toggleViewAction() );
+    submenu->addAction( mHelpBrowserDocklet->toggleViewAction() );
+    menu->addMenu(submenu);
+    menu->addSeparator();
+    submenu = menu->addMenu(tr("&Tool Panels"));
+    submenu->addAction( mActions[Find] );
+    submenu->addAction( mActions[Replace] );
+    submenu->addAction( mActions[ShowCmdLine] );
+    submenu->addAction( mActions[ShowGoToLineTool] );
+    submenu->addSeparator();
+    submenu->addAction( mActions[CloseToolBox] );
+    menu->addSeparator();
+    menu->addAction( mEditors->action(MultiEditor::EnlargeFont) );
+    menu->addAction( mEditors->action(MultiEditor::ShrinkFont) );
+    menu->addAction( mEditors->action(MultiEditor::ResetFontSize) );
+    menu->addSeparator();
+    menu->addAction( mEditors->action(MultiEditor::ShowWhitespace) );
+    menu->addSeparator();
+    menu->addAction( mEditors->action(MultiEditor::NextDocument) );
+    menu->addAction( mEditors->action(MultiEditor::PreviousDocument) );
+    menu->addSeparator();
+    menu->addAction( mEditors->action(MultiEditor::SplitHorizontally) );
+    menu->addAction( mEditors->action(MultiEditor::SplitVertically) );
+    menu->addAction( mEditors->action(MultiEditor::RemoveCurrentSplit) );
+    menu->addAction( mEditors->action(MultiEditor::RemoveAllSplits) );
+    menu->addSeparator();
+    menu->addAction( mActions[FocusPostWindow] );
+    menu->addSeparator();
+    menu->addAction( mActions[ShowFullScreen] );
+
+    menuBar()->addMenu(menu);
+
+    menu = new QMenu(tr("&Language"), this);
+    menu->addAction( mMain->scProcess()->action(ScProcess::ToggleRunning) );
+    menu->addAction( mMain->scProcess()->action(ScProcess::Restart) );
+    menu->addAction( mMain->scProcess()->action(ScProcess::RecompileClassLibrary) );
+    menu->addSeparator();
+    menu->addAction( mMain->scServer()->action(ScServer::ToggleRunning) );
+    menu->addAction( mMain->scServer()->action(ScServer::Reboot) );
+    menu->addAction( mMain->scServer()->action(ScServer::ShowMeters) );
+    menu->addAction( mMain->scServer()->action(ScServer::DumpNodeTree) );
+    menu->addAction( mMain->scServer()->action(ScServer::DumpNodeTreeWithControls) );
+    menu->addSeparator();
+    menu->addAction( mEditors->action(MultiEditor::EvaluateCurrentDocument) );
+    menu->addAction( mEditors->action(MultiEditor::EvaluateRegion) );
+    menu->addAction( mEditors->action(MultiEditor::EvaluateLine) );
+    menu->addAction( mMain->scProcess()->action(ScIDE::ScProcess::StopMain) );
+    menu->addSeparator();
+    menu->addAction( mActions[LookupImplementationForCursor] );
+    menu->addAction( mActions[LookupImplementation] );
+    menu->addAction( mActions[LookupReferencesForCursor] );
+    menu->addAction( mActions[LookupReferences] );
+
+    menuBar()->addMenu(menu);
+
+    menu = new QMenu(tr("&Help"), this);
+    menu->addAction( mActions[Help] );
+    menu->addAction( mActions[LookupDocumentationForCursor] );
+    menu->addAction( mActions[LookupDocumentation] );
+    menu->addSeparator();
+    menu->addAction( mActions[ShowAbout] );
+    menu->addAction( mActions[ShowAboutQT] );
+
+    menuBar()->addMenu(menu);
+
+    mServerStatus->addAction( mMain->scServer()->action(ScServer::ToggleRunning) );
+    mServerStatus->addAction( mMain->scServer()->action(ScServer::Reboot) );
+    mServerStatus->addAction( mMain->scServer()->action(ScServer::ShowMeters) );
+    mServerStatus->addAction( mMain->scServer()->action(ScServer::DumpNodeTree) );
+    mServerStatus->addAction( mMain->scServer()->action(ScServer::DumpNodeTreeWithControls) );
+    mServerStatus->setContextMenuPolicy(Qt::ActionsContextMenu);
+}
+
+static void saveDetachedState( Docklet *docklet,  QVariantMap & data )
+{
+    data.insert( docklet->objectName(), docklet->saveDetachedState().toBase64() );
+}
+
+template <class T>
+void MainWindow::saveWindowState(T * settings)
+{
+    QVariantMap detachedData;
+    saveDetachedState( mPostDocklet, detachedData );
+    saveDetachedState( mDocumentsDocklet, detachedData );
+    saveDetachedState( mHelpBrowserDocklet, detachedData );
+
+    settings->beginGroup("mainWindow");
+    settings->setValue("geometry", this->saveGeometry().toBase64());
+    settings->setValue("state", this->saveState().toBase64());
+    settings->setValue("detached", QVariant::fromValue(detachedData));
+    settings->endGroup();
+}
+
+void MainWindow::saveWindowState()
+{
+    Settings::Manager *settings = Main::settings();
+    settings->beginGroup("IDE");
+    saveWindowState(settings);
+    settings->endGroup();
+}
+
+static void restoreDetachedState( Docklet *docklet,  const QVariantMap & data )
+{
+    QByteArray base64data = data.value( docklet->objectName() ).value<QByteArray>();
+    docklet->restoreDetachedState( QByteArray::fromBase64( base64data ) );
+}
+
+template <class T>
+void MainWindow::restoreWindowState( T * settings )
+{
+    qDebug("------------ restore window state ------------");
+
+    settings->beginGroup("mainWindow");
+    QVariant varGeom = settings->value("geometry");
+    QVariant varState = settings->value("state");
+    QVariant varDetached = settings->value("detached");
+    settings->endGroup();
+
+    QByteArray geom = QByteArray::fromBase64( varGeom.value<QByteArray>() );
+    QByteArray state = QByteArray::fromBase64( varState.value<QByteArray>() );
+    QVariantMap detachedData = varDetached.value<QVariantMap>();
+
+    if (!geom.isEmpty()) {
+        // Workaround for Qt bug 4397:
+        setWindowState(Qt::WindowNoState);
+        restoreGeometry(geom);
+    }
+    else
+        setWindowState( windowState() & ~Qt::WindowFullScreen | Qt::WindowMaximized );
+
+    restoreDetachedState( mPostDocklet, detachedData );
+    restoreDetachedState( mDocumentsDocklet, detachedData );
+    restoreDetachedState( mHelpBrowserDocklet, detachedData );
+
+    qDebug("restoring state");
+
+    if (!state.isEmpty())
+        restoreState(state);
+
+    qDebug("setting dock area corners");
+
+    setCorner( Qt::TopLeftCorner, Qt::LeftDockWidgetArea );
+    setCorner( Qt::BottomLeftCorner, Qt::LeftDockWidgetArea );
+    setCorner( Qt::TopRightCorner, Qt::RightDockWidgetArea );
+    setCorner( Qt::BottomRightCorner, Qt::RightDockWidgetArea );
+
+    updateClockWidget(isFullScreen());
+
+    qDebug("------------ END restore window state ------------");
+}
+
+void MainWindow::restoreWindowState()
+{
+    Settings::Manager *settings = Main::settings();
+    settings->beginGroup("IDE");
+    restoreWindowState(settings);
+    settings->endGroup();
+}
+
+void MainWindow::focusCodeEditor()
+{
+    if (mEditors->currentEditor())
+        mEditors->currentEditor()->setFocus();
+    else
+        mEditors->setFocus();
+}
+
+void MainWindow::newSession()
+{
+    mMain->sessionManager()->newSession();
+}
+
+void MainWindow::saveCurrentSessionAs()
+{
+    QString name = QInputDialog::getText( this,
+                                          tr("Save Current Session"),
+                                          tr("Enter a name for the session:") );
+
+    if (name.isEmpty()) return;
+
+    mMain->sessionManager()->saveSessionAs(name);
+
+    updateSessionsMenu();
+}
+
+void MainWindow::onOpenSessionAction( QAction * action )
+{
+    openSession(action->text());
+}
+
+void MainWindow::switchSession( Session *session )
+{
+    if (session)
+        restoreWindowState(session);
+
+    updateWindowTitle();
+
+    mEditors->switchSession(session);
+}
+
+void MainWindow::saveSession( Session *session )
+{
+    saveWindowState(session);
+
+    mEditors->saveSession(session);
+}
+
+void MainWindow::openSessionsDialog()
+{
+    QPointer<MainWindow> mainwin(this);
+    SessionsDialog dialog(mMain->sessionManager(), this);
+    dialog.exec();
+    if (mainwin)
+        mainwin->updateSessionsMenu();
+}
+
+QAction *MainWindow::action( ActionRole role )
+{
+    Q_ASSERT( role < ActionCount );
+    return mActions[role];
+}
+
+bool MainWindow::quit()
+{
+    if (!promptSaveDocs())
+        return false;
+
+    saveWindowState();
+
+    mMain->quit();
+
+    return true;
+}
+
+void MainWindow::onQuit()
+{
+    quit();
+}
+
+void MainWindow::onCurrentDocumentChanged( Document * doc )
+{
+    updateWindowTitle();
+
+    mActions[DocClose]->setEnabled(doc);
+    mActions[DocCloseAll]->setEnabled(doc);
+    mActions[DocReload]->setEnabled(doc);
+    mActions[DocSave]->setEnabled(doc);
+    mActions[DocSaveAs]->setEnabled(doc);
+
+    GenericCodeEditor *editor = mEditors->currentEditor();
+    mFindReplaceTool->setEditor( editor );
+    mGoToLineTool->setEditor( editor );
+}
+
+void MainWindow::onDocumentChangedExternally( Document *doc )
+{
+    if (mDocDialog)
+        return;
+
+    mDocDialog = new DocumentsDialog(DocumentsDialog::ExternalChange, this);
+    mDocDialog->addDocument(doc);
+    connect(mDocDialog, SIGNAL(finished(int)), this, SLOT(onDocDialogFinished()));
+    mDocDialog->open();
+}
+
+void MainWindow::onDocDialogFinished()
+{
+    mDocDialog->deleteLater();
+    mDocDialog = 0;
+}
+
+void MainWindow::updateRecentDocsMenu()
+{
+    mRecentDocsMenu->clear();
+
+    const QStringList &recent = mMain->documentManager()->recents();
+
+    foreach( const QString & path, recent )
+        mRecentDocsMenu->addAction(path);
+
+    if (!recent.isEmpty()) {
+        mRecentDocsMenu->addSeparator();
+        mRecentDocsMenu->addAction(mActions[ClearRecentDocs]);
+    }
+}
+
+void MainWindow::onRecentDocAction( QAction *action )
+{
+    mMain->documentManager()->open(action->text());
+}
+
+void MainWindow::onInterpreterStateChanged( QProcess::ProcessState state )
+{
+    QString text;
+    QColor color;
+
+    switch(state) {
+    case QProcess::NotRunning:
+        toggleInterpreterActions(false);
+
+        text = tr("Inactive");
+        color = Qt::white;
+        break;
+
+    case QProcess::Starting:
+        text = tr("Booting");
+        color = QColor(255,255,0);
+        break;
+
+    case QProcess::Running:
+        toggleInterpreterActions(true);
+
+        text = tr("Active");
+        color = Qt::green;
+        break;
+    }
+
+    mLangStatus->setText(text);
+    mLangStatus->setTextColor(color);
+}
+
+
+void MainWindow::onServerStatusReply(int ugens, int synths, int groups, int synthDefs, float avgCPU, float peakCPU)
+{
+    QString statusString =
+            QString("%1% %2% %3u %4s %5g %6d")
+            .arg(avgCPU,  5, 'f', 2)
+            .arg(peakCPU, 5, 'f', 2)
+            .arg(ugens,     4)
+            .arg(synths,    4)
+            .arg(groups,    4)
+            .arg(synthDefs, 4);
+
+    mServerStatus->setText(statusString);
+}
+
+void MainWindow::onServerRunningChanged(bool running, const QString &, int)
+{
+    mServerStatus->setTextColor( running ? Qt::green : Qt::white);
+    if (!running) {
+        onServerStatusReply(0, 0, 0, 0, 0, 0);
+    }
+}
+
+void MainWindow::closeEvent(QCloseEvent *event)
+{
+    if(!quit()) event->ignore();
+}
+
+bool MainWindow::close( Document *doc )
+{
+    if (doc->textDocument()->isModified())
+    {
+        QMessageBox::StandardButton ret;
+        ret = QMessageBox::warning(
+            mInstance,
+            tr("SuperCollider IDE"),
+            tr("There are unsaved changes in document '%1'.\n\n"
+                "Do you want to save it?").arg(doc->title()),
+            QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel,
+            QMessageBox::Save // the default
+        );
+
+        switch (ret) {
+        case QMessageBox::Cancel:
+            return false;
+        case QMessageBox::Save:
+            if (!MainWindow::save(doc))
+                return false;
+            break;
+        default:;
+        }
+    }
+
+    Main::instance()->documentManager()->close(doc);
+    return true;
+}
+
+bool MainWindow::reload( Document *doc )
+{
+    if (doc->filePath().isEmpty())
+        return false;
+
+    if (doc->textDocument()->isModified())
+    {
+        QMessageBox::StandardButton ret;
+        ret = QMessageBox::warning(
+            mInstance,
+            tr("SuperCollider IDE"),
+            tr("There are unsaved changes in document '%1'.\n\n"
+                "Do you want to reload it?").arg(doc->title()),
+            QMessageBox::Yes | QMessageBox::No,
+            QMessageBox::No // the default
+        );
+        if (ret == QMessageBox::No)
+            return false;
+    }
+
+    return Main::instance()->documentManager()->reload(doc);
+}
+
+bool MainWindow::save( Document *doc, bool forceChoose )
+{
+    const bool documentHasPath = !doc->filePath().isEmpty();
+
+    if (!forceChoose && !(doc->isModified()) && documentHasPath)
+        return true;
+
+    DocumentManager *documentManager = Main::instance()->documentManager();
+
+    bool fileIsWritable = true;
+    if ((!forceChoose) && documentHasPath) {
+        QFileInfo fileInfo(doc->filePath());
+        fileIsWritable = fileInfo.isWritable();
+
+        if (!fileIsWritable) {
+            QMessageBox::warning(instance(), tr("Saving read-only file"),
+                                 tr("File is read-only. Please select a new location to save to."),
+                                 QMessageBox::Ok, QMessageBox::NoButton);
+
+        }
+    }
+
+    if (forceChoose || !documentHasPath || !fileIsWritable) {
+        QFileDialog dialog(mInstance);
+        dialog.setAcceptMode( QFileDialog::AcceptSave );
+
+        QStringList filters = (QStringList()
+                               << tr("SuperCollider Document (*.scd)")
+                               << tr("SuperCollider Class file (*.sc)")
+                               << "SCDoc (*.schelp)"
+                               << tr("All files (*)"));
+
+        dialog.setNameFilters(filters);
+
+        if(doc->filePath().isEmpty()){
+            dialog.setDefaultSuffix("scd");
+        }else{
+            QString fp = doc->filePath();
+            if(fp.endsWith(".scd"))
+                dialog.setFilter(filters[0]);
+            else if(fp.endsWith(".sc"))
+                dialog.setFilter(filters[1]);
+            else if(fp.endsWith(".schelp"))
+                dialog.setFilter(filters[2]);
+            else
+                dialog.setFilter(filters[3]);
+            dialog.selectFile(fp);
+        }
+
+        if (dialog.exec() == QDialog::Accepted)
+            return documentManager->saveAs(doc, dialog.selectedFiles()[0]);
+        else
+            return false;
+    } else
+        return documentManager->save(doc);
+}
+
+void MainWindow::newDocument()
+{
+    mMain->documentManager()->create();
+}
+
+void MainWindow::openDocument()
+{
+    QFileDialog dialog (this, Qt::Dialog);
+    dialog.setModal(true);
+    dialog.setWindowModality(Qt::ApplicationModal);
+
+    dialog.setFileMode( QFileDialog::ExistingFiles );
+
+    GenericCodeEditor * currentEditor = mEditors->currentEditor();
+    if (currentEditor) {
+        Document * currentDocument = currentEditor->document();
+        QFileInfo filePath (currentDocument->filePath());
+        dialog.setDirectory(filePath.dir());
+    }
+
+    QStringList filters;
+    filters
+        << tr("All files (*)")
+        << tr("SuperCollider (*.scd *.sc)")
+        << tr("SCDoc (*.schelp)");
+    dialog.setNameFilters(filters);
+
+    if (dialog.exec())
+    {
+        QStringList filenames = dialog.selectedFiles();
+        foreach(QString filename, filenames)
+            mMain->documentManager()->open(filename);
+    }
+}
+
+void MainWindow::openStartupFile()
+{
+    char configDir[PATH_MAX];
+    sc_GetUserConfigDirectory(configDir, PATH_MAX);
+
+    QDir dir;
+    // Create the config dir if non existent:
+    dir.mkpath(configDir);
+    if (!dir.cd(configDir)) {
+        qWarning() << "Could not access config dir:" << configDir;
+        return;
+    }
+
+    QString filePath = dir.filePath("startup.scd");
+    // Try creating the file if non-existent:
+    if (!QFile::exists(filePath)) {
+        QFile file(filePath);
+        if (!file.open(QIODevice::WriteOnly)) {
+            file.close();
+            qWarning() << "Could not create startup file:" << filePath;
+            return;
+        }
+        file.close();
+    }
+
+    mMain->documentManager()->open( filePath );
+}
+
+void MainWindow::saveDocument()
+{
+    GenericCodeEditor *editor = mEditors->currentEditor();
+    if(!editor) return;
+
+    Document *doc = editor->document();
+    Q_ASSERT(doc);
+
+    MainWindow::save(doc);
+}
+
+void MainWindow::saveDocumentAs()
+{
+    GenericCodeEditor *editor = mEditors->currentEditor();
+    if(!editor) return;
+
+    Document *doc = editor->document();
+    Q_ASSERT(doc);
+
+    MainWindow::save(doc, true);
+}
+
+void MainWindow::saveAllDocuments()
+{
+    QList<Document*> docs = mMain->documentManager()->documents();
+    foreach (Document *doc, docs)
+        if (!MainWindow::save(doc))
+            return;
+}
+
+void MainWindow::reloadDocument()
+{
+    GenericCodeEditor *editor = mEditors->currentEditor();
+    if(!editor) return;
+
+    Q_ASSERT(editor->document());
+    MainWindow::reload(editor->document());
+}
+
+void MainWindow::closeDocument()
+{
+    GenericCodeEditor *editor = mEditors->currentEditor();
+    if(!editor) return;
+
+    Q_ASSERT(editor->document());
+    MainWindow::close( editor->document() );
+}
+
+void MainWindow::closeAllDocuments()
+{
+    if (promptSaveDocs()) {
+        QList<Document*> docs = mMain->documentManager()->documents();
+        foreach (Document *doc, docs)
+            mMain->documentManager()->close(doc);
+    }
+}
+
+bool MainWindow::promptSaveDocs()
+{
+    // LATER: maybe this should go to the DocumentManager class?
+
+    QList<Document*> docs = mMain->documentManager()->documents();
+    QList<Document*> unsavedDocs;
+    foreach(Document* doc, docs)
+        if(doc->textDocument()->isModified())
+            unsavedDocs.append(doc);
+
+    if (!unsavedDocs.isEmpty()) {
+        DocumentsDialog dialog(unsavedDocs, DocumentsDialog::Quit, this);
+
+        if (!dialog.exec())
+            return false;
+    }
+
+    return true;
+}
+
+void MainWindow::updateWindowTitle()
+{
+    Session *session = mMain->sessionManager()->currentSession();
+    GenericCodeEditor *editor = mEditors->currentEditor();
+    Document *doc = editor ? editor->document() : 0;
+
+    QString title;
+
+    if (session) {
+        title.append(session->name());
+        if (doc) title.append(": ");
+    }
+
+    if (doc) {
+        if (!doc->filePath().isEmpty()) {
+            QFileInfo info = QFileInfo(doc->filePath());
+            QString pathString = info.dir().path();
+
+            QString homePath = QDir::homePath();
+            if (pathString.startsWith(homePath))
+                pathString.replace(0, homePath.size(), QString("~"));
+
+            QString titleString = QString("%1 (%2)").arg(info.fileName(), pathString);
+
+            title.append( titleString  );
+
+            setWindowFilePath(doc->filePath());
+	} else {
+            title.append( tr("Untitled") );
+            setWindowFilePath("");
+	}
+    } else {
+            setWindowFilePath("");
+    }
+
+    if (!title.isEmpty())
+        title.append(" - ");
+
+    title.append("SuperCollider IDE");
+
+    setWindowTitle(title);
+}
+
+void MainWindow::toggleFullScreen()
+{
+    if (isFullScreen()) {
+        setWindowState(windowState() & ~Qt::WindowFullScreen);
+
+        updateClockWidget(false);
+    } else {
+        setWindowState(windowState() | Qt::WindowFullScreen);
+
+        updateClockWidget(true);
+    }
+}
+
+void MainWindow::updateClockWidget(bool isFullScreen)
+{
+    if (!isFullScreen) {
+        if (mClockLabel) {
+            delete mClockLabel;
+            mClockLabel = NULL;
+        }
+    } else {
+        if (mClockLabel == NULL) {
+            mClockLabel = new StatusClockLabel(this);
+            statusBar()->insertWidget(0, mClockLabel);
+        }
+    }
+}
+
+void MainWindow::openSession(const QString &sessionName)
+{
+    mMain->sessionManager()->openSession( sessionName );
+}
+
+void MainWindow::lookupImplementationForCursor()
+{
+    QWidget * focussedWidget = QApplication::focusWidget();
+
+    int indexOfMethod = focussedWidget->metaObject()->indexOfMethod("openDefinition()");
+    if (indexOfMethod != -1)
+        QMetaObject::invokeMethod( focussedWidget, "openDefinition", Qt::DirectConnection );
+}
+
+void MainWindow::lookupImplementation()
+{
+    LookupDialog dialog(mEditors);
+    dialog.exec();
+}
+
+void MainWindow::lookupReferencesForCursor()
+{
+    QWidget * focussedWidget = QApplication::focusWidget();
+
+    int indexOfMethod = focussedWidget->metaObject()->indexOfMethod("findReferences()");
+    if (indexOfMethod != -1)
+        QMetaObject::invokeMethod( focussedWidget, "findReferences", Qt::DirectConnection );
+}
+
+void MainWindow::lookupReferences()
+{
+    ReferencesDialog dialog(parentWidget());
+    dialog.exec();
+}
+
+
+void MainWindow::showStatusMessage( QString const & string )
+{
+    mStatusBar->showMessage(string, 3000);
+}
+
+void MainWindow::applySettings( Settings::Manager * settings )
+{
+    mPostDocklet->mPostWindow->applySettings(settings);
+    mHelpBrowserDocklet->browser()->applySettings(settings);
+    mCmdLine->applySettings(settings);
+}
+
+void MainWindow::storeSettings( Settings::Manager * settings )
+{
+    mPostDocklet->mPostWindow->storeSettings(settings);
+}
+
+void MainWindow::updateSessionsMenu()
+{
+    mSessionsMenu->clear();
+    QStringList sessions = mMain->sessionManager()->availableSessions();
+    foreach (const QString & session, sessions)
+        mSessionsMenu->addAction( session );
+}
+
+void MainWindow::showSwitchSessionDialog()
+{
+    SessionSwitchDialog * dialog = new SessionSwitchDialog(this);
+    int result = dialog->exec();
+
+    if (result == QDialog::Accepted)
+        openSession(dialog->activeElement());
+
+    delete dialog;
+}
+
+void MainWindow::showAbout()
+{
+    QString aboutString =
+            "<h3>SuperCollider %1</h3>"
+            "© James McCartney and others.<br>"
+            "<h3>SuperCollider IDE</h3>"
+            "© Jakob Leben, Tim Blechmann and others.<br>"
+            "Development partially funded by Kiberpipa."
+            ;
+    aboutString = aboutString.arg("3.6");
+
+    QMessageBox::about(this, tr("About SuperCollider IDE"), aboutString);
+}
+
+void MainWindow::showAboutQT()
+{
+    QMessageBox::aboutQt(this);
+}
+
+void MainWindow::toggleInterpreterActions(bool enabled)
+{
+    mEditors->action(MultiEditor::EvaluateCurrentDocument)->setEnabled(enabled);
+    mEditors->action(MultiEditor::EvaluateLine)->setEnabled(enabled);
+    mEditors->action(MultiEditor::EvaluateRegion)->setEnabled(enabled);
+}
+
+
+void MainWindow::showCmdLine()
+{
+    mToolBox->setCurrentWidget( mCmdLine );
+    mToolBox->show();
+
+    mCmdLine->setFocus(Qt::OtherFocusReason);
+}
+
+void MainWindow::showGoToLineTool()
+{
+    GenericCodeEditor *editor = mEditors->currentEditor();
+    mGoToLineTool->setValue( editor ? editor->textCursor().blockNumber() + 1 : 0 );
+
+    mToolBox->setCurrentWidget( mGoToLineTool );
+    mToolBox->show();
+
+    mGoToLineTool->setFocus();
+}
+
+void MainWindow::showFindTool()
+{
+    mFindReplaceTool->setMode( TextFindReplacePanel::Find );
+    mFindReplaceTool->initiate();
+
+    mToolBox->setCurrentWidget( mFindReplaceTool );
+    mToolBox->show();
+
+    mFindReplaceTool->setFocus(Qt::OtherFocusReason);
+}
+
+void MainWindow::showReplaceTool()
+{
+    mFindReplaceTool->setMode( TextFindReplacePanel::Replace );
+    mFindReplaceTool->initiate();
+
+    mToolBox->setCurrentWidget( mFindReplaceTool );
+    mToolBox->show();
+
+    mFindReplaceTool->setFocus(Qt::OtherFocusReason);
+}
+
+void MainWindow::hideToolBox()
+{
+    mToolBox->hide();
+    GenericCodeEditor *editor = mEditors->currentEditor();
+    if (editor) {
+        // This slot is mapped to Escape, so also clear highlighting
+        // whenever invoked:
+        editor->clearSearchHighlighting();
+        if (!editor->hasFocus())
+            editor->setFocus(Qt::OtherFocusReason);
+    }
+}
+
+void MainWindow::showSettings()
+{
+    Settings::Dialog dialog(mMain->settings());
+    dialog.resize(700,400);
+    int result = dialog.exec();
+    if( result == QDialog::Accepted )
+        mMain->applySettings();
+}
+
+
+void MainWindow::lookupDocumentation()
+{
+    PopupTextInput * dialog = new PopupTextInput(tr("Look up Documentation For"), this);
+
+    bool success = dialog->exec();
+    if (success)
+        Main::openDocumentation(dialog->textValue());
+
+    delete dialog;
+}
+
+void MainWindow::lookupDocumentationForCursor()
+{
+    QWidget * focussedWidget = QApplication::focusWidget();
+
+    bool documentationOpened = false;
+
+    int indexOfMethod = focussedWidget->metaObject()->indexOfMethod("openDocumentation()");
+    if (indexOfMethod != -1)
+        QMetaObject::invokeMethod( focussedWidget, "openDocumentation", Qt::DirectConnection,
+                                   Q_RETURN_ARG(bool, documentationOpened) );
+
+    if (!documentationOpened)
+        openHelp();
+}
+
+void MainWindow::openHelp()
+{
+    if (mHelpBrowserDocklet->browser()->url().isEmpty())
+        mHelpBrowserDocklet->browser()->goHome();
+    mHelpBrowserDocklet->raiseAndFocus();
+}
+
+void MainWindow::dragEnterEvent( QDragEnterEvent * event )
+{
+    if (event->mimeData()->hasUrls()) {
+        foreach (QUrl url, event->mimeData()->urls()) {
+            if (url.scheme() == QString("file")) { // LATER: use isLocalFile
+                // LATER: check mime type ?
+                event->acceptProposedAction();
+                return;
+            }
+        }
+    }
+}
+
+bool MainWindow::checkFileExtension( const QString & fpath ) {
+    if (fpath.endsWith(".sc") || fpath.endsWith(".scd") || fpath.endsWith(".txt") ||
+        fpath.endsWith(".schelp")) {
+        return true;
+    }
+    int ret = QMessageBox::question(this, tr("Open binary file?"), fpath +
+                tr("\n\nThe file has an unrecognized extension. It may be a binary file. Would you still like to open it?"),
+                QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel);
+    if(ret != QMessageBox::Ok)
+        return false;
+
+    return true;
+}
+
+void MainWindow::dropEvent( QDropEvent * event )
+{
+    const QMimeData * data = event->mimeData();
+    if (data->hasUrls()) {
+        foreach (QUrl url, data->urls()) {
+            if (url.scheme() == QString("file")) { // LATER: use isLocalFile
+                QString fpath = url.toLocalFile();
+                if (MainWindow::checkFileExtension(fpath))
+                    Main::documentManager()->open(fpath);
+            }
+        }
+    }
+}
+
+//////////////////////////// StatusLabel /////////////////////////////////
+
+StatusLabel::StatusLabel(QWidget *parent) : QLabel(parent)
+{
+    setAutoFillBackground(true);
+    setMargin(3);
+    setAlignment(Qt::AlignCenter);
+    setBackground(Qt::black);
+    setTextColor(Qt::white);
+
+    QFont font("Monospace");
+    font.setStyleHint(QFont::Monospace);
+    font.setBold(true);
+    setFont(font);
+}
+
+void StatusLabel::setBackground(const QBrush & brush)
+{
+    QPalette plt(palette());
+    plt.setBrush(QPalette::Window, brush);
+    setPalette(plt);
+}
+
+void StatusLabel::setTextColor(const QColor & color)
+{
+    QPalette plt(palette());
+    plt.setColor(QPalette::WindowText, color);
+    setPalette(plt);
+}
+
+//////////////////////////// StatusClockLabel ////////////////////////////
+
+StatusClockLabel::StatusClockLabel(QWidget * parent):
+    StatusLabel(parent)
+{
+    setTextColor(Qt::green);
+    mTimerId = startTimer(1000);
+    updateTime();
+}
+
+StatusClockLabel::~StatusClockLabel()
+{
+    killTimer(mTimerId);
+}
+
+void StatusClockLabel::timerEvent(QTimerEvent *e)
+{
+    if (e->timerId() == mTimerId)
+        updateTime();
+}
+
+void StatusClockLabel::updateTime()
+{
+    setText(QTime::currentTime().toString());
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/main_window.hpp b/editors/sc-ide/widgets/main_window.hpp
new file mode 100644
index 0000000..f95d108
--- /dev/null
+++ b/editors/sc-ide/widgets/main_window.hpp
@@ -0,0 +1,250 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_MAIN_WINDOW_HPP_INCLUDED
+#define SCIDE_WIDGETS_MAIN_WINDOW_HPP_INCLUDED
+
+#include <QLabel>
+#include <QMainWindow>
+#include <QProcess>
+#include <QSignalMapper>
+#include <QStatusBar>
+
+namespace ScIDE {
+
+class Main;
+class MultiEditor;
+class ToolBox;
+class TextFindReplacePanel;
+class GoToLineTool;
+class PostDocklet;
+class DocumentsDocklet;
+class HelpBrowserDocklet;
+class CmdLine;
+class Document;
+class DocumentsDialog;
+struct Session;
+class StatusLabel;
+class StatusClockLabel;
+
+namespace Settings { class Manager; }
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+
+    enum ActionRole {
+        // File
+        Quit = 0,
+        DocNew,
+        DocOpen,
+        DocOpenStartup,
+        DocSave,
+        DocSaveAs,
+        DocSaveAll,
+        DocClose,
+        DocCloseAll,
+        DocReload,
+        ClearRecentDocs,
+
+        // Sessions
+        NewSession,
+        SaveSessionAs,
+        ManageSessions,
+        OpenSessionSwitchDialog,
+
+        // Edit
+        Find,
+        Replace,
+
+        // View
+        ShowCmdLine,
+        ShowGoToLineTool,
+        CloseToolBox,
+        ShowFullScreen,
+        FocusPostWindow,
+
+        // Settings
+        ShowSettings,
+
+        // Language
+        LookupImplementation,
+        LookupImplementationForCursor,
+        LookupReferences,
+        LookupReferencesForCursor,
+
+        // Help
+        Help,
+        LookupDocumentationForCursor,
+        LookupDocumentation,
+        ShowAbout,
+        ShowAboutQT,
+
+        ActionCount
+    };
+
+    explicit MainWindow(Main *);
+
+    QAction *action( ActionRole );
+
+    bool quit();
+
+    void saveWindowState();
+    void restoreWindowState();
+    void focusCodeEditor();
+    bool promptSaveDocs();
+
+    HelpBrowserDocklet * helpBrowserDocklet() { return mHelpBrowserDocklet; }
+
+    static MainWindow *instance() { return mInstance; }
+
+    static bool close( Document * );
+    static bool save( Document *, bool forceChoose = false );
+    static bool reload( Document * );
+
+public Q_SLOTS:
+    void newSession();
+    void saveCurrentSessionAs();
+    void openSessionsDialog();
+
+    void newDocument();
+    void openDocument();
+    void openStartupFile();
+    void saveDocument();
+    void saveDocumentAs();
+    void saveAllDocuments();
+    void reloadDocument();
+    void closeDocument();
+    void closeAllDocuments();
+
+    void showCmdLine();
+    void showFindTool();
+    void showReplaceTool();
+    void showGoToLineTool();
+    void hideToolBox();
+
+    void showSettings();
+
+signals:
+    void evaluateCode( const QString &, bool silent = true );
+
+public Q_SLOTS:
+    void showStatusMessage( QString const & string );
+
+private Q_SLOTS:
+    void switchSession( Session *session );
+    void saveSession( Session *session );
+    void onInterpreterStateChanged( QProcess::ProcessState );
+    void onServerStatusReply(int ugens, int synths, int groups, int synthDefs, float avgCPU, float peakCPU);
+    void onServerRunningChanged( bool running, QString const & hostName, int port );
+    void onQuit();
+    void onCurrentDocumentChanged( Document * );
+    void onDocumentChangedExternally( Document * );
+    void onDocDialogFinished();
+    void updateRecentDocsMenu();
+    void onRecentDocAction( QAction * );
+    void onOpenSessionAction( QAction * );
+    void updateWindowTitle();
+    void toggleFullScreen();
+    void lookupImplementation();
+    void lookupImplementationForCursor();
+    void lookupReferences();
+    void lookupReferencesForCursor();
+    void openHelp();
+    void lookupDocumentationForCursor();
+    void lookupDocumentation();
+    void applySettings( Settings::Manager * );
+    void storeSettings( Settings::Manager * );
+    void showSwitchSessionDialog();
+    void showAbout();
+    void showAboutQT();
+
+protected:
+    virtual void closeEvent(QCloseEvent *event);
+    virtual void dragEnterEvent( QDragEnterEvent * );
+    virtual void dropEvent( QDropEvent * );
+
+private:
+    void createActions();
+    void createMenus();
+    template <class T> void saveWindowState(T * settings);
+    template <class T> void restoreWindowState(T * settings);
+    void updateSessionsMenu();
+    void updateClockWidget( bool isFullScreen );
+    void openSession( QString const & sessionName );
+    bool checkFileExtension( const QString & fpath );
+    void toggleInterpreterActions( bool enabled);
+
+    Main *mMain;
+
+    QAction * mActions[ActionCount];
+    QMenu * mRecentDocsMenu;
+    QMenu * mSessionsMenu;
+
+    MultiEditor *mEditors;
+
+    // Tools
+    ToolBox *mToolBox;
+    CmdLine *mCmdLine;
+    GoToLineTool *mGoToLineTool;
+    TextFindReplacePanel *mFindReplaceTool;
+
+    // Status bar
+    QStatusBar  *mStatusBar;
+    StatusLabel *mLangStatus;
+    StatusLabel *mServerStatus;
+    StatusClockLabel *mClockLabel;
+
+    // Docks
+    PostDocklet * mPostDocklet;
+    DocumentsDocklet *mDocumentsDocklet;
+    HelpBrowserDocklet *mHelpBrowserDocklet;
+
+    QSignalMapper mCodeEvalMapper;
+    DocumentsDialog * mDocDialog;
+
+    static MainWindow *mInstance;
+};
+
+class StatusLabel : public QLabel
+{
+public:
+    StatusLabel(QWidget *parent = 0);
+    void setBackground(const QBrush &);
+    void setTextColor(const QColor &);
+};
+
+class StatusClockLabel : public StatusLabel
+{
+public:
+    StatusClockLabel (QWidget * parent = 0);
+    ~StatusClockLabel();
+
+private:
+    void timerEvent(QTimerEvent *);
+    void updateTime();
+    int mTimerId;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/widgets/multi_editor.cpp b/editors/sc-ide/widgets/multi_editor.cpp
new file mode 100644
index 0000000..0e9d6fb
--- /dev/null
+++ b/editors/sc-ide/widgets/multi_editor.cpp
@@ -0,0 +1,1051 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "multi_editor.hpp"
+#include "editor_box.hpp"
+#include "main_window.hpp"
+#include "lookup_dialog.hpp"
+#include "code_editor/sc_editor.hpp"
+#include "util/multi_splitter.hpp"
+#include "../core/doc_manager.hpp"
+#include "../core/sig_mux.hpp"
+#include "../core/main.hpp"
+#include "../core/sc_process.hpp"
+#include "../core/session_manager.hpp"
+
+#include "yaml-cpp/node.h"
+#include "yaml-cpp/parser.h"
+
+#include <QApplication>
+#include <QDebug>
+#include <QDialog>
+#include <QFileInfo>
+#include <QHBoxLayout>
+#include <QHeaderView>
+#include <QListView>
+#include <QMenu>
+#include <QPainter>
+#include <QStandardItemModel>
+#include <QShortcut>
+#include <QStyle>
+#include <QTreeWidget>
+#include <QVBoxLayout>
+
+
+namespace ScIDE {
+
+class DocumentSelectPopUp : public QDialog
+{
+public:
+    DocumentSelectPopUp(const CodeEditorBox::History & history, QWidget * parent):
+        QDialog(parent, Qt::Popup)
+    {
+        mModel = new QStandardItemModel(this);
+        populateModel(history);
+
+        mListView = new QListView();
+        mListView->setModel(mModel);
+        mListView->setFrameShape(QFrame::NoFrame);
+
+        QHBoxLayout *layout = new QHBoxLayout(this);
+        layout->addWidget(mListView);
+        layout->setContentsMargins(1,1,1,1);
+
+        connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(accept()));
+
+        mListView->setFocus(Qt::OtherFocusReason);
+
+        QModelIndex nextIndex = mModel->index(1, 0);
+        mListView->setCurrentIndex(nextIndex);
+
+        mListView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+    }
+
+    Document * exec( const QPoint & pos )
+    {
+        move(pos);
+        if (QDialog::exec())
+            return currentDocument();
+        else
+            return 0;
+    }
+
+private:
+    bool event(QEvent * event)
+    {
+        if (event->type() == QEvent::ShortcutOverride) {
+            event->accept();
+            return true;
+        }
+        return QWidget::event(event);
+    }
+
+    void keyReleaseEvent (QKeyEvent * ke)
+    {
+        // adapted from qtcreator
+        if (ke->modifiers() == 0
+            /*HACK this is to overcome some event inconsistencies between platforms*/
+            || (ke->modifiers() == Qt::AltModifier
+                && (ke->key() == Qt::Key_Alt || ke->key() == -1))) {
+            ke->accept();
+            accept();
+        }
+        QDialog::keyReleaseEvent(ke);
+    }
+
+    void keyPressEvent(QKeyEvent * ke)
+    {
+        switch (ke->key()) {
+        case Qt::Key_Down:
+        case Qt::Key_Tab:
+            cycleDown();
+            ke->accept();
+            return;
+
+        case Qt::Key_Up:
+        case Qt::Key_Backtab:
+            cycleUp();
+            ke->accept();
+            return;
+
+        case Qt::Key_Escape:
+            reject();
+            return;
+
+        default:
+            ;
+        }
+
+        QDialog::keyPressEvent(ke);
+    }
+
+    void paintEvent( QPaintEvent * )
+    {
+        QPainter painter(this);
+        painter.setBrush(Qt::NoBrush);
+        painter.setPen(palette().color(QPalette::Dark));
+        painter.drawRect(rect().adjusted(0,0,-1,-1));
+    }
+
+    void cycleDown()
+    {
+        int row = mListView->currentIndex().row() + 1;
+        if (!mModel->hasIndex(row, 0))
+            row = 0;
+
+        QModelIndex nextIndex = mModel->index(row, 0);
+        mListView->setCurrentIndex(nextIndex);
+    }
+
+    void cycleUp()
+    {
+        int row = mListView->currentIndex().row() - 1;
+        if (!mModel->hasIndex(row, 0))
+            row = mModel->rowCount() - 1;
+
+        QModelIndex nextIndex = mModel->index(row, 0);
+        mListView->setCurrentIndex(nextIndex);
+    }
+
+    Document * currentDocument()
+    {
+        QStandardItem * currentItem = mModel->itemFromIndex(mListView->currentIndex());
+        return currentItem ? currentItem->data().value<Document*>()
+                           : NULL;
+    }
+
+    void populateModel( const CodeEditorBox::History & history )
+    {
+        QList<Document*> displayDocuments;
+        foreach(GenericCodeEditor *editor, history)
+            displayDocuments << editor->document();
+
+        QList<Document*> managerDocuments =  Main::documentManager()->documents();
+        foreach(Document *document, managerDocuments)
+            if (!displayDocuments.contains(document))
+                displayDocuments << document;
+
+        foreach (Document * document, displayDocuments) {
+            QStandardItem * item = new QStandardItem(document->title());
+            item->setData(QVariant::fromValue(document));
+            mModel->appendRow(item);
+        }
+    }
+
+    QListView *mListView;
+    QStandardItemModel *mModel;
+};
+
+MultiEditor::MultiEditor( Main *main, QWidget * parent ) :
+    QWidget(parent),
+    mEditorSigMux(new SignalMultiplexer(this)),
+    mBoxSigMux(new SignalMultiplexer(this)),
+    mDocModifiedIcon( QApplication::style()->standardIcon(QStyle::SP_DialogSaveButton) )
+{
+    mTabs = new QTabBar;
+    mTabs->setDocumentMode(true);
+    mTabs->setTabsClosable(true);
+    mTabs->setMovable(true);
+    mTabs->setUsesScrollButtons(true);
+    mTabs->setDrawBase(true);
+    mTabs->setElideMode(Qt::ElideNone);
+
+    CodeEditorBox *defaultBox = newBox();
+
+    mSplitter = new MultiSplitter();
+    mSplitter->addWidget(defaultBox);
+
+    QVBoxLayout *l = new QVBoxLayout;
+    l->setContentsMargins(0,0,0,0);
+    l->setSpacing(0);
+    l->addWidget(mTabs);
+    l->addWidget(mSplitter);
+    setLayout(l);
+
+    makeSignalConnections();
+
+    mBoxSigMux->connect(SIGNAL(currentChanged(GenericCodeEditor*)),
+                        this, SLOT(onCurrentEditorChanged(GenericCodeEditor*)));
+
+    connect( &mDocModifiedSigMap, SIGNAL(mapped(QObject*)), this, SLOT(onDocModified(QObject*)) );
+
+    createActions();
+
+    setCurrentBox( defaultBox ); // will updateActions();
+}
+
+void MultiEditor::makeSignalConnections()
+{
+    DocumentManager *docManager = Main::documentManager();
+
+    connect(docManager, SIGNAL(opened(Document*, int, int)),
+            this, SLOT(onOpen(Document*, int, int)));
+    connect(docManager, SIGNAL(closed(Document*)),
+            this, SLOT(onClose(Document*)));
+    connect(docManager, SIGNAL(saved(Document*)),
+            this, SLOT(update(Document*)));
+    connect(docManager, SIGNAL(showRequest(Document*, int, int)),
+            this, SLOT(show(Document*, int, int)));
+
+    connect(mTabs, SIGNAL(currentChanged(int)),
+            this, SLOT(onCurrentTabChanged(int)));
+    connect(mTabs, SIGNAL(tabCloseRequested(int)),
+            this, SLOT(onCloseRequest(int)));
+}
+
+void MultiEditor::breakSignalConnections()
+{
+    DocumentManager *docManager = Main::documentManager();
+    docManager->disconnect(this);
+    mTabs->disconnect(this);
+}
+
+void MultiEditor::createActions()
+{
+    Settings::Manager *settings = Main::settings();
+
+    QAction * action;
+    const QString editorCategory(tr("Text Editor"));
+
+    // Edit
+
+    mActions[Undo] = action = new QAction(
+        QIcon::fromTheme("edit-undo"), tr("&Undo"), this);
+    action->setShortcut(tr("Ctrl+Z", "Undo"));
+    action->setStatusTip(tr("Undo last editing action"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(undo()));
+    mEditorSigMux->connect(SIGNAL(undoAvailable(bool)), action, SLOT(setEnabled(bool)));
+    settings->addAction( action, "editor-undo", editorCategory);
+
+    mActions[Redo] = action = new QAction(
+        QIcon::fromTheme("edit-redo"), tr("Re&do"), this);
+    action->setShortcut(tr("Ctrl+Shift+Z", "Redo"));
+    action->setStatusTip(tr("Redo next editing action"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(redo()));
+    mEditorSigMux->connect(SIGNAL(redoAvailable(bool)), action, SLOT(setEnabled(bool)));
+    settings->addAction( action, "editor-redo", editorCategory);
+
+    mActions[Cut] = action = new QAction(
+        QIcon::fromTheme("edit-cut"), tr("Cu&t"), this);
+    action->setShortcut(tr("Ctrl+X", "Cut"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    action->setStatusTip(tr("Cut text to clipboard"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(cut()));
+    mEditorSigMux->connect(SIGNAL(copyAvailable(bool)), action, SLOT(setEnabled(bool)));
+    settings->addAction( action, "editor-cut", editorCategory);
+
+    mActions[Copy] = action = new QAction(
+        QIcon::fromTheme("edit-copy"), tr("&Copy"), this);
+    action->setShortcut(tr("Ctrl+C", "Copy"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    action->setStatusTip(tr("Copy text to clipboard"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(copy()));
+    mEditorSigMux->connect(SIGNAL(copyAvailable(bool)), action, SLOT(setEnabled(bool)));
+    settings->addAction( action, "editor-copy", editorCategory);
+
+    mActions[Paste] = action = new QAction(
+        QIcon::fromTheme("edit-paste"), tr("&Paste"), this);
+    action->setShortcut(tr("Ctrl+V", "Paste"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    action->setStatusTip(tr("Paste text from clipboard"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(paste()));
+    settings->addAction( action, "editor-paste", editorCategory);
+
+    mActions[IndentLineOrRegion] = action = new QAction(
+        QIcon::fromTheme("format-indent-line"), tr("Autoindent Line or Region"), this);
+    action->setStatusTip(tr("Autoindent Line or Region"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(indent()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-indent-auto", editorCategory);
+
+    mActions[TriggerAutoCompletion] = action = new QAction(tr("Trigger Autocompletion"), this);
+    action->setStatusTip(tr("Suggest possible completions of text at cursor"));
+    action->setShortcut(tr("Ctrl+Space", "Trigger Autocompletion"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(triggerAutoCompletion()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-autocompletion", editorCategory);
+
+    mActions[TriggerMethodCallAid] = action = new QAction(tr("Trigger Method Call Aid"), this);
+    action->setStatusTip(tr("Show arguments for currently typed method call"));
+    action->setShortcut(tr("Ctrl+Shift+Space", "Trigger Method Call Aid"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(triggerMethodCallAid()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-method-call-assist", editorCategory);
+
+    mActions[ToggleComment] = action = new QAction(
+        QIcon::fromTheme("edit-comment"), tr("Toggle &Comment"), this);
+    action->setShortcut(tr("Ctrl+/", "Toggle Comment"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    action->setStatusTip(tr("Toggle Comment"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(toggleComment()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-toggle-comment", editorCategory);
+
+    mActions[ToggleOverwriteMode] = action = new QAction(
+        QIcon::fromTheme("edit-overwrite"), tr("Toggle &Overwrite Mode"), this);
+    action->setShortcut(tr("Insert", "Toggle Overwrite Mode"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(toggleOverwriteMode()));
+    settings->addAction( action, "editor-toggle-overwrite", editorCategory);
+
+    mActions[CopyLineUp] = action = new QAction(
+        QIcon::fromTheme("edit-copylineup"), tr("Copy Line Up"), this);
+    action->setShortcut(tr("Ctrl+Alt+Up", "Copy Line Up"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(copyLineUp()));
+    settings->addAction( action, "editor-copy-line-up", editorCategory);
+
+    mActions[CopyLineDown] = action = new QAction(
+        QIcon::fromTheme("edit-copylinedown"), tr("Copy Line Down"), this);
+    action->setShortcut(tr("Ctrl+Alt+Down", "Copy Line Up"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(copyLineDown()));
+    settings->addAction( action, "editor-copy-line-down", editorCategory);
+
+    mActions[MoveLineUp] = action = new QAction(
+        QIcon::fromTheme("edit-movelineup"), tr("Move Line Up"), this);
+    action->setShortcut(tr("Ctrl+Shift+Up", "Move Line Up"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(moveLineUp()));
+    settings->addAction( action, "editor-move-line-up", editorCategory);
+
+    mActions[MoveLineDown] = action = new QAction(
+        QIcon::fromTheme("edit-movelinedown"), tr("Move Line Down"), this);
+    action->setShortcut(tr("Ctrl+Shift+Down", "Move Line Up"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(moveLineDown()));
+    settings->addAction( action, "editor-move-line-down", editorCategory);
+
+    mActions[GotoPreviousBlock] = action = new QAction(
+        QIcon::fromTheme("edit-gotopreviousblock"), tr("Go to Previous Block"), this);
+    action->setShortcut(tr("Ctrl+[", "Go to Previous Block"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(gotoPreviousBlock()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-go-to-prev-block", editorCategory);
+
+    mActions[GotoNextBlock] = action = new QAction(
+        QIcon::fromTheme("edit-gotonextblock"), tr("Go to Next Block"), this);
+    action->setShortcut(tr("Ctrl+]", "Go to Next Block"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(gotoNextBlock()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-go-to-next-block", editorCategory);
+
+    mActions[GotoPreviousRegion] = action = new QAction(
+        QIcon::fromTheme("edit-gotopreviousregion"), tr("Go to Previous Region"), this);
+    action->setShortcut(tr("Alt+[", "Go to Previous Region"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(gotoPreviousRegion()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-go-to-prev-region", editorCategory);
+
+    mActions[GotoNextRegion] = action = new QAction(
+        QIcon::fromTheme("edit-gotonextregion"), tr("Go to Next Region"), this);
+    action->setShortcut(tr("Alt+]", "Go to Next Region"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(gotoNextRegion()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-go-to-next-region", editorCategory);
+
+    mActions[GotoPreviousEmptyLine] = action = new QAction( tr("Go to Previous Empty Line"), this);
+    action->setShortcut(tr("Ctrl+Up", "Go to Previous Empty Line"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(gotoPreviousEmptyLine()));
+    settings->addAction( action, "editor-go-to-prev-empty-line", editorCategory);
+
+    mActions[GotoNextEmptyLine] = action = new QAction( tr("Go to Next Empty Line"), this);
+    action->setShortcut(tr("Ctrl+Down", "Go to Next Empty Line"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(gotoNextEmptyLine()));
+    settings->addAction( action, "editor-go-to-next-empty-line", editorCategory);
+
+    mActions[SelectRegion] = action = new QAction( tr("Select Region"), this);
+    action->setShortcut(tr("Ctrl+Shift+R", "Select Region"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(selectCurrentRegion()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-select-region", editorCategory);
+
+    // View
+
+    mActions[EnlargeFont] = action = new QAction(
+        QIcon::fromTheme("zoom-in"), tr("&Enlarge Font"), this);
+    action->setShortcut(tr("Ctrl++", "Enlarge font"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    action->setStatusTip(tr("Increase displayed font size"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(zoomIn()));
+    settings->addAction( action, "editor-enlarge-font", editorCategory);
+
+    mActions[ShrinkFont] = action = new QAction(
+        QIcon::fromTheme("zoom-out"), tr("&Shrink Font"), this);
+    action->setShortcut( tr("Ctrl+-", "Shrink font"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    action->setStatusTip(tr("Decrease displayed font size"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(zoomOut()));
+    settings->addAction( action, "editor-shrink-font", editorCategory);
+
+    mActions[ResetFontSize] = action = new QAction(
+        QIcon::fromTheme("zoom-reset"), tr("&Reset Font Size"), this);
+    action->setShortcut( tr("Ctrl+0", "Reset font"));
+    action->setStatusTip(tr("Reset displayed font size"));
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(resetFontSize()));
+    settings->addAction( action, "editor-reset-font-size", editorCategory);
+
+    mActions[ShowWhitespace] = action = new QAction(tr("Show Spaces and Tabs"), this);
+    action->setCheckable(true);
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered(bool)), SLOT(setShowWhitespace(bool)));
+    settings->addAction( action, "editor-toggle-show-whitespace", editorCategory);
+
+    mActions[IndentWithSpaces] = action = new QAction(tr("Use Spaces for Indentation"), this);
+    action->setCheckable(true);
+    action->setStatusTip( tr("Indent with spaces instead of tabs") );
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered(bool)), SLOT(setSpaceIndent(bool)),
+                           SignalMultiplexer::ConnectionOptional );
+    settings->addAction( action, "editor-toggle-space-indent", editorCategory );
+
+    mActions[NextDocument] = action = new QAction(tr("Next Document"), this);
+#ifndef Q_OS_MAC
+    action->setShortcut( tr("Alt+Right", "Next Document"));
+#else
+    action->setShortcut( tr("Ctrl+Alt+Right", "Next Document"));
+#endif
+    connect(action, SIGNAL(triggered()), this, SLOT(showNextDocument()));
+    settings->addAction( action, "editor-document-next", editorCategory);
+
+    mActions[PreviousDocument] = action = new QAction(tr("Previous Document"), this);
+#ifndef Q_OS_MAC
+    action->setShortcut( tr("Alt+Left", "Previous Document"));
+#else
+    action->setShortcut( tr("Ctrl+Alt+Left", "Previous Document"));
+#endif
+    connect(action, SIGNAL(triggered()), this, SLOT(showPreviousDocument()));
+    settings->addAction( action, "editor-document-previous", editorCategory);
+
+    mActions[SwitchDocument] = action = new QAction(tr("Switch Document"), this);
+#ifndef Q_OS_MAC
+    action->setShortcut( tr("Ctrl+Tab", "Switch Document"));
+#else
+    action->setShortcut( tr("Meta+Tab", "Switch Document"));
+#endif
+    connect(action, SIGNAL(triggered()), this, SLOT(switchDocument()));
+    settings->addAction( action, "editor-document-switch", editorCategory);
+
+    mActions[SplitHorizontally] = action = new QAction(tr("Split To Right"), this);
+    //action->setShortcut( tr("Ctrl+P, 3", "Split To Right"));
+    connect(action, SIGNAL(triggered()), this, SLOT(splitHorizontally()));
+    settings->addAction( action, "editor-split-right", editorCategory);
+
+    mActions[SplitVertically] = action = new QAction(tr("Split To Bottom"), this);
+    //action->setShortcut( tr("Ctrl+P, 2", "Split To Bottom"));
+    connect(action, SIGNAL(triggered()), this, SLOT(splitVertically()));
+    settings->addAction( action, "editor-split-bottom", editorCategory);
+
+    mActions[RemoveCurrentSplit] = action = new QAction(tr("Remove Current Split"), this);
+    //action->setShortcut( tr("Ctrl+P, 1", "Remove Current Split"));
+    connect(action, SIGNAL(triggered()), this, SLOT(removeCurrentSplit()));
+    settings->addAction( action, "editor-split-remove", editorCategory);
+
+    mActions[RemoveAllSplits] = action = new QAction(tr("Remove All Splits"), this);
+    //action->setShortcut( tr("Ctrl+P, 0", "Remove All Splits"));
+    connect(action, SIGNAL(triggered()), this, SLOT(removeAllSplits()));
+    settings->addAction( action, "editor-split-remove-all", editorCategory);
+
+    // Language
+
+    mActions[EvaluateCurrentDocument] = action = new QAction(
+        QIcon::fromTheme("media-playback-start"), tr("Evaluate &File"), this);
+    action->setStatusTip(tr("Evaluate current File"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(evaluateDocument()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-eval-file", editorCategory);
+
+    mActions[EvaluateRegion] = action = new QAction(
+    QIcon::fromTheme("media-playback-start"), tr("&Evaluate Selection, Line or Region"), this);
+    action->setShortcut(tr("Ctrl+Return", "Evaluate region"));
+    action->setStatusTip(tr("Evaluate current region"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(evaluateRegion()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-eval-smart", editorCategory);
+
+    mActions[EvaluateLine] = action = new QAction(
+    QIcon::fromTheme("media-playback-start"), tr("&Evaluate Selection or Line"), this);
+    action->setShortcut(tr("Shift+Return", "Evaluate selection/line"));
+    action->setStatusTip(tr("Evaluate current selection/line"));
+    action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(evaluateLine()),
+                           SignalMultiplexer::ConnectionOptional);
+    settings->addAction( action, "editor-eval-line", editorCategory);
+
+    // These actions are not added to any menu, so they have to be added
+    // at least to this widget, in order for the shortcuts to always respond:
+    addAction(mActions[TriggerAutoCompletion]);
+    addAction(mActions[TriggerMethodCallAid]);
+    addAction(mActions[SwitchDocument]);
+
+    // These actions have to be added because to the widget because they have
+    // Qt::WidgetWithChildrenShortcut context:
+    addAction(mActions[Cut]);
+    addAction(mActions[Copy]);
+    addAction(mActions[Paste]);
+    addAction(mActions[EnlargeFont]);
+    addAction(mActions[ShrinkFont]);
+    addAction(mActions[ShowWhitespace]);
+    addAction(mActions[IndentWithSpaces]);
+    addAction(mActions[EvaluateCurrentDocument]);
+    addAction(mActions[EvaluateRegion]);
+    addAction(mActions[EvaluateLine]);
+    addAction(mActions[ToggleComment]);
+    addAction(mActions[ToggleOverwriteMode]);
+    addAction(mActions[CopyLineUp]);
+    addAction(mActions[CopyLineDown]);
+    addAction(mActions[MoveLineUp]);
+    addAction(mActions[MoveLineDown]);
+    addAction(mActions[GotoPreviousBlock]);
+    addAction(mActions[GotoNextBlock]);
+    addAction(mActions[GotoPreviousRegion]);
+    addAction(mActions[GotoNextRegion]);
+    addAction(mActions[GotoPreviousEmptyLine]);
+    addAction(mActions[GotoNextEmptyLine]);
+    addAction(mActions[SelectRegion]);
+}
+
+void MultiEditor::updateActions()
+{
+    GenericCodeEditor *editor = currentEditor();
+    ScCodeEditor *scEditor = qobject_cast<ScCodeEditor*>(editor);
+    QTextDocument *doc = editor ? editor->textDocument() : 0;
+
+    mActions[Undo]->setEnabled( doc && doc->isUndoAvailable() );
+    mActions[Redo]->setEnabled( doc && doc->isRedoAvailable() );
+    mActions[Copy]->setEnabled( editor && editor->textCursor().hasSelection() );
+    mActions[Cut]->setEnabled( mActions[Copy]->isEnabled() );
+    mActions[Paste]->setEnabled( editor );
+    mActions[ToggleOverwriteMode]->setEnabled( editor );
+    mActions[CopyLineUp]->setEnabled( editor );
+    mActions[CopyLineDown]->setEnabled( editor );
+    mActions[MoveLineUp]->setEnabled( editor );
+    mActions[MoveLineDown]->setEnabled( editor );
+    mActions[GotoPreviousEmptyLine]->setEnabled( editor );
+    mActions[GotoNextEmptyLine]->setEnabled( editor );
+    mActions[EnlargeFont]->setEnabled( editor );
+    mActions[ShrinkFont]->setEnabled( editor );
+    mActions[ResetFontSize]->setEnabled( editor );
+    mActions[ShowWhitespace]->setEnabled( editor );
+    mActions[ShowWhitespace]->setChecked( editor && editor->showWhitespace() );
+    mActions[IndentWithSpaces]->setEnabled( scEditor );
+    mActions[IndentWithSpaces]->setChecked( scEditor && scEditor->spaceIndent() );
+
+    // ScLang-specific actions
+    bool editorIsScCodeEditor = qobject_cast<ScCodeEditor*>(editor); // NOOP at the moment, but
+    mActions[ToggleComment]->setEnabled( editor && editorIsScCodeEditor );
+    mActions[GotoPreviousBlock]->setEnabled( editor && editorIsScCodeEditor );
+    mActions[GotoNextBlock]->setEnabled( editor && editorIsScCodeEditor );
+    mActions[GotoPreviousRegion]->setEnabled( editor && editorIsScCodeEditor );
+    mActions[GotoNextRegion]->setEnabled( editor && editorIsScCodeEditor );
+    mActions[SelectRegion]->setEnabled( editor && editorIsScCodeEditor );
+    mActions[IndentLineOrRegion]->setEnabled( editor && editorIsScCodeEditor );
+
+    mActions[EvaluateCurrentDocument]->setEnabled( editor && editorIsScCodeEditor );
+    mActions[EvaluateRegion]->setEnabled( editor && editorIsScCodeEditor );
+    mActions[EvaluateLine]->setEnabled( editor && editorIsScCodeEditor );
+}
+
+static QVariantList saveBoxState( CodeEditorBox *box, const QList<Document*> & documentList )
+{
+    // save editors in reverse order - first one is last shown.
+    QVariantList boxData;
+    int idx = box->history().count();
+    while(idx--) {
+        GenericCodeEditor *editor = box->history()[idx];
+        if (!editor->document()->filePath().isEmpty()) {
+            int documentIndex = documentList.indexOf( editor->document() );
+            Q_ASSERT(documentIndex >= 0);
+            QVariantMap editorData;
+            editorData.insert("documentIndex", documentIndex);
+            editorData.insert("position", editor->textCursor().position());
+            boxData.append( editorData );
+        }
+    }
+    return boxData;
+}
+
+static QVariantMap saveSplitterState( QSplitter *splitter, const QList<Document*> & documentList )
+{
+    QVariantMap splitterData;
+
+    splitterData.insert( "state", splitter->saveState().toBase64() );
+
+    QVariantList childrenData;
+
+    int childCount = splitter->count();
+    for (int idx = 0; idx < childCount; idx++) {
+        QWidget *child = splitter->widget(idx);
+
+        CodeEditorBox *box = qobject_cast<CodeEditorBox*>(child);
+        if (box) {
+            QVariantList boxData = saveBoxState(box, documentList);
+            childrenData.append( QVariant(boxData) );
+            continue;
+        }
+
+        QSplitter *childSplitter = qobject_cast<QSplitter*>(child);
+        if (childSplitter) {
+            QVariantMap childSplitterData = saveSplitterState(childSplitter, documentList);
+            childrenData.append( QVariant(childSplitterData) );
+        }
+    }
+
+    splitterData.insert( "elements", childrenData );
+
+    return splitterData;
+}
+
+void MultiEditor::saveSession( Session *session )
+{
+    QList<Document*> documentList;
+
+    QVariantList tabsData;
+    int tabCount = mTabs->count();
+    for (int tabIdx = 0; tabIdx < tabCount; ++tabIdx) {
+        Document *doc = documentForTab(tabIdx);
+        documentList << doc;
+        tabsData << doc->filePath();
+    }
+
+    session->setValue( "documents", QVariant::fromValue(tabsData) );
+
+    session->remove( "editors" );
+    session->setValue( "editors", saveSplitterState(mSplitter, documentList) );
+}
+
+void MultiEditor::loadBoxState( CodeEditorBox *box,
+                                const QVariantList & data, const QList<Document*> & documentList )
+{
+    int docCount = documentList.count();
+    foreach( QVariant docVar, data )
+    {
+        QVariantMap docData = docVar.value<QVariantMap>();
+        int docIndex = docData.value("documentIndex").toInt();
+        int docPos = docData.value("position").toInt();
+        if (docIndex >= 0 && docIndex < docCount)
+            box->setDocument( documentList[docIndex], docPos );
+    }
+}
+
+void MultiEditor::loadSplitterState( QSplitter *splitter,
+                                     const QVariantMap & data, const QList<Document*> & documentList )
+{
+    QByteArray state = QByteArray::fromBase64( data.value("state").value<QByteArray>() );
+
+    QVariantList childrenData = data.value("elements").value<QVariantList>();
+    foreach (const QVariant & childVar, childrenData) {
+        if (childVar.type() == QVariant::List) {
+            CodeEditorBox *childBox = newBox();
+            splitter->addWidget(childBox);
+            QVariantList childBoxData = childVar.value<QVariantList>();
+            loadBoxState( childBox, childBoxData, documentList );
+        }
+        else if (childVar.type() == QVariant::Map) {
+            QSplitter *childSplitter = new QSplitter;
+            splitter->addWidget(childSplitter);
+            QVariantMap childSplitterData = childVar.value<QVariantMap>();
+            loadSplitterState( childSplitter, childSplitterData, documentList );
+        }
+    }
+
+    if (!splitter->restoreState(state))
+        qWarning("MultiEditor: could not restore splitter state!");
+}
+
+void MultiEditor::switchSession( Session *session )
+{
+    ///// Going offline...
+
+    breakSignalConnections();
+
+    DocumentManager *docManager = Main::documentManager();
+
+    QList<Document*> documentList = docManager->documents();
+
+    // close all docs
+    foreach (Document *doc, documentList)
+        docManager->close(doc);
+
+    // remove all tabs
+    while (mTabs->count())
+        mTabs->removeTab(0);
+
+    // remove all editors
+    delete mSplitter;
+
+    documentList.clear();
+
+    mSplitter = new MultiSplitter();
+
+    CodeEditorBox *firstBox = 0;
+
+    if (session)
+    {
+        // open documents saved in the session
+        QVariantList docDataList = session->value("documents").value<QVariantList>();
+        foreach( const QVariant & docData, docDataList ) {
+            QString filePath = docData.toString();
+            Document * doc = docManager->open(filePath, -1, 0, false);
+            documentList << doc;
+        }
+
+        // restore tabs
+        foreach ( Document * doc, documentList )
+            addTab(doc);
+
+        // restore editors
+        if (session->contains("editors")) {
+            QVariantMap splitterData = session->value("editors").value<QVariantMap>();
+            loadSplitterState( mSplitter, splitterData, documentList );
+
+            if (mSplitter->count()) {
+                firstBox = mSplitter->findChild<CodeEditorBox>();
+                if (!firstBox) {
+                    qWarning("Session seems to contain invalid editor split data!");
+                    delete mSplitter;
+                    mSplitter = new MultiSplitter();
+                }
+            }
+        }
+    }
+
+    if (!firstBox) {
+        // Restoring the session didn't result in any editor box, so create one:
+        firstBox = newBox();
+        mSplitter->addWidget( firstBox );
+    }
+
+    layout()->addWidget(mSplitter);
+
+    makeSignalConnections();
+
+    ///// Back online.
+
+    mCurrentEditorBox = 0; // ensure complete update
+    setCurrentBox( firstBox );
+
+    if (!session)
+        // create a document on new session
+        docManager->create();
+
+    firstBox->setFocus(Qt::OtherFocusReason); // ensure focus
+}
+
+int MultiEditor::addTab( Document * doc )
+{
+    if (!doc)
+        return -1;
+
+    int tabIdx = tabForDocument(doc);
+    if (tabIdx != -1)
+        return tabIdx;
+
+    QTextDocument *tdoc = doc->textDocument();
+
+    QIcon icon;
+    if(tdoc->isModified())
+        icon = mDocModifiedIcon;
+
+    tabIdx = mTabs->addTab( icon, doc->title() );
+    mTabs->setTabData( tabIdx, QVariant::fromValue<Document*>(doc) );
+
+    mDocModifiedSigMap.setMapping(tdoc, doc);
+    connect( tdoc, SIGNAL(modificationChanged(bool)), &mDocModifiedSigMap, SLOT(map()) );
+
+    return tabIdx;
+}
+
+void MultiEditor::setCurrent( Document *doc )
+{
+    int tabIdx = tabForDocument(doc);
+    if (tabIdx != -1)
+        mTabs->setCurrentIndex(tabIdx);
+}
+
+void MultiEditor::showNextDocument()
+{
+    int currentIndex = mTabs->currentIndex();
+    mTabs->setCurrentIndex( qMin(currentIndex + 1, mTabs->count() - 1) );
+}
+
+void MultiEditor::showPreviousDocument()
+{
+    int currentIndex = mTabs->currentIndex();
+    mTabs->setCurrentIndex( qMax(0, currentIndex - 1) );
+}
+
+void MultiEditor::switchDocument()
+{
+    CodeEditorBox *box = currentBox();
+
+    DocumentSelectPopUp * popup = new DocumentSelectPopUp(box->history(), this);
+
+    QRect popupRect(0,0,300,200);
+    popupRect.moveCenter(rect().center());
+    popup->resize(popupRect.size());
+    QPoint globalPosition = mapToGlobal(popupRect.topLeft());
+
+    Document * selectedDocument = popup->exec(globalPosition);
+
+    if (selectedDocument)
+        box->setDocument(selectedDocument);
+}
+
+void MultiEditor::onOpen( Document *doc, int initialCursorPosition, int selectionLength )
+{
+    addTab(doc);
+
+    currentBox()->setDocument(doc, initialCursorPosition, selectionLength);
+    currentBox()->setFocus(Qt::OtherFocusReason);
+}
+
+void MultiEditor::onClose( Document *doc )
+{
+    int tabIdx = tabForDocument(doc);
+    if (tabIdx != -1)
+        mTabs->removeTab(tabIdx);
+    // TODO: each box should switch document according to their own history
+}
+
+void MultiEditor::onDocModified( QObject *object )
+{
+    Document *doc = qobject_cast<Document*>(object);
+    if (!doc) return;
+
+    int tabIdx = tabForDocument(doc);
+    if (tabIdx == -1) return;
+
+    QIcon icon;
+    if(doc->textDocument()->isModified())
+        icon = mDocModifiedIcon;
+
+    mTabs->setTabIcon( tabIdx, icon );
+}
+
+void MultiEditor::show( Document *doc, int pos, int selectionLength )
+{
+    currentBox()->setDocument(doc, pos, selectionLength);
+    currentBox()->setFocus(Qt::OtherFocusReason);
+}
+
+void MultiEditor::update( Document *doc )
+{
+    int tabIdx = tabForDocument(doc);
+    if (tabIdx != -1)
+        mTabs->setTabText(tabIdx, doc->title());
+
+    // update thisProcess.nowExecutingPath
+    GenericCodeEditor *editor = currentEditor();
+    if (editor->document() == doc)
+        Main::scProcess()->setActiveDocument(doc);
+}
+
+void MultiEditor::onCloseRequest( int index )
+{
+    Document *doc = documentForTab(index);
+    if (doc)
+        MainWindow::close(doc);
+}
+
+void MultiEditor::onCurrentTabChanged( int index )
+{
+    if (index == -1)
+        return;
+
+    Document *doc = documentForTab(index);
+    if (!doc)
+        return;
+
+    CodeEditorBox *curBox = currentBox();
+    curBox->setDocument(doc);
+    curBox->setFocus(Qt::OtherFocusReason);
+}
+
+void MultiEditor::onCurrentEditorChanged(GenericCodeEditor *editor)
+{
+    setCurrentEditor(editor);
+}
+
+void MultiEditor::onBoxActivated(CodeEditorBox *box)
+{
+    setCurrentBox(box);
+}
+
+Document * MultiEditor::documentForTab( int index )
+{
+    return mTabs->tabData(index).value<Document*>();
+}
+
+int MultiEditor::tabForDocument( Document * doc )
+{
+    int tabCount = mTabs->count();
+    for (int idx = 0; idx < tabCount; ++idx) {
+        Document *tabDoc = documentForTab(idx);
+        if (tabDoc && tabDoc == doc)
+            return idx;
+    }
+    return -1;
+}
+
+CodeEditorBox *MultiEditor::newBox()
+{
+    CodeEditorBox *box = new CodeEditorBox();
+
+    connect(box, SIGNAL(activated(CodeEditorBox*)),
+            this, SLOT(onBoxActivated(CodeEditorBox*)));
+
+    return box;
+}
+
+void MultiEditor::setCurrentBox( CodeEditorBox * box )
+{
+    if (mCurrentEditorBox == box)
+        return;
+
+    mCurrentEditorBox = box;
+    mBoxSigMux->setCurrentObject(box);
+    setCurrentEditor( box->currentEditor() );
+
+    mCurrentEditorBox->setActive();
+}
+
+void MultiEditor::setCurrentEditor( GenericCodeEditor * editor )
+{
+    if (editor) {
+        int tabIndex = tabForDocument(editor->document());
+        if (tabIndex != -1)
+            mTabs->setCurrentIndex(tabIndex);
+    }
+
+    mEditorSigMux->setCurrentObject(editor);
+    updateActions();
+
+    Document *currentDocument = editor ? editor->document() : 0;
+    Main::scProcess()->setActiveDocument(currentDocument);
+    emit currentDocumentChanged(currentDocument);
+}
+
+GenericCodeEditor *MultiEditor::currentEditor()
+{
+    return currentBox()->currentEditor();
+}
+
+void MultiEditor::split( Qt::Orientation splitDirection )
+{
+    CodeEditorBox *box = newBox();
+    CodeEditorBox *curBox = currentBox();
+    GenericCodeEditor *curEditor = curBox->currentEditor();
+
+    if (curEditor)
+        box->setDocument(curEditor->document(), curEditor->textCursor().position());
+
+    mSplitter->insertWidget(box, curBox, splitDirection);
+    box->setFocus( Qt::OtherFocusReason );
+}
+
+void MultiEditor::removeCurrentSplit()
+{
+    int boxCount = mSplitter->findChildren<CodeEditorBox*>().count();
+    if (boxCount < 2)
+        // Do not allow removing the one and only box.
+        return;
+
+    CodeEditorBox *box = currentBox();
+    mSplitter->removeWidget(box);
+
+    // switch current box to first box found:
+    box = mSplitter->findChild<CodeEditorBox>();
+    Q_ASSERT(box);
+    setCurrentBox(box);
+    box->setFocus( Qt::OtherFocusReason );
+}
+
+void MultiEditor::removeAllSplits()
+{
+    CodeEditorBox *box = currentBox();
+    Q_ASSERT(box);
+    Q_ASSERT(mSplitter->count());
+    if (mSplitter->count() == 1 && mSplitter->widget(0) == box)
+        // Nothing to do.
+        return;
+
+    MultiSplitter *newSplitter = new MultiSplitter;
+    newSplitter->addWidget(box);
+
+    delete mSplitter;
+    mSplitter = newSplitter;
+    layout()->addWidget(newSplitter);
+
+    box->setFocus( Qt::OtherFocusReason );
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/multi_editor.hpp b/editors/sc-ide/widgets/multi_editor.hpp
new file mode 100644
index 0000000..da22fc3
--- /dev/null
+++ b/editors/sc-ide/widgets/multi_editor.hpp
@@ -0,0 +1,178 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_MULTI_EDITOR_HPP_INCLUDED
+#define SCIDE_WIDGETS_MULTI_EDITOR_HPP_INCLUDED
+
+#include <QWidget>
+#include <QTabBar>
+#include <QAction>
+#include <QPushButton>
+#include <QToolButton>
+#include <QLineEdit>
+#include <QCheckBox>
+#include <QLabel>
+#include <QGridLayout>
+#include <QTextDocument>
+#include <QSplitter>
+#include <QSignalMapper>
+
+namespace ScIDE {
+
+class CodeEditorBox;
+class Document;
+class DocumentManager;
+class GenericCodeEditor;
+class Main;
+class MultiSplitter;
+class Session;
+class SignalMultiplexer;
+
+namespace Settings { class Manager; }
+
+class MultiEditor : public QWidget
+{
+    Q_OBJECT
+
+public:
+
+    enum ActionRole
+    {
+        // Edit
+        Undo,
+        Redo,
+        Cut,
+        Copy,
+        Paste,
+        IndentLineOrRegion,
+        TriggerAutoCompletion,
+        TriggerMethodCallAid,
+        ToggleComment,
+        ToggleOverwriteMode,
+
+        CopyLineUp,
+        CopyLineDown,
+        MoveLineUp,
+        MoveLineDown,
+
+        GotoPreviousBlock,
+        GotoNextBlock,
+        GotoPreviousRegion,
+        GotoNextRegion,
+        GotoPreviousEmptyLine,
+        GotoNextEmptyLine,
+
+        SelectRegion,
+
+        // View
+        EnlargeFont,
+        ShrinkFont,
+        ResetFontSize,
+        ShowWhitespace,
+        IndentWithSpaces,
+
+        NextDocument,
+        PreviousDocument,
+        SwitchDocument,
+
+        SplitHorizontally,
+        SplitVertically,
+        RemoveCurrentSplit,
+        RemoveAllSplits,
+
+        // Language
+        EvaluateCurrentDocument,
+        EvaluateRegion,
+        EvaluateLine,
+
+        ActionRoleCount
+    };
+
+    MultiEditor( Main *, QWidget * parent = 0 );
+
+    int tabCount() { return mTabs->count(); }
+    Document * documentForTab( int index );
+    int tabForDocument( Document * doc );
+
+    GenericCodeEditor *currentEditor();
+    CodeEditorBox *currentBox() { return mCurrentEditorBox; }
+    void split( Qt::Orientation direction );
+
+    QAction * action( ActionRole role )
+        { return mActions[role]; }
+
+    void saveSession( Session * );
+    void switchSession( Session * );
+
+signals:
+    void currentDocumentChanged( Document * );
+
+public slots:
+
+    void setCurrent( Document * );
+
+    void showNextDocument();
+    void showPreviousDocument();
+    void switchDocument();
+
+    void splitHorizontally() { split(Qt::Horizontal); }
+    void splitVertically() { split(Qt::Vertical); }
+    void removeCurrentSplit();
+    void removeAllSplits();
+
+private slots:
+    void onOpen( Document *, int initialCursorPosition, int selectionLength );
+    void onClose( Document * );
+    void show( Document *, int cursorPosition = -1, int selectionLenght = 0 );
+    void update( Document * );
+    void onCloseRequest( int index );
+    void onCurrentTabChanged( int index );
+    void onCurrentEditorChanged( GenericCodeEditor * );
+    void onBoxActivated( CodeEditorBox * );
+    void onDocModified( QObject * );
+
+private:
+    void makeSignalConnections();
+    void breakSignalConnections();
+    void createActions();
+    void updateActions();
+    int addTab( Document * );
+    CodeEditorBox *newBox();
+    void setCurrentBox( CodeEditorBox * );
+    void setCurrentEditor( GenericCodeEditor * );
+    void loadBoxState( CodeEditorBox *box, const QVariantList & data, const QList<Document *> & documentList );
+    void loadSplitterState( QSplitter *, const QVariantMap & data, const QList<Document *> & documentList );
+
+    QAction *mActions[ActionRoleCount];
+
+    SignalMultiplexer * mEditorSigMux;
+    SignalMultiplexer * mBoxSigMux;
+    QSignalMapper mDocModifiedSigMap;
+
+    // gui
+    QTabBar *mTabs;
+    CodeEditorBox *mCurrentEditorBox;
+    MultiSplitter *mSplitter;
+    QIcon mDocModifiedIcon;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_MULTI_EDITOR_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/popup_text_input.hpp b/editors/sc-ide/widgets/popup_text_input.hpp
new file mode 100644
index 0000000..3740b6e
--- /dev/null
+++ b/editors/sc-ide/widgets/popup_text_input.hpp
@@ -0,0 +1,79 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_POPUP_TEXT_INPUT_HPP_INCLUDED
+#define SCIDE_WIDGETS_POPUP_TEXT_INPUT_HPP_INCLUDED
+
+#include <QInputDialog>
+#include <QKeyEvent>
+#include <QPainter>
+
+namespace ScIDE {
+
+class PopupTextInput : public QInputDialog
+{
+    Q_OBJECT
+
+public:
+    PopupTextInput(QString const & labelText, QWidget * parent):
+        QInputDialog(parent, Qt::Popup)
+    {
+        setOption(QInputDialog::NoButtons);
+        setInputMode(QInputDialog::TextInput);
+        setLabelText(labelText);
+        setModal(true);
+
+        if (parent) {
+            QRect position = rect();
+            position.moveCenter(parent->rect().center());
+            resize(position.size());
+            move(parent->mapToGlobal(position.topLeft()));
+        }
+    }
+
+private:
+    void paintEvent( QPaintEvent * )
+    {
+        QPainter painter(this);
+        painter.setBrush(Qt::NoBrush);
+        painter.setPen(palette().color(QPalette::Dark));
+        painter.drawRect(rect().adjusted(0,0,-1,-1));
+    }
+
+    virtual void keyPressEvent(QKeyEvent * event)
+    {
+        switch (event->key()) {
+        case Qt::Key_Enter:
+        case Qt::Key_Return:
+            accept();
+            event->accept();
+            return;
+
+        default:;
+        }
+
+        QInputDialog::keyPressEvent(event);
+    }
+
+};
+
+}
+
+#endif // SCIDE_WIDGETS_POPUP_TEXT_INPUT_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/post_window.cpp b/editors/sc-ide/widgets/post_window.cpp
new file mode 100644
index 0000000..f0e720b
--- /dev/null
+++ b/editors/sc-ide/widgets/post_window.cpp
@@ -0,0 +1,326 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "main_window.hpp"
+#include "post_window.hpp"
+#include "util/gui_utilities.hpp"
+#include "../core/main.hpp"
+#include "../core/settings/manager.hpp"
+#include "../core/util/overriding_action.hpp"
+
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QHBoxLayout>
+#include <QLabel>
+#include <QPointer>
+#include <QScrollBar>
+#include <QShortcut>
+#include <QKeyEvent>
+#include <QTextDocumentFragment>
+
+namespace ScIDE {
+
+PostWindow::PostWindow(QWidget* parent):
+    QPlainTextEdit(parent)
+{
+    setReadOnly(true);
+    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+    setFrameShape( QFrame::NoFrame );
+
+    QRect availableScreenRect = qApp->desktop()->availableGeometry(this);
+    mSizeHint = QSize( availableScreenRect.width() * 0.4, availableScreenRect.height() * 0.3 );
+
+    createActions( Main::settings() );
+
+    setContextMenuPolicy(Qt::ActionsContextMenu);
+
+    connect(this, SIGNAL(scrollToBottomRequest()),
+            this, SLOT(scrollToBottom()), Qt::QueuedConnection);
+
+    applySettings( Main::settings() );
+}
+
+void PostWindow::createActions( Settings::Manager * settings )
+{
+    QAction * action;
+    OverridingAction * ovrAction;
+
+    QString postCategory(tr("Post Window"));
+
+    mActions[Copy] = action = new QAction(tr("Copy"), this);
+    action->setShortcut( QKeySequence::Copy );
+    action->setShortcutContext( Qt::WidgetShortcut );
+    action->setEnabled( false );
+    connect(action, SIGNAL(triggered()), this, SLOT(copy()));
+    connect( this, SIGNAL(copyAvailable(bool)), action, SLOT(setEnabled(bool)) );
+    addAction(action);
+
+    mActions[Clear] = action = new QAction(tr("Clear"), this);
+    action->setStatusTip(tr("Clear post window"));
+    action->setShortcutContext(Qt::ApplicationShortcut);
+    action->setShortcut(tr("Ctrl+Shift+P", "Clear post window"));
+    settings->addAction( action, "post-clear", postCategory );
+    connect(action, SIGNAL(triggered()), this, SLOT(clear()));
+    addAction(action);
+
+    action = new QAction(this);
+    action->setSeparator(true);
+    addAction(action);
+
+    mActions[ZoomIn] = ovrAction = new OverridingAction(tr("Enlarge Font"), this);
+    ovrAction->setIconText("+");
+    ovrAction->setStatusTip(tr("Enlarge post window font"));
+    connect(ovrAction, SIGNAL(triggered()), this, SLOT(zoomIn()));
+    ovrAction->addToWidget(this);
+
+    mActions[ZoomOut] = ovrAction = new OverridingAction(tr("Shrink Font"), this);
+    ovrAction->setIconText("-");
+    ovrAction->setStatusTip(tr("Shrink post window font"));
+    connect(ovrAction, SIGNAL(triggered()), this, SLOT(zoomOut()));
+    ovrAction->addToWidget(this);
+
+    action = new QAction(this);
+    action->setSeparator(true);
+    addAction(action);
+
+    mActions[LineWrap] = action = new QAction(tr("Wrap Text"), this);
+    action->setStatusTip(tr("Wrap lines wider than the post window"));
+    action->setCheckable(true);
+    addAction(action);
+    connect( action, SIGNAL(triggered(bool)), this, SLOT(setLineWrap(bool)) );
+    settings->addAction( action, "post-line-wrap", postCategory );
+
+    mActions[AutoScroll] = action = new QAction(tr("Auto Scroll"), this);
+    action->setStatusTip(tr("Scroll to bottom on new posts"));
+    action->setCheckable(true);
+    action->setChecked(true);
+    connect(action, SIGNAL(triggered(bool)), this, SLOT(onAutoScrollTriggered(bool)));
+    addAction(action);
+    settings->addAction( action, "post-auto-scroll", postCategory );
+}
+
+void PostWindow::updateActionShortcuts( Settings::Manager * settings )
+{
+    settings->beginGroup("IDE/shortcuts");
+    mActions[ZoomIn]->setShortcut( settings->shortcut("editor-enlarge-font") );
+    mActions[ZoomOut]->setShortcut( settings->shortcut("editor-shrink-font") );
+    settings->endGroup();
+}
+
+void PostWindow::applySettings(Settings::Manager * settings)
+{
+    int scrollback = settings->value("IDE/postWindow/scrollback").toInt();
+
+    QFont font = settings->codeFont();
+
+    QPalette palette;
+    settings->beginGroup("IDE/editor/colors");
+    if (settings->contains("text")) {
+        QTextCharFormat format = settings->value("text").value<QTextCharFormat>();
+        QBrush bg = format.background();
+        QBrush fg = format.foreground();
+        if (bg.style() != Qt::NoBrush)
+            palette.setBrush(QPalette::Base, bg);
+        if (fg.style() != Qt::NoBrush)
+            palette.setBrush(QPalette::Text, fg);
+    }
+    settings->endGroup(); // colors
+
+    bool lineWrap = settings->value("IDE/postWindow/lineWrap").toBool();
+
+    setMaximumBlockCount(scrollback);
+    setFont(font);
+    setPalette(palette);
+    setLineWrap( lineWrap );
+
+    QFontMetrics metrics (font);
+    QString stringOfSpaces (settings->value("IDE/editor/indentWidth").toInt(), QChar(' '));
+    setTabStopWidth(metrics.width(stringOfSpaces));
+
+    updateActionShortcuts(settings);
+}
+
+void PostWindow::storeSettings( Settings::Manager * settings )
+{
+    settings->setValue("IDE/postWindow/lineWrap", mActions[LineWrap]->isChecked() );
+}
+
+QString PostWindow::symbolUnderCursor()
+{
+    QTextCursor cursor = textCursor();
+    if (cursor.hasSelection())
+        return cursor.selectedText();
+    else
+    {
+        QString blockString = cursor.block().text();
+        int position = cursor.positionInBlock();
+        return wordInStringAt( position, blockString );
+    }
+}
+
+void PostWindow::post(const QString &text)
+{
+    QScrollBar *scrollBar = verticalScrollBar();
+    bool scroll = mActions[AutoScroll]->isChecked();
+
+    QTextCursor c(document());
+    c.movePosition(QTextCursor::End);
+    c.insertText(text);
+
+    if (scroll)
+        emit(scrollToBottomRequest());
+}
+
+void PostWindow::scrollToBottom()
+{
+    verticalScrollBar()->triggerAction(QAbstractSlider::SliderToMaximum);
+}
+
+void PostWindow::onAutoScrollTriggered(bool on)
+{
+    if (on)
+        scrollToBottom();
+}
+
+void PostWindow::zoomIn(int steps)
+{
+    zoomFont(steps);
+}
+
+void PostWindow::zoomOut(int steps)
+{
+    zoomFont(-steps);
+}
+
+void PostWindow::zoomFont(int steps)
+{
+    QFont currentFont = font();
+    const int newSize = currentFont.pointSize() + steps;
+    if (newSize <= 0)
+        return;
+    currentFont.setPointSize(newSize);
+    setFont(currentFont);
+}
+
+bool PostWindow::event( QEvent * event )
+{
+    switch (event->type()) {
+    case QEvent::ShortcutOverride: {
+        QKeyEvent *kevent = static_cast<QKeyEvent*>(event);
+        if (kevent == QKeySequence::Copy) {
+            event->accept();
+            return true;
+        }
+        break;
+    }
+    default:
+        break;
+    }
+
+    return QPlainTextEdit::event(event);
+}
+
+void PostWindow::wheelEvent( QWheelEvent * e )
+{
+    if (e->modifiers() == Qt::ControlModifier) {
+        if (e->delta() > 0)
+            zoomIn();
+        else
+            zoomOut();
+        return;
+    }
+
+    QPlainTextEdit::wheelEvent(e);
+}
+
+void PostWindow::focusOutEvent( QFocusEvent * event )
+{
+    if (event->reason() == Qt::TabFocusReason)
+        MainWindow::instance()->focusCodeEditor();
+    else
+        QPlainTextEdit::focusOutEvent(event);
+}
+
+void PostWindow::mouseDoubleClickEvent(QMouseEvent *e)
+{
+    QTextCursor cursor = textCursor();
+    cursor.beginEditBlock();
+
+    QPlainTextEdit::mouseDoubleClickEvent(e);
+    extendSelectionForEnvVar(this, textCursor());
+
+    cursor.endEditBlock();
+}
+
+QMimeData *PostWindow::createMimeDataFromSelection() const
+{
+    // Here, we bundle up just the plaintext (not HTML, as is the default) of
+    // the post window's selected contents.
+    QMimeData *data = new QMimeData;
+    data->setText(textCursor().selection().toPlainText());
+    return data;
+}
+
+bool PostWindow::openDocumentation()
+{
+    return Main::openDocumentation(symbolUnderCursor());
+}
+
+void PostWindow::openDefinition()
+{
+    Main::openDefinition(symbolUnderCursor(), MainWindow::instance());
+}
+
+void PostWindow::findReferences()
+{
+    Main::findReferences(symbolUnderCursor(), MainWindow::instance());
+}
+
+void PostWindow::setLineWrap(bool lineWrapOn)
+{
+    setLineWrapMode( lineWrapOn ? QPlainTextEdit::WidgetWidth : QPlainTextEdit::NoWrap );
+    mActions[LineWrap]->setChecked(lineWrapOn);
+    Main::settings()->setValue( "IDE/postWindow/lineWrap", lineWrapOn );
+}
+
+PostDocklet::PostDocklet(QWidget* parent):
+    Docklet(tr("Post window"), parent)
+{
+    setAllowedAreas(Qt::BottomDockWidgetArea | Qt::RightDockWidgetArea | Qt::LeftDockWidgetArea);
+
+    mPostWindow = new PostWindow;
+    setWidget(mPostWindow);
+
+    toolBar()->addAction( mPostWindow->mActions[PostWindow::AutoScroll] );
+
+    //connect(this, SIGNAL(topLevelChanged(bool)), this, SLOT(onFloatingChanged(bool)));
+}
+
+void PostDocklet::onFloatingChanged(bool floating)
+{
+    // HACK: After undocking when main window maximized, the dock widget can not be
+    // resized anymore. Apparently it has to do something with the fact that the dock
+    // widget spans from edge to edge of the screen.
+    // The issue is avoided by slightly shrinking the dock widget.
+    if (floating)
+        dockWidget()->resize(dockWidget()->size() - QSize(1,1));
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/post_window.hpp b/editors/sc-ide/widgets/post_window.hpp
new file mode 100644
index 0000000..8bfd3c3
--- /dev/null
+++ b/editors/sc-ide/widgets/post_window.hpp
@@ -0,0 +1,126 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_POST_WINDOW_HPP_INCLUDED
+#define SCIDE_WIDGETS_POST_WINDOW_HPP_INCLUDED
+
+#include "util/docklet.hpp"
+#include <QAction>
+#include <QPlainTextEdit>
+
+namespace ScIDE {
+
+namespace Settings { class Manager; }
+
+class PostDocklet;
+
+class PostWindow:
+    public QPlainTextEdit
+{
+    Q_OBJECT
+
+public:
+    enum ActionRole {
+        Copy,
+        Clear,
+        ZoomIn,
+        ZoomOut,
+        LineWrap,
+        AutoScroll,
+
+        ActionCount
+    };
+
+    explicit PostWindow(QWidget* parent = 0);
+
+    void applySettings( Settings::Manager * );
+    void storeSettings( Settings::Manager * );
+
+    QAction * action ( ActionRole role ) const { return mActions[role]; }
+
+    QSize sizeHint() const { return mSizeHint; }
+    QSize minimumSizeHint() const { return QSize(50,50); }
+    QString symbolUnderCursor();
+
+signals:
+    void scrollToBottomRequest();
+
+public slots:
+    void post(const QString &text);
+    void scrollToBottom();
+    void zoomIn(int steps = 1);
+    void zoomOut(int steps = 1);
+
+    bool openDocumentation();
+    void openDefinition();
+    void findReferences();
+
+protected:
+    virtual bool event( QEvent * );
+    virtual void wheelEvent( QWheelEvent * );
+    virtual void focusOutEvent (QFocusEvent *e);
+    virtual void mouseDoubleClickEvent(QMouseEvent *e);
+    virtual QMimeData *createMimeDataFromSelection() const;
+
+private slots:
+    void onAutoScrollTriggered(bool);
+    void setLineWrap(bool on);
+
+private:
+    friend class PostDocklet;
+    void createActions( Settings::Manager * );
+    void updateActionShortcuts( Settings::Manager * );
+    void zoomFont(int steps);
+
+    QAction * mActions[ActionCount];
+    /*
+    QAction * mAutoScrollAction;
+    QAction * mClearAction;
+    QAction * mLineWrapAction;*/
+    QSize mSizeHint;
+};
+
+
+class PostDocklet:
+    public Docklet
+{
+    Q_OBJECT
+
+public:
+    PostDocklet(QWidget* parent = 0);
+
+public slots:
+    void raiseAndFocus()
+    {
+        show();
+        raise();
+        mPostWindow->setFocus();
+    }
+
+private slots:
+    void onFloatingChanged(bool floating);
+
+public:
+    PostWindow * mPostWindow;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/widgets/session_switch_dialog.cpp b/editors/sc-ide/widgets/session_switch_dialog.cpp
new file mode 100644
index 0000000..59b47fe
--- /dev/null
+++ b/editors/sc-ide/widgets/session_switch_dialog.cpp
@@ -0,0 +1,52 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include <QHBoxLayout>
+
+#include "main_window.hpp"
+#include "session_switch_dialog.hpp"
+
+#include "../core/main.hpp"
+#include "../core/session_manager.hpp"
+
+
+using namespace ScIDE;
+
+SessionSwitchDialog::SessionSwitchDialog(QWidget * parent):
+    QDialog(parent)
+{
+    setWindowTitle(tr("Switch Session"));
+
+    mSessions = new QListWidget(this);
+
+    QHBoxLayout *contentBox = new QHBoxLayout;
+    contentBox->addWidget(mSessions);
+    setLayout(contentBox);
+
+    QStringList sessions = Main::sessionManager()->availableSessions();
+    mSessions->addItems(sessions);
+
+    connect(mSessions, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(onItemActivated(QListWidgetItem*)));
+}
+
+void SessionSwitchDialog::onItemActivated(QListWidgetItem* item)
+{
+    accept();
+}
diff --git a/editors/sc-ide/widgets/session_switch_dialog.hpp b/editors/sc-ide/widgets/session_switch_dialog.hpp
new file mode 100644
index 0000000..3210710
--- /dev/null
+++ b/editors/sc-ide/widgets/session_switch_dialog.hpp
@@ -0,0 +1,50 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_SWITCH_SESSION_DIALOG_HPP_INCLUDED
+#define SCIDE_WIDGETS_SWITCH_SESSION_DIALOG_HPP_INCLUDED
+
+#include <QDialog>
+#include <QListWidget>
+
+namespace ScIDE {
+
+class SessionSwitchDialog: public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit SessionSwitchDialog(QWidget * parent = NULL);
+
+    QString activeElement()
+    {
+        return mSessions->currentItem()->text();
+    }
+
+public Q_SLOTS:
+    void onItemActivated(QListWidgetItem*);
+
+private:
+    QListWidget * mSessions;
+};
+
+}
+
+#endif // SCIDE_WIDGETS_SWITCH_SESSION_DIALOG_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/sessions_dialog.hpp b/editors/sc-ide/widgets/sessions_dialog.hpp
new file mode 100644
index 0000000..9dd9cbd
--- /dev/null
+++ b/editors/sc-ide/widgets/sessions_dialog.hpp
@@ -0,0 +1,134 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_SESSIONS_DIALOG_HPP_INCLUDED
+#define SCIDE_WIDGETS_SESSIONS_DIALOG_HPP_INCLUDED
+
+#include "../core/session_manager.hpp"
+
+#include <QDialog>
+#include <QListWidget>
+#include <QPushButton>
+#include <QDialogButtonBox>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QInputDialog>
+#include <QMessageBox>
+
+namespace ScIDE {
+
+class SessionsDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    SessionsDialog ( SessionManager *mng, QWidget *parent = 0 ):
+        QDialog(parent),
+        mMng(mng)
+    {
+        setWindowTitle("Sessions");
+
+        mList = new QListWidget;
+
+        QPushButton *removeBtn = new QPushButton(tr("Delete"));
+        QPushButton *renameBtn = new QPushButton(tr("Rename..."));
+
+        QDialogButtonBox *dialogBtns = new QDialogButtonBox(QDialogButtonBox::Ok);
+
+
+        QHBoxLayout *contentBox = new QHBoxLayout;
+        QVBoxLayout *btnBox = new QVBoxLayout;
+        btnBox->addWidget(renameBtn);
+        btnBox->addWidget(removeBtn);
+        btnBox->addStretch();
+        contentBox->addWidget(mList);
+        contentBox->addLayout(btnBox);
+
+        QVBoxLayout *layout = new QVBoxLayout;
+        layout->addLayout(contentBox);
+        layout->addWidget(dialogBtns);
+
+        setLayout(layout);
+
+        connect(removeBtn, SIGNAL(clicked()), this, SLOT(removeCurrent()));
+        connect(renameBtn, SIGNAL(clicked()), this, SLOT(renameCurrent()));
+        connect(dialogBtns, SIGNAL(accepted()), this, SLOT(accept()));
+
+        updateSessions();
+    }
+
+private slots:
+    void removeCurrent()
+    {
+        QListWidgetItem *item = mList->currentItem();
+        if (!item)
+            return;
+
+        QString name = item->text();
+
+        if ( QMessageBox::warning (
+                this,
+                tr("Delete Session"),
+                tr("Are you sure you want to delete session '%1'?").arg(name),
+                QMessageBox::Yes | QMessageBox::No,
+                QMessageBox::Yes
+            ) == QMessageBox::Yes )
+        {
+            mMng->removeSession(name);
+            updateSessions();
+        }
+    }
+
+    void renameCurrent()
+    {
+        QListWidgetItem *item = mList->currentItem();
+        if (!item)
+            return;
+
+        QString oldName = item->text();
+        QString newName = QInputDialog::getText (
+            this,
+            tr("Rename Session"),
+            tr("Enter a new name for the session:"),
+            QLineEdit::Normal,
+            oldName
+        );
+        if (newName.isEmpty() || newName == oldName )
+            return;
+
+        mMng->renameSession(oldName, newName);
+        updateSessions();
+    }
+
+private:
+    void updateSessions()
+    {
+        mList->clear();
+        QStringList sessions = mMng->availableSessions();
+        mList->addItems(sessions);
+    }
+
+    QListWidget *mList;
+    SessionManager *mMng;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/widgets/settings/dialog.cpp b/editors/sc-ide/widgets/settings/dialog.cpp
new file mode 100644
index 0000000..bb283d3
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/dialog.cpp
@@ -0,0 +1,114 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "dialog.hpp"
+#include "ui_settings_dialog.h"
+#include "general_page.hpp"
+#include "sclang_page.hpp"
+#include "editor_page.hpp"
+#include "shortcuts_page.hpp"
+#include "../../core/settings/manager.hpp"
+#include "../../core/main.hpp"
+
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QDialogButtonBox>
+#include <QStackedWidget>
+#include <QListWidget>
+#include <QFile>
+#include <QLineEdit>
+#include <QPushButton>
+
+namespace ScIDE { namespace Settings {
+
+Dialog::Dialog( Manager *settings, QWidget * parent ):
+    QDialog(parent),
+    mManager(settings),
+    ui( new Ui::ConfigDialog )
+{
+    ui->setupUi(this);
+
+    QWidget *w;
+
+    w = new GeneralPage;
+    ui->configPageStack->addWidget(w);
+    ui->configPageList->addItem (
+        new QListWidgetItem(QIcon::fromTheme("preferences-system"), tr("General")));
+    connect(this, SIGNAL(storeRequest(Manager*)), w, SLOT(store(Manager*)));
+    connect(this, SIGNAL(loadRequest(Manager*)), w, SLOT(load(Manager*)));
+
+    w = new SclangPage;
+    ui->configPageStack->addWidget(w);
+    ui->configPageList->addItem (
+        new QListWidgetItem(QIcon::fromTheme("applications-system"), tr("Interpreter")));
+    connect(this, SIGNAL(storeRequest(Manager*)), w, SLOT(store(Manager*)));
+    connect(this, SIGNAL(loadRequest(Manager*)), w, SLOT(load(Manager*)));
+
+    w = new EditorPage;
+    ui->configPageStack->addWidget(w);
+    ui->configPageList->addItem (
+        new QListWidgetItem(QIcon::fromTheme("accessories-text-editor"), tr("Editor")));
+    connect(this, SIGNAL(storeRequest(Manager*)), w, SLOT(store(Manager*)));
+    connect(this, SIGNAL(loadRequest(Manager*)), w, SLOT(load(Manager*)));
+
+    w = new ShortcutsPage;
+    ui->configPageStack->addWidget(w);
+    ui->configPageList->addItem (
+        new QListWidgetItem(QIcon::fromTheme("input-keyboard"), tr("Shortcuts")));
+    connect(this, SIGNAL(storeRequest(Manager*)), w, SLOT(store(Manager*)));
+    connect(this, SIGNAL(loadRequest(Manager*)), w, SLOT(load(Manager*)));
+
+    connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
+    connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
+    connect(ui->buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(apply()));
+    connect(ui->buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked()), this, SLOT(reset()));
+
+    reset();
+}
+
+Dialog::~Dialog()
+{
+    delete ui;
+}
+
+void Dialog::accept()
+{
+    Q_EMIT( storeRequest(mManager) );
+
+    QDialog::accept();
+}
+
+void Dialog::reject()
+{
+    QDialog::reject();
+}
+
+void Dialog::apply()
+{
+    Q_EMIT( storeRequest(mManager) );
+    Main::instance()->applySettings();
+}
+
+void Dialog::reset()
+{
+    Q_EMIT( loadRequest(mManager) );
+}
+
+}} // namespace ScIDE::Settings
diff --git a/editors/sc-ide/widgets/settings/dialog.hpp b/editors/sc-ide/widgets/settings/dialog.hpp
new file mode 100644
index 0000000..ebe74ed
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/dialog.hpp
@@ -0,0 +1,61 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_SETTINGS_DIALOG_HPP_INCLUDED
+#define SCIDE_WIDGETS_SETTINGS_DIALOG_HPP_INCLUDED
+
+#include <QDialog>
+
+namespace Ui {
+    class ConfigDialog;
+}
+
+namespace ScIDE { namespace Settings {
+
+class Manager;
+
+class Dialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+
+    Dialog( Manager *settings, QWidget * parent = 0 );
+    ~Dialog();
+
+public Q_SLOTS:
+
+    virtual void accept();
+    virtual void reject();
+    virtual void reset();
+    void apply();
+
+Q_SIGNALS:
+    void storeRequest( Manager * );
+    void loadRequest( Manager * );
+
+private:
+    Manager *mManager;
+    Ui::ConfigDialog *ui;
+};
+
+}} // namespace ScIDE::Settings
+
+#endif // SCIDE_WIDGETS_SETTINGS_DIALOG_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/settings/editor_page.cpp b/editors/sc-ide/widgets/settings/editor_page.cpp
new file mode 100644
index 0000000..2fa9286
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/editor_page.cpp
@@ -0,0 +1,421 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "editor_page.hpp"
+#include "ui_settings_editor.h"
+#include "../code_editor/highlighter.hpp"
+#include "../../core/settings/manager.hpp"
+#include "../../core/main.hpp"
+
+#include <QMenu>
+#include <QDebug>
+#include <QListWidgetItem>
+#include <QFontDatabase>
+#include <QApplication>
+
+namespace ScIDE { namespace Settings {
+
+EditorPage::EditorPage(QWidget *parent) :
+    QWidget(parent),
+    fontDatabase(new QFontDatabase),
+    ui( new Ui::EditorConfigPage )
+{
+    ui->setupUi(this);
+
+    connect( ui->tabs, SIGNAL(currentChanged(int)), this, SLOT(onCurrentTabChanged(int)) );
+
+    connect( ui->onlyMonoFonts, SIGNAL(toggled(bool)), this, SLOT(onMonospaceToggle(bool)) );
+    connect( ui->fontCombo, SIGNAL(currentIndexChanged(QString)), this, SLOT(updateFontPreview()) );
+    connect( ui->fontSize, SIGNAL(valueChanged(int)), this, SLOT(updateFontPreview()) );
+    connect( ui->fontAntialias, SIGNAL(stateChanged(int)), this, SLOT(updateFontPreview()) );
+
+    connect( ui->textFormats, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem*)),
+             this, SLOT(updateTextFormatEdit()) );
+    connect( ui->fgPicker, SIGNAL(colorPicked(QColor)),
+             this, SLOT(updateTextFormatDisplay()) );
+    connect( ui->bgPicker, SIGNAL(colorPicked(QColor)),
+             this, SLOT(updateTextFormatDisplay()) );
+    connect( ui->italicOption, SIGNAL(clicked()),
+             this, SLOT(updateTextFormatDisplay()) );
+    connect( ui->boldOption, SIGNAL(clicked()),
+             this, SLOT(updateTextFormatDisplay()) );
+    connect( ui->fgClearBtn, SIGNAL(clicked()), ui->fgPicker, SLOT(clear()) );
+    connect( ui->fgClearBtn, SIGNAL(clicked()),
+             this, SLOT(updateTextFormatDisplay()) );
+    connect( ui->bgClearBtn, SIGNAL(clicked()), ui->bgPicker, SLOT(clear()) );
+    connect( ui->bgClearBtn, SIGNAL(clicked()),
+             this, SLOT(updateTextFormatDisplay()) );
+
+    updateTextFormatEdit();
+}
+
+EditorPage::~EditorPage()
+{
+    delete ui;
+    delete fontDatabase;
+}
+
+void EditorPage::load( Manager *s )
+{
+    s->beginGroup("IDE/editor");
+
+    ui->spaceIndent->setChecked( s->value("spaceIndent").toBool() );
+    ui->indentWidth->setValue( s->value("indentWidth").toInt() );
+    ui->stepForwardEvaluation->setChecked( s->value("stepForwardEvaluation").toBool() );
+    ui->editorLineWrap->setChecked( s->value("lineWrap").toBool() );
+
+    ui->blinkDuration->setValue( s->value("blinkDuration").toInt() );
+
+    s->beginGroup("font");
+    QString fontFamily = s->value("family").toString();
+    int fontSize = s->value("size").toInt();
+    ui->fontAntialias->setChecked( s->value("antialias").toBool() );
+
+    s->endGroup();
+
+    // Display info about the font that would actually be used:
+    QFont defaultFont = QApplication::font("QPlainTextEdit");
+    defaultFont.setFamily(fontFamily);
+    if (fontSize > 0)
+        defaultFont.setPointSize(fontSize);
+    defaultFont.setStyleHint( QFont::TypeWriter );
+
+    QFontInfo fontInfo( defaultFont );
+    fontFamily = fontInfo.family();
+    fontSize = fontInfo.pointSize();
+
+    populateFontList( ui->onlyMonoFonts->isChecked() );
+    int fontFamilyIndex = ui->fontCombo->findText( fontFamily, Qt::MatchFixedString );
+    ui->fontCombo->setCurrentIndex( fontFamilyIndex );
+
+    ui->fontSize->setValue( fontSize );
+
+    ui->textFormats->clear();
+
+    s->beginGroup("colors");
+    loadGeneralTextFormats( s );
+    s->endGroup(); // colors
+
+    s->beginGroup("highlighting");
+    loadSyntaxTextFormats( s );
+    s->endGroup(); // highlighting
+
+    s->endGroup(); // IDE/editor
+
+    s->beginGroup("IDE/postWindow");
+    ui->postWindowScrollback->setValue( s->value("scrollback").toInt() );
+    ui->postWindowLineWrap->setChecked( s->value("lineWrap").toBool() );
+    s->endGroup();
+
+    updateFontPreview();
+    updateTextFormatDisplayCommons();
+
+    ui->textFormats->expandAll();
+}
+
+void EditorPage::loadGeneralTextFormats( Manager *settings )
+{
+    mGeneralFormatsItem = new QTreeWidgetItem( ui->textFormats );
+    mGeneralFormatsItem->setText(0, tr("General") );
+
+    // commont text format item is special - don't set foreground and background on the item!
+    mCommonTextFormatItem = new QTreeWidgetItem();
+    mCommonTextFormatItem->setText( 0, tr("Text") );
+    mCommonTextFormatItem->setData( 0, TextFormatConfigKeyRole, "text" );
+    mCommonTextFormatItem->setData( 0, TextFormatRole, settings->value( "text" ) );
+    mGeneralFormatsItem->addChild( mCommonTextFormatItem );
+
+    QPalette palette = QApplication::palette();
+
+    QTextCharFormat lineNumbersDefaultFormat;
+    lineNumbersDefaultFormat.setBackground( palette.brush(QPalette::Mid) );
+    lineNumbersDefaultFormat.setForeground( palette.brush(QPalette::ButtonText) );
+
+    addTextFormat( mGeneralFormatsItem, tr("Line Numbers"), "lineNumbers",
+                   settings->value( "lineNumbers" ).value<QTextCharFormat>(),
+                   lineNumbersDefaultFormat );
+
+    QTextCharFormat selectionDefaultFormat;
+    selectionDefaultFormat.setBackground( palette.brush(QPalette::Highlight) );
+    selectionDefaultFormat.setForeground( palette.brush(QPalette::HighlightedText) );
+
+    addTextFormat( mGeneralFormatsItem, tr("Selected Text"), "selection",
+                   settings->value( "selection" ).value<QTextCharFormat>(),
+                   selectionDefaultFormat );
+
+    static char const * const keys[] = {
+        "searchResult", "matchingBrackets", "mismatchedBrackets", "evaluatedCode"
+    };
+
+    static QStringList strings = QStringList()
+            << tr("Search Result") << tr("Matching Brackets")
+            << tr("Mismatched Brackets") << tr("Evaluated Code");
+
+    static int count = strings.count();
+
+    for (int idx = 0; idx < count; ++idx) {
+        QTextCharFormat format = settings->value( keys[idx] ).value<QTextCharFormat>();
+        addTextFormat( mGeneralFormatsItem, strings[idx], keys[idx], format );
+    }
+}
+
+void EditorPage::loadSyntaxTextFormats( Manager *settings )
+{
+    mSyntaxFormatsItem = new QTreeWidgetItem( ui->textFormats );
+    mSyntaxFormatsItem->setText(0, tr("Syntax Highlighting") );
+
+    static char const * const keys[] = {
+        "keyword", "built-in", "env-var", "class", "number",
+        "symbol", "string", "char", "comment", "primitive"
+    };
+
+    static QStringList strings = QStringList()
+            << tr("Keyword") << tr("Built-in Value") << tr("Environment Variable")
+            << tr("Class") << tr("Number") << tr("Symbol") << tr("String") << tr("Char")
+            << tr("Comment") << tr("Primitive");
+
+    static int count = strings.count();
+
+    for (int idx = 0; idx < count; ++idx) {
+        QTextCharFormat format = settings->value( keys[idx] ).value<QTextCharFormat>();
+        addTextFormat( mSyntaxFormatsItem, strings[idx], keys[idx], format );
+    }
+}
+
+void EditorPage::populateFontList( bool onlyMonospaced )
+{
+    ui->fontCombo->clear();
+    QStringList fontFamilies = fontDatabase->families();
+    foreach(QString family, fontFamilies)
+    {
+        if (onlyMonospaced && !fontDatabase->isFixedPitch(family))
+            continue;
+
+        ui->fontCombo->addItem(family);
+    }
+}
+
+void EditorPage::store( Manager *s )
+{
+    s->beginGroup("IDE/editor");
+
+    s->setValue("spaceIndent", ui->spaceIndent->isChecked());
+    s->setValue("indentWidth", ui->indentWidth->value());
+    s->setValue("stepForwardEvaluation", ui->stepForwardEvaluation->isChecked());
+    s->setValue("lineWrap", ui->editorLineWrap->isChecked());
+
+    s->setValue("blinkDuration", ui->blinkDuration->value());
+
+    s->beginGroup("font");
+    QString fontFamily = ui->fontCombo->currentText();
+    if (!fontFamily.isEmpty())
+        s->setValue("family", fontFamily);
+    s->setValue("size", ui->fontSize->value());
+    s->setValue("antialias", ui->fontAntialias->checkState());
+    s->endGroup();
+
+    s->beginGroup("colors");
+
+    int generalFormatCount = mGeneralFormatsItem->childCount();
+    for(int i = 0; i < generalFormatCount; ++i)
+    {
+        QTreeWidgetItem *item = mGeneralFormatsItem->child(i);
+        QTextCharFormat fm = item->data( 0, TextFormatRole).value<QTextCharFormat>();
+        QString key = item->data( 0, TextFormatConfigKeyRole ).toString();
+        s->setValue( key, QVariant::fromValue<QTextCharFormat>(fm) );
+    }
+
+    s->endGroup(); // colors
+
+    s->beginGroup("highlighting");
+
+    int syntaxFormatCount = mSyntaxFormatsItem->childCount();
+    for(int i = 0; i < syntaxFormatCount; ++i)
+    {
+        QTreeWidgetItem *item =mSyntaxFormatsItem->child(i);
+        QTextCharFormat fm = item->data( 0, TextFormatRole).value<QTextCharFormat>();
+        QString key = item->data( 0, TextFormatConfigKeyRole ).toString();
+        s->setValue( key, QVariant::fromValue<QTextCharFormat>(fm) );
+    }
+
+    s->endGroup(); // highlighting
+
+    s->endGroup();
+
+    s->beginGroup("IDE/postWindow");
+    s->setValue("scrollback", ui->postWindowScrollback->value());
+    s->setValue("lineWrap", ui->postWindowLineWrap->isChecked());
+    s->endGroup();
+}
+
+void EditorPage::onCurrentTabChanged(int)
+{
+    if (ui->tabs->currentWidget() == ui->colorsTab)
+        updateFontPreview();
+}
+
+void EditorPage::onMonospaceToggle(bool onlyMonospaced)
+{
+    populateFontList( onlyMonospaced );
+}
+
+void EditorPage::updateFontPreview()
+{
+    if (ui->tabs->currentWidget() == ui->colorsTab)
+        ui->textFormats->setFont( constructFont() );
+}
+
+QFont EditorPage::constructFont()
+{
+    QString family = ui->fontCombo->currentText();
+    int size = ui->fontSize->value();
+    bool antialias = (ui->fontAntialias->checkState() == Qt::Checked);
+
+    QFont font(family, size);
+    font.setStyleHint( QFont::TypeWriter );
+
+    if (!antialias)
+        font.setStyleStrategy(QFont::StyleStrategy(font.styleStrategy() | QFont::NoAntialias));
+
+    return font;
+}
+
+QTreeWidgetItem * EditorPage::addTextFormat
+( QTreeWidgetItem * parent, const QString & name, const QString &key,
+  const QTextCharFormat & format, const QTextCharFormat &defaultFormat )
+{
+    QTreeWidgetItem *item = new QTreeWidgetItem();
+    item->setText( 0, name );
+    item->setData( 0, TextFormatConfigKeyRole, key );
+    item->setData( 0, TextFormatRole, QVariant::fromValue(format) );
+    item->setData( 0, DefaultTextFormatRole, QVariant::fromValue(defaultFormat) );
+    updateTextFormatDisplay( item );
+
+    if (!parent)
+        parent = ui->textFormats->invisibleRootItem();
+
+    parent->addChild(item);
+
+    return item;
+}
+
+void EditorPage::updateTextFormatDisplay( QTreeWidgetItem *item )
+{
+    QTextCharFormat format = item->data( 0, DefaultTextFormatRole ).value<QTextCharFormat>();
+    format.merge( item->data( 0, TextFormatRole ).value<QTextCharFormat>() );
+
+    QBrush fg = format.foreground();
+    if ( fg != Qt::NoBrush)
+        item->setForeground( 0, fg );
+    else
+        item->setData( 0, Qt::ForegroundRole, QVariant() );
+
+    QBrush bg = format.background();
+    if ( bg != Qt::NoBrush)
+        item->setBackground( 0, bg );
+    else
+        item->setData( 0, Qt::BackgroundRole, QVariant() );
+
+    QFont f;
+    if (format.hasProperty(QTextFormat::FontItalic))
+        f.setItalic( format.fontItalic() );
+    if (format.hasProperty(QTextFormat::FontWeight))
+        f.setWeight( format.fontWeight() );
+
+    item->setFont( 0, f );
+}
+
+QTextCharFormat EditorPage::constructTextFormat()
+{
+    QTextCharFormat format;
+
+    QBrush fg = ui->fgPicker->brush();
+    if ( fg.style() != Qt::NoBrush)
+        format.setForeground(fg);
+
+    QBrush bg = ui->bgPicker->brush();
+    if (bg.style() != Qt::NoBrush)
+        format.setBackground(bg);
+
+    if (ui->italicOption->isChecked())
+        format.setFontItalic(true);
+
+    if (ui->boldOption->isChecked())
+        format.setFontWeight(QFont::Bold);
+
+    return format;
+}
+
+void EditorPage::updateTextFormatEdit()
+{
+    QTreeWidgetItem *item = ui->textFormats->currentItem();
+    bool canEdit = item && item->data(0, TextFormatConfigKeyRole).isValid();
+    ui->textFormatEdit->setEnabled(canEdit);
+
+    if (!canEdit) {
+        ui->fgPicker->setBrush( QBrush() );
+        ui->bgPicker->setBrush( QBrush() );
+        ui->italicOption->setChecked(false);
+        ui->italicOption->setChecked(false);
+    }
+    else {
+        QTextCharFormat format = item->data( 0, TextFormatRole).value<QTextCharFormat>();
+        ui->fgPicker->setBrush( format.foreground() );
+        ui->bgPicker->setBrush( format.background() );
+        ui->italicOption->setChecked( format.fontItalic() );
+        ui->boldOption->setChecked( format.fontWeight() == QFont::Bold );
+    }
+}
+
+void EditorPage::updateTextFormatDisplay()
+{
+    QTreeWidgetItem *item = ui->textFormats->currentItem();
+    bool canEdit = item && item->data(0, TextFormatConfigKeyRole).isValid();
+    if (!canEdit)
+        return;
+
+    QTextCharFormat format = constructTextFormat();
+    item->setData( 0, TextFormatRole, QVariant::fromValue(format) );
+
+    if (item != mCommonTextFormatItem)
+        updateTextFormatDisplay( item );
+    else
+        updateTextFormatDisplayCommons();
+}
+
+void EditorPage::updateTextFormatDisplayCommons()
+{
+    QTextCharFormat commonFormat =
+            mCommonTextFormatItem->data(0, TextFormatRole).value<QTextCharFormat>();
+
+    QPalette palette;
+
+    QBrush fg = commonFormat.foreground();
+    if ( fg != Qt::NoBrush)
+        palette.setBrush( QPalette::Text, fg );
+
+    QBrush bg = commonFormat.background();
+    if (bg != Qt::NoBrush)
+        palette.setBrush( QPalette::Base, bg );
+
+    ui->textFormats->setPalette(palette);
+}
+
+}} // namespace ScIDE::Settings
diff --git a/editors/sc-ide/widgets/settings/editor_page.hpp b/editors/sc-ide/widgets/settings/editor_page.hpp
new file mode 100644
index 0000000..5852bc1
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/editor_page.hpp
@@ -0,0 +1,94 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_SETTINGS_EDITOR_PAGE_HPP_INCLUDED
+#define SCIDE_WIDGETS_SETTINGS_EDITOR_PAGE_HPP_INCLUDED
+
+#include <QWidget>
+#include <QTreeWidget>
+#include <QTreeWidgetItem>
+#include <QTextCharFormat>
+
+class QFontDatabase;
+
+namespace Ui {
+    class EditorConfigPage;
+}
+
+namespace ScIDE { namespace Settings {
+
+class Manager;
+
+class EditorPage : public QWidget
+{
+    Q_OBJECT
+
+public:
+    EditorPage(QWidget *parent = 0);
+    ~EditorPage();
+
+public Q_SLOTS:
+    void load( Manager * );
+    void store( Manager * );
+
+private Q_SLOTS:
+    void onCurrentTabChanged(int);
+
+    void onMonospaceToggle(bool);
+    void updateFontPreview();
+
+    void updateTextFormatEdit();
+    void updateTextFormatDisplay();
+    void updateTextFormatDisplayCommons();
+
+private:
+    enum TextFormatListRole {
+        TextFormatConfigKeyRole = Qt::UserRole,
+        TextFormatRole,
+        DefaultTextFormatRole
+    };
+
+    void loadGeneralTextFormats( Manager * );
+    void loadSyntaxTextFormats( Manager * );
+
+    void populateFontList( bool onlyMonospaced = false );
+
+    QFont constructFont();
+    QTextCharFormat constructTextFormat();
+
+    QTreeWidgetItem * addTextFormat
+    ( QTreeWidgetItem * parent, const QString & name, const QString &key,
+      const QTextCharFormat & format, const QTextCharFormat & defaultFormat = QTextCharFormat() );
+
+    void updateTextFormatDisplay( QTreeWidgetItem * );
+
+    QFontDatabase *fontDatabase;
+
+    Ui::EditorConfigPage *ui;
+
+    QStringList mFormatKeys;
+    QTreeWidgetItem *mGeneralFormatsItem;
+    QTreeWidgetItem *mSyntaxFormatsItem;
+    QTreeWidgetItem *mCommonTextFormatItem;
+};
+
+}} // namespace ScIDE::Settings
+
+#endif // SCIDE_WIDGETS_SETTINGS_EDITOR_PAGE_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/settings/general_page.cpp b/editors/sc-ide/widgets/settings/general_page.cpp
new file mode 100644
index 0000000..2e4bf91
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/general_page.cpp
@@ -0,0 +1,85 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "general_page.hpp"
+#include "ui_settings_general.h"
+#include "../../core/settings/manager.hpp"
+
+Q_DECLARE_METATYPE(QAction*)
+Q_DECLARE_METATYPE(QKeySequence)
+
+namespace ScIDE { namespace Settings {
+
+GeneralPage::GeneralPage(QWidget *parent) :
+    QWidget(parent),
+    ui( new Ui::GeneralConfigPage )
+{
+    ui->setupUi(this);
+
+    connect( ui->startSessionName, SIGNAL(textChanged(QString)),
+             this, SLOT(onStartSessionNameChanged(QString)) );
+}
+
+GeneralPage::~GeneralPage()
+{
+    delete ui;
+}
+
+void GeneralPage::load( Manager *settings )
+{
+    QString startSessionName = settings->value("IDE/startWithSession").toString();
+    if (startSessionName.isEmpty())
+        ui->startNewSessionOption->setChecked(true);
+    else if (startSessionName == "last")
+        ui->startLastSessionOption->setChecked(true);
+    else {
+        ui->startNamedSessionOption->setChecked(true);
+        ui->startSessionName->setText(startSessionName);
+    }
+}
+
+void GeneralPage::store( Manager *settings )
+{
+    settings->beginGroup("IDE");
+
+    QWidget *checkedOption = ui->startSessionOptions->checkedButton();
+
+    if (checkedOption == ui->startLastSessionOption) {
+        settings->setValue("startWithSession", "last");
+    }
+    else if (checkedOption == ui->startNamedSessionOption &&
+             !ui->startSessionName->text().isEmpty())
+    {
+        settings->setValue("startWithSession", ui->startSessionName->text());
+    }
+    else {
+        settings->setValue("startWithSession", "");
+    }
+
+    settings->endGroup();
+}
+
+void GeneralPage::onStartSessionNameChanged( const QString & text )
+{
+    if (!text.isEmpty())
+        ui->startNamedSessionOption->setChecked(true);
+}
+
+}} // namespace ScIDE::Settings
diff --git a/editors/sc-ide/widgets/settings/general_page.hpp b/editors/sc-ide/widgets/settings/general_page.hpp
new file mode 100644
index 0000000..45a3320
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/general_page.hpp
@@ -0,0 +1,55 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_SETTINGS_GENERAL_PAGE_HPP_INCLUDED
+#define SCIDE_WIDGETS_SETTINGS_GENERAL_PAGE_HPP_INCLUDED
+
+#include <QWidget>
+
+namespace Ui {
+    class GeneralConfigPage;
+}
+
+namespace ScIDE { namespace Settings {
+
+class Manager;
+
+class GeneralPage : public QWidget
+{
+    Q_OBJECT
+
+public:
+    GeneralPage(QWidget *parent = 0);
+    ~GeneralPage();
+
+public slots:
+    void load( Manager * );
+    void store( Manager * );
+
+private slots:
+    void onStartSessionNameChanged( const QString & text );
+
+private:
+    Ui::GeneralConfigPage *ui;
+};
+
+}} // namespace ScIDE::Settings
+
+#endif // SCIDE_WIDGETS_SETTINGS_GENERAL_PAGE_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/settings/sclang_page.cpp b/editors/sc-ide/widgets/settings/sclang_page.cpp
new file mode 100644
index 0000000..57c1dc6
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/sclang_page.cpp
@@ -0,0 +1,227 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include <QDebug>
+#include <QMessageBox>
+
+#include <fstream>
+
+#include "sclang_page.hpp"
+#include "ui_settings_sclang.h"
+#include "../../core/settings/manager.hpp"
+
+#include "include/common/SC_DirUtils.h"
+
+#include "yaml-cpp/yaml.h"
+
+
+namespace ScIDE { namespace Settings {
+
+SclangPage::SclangPage(QWidget *parent) :
+    QWidget(parent),
+    ui( new Ui::SclangConfigPage )
+{
+    ui->setupUi(this);
+
+    ui->sclang_add_include->setIcon( QIcon::fromTheme("list-add") );
+    ui->sclang_add_exclude->setIcon( QIcon::fromTheme("list-add") );
+    ui->sclang_remove_include->setIcon( QIcon::fromTheme("list-remove") );
+    ui->sclang_remove_exclude->setIcon( QIcon::fromTheme("list-remove") );
+
+    ui->runtimeDir->setFileMode(QFileDialog::Directory);
+
+    connect(ui->sclang_add_include, SIGNAL(clicked()), this, SLOT(addIncludePath()));
+    connect(ui->sclang_add_exclude, SIGNAL(clicked()), this, SLOT(addExcludePath()));
+
+    connect(ui->sclang_remove_include, SIGNAL(clicked()), this, SLOT(removeIncludePath()));
+    connect(ui->sclang_remove_exclude, SIGNAL(clicked()), this, SLOT(removeExcludePath()));
+
+    connect(ui->sclang_post_inline_warnings, SIGNAL(stateChanged(int)), this, SLOT(markSclangConfigDirty()));
+}
+
+SclangPage::~SclangPage()
+{
+    delete ui;
+}
+
+void SclangPage::load( Manager *s )
+{
+    s->beginGroup("IDE/interpreter");
+    ui->autoStart->setChecked( s->value("autoStart").toBool() );
+    ui->runtimeDir->setText( s->value("runtimeDir").toString() );
+    s->endGroup();
+
+    readLanguageConfig();
+}
+
+void SclangPage::store( Manager *s )
+{
+    s->beginGroup("IDE/interpreter");
+    s->setValue("autoStart", ui->autoStart->isChecked());
+    s->setValue("runtimeDir", ui->runtimeDir->text());
+    s->endGroup();
+
+    writeLanguageConfig();
+}
+
+void SclangPage::addIncludePath()
+{
+    QString path = QFileDialog::getExistingDirectory(this, tr("ScLang include directories"));
+    if (path.size())
+        ui->sclang_include_directories->addItem(path);
+    sclangConfigDirty = true;
+}
+
+void SclangPage::removeIncludePath()
+{
+    foreach (QListWidgetItem * item, ui->sclang_include_directories->selectedItems() ) {
+        ui->sclang_include_directories->removeItemWidget(item);
+        delete item;
+    }
+    sclangConfigDirty = true;
+}
+
+void SclangPage::addExcludePath()
+{
+    QString path = QFileDialog::getExistingDirectory(this, tr("ScLang exclude directories"));
+    if (path.size())
+        ui->sclang_exclude_directories->addItem(path);
+    sclangConfigDirty = true;
+}
+
+void SclangPage::removeExcludePath()
+{
+    foreach (QListWidgetItem * item, ui->sclang_exclude_directories->selectedItems() ) {
+        ui->sclang_exclude_directories->removeItemWidget(item);
+        delete item;
+    }
+    sclangConfigDirty = true;
+}
+
+void SclangPage::readLanguageConfig()
+{
+    // LATER: watch for changes
+
+    QString configFile = languageConfigFile();
+
+    QFileInfo configFileInfo(configFile);
+    const bool configFileExists = configFileInfo.exists();
+
+    if (!configFileExists)
+        return;
+
+    using namespace YAML;
+    try {
+        std::ifstream fin(configFile.toStdString().c_str());
+        Parser parser(fin);
+
+        Node doc;
+        while(parser.GetNextDocument(doc)) {
+            const Node * includePaths = doc.FindValue("includePaths");
+            if (includePaths && includePaths->Type() == NodeType::Sequence) {
+                for (Iterator it = includePaths->begin(); it != includePaths->end(); ++it) {
+                    Node const & pathNode = *it;
+                    if (pathNode.Type() != NodeType::Scalar)
+                        continue;
+                    std::string path;
+                    pathNode.GetScalar(path);
+                    ui->sclang_include_directories->addItem(QString(path.c_str()));
+                }
+            }
+
+            const Node * excludePaths = doc.FindValue("excludePaths");
+            if (excludePaths && excludePaths->Type() == NodeType::Sequence) {
+                for (Iterator it = excludePaths->begin(); it != excludePaths->end(); ++it) {
+                    Node const & pathNode = *it;
+                    if (pathNode.Type() != NodeType::Scalar)
+                        continue;
+                    std::string path;
+                    pathNode.GetScalar(path);
+                    ui->sclang_exclude_directories->addItem(QString(path.c_str()));
+                }
+            }
+
+            const Node * inlineWarnings = doc.FindValue("postInlineWarnings");
+            if (inlineWarnings) {
+                try {
+                    bool postInlineWarnings = inlineWarnings->to<bool>();
+                    ui->sclang_post_inline_warnings->setChecked(postInlineWarnings);
+                } catch(...) {
+                    qDebug() << "Warning: Cannot parse config file entry \"postInlineWarnings\"";
+                }
+            }
+        }
+    } catch (std::exception & e) {
+    }
+
+    sclangConfigDirty = false;
+}
+
+void SclangPage::writeLanguageConfig()
+{
+    if (!sclangConfigDirty)
+        return;
+
+    using namespace YAML; using std::ofstream;
+    Emitter out;
+    out.SetIndent(4);
+    out.SetMapFormat(Block);
+    out.SetSeqFormat(Block);
+    out.SetBoolFormat(TrueFalseBool);
+
+    out << BeginMap;
+
+    out << Key << "includePaths";
+    out << Value << BeginSeq;
+
+    for (int i = 0; i != ui->sclang_include_directories->count(); ++i)
+        out << ui->sclang_include_directories->item(i)->text().toStdString();
+    out << EndSeq;
+
+    out << Key << "excludePaths";
+    out << Value << BeginSeq;
+    for (int i = 0; i != ui->sclang_exclude_directories->count(); ++i)
+        out << ui->sclang_exclude_directories->item(i)->text().toStdString();
+    out << EndSeq;
+
+    out << Key << "postInlineWarnings";
+    out << Value << (ui->sclang_post_inline_warnings->checkState() == Qt::Checked);
+
+    out << EndMap;
+    ofstream fout(languageConfigFile().toStdString().c_str());
+    fout << out.c_str();
+
+    QMessageBox::information(this, tr("ScLang configuration file updated"),
+                             tr("The ScLang configuration has been updated. "
+                                "Recompile the class library to apply changes."));
+
+    sclangConfigDirty = false;
+}
+
+QString SclangPage::languageConfigFile()
+{
+    char configDir[PATH_MAX];
+    sc_GetUserConfigDirectory(configDir, PATH_MAX);
+
+    QString configFile = QString(configDir) + "/" + QString("sclang_conf.yaml");
+    return configFile;
+}
+
+}} // namespace ScIDE::Settings
diff --git a/editors/sc-ide/widgets/settings/sclang_page.hpp b/editors/sc-ide/widgets/settings/sclang_page.hpp
new file mode 100644
index 0000000..73a8224
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/sclang_page.hpp
@@ -0,0 +1,66 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_SETTINGS_SCLANG_PAGE_HPP_INCLUDED
+#define SCIDE_WIDGETS_SETTINGS_SCLANG_PAGE_HPP_INCLUDED
+
+#include <QWidget>
+
+namespace Ui {
+    class SclangConfigPage;
+}
+
+namespace ScIDE { namespace Settings {
+
+class Manager;
+
+class SclangPage : public QWidget
+{
+    Q_OBJECT
+
+public:
+    SclangPage(QWidget *parent = 0);
+    ~SclangPage();
+
+public Q_SLOTS:
+    void load( Manager * );
+    void store( Manager * );
+
+private Q_SLOTS:
+    void addIncludePath();
+    void removeIncludePath();
+
+    void addExcludePath();
+    void removeExcludePath();
+    void markSclangConfigDirty() { sclangConfigDirty = true; }
+
+private:
+    void readLanguageConfig();
+    void writeLanguageConfig();
+    QString languageConfigFile();
+
+    Ui::SclangConfigPage *ui;
+
+    bool sclangConfigDirty;
+};
+
+}} // namespace ScIDE::Settings
+
+#endif // SCIDE_WIDGETS_SETTINGS_SCLANG_PAGE_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/settings/shortcuts_page.cpp b/editors/sc-ide/widgets/settings/shortcuts_page.cpp
new file mode 100644
index 0000000..36ab19c
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/shortcuts_page.cpp
@@ -0,0 +1,260 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "shortcuts_page.hpp"
+#include "ui_settings_shortcuts.h"
+#include "../../core/settings/manager.hpp"
+#include "../../core/main.hpp"
+
+#include <QHeaderView>
+#include <QTreeWidget>
+#include <QTreeWidgetItem>
+#include <QKeyEvent>
+#include <QMessageBox>
+
+Q_DECLARE_METATYPE(QAction*)
+Q_DECLARE_METATYPE(QKeySequence)
+
+namespace ScIDE { namespace Settings {
+
+ShortcutsPage::ShortcutsPage(QWidget *parent) :
+    QWidget(parent),
+    ui( new Ui::ShortcutConfigPage )
+{
+    ui->setupUi(this);
+
+    ui->clearSeq->setIcon( style()->standardIcon(QStyle::SP_DockWidgetCloseButton) );
+
+    connect(ui->filter, SIGNAL(textChanged(QString)), this, SLOT(filterBy(QString)));
+    connect(ui->actionTree, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
+            this, SLOT(showItem(QTreeWidgetItem*,QTreeWidgetItem*)));
+
+    // automation
+    connect(ui->defaultOpt, SIGNAL(clicked()), ui->customSeq, SLOT(reset()));
+    connect(ui->customOpt, SIGNAL(clicked()), ui->customSeq, SLOT(setFocus()));
+    connect(ui->customSeq, SIGNAL(editingStarted()), ui->customOpt, SLOT(toggle()));
+    connect(ui->clearSeq, SIGNAL(clicked()), ui->customSeq, SLOT(reset()));
+    connect(ui->clearSeq, SIGNAL(clicked()), ui->customOpt, SLOT(click()));
+
+    // value application
+    connect(ui->defaultOpt, SIGNAL(clicked()), this, SLOT(apply()));
+    connect(ui->customOpt, SIGNAL(clicked()), this, SLOT(apply()));
+    connect(ui->customSeq, SIGNAL(editingFinished()), this, SLOT(apply()));
+}
+
+ShortcutsPage::~ShortcutsPage()
+{
+    delete ui;
+}
+
+void ShortcutsPage::load( Manager *s )
+{
+    ui->actionTree->clear();
+
+    s->beginGroup("IDE/shortcuts");
+
+    const QList<QAction*> & actions = s->actions();
+    foreach (QAction *action, actions)
+        addAction(action, s);
+
+    s->endGroup();
+
+    ui->actionTree->sortByColumn(0, Qt::AscendingOrder);
+    ui->actionTree->header()->resizeSections(QHeaderView::ResizeToContents);
+}
+
+void ShortcutsPage::store( Manager *s )
+{
+    s->beginGroup("IDE/shortcuts");
+
+    s->remove("");
+
+    int c = ui->actionTree->topLevelItemCount();
+    for (int i = 0; i < c; ++i)
+    {
+        QTreeWidgetItem *item = ui->actionTree->topLevelItem(i);
+        QAction *action = item->data(0, ActionRole).value<QAction*>();
+        Q_ASSERT(action);
+
+        QVariant var = item->data(0, CustomSequenceRole);
+        if (var.isValid()) {
+            s->setValue( s->keyForAction(action), var );
+        }
+        else {
+            var = s->defaultValue( s->keyForAction(action) );
+        }
+        action->setShortcut( var.value<QKeySequence>() );
+    }
+
+    s->endGroup();
+}
+
+void ShortcutsPage::addAction( QAction *a, Manager *s )
+{
+    QString description = a->statusTip();
+    if (description.isEmpty())
+        description = a->toolTip();
+
+    QTreeWidgetItem *item = new QTreeWidgetItem;
+    item->setIcon(0, a->icon());
+    item->setText(0, a->text().remove('&'));
+    item->setText(2, description );
+
+    QString key = s->keyForAction(a);
+
+    item->setData(0, ActionRole, QVariant::fromValue<QAction*>(a));
+
+    item->setData(0, DefaultSequenceRole, s->defaultValue(key));
+
+    if (s->isOverridden(key)) {
+        // For reason of performance, ensure the variant holds a QKeySequence
+        QKeySequence seq = s->value(key).value<QKeySequence>();
+        item->setData(0, CustomSequenceRole, QVariant::fromValue<QKeySequence>(seq) );
+    }
+
+    updateItem(item);
+
+    ui->actionTree->addTopLevelItem(item);
+}
+
+void ShortcutsPage::filterBy( const QString &str )
+{
+    int c = ui->actionTree->topLevelItemCount();
+    if (str.isEmpty())
+    {
+        for (int i = 0; i < c; ++i)
+            ui->actionTree->topLevelItem(i)->setHidden(false);
+    }
+    else
+    {
+        for (int i = 0; i < c; ++i)
+        {
+            QTreeWidgetItem *item = ui->actionTree->topLevelItem(i);
+            bool visible =
+                item->text(0).contains(str, Qt::CaseInsensitive)
+                || item->text(2).contains(str, Qt::CaseInsensitive);
+            item->setHidden(!visible);
+        }
+    }
+}
+
+void ShortcutsPage::showItem( QTreeWidgetItem *item, QTreeWidgetItem *prev )
+{
+    QVariant defaultSeqVar = item ? item->data(0, DefaultSequenceRole) : QVariant();
+    QString defaultSeq = defaultSeqVar.value<QKeySequence>().toString(QKeySequence::NativeText);
+    ui->defaultSeq->setText(defaultSeq);
+
+    QVariant customSeqVar = item ? item->data(0, CustomSequenceRole) : QVariant();
+    ui->customSeq->setSequence( customSeqVar.value<QKeySequence>() );
+
+    if (customSeqVar.isValid())
+        ui->customOpt->setChecked(true);
+    else
+        ui->defaultOpt->setChecked(true);
+}
+
+void ShortcutsPage::apply()
+{
+    applyTo( ui->actionTree->currentItem() );
+}
+
+void ShortcutsPage::applyTo( QTreeWidgetItem *targetItem )
+{
+    if (!targetItem) return;
+
+    bool seqIsCustom = ui->customOpt->isChecked();
+
+    QKeySequence currentSeq =
+            seqIsCustom
+            ? ui->customSeq->sequence()
+            : targetItem->data(0, DefaultSequenceRole).value<QKeySequence>();
+
+    // Check for duplicates
+    if (!currentSeq.isEmpty()) {
+        int itemCount = ui->actionTree->topLevelItemCount();
+        for (int itemIdx = 0; itemIdx < itemCount; ++itemIdx) {
+            QTreeWidgetItem *item = ui->actionTree->topLevelItem(itemIdx);
+            if (item == targetItem)
+                continue;
+            QKeySequence itemSeq = activeItemSequence(item);
+            if (currentSeq == itemSeq) {
+                // Got a duplicate sequence
+                if (confirmOverride(currentSeq, item)) {
+                    item->setData(0, CustomSequenceRole, QVariant::fromValue(QKeySequence()));
+                    updateItem(item);
+                } else {
+                    seqIsCustom = true;
+                    currentSeq = QKeySequence();
+                    ui->customOpt->setChecked(true);
+                    ui->customSeq->clear();
+                }
+                break;
+            }
+        }
+    }
+
+    if (seqIsCustom) {
+        targetItem->setData(0, CustomSequenceRole, QVariant::fromValue(currentSeq));
+    }
+    else {
+        targetItem->setData(0, CustomSequenceRole, QVariant());
+    }
+
+    updateItem(targetItem);
+}
+
+bool ShortcutsPage::confirmOverride( const QKeySequence &duplicateSequence,
+                                     QTreeWidgetItem *duplicateItem )
+{
+    QString warningString = tr("Shortcut '%1' has already been assigned to '%2'.\n\n"
+                               "Would you like to override it?");
+
+    warningString = warningString.arg(duplicateSequence, duplicateItem->text(0));
+
+    QMessageBox::StandardButton result =
+            QMessageBox::warning( this,
+                                  tr("Duplicate Shortcut"),
+                                  warningString,
+                                  QMessageBox::Ok | QMessageBox::Cancel,
+                                  QMessageBox::Cancel );
+
+    return result == QMessageBox::Ok;
+}
+
+void ShortcutsPage::updateItem( QTreeWidgetItem *item )
+{
+    QVariant seqData = item->data(0, CustomSequenceRole);
+    if (!seqData.isValid())
+        seqData = item->data(0, DefaultSequenceRole);
+
+    QKeySequence seq = seqData.value<QKeySequence>();
+
+    item->setText(1, seq.toString(QKeySequence::NativeText));
+}
+
+QKeySequence ShortcutsPage::activeItemSequence( QTreeWidgetItem * item )
+{
+    QVariant seqVar = item->data(0, CustomSequenceRole);
+    if (!seqVar.isValid())
+        seqVar = item->data(0, DefaultSequenceRole);
+    return seqVar.value<QKeySequence>();
+}
+
+}} // namespace ScIDE::Settings
diff --git a/editors/sc-ide/widgets/settings/shortcuts_page.hpp b/editors/sc-ide/widgets/settings/shortcuts_page.hpp
new file mode 100644
index 0000000..c26d2a6
--- /dev/null
+++ b/editors/sc-ide/widgets/settings/shortcuts_page.hpp
@@ -0,0 +1,78 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_SETTINGS_SHORTCUTS_PAGE_HPP_INCLUDED
+#define SCIDE_WIDGETS_SETTINGS_SHORTCUTS_PAGE_HPP_INCLUDED
+
+#include <QWidget>
+#include <QStandardItemModel>
+#include <QSortFilterProxyModel>
+
+class QTreeWidgetItem;
+
+namespace Ui {
+    class ShortcutConfigPage;
+}
+
+namespace ScIDE { namespace Settings {
+
+class Manager;
+
+class ShortcutsPage : public QWidget
+{
+    Q_OBJECT
+
+public:
+    ShortcutsPage(QWidget *parent = 0);
+    ~ShortcutsPage();
+
+public Q_SLOTS:
+    void load( Manager * );
+    void store( Manager * );
+    void filterBy( const QString & );
+
+private Q_SLOTS:
+    void showItem( QTreeWidgetItem *, QTreeWidgetItem * );
+    void apply();
+
+private:
+    enum ItemDataRole
+    {
+        ActionRole = Qt::UserRole,
+        SettingsKeyRole,
+        DefaultSequenceRole,
+        CustomSequenceRole,
+        EditedRole
+    };
+
+    void addAction( QAction *, Manager * );
+    void applyTo( QTreeWidgetItem * );
+    void updateItem( QTreeWidgetItem * );
+    QKeySequence activeItemSequence( QTreeWidgetItem * );
+    bool confirmOverride( const QKeySequence & duplicateSequence, QTreeWidgetItem *duplicateItem );
+
+    Ui::ShortcutConfigPage *ui;
+    QStandardItemModel *mActionModel;
+    QSortFilterProxyModel *mFilter;
+};
+
+}} // namespace ScIDE::Settings
+
+#endif // SCIDE_WIDGETS_SETTINGS_SHORTCUTS_PAGE_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/style/style.cpp b/editors/sc-ide/widgets/style/style.cpp
new file mode 100644
index 0000000..a07219e
--- /dev/null
+++ b/editors/sc-ide/widgets/style/style.cpp
@@ -0,0 +1,426 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2010-2012 Jakob Leben
+    Copyright (c) 2012 Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "style.hpp"
+
+#include <QPainter>
+#include <QStyleOption>
+#include <QDockWidget>
+#include <QStyleOptionTabV3>
+#include <QTabBar>
+#include <QToolButton>
+#include <QLayout>
+#include <QDebug>
+
+namespace ScIDE {
+
+inline bool Style::shouldNotHandle(const QWidget* widget) const
+{
+    return widget ? widget->window()->windowType() == Qt::Dialog : false;
+}
+
+void Style::polish ( QWidget * widget )
+{
+    if (shouldNotHandle(widget)) {
+        QProxyStyle::polish(widget);
+        widget->update();
+        widget->updateGeometry();
+        if (widget->layout())
+            widget->layout()->invalidate();
+        return;
+    }
+
+    if (qobject_cast<QDockWidget*>(widget)) {
+        return;
+    }
+    if ( (qobject_cast<QTabBar*>(widget))
+         || (qobject_cast<QToolButton*>(widget)) )
+    {
+        widget->setAttribute(Qt::WA_Hover, true);
+    }
+    else
+        QProxyStyle::polish(widget);
+
+}
+
+void Style::unpolish ( QWidget * widget )
+{
+    QProxyStyle::unpolish(widget);
+}
+
+void Style::drawComplexControl
+( ComplexControl control, const QStyleOptionComplex * option,
+  QPainter * painter, const QWidget * widget ) const
+{
+    if (shouldNotHandle(widget)) {
+        QProxyStyle::drawComplexControl(control, option, painter, widget);
+        return;
+    }
+
+    switch(control) {
+    case QStyle::CC_ToolButton:
+    {
+        // TODO: We only draw either text, or icon, or arrow
+
+        const QToolButton *toolBtn = qobject_cast<const QToolButton*>(widget);
+        if (!toolBtn)
+            break;
+
+        Q_ASSERT(toolBtn);
+
+        const QStyleOptionToolButton *toolOption =
+                static_cast<const QStyleOptionToolButton*>(option);
+
+        painter->save();
+
+        QRect r = option->rect;
+
+        if (option->state & QStyle::State_On) {
+            painter->setBrush( option->palette.color(QPalette::Dark) );
+            painter->setPen( option->palette.color(QPalette::Shadow) );
+            painter->drawRect( r.adjusted(0,0,-1,-1) );
+        }
+        else {
+            bool highlight = option->state & QStyle::State_MouseOver;
+
+            if (highlight) {
+                QColor fill = option->palette.color(QPalette::Button);
+                painter->setBrush(fill);
+                painter->setPen(Qt::NoPen);
+                painter->drawRect(r.adjusted(0,0,0,-1));
+            }
+
+            if (qobject_cast<QTabBar*>(toolBtn->parent())) {
+                if (!highlight) {
+                    QColor fill = option->palette.color(QPalette::Mid);
+                    painter->setBrush(fill);
+                    painter->setPen(Qt::NoPen);
+                    painter->drawRect(r.adjusted(0,0,0,-1));
+                }
+                if (toolBtn->arrowType() == Qt::LeftArrow) {
+                    painter->setPen( option->palette.color(QPalette::Shadow) );
+                    painter->drawLine( option->rect.topLeft(), option->rect.bottomLeft() );
+                }
+            }
+        }
+
+        painter->restore();
+
+        QIcon icon = toolOption->icon;
+        if (!icon.isNull())
+        {
+            QIcon::Mode iconMode =
+                    option->state & QStyle::State_Enabled
+                    ? ( option->state & QStyle::State_MouseOver
+                        ? QIcon::Active
+                        : QIcon::Normal )
+                    : QIcon::Disabled;
+
+            QIcon::State iconState =
+                    option ->state & QStyle::State_Selected
+                    ? QIcon::On : QIcon::Off;
+
+            QPixmap pixmap = icon.pixmap(toolOption->iconSize, iconMode, iconState);
+            QRect pixRect = pixmap.rect();
+            pixRect.moveCenter( option->rect.center() );
+            painter->drawPixmap(pixRect.topLeft(), pixmap);
+        }
+        else {
+            QStyle::PrimitiveElement elem = Style::PE_CustomBase;
+            switch(toolBtn->arrowType()) {
+            case Qt::LeftArrow:
+                elem = PE_IndicatorArrowLeft; break;
+            case Qt::RightArrow:
+                elem = PE_IndicatorArrowRight; break;
+            case Qt::DownArrow:
+                elem = PE_IndicatorArrowDown; break;
+            case Qt::UpArrow:
+                elem = PE_IndicatorArrowUp; break;
+            default:
+                break;
+            }
+            if (elem != Style::PE_CustomBase) {
+                drawPrimitive( elem, option, painter, widget );
+            }
+            else if (!toolOption->text.isEmpty()) {
+                painter->drawText( toolOption->rect,
+                                   Qt::AlignCenter | Qt::TextShowMnemonic,
+                                   toolOption->text );
+            }
+        }
+        return;
+    }
+    default:
+        break;
+    }
+    QProxyStyle::drawComplexControl(control, option, painter, widget);
+}
+
+void Style::drawControl
+( ControlElement element, const QStyleOption * option,
+  QPainter * painter, const QWidget * widget ) const
+{
+    if (shouldNotHandle(widget)) {
+        QProxyStyle::drawControl(element, option, painter, widget);
+        return;
+    }
+
+    switch(element) {
+    case QStyle::CE_TabBarTab: {
+        const QStyleOptionTabV3 *tabOption = static_cast<const QStyleOptionTabV3*>(option);
+
+        painter->save();
+
+        painter->setRenderHint( QPainter::Antialiasing, true );
+
+        bool highlight = tabOption->state & QStyle::State_Selected
+                || tabOption->state & QStyle::State_MouseOver;
+
+        QRectF r = tabOption->rect;
+
+        switch (tabOption->shape) {
+        case QTabBar::RoundedNorth:
+        case QTabBar::TriangularNorth:
+            r.adjust(0.5, 0.5, -0.5, 4);
+            painter->setClipRect( tabOption->rect.adjusted(0,0,0,-1) );
+            break;
+        case QTabBar::RoundedSouth:
+        case QTabBar::TriangularSouth:
+            r.adjust(0.5, -4, -0.5, -0.5);
+            painter->setClipRect( tabOption->rect.adjusted(0,1,0,0) );
+            break;
+        default:
+            qWarning("ScIDE::Style: tab shape not supported");
+            break;
+        }
+
+        QColor fill = option->palette.color(QPalette::Button);
+        QColor edge = option->palette.color(QPalette::Dark);
+        if (highlight)
+            painter->setBrush(fill);
+        else
+            painter->setBrush(Qt::NoBrush);
+        painter->setPen(edge);
+        painter->drawRoundedRect(r, 4, 4);
+
+        painter->restore();
+
+        if (!tabOption->icon.isNull()) {
+            QPixmap pixmap = tabOption->icon.pixmap( tabOption->iconSize );
+            QRect iconRect = pixmap.rect();
+            iconRect.moveCenter( tabOption->rect.center() );
+            int lmargin = 5;
+            if (tabOption->leftButtonSize.width() > 0)
+                lmargin += tabOption->leftButtonSize.width() + 4;
+            iconRect.moveLeft( tabOption->rect.left() + lmargin );
+            painter->drawPixmap( iconRect, pixmap );
+        }
+
+        QRect textRect = subElementRect( QStyle::SE_TabBarTabText, option, widget );
+
+        painter->drawText( textRect,
+                           Qt::AlignCenter | Qt::TextShowMnemonic,
+                           tabOption->text );
+        return;
+    }
+    case CE_Splitter:
+        painter->save();
+        painter->setPen(Qt::NoPen);
+        painter->setBrush(option->palette.color(QPalette::Shadow));
+        painter->drawRect( option->rect );
+        painter->restore();
+        return;
+    default:
+        break;
+    }
+    QProxyStyle::drawControl(element, option, painter, widget);
+}
+
+void Style::drawPrimitive
+( PrimitiveElement element, const QStyleOption * option,
+  QPainter * painter, const QWidget * widget ) const
+{
+    if (shouldNotHandle(widget)) {
+        QProxyStyle::drawPrimitive(element, option, painter, widget);
+        return;
+    }
+
+    switch (element) {
+    case QStyle::PE_IndicatorTabTear:
+        return;
+    case QStyle::PE_FrameTabBarBase: {
+        const QTabBar *tabBar = qobject_cast<const QTabBar*>(widget);
+
+        const QStyleOptionTabBarBase *tabBarBaseOption =
+                static_cast<const QStyleOptionTabBarBase*>(option);
+
+        painter->save();
+
+        painter->setPen(Qt::NoPen);
+
+        if (tabBar) {
+            painter->setBrush( option->palette.color(QPalette::Mid) );
+            painter->drawRect( tabBar->rect() );
+        }
+
+        painter->setBrush( option->palette.color(QPalette::Shadow) );
+        painter->drawRect( option->rect );
+
+        painter->restore();
+        return;
+    }
+    case PE_IndicatorDockWidgetResizeHandle:
+        painter->save();
+        painter->setPen(Qt::NoPen);
+        painter->setBrush(option->palette.color(QPalette::Shadow));
+        painter->drawRect( option->rect );
+        painter->restore();
+        return;
+    default:
+        QProxyStyle::drawPrimitive(element, option, painter, widget);
+    }
+}
+
+QRect Style::subElementRect
+( SubElement element, const QStyleOption * option, const QWidget * widget ) const
+{
+    if (shouldNotHandle(widget)) {
+        return QProxyStyle::subElementRect(element, option, widget);
+    }
+
+    switch(element) {
+    // NOTE: Assuming horizontal tab bar direction
+    case QStyle::SE_TabBarTabRightButton: {
+        QRect r;
+        r.setSize(QSize(16, 16));
+        r.moveCenter(option->rect.center());
+        r.moveRight(option->rect.right() + 1 - 5);
+        return r;
+    }
+    case QStyle::SE_TabBarTabLeftButton: {
+        QRect r;
+        r.setSize(QSize(16, 16));
+        r.moveCenter(option->rect.center());
+        r.moveLeft(option->rect.left() + 5);
+        return r;
+    }
+    case QStyle::SE_TabBarTabText: {
+        const QStyleOptionTabV3 *tabOption = static_cast<const QStyleOptionTabV3*>(option);
+
+        int lMargin = 5;
+        if (tabOption->leftButtonSize.width() > 0)
+            lMargin += tabOption->leftButtonSize.width() + 4;
+        if (!tabOption->icon.isNull())
+            lMargin += tabOption->iconSize.width() + 4;
+
+        int rMargin = 5;
+        if (tabOption->rightButtonSize.width() > 0)
+            rMargin += tabOption->rightButtonSize.width() + 4;
+
+        QRect r = option->rect;
+        r.adjust( lMargin, 0, -rMargin, 0 );
+        return r;
+    }
+    default:
+        return QProxyStyle::subElementRect(element, option, widget);
+    }
+}
+
+QSize Style::sizeFromContents
+( ContentsType type, const QStyleOption * option, const QSize & contentsSize,
+  const QWidget * widget ) const
+{
+    if (shouldNotHandle(widget)) {
+        return QProxyStyle::sizeFromContents(type, option, contentsSize, widget);
+    }
+
+    switch(type) {
+    case QStyle::CT_TabBarTab:
+        return contentsSize;//+ QSize(10, 10);
+    case QStyle::CT_ToolButton:
+        return contentsSize + QSize(10, 10);
+    default:
+        return QProxyStyle::sizeFromContents(type, option, contentsSize, widget);
+    }
+}
+
+int	Style::pixelMetric
+( PixelMetric metric, const QStyleOption * option, const QWidget * widget ) const
+{
+    if (shouldNotHandle(widget)) {
+        return QProxyStyle::pixelMetric(metric, option, widget);
+    }
+
+    switch(metric) {
+    case QStyle::PM_DockWidgetFrameWidth:
+        return 2;
+    case QStyle::PM_DockWidgetSeparatorExtent:
+    case QStyle::PM_SplitterWidth:
+        return 1;
+    case QStyle::PM_TabBarBaseHeight:
+        return 0;
+    case QStyle::PM_TabBarBaseOverlap:
+        return 1;
+    case QStyle::PM_TabBarTabShiftHorizontal:
+    case QStyle::PM_TabBarTabShiftVertical:
+        return 0;
+    case QStyle::PM_TabBarTabHSpace:
+    case QStyle::PM_TabBarTabVSpace:
+        return 10;
+    case QStyle::PM_TabBarTabOverlap:
+        return 0;
+    case QStyle::PM_TabBarIconSize:
+        return 16;
+    case PM_TabCloseIndicatorHeight:
+    case PM_TabCloseIndicatorWidth:
+        return 16;
+    case PM_TabBarScrollButtonWidth:
+        return 24;
+    case PM_TabBar_ScrollButtonOverlap:
+        return 1;
+    case PM_MenuButtonIndicator:
+        return 0;
+    default:
+        break;
+    }
+    return QProxyStyle::pixelMetric(metric, option, widget);
+}
+
+int Style::styleHint
+( StyleHint hint, const QStyleOption * option, const QWidget * widget,
+  QStyleHintReturn * returnData ) const
+{
+    if (shouldNotHandle(widget)) {
+        return QProxyStyle::styleHint(hint, option, widget, returnData);
+    }
+
+    switch(hint) {
+    case SH_TabBar_PreferNoArrows:
+        return 0;
+    case SH_TabBar_ElideMode:
+        return Qt::ElideNone;
+    default:
+        break;
+    }
+    return QProxyStyle::styleHint(hint, option, widget, returnData);
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/style/style.hpp b/editors/sc-ide/widgets/style/style.hpp
new file mode 100644
index 0000000..617ecdd
--- /dev/null
+++ b/editors/sc-ide/widgets/style/style.hpp
@@ -0,0 +1,62 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2010-2012 Jakob Leben
+    Copyright (c) 2012 Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_STYLE_STYLE_HPP_INCLUDED
+#define SCIDE_WIDGETS_STYLE_STYLE_HPP_INCLUDED
+
+#include <QProxyStyle>
+
+namespace ScIDE {
+
+class Style : public QProxyStyle
+{
+public:
+    Style( QStyle *style = 0 ): QProxyStyle(style) {}
+
+    virtual void polish ( QWidget * widget );
+    virtual void unpolish ( QWidget * widget );
+
+    virtual void drawPrimitive
+    ( PrimitiveElement, const QStyleOption *, QPainter *, const QWidget * = 0 ) const;
+
+    virtual void drawControl
+    ( ControlElement, const QStyleOption *, QPainter *, const QWidget * = 0 ) const;
+
+    virtual void drawComplexControl
+    ( ComplexControl, const QStyleOptionComplex *, QPainter *, const QWidget * = 0 ) const;
+
+    virtual QRect subElementRect ( SubElement, const QStyleOption *, const QWidget * = 0 ) const;
+
+    virtual QSize sizeFromContents
+    ( ContentsType, const QStyleOption *, const QSize & , const QWidget * = 0 ) const;
+
+    virtual int pixelMetric ( PixelMetric, const QStyleOption * = 0, const QWidget * = 0 ) const;
+
+    virtual int styleHint ( StyleHint, const QStyleOption * = 0, const QWidget * = 0,
+                            QStyleHintReturn * = 0 ) const;
+
+private:
+    bool shouldNotHandle(const QWidget *widget) const;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_STYLE_STYLE_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/tool_box.hpp b/editors/sc-ide/widgets/tool_box.hpp
new file mode 100644
index 0000000..ae6f89e
--- /dev/null
+++ b/editors/sc-ide/widgets/tool_box.hpp
@@ -0,0 +1,74 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_TOOL_BOX_HPP_INCLUDED
+#define SCIDE_WIDGETS_TOOL_BOX_HPP_INCLUDED
+
+#include <QtCollider/layouts/stack_layout.hpp>
+
+#include <QWidget>
+#include <QToolButton>
+#include <QHBoxLayout>
+#include <QStyle>
+
+namespace ScIDE {
+
+class ToolBox : public QWidget
+{
+    Q_OBJECT
+
+public:
+    ToolBox( QWidget * parent = 0 ): QWidget(parent)
+    {
+        mCloseBtn = new QToolButton;
+        mCloseBtn->setIcon( style()->standardIcon(QStyle::SP_TitleBarCloseButton) );
+        mCloseBtn->setText("X");
+        mCloseBtn->setAutoRaise(true);
+
+        mStack = new QtCollider::StackLayout;
+
+        QHBoxLayout *layout = new QHBoxLayout;
+        layout->setContentsMargins(2,2,2,2);
+        layout->addWidget(mCloseBtn, 0, Qt::AlignTop | Qt::AlignLeft);
+        layout->addLayout(mStack);
+
+        setLayout(layout);
+    }
+
+    QAbstractButton *closeButton() { return mCloseBtn; }
+
+    void addWidget ( QWidget *w ) { mStack->addWidget(w); }
+
+    int currentIndex () const { return mStack->currentIndex(); }
+
+    QWidget * currentWidget() const { return mStack->currentWidget(); }
+
+    void setCurrentWidget ( QWidget *w ) { mStack->setCurrentWidget(w); }
+
+    void setCurrentIndex ( int i ) { mStack->setCurrentIndex(i); }
+
+private:
+    QtCollider::StackLayout *mStack;
+    QToolButton *mCloseBtn;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/widgets/util/color_widget.hpp b/editors/sc-ide/widgets/util/color_widget.hpp
new file mode 100644
index 0000000..42eff47
--- /dev/null
+++ b/editors/sc-ide/widgets/util/color_widget.hpp
@@ -0,0 +1,109 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_UTIL_COLOR_WIDGET_HPP_INCLUDED
+#define SCIDE_WIDGETS_UTIL_COLOR_WIDGET_HPP_INCLUDED
+
+#include <QLabel>
+#include <QColorDialog>
+#include <QPainter>
+
+namespace ScIDE {
+
+class ColorWidget : public QLabel
+{
+    Q_OBJECT
+
+public:
+    ColorWidget(QWidget *parent = 0) : QLabel(parent)
+    {
+        setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    }
+
+    void setColor ( const QColor & color )
+    {
+        mBrush.setColor(color);
+        mBrush.setStyle(Qt::SolidPattern);
+        update();
+        emit colorChanged( mBrush.color() );
+        emit brushChanged( mBrush );
+    }
+
+    void setBrush ( const QBrush & brush )
+    {
+        mBrush = brush;
+        update();
+        emit colorChanged( mBrush.color() );
+        emit brushChanged( mBrush );
+    }
+
+    QColor color () const
+    {
+        return mBrush.color();
+    }
+
+    QBrush brush () const
+    {
+        return mBrush;
+    }
+
+public slots:
+
+    void clear()
+    {
+        setBrush( QBrush() );
+    }
+
+signals:
+    void colorChanged( const QColor & );
+    void brushChanged( const QBrush & );
+    void colorPicked( const QColor & );
+
+protected:
+    virtual void mouseReleaseEvent (QMouseEvent *)
+    {
+        QColor c = QColorDialog::getColor(color(), this);
+        if (c.isValid()) {
+            setColor(c);
+            emit colorPicked( c );
+        }
+    }
+
+    virtual void paintEvent (QPaintEvent*)
+    {
+        QBrush brush = mBrush;
+        if (brush.style() == Qt::NoBrush) {
+            brush.setColor(palette().color(QPalette::WindowText));
+            brush.setStyle( Qt::BDiagPattern );
+        }
+
+        QPainter painter(this);
+        painter.setBrush(brush);
+        painter.setPen(palette().color(QPalette::WindowText));
+        painter.drawRect(rect().adjusted(0,0,-1,-1));
+    }
+
+private:
+    QBrush mBrush;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_UTIL_COLOR_WIDGET_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/util/docklet.cpp b/editors/sc-ide/widgets/util/docklet.cpp
new file mode 100644
index 0000000..fa2233d
--- /dev/null
+++ b/editors/sc-ide/widgets/util/docklet.cpp
@@ -0,0 +1,315 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#define QT_NO_DEBUG_OUTPUT
+
+#include "docklet.hpp"
+
+#include <QWidget>
+#include <QToolButton>
+#include <QLabel>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QIcon>
+#include <QAction>
+#include <QMenu>
+#include <QPainter>
+#include <QStyle>
+#include <QFontMetrics>
+#include <QEvent>
+#include <QDebug>
+
+namespace ScIDE {
+
+DockletToolBar::DockletToolBar(const QString &title)
+{
+    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+
+    mOptionsMenu = new QMenu(this);
+
+    QToolButton *optionsBtn = new QToolButton;
+    optionsBtn->setIcon( optionsBtn->style()->standardIcon(QStyle::SP_TitleBarNormalButton) );
+    optionsBtn->setIconSize( QSize(16,16) );
+    optionsBtn->setMenu( mOptionsMenu );
+    optionsBtn->setPopupMode( QToolButton::InstantPopup );
+    optionsBtn->setToolButtonStyle( Qt::ToolButtonIconOnly );
+    optionsBtn->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+
+    QLabel *titleLabel = new QLabel(title);
+    titleLabel->setMargin(5);
+    titleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
+
+    QHBoxLayout *l = new QHBoxLayout();
+    l->setContentsMargins(0,0,0,0);
+    l->setSpacing(0);
+    l->addWidget( optionsBtn );
+    l->addWidget( titleLabel );
+    setLayout(l);
+}
+
+void DockletToolBar::addAction (QAction *action)
+{
+    QToolButton *btn = new QToolButton;
+    btn->setIconSize( QSize(16,16) );
+    btn->setDefaultAction( action );
+    if (!btn->icon().isNull())
+        btn->setToolButtonStyle( Qt::ToolButtonIconOnly );
+    btn->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+    if (layout())
+        layout()->addWidget( btn );
+}
+
+void DockletToolBar::addWidget (QWidget *widget, int stretch)
+{
+    static_cast<QHBoxLayout*>(layout())->addWidget(widget, stretch);
+}
+
+void DockletToolBar::paintEvent( QPaintEvent *event )
+{
+    QPainter painter(this);
+
+    QRect r = rect();
+
+    painter.setBrush( palette().color(QPalette::Mid) );
+    painter.setPen(Qt::NoPen);
+    painter.drawRect(r);
+
+    painter.setPen( palette().color(QPalette::Shadow) );
+    painter.drawLine( r.bottomLeft(), r.bottomRight() );
+
+    //painter.setPen( palette().color(QPalette::Mid).lighter(120) );
+    //painter.drawLine( r.topLeft(), r.topRight() );
+}
+
+
+static void updateWindowState( QWidget * window, QDockWidget::DockWidgetFeatures features )
+{
+    Qt::WindowFlags flags = window->windowFlags();
+    if (features & QDockWidget::DockWidgetClosable)
+        flags |= Qt::WindowCloseButtonHint;
+    else
+        flags &= ~Qt::WindowCloseButtonHint;
+    window->setWindowFlags( flags );
+}
+
+Docklet::Docklet( const QString & title, QWidget * parent ):
+    QObject(parent),
+    mWindow(0),
+    mWidget(0)
+{
+    mDockWidget = new QDockWidget(title, parent);
+    mDockWidget->installEventFilter(this);
+
+    mToolBar = new DockletToolBar(title);
+    mDockWidget->setTitleBarWidget(mToolBar);
+
+    QMenu *optionsMenu = mToolBar->optionsMenu();
+    QAction *action;
+
+    QDockWidget::DockWidgetFeatures features = mDockWidget->features();
+
+    mDockAction = action = optionsMenu->addAction(tr("Undock"));
+    action->setEnabled( features & QDockWidget::DockWidgetFloatable );
+    connect( action, SIGNAL(triggered(bool)), this, SLOT(toggleFloating()) );
+
+    mDetachAction = action = optionsMenu->addAction(tr("Detach"));
+    action->setEnabled( features & QDockWidget::DockWidgetFloatable );
+    connect( action, SIGNAL(triggered(bool)), this, SLOT(toggleDetached()) );
+
+    action = optionsMenu->addAction(tr("Close"));
+    action->setEnabled( features & QDockWidget::DockWidgetClosable );
+    connect( action, SIGNAL(triggered(bool)), this, SLOT(close()) );
+
+    mVisibilityAction = action = new QAction(title, this);
+    action->setCheckable(true);
+    connect( action, SIGNAL(triggered(bool)), this, SLOT(setVisible(bool)) );
+
+    connect( mDockWidget, SIGNAL(topLevelChanged(bool)), this, SLOT(updateDockAction()) );
+    connect( mDockWidget, SIGNAL(featuresChanged(QDockWidget::DockWidgetFeatures)),
+             this, SLOT(onFeaturesChanged(QDockWidget::DockWidgetFeatures)) );
+}
+
+void Docklet::toggleFloating()
+{
+    bool undock = !(isDetached() || mDockWidget->isFloating());
+
+    // WARNING: QDockWidget is broken: it internally caches undocked geometry,
+    // but only when resized, not when moved.
+    // Thus QDockWidget::setFloating may potentially restore wrong geometry,
+    // in turn corrupting also our own mUndockedGeom via event filtering!
+    // So take measures to remedy that:
+
+    QRect undockedGeom = mUndockedGeom;
+
+    QWidget *container = currentContainer();
+    if (container != mDockWidget) {
+        container->hide();
+        setCurrentContainer(DockableContainer);
+    }
+
+    mDockWidget->setFloating( undock );
+    mDockWidget->show();
+
+    if (undock) {
+        qDebug() << "dock: set geom (toggleFloating):" << undockedGeom << this;
+        mDockWidget->setGeometry( undockedGeom );
+    }
+
+    updateDockAction();
+}
+
+void Docklet::toggleDetached()
+{
+    setDetached( !isDetached() );
+}
+
+void Docklet::setDetached( bool detach )
+{
+    if (isDetached() == detach)
+        return;
+
+    Q_ASSERT(!isDetached() || mWindow != NULL);
+
+    QRect undockedGeom = mUndockedGeom;
+
+    currentContainer()->hide();
+
+    setCurrentContainer( detach ? WindowContainer : DockableContainer );
+
+    if (!detach)
+        mDockWidget->setFloating(true);
+
+    QWidget *container = currentContainer();
+
+    container->show();
+
+    // NOTE: set geometry after show() or else some geometry modifying events
+    // are postponed!
+    qDebug() << (detach ? "win:" : "dock:") <<  "set geom (setDetached):" << undockedGeom << this;
+    if (!undockedGeom.isNull())
+        container->setGeometry( undockedGeom );
+
+    updateDockAction();
+}
+
+void Docklet::setCurrentContainer(ContainerType containerType )
+{
+    switch(containerType) {
+    case DockableContainer:
+        mDockWidget->setTitleBarWidget(mToolBar);
+        mDockWidget->setWidget(mWidget);
+        break;
+    case WindowContainer:
+        mDockWidget->setWidget(0);
+        mDockWidget->setTitleBarWidget(0);
+
+        QVBoxLayout *layout;
+
+        if (!mWindow) {
+            mWindow = new QWidget();
+            layout = new QVBoxLayout();
+            layout->setContentsMargins(0,0,0,0);
+            layout->setSpacing(0);
+            mWindow->setLayout( layout );
+            mWindow->setWindowTitle( mDockWidget->windowTitle() );
+            mWindow->installEventFilter(this);
+            updateWindowState( mWindow, mDockWidget->features() );
+        }
+        else
+            layout = qobject_cast<QVBoxLayout*>(mWindow->layout());
+
+        layout->addWidget(mToolBar);
+        layout->addWidget(mWidget);
+
+        mWidget->show();
+        mToolBar->show();
+
+        break;
+    }
+
+    mDetachAction->setText( containerType == WindowContainer ? tr("Attach") : tr("Detach") );
+}
+
+QByteArray Docklet::saveDetachedState() const
+{
+    QByteArray data;
+
+    if (isDetached()) {
+        data.append( (char) mWindow->isVisible() );
+        data.append( mWindow->saveGeometry() );
+    }
+
+    return data;
+}
+
+void Docklet::restoreDetachedState( const QByteArray & data )
+{
+    if (!data.isEmpty()) {
+        bool visible = data.at(0) == 1;
+        setDetached( true );
+        mWindow->restoreGeometry( data.mid(1) );
+        mWindow->setVisible( visible );
+    }
+    else
+        setDetached( false );
+}
+
+void Docklet::updateDockAction()
+{
+    bool docked = currentContainer() == mDockWidget && !mDockWidget->isFloating();
+    mDockAction->setText( docked ? tr("Undock") : tr("Dock") );
+}
+
+void Docklet::onFeaturesChanged ( QDockWidget::DockWidgetFeatures features )
+{
+    if( mWindow )
+        updateWindowState( mWindow, features );
+}
+
+bool Docklet::eventFilter( QObject *object, QEvent *event )
+{
+    switch(event->type()) {
+    case QEvent::Show:
+        mVisibilityAction->setChecked(true);
+        break;
+    case QEvent::Hide:
+        mVisibilityAction->setChecked(false);
+        break;
+    case QEvent::Resize:
+    case QEvent::Move: {
+        if (object == currentContainer()) {
+            if (object == mWindow) {
+                mUndockedGeom = mWindow->geometry();
+                qDebug() << "cache window geom" << mUndockedGeom << this;
+            } else if(object == mDockWidget && mDockWidget->isFloating()) {
+                mUndockedGeom = mDockWidget->geometry();
+                qDebug() << "cache dock geom"  << mUndockedGeom << this;
+            }
+        }
+        break;
+    }
+    default:
+        break;
+    }
+
+    return QObject::eventFilter( object, event );
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/util/docklet.hpp b/editors/sc-ide/widgets/util/docklet.hpp
new file mode 100644
index 0000000..b8431a0
--- /dev/null
+++ b/editors/sc-ide/widgets/util/docklet.hpp
@@ -0,0 +1,142 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_UTIL_DOCK_WIDGET_TITLE_BAR_HPP_INCLUDED
+#define SCIDE_WIDGETS_UTIL_DOCK_WIDGET_TITLE_BAR_HPP_INCLUDED
+
+#include <QWidget>
+#include <QToolButton>
+#include <QAction>
+#include <QDockWidget>
+
+namespace ScIDE {
+
+class DockletToolBar : public QWidget
+{
+    Q_OBJECT
+public:
+    DockletToolBar(const QString & title);
+
+    void addAction (QAction *action);
+    void addWidget (QWidget *widget, int stretch = 0 );
+    QMenu *optionsMenu () { return mOptionsMenu; }
+
+protected:
+    virtual void paintEvent( QPaintEvent *event );
+    QMenu *mOptionsMenu;
+};
+
+class Docklet : public QObject
+{
+    Q_OBJECT
+public:
+    Docklet( const QString & title, QWidget * parent = 0 );
+
+    QDockWidget *dockWidget() { return mDockWidget; }
+    QWidget *window() { return mWindow; }
+    QWidget *widget () { return mWidget; }
+    DockletToolBar *toolBar() { return mToolBar; }
+    QAction *toggleViewAction() { return mVisibilityAction; }
+
+    bool isDetached() const
+    {
+        return const_cast<Docklet*>(this)->currentContainer() != mDockWidget;
+    }
+
+    void setDetached( bool detached );
+
+    bool isVisible() const
+    {
+        return const_cast<Docklet*>(this)->currentContainer()->isVisible();
+    }
+
+    void setWidget( QWidget *widget )
+    {
+        mWidget = widget;
+        if (!isDetached())
+            mDockWidget->setWidget(widget);
+    }
+
+    void setAllowedAreas ( Qt::DockWidgetAreas areas )
+    {
+        mDockWidget->setAllowedAreas(areas);
+    }
+
+    void setFeatures ( QDockWidget::DockWidgetFeatures features )
+    {
+        mDockWidget->setFeatures(features);
+    }
+
+    void setObjectName( const QString & name )
+    {
+        QObject::setObjectName(name);
+        mDockWidget->setObjectName(name);
+    }
+
+    QByteArray saveDetachedState() const;
+    void restoreDetachedState( const QByteArray & );
+
+public slots:
+    void toggleFloating();
+    void toggleDetached();
+    void setVisible( bool visible )
+    {
+        QWidget *container = currentContainer();
+        container->setVisible(visible);
+        if (visible)
+            container->raise();
+    }
+    void show() { setVisible(true); }
+    void hide() { setVisible(false); }
+    void close() { hide(); }
+    void raise() { currentContainer()->raise(); }
+
+private slots:
+    void onFeaturesChanged ( QDockWidget::DockWidgetFeatures features );
+    void updateDockAction();
+
+protected:
+    virtual bool eventFilter(QObject *object, QEvent * event);
+
+private:
+    enum ContainerType {
+        DockableContainer,
+        WindowContainer
+    };
+
+    QWidget *currentContainer() { return mToolBar->parentWidget(); }
+
+    void setCurrentContainer( ContainerType );
+
+    QDockWidget *mDockWidget;
+    QWidget *mWindow;
+    QWidget *mWidget;
+    DockletToolBar *mToolBar;
+
+    QAction *mDockAction;
+    QAction *mDetachAction;
+    QAction *mVisibilityAction;
+
+    QRect mUndockedGeom;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_UTIL_DOCK_WIDGET_TITLE_BAR_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/util/gui_utilities.hpp b/editors/sc-ide/widgets/util/gui_utilities.hpp
new file mode 100644
index 0000000..4eb0459
--- /dev/null
+++ b/editors/sc-ide/widgets/util/gui_utilities.hpp
@@ -0,0 +1,77 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_UTIL_GUI_UTILITIES_HPP_INCLUDED
+#define SCIDE_WIDGETS_UTIL_GUI_UTILITIES_HPP_INCLUDED
+
+#include <QPlainTextEdit>
+#include <QRegExp>
+#include <QTextBlock>
+
+namespace ScIDE {
+
+inline QString wordInStringAt ( int position, const QString & source )
+{
+    const QRegExp wordRegexp("\\w+");
+
+    int offset = 0;
+    while (offset <= position) {
+        int index = wordRegexp.indexIn(source, offset);
+        if (index == -1)
+            break;
+        int len = wordRegexp.matchedLength();
+        if (index <= position && index + len >= position)
+            return wordRegexp.cap(0);
+        offset = index + len;
+    }
+
+    return QString();
+}
+
+inline void extendSelectionForEnvVar(QPlainTextEdit * textEdit, QTextCursor selection)
+{
+    if (selection.hasSelection()) {
+        if (selection.selectedText() == QString("~")) {
+            QTextCursor wordAfter(selection);
+            wordAfter.movePosition(QTextCursor::NextCharacter);
+            wordAfter.select(QTextCursor::WordUnderCursor);
+            if ( wordAfter.hasSelection() && (selection.block() == wordAfter.block()) ) {
+                selection.setPosition(selection.selectionStart());
+                selection.setPosition(wordAfter.selectionEnd(), QTextCursor::KeepAnchor);
+                textEdit->setTextCursor(selection);
+            }
+        } else {
+            int positionBeforeSelection = selection.selectionStart() - 1;
+            if (positionBeforeSelection >= 0) {
+                QChar charBeforeSelection = textEdit->document()->characterAt(positionBeforeSelection);
+                if (charBeforeSelection == QChar('~')) {
+                    QTextCursor extendedSelection = textEdit->textCursor();
+                    extendedSelection.setPosition(positionBeforeSelection);
+                    extendedSelection.setPosition(selection.selectionEnd(), QTextCursor::KeepAnchor);
+                    textEdit->setTextCursor(extendedSelection);
+                }
+            }
+        }
+    }
+}
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_UTIL_GUI_UTILITIES_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/util/icon_list_widget.hpp b/editors/sc-ide/widgets/util/icon_list_widget.hpp
new file mode 100644
index 0000000..30a7a58
--- /dev/null
+++ b/editors/sc-ide/widgets/util/icon_list_widget.hpp
@@ -0,0 +1,90 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_UTIL_ICON_LIST_WIDGET_HPP_INCLUDED
+#define SCIDE_WIDGETS_UTIL_ICON_LIST_WIDGET_HPP_INCLUDED
+
+#include <QListWidget>
+#include <QStyledItemDelegate>
+#include <QPainter>
+
+namespace ScIDE {
+
+class IconListWidget : public QListWidget
+{
+public:
+    class ItemDelegate : public QStyledItemDelegate
+    {
+    public:
+        ItemDelegate(QObject *parent) : QStyledItemDelegate(parent) {}
+
+        virtual QSize sizeHint
+            ( const QStyleOptionViewItem & opt, const QModelIndex & index ) const
+        {
+            return QStyledItemDelegate::sizeHint(opt, index) + QSize(0, 10);
+        }
+
+        virtual void paint
+            ( QPainter * painter, const QStyleOptionViewItem & option,
+              const QModelIndex & index ) const
+        {
+            painter->save();
+
+            QStyle *style = QApplication::style();
+
+            style->drawPrimitive( QStyle::PE_PanelItemViewItem, &option, painter );
+
+            QRect r( option.rect.adjusted(0,5,0,-5) );
+
+            QIcon icon(index.data(Qt::DecorationRole).value<QIcon>());
+            if( !icon.isNull() )
+                style->drawItemPixmap( painter, r, Qt::AlignTop | Qt::AlignHCenter, icon.pixmap(option.decorationSize) );
+
+            QString text = index.data(Qt::DisplayRole).toString();
+            if( !text.isEmpty() ) {
+                int alignment = !icon.isNull() ? Qt::AlignBottom | Qt::AlignHCenter : Qt::AlignCenter;
+                painter->setFont( option.font );
+                style->drawItemText( painter, r, alignment, option.palette, true, text );
+            }
+
+            painter->restore();
+        }
+    };
+
+public:
+    IconListWidget(QWidget *parent = 0) : QListWidget(parent)
+    {
+        setItemDelegate( new ItemDelegate(this) );
+    }
+
+    virtual QStyleOptionViewItem viewOptions() const
+    {
+        QStyleOptionViewItem opt( QListWidget::viewOptions() );
+        opt.displayAlignment = Qt::AlignCenter;
+        opt.decorationAlignment = Qt::AlignCenter;
+        opt.decorationPosition = QStyleOptionViewItem::Top;
+        opt.font.setBold(true);
+        return opt;
+    }
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_UTIL_ICON_LIST_WIDGET_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/util/key_sequence_edit.hpp b/editors/sc-ide/widgets/util/key_sequence_edit.hpp
new file mode 100644
index 0000000..7200212
--- /dev/null
+++ b/editors/sc-ide/widgets/util/key_sequence_edit.hpp
@@ -0,0 +1,180 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_KEY_SEQUENCE_EDIT_HPP_INCLUDED
+#define SCIDE_WIDGETS_KEY_SEQUENCE_EDIT_HPP_INCLUDED
+
+#include <QLineEdit>
+#include <QKeyEvent>
+#include <QBasicTimer>
+
+namespace ScIDE {
+
+class KeySequenceEdit : public QLineEdit
+{
+    Q_OBJECT
+
+private:
+    QBasicTimer mEditingTimer;
+
+public:
+    KeySequenceEdit( QWidget *parent = 0 ):
+        QLineEdit(parent),
+        k1(0), k2(0), k3(0), k4(0),
+        mEditing(false)
+    {
+        setReadOnly(true);
+    }
+
+    QKeySequence sequence()
+    {
+        return QKeySequence(k1, k2, k3, k4);
+    }
+
+    void setSequence( const QKeySequence &seq )
+    {
+        k1 = seq[0];
+        k2 = seq[1];
+        k3 = seq[2];
+        k4 = seq[3];
+
+        if (mEditing)
+            finishEditing();
+        else
+            updateText();
+    }
+
+public slots:
+    void reset()
+    {
+        k1 = k2 = k3 = k4 = 0;
+
+        if (mEditing)
+            finishEditing();
+        else
+            updateText();
+    }
+
+    void finishEditing()
+    {
+        if (mEditing) {
+            mEditing = false;
+            mEditingTimer.stop();
+            updateText();
+            emit editingFinished();
+        }
+    }
+
+signals:
+    void editingStarted();
+
+protected:
+//#if 0
+    void updateText()
+    {
+        QKeySequence seq = sequence();
+        if (seq.isEmpty())
+            clear();
+        else {
+            QString text = sequence().toString(QKeySequence::NativeText);
+            if (mEditing) text.append(", ...");
+            setText( text );
+        }
+    }
+
+    bool event( QEvent *e )
+    {
+        if (e->type() != QEvent::KeyPress)
+            return QLineEdit::event(e);
+
+        e->accept();
+
+        QKeyEvent *ke = static_cast<QKeyEvent*>(e);
+        int key = ke->key();
+
+        if (isModifier(key))
+            return true;
+
+        int *k;
+        if (!mEditing) {
+            k1 = k2 = k3 = k4 = 0;
+            mEditing = true;
+            k = &k1;
+        }
+        else {
+            if(k1 == 0)
+                k = &k1;
+            else if(k2 == 0)
+                k = &k2;
+            else if(k3 == 0)
+                k = &k3;
+            else
+                k = &k4;
+        }
+
+        *k = key | ke->modifiers();
+
+        if (k == &k4)
+            finishEditing();
+        else {
+            mEditingTimer.start(800, this);
+            updateText();
+            if (k == &k1)
+                emit editingStarted();
+        }
+
+        return true;
+    }
+
+    virtual void timerEvent ( QTimerEvent * e )
+    {
+        if (e->timerId() == mEditingTimer.timerId())
+            finishEditing();
+    }
+
+    void focusOutEvent( QFocusEvent * e )
+    {
+        finishEditing();
+    }
+
+//#endif
+private:
+    bool isModifier(int key)
+    {
+        switch (key)
+        {
+        case Qt::Key_Shift:
+        case Qt::Key_Control:
+        case Qt::Key_Meta:
+        case Qt::Key_Alt:
+        case Qt::Key_AltGr:
+            return true;
+        default:
+            return false;
+        }
+    }
+
+    int k1, k2, k3, k4;
+    bool mEditing;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_KEY_SEQUENCE_EDIT_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/util/multi_splitter.hpp b/editors/sc-ide/widgets/util/multi_splitter.hpp
new file mode 100644
index 0000000..6fb4828
--- /dev/null
+++ b/editors/sc-ide/widgets/util/multi_splitter.hpp
@@ -0,0 +1,175 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_UTIL_MULTI_SPLITTER_HPP_INCLUDED
+#define SCIDE_WIDGETS_UTIL_MULTI_SPLITTER_HPP_INCLUDED
+
+#include <QSplitter>
+
+namespace ScIDE {
+
+class MultiSplitter : public QSplitter
+{
+public:
+    explicit MultiSplitter(QWidget *parent = 0):
+        QSplitter(parent)
+    {
+        setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    }
+
+    void insertWidget( QWidget *widget, QWidget *neighbour, Qt::Orientation direction )
+    {
+        if (!neighbour || !widgetIsChild(neighbour)) {
+            qWarning("MultiSplitter: neighbour widget invalid");
+            return;
+        }
+
+        QSplitter *parentSplitter = parentSplitterOf(neighbour);
+        Q_ASSERT(parentSplitter);
+        int posInParent = parentSplitter->indexOf(neighbour);
+        Q_ASSERT(posInParent != -1);
+
+        if (parentSplitter->orientation() == direction) {
+            parentSplitter->insertWidget(posInParent + 1, widget);
+        }
+        else if (parentSplitter->count() < 2)
+        {
+            parentSplitter->setOrientation(direction);
+            parentSplitter->addWidget(widget);
+        }
+        else {
+            // store parent's current distribution:
+            QList<int> parentsSizes = parentSplitter->sizes();
+            QSplitter * splitter = new QSplitter(direction);
+            // move the neighbour to the new splitter, and add the new widget:
+            splitter->addWidget(neighbour);
+            splitter->addWidget(widget);
+            // insert the new splitter at the neighbour's old position:
+            parentSplitter->insertWidget(posInParent, splitter);
+            // restore parent's old distribution, affected by operations above:
+            parentSplitter->setSizes(parentsSizes);
+            // change the parent to the new splitter, for operations below:
+            parentSplitter = splitter;
+        }
+
+        setEqualSizes(parentSplitter);
+    }
+
+    void removeWidget( QWidget *widget )
+    {
+        if (!widget || !widgetIsChild(widget)) {
+            qWarning("MultiSplitter: widget invalid");
+            return;
+        }
+
+        QSplitter *parent = parentSplitterOf(widget);
+        if (parent == this && parent->count() < 2) {
+            qWarning("MultiSplitter: can not remove last widget");
+            return;
+        }
+
+        delete widget;
+
+        Q_ASSERT(parent->count());
+
+        if (parent->count() == 1) {
+            QWidget *neighbour = parent->widget(0);
+            if (parent != this) {
+                // replace parent splitter with it's only child
+                QSplitter *grandParent = parentSplitterOf(parent);
+                QList<int> grandParentsSizes = grandParent->sizes();
+                int posInParent = grandParent->indexOf(parent);
+                Q_ASSERT(posInParent != -1);
+                grandParent->insertWidget(posInParent, neighbour);
+                delete parent;
+                grandParent->setSizes(grandParentsSizes);
+            }
+            else {
+                // replace child splitter with it's own children
+                QSplitter *splitter = qobject_cast<QSplitter*>(neighbour);
+                if (splitter) {
+                    QList<int> childSizes = splitter->sizes();
+                    Qt::Orientation childOrientation = splitter->orientation();
+                    int childCount = splitter->count();
+                    while(childCount--)
+                        parent->addWidget(splitter->widget(0)); // 0 is always another widget
+                    delete splitter;
+                    parent->setOrientation(childOrientation);
+                    parent->setSizes(childSizes);
+                }
+            }
+        }
+    }
+
+    template<typename T> T* findChild()
+    {
+        return MultiSplitter::findChild<T>(this);
+    }
+
+private:
+    template<typename T> static T* findChild( QSplitter * splitter ) {
+        int childCount = splitter->count();
+        for (int idx = 0; idx < childCount; ++idx) {
+            QWidget *child = splitter->widget(idx);
+            T* typedChild = qobject_cast<T*>(child);
+            if (typedChild)
+                return typedChild;
+            QSplitter *childSplitter = qobject_cast<QSplitter*>(child);
+            if (childSplitter) {
+                typedChild = findChild<T>( childSplitter );
+                if (typedChild)
+                    return typedChild;
+            }
+        }
+        return 0;
+    }
+
+    QSplitter *parentSplitterOf( QWidget *widget )
+    {
+        return qobject_cast<QSplitter*>( widget->parent() );
+    }
+
+    void setEqualSizes(QSplitter *splitter)
+    {
+        int widgetCount = splitter->count();
+        int splitterSize = splitter->orientation() == Qt::Horizontal ?
+                    splitter->size().width() : splitter->size().height();
+        QList<int> newWidgetSizes;
+        int singleWidgetSize = splitterSize / widgetCount;
+        for( int idx = 0; idx < widgetCount; ++idx )
+            newWidgetSizes << singleWidgetSize;
+        splitter->setSizes( newWidgetSizes );
+    }
+
+    bool widgetIsChild( QWidget *widget )
+    {
+        QObject *object = widget->parent();
+        while (object) {
+            if (object == this)
+                return true;
+            object = object->parent();
+        }
+        return false;
+    }
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_UTIL_MULTI_SPLITTER_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/util/path_chooser_widget.hpp b/editors/sc-ide/widgets/util/path_chooser_widget.hpp
new file mode 100644
index 0000000..da18211
--- /dev/null
+++ b/editors/sc-ide/widgets/util/path_chooser_widget.hpp
@@ -0,0 +1,96 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_PATH_CHOOSER_WIDGET_HPP_INCLUDED
+#define SCIDE_WIDGETS_PATH_CHOOSER_WIDGET_HPP_INCLUDED
+
+#include <QLineEdit>
+#include <QPushButton>
+#include <QFileDialog>
+#include <QHBoxLayout>
+#include <QPointer>
+
+namespace ScIDE {
+
+class PathChooserWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    PathChooserWidget
+    (QWidget *parent = 0, QFileDialog::FileMode mode = QFileDialog::ExistingFile ):
+        QWidget(parent),
+        mMode(mode),
+        dialog(0)
+    {
+        mTextField = new QLineEdit;
+
+        mButton = new QPushButton;
+        mButton->setIcon( QIcon::fromTheme("folder") );
+        mButton->setFixedWidth( 30 );
+        mButton->setFlat(true);
+        //setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+
+        QHBoxLayout *box = new QHBoxLayout(this);
+        box->addWidget(mTextField);
+        box->addWidget(mButton);
+        box->setContentsMargins(0,0,0,0);
+        box->setSpacing(1);
+
+        connect(mButton, SIGNAL(clicked()), this, SLOT(execDialog()), Qt::QueuedConnection);
+    }
+
+    QString text() const { return mTextField->text(); }
+
+    void setText( const QString & text ) { mTextField->setText(text); }
+
+    void setFileMode( QFileDialog::FileMode mode ) { mMode = mode; }
+
+public Q_SLOTS:
+    void execDialog()
+    {
+        if(!dialog) {
+            QWidget *parent = parentWidget();
+            dialog = new QFileDialog(parent ? parent : this);
+        }
+        dialog->setFileMode(mMode);
+        dialog->selectFile(mTextField->text());
+
+        QPointer<QLineEdit> textField = mTextField;
+        int result = dialog->exec();
+        if (result == QDialog::Accepted && textField) {
+            QStringList paths = dialog->selectedFiles();
+            textField->setText(paths.count() ? paths[0] : "");
+        }
+    }
+
+Q_SIGNALS:
+    void textChanged( const QString & );
+
+private:
+    QLineEdit *mTextField;
+    QPushButton *mButton;
+    QFileDialog::FileMode mMode;
+    QFileDialog *dialog;
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_PATH_CHOOSER_WIDGET_HPP_INCLUDED
diff --git a/editors/sc-ide/widgets/util/popup_widget.cpp b/editors/sc-ide/widgets/util/popup_widget.cpp
new file mode 100644
index 0000000..2664dcc
--- /dev/null
+++ b/editors/sc-ide/widgets/util/popup_widget.cpp
@@ -0,0 +1,106 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "popup_widget.hpp"
+
+#include <QKeyEvent>
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QDebug>
+
+namespace ScIDE {
+
+PopUpWidget::PopUpWidget( QWidget * parent ):
+    QWidget( parent, Qt::ToolTip ),
+    mEventLoop(0),
+    mResult(0)
+{}
+
+PopUpWidget::~PopUpWidget()
+{
+    quit();
+}
+
+int PopUpWidget::exec( const QRect & targetRect )
+{
+    if (mEventLoop) {
+        qWarning("ScIDE::PopUpWidget: recursive exec() - suppressed!");
+        return Rejected;
+    }
+
+    mResult = Rejected;
+    mTargetRect = targetRect;
+
+    QEventLoop eventLoop;
+    mEventLoop = &eventLoop;
+
+    show();
+
+    QPointer<QObject> self(this);
+    mEventLoop->exec();
+    if (self.isNull())
+        return Rejected;
+
+    return mResult;
+}
+
+void PopUpWidget::popup( const QRect & targetRect )
+{
+    mResult = Rejected;
+    mTargetRect = targetRect;
+    show();
+}
+
+void PopUpWidget::keyPressEvent( QKeyEvent *ke )
+{
+    switch(ke->key())
+    {
+    case Qt::Key_Escape:
+        reject();
+        break;
+    default:;
+    }
+}
+
+void PopUpWidget::showEvent( QShowEvent * )
+{
+    QRect rect = geometry();
+    rect.moveTopLeft( mTargetRect.bottomLeft() );
+
+    QWidget * parentWid = parentWidget();
+    QWidget * referenceWidget = parentWid ? parentWid : this;
+
+    QRect screen = QApplication::desktop()->availableGeometry(referenceWidget);
+    if (!screen.contains(rect))
+    {
+        if (rect.right() > screen.right())
+            rect.moveRight( screen.right() );
+        if (rect.left() < screen.left())
+            rect.moveLeft( screen.left() );
+        if (rect.bottom() > screen.bottom())
+            rect.moveBottom( qMin( mTargetRect.top(), screen.bottom()) );
+        if (rect.top() < screen.top())
+            rect.moveTop( screen.top() );
+    }
+
+    move(rect.topLeft());
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/util/popup_widget.hpp b/editors/sc-ide/widgets/util/popup_widget.hpp
new file mode 100644
index 0000000..7ad476a
--- /dev/null
+++ b/editors/sc-ide/widgets/util/popup_widget.hpp
@@ -0,0 +1,96 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_UTIL_POPUP_WIDGET_HPP_INCLUDED
+#define SCIDE_WIDGETS_UTIL_POPUP_WIDGET_HPP_INCLUDED
+
+#include <QWidget>
+#include <QEventLoop>
+#include <QPointer>
+
+namespace ScIDE {
+
+class PopUpWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    enum Result {
+        Rejected = 0,
+        Accepted
+    };
+
+public:
+    explicit PopUpWidget( QWidget * parent = 0 );
+    virtual ~PopUpWidget();
+
+    int exec( const QRect & targetRect );
+    void popup( const QRect & targetRect );
+    void setTargetRect( const QRect & targetRect ) { mTargetRect = targetRect; }
+
+public slots:
+    void accept()
+    {
+        done(Accepted);
+    }
+
+    void reject()
+    {
+        done(Rejected);
+    }
+
+    void done(int result)
+    {
+        mResult = result;
+        hide();
+        quit();
+    }
+
+signals:
+    void finished(int result);
+
+private:
+    void quit()
+    {
+        if (mEventLoop) {
+            mEventLoop->exit();
+            mEventLoop = 0;
+        }
+    }
+
+protected:
+    virtual void hideEvent( QHideEvent *e )
+    {
+        quit();
+        emit finished(mResult);
+    }
+
+    virtual void keyPressEvent( QKeyEvent *ke );
+    virtual void showEvent( QShowEvent * );
+
+private:
+    QEventLoop *mEventLoop;
+    int mResult;
+    QRect mTargetRect;
+};
+
+} // namespace ScIDE
+
+#endif
diff --git a/editors/sc-ide/widgets/util/text_format_list_widget.cpp b/editors/sc-ide/widgets/util/text_format_list_widget.cpp
new file mode 100644
index 0000000..440dfcd
--- /dev/null
+++ b/editors/sc-ide/widgets/util/text_format_list_widget.cpp
@@ -0,0 +1,217 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#include "text_format_list_widget.hpp"
+
+#include <QPainter>
+#include <QApplication>
+#include <QHeaderView>
+#include <QStandardItemModel>
+#include <QColorDialog>
+
+namespace ScIDE {
+
+TextFormatListWidget::ItemDelegate::ItemDelegate( QObject *parent ):
+    QStyledItemDelegate(parent)
+{}
+
+QSize TextFormatListWidget::ItemDelegate::sizeHint
+    ( const QStyleOptionViewItem & opt, const QModelIndex & index ) const
+{
+    switch(index.column())
+    {
+    case 1:
+        return QSize(30,20);
+    default:
+        return QStyledItemDelegate::sizeHint(opt, index);
+    }
+}
+
+void TextFormatListWidget::ItemDelegate::paint
+    ( QPainter * painter, const QStyleOptionViewItem & opt,
+        const QModelIndex & index ) const
+{
+    int col = index.column();
+    if( col < 1 || col > 2  )
+    {
+        QStyledItemDelegate::paint(painter, opt, index);
+        return;
+    }
+
+    QApplication::style()->drawPrimitive( QStyle::PE_PanelItemViewItem, &opt, painter );
+
+    QBrush brush = index.data(Qt::DisplayRole).value<QBrush>();
+    if(brush.style() == Qt::NoBrush) {
+        brush.setColor(opt.palette.color(QPalette::Text));
+        brush.setStyle(Qt::BDiagPattern);
+    }
+
+    QSize sz(30, 14);
+    QRect r;
+    r.setSize(sz);
+    r.moveCenter(opt.rect.center());
+
+    painter->save();
+
+    painter->setBrush(brush);
+    painter->setPen(opt.palette.color(QPalette::Text));
+    painter->drawRect(r.adjusted(0,0,-1,-1));
+
+    painter->restore();
+}
+
+
+TextFormatListWidget::TextFormatListWidget( QWidget * parent ):
+    QTreeView(parent)
+{
+    QStandardItemModel *m = new QStandardItemModel(this);
+    m->setHorizontalHeaderLabels(
+        QStringList() << tr("Role") << tr("Color") << tr("Background") << "B" << "I" << "U" );
+
+    QItemSelectionModel *old_sm = selectionModel();
+    QAbstractItemModel *old_m = model();
+    setModel(m);
+    delete old_m;
+    delete old_sm;
+
+    QAbstractItemDelegate *old_d = itemDelegate();
+    setItemDelegate( new ItemDelegate(this) );
+    delete old_d;
+
+    header()->setResizeMode( QHeaderView::ResizeToContents );
+
+    setContextMenuPolicy(Qt::CustomContextMenu);
+
+    connect(this, SIGNAL(doubleClicked(const QModelIndex&)),
+            this, SLOT(onDoubleClicked(const QModelIndex&)));
+}
+
+void TextFormatListWidget::addFormat( const QString & name, const QTextCharFormat & format )
+{
+    QList<QStandardItem*> items;
+
+    QStandardItem *nameItem = new QStandardItem(name);
+    nameItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
+    items << nameItem;
+
+    items << makeBrushItem( format.foreground() );
+
+    items << makeBrushItem( format.background() );
+
+    items << makeBoolItem( format.fontWeight() == QFont::Bold );
+
+    items << makeBoolItem( format.fontItalic() );
+
+    items << makeBoolItem( format.fontUnderline() );
+
+    standardModel()->appendRow( items );
+}
+
+void TextFormatListWidget::setFormat( int index, const QTextCharFormat & format )
+{
+    QStandardItemModel *m = standardModel();
+
+    if (index < 0 || index >= m->rowCount())
+        return;
+
+    m->item(index, 1)->setData(format.foreground(), Qt::DisplayRole);
+    m->item(index, 2)->setData(format.background(), Qt::DisplayRole);
+    m->item(index, 3)->setCheckState(
+        format.fontWeight() == QFont::Bold ? Qt::Checked : Qt::Unchecked );
+    m->item(index, 4)->setCheckState(
+        format.fontItalic() ? Qt::Checked : Qt::Unchecked );
+    m->item(index, 5)->setCheckState(
+        format.fontUnderline() ? Qt::Checked : Qt::Unchecked );
+}
+
+QString TextFormatListWidget::name( int index )
+{
+    QStandardItemModel *m = standardModel();
+    QString str;
+
+    if (index < 0 || index >= m->rowCount())
+        return str;
+
+    str = m->item(index, 0)->text();
+
+    return str;
+}
+
+QTextCharFormat TextFormatListWidget::format( int index )
+{
+    QStandardItemModel *m = standardModel();
+    QTextCharFormat fm;
+
+    if (index < 0 || index >= m->rowCount())
+        return fm;
+
+    QBrush br = m->item(index, 1)->data(Qt::DisplayRole).value<QBrush>();
+    if( br.style() != Qt::NoBrush )
+        fm.setForeground(br);
+
+    br = m->item(index, 2)->data(Qt::DisplayRole).value<QBrush>();
+    if( br.style() != Qt::NoBrush )
+        fm.setBackground(br);
+
+    bool b = m->item(index, 3)->checkState() == Qt::Checked;
+    if(b) fm.setFontWeight(QFont::Bold);
+
+    b = m->item(index, 4)->checkState() == Qt::Checked;
+    if(b) fm.setFontItalic(true);
+
+    b = m->item(index, 5)->checkState() == Qt::Checked;
+    if(b) fm.setFontUnderline(true);
+
+    return fm;
+}
+
+void TextFormatListWidget::onDoubleClicked( const QModelIndex &index )
+{
+    int column = index.column();
+    if (column < 1 || column > 2) return;
+
+    QStandardItem *item = standardModel()->item(index.row(), column);
+    QBrush br = item->data(Qt::DisplayRole).value<QBrush>();
+
+    QColor color = QColorDialog::getColor(br.color(), this);
+    if (color.isValid())
+    {
+        item->setData(QBrush(color), Qt::DisplayRole);
+    }
+}
+
+QStandardItem *TextFormatListWidget::makeBrushItem( const QBrush &brush )
+{
+    QStandardItem *item = new QStandardItem();
+    item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
+    item->setData( brush, Qt::DisplayRole );
+    return item;
+}
+
+QStandardItem *TextFormatListWidget::makeBoolItem( bool b )
+{
+    QStandardItem *item = new QStandardItem();
+    item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
+    item->setCheckable(true);
+    if(b) item->setCheckState(Qt::Checked);
+    return item;
+}
+
+} // namespace ScIDE
diff --git a/editors/sc-ide/widgets/util/text_format_list_widget.hpp b/editors/sc-ide/widgets/util/text_format_list_widget.hpp
new file mode 100644
index 0000000..f3b70d3
--- /dev/null
+++ b/editors/sc-ide/widgets/util/text_format_list_widget.hpp
@@ -0,0 +1,97 @@
+/*
+    SuperCollider Qt IDE
+    Copyright (c) 2012 Jakob Leben & Tim Blechmann
+    http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+#ifndef SCIDE_WIDGETS_UTIL_TEXT_FORMAT_LIST_WIDGET_HPP_INCLUDED
+#define SCIDE_WIDGETS_UTIL_TEXT_FORMAT_LIST_WIDGET_HPP_INCLUDED
+
+#include <QTreeView>
+#include <QStyledItemDelegate>
+#include <QTextCharFormat>
+#include <QStandardItemModel>
+
+namespace ScIDE {
+
+class TextFormatListWidget : public QTreeView
+{
+    Q_OBJECT
+
+public:
+    class ItemDelegate : public QStyledItemDelegate
+    {
+    public:
+        ItemDelegate( QObject *parent );
+
+        virtual QSize sizeHint
+            ( const QStyleOptionViewItem &, const QModelIndex & ) const;
+
+        virtual void paint
+            ( QPainter *, const QStyleOptionViewItem &, const QModelIndex & ) const;
+    };
+
+public:
+    TextFormatListWidget( QWidget * parent );
+
+    void addFormat( const QString & name, const QTextCharFormat & format );
+
+    void setFormat( int index, const QTextCharFormat & format );
+
+    inline void removeFormat( int index )
+    {
+        standardModel()->removeRow(index);
+    }
+
+    int currentIndex()
+    {
+        QModelIndex index(QAbstractItemView::currentIndex());
+        if (index.isValid())
+            return index.row();
+        else
+            return -1;
+    }
+
+    QString name( int index );
+
+    QTextCharFormat format( int index );
+
+    inline int count()
+    {
+        return standardModel()->rowCount();
+    }
+
+Q_SIGNALS:
+    void clicked( int index );
+
+private Q_SLOTS:
+    void onDoubleClicked( const QModelIndex & );
+
+private:
+    QStandardItem *makeBrushItem( const QBrush &brush );
+
+    QStandardItem *makeBoolItem( bool b );
+
+    inline QStandardItemModel *standardModel()
+    {
+        return qobject_cast<QStandardItemModel*>(model());
+    }
+};
+
+} // namespace ScIDE
+
+#endif // SCIDE_WIDGETS_UTIL_TEXT_FORMAT_LIST_WIDGET_HPP_INCLUDED
diff --git a/editors/sced/CMakeLists.txt b/editors/sced/CMakeLists.txt
index 39bfbda..286d625 100644
--- a/editors/sced/CMakeLists.txt
+++ b/editors/sced/CMakeLists.txt
@@ -13,9 +13,6 @@ if(NOT WIN32 AND SC_ED EQUAL 2)
     install(FILES data/supercollider.lang
             DESTINATION share/gtksourceview-2.0/language-specs)
 
-    install(FILES data/supercollider.xml
-            DESTINATION share/mime/packages)
-
     install(FILES data/sced.gedit-plugin
             DESTINATION lib/gedit-2/plugins)
 
@@ -31,9 +28,6 @@ elseif(NOT WIN32 AND SC_ED EQUAL 3)
     install(FILES data/supercollider.lang
             DESTINATION share/gtksourceview-3.0/language-specs)
 
-    install(FILES data/supercollider.xml
-            DESTINATION share/mime/packages)
-
     install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sced3/supercollider.plugin sced3/supercollider.py
             DESTINATION lib/gedit/plugins)
 
diff --git a/editors/scel/el/CMakeLists.txt b/editors/scel/el/CMakeLists.txt
index a09b929..dbc0a5f 100644
--- a/editors/scel/el/CMakeLists.txt
+++ b/editors/scel/el/CMakeLists.txt
@@ -18,7 +18,7 @@ set(all_scel_sources ${scel_sources} sclang-vars.el)
 if (SC_EL_BYTECOMPILE)
 	find_program(EMACS_EXECUTABLE emacs)
 	if(NOT EMACS_EXECUTABLE)
-		message(SEND_ERROR "Emacs could not be found")
+		message(SEND_ERROR "Emacs could not be found.\n (If emacs interface is not required, then set SC_EL=no)")
 	endif()
 
 	foreach (el ${all_scel_sources})
diff --git a/editors/scvim/bin/sclangpipe_app b/editors/scvim/bin/sclangpipe_app
index 0bc8606..03de7bc 100755
--- a/editors/scvim/bin/sclangpipe_app
+++ b/editors/scvim/bin/sclangpipe_app
@@ -32,17 +32,24 @@ elsif RUBY_PLATFORM =~ /darwin/
 end
 
 pid_loc = "/tmp/sclangpipe_app-pid" unless (pid_loc = ENV["SCVIM_PIPE_PID_LOC"])
-app = `which sclang`.chomp
-if app.empty?
-  mac_loc = "/Applications/SuperCollider/sclang"
-  if RUBY_PLATFORM =~ /darwin/ and File.exists?(mac_loc)
-    app = mac_loc
-  else
-    puts "cannot find sclang executable, is it in your path?"
-    exit -1
+
+app = nil
+[
+  `which sclang`.chomp,
+  '/Applications/SuperCollider/SuperCollider.app/Contents/Resources/sclang',
+  '/Applications/SuperCollider/sclang',
+].each do |l|
+  if File.exists?(l)
+    app = l
+    break
   end
 end
 
+unless app
+  puts "cannot find sclang executable, is it in your path?"
+  exit -1
+end
+
 sclangargs = "-i scvim"  # this arg must always be passed, so that sclang knows to load classes from folders named "scide_scvim"
 
 opts = OptionParser.new do |opts|
diff --git a/editors/scvim/extra/VimDocument.sc b/editors/scvim/extra/VimDocument.sc
index cbdc883..ccd2eef 100644
--- a/editors/scvim/extra/VimDocument.sc
+++ b/editors/scvim/extra/VimDocument.sc
@@ -16,23 +16,20 @@ VimDocument : Document {
         this.startup;
     }
 
-    *startup { 
+    *startup {
         var post;
-        super.startup; 
-        fork({ 
-            0.2.wait; 
-            post = this.listener; 
-            if(post.notNil) { post.name_(" post ") } 
+        super.startup;
+        fork({
+            0.2.wait;
+            post = this.listener;
+            if(post.notNil) { post.name_(" post ") }
         }, AppClock);
-        this.setTheme('default');
     }
 
     *new { | title="Untitled" string="" makeListener=false |
         ^super.prBasicNew.initByString(title, string.asString, makeListener);
     }
 
-    *postColor_ { }
-
     initLast { }
     front { }
     unfocusedFront { }
@@ -41,20 +38,19 @@ VimDocument : Document {
     syntaxColorize { }
     removeUndo { }
     promptToSave_ { | bool | }
-    promptToSave { ^true }    
+    promptToSave { ^true }
     underlineSelection { }
     isEdited { ^true }
-    
+
 
     // if range is -1 apply to whole doc
-    setFont { | font, rangeStart= -1, rangeSize=100 | 
+    setFont { | font, rangeStart= -1, rangeSize=100 |
 		//XXX this only works for the whole server as that is the way vim works
 		//only works with graphical vim
-		Vim.remote_send(servername, "<Esc>:set guifont=" ++ 
+		Vim.remote_send(servername, "<Esc>:set guifont=" ++
 			font.replace(" ", "\\\\\\ ")  ++ "<CR>");
 	}
-    setTextColor { | color,  rangeStart = -1, rangeSize = 0 | }
-    
+
     text {
         var string
 			= Vim.remote_expr(servername, "getbufline(bufnr(\"" ++ file ++ "\"), 1, \"$\")");
@@ -65,22 +61,21 @@ VimDocument : Document {
     selectUnderlinedText { | clickPos | }
     selectedRangeLocation { ^0 }
     selectedRangeSize { ^0 }
-    
+
     rangeText { | rangestart=0, rangesize=1 |
-        var string = 
-			Vim.remote_expr(servername, "getbufline(bufnr(\"" ++ file ++ "\"), " ++ 
+        var string =
+			Vim.remote_expr(servername, "getbufline(bufnr(\"" ++ file ++ "\"), " ++
 			(rangestart + 1) ++ ", " ++
 			(rangestart + rangesize) ++ ")");
         ^string.copyRange(0, (string.size - 2));
     }
-    
+
     insertTextRange { | string, rangestart, rangesize | }
     linkAtClickPos { | clickPos | ^nil }
 
     // private //
     *prnumberOfOpen { ^0 }
     *prGetIndexOfListener { ^0 }
-    *prSetSyntaxColorTheme{ |textC, classC, stringC, symbolC, commentC, numberC| }
 
     propen { | path selectionStart=0 selectionLength=0 |
         var rcfile = this.prfindRcFile;
@@ -106,7 +101,7 @@ VimDocument : Document {
     prGetLastIndex { ^idx }
     prIsEditable_{ | editable=true | }
     prSetTitle { | argName | title = argName }
-    prGetTitle { ^title }  
+    prGetTitle { ^title }
     prGetFileName { ^nil }
     prSetFileName { | apath | }
 
@@ -115,10 +110,6 @@ VimDocument : Document {
 
     prGetBounds { | argBounds | ^nil }
     prSetBounds { | argBounds | }
-    prSetBackgroundColor { | color | }
-    prGetBackgroundColor { | color | ^nil }
-    prSetSelectedBackgroundColor { | color | }
-    prGetSelectedBackgroundColor { | color | ^nil }
 
 	prGetTmpFile {
 		var tmp = "/tmp/scvimdocument-tmp" ++ idx ++ ".sc";
diff --git a/examples/GUI examples/ColorBrowser.scd b/examples/GUI examples/ColorBrowser.scd
index 895fa74..18c40f4 100644
--- a/examples/GUI examples/ColorBrowser.scd	
+++ b/examples/GUI examples/ColorBrowser.scd	
@@ -27,7 +27,7 @@ colorWindow = {arg colors, btnWidth=60, fontSize=9, bounds, inclGrey=false, winO
 	bounds = bounds ? Rect(10, 10, 252, 240);
 	w = Window("Color browser", bounds, scroll: true);
 	w.view.decorator = FlowLayout(w.view.bounds, Point(0,0), Point(0,0));
-	colors.do({ arg colAssoc, i;Ê
+	colors.do({ arg colAssoc, i;
 		color = colAssoc.value;
 		colArr = color.asArray;
 		colName = colAssoc.key.asString;
@@ -92,744 +92,744 @@ colorWindow.value(x.sort(sortFn), btnWidth, (btnWidth/8).round, Rect(0, 0, scree
 
 (
 x = [
-Ê Ê 'alice blue' -> Color.new255(240, 248, 255),
-Ê Ê 'AliceBlue' -> Color.new255(240, 248, 255),
-Ê Ê 'antique white' -> Color.new255(250, 235, 215),
-Ê Ê 'AntiqueWhite' -> Color.new255(250, 235, 215),
-Ê Ê 'AntiqueWhite1' -> Color.new255(255, 239, 219),
-Ê Ê 'AntiqueWhite2' -> Color.new255(238, 223, 204),
-Ê Ê 'AntiqueWhite3' -> Color.new255(205, 192, 176),
-Ê Ê 'AntiqueWhite4' -> Color.new255(139, 131, 120),
-Ê Ê 'aquamarine' -> Color.new255(127, 255, 212),
-Ê Ê 'aquamarine1' -> Color.new255(127, 255, 212),
-Ê Ê 'aquamarine2' -> Color.new255(118, 238, 198),
-Ê Ê 'aquamarine3' -> Color.new255(102, 205, 170),
-Ê Ê 'aquamarine4' -> Color.new255(69, 139, 116),
-Ê Ê 'azure' -> Color.new255(240, 255, 255),
-Ê Ê 'azure1' -> Color.new255(240, 255, 255),
-Ê Ê 'azure2' -> Color.new255(224, 238, 238),
-Ê Ê 'azure3' -> Color.new255(193, 205, 205),
-Ê Ê 'azure4' -> Color.new255(131, 139, 139),
-Ê Ê 'beige' -> Color.new255(245, 245, 220),
-Ê Ê 'bisque' -> Color.new255(255, 228, 196),
-Ê Ê 'bisque1' -> Color.new255(255, 228, 196),
-Ê Ê 'bisque2' -> Color.new255(238, 213, 183),
-Ê Ê 'bisque3' -> Color.new255(205, 183, 158),
-Ê Ê 'bisque4' -> Color.new255(139, 125, 107),
-Ê Ê 'black' -> Color.new255(0, 0, 0),
-Ê Ê 'blanched almond' -> Color.new255(255, 235, 205),
-Ê Ê 'BlanchedAlmond' -> Color.new255(255, 235, 205),
-Ê Ê 'blue' -> Color.new255(0, 0, 255),
-Ê Ê 'blue violet' -> Color.new255(138, 43, 226),
-Ê Ê 'blue1' -> Color.new255(0, 0, 255),
-Ê Ê 'blue2' -> Color.new255(0, 0, 238),
-Ê Ê 'blue3' -> Color.new255(0, 0, 205),
-Ê Ê 'blue4' -> Color.new255(0, 0, 139),
-Ê Ê 'BlueViolet' -> Color.new255(138, 43, 226),
-Ê Ê 'brown' -> Color.new255(165, 42, 42),
-Ê Ê 'brown1' -> Color.new255(255, 64, 64),
-Ê Ê 'brown2' -> Color.new255(238, 59, 59),
-Ê Ê 'brown3' -> Color.new255(205, 51, 51),
-Ê Ê 'brown4' -> Color.new255(139, 35, 35),
-Ê Ê 'burlywood' -> Color.new255(222, 184, 135),
-Ê Ê 'burlywood1' -> Color.new255(255, 211, 155),
-Ê Ê 'burlywood2' -> Color.new255(238, 197, 145),
-Ê Ê 'burlywood3' -> Color.new255(205, 170, 125),
-Ê Ê 'burlywood4' -> Color.new255(139, 115, 85),
-Ê Ê 'cadet blue' -> Color.new255(95, 158, 160),
-Ê Ê 'CadetBlue' -> Color.new255(95, 158, 160),
-Ê Ê 'CadetBlue1' -> Color.new255(152, 245, 255),
-Ê Ê 'CadetBlue2' -> Color.new255(142, 229, 238),
-Ê Ê 'CadetBlue3' -> Color.new255(122, 197, 205),
-Ê Ê 'CadetBlue4' -> Color.new255(83, 134, 139),
-Ê Ê 'chartreuse' -> Color.new255(127, 255, 0),
-Ê Ê 'chartreuse1' -> Color.new255(127, 255, 0),
-Ê Ê 'chartreuse2' -> Color.new255(118, 238, 0),
-Ê Ê 'chartreuse3' -> Color.new255(102, 205, 0),
-Ê Ê 'chartreuse4' -> Color.new255(69, 139, 0),
-Ê Ê 'chocolate' -> Color.new255(210, 105, 30),
-Ê Ê 'chocolate1' -> Color.new255(255, 127, 36),
-Ê Ê 'chocolate2' -> Color.new255(238, 118, 33),
-Ê Ê 'chocolate3' -> Color.new255(205, 102, 29),
-Ê Ê 'chocolate4' -> Color.new255(139, 69, 19),
-Ê Ê 'coral' -> Color.new255(255, 127, 80),
-Ê Ê 'coral1' -> Color.new255(255, 114, 86),
-Ê Ê 'coral2' -> Color.new255(238, 106, 80),
-Ê Ê 'coral3' -> Color.new255(205, 91, 69),
-Ê Ê 'coral4' -> Color.new255(139, 62, 47),
-Ê Ê 'cornflower blue' -> Color.new255(100, 149, 237),
-Ê Ê 'CornflowerBlue' -> Color.new255(100, 149, 237),
-Ê Ê 'cornsilk' -> Color.new255(255, 248, 220),
-Ê Ê 'cornsilk1' -> Color.new255(255, 248, 220),
-Ê Ê 'cornsilk2' -> Color.new255(238, 232, 205),
-Ê Ê 'cornsilk3' -> Color.new255(205, 200, 177),
-Ê Ê 'cornsilk4' -> Color.new255(139, 136, 120),
-Ê Ê 'cyan' -> Color.new255(0, 255, 255),
-Ê Ê 'cyan1' -> Color.new255(0, 255, 255),
-Ê Ê 'cyan2' -> Color.new255(0, 238, 238),
-Ê Ê 'cyan3' -> Color.new255(0, 205, 205),
-Ê Ê 'cyan4' -> Color.new255(0, 139, 139),
-Ê Ê 'dark goldenrod' -> Color.new255(184, 134, 11),
-Ê Ê 'dark green' -> Color.new255(0, 100, 0),
-Ê Ê 'dark khaki' -> Color.new255(189, 183, 107),
-Ê Ê 'dark olive green' -> Color.new255(85, 107, 47),
-Ê Ê 'dark orange' -> Color.new255(255, 140, 0),
-Ê Ê 'dark orchid' -> Color.new255(153, 50, 204),
-Ê Ê 'dark salmon' -> Color.new255(233, 150, 122),
-Ê Ê 'dark sea green' -> Color.new255(143, 188, 143),
-Ê Ê 'dark slate blue' -> Color.new255(72, 61, 139),
-Ê Ê 'dark slate gray' -> Color.new255(47, 79, 79),
-Ê Ê 'dark slate grey' -> Color.new255(47, 79, 79),
-Ê Ê 'dark turquoise' -> Color.new255(0, 206, 209),
-Ê Ê 'dark violet' -> Color.new255(148, 0, 211),
-Ê Ê 'DarkGoldenrod' -> Color.new255(184, 134, 11),
-Ê Ê 'DarkGoldenrod1' -> Color.new255(255, 185, 15),
-Ê Ê 'DarkGoldenrod2' -> Color.new255(238, 173, 14),
-Ê Ê 'DarkGoldenrod3' -> Color.new255(205, 149, 12),
-Ê Ê 'DarkGoldenrod4' -> Color.new255(139, 101, 8),
-Ê Ê 'DarkGreen' -> Color.new255(0, 100, 0),
-Ê Ê 'DarkKhaki' -> Color.new255(189, 183, 107),
-Ê Ê 'DarkOliveGreen' -> Color.new255(85, 107, 47),
-Ê Ê 'DarkOliveGreen1' -> Color.new255(202, 255, 112),
-Ê Ê 'DarkOliveGreen2' -> Color.new255(188, 238, 104),
-Ê Ê 'DarkOliveGreen3' -> Color.new255(162, 205, 90),
-Ê Ê 'DarkOliveGreen4' -> Color.new255(110, 139, 61),
-Ê Ê 'DarkOrange' -> Color.new255(255, 140, 0),
-Ê Ê 'DarkOrange1' -> Color.new255(255, 127, 0),
-Ê Ê 'DarkOrange2' -> Color.new255(238, 118, 0),
-Ê Ê 'DarkOrange3' -> Color.new255(205, 102, 0),
-Ê Ê 'DarkOrange4' -> Color.new255(139, 69, 0),
-Ê Ê 'DarkOrchid' -> Color.new255(153, 50, 204),
-Ê Ê 'DarkOrchid1' -> Color.new255(191, 62, 255),
-Ê Ê 'DarkOrchid2' -> Color.new255(178, 58, 238),
-Ê Ê 'DarkOrchid3' -> Color.new255(154, 50, 205),
-Ê Ê 'DarkOrchid4' -> Color.new255(104, 34, 139),
-Ê Ê 'DarkSalmon' -> Color.new255(233, 150, 122),
-Ê Ê 'DarkSeaGreen' -> Color.new255(143, 188, 143),
-Ê Ê 'DarkSeaGreen1' -> Color.new255(193, 255, 193),
-Ê Ê 'DarkSeaGreen2' -> Color.new255(180, 238, 180),
-Ê Ê 'DarkSeaGreen3' -> Color.new255(155, 205, 155),
-Ê Ê 'DarkSeaGreen4' -> Color.new255(105, 139, 105),
-Ê Ê 'DarkSlateBlue' -> Color.new255(72, 61, 139),
-Ê Ê 'DarkSlateGray' -> Color.new255(47, 79, 79),
-Ê Ê 'DarkSlateGray1' -> Color.new255(151, 255, 255),
-Ê Ê 'DarkSlateGray2' -> Color.new255(141, 238, 238),
-Ê Ê 'DarkSlateGray3' -> Color.new255(121, 205, 205),
-Ê Ê 'DarkSlateGray4' -> Color.new255(82, 139, 139),
-Ê Ê 'DarkSlateGrey' -> Color.new255(47, 79, 79),
-Ê Ê 'DarkTurquoise' -> Color.new255(0, 206, 209),
-Ê Ê 'DarkViolet' -> Color.new255(148, 0, 211),
-Ê Ê 'deep pink' -> Color.new255(255, 20, 147),
-Ê Ê 'deep sky blue' -> Color.new255(0, 191, 255),
-Ê Ê 'DeepPink' -> Color.new255(255, 20, 147),
-Ê Ê 'DeepPink1' -> Color.new255(255, 20, 147),
-Ê Ê 'DeepPink2' -> Color.new255(238, 18, 137),
-Ê Ê 'DeepPink3' -> Color.new255(205, 16, 118),
-Ê Ê 'DeepPink4' -> Color.new255(139, 10, 80),
-Ê Ê 'DeepSkyBlue' -> Color.new255(0, 191, 255),
-Ê Ê 'DeepSkyBlue1' -> Color.new255(0, 191, 255),
-Ê Ê 'DeepSkyBlue2' -> Color.new255(0, 178, 238),
-Ê Ê 'DeepSkyBlue3' -> Color.new255(0, 154, 205),
-Ê Ê 'DeepSkyBlue4' -> Color.new255(0, 104, 139),
-Ê Ê 'dim gray' -> Color.new255(105, 105, 105),
-Ê Ê 'dim grey' -> Color.new255(105, 105, 105),
-Ê Ê 'DimGray' -> Color.new255(105, 105, 105),
-Ê Ê 'DimGrey' -> Color.new255(105, 105, 105),
-Ê Ê 'dodger blue' -> Color.new255(30, 144, 255),
-Ê Ê 'DodgerBlue' -> Color.new255(30, 144, 255),
-Ê Ê 'DodgerBlue1' -> Color.new255(30, 144, 255),
-Ê Ê 'DodgerBlue2' -> Color.new255(28, 134, 238),
-Ê Ê 'DodgerBlue3' -> Color.new255(24, 116, 205),
-Ê Ê 'DodgerBlue4' -> Color.new255(16, 78, 139),
-Ê Ê 'firebrick' -> Color.new255(178, 34, 34),
-Ê Ê 'firebrick1' -> Color.new255(255, 48, 48),
-Ê Ê 'firebrick2' -> Color.new255(238, 44, 44),
-Ê Ê 'firebrick3' -> Color.new255(205, 38, 38),
-Ê Ê 'firebrick4' -> Color.new255(139, 26, 26),
-Ê Ê 'floral white' -> Color.new255(255, 250, 240),
-Ê Ê 'FloralWhite' -> Color.new255(255, 250, 240),
-Ê Ê 'forest green' -> Color.new255(34, 139, 34),
-Ê Ê 'ForestGreen' -> Color.new255(34, 139, 34),
-Ê Ê 'gainsboro' -> Color.new255(220, 220, 220),
-Ê Ê 'ghost white' -> Color.new255(248, 248, 255),
-Ê Ê 'GhostWhite' -> Color.new255(248, 248, 255),
-Ê Ê 'gold' -> Color.new255(255, 215, 0),
-Ê Ê 'gold1' -> Color.new255(255, 215, 0),
-Ê Ê 'gold2' -> Color.new255(238, 201, 0),
-Ê Ê 'gold3' -> Color.new255(205, 173, 0),
-Ê Ê 'gold4' -> Color.new255(139, 117, 0),
-Ê Ê 'goldenrod' -> Color.new255(218, 165, 32),
-Ê Ê 'goldenrod1' -> Color.new255(255, 193, 37),
-Ê Ê 'goldenrod2' -> Color.new255(238, 180, 34),
-Ê Ê 'goldenrod3' -> Color.new255(205, 155, 29),
-Ê Ê 'goldenrod4' -> Color.new255(139, 105, 20),
-Ê Ê 'gray' -> Color.new255(190, 190, 190),
-Ê Ê 'gray0' -> Color.new255(0, 0, 0),
-Ê Ê 'gray1' -> Color.new255(3, 3, 3),
-Ê Ê 'gray10' -> Color.new255(26, 26, 26),
-Ê Ê 'gray100' -> Color.new255(255, 255, 255),
-Ê Ê 'gray11' -> Color.new255(28, 28, 28),
-Ê Ê 'gray12' -> Color.new255(31, 31, 31),
-Ê Ê 'gray13' -> Color.new255(33, 33, 33),
-Ê Ê 'gray14' -> Color.new255(36, 36, 36),
-Ê Ê 'gray15' -> Color.new255(38, 38, 38),
-Ê Ê 'gray16' -> Color.new255(41, 41, 41),
-Ê Ê 'gray17' -> Color.new255(43, 43, 43),
-Ê Ê 'gray18' -> Color.new255(46, 46, 46),
-Ê Ê 'gray19' -> Color.new255(48, 48, 48),
-Ê Ê 'gray2' -> Color.new255(5, 5, 5),
-Ê Ê 'gray20' -> Color.new255(51, 51, 51),
-Ê Ê 'gray21' -> Color.new255(54, 54, 54),
-Ê Ê 'gray22' -> Color.new255(56, 56, 56),
-Ê Ê 'gray23' -> Color.new255(59, 59, 59),
-Ê Ê 'gray24' -> Color.new255(61, 61, 61),
-Ê Ê 'gray25' -> Color.new255(64, 64, 64),
-Ê Ê 'gray26' -> Color.new255(66, 66, 66),
-Ê Ê 'gray27' -> Color.new255(69, 69, 69),
-Ê Ê 'gray28' -> Color.new255(71, 71, 71),
-Ê Ê 'gray29' -> Color.new255(74, 74, 74),
-Ê Ê 'gray3' -> Color.new255(8, 8, 8),
-Ê Ê 'gray30' -> Color.new255(77, 77, 77),
-Ê Ê 'gray31' -> Color.new255(79, 79, 79),
-Ê Ê 'gray32' -> Color.new255(82, 82, 82),
-Ê Ê 'gray33' -> Color.new255(84, 84, 84),
-Ê Ê 'gray34' -> Color.new255(87, 87, 87),
-Ê Ê 'gray35' -> Color.new255(89, 89, 89),
-Ê Ê 'gray36' -> Color.new255(92, 92, 92),
-Ê Ê 'gray37' -> Color.new255(94, 94, 94),
-Ê Ê 'gray38' -> Color.new255(97, 97, 97),
-Ê Ê 'gray39' -> Color.new255(99, 99, 99),
-Ê Ê 'gray4' -> Color.new255(10, 10, 10),
-Ê Ê 'gray40' -> Color.new255(102, 102, 102),
-Ê Ê 'gray41' -> Color.new255(105, 105, 105),
-Ê Ê 'gray42' -> Color.new255(107, 107, 107),
-Ê Ê 'gray43' -> Color.new255(110, 110, 110),
-Ê Ê 'gray44' -> Color.new255(112, 112, 112),
-Ê Ê 'gray45' -> Color.new255(115, 115, 115),
-Ê Ê 'gray46' -> Color.new255(117, 117, 117),
-Ê Ê 'gray47' -> Color.new255(120, 120, 120),
-Ê Ê 'gray48' -> Color.new255(122, 122, 122),
-Ê Ê 'gray49' -> Color.new255(125, 125, 125),
-Ê Ê 'gray5' -> Color.new255(13, 13, 13),
-Ê Ê 'gray50' -> Color.new255(127, 127, 127),
-Ê Ê 'gray51' -> Color.new255(130, 130, 130),
-Ê Ê 'gray52' -> Color.new255(133, 133, 133),
-Ê Ê 'gray53' -> Color.new255(135, 135, 135),
-Ê Ê 'gray54' -> Color.new255(138, 138, 138),
-Ê Ê 'gray55' -> Color.new255(140, 140, 140),
-Ê Ê 'gray56' -> Color.new255(143, 143, 143),
-Ê Ê 'gray57' -> Color.new255(145, 145, 145),
-Ê Ê 'gray58' -> Color.new255(148, 148, 148),
-Ê Ê 'gray59' -> Color.new255(150, 150, 150),
-Ê Ê 'gray6' -> Color.new255(15, 15, 15),
-Ê Ê 'gray60' -> Color.new255(153, 153, 153),
-Ê Ê 'gray61' -> Color.new255(156, 156, 156),
-Ê Ê 'gray62' -> Color.new255(158, 158, 158),
-Ê Ê 'gray63' -> Color.new255(161, 161, 161),
-Ê Ê 'gray64' -> Color.new255(163, 163, 163),
-Ê Ê 'gray65' -> Color.new255(166, 166, 166),
-Ê Ê 'gray66' -> Color.new255(168, 168, 168),
-Ê Ê 'gray67' -> Color.new255(171, 171, 171),
-Ê Ê 'gray68' -> Color.new255(173, 173, 173),
-Ê Ê 'gray69' -> Color.new255(176, 176, 176),
-Ê Ê 'gray7' -> Color.new255(18, 18, 18),
-Ê Ê 'gray70' -> Color.new255(179, 179, 179),
-Ê Ê 'gray71' -> Color.new255(181, 181, 181),
-Ê Ê 'gray72' -> Color.new255(184, 184, 184),
-Ê Ê 'gray73' -> Color.new255(186, 186, 186),
-Ê Ê 'gray74' -> Color.new255(189, 189, 189),
-Ê Ê 'gray75' -> Color.new255(191, 191, 191),
-Ê Ê 'gray76' -> Color.new255(194, 194, 194),
-Ê Ê 'gray77' -> Color.new255(196, 196, 196),
-Ê Ê 'gray78' -> Color.new255(199, 199, 199),
-Ê Ê 'gray79' -> Color.new255(201, 201, 201),
-Ê Ê 'gray8' -> Color.new255(20, 20, 20),
-Ê Ê 'gray80' -> Color.new255(204, 204, 204),
-Ê Ê 'gray81' -> Color.new255(207, 207, 207),
-Ê Ê 'gray82' -> Color.new255(209, 209, 209),
-Ê Ê 'gray83' -> Color.new255(212, 212, 212),
-Ê Ê 'gray84' -> Color.new255(214, 214, 214),
-Ê Ê 'gray85' -> Color.new255(217, 217, 217),
-Ê Ê 'gray86' -> Color.new255(219, 219, 219),
-Ê Ê 'gray87' -> Color.new255(222, 222, 222),
-Ê Ê 'gray88' -> Color.new255(224, 224, 224),
-Ê Ê 'gray89' -> Color.new255(227, 227, 227),
-Ê Ê 'gray9' -> Color.new255(23, 23, 23),
-Ê Ê 'gray90' -> Color.new255(229, 229, 229),
-Ê Ê 'gray91' -> Color.new255(232, 232, 232),
-Ê Ê 'gray92' -> Color.new255(235, 235, 235),
-Ê Ê 'gray93' -> Color.new255(237, 237, 237),
-Ê Ê 'gray94' -> Color.new255(240, 240, 240),
-Ê Ê 'gray95' -> Color.new255(242, 242, 242),
-Ê Ê 'gray96' -> Color.new255(245, 245, 245),
-Ê Ê 'gray97' -> Color.new255(247, 247, 247),
-Ê Ê 'gray98' -> Color.new255(250, 250, 250),
-Ê Ê 'gray99' -> Color.new255(252, 252, 252),
-Ê Ê 'green' -> Color.new255(0, 255, 0),
-Ê Ê 'green yellow' -> Color.new255(173, 255, 47),
-Ê Ê 'green1' -> Color.new255(0, 255, 0),
-Ê Ê 'green2' -> Color.new255(0, 238, 0),
-Ê Ê 'green3' -> Color.new255(0, 205, 0),
-Ê Ê 'green4' -> Color.new255(0, 139, 0),
-Ê Ê 'GreenYellow' -> Color.new255(173, 255, 47),
-Ê Ê 'grey' -> Color.new255(190, 190, 190),
-Ê Ê 'grey0' -> Color.new255(0, 0, 0),
-Ê Ê 'grey1' -> Color.new255(3, 3, 3),
-Ê Ê 'grey10' -> Color.new255(26, 26, 26),
-Ê Ê 'grey100' -> Color.new255(255, 255, 255),
-Ê Ê 'grey11' -> Color.new255(28, 28, 28),
-Ê Ê 'grey12' -> Color.new255(31, 31, 31),
-Ê Ê 'grey13' -> Color.new255(33, 33, 33),
-Ê Ê 'grey14' -> Color.new255(36, 36, 36),
-Ê Ê 'grey15' -> Color.new255(38, 38, 38),
-Ê Ê 'grey16' -> Color.new255(41, 41, 41),
-Ê Ê 'grey17' -> Color.new255(43, 43, 43),
-Ê Ê 'grey18' -> Color.new255(46, 46, 46),
-Ê Ê 'grey19' -> Color.new255(48, 48, 48),
-Ê Ê 'grey2' -> Color.new255(5, 5, 5),
-Ê Ê 'grey20' -> Color.new255(51, 51, 51),
-Ê Ê 'grey21' -> Color.new255(54, 54, 54),
-Ê Ê 'grey22' -> Color.new255(56, 56, 56),
-Ê Ê 'grey23' -> Color.new255(59, 59, 59),
-Ê Ê 'grey24' -> Color.new255(61, 61, 61),
-Ê Ê 'grey25' -> Color.new255(64, 64, 64),
-Ê Ê 'grey26' -> Color.new255(66, 66, 66),
-Ê Ê 'grey27' -> Color.new255(69, 69, 69),
-Ê Ê 'grey28' -> Color.new255(71, 71, 71),
-Ê Ê 'grey29' -> Color.new255(74, 74, 74),
-Ê Ê 'grey3' -> Color.new255(8, 8, 8),
-Ê Ê 'grey30' -> Color.new255(77, 77, 77),
-Ê Ê 'grey31' -> Color.new255(79, 79, 79),
-Ê Ê 'grey32' -> Color.new255(82, 82, 82),
-Ê Ê 'grey33' -> Color.new255(84, 84, 84),
-Ê Ê 'grey34' -> Color.new255(87, 87, 87),
-Ê Ê 'grey35' -> Color.new255(89, 89, 89),
-Ê Ê 'grey36' -> Color.new255(92, 92, 92),
-Ê Ê 'grey37' -> Color.new255(94, 94, 94),
-Ê Ê 'grey38' -> Color.new255(97, 97, 97),
-Ê Ê 'grey39' -> Color.new255(99, 99, 99),
-Ê Ê 'grey4' -> Color.new255(10, 10, 10),
-Ê Ê 'grey40' -> Color.new255(102, 102, 102),
-Ê Ê 'grey41' -> Color.new255(105, 105, 105),
-Ê Ê 'grey42' -> Color.new255(107, 107, 107),
-Ê Ê 'grey43' -> Color.new255(110, 110, 110),
-Ê Ê 'grey44' -> Color.new255(112, 112, 112),
-Ê Ê 'grey45' -> Color.new255(115, 115, 115),
-Ê Ê 'grey46' -> Color.new255(117, 117, 117),
-Ê Ê 'grey47' -> Color.new255(120, 120, 120),
-Ê Ê 'grey48' -> Color.new255(122, 122, 122),
-Ê Ê 'grey49' -> Color.new255(125, 125, 125),
-Ê Ê 'grey5' -> Color.new255(13, 13, 13),
-Ê Ê 'grey50' -> Color.new255(127, 127, 127),
-Ê Ê 'grey51' -> Color.new255(130, 130, 130),
-Ê Ê 'grey52' -> Color.new255(133, 133, 133),
-Ê Ê 'grey53' -> Color.new255(135, 135, 135),
-Ê Ê 'grey54' -> Color.new255(138, 138, 138),
-Ê Ê 'grey55' -> Color.new255(140, 140, 140),
-Ê Ê 'grey56' -> Color.new255(143, 143, 143),
-Ê Ê 'grey57' -> Color.new255(145, 145, 145),
-Ê Ê 'grey58' -> Color.new255(148, 148, 148),
-Ê Ê 'grey59' -> Color.new255(150, 150, 150),
-Ê Ê 'grey6' -> Color.new255(15, 15, 15),
-Ê Ê 'grey60' -> Color.new255(153, 153, 153),
-Ê Ê 'grey61' -> Color.new255(156, 156, 156),
-Ê Ê 'grey62' -> Color.new255(158, 158, 158),
-Ê Ê 'grey63' -> Color.new255(161, 161, 161),
-Ê Ê 'grey64' -> Color.new255(163, 163, 163),
-Ê Ê 'grey65' -> Color.new255(166, 166, 166),
-Ê Ê 'grey66' -> Color.new255(168, 168, 168),
-Ê Ê 'grey67' -> Color.new255(171, 171, 171),
-Ê Ê 'grey68' -> Color.new255(173, 173, 173),
-Ê Ê 'grey69' -> Color.new255(176, 176, 176),
-Ê Ê 'grey7' -> Color.new255(18, 18, 18),
-Ê Ê 'grey70' -> Color.new255(179, 179, 179),
-Ê Ê 'grey71' -> Color.new255(181, 181, 181),
-Ê Ê 'grey72' -> Color.new255(184, 184, 184),
-Ê Ê 'grey73' -> Color.new255(186, 186, 186),
-Ê Ê 'grey74' -> Color.new255(189, 189, 189),
-Ê Ê 'grey75' -> Color.new255(191, 191, 191),
-Ê Ê 'grey76' -> Color.new255(194, 194, 194),
-Ê Ê 'grey77' -> Color.new255(196, 196, 196),
-Ê Ê 'grey78' -> Color.new255(199, 199, 199),
-Ê Ê 'grey79' -> Color.new255(201, 201, 201),
-Ê Ê 'grey8' -> Color.new255(20, 20, 20),
-Ê Ê 'grey80' -> Color.new255(204, 204, 204),
-Ê Ê 'grey81' -> Color.new255(207, 207, 207),
-Ê Ê 'grey82' -> Color.new255(209, 209, 209),
-Ê Ê 'grey83' -> Color.new255(212, 212, 212),
-Ê Ê 'grey84' -> Color.new255(214, 214, 214),
-Ê Ê 'grey85' -> Color.new255(217, 217, 217),
-Ê Ê 'grey86' -> Color.new255(219, 219, 219),
-Ê Ê 'grey87' -> Color.new255(222, 222, 222),
-Ê Ê 'grey88' -> Color.new255(224, 224, 224),
-Ê Ê 'grey89' -> Color.new255(227, 227, 227),
-Ê Ê 'grey9' -> Color.new255(23, 23, 23),
-Ê Ê 'grey90' -> Color.new255(229, 229, 229),
-Ê Ê 'grey91' -> Color.new255(232, 232, 232),
-Ê Ê 'grey92' -> Color.new255(235, 235, 235),
-Ê Ê 'grey93' -> Color.new255(237, 237, 237),
-Ê Ê 'grey94' -> Color.new255(240, 240, 240),
-Ê Ê 'grey95' -> Color.new255(242, 242, 242),
-Ê Ê 'grey96' -> Color.new255(245, 245, 245),
-Ê Ê 'grey97' -> Color.new255(247, 247, 247),
-Ê Ê 'grey98' -> Color.new255(250, 250, 250),
-Ê Ê 'grey99' -> Color.new255(252, 252, 252),
-Ê Ê 'honeydew' -> Color.new255(240, 255, 240),
-Ê Ê 'honeydew1' -> Color.new255(240, 255, 240),
-Ê Ê 'honeydew2' -> Color.new255(224, 238, 224),
-Ê Ê 'honeydew3' -> Color.new255(193, 205, 193),
-Ê Ê 'honeydew4' -> Color.new255(131, 139, 131),
-Ê Ê 'hot pink' -> Color.new255(255, 105, 180),
-Ê Ê 'HotPink' -> Color.new255(255, 105, 180),
-Ê Ê 'HotPink1' -> Color.new255(255, 110, 180),
-Ê Ê 'HotPink2' -> Color.new255(238, 106, 167),
-Ê Ê 'HotPink3' -> Color.new255(205, 96, 144),
-Ê Ê 'HotPink4' -> Color.new255(139, 58, 98),
-Ê Ê 'indian red' -> Color.new255(205, 92, 92),
-Ê Ê 'IndianRed' -> Color.new255(205, 92, 92),
-Ê Ê 'IndianRed1' -> Color.new255(255, 106, 106),
-Ê Ê 'IndianRed2' -> Color.new255(238, 99, 99),
-Ê Ê 'IndianRed3' -> Color.new255(205, 85, 85),
-Ê Ê 'IndianRed4' -> Color.new255(139, 58, 58),
-Ê Ê 'ivory' -> Color.new255(255, 255, 240),
-Ê Ê 'ivory1' -> Color.new255(255, 255, 240),
-Ê Ê 'ivory2' -> Color.new255(238, 238, 224),
-Ê Ê 'ivory3' -> Color.new255(205, 205, 193),
-Ê Ê 'ivory4' -> Color.new255(139, 139, 131),
-Ê Ê 'khaki' -> Color.new255(240, 230, 140),
-Ê Ê 'khaki1' -> Color.new255(255, 246, 143),
-Ê Ê 'khaki2' -> Color.new255(238, 230, 133),
-Ê Ê 'khaki3' -> Color.new255(205, 198, 115),
-Ê Ê 'khaki4' -> Color.new255(139, 134, 78),
-Ê Ê 'lavender' -> Color.new255(230, 230, 250),
-Ê Ê 'lavender blush' -> Color.new255(255, 240, 245),
-Ê Ê 'LavenderBlush' -> Color.new255(255, 240, 245),
-Ê Ê 'LavenderBlush1' -> Color.new255(255, 240, 245),
-Ê Ê 'LavenderBlush2' -> Color.new255(238, 224, 229),
-Ê Ê 'LavenderBlush3' -> Color.new255(205, 193, 197),
-Ê Ê 'LavenderBlush4' -> Color.new255(139, 131, 134),
-Ê Ê 'lawn green' -> Color.new255(124, 252, 0),
-Ê Ê 'LawnGreen' -> Color.new255(124, 252, 0),
-Ê Ê 'lemon chiffon' -> Color.new255(255, 250, 205),
-Ê Ê 'LemonChiffon' -> Color.new255(255, 250, 205),
-Ê Ê 'LemonChiffon1' -> Color.new255(255, 250, 205),
-Ê Ê 'LemonChiffon2' -> Color.new255(238, 233, 191),
-Ê Ê 'LemonChiffon3' -> Color.new255(205, 201, 165),
-Ê Ê 'LemonChiffon4' -> Color.new255(139, 137, 112),
-Ê Ê 'light blue' -> Color.new255(173, 216, 230),
-Ê Ê 'light coral' -> Color.new255(240, 128, 128),
-Ê Ê 'light cyan' -> Color.new255(224, 255, 255),
-Ê Ê 'light goldenrod' -> Color.new255(238, 221, 130),
-Ê Ê 'light goldenrod yellow' -> Color.new255(250, 250, 210),
-Ê Ê 'light gray' -> Color.new255(211, 211, 211),
-Ê Ê 'light grey' -> Color.new255(211, 211, 211),
-Ê Ê 'light pink' -> Color.new255(255, 182, 193),
-Ê Ê 'light salmon' -> Color.new255(255, 160, 122),
-Ê Ê 'light sea green' -> Color.new255(32, 178, 170),
-Ê Ê 'light sky blue' -> Color.new255(135, 206, 250),
-Ê Ê 'light slate blue' -> Color.new255(132, 112, 255),
-Ê Ê 'light slate gray' -> Color.new255(119, 136, 153),
-Ê Ê 'light slate grey' -> Color.new255(119, 136, 153),
-Ê Ê 'light steel blue' -> Color.new255(176, 196, 222),
-Ê Ê 'light yellow' -> Color.new255(255, 255, 224),
-Ê Ê 'LightBlue' -> Color.new255(173, 216, 230),
-Ê Ê 'LightBlue1' -> Color.new255(191, 239, 255),
-Ê Ê 'LightBlue2' -> Color.new255(178, 223, 238),
-Ê Ê 'LightBlue3' -> Color.new255(154, 192, 205),
-Ê Ê 'LightBlue4' -> Color.new255(104, 131, 139),
-Ê Ê 'LightCoral' -> Color.new255(240, 128, 128),
-Ê Ê 'LightCyan' -> Color.new255(224, 255, 255),
-Ê Ê 'LightCyan1' -> Color.new255(224, 255, 255),
-Ê Ê 'LightCyan2' -> Color.new255(209, 238, 238),
-Ê Ê 'LightCyan3' -> Color.new255(180, 205, 205),
-Ê Ê 'LightCyan4' -> Color.new255(122, 139, 139),
-Ê Ê 'LightGoldenrod' -> Color.new255(238, 221, 130),
-Ê Ê 'LightGoldenrod1' -> Color.new255(255, 236, 139),
-Ê Ê 'LightGoldenrod2' -> Color.new255(238, 220, 130),
-Ê Ê 'LightGoldenrod3' -> Color.new255(205, 190, 112),
-Ê Ê 'LightGoldenrod4' -> Color.new255(139, 129, 76),
-Ê Ê 'LightGoldenrodYellow' -> Color.new255(250, 250, 210),
-Ê Ê 'LightGray' -> Color.new255(211, 211, 211),
-Ê Ê 'LightGrey' -> Color.new255(211, 211, 211),
-Ê Ê 'LightPink' -> Color.new255(255, 182, 193),
-Ê Ê 'LightPink1' -> Color.new255(255, 174, 185),
-Ê Ê 'LightPink2' -> Color.new255(238, 162, 173),
-Ê Ê 'LightPink3' -> Color.new255(205, 140, 149),
-Ê Ê 'LightPink4' -> Color.new255(139, 95, 101),
-Ê Ê 'LightSalmon' -> Color.new255(255, 160, 122),
-Ê Ê 'LightSalmon1' -> Color.new255(255, 160, 122),
-Ê Ê 'LightSalmon2' -> Color.new255(238, 149, 114),
-Ê Ê 'LightSalmon3' -> Color.new255(205, 129, 98),
-Ê Ê 'LightSalmon4' -> Color.new255(139, 87, 66),
-Ê Ê 'LightSeaGreen' -> Color.new255(32, 178, 170),
-Ê Ê 'LightSkyBlue' -> Color.new255(135, 206, 250),
-Ê Ê 'LightSkyBlue1' -> Color.new255(176, 226, 255),
-Ê Ê 'LightSkyBlue2' -> Color.new255(164, 211, 238),
-Ê Ê 'LightSkyBlue3' -> Color.new255(141, 182, 205),
-Ê Ê 'LightSkyBlue4' -> Color.new255(96, 123, 139),
-Ê Ê 'LightSlateBlue' -> Color.new255(132, 112, 255),
-Ê Ê 'LightSlateGray' -> Color.new255(119, 136, 153),
-Ê Ê 'LightSlateGrey' -> Color.new255(119, 136, 153),
-Ê Ê 'LightSteelBlue' -> Color.new255(176, 196, 222),
-Ê Ê 'LightSteelBlue1' -> Color.new255(202, 225, 255),
-Ê Ê 'LightSteelBlue2' -> Color.new255(188, 210, 238),
-Ê Ê 'LightSteelBlue3' -> Color.new255(162, 181, 205),
-Ê Ê 'LightSteelBlue4' -> Color.new255(110, 123, 139),
-Ê Ê 'LightYellow' -> Color.new255(255, 255, 224),
-Ê Ê 'LightYellow1' -> Color.new255(255, 255, 224),
-Ê Ê 'LightYellow2' -> Color.new255(238, 238, 209),
-Ê Ê 'LightYellow3' -> Color.new255(205, 205, 180),
-Ê Ê 'LightYellow4' -> Color.new255(139, 139, 122),
-Ê Ê 'lime green' -> Color.new255(50, 205, 50),
-Ê Ê 'LimeGreen' -> Color.new255(50, 205, 50),
-Ê Ê 'linen' -> Color.new255(250, 240, 230),
-Ê Ê 'magenta' -> Color.new255(255, 0, 255),
-Ê Ê 'magenta1' -> Color.new255(255, 0, 255),
-Ê Ê 'magenta2' -> Color.new255(238, 0, 238),
-Ê Ê 'magenta3' -> Color.new255(205, 0, 205),
-Ê Ê 'magenta4' -> Color.new255(139, 0, 139),
-Ê Ê 'maroon' -> Color.new255(176, 48, 96),
-Ê Ê 'maroon1' -> Color.new255(255, 52, 179),
-Ê Ê 'maroon2' -> Color.new255(238, 48, 167),
-Ê Ê 'maroon3' -> Color.new255(205, 41, 144),
-Ê Ê 'maroon4' -> Color.new255(139, 28, 98),
-Ê Ê 'medium aquamarine' -> Color.new255(102, 205, 170),
-Ê Ê 'medium blue' -> Color.new255(0, 0, 205),
-Ê Ê 'medium orchid' -> Color.new255(186, 85, 211),
-Ê Ê 'medium purple' -> Color.new255(147, 112, 219),
-Ê Ê 'medium sea green' -> Color.new255(60, 179, 113),
-Ê Ê 'medium slate blue' -> Color.new255(123, 104, 238),
-Ê Ê 'medium spring green' -> Color.new255(0, 250, 154),
-Ê Ê 'medium turquoise' -> Color.new255(72, 209, 204),
-Ê Ê 'medium violet red' -> Color.new255(199, 21, 133),
-Ê Ê 'MediumAquamarine' -> Color.new255(102, 205, 170),
-Ê Ê 'MediumBlue' -> Color.new255(0, 0, 205),
-Ê Ê 'MediumOrchid' -> Color.new255(186, 85, 211),
-Ê Ê 'MediumOrchid1' -> Color.new255(224, 102, 255),
-Ê Ê 'MediumOrchid2' -> Color.new255(209, 95, 238),
-Ê Ê 'MediumOrchid3' -> Color.new255(180, 82, 205),
-Ê Ê 'MediumOrchid4' -> Color.new255(122, 55, 139),
-Ê Ê 'MediumPurple' -> Color.new255(147, 112, 219),
-Ê Ê 'MediumPurple1' -> Color.new255(171, 130, 255),
-Ê Ê 'MediumPurple2' -> Color.new255(159, 121, 238),
-Ê Ê 'MediumPurple3' -> Color.new255(137, 104, 205),
-Ê Ê 'MediumPurple4' -> Color.new255(93, 71, 139),
-Ê Ê 'MediumSeaGreen' -> Color.new255(60, 179, 113),
-Ê Ê 'MediumSlateBlue' -> Color.new255(123, 104, 238),
-Ê Ê 'MediumSpringGreen' -> Color.new255(0, 250, 154),
-Ê Ê 'MediumTurquoise' -> Color.new255(72, 209, 204),
-Ê Ê 'MediumVioletRed' -> Color.new255(199, 21, 133),
-Ê Ê 'midnight blue' -> Color.new255(25, 25, 112),
-Ê Ê 'MidnightBlue' -> Color.new255(25, 25, 112),
-Ê Ê 'mint cream' -> Color.new255(245, 255, 250),
-Ê Ê 'MintCream' -> Color.new255(245, 255, 250),
-Ê Ê 'misty rose' -> Color.new255(255, 228, 225),
-Ê Ê 'MistyRose' -> Color.new255(255, 228, 225),
-Ê Ê 'MistyRose1' -> Color.new255(255, 228, 225),
-Ê Ê 'MistyRose2' -> Color.new255(238, 213, 210),
-Ê Ê 'MistyRose3' -> Color.new255(205, 183, 181),
-Ê Ê 'MistyRose4' -> Color.new255(139, 125, 123),
-Ê Ê 'moccasin' -> Color.new255(255, 228, 181),
-Ê Ê 'navajo white' -> Color.new255(255, 222, 173),
-Ê Ê 'NavajoWhite' -> Color.new255(255, 222, 173),
-Ê Ê 'NavajoWhite1' -> Color.new255(255, 222, 173),
-Ê Ê 'NavajoWhite2' -> Color.new255(238, 207, 161),
-Ê Ê 'NavajoWhite3' -> Color.new255(205, 179, 139),
-Ê Ê 'NavajoWhite4' -> Color.new255(139, 121, 94),
-Ê Ê 'navy' -> Color.new255(0, 0, 128),
-Ê Ê 'navy blue' -> Color.new255(0, 0, 128),
-Ê Ê 'NavyBlue' -> Color.new255(0, 0, 128),
-Ê Ê 'old lace' -> Color.new255(253, 245, 230),
-Ê Ê 'OldLace' -> Color.new255(253, 245, 230),
-Ê Ê 'olive drab' -> Color.new255(107, 142, 35),
-Ê Ê 'OliveDrab' -> Color.new255(107, 142, 35),
-Ê Ê 'OliveDrab1' -> Color.new255(192, 255, 62),
-Ê Ê 'OliveDrab2' -> Color.new255(179, 238, 58),
-Ê Ê 'OliveDrab3' -> Color.new255(154, 205, 50),
-Ê Ê 'OliveDrab4' -> Color.new255(105, 139, 34),
-Ê Ê 'orange' -> Color.new255(255, 165, 0),
-Ê Ê 'orange red' -> Color.new255(255, 69, 0),
-Ê Ê 'orange1' -> Color.new255(255, 165, 0),
-Ê Ê 'orange2' -> Color.new255(238, 154, 0),
-Ê Ê 'orange3' -> Color.new255(205, 133, 0),
-Ê Ê 'orange4' -> Color.new255(139, 90, 0),
-Ê Ê 'OrangeRed' -> Color.new255(255, 69, 0),
-Ê Ê 'OrangeRed1' -> Color.new255(255, 69, 0),
-Ê Ê 'OrangeRed2' -> Color.new255(238, 64, 0),
-Ê Ê 'OrangeRed3' -> Color.new255(205, 55, 0),
-Ê Ê 'OrangeRed4' -> Color.new255(139, 37, 0),
-Ê Ê 'orchid' -> Color.new255(218, 112, 214),
-Ê Ê 'orchid1' -> Color.new255(255, 131, 250),
-Ê Ê 'orchid2' -> Color.new255(238, 122, 233),
-Ê Ê 'orchid3' -> Color.new255(205, 105, 201),
-Ê Ê 'orchid4' -> Color.new255(139, 71, 137),
-Ê Ê 'pale goldenrod' -> Color.new255(238, 232, 170),
-Ê Ê 'pale green' -> Color.new255(152, 251, 152),
-Ê Ê 'pale turquoise' -> Color.new255(175, 238, 238),
-Ê Ê 'pale violet red' -> Color.new255(219, 112, 147),
-Ê Ê 'PaleGoldenrod' -> Color.new255(238, 232, 170),
-Ê Ê 'PaleGreen' -> Color.new255(152, 251, 152),
-Ê Ê 'PaleGreen1' -> Color.new255(154, 255, 154),
-Ê Ê 'PaleGreen2' -> Color.new255(144, 238, 144),
-Ê Ê 'PaleGreen3' -> Color.new255(124, 205, 124),
-Ê Ê 'PaleGreen4' -> Color.new255(84, 139, 84),
-Ê Ê 'PaleTurquoise' -> Color.new255(175, 238, 238),
-Ê Ê 'PaleTurquoise1' -> Color.new255(187, 255, 255),
-Ê Ê 'PaleTurquoise2' -> Color.new255(174, 238, 238),
-Ê Ê 'PaleTurquoise3' -> Color.new255(150, 205, 205),
-Ê Ê 'PaleTurquoise4' -> Color.new255(102, 139, 139),
-Ê Ê 'PaleVioletRed' -> Color.new255(219, 112, 147),
-Ê Ê 'PaleVioletRed1' -> Color.new255(255, 130, 171),
-Ê Ê 'PaleVioletRed2' -> Color.new255(238, 121, 159),
-Ê Ê 'PaleVioletRed3' -> Color.new255(205, 104, 137),
-Ê Ê 'PaleVioletRed4' -> Color.new255(139, 71, 93),
-Ê Ê 'papaya whip' -> Color.new255(255, 239, 213),
-Ê Ê 'PapayaWhip' -> Color.new255(255, 239, 213),
-Ê Ê 'peach puff' -> Color.new255(255, 218, 185),
-Ê Ê 'PeachPuff' -> Color.new255(255, 218, 185),
-Ê Ê 'PeachPuff1' -> Color.new255(255, 218, 185),
-Ê Ê 'PeachPuff2' -> Color.new255(238, 203, 173),
-Ê Ê 'PeachPuff3' -> Color.new255(205, 175, 149),
-Ê Ê 'PeachPuff4' -> Color.new255(139, 119, 101),
-Ê Ê 'peru' -> Color.new255(205, 133, 63),
-Ê Ê 'pink' -> Color.new255(255, 192, 203),
-Ê Ê 'pink1' -> Color.new255(255, 181, 197),
-Ê Ê 'pink2' -> Color.new255(238, 169, 184),
-Ê Ê 'pink3' -> Color.new255(205, 145, 158),
-Ê Ê 'pink4' -> Color.new255(139, 99, 108),
-Ê Ê 'plum' -> Color.new255(221, 160, 221),
-Ê Ê 'plum1' -> Color.new255(255, 187, 255),
-Ê Ê 'plum2' -> Color.new255(238, 174, 238),
-Ê Ê 'plum3' -> Color.new255(205, 150, 205),
-Ê Ê 'plum4' -> Color.new255(139, 102, 139),
-Ê Ê 'powder blue' -> Color.new255(176, 224, 230),
-Ê Ê 'PowderBlue' -> Color.new255(176, 224, 230),
-Ê Ê 'purple' -> Color.new255(160, 32, 240),
-Ê Ê 'purple1' -> Color.new255(155, 48, 255),
-Ê Ê 'purple2' -> Color.new255(145, 44, 238),
-Ê Ê 'purple3' -> Color.new255(125, 38, 205),
-Ê Ê 'purple4' -> Color.new255(85, 26, 139),
-Ê Ê 'red' -> Color.new255(255, 0, 0),
-Ê Ê 'red1' -> Color.new255(255, 0, 0),
-Ê Ê 'red2' -> Color.new255(238, 0, 0),
-Ê Ê 'red3' -> Color.new255(205, 0, 0),
-Ê Ê 'red4' -> Color.new255(139, 0, 0),
-Ê Ê 'rosy brown' -> Color.new255(188, 143, 143),
-Ê Ê 'RosyBrown' -> Color.new255(188, 143, 143),
-Ê Ê 'RosyBrown1' -> Color.new255(255, 193, 193),
-Ê Ê 'RosyBrown2' -> Color.new255(238, 180, 180),
-Ê Ê 'RosyBrown3' -> Color.new255(205, 155, 155),
-Ê Ê 'RosyBrown4' -> Color.new255(139, 105, 105),
-Ê Ê 'royal blue' -> Color.new255(65, 105, 225),
-Ê Ê 'RoyalBlue' -> Color.new255(65, 105, 225),
-Ê Ê 'RoyalBlue1' -> Color.new255(72, 118, 255),
-Ê Ê 'RoyalBlue2' -> Color.new255(67, 110, 238),
-Ê Ê 'RoyalBlue3' -> Color.new255(58, 95, 205),
-Ê Ê 'RoyalBlue4' -> Color.new255(39, 64, 139),
-Ê Ê 'saddle brown' -> Color.new255(139, 69, 19),
-Ê Ê 'SaddleBrown' -> Color.new255(139, 69, 19),
-Ê Ê 'salmon' -> Color.new255(250, 128, 114),
-Ê Ê 'salmon1' -> Color.new255(255, 140, 105),
-Ê Ê 'salmon2' -> Color.new255(238, 130, 98),
-Ê Ê 'salmon3' -> Color.new255(205, 112, 84),
-Ê Ê 'salmon4' -> Color.new255(139, 76, 57),
-Ê Ê 'sandy brown' -> Color.new255(244, 164, 96),
-Ê Ê 'SandyBrown' -> Color.new255(244, 164, 96),
-Ê Ê 'sea green' -> Color.new255(46, 139, 87),
-Ê Ê 'SeaGreen' -> Color.new255(46, 139, 87),
-Ê Ê 'SeaGreen1' -> Color.new255(84, 255, 159),
-Ê Ê 'SeaGreen2' -> Color.new255(78, 238, 148),
-Ê Ê 'SeaGreen3' -> Color.new255(67, 205, 128),
-Ê Ê 'SeaGreen4' -> Color.new255(46, 139, 87),
-Ê Ê 'seashell' -> Color.new255(255, 245, 238),
-Ê Ê 'seashell1' -> Color.new255(255, 245, 238),
-Ê Ê 'seashell2' -> Color.new255(238, 229, 222),
-Ê Ê 'seashell3' -> Color.new255(205, 197, 191),
-Ê Ê 'seashell4' -> Color.new255(139, 134, 130),
-Ê Ê 'sienna' -> Color.new255(160, 82, 45),
-Ê Ê 'sienna1' -> Color.new255(255, 130, 71),
-Ê Ê 'sienna2' -> Color.new255(238, 121, 66),
-Ê Ê 'sienna3' -> Color.new255(205, 104, 57),
-Ê Ê 'sienna4' -> Color.new255(139, 71, 38),
-Ê Ê 'sky blue' -> Color.new255(135, 206, 235),
-Ê Ê 'SkyBlue' -> Color.new255(135, 206, 235),
-Ê Ê 'SkyBlue1' -> Color.new255(135, 206, 255),
-Ê Ê 'SkyBlue2' -> Color.new255(126, 192, 238),
-Ê Ê 'SkyBlue3' -> Color.new255(108, 166, 205),
-Ê Ê 'SkyBlue4' -> Color.new255(74, 112, 139),
-Ê Ê 'slate blue' -> Color.new255(106, 90, 205),
-Ê Ê 'slate gray' -> Color.new255(112, 128, 144),
-Ê Ê 'slate grey' -> Color.new255(112, 128, 144),
-Ê Ê 'SlateBlue' -> Color.new255(106, 90, 205),
-Ê Ê 'SlateBlue1' -> Color.new255(131, 111, 255),
-Ê Ê 'SlateBlue2' -> Color.new255(122, 103, 238),
-Ê Ê 'SlateBlue3' -> Color.new255(105, 89, 205),
-Ê Ê 'SlateBlue4' -> Color.new255(71, 60, 139),
-Ê Ê 'SlateGray' -> Color.new255(112, 128, 144),
-Ê Ê 'SlateGray1' -> Color.new255(198, 226, 255),
-Ê Ê 'SlateGray2' -> Color.new255(185, 211, 238),
-Ê Ê 'SlateGray3' -> Color.new255(159, 182, 205),
-Ê Ê 'SlateGray4' -> Color.new255(108, 123, 139),
-Ê Ê 'SlateGrey' -> Color.new255(112, 128, 144),
-Ê Ê 'snow' -> Color.new255(255, 250, 250),
-Ê Ê 'snow1' -> Color.new255(255, 250, 250),
-Ê Ê 'snow2' -> Color.new255(238, 233, 233),
-Ê Ê 'snow3' -> Color.new255(205, 201, 201),
-Ê Ê 'snow4' -> Color.new255(139, 137, 137),
-Ê Ê 'spring green' -> Color.new255(0, 255, 127),
-Ê Ê 'SpringGreen' -> Color.new255(0, 255, 127),
-Ê Ê 'SpringGreen1' -> Color.new255(0, 255, 127),
-Ê Ê 'SpringGreen2' -> Color.new255(0, 238, 118),
-Ê Ê 'SpringGreen3' -> Color.new255(0, 205, 102),
-Ê Ê 'SpringGreen4' -> Color.new255(0, 139, 69),
-Ê Ê 'steel blue' -> Color.new255(70, 130, 180),
-Ê Ê 'SteelBlue' -> Color.new255(70, 130, 180),
-Ê Ê 'SteelBlue1' -> Color.new255(99, 184, 255),
-Ê Ê 'SteelBlue2' -> Color.new255(92, 172, 238),
-Ê Ê 'SteelBlue3' -> Color.new255(79, 148, 205),
-Ê Ê 'SteelBlue4' -> Color.new255(54, 100, 139),
-Ê Ê 'tan' -> Color.new255(210, 180, 140),
-Ê Ê 'tan1' -> Color.new255(255, 165, 79),
-Ê Ê 'tan2' -> Color.new255(238, 154, 73),
-Ê Ê 'tan3' -> Color.new255(205, 133, 63),
-Ê Ê 'tan4' -> Color.new255(139, 90, 43),
-Ê Ê 'thistle' -> Color.new255(216, 191, 216),
-Ê Ê 'thistle1' -> Color.new255(255, 225, 255),
-Ê Ê 'thistle2' -> Color.new255(238, 210, 238),
-Ê Ê 'thistle3' -> Color.new255(205, 181, 205),
-Ê Ê 'thistle4' -> Color.new255(139, 123, 139),
-Ê Ê 'tomato' -> Color.new255(255, 99, 71),
-Ê Ê 'tomato1' -> Color.new255(255, 99, 71),
-Ê Ê 'tomato2' -> Color.new255(238, 92, 66),
-Ê Ê 'tomato3' -> Color.new255(205, 79, 57),
-Ê Ê 'tomato4' -> Color.new255(139, 54, 38),
-Ê Ê 'turquoise' -> Color.new255(64, 224, 208),
-Ê Ê 'turquoise1' -> Color.new255(0, 245, 255),
-Ê Ê 'turquoise2' -> Color.new255(0, 229, 238),
-Ê Ê 'turquoise3' -> Color.new255(0, 197, 205),
-Ê Ê 'turquoise4' -> Color.new255(0, 134, 139),
-Ê Ê 'violet' -> Color.new255(238, 130, 238),
-Ê Ê 'violet red' -> Color.new255(208, 32, 144),
-Ê Ê 'VioletRed' -> Color.new255(208, 32, 144),
-Ê Ê 'VioletRed1' -> Color.new255(255, 62, 150),
-Ê Ê 'VioletRed2' -> Color.new255(238, 58, 140),
-Ê Ê 'VioletRed3' -> Color.new255(205, 50, 120),
-Ê Ê 'VioletRed4' -> Color.new255(139, 34, 82),
-Ê Ê 'wheat' -> Color.new255(245, 222, 179),
-Ê Ê 'wheat1' -> Color.new255(255, 231, 186),
-Ê Ê 'wheat2' -> Color.new255(238, 216, 174),
-Ê Ê 'wheat3' -> Color.new255(205, 186, 150),
-Ê Ê 'wheat4' -> Color.new255(139, 126, 102),
-Ê Ê 'white' -> Color.new255(255, 255, 255),
-Ê Ê 'white smoke' -> Color.new255(245, 245, 245),
-Ê Ê 'WhiteSmoke' -> Color.new255(245, 245, 245),
-Ê Ê 'yellow' -> Color.new255(255, 255, 0),
-Ê Ê 'yellow green' -> Color.new255(154, 205, 50),
-Ê Ê 'yellow1' -> Color.new255(255, 255, 0),
-Ê Ê 'yellow2' -> Color.new255(238, 238, 0),
-Ê Ê 'yellow3' -> Color.new255(205, 205, 0),
-Ê Ê 'yellow4' -> Color.new255(139, 139, 0),
-Ê Ê 'YellowGreen' -> Color.new255(154, 205, 50)
+	'alice blue' -> Color.new255(240, 248, 255),
+	'AliceBlue' -> Color.new255(240, 248, 255),
+	'antique white' -> Color.new255(250, 235, 215),
+	'AntiqueWhite' -> Color.new255(250, 235, 215),
+	'AntiqueWhite1' -> Color.new255(255, 239, 219),
+	'AntiqueWhite2' -> Color.new255(238, 223, 204),
+	'AntiqueWhite3' -> Color.new255(205, 192, 176),
+	'AntiqueWhite4' -> Color.new255(139, 131, 120),
+	'aquamarine' -> Color.new255(127, 255, 212),
+	'aquamarine1' -> Color.new255(127, 255, 212),
+	'aquamarine2' -> Color.new255(118, 238, 198),
+	'aquamarine3' -> Color.new255(102, 205, 170),
+	'aquamarine4' -> Color.new255(69, 139, 116),
+	'azure' -> Color.new255(240, 255, 255),
+	'azure1' -> Color.new255(240, 255, 255),
+	'azure2' -> Color.new255(224, 238, 238),
+	'azure3' -> Color.new255(193, 205, 205),
+	'azure4' -> Color.new255(131, 139, 139),
+	'beige' -> Color.new255(245, 245, 220),
+	'bisque' -> Color.new255(255, 228, 196),
+	'bisque1' -> Color.new255(255, 228, 196),
+	'bisque2' -> Color.new255(238, 213, 183),
+	'bisque3' -> Color.new255(205, 183, 158),
+	'bisque4' -> Color.new255(139, 125, 107),
+	'black' -> Color.new255(0, 0, 0),
+	'blanched almond' -> Color.new255(255, 235, 205),
+	'BlanchedAlmond' -> Color.new255(255, 235, 205),
+	'blue' -> Color.new255(0, 0, 255),
+	'blue violet' -> Color.new255(138, 43, 226),
+	'blue1' -> Color.new255(0, 0, 255),
+	'blue2' -> Color.new255(0, 0, 238),
+	'blue3' -> Color.new255(0, 0, 205),
+	'blue4' -> Color.new255(0, 0, 139),
+	'BlueViolet' -> Color.new255(138, 43, 226),
+	'brown' -> Color.new255(165, 42, 42),
+	'brown1' -> Color.new255(255, 64, 64),
+	'brown2' -> Color.new255(238, 59, 59),
+	'brown3' -> Color.new255(205, 51, 51),
+	'brown4' -> Color.new255(139, 35, 35),
+	'burlywood' -> Color.new255(222, 184, 135),
+	'burlywood1' -> Color.new255(255, 211, 155),
+	'burlywood2' -> Color.new255(238, 197, 145),
+	'burlywood3' -> Color.new255(205, 170, 125),
+	'burlywood4' -> Color.new255(139, 115, 85),
+	'cadet blue' -> Color.new255(95, 158, 160),
+	'CadetBlue' -> Color.new255(95, 158, 160),
+	'CadetBlue1' -> Color.new255(152, 245, 255),
+	'CadetBlue2' -> Color.new255(142, 229, 238),
+	'CadetBlue3' -> Color.new255(122, 197, 205),
+	'CadetBlue4' -> Color.new255(83, 134, 139),
+	'chartreuse' -> Color.new255(127, 255, 0),
+	'chartreuse1' -> Color.new255(127, 255, 0),
+	'chartreuse2' -> Color.new255(118, 238, 0),
+	'chartreuse3' -> Color.new255(102, 205, 0),
+	'chartreuse4' -> Color.new255(69, 139, 0),
+	'chocolate' -> Color.new255(210, 105, 30),
+	'chocolate1' -> Color.new255(255, 127, 36),
+	'chocolate2' -> Color.new255(238, 118, 33),
+	'chocolate3' -> Color.new255(205, 102, 29),
+	'chocolate4' -> Color.new255(139, 69, 19),
+	'coral' -> Color.new255(255, 127, 80),
+	'coral1' -> Color.new255(255, 114, 86),
+	'coral2' -> Color.new255(238, 106, 80),
+	'coral3' -> Color.new255(205, 91, 69),
+	'coral4' -> Color.new255(139, 62, 47),
+	'cornflower blue' -> Color.new255(100, 149, 237),
+	'CornflowerBlue' -> Color.new255(100, 149, 237),
+	'cornsilk' -> Color.new255(255, 248, 220),
+	'cornsilk1' -> Color.new255(255, 248, 220),
+	'cornsilk2' -> Color.new255(238, 232, 205),
+	'cornsilk3' -> Color.new255(205, 200, 177),
+	'cornsilk4' -> Color.new255(139, 136, 120),
+	'cyan' -> Color.new255(0, 255, 255),
+	'cyan1' -> Color.new255(0, 255, 255),
+	'cyan2' -> Color.new255(0, 238, 238),
+	'cyan3' -> Color.new255(0, 205, 205),
+	'cyan4' -> Color.new255(0, 139, 139),
+	'dark goldenrod' -> Color.new255(184, 134, 11),
+	'dark green' -> Color.new255(0, 100, 0),
+	'dark khaki' -> Color.new255(189, 183, 107),
+	'dark olive green' -> Color.new255(85, 107, 47),
+	'dark orange' -> Color.new255(255, 140, 0),
+	'dark orchid' -> Color.new255(153, 50, 204),
+	'dark salmon' -> Color.new255(233, 150, 122),
+	'dark sea green' -> Color.new255(143, 188, 143),
+	'dark slate blue' -> Color.new255(72, 61, 139),
+	'dark slate gray' -> Color.new255(47, 79, 79),
+	'dark slate grey' -> Color.new255(47, 79, 79),
+	'dark turquoise' -> Color.new255(0, 206, 209),
+	'dark violet' -> Color.new255(148, 0, 211),
+	'DarkGoldenrod' -> Color.new255(184, 134, 11),
+	'DarkGoldenrod1' -> Color.new255(255, 185, 15),
+	'DarkGoldenrod2' -> Color.new255(238, 173, 14),
+	'DarkGoldenrod3' -> Color.new255(205, 149, 12),
+	'DarkGoldenrod4' -> Color.new255(139, 101, 8),
+	'DarkGreen' -> Color.new255(0, 100, 0),
+	'DarkKhaki' -> Color.new255(189, 183, 107),
+	'DarkOliveGreen' -> Color.new255(85, 107, 47),
+	'DarkOliveGreen1' -> Color.new255(202, 255, 112),
+	'DarkOliveGreen2' -> Color.new255(188, 238, 104),
+	'DarkOliveGreen3' -> Color.new255(162, 205, 90),
+	'DarkOliveGreen4' -> Color.new255(110, 139, 61),
+	'DarkOrange' -> Color.new255(255, 140, 0),
+	'DarkOrange1' -> Color.new255(255, 127, 0),
+	'DarkOrange2' -> Color.new255(238, 118, 0),
+	'DarkOrange3' -> Color.new255(205, 102, 0),
+	'DarkOrange4' -> Color.new255(139, 69, 0),
+	'DarkOrchid' -> Color.new255(153, 50, 204),
+	'DarkOrchid1' -> Color.new255(191, 62, 255),
+	'DarkOrchid2' -> Color.new255(178, 58, 238),
+	'DarkOrchid3' -> Color.new255(154, 50, 205),
+	'DarkOrchid4' -> Color.new255(104, 34, 139),
+	'DarkSalmon' -> Color.new255(233, 150, 122),
+	'DarkSeaGreen' -> Color.new255(143, 188, 143),
+	'DarkSeaGreen1' -> Color.new255(193, 255, 193),
+	'DarkSeaGreen2' -> Color.new255(180, 238, 180),
+	'DarkSeaGreen3' -> Color.new255(155, 205, 155),
+	'DarkSeaGreen4' -> Color.new255(105, 139, 105),
+	'DarkSlateBlue' -> Color.new255(72, 61, 139),
+	'DarkSlateGray' -> Color.new255(47, 79, 79),
+	'DarkSlateGray1' -> Color.new255(151, 255, 255),
+	'DarkSlateGray2' -> Color.new255(141, 238, 238),
+	'DarkSlateGray3' -> Color.new255(121, 205, 205),
+	'DarkSlateGray4' -> Color.new255(82, 139, 139),
+	'DarkSlateGrey' -> Color.new255(47, 79, 79),
+	'DarkTurquoise' -> Color.new255(0, 206, 209),
+	'DarkViolet' -> Color.new255(148, 0, 211),
+	'deep pink' -> Color.new255(255, 20, 147),
+	'deep sky blue' -> Color.new255(0, 191, 255),
+	'DeepPink' -> Color.new255(255, 20, 147),
+	'DeepPink1' -> Color.new255(255, 20, 147),
+	'DeepPink2' -> Color.new255(238, 18, 137),
+	'DeepPink3' -> Color.new255(205, 16, 118),
+	'DeepPink4' -> Color.new255(139, 10, 80),
+	'DeepSkyBlue' -> Color.new255(0, 191, 255),
+	'DeepSkyBlue1' -> Color.new255(0, 191, 255),
+	'DeepSkyBlue2' -> Color.new255(0, 178, 238),
+	'DeepSkyBlue3' -> Color.new255(0, 154, 205),
+	'DeepSkyBlue4' -> Color.new255(0, 104, 139),
+	'dim gray' -> Color.new255(105, 105, 105),
+	'dim grey' -> Color.new255(105, 105, 105),
+	'DimGray' -> Color.new255(105, 105, 105),
+	'DimGrey' -> Color.new255(105, 105, 105),
+	'dodger blue' -> Color.new255(30, 144, 255),
+	'DodgerBlue' -> Color.new255(30, 144, 255),
+	'DodgerBlue1' -> Color.new255(30, 144, 255),
+	'DodgerBlue2' -> Color.new255(28, 134, 238),
+	'DodgerBlue3' -> Color.new255(24, 116, 205),
+	'DodgerBlue4' -> Color.new255(16, 78, 139),
+	'firebrick' -> Color.new255(178, 34, 34),
+	'firebrick1' -> Color.new255(255, 48, 48),
+	'firebrick2' -> Color.new255(238, 44, 44),
+	'firebrick3' -> Color.new255(205, 38, 38),
+	'firebrick4' -> Color.new255(139, 26, 26),
+	'floral white' -> Color.new255(255, 250, 240),
+	'FloralWhite' -> Color.new255(255, 250, 240),
+	'forest green' -> Color.new255(34, 139, 34),
+	'ForestGreen' -> Color.new255(34, 139, 34),
+	'gainsboro' -> Color.new255(220, 220, 220),
+	'ghost white' -> Color.new255(248, 248, 255),
+	'GhostWhite' -> Color.new255(248, 248, 255),
+	'gold' -> Color.new255(255, 215, 0),
+	'gold1' -> Color.new255(255, 215, 0),
+	'gold2' -> Color.new255(238, 201, 0),
+	'gold3' -> Color.new255(205, 173, 0),
+	'gold4' -> Color.new255(139, 117, 0),
+	'goldenrod' -> Color.new255(218, 165, 32),
+	'goldenrod1' -> Color.new255(255, 193, 37),
+	'goldenrod2' -> Color.new255(238, 180, 34),
+	'goldenrod3' -> Color.new255(205, 155, 29),
+	'goldenrod4' -> Color.new255(139, 105, 20),
+	'gray' -> Color.new255(190, 190, 190),
+	'gray0' -> Color.new255(0, 0, 0),
+	'gray1' -> Color.new255(3, 3, 3),
+	'gray10' -> Color.new255(26, 26, 26),
+	'gray100' -> Color.new255(255, 255, 255),
+	'gray11' -> Color.new255(28, 28, 28),
+	'gray12' -> Color.new255(31, 31, 31),
+	'gray13' -> Color.new255(33, 33, 33),
+	'gray14' -> Color.new255(36, 36, 36),
+	'gray15' -> Color.new255(38, 38, 38),
+	'gray16' -> Color.new255(41, 41, 41),
+	'gray17' -> Color.new255(43, 43, 43),
+	'gray18' -> Color.new255(46, 46, 46),
+	'gray19' -> Color.new255(48, 48, 48),
+	'gray2' -> Color.new255(5, 5, 5),
+	'gray20' -> Color.new255(51, 51, 51),
+	'gray21' -> Color.new255(54, 54, 54),
+	'gray22' -> Color.new255(56, 56, 56),
+	'gray23' -> Color.new255(59, 59, 59),
+	'gray24' -> Color.new255(61, 61, 61),
+	'gray25' -> Color.new255(64, 64, 64),
+	'gray26' -> Color.new255(66, 66, 66),
+	'gray27' -> Color.new255(69, 69, 69),
+	'gray28' -> Color.new255(71, 71, 71),
+	'gray29' -> Color.new255(74, 74, 74),
+	'gray3' -> Color.new255(8, 8, 8),
+	'gray30' -> Color.new255(77, 77, 77),
+	'gray31' -> Color.new255(79, 79, 79),
+	'gray32' -> Color.new255(82, 82, 82),
+	'gray33' -> Color.new255(84, 84, 84),
+	'gray34' -> Color.new255(87, 87, 87),
+	'gray35' -> Color.new255(89, 89, 89),
+	'gray36' -> Color.new255(92, 92, 92),
+	'gray37' -> Color.new255(94, 94, 94),
+	'gray38' -> Color.new255(97, 97, 97),
+	'gray39' -> Color.new255(99, 99, 99),
+	'gray4' -> Color.new255(10, 10, 10),
+	'gray40' -> Color.new255(102, 102, 102),
+	'gray41' -> Color.new255(105, 105, 105),
+	'gray42' -> Color.new255(107, 107, 107),
+	'gray43' -> Color.new255(110, 110, 110),
+	'gray44' -> Color.new255(112, 112, 112),
+	'gray45' -> Color.new255(115, 115, 115),
+	'gray46' -> Color.new255(117, 117, 117),
+	'gray47' -> Color.new255(120, 120, 120),
+	'gray48' -> Color.new255(122, 122, 122),
+	'gray49' -> Color.new255(125, 125, 125),
+	'gray5' -> Color.new255(13, 13, 13),
+	'gray50' -> Color.new255(127, 127, 127),
+	'gray51' -> Color.new255(130, 130, 130),
+	'gray52' -> Color.new255(133, 133, 133),
+	'gray53' -> Color.new255(135, 135, 135),
+	'gray54' -> Color.new255(138, 138, 138),
+	'gray55' -> Color.new255(140, 140, 140),
+	'gray56' -> Color.new255(143, 143, 143),
+	'gray57' -> Color.new255(145, 145, 145),
+	'gray58' -> Color.new255(148, 148, 148),
+	'gray59' -> Color.new255(150, 150, 150),
+	'gray6' -> Color.new255(15, 15, 15),
+	'gray60' -> Color.new255(153, 153, 153),
+	'gray61' -> Color.new255(156, 156, 156),
+	'gray62' -> Color.new255(158, 158, 158),
+	'gray63' -> Color.new255(161, 161, 161),
+	'gray64' -> Color.new255(163, 163, 163),
+	'gray65' -> Color.new255(166, 166, 166),
+	'gray66' -> Color.new255(168, 168, 168),
+	'gray67' -> Color.new255(171, 171, 171),
+	'gray68' -> Color.new255(173, 173, 173),
+	'gray69' -> Color.new255(176, 176, 176),
+	'gray7' -> Color.new255(18, 18, 18),
+	'gray70' -> Color.new255(179, 179, 179),
+	'gray71' -> Color.new255(181, 181, 181),
+	'gray72' -> Color.new255(184, 184, 184),
+	'gray73' -> Color.new255(186, 186, 186),
+	'gray74' -> Color.new255(189, 189, 189),
+	'gray75' -> Color.new255(191, 191, 191),
+	'gray76' -> Color.new255(194, 194, 194),
+	'gray77' -> Color.new255(196, 196, 196),
+	'gray78' -> Color.new255(199, 199, 199),
+	'gray79' -> Color.new255(201, 201, 201),
+	'gray8' -> Color.new255(20, 20, 20),
+	'gray80' -> Color.new255(204, 204, 204),
+	'gray81' -> Color.new255(207, 207, 207),
+	'gray82' -> Color.new255(209, 209, 209),
+	'gray83' -> Color.new255(212, 212, 212),
+	'gray84' -> Color.new255(214, 214, 214),
+	'gray85' -> Color.new255(217, 217, 217),
+	'gray86' -> Color.new255(219, 219, 219),
+	'gray87' -> Color.new255(222, 222, 222),
+	'gray88' -> Color.new255(224, 224, 224),
+	'gray89' -> Color.new255(227, 227, 227),
+	'gray9' -> Color.new255(23, 23, 23),
+	'gray90' -> Color.new255(229, 229, 229),
+	'gray91' -> Color.new255(232, 232, 232),
+	'gray92' -> Color.new255(235, 235, 235),
+	'gray93' -> Color.new255(237, 237, 237),
+	'gray94' -> Color.new255(240, 240, 240),
+	'gray95' -> Color.new255(242, 242, 242),
+	'gray96' -> Color.new255(245, 245, 245),
+	'gray97' -> Color.new255(247, 247, 247),
+	'gray98' -> Color.new255(250, 250, 250),
+	'gray99' -> Color.new255(252, 252, 252),
+	'green' -> Color.new255(0, 255, 0),
+	'green yellow' -> Color.new255(173, 255, 47),
+	'green1' -> Color.new255(0, 255, 0),
+	'green2' -> Color.new255(0, 238, 0),
+	'green3' -> Color.new255(0, 205, 0),
+	'green4' -> Color.new255(0, 139, 0),
+	'GreenYellow' -> Color.new255(173, 255, 47),
+	'grey' -> Color.new255(190, 190, 190),
+	'grey0' -> Color.new255(0, 0, 0),
+	'grey1' -> Color.new255(3, 3, 3),
+	'grey10' -> Color.new255(26, 26, 26),
+	'grey100' -> Color.new255(255, 255, 255),
+	'grey11' -> Color.new255(28, 28, 28),
+	'grey12' -> Color.new255(31, 31, 31),
+	'grey13' -> Color.new255(33, 33, 33),
+	'grey14' -> Color.new255(36, 36, 36),
+	'grey15' -> Color.new255(38, 38, 38),
+	'grey16' -> Color.new255(41, 41, 41),
+	'grey17' -> Color.new255(43, 43, 43),
+	'grey18' -> Color.new255(46, 46, 46),
+	'grey19' -> Color.new255(48, 48, 48),
+	'grey2' -> Color.new255(5, 5, 5),
+	'grey20' -> Color.new255(51, 51, 51),
+	'grey21' -> Color.new255(54, 54, 54),
+	'grey22' -> Color.new255(56, 56, 56),
+	'grey23' -> Color.new255(59, 59, 59),
+	'grey24' -> Color.new255(61, 61, 61),
+	'grey25' -> Color.new255(64, 64, 64),
+	'grey26' -> Color.new255(66, 66, 66),
+	'grey27' -> Color.new255(69, 69, 69),
+	'grey28' -> Color.new255(71, 71, 71),
+	'grey29' -> Color.new255(74, 74, 74),
+	'grey3' -> Color.new255(8, 8, 8),
+	'grey30' -> Color.new255(77, 77, 77),
+	'grey31' -> Color.new255(79, 79, 79),
+	'grey32' -> Color.new255(82, 82, 82),
+	'grey33' -> Color.new255(84, 84, 84),
+	'grey34' -> Color.new255(87, 87, 87),
+	'grey35' -> Color.new255(89, 89, 89),
+	'grey36' -> Color.new255(92, 92, 92),
+	'grey37' -> Color.new255(94, 94, 94),
+	'grey38' -> Color.new255(97, 97, 97),
+	'grey39' -> Color.new255(99, 99, 99),
+	'grey4' -> Color.new255(10, 10, 10),
+	'grey40' -> Color.new255(102, 102, 102),
+	'grey41' -> Color.new255(105, 105, 105),
+	'grey42' -> Color.new255(107, 107, 107),
+	'grey43' -> Color.new255(110, 110, 110),
+	'grey44' -> Color.new255(112, 112, 112),
+	'grey45' -> Color.new255(115, 115, 115),
+	'grey46' -> Color.new255(117, 117, 117),
+	'grey47' -> Color.new255(120, 120, 120),
+	'grey48' -> Color.new255(122, 122, 122),
+	'grey49' -> Color.new255(125, 125, 125),
+	'grey5' -> Color.new255(13, 13, 13),
+	'grey50' -> Color.new255(127, 127, 127),
+	'grey51' -> Color.new255(130, 130, 130),
+	'grey52' -> Color.new255(133, 133, 133),
+	'grey53' -> Color.new255(135, 135, 135),
+	'grey54' -> Color.new255(138, 138, 138),
+	'grey55' -> Color.new255(140, 140, 140),
+	'grey56' -> Color.new255(143, 143, 143),
+	'grey57' -> Color.new255(145, 145, 145),
+	'grey58' -> Color.new255(148, 148, 148),
+	'grey59' -> Color.new255(150, 150, 150),
+	'grey6' -> Color.new255(15, 15, 15),
+	'grey60' -> Color.new255(153, 153, 153),
+	'grey61' -> Color.new255(156, 156, 156),
+	'grey62' -> Color.new255(158, 158, 158),
+	'grey63' -> Color.new255(161, 161, 161),
+	'grey64' -> Color.new255(163, 163, 163),
+	'grey65' -> Color.new255(166, 166, 166),
+	'grey66' -> Color.new255(168, 168, 168),
+	'grey67' -> Color.new255(171, 171, 171),
+	'grey68' -> Color.new255(173, 173, 173),
+	'grey69' -> Color.new255(176, 176, 176),
+	'grey7' -> Color.new255(18, 18, 18),
+	'grey70' -> Color.new255(179, 179, 179),
+	'grey71' -> Color.new255(181, 181, 181),
+	'grey72' -> Color.new255(184, 184, 184),
+	'grey73' -> Color.new255(186, 186, 186),
+	'grey74' -> Color.new255(189, 189, 189),
+	'grey75' -> Color.new255(191, 191, 191),
+	'grey76' -> Color.new255(194, 194, 194),
+	'grey77' -> Color.new255(196, 196, 196),
+	'grey78' -> Color.new255(199, 199, 199),
+	'grey79' -> Color.new255(201, 201, 201),
+	'grey8' -> Color.new255(20, 20, 20),
+	'grey80' -> Color.new255(204, 204, 204),
+	'grey81' -> Color.new255(207, 207, 207),
+	'grey82' -> Color.new255(209, 209, 209),
+	'grey83' -> Color.new255(212, 212, 212),
+	'grey84' -> Color.new255(214, 214, 214),
+	'grey85' -> Color.new255(217, 217, 217),
+	'grey86' -> Color.new255(219, 219, 219),
+	'grey87' -> Color.new255(222, 222, 222),
+	'grey88' -> Color.new255(224, 224, 224),
+	'grey89' -> Color.new255(227, 227, 227),
+	'grey9' -> Color.new255(23, 23, 23),
+	'grey90' -> Color.new255(229, 229, 229),
+	'grey91' -> Color.new255(232, 232, 232),
+	'grey92' -> Color.new255(235, 235, 235),
+	'grey93' -> Color.new255(237, 237, 237),
+	'grey94' -> Color.new255(240, 240, 240),
+	'grey95' -> Color.new255(242, 242, 242),
+	'grey96' -> Color.new255(245, 245, 245),
+	'grey97' -> Color.new255(247, 247, 247),
+	'grey98' -> Color.new255(250, 250, 250),
+	'grey99' -> Color.new255(252, 252, 252),
+	'honeydew' -> Color.new255(240, 255, 240),
+	'honeydew1' -> Color.new255(240, 255, 240),
+	'honeydew2' -> Color.new255(224, 238, 224),
+	'honeydew3' -> Color.new255(193, 205, 193),
+	'honeydew4' -> Color.new255(131, 139, 131),
+	'hot pink' -> Color.new255(255, 105, 180),
+	'HotPink' -> Color.new255(255, 105, 180),
+	'HotPink1' -> Color.new255(255, 110, 180),
+	'HotPink2' -> Color.new255(238, 106, 167),
+	'HotPink3' -> Color.new255(205, 96, 144),
+	'HotPink4' -> Color.new255(139, 58, 98),
+	'indian red' -> Color.new255(205, 92, 92),
+	'IndianRed' -> Color.new255(205, 92, 92),
+	'IndianRed1' -> Color.new255(255, 106, 106),
+	'IndianRed2' -> Color.new255(238, 99, 99),
+	'IndianRed3' -> Color.new255(205, 85, 85),
+	'IndianRed4' -> Color.new255(139, 58, 58),
+	'ivory' -> Color.new255(255, 255, 240),
+	'ivory1' -> Color.new255(255, 255, 240),
+	'ivory2' -> Color.new255(238, 238, 224),
+	'ivory3' -> Color.new255(205, 205, 193),
+	'ivory4' -> Color.new255(139, 139, 131),
+	'khaki' -> Color.new255(240, 230, 140),
+	'khaki1' -> Color.new255(255, 246, 143),
+	'khaki2' -> Color.new255(238, 230, 133),
+	'khaki3' -> Color.new255(205, 198, 115),
+	'khaki4' -> Color.new255(139, 134, 78),
+	'lavender' -> Color.new255(230, 230, 250),
+	'lavender blush' -> Color.new255(255, 240, 245),
+	'LavenderBlush' -> Color.new255(255, 240, 245),
+	'LavenderBlush1' -> Color.new255(255, 240, 245),
+	'LavenderBlush2' -> Color.new255(238, 224, 229),
+	'LavenderBlush3' -> Color.new255(205, 193, 197),
+	'LavenderBlush4' -> Color.new255(139, 131, 134),
+	'lawn green' -> Color.new255(124, 252, 0),
+	'LawnGreen' -> Color.new255(124, 252, 0),
+	'lemon chiffon' -> Color.new255(255, 250, 205),
+	'LemonChiffon' -> Color.new255(255, 250, 205),
+	'LemonChiffon1' -> Color.new255(255, 250, 205),
+	'LemonChiffon2' -> Color.new255(238, 233, 191),
+	'LemonChiffon3' -> Color.new255(205, 201, 165),
+	'LemonChiffon4' -> Color.new255(139, 137, 112),
+	'light blue' -> Color.new255(173, 216, 230),
+	'light coral' -> Color.new255(240, 128, 128),
+	'light cyan' -> Color.new255(224, 255, 255),
+	'light goldenrod' -> Color.new255(238, 221, 130),
+	'light goldenrod yellow' -> Color.new255(250, 250, 210),
+	'light gray' -> Color.new255(211, 211, 211),
+	'light grey' -> Color.new255(211, 211, 211),
+	'light pink' -> Color.new255(255, 182, 193),
+	'light salmon' -> Color.new255(255, 160, 122),
+	'light sea green' -> Color.new255(32, 178, 170),
+	'light sky blue' -> Color.new255(135, 206, 250),
+	'light slate blue' -> Color.new255(132, 112, 255),
+	'light slate gray' -> Color.new255(119, 136, 153),
+	'light slate grey' -> Color.new255(119, 136, 153),
+	'light steel blue' -> Color.new255(176, 196, 222),
+	'light yellow' -> Color.new255(255, 255, 224),
+	'LightBlue' -> Color.new255(173, 216, 230),
+	'LightBlue1' -> Color.new255(191, 239, 255),
+	'LightBlue2' -> Color.new255(178, 223, 238),
+	'LightBlue3' -> Color.new255(154, 192, 205),
+	'LightBlue4' -> Color.new255(104, 131, 139),
+	'LightCoral' -> Color.new255(240, 128, 128),
+	'LightCyan' -> Color.new255(224, 255, 255),
+	'LightCyan1' -> Color.new255(224, 255, 255),
+	'LightCyan2' -> Color.new255(209, 238, 238),
+	'LightCyan3' -> Color.new255(180, 205, 205),
+	'LightCyan4' -> Color.new255(122, 139, 139),
+	'LightGoldenrod' -> Color.new255(238, 221, 130),
+	'LightGoldenrod1' -> Color.new255(255, 236, 139),
+	'LightGoldenrod2' -> Color.new255(238, 220, 130),
+	'LightGoldenrod3' -> Color.new255(205, 190, 112),
+	'LightGoldenrod4' -> Color.new255(139, 129, 76),
+	'LightGoldenrodYellow' -> Color.new255(250, 250, 210),
+	'LightGray' -> Color.new255(211, 211, 211),
+	'LightGrey' -> Color.new255(211, 211, 211),
+	'LightPink' -> Color.new255(255, 182, 193),
+	'LightPink1' -> Color.new255(255, 174, 185),
+	'LightPink2' -> Color.new255(238, 162, 173),
+	'LightPink3' -> Color.new255(205, 140, 149),
+	'LightPink4' -> Color.new255(139, 95, 101),
+	'LightSalmon' -> Color.new255(255, 160, 122),
+	'LightSalmon1' -> Color.new255(255, 160, 122),
+	'LightSalmon2' -> Color.new255(238, 149, 114),
+	'LightSalmon3' -> Color.new255(205, 129, 98),
+	'LightSalmon4' -> Color.new255(139, 87, 66),
+	'LightSeaGreen' -> Color.new255(32, 178, 170),
+	'LightSkyBlue' -> Color.new255(135, 206, 250),
+	'LightSkyBlue1' -> Color.new255(176, 226, 255),
+	'LightSkyBlue2' -> Color.new255(164, 211, 238),
+	'LightSkyBlue3' -> Color.new255(141, 182, 205),
+	'LightSkyBlue4' -> Color.new255(96, 123, 139),
+	'LightSlateBlue' -> Color.new255(132, 112, 255),
+	'LightSlateGray' -> Color.new255(119, 136, 153),
+	'LightSlateGrey' -> Color.new255(119, 136, 153),
+	'LightSteelBlue' -> Color.new255(176, 196, 222),
+	'LightSteelBlue1' -> Color.new255(202, 225, 255),
+	'LightSteelBlue2' -> Color.new255(188, 210, 238),
+	'LightSteelBlue3' -> Color.new255(162, 181, 205),
+	'LightSteelBlue4' -> Color.new255(110, 123, 139),
+	'LightYellow' -> Color.new255(255, 255, 224),
+	'LightYellow1' -> Color.new255(255, 255, 224),
+	'LightYellow2' -> Color.new255(238, 238, 209),
+	'LightYellow3' -> Color.new255(205, 205, 180),
+	'LightYellow4' -> Color.new255(139, 139, 122),
+	'lime green' -> Color.new255(50, 205, 50),
+	'LimeGreen' -> Color.new255(50, 205, 50),
+	'linen' -> Color.new255(250, 240, 230),
+	'magenta' -> Color.new255(255, 0, 255),
+	'magenta1' -> Color.new255(255, 0, 255),
+	'magenta2' -> Color.new255(238, 0, 238),
+	'magenta3' -> Color.new255(205, 0, 205),
+	'magenta4' -> Color.new255(139, 0, 139),
+	'maroon' -> Color.new255(176, 48, 96),
+	'maroon1' -> Color.new255(255, 52, 179),
+	'maroon2' -> Color.new255(238, 48, 167),
+	'maroon3' -> Color.new255(205, 41, 144),
+	'maroon4' -> Color.new255(139, 28, 98),
+	'medium aquamarine' -> Color.new255(102, 205, 170),
+	'medium blue' -> Color.new255(0, 0, 205),
+	'medium orchid' -> Color.new255(186, 85, 211),
+	'medium purple' -> Color.new255(147, 112, 219),
+	'medium sea green' -> Color.new255(60, 179, 113),
+	'medium slate blue' -> Color.new255(123, 104, 238),
+	'medium spring green' -> Color.new255(0, 250, 154),
+	'medium turquoise' -> Color.new255(72, 209, 204),
+	'medium violet red' -> Color.new255(199, 21, 133),
+	'MediumAquamarine' -> Color.new255(102, 205, 170),
+	'MediumBlue' -> Color.new255(0, 0, 205),
+	'MediumOrchid' -> Color.new255(186, 85, 211),
+	'MediumOrchid1' -> Color.new255(224, 102, 255),
+	'MediumOrchid2' -> Color.new255(209, 95, 238),
+	'MediumOrchid3' -> Color.new255(180, 82, 205),
+	'MediumOrchid4' -> Color.new255(122, 55, 139),
+	'MediumPurple' -> Color.new255(147, 112, 219),
+	'MediumPurple1' -> Color.new255(171, 130, 255),
+	'MediumPurple2' -> Color.new255(159, 121, 238),
+	'MediumPurple3' -> Color.new255(137, 104, 205),
+	'MediumPurple4' -> Color.new255(93, 71, 139),
+	'MediumSeaGreen' -> Color.new255(60, 179, 113),
+	'MediumSlateBlue' -> Color.new255(123, 104, 238),
+	'MediumSpringGreen' -> Color.new255(0, 250, 154),
+	'MediumTurquoise' -> Color.new255(72, 209, 204),
+	'MediumVioletRed' -> Color.new255(199, 21, 133),
+	'midnight blue' -> Color.new255(25, 25, 112),
+	'MidnightBlue' -> Color.new255(25, 25, 112),
+	'mint cream' -> Color.new255(245, 255, 250),
+	'MintCream' -> Color.new255(245, 255, 250),
+	'misty rose' -> Color.new255(255, 228, 225),
+	'MistyRose' -> Color.new255(255, 228, 225),
+	'MistyRose1' -> Color.new255(255, 228, 225),
+	'MistyRose2' -> Color.new255(238, 213, 210),
+	'MistyRose3' -> Color.new255(205, 183, 181),
+	'MistyRose4' -> Color.new255(139, 125, 123),
+	'moccasin' -> Color.new255(255, 228, 181),
+	'navajo white' -> Color.new255(255, 222, 173),
+	'NavajoWhite' -> Color.new255(255, 222, 173),
+	'NavajoWhite1' -> Color.new255(255, 222, 173),
+	'NavajoWhite2' -> Color.new255(238, 207, 161),
+	'NavajoWhite3' -> Color.new255(205, 179, 139),
+	'NavajoWhite4' -> Color.new255(139, 121, 94),
+	'navy' -> Color.new255(0, 0, 128),
+	'navy blue' -> Color.new255(0, 0, 128),
+	'NavyBlue' -> Color.new255(0, 0, 128),
+	'old lace' -> Color.new255(253, 245, 230),
+	'OldLace' -> Color.new255(253, 245, 230),
+	'olive drab' -> Color.new255(107, 142, 35),
+	'OliveDrab' -> Color.new255(107, 142, 35),
+	'OliveDrab1' -> Color.new255(192, 255, 62),
+	'OliveDrab2' -> Color.new255(179, 238, 58),
+	'OliveDrab3' -> Color.new255(154, 205, 50),
+	'OliveDrab4' -> Color.new255(105, 139, 34),
+	'orange' -> Color.new255(255, 165, 0),
+	'orange red' -> Color.new255(255, 69, 0),
+	'orange1' -> Color.new255(255, 165, 0),
+	'orange2' -> Color.new255(238, 154, 0),
+	'orange3' -> Color.new255(205, 133, 0),
+	'orange4' -> Color.new255(139, 90, 0),
+	'OrangeRed' -> Color.new255(255, 69, 0),
+	'OrangeRed1' -> Color.new255(255, 69, 0),
+	'OrangeRed2' -> Color.new255(238, 64, 0),
+	'OrangeRed3' -> Color.new255(205, 55, 0),
+	'OrangeRed4' -> Color.new255(139, 37, 0),
+	'orchid' -> Color.new255(218, 112, 214),
+	'orchid1' -> Color.new255(255, 131, 250),
+	'orchid2' -> Color.new255(238, 122, 233),
+	'orchid3' -> Color.new255(205, 105, 201),
+	'orchid4' -> Color.new255(139, 71, 137),
+	'pale goldenrod' -> Color.new255(238, 232, 170),
+	'pale green' -> Color.new255(152, 251, 152),
+	'pale turquoise' -> Color.new255(175, 238, 238),
+	'pale violet red' -> Color.new255(219, 112, 147),
+	'PaleGoldenrod' -> Color.new255(238, 232, 170),
+	'PaleGreen' -> Color.new255(152, 251, 152),
+	'PaleGreen1' -> Color.new255(154, 255, 154),
+	'PaleGreen2' -> Color.new255(144, 238, 144),
+	'PaleGreen3' -> Color.new255(124, 205, 124),
+	'PaleGreen4' -> Color.new255(84, 139, 84),
+	'PaleTurquoise' -> Color.new255(175, 238, 238),
+	'PaleTurquoise1' -> Color.new255(187, 255, 255),
+	'PaleTurquoise2' -> Color.new255(174, 238, 238),
+	'PaleTurquoise3' -> Color.new255(150, 205, 205),
+	'PaleTurquoise4' -> Color.new255(102, 139, 139),
+	'PaleVioletRed' -> Color.new255(219, 112, 147),
+	'PaleVioletRed1' -> Color.new255(255, 130, 171),
+	'PaleVioletRed2' -> Color.new255(238, 121, 159),
+	'PaleVioletRed3' -> Color.new255(205, 104, 137),
+	'PaleVioletRed4' -> Color.new255(139, 71, 93),
+	'papaya whip' -> Color.new255(255, 239, 213),
+	'PapayaWhip' -> Color.new255(255, 239, 213),
+	'peach puff' -> Color.new255(255, 218, 185),
+	'PeachPuff' -> Color.new255(255, 218, 185),
+	'PeachPuff1' -> Color.new255(255, 218, 185),
+	'PeachPuff2' -> Color.new255(238, 203, 173),
+	'PeachPuff3' -> Color.new255(205, 175, 149),
+	'PeachPuff4' -> Color.new255(139, 119, 101),
+	'peru' -> Color.new255(205, 133, 63),
+	'pink' -> Color.new255(255, 192, 203),
+	'pink1' -> Color.new255(255, 181, 197),
+	'pink2' -> Color.new255(238, 169, 184),
+	'pink3' -> Color.new255(205, 145, 158),
+	'pink4' -> Color.new255(139, 99, 108),
+	'plum' -> Color.new255(221, 160, 221),
+	'plum1' -> Color.new255(255, 187, 255),
+	'plum2' -> Color.new255(238, 174, 238),
+	'plum3' -> Color.new255(205, 150, 205),
+	'plum4' -> Color.new255(139, 102, 139),
+	'powder blue' -> Color.new255(176, 224, 230),
+	'PowderBlue' -> Color.new255(176, 224, 230),
+	'purple' -> Color.new255(160, 32, 240),
+	'purple1' -> Color.new255(155, 48, 255),
+	'purple2' -> Color.new255(145, 44, 238),
+	'purple3' -> Color.new255(125, 38, 205),
+	'purple4' -> Color.new255(85, 26, 139),
+	'red' -> Color.new255(255, 0, 0),
+	'red1' -> Color.new255(255, 0, 0),
+	'red2' -> Color.new255(238, 0, 0),
+	'red3' -> Color.new255(205, 0, 0),
+	'red4' -> Color.new255(139, 0, 0),
+	'rosy brown' -> Color.new255(188, 143, 143),
+	'RosyBrown' -> Color.new255(188, 143, 143),
+	'RosyBrown1' -> Color.new255(255, 193, 193),
+	'RosyBrown2' -> Color.new255(238, 180, 180),
+	'RosyBrown3' -> Color.new255(205, 155, 155),
+	'RosyBrown4' -> Color.new255(139, 105, 105),
+	'royal blue' -> Color.new255(65, 105, 225),
+	'RoyalBlue' -> Color.new255(65, 105, 225),
+	'RoyalBlue1' -> Color.new255(72, 118, 255),
+	'RoyalBlue2' -> Color.new255(67, 110, 238),
+	'RoyalBlue3' -> Color.new255(58, 95, 205),
+	'RoyalBlue4' -> Color.new255(39, 64, 139),
+	'saddle brown' -> Color.new255(139, 69, 19),
+	'SaddleBrown' -> Color.new255(139, 69, 19),
+	'salmon' -> Color.new255(250, 128, 114),
+	'salmon1' -> Color.new255(255, 140, 105),
+	'salmon2' -> Color.new255(238, 130, 98),
+	'salmon3' -> Color.new255(205, 112, 84),
+	'salmon4' -> Color.new255(139, 76, 57),
+	'sandy brown' -> Color.new255(244, 164, 96),
+	'SandyBrown' -> Color.new255(244, 164, 96),
+	'sea green' -> Color.new255(46, 139, 87),
+	'SeaGreen' -> Color.new255(46, 139, 87),
+	'SeaGreen1' -> Color.new255(84, 255, 159),
+	'SeaGreen2' -> Color.new255(78, 238, 148),
+	'SeaGreen3' -> Color.new255(67, 205, 128),
+	'SeaGreen4' -> Color.new255(46, 139, 87),
+	'seashell' -> Color.new255(255, 245, 238),
+	'seashell1' -> Color.new255(255, 245, 238),
+	'seashell2' -> Color.new255(238, 229, 222),
+	'seashell3' -> Color.new255(205, 197, 191),
+	'seashell4' -> Color.new255(139, 134, 130),
+	'sienna' -> Color.new255(160, 82, 45),
+	'sienna1' -> Color.new255(255, 130, 71),
+	'sienna2' -> Color.new255(238, 121, 66),
+	'sienna3' -> Color.new255(205, 104, 57),
+	'sienna4' -> Color.new255(139, 71, 38),
+	'sky blue' -> Color.new255(135, 206, 235),
+	'SkyBlue' -> Color.new255(135, 206, 235),
+	'SkyBlue1' -> Color.new255(135, 206, 255),
+	'SkyBlue2' -> Color.new255(126, 192, 238),
+	'SkyBlue3' -> Color.new255(108, 166, 205),
+	'SkyBlue4' -> Color.new255(74, 112, 139),
+	'slate blue' -> Color.new255(106, 90, 205),
+	'slate gray' -> Color.new255(112, 128, 144),
+	'slate grey' -> Color.new255(112, 128, 144),
+	'SlateBlue' -> Color.new255(106, 90, 205),
+	'SlateBlue1' -> Color.new255(131, 111, 255),
+	'SlateBlue2' -> Color.new255(122, 103, 238),
+	'SlateBlue3' -> Color.new255(105, 89, 205),
+	'SlateBlue4' -> Color.new255(71, 60, 139),
+	'SlateGray' -> Color.new255(112, 128, 144),
+	'SlateGray1' -> Color.new255(198, 226, 255),
+	'SlateGray2' -> Color.new255(185, 211, 238),
+	'SlateGray3' -> Color.new255(159, 182, 205),
+	'SlateGray4' -> Color.new255(108, 123, 139),
+	'SlateGrey' -> Color.new255(112, 128, 144),
+	'snow' -> Color.new255(255, 250, 250),
+	'snow1' -> Color.new255(255, 250, 250),
+	'snow2' -> Color.new255(238, 233, 233),
+	'snow3' -> Color.new255(205, 201, 201),
+	'snow4' -> Color.new255(139, 137, 137),
+	'spring green' -> Color.new255(0, 255, 127),
+	'SpringGreen' -> Color.new255(0, 255, 127),
+	'SpringGreen1' -> Color.new255(0, 255, 127),
+	'SpringGreen2' -> Color.new255(0, 238, 118),
+	'SpringGreen3' -> Color.new255(0, 205, 102),
+	'SpringGreen4' -> Color.new255(0, 139, 69),
+	'steel blue' -> Color.new255(70, 130, 180),
+	'SteelBlue' -> Color.new255(70, 130, 180),
+	'SteelBlue1' -> Color.new255(99, 184, 255),
+	'SteelBlue2' -> Color.new255(92, 172, 238),
+	'SteelBlue3' -> Color.new255(79, 148, 205),
+	'SteelBlue4' -> Color.new255(54, 100, 139),
+	'tan' -> Color.new255(210, 180, 140),
+	'tan1' -> Color.new255(255, 165, 79),
+	'tan2' -> Color.new255(238, 154, 73),
+	'tan3' -> Color.new255(205, 133, 63),
+	'tan4' -> Color.new255(139, 90, 43),
+	'thistle' -> Color.new255(216, 191, 216),
+	'thistle1' -> Color.new255(255, 225, 255),
+	'thistle2' -> Color.new255(238, 210, 238),
+	'thistle3' -> Color.new255(205, 181, 205),
+	'thistle4' -> Color.new255(139, 123, 139),
+	'tomato' -> Color.new255(255, 99, 71),
+	'tomato1' -> Color.new255(255, 99, 71),
+	'tomato2' -> Color.new255(238, 92, 66),
+	'tomato3' -> Color.new255(205, 79, 57),
+	'tomato4' -> Color.new255(139, 54, 38),
+	'turquoise' -> Color.new255(64, 224, 208),
+	'turquoise1' -> Color.new255(0, 245, 255),
+	'turquoise2' -> Color.new255(0, 229, 238),
+	'turquoise3' -> Color.new255(0, 197, 205),
+	'turquoise4' -> Color.new255(0, 134, 139),
+	'violet' -> Color.new255(238, 130, 238),
+	'violet red' -> Color.new255(208, 32, 144),
+	'VioletRed' -> Color.new255(208, 32, 144),
+	'VioletRed1' -> Color.new255(255, 62, 150),
+	'VioletRed2' -> Color.new255(238, 58, 140),
+	'VioletRed3' -> Color.new255(205, 50, 120),
+	'VioletRed4' -> Color.new255(139, 34, 82),
+	'wheat' -> Color.new255(245, 222, 179),
+	'wheat1' -> Color.new255(255, 231, 186),
+	'wheat2' -> Color.new255(238, 216, 174),
+	'wheat3' -> Color.new255(205, 186, 150),
+	'wheat4' -> Color.new255(139, 126, 102),
+	'white' -> Color.new255(255, 255, 255),
+	'white smoke' -> Color.new255(245, 245, 245),
+	'WhiteSmoke' -> Color.new255(245, 245, 245),
+	'yellow' -> Color.new255(255, 255, 0),
+	'yellow green' -> Color.new255(154, 205, 50),
+	'yellow1' -> Color.new255(255, 255, 0),
+	'yellow2' -> Color.new255(238, 238, 0),
+	'yellow3' -> Color.new255(205, 205, 0),
+	'yellow4' -> Color.new255(139, 139, 0),
+	'YellowGreen' -> Color.new255(154, 205, 50)
 ]
 )
 
diff --git a/examples/GUI examples/GUI_examples1.scd b/examples/GUI examples/GUI_examples1.scd
index 081f53e..fd921bb 100644
--- a/examples/GUI examples/GUI_examples1.scd	
+++ b/examples/GUI examples/GUI_examples1.scd	
@@ -1,9 +1,5 @@
-
 // GUI examples
 
-GUI.cocoa;	// use CocoaGUI (Mac OS X native)
-GUI.swing;	// use SwingGUI (Java based GUI)
-
 ////////////////////////////////////////////////////////////////////////
 
 (
@@ -77,7 +73,7 @@ w = Window("mixer", Rect(128, 64, 340, 360));
 w.view.decorator = f = FlowLayout(w.view.bounds,Point(4,4),Point(4,2));
 17.do({ arg i;
 	var v, s, n, spec, p, height = 16;
-	
+
 	v = StaticText(w, Rect(0, 0, 56, height+2));
 	if (i == 0, {
 		v.font = Font("Helvetica", 13).boldVariant;
@@ -90,7 +86,7 @@ w.view.decorator = f = FlowLayout(w.view.bounds,Point(4,4),Point(4,2));
 	s = Slider(w, Rect(0, 0, 182, height));
 	s.resize = 2;
 	spec = \db.asSpec;
-	s.action = { 
+	s.action = {
 		var db;
 		db = spec.map(s.value).round(0.1);
 		//v.string = if (db < -100, { "-inf" },{ db.asString ++ " dB" });
@@ -110,10 +106,10 @@ w.view.decorator = f = FlowLayout(w.view.bounds,Point(4,4),Point(4,2));
 	});
 	n.background = Color.rand(0.1,0.5);
 	n.resize = 3;
-	
+
 	f.nextLine;
 });
-w.view.background = Color.blue;	// fallback on SwingOSC
+w.view.background = Color.blue;
 w.view.background = HiliteGradient(Color.blue, Color.green, \h, 128, 0.3);
 w.front;
 w.refresh;
@@ -175,7 +171,7 @@ z.visible = true;
 
 z.enabled = false;	// NO EFFECT WITH SWINGOSC!
 z.enabled = true;
-	
+
 b.visible = false;
 b.visible = true;
 
@@ -225,7 +221,7 @@ SynthDef("moto-rev", {
 	var x;
 	x = RLPF.ar(LFPulse.ar(SinOsc.kr(0.2, 0, 10, 21), [0,0.1], 0.1), 100, 0.1).clip2(0.4);
 	Out.ar(0, x);
-}).writeDefFile;
+}).add;
 )
 
 (
@@ -234,20 +230,20 @@ SynthDef("moto-rev", {
 	s = Server.local;
 	w = Window(name.asString, Rect(128, 64, 260, 80));
 	w.view.decorator = FlowLayout(w.view.bounds);
-	
+
 	b1 = Button(w, Rect(0,0, 80, 24));
 	b1.states = [["Load", Color.black, Color.green]];
-	b1.action = { arg view; 
+	b1.action = { arg view;
 		s.sendMsg("/d_load", SynthDef.synthDefDir ++ name ++ ".scsyndef");
 	};
 	b1.enabled = s.serverRunning;
-	
+
 	b2 = Button(w, Rect(0,0, 80, 24));
 	b2.states = [
 		["Play", Color.black, Color.green],
 		["Stop", Color.white, Color.red],
 	];
-	b2.action = { arg view; 
+	b2.action = { arg view;
 		if (b2.value == 1, {
 			s.sendMsg("/s_new", name, 1001, 1, 0);
 		},{
@@ -257,14 +253,14 @@ SynthDef("moto-rev", {
 	b2.enabled = s.serverRunning;
 
 	a = SimpleController(s);
-	f = { arg server; 
+	f = { arg server;
 		b1.enabled = server.serverRunning;
 		b2.enabled = server.serverRunning;
 	};
 	a.put(\serverRunning, f);
-	w.onClose = { 
+	w.onClose = {
 		a.remove;
-		s.sendMsg("/n_free", 1001);		
+		s.sendMsg("/n_free", 1001);
 	};
 	w.front;
 )
@@ -277,13 +273,12 @@ s.boot;
 // GUI to control a synth
 
 (
-SynthDef("trem", { arg freq=800, rate=8, amp=0.1; 
+SynthDef("trem", { arg freq=800, rate=8, amp=0.1;
 	var osc;
 	freq = Lag.kr(freq, 0.3);
 	osc = LFTri.ar(freq, 0, SinOsc.kr( rate + [0,0.1],0,amp).max(0));
-	Out.ar(0, osc) 
-}).writeDefFile;
-Server.local.sendMsg("/d_load", SynthDef.synthDefDir ++ "trem.scsyndef");
+	Out.ar(0, osc)
+}).add;
 )
 
 (
@@ -303,10 +298,10 @@ f = { arg name, spec = \lin, guispec;
 	v.font = Font("Helvetica", 12);
 	v.stringColor = Color.black;
 	v.align = \right;
-	
+
 	s = Slider(w, Rect(0, 0, 182, height));
 	s.resize = 2;
-	s.action = { 
+	s.action = {
 		var val, guival, step;
 		val = spec.map(s.value);
 		values.put(name, val);
@@ -317,12 +312,12 @@ f = { arg name, spec = \lin, guispec;
 	};
 	s.value = spec.unmap(spec.default);
 	s.action.value;
-	
+
 	n = StaticText(w, Rect(0, 0, 72, height));	n.string = name;
 	n.stringColor = Color.black;
 	n.font = Font("Helvetica", 12);
 	n.resize = 3;
-	
+
 	w.view.decorator.nextLine;
 };
 
@@ -332,7 +327,7 @@ w.view.decorator = d = FlowLayout(w.view.bounds);
 
 b1 = Button(w, Rect(0,0, 80, 24));
 b1.states = [["Load", Color.black, Color.green]];
-b1.action = { arg view; 
+b1.action = { arg view;
 	server.sendMsg("/d_load", "synthdefs/trem.scsyndef");
 };
 b1.enabled = server.serverRunning;
@@ -342,18 +337,18 @@ b2.states = [
 	["Play", Color.black, Color.green],
 	["Stop", Color.white, Color.red],
 ];
-b2.action = { arg view; 
+b2.action = { arg view;
 	var msg;
 	if (view.value == 1, {
 		isOn = true;
 		msg = ["/s_new", "trem", 2001, 1, 0];
-		values.keysValuesDo({ arg key, value; 
-			msg = msg.addAll([key, value]); 
+		values.keysValuesDo({ arg key, value;
+			msg = msg.addAll([key, value]);
 		});
-		server.performList(\sendMsg, msg); 
+		server.performList(\sendMsg, msg);
 	},{
 		isOn = false;
-		server.sendMsg("/n_free", 2001); 
+		server.sendMsg("/n_free", 2001);
 	});
 };
 b2.enabled = server.serverRunning;
@@ -364,13 +359,13 @@ f.value(\rate, \lofreq);
 f.value(\amp, \amp, \db);
 
 a = SimpleController(server);
-f = { arg server; 
+f = { arg server;
 	b1.enabled = server.serverRunning;
 	b2.enabled = server.serverRunning;
 	if (server.serverRunning.not, { b2.value = 0 });
 };
 a.put(\serverRunning, f);
-w.onClose = { 
+w.onClose = {
 	if (isOn, { server.sendMsg("/n_free", 2001) });
  	a.remove;
 };
diff --git a/examples/GUI examples/GUI_examples2.scd b/examples/GUI examples/GUI_examples2.scd
index e0dcbfd..597ec82 100644
--- a/examples/GUI examples/GUI_examples2.scd	
+++ b/examples/GUI examples/GUI_examples2.scd	
@@ -1,6 +1,3 @@
-GUI.cocoa;		// use Mac OS X native GUI
-GUI.swing;		// use Java GUI
-
 // Creating a window.
 
 w = Window.new("a control panel", Rect(20, 400, 440, 360));
@@ -25,7 +22,7 @@ w.view.background = HiliteGradient(Color.red(0.6),Color.green,\h, 256);
 (
 Routine({
 	30.do {
-		w.view.background = 
+		w.view.background =
 			HiliteGradient(Color.rand(0.0,1.0),Color.rand(0.0,1.0),
 					[\h,\v].choose, 100, rrand(0.1,0.9));
 		0.5.wait;
@@ -59,7 +56,7 @@ b = Button(w, 75 @ 24);
 b.states = [["Backgnd", Color.white, Color.rand]];
 b.action = {
 		w.view.background = Color.rand(0.0,1.0); // fallback for SwingOSC
-		w.view.background = 
+		w.view.background =
 			HiliteGradient(Color.rand(0.0,1.0),Color.rand(0.0,1.0),
 					[\h,\v].choose, 100, rrand(0.1,0.9));
 };
@@ -85,13 +82,12 @@ b.action = {| view |
 
 // A slider that controls window transparency.
 
-// works on Mac OS X only
 (
 w.view.decorator.nextLine;
 v = Slider(w, 130 @ 24);
-v.action = {| view | 
+v.action = {| view |
 	// Sliders output values from zero to one.
-	w.alpha = view.value; 
+	w.alpha = view.value;
 };
 v.value = 1;
 )
@@ -104,7 +100,7 @@ w.front;
 (
 w.view.decorator.nextLine;
 v = Slider(w, 130 @ 24);
-v.action = {| view | 
+v.action = {| view |
 	var bounds;
 	bounds = w.bounds;
 	bounds.width = 400 + (400 * view.value);
@@ -126,8 +122,8 @@ s.boot;
 // define a synth
 SynthDef("window-test", { arg note = 36, fc = 1000, rq = 0.25, bal=0, amp=0.4, gate = 1;
 		var x;
-		x = Mix.fill(4, { 
-			LFSaw.ar((note + {0.1.rand2}.dup).midicps, 0, 0.02) 
+		x = Mix.fill(4, {
+			LFSaw.ar((note + {0.1.rand2}.dup).midicps, 0, 0.02)
 		});
 		x = RLPF.ar(x, fc, rq).softclip;
 		x = RLPF.ar(x, fc, rq, amp).softclip;
@@ -204,7 +200,7 @@ v.align = \right;
 
 
 /*
-That is a lot of work for something simple, so I made a wrapper class. 
+That is a lot of work for something simple, so I made a wrapper class.
 EZSlider takes care of the details for you.
 
 
@@ -214,32 +210,32 @@ EZSlider is a wrapper for a SCStaticText, an SCSlider, and an SCNumberBox along
 (
 // create controls.
 w.view.decorator.nextLine;
-v = EZSlider(w, 400 @ 24, "Note", ControlSpec(24, 60, \lin, 1), 
+v = EZSlider(w, 400 @ 24, "Note", ControlSpec(24, 60, \lin, 1),
 	{|ez| s.sendMsg("/n_set", 9999, "note", ez.value); });
-	
+
 w.view.decorator.nextLine;
-v = EZSlider(w, 400 @ 24, "Cutoff", ControlSpec(200, 5000, \exp), 
+v = EZSlider(w, 400 @ 24, "Cutoff", ControlSpec(200, 5000, \exp),
 	{|ez| s.sendMsg("/n_set", 9999, "fc", ez.value); });
-	
+
 w.view.decorator.nextLine;
-v = EZSlider(w, 400 @ 24, "Resonance", ControlSpec(0.1, 0.7), 
+v = EZSlider(w, 400 @ 24, "Resonance", ControlSpec(0.1, 0.7),
 	{|ez| s.sendMsg("/n_set", 9999, "rq", ez.value); });
-	
+
 w.view.decorator.nextLine;
-v = EZSlider(w, 400 @ 24, "Balance", \bipolar, 
+v = EZSlider(w, 400 @ 24, "Balance", \bipolar,
 	{|ez| s.sendMsg("/n_set", 9999, "bal", ez.value); });
-	
+
 w.view.decorator.nextLine;
-v = EZSlider(w, 400 @ 24, "Amp", \db, 
+v = EZSlider(w, 400 @ 24, "Amp", \db,
 	{|ez| s.sendMsg("/n_set", 9999, "amp", ez.value.dbamp); });
 )
 
 
 /*
 There are still some problems:
-	¥ Restarting the sound doesn't remember the slider settings.
-	¥ cmd-period doesn't change the button.
-	¥ Closing window doesn't stop the sound.
+	- Restarting the sound doesn't remember the slider settings.
+	- cmd-period doesn't change the button.
+	- Closing window doesn't stop the sound.
 Need a more comprehensive approach.
 */
 
@@ -268,7 +264,7 @@ startButton.states = [
 startButton.action = {|view|
 		if (view.value == 1) {
 			// start sound
-			s.sendMsg("/s_new", "window-test", id, 0, 0, 
+			s.sendMsg("/s_new", "window-test", id, 0, 0,
 				"note", noteControl.value,
 				"fc", cutoffControl.value,
 				"rq", resonControl.value,
@@ -283,25 +279,25 @@ startButton.action = {|view|
 
 // create controls for all parameters
 w.view.decorator.nextLine;
-noteControl = EZSlider(w, 400 @ 24, "Note", ControlSpec(24, 60, \lin, 1), 
+noteControl = EZSlider(w, 400 @ 24, "Note", ControlSpec(24, 60, \lin, 1),
 	{|ez| s.sendMsg("/n_set", id, "note", ez.value); }, 36);
-	
+
 w.view.decorator.nextLine;
-cutoffControl = EZSlider(w, 400 @ 24, "Cutoff", ControlSpec(200, 5000, \exp), 
+cutoffControl = EZSlider(w, 400 @ 24, "Cutoff", ControlSpec(200, 5000, \exp),
 	{|ez| s.sendMsg("/n_set", id, "fc", ez.value); }, 1000);
-	
+
 w.view.decorator.nextLine;
-resonControl = EZSlider(w, 400 @ 24, "Resonance", ControlSpec(0.1, 0.7), 
+resonControl = EZSlider(w, 400 @ 24, "Resonance", ControlSpec(0.1, 0.7),
 	{|ez| s.sendMsg("/n_set", id, "rq", ez.value); }, 0.2);
-	
+
 w.view.decorator.nextLine;
-balanceControl = EZSlider(w, 400 @ 24, "Balance", \bipolar, 
+balanceControl = EZSlider(w, 400 @ 24, "Balance", \bipolar,
 	{|ez| s.sendMsg("/n_set", id, "bal", ez.value); }, 0);
-	
+
 w.view.decorator.nextLine;
-ampControl = EZSlider(w, 400 @ 24, "Amp", \db, 
+ampControl = EZSlider(w, 400 @ 24, "Amp", \db,
 	{|ez| s.sendMsg("/n_set", id, "amp", ez.value.dbamp); }, -6);
-	
+
 
 // set start button to zero upon a cmd-period
 cmdPeriodFunc = { startButton.value = 0; };
diff --git a/examples/GUI examples/Nick's LetterGimmick.scd b/examples/GUI examples/Nick's LetterGimmick.scd
index 6123ac2..314b0d6 100644
--- a/examples/GUI examples/Nick's LetterGimmick.scd	
+++ b/examples/GUI examples/Nick's LetterGimmick.scd	
@@ -76,7 +76,7 @@ yellowness=rrand(0.7,0.9);
 
 penwidth=rrand(2,3);
 
-w.drawHook = {
+w.drawFunc = {
 
 	pen.use {var xoscil, xsizoscil,yoscil, todraw, usedtime;
 
diff --git a/examples/GUI examples/TwoMultiSlidersInOne.scd b/examples/GUI examples/TwoMultiSlidersInOne.scd
index 64079fc..0cd9138 100644
--- a/examples/GUI examples/TwoMultiSlidersInOne.scd	
+++ b/examples/GUI examples/TwoMultiSlidersInOne.scd	
@@ -1,6 +1,3 @@
-GUI.cocoa;	// use CocoaGUI (Mac OS X native)
-GUI.swing;	// use SwingGUI (Java based GUI)
-
 (
 //use as table
 var size, win, data1, data2, view1, view2, swapData, data1Color, data2Color;
diff --git a/examples/GUI examples/analog-drum-tuner.scd b/examples/GUI examples/analog-drum-tuner.scd
index 97421df..15a423b 100644
--- a/examples/GUI examples/analog-drum-tuner.scd	
+++ b/examples/GUI examples/analog-drum-tuner.scd	
@@ -5,250 +5,266 @@
 // optional
 // Server.default = s = Server.internal;
 
-s.boot;
-
 // double-click inside the parenthesis, then hit enter to evaluate
 
 (
 var	percBus, percGroup, ringzBus, ringzGroup, trigbus, trigsynth, src, toStereo,
-	levelBus, levelEditor, toStereoOut,
-	nodes, ffreqs, rqs, decays, amps,
-	log001, sr, dt,
-	freqspec, rqspec, ampspec,
-	noiseString = "PinkNoise.ar", envString = "Env.perc(0.01, 0.2)",
-	
-	post, buildSynthDef, currentDef, g, stop,
-	
-	window, leftview, rightview, ffreqview, rqview, ampview, rateEdit, newButton,
-	funcedit, envedit, helpview;
-
-// preparation
-percBus = Bus.audio(s, 1);
-ringzBus = Bus.audio(s, 1);
-percGroup = Group.new;
-ringzGroup = Group.after(percGroup);
-levelBus = Bus.control(s, 1).set(0.75);
-toStereoOut = SynthDef('1to2', { |bus, level|
-	Out.ar(0, (In.ar(bus, 1) * level) ! 2)
-}).play(ringzGroup, [bus: ringzBus, level: levelBus.asMap], addAction: \addAfter);
-
-SynthDef(\ringz, { |ffreq = 20, decay = 0.01, in, out, amp = 0|
-	Out.ar(out, Ringz.ar(In.ar(in, 1), ffreq, decay, amp))
-}).send(s);
-
-nodes = Array.new(10);
-ffreqs = [];
-rqs = [];
-amps = [];
-decays = dt.(ffreqs, rqs);
-log001 = log(0.001);	// constant, will be used repeatedly
-
-// func to calc decay time from freq and rq
-sr = s.sampleRate;
-dt = { |ffreq, rq|
-	(log001 / log(1 - (pi/sr * ffreq * rq))) / sr;
-};
-freqspec = \freq.asSpec;
-rqspec = [1, 0.001, \exp].asSpec;
-ampspec = \amp.asSpec;
-
-// gui building
-window = MultiPageLayout("Ringz tuner", Rect(150, 5, 800, 570));
-leftview = FlowView(window, 470 at 490);
-rightview = FlowView(window, 280 at 490);
-
-// left-hand side: filters
-GUI.staticText.new(leftview, 150 at 20).string_("frequencies");
-GUI.staticText.new(leftview, 150 at 20).string_("resonances");
-GUI.staticText.new(leftview, 150 at 20).string_("amplitudes");
-ffreqview = GUI.multiSliderView.new(leftview, 150 at 200)
-	.value_(freqspec.unmap(ffreqs))
-	.thumbSize_(14)
-	.action_({ |v|
-		ffreqs = freqspec.map(v.value);
-		decays = dt.(ffreqs, rqs);
-		nodes.do({ |n, i|
-			n.set(\ffreq, ffreqs[i], \decay, decays[i])
-		})
-	});
-rqview = GUI.multiSliderView.new(leftview, 150 at 200)
-	.value_(rqspec.unmap(rqs))
-	.thumbSize_(14)
-	.action_({ |v|
-		rqs = rqspec.map(v.value);
+levelBus, levelEditor, toStereoOut,
+nodes, ffreqs, rqs, decays, amps,
+log001, sr, dt,
+freqspec, rqspec, ampspec,
+noiseString = "PinkNoise.ar", envString = "Env.perc(0.01, 0.2)",
+
+post, buildSynthDef, currentDef, g, stop,
+
+window, leftview, rightview, ffreqview, rqview, ampview, rateEdit, newButton,
+funcedit, envedit, helpview;
+
+var s = Server.default;
+
+s.waitForBoot {
+	{
+		// preparation
+		percBus = Bus.audio(s, 1);
+		ringzBus = Bus.audio(s, 1);
+		percGroup = Group.new;
+		ringzGroup = Group.after(percGroup);
+		levelBus = Bus.control(s, 1).set(0.75);
+		toStereoOut = SynthDef('1to2', { |bus, level|
+			Out.ar(0, (In.ar(bus, 1) * level) ! 2)
+		}).play(ringzGroup, [bus: ringzBus, level: levelBus.asMap], addAction: \addAfter);
+
+		SynthDef(\ringz, { |ffreq = 20, decay = 0.01, in, out, amp = 0|
+			Out.ar(out, Ringz.ar(In.ar(in, 1), ffreq, decay, amp))
+		}).send(s);
+
+		nodes = Array.new(10);
+		ffreqs = [];
+		rqs = [];
+		amps = [];
 		decays = dt.(ffreqs, rqs);
-		nodes.do({ |n, i|
-			n.set(\decay, decays[i]);
-		})
-	});
-ampview = GUI.multiSliderView.new(leftview, 150 at 200)
-	.value_(ampspec.unmap(amps))
-	.thumbSize_(14)
-	.action_({ |v|
-		amps = ampspec.map(v.value);
-		nodes.do({ |n, i| n.set(\amp, amps[i]) })
-	});
-
-rateEdit = NumberEditor(2, [0.5, 10]).action_({ |val| trigsynth.set(\trigrate, val) });
-levelEditor = NumberEditor(0.75, \amp).action_({ |val| levelBus.set(val) });
-
-leftview.startRow;
-GUI.staticText.new(leftview, 50 at 20).string_("trigrate").align_(\right);
-rateEdit.gui(leftview);
-GUI.staticText.new(leftview, 50 at 20).string_("volume").align_(\right);
-levelEditor.gui(leftview);
-
-// ActionButtons -- add filter, post parameters, stop, save, load
-post = {
-	(nodes.size > 0).if({
-		postf("\nKlank array:\n`[ %,\n   %,\n   % ]\n\n",
-			ffreqs, //[..nodes.size-1],
-			amps, // \amp.asSpec.map(ampview.value[..nodes.size-1]),
-			decays); // [..nodes.size-1];
-		[ffreqs, decays, amps]
-			.flop/*[..nodes.size-1]*/.do({ |item|
-				postf("[\\ffreq, %, \\decay, %, \\amp, %]\n", *item);
+		log001 = log(0.001);	// constant, will be used repeatedly
+
+		// func to calc decay time from freq and rq
+		sr = s.sampleRate;
+		dt = { |ffreq, rq|
+			(log001 / log(1 - (pi/sr * ffreq * rq))) / sr;
+		};
+		freqspec = \freq.asSpec;
+		rqspec = [1, 0.001, \exp].asSpec;
+		ampspec = \amp.asSpec;
+
+		// gui building
+		window = PageLayout("Ringz tuner", Rect(150, 5, 800, 570));
+		leftview = FlowView(window, 470 at 490);
+		rightview = FlowView(window, 280 at 490);
+
+		// left-hand side: filters
+		GUI.staticText.new(leftview, 150 at 20).string_("frequencies");
+		GUI.staticText.new(leftview, 150 at 20).string_("resonances");
+		GUI.staticText.new(leftview, 150 at 20).string_("amplitudes");
+		ffreqview = GUI.multiSliderView.new(leftview, 150 at 200)
+		.value_(freqspec.unmap(ffreqs))
+		.thumbSize_(14)
+		.action_({ |v|
+			ffreqs = freqspec.map(v.value);
+			decays = dt.(ffreqs, rqs);
+			nodes.do({ |n, i|
+				n.set(\ffreq, ffreqs[i], \decay, decays[i])
+			})
+		});
+		rqview = GUI.multiSliderView.new(leftview, 150 at 200)
+		.value_(rqspec.unmap(rqs))
+		.thumbSize_(14)
+		.action_({ |v|
+			rqs = rqspec.map(v.value);
+			decays = dt.(ffreqs, rqs);
+			nodes.do({ |n, i|
+				n.set(\decay, decays[i]);
+			})
+		});
+		ampview = GUI.multiSliderView.new(leftview, 150 at 200)
+		.value_(ampspec.unmap(amps))
+		.thumbSize_(14)
+		.action_({ |v|
+			amps = ampspec.map(v.value);
+			nodes.do({ |n, i| n.set(\amp, amps[i]) })
 		});
-	});
-};
 
-leftview.startRow;
-newButton = ActionButton(leftview, "new resonz", {
-	if(nodes.size < 10) {
-		ffreqs = ffreqs.add(20);
-		rqs = rqs.add(1);
-		decays = dt.(ffreqs, rqs);
-		amps = amps.add(0);
-		ffreqview.value = freqspec.unmap(ffreqs);
-		rqview.value = rqspec.unmap(rqs);
-		ampview.value = ampspec.unmap(amps);
-//		nodes.add(ringzMixer.play(\ringz, [\in, percMixer.inbus.index]));
-		nodes.add(Synth(\ringz, [\in, percBus, \out, ringzBus], ringzGroup,
-			addAction: \addToTail));
-	};
-});
-ActionButton(leftview, "post parameters", post);
-
-stop = {
-	post.value;
-	toStereoOut.free;
-	src.free;
-	nodes.do(_.free);
-	trigbus.free;
-	percBus.free; percGroup.free;
-	ringzBus.free; ringzGroup.free;
-	levelBus.free;
-//	percMixer.free; ringzMixer.free;
-	if(window.isClosed.not) { window.onClose_(nil).close };
-};
+		leftview.startRow;
 
-ActionButton(leftview, "stop", stop);
-
-leftview.startRow;
-ActionButton(leftview, "save", {
-	GUI.dialog.savePanel({ |path|
-		[ffreqview.value, rqview.value, ampview.value,
-			noiseString, envString, nodes.size]
-		.writeTextArchive(path)
-	});
-});
-
-ActionButton(leftview, "load", {
-	var	values;
-	GUI.dialog.getPaths({ |path|
-		values = Object.readTextArchive(path[0]);
-		(values.size != 6).if({
-			Error("File does not contain a ringz spec.").throw;
-		}, {
-			noiseString = values[3];
-			funcedit.setString(noiseString, 0, funcedit.string.size);
-			envString = values[4];
-			envedit.setString(envString, 0, envedit.string.size);
-			buildSynthDef.value;
-			ffreqview.value = values[0];
-			rqview.value = values[1];
-			ampview.value = values[2];
+		rateEdit = EZSlider(leftview, 220 at 20, "trigrate", #[0.5, 10], { |view| trigsynth.set(\trigrate, view.value) }, 2);
+		levelEditor = EZSlider(leftview, 220 at 20, "volume", \amp, { |view| levelBus.set(view.value) }, 0.75);
+
+		// ActionButtons -- add filter, post parameters, stop, save, load
+		post = {
+			(nodes.size > 0).if({
+				postf("\nKlank array:\n`[ %,\n   %,\n   % ]\n\n",
+					ffreqs, //[..nodes.size-1],
+					amps, // \amp.asSpec.map(ampview.value[..nodes.size-1]),
+					decays); // [..nodes.size-1];
+				[ffreqs, decays, amps]
+				.flop/*[..nodes.size-1]*/.do({ |item|
+					postf("[\\ffreq, %, \\decay, %, \\amp, %]\n", *item);
+				});
+			});
+		};
+
+		leftview.startRow;
+		newButton = Button(leftview, 100 at 20)
+		.states_([["new resonz"]])
+		.action_({
+			if(nodes.size < 10) {
+				ffreqs = ffreqs.add(20);
+				rqs = rqs.add(1);
+				decays = dt.(ffreqs, rqs);
+				amps = amps.add(0);
+				ffreqview.value = freqspec.unmap(ffreqs);
+				rqview.value = rqspec.unmap(rqs);
+				ampview.value = ampspec.unmap(amps);
+				//		nodes.add(ringzMixer.play(\ringz, [\in, percMixer.inbus.index]));
+				nodes.add(Synth(\ringz, [\in, percBus, \out, ringzBus], ringzGroup,
+					addAction: \addToTail));
+			};
+		});
+
+		Button(leftview, 140 at 20)
+		.states_([["post parameters"]])
+		.action_(post);
+
+		stop = {
+			post.value;
+			toStereoOut.free;
+			src.free;
 			nodes.do(_.free);
-			nodes = { |i|
-				Synth(\ringz, [\in, percBus, \out, ringzBus], ringzGroup,
-					addAction: \addToTail);
-//				ringzMixer.play(\ringz, [\in, percMixer.inbus.index]);
-			} ! values[5];	// make the nodes
-			{	ffreqview.doAction;
-				rqview.doAction;
-				ampview.doAction;
-			}.defer(0.2);
+			trigbus.free;
+			percBus.free; percGroup.free;
+			ringzBus.free; ringzGroup.free;
+			levelBus.free;
+			//	percMixer.free; ringzMixer.free;
+			if(window.isClosed.not) { window.onClose_(nil).close };
+		};
+
+		Button(leftview, 80 at 20)
+		.states_([["stop"]])
+		.action_(stop);
+
+		leftview.startRow;
+
+		Button(leftview, 80 at 20)
+		.states_([["save"]])
+		.action_({
+			GUI.dialog.savePanel({ |path|
+				[ffreqview.value, rqview.value, ampview.value,
+					noiseString, envString, nodes.size]
+				.writeTextArchive(path)
+			});
 		});
-	}, nil, 1)
-});
-
-
-// dynamic synthdef construction based on user input
-GUI.staticText.new(rightview, 100 at 20).string_("Noise function:");
-ActionButton(rightview, "evaluate", { |view|
-	noiseString = funcedit.string;
-	buildSynthDef.value;
-});
-rightview.startRow;
-funcedit = GUI.textView.new(rightview, 275 at 200)
-	.string_(noiseString);
-
-rightview.startRow;
-GUI.staticText.new(rightview, 100 at 20).string_("Envelope:");
-ActionButton(rightview, "evaluate", { |view|
-	envString = envedit.string;
-	src.setn(\env, envString.interpret.asArray);
-});
-rightview.startRow;
-envedit = GUI.textView.new(rightview, 275 at 200)
-	.string_("Env.perc(0.01, 0.2)");
-
-trigbus = Bus.control(s, 1);
-{	trigsynth = SynthDef(\percTrig, { |trigrate, out|
-		Out.kr(out, Impulse.kr(trigrate))
-	}).play(percGroup, [\trigrate, rateEdit.value, \out, trigbus], addAction: \addToHead);
-}.defer(0.2);
-
-buildSynthDef = {
-	var	func, env;
-	currentDef.notNil.if({
-		s.sendMsg(\d_free, currentDef.name);
-	});
-	func = ("{ " ++ noiseString ++ " }").interpret;
-	env = envString.interpret;
-	currentDef = SynthDef(\source, { |trigbus, outbus|
-		var	trig, sig, envCtl;
-		trig = In.kr(trigbus, 1);
-//		Out.kr(trigbus, trig);
-		envCtl = Control.names(\env).kr(0 ! 100);	// allow 25 env nodes maximum
-		sig = SynthDef.wrap(func, nil, [trig]) * EnvGen.ar(envCtl, trig);
-		Out.ar(outbus, sig)
-	}).send(s);
-	{	src.free;
-		src = Synth(\source, [\trigbus, trigbus, \outbus, percBus], percGroup,
-			addAction: \addToTail);
-		src.setn(\env, env.asArray);
-	}.defer(0.1);
-};
 
-helpview = GUI.textView.new(leftview, 458 at 161);
-if(GUI.scheme.name == 'CocoaGUI') {
-	helpview.font = GUI.font.new("Helvetica", 12);
-};
-helpview.string = "Analog percussion tuner by James Harkins
+		Button(leftview, 80 at 20)
+		.states_([["load"]])
+		.action_({
+			var	values;
+			File.openDialog("", { |path|
+				values = Object.readTextArchive(path[0]);
+				(values.size != 6).if({
+					Error("File does not contain a ringz spec.").throw;
+					}, {
+						noiseString = values[3];
+						funcedit.setString(noiseString, 0, funcedit.string.size);
+						envString = values[4];
+						envedit.setString(envString, 0, envedit.string.size);
+						buildSynthDef.value;
+						ffreqview.value = values[0];
+						rqview.value = values[1];
+						ampview.value = values[2];
+						nodes.do(_.free);
+						nodes = { |i|
+							Synth(\ringz, [\in, percBus, \out, ringzBus], ringzGroup,
+								addAction: \addToTail);
+							//				ringzMixer.play(\ringz, [\in, percMixer.inbus.index]);
+						} ! values[5];	// make the nodes
+						{	ffreqview.doAction;
+							rqview.doAction;
+							ampview.doAction;
+						}.defer(0.2);
+				});
+			});
+		});
+
+
+		// dynamic synthdef construction based on user input
+		GUI.staticText.new(rightview, 100 at 20).string_("Noise function:");
+		Button(rightview, 80 at 20)
+		.states_([["evaluate"]])
+		.action_({ |view|
+			noiseString = funcedit.string;
+			buildSynthDef.value;
+		});
+		rightview.startRow;
+		funcedit = GUI.textView.new(rightview, 275 at 200)
+		.string_(noiseString);
+
+		rightview.startRow;
+		GUI.staticText.new(rightview, 100 at 20).string_("Envelope:");
+		Button(rightview, 80 at 20)
+		.states_([["evaluate"]])
+		.action_({ |view|
+			envString = envedit.string;
+			src.setn(\env, envString.interpret.asArray);
+		});
+		rightview.startRow;
+		envedit = GUI.textView.new(rightview, 275 at 200)
+		.string_("Env.perc(0.01, 0.2)");
+
+		trigbus = Bus.control(s, 1);
+		{	trigsynth = SynthDef(\percTrig, { |trigrate, out|
+			Out.kr(out, Impulse.kr(trigrate))
+			}).play(percGroup, [\trigrate, rateEdit.value, \out, trigbus], addAction: \addToHead);
+		}.defer(0.2);
+
+		buildSynthDef = {
+			var	func, env;
+			currentDef.notNil.if({
+				s.sendMsg(\d_free, currentDef.name);
+			});
+			func = ("{ " ++ noiseString ++ " }").interpret;
+			env = envString.interpret;
+			currentDef = SynthDef(\source, { |trigbus, outbus|
+				var	trig, sig, envCtl;
+				trig = In.kr(trigbus, 1);
+				//		Out.kr(trigbus, trig);
+				envCtl = Control.names(\env).kr(0 ! 100);	// allow 25 env nodes maximum
+				sig = SynthDef.wrap(func, nil, [trig]) * EnvGen.ar(envCtl, trig);
+				Out.ar(outbus, sig)
+			}).send(s);
+			{	src.free;
+				src = Synth(\source, [\trigbus, trigbus, \outbus, percBus], percGroup,
+					addAction: \addToTail);
+				src.setn(\env, env.asArray);
+			}.defer(0.1);
+		};
+
+		helpview = GUI.textView.new(leftview, 458 at 161);
+		if(GUI.scheme.name == 'CocoaGUI') {
+			helpview.font = GUI.font.new("Helvetica", 12);
+		};
+		helpview.string = "Analog percussion tuner by James Harkins
 
 Move the black knobs up and down to change the resonator characteristics.
 
 The noise function and envelope control the exciter -- change the code and click 'evaluate' to hear it. Click 'new resonz' to add another filter (up to 10). Filters run in parallel, not in series.
 
 The 'save' button stores the specs into a file; 'load' returns the editor to a saved state. 'stop' closes the window and removes all synths.";
-helpview.editable = false;
+		helpview.editable = false;
 
-window.onClose = stop;
+		window.onClose = stop;
 
-{
-	buildSynthDef.value;
-	newButton.doAction;
-	window.front;
-}.defer(0.5);
+		0.5.wait;
+
+		buildSynthDef.value;
+		newButton.doAction;
+		window.front;
+	}.fork(AppClock);
+};
 )
diff --git a/examples/GUI examples/rotary hommage duchamp.scd b/examples/GUI examples/rotary hommage duchamp.scd
index 5a2dcf7..2f368c6 100644
--- a/examples/GUI examples/rotary hommage duchamp.scd	
+++ b/examples/GUI examples/rotary hommage duchamp.scd	
@@ -1,5 +1,5 @@
 
-// rotary hommage ˆ Duchamp
+// rotary hommage à Duchamp
 // Julian Rohrhuber 2006
 (
 		var  w, width, center, bounds, a, b, c, z = 0, colors, fillOrStroke, shape;
@@ -11,7 +11,7 @@
 		fillOrStroke = [Pen.fillOval(_), Pen.strokeOval(_)];
 		shape = { (2 ** rrand(1, 5)).asInteger + rrand(0, 4) }.dup(rrand(5, 7));
 		shape = shape.sort.reverse;
-		w.drawHook = {
+		w.drawFunc = {
 			thisThread.randSeed = seed;
 			Pen.width = width;
 			center = 30;
@@ -35,5 +35,5 @@
 			
 		};
 		w.refresh;
-			fork {Êloop {Êrate.reciprocal.wait; defer {Êw.refresh; } } };		
+			fork { loop { rate.reciprocal.wait; defer { w.refresh; } } };
 )
diff --git a/examples/GUI examples/strike.scd b/examples/GUI examples/strike.scd
index 3780fd9..e6e89ad 100644
--- a/examples/GUI examples/strike.scd	
+++ b/examples/GUI examples/strike.scd	
@@ -30,7 +30,7 @@ GUI.swing;	// use Java GUI
 			
 	};
 	pen = Pen;
-	w.drawHook = {
+	w.drawFunc = {
 		// set the Color
 		try { pen.smoothing_(false) };
 		pen.width = width;
@@ -46,7 +46,7 @@ GUI.swing;	// use Java GUI
 		if(z % mm == 0) { zz = zz + 1; mm = rrand(5, 20); alph = #[0.1, 1.0].choose };
 	};
 	w.refresh;
-	fork {Êloop {Ê0.1.wait; defer {Êw.refresh; } } };
+	fork { loop { 0.1.wait; defer { w.refresh; } } };
 )
 		
 		
@@ -96,7 +96,7 @@ GUI.swing;	// use Java GUI
 		
 		phunz.(20);
 		pen = Pen;
-		w.drawHook = {
+		w.drawFunc = {
 			
 			try { pen.smoothing_(false) };
 			
@@ -118,7 +118,7 @@ GUI.swing;	// use Java GUI
 	
 		};
 		w.refresh;
-		{Êloop {Ê0.015.wait; w.refresh }}.fork( AppClock );
+		{ loop { 0.015.wait; w.refresh }}.fork( AppClock );
 )
 
 
@@ -136,7 +136,7 @@ q.sendData = {|q, data|
 	p[\out] = {
 		data.do { |array|
 			var xdata, ydata, xmul, ymul;
-			array.do {Ê|point|
+			array.do { |point|
 				xdata = xdata.add(point.x);
 				ydata = ydata.add(point.y);
 			};
diff --git a/examples/demonstrations/Atari2600.scd b/examples/demonstrations/Atari2600.scd
index 91eae2f..400d720 100644
--- a/examples/demonstrations/Atari2600.scd
+++ b/examples/demonstrations/Atari2600.scd
@@ -21,7 +21,7 @@ SynthDef(\atari2600, {|out= 0, gate= 1, tone0= 5,
 	Out.ar(out, Pan2.ar(z*e, pan));
 }).add;
 )
-Ê
+
 // And a pattern to play it:
 (
 Pbind(
@@ -34,4 +34,4 @@ Pbind(
                           Pbrown(23, 26, 3, 32)], inf),
 	\freq1, Pseq([Pn(10, 16), Pn(11, 16)], inf)
 ).play
-)
\ No newline at end of file
+)
diff --git a/examples/demonstrations/SC_website_example.scd b/examples/demonstrations/SC_website_example.scd
index 2ed2a59..1b2aa43 100644
--- a/examples/demonstrations/SC_website_example.scd
+++ b/examples/demonstrations/SC_website_example.scd
@@ -29,9 +29,9 @@ This example comes from supercollider.sourceforge.net as of 2003. It uses a loop
   }).send(s); // send synthdef to server
 });
 )
-Ê
+
 // a process to use them.
-Ê
+
 (
 var s;
 s = Server.local;
diff --git a/examples/demonstrations/babbling brook.scd b/examples/demonstrations/babbling brook.scd
index 97a895a..67fe98f 100644
--- a/examples/demonstrations/babbling brook.scd	
+++ b/examples/demonstrations/babbling brook.scd	
@@ -1,6 +1,6 @@
 
 
-/*Ê
+/*
 A babbling brook example, by James McCartney 2007. See
 http://www.create.ucsb.edu/pipermail/sc-users/2007-April/033231.html
 */
@@ -13,4 +13,4 @@ http://www.create.ucsb.edu/pipermail/sc-users/2007-April/033231.html
 * 800 + 1000, 0.03, 0.005)}!2)
 * 4
 }.play
-)
\ No newline at end of file
+)
diff --git a/examples/demonstrations/snare909.scd b/examples/demonstrations/snare909.scd
index d05431d..0869c75 100644
--- a/examples/demonstrations/snare909.scd
+++ b/examples/demonstrations/snare909.scd
@@ -1,22 +1,21 @@
 
- Ê( 
- ÊÊSynthDef(\snare909,{ |out=0,mul=1,velocity=1| 
+(
+SynthDef(\snare909,{ |out=0,mul=1,velocity=1|
+	var excitation, membrane;
 
- ÊÊ Ê var excitation, membrane; 
- ÊÊ Ê excitation = LPF.ar(WhiteNoise.ar(1), 7040, 1) * (0.1 + velocity); 
- ÊÊÊ Êmembrane = ( 
- ÊÊ Ê/* Two simple enveloped oscillators represent the loudest resonances of the drum membranes */ 
- ÊÊ Ê Ê Ê Ê Ê Ê Ê Ê Ê(LFTri.ar(330,0,1) * EnvGen.ar(Env.perc(0.0005,0.055),doneAction:0) * 0.25) 
- ÊÊ Ê Ê Ê Ê Ê Ê Ê Ê +(LFTri.ar(185,0,1) * EnvGen.ar(Env.perc(0.0005,0.075),doneAction:0) * 0.25) 
+	excitation = LPF.ar(WhiteNoise.ar(1), 7040, 1) * (0.1 + velocity);
+	membrane = (
+		/* Two simple enveloped oscillators represent the loudest resonances of the drum membranes */ 
+		(LFTri.ar(330,0,1) * EnvGen.ar(Env.perc(0.0005,0.055),doneAction:0) * 0.25)
+		+(LFTri.ar(185,0,1) * EnvGen.ar(Env.perc(0.0005,0.075),doneAction:0) * 0.25)
 
- ÊÊ Ê/* Filtered white noise represents the snare */ 
- ÊÊ Ê Ê Ê Ê Ê Ê Ê Ê +(excitation * EnvGen.ar(Env.perc(0.0005,0.4),doneAction:2) * 0.2) 
- ÊÊ Ê Ê Ê Ê Ê Ê Ê Ê +(HPF.ar(excitation, 523, 1) * EnvGen.ar(Env.perc(0.0005,0.283),doneAction:0) * 0.2) 
- ÊÊ Ê Ê Ê Ê Ê Ê Ê Ê 
- ÊÊ Ê Ê Ê Ê Ê Ê Ê Ê) * mul; 
- Out.ar(out, membrane!2) 
- ÊÊ}).add
- Ê)
- 
- 
-  Synth(\snare909,[\mul,0.5,\velocity, rrand(0.5, 1.0)]); 
\ No newline at end of file
+		/* Filtered white noise represents the snare */
+		+(excitation * EnvGen.ar(Env.perc(0.0005,0.4),doneAction:2) * 0.2)
+		+(HPF.ar(excitation, 523, 1) * EnvGen.ar(Env.perc(0.0005,0.283),doneAction:0) * 0.2)
+
+	) * mul;
+	Out.ar(out, membrane!2) 
+}).add
+)
+
+Synth(\snare909,[\mul,0.5,\velocity, rrand(0.5, 1.0)]);
diff --git a/examples/demonstrations/stealthissound.scd b/examples/demonstrations/stealthissound.scd
new file mode 100644
index 0000000..55a1521
--- /dev/null
+++ b/examples/demonstrations/stealthissound.scd
@@ -0,0 +1,1604 @@
+//Sound recipes from:
+//Mitchell Sigman (2011) Steal this Sound. Milwaukee, WI: Hal Leonard Books
+//adapted for SuperCollider and elaborated by Nick Collins (http://www.sussex.ac.uk/Users/nc81/index.html)
+//under GNU GPL 3 as per SuperCollider license
+
+//if you see strange multipliers, like *0.3, these are compensation factors for mixing together many oscillators, or loss of amplitude from filters so the patches work out to roughly equal output
+
+
+
+//start here
+(
+//make sure server is booted if you want to hear any sound!
+s.boot;
+
+//bpm 120 assumed in the following, impacting on some delay recipes.
+TempoClock.default.tempo = 2;
+)
+
+
+
+
+//pp.2-3
+
+(
+SynthDef(\prophet5pwmstrings,{|out= 0 freq = 440 amp = 1.0 gate=1 lforate = 10 lfowidth= 0.5 cutoff= 12000 rq=0.5 pan = 0.0|
+
+	var lfo, pulse, filter, env;
+
+	lfo = LFTri.kr(lforate*[1,1.01],Rand(0,2.0)!2);
+
+	pulse = Pulse.ar(freq*[1,1.01],lfo*lfowidth+0.5);
+
+	filter = RLPF.ar(pulse,cutoff,rq);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.0,1.0,0.5),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(Mix(filter)*env*amp*0.5,pan));
+
+}).add
+)
+
+
+(
+Pbind(
+	\instrument,\prophet5pwmstrings,
+	\midinote,Pseq([0,3,8,7,5,8,7,3]+48,inf),
+	\dur,Pseq((0.5!8) ++ (0.25!8) ++ (2.0!8),inf),
+	\lfowidth,Pn(Pseries(0.0,0.025,7),inf),
+	\lforate,Pn(Pseries(2,1,11),inf),
+	\rq,Pn(Pseries(0.9,-0.1,5),inf)
+).play
+)
+
+
+
+//pp. 8-9
+
+
+//vibrato on oscillator
+(
+SynthDef(\singleoscillatorwobble,{|out= 0 freq = 440 amp = 1.0 gate=1 lforate = 10 lfowidth= 0.5 cutoff= 12000 rq=0.5 pan=0.0|
+
+	var lfo, pulse, filter, env;
+
+	lfo = LFTri.kr(lforate,Rand(0,2.0)!2);
+
+	pulse = Pulse.ar(freq*(1.0+(lfowidth*lfo)),0.5);
+
+	filter = RLPF.ar(pulse,cutoff,rq);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.0,1.0,0.5),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp*0.5,pan));
+
+}).add;
+
+
+SynthDef(\choruseffect, {|out =0 gate= 1|
+	var source = In.ar(out,2);
+	var chorus;
+	var env = Linen.kr(gate, 0.1, 1, 0.1, 2);
+
+	chorus= Mix.fill(7, {
+
+		var maxdelaytime= rrand(0.005,0.02);
+
+		DelayC.ar(source, maxdelaytime,LFNoise1.kr(Rand(4.5,10.5),0.25*maxdelaytime,0.75*maxdelaytime) )
+
+	});
+
+	XOut.ar(out,env, chorus);
+
+}).add;
+
+)
+
+
+
+(
+Pmono(
+	\singleoscillatorwobble,
+	\midinote,Pseq([0,3,8,7,5,8,7,3]+48,inf),
+	\dur,Pseq((0.5!8) ++ (1.0!8) ++ (2.0!8),inf),
+	\lfowidth,Pn(Pseries(0.0,0.01,7),inf),
+	\lforate,Pn(Pseries(2,1,11),inf),
+	\rq,Pn(Pseries(0.9,-0.1,5),inf)
+).play
+)
+
+
+(
+var p =
+Pbind(
+	\instrument, \singleoscillatorwobble,
+	\tempo,2,
+	\midinote,Pseq([0,3,8,7,5,8,7,3]+36,24),
+	\dur,Pseq((0.5!8) ++ (1.0!8) ++ (2.0!8),1),
+	\lfowidth,Pn(Pseries(0.0,0.01,7),4),
+	\lforate,Pn(Pseries(2,1,11),3),
+	\rq,Pn(Pseries(0.9,-0.1,5),6)
+);
+
+
+Pseq([p,Pfx(p,\choruseffect)],inf).play
+)
+
+
+
+//trying it on its own
+a = Synth(\singleoscillatorwobble);
+a.release
+
+
+
+
+
+
+//pp. 10-11
+
+(
+SynthDef(\trianglewavebells,{|out= 0 freq = 440 amp = 0.1 gate=1 lforate = 10 lfowidth= 0.0 cutoff= 100 rq=0.5 pan=0.0|
+
+	var osc1, osc2, vibrato, filter, env;
+
+	vibrato = SinOsc.ar(lforate,Rand(0,2.0));
+
+	osc1 = Saw.ar(freq*(1.0+(lfowidth*vibrato)),0.75);
+
+	//Saw a bit rough, possibly slighter smoother:
+	//osc1 = DPW4Saw.ar(freq*(1.0+(lfowidth*vibrato)),0.5);
+
+	osc2 = Mix(LFTri.ar((freq.cpsmidi+[11.9,12.1]).midicps));
+
+	//filter = (osc1+(osc2*0.5))*0.5; //no filter version
+	filter = RHPF.ar((osc1+(osc2*0.5))*0.5,cutoff,rq);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.1,1.0,0.5),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+)
+
+
+
+(
+Pbind(
+	\instrument, \trianglewavebells,
+	\sustain,0.6,
+	\amp, 0.2,
+	\midinote,Pseq([0,7,3,0, 8,7,8,5, 7,12,5,3, 12,7,15,-5]+60,inf),
+	\dur,Pn(Pshuf([0.5,1.0,0.5,2.0,0.5,1.0,0.5,1.5],1),inf),
+	\lfowidth,Pn(Pseries(0.0,0.005,16),inf),
+	\lforate,Pn(Pseries(1,0.5,16),inf),
+	\rq,Pn(Pseries(0.9,-0.1,8),inf),
+	\cutoff,Pn(Pseries(60,10,9),inf)
+).play
+)
+
+
+
+
+
+
+//pp.12-3
+
+//essentially, Pulse waveforms in multiple octaves; I've refined the patch to add freq*[1,2,3] which gives octave and octave + fifth over fundamental
+(
+SynthDef(\organdonor,{|out= 0 freq = 440 amp = 0.1 gate=1 lforate = 10 lfowidth= 0.0 cutoff= 100 rq=0.5 pan=0.0|
+
+	var vibrato, pulse, filter, env;
+
+	vibrato = SinOsc.ar(lforate,Rand(0,2.0));
+
+	//up octave, detune by 4 cents
+	//11.96.midiratio = 1.9953843530485
+	//up octave and a half, detune up by 10 cents
+	//19.10.midiratio = 3.0139733629359
+
+	//Pulse version
+	//pulse = Mix(Pulse.ar(([1,1.9953843530485,3.0139733629359]*freq)*(1.0+(lfowidth*vibrato)),Rand(0.4,0.6)!3,[1.0,0.7,0.3]))*0.5;
+
+	//better alternative
+	pulse = Mix(VarSaw.ar(([1,1.9953843530485,3.0139733629359]*freq)*(1.0+(lfowidth*vibrato)),Rand(0.0,1.0)!3,Rand(0.3,0.5)!3,[1.0,0.7,0.3]))*0.5;
+
+	filter = RLPF.ar(pulse,cutoff,rq);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.5,1.0,0.5),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+)
+
+
+
+
+
+(
+Pbind(
+	\instrument, \organdonor,
+	\sustain,0.9,
+	\amp, 0.2,
+	\midinote,Pn(Pshuf([[0,4,7],[-1,2,7],[-3,0,5],[-1,2,7],[2,5,9],[-5,-1,4]]+60),inf),
+	\dur,Pn(Pshuf([2.0,2.0,4.0,2.0],1),inf),
+	\lfowidth,Pn(Pseries(0.0,0.001,16),inf),
+	\lforate,Pn(Pseries(1,0.25,16),inf),
+	\rq,Pn(Pseries(0.3,-0.01,8),inf),
+	\cutoff,Pn(Pseries(6000,200,9),inf)
+).play
+)
+
+
+
+
+
+
+//pp. 14-5
+
+(
+SynthDef(\werkit,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff= 100 rq=0.1 pan=0.0|
+
+	var source, filter, env;
+
+	source = WhiteNoise.ar;
+
+	filter = BLowPass4.ar(source,freq,rq)*0.3;
+
+	//env = EnvGen.ar(Env.adsr(0.01,0.0,1.0,0.1),gate,doneAction:2);
+	//no gate, fixed envelope size
+	env = EnvGen.ar(Env([0,1,0.5,0.0],[0.02,0.1,0.1]),doneAction:2);
+
+	Out.ar(out,Pan2.ar((0.7*filter+(0.3*filter.distort))*env*amp,pan));
+
+}).add;
+
+
+
+//via Comb filter for feedback
+SynthDef(\delayeffect, {|out =0 gate= 1|
+	var source = In.ar(out,2);
+	var delay;
+	var env = Linen.kr(gate, 0.1, 1, 0.1, 2);
+
+	delay= CombC.ar(source,0.25,0.25,2.0);
+
+	XOut.ar(out,env, delay);
+
+}).add;
+
+)
+
+
+
+
+//p15 book claims 'musically correct' half steps; total nonsense. I've used their suggested steps here, but the original non-pitch quantised version could be explored.
+(
+Pfx(
+	Pbind(
+		\instrument, \werkit,
+		\amp, 0.2,
+		\midinote,Pseq(([-1,1,-1,1,3,6,9,11]+60)++([0,3,5,6,7,8,11,14]+72),inf),
+		\dur,0.25,
+		\rq,0.01
+	),
+	\delayeffect
+).play
+)
+
+
+
+
+
+
+
+//their lasers on pp 16-17 seem just to be fast sweeps of frequency of one oscillator by a modulator oscillator, or an envelope.
+(
+
+//no use of gate, fixed length
+SynthDef(\laserbeam,{|out= 0 freq = 440 amp = 0.1 attackTime= 0.04 gate=1 pan=0.0|
+
+	var osc1, freqenv, ampenv;
+
+	freqenv = EnvGen.ar(Env([4,0.5,1,1],[attackTime,0.01,1.0]));
+
+	osc1 = LFTri.ar(freq*freqenv);
+
+	//env = EnvGen.ar(Env.adsr(0.01,0.0,1.0,0.1),gate,doneAction:2);
+	//no gate, fixed envelope size
+	ampenv = EnvGen.ar(Env([0,1,0.5,0.0],[0.02,0.2,0.1]),doneAction:2);
+
+	Out.ar(out,Pan2.ar(osc1*ampenv*amp,pan));
+
+}).add;
+
+)
+
+
+
+(
+Pfx(
+	Pfx(
+		Pbind(
+			\instrument, \laserbeam,
+			\amp, 0.2,
+			\midinote,Pseq([36,48,60,72,84],inf),
+			\dur,0.5,
+			\attackTime,Pstutter(8,Pseq([Pshuf((0.01,0.02..0.1),1)],inf))
+		),
+		\delayeffect
+	),
+	\choruseffect
+).play
+
+)
+
+
+
+
+
+//pp. 18-19
+
+(
+
+//no use of gate, fixed length
+SynthDef(\moogbasstone,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff= 1000 gain=2.0 lagamount = 0.01 pan=0.0|
+
+	var osc, filter, env, filterenv;
+
+	osc = Mix(VarSaw.ar(freq.lag(lagamount)*[1.0,1.001,2.0],Rand(0.0,1.0)!3,Rand(0.5,0.75)!3,0.33));
+
+	//alternative: richer source: see moogbasstone2 below
+	//osc = Mix(Pulse.ar(freq.lag(lagamount)*[1.0,1.001,2.0],Rand(0.45,0.5)!3,0.33));
+
+	filterenv = EnvGen.ar(Env.adsr(0.2,0.0,1.0,0.2),gate,doneAction:2);
+	filter =  MoogFF.ar(osc,cutoff*(1.0+(0.5*filterenv)),gain);
+
+	env = EnvGen.ar(Env.adsr(0.001,0.3,0.9,0.2),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar((0.7*filter+(0.3*filter.distort))*env*amp*1.5,pan));
+
+}).add;
+
+)
+
+
+(
+Pfx(
+	Pfx(
+		Pmono(
+			\moogbasstone,
+			\amp, 0.5,
+			\midinote,Pseq([24,36,48,36,35,36,43,48],inf),
+			\dur,Pstutter(8,Pseq([0.5,0.25],inf)),
+			\gain,Pn(Pseries(2,0.1,19),inf),
+			\cutoff,Pn(Pseries(4000,400,18),inf)
+		),
+		\delayeffect
+	),
+	\choruseffect
+).play
+
+)
+
+
+
+
+
+(
+
+//no use of gate, fixed length
+SynthDef(\moogbasstone2,{|out= 0 freq = 440 amp = 0.1 gate=1 attackTime= 0.2 fenvamount=0.5 cutoff= 1000 gain=2.0 pan=0.0|
+
+	var osc, filter, env, filterenv;
+
+	//alternative: richer source
+	osc = Mix(Pulse.ar(freq.lag(0.05)*[1.0,1.001,2.0],Rand(0.45,0.5)!3,0.33));
+
+	filterenv = EnvGen.ar(Env.adsr(attackTime,0.0,1.0,0.2),gate,doneAction:2);
+	filter =  MoogFF.ar(osc,cutoff*(1.0+(fenvamount*filterenv)),gain);
+
+	env = EnvGen.ar(Env.adsr(0.001,0.3,0.9,0.2),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar((0.7*filter+(0.3*filter.distort))*env*amp,pan));
+
+}).add;
+
+)
+
+
+(
+Pfx(
+	Pfx(
+		Pmono(
+			\moogbasstone2,
+			\amp, 0.8,
+			\midinote,Pseq([24,36,43,48, 43,48,36,36, 36,36,39,36, 31,31,31,31, 31,34,31,34],inf),
+			\dur,0.25,
+			\gain,Pn(Pseries(2,0.1,19),inf),
+			\cutoff,Pstutter(3,Pn(Pseries(50,250,40),inf)),
+			\attackTime,Pn(Pseries(0.0,0.01,30),inf),
+			\fenvamount,Pstutter(4,Pn(Pseries(0.0,0.05,20),inf))
+		),
+		\delayeffect
+	),
+	\choruseffect
+).play
+
+)
+
+
+
+
+
+
+
+//pp. 20-21  mr ostinato
+
+
+(
+SynthDef(\mrostinato,{|out= 0 freq = 440 amp = 0.1 gate=1 lforate = 10 lfowidth= 0.5 pan = 0.0|
+
+	var lfo, pulse, filter, env;
+
+	lfo = LFTri.kr(lforate,Rand(0,2.0)!3);
+
+	pulse = Pulse.ar(freq*[1,1.01,0.5],lfo*lfowidth+0.5);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.05,0.5,0.1),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(Mix(pulse)*env*amp,pan));
+
+}).add
+)
+
+
+(
+PmonoArtic(
+	\mrostinato,
+	\octave,Pseq([3,3,4,4],inf),
+	\scale,[0,2,3,5,7,8,10],
+	\degree,Pstutter(16,Pseq([0,2,5,3],inf)),
+	\dur,0.25,
+	\lfowidth,Pstutter(8,Pn(Pseries(0.0,0.05,7),inf)),
+	\lforate,Pstutter(5,Pn(Pseries(0.5,0.2,11),inf)),
+	\pan,Pstutter(2,Prand([-0.5,-0.3,0.3,0.5],inf))
+).play
+)
+
+
+ //richer sequence with some heavier moments
+(
+Pbind(
+	\instrument,\mrostinato,
+	\sustain,Pstutter(64,Prand([0.1,0.5,0.7],inf)),
+	\octave,Pseq([3,3,4,4,3,3,5,2],inf),
+	\scale,[0,2,3,5,7,8,10],
+	\degree,Pstutter(16,Prand([0,-1,1,2,-3,5,6,3,4,2],inf)),
+	\dur,0.25,
+	\lfowidth,Pstutter(8,Pn(Pseries(0.0,0.05,7),inf)),
+	\lforate,Pstutter(5,Pn(Pseries(0.5,0.2,11),inf)),
+	\pan,Pstutter(2,Prand([-0.5,-0.3,0.3,0.5],inf))
+).play
+)
+
+
+
+
+
+//LinnDrum:
+// p. 23 get the samples from http://machines.hyperreal.org/manufacturers/Linn/LinnDrum/
+//The website is a nice resource; there are other sample kits there like Roland TR-909 and TR-808
+ //I've just demoed a patch with three samples (kick, snare, hat): I've used Patterns below, though my personal preference would be explicit Busses, Groups, Synths and {}.fork for full control of routings
+
+
+ //load samples (assumed mono)
+(
+var basepath = "/data/audio/percussion/linndrum/";
+
+b = ["kick","sd","chh"].collect{|val| Buffer.read(s,basepath++val++".wav") };
+
+//b[0].numChannels.postln; should be 1 for mono
+
+)
+
+
+
+(
+
+SynthDef(\sampleplay,{|out= 0 bufnum = 0 amp = 0.1 gate=1 pan = 0.0|
+
+	var playbuf, env;
+
+	playbuf = PlayBuf.ar(1,bufnum);
+
+	env = EnvGen.ar(Env.adsr(0.0,0.0,1.0,0.1),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(playbuf*env*amp,pan));
+
+}).add;
+
+SynthDef(\samplecompress,{|out =0 gain=2 reduction=8 ratio=3 gate= 1 attackTime=0.016 relaxTime=0.05|
+
+	var source = In.ar(out,2);
+	var compression;
+	var env = Linen.kr(gate, 0.0, 1, 0.1, 2);
+
+	compression= Compander.ar(2*source,source,(-8).dbamp,1.0,ratio.reciprocal,attackTime,relaxTime);
+
+	XOut.ar(out,env, compression);
+
+}).add;
+
+SynthDef(\sampleeq1,{|out =0 gate= 1|
+
+	var source = In.ar(out,2);
+	var env = Linen.kr(gate, 0.0, 1, 0.1, 2);
+	var eq;
+
+	eq= BLowShelf.ar(source,100,1.0,3);
+	eq= BPeakEQ.ar(eq,600,1.0,-3);
+
+	XOut.ar(out,env,eq);
+
+}).add;
+
+SynthDef(\sampleeq2,{|out =0 gate= 1|
+
+	var source = In.ar(out,2);
+	var env = Linen.kr(gate, 0.0, 1, 0.1, 2);
+	var eq;
+
+	eq= BHiPass(150,0.3);
+
+	XOut.ar(out,env,eq);
+
+}).add;
+
+
+SynthDef(\samplereverb,{|out =0 gate= 1|
+
+	var source = In.ar(out,2);
+	var env = Linen.kr(gate, 0.0, 0.3, 0.1, 2);
+	var reverb;
+
+	reverb= FreeVerb.ar(source,1.0,0.6,0.6);
+
+	XOut.ar(out,env,reverb);
+
+}).add;
+
+
+)
+
+
+
+(
+var kick, snare,hat;
+
+s.latency= 0.1;
+
+kick = Pbind(
+	\instrument, \sampleplay,
+	\bufnum,b[0],
+	\dur,1.0,
+	\pan,0.0,
+	\amp, 0.5
+);
+
+
+snare = Pbind(
+	\instrument, \sampleplay,
+	\bufnum,b[1],
+	\dur,Pseq([1.25,0.75,2.0],inf),
+	\bus,16,
+	\amp,0.45,
+	\pan,0.0
+);
+
+hat = Pbind(
+	\instrument, \sampleplay,
+	\bufnum,b[2],
+	\dur,Pseq(0.5!8++(0.25!16),inf),
+	\amp, 0.15,
+	\pan,Pseq(0.3!8++((-0.3)!16),inf)
+);
+
+
+//Pfxb organises private busses for each sound
+Ptpar([
+	0.0,
+	Pfxb(Pfx(kick,\samplecompress),\sampleeq1),
+	1.0,
+	Pfxb(Pfx(snare,\samplecompress,\gain,1,\reduction,10,\ratio,2,\attackTime,0.02),\samplereverb),
+	0.0,
+	Pfxb(hat,\sampleeq2)
+]).play
+
+
+)
+
+
+
+
+
+
+
+
+
+
+//p.24-5 super (un)natural synths
+
+//book claims 5.9KHz LFO rate: possible typo...
+(
+SynthDef(\plastickystrings,{|out= 0 freq = 440 amp = 0.1 gate=1 lforate = 5900 lfowidth= 0.01 cutoff= 12000 rq=0.5 pan=0.0|
+
+	var lfo, saw, filter, env;
+
+	lfo = LFTri.ar(lforate,Rand(0,2.0));
+
+	saw = Saw.ar(freq*(1.0+(lfowidth*lfo)),0.5);
+
+	//filter = BBandPass.ar(saw,freq,4);
+	filter = BHiPass.ar(saw,freq,rq); 	//or using cutoff
+
+	env = EnvGen.ar(Env.adsr(0.4,0.0,1.0,1.0),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+
+SynthDef(\choruseffect2, {|out =0 gate= 1|
+	var source = In.ar(out,2);
+	var chorus;
+	var env = Linen.kr(gate, 0.1, 1, 0.1, 2);
+
+	chorus= Mix.fill(17, {
+		var maxdelaytime= rrand(0.005,0.02);
+		DelayC.ar(source, maxdelaytime,LFNoise1.kr(Rand(4.5,10.5),0.25*maxdelaytime,0.75*maxdelaytime) )
+
+	});
+
+	XOut.ar(out,env,0.5*chorus);
+
+}).add;
+
+)
+
+
+//goldfrapp number 1 riff
+(
+Pfx(
+	Ppar([
+		Pbind(
+			\instrument, \plastickystrings,
+			\amp, 0.2,
+			[\midinote,\dur],Pseq([[72,1.5],[68,6.5],[72,1.5],[68,1.5],[61,5.0]],inf),
+			\lfowidth,Pn(Pseries(0.0,0.001,16),inf),
+			\lforate,5900, //5.9?
+			\rq,Pn(Pseries(0.9,-0.05,8),inf)
+		),
+		Pbind(
+			\instrument, \plastickystrings,
+			\amp, 0.3,
+			[\midinote,\dur],Pseq([[44,8.0],[37,8.0]],inf),
+			\lfowidth,Pn(Pseries(0.0,0.001,16),inf),
+			\lforate,5.9,
+			\rq,0.9
+		),
+	]),
+	\choruseffect2
+).play
+)
+
+
+
+
+
+
+//pp. 26-7
+
+(
+SynthDef(\handclapsmash,{|out= 0 amp = 0.1 gate=1 cutoff= 12000 rq=0.5 releaseTime=0.5 pan=0.0|
+
+	var noise, filter, filterenv, env;
+
+	noise = WhiteNoise.ar;
+
+	filterenv = EnvGen.ar(Env([0.0,1.0,0.3,0.0],[0.0,0.3,0.3]));
+	//this involves a gate control, less use here
+	//filterenv = EnvGen.ar(Env.adsr(0.0,0.3,0.3,0.3),gate);
+
+	filter = BHiPass.ar(RLPF.ar(noise,cutoff*filterenv,rq),150);
+
+	//body
+	filter = BPeakEQ.ar(filter,440,1.0,8);
+	//snap
+	filter = BPeakEQ.ar(filter,1200,1.0,14);
+
+	//no gate, fixed percussion sound
+	env = EnvGen.ar(Env.perc(0.005,releaseTime),doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+
+//with dirty attack
+SynthDef(\handclapsmash2,{|out= 0 amp = 0.1 gate=1 cutoff= 12000 cutoff2=10000 rq=0.5 modamount=0.0 modrate=50 releaseTime=0.7 pan=0.0|
+
+	var noise, filter, filterenv, modulation, env;
+
+	noise = WhiteNoise.ar;
+
+	filterenv = EnvGen.ar(Env([0.0,1.0,0.3,0.0],[0.0,0.3,0.3]));
+
+	modulation = (LFSaw.ar(modrate).range(0.0,1.0))*EnvGen.ar(Env([1,1,0,0],[0.1,0.0,1.0]));
+
+	//filter = BHiPass.ar(RLPF.ar(noise,cutoff*filterenv*(1.0+(modamount*modulation)),rq),150); //alternative
+	filter = BHiPass.ar(RLPF.ar(noise,cutoff*filterenv+ (cutoff2*modamount*modulation),rq),150);
+
+	//body
+	filter = BPeakEQ.ar(filter,440,1.0,8);
+	//snap
+	filter = BPeakEQ.ar(filter,1200,1.0,14);
+
+	//no gate, fixed percussion sound
+	env = EnvGen.ar(Env.perc(0.005,releaseTime),doneAction:2);
+
+	//amp modulation too not very effective ((1.0-modamount)+(modamount*modulation))
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+
+)
+
+
+
+
+(
+Pbind(
+	\instrument,\handclapsmash,
+	\dur,0.5,
+	\rq,1.0
+).play
+)
+
+
+
+(
+Pbind(
+	\instrument,\handclapsmash2,
+	\dur,0.5,
+	\cutoff,Pstutter(2,Pn(Pseries(12000,-1000,11),inf)),
+	\cutoff2, Pstutter(3,Pn(Pseries(10000,-1000,9),inf)),
+	\rq,1.0,
+	\modrate,Pstutter(8,Pn(Pseries(25,5,7),inf)),
+	\modamount,Pstutter(4,Pseq([0.1,0.3,0.5,0.6,0.7,0.9],inf)),
+	\releaseTime,Pstutter(2,Pn(Pseries(0.8,-0.1,6),inf))
+).play
+)
+
+
+
+
+//pp. 30-31 Synth bass layers
+
+(
+SynthDef(\bassfoundation,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff= 1000 rq=0.5 pan=0.0|
+
+	var osc, filter, env, filterenv;
+
+	osc = Saw.ar(freq);
+
+	filterenv = EnvGen.ar(Env.adsr(0.0,0.5,0.2,0.2),gate,doneAction:2);
+	filter =  RLPF.ar(osc,cutoff*filterenv+100,rq);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.0,0.9,0.05),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp*2,pan));
+
+}).add;
+
+
+SynthDef(\basshighend,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff= 3000 rq=0.1 drive = 2.0 pan=0.0|
+
+	var osc, filter, env, filterenv;
+	var ab;
+
+	//osc = Mix(VarSaw.ar(freq*[0.25,1,1.5],Rand(0.0,1.0)!3,0.9,[0.5,0.4,0.1]));
+	osc = Mix(Saw.ar(freq*[0.25,1,1.5],[0.5,0.4,0.1]));
+	//osc = Mix(DPW4Saw.ar(freq*[0.25,1,1.5],[0.5,0.4,0.1]));
+	filterenv = EnvGen.ar(Env.adsr(0.0,0.5,0.2,0.2),gate,doneAction:2);
+	filter =  RLPF.ar(osc,cutoff*filterenv+100,rq);
+
+ 	//distortion
+ 	//filter = filter.distort.softclip;
+
+	ab = abs(filter);
+ 	filter = (filter*(ab + drive)/(filter ** 2 + (drive - 1) * ab + 1));
+
+	//remove low end
+	filter = BLowShelf.ar(filter,300,1.0,-12);
+	//dip at 1600Hz
+	filter = BPeakEQ.ar(filter,1600,1.0,-6);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.0,0.9,0.05),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp*2,pan));
+
+}).add;
+
+)
+
+
+
+
+(
+Pbind(
+	\instrument,\bassfoundation,
+	\midinote,36,
+	\dur,0.5,
+	\rq,1.0
+).play
+)
+
+
+(
+Pbind(
+	\instrument,\basshighend,
+	\midinote,36,
+	\dur,0.5,
+	\rq,1.0
+).play
+)
+
+
+//combination
+(
+p = Pbind(
+	\midinote,Pstutter(4,Pseq([36,43,39,31],inf)),
+	\dur,0.5,
+	\rq,Pstutter(4,Pn(Pseries(1.0,-0.1,8),inf)),
+	\cutoff,Pstutter(4,Pn(Pseries(8000,-1000,7),inf))
+);
+
+Ppar([
+	Pset(\instrument,Pseq([\bassfoundation],inf),p),
+	Padd(\instrument,\basshighend,p)
+]).play;
+)
+
+
+
+
+
+
+
+
+
+//pp. 32-33
+
+(
+
+SynthDef(\winwoodlead,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff=8000 rq=0.8 lfowidth=0.01 lforate= 8 lagamount=0.01 pan=0.0|
+
+	var pulse, filter, env, lfo;
+
+	lfo = LFTri.kr(lforate,Rand(0,2.0)!2);
+
+	pulse = Mix(Pulse.ar((freq.lag(lagamount))*[1,1.001]*(1.0+(lfowidth*lfo)),[0.2,0.19]))*0.5;
+
+	filter =  RLPF.ar(pulse,cutoff,rq);
+
+	//remove low end
+	filter = BLowShelf.ar(filter,351,1.0,-9);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.0,0.9,0.05),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+)
+
+
+
+//Pmono allows use of the lag between setting frequency values
+(
+Pmono(
+	\winwoodlead,
+	\midinote,Pseq([Pshuf([60,76,77,76,74,72],2)],inf),
+	\dur,Pseq([0.5,1.0,0.5,0.5,0.5,1.0],inf),
+	\amp,Pseq([0,1,1,1,1,1],inf),
+	\lagamount,0.1,
+	\lfowidth,Pstutter(6,Pseq([0.0,0.01,0.02,0.03,0.05,0.1],inf)),
+	\cutoff,Pstutter(6,Pn(Pgeom(2000,1.5,5),inf))
+).play
+)
+
+
+
+
+
+
+//pp34-37
+
+(
+
+SynthDef(\spookystrings,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff=8000 rq=0.2 lfowidth=0.01 lforate=3.8 pan=0.0|
+
+	var pulse, filter, env, lfo;
+
+	lfo = LFTri.kr(lforate,Rand(0,2.0)!2);
+
+	//LFO only on second oscillator
+	pulse = Mix(Saw.ar(freq*[1,1.001]*[1.0,1.0+(lfowidth*lfo)]))*0.5;
+
+	filter = BHiPass.ar(pulse,cutoff,rq);
+
+	env = EnvGen.ar(Env.adsr(0.1,0.0,1.0,3),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+SynthDef(\spookyeffect, {|out =0 gate= 1 delaytime=0.25 phaserate=0.1|
+	var source = In.ar(out,2);
+	var delay,phaser;
+
+	var env = Linen.kr(gate, 0.0, 1, 0.1, 2);
+
+	delay= DelayN.ar(source,0.8,delaytime);
+
+	phaser = delay;
+	//phaser = AllpassN.ar(delay,0.04,SinOsc.kr(phaserate,0,0.005,0.035)); //not working that well, too obvious, need to make more subtle
+
+	Out.ar(out,phaser);
+
+}).add;
+
+SynthDef(\spookystrings2,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff=8000 rq=0.2 pan=0.0|
+
+	var saw, pulse, filter, env, lfo, pulsewidthlfo;
+
+	lfo = LFTri.kr([3.5,5],Rand(0,2.0)!2);
+
+	pulsewidthlfo = SinOsc.kr(4.5);
+
+	saw = Saw.ar(freq*(1.0+(0.052*lfo[0])));
+
+	pulse = Pulse.ar(freq*(1.0+(0.072*lfo[1])),pulsewidthlfo*0.25+0.5);
+
+	//combine, equal mix
+	pulse = 0.5*(saw+pulse);
+
+	//filter specification not the clearest, so just going for slow attack to brightness
+	filter = BLowPass.ar(pulse,XLine.kr(678,cutoff,0.378),rq);
+
+	env = EnvGen.ar(Env.adsr(0.1,0.0,1.0,3),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+)
+
+(
+Pfx(
+	Pbind(
+		\instrument, \spookystrings,
+		\midinote,Pseq([69,67,62,59,55],inf),
+		\dur,Pseq([9.5,1.5,1.0,1.5,2.5],inf),
+		\amp,0.2,
+		\lfowidth,0.04,
+		\cutoff,1000,
+		\rq,0.1
+	),
+	\spookyeffect
+).play
+)
+
+
+(
+Pfx(
+	Pbind(
+		\instrument,\spookystrings2,
+		\midinote,Pseq([69,67,62,59,55],inf),
+		\dur,Pseq([5.5,1.5,1.0,1.5,2.5],inf),
+		\amp,0.2,
+		\cutoff,10000,
+		\rq,0.5
+	),
+	\spookyeffect
+).play
+)
+
+
+
+
+
+
+
+
+
+
+//pp34-37
+
+(
+
+SynthDef(\synchronicity,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff=8000 rq=0.2 pan=0.0|
+
+	var pulse, filter, env, slavefreq;
+
+	slavefreq = EnvGen.ar(Env([1,5,1],[0.04,0.9]))*freq;
+
+	pulse = SyncSaw.ar(freq,slavefreq);
+
+	filter = BLowPass.ar(pulse,cutoff,rq);
+
+	env = EnvGen.ar(Env.adsr(0.01,0.0,1.0,0.1),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+)
+
+
+(
+Pbind(
+	\instrument,\synchronicity,
+	\midinote,Pseq([57,59,62,62,61,59,57],inf),
+	\dur,Pseq([1.0,1.0,2.0,1.0,0.5,1.0,1.5],inf),
+	\amp,0.2,
+	\cutoff,7000,
+	\rq,1.0
+).play
+)
+
+
+
+
+
+
+//pp. 40-41
+
+(
+
+SynthDef(\situationsynth,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff=8000 rq=0.8 lfowidth=0.001 lforate= 3.3 pan=(-0.1)|
+
+	var pulse, filter, env, filterenv, lfo;
+
+	lfo = LFTri.kr(lforate,Rand(0,2.0)!2);
+
+	pulse = Mix(Pulse.ar((((freq.cpsmidi)+[0,0.14])+(lfo*lfowidth)).midicps,[0.5,0.51]+(lfowidth*lfo)))*0.5;
+
+	filterenv = EnvGen.ar(Env([0.0,1.0,0.3,0.0],[0.005,0.57,0.1],-3));
+
+	filter =  RLPF.ar(pulse,100+(filterenv*cutoff),rq);
+
+	env = EnvGen.ar(Env.adsr(0.002,0.57,1.0,0.3),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+
+SynthDef(\yazoodelayeffect, {|out =0 gate= 1 pan= 0.1|
+	var source = In.ar(out,2);
+	var delay;
+	var env = Linen.kr(gate, 0.0, 1, 0.1, 2);
+
+	delay= DelayC.ar(source[0].distort,0.25,0.25);
+
+	Out.ar(out,Pan2.ar(delay*env,pan));
+
+}).add;
+
+)
+
+
+//says original tempo 118, we'll keep 120 for note as it's so close.
+
+//Pmono allows use of the lag between setting frequency values
+(
+Pfx(
+	Pbind(
+		\instrument,\situationsynth,
+		\midinote,Pseq([1,1,13,1,-1,-1,-1,11,8,11,13,1,1,13,1,-1,-1,11,16,15,11,13]+60,inf),	\dur,Pseq([0.5,0.5,0.5,0.25,0.5,0.5,0.25,0.25,0.25,0.25,0.25,0.5,0.5,0.5,0.25,0.5,0.5,0.25,0.25,0.25,0.25,0.25],inf),
+		\lfowidth,0.2,
+		\cutoff,6000,
+		\rq,0.6,
+		\pan,-0.1,
+		\amp,0.3
+	),
+	\yazoodelayeffect
+).play
+)
+
+
+
+
+
+
+
+
+
+//pp. 42-3 not an exact attempt, but some resonance and distortion fun
+
+(
+
+SynthDef(\ressquares,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff=8000 rq=0.8 pan=(-0.1)|
+
+	var pulse, filter, env;
+
+	//2 cents detune for second oscillator
+	pulse = Mix(Pulse.ar( ((freq.cpsmidi)+[0,0.02]).midicps, 0.5))*0.5;
+
+	filter =  BLowPass.ar(pulse,100+cutoff,rq);
+
+	env = EnvGen.ar(Env.adsr(0.002,0.1,1.0,0.2),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+
+SynthDef(\synthdistortion, {|out =0 gate= 1|
+	var source = In.ar(out,2);
+	var env = Linen.kr(gate, 0.0, 1, 0.1, 2);
+	var abs, excess,output;
+
+	abs = source.abs;
+
+	excess = (abs-0.1).max(0.0).min(0.9)/0.9;
+
+	//original plus sinusoidal perturbation of amount based on absolute amplitude
+	output = source+(excess*(sin(excess*2pi*5)*0.5-0.5));
+
+	XOut.ar(out,env,output*env);
+
+}).add;
+
+)
+
+
+//quite loud, be careful
+(
+Pfx(
+	Pbind(
+		\instrument,\ressquares,
+		\midinote,Pseq([12,0,0,0,3,0,7,0]+36,inf),
+		\dur,0.25,
+		\amp,Pstutter(8,Pn(Pseries(0.2,0.08,8),inf)),
+		\cutoff,Pstutter(8,Pn(Pseries(100,125,11),inf)),
+		\rq,Pstutter(4,Pn(Pseries(0.2,-0.02,9),inf)),
+		\pan,-0.1
+	),
+	\synthdistortion
+).play
+)
+
+
+
+
+
+
+
+//pp.44-45
+
+(
+
+SynthDef(\whoorgan,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff=8000 rq=0.8 pan=(-0.1)|
+
+	var osc, filter, env;
+	var basefreq =  ((freq.cpsmidi)+[0,0.1]).midicps;
+
+	//osc = Mix(Blip.ar(basefreq,16))*0.5;
+
+  	osc = Mix.fill(10,{|i| SinOsc.ar(basefreq*(i+1),0.0,(0.25+(0.75*LFNoise0.kr(10.1+i,0.5,0.5)))/(1.0+(0.5*i)))})*0.2;
+
+	filter =  BLowPass.ar(osc,2000+(amp*cutoff),rq);
+
+	env = EnvGen.ar(Env.adsr(0.02,0.1,0.9,1.0),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(Mix(filter)*env*amp,pan));
+
+}).add;
+
+
+SynthDef(\filtereffect, {|out =0 gate= 1|
+	var source = In.ar(out,2);
+	var env = Linen.kr(gate, 0.0, 1, 0.1, 2);
+	var output;
+
+	output = BLowPass.ar(BLowPass.ar(source,SinOsc.ar(0.25,0,5000,5500),0.4),(200+(5000*SinOsc.ar(4.01,0.5,0.5,0.5))),0.6);
+
+	//output = BLowPass.ar(source,SinOsc.ar(0.275,0,5000,5500),0.1);
+
+	XOut.ar(out,env,output*env);
+
+}).add;
+
+)
+
+
+(
+Pfx(
+	Pbind(
+		\instrument,\whoorgan,
+		\midinote,Pseq([7,5,4,0]+60,inf),
+		\dur,0.5,
+		\amp,Pstutter(8,Pn(Pseries(0.3,0.05,8),inf)),
+		\cutoff,8000
+	),
+	\filtereffect
+).play
+)
+
+
+
+
+//pp. 46-7
+
+(
+SynthDef(\eightoeightkick,{|out= 0 freq = 440 amp = 0.1 ringTime=10.0 releaseTime=1.0 distortion = 0.1 pan=(-0.1)|
+
+	var impulse, filter, env;
+
+  	impulse = Impulse.ar(0);
+
+	filter = Ringz.ar(impulse,XLine.ar(freq,60,0.1),ringTime);
+
+	env = EnvGen.ar(Env.perc(0.001,releaseTime),doneAction:2);
+
+	filter = (1.0-distortion)*filter + (distortion*(filter.distort));
+	Out.ar(out,Pan2.ar(filter*env*amp,pan));
+
+}).add;
+
+)
+
+
+(
+Pbind(
+	\instrument,\eightoeightkick,
+	\dur,1.0,
+	\amp,0.5,
+	\releaseTime,Pstutter(4,Pn(Pseries(2.0,-0.3,6),inf)),
+	\ringTime,Pstutter(6,Pn(Pseries(10.0,-1.0,9),inf)),
+	\distortion,Pstutter(7,Pn(Pseries(0.1,0.2,4),inf))
+).play
+)
+
+
+
+
+
+
+//pp. 48-9
+
+(
+SynthDef(\pwmbling,{|out= 0 freq = 440 amp = 0.1 gate=1 lforate = 4.85 lfowidth= 0.5 cutoff= 12000 rq=0.25 pan = 0.0|
+
+	var lfo, pulse, filter, env;
+	var basefreq =  ((freq.cpsmidi)+[0,12.12]).midicps;
+
+	lfo = LFTri.kr(lforate*[1,1.01],Rand(0,2.0)!2);
+
+	pulse = Pulse.ar(basefreq,lfo*lfowidth+0.5);
+
+	env = EnvGen.ar(Env.adsr(0.0,1.0,0.2,1.5),gate,doneAction:2);
+
+	filter = RLPF.ar(pulse,(cutoff*(env.squared))+100,rq);
+
+	Out.ar(out,Pan2.ar(Mix(filter)*env*amp,pan));
+
+}).add
+)
+
+
+(
+Pbind(
+	\instrument,\pwmbling,
+	\midinote,Prand([0,1,3,5,6,7,10]+60,inf),
+	\dur,Pwrand([0.25,0.5],[0.92,0.08],inf),
+	\lfowidth,Pn(Pseries(0.0,0.07,7),inf),
+	\cutoff,Pstutter(8,Pn(Pseries(10000,-1000,9),inf))
+).play
+)
+
+
+
+
+
+
+
+
+
+
+//tone wheel organ emulation via two oscillators pp. 50-51
+
+(
+SynthDef(\tonewheeltwo,{|out= 0 freq = 440 amp = 0.1 gate=1 lforate = 4.85 lfowidth= 0.1 cutoff= 5000 rq=0.25 pan = 0.0|
+
+	var lfo, pulse, filter, env;
+
+	lfo = LFTri.kr(lforate*[1,1.01],Rand(0,2.0)!2);
+
+	pulse = Pulse.ar( (((freq*[1,3]).cpsmidi) + (lfo*lfowidth)).midicps,[0.5,0.51],[0.4,0.6]);
+
+	env = EnvGen.ar(Env.adsr(0.0,0.0,1.0,0.1),gate,doneAction:2);
+
+	filter = BLowPass4.ar(pulse,cutoff,rq);
+
+	filter= BPeakEQ.ar(filter,500,1.0,3);
+
+	Out.ar(out,Pan2.ar(Mix(filter)*env*amp,pan));
+
+}).add
+)
+
+
+(
+Pbind(
+	\instrument,\tonewheeltwo,
+	\midinote,Prand([48,50,52,60,64,67,58,72],inf),
+	\dur,0.5,
+	\rq,Pstutter(6,Pn(Pseries(0.75,-0.1,6),inf)),
+	\lfowidth,Pstutter(7,Pn(Pseries(0.0,0.05,10),inf)),
+	\cutoff,Pstutter(8,Pn(Pseries(2000,1000,4),inf))
+).play
+)
+
+
+
+
+
+
+
+//pp. 52-3
+
+(
+SynthDef(\everythingrhodes,{|out= 0 freq = 440 amp = 0.1 gate=1 lforate = 4.85 lfowidth= 0.5 cutoff= 2000 rq=0.5 pan = 0.0|
+
+	var pulse, filter, env;
+
+	pulse = Pulse.ar(freq*[1,33.5.midiratio],[0.2,0.1],[0.7,0.3]);
+
+	env = EnvGen.ar(Env.adsr(0.0,1.0,0.8,3.0),gate,doneAction:2);
+
+	//keyboard tracking filter cutoff
+	filter = BLowPass4.ar(pulse,(cutoff*(env.squared))+200+freq,rq);
+
+	Out.ar(out,Pan2.ar(Mix(filter)*env*amp,pan));
+
+}).add;
+
+
+//chorus and compression
+SynthDef(\choruscompresseffect, {|out =0 gate= 1|
+	var source = In.ar(out,2);
+	var chorus;
+	var env = Linen.kr(gate, 0.1, 1, 0.1, 2);
+
+	chorus= Splay.ar(Array.fill(4,{
+		var maxdelaytime= rrand(0.005,0.02);
+
+		DelayC.ar(source[0], maxdelaytime,LFNoise1.kr(Rand(0.1,0.6),0.25*maxdelaytime,0.75*maxdelaytime) )
+	}));
+
+	chorus = Compander.ar(4*(source + chorus),source,0.4,1,4);
+
+	XOut.ar(out,env,chorus);
+
+}).add;
+
+)
+
+
+
+(
+Pfx(
+	Pbind(
+		\instrument,\everythingrhodes,
+		\midinote,Pseq([12,8,7,0,[-12,4,12],[-12,4,12],[-12,4,12],[-11,5,12],[-11,5,12],[-9,7,12],7]+48,inf),
+		\dur,Pseq([0.5,0.5,0.5,0.5,1.5,1.0,1.0,1.0,1.0,2.0,0.5],inf),
+		\cutoff,Pstutter(11,Pn(Pseries(500,500,4),inf))
+	),
+	\choruscompresseffect
+).play
+)
+
+
+
+
+
+
+
+//pp. 54-5
+
+(
+
+//added some modulation to ring frequency to roughen sound a bit
+SynthDef(\justwannahavefun,{|out= 0 freq = 440 amp = 0.1 ringTime=10.0 pan=(-0.1)|
+
+	var impulse, filter, env;
+
+  	impulse = Impulse.ar(0);
+
+	filter = Ringz.ar(impulse,(freq.cpsmidi + (Rand(0.2,1.2)*SinOsc.kr(Rand(10,50)))).midicps,ringTime);
+
+	env = EnvGen.ar(Env([0.0,1.0,1.0,0.0],[0.001,0.04,0.04]),doneAction:2);
+
+	Out.ar(out,Pan2.ar((filter.softclip(0.9))*env*amp,pan));
+
+}).add;
+
+
+SynthDef(\gatedreverb,{|out =0 gate= 1 threshold= 0.1 amp=0.1|
+
+	var a,c,z,y,in;
+	var env = Linen.kr(gate, 0.1, 1, 0.1, 2);
+
+	c = 5; // number of comb delays
+	a = 4; // number of allpass delays
+
+	in=In.ar(out,2);
+
+	gate = if((in.mean)>threshold,in.mean,DC.ar(0)!2);
+
+	// reverb predelay time :
+	z = gate; //DelayN.ar(gate, 0.048,0.048);
+
+	//for delaytime if want modulation-	//LFNoise1.kr(0.1.rand, 0.04, 0.05)
+	y=Mix.arFill(c,{CombL.ar(z,0.1,rrand(0.01, 0.1),rrand(1.5,4))});
+
+	// chain of 4 allpass delays on each of two channels (8 total) :
+	a.do({ y = AllpassN.ar(y, 0.051, [rrand(0.01, 0.05),rrand(0.01, 0.05)], 1) });
+
+	Out.ar(out,Pan2.ar(y,0)*env*amp);
+
+}).add;
+
+
+)
+
+//reverb a bit excessive and resonant, but isn't that fun in itself, Cyndi?
+(
+Pfx(
+	Pbind(
+		\instrument,\justwannahavefun,
+		\amp,0.5,
+		\pan,Pfunc({1.0.rand}),
+		\midinote,Pseq(((6!14)++(3!14))+72,inf),
+		\dur,Pseq([0.5,0.25,0.5,0.5,0.25,0.5,1.5],inf),
+		\ringTime,Pstutter(7,Pn(Pseries(0.1,0.3,8),inf))
+	),
+	\gatedreverb
+).play
+)
+
+
+
+
+
+
+
+
+
+
+//pp. 56-7
+
+(
+
+SynthDef(\spacetheremin,{|out= 0 freq = 440 amp = 0.1 gate=1 lforate = 6 lfowidth= 0.5 cutoff= 4000 rq=0.25 lagTime=0.1 pan=0.0|
+
+	var lfo, osc, filter, env;
+
+	lfo = LFTri.kr(lforate+(LFNoise1.kr(5,0.3,0.3)),Rand(0,2.0));
+
+	osc = Saw.ar((freq.lag(lagTime).cpsmidi+(lfo*lfowidth)).midicps,0.5);
+
+	filter = BLowPass4.ar(osc,cutoff.lag(lagTime*4),rq);
+
+	env = EnvGen.ar(Env.adsr(0.6,0.0,1.0,0.05),gate,doneAction:2);
+
+	Out.ar(out,Pan2.ar(filter*env*amp.lag(lagTime*4),pan));
+
+}).add;
+
+
+SynthDef(\spacereverb,{|out =0 gate= 1 threshold= 0.1 amp=0.1|
+
+	var a,c,z,y,in;
+	var env = Linen.kr(gate, 0.1, 1, 0.1, 2);
+
+	c = 6; // number of comb delays
+	a = 4; // number of allpass delays
+
+	in=In.ar(out,2);
+
+	// reverb predelay:
+	z = DelayN.ar(in, 0.048,0.048);
+
+	y=Mix.arFill(c,{CombL.ar(z,0.1,rrand(0.01, 0.1),5)});
+
+	// chain of 4 allpass delays on each of two channels (8 total) :
+	a.do({ y = AllpassN.ar(y, 0.051, [rrand(0.01, 0.05),rrand(0.01, 0.05)], 1) });
+
+	Out.ar(out,Pan2.ar(y,0)*env*amp);
+
+}).add;
+
+)
+
+
+
+(
+Pfx(
+	Pmono(
+		\spacetheremin,
+		\amp,Prand([0.4,0.45,0.5,0.55,0.5],inf),
+		\midinote,Prand([0,2,3,5,6,8,9,11]+60,inf), //octotonic
+		\dur,Prand([1.0,1.5,0.5,0.75,1.25,2.0,0.57],inf),
+		\lagTime,Pstutter(7,Pn(Pseries(0.05,0.05,8),inf)),
+		\lfoRate,Pstutter(9,Pn(Pseries(6,0.5,5),inf)),
+		\cutoff,Pstutter(11,Prand([1000,1500,2000,3000],inf))
+	),
+	\spacereverb
+).play
+)
+
+
+
+
+
+
+
+//pp. 58-9 velocity-controlled bass
+
+(
+SynthDef(\fatvelocitybass,{|out= 0 freq = 440 amp = 0.1 gate=1 cutoff= 12000 rq=0.25 lagTime=0.01 pan = 0.0|
+
+	var lfo, osc, filter, env;
+
+	var basefreq =  ((freq.lag(lagTime).cpsmidi)+[0,11.95,31.03]).midicps;
+
+	osc = Saw.ar(basefreq,[0.5,0.4,0.1]); //+PinkNoise.ar(Line.kr(1.0,0,0.03));
+
+	env = EnvGen.ar(Env.adsr(0.01,1.0,1.0,0.25),gate,doneAction:2);
+
+	filter = BLowPass4.ar(osc,100+((amp.squared)*(freq+cutoff)),rq);
+
+	Out.ar(out,Pan2.ar(Mix(filter)*env*amp*0.8,pan));
+
+}).add
+)
+
+
+(
+PmonoArtic(
+	\fatvelocitybass,
+	\midinote,Pseq([13,18,3,1,3,1,3,1,4,1,3]+36,inf),
+	\dur,Pseq([0.5,0.5,0.5,0.5,1.0,0.5,1.5,0.5,1.0,0.5,1.0],inf),
+	\amp,Pseq([0.7,1.0,0.5,0.6,0.4,0.7,0.8,0.3,0.6,0.4,0.7],inf),
+	\cutoff,3000,
+	\rq,0.1
+).play
+)
+
+
+
+
+
+
+
+
+
+
+ 
\ No newline at end of file
diff --git a/examples/misuse_and_hacks/generate_titles.scd b/examples/misuse_and_hacks/generate_titles.scd
deleted file mode 100644
index b115020..0000000
--- a/examples/misuse_and_hacks/generate_titles.scd
+++ /dev/null
@@ -1,74 +0,0 @@
-//redFrik april'06 - title generation techniques
-//osx only
-//give credit if you use any of these in your code
-
-//----------
-~file= FileReader.read("/usr/share/dict/words");	//will take a little while to load
-(
-~fileFunc= {
-	var b, c;
-	b= ~file.choose[0];
-	c= ~file.choose[0];
-	b= b[0].toUpper++b.copyRange(1, b.size-1);
-	c= c[0].toUpper++c.copyRange(1, c.size-1);
-	(c++b).join
-};
-)
-10.do{~fileFunc.value.postln};""
-
-//----------
-~file= FileReader.read("/usr/share/dict/web2a");
-(
-~fileFunc= {
-	var b, c;
-	b= ~file.choose[0];
-	c= ~file.choose[0];
-	b= b[0].toUpper++b.copyRange(1, b.size-1);
-	c= c[0].toUpper++c.copyRange(1, c.size-1);
-	(c++b).join
-};
-)
-10.do{~fileFunc.value.postln};""
-
-//----------
-~file= FileReader.read("/usr/share/dict/web2");
-(
-~fileFunc= {
-	var b, c;
-	b= ~file.choose[0];
-	c= ~file.choose[0];
-	b= b[0].toUpper++b.copyRange(1, b.size-1);
-	c= c[0].toUpper++c.copyRange(1, c.size-1);
-	(c++b).join
-};
-)
-10.do{~fileFunc.value.postln};""
-
-//----------
-~file= FileReader.read("/usr/share/dict/propernames");
-(
-~fileFunc= {
-	var b, c;
-	b= ~file.choose[0];
-	c= ~file.choose[0];
-	b= b[0].toUpper++b.copyRange(1, b.size-1);
-	c= c[0].toUpper++c.copyRange(1, c.size-1);
-	(c++b).join
-};
-)
-10.do{~fileFunc.value.postln};""
-
-//----------
-~file= FileReader.read("/usr/share/dict/connectives");
-(
-~fileFunc= {
-	var b, c;
-	b= ~file.choose[0];
-	c= ~file.choose[0];
-	b= b[0].toUpper++b.copyRange(1, b.size-1);
-	c= c[0].toUpper++c.copyRange(1, c.size-1);
-	(c++b).join
-};
-)
-10.do{~fileFunc.value.postln};""
-
diff --git a/examples/misuse_and_hacks/redFrik2.scd b/examples/misuse_and_hacks/redFrik2.scd
deleted file mode 100644
index 5e7cdf1..0000000
--- a/examples/misuse_and_hacks/redFrik2.scd
+++ /dev/null
@@ -1,19 +0,0 @@
-
-// /*RUN*/
-(
-s.waitForBoot{
-	var synth;
-	SystemClock.sched(0, {
-		synth.free;
-		synth= SynthDef("redFrik",{
-			z=RHPF.ar(
-				BrownNoise.ar(1.dup),
-				Rand(0.3,3),
-				FSinOsc.kr(FSinOsc.kr(Rand(0.3,5),0,Rand(0,0.5),Rand(0.49,0.56)),Rand(0.3,0.6),Rand(0.3,0.5))
-			);
-			Out.ar(0,z);
-		}).play;
-		10;
-	});
-}
-)
\ No newline at end of file
diff --git a/examples/misuse_and_hacks/redSnail.scd b/examples/misuse_and_hacks/redSnail.scd
deleted file mode 100644
index 716cd0e..0000000
--- a/examples/misuse_and_hacks/redSnail.scd
+++ /dev/null
@@ -1,27 +0,0 @@
-
-// redsnail by redfrik
-(				//   s   s   s   s   s   s 
-s.waitForBoot{{
-	var d= Document.allDocuments.choose.front,
-		b, c, i, j= 1, k= 1, m= 0, n= 0, o= 1, p= 1,
-		syn= {|j, k, b, c, a| SinOsc.ar(a, BPF.ar(Saw.ar([j, k], [b, c]), 200, 0.1))}.play;
-		0.5.wait;
-		i= d.string.size.div(2);
-	loop{
-		d.selectRange(i-j, k+j);
-		b= d.selectedText.first; c= d.selectedText.last;
-		if(b==$-, {o= o.neg; n= n+1}); j= j+o;
-		if(c==$-, {p= p.neg; m= m+1}); k= k+p;
-		if(j<=k.neg, {o= 1}); if(k<=j.neg, {p= 1});
-		if(m%4==0, {m= m+1; i= i+1});
-		if(n%4==0, {n= n+1; i= i-1});
-		if(j-i>=0, {j= i+k; i= (d.string.size-j).div(2); k= d.string.size; o= p.neg; p= -1});
-		if(k+i>=d.string.size, {k= (i-j).div(2); i= k; j= k; p= o.neg; o= -1});
-		syn.set(\j, j, \k, k, \b, b.ascii, \c, c.ascii, \a, j+k/d.string.size);
-		(1/c.ascii).wait
-	}
-}
-.fork(AppClock)
-}
-)				//   s   s   s   s   s   s
-
diff --git a/examples/misuse_and_hacks/redSnake.scd b/examples/misuse_and_hacks/redSnake.scd
deleted file mode 100644
index e515f4d..0000000
--- a/examples/misuse_and_hacks/redSnake.scd
+++ /dev/null
@@ -1,21 +0,0 @@
-(					//z z z z z z z z z z z z z z z z
-s.waitForBoot{{									
-	var d= Document.allDocuments.choose.front,		
-		c, i= 0, j= 1, k= 1,						
-		syn= {|f, o| SinOsc.ar(f*[1, 1.01], LPF.ar(LFSaw.ar(f, 0, o), 80))}.play;
-		0.5.wait;									
-	loop{										
-		d.selectRange(i.div(2)%d.string.size, i%2); c= d.selectedText[0];
-		syn.set(\f, 99*k+c.ascii, \o, i%(d.string.size*2)/d.string.size*99);
-		i= i+j;									
-		if("%&@".includes(c), {i= i-[8, 4, -1].choose});
-		if("(){}.,:".includes(c), {j= [-1, 1, 0.25, 1/3, 3]@@i});
-		if(c==$\n, {k= [1, 1.06, 0.5]@@i});			
-		(1/40).wait								
-	}											
-}												
-.fork(AppClock)									
-}												
-)					//z z z z z z z z z z z z z z z z
-
-// f0 // March 17th 2007
\ No newline at end of file
diff --git a/examples/misuse_and_hacks/redWorm.scd b/examples/misuse_and_hacks/redWorm.scd
deleted file mode 100644
index b220566..0000000
--- a/examples/misuse_and_hacks/redWorm.scd
+++ /dev/null
@@ -1,20 +0,0 @@
-(						//w w w w w w w w w w w  ww
-s.waitForBoot{{									
-	var c,i=0,j=1,								
-		syn={|f,o|SinOsc.ar(o*[1,4],LFTri.ar(f,0,pi))}.play,
-		d=Document.allDocuments.choose.front;			
-		0.5.wait;									
-	loop{										
-		d.selectRange(i.div(2)%d.string.size,1);c=d.selectedText[0];
-		syn.set(\f,c.ascii.midicps/2,\o,c.ascii/80);	
-		if(c.isDecDigit,{d.selectedString_((c.ascii/d.string.size).asString);j=j.neg*(c.digit+1)});
-		i=i+j;									
-		(1/20).wait								
-	}											
-}												
-.fork(AppClock)									
-}												
-)
-
-
-// f0 // March 17th 2007
\ No newline at end of file
diff --git a/examples/pieces/Poeme Symphonique.scd b/examples/pieces/Poeme Symphonique.scd
index 140877c..129813f 100644
--- a/examples/pieces/Poeme Symphonique.scd	
+++ b/examples/pieces/Poeme Symphonique.scd	
@@ -1,7 +1,7 @@
 
 // (thor magnusson) (c 2007)
 
-// A reinterpretation of the Pome symphonique was composed by Gyšrgy Ligeti (in 1962)
+// A reinterpretation of the Poème symphonique was composed by György Ligeti (in 1962)
 // http://www.youtube.com/watch?v=QCp7bL-AWvw
 
 (
@@ -43,4 +43,4 @@ Task({
 	});
 	"thank you! you can now stop this program at any point!".postln;
 }).play
-)
\ No newline at end of file
+)
diff --git a/examples/pieces/RM-octaver.scd b/examples/pieces/RM-octaver.scd
index 139a629..e80ec08 100644
--- a/examples/pieces/RM-octaver.scd
+++ b/examples/pieces/RM-octaver.scd
@@ -4,17 +4,17 @@
 RM octaver
 
 inSignal is RingModulated by a sinusoidal tone with half frequency.
-The resulting spectrum is given by all the components of inSignal withÊ
+The resulting spectrum is given by all the components of inSignal with
 half freqs.
 This means that the new spectrum is a one 8ve below version of the input signal's one, 
-with only odd partials.Ê
-As a consequence, if inSignal is added again, even partials areÊ
+with only odd partials.
+As a consequence, if inSignal is added again, even partials are
 recovered.
 
 See:
 Miller Puckette, The Theory and Technique of Electronic Music, p. 126
 http://crca.ucsd.edu/~msp/techniques/latest/book.pdf
-http://crca.ucsd.edu/~msp/techniques/latest/book-html/node77.html#sect5.ringmodÊ
+http://crca.ucsd.edu/~msp/techniques/latest/book-html/node77.html#sect5.ringmod
 
 andreavalle
 
diff --git a/examples/pieces/hommage_a_duerer.scd b/examples/pieces/hommage_a_duerer.scd
index 603fcec..0953c15 100644
--- a/examples/pieces/hommage_a_duerer.scd
+++ b/examples/pieces/hommage_a_duerer.scd
@@ -1,12 +1,12 @@
 
 
-// Vera Molnar: Hommage ˆ DŸrer (1948-92)
+// Vera Molnar: Hommage à Duerer (1948-92)
 
 (
 w = Window.new("Vera Molnar: Hommage a Duerer (1948-92)", Rect(20, 20, 720, 720), false).front;
 w.view.background_(Color.white);
 x = Array.fill2D(4, 4, _ @ _).flat.scramble * 20;
-w.drawHook = {
+w.drawFunc = {
 	Pen.strokeColor = Color.black;
 	Pen.translate(10, 10);
 	9.do {
@@ -23,4 +23,4 @@ w.drawHook = {
 	};
 };
 w.refresh;
-)
\ No newline at end of file
+)
diff --git a/examples/research_and_tools/SeminaireMusical.scd b/examples/research_and_tools/SeminaireMusical.scd
index 233bd60..7a1879d 100644
--- a/examples/research_and_tools/SeminaireMusical.scd
+++ b/examples/research_and_tools/SeminaireMusical.scd
@@ -1,5 +1,5 @@
 
-// SŽminaire Musical Final 2007
+// Séminaire Musical Final 2007
 // julian rohrhuber
 // renate wieser
 
@@ -135,13 +135,13 @@ f_neu = {
 			nameList = indNotes; 
 		} {
 			freqs = ((0..12) + 60).midicps; 
-			if(mode == \numerical) { nameList = (0..12) } {ÊnameList = eurNotes };
+			if(mode == \numerical) { nameList = (0..12) } { nameList = eurNotes };
 		};
 		freq0 = freqs[0];
 		
 	},
 	1, {
-		nameList = {Êexprand(minFreq, 15000).round(1) } ! 13;
+		nameList = { exprand(minFreq, 15000).round(1) } ! 13;
 		freqs = nameList;
 		freq0 = 440;
 	},
@@ -243,8 +243,8 @@ f_play = { |i|
 	
 
 };
-f_playSargam = {Êv_sargam.valueAction = 1 };
-f_freeSargam = {Êv_sargam.valueAction = 0 };
+f_playSargam = { v_sargam.valueAction = 1 };
+f_freeSargam = { v_sargam.valueAction = 0 };
 
 // funktionen zu buttons
 v_neu.action = f_neu;
diff --git a/examples/research_and_tools/trochoid curve.scd b/examples/research_and_tools/trochoid curve.scd
index c0060f8..0d57e77 100644
--- a/examples/research_and_tools/trochoid curve.scd	
+++ b/examples/research_and_tools/trochoid curve.scd	
@@ -13,7 +13,7 @@ GUI.swing;	// use SwingGUI (Java based GUI)
 		var pen = GUI.pen;
 		w = GUI.window.new("Trochoid", Rect(128, 64, 800, 400)).front;
 		w.view.background_(Color.white);
-		w.drawHook = {
+		w.drawFunc = {
 			pen.strokeColor = Color.black;
 			pen.moveTo(0 @ 150);
 			((0..900) / 50).do { |phi|
diff --git a/external_libraries/CMakeLists.txt b/external_libraries/CMakeLists.txt
index f0566f1..e1e4e3c 100644
--- a/external_libraries/CMakeLists.txt
+++ b/external_libraries/CMakeLists.txt
@@ -26,8 +26,8 @@ if(NOT Boost_FOUND) # we compile boost ourselves
 		aux_source_directory(boost/libs/system/src/ boost_system )
 		add_library(boost_system STATIC ${boost_system})
 
-		aux_source_directory(boost/libs/filesystem/v3/src boost_filesystem_v3)
-		add_library(boost_filesystem STATIC ${boost_filesystem_v2} ${boost_filesystem_v3})
+		aux_source_directory(boost/libs/filesystem/src boost_filesystem_src)
+		add_library(boost_filesystem STATIC ${boost_filesystem_src})
 
 		if(LTO)
 			set_property(TARGET boost_program_options boost_system boost_filesystem
@@ -38,10 +38,6 @@ if(NOT Boost_FOUND) # we compile boost ourselves
 		endif()
 	endif()
 
-	if (${DSO_VISIBILITY})
-		remove_definitions(-fvisibility=hidden)
-	endif()
-
 	add_library(boost_thread STATIC ${boost_thread_src} ${boost_thread_platform})
 
 	if(LTO)
@@ -70,3 +66,13 @@ if (SUPERNOVA)
 	endif()
 endif()
 
+if(NOT YAMLCPP_FOUND)
+  message(STATUS "using bundled libyaml-cpp")
+
+  # yaml-cpp
+  include_directories(${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.3.0/include)
+  aux_source_directory(${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.3.0/src yaml_src)
+  CREATE_FINAL_FILE(${CMAKE_CURRENT_BINARY_DIR}/libyamlcpp.cpp ${yaml_src})
+
+  add_library(yaml STATIC ${CMAKE_CURRENT_BINARY_DIR}/libyamlcpp.cpp)
+endif()
diff --git a/external_libraries/TLSF-2.4.6/src/tlsf.c b/external_libraries/TLSF-2.4.6/src/tlsf.c
index bbda12e..f23e9e8 100644
--- a/external_libraries/TLSF-2.4.6/src/tlsf.c
+++ b/external_libraries/TLSF-2.4.6/src/tlsf.c
@@ -128,6 +128,10 @@
 /* Unlike the preview TLSF versions, now they are statics */
 #define BLOCK_ALIGN (sizeof(void *) * 2)
 
+// adapted for supercollider: align by 32 bytes, sufficient for avx instructions
+#undef  BLOCK_ALIGN
+#define BLOCK_ALIGN 32
+
 #define MAX_FLI		(30)
 #define MAX_LOG2_SLI	(5)
 #define MAX_SLI		(1 << MAX_LOG2_SLI)     /* MAX_SLI = 2^MAX_LOG2_SLI */
diff --git a/external_libraries/boost-lockfree/boost/atomic.hpp b/external_libraries/boost-lockfree/boost/atomic.hpp
new file mode 100644
index 0000000..cbce0a8
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic.hpp
@@ -0,0 +1,171 @@
+#ifndef BOOST_ATOMIC_HPP
+#define BOOST_ATOMIC_HPP
+
+//  Copyright (c) 2011 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#include <cstddef>
+#include <boost/cstdint.hpp>
+
+#include <boost/memory_order.hpp>
+
+#include <boost/atomic/platform.hpp>
+#include <boost/atomic/detail/type-classifier.hpp>
+#include <boost/type_traits/is_signed.hpp>
+
+namespace boost {
+
+#ifndef BOOST_ATOMIC_CHAR_LOCK_FREE
+#define BOOST_ATOMIC_CHAR_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_CHAR16_T_LOCK_FREE
+#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_CHAR32_T_LOCK_FREE
+#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_WCHAR_T_LOCK_FREE
+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_SHORT_LOCK_FREE
+#define BOOST_ATOMIC_SHORT_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_INT_LOCK_FREE
+#define BOOST_ATOMIC_INT_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_LONG_LOCK_FREE
+#define BOOST_ATOMIC_LONG_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_LLONG_LOCK_FREE
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_POINTER_LOCK_FREE
+#define BOOST_ATOMIC_POINTER_LOCK_FREE 0
+#endif
+
+#define BOOST_ATOMIC_ADDRESS_LOCK_FREE BOOST_ATOMIC_POINTER_LOCK_FREE
+
+#ifndef BOOST_ATOMIC_BOOL_LOCK_FREE
+#define BOOST_ATOMIC_BOOL_LOCK_FREE 0
+#endif
+
+#ifndef BOOST_ATOMIC_THREAD_FENCE
+#define BOOST_ATOMIC_THREAD_FENCE 0
+static inline void
+atomic_thread_fence(memory_order)
+{
+}
+#endif
+
+#ifndef BOOST_ATOMIC_SIGNAL_FENCE
+#define BOOST_ATOMIC_SIGNAL_FENCE 0
+static inline void
+atomic_signal_fence(memory_order order)
+{
+    atomic_thread_fence(order);
+}
+#endif
+
+template<typename T>
+class atomic : public atomics::detail::base_atomic<T, typename atomics::detail::type_classifier<T>::test, sizeof(T), boost::is_signed<T>::value > {
+private:
+    typedef T value_type;
+    typedef atomics::detail::base_atomic<T, typename atomics::detail::type_classifier<T>::test, sizeof(T), boost::is_signed<T>::value > super;
+public:
+    atomic(void) : super() {}
+    explicit atomic(const value_type & v) : super(v) {}
+
+    atomic & operator=(value_type v) volatile
+    {
+        super::operator=(v);
+        return *const_cast<atomic *>(this);
+    }
+private:
+    atomic(const atomic &) /* =delete */ ;
+    atomic & operator=(const atomic &) /* =delete */ ;
+};
+
+typedef atomic<char> atomic_char;
+typedef atomic<unsigned char> atomic_uchar;
+typedef atomic<signed char> atomic_schar;
+typedef atomic<uint8_t> atomic_uint8_t;
+typedef atomic<int8_t> atomic_int8_t;
+typedef atomic<unsigned short> atomic_ushort;
+typedef atomic<short> atomic_short;
+typedef atomic<uint16_t> atomic_uint16_t;
+typedef atomic<int16_t> atomic_int16_t;
+typedef atomic<unsigned int> atomic_uint;
+typedef atomic<int> atomic_int;
+typedef atomic<uint32_t> atomic_uint32_t;
+typedef atomic<int32_t> atomic_int32_t;
+typedef atomic<unsigned long> atomic_ulong;
+typedef atomic<long> atomic_long;
+typedef atomic<uint64_t> atomic_uint64_t;
+typedef atomic<int64_t> atomic_int64_t;
+#ifdef BOOST_HAS_LONG_LONG
+typedef atomic<unsigned long long> atomic_ullong;
+typedef atomic<long long> atomic_llong;
+#endif
+typedef atomic<void*> atomic_address;
+typedef atomic<bool> atomic_bool;
+
+#ifndef BOOST_ATOMIC_FLAG_LOCK_FREE
+#define BOOST_ATOMIC_FLAG_LOCK_FREE 0
+class atomic_flag {
+public:
+    atomic_flag(void) : v_(false) {}
+
+    bool
+    test_and_set(memory_order order = memory_order_seq_cst)
+    {
+        return v_.exchange(true, order);
+    }
+
+    void
+    clear(memory_order order = memory_order_seq_cst) volatile
+    {
+        v_.store(false, order);
+    }
+private:
+    atomic_flag(const atomic_flag &) /* = delete */ ;
+    atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
+    atomic<bool> v_;
+};
+#endif
+
+typedef atomic<char> atomic_char;
+typedef atomic<unsigned char> atomic_uchar;
+typedef atomic<signed char> atomic_schar;
+typedef atomic<uint8_t> atomic_uint8_t;
+typedef atomic<int8_t> atomic_int8_t;
+typedef atomic<unsigned short> atomic_ushort;
+typedef atomic<short> atomic_short;
+typedef atomic<uint16_t> atomic_uint16_t;
+typedef atomic<int16_t> atomic_int16_t;
+typedef atomic<unsigned int> atomic_uint;
+typedef atomic<int> atomic_int;
+typedef atomic<uint32_t> atomic_uint32_t;
+typedef atomic<int32_t> atomic_int32_t;
+typedef atomic<unsigned long> atomic_ulong;
+typedef atomic<long> atomic_long;
+typedef atomic<uint64_t> atomic_uint64_t;
+typedef atomic<int64_t> atomic_int64_t;
+typedef atomic<unsigned long long> atomic_ullong;
+typedef atomic<long long> atomic_llong;
+typedef atomic<void*> atomic_address;
+typedef atomic<bool> atomic_bool;
+
+}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/base.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/base.hpp
new file mode 100644
index 0000000..60f0c82
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/base.hpp
@@ -0,0 +1,512 @@
+#ifndef BOOST_ATOMIC_DETAIL_BASE_HPP
+#define BOOST_ATOMIC_DETAIL_BASE_HPP
+
+//  Copyright (c) 2009 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+// Base class definition and fallback implementation.
+// To be overridden (through partial specialization) by
+// platform implementations.
+
+#include <string.h>
+
+#include <boost/atomic/detail/lockpool.hpp>
+
+#define BOOST_ATOMIC_DECLARE_BASE_OPERATORS \
+    operator value_type(void) volatile const \
+    { \
+        return load(memory_order_seq_cst); \
+    } \
+     \
+    this_type & \
+    operator=(value_type v) volatile \
+    { \
+        store(v, memory_order_seq_cst); \
+        return *const_cast<this_type *>(this); \
+    } \
+     \
+    bool \
+    compare_exchange_strong( \
+        value_type & expected, \
+        value_type desired, \
+        memory_order order = memory_order_seq_cst) volatile \
+    { \
+        return compare_exchange_strong(expected, desired, order, calculate_failure_order(order)); \
+    } \
+     \
+    bool \
+    compare_exchange_weak( \
+        value_type & expected, \
+        value_type desired, \
+        memory_order order = memory_order_seq_cst) volatile \
+    { \
+        return compare_exchange_weak(expected, desired, order, calculate_failure_order(order)); \
+    } \
+     \
+
+#define BOOST_ATOMIC_DECLARE_ADDITIVE_OPERATORS \
+    value_type \
+    operator++(int) volatile \
+    { \
+        return fetch_add(1); \
+    } \
+     \
+    value_type \
+    operator++(void) volatile \
+    { \
+        return fetch_add(1) + 1; \
+    } \
+     \
+    value_type \
+    operator--(int) volatile \
+    { \
+        return fetch_sub(1); \
+    } \
+     \
+    value_type \
+    operator--(void) volatile \
+    { \
+        return fetch_sub(1) - 1; \
+    } \
+     \
+    value_type \
+    operator+=(difference_type v) volatile \
+    { \
+        return fetch_add(v) + v; \
+    } \
+     \
+    value_type \
+    operator-=(difference_type v) volatile \
+    { \
+        return fetch_sub(v) - v; \
+    } \
+
+#define BOOST_ATOMIC_DECLARE_BIT_OPERATORS \
+    value_type \
+    operator&=(difference_type v) volatile \
+    { \
+        return fetch_and(v) & v; \
+    } \
+     \
+    value_type \
+    operator|=(difference_type v) volatile \
+    { \
+        return fetch_or(v) | v; \
+    } \
+     \
+    value_type \
+    operator^=(difference_type v) volatile \
+    { \
+        return fetch_xor(v) ^ v; \
+    } \
+
+#define BOOST_ATOMIC_DECLARE_POINTER_OPERATORS \
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS \
+    BOOST_ATOMIC_DECLARE_ADDITIVE_OPERATORS \
+
+#define BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS \
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS \
+    BOOST_ATOMIC_DECLARE_ADDITIVE_OPERATORS \
+    BOOST_ATOMIC_DECLARE_BIT_OPERATORS \
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+static inline memory_order
+calculate_failure_order(memory_order order)
+{
+    switch(order) {
+        case memory_order_acq_rel:
+            return memory_order_acquire;
+        case memory_order_release:
+            return memory_order_relaxed;
+        default:
+            return order;
+    }
+}
+
+template<typename T, typename C , unsigned int Size, bool Sign>
+class base_atomic {
+private:
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef lockpool::scoped_lock guard_type;
+public:
+    base_atomic(void) {}
+
+    explicit base_atomic(const value_type & v)
+    {
+        memcpy(&v_, &v, Size);
+    }
+
+    void
+    store(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<char *>(v_));
+
+        memcpy(const_cast<char *>(v_), &v, Size);
+    }
+
+    value_type
+    load(memory_order /*order*/ = memory_order_seq_cst) volatile const
+    {
+        guard_type guard(const_cast<const char *>(v_));
+
+        value_type v;
+        memcpy(&v, const_cast<const char *>(v_), Size);
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order /*success_order*/,
+        memory_order /*failure_order*/) volatile
+    {
+        guard_type guard(const_cast<char *>(v_));
+
+        if (memcmp(const_cast<char *>(v_), &expected, Size) == 0) {
+            memcpy(const_cast<char *>(v_), &desired, Size);
+            return true;
+        } else {
+            memcpy(&expected, const_cast<char *>(v_), Size);
+            return false;
+        }
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    exchange(value_type v, memory_order /*order*/=memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<char *>(v_));
+
+        value_type tmp;
+        memcpy(&tmp, const_cast<char *>(v_), Size);
+
+        memcpy(const_cast<char *>(v_), &v, Size);
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return false;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+
+    char v_[Size];
+};
+
+template<typename T, unsigned int Size, bool Sign>
+class base_atomic<T, int, Size, Sign> {
+private:
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef lockpool::scoped_lock guard_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        v_ = v;
+    }
+
+    value_type
+    load(memory_order /*order*/ = memory_order_seq_cst) const volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type v = const_cast<const volatile value_type &>(v_);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ = v;
+        return old;
+    }
+
+    bool
+    compare_exchange_strong(value_type & expected, value_type desired,
+        memory_order /*success_order*/,
+        memory_order /*failure_order*/) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        if (v_ == expected) {
+            v_ = desired;
+            return true;
+        } else {
+            expected = v_;
+            return false;
+        }
+    }
+
+    bool
+    compare_exchange_weak(value_type & expected, value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ += v;
+        return old;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ -= v;
+        return old;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ &= v;
+        return old;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ |= v;
+        return old;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ ^= v;
+        return old;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return false;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, unsigned int Size, bool Sign>
+class base_atomic<T *, void *, Size, Sign> {
+private:
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+    typedef lockpool::scoped_lock guard_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+        v_ = v;
+    }
+
+    value_type
+    load(memory_order /*order*/ = memory_order_seq_cst) const volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type v = const_cast<const volatile value_type &>(v_);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ = v;
+        return old;
+    }
+
+    bool
+    compare_exchange_strong(value_type & expected, value_type desired,
+        memory_order /*success_order*/,
+        memory_order /*failure_order*/) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        if (v_ == expected) {
+            v_ = desired;
+            return true;
+        } else {
+            expected = v_;
+            return false;
+        }
+    }
+
+    bool
+    compare_exchange_weak(value_type & expected, value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type fetch_add(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ += v;
+        return old;
+    }
+
+    value_type fetch_sub(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ -= v;
+        return old;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return false;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic  &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<unsigned int Size, bool Sign>
+class base_atomic<void *, void *, Size, Sign> {
+private:
+    typedef base_atomic this_type;
+    typedef void * value_type;
+    typedef lockpool::scoped_lock guard_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+        v_ = v;
+    }
+
+    value_type
+    load(memory_order /*order*/ = memory_order_seq_cst) const volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type v = const_cast<const volatile value_type &>(v_);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        value_type old = v_;
+        v_ = v;
+        return old;
+    }
+
+    bool
+    compare_exchange_strong(value_type & expected, value_type desired,
+        memory_order /*success_order*/,
+        memory_order /*failure_order*/) volatile
+    {
+        guard_type guard(const_cast<value_type *>(&v_));
+
+        if (v_ == expected) {
+            v_ = desired;
+            return true;
+        } else {
+            expected = v_;
+            return false;
+        }
+    }
+
+    bool
+    compare_exchange_weak(value_type & expected, value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return false;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+}
+}
+}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/cas32strong.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/cas32strong.hpp
new file mode 100644
index 0000000..05fd9fb
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/cas32strong.hpp
@@ -0,0 +1,866 @@
+#ifndef BOOST_ATOMIC_DETAIL_CAS32STRONG_HPP
+#define BOOST_ATOMIC_DETAIL_CAS32STRONG_HPP
+
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+//
+//  Copyright (c) 2011 Helge Bahmann
+
+// Build 8-, 16- and 32-bit atomic operations from
+// a platform_cmpxchg32_strong primitive.
+
+#include <boost/memory_order.hpp>
+#include <boost/atomic/detail/base.hpp>
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+/* integral types */
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 1, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        storage_type expected_s = (storage_type) expected;
+        storage_type desired_s = (storage_type) desired;
+
+        bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            expected = (value_type) expected_s;
+        }
+
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 2, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        storage_type expected_s = (storage_type) expected;
+        storage_type desired_s = (storage_type) desired;
+
+        bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            expected = (value_type) expected_s;
+        }
+
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32_strong(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+/* pointer types */
+
+template<bool Sign>
+class base_atomic<void *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef void * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32_strong(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32_strong(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+/* generic types */
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 1, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        platform_fence_before(success_order);
+        bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            memcpy(&expected, &expected_s, sizeof(value_type));
+        }
+
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 2, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        platform_fence_before(success_order);
+        bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            memcpy(&expected, &expected_s, sizeof(value_type));
+        }
+
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        platform_fence_before(success_order);
+        bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            memcpy(&expected, &expected_s, sizeof(value_type));
+        }
+
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+}
+}
+}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/cas32weak.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/cas32weak.hpp
new file mode 100644
index 0000000..5b86301
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/cas32weak.hpp
@@ -0,0 +1,927 @@
+#ifndef BOOST_ATOMIC_DETAIL_CAS32WEAK_HPP
+#define BOOST_ATOMIC_DETAIL_CAS32WEAK_HPP
+
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+//
+//  Copyright (c) 2011 Helge Bahmann
+
+#include <boost/memory_order.hpp>
+#include <boost/atomic/detail/base.hpp>
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+/* integral types */
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 1, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        storage_type expected_s = (storage_type) expected;
+        storage_type desired_s = (storage_type) desired;
+
+        bool success = platform_cmpxchg32(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            expected = (value_type) expected_s;
+        }
+
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        for(;;) {
+            value_type tmp = expected;
+            if (compare_exchange_weak(tmp, desired, success_order, failure_order))
+                return true;
+            if (tmp != expected) {
+                expected = tmp;
+                return false;
+            }
+        }
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 2, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        storage_type expected_s = (storage_type) expected;
+        storage_type desired_s = (storage_type) desired;
+
+        bool success = platform_cmpxchg32(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            expected = (value_type) expected_s;
+        }
+
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        for(;;) {
+            value_type tmp = expected;
+            if (compare_exchange_weak(tmp, desired, success_order, failure_order))
+                return true;
+            if (tmp != expected) {
+                expected = tmp;
+                return false;
+            }
+        }
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        for(;;) {
+            value_type tmp = expected;
+            if (compare_exchange_weak(tmp, desired, success_order, failure_order))
+                return true;
+            if (tmp != expected) {
+                expected = tmp;
+                return false;
+            }
+        }
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+/* pointer types */
+
+template<bool Sign>
+class base_atomic<void *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef void * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        for(;;) {
+            value_type tmp = expected;
+            if (compare_exchange_weak(tmp, desired, success_order, failure_order))
+                return true;
+            if (tmp != expected) {
+                expected = tmp;
+                return false;
+            }
+        }
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        for(;;) {
+            value_type tmp = expected;
+            if (compare_exchange_weak(tmp, desired, success_order, failure_order))
+                return true;
+            if (tmp != expected) {
+                expected = tmp;
+                return false;
+            }
+        }
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+/* generic types */
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 1, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            memcpy(&expected, &expected_s, sizeof(value_type));
+        }
+
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        for(;;) {
+            value_type tmp = expected;
+            if (compare_exchange_weak(tmp, desired, success_order, failure_order))
+                return true;
+            if (tmp != expected) {
+                expected = tmp;
+                return false;
+            }
+        }
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 2, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            memcpy(&expected, &expected_s, sizeof(value_type));
+        }
+
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        for(;;) {
+            value_type tmp = expected;
+            if (compare_exchange_weak(tmp, desired, success_order, failure_order))
+                return true;
+            if (tmp != expected) {
+                expected = tmp;
+                return false;
+            }
+        }
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before_store(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg32(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            memcpy(&expected, &expected_s, sizeof(value_type));
+        }
+
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        for(;;) {
+            value_type tmp = expected;
+            if (compare_exchange_weak(tmp, desired, success_order, failure_order))
+                return true;
+            if (tmp != expected) {
+                expected = tmp;
+                return false;
+            }
+        }
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+}
+}
+}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/cas64strong.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/cas64strong.hpp
new file mode 100644
index 0000000..491e2c8
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/cas64strong.hpp
@@ -0,0 +1,432 @@
+#ifndef BOOST_ATOMIC_DETAIL_CAS64STRONG_HPP
+#define BOOST_ATOMIC_DETAIL_CAS64STRONG_HPP
+
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+//
+//  Copyright (c) 2011 Helge Bahmann
+
+// Build 64-bit atomic operation from platform_cmpxchg64_strong
+// primitive. It is assumed that 64-bit loads/stores are not
+// atomic, so they are funnelled through cmpxchg as well.
+
+#include <boost/memory_order.hpp>
+#include <boost/atomic/detail/base.hpp>
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+/* integral types */
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        platform_store64(v, &v_);
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = platform_load64(&v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg64_strong(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+/* pointer types */
+
+template<bool Sign>
+class base_atomic<void *, void *, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef void * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        platform_store64(v, &v_);
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = platform_load64(&v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg64_strong(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T *, void *, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before_store(order);
+        platform_store64(v, &v_);
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = platform_load64(&v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+
+        bool success = platform_cmpxchg64_strong(expected, desired, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+        }
+
+        return success;
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed));
+        return original;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+/* generic types */
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint64_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type value, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type value_s;
+        memcpy(&value_s, &value, sizeof(value_s));
+        platform_fence_before_store(order);
+        platform_store64(value_s, &v_);
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type value_s = platform_load64(&v_);
+        platform_fence_after_load(order);
+        value_type value;
+        memcpy(&value, &value_s, sizeof(value_s));
+        return value;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original = load(memory_order_relaxed);
+        do {
+        } while (!compare_exchange_weak(original, v, order, memory_order_relaxed));
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        platform_fence_before(success_order);
+        bool success = platform_cmpxchg64_strong(expected_s, desired_s, &v_);
+
+        if (success) {
+            platform_fence_after(success_order);
+        } else {
+            platform_fence_after(failure_order);
+            memcpy(&expected, &expected_s, sizeof(value_type));
+        }
+
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+}
+}
+}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/gcc-alpha.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-alpha.hpp
new file mode 100644
index 0000000..80ff11a
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-alpha.hpp
@@ -0,0 +1,354 @@
+#ifndef BOOST_ATOMIC_DETAIL_GCC_ALPHA_HPP
+#define BOOST_ATOMIC_DETAIL_GCC_ALPHA_HPP
+
+//  Copyright (c) 2009 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/atomic/detail/base.hpp>
+#include <boost/atomic/detail/builder.hpp>
+
+/*
+  Refer to http://h71000.www7.hp.com/doc/82final/5601/5601pro_004.html
+  (HP OpenVMS systems documentation) and the alpha reference manual.
+ */
+
+/*
+    NB: The most natural thing would be to write the increment/decrement
+    operators along the following lines:
+
+    __asm__ __volatile__(
+        "1: ldl_l %0,%1 \n"
+        "addl %0,1,%0 \n"
+        "stl_c %0,%1 \n"
+        "beq %0,1b\n"
+        : "=&b" (tmp)
+        : "m" (value)
+        : "cc"
+    );
+
+    However according to the comments on the HP website and matching
+    comments in the Linux kernel sources this defies branch prediction,
+    as the cpu assumes that backward branches are always taken; so
+    instead copy the trick from the Linux kernel, introduce a forward
+    branch and back again.
+
+    I have, however, had a hard time measuring the difference between
+    the two versions in microbenchmarks -- I am leaving it in nevertheless
+    as it apparently does not hurt either.
+*/
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+static inline void fence_before(memory_order order)
+{
+    switch(order) {
+        case memory_order_consume:
+        case memory_order_release:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("mb" ::: "memory");
+        default:;
+    }
+}
+
+static inline void fence_after(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("mb" ::: "memory");
+        default:;
+    }
+}
+
+template<>
+inline void platform_atomic_thread_fence(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+        case memory_order_consume:
+        case memory_order_release:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("mb" ::: "memory");
+        default:;
+    }
+}
+
+template<typename T>
+class atomic_alpha_32 {
+public:
+    typedef T integral_type;
+    explicit atomic_alpha_32(T v) : i(v) {}
+    atomic_alpha_32() {}
+    T load(memory_order order=memory_order_seq_cst) const volatile
+    {
+        T v=*reinterpret_cast<volatile const int *>(&i);
+        fence_after(order);
+        return v;
+    }
+    void store(T v, memory_order order=memory_order_seq_cst) volatile
+    {
+        fence_before(order);
+        *reinterpret_cast<volatile int *>(&i)=(int)v;
+    }
+    bool compare_exchange_weak(
+        T &expected,
+        T desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        fence_before(success_order);
+        int current, success;
+        __asm__ __volatile__(
+            "1: ldl_l %2, %4\n"
+            "cmpeq %2, %0, %3\n"
+            "mov %2, %0\n"
+            "beq %3, 3f\n"
+            "stl_c %1, %4\n"
+            "2:\n"
+
+            ".subsection 2\n"
+            "3: mov %3, %1\n"
+            "br 2b\n"
+            ".previous\n"
+
+            : "+&r" (expected), "+&r" (desired), "=&r"(current), "=&r"(success)
+            : "m" (i)
+            :
+        );
+        if (desired) fence_after(success_order);
+        else fence_after(failure_order);
+        return desired;
+    }
+
+    bool is_lock_free(void) const volatile {return true;}
+protected:
+    inline T fetch_add_var(T c, memory_order order) volatile
+    {
+        fence_before(order);
+        T original, modified;
+        __asm__ __volatile__(
+            "1: ldl_l %0, %2\n"
+            "addl %0, %3, %1\n"
+            "stl_c %1, %2\n"
+            "beq %1, 2f\n"
+
+            ".subsection 2\n"
+            "2: br 1b\n"
+            ".previous\n"
+
+            : "=&r" (original), "=&r" (modified)
+            : "m" (i), "r" (c)
+            :
+        );
+        fence_after(order);
+        return original;
+    }
+    inline T fetch_inc(memory_order order) volatile
+    {
+        fence_before(order);
+        int original, modified;
+        __asm__ __volatile__(
+            "1: ldl_l %0, %2\n"
+            "addl %0, 1, %1\n"
+            "stl_c %1, %2\n"
+            "beq %1, 2f\n"
+
+            ".subsection 2\n"
+            "2: br 1b\n"
+            ".previous\n"
+
+            : "=&r" (original), "=&r" (modified)
+            : "m" (i)
+            :
+        );
+        fence_after(order);
+        return original;
+    }
+    inline T fetch_dec(memory_order order) volatile
+    {
+        fence_before(order);
+        int original, modified;
+        __asm__ __volatile__(
+            "1: ldl_l %0, %2\n"
+            "subl %0, 1, %1\n"
+            "stl_c %1, %2\n"
+            "beq %1, 2f\n"
+
+            ".subsection 2\n"
+            "2: br 1b\n"
+            ".previous\n"
+
+            : "=&r" (original), "=&r" (modified)
+            : "m" (i)
+            :
+        );
+        fence_after(order);
+        return original;
+    }
+private:
+    T i;
+};
+
+template<typename T>
+class atomic_alpha_64 {
+public:
+    typedef T integral_type;
+    explicit atomic_alpha_64(T v) : i(v) {}
+    atomic_alpha_64() {}
+    T load(memory_order order=memory_order_seq_cst) const volatile
+    {
+        T v=*reinterpret_cast<volatile const T *>(&i);
+        fence_after(order);
+        return v;
+    }
+    void store(T v, memory_order order=memory_order_seq_cst) volatile
+    {
+        fence_before(order);
+        *reinterpret_cast<volatile T *>(&i)=v;
+    }
+    bool compare_exchange_weak(
+        T &expected,
+        T desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        fence_before(success_order);
+        int current, success;
+        __asm__ __volatile__(
+            "1: ldq_l %2, %4\n"
+            "cmpeq %2, %0, %3\n"
+            "mov %2, %0\n"
+            "beq %3, 3f\n"
+            "stq_c %1, %4\n"
+            "2:\n"
+
+            ".subsection 2\n"
+            "3: mov %3, %1\n"
+            "br 2b\n"
+            ".previous\n"
+
+            : "+&r" (expected), "+&r" (desired), "=&r"(current), "=&r"(success)
+            : "m" (i)
+            :
+        );
+        if (desired) fence_after(success_order);
+        else fence_after(failure_order);
+        return desired;
+    }
+
+    bool is_lock_free(void) const volatile {return true;}
+protected:
+    inline T fetch_add_var(T c, memory_order order) volatile
+    {
+        fence_before(order);
+        T original, modified;
+        __asm__ __volatile__(
+            "1: ldq_l %0, %2\n"
+            "addq %0, %3, %1\n"
+            "stq_c %1, %2\n"
+            "beq %1, 2f\n"
+
+            ".subsection 2\n"
+            "2: br 1b\n"
+            ".previous\n"
+
+            : "=&r" (original), "=&r" (modified)
+            : "m" (i), "r" (c)
+            :
+        );
+        fence_after(order);
+        return original;
+    }
+    inline T fetch_inc(memory_order order) volatile
+    {
+        fence_before(order);
+        T original, modified;
+        __asm__ __volatile__(
+            "1: ldq_l %0, %2\n"
+            "addq %0, 1, %1\n"
+            "stq_c %1, %2\n"
+            "beq %1, 2f\n"
+
+            ".subsection 2\n"
+            "2: br 1b\n"
+            ".previous\n"
+
+            : "=&r" (original), "=&r" (modified)
+            : "m" (i)
+            :
+        );
+        fence_after(order);
+        return original;
+    }
+    inline T fetch_dec(memory_order order) volatile
+    {
+        fence_before(order);
+        T original, modified;
+        __asm__ __volatile__(
+            "1: ldq_l %0, %2\n"
+            "subq %0, 1, %1\n"
+            "stq_c %1, %2\n"
+            "beq %1, 2f\n"
+
+            ".subsection 2\n"
+            "2: br 1b\n"
+            ".previous\n"
+
+            : "=&r" (original), "=&r" (modified)
+            : "m" (i)
+            :
+        );
+        fence_after(order);
+        return original;
+    }
+private:
+    T i;
+};
+
+template<typename T>
+class platform_atomic_integral<T, 4> : public build_atomic_from_typical<build_exchange<atomic_alpha_32<T> > > {
+public:
+    typedef build_atomic_from_typical<build_exchange<atomic_alpha_32<T> > > super;
+    explicit platform_atomic_integral(T v) : super(v) {}
+    platform_atomic_integral(void) {}
+};
+
+template<typename T>
+class platform_atomic_integral<T, 8> : public build_atomic_from_typical<build_exchange<atomic_alpha_64<T> > > {
+public:
+    typedef build_atomic_from_typical<build_exchange<atomic_alpha_64<T> > > super;
+    explicit platform_atomic_integral(T v) : super(v) {}
+    platform_atomic_integral(void) {}
+};
+
+template<typename T>
+class platform_atomic_integral<T, 1>: public build_atomic_from_larger_type<atomic_alpha_32<uint32_t>, T> {
+public:
+    typedef build_atomic_from_larger_type<atomic_alpha_32<uint32_t>, T> super;
+
+    explicit platform_atomic_integral(T v) : super(v) {}
+    platform_atomic_integral(void) {}
+};
+
+template<typename T>
+class platform_atomic_integral<T, 2>: public build_atomic_from_larger_type<atomic_alpha_32<uint32_t>, T> {
+public:
+    typedef build_atomic_from_larger_type<atomic_alpha_32<uint32_t>, T> super;
+
+    explicit platform_atomic_integral(T v) : super(v) {}
+    platform_atomic_integral(void) {}
+};
+
+}
+}
+}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/gcc-armv6+.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-armv6+.hpp
new file mode 100644
index 0000000..59aff76
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-armv6+.hpp
@@ -0,0 +1,241 @@
+#ifndef BOOST_ATOMIC_DETAIL_GCC_ARMV6P_HPP
+#define BOOST_ATOMIC_DETAIL_GCC_ARMV6P_HPP
+
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+//
+//  Copyright (c) 2009 Helge Bahmann
+//  Copyright (c) 2009 Phil Endecott
+//  ARM Code by Phil Endecott, based on other architectures.
+
+// From the ARM Architecture Reference Manual for architecture v6:
+//
+// LDREX{<cond>} <Rd>, [<Rn>]
+// <Rd> Specifies the destination register for the memory word addressed by <Rd>
+// <Rn> Specifies the register containing the address.
+//
+// STREX{<cond>} <Rd>, <Rm>, [<Rn>]
+// <Rd> Specifies the destination register for the returned status value.
+//      0  if the operation updates memory
+//      1  if the operation fails to update memory
+// <Rm> Specifies the register containing the word to be stored to memory.
+// <Rn> Specifies the register containing the address.
+// Rd must not be the same register as Rm or Rn.
+//
+// ARM v7 is like ARM v6 plus:
+// There are half-word and byte versions of the LDREX and STREX instructions,
+// LDREXH, LDREXB, STREXH and STREXB.
+// There are also double-word versions, LDREXD and STREXD.
+// (Actually it looks like these are available from version 6k onwards.)
+// FIXME these are not yet used; should be mostly a matter of copy-and-paste.
+// I think you can supply an immediate offset to the address.
+//
+// A memory barrier is effected using a "co-processor 15" instruction,
+// though a separate assembler mnemonic is available for it in v7.
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+// "Thumb 1" is a subset of the ARM instruction set that uses a 16-bit encoding.  It
+// doesn't include all instructions and in particular it doesn't include the co-processor
+// instruction used for the memory barrier or the load-locked/store-conditional
+// instructions.  So, if we're compiling in "Thumb 1" mode, we need to wrap all of our
+// asm blocks with code to temporarily change to ARM mode.
+//
+// You can only change between ARM and Thumb modes when branching using the bx instruction.
+// bx takes an address specified in a register.  The least significant bit of the address
+// indicates the mode, so 1 is added to indicate that the destination code is Thumb.
+// A temporary register is needed for the address and is passed as an argument to these
+// macros.  It must be one of the "low" registers accessible to Thumb code, specified
+// usng the "l" attribute in the asm statement.
+//
+// Architecture v7 introduces "Thumb 2", which does include (almost?) all of the ARM
+// instruction set.  So in v7 we don't need to change to ARM mode; we can write "universal
+// assembler" which will assemble to Thumb 2 or ARM code as appropriate.  The only thing
+// we need to do to make this "universal" assembler mode work is to insert "IT" instructions
+// to annotate the conditional instructions.  These are ignored in other modes (e.g. v6),
+// so they can always be present.
+
+#if defined(__thumb__) && !defined(__ARM_ARCH_7A__)
+// FIXME also other v7 variants.
+#define BOOST_ATOMIC_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 1f\n" "bx " #TMPREG "\n" ".arm\n" ".align 4\n" "1: "
+#define BOOST_ATOMIC_ARM_ASM_END(TMPREG)   "adr " #TMPREG ", 1f + 1\n" "bx " #TMPREG "\n" ".thumb\n" ".align 2\n" "1: "
+
+#else
+// The tmpreg is wasted in this case, which is non-optimal.
+#define BOOST_ATOMIC_ARM_ASM_START(TMPREG)
+#define BOOST_ATOMIC_ARM_ASM_END(TMPREG)
+#endif
+
+#if defined(__ARM_ARCH_7A__)
+// FIXME ditto.
+#define BOOST_ATOMIC_ARM_DMB "dmb\n"
+#else
+#define BOOST_ATOMIC_ARM_DMB "mcr\tp15, 0, r0, c7, c10, 5\n"
+#endif
+
+static inline void
+arm_barrier(void)
+{
+    int brtmp;
+    __asm__ __volatile__ (
+        BOOST_ATOMIC_ARM_ASM_START(%0)
+        BOOST_ATOMIC_ARM_DMB
+        BOOST_ATOMIC_ARM_ASM_END(%0)
+        : "=&l" (brtmp) :: "memory"
+    );
+}
+
+static inline void
+platform_fence_before(memory_order order)
+{
+    switch(order) {
+        case memory_order_release:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            arm_barrier();
+        case memory_order_consume:
+        default:;
+    }
+}
+
+static inline void
+platform_fence_after(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            arm_barrier();
+        default:;
+    }
+}
+
+static inline void
+platform_fence_before_store(memory_order order)
+{
+    platform_fence_before(order);
+}
+
+static inline void
+platform_fence_after_store(memory_order order)
+{
+    if (order == memory_order_seq_cst)
+        arm_barrier();
+}
+
+static inline void
+platform_fence_after_load(memory_order order)
+{
+    platform_fence_after(order);
+}
+
+template<typename T>
+bool
+platform_cmpxchg32(T & expected, T desired, volatile T * ptr)
+{
+    int success;
+    int tmp;
+    __asm__ (
+        BOOST_ATOMIC_ARM_ASM_START(%2)
+        "mov     %1, #0\n"        // success = 0
+        "ldrex   %0, %3\n"      // expected' = *(&i)
+        "teq     %0, %4\n"        // flags = expected'==expected
+        "ittt    eq\n"
+        "strexeq %2, %5, %3\n"  // if (flags.equal) *(&i) = desired, tmp = !OK
+        "teqeq   %2, #0\n"        // if (flags.equal) flags = tmp==0
+        "moveq   %1, #1\n"        // if (flags.equal) success = 1
+        BOOST_ATOMIC_ARM_ASM_END(%2)
+            : "=&r" (expected),  // %0
+            "=&r" (success),   // %1
+            "=&l" (tmp),       // %2
+            "+Q" (*ptr)          // %3
+            : "r" (expected),    // %4
+            "r" (desired) // %5
+            : "cc"
+        );
+    return success;
+}
+
+}
+}
+
+#define BOOST_ATOMIC_THREAD_FENCE 2
+static inline void
+atomic_thread_fence(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+        case memory_order_release:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            atomics::detail::arm_barrier();
+        default:;
+    }
+}
+
+#define BOOST_ATOMIC_SIGNAL_FENCE 2
+static inline void
+atomic_signal_fence(memory_order)
+{
+    __asm__ __volatile__ ("" ::: "memory");
+}
+
+class atomic_flag {
+private:
+    atomic_flag(const atomic_flag &) /* = delete */ ;
+    atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
+    uint32_t v_;
+public:
+    atomic_flag(void) : v_(false) {}
+
+    void
+    clear(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before_store(order);
+        const_cast<volatile uint32_t &>(v_) = 0;
+        atomics::detail::platform_fence_after_store(order);
+    }
+
+    bool
+    test_and_set(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before(order);
+        uint32_t expected = v_;
+        do {
+            if (expected == 1)
+                break;
+        } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_));
+        atomics::detail::platform_fence_after(order);
+        return expected;
+    }
+};
+#define BOOST_ATOMIC_FLAG_LOCK_FREE 2
+
+}
+
+#undef BOOST_ATOMIC_ARM_ASM_START
+#undef BOOST_ATOMIC_ARM_ASM_END
+
+#include <boost/atomic/detail/base.hpp>
+
+#if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
+
+#define BOOST_ATOMIC_CHAR_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2
+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2
+#define BOOST_ATOMIC_SHORT_LOCK_FREE 2
+#define BOOST_ATOMIC_INT_LOCK_FREE 2
+#define BOOST_ATOMIC_LONG_LOCK_FREE 2
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 0
+#define BOOST_ATOMIC_POINTER_LOCK_FREE 2
+#define BOOST_ATOMIC_BOOL_LOCK_FREE 2
+
+#include <boost/atomic/detail/cas32weak.hpp>
+
+#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/gcc-cas.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-cas.hpp
new file mode 100644
index 0000000..d9173c6
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-cas.hpp
@@ -0,0 +1,147 @@
+//  Copyright (c) 2011 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+// Use the gnu builtin __sync_val_compare_and_swap to build
+// atomic operations for 32 bit and smaller.
+
+#ifndef BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP
+#define BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP
+
+namespace boost {
+
+#define BOOST_ATOMIC_THREAD_FENCE 2
+inline void
+atomic_thread_fence(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+            break;
+        case memory_order_release:
+        case memory_order_consume:
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __sync_synchronize();
+            break;
+    }
+}
+
+namespace atomics {
+namespace detail {
+
+static inline void
+platform_fence_before(memory_order)
+{
+    /* empty, as compare_and_swap is synchronizing already */
+}
+
+static inline void
+platform_fence_after(memory_order)
+{
+    /* empty, as compare_and_swap is synchronizing already */
+}
+
+static inline void
+platform_fence_before_store(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_acquire:
+        case memory_order_consume:
+            break;
+        case memory_order_release:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __sync_synchronize();
+            break;
+    }
+}
+
+static inline void
+platform_fence_after_store(memory_order order)
+{
+    if (order == memory_order_seq_cst)
+        __sync_synchronize();
+}
+
+static inline void
+platform_fence_after_load(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_release:
+            break;
+        case memory_order_consume:
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __sync_synchronize();
+            break;
+    }
+}
+
+template<typename T>
+bool
+platform_cmpxchg32_strong(T & expected, T desired, volatile T * ptr)
+{
+    T found = __sync_val_compare_and_swap(ptr, expected, desired);
+    bool success = (found == expected);
+    expected = found;
+    return success;
+}
+
+class atomic_flag {
+private:
+    atomic_flag(const atomic_flag &) /* = delete */ ;
+    atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
+    uint32_t v_;
+public:
+    atomic_flag(void) : v_(false) {}
+
+    void
+    clear(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before_store(order);
+        const_cast<volatile uint32_t &>(v_) = 0;
+        atomics::detail::platform_fence_after_store(order);
+    }
+
+    bool
+    test_and_set(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before(order);
+        uint32_t expected = v_;
+        do {
+            if (expected == 1)
+                break;
+        } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_));
+        atomics::detail::platform_fence_after(order);
+        return expected;
+    }
+};
+#define BOOST_ATOMIC_FLAG_LOCK_FREE 2
+
+}
+}
+}
+
+#include <boost/atomic/detail/base.hpp>
+
+#if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
+
+#define BOOST_ATOMIC_CHAR_LOCK_FREE 2
+#define BOOST_ATOMIC_SHORT_LOCK_FREE 2
+#define BOOST_ATOMIC_INT_LOCK_FREE 2
+#define BOOST_ATOMIC_LONG_LOCK_FREE (sizeof(long) <= 4 ? 2 : 0)
+#define BOOST_ATOMIC_LLONG_LOCK_FREE (sizeof(long long) <= 4 ? 2 : 0)
+#define BOOST_ATOMIC_POINTER_LOCK_FREE (sizeof(void *) <= 4 ? 2 : 0)
+#define BOOST_ATOMIC_BOOL_LOCK_FREE 2
+
+#include <boost/atomic/detail/cas32strong.hpp>
+
+#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/gcc-ppc.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-ppc.hpp
new file mode 100644
index 0000000..c05ac85
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-ppc.hpp
@@ -0,0 +1,2745 @@
+#ifndef BOOST_ATOMIC_DETAIL_GCC_PPC_HPP
+#define BOOST_ATOMIC_DETAIL_GCC_PPC_HPP
+
+//  Copyright (c) 2009 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+/*
+    Refer to: Motorola: "Programming Environments Manual for 32-Bit
+    Implementations of the PowerPC Architecture", Appendix E:
+    "Synchronization Programming Examples" for an explanation of what is
+    going on here (can be found on the web at various places by the
+    name "MPCFPE32B.pdf", Google is your friend...)
+
+    Most of the atomic operations map to instructions in a relatively
+    straight-forward fashion, but "load"s may at first glance appear
+    a bit strange as they map to:
+
+            lwz %rX, addr
+            cmpw %rX, %rX
+            bne- 1f
+        1:
+
+    That is, the CPU is forced to perform a branch that "formally" depends
+    on the value retrieved from memory. This scheme has an overhead of
+    about 1-2 clock cycles per load, but it allows to map "acquire" to
+    the "isync" instruction instead of "sync" uniformly and for all type
+    of atomic operations. Since "isync" has a cost of about 15 clock
+    cycles, while "sync" hast a cost of about 50 clock cycles, the small
+    penalty to atomic loads more than compensates for this.
+
+    Byte- and halfword-sized atomic values are realized by encoding the
+    value to be represented into a word, performing sign/zero extension
+    as appropriate. This means that after add/sub operations the value
+    needs fixing up to accurately preserve the wrap-around semantic of
+    the smaller type. (Nothing special needs to be done for the bit-wise
+    and the "exchange type" operators as the compiler already sees to
+    it that values carried in registers are extended appropriately and
+    everything falls into place naturally).
+
+    The register constrant "b"  instructs gcc to use any register
+    except r0; this is sometimes required because the encoding for
+    r0 is used to signify "constant zero" in a number of instructions,
+    making r0 unusable in this place. For simplicity this constraint
+    is used everywhere since I am to lazy to look this up on a
+    per-instruction basis, and ppc has enough registers for this not
+    to pose a problem.
+*/
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+static inline void
+ppc_fence_before(memory_order order)
+{
+    switch(order) {
+        case memory_order_release:
+        case memory_order_acq_rel:
+#if defined(__powerpc64__)
+            __asm__ __volatile__ ("lwsync" ::: "memory");
+            break;
+#endif
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("sync" ::: "memory");
+        default:;
+    }
+}
+
+static inline void
+ppc_fence_after(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("isync");
+        case memory_order_consume:
+            __asm__ __volatile__ ("" ::: "memory");
+        default:;
+    }
+}
+
+static inline void
+ppc_fence_after_store(memory_order order)
+{
+    switch(order) {
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("sync");
+        default:;
+    }
+}
+
+}
+}
+
+class atomic_flag {
+private:
+    atomic_flag(const atomic_flag &) /* = delete */ ;
+    atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
+    uint32_t v_;
+public:
+    atomic_flag(void) : v_(false) {}
+
+    void
+    clear(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::ppc_fence_before(order);
+        const_cast<volatile uint32_t &>(v_) = 0;
+        atomics::detail::ppc_fence_after_store(order);
+    }
+
+    bool
+    test_and_set(memory_order order = memory_order_seq_cst) volatile
+    {
+        uint32_t original;
+        atomics::detail::ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (1)
+            : "cr0"
+        );
+        atomics::detail::ppc_fence_after(order);
+        return original;
+    }
+};
+
+} /* namespace boost */
+
+#define BOOST_ATOMIC_FLAG_LOCK_FREE 2
+
+#include <boost/atomic/detail/base.hpp>
+
+#if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
+
+#define BOOST_ATOMIC_CHAR_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2
+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2
+#define BOOST_ATOMIC_SHORT_LOCK_FREE 2
+#define BOOST_ATOMIC_INT_LOCK_FREE 2
+#define BOOST_ATOMIC_LONG_LOCK_FREE 2
+#define BOOST_ATOMIC_POINTER_LOCK_FREE 2
+#if defined(__powerpc64__)
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 2
+#else
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 0
+#endif
+#define BOOST_ATOMIC_BOOL_LOCK_FREE 2
+
+/* Would like to move the slow-path of failed compare_exchange
+(that clears the "success" bit) out-of-line. gcc can in
+principle do that using ".subsection"/".previous", but Apple's
+binutils seemingly does not understand that. Therefore wrap
+the "clear" of the flag in a macro and let it remain
+in-line for Apple
+*/
+
+#if !defined(__APPLE__)
+
+#define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR \
+    "9:\n" \
+    ".subsection 2\n" \
+    "2: addi %1,0,0\n" \
+    "b 9b\n" \
+    ".previous\n" \
+
+#else
+
+#define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR \
+    "b 9f\n" \
+    "2: addi %1,0,0\n" \
+    "9:\n" \
+
+#endif
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+/* integral types */
+
+template<typename T>
+class base_atomic<T, int, 1, true> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef int32_t storage_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m"(v_)
+            : "r" (v)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v;
+        __asm__ __volatile__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=&r" (v)
+            : "m" (v_)
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "add %1,%0,%3\n"
+            "extsb %1, %1\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "sub %1,%0,%3\n"
+            "extsb %1, %1\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "and %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "or %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "xor %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T>
+class base_atomic<T, int, 1, false> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m"(v_)
+            : "r" (v)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v;
+        __asm__ __volatile__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=&r" (v)
+            : "m" (v_)
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "add %1,%0,%3\n"
+            "rlwinm %1, %1, 0, 0xff\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "sub %1,%0,%3\n"
+            "rlwinm %1, %1, 0, 0xff\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "and %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "or %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "xor %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T>
+class base_atomic<T, int, 2, true> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef int32_t storage_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m"(v_)
+            : "r" (v)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v;
+        __asm__ __volatile__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=&r" (v)
+            : "m" (v_)
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "add %1,%0,%3\n"
+            "extsh %1, %1\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "sub %1,%0,%3\n"
+            "extsh %1, %1\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "and %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "or %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "xor %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T>
+class base_atomic<T, int, 2, false> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m"(v_)
+            : "r" (v)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v;
+        __asm__ __volatile__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=&r" (v)
+            : "m" (v_)
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "add %1,%0,%3\n"
+            "rlwinm %1, %1, 0, 0xffff\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "sub %1,%0,%3\n"
+            "rlwinm %1, %1, 0, 0xffff\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "and %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "or %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "xor %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        const_cast<volatile value_type &>(v_) = v;
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        __asm__ __volatile__ (
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "+b"(v)
+            :
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "add %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "sub %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "and %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "or %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "xor %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+#if defined(__powerpc64__)
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        const_cast<volatile value_type &>(v_) = v;
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        __asm__ __volatile__ (
+            "cmpd %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "+b"(v)
+            :
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y1\n"
+            "stdcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "ldarx %0,%y2\n"
+            "cmpd %0, %3\n"
+            "bne- 2f\n"
+            "stdcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: ldarx %0,%y2\n"
+            "cmpd %0, %3\n"
+            "bne- 2f\n"
+            "stdcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y2\n"
+            "add %1,%0,%3\n"
+            "stdcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y2\n"
+            "sub %1,%0,%3\n"
+            "stdcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y2\n"
+            "and %1,%0,%3\n"
+            "stdcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y2\n"
+            "or %1,%0,%3\n"
+            "stdcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y2\n"
+            "xor %1,%0,%3\n"
+            "stdcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+#endif
+
+/* pointer types */
+
+#if !defined(__powerpc64__)
+
+template<bool Sign>
+class base_atomic<void *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef void * value_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m" (v_)
+            : "r" (v)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v;
+        __asm__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=r"(v)
+            : "m"(v_)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m" (v_)
+            : "r" (v)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v;
+        __asm__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=r"(v)
+            : "m"(v_)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        v = v * sizeof(*v_);
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "add %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        v = v * sizeof(*v_);
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y2\n"
+            "sub %1,%0,%3\n"
+            "stwcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+#else
+
+template<bool Sign>
+class base_atomic<void *, void *, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef void * value_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        __asm__ (
+            "std %1, %0\n"
+            : "+m" (v_)
+            : "r" (v)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v;
+        __asm__ (
+            "ld %0, %1\n"
+            "cmpd %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=r"(v)
+            : "m"(v_)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y1\n"
+            "stdcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "ldarx %0,%y2\n"
+            "cmpd %0, %3\n"
+            "bne- 2f\n"
+            "stdcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: ldarx %0,%y2\n"
+            "cmpd %0, %3\n"
+            "bne- 2f\n"
+            "stdcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T *, void *, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        ppc_fence_before(order);
+        __asm__ (
+            "std %1, %0\n"
+            : "+m" (v_)
+            : "r" (v)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v;
+        __asm__ (
+            "ld %0, %1\n"
+            "cmpd %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=r"(v)
+            : "m"(v_)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type original;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y1\n"
+            "stdcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (v)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "ldarx %0,%y2\n"
+            "cmpd %0, %3\n"
+            "bne- 2f\n"
+            "stdcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: ldarx %0,%y2\n"
+            "cmpd %0, %3\n"
+            "bne- 2f\n"
+            "stdcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected), "=&b" (success), "+Z"(v_)
+            : "b" (expected), "b" (desired)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        return success;
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        v = v * sizeof(*v_);
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y2\n"
+            "add %1,%0,%3\n"
+            "stdcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        v = v * sizeof(*v_);
+        value_type original, tmp;
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y2\n"
+            "sub %1,%0,%3\n"
+            "stdcx. %1,%y2\n"
+            "bne- 1b\n"
+            : "=&b" (original), "=&b" (tmp), "+Z"(v_)
+            : "b" (v)
+            : "cc");
+        ppc_fence_after(order);
+        return original;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+#endif
+
+/* generic */
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 1, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m" (v_)
+            : "r" (tmp)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp;
+        __asm__ __volatile__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=r"(tmp)
+            : "m"(v_)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0, original;
+        memcpy(&tmp, &v, sizeof(value_type));
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (tmp)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        memcpy(&v, &original, sizeof(value_type));
+        return v;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
+            : "b" (expected_s), "b" (desired_s)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        memcpy(&expected, &expected_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
+            : "b" (expected_s), "b" (desired_s)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        memcpy(&expected, &expected_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 2, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m" (v_)
+            : "r" (tmp)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp;
+        __asm__ __volatile__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=r"(tmp)
+            : "m"(v_)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0, original;
+        memcpy(&tmp, &v, sizeof(value_type));
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (tmp)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        memcpy(&v, &original, sizeof(value_type));
+        return v;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
+            : "b" (expected_s), "b" (desired_s)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        memcpy(&expected, &expected_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
+            : "b" (expected_s), "b" (desired_s)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        memcpy(&expected, &expected_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(0)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        ppc_fence_before(order);
+        __asm__ (
+            "stw %1, %0\n"
+            : "+m" (v_)
+            : "r" (tmp)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp;
+        __asm__ __volatile__ (
+            "lwz %0, %1\n"
+            "cmpw %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=r"(tmp)
+            : "m"(v_)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0, original;
+        memcpy(&tmp, &v, sizeof(value_type));
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "lwarx %0,%y1\n"
+            "stwcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (tmp)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        memcpy(&v, &original, sizeof(value_type));
+        return v;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
+            : "b" (expected_s), "b" (desired_s)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        memcpy(&expected, &expected_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: lwarx %0,%y2\n"
+            "cmpw %0, %3\n"
+            "bne- 2f\n"
+            "stwcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
+            : "b" (expected_s), "b" (desired_s)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        memcpy(&expected, &expected_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+#if defined(__powerpc64__)
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint64_t storage_type;
+public:
+    explicit base_atomic(value_type v)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp;
+        memcpy(&tmp, &v, sizeof(value_type));
+        ppc_fence_before(order);
+        __asm__ (
+            "std %1, %0\n"
+            : "+m" (v_)
+            : "r" (tmp)
+        );
+        ppc_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp;
+        __asm__ __volatile__ (
+            "ld %0, %1\n"
+            "cmpd %0, %0\n"
+            "bne- 1f\n"
+            "1:\n"
+            : "=r"(tmp)
+            : "m"(v_)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0, original;
+        memcpy(&tmp, &v, sizeof(value_type));
+        ppc_fence_before(order);
+        __asm__ (
+            "1:\n"
+            "ldarx %0,%y1\n"
+            "stdcx. %2,%y1\n"
+            "bne- 1b\n"
+            : "=&b" (original), "+Z"(v_)
+            : "b" (tmp)
+            : "cr0"
+        );
+        ppc_fence_after(order);
+        memcpy(&v, &original, sizeof(value_type));
+        return v;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s, desired_s;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "ldarx %0,%y2\n"
+            "cmpd %0, %3\n"
+            "bne- 2f\n"
+            "stdcx. %4,%y2\n"
+            "bne- 2f\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
+            : "b" (expected_s), "b" (desired_s)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        memcpy(&expected, &expected_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s, desired_s;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+
+        int success;
+        ppc_fence_before(success_order);
+        __asm__(
+            "0: ldarx %0,%y2\n"
+            "cmpd %0, %3\n"
+            "bne- 2f\n"
+            "stdcx. %4,%y2\n"
+            "bne- 0b\n"
+            "addi %1,0,1\n"
+            "1:"
+
+            BOOST_ATOMIC_ASM_SLOWPATH_CLEAR
+            : "=&b" (expected_s), "=&b" (success), "+Z"(v_)
+            : "b" (expected_s), "b" (desired_s)
+            : "cr0"
+        );
+        if (success)
+            ppc_fence_after(success_order);
+        else
+            ppc_fence_after(failure_order);
+        memcpy(&expected, &expected_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+#endif
+
+}
+}
+
+#define BOOST_ATOMIC_THREAD_FENCE 2
+inline void
+atomic_thread_fence(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+            __asm__ __volatile__ ("isync" ::: "memory");
+            break;
+        case memory_order_release:
+#if defined(__powerpc64__)
+            __asm__ __volatile__ ("lwsync" ::: "memory");
+            break;
+#endif
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("sync" ::: "memory");
+        default:;
+    }
+}
+
+#define BOOST_ATOMIC_SIGNAL_FENCE 2
+inline void
+atomic_signal_fence(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+        case memory_order_release:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("" ::: "memory");
+            break;
+        default:;
+    }
+}
+
+}
+
+#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/gcc-sparcv9.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-sparcv9.hpp
new file mode 100644
index 0000000..a049100
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-sparcv9.hpp
@@ -0,0 +1,1217 @@
+#ifndef BOOST_ATOMIC_DETAIL_GCC_SPARC_HPP
+#define BOOST_ATOMIC_DETAIL_GCC_SPARC_HPP
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+static inline void
+platform_fence_before(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_acquire:
+        case memory_order_consume:
+            break;
+        case memory_order_release:
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory");
+            /* release */
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("membar #Sync" ::: "memory");
+            /* seq */
+            break;
+    }
+}
+
+static inline void
+platform_fence_after(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_release:
+            break;
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("membar #LoadLoad | #LoadStore" ::: "memory");
+            /* acquire */
+            break;
+        case memory_order_consume:
+            /* consume */
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("membar #Sync" ::: "memory");
+            /* seq */
+            break;
+        default:;
+    }
+}
+
+static inline void
+platform_fence_after_store(memory_order order)
+{
+    switch(order) {
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("membar #Sync" ::: "memory");
+        default:;
+    }
+}
+
+
+static inline void
+platform_fence_after_load(memory_order order)
+{
+    platform_fence_after(order);
+}
+
+}
+}
+
+class atomic_flag {
+private:
+    atomic_flag(const atomic_flag &) /* = delete */ ;
+    atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
+    uint32_t v_;
+public:
+    atomic_flag(void) : v_(false) {}
+
+    void
+    clear(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before(order);
+        const_cast<volatile uint32_t &>(v_) = 0;
+        atomics::detail::platform_fence_after_store(order);
+    }
+
+    bool
+    test_and_set(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before(order);
+        uint32_t tmp = 1;
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (tmp)
+            : "r" (&v_), "r" (0)
+            : "memory"
+        );
+        atomics::detail::platform_fence_after(order);
+        return tmp;
+    }
+};
+
+} /* namespace boost */
+
+#define BOOST_ATOMIC_FLAG_LOCK_FREE 2
+
+#include <boost/atomic/detail/base.hpp>
+
+#if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
+
+#define BOOST_ATOMIC_CHAR_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2
+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2
+#define BOOST_ATOMIC_SHORT_LOCK_FREE 2
+#define BOOST_ATOMIC_INT_LOCK_FREE 2
+#define BOOST_ATOMIC_LONG_LOCK_FREE 2
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 0
+#define BOOST_ATOMIC_POINTER_LOCK_FREE 2
+#define BOOST_ATOMIC_BOOL_LOCK_FREE 2
+
+namespace boost {
+
+#define BOOST_ATOMIC_THREAD_FENCE 2
+static inline void
+atomic_thread_fence(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+            break;
+        case memory_order_release:
+            __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory");
+            break;
+        case memory_order_acquire:
+            __asm__ __volatile__ ("membar #LoadLoad | #LoadStore" ::: "memory");
+            break;
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("membar #LoadLoad | #LoadStore | #StoreStore" ::: "memory");
+            break;
+        case memory_order_consume:
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("membar #Sync" ::: "memory");
+            break;
+        default:;
+    }
+}
+
+#define BOOST_ATOMIC_SIGNAL_FENCE 2
+static inline void
+atomic_signal_fence(memory_order)
+{
+    __asm__ __volatile__ ("" ::: "memory");
+}
+
+namespace atomics {
+namespace detail {
+
+/* integral types */
+
+template<typename T>
+class base_atomic<T, int, 1, true> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef int32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        const_cast<volatile storage_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+        storage_type desired_s = desired;
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired_s)
+            : "r" (&v_), "r" ((storage_type)expected)
+            : "memory"
+        );
+        desired = desired_s;
+        bool success = (desired == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = desired;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T>
+class base_atomic<T, int, 1, false> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        const_cast<volatile storage_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+        storage_type desired_s = desired;
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired_s)
+            : "r" (&v_), "r" ((storage_type)expected)
+            : "memory"
+        );
+        desired = desired_s;
+        bool success = (desired == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = desired;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T>
+class base_atomic<T, int, 2, true> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef int32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        const_cast<volatile storage_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+        storage_type desired_s = desired;
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired_s)
+            : "r" (&v_), "r" ((storage_type)expected)
+            : "memory"
+        );
+        desired = desired_s;
+        bool success = (desired == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = desired;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T>
+class base_atomic<T, int, 2, false> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) : v_(0) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        const_cast<volatile storage_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+        storage_type desired_s = desired;
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired_s)
+            : "r" (&v_), "r" ((storage_type)expected)
+            : "memory"
+        );
+        desired = desired_s;
+        bool success = (desired == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = desired;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired)
+            : "r" (&v_), "r" (expected)
+            : "memory"
+        );
+        bool success = (desired == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = desired;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+/* pointer types */
+
+template<bool Sign>
+class base_atomic<void *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef void * value_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired)
+            : "r" (&v_), "r" (expected)
+            : "memory"
+        );
+        bool success = (desired == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = desired;
+        return success;
+    }
+
+
+    bool compare_exchange_weak(value_type & expected, value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        const_cast<volatile value_type &>(v_) = v;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        platform_fence_before(success_order);
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired)
+            : "r" (&v_), "r" (expected)
+            : "memory"
+        );
+        bool success = (desired == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = desired;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+/* generic types */
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 1, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v)
+    {
+        v_ = 0;
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+        platform_fence_before(success_order);
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired_s)
+            : "r" (&v_), "r" (expected_s)
+            : "memory"
+        );
+        bool success = (desired_s == expected_s);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        memcpy(&expected, &desired_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 2, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v)
+    {
+        v_ = 0;
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp = 0;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s = 0, desired_s = 0;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+        platform_fence_before(success_order);
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired_s)
+            : "r" (&v_), "r" (expected_s)
+            : "memory"
+        );
+        bool success = (desired_s == expected_s);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        memcpy(&expected, &desired_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before(order);
+        const_cast<volatile storage_type &>(v_) = tmp;
+        platform_fence_after_store(order);
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s, desired_s;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+        platform_fence_before(success_order);
+        __asm__ (
+            "cas [%1], %2, %0"
+            : "+r" (desired_s)
+            : "r" (&v_), "r" (expected_s)
+            : "memory"
+        );
+        bool success = (desired_s == expected_s);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        memcpy(&expected, &desired_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
+
+}
+}
+}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/gcc-x86.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-x86.hpp
new file mode 100644
index 0000000..4b8af2e
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/gcc-x86.hpp
@@ -0,0 +1,1580 @@
+#ifndef BOOST_ATOMIC_DETAIL_GCC_X86_HPP
+#define BOOST_ATOMIC_DETAIL_GCC_X86_HPP
+
+//  Copyright (c) 2009 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+#if defined(__x86_64__)
+# define BOOST_ATOMIC_X86_FENCE_INSTR "mfence\n"
+#else
+# define BOOST_ATOMIC_X86_FENCE_INSTR "lock ; addl $0, (%%esp)\n"
+#endif
+
+static inline void
+platform_fence_before(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_acquire:
+        case memory_order_consume:
+            break;
+        case memory_order_release:
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("" ::: "memory");
+            /* release */
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("" ::: "memory");
+            /* seq */
+            break;
+    }
+}
+
+static inline void
+platform_fence_after(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_release:
+            break;
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("" ::: "memory");
+            /* acquire */
+            break;
+        case memory_order_consume:
+            /* consume */
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("" ::: "memory");
+            /* seq */
+            break;
+        default:;
+    }
+}
+
+static inline void
+platform_fence_after_load(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_release:
+            break;
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("" ::: "memory");
+            break;
+        case memory_order_consume:
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ (BOOST_ATOMIC_X86_FENCE_INSTR ::: "memory");
+            break;
+        default:;
+    }
+}
+
+static inline void
+platform_fence_before_store(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_acquire:
+        case memory_order_consume:
+            break;
+        case memory_order_release:
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("" ::: "memory");
+            /* release */
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("" ::: "memory");
+            /* seq */
+            break;
+    }
+}
+
+static inline void
+platform_fence_after_store(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+        case memory_order_release:
+            break;
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("" ::: "memory");
+            /* acquire */
+            break;
+        case memory_order_consume:
+            /* consume */
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ ("" ::: "memory");
+            /* seq */
+            break;
+        default:;
+    }
+}
+
+}
+}
+
+class atomic_flag {
+private:
+    atomic_flag(const atomic_flag &) /* = delete */ ;
+    atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
+    uint32_t v_;
+public:
+    atomic_flag(void) : v_(false) {}
+
+    bool
+    test_and_set(memory_order order = memory_order_seq_cst) volatile
+    {
+        uint32_t v = 1;
+        atomics::detail::platform_fence_before(order);
+        __asm__ __volatile__ (
+            "xchgl %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        atomics::detail::platform_fence_after(order);
+        return v;
+    }
+
+    void
+    clear(memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order == memory_order_seq_cst) {
+            uint32_t v = 0;
+            __asm__ __volatile__ (
+                "xchgl %0, %1"
+                : "+r" (v), "+m" (v_)
+            );
+        } else {
+            atomics::detail::platform_fence_before(order);
+            v_ = 0;
+        }
+    }
+};
+
+} /* namespace boost */
+
+#define BOOST_ATOMIC_FLAG_LOCK_FREE 2
+
+#include <boost/atomic/detail/base.hpp>
+
+#if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
+
+#define BOOST_ATOMIC_CHAR_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2
+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2
+#define BOOST_ATOMIC_SHORT_LOCK_FREE 2
+#define BOOST_ATOMIC_INT_LOCK_FREE 2
+#define BOOST_ATOMIC_LONG_LOCK_FREE 2
+
+#if defined(__x86_64__)
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 2
+#else
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 1
+#endif
+
+#define BOOST_ATOMIC_POINTER_LOCK_FREE 2
+#define BOOST_ATOMIC_BOOL_LOCK_FREE 2
+
+namespace boost {
+
+#define BOOST_ATOMIC_THREAD_FENCE 2
+static inline void
+atomic_thread_fence(memory_order order)
+{
+    switch(order) {
+        case memory_order_relaxed:
+            break;
+        case memory_order_release:
+            __asm__ __volatile__ ("" ::: "memory");
+            break;
+        case memory_order_acquire:
+            __asm__ __volatile__ ("" ::: "memory");
+            break;
+        case memory_order_acq_rel:
+            __asm__ __volatile__ ("" ::: "memory");
+            break;
+        case memory_order_consume:
+            break;
+        case memory_order_seq_cst:
+            __asm__ __volatile__ (BOOST_ATOMIC_X86_FENCE_INSTR ::: "memory");
+            break;
+        default:;
+    }
+}
+
+#define BOOST_ATOMIC_SIGNAL_FENCE 2
+static inline void
+atomic_signal_fence(memory_order)
+{
+    __asm__ __volatile__ ("" ::: "memory");
+}
+
+namespace atomics {
+namespace detail {
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 1, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            platform_fence_before(order);
+            const_cast<volatile value_type &>(v_) = v;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "lock ; xaddb %0, %1"
+            : "+q" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        return fetch_add(-v, order);
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "xchgb %0, %1"
+            : "+q" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        value_type previous = expected;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgb %2, %1"
+            : "+a" (previous), "+m" (v_)
+            : "q" (desired)
+        );
+        bool success = (previous == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = previous;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 2, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            platform_fence_before(order);
+            const_cast<volatile value_type &>(v_) = v;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "lock ; xaddw %0, %1"
+            : "+q" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        return fetch_add(-v, order);
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "xchgw %0, %1"
+            : "+q" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        value_type previous = expected;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgw %2, %1"
+            : "+a" (previous), "+m" (v_)
+            : "q" (desired)
+        );
+        bool success = (previous == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = previous;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, int, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            platform_fence_before(order);
+            const_cast<volatile value_type &>(v_) = v;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "lock ; xaddl %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        return fetch_add(-v, order);
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "xchgl %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        value_type previous = expected;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgl %2, %1"
+            : "+a" (previous), "+m" (v_)
+            : "r" (desired)
+        );
+        bool success = (previous == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = previous;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+#if defined(__x86_64__)
+template<typename T, bool Sign>
+class base_atomic<T, int, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef T difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            platform_fence_before(order);
+            const_cast<volatile value_type &>(v_) = v;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "lock ; xaddq %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    value_type
+    fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        return fetch_add(-v, order);
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "xchgq %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        value_type previous = expected;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgq %2, %1"
+            : "+a" (previous), "+m" (v_)
+            : "r" (desired)
+        );
+        bool success = (previous == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = previous;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    value_type
+    fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        value_type tmp = load(memory_order_relaxed);
+        do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed));
+        return tmp;
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+#endif
+
+/* pointers */
+
+#if !defined(__x86_64__)
+
+template<bool Sign>
+class base_atomic<void *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef void * value_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            platform_fence_before(order);
+            const_cast<volatile value_type &>(v_) = v;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "xchgl %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    bool compare_exchange_strong(value_type & expected, value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        value_type previous = expected;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgl %2, %1"
+            : "+a" (previous), "+m" (v_)
+            : "r" (desired)
+        );
+        bool success = (previous == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = previous;
+        return success;
+    }
+
+    bool compare_exchange_weak(value_type & expected, value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T *, void *, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            platform_fence_before(order);
+            const_cast<volatile value_type &>(v_) = v;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "xchgl %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        value_type previous = expected;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgl %2, %1"
+            : "+a" (previous), "+m" (v_)
+            : "r" (desired)
+        );
+        bool success = (previous == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = previous;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        v = v * sizeof(*v_);
+        platform_fence_before(order);
+        __asm__ (
+            "lock ; xaddl %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return reinterpret_cast<value_type>(v);
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        return fetch_add(-v, order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+#else
+
+template<bool Sign>
+class base_atomic<void *, void *, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef void * value_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            platform_fence_before(order);
+            const_cast<volatile value_type &>(v_) = v;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "xchgq %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    bool compare_exchange_strong(value_type & expected, value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        value_type previous = expected;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgq %2, %1"
+            : "+a" (previous), "+m" (v_)
+            : "r" (desired)
+        );
+        bool success = (previous == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = previous;
+        return success;
+    }
+
+    bool compare_exchange_weak(value_type & expected, value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T *, void *, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T * value_type;
+    typedef ptrdiff_t difference_type;
+public:
+    explicit base_atomic(value_type v) : v_(v) {}
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            platform_fence_before(order);
+            const_cast<volatile value_type &>(v_) = v;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        value_type v = const_cast<const volatile value_type &>(v_);
+        platform_fence_after_load(order);
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        platform_fence_before(order);
+        __asm__ (
+            "xchgq %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        value_type previous = expected;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgq %2, %1"
+            : "+a" (previous), "+m" (v_)
+            : "r" (desired)
+        );
+        bool success = (previous == expected);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        expected = previous;
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    value_type
+    fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        v = v * sizeof(*v_);
+        platform_fence_before(order);
+        __asm__ (
+            "lock ; xaddq %0, %1"
+            : "+r" (v), "+m" (v_)
+        );
+        platform_fence_after(order);
+        return reinterpret_cast<value_type>(v);
+    }
+
+    value_type
+    fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        return fetch_add(-v, order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_POINTER_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    value_type v_;
+};
+
+#endif
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 1, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint8_t storage_type;
+public:
+    explicit base_atomic(value_type v)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            storage_type tmp;
+            memcpy(&tmp, &v, sizeof(value_type));
+            platform_fence_before(order);
+            const_cast<volatile storage_type &>(v_) = tmp;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before(order);
+        __asm__ (
+            "xchgb %0, %1"
+            : "+q" (tmp), "+m" (v_)
+        );
+        platform_fence_after(order);
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s, desired_s;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+        storage_type previous_s = expected_s;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgb %2, %1"
+            : "+a" (previous_s), "+m" (v_)
+            : "q" (desired_s)
+        );
+        bool success = (previous_s == expected_s);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        memcpy(&expected, &previous_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 2, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint16_t storage_type;
+public:
+    explicit base_atomic(value_type v)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            storage_type tmp;
+            memcpy(&tmp, &v, sizeof(value_type));
+            platform_fence_before(order);
+            const_cast<volatile storage_type &>(v_) = tmp;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before(order);
+        __asm__ (
+            "xchgw %0, %1"
+            : "+q" (tmp), "+m" (v_)
+        );
+        platform_fence_after(order);
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s, desired_s;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+        storage_type previous_s = expected_s;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgw %2, %1"
+            : "+a" (previous_s), "+m" (v_)
+            : "q" (desired_s)
+        );
+        bool success = (previous_s == expected_s);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        memcpy(&expected, &previous_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+template<typename T, bool Sign>
+class base_atomic<T, void, 4, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint32_t storage_type;
+public:
+    explicit base_atomic(value_type v)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            storage_type tmp;
+            memcpy(&tmp, &v, sizeof(value_type));
+            platform_fence_before(order);
+            const_cast<volatile storage_type &>(v_) = tmp;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before(order);
+        __asm__ (
+            "xchgl %0, %1"
+            : "+q" (tmp), "+m" (v_)
+        );
+        platform_fence_after(order);
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s, desired_s;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+        storage_type previous_s = expected_s;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgl %2, %1"
+            : "+a" (previous_s), "+m" (v_)
+            : "q" (desired_s)
+        );
+        bool success = (previous_s == expected_s);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        memcpy(&expected, &previous_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+
+#if defined(__x86_64__)
+template<typename T, bool Sign>
+class base_atomic<T, void, 8, Sign> {
+    typedef base_atomic this_type;
+    typedef T value_type;
+    typedef uint64_t storage_type;
+public:
+    explicit base_atomic(value_type v)
+    {
+        memcpy(&v_, &v, sizeof(value_type));
+    }
+    base_atomic(void) {}
+
+    void
+    store(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        if (order != memory_order_seq_cst) {
+            storage_type tmp;
+            memcpy(&tmp, &v, sizeof(value_type));
+            platform_fence_before(order);
+            const_cast<volatile storage_type &>(v_) = tmp;
+        } else {
+            exchange(v, order);
+        }
+    }
+
+    value_type
+    load(memory_order order = memory_order_seq_cst) const volatile
+    {
+        storage_type tmp = const_cast<volatile storage_type &>(v_);
+        platform_fence_after_load(order);
+        value_type v;
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    value_type
+    exchange(value_type v, memory_order order = memory_order_seq_cst) volatile
+    {
+        storage_type tmp;
+        memcpy(&tmp, &v, sizeof(value_type));
+        platform_fence_before(order);
+        __asm__ (
+            "xchgq %0, %1"
+            : "+q" (tmp), "+m" (v_)
+        );
+        platform_fence_after(order);
+        memcpy(&v, &tmp, sizeof(value_type));
+        return v;
+    }
+
+    bool
+    compare_exchange_strong(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        storage_type expected_s, desired_s;
+        memcpy(&expected_s, &expected, sizeof(value_type));
+        memcpy(&desired_s, &desired, sizeof(value_type));
+        storage_type previous_s = expected_s;
+        platform_fence_before(success_order);
+        __asm__ (
+            "lock ; cmpxchgq %2, %1"
+            : "+a" (previous_s), "+m" (v_)
+            : "q" (desired_s)
+        );
+        bool success = (previous_s == expected_s);
+        if (success)
+            platform_fence_after(success_order);
+        else
+            platform_fence_after(failure_order);
+        memcpy(&expected, &previous_s, sizeof(value_type));
+        return success;
+    }
+
+    bool
+    compare_exchange_weak(
+        value_type & expected,
+        value_type desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+
+    bool
+    is_lock_free(void) const volatile
+    {
+        return true;
+    }
+
+    BOOST_ATOMIC_DECLARE_BASE_OPERATORS
+private:
+    base_atomic(const base_atomic &) /* = delete */ ;
+    void operator=(const base_atomic &) /* = delete */ ;
+    storage_type v_;
+};
+#endif
+
+#if defined(__i686__)
+
+template<typename T>
+bool
+platform_cmpxchg64_strong(T & expected, T desired, const volatile T * ptr)
+{
+    int scratch;
+    T prev = expected;
+    /* Make sure ebx is saved and restored properly in case
+    this object is compiled as "position independent". Since
+    programmers on x86 tend to forget specifying -DPIC or
+    similar, always assume PIC.
+
+    To make this work uniformly even in the non-PIC case,
+    setup register constraints such that ebx can not be
+    used by accident e.g. as base address for the variable
+    to be modified. Accessing "scratch" should always be okay,
+    as it can only be placed on the stack (and therefore
+    accessed through ebp or esp only).
+
+    In theory, could push/pop ebx onto/off the stack, but movs
+    to a prepared stack slot turn out to be faster. */
+    __asm__ __volatile__ (
+        "movl %%ebx, %1\n"
+        "movl %2, %%ebx\n"
+        "lock; cmpxchg8b 0(%4)\n"
+        "movl %1, %%ebx\n"
+        : "=A" (prev), "=m" (scratch)
+        : "D" ((int)desired), "c" ((int)(desired >> 32)), "S" (ptr), "0" (prev)
+        : "memory");
+    bool success = (prev == expected);
+    expected = prev;
+    return success;
+}
+
+template<typename T>
+void
+platform_store64(T value, volatile T * ptr)
+{
+    T expected = *ptr;
+    do {
+    } while (!platform_cmpxchg64_strong(expected, value, ptr));
+}
+
+template<typename T>
+T
+platform_load64(const volatile T * ptr)
+{
+    T expected = *ptr;
+    do {
+    } while (!platform_cmpxchg64_strong(expected, expected, ptr));
+    return expected;
+}
+
+#endif
+
+}
+}
+}
+
+/* pull in 64-bit atomic type using cmpxchg8b above */
+#if defined(__i686__)
+#include <boost/atomic/detail/cas64strong.hpp>
+#endif
+
+#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
+
+#endif
\ No newline at end of file
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/generic-cas.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/generic-cas.hpp
new file mode 100644
index 0000000..83b90ed
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/generic-cas.hpp
@@ -0,0 +1,194 @@
+#ifndef BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP
+#define BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP
+
+//  Copyright (c) 2009 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#include <stdint.h>
+
+#include <boost/memory_order.hpp>
+#include <boost/atomic/detail/base.hpp>
+#include <boost/atomic/detail/builder.hpp>
+
+/* fallback implementation for various compilation targets;
+this is *not* efficient, particularly because all operations
+are fully fenced (full memory barriers before and after
+each operation) */
+
+#if defined(__GNUC__)
+    namespace boost { namespace atomics { namespace detail {
+    static inline int32_t
+    fenced_compare_exchange_strong_32(volatile int32_t *ptr, int32_t expected, int32_t desired)
+    {
+        return __sync_val_compare_and_swap_4(ptr, expected, desired);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS32 1
+
+    #if defined(__amd64__) || defined(__i686__)
+    static inline int64_t
+    fenced_compare_exchange_strong_64(int64_t *ptr, int64_t expected, int64_t desired)
+    {
+        return __sync_val_compare_and_swap_8(ptr, expected, desired);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS64 1
+    #endif
+    }}}
+
+#elif defined(__ICL) || defined(_MSC_VER)
+
+    #if defined(_MSC_VER)
+    #include <Windows.h>
+    #include <intrin.h>
+    #endif
+
+    namespace boost { namespace atomics { namespace detail {
+    static inline int32_t
+    fenced_compare_exchange_strong(int32_t *ptr, int32_t expected, int32_t desired)
+    {
+        return _InterlockedCompareExchange(reinterpret_cast<volatile long*>(ptr), desired, expected);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS32 1
+    #if defined(_WIN64)
+    static inline int64_t
+    fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired)
+    {
+        return _InterlockedCompareExchange64(ptr, desired, expected);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS64 1
+    #endif
+    }}}
+
+#elif (defined(__ICC) || defined(__ECC))
+    namespace boost { namespace atomics { namespace detail {
+    static inline int32_t
+    fenced_compare_exchange_strong_32(int32_t *ptr, int32_t expected, int32_t desired)
+    {
+        return _InterlockedCompareExchange((void*)ptr, desired, expected);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS32 1
+    #if defined(__x86_64)
+    static inline int64_t
+    fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired)
+    {
+        return cas64<int>(ptr, expected, desired);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS64 1
+    #elif defined(__ECC)    //IA-64 version
+    static inline int64_t
+    fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired)
+    {
+        return _InterlockedCompareExchange64((void*)ptr, desired, expected);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS64 1
+    #endif
+    }}}
+
+#elif (defined(__SUNPRO_CC) && defined(__sparc))
+    #include <sys/atomic.h>
+    namespace boost { namespace atomics { namespace detail {
+    static inline int32_t
+    fenced_compare_exchange_strong_32(int32_t *ptr, int32_t expected, int32_t desired)
+    {
+        return atomic_cas_32((volatile unsigned int*)ptr, expected, desired);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS32 1
+
+    /* FIXME: check for 64 bit mode */
+    static inline int64_t
+    fenced_compare_exchange_strong_64(int64_t *ptr, int64_t expected, int64_t desired)
+    {
+        return atomic_cas_64((volatile unsigned long long*)ptr, expected, desired);
+    }
+    #define BOOST_ATOMIC_HAVE_CAS64 1
+    }}}
+#endif
+
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+#ifdef BOOST_ATOMIC_HAVE_CAS32
+template<typename T>
+class atomic_generic_cas32 {
+private:
+    typedef atomic_generic_cas32 this_type;
+public:
+    explicit atomic_generic_cas32(T v) : i((int32_t)v) {}
+    atomic_generic_cas32() {}
+    T load(memory_order order=memory_order_seq_cst) const volatile
+    {
+        T expected=(T)i;
+        do { } while(!const_cast<this_type *>(this)->compare_exchange_weak(expected, expected, order, memory_order_relaxed));
+        return expected;
+    }
+    void store(T v, memory_order order=memory_order_seq_cst) volatile
+    {
+        exchange(v);
+    }
+    bool compare_exchange_strong(
+        T &expected,
+        T desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        T found;
+        found=(T)fenced_compare_exchange_strong_32(&i, (int32_t)expected, (int32_t)desired);
+        bool success=(found==expected);
+        expected=found;
+        return success;
+    }
+    bool compare_exchange_weak(
+        T &expected,
+        T desired,
+        memory_order success_order,
+        memory_order failure_order) volatile
+    {
+        return compare_exchange_strong(expected, desired, success_order, failure_order);
+    }
+    T exchange(T r, memory_order order=memory_order_seq_cst) volatile
+    {
+        T expected=(T)i;
+        do { } while(!compare_exchange_weak(expected, r, order, memory_order_relaxed));
+        return expected;
+    }
+
+    bool is_lock_free(void) const volatile {return true;}
+    typedef T integral_type;
+private:
+    mutable int32_t i;
+};
+
+template<typename T>
+class platform_atomic_integral<T, 4> : public build_atomic_from_exchange<atomic_generic_cas32<T> > {
+public:
+    typedef build_atomic_from_exchange<atomic_generic_cas32<T> > super;
+    explicit platform_atomic_integral(T v) : super(v) {}
+    platform_atomic_integral(void) {}
+};
+
+template<typename T>
+class platform_atomic_integral<T, 1>: public build_atomic_from_larger_type<atomic_generic_cas32<int32_t>, T> {
+public:
+    typedef build_atomic_from_larger_type<atomic_generic_cas32<int32_t>, T> super;
+
+    explicit platform_atomic_integral(T v) : super(v) {}
+    platform_atomic_integral(void) {}
+};
+
+template<typename T>
+class platform_atomic_integral<T, 2>: public build_atomic_from_larger_type<atomic_generic_cas32<int32_t>, T> {
+public:
+    typedef build_atomic_from_larger_type<atomic_generic_cas32<int32_t>, T> super;
+
+    explicit platform_atomic_integral(T v) : super(v) {}
+    platform_atomic_integral(void) {}
+};
+#endif
+
+} } }
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/interlocked.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/interlocked.hpp
new file mode 100644
index 0000000..d5c5365
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/interlocked.hpp
@@ -0,0 +1,154 @@
+#ifndef BOOST_ATOMIC_DETAIL_INTERLOCKED_HPP
+#define BOOST_ATOMIC_DETAIL_INTERLOCKED_HPP
+
+//  Copyright (c) 2009 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/detail/interlocked.hpp>
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+static inline void
+x86_full_fence(void)
+{
+    long tmp;
+    BOOST_INTERLOCKED_EXCHANGE(&tmp, 0);
+}
+
+static inline void
+platform_fence_before(memory_order)
+{
+}
+
+static inline void
+platform_fence_after(memory_order)
+{
+}
+
+static inline void
+platform_fence_before_store(memory_order)
+{
+}
+
+static inline void
+platform_fence_after_store(memory_order order)
+{
+    if (order == memory_order_seq_cst)
+        x86_full_fence();
+}
+
+static inline void
+platform_fence_after_load(memory_order order)
+{
+    if (order == memory_order_seq_cst) {
+        x86_full_fence();
+    }
+}
+
+template<typename T>
+bool
+platform_cmpxchg32_strong(T & expected, T desired, volatile T * ptr)
+{
+    T prev = expected;
+    expected = (T)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long *)(ptr), (long)desired, (long)expected);
+    bool success = (prev==expected);
+    return success;
+}
+
+#if defined(_WIN64)
+template<typename T>
+bool
+platform_cmpxchg64_strong(T & expected, T desired, volatile T * ptr)
+{
+    T prev = expected;
+    expected = (T) _InterlockedCompareExchange64((long long *)(ptr), (long long)desired, (long long)expected);
+    bool success = (prev==expected);
+    return success;
+}
+
+template<typename T>
+void
+platform_store64(T value, volatile T * ptr)
+{
+    *ptr = value;
+}
+
+template<typename T>
+T
+platform_load64(volatile T * ptr)
+{
+    return *ptr;
+}
+#endif
+
+}
+}
+
+#define BOOST_ATOMIC_THREAD_FENCE 2
+static inline void
+atomic_thread_fence(memory_order order)
+{
+    if (order == memory_order_seq_cst) {
+        atomics::detail::x86_full_fence();
+    }
+}
+
+class atomic_flag {
+private:
+    atomic_flag(const atomic_flag &) /* = delete */ ;
+    atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
+    uint32_t v_;
+public:
+    atomic_flag(void) : v_(false) {}
+
+    void
+    clear(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before_store(order);
+        const_cast<volatile uint32_t &>(v_) = 0;
+        atomics::detail::platform_fence_after_store(order);
+    }
+
+    bool
+    test_and_set(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before(order);
+        uint32_t expected = v_;
+        do {
+            if (expected == 1)
+                break;
+        } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_));
+        atomics::detail::platform_fence_after(order);
+        return expected;
+    }
+};
+
+}
+
+#define BOOST_ATOMIC_FLAG_LOCK_FREE 2
+
+#include <boost/atomic/detail/base.hpp>
+
+#if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
+
+#define BOOST_ATOMIC_CHAR_LOCK_FREE 2
+#define BOOST_ATOMIC_SHORT_LOCK_FREE 2
+#define BOOST_ATOMIC_INT_LOCK_FREE 2
+#define BOOST_ATOMIC_LONG_LOCK_FREE 2
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 0
+#define BOOST_ATOMIC_POINTER_LOCK_FREE 2
+#define BOOST_ATOMIC_BOOL_LOCK_FREE 2
+
+#include <boost/atomic/detail/cas32strong.hpp>
+#if defined(_WIN64)
+#include <boost/atomic/detail/cas64strong.hpp>
+#endif
+
+#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/linux-arm.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/linux-arm.hpp
new file mode 100644
index 0000000..4ed6aad
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/linux-arm.hpp
@@ -0,0 +1,180 @@
+#ifndef BOOST_ATOMIC_DETAIL_LINUX_ARM_HPP
+#define BOOST_ATOMIC_DETAIL_LINUX_ARM_HPP
+
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+//
+//  Copyright (c) 2009, 2011 Helge Bahmann
+//  Copyright (c) 2009 Phil Endecott
+//  Linux-specific code by Phil Endecott
+
+// Different ARM processors have different atomic instructions.  In particular,
+// architecture versions before v6 (which are still in widespread use, e.g. the
+// Intel/Marvell XScale chips like the one in the NSLU2) have only atomic swap.
+// On Linux the kernel provides some support that lets us abstract away from
+// these differences: it provides emulated CAS and barrier functions at special
+// addresses that are garaunteed not to be interrupted by the kernel.  Using
+// this facility is slightly slower than inline assembler would be, but much
+// faster than a system call.
+//
+// While this emulated CAS is "strong" in the sense that it does not fail
+// "spuriously" (i.e.: it never fails to perform the exchange when the value
+// found equals the value expected), it does not return the found value on
+// failure. To satisfy the atomic API, compare_exchange_{weak|strong} must
+// return the found value on failure, and we have to manually load this value
+// after the emulated CAS reports failure. This in turn introduces a race
+// between the CAS failing (due to the "wrong" value being found) and subsequently
+// loading (which might turn up the "right" value). From an application's
+// point of view this looks like "spurious failure", and therefore the
+// emulated CAS is only good enough to provide compare_exchange_weak
+// semantics.
+
+#include <boost/memory_order.hpp>
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+static inline void
+arm_barrier(void)
+{
+    void (*kernel_dmb)(void) = (void (*)(void)) 0xffff0fa0;
+    kernel_dmb();
+}
+
+static inline void
+platform_fence_before(memory_order order)
+{
+    switch(order) {
+        case memory_order_release:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            arm_barrier();
+        case memory_order_consume:
+        default:;
+    }
+}
+
+static inline void
+platform_fence_after(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            arm_barrier();
+        default:;
+    }
+}
+
+static inline void
+platform_fence_before_store(memory_order order)
+{
+    platform_fence_before(order);
+}
+
+static inline void
+platform_fence_after_store(memory_order order)
+{
+    if (order == memory_order_seq_cst)
+        arm_barrier();
+}
+
+static inline void
+platform_fence_after_load(memory_order order)
+{
+    platform_fence_after(order);
+}
+
+template<typename T>
+bool
+platform_cmpxchg32(T & expected, T desired, volatile T * ptr)
+{
+    typedef T (*kernel_cmpxchg32_t)(T oldval, T newval, volatile T * ptr);
+
+    if (((kernel_cmpxchg32_t) 0xffff0fc0)(expected, desired, ptr) == 0) {
+        return true;
+    } else {
+        expected = *ptr;
+        return false;
+    }
+}
+
+}
+}
+
+#define BOOST_ATOMIC_THREAD_FENCE 2
+static inline void
+atomic_thread_fence(memory_order order)
+{
+    switch(order) {
+        case memory_order_acquire:
+        case memory_order_release:
+        case memory_order_acq_rel:
+        case memory_order_seq_cst:
+            atomics::detail::arm_barrier();
+        default:;
+    }
+}
+
+#define BOOST_ATOMIC_SIGNAL_FENCE 2
+static inline void
+atomic_signal_fence(memory_order)
+{
+    __asm__ __volatile__ ("" ::: "memory");
+}
+
+class atomic_flag {
+private:
+    atomic_flag(const atomic_flag &) /* = delete */ ;
+    atomic_flag & operator=(const atomic_flag &) /* = delete */ ;
+    uint32_t v_;
+public:
+    atomic_flag(void) : v_(false) {}
+
+    void
+    clear(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before_store(order);
+        const_cast<volatile uint32_t &>(v_) = 0;
+        atomics::detail::platform_fence_after_store(order);
+    }
+
+    bool
+    test_and_set(memory_order order = memory_order_seq_cst) volatile
+    {
+        atomics::detail::platform_fence_before(order);
+        uint32_t expected = v_;
+        do {
+            if (expected == 1)
+                break;
+        } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_));
+        atomics::detail::platform_fence_after(order);
+        return expected;
+    }
+};
+#define BOOST_ATOMIC_FLAG_LOCK_FREE 2
+
+}
+
+#include <boost/atomic/detail/base.hpp>
+
+#if !defined(BOOST_ATOMIC_FORCE_FALLBACK)
+
+#define BOOST_ATOMIC_CHAR_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2
+#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2
+#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2
+#define BOOST_ATOMIC_SHORT_LOCK_FREE 2
+#define BOOST_ATOMIC_INT_LOCK_FREE 2
+#define BOOST_ATOMIC_LONG_LOCK_FREE 2
+#define BOOST_ATOMIC_LLONG_LOCK_FREE 0
+#define BOOST_ATOMIC_POINTER_LOCK_FREE 2
+#define BOOST_ATOMIC_BOOL_LOCK_FREE 2
+
+#include <boost/atomic/detail/cas32weak.hpp>
+
+#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/lockpool.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/lockpool.hpp
new file mode 100644
index 0000000..d87a539
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/lockpool.hpp
@@ -0,0 +1,88 @@
+#ifndef BOOST_ATOMIC_DETAIL_LOCKPOOL_HPP
+#define BOOST_ATOMIC_DETAIL_LOCKPOOL_HPP
+
+//  Copyright (c) 2011 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+
+#ifndef BOOST_ATOMIC_FLAG_LOCK_FREE
+#include <boost/thread/mutex.hpp>
+#endif
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+#ifndef BOOST_ATOMIC_FLAG_LOCK_FREE
+
+class lockpool {
+public:
+    typedef mutex lock_type;
+    class scoped_lock {
+    private:
+        mutex::scoped_lock guard;
+    public:
+        explicit
+        scoped_lock(const volatile void * addr) : guard( lock_for(addr) )
+        {
+        }
+    };
+private:
+    static mutex pool_[41];
+
+    static mutex &
+    lock_for(const volatile void * addr)
+    {
+        std::size_t index = reinterpret_cast<std::size_t>(addr) % 41;
+        return pool_[index];
+    }
+};
+
+#else
+
+class lockpool {
+public:
+    typedef atomic_flag lock_type;
+
+    class scoped_lock {
+    private:
+        atomic_flag & flag_;
+
+        scoped_lock(const scoped_lock &) /* = delete */;
+        void operator=(const scoped_lock &) /* = delete */;
+
+    public:
+        explicit
+        scoped_lock(const volatile void * addr) : flag_( lock_for(addr) )
+        {
+            do {
+            } while (flag_.test_and_set(memory_order_acquire));
+        }
+
+        ~scoped_lock(void)
+        {
+            flag_.clear(memory_order_release);
+        }
+    };
+
+private:
+    static atomic_flag pool_[41];
+
+    static lock_type &
+    lock_for(const volatile void * addr)
+    {
+        std::size_t index = reinterpret_cast<std::size_t>(addr) % 41;
+        return pool_[index];
+    }
+};
+
+#endif
+
+}
+}
+}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/detail/type-classifier.hpp b/external_libraries/boost-lockfree/boost/atomic/detail/type-classifier.hpp
new file mode 100644
index 0000000..93fbe16
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/detail/type-classifier.hpp
@@ -0,0 +1,81 @@
+#ifndef BOOST_ATOMIC_DETAIL_TYPE_CLASSIFIER_HPP
+#define BOOST_ATOMIC_DETAIL_TYPE_CLASSIFIER_HPP
+
+//  Copyright (c) 2011 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+template<typename T>
+struct type_classifier {
+    typedef void test;
+};
+
+template<>
+struct type_classifier<char> {typedef int test;};
+template<>
+struct type_classifier<unsigned char> {typedef int test;};
+template<>
+struct type_classifier<signed char> {typedef int test;};
+template<>
+struct type_classifier<unsigned short> {typedef int test;};
+template<>
+struct type_classifier<signed short> {typedef int test;};
+template<>
+struct type_classifier<unsigned int> {typedef int test;};
+template<>
+struct type_classifier<signed int> {typedef int test;};
+template<>
+struct type_classifier<unsigned long> {typedef int test;};
+template<>
+struct type_classifier<long> {typedef int test;};
+#ifdef BOOST_HAS_LONG_LONG
+template<> struct type_classifier<unsigned long long>
+{typedef int test;};
+template<> struct type_classifier<signed long long>
+{typedef int test;};
+#endif
+
+template<typename T>
+struct type_classifier<T *> {typedef void * test;};
+
+template<typename T>
+struct sign_trait {
+    typedef void test;
+};
+
+template<>
+struct sign_trait<char> {typedef int test;};
+template<>
+struct sign_trait<unsigned char> {typedef unsigned int test;};
+template<>
+struct sign_trait<signed char> {typedef int test;};
+template<>
+struct sign_trait<unsigned short> {typedef unsigned int test;};
+template<>
+struct sign_trait<signed short> {typedef int test;};
+template<>
+struct sign_trait<unsigned int> {typedef unsigned int test;};
+template<>
+struct sign_trait<signed int> {typedef int test;};
+template<>
+struct sign_trait<unsigned long> {typedef unsigned int test;};
+template<>
+struct sign_trait<long> {typedef int test;};
+#ifdef BOOST_HAS_LONG_LONG
+template<> struct sign_trait<unsigned long long>
+{typedef unsigned int test;};
+template<> struct sign_trait<signed long long>
+{typedef int test;};
+#endif
+
+
+
+}}}
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/atomic/platform.hpp b/external_libraries/boost-lockfree/boost/atomic/platform.hpp
new file mode 100644
index 0000000..0c5df7f
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/atomic/platform.hpp
@@ -0,0 +1,53 @@
+//  Copyright (c) 2009 Helge Bahmann
+//
+//  Distributed under the Boost Software License, Version 1.0.
+//  See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+// Platform selection file
+
+#include <boost/config.hpp>
+
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+
+    #include <boost/atomic/detail/gcc-x86.hpp>
+
+#elif 0 && defined(__GNUC__) && defined(__alpha__) /* currently does not work correctly */
+
+    #include <boost/atomic/detail/base.hpp>
+    #include <boost/atomic/detail/gcc-alpha.hpp>
+
+#elif defined(__GNUC__) && (defined(__POWERPC__) || defined(__PPC__))
+
+    #include <boost/atomic/detail/gcc-ppc.hpp>
+
+// This list of ARM architecture versions comes from Apple's arm/arch.h header.
+// I don't know how complete it is.
+#elif defined(__GNUC__) && (defined(__ARM_ARCH_6__)  || defined(__ARM_ARCH_6J__) \
+                         || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \
+                         || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_7A__))
+
+    #include <boost/atomic/detail/gcc-armv6+.hpp>
+
+#elif defined(__linux__) && defined(__arm__)
+
+    #include <boost/atomic/detail/linux-arm.hpp>
+
+#elif defined(__GNUC__) && defined(__sparc_v9__)
+
+    #include <boost/atomic/detail/gcc-sparcv9.hpp>
+
+#elif defined(BOOST_USE_WINDOWS_H) || defined(_WIN32_CE) || defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+
+    #include <boost/atomic/detail/interlocked.hpp>
+
+#elif 0 && defined(__GNUC__) /* currently does not work correctly */
+
+    #include <boost/atomic/detail/base.hpp>
+    #include <boost/atomic/detail/gcc-cas.hpp>
+
+#else
+
+#include <boost/atomic/detail/base.hpp>
+
+#endif
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/atomic.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/atomic.hpp
new file mode 100644
index 0000000..b8c535a
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/atomic.hpp
@@ -0,0 +1,48 @@
+//  Copyright (C) 2011 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_DETAIL_ATOMIC_HPP
+#define BOOST_LOCKFREE_DETAIL_ATOMIC_HPP
+
+#include <boost/config.hpp>
+
+// at this time, neither gcc (4.7) not clang (3.2) completely implement atomic<>
+#define BOOST_LOCKFREE_NO_HDR_ATOMIC
+
+#if (__cplusplus < 201103L) || defined(BOOST_LOCKFREE_NO_HDR_ATOMIC)
+#include <boost/atomic.hpp>
+#else
+#include <atomic>
+#endif
+
+namespace boost {
+namespace lockfree {
+namespace detail {
+
+#if (__cplusplus < 201103L) || defined(BOOST_LOCKFREE_NO_HDR_ATOMIC)
+using boost::atomic;
+using boost::memory_order_acquire;
+using boost::memory_order_consume;
+using boost::memory_order_relaxed;
+using boost::memory_order_release;
+#else
+using std::atomic;
+using std::memory_order_acquire;
+using std::memory_order_consume;
+using std::memory_order_relaxed;
+using std::memory_order_release;
+#endif
+
+}
+using detail::atomic;
+using detail::memory_order_acquire;
+using detail::memory_order_consume;
+using detail::memory_order_relaxed;
+using detail::memory_order_release;
+
+}}
+
+#endif /* BOOST_LOCKFREE_DETAIL_ATOMIC_HPP */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/branch_hints.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/branch_hints.hpp
new file mode 100644
index 0000000..3a193f8
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/branch_hints.hpp
@@ -0,0 +1,38 @@
+//  branch hints
+//  Copyright (C) 2007, 2008 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_BRANCH_HINTS_HPP_INCLUDED
+#define BOOST_LOCKFREE_BRANCH_HINTS_HPP_INCLUDED
+
+namespace boost    {
+namespace lockfree {
+namespace detail   {
+/** \brief hint for the branch prediction */
+inline bool likely(bool expr)
+{
+#ifdef __GNUC__
+    return __builtin_expect(expr, true);
+#else
+    return expr;
+#endif
+    }
+
+/** \brief hint for the branch prediction */
+inline bool unlikely(bool expr)
+{
+#ifdef __GNUC__
+    return __builtin_expect(expr, false);
+#else
+    return expr;
+#endif
+}
+
+} /* namespace detail */
+} /* namespace lockfree */
+} /* namespace boost */
+
+#endif /* BOOST_LOCKFREE_BRANCH_HINTS_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/copy_payload.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/copy_payload.hpp
new file mode 100644
index 0000000..1e83eb2
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/copy_payload.hpp
@@ -0,0 +1,49 @@
+//  boost lockfree: copy_payload helper
+//
+//  Copyright (C) 2011 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_DETAIL_COPY_PAYLOAD_HPP_INCLUDED
+#define BOOST_LOCKFREE_DETAIL_COPY_PAYLOAD_HPP_INCLUDED
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+
+namespace boost    {
+namespace lockfree {
+namespace detail   {
+
+struct copy_convertible
+{
+    template <typename T, typename U>
+    static void copy(T & t, U & u)
+    {
+        u = t;
+    }
+};
+
+struct copy_constructible_and_copyable
+{
+    template <typename T, typename U>
+    static void copy(T & t, U & u)
+    {
+        u = U(t);
+    }
+};
+
+template <typename T, typename U>
+void copy_payload(T & t, U & u)
+{
+    typedef typename boost::mpl::if_<typename boost::is_convertible<T, U>::type,
+                                     copy_convertible,
+                                     copy_constructible_and_copyable
+                                    >::type copy_type;
+    copy_type::copy(t, u);
+}
+
+}}}
+
+#endif  /* BOOST_LOCKFREE_DETAIL_COPY_PAYLOAD_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/freelist.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/freelist.hpp
new file mode 100644
index 0000000..6976dae
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/freelist.hpp
@@ -0,0 +1,619 @@
+//  lock-free freelist
+//
+//  Copyright (C) 2008, 2009, 2011 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_FREELIST_HPP_INCLUDED
+#define BOOST_LOCKFREE_FREELIST_HPP_INCLUDED
+
+#include <memory>
+
+#include <boost/array.hpp>
+#include <boost/config.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/static_assert.hpp>
+
+#include <boost/lockfree/detail/atomic.hpp>
+#include <boost/lockfree/detail/parameter.hpp>
+#include <boost/lockfree/detail/tagged_ptr.hpp>
+
+namespace boost    {
+namespace lockfree {
+namespace detail   {
+
+template <typename T,
+          typename Alloc = std::allocator<T>
+         >
+class freelist_stack:
+    Alloc
+{
+    struct freelist_node
+    {
+        tagged_ptr<freelist_node> next;
+    };
+
+    typedef tagged_ptr<freelist_node> tagged_node_ptr;
+
+public:
+    typedef tagged_ptr<T> tagged_node_handle;
+
+    template <typename Allocator>
+    freelist_stack (Allocator const & alloc, std::size_t n = 0):
+        Alloc(alloc),
+        pool_(tagged_node_ptr(NULL))
+    {
+        for (std::size_t i = 0; i != n; ++i) {
+            T * node = Alloc::allocate(1);
+#ifdef BOOST_LOCKFREE_FREELIST_INIT_RUNS_DTOR
+            destruct<false>(node);
+#else
+            deallocate<false>(node);
+#endif
+        }
+    }
+
+    template <bool ThreadSafe>
+    void reserve (std::size_t count)
+    {
+        for (std::size_t i = 0; i != count; ++i) {
+            T * node = Alloc::allocate(1);
+            deallocate<ThreadSafe>(node);
+        }
+    }
+
+    template <bool ThreadSafe, bool Bounded>
+    T * construct (void)
+    {
+        T * node = allocate<ThreadSafe, Bounded>();
+        if (node)
+            new(node) T();
+        return node;
+    }
+
+    template <bool ThreadSafe, bool Bounded, typename ArgumentType>
+    T * construct (ArgumentType const & arg)
+    {
+        T * node = allocate<ThreadSafe, Bounded>();
+        if (node)
+            new(node) T(arg);
+        return node;
+    }
+
+    template <bool ThreadSafe, bool Bounded, typename ArgumentType1, typename ArgumentType2>
+    T * construct (ArgumentType1 const & arg1, ArgumentType2 const & arg2)
+    {
+        T * node = allocate<ThreadSafe, Bounded>();
+        if (node)
+            new(node) T(arg1, arg2);
+        return node;
+    }
+
+    template <bool ThreadSafe>
+    void destruct (tagged_node_handle tagged_ptr)
+    {
+        T * n = tagged_ptr.get_ptr();
+        n->~T();
+        deallocate<ThreadSafe>(n);
+    }
+
+    template <bool ThreadSafe>
+    void destruct (T * n)
+    {
+        n->~T();
+        deallocate<ThreadSafe>(n);
+    }
+
+    ~freelist_stack(void)
+    {
+        tagged_node_ptr current (pool_);
+
+        while (current) {
+            freelist_node * current_ptr = current.get_ptr();
+            if (current_ptr)
+                current = current_ptr->next;
+            Alloc::deallocate((T*)current_ptr, 1);
+        }
+    }
+
+    bool is_lock_free(void) const
+    {
+        return pool_.is_lock_free();
+    }
+
+    T * get_handle(T * pointer) const
+    {
+        return pointer;
+    }
+
+    T * get_handle(tagged_node_handle const & handle) const
+    {
+        return get_pointer(handle);
+    }
+
+    T * get_pointer(tagged_node_handle const & tptr) const
+    {
+        return tptr.get_ptr();
+    }
+
+    T * get_pointer(T * pointer) const
+    {
+        return pointer;
+    }
+
+    T * null_handle(void) const
+    {
+        return NULL;
+    }
+
+private:
+    template <bool ThreadSafe, bool Bounded>
+    T * allocate (void)
+    {
+        if (ThreadSafe)
+            return allocate_impl<Bounded>();
+        else
+            return allocate_impl_unsafe<Bounded>();
+    }
+
+    template <bool Bounded>
+    T * allocate_impl (void)
+    {
+        tagged_node_ptr old_pool = pool_.load(memory_order_consume);
+
+        for(;;) {
+            if (!old_pool.get_ptr()) {
+                if (!Bounded)
+                    return Alloc::allocate(1);
+                else
+                    return 0;
+            }
+
+            freelist_node * new_pool_ptr = old_pool->next.get_ptr();
+            tagged_node_ptr new_pool (new_pool_ptr, old_pool.get_tag() + 1);
+
+            if (pool_.compare_exchange_weak(old_pool, new_pool)) {
+                void * ptr = old_pool.get_ptr();
+                return reinterpret_cast<T*>(ptr);
+            }
+        }
+    }
+
+    template <bool Bounded>
+    T * allocate_impl_unsafe (void)
+    {
+        tagged_node_ptr old_pool = pool_.load(memory_order_relaxed);
+
+        if (!old_pool.get_ptr()) {
+            if (!Bounded)
+                return Alloc::allocate(1);
+            else
+                return 0;
+        }
+
+        freelist_node * new_pool_ptr = old_pool->next.get_ptr();
+        tagged_node_ptr new_pool (new_pool_ptr, old_pool.get_tag() + 1);
+
+        pool_.store(new_pool, memory_order_relaxed);
+        void * ptr = old_pool.get_ptr();
+        return reinterpret_cast<T*>(ptr);
+    }
+
+    template <bool ThreadSafe>
+    void deallocate (T * n)
+    {
+        if (ThreadSafe)
+            deallocate_impl(n);
+        else
+            deallocate_impl_unsafe(n);
+    }
+
+    void deallocate_impl (T * n)
+    {
+        void * node = n;
+        tagged_node_ptr old_pool = pool_.load(memory_order_consume);
+        freelist_node * new_pool_ptr = reinterpret_cast<freelist_node*>(node);
+
+        for(;;) {
+            tagged_node_ptr new_pool (new_pool_ptr, old_pool.get_tag());
+            new_pool->next.set_ptr(old_pool.get_ptr());
+
+            if (pool_.compare_exchange_weak(old_pool, new_pool))
+                return;
+        }
+    }
+
+    void deallocate_impl_unsafe (T * n)
+    {
+        void * node = n;
+        tagged_node_ptr old_pool = pool_.load(memory_order_relaxed);
+        freelist_node * new_pool_ptr = reinterpret_cast<freelist_node*>(node);
+
+        tagged_node_ptr new_pool (new_pool_ptr, old_pool.get_tag());
+        new_pool->next.set_ptr(old_pool.get_ptr());
+
+        pool_.store(new_pool, memory_order_relaxed);
+    }
+
+    atomic<tagged_node_ptr> pool_;
+};
+
+class tagged_index
+{
+public:
+    typedef boost::uint16_t tag_t;
+    typedef boost::uint16_t index_t;
+
+    /** uninitialized constructor */
+    tagged_index(void) BOOST_NOEXCEPT //: index(0), tag(0)
+    {}
+
+    /** copy constructor */
+#ifdef BOOST_NO_DEFAULTED_FUNCTIONS
+    tagged_index(tagged_index const & rhs):
+        index(rhs.index), tag(rhs.tag)
+    {}
+#else
+    tagged_index(tagged_index const & rhs) = default;
+#endif
+
+    explicit tagged_index(index_t i, tag_t t = 0):
+        index(i), tag(t)
+    {}
+
+    /** index access */
+    /* @{ */
+    index_t get_index() const
+    {
+        return index;
+    }
+
+    void set_index(index_t i)
+    {
+        index = i;
+    }
+    /* @} */
+
+    /** tag access */
+    /* @{ */
+    tag_t get_tag() const
+    {
+        return tag;
+    }
+
+    void set_tag(tag_t t)
+    {
+        tag = t;
+    }
+    /* @} */
+
+    bool operator==(tagged_index const & rhs) const
+    {
+        return (index == rhs.index) && (tag == rhs.tag);
+    }
+
+protected:
+    index_t index;
+    tag_t tag;
+};
+
+template <typename T,
+          std::size_t size>
+struct compiletime_sized_freelist_storage
+{
+    // array-based freelists only support a 16bit address space.
+    BOOST_STATIC_ASSERT(size < 65536);
+
+    boost::array<char, size * sizeof(T)> data;
+
+    // unused ... only for API purposes
+    template <typename Allocator>
+    compiletime_sized_freelist_storage(Allocator const & alloc, std::size_t count)
+    {}
+
+    T * nodes(void) const
+    {
+        return reinterpret_cast<T*>(const_cast<char*>(data.data()));
+    }
+
+    std::size_t node_count(void) const
+    {
+        return size;
+    }
+};
+
+template <typename T,
+          typename Alloc = std::allocator<T> >
+struct runtime_sized_freelist_storage:
+    Alloc
+{
+    T * nodes_;
+    std::size_t node_count_;
+
+    template <typename Allocator>
+    runtime_sized_freelist_storage(Allocator const & alloc, std::size_t count):
+        Alloc(alloc), node_count_(count)
+    {
+        if (count > 65535)
+            boost::throw_exception(std::runtime_error("boost.lockfree: freelist size is limited to a maximum of 65535 objects"));
+        nodes_ = Alloc::allocate(count);
+    }
+
+    ~runtime_sized_freelist_storage(void)
+    {
+        Alloc::deallocate(nodes_, node_count_);
+    }
+
+    T * nodes(void) const
+    {
+        return nodes_;
+    }
+
+    std::size_t node_count(void) const
+    {
+        return node_count_;
+    }
+};
+
+
+template <typename T,
+          typename NodeStorage = runtime_sized_freelist_storage<T>
+         >
+class fixed_size_freelist:
+    NodeStorage
+{
+    struct freelist_node
+    {
+        tagged_index next;
+    };
+
+    typedef tagged_index::index_t index_t;
+
+    void initialize(void)
+    {
+        T * nodes = NodeStorage::nodes();
+        for (std::size_t i = 0; i != NodeStorage::node_count(); ++i) {
+            tagged_index * next_index = reinterpret_cast<tagged_index*>(nodes + i);
+            next_index->set_index(null_handle());
+
+#ifdef BOOST_LOCKFREE_FREELIST_INIT_RUNS_DTOR
+            destruct<false>(nodes + i);
+#else
+            deallocate<false>(i);
+#endif
+        }
+    }
+
+public:
+    typedef tagged_index tagged_node_handle;
+
+    template <typename Allocator>
+    fixed_size_freelist (Allocator const & alloc, std::size_t count):
+        NodeStorage(alloc, count), pool_(tagged_index(count, 0))
+    {
+        initialize();
+    }
+
+    fixed_size_freelist (void):
+        pool_(tagged_index(NodeStorage::node_count(), 0))
+    {
+        initialize();
+    }
+
+    template <bool ThreadSafe, bool Bounded>
+    T * construct (void)
+    {
+        index_t node_index = allocate<ThreadSafe>();
+        if (node_index == null_handle())
+            return NULL;
+
+        T * node = NodeStorage::nodes() + node_index;
+        new(node) T();
+        return node;
+    }
+
+    template <bool ThreadSafe, bool Bounded, typename ArgumentType>
+    T * construct (ArgumentType const & arg)
+    {
+        index_t node_index = allocate<ThreadSafe>();
+        if (node_index == null_handle())
+            return NULL;
+
+        T * node = NodeStorage::nodes() + node_index;
+        new(node) T(arg);
+        return node;
+    }
+
+    template <bool ThreadSafe, bool Bounded, typename ArgumentType1, typename ArgumentType2>
+    T * construct (ArgumentType1 const & arg1, ArgumentType2 const & arg2)
+    {
+        index_t node_index = allocate<ThreadSafe>();
+        if (node_index == null_handle())
+            return NULL;
+
+        T * node = NodeStorage::nodes() + node_index;
+        new(node) T(arg1, arg2);
+        return node;
+    }
+
+    template <bool ThreadSafe>
+    void destruct (tagged_node_handle tagged_index)
+    {
+        index_t index = tagged_index.get_index();
+        T * n = NodeStorage::nodes() + index;
+        n->~T();
+        deallocate<ThreadSafe>(index);
+    }
+
+    template <bool ThreadSafe>
+    void destruct (T * n)
+    {
+        n->~T();
+        deallocate<ThreadSafe>(n - NodeStorage::nodes());
+    }
+
+    bool is_lock_free(void) const
+    {
+        return pool_.is_lock_free();
+    }
+
+    index_t null_handle(void) const
+    {
+        return NodeStorage::node_count();
+    }
+
+    index_t get_handle(T * pointer) const
+    {
+        if (pointer == NULL)
+            return null_handle();
+        else
+            return pointer - NodeStorage::nodes();
+    }
+
+    index_t get_handle(tagged_node_handle const & handle) const
+    {
+        return handle.get_index();
+    }
+
+    T * get_pointer(tagged_node_handle const & tptr) const
+    {
+        return get_pointer(tptr.get_index());
+    }
+
+    T * get_pointer(index_t index) const
+    {
+        if (index == null_handle())
+            return 0;
+        else
+            return NodeStorage::nodes() + index;
+    }
+
+    T * get_pointer(T * ptr) const
+    {
+        return ptr;
+    }
+
+private:
+    template <bool ThreadSafe>
+    index_t allocate (void)
+    {
+        if (ThreadSafe)
+            return allocate_impl();
+        else
+            return allocate_impl_unsafe();
+    }
+
+    index_t allocate_impl (void)
+    {
+        tagged_index old_pool = pool_.load(memory_order_consume);
+
+        for(;;) {
+            index_t index = old_pool.get_index();
+            if (index == null_handle())
+                return index;
+
+            T * old_node = NodeStorage::nodes() + index;
+            tagged_index * next_index = reinterpret_cast<tagged_index*>(old_node);
+
+            tagged_index new_pool(next_index->get_index(), old_pool.get_tag() + 1);
+
+            if (pool_.compare_exchange_weak(old_pool, new_pool))
+                return old_pool.get_index();
+        }
+    }
+
+    index_t allocate_impl_unsafe (void)
+    {
+        tagged_index old_pool = pool_.load(memory_order_consume);
+
+        index_t index = old_pool.get_index();
+        if (index == null_handle())
+            return index;
+
+        T * old_node = NodeStorage::nodes() + index;
+        tagged_index * next_index = reinterpret_cast<tagged_index*>(old_node);
+
+        tagged_index new_pool(next_index->get_index(), old_pool.get_tag() + 1);
+
+        pool_.store(new_pool, memory_order_relaxed);
+        return old_pool.get_index();
+    }
+
+    template <bool ThreadSafe>
+    void deallocate (index_t index)
+    {
+        if (ThreadSafe)
+            deallocate_impl(index);
+        else
+            deallocate_impl_unsafe(index);
+    }
+
+    void deallocate_impl (index_t index)
+    {
+        freelist_node * new_pool_node = reinterpret_cast<freelist_node*>(NodeStorage::nodes() + index);
+        tagged_index old_pool = pool_.load(memory_order_consume);
+
+        for(;;) {
+            tagged_index new_pool (index, old_pool.get_tag());
+            new_pool_node->next.set_index(old_pool.get_index());
+
+            if (pool_.compare_exchange_weak(old_pool, new_pool))
+                return;
+        }
+    }
+
+    void deallocate_impl_unsafe (index_t index)
+    {
+        freelist_node * new_pool_node = reinterpret_cast<freelist_node*>(NodeStorage::nodes() + index);
+        tagged_index old_pool = pool_.load(memory_order_consume);
+
+        tagged_index new_pool (index, old_pool.get_tag());
+        new_pool_node->next.set_index(old_pool.get_index());
+
+        pool_.store(new_pool);
+    }
+
+    atomic<tagged_index> pool_;
+};
+
+template <typename T,
+          typename Alloc,
+          bool IsCompileTimeSized,
+          bool IsFixedSize,
+          std::size_t Capacity
+          >
+struct select_freelist
+{
+    typedef typename mpl::if_c<IsCompileTimeSized,
+                               compiletime_sized_freelist_storage<T, Capacity>,
+                               runtime_sized_freelist_storage<T, Alloc>
+                              >::type fixed_sized_storage_type;
+
+    typedef typename mpl::if_c<IsCompileTimeSized || IsFixedSize,
+                               fixed_size_freelist<T, fixed_sized_storage_type>,
+                               freelist_stack<T, Alloc>
+                              >::type type;
+};
+
+template <typename T, bool IsNodeBased>
+struct select_tagged_handle
+{
+    typedef typename mpl::if_c<IsNodeBased,
+                               tagged_ptr<T>,
+                               tagged_index
+                              >::type tagged_handle_type;
+
+    typedef typename mpl::if_c<IsNodeBased,
+                               T*,
+                               typename tagged_index::index_t
+                              >::type handle_type;
+};
+
+
+} /* namespace detail */
+} /* namespace lockfree */
+} /* namespace boost */
+
+#endif /* BOOST_LOCKFREE_FREELIST_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/parameter.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/parameter.hpp
new file mode 100644
index 0000000..cb2be45
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/parameter.hpp
@@ -0,0 +1,74 @@
+// boost lockfree
+//
+// Copyright (C) 2011 Tim Blechmann
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_DETAIL_PARAMETER_HPP
+#define BOOST_LOCKFREE_DETAIL_PARAMETER_HPP
+
+#include <boost/lockfree/policies.hpp>
+#include <boost/integer_traits.hpp>
+
+namespace boost {
+namespace lockfree {
+namespace detail {
+
+namespace mpl = boost::mpl;
+
+template <typename bound_args, typename tag_type>
+struct has_arg
+{
+    typedef typename parameter::binding<bound_args, tag_type, mpl::void_>::type type;
+    static const bool value = mpl::is_not_void_<type>::type::value;
+};
+
+
+template <typename bound_args>
+struct extract_capacity
+{
+    static const bool has_capacity = has_arg<bound_args, tag::capacity>::value;
+
+    typedef typename mpl::if_c<has_capacity,
+                               typename has_arg<bound_args, tag::capacity>::type,
+                               mpl::size_t< boost::integer_traits<size_t>::const_max >
+                              >::type capacity_t;
+
+    static const std::size_t capacity = capacity_t::value;
+};
+
+
+template <typename bound_args, typename T>
+struct extract_allocator
+{
+    static const bool has_allocator = has_arg<bound_args, tag::allocator>::value;
+
+    typedef typename mpl::if_c<has_allocator,
+                               typename has_arg<bound_args, tag::allocator>::type,
+                               std::allocator<T>
+                              >::type allocator_arg;
+
+    typedef typename allocator_arg::template rebind<T>::other type;
+};
+
+template <typename bound_args, bool default_ = false>
+struct extract_fixed_sized
+{
+    static const bool has_fixed_sized = has_arg<bound_args, tag::fixed_sized>::value;
+
+    typedef typename mpl::if_c<has_fixed_sized,
+                               typename has_arg<bound_args, tag::fixed_sized>::type,
+                               mpl::bool_<default_>
+                              >::type type;
+
+    static const bool value = type::value;
+};
+
+
+} /* namespace detail */
+} /* namespace lockfree */
+} /* namespace boost */
+
+#endif /* BOOST_LOCKFREE_DETAIL_PARAMETER_HPP */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/prefix.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/prefix.hpp
new file mode 100644
index 0000000..6ed9446
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/prefix.hpp
@@ -0,0 +1,56 @@
+//  Copyright (C) 2009 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_PREFIX_HPP_INCLUDED
+#define BOOST_LOCKFREE_PREFIX_HPP_INCLUDED
+
+/* this file defines the following macros:
+   BOOST_LOCKFREE_CACHELINE_BYTES: size of a cache line
+   BOOST_LOCKFREE_PTR_COMPRESSION: use tag/pointer compression to utilize parts
+                                   of the virtual address space as tag (at least 16bit)
+   BOOST_LOCKFREE_DCAS_ALIGNMENT:  symbol used for aligning structs at cache line
+                                   boundaries
+*/
+
+#define BOOST_LOCKFREE_CACHELINE_BYTES 64
+
+#ifdef _MSC_VER
+
+#define BOOST_LOCKFREE_CACHELINE_ALIGNMENT __declspec(align(BOOST_LOCKFREE_CACHELINE_BYTES))
+
+#if defined(_M_IX86)
+    #define BOOST_LOCKFREE_DCAS_ALIGNMENT
+#elif defined(_M_X64) || defined(_M_IA64)
+    #define BOOST_LOCKFREE_PTR_COMPRESSION 1
+    #define BOOST_LOCKFREE_DCAS_ALIGNMENT __declspec(align(16))
+#endif
+
+#endif /* _MSC_VER */
+
+#ifdef __GNUC__
+
+#define BOOST_LOCKFREE_CACHELINE_ALIGNMENT __attribute__((aligned(BOOST_LOCKFREE_CACHELINE_BYTES)))
+
+#if defined(__i386__) || defined(__ppc__)
+    #define BOOST_LOCKFREE_DCAS_ALIGNMENT
+#elif defined(__x86_64__)
+    #define BOOST_LOCKFREE_PTR_COMPRESSION 1
+    #define BOOST_LOCKFREE_DCAS_ALIGNMENT __attribute__((aligned(16)))
+#elif defined(__alpha__)
+    // LATER: alpha may benefit from pointer compression. but what is the maximum size of the address space?
+    #define BOOST_LOCKFREE_DCAS_ALIGNMENT
+#endif
+#endif /* __GNUC__ */
+
+#ifndef BOOST_LOCKFREE_DCAS_ALIGNMENT
+#define BOOST_LOCKFREE_DCAS_ALIGNMENT /*BOOST_LOCKFREE_DCAS_ALIGNMENT*/
+#endif
+
+#ifndef BOOST_LOCKFREE_CACHELINE_ALIGNMENT
+#define BOOST_LOCKFREE_CACHELINE_ALIGNMENT /*BOOST_LOCKFREE_CACHELINE_ALIGNMENT*/
+#endif
+
+#endif /* BOOST_LOCKFREE_PREFIX_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr.hpp
new file mode 100644
index 0000000..f70a2c7
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr.hpp
@@ -0,0 +1,21 @@
+//  tagged pointer, for aba prevention
+//
+//  Copyright (C) 2008 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_TAGGED_PTR_HPP_INCLUDED
+#define BOOST_LOCKFREE_TAGGED_PTR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/lockfree/detail/prefix.hpp>
+
+#ifndef BOOST_LOCKFREE_PTR_COMPRESSION
+#include <boost/lockfree/detail/tagged_ptr_dcas.hpp>
+#else
+#include <boost/lockfree/detail/tagged_ptr_ptrcompression.hpp>
+#endif
+
+#endif /* BOOST_LOCKFREE_TAGGED_PTR_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr_dcas.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr_dcas.hpp
new file mode 100644
index 0000000..0158029
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr_dcas.hpp
@@ -0,0 +1,127 @@
+//  tagged pointer, for aba prevention
+//
+//  Copyright (C) 2008 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_TAGGED_PTR_DCAS_HPP_INCLUDED
+#define BOOST_LOCKFREE_TAGGED_PTR_DCAS_HPP_INCLUDED
+
+#include <boost/lockfree/detail/branch_hints.hpp>
+
+#include <cstddef>              /* for std::size_t */
+
+namespace boost {
+namespace lockfree {
+namespace detail {
+
+template <class T>
+class BOOST_LOCKFREE_DCAS_ALIGNMENT tagged_ptr
+{
+public:
+    typedef std::size_t tag_t;
+
+    /** uninitialized constructor */
+    tagged_ptr(void) BOOST_NOEXCEPT//: ptr(0), tag(0)
+    {}
+
+#ifdef BOOST_NO_DEFAULTED_FUNCTIONS
+    tagged_ptr(tagged_ptr const & p):
+        ptr(p.ptr), tag(p.tag)
+    {}
+#else
+    tagged_ptr(tagged_ptr const & p) = default;
+#endif
+
+    explicit tagged_ptr(T * p, tag_t t = 0):
+        ptr(p), tag(t)
+    {}
+
+    /** unsafe set operation */
+    /* @{ */
+#ifdef BOOST_NO_DEFAULTED_FUNCTIONS
+    tagged_ptr & operator= (tagged_ptr const & p)
+    {
+        set(p.ptr, p.tag);
+        return *this;
+    }
+#else
+    tagged_ptr & operator= (tagged_ptr const & p) = default;
+#endif
+
+    void set(T * p, tag_t t)
+    {
+        ptr = p;
+        tag = t;
+    }
+    /* @} */
+
+    /** comparing semantics */
+    /* @{ */
+    bool operator== (volatile tagged_ptr const & p) const
+    {
+        return (ptr == p.ptr) && (tag == p.tag);
+    }
+
+    bool operator!= (volatile tagged_ptr const & p) const
+    {
+        return !operator==(p);
+    }
+    /* @} */
+
+    /** pointer access */
+    /* @{ */
+    T * get_ptr(void) const volatile
+    {
+        return ptr;
+    }
+
+    void set_ptr(T * p) volatile
+    {
+        ptr = p;
+    }
+    /* @} */
+
+    /** tag access */
+    /* @{ */
+    tag_t get_tag() const volatile
+    {
+        return tag;
+    }
+
+    void set_tag(tag_t t) volatile
+    {
+        tag = t;
+    }
+    /* @} */
+
+    /** smart pointer support  */
+    /* @{ */
+    T & operator*() const
+    {
+        return *ptr;
+    }
+
+    T * operator->() const
+    {
+        return ptr;
+    }
+
+    operator bool(void) const
+    {
+        return ptr != 0;
+    }
+    /* @} */
+
+protected:
+    T * ptr;
+    tag_t tag;
+};
+
+} /* namespace detail */
+} /* namespace lockfree */
+} /* namespace boost */
+
+#endif /* BOOST_LOCKFREE_TAGGED_PTR_DCAS_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp b/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp
new file mode 100644
index 0000000..a9f860e
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp
@@ -0,0 +1,166 @@
+//  tagged pointer, for aba prevention
+//
+//  Copyright (C) 2008, 2009 Tim Blechmann, based on code by Cory Nelson
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_TAGGED_PTR_PTRCOMPRESSION_HPP_INCLUDED
+#define BOOST_LOCKFREE_TAGGED_PTR_PTRCOMPRESSION_HPP_INCLUDED
+
+#include <boost/lockfree/detail/branch_hints.hpp>
+
+#include <cstddef>              /* for std::size_t */
+
+#include <boost/cstdint.hpp>
+
+namespace boost {
+namespace lockfree {
+namespace detail {
+
+#if defined (__x86_64__) || defined (_M_X64)
+
+template <class T>
+class tagged_ptr
+{
+    typedef boost::uint64_t compressed_ptr_t;
+    typedef boost::uint16_t tag_t;
+
+private:
+    union cast_unit
+    {
+        compressed_ptr_t value;
+        tag_t tag[4];
+    };
+
+    static const int tag_index = 3;
+    static const compressed_ptr_t ptr_mask = 0xffffffffffffUL; //(1L<<48L)-1;
+
+    static T* extract_ptr(volatile compressed_ptr_t const & i)
+    {
+        return (T*)(i & ptr_mask);
+    }
+
+    static tag_t extract_tag(volatile compressed_ptr_t const & i)
+    {
+        cast_unit cu;
+        cu.value = i;
+        return cu.tag[tag_index];
+    }
+
+    static compressed_ptr_t pack_ptr(T * ptr, int tag)
+    {
+        cast_unit ret;
+        ret.value = compressed_ptr_t(ptr);
+        ret.tag[tag_index] = tag;
+        return ret.value;
+    }
+
+public:
+    /** uninitialized constructor */
+    tagged_ptr(void) BOOST_NOEXCEPT//: ptr(0), tag(0)
+    {}
+
+    /** copy constructor */
+#ifdef BOOST_NO_DEFAULTED_FUNCTIONS
+    tagged_ptr(tagged_ptr const & p):
+        ptr(p.ptr)
+    {}
+#else
+    tagged_ptr(tagged_ptr const & p) = default;
+#endif
+
+    explicit tagged_ptr(T * p, tag_t t = 0):
+        ptr(pack_ptr(p, t))
+    {}
+
+    /** unsafe set operation */
+    /* @{ */
+#ifdef BOOST_NO_DEFAULTED_FUNCTIONS
+    tagged_ptr & operator= (tagged_ptr const & p)
+    {
+         ptr = p.ptr;
+         return *this;
+    }
+#else
+    tagged_ptr & operator= (tagged_ptr const & p) = default;
+#endif
+
+    void set(T * p, tag_t t)
+    {
+        ptr = pack_ptr(p, t);
+    }
+    /* @} */
+
+    /** comparing semantics */
+    /* @{ */
+    bool operator== (volatile tagged_ptr const & p) const
+    {
+        return (ptr == p.ptr);
+    }
+
+    bool operator!= (volatile tagged_ptr const & p) const
+    {
+        return !operator==(p);
+    }
+    /* @} */
+
+    /** pointer access */
+    /* @{ */
+    T * get_ptr() const volatile
+    {
+        return extract_ptr(ptr);
+    }
+
+    void set_ptr(T * p) volatile
+    {
+        tag_t tag = get_tag();
+        ptr = pack_ptr(p, tag);
+    }
+    /* @} */
+
+    /** tag access */
+    /* @{ */
+    tag_t get_tag() const volatile
+    {
+        return extract_tag(ptr);
+    }
+
+    void set_tag(tag_t t) volatile
+    {
+        T * p = get_ptr();
+        ptr = pack_ptr(p, t);
+    }
+    /* @} */
+
+    /** smart pointer support  */
+    /* @{ */
+    T & operator*() const
+    {
+        return *get_ptr();
+    }
+
+    T * operator->() const
+    {
+        return get_ptr();
+    }
+
+    operator bool(void) const
+    {
+        return get_ptr() != 0;
+    }
+    /* @} */
+
+protected:
+    compressed_ptr_t ptr;
+};
+#else
+#error unsupported platform
+#endif
+
+} /* namespace detail */
+} /* namespace lockfree */
+} /* namespace boost */
+
+#endif /* BOOST_LOCKFREE_TAGGED_PTR_PTRCOMPRESSION_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/policies.hpp b/external_libraries/boost-lockfree/boost/lockfree/policies.hpp
new file mode 100644
index 0000000..cec9b57
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/policies.hpp
@@ -0,0 +1,59 @@
+// boost lockfree
+//
+// Copyright (C) 2011 Tim Blechmann
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_POLICIES_HPP_INCLUDED
+#define BOOST_LOCKFREE_POLICIES_HPP_INCLUDED
+
+#include <boost/parameter.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/size_t.hpp>
+#include <boost/mpl/void.hpp>
+
+namespace boost {
+namespace lockfree {
+
+#ifndef BOOST_DOXYGEN_INVOKED
+namespace tag { struct allocator ; }
+namespace tag { struct fixed_sized; }
+namespace tag { struct capacity; }
+
+#endif
+
+/** Configures a data structure as \b fixed-sized.
+ *
+ *  The internal nodes are stored inside an array and they are addressed by array indexing. This limits the possible size of the
+ *  queue to the number of elements that can be addressed by the index type (usually 2**16-2), but on platforms that lack
+ *  double-width compare-and-exchange instructions, this is the best way to achieve lock-freedom.
+ *  This implies that a data structure is bounded.
+ * */
+template <bool IsFixedSized>
+struct fixed_sized:
+    boost::parameter::template_keyword<tag::fixed_sized, boost::mpl::bool_<IsFixedSized> >
+{};
+
+/** Sets the \b capacity of a data structure at compile-time.
+ *
+ * This implies that a data structure is bounded and fixed-sized.
+ * */
+template <size_t Size>
+struct capacity:
+    boost::parameter::template_keyword<tag::capacity, boost::mpl::size_t<Size> >
+{};
+
+/** Defines the \b allocator type of a data structure.
+ * */
+template <class Alloc>
+struct allocator:
+    boost::parameter::template_keyword<tag::allocator, Alloc>
+{};
+
+}
+}
+
+#endif /* BOOST_LOCKFREE_POLICIES_HPP_INCLUDED */
+
diff --git a/external_libraries/boost-lockfree/boost/lockfree/queue.hpp b/external_libraries/boost-lockfree/boost/lockfree/queue.hpp
new file mode 100644
index 0000000..ec9e4ee
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/queue.hpp
@@ -0,0 +1,466 @@
+//  lock-free queue queue from
+//  Michael, M. M. and Scott, M. L.,
+//  "simple, fast and practical non-blocking and blocking concurrent queue algorithms"
+//
+//  Copyright (C) 2008, 2009, 2010, 2011 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_FIFO_HPP_INCLUDED
+#define BOOST_LOCKFREE_FIFO_HPP_INCLUDED
+
+#include <memory>               /* std::auto_ptr */
+
+#include <boost/noncopyable.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/has_trivial_assign.hpp>
+#include <boost/type_traits/has_trivial_destructor.hpp>
+
+#include <boost/lockfree/detail/atomic.hpp>
+#include <boost/lockfree/detail/copy_payload.hpp>
+#include <boost/lockfree/detail/freelist.hpp>
+#include <boost/lockfree/detail/parameter.hpp>
+#include <boost/lockfree/detail/tagged_ptr.hpp>
+
+namespace boost    {
+namespace lockfree {
+namespace detail   {
+
+typedef parameter::parameters<boost::parameter::optional<tag::allocator>,
+                              boost::parameter::optional<tag::capacity>
+                             > queue_signature;
+
+} /* namespace detail */
+
+
+/** The queue class provides a multi-writer/multi-reader queue, pushing and popping is lock-free,
+ *  construction/destruction has to be synchronized. It uses a freelist for memory management,
+ *  freed nodes are pushed to the freelist and not returned to the OS before the queue is destroyed.
+ *
+ *  \b Policies:
+ *  - \ref boost::lockfree::fixed_sized, defaults to \c boost::lockfree::fixed_sized<false> \n
+ *    Can be used to completely disable dynamic memory allocations during push in order to ensure lockfree behavior. \n
+ *    If the data structure is configured as fixed-sized, the internal nodes are stored inside an array and they are addressed
+ *    by array indexing. This limits the possible size of the queue to the number of elements that can be addressed by the index
+ *    type (usually 2**16-2), but on platforms that lack double-width compare-and-exchange instructions, this is the best way
+ *    to achieve lock-freedom.
+ *
+ *  - \ref boost::lockfree::capacity, optional \n
+ *    If this template argument is passed to the options, the size of the queue is set at compile-time.\n
+ *    It this option implies \c fixed_sized<true>
+ *
+ *  - \ref boost::lockfree::allocator, defaults to \c boost::lockfree::allocator<std::allocator<void>> \n
+ *    Specifies the allocator that is used for the internal freelist
+ *
+ *  \b Requirements:
+ *   - T must have a copy constructor
+ *   - T must have a trivial assignment operator
+ *   - T must have a trivial destructor
+ *
+ * */
+#ifndef BOOST_DOXYGEN_INVOKED
+template <typename T,
+          class A0 = boost::parameter::void_,
+          class A1 = boost::parameter::void_,
+          class A2 = boost::parameter::void_>
+#else
+template <typename T, ...Options>
+#endif
+class queue:
+    boost::noncopyable
+{
+private:
+#ifndef BOOST_DOXYGEN_INVOKED
+    typedef typename detail::queue_signature::bind<A0, A1, A2>::type bound_args;
+
+    static const bool has_capacity = detail::extract_capacity<bound_args>::has_capacity;
+    static const size_t capacity = detail::extract_capacity<bound_args>::capacity;
+    static const bool fixed_sized = detail::extract_fixed_sized<bound_args>::value;
+    static const bool node_based = !(has_capacity || fixed_sized);
+    static const bool compile_time_sized = has_capacity;
+
+    struct BOOST_LOCKFREE_CACHELINE_ALIGNMENT node
+    {
+        typedef typename detail::select_tagged_handle<node, node_based>::tagged_handle_type tagged_node_handle;
+        typedef typename detail::select_tagged_handle<node, node_based>::handle_type handle_type;
+
+        node(T const & v, handle_type null_handle):
+            data(v)//, next(tagged_node_handle(0, 0))
+        {
+            /* increment tag to avoid ABA problem */
+            tagged_node_handle old_next = next.load(memory_order_relaxed);
+            tagged_node_handle new_next (null_handle, old_next.get_tag()+1);
+            next.store(new_next, memory_order_release);
+        }
+
+        node (handle_type null_handle):
+            next(tagged_node_handle(null_handle, 0))
+        {}
+
+        node(void)
+        {}
+
+        atomic<tagged_node_handle> next;
+        T data;
+    };
+
+    typedef typename detail::extract_allocator<bound_args, node>::type node_allocator;
+    typedef typename detail::select_freelist<node, node_allocator, compile_time_sized, fixed_sized, capacity>::type pool_t;
+    typedef typename pool_t::tagged_node_handle tagged_node_handle;
+    typedef typename detail::select_tagged_handle<node, node_based>::handle_type handle_type;
+
+    void initialize(void)
+    {
+        node * n = pool.template construct<true, false>(pool.null_handle());
+        tagged_node_handle dummy_node(pool.get_handle(n), 0);
+        head_.store(dummy_node, memory_order_relaxed);
+        tail_.store(dummy_node, memory_order_release);
+    }
+
+    struct implementation_defined
+    {
+        typedef node_allocator allocator;
+        typedef std::size_t size_type;
+    };
+
+#endif
+
+public:
+    typedef T value_type;
+    typedef typename implementation_defined::allocator allocator;
+    typedef typename implementation_defined::size_type size_type;
+
+    /**
+     * \return true, if implementation is lock-free.
+     *
+     * \warning It only checks, if the queue head and tail nodes and the freelist can be modified in a lock-free manner.
+     *       On most platforms, the whole implementation is lock-free, if this is true. Using c++0x-style atomics, there is
+     *       no possibility to provide a completely accurate implementation, because one would need to test every internal
+     *       node, which is impossible if further nodes will be allocated from the operating system.
+     * */
+    bool is_lock_free (void) const
+    {
+        return head_.is_lock_free() && tail_.is_lock_free() && pool.is_lock_free();
+    }
+
+    //! Construct queue
+    // @{
+    queue(void):
+        head_(tagged_node_handle(0, 0)),
+        tail_(tagged_node_handle(0, 0)),
+        pool(node_allocator(), has_capacity ? capacity : 0)
+    {
+        BOOST_STATIC_ASSERT(has_capacity);
+        initialize();
+    }
+
+    template <typename U>
+    explicit queue(typename node_allocator::template rebind<U>::other const & alloc):
+        head_(tagged_node_handle(0, 0)),
+        tail_(tagged_node_handle(0, 0)),
+        pool(alloc, has_capacity ? capacity : 0)
+    {
+        BOOST_STATIC_ASSERT(has_capacity);
+        initialize();
+    }
+
+    explicit queue(allocator const & alloc):
+        head_(tagged_node_handle(0, 0)),
+        tail_(tagged_node_handle(0, 0)),
+        pool(alloc, has_capacity ? capacity : 0)
+    {
+        BOOST_STATIC_ASSERT(has_capacity);
+        initialize();
+    }
+    // @}
+
+    //! Construct queue, allocate n nodes for the freelist.
+    // @{
+    explicit queue(size_type n):
+        head_(tagged_node_handle(0, 0)),
+        tail_(tagged_node_handle(0, 0)),
+        pool(node_allocator(), n + 1)
+    {
+        BOOST_STATIC_ASSERT(!has_capacity);
+        initialize();
+    }
+
+    template <typename U>
+    queue(size_type n, typename node_allocator::template rebind<U>::other const & alloc):
+        head_(tagged_node_handle(0, 0)),
+        tail_(tagged_node_handle(0, 0)),
+        pool(alloc, n + 1)
+    {
+        BOOST_STATIC_ASSERT(!has_capacity);
+        initialize();
+    }
+    // @}
+
+    /** \copydoc boost::lockfree::stack::reserve
+     * */
+    void reserve(size_type n)
+    {
+        pool.template reserve<true>(n);
+    }
+
+    /** \copydoc boost::lockfree::stack::reserve_unsafe
+     * */
+    void reserve_unsafe(size_type n)
+    {
+        pool.template reserve<false>(n);
+    }
+
+    /** Destroys queue, free all nodes from freelist.
+     * */
+    ~queue(void)
+    {
+        T dummy;
+        while(unsynchronized_pop(dummy))
+        {}
+
+        pool.template destruct<false>(head_.load(memory_order_relaxed));
+    }
+
+    /** Check if the queue is empty
+     *
+     * \return true, if the queue is empty, false otherwise
+     * \note The result is only accurate, if no other thread modifies the queue. Therefore it is rarely practical to use this
+     *       value in program logic.
+     * */
+    bool empty(void)
+    {
+        return pool.get_handle(head_.load()) == pool.get_handle(tail_.load());
+    }
+
+    /** Pushes object t to the queue.
+     *
+     * \post object will be pushed to the queue, if internal node can be allocated
+     * \returns true, if the push operation is successful.
+     *
+     * \note Thread-safe. If internal memory pool is exhausted and the memory pool is not fixed-sized, a new node will be allocated
+     *                    from the OS. This may not be lock-free.
+     * */
+    bool push(T const & t)
+    {
+        return do_push<false>(t);
+    }
+
+    /** Pushes object t to the queue.
+     *
+     * \post object will be pushed to the queue, if internal node can be allocated
+     * \returns true, if the push operation is successful.
+     *
+     * \note Thread-safe and non-blocking. If internal memory pool is exhausted, operation will fail
+     * \throws if memory allocator throws
+     * */
+    bool bounded_push(T const & t)
+    {
+        return do_push<true>(t);
+    }
+
+
+private:
+#ifndef BOOST_DOXYGEN_INVOKED
+    template <bool Bounded>
+    bool do_push(T const & t)
+    {
+        using detail::likely;
+
+        node * n = pool.template construct<true, Bounded>(t, pool.null_handle());
+        handle_type node_handle = pool.get_handle(n);
+
+        if (n == NULL)
+            return false;
+
+        for (;;) {
+            tagged_node_handle tail = tail_.load(memory_order_acquire);
+            node * tail_node = pool.get_pointer(tail);
+            tagged_node_handle next = tail_node->next.load(memory_order_acquire);
+            node * next_ptr = pool.get_pointer(next);
+
+            tagged_node_handle tail2 = tail_.load(memory_order_acquire);
+            if (likely(tail == tail2)) {
+                if (next_ptr == 0) {
+                    tagged_node_handle new_tail_next(node_handle, next.get_tag() + 1);
+                    if ( tail_node->next.compare_exchange_weak(next, new_tail_next) ) {
+                        tagged_node_handle new_tail(node_handle, tail.get_tag() + 1);
+                        tail_.compare_exchange_strong(tail, new_tail);
+                        return true;
+                    }
+                }
+                else {
+                    tagged_node_handle new_tail(pool.get_handle(next_ptr), tail.get_tag() + 1);
+                    tail_.compare_exchange_strong(tail, new_tail);
+                }
+            }
+        }
+    }
+#endif
+
+public:
+
+    /** Pushes object t to the queue.
+     *
+     * \post object will be pushed to the queue, if internal node can be allocated
+     * \returns true, if the push operation is successful.
+     *
+     * \note Not Thread-safe. If internal memory pool is exhausted and the memory pool is not fixed-sized, a new node will be allocated
+     *       from the OS. This may not be lock-free.
+     * \throws if memory allocator throws
+     * */
+    bool unsynchronized_push(T const & t)
+    {
+        node * n = pool.template construct<false, false>(t, pool.null_handle());
+
+        if (n == NULL)
+            return false;
+
+        for (;;) {
+            tagged_node_handle tail = tail_.load(memory_order_relaxed);
+            tagged_node_handle next = tail->next.load(memory_order_relaxed);
+            node * next_ptr = next.get_ptr();
+
+            if (next_ptr == 0) {
+                tail->next.store(tagged_node_handle(n, next.get_tag() + 1), memory_order_relaxed);
+                tail_.store(tagged_node_handle(n, tail.get_tag() + 1), memory_order_relaxed);
+                return true;
+            }
+            else
+                tail_.store(tagged_node_handle(next_ptr, tail.get_tag() + 1), memory_order_relaxed);
+        }
+    }
+
+    /** Pops object from queue.
+     *
+     * \post if pop operation is successful, object will be copied to ret.
+     * \returns true, if the pop operation is successful, false if queue was empty.
+     *
+     * \note Thread-safe and non-blocking
+     * */
+    bool pop (T & ret)
+    {
+        return pop<T>(ret);
+    }
+
+    /** Pops object from queue.
+     *
+     * \pre type U must be constructible by T and copyable, or T must be convertible to U
+     * \post if pop operation is successful, object will be copied to ret.
+     * \returns true, if the pop operation is successful, false if queue was empty.
+     *
+     * \note Thread-safe and non-blocking
+     * */
+    template <typename U>
+    bool pop (U & ret)
+    {
+        using detail::likely;
+        for (;;) {
+            tagged_node_handle head = head_.load(memory_order_acquire);
+            node * head_ptr = pool.get_pointer(head);
+
+            tagged_node_handle tail = tail_.load(memory_order_acquire);
+            tagged_node_handle next = head_ptr->next.load(memory_order_acquire);
+            node * next_ptr = pool.get_pointer(next);
+
+            tagged_node_handle head2 = head_.load(memory_order_acquire);
+            if (likely(head == head2)) {
+                if (pool.get_handle(head) == pool.get_handle(tail)) {
+                    if (next_ptr == 0)
+                        return false;
+
+                    tagged_node_handle new_tail(pool.get_handle(next), tail.get_tag() + 1);
+                    tail_.compare_exchange_strong(tail, new_tail);
+
+                } else {
+                    if (next_ptr == 0)
+                        /* this check is not part of the original algorithm as published by michael and scott
+                         *
+                         * however we reuse the tagged_ptr part for the freelist and clear the next part during node
+                         * allocation. we can observe a null-pointer here.
+                         * */
+                        continue;
+                    detail::copy_payload(next_ptr->data, ret);
+
+                    tagged_node_handle new_head(pool.get_handle(next), head.get_tag() + 1);
+                    if (head_.compare_exchange_weak(head, new_head)) {
+                        pool.template destruct<true>(head);
+                        return true;
+                    }
+                }
+            }
+        }
+    }
+
+    /** Pops object from queue.
+     *
+     * \post if pop operation is successful, object will be copied to ret.
+     * \returns true, if the pop operation is successful, false if queue was empty.
+     *
+     * \note Not thread-safe, but non-blocking
+     *
+     * */
+    bool unsynchronized_pop (T & ret)
+    {
+        return unsynchronized_pop<T>(ret);
+    }
+
+    /** Pops object from queue.
+     *
+     * \pre type U must be constructible by T and copyable, or T must be convertible to U
+     * \post if pop operation is successful, object will be copied to ret.
+     * \returns true, if the pop operation is successful, false if queue was empty.
+     *
+     * \note Not thread-safe, but non-blocking
+     *
+     * */
+    template <typename U>
+    bool unsynchronized_pop (U & ret)
+    {
+        for (;;) {
+            tagged_node_handle head = head_.load(memory_order_relaxed);
+            node * head_ptr = pool.get_pointer(head);
+            tagged_node_handle tail = tail_.load(memory_order_relaxed);
+            tagged_node_handle next = head_ptr->next.load(memory_order_relaxed);
+            node * next_ptr = pool.get_pointer(next);
+
+            if (pool.get_handle(head) == pool.get_handle(tail)) {
+                if (next_ptr == 0)
+                    return false;
+
+                tagged_node_handle new_tail(pool.get_handle(next), tail.get_tag() + 1);
+                tail_.store(new_tail);
+            } else {
+                if (next_ptr == 0)
+                    /* this check is not part of the original algorithm as published by michael and scott
+                     *
+                     * however we reuse the tagged_ptr part for the freelist and clear the next part during node
+                     * allocation. we can observe a null-pointer here.
+                     * */
+                    continue;
+                detail::copy_payload(next_ptr->data, ret);
+                tagged_node_handle new_head(pool.get_handle(next), head.get_tag() + 1);
+                head_.store(new_head);
+                pool.template destruct<false>(head);
+                return true;
+            }
+        }
+    }
+
+private:
+#ifndef BOOST_DOXYGEN_INVOKED
+    atomic<tagged_node_handle> head_;
+    static const int padding_size = BOOST_LOCKFREE_CACHELINE_BYTES - sizeof(tagged_node_handle);
+    char padding1[padding_size];
+    atomic<tagged_node_handle> tail_;
+    char padding2[padding_size];
+
+    pool_t pool;
+#endif
+};
+
+} /* namespace lockfree */
+} /* namespace boost */
+
+#endif /* BOOST_LOCKFREE_FIFO_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/spsc_queue.hpp b/external_libraries/boost-lockfree/boost/lockfree/spsc_queue.hpp
new file mode 100644
index 0000000..4c97ebd
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/spsc_queue.hpp
@@ -0,0 +1,649 @@
+//  lock-free single-producer/single-consumer ringbuffer
+//  this algorithm is implemented in various projects (linux kernel)
+//
+//  Copyright (C) 2009, 2011 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_SPSC_QUEUE_HPP_INCLUDED
+#define BOOST_LOCKFREE_SPSC_QUEUE_HPP_INCLUDED
+
+#include <algorithm>
+
+#include <boost/array.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/static_assert.hpp>
+
+#include <boost/lockfree/detail/atomic.hpp>
+#include <boost/lockfree/detail/branch_hints.hpp>
+#include <boost/lockfree/detail/parameter.hpp>
+#include <boost/lockfree/detail/prefix.hpp>
+
+
+namespace boost    {
+namespace lockfree {
+namespace detail   {
+
+typedef parameter::parameters<boost::parameter::optional<tag::capacity>,
+                              boost::parameter::optional<tag::allocator>
+                             > ringbuffer_signature;
+
+template <typename T>
+class ringbuffer_base:
+    boost::noncopyable
+{
+#ifndef BOOST_DOXYGEN_INVOKED
+    typedef std::size_t size_t;
+    static const int padding_size = BOOST_LOCKFREE_CACHELINE_BYTES - sizeof(size_t);
+    atomic<size_t> write_index_;
+    char padding1[padding_size]; /* force read_index and write_index to different cache lines */
+    atomic<size_t> read_index_;
+
+protected:
+    ringbuffer_base(void):
+        write_index_(0), read_index_(0)
+    {}
+
+    static size_t next_index(size_t arg, size_t max_size)
+    {
+        size_t ret = arg + 1;
+        while (unlikely(ret >= max_size))
+            ret -= max_size;
+        return ret;
+    }
+
+    static size_t read_available(size_t write_index, size_t read_index, size_t max_size)
+    {
+        if (write_index >= read_index)
+            return write_index - read_index;
+
+        size_t ret = write_index + max_size - read_index;
+        return ret;
+    }
+
+    static size_t write_available(size_t write_index, size_t read_index, size_t max_size)
+    {
+        size_t ret = read_index - write_index - 1;
+        if (write_index >= read_index)
+            ret += max_size;
+        return ret;
+    }
+
+    bool push(T const & t, T * buffer, size_t max_size)
+    {
+        size_t write_index = write_index_.load(memory_order_relaxed);  // only written from push thread
+        size_t next = next_index(write_index, max_size);
+
+        if (next == read_index_.load(memory_order_acquire))
+            return false; /* ringbuffer is full */
+
+        buffer[write_index] = t;
+
+        write_index_.store(next, memory_order_release);
+
+        return true;
+    }
+
+    size_t push(const T * input_buffer, size_t input_count, T * internal_buffer, size_t max_size)
+    {
+        size_t write_index = write_index_.load(memory_order_relaxed);  // only written from push thread
+        const size_t read_index  = read_index_.load(memory_order_acquire);
+        const size_t avail = write_available(write_index, read_index, max_size);
+
+        if (avail == 0)
+            return 0;
+
+        input_count = std::min(input_count, avail);
+
+        size_t new_write_index = write_index + input_count;
+
+        if (write_index + input_count > max_size) {
+            /* copy data in two sections */
+            size_t count0 = max_size - write_index;
+
+            std::copy(input_buffer, input_buffer + count0, internal_buffer + write_index);
+            std::copy(input_buffer + count0, input_buffer + input_count, internal_buffer);
+            new_write_index -= max_size;
+        } else {
+            std::copy(input_buffer, input_buffer + input_count, internal_buffer + write_index);
+
+            if (new_write_index == max_size)
+                new_write_index = 0;
+        }
+
+        write_index_.store(new_write_index, memory_order_release);
+        return input_count;
+    }
+
+    template <typename ConstIterator>
+    ConstIterator push(ConstIterator begin, ConstIterator end, T * internal_buffer, size_t max_size)
+    {
+        // FIXME: avoid std::distance and std::advance
+
+        size_t write_index = write_index_.load(memory_order_relaxed);  // only written from push thread
+        const size_t read_index  = read_index_.load(memory_order_acquire);
+        const size_t avail = write_available(write_index, read_index, max_size);
+
+        if (avail == 0)
+            return begin;
+
+        size_t input_count = std::distance(begin, end);
+        input_count = std::min(input_count, avail);
+
+        size_t new_write_index = write_index + input_count;
+
+        ConstIterator last = begin;
+        std::advance(last, input_count);
+
+        if (write_index + input_count > max_size) {
+            /* copy data in two sections */
+            size_t count0 = max_size - write_index;
+            ConstIterator midpoint = begin;
+            std::advance(midpoint, count0);
+
+            std::copy(begin, midpoint, internal_buffer + write_index);
+            std::copy(midpoint, last, internal_buffer);
+            new_write_index -= max_size;
+        } else {
+            std::copy(begin, last, internal_buffer + write_index);
+
+            if (new_write_index == max_size)
+                new_write_index = 0;
+        }
+
+        write_index_.store(new_write_index, memory_order_release);
+        return last;
+    }
+
+    bool pop (T & ret, T * buffer, size_t max_size)
+    {
+        size_t write_index = write_index_.load(memory_order_acquire);
+        size_t read_index  = read_index_.load(memory_order_relaxed); // only written from pop thread
+        if (empty(write_index, read_index))
+            return false;
+
+        ret = buffer[read_index];
+        size_t next = next_index(read_index, max_size);
+        read_index_.store(next, memory_order_release);
+        return true;
+    }
+
+    size_t pop (T * output_buffer, size_t output_count, const T * internal_buffer, size_t max_size)
+    {
+        const size_t write_index = write_index_.load(memory_order_acquire);
+        size_t read_index = read_index_.load(memory_order_relaxed); // only written from pop thread
+
+        const size_t avail = read_available(write_index, read_index, max_size);
+
+        if (avail == 0)
+            return 0;
+
+        output_count = std::min(output_count, avail);
+
+        size_t new_read_index = read_index + output_count;
+
+        if (read_index + output_count > max_size) {
+            /* copy data in two sections */
+            size_t count0 = max_size - read_index;
+            size_t count1 = output_count - count0;
+
+            std::copy(internal_buffer + read_index, internal_buffer + max_size, output_buffer);
+            std::copy(internal_buffer, internal_buffer + count1, output_buffer + count0);
+
+            new_read_index -= max_size;
+        } else {
+            std::copy(internal_buffer + read_index, internal_buffer + read_index + output_count, output_buffer);
+            if (new_read_index == max_size)
+                new_read_index = 0;
+        }
+
+        read_index_.store(new_read_index, memory_order_release);
+        return output_count;
+    }
+
+    template <typename OutputIterator>
+    size_t pop (OutputIterator it, const T * internal_buffer, size_t max_size)
+    {
+        const size_t write_index = write_index_.load(memory_order_acquire);
+        size_t read_index = read_index_.load(memory_order_relaxed); // only written from pop thread
+
+        const size_t avail = read_available(write_index, read_index, max_size);
+        if (avail == 0)
+            return 0;
+
+        size_t new_read_index = read_index + avail;
+
+        if (read_index + avail > max_size) {
+            /* copy data in two sections */
+            size_t count0 = max_size - read_index;
+            size_t count1 = avail - count0;
+
+            std::copy(internal_buffer + read_index, internal_buffer + max_size, it);
+            std::copy(internal_buffer, internal_buffer + count1, it);
+
+            new_read_index -= max_size;
+        } else {
+            std::copy(internal_buffer + read_index, internal_buffer + read_index + avail, it);
+            if (new_read_index == max_size)
+                new_read_index = 0;
+        }
+
+        read_index_.store(new_read_index, memory_order_release);
+        return avail;
+    }
+#endif
+
+
+public:
+    /** reset the ringbuffer
+     *
+     * \note Not thread-safe
+     * */
+    void reset(void)
+    {
+        write_index_.store(0, memory_order_relaxed);
+        read_index_.store(0, memory_order_release);
+    }
+
+    /** Check if the ringbuffer is empty
+     *
+     * \return true, if the ringbuffer is empty, false otherwise
+     * \note Due to the concurrent nature of the ringbuffer the result may be inaccurate.
+     * */
+    bool empty(void)
+    {
+        return empty(write_index_.load(memory_order_relaxed), read_index_.load(memory_order_relaxed));
+    }
+
+    /**
+     * \return true, if implementation is lock-free.
+     *
+     * */
+    bool is_lock_free(void) const
+    {
+        return write_index_.is_lock_free() && read_index_.is_lock_free();
+    }
+
+private:
+    bool empty(size_t write_index, size_t read_index)
+    {
+        return write_index == read_index;
+    }
+};
+
+template <typename T, std::size_t max_size>
+class compile_time_sized_ringbuffer:
+    public ringbuffer_base<T>
+{
+    typedef std::size_t size_t;
+    boost::array<T, max_size> array_;
+
+public:
+    bool push(T const & t)
+    {
+        return ringbuffer_base<T>::push(t, array_.c_array(), max_size);
+    }
+
+    bool pop(T & ret)
+    {
+        return ringbuffer_base<T>::pop(ret, array_.c_array(), max_size);
+    }
+
+    size_t push(T const * t, size_t size)
+    {
+        return ringbuffer_base<T>::push(t, size, array_.c_array(), max_size);
+    }
+
+    template <size_t size>
+    size_t push(T const (&t)[size])
+    {
+        return push(t, size);
+    }
+
+    template <typename ConstIterator>
+    ConstIterator push(ConstIterator begin, ConstIterator end)
+    {
+        return ringbuffer_base<T>::push(begin, end, array_.c_array(), max_size);
+    }
+
+    size_t pop(T * ret, size_t size)
+    {
+        return ringbuffer_base<T>::pop(ret, size, array_.c_array(), max_size);
+    }
+
+    template <size_t size>
+    size_t pop(T (&ret)[size])
+    {
+        return pop(ret, size);
+    }
+
+    template <typename OutputIterator>
+    size_t pop(OutputIterator it)
+    {
+        return ringbuffer_base<T>::pop(it, array_.c_array(), max_size);
+    }
+};
+
+template <typename T, typename Alloc>
+class runtime_sized_ringbuffer:
+    public ringbuffer_base<T>,
+    private Alloc
+{
+    typedef std::size_t size_t;
+    size_t max_elements_;
+    typedef typename Alloc::pointer pointer;
+    pointer array_;
+
+public:
+    explicit runtime_sized_ringbuffer(size_t max_elements):
+        max_elements_(max_elements)
+    {
+        // TODO: we don't necessarily need to construct all elements
+        array_ = Alloc::allocate(max_elements);
+        for (size_t i = 0; i != max_elements; ++i)
+            Alloc::construct(array_ + i, T());
+    }
+
+    template <typename U>
+    runtime_sized_ringbuffer(typename Alloc::template rebind<U>::other const & alloc, size_t max_elements):
+        Alloc(alloc), max_elements_(max_elements)
+    {
+        // TODO: we don't necessarily need to construct all elements
+        array_ = Alloc::allocate(max_elements);
+        for (size_t i = 0; i != max_elements; ++i)
+            Alloc::construct(array_ + i, T());
+    }
+
+    runtime_sized_ringbuffer(Alloc const & alloc, size_t max_elements):
+        Alloc(alloc), max_elements_(max_elements)
+    {
+        // TODO: we don't necessarily need to construct all elements
+        array_ = Alloc::allocate(max_elements);
+        for (size_t i = 0; i != max_elements; ++i)
+            Alloc::construct(array_ + i, T());
+    }
+
+    ~runtime_sized_ringbuffer(void)
+    {
+        for (size_t i = 0; i != max_elements_; ++i)
+            Alloc::destroy(array_ + i);
+        Alloc::deallocate(array_, max_elements_);
+    }
+
+    bool push(T const & t)
+    {
+        return ringbuffer_base<T>::push(t, &*array_, max_elements_);
+    }
+
+    bool pop(T & ret)
+    {
+        return ringbuffer_base<T>::pop(ret, &*array_, max_elements_);
+    }
+
+    size_t push(T const * t, size_t size)
+    {
+        return ringbuffer_base<T>::push(t, size, &*array_, max_elements_);
+    }
+
+    template <size_t size>
+    size_t push(T const (&t)[size])
+    {
+        return push(t, size);
+    }
+
+    template <typename ConstIterator>
+    ConstIterator push(ConstIterator begin, ConstIterator end)
+    {
+        return ringbuffer_base<T>::push(begin, end, array_, max_elements_);
+    }
+
+    size_t pop(T * ret, size_t size)
+    {
+        return ringbuffer_base<T>::pop(ret, size, array_, max_elements_);
+    }
+
+    template <size_t size>
+    size_t pop(T (&ret)[size])
+    {
+        return pop(ret, size);
+    }
+
+    template <typename OutputIterator>
+    size_t pop(OutputIterator it)
+    {
+        return ringbuffer_base<T>::pop(it, array_, max_elements_);
+    }
+};
+
+template <typename T, typename A0, typename A1>
+struct make_ringbuffer
+{
+    typedef typename ringbuffer_signature::bind<A0, A1>::type bound_args;
+
+    typedef extract_capacity<bound_args> extract_capacity_t;
+
+    static const bool runtime_sized = !extract_capacity_t::has_capacity;
+    static const size_t capacity    =  extract_capacity_t::capacity;
+
+    typedef extract_allocator<bound_args, T> extract_allocator_t;
+    typedef typename extract_allocator_t::type allocator;
+
+    // allocator argument is only sane, for run-time sized ringbuffers
+    BOOST_STATIC_ASSERT((mpl::if_<mpl::bool_<!runtime_sized>,
+                                  mpl::bool_<!extract_allocator_t::has_allocator>,
+                                  mpl::true_
+                                 >::type::value));
+
+    typedef typename mpl::if_c<runtime_sized,
+                               runtime_sized_ringbuffer<T, allocator>,
+                               compile_time_sized_ringbuffer<T, capacity>
+                              >::type ringbuffer_type;
+};
+
+
+} /* namespace detail */
+
+
+/** The spsc_queue class provides a single-writer/single-reader fifo queue, pushing and popping is wait-free.
+ *
+ *  \b Policies:
+ *  - \c boost::lockfree::capacity<>, optional <br>
+ *    If this template argument is passed to the options, the size of the ringbuffer is set at compile-time.
+ *
+ *  - \c boost::lockfree::allocator<>, defaults to \c boost::lockfree::allocator<std::allocator<T>> <br>
+ *    Specifies the allocator that is used to allocate the ringbuffer. This option is only valid, if the ringbuffer is configured
+ *    to be sized at run-time
+ *
+ *  \b Requirements:
+ *  - T must have a default constructor
+ *  - T must be copyable
+ * */
+#ifndef BOOST_DOXYGEN_INVOKED
+template <typename T,
+          class A0 = boost::parameter::void_,
+          class A1 = boost::parameter::void_>
+#else
+template <typename T, ...Options>
+#endif
+class spsc_queue:
+    public detail::make_ringbuffer<T, A0, A1>::ringbuffer_type
+{
+private:
+
+#ifndef BOOST_DOXYGEN_INVOKED
+    typedef typename detail::make_ringbuffer<T, A0, A1>::ringbuffer_type base_type;
+    static const bool runtime_sized = detail::make_ringbuffer<T, A0, A1>::runtime_sized;
+    typedef typename detail::make_ringbuffer<T, A0, A1>::allocator allocator_arg;
+
+    struct implementation_defined
+    {
+        typedef allocator_arg allocator;
+        typedef std::size_t size_type;
+    };
+#endif
+
+public:
+    typedef T value_type;
+    typedef typename implementation_defined::allocator allocator;
+    typedef typename implementation_defined::size_type size_type;
+
+    /** Constructs a spsc_queue
+     *
+     *  \pre spsc_queue must be configured to be sized at compile-time
+     */
+    // @{
+    spsc_queue(void)
+    {
+        BOOST_STATIC_ASSERT(!runtime_sized);
+    }
+
+    template <typename U>
+    explicit spsc_queue(typename allocator::template rebind<U>::other const & alloc)
+    {
+        // just for API compatibility: we don't actually need an allocator
+        BOOST_STATIC_ASSERT(!runtime_sized);
+    }
+
+    explicit spsc_queue(allocator const & alloc)
+    {
+        // just for API compatibility: we don't actually need an allocator
+        BOOST_STATIC_ASSERT(!runtime_sized);
+    }
+    // @}
+
+
+    /** Constructs a spsc_queue for element_count elements
+     *
+     *  \pre spsc_queue must be configured to be sized at run-time
+     */
+    // @{
+    explicit spsc_queue(size_type element_count):
+        base_type(element_count)
+    {
+        BOOST_STATIC_ASSERT(runtime_sized);
+    }
+
+    template <typename U>
+    spsc_queue(size_type element_count, typename allocator::template rebind<U>::other const & alloc):
+        base_type(alloc, element_count)
+    {
+        BOOST_STATIC_ASSERT(runtime_sized);
+    }
+
+    spsc_queue(size_type element_count, allocator_arg const & alloc):
+        base_type(alloc, element_count)
+    {
+        BOOST_STATIC_ASSERT(runtime_sized);
+    }
+    // @}
+
+    /** Pushes object t to the ringbuffer.
+     *
+     * \pre only one thread is allowed to push data to the spsc_queue
+     * \post object will be pushed to the spsc_queue, unless it is full.
+     * \return true, if the push operation is successful.
+     *
+     * \note Thread-safe and wait-free
+     * */
+    bool push(T const & t)
+    {
+        return base_type::push(t);
+    }
+
+    /** Pops one object from ringbuffer.
+     *
+     * \pre only one thread is allowed to pop data to the spsc_queue
+     * \post if ringbuffer is not empty, object will be copied to ret.
+     * \return true, if the pop operation is successful, false if ringbuffer was empty.
+     *
+     * \note Thread-safe and wait-free
+     */
+    bool pop(T & ret)
+    {
+        return base_type::pop(ret);
+    }
+
+    /** Pushes as many objects from the array t as there is space.
+     *
+     * \pre only one thread is allowed to push data to the spsc_queue
+     * \return number of pushed items
+     *
+     * \note Thread-safe and wait-free
+     */
+    size_type push(T const * t, size_type size)
+    {
+        return base_type::push(t, size);
+    }
+
+    /** Pushes as many objects from the array t as there is space available.
+     *
+     * \pre only one thread is allowed to push data to the spsc_queue
+     * \return number of pushed items
+     *
+     * \note Thread-safe and wait-free
+     */
+    template <size_type size>
+    size_type push(T const (&t)[size])
+    {
+        return push(t, size);
+    }
+
+    /** Pushes as many objects from the range [begin, end) as there is space .
+     *
+     * \pre only one thread is allowed to push data to the spsc_queue
+     * \return iterator to the first element, which has not been pushed
+     *
+     * \note Thread-safe and wait-free
+     */
+    template <typename ConstIterator>
+    ConstIterator push(ConstIterator begin, ConstIterator end)
+    {
+        return base_type::push(begin, end);
+    }
+
+    /** Pops a maximum of size objects from ringbuffer.
+     *
+     * \pre only one thread is allowed to pop data to the spsc_queue
+     * \return number of popped items
+     *
+     * \note Thread-safe and wait-free
+     * */
+    size_type pop(T * ret, size_type size)
+    {
+        return base_type::pop(ret, size);
+    }
+
+    /** Pops a maximum of size objects from spsc_queue.
+     *
+     * \pre only one thread is allowed to pop data to the spsc_queue
+     * \return number of popped items
+     *
+     * \note Thread-safe and wait-free
+     * */
+    template <size_type size>
+    size_type pop(T (&ret)[size])
+    {
+        return pop(ret, size);
+    }
+
+    /** Pops objects to the output iterator it
+     *
+     * \pre only one thread is allowed to pop data to the spsc_queue
+     * \return number of popped items
+     *
+     * \note Thread-safe and wait-free
+     * */
+    template <typename OutputIterator>
+    size_type pop(OutputIterator it)
+    {
+        return base_type::pop(it);
+    }
+};
+
+} /* namespace lockfree */
+} /* namespace boost */
+
+
+#endif /* BOOST_LOCKFREE_SPSC_QUEUE_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/boost/lockfree/stack.hpp b/external_libraries/boost-lockfree/boost/lockfree/stack.hpp
new file mode 100644
index 0000000..09a788a
--- /dev/null
+++ b/external_libraries/boost-lockfree/boost/lockfree/stack.hpp
@@ -0,0 +1,511 @@
+//  Copyright (C) 2008, 2009, 2010, 2011 Tim Blechmann
+//
+//  Distributed under the Boost Software License, Version 1.0. (See
+//  accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LOCKFREE_STACK_HPP_INCLUDED
+#define BOOST_LOCKFREE_STACK_HPP_INCLUDED
+
+#include <boost/checked_delete.hpp>
+#include <boost/integer_traits.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/type_traits/has_trivial_assign.hpp>
+#include <boost/type_traits/has_trivial_destructor.hpp>
+
+#include <boost/lockfree/detail/atomic.hpp>
+#include <boost/lockfree/detail/copy_payload.hpp>
+#include <boost/lockfree/detail/freelist.hpp>
+#include <boost/lockfree/detail/parameter.hpp>
+#include <boost/lockfree/detail/tagged_ptr.hpp>
+
+namespace boost    {
+namespace lockfree {
+namespace detail   {
+
+typedef parameter::parameters<boost::parameter::optional<tag::allocator>,
+                              boost::parameter::optional<tag::capacity>
+                             > stack_signature;
+
+}
+
+/** The stack class provides a multi-writer/multi-reader stack, pushing and popping is lock-free,
+ *  construction/destruction has to be synchronized. It uses a freelist for memory management,
+ *  freed nodes are pushed to the freelist and not returned to the OS before the stack is destroyed.
+ *
+ *  \b Policies:
+ *
+ *  - \c boost::lockfree::fixed_sized<>, defaults to \c boost::lockfree::fixed_sized<false> <br>
+ *    Can be used to completely disable dynamic memory allocations during push in order to ensure lockfree behavior.<br>
+ *    If the data structure is configured as fixed-sized, the internal nodes are stored inside an array and they are addressed
+ *    by array indexing. This limits the possible size of the stack to the number of elements that can be addressed by the index
+ *    type (usually 2**16-2), but on platforms that lack double-width compare-and-exchange instructions, this is the best way
+ *    to achieve lock-freedom.
+ *
+ *  - \c boost::lockfree::capacity<>, optional <br>
+ *    If this template argument is passed to the options, the size of the stack is set at compile-time. <br>
+ *    It this option implies \c fixed_sized<true>
+ *
+ *  - \c boost::lockfree::allocator<>, defaults to \c boost::lockfree::allocator<std::allocator<void>> <br>
+ *    Specifies the allocator that is used for the internal freelist
+ *
+ *  \b Requirements:
+ *  - T must have a copy constructor
+ * */
+#ifndef BOOST_DOXYGEN_INVOKED
+template <typename T,
+          class A0 = boost::parameter::void_,
+          class A1 = boost::parameter::void_,
+          class A2 = boost::parameter::void_>
+#else
+template <typename T, ...Options>
+#endif
+class stack:
+    boost::noncopyable
+{
+private:
+#ifndef BOOST_DOXYGEN_INVOKED
+    BOOST_STATIC_ASSERT(boost::has_trivial_assign<T>::value);
+    BOOST_STATIC_ASSERT(boost::has_trivial_destructor<T>::value);
+
+    typedef typename detail::stack_signature::bind<A0, A1, A2>::type bound_args;
+
+    static const bool has_capacity = detail::extract_capacity<bound_args>::has_capacity;
+    static const size_t capacity = detail::extract_capacity<bound_args>::capacity;
+    static const bool fixed_sized = detail::extract_fixed_sized<bound_args>::value;
+    static const bool node_based = !(has_capacity || fixed_sized);
+    static const bool compile_time_sized = has_capacity;
+
+    struct node
+    {
+        node(T const & val):
+            v(val)
+        {}
+
+        typedef typename detail::select_tagged_handle<node, node_based>::handle_type handle_t;
+        handle_t next;
+        const T v;
+    };
+
+    typedef typename detail::extract_allocator<bound_args, node>::type node_allocator;
+    typedef typename detail::select_freelist<node, node_allocator, compile_time_sized, fixed_sized, capacity>::type pool_t;
+    typedef typename pool_t::tagged_node_handle tagged_node_handle;
+
+    // check compile-time capacity
+    BOOST_STATIC_ASSERT((mpl::if_c<has_capacity,
+                                   mpl::bool_<capacity - 1 < boost::integer_traits<boost::uint16_t>::const_max>,
+                                   mpl::true_
+                                  >::type::value));
+
+    struct implementation_defined
+    {
+        typedef node_allocator allocator;
+        typedef std::size_t size_type;
+    };
+
+#endif
+
+public:
+    typedef T value_type;
+    typedef typename implementation_defined::allocator allocator;
+    typedef typename implementation_defined::size_type size_type;
+
+    /**
+     * \return true, if implementation is lock-free.
+     *
+     * \warning It only checks, if the top stack node and the freelist can be modified in a lock-free manner.
+     *          On most platforms, the whole implementation is lock-free, if this is true. Using c++0x-style atomics,
+     *          there is no possibility to provide a completely accurate implementation, because one would need to test
+     *          every internal node, which is impossible if further nodes will be allocated from the operating system.
+     *
+     * */
+    bool is_lock_free (void) const
+    {
+        return tos.is_lock_free() && pool.is_lock_free();
+    }
+
+    //! Construct stack
+    // @{
+    stack(void):
+        pool(node_allocator(), has_capacity ? capacity : 0)
+    {
+        BOOST_STATIC_ASSERT(has_capacity);
+        initialize();
+    }
+
+    template <typename U>
+    explicit stack(typename node_allocator::template rebind<U>::other const & alloc):
+        pool(alloc, has_capacity ? capacity : 0)
+    {
+        BOOST_STATIC_ASSERT(has_capacity);
+        initialize();
+    }
+
+    explicit stack(allocator const & alloc):
+        pool(alloc, has_capacity ? capacity : 0)
+    {
+        BOOST_STATIC_ASSERT(has_capacity);
+        initialize();
+    }
+    // @}
+
+    //! Construct stack, allocate n nodes for the freelist.
+    // @{
+    explicit stack(size_type n):
+        pool(node_allocator(), n)
+    {
+        BOOST_STATIC_ASSERT(!has_capacity);
+        initialize();
+    }
+
+    template <typename U>
+    stack(size_type n, typename node_allocator::template rebind<U>::other const & alloc):
+        pool(alloc, n)
+    {
+        BOOST_STATIC_ASSERT(!has_capacity);
+        initialize();
+    }
+    // @}
+
+    /** Allocate n nodes for freelist
+     *
+     *  \pre  only valid if no capacity<> argument given
+     *  \note thread-safe, may block if memory allocator blocks
+     *
+     * */
+    void reserve(size_type n)
+    {
+        BOOST_STATIC_ASSERT(!has_capacity);
+        pool.reserve(n);
+    }
+
+    /** Allocate n nodes for freelist
+     *
+     *  \pre  only valid if no capacity<> argument given
+     *  \note not thread-safe, may block if memory allocator blocks
+     *
+     * */
+    void reserve_unsafe(size_type n)
+    {
+        BOOST_STATIC_ASSERT(!has_capacity);
+        pool.reserve_unsafe(n);
+    }
+
+    /** Destroys stack, free all nodes from freelist.
+     *
+     *  \note not thread-safe
+     *
+     * */
+    ~stack(void)
+    {
+        T dummy;
+        while(unsynchronized_pop(dummy))
+        {}
+    }
+
+private:
+#ifndef BOOST_DOXYGEN_INVOKED
+    void initialize(void)
+    {
+        tos.store(tagged_node_handle(pool.null_handle(), 0));
+    }
+
+    void link_nodes_atomic(node * new_top_node, node * end_node)
+    {
+        tagged_node_handle old_tos = tos.load(detail::memory_order_relaxed);
+        for (;;) {
+            tagged_node_handle new_tos (pool.get_handle(new_top_node), old_tos.get_tag());
+            end_node->next = pool.get_handle(old_tos);
+
+            if (tos.compare_exchange_weak(old_tos, new_tos))
+                break;
+        }
+    }
+
+    void link_nodes_unsafe(node * new_top_node, node * end_node)
+    {
+        tagged_node_handle old_tos = tos.load(detail::memory_order_relaxed);
+
+        tagged_node_handle new_tos (pool.get_handle(new_top_node), old_tos.get_tag());
+        end_node->next = pool.get_pointer(old_tos);
+
+        tos.store(new_tos, memory_order_relaxed);
+    }
+
+    template <bool Threadsafe, bool Bounded, typename ConstIterator>
+    tuple<node*, node*> prepare_node_list(ConstIterator begin, ConstIterator end, ConstIterator & ret)
+    {
+        ConstIterator it = begin;
+        node * end_node = pool.template construct<Threadsafe, Bounded>(*it++);
+        if (end_node == NULL) {
+            ret = begin;
+            return make_tuple<node*, node*>(NULL, NULL);
+        }
+
+        node * new_top_node = end_node;
+        end_node->next = NULL;
+
+        try {
+            /* link nodes */
+            for (; it != end; ++it) {
+                node * newnode = pool.template construct<Threadsafe, Bounded>(*it);
+                if (newnode == NULL)
+                    break;
+                newnode->next = new_top_node;
+                new_top_node = newnode;
+            }
+        } catch (...) {
+            for (node * current_node = new_top_node; current_node != NULL;) {
+                node * next = current_node->next;
+                pool.template destruct<Threadsafe>(current_node);
+                current_node = next;
+            }
+            throw;
+        }
+        ret = it;
+        return make_tuple(new_top_node, end_node);
+    }
+#endif
+
+public:
+    /** Pushes object t to the stack.
+     *
+     * \post object will be pushed to the stack, if internal node can be allocated
+     * \returns true, if the push operation is successful.
+     *
+     * \note Thread-safe. If internal memory pool is exhausted and the memory pool is not fixed-sized, a new node will be allocated
+     *                    from the OS. This may not be lock-free.
+     * \throws if memory allocator throws
+     * */
+    bool push(T const & v)
+    {
+        return do_push<false>(v);
+    }
+
+    /** Pushes object t to the stack.
+     *
+     * \post object will be pushed to the stack, if internal node can be allocated
+     * \returns true, if the push operation is successful.
+     *
+     * \note Thread-safe and non-blocking. If internal memory pool is exhausted, the push operation will fail
+     * */
+    bool bounded_push(T const & v)
+    {
+        return do_push<true>(v);
+    }
+
+#ifndef BOOST_DOXYGEN_INVOKED
+private:
+    template <bool Bounded>
+    bool do_push(T const & v)
+    {
+        node * newnode = pool.template construct<true, Bounded>(v);
+        if (newnode == 0)
+            return false;
+
+        link_nodes_atomic(newnode, newnode);
+        return true;
+    }
+
+    template <bool Bounded, typename ConstIterator>
+    ConstIterator do_push(ConstIterator begin, ConstIterator end)
+    {
+        node * new_top_node;
+        node * end_node;
+        ConstIterator ret;
+
+        tie(new_top_node, end_node) = prepare_node_list<true, Bounded>(begin, end, ret);
+        if (new_top_node)
+            link_nodes_atomic(new_top_node, end_node);
+
+        return ret;
+    }
+
+public:
+#endif
+
+    /** Pushes as many objects from the range [begin, end) as freelist node can be allocated.
+     *
+     * \return iterator to the first element, which has not been pushed
+     *
+     * \note Operation is applied atomically
+     * \note Thread-safe. If internal memory pool is exhausted and the memory pool is not fixed-sized, a new node will be allocated
+     *                    from the OS. This may not be lock-free.
+     * \throws if memory allocator throws
+     */
+    template <typename ConstIterator>
+    ConstIterator push(ConstIterator begin, ConstIterator end)
+    {
+        return do_push<false, ConstIterator>(begin, end);
+    }
+
+    /** Pushes as many objects from the range [begin, end) as freelist node can be allocated.
+     *
+     * \return iterator to the first element, which has not been pushed
+     *
+     * \note Operation is applied atomically
+     * \note Thread-safe and non-blocking. If internal memory pool is exhausted, the push operation will fail
+     * \throws if memory allocator throws
+     */
+    template <typename ConstIterator>
+    ConstIterator bounded_push(ConstIterator begin, ConstIterator end)
+    {
+        return do_push<true, ConstIterator>(begin, end);
+    }
+
+
+    /** Pushes object t to the stack.
+     *
+     * \post object will be pushed to the stack, if internal node can be allocated
+     * \returns true, if the push operation is successful.
+     *
+     * \note Not thread-safe. If internal memory pool is exhausted and the memory pool is not fixed-sized, a new node will be allocated
+     *       from the OS. This may not be lock-free.
+     * \throws if memory allocator throws
+     * */
+    bool unsynchronized_push(T const & v)
+    {
+        node * newnode = pool.template construct<false, false>(v);
+        if (newnode == 0)
+            return false;
+
+        link_nodes_unsafe(newnode, newnode);
+        return true;
+    }
+
+    /** Pushes as many objects from the range [begin, end) as freelist node can be allocated.
+     *
+     * \return iterator to the first element, which has not been pushed
+     *
+     * \note Not thread-safe. If internal memory pool is exhausted and the memory pool is not fixed-sized, a new node will be allocated
+     *       from the OS. This may not be lock-free.
+     * \throws if memory allocator throws
+     */
+    template <typename ConstIterator>
+    ConstIterator unsynchronized_push(ConstIterator begin, ConstIterator end)
+    {
+        node * new_top_node;
+        node * end_node;
+        ConstIterator ret;
+
+        tie(new_top_node, end_node) = prepare_node_list<false, false>(begin, end, ret);
+        if (new_top_node)
+            link_nodes_unsafe(new_top_node, end_node);
+
+        return ret;
+    }
+
+
+    /** Pops object from stack.
+     *
+     * \post if pop operation is successful, object will be copied to ret.
+     * \returns true, if the pop operation is successful, false if stack was empty.
+     *
+     * \note Thread-safe and non-blocking
+     *
+     * */
+    bool pop(T & ret)
+    {
+        return pop<T>(ret);
+    }
+
+    /** Pops object from stack.
+     *
+     * \pre type T must be convertible to U
+     * \post if pop operation is successful, object will be copied to ret.
+     * \returns true, if the pop operation is successful, false if stack was empty.
+     *
+     * \note Thread-safe and non-blocking
+     *
+     * */
+    template <typename U>
+    bool pop(U & ret)
+    {
+        BOOST_STATIC_ASSERT((boost::is_convertible<T, U>::value));
+        tagged_node_handle old_tos = tos.load(detail::memory_order_consume);
+
+        for (;;) {
+            node * old_tos_pointer = pool.get_pointer(old_tos);
+            if (!old_tos_pointer)
+                return false;
+
+            tagged_node_handle new_tos(old_tos_pointer->next, old_tos.get_tag() + 1);
+
+            if (tos.compare_exchange_weak(old_tos, new_tos)) {
+                detail::copy_payload(old_tos_pointer->v, ret);
+                pool.template destruct<true>(old_tos);
+                return true;
+            }
+        }
+    }
+
+
+    /** Pops object from stack.
+     *
+     * \post if pop operation is successful, object will be copied to ret.
+     * \returns true, if the pop operation is successful, false if stack was empty.
+     *
+     * \note Not thread-safe, but non-blocking
+     *
+     * */
+    bool unsynchronized_pop(T & ret)
+    {
+        return unsynchronized_pop<T>(ret);
+    }
+
+    /** Pops object from stack.
+     *
+     * \pre type T must be convertible to U
+     * \post if pop operation is successful, object will be copied to ret.
+     * \returns true, if the pop operation is successful, false if stack was empty.
+     *
+     * \note Not thread-safe, but non-blocking
+     *
+     * */
+    template <typename U>
+    bool unsynchronized_pop(U & ret)
+    {
+        BOOST_STATIC_ASSERT((boost::is_convertible<T, U>::value));
+        tagged_node_handle old_tos = tos.load(detail::memory_order_relaxed);
+        node * old_tos_pointer = pool.get_pointer(old_tos);
+
+        if (!pool.get_pointer(old_tos))
+            return false;
+
+        node * new_tos_ptr = pool.get_pointer(old_tos_pointer->next);
+        tagged_node_handle new_tos(pool.get_handle(new_tos_ptr), old_tos.get_tag() + 1);
+
+        tos.store(new_tos, memory_order_relaxed);
+        detail::copy_payload(old_tos_pointer->v, ret);
+        pool.template destruct<false>(old_tos);
+        return true;
+    }
+
+    /**
+     * \return true, if stack is empty.
+     *
+     * \note It only guarantees that at some point during the execution of the function the stack has been empty.
+     *       It is rarely practical to use this value in program logic, because the the stack can be modified by other threads.
+     * */
+    bool empty(void) const
+    {
+        return pool.get_pointer(tos.load()) == NULL;
+    }
+
+private:
+#ifndef BOOST_DOXYGEN_INVOKED
+    detail::atomic<tagged_node_handle> tos;
+
+    static const int padding_size = BOOST_LOCKFREE_CACHELINE_BYTES - sizeof(tagged_node_handle);
+    char padding[padding_size];
+
+    pool_t pool;
+#endif
+};
+
+} /* namespace lockfree */
+} /* namespace boost */
+
+#endif /* BOOST_LOCKFREE_STACK_HPP_INCLUDED */
diff --git a/external_libraries/boost-lockfree/libs/atomic/src/lockpool.cpp b/external_libraries/boost-lockfree/libs/atomic/src/lockpool.cpp
new file mode 100644
index 0000000..eb57c8c
--- /dev/null
+++ b/external_libraries/boost-lockfree/libs/atomic/src/lockpool.cpp
@@ -0,0 +1,11 @@
+#include <boost/atomic.hpp>
+
+namespace boost {
+namespace atomics {
+namespace detail {
+
+lockpool::lock_type lockpool::pool_[41];
+
+}
+}
+}
diff --git a/external_libraries/boost_lockfree/CMakeLists.txt b/external_libraries/boost_lockfree/CMakeLists.txt
deleted file mode 100644
index 8684250..0000000
--- a/external_libraries/boost_lockfree/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-cmake_minimum_required (VERSION 2.6)
-project (boost-lockfree)
-
-enable_testing()
-
-include_directories(.)
-
-add_subdirectory (libs/lockfree/doc)
-add_subdirectory (libs/lockfree/examples)
-add_subdirectory (libs/lockfree/test)
diff --git a/external_libraries/boost_lockfree/Jamfile.v2 b/external_libraries/boost_lockfree/Jamfile.v2
deleted file mode 100644
index c14cdba..0000000
--- a/external_libraries/boost_lockfree/Jamfile.v2
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2010 Tim Blechmann
-# Distributed under the Boost Software License, Version 1.0. (See accompanying
-# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-project lockfree
-    : requirements
-        <include>.
-        <include>$(boost-root)
-    :
-        build-dir bin.v2
-    ;
\ No newline at end of file
diff --git a/external_libraries/boost_lockfree/LICENSE_1_0.txt b/external_libraries/boost_lockfree/LICENSE_1_0.txt
deleted file mode 100644
index 36b7cd9..0000000
--- a/external_libraries/boost_lockfree/LICENSE_1_0.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/external_libraries/boost_lockfree/boost/atomic.hpp b/external_libraries/boost_lockfree/boost/atomic.hpp
deleted file mode 100644
index cf07ea5..0000000
--- a/external_libraries/boost_lockfree/boost/atomic.hpp
+++ /dev/null
@@ -1,204 +0,0 @@
-#ifndef BOOST_ATOMIC_HPP
-#define BOOST_ATOMIC_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <cstddef>
-
-#include <boost/memory_order.hpp>
-#include <boost/atomic/platform.hpp>
-#include <boost/atomic/detail/base.hpp>
-#include <boost/atomic/detail/integral-casts.hpp>
-
-namespace boost {
-
-template<typename T>
-class atomic : public detail::atomic::internal_atomic<T> {
-public:
-	typedef detail::atomic::internal_atomic<T> super;
-	
-	atomic() {}
-	explicit atomic(T v) : super(v) {}
-private:
-	atomic(const atomic &);
-	void operator=(const atomic &);
-};
-
-
-template<>
-class atomic<bool> : private detail::atomic::internal_atomic<bool> {
-public:
-	typedef detail::atomic::internal_atomic<bool> super;
-	
-	atomic() {}
-	explicit atomic(bool v) : super(v) {}
-	
-	using super::load;
-	using super::store;
-	using super::compare_exchange_strong;
-	using super::compare_exchange_weak;
-	using super::exchange;
-	using super::is_lock_free;
-	
-	operator bool(void) const volatile {return load();}
-	bool operator=(bool v) volatile {store(v); return v;}	
-private:
-	atomic(const atomic &);
-	void operator=(const atomic &);
-};
-
-template<>
-class atomic<void *> : private detail::atomic::internal_atomic<void *, sizeof(void *), int> {
-public:
-	typedef detail::atomic::internal_atomic<void *, sizeof(void *), int> super;
-	
-	atomic() {}
-	explicit atomic(void * p) : super(p) {}
-	using super::load;
-	using super::store;
-	using super::compare_exchange_strong;
-	using super::compare_exchange_weak;
-	using super::exchange;
-	using super::is_lock_free;
-	
-	operator void *(void) const volatile {return load();}
-	void * operator=(void * v) volatile {store(v); return v;}
-	
-private:
-	atomic(const atomic &);
-	void * operator=(const atomic &);
-};
-
-/* FIXME: pointer arithmetic still missing */
-
-template<typename T>
-class atomic<T *> : private detail::atomic::internal_atomic<intptr_t> {
-public:
-	typedef detail::atomic::internal_atomic<intptr_t> super;
-	
-	atomic() {}
-	explicit atomic(T * p) : super((intptr_t)p) {}
-	
-	T *load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		return (T*)super::load(order);
-	}
-	void store(T *v, memory_order order=memory_order_seq_cst) volatile
-	{
-		super::store((intptr_t)v, order);
-	}
-	bool compare_exchange_strong(
-		T * &expected,
-		T * desired,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		return compare_exchange_strong(expected, desired, order, detail::atomic::calculate_failure_order(order));
-	}
-	bool compare_exchange_weak(
-		T * &expected,
-		T *desired,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		return compare_exchange_weak(expected, desired, order, detail::atomic::calculate_failure_order(order));
-	}
-	bool compare_exchange_weak(
-		T * &expected,
-		T *desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		intptr_t expected_=(intptr_t)expected, desired_=(intptr_t)desired;
-		bool success=super::compare_exchange_weak(expected_, desired_, success_order, failure_order);
-		expected=(T*)expected_;
-		return success;
-	}
-	bool compare_exchange_strong(
-		T * &expected,
-		T *desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		intptr_t expected_=(intptr_t)expected, desired_=(intptr_t)desired;
-		bool success=super::compare_exchange_strong(expected_, desired_, success_order, failure_order);
-		expected=(T*)expected_;
-		return success;
-	}
-	T *exchange(T * replacement, memory_order order=memory_order_seq_cst) volatile
-	{
-		return (T*)super::exchange((intptr_t)replacement, order);
-	}
-	using super::is_lock_free;
-	
-	operator T *(void) const volatile {return load();}
-	T * operator=(T * v) volatile {store(v); return v;}
-	
-	T * fetch_add(ptrdiff_t diff, memory_order order=memory_order_seq_cst) volatile
-	{
-		return (T*)super::fetch_add(diff*sizeof(T), order);
-	}
-	T * fetch_sub(ptrdiff_t diff, memory_order order=memory_order_seq_cst) volatile
-	{
-		return (T*)super::fetch_sub(diff*sizeof(T), order);
-	}
-	
-	T *operator++(void) volatile {return fetch_add(1)+1;}
-	T *operator++(int) volatile {return fetch_add(1);}
-	T *operator--(void) volatile {return fetch_sub(1)-1;}
-	T *operator--(int) volatile {return fetch_sub(1);}
-private:
-	atomic(const atomic &);
-	T * operator=(const atomic &);
-};
-
-class atomic_flag : private atomic<int> {
-public:
-	typedef atomic<int> super;
-	using super::is_lock_free;
-	
-	atomic_flag(bool initial_state) : super(initial_state?1:0) {}
-	atomic_flag() {}
-	
-	bool test_and_set(memory_order order=memory_order_seq_cst)
-	{
-		return super::exchange(1, order) != 0;
-	}
-	void clear(memory_order order=memory_order_seq_cst)
-	{
-		super::store(0, order);
-	}
-};
-
-typedef atomic<char> atomic_char;
-typedef atomic<unsigned char> atomic_uchar;
-typedef atomic<signed char> atomic_schar;
-typedef atomic<uint8_t> atomic_uint8_t;
-typedef atomic<int8_t> atomic_int8_t;
-typedef atomic<unsigned short> atomic_ushort;
-typedef atomic<short> atomic_short;
-typedef atomic<uint16_t> atomic_uint16_t;
-typedef atomic<int16_t> atomic_int16_t;
-typedef atomic<unsigned int> atomic_uint;
-typedef atomic<int> atomic_int;
-typedef atomic<uint32_t> atomic_uint32_t;
-typedef atomic<int32_t> atomic_int32_t;
-typedef atomic<unsigned long> atomic_ulong;
-typedef atomic<long> atomic_long;
-typedef atomic<uint64_t> atomic_uint64_t;
-typedef atomic<int64_t> atomic_int64_t;
-typedef atomic<unsigned long long> atomic_ullong;
-typedef atomic<long long> atomic_llong;
-typedef atomic<void*> atomic_address;
-typedef atomic<bool> atomic_bool;
-
-static inline void atomic_thread_fence(memory_order order)
-{
-	detail::atomic::platform_atomic_thread_fence<memory_order>(order);
-}
-
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/base.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/base.hpp
deleted file mode 100644
index 4fdcfc0..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/base.hpp
+++ /dev/null
@@ -1,179 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_BASE_HPP
-#define BOOST_DETAIL_ATOMIC_BASE_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/atomic/detail/fallback.hpp>
-#include <boost/atomic/detail/builder.hpp>
-#include <boost/atomic/detail/valid_integral_types.hpp>
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-static inline memory_order calculate_failure_order(memory_order order)
-{
-	switch(order) {
-		case memory_order_acq_rel: return memory_order_acquire;
-		case memory_order_release: return memory_order_relaxed;
-		default: return order;
-	}
-}
-
-template<typename T, unsigned short Size=sizeof(T)>
-class platform_atomic : public fallback_atomic<T> {
-public:
-	typedef fallback_atomic<T> super;
-
-	explicit platform_atomic(T v) : super(v) {}
-	platform_atomic() {}
-protected:
-	typedef typename super::integral_type integral_type;
-};
-
-template<typename T, unsigned short Size=sizeof(T)>
-class platform_atomic_integral : public build_atomic_from_exchange<fallback_atomic<T> > {
-public:
-	typedef build_atomic_from_exchange<fallback_atomic<T> > super;
-
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral() {}
-protected:
-	typedef typename super::integral_type integral_type;
-};
-
-template<typename T>
-static inline void platform_atomic_thread_fence(T order);
-
-template<typename T, unsigned short Size=sizeof(T), typename Int=typename is_integral_type<T>::test>
-class internal_atomic;
-
-template<typename T, unsigned short Size>
-class internal_atomic<T, Size, void> : private detail::atomic::platform_atomic<T> {
-public:
-	typedef detail::atomic::platform_atomic<T> super;
-
-	internal_atomic() {}
-	explicit internal_atomic(T v) : super(v) {}
-
-	operator T(void) const volatile {return load();}
-	T operator=(T v) volatile {store(v); return v;}
-
-	using super::is_lock_free;
-	using super::load;
-	using super::store;
-	using super::exchange;
-
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		return super::compare_exchange_strong(expected, desired, order, calculate_failure_order(order));
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		return super::compare_exchange_strong(expected, desired, order, calculate_failure_order(order));
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return super::compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return super::compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-private:
-	internal_atomic(const internal_atomic &);
-	void operator=(const internal_atomic &);
-};
-
-template<typename T, unsigned short Size>
-class internal_atomic<T, Size, int> : private detail::atomic::platform_atomic_integral<T> {
-public:
-	typedef detail::atomic::platform_atomic_integral<T> super;
-	typedef typename super::integral_type integral_type;
-
-	internal_atomic() {}
-	explicit internal_atomic(T v) : super(v) {}
-
-	using super::is_lock_free;
-	using super::load;
-	using super::store;
-	using super::exchange;
-	using super::fetch_add;
-	using super::fetch_sub;
-	using super::fetch_and;
-	using super::fetch_or;
-	using super::fetch_xor;
-
-	operator integral_type(void) const volatile {return load();}
-	integral_type operator=(integral_type v) volatile {store(v); return v;}
-
-	integral_type operator&=(integral_type c) volatile {return fetch_and(c)&c;}
-	integral_type operator|=(integral_type c) volatile {return fetch_or(c)|c;}
-	integral_type operator^=(integral_type c) volatile {return fetch_xor(c)^c;}
-
-	integral_type operator+=(integral_type c) volatile {return fetch_add(c)+c;}
-	integral_type operator-=(integral_type c) volatile {return fetch_sub(c)-c;}
-
-	integral_type operator++(void) volatile {return fetch_add(1)+1;}
-	integral_type operator++(int) volatile {return fetch_add(1);}
-	integral_type operator--(void) volatile {return fetch_sub(1)-1;}
-	integral_type operator--(int) volatile {return fetch_sub(1);}
-
-	bool compare_exchange_strong(
-		integral_type &expected,
-		integral_type desired,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		return super::compare_exchange_strong(expected, desired, order, calculate_failure_order(order));
-	}
-	bool compare_exchange_weak(
-		integral_type &expected,
-		integral_type desired,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		return super::compare_exchange_strong(expected, desired, order, calculate_failure_order(order));
-	}
-	bool compare_exchange_strong(
-		integral_type &expected,
-		integral_type desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return super::compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	bool compare_exchange_weak(
-		integral_type &expected,
-		integral_type desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return super::compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-private:
-	internal_atomic(const internal_atomic &);
-	void operator=(const internal_atomic &);
-};
-
-}
-}
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/builder.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/builder.hpp
deleted file mode 100644
index 16c68aa..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/builder.hpp
+++ /dev/null
@@ -1,405 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_BUILDER_HPP
-#define BOOST_DETAIL_ATOMIC_BUILDER_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/detail/endian.hpp>
-#include <boost/atomic/detail/valid_integral_types.hpp>
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-/*
-given a Base that implements:
-
-- load(memory_order order)
-- compare_exchange_weak(integral_type &expected, integral_type desired, memory_order order)
-
-generates exchange and compare_exchange_strong
-*/
-template<typename Base>
-class build_exchange : public Base {
-public:
-	typedef typename Base::integral_type integral_type;
-	
-	using Base::load;
-	using Base::compare_exchange_weak;
-	
-	bool compare_exchange_strong(
-		integral_type &expected,
-		integral_type desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		integral_type expected_save=expected;
-		while(true) {
-			if (compare_exchange_weak(expected, desired, success_order, failure_order)) return true;
-			if (expected_save!=expected) return false;
-			expected=expected_save;
-		}
-	}
-	
-	integral_type exchange(integral_type replacement, memory_order order=memory_order_seq_cst) volatile
-	{
-		integral_type o=load(memory_order_relaxed);
-		do {} while(!compare_exchange_weak(o, replacement, order, memory_order_relaxed));
-		return o;
-	}
-	
-	build_exchange() {}
-	explicit build_exchange(integral_type i) : Base(i) {}
-};
-
-/*
-given a Base that implements:
-
-- fetch_add_var(integral_type c, memory_order order)
-- fetch_inc(memory_order order)
-- fetch_dec(memory_order order)
-
-creates a fetch_add method that delegates to fetch_inc/fetch_dec if operand
-is constant +1/-1, and uses fetch_add_var otherwise
-
-the intention is to allow optimizing the incredibly common case of +1/-1
-*/
-template<typename Base>
-class build_const_fetch_add : public Base {
-public:
-	typedef typename Base::integral_type integral_type;
-	
-	integral_type fetch_add(
-		integral_type c,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		if (__builtin_constant_p(c)) {
-			switch(c) {
-				case -1: return fetch_dec(order);
-				case 1: return fetch_inc(order);
-			}
-		}
-		return fetch_add_var(c, order);
-	}
-	
-	build_const_fetch_add() {}
-	explicit build_const_fetch_add(integral_type i) : Base(i) {}
-protected:
-	using Base::fetch_add_var;
-	using Base::fetch_inc;
-	using Base::fetch_dec;
-};
-
-/*
-given a Base that implements:
-
-- load(memory_order order)
-- compare_exchange_weak(integral_type &expected, integral_type desired, memory_order order)
-
-generates a -- not very efficient, but correct -- fetch_add operation
-*/
-template<typename Base>
-class build_fetch_add : public Base {
-public:
-	typedef typename Base::integral_type integral_type;
-	
-	using Base::compare_exchange_weak;
-	
-	integral_type fetch_add(
-		integral_type c, memory_order order=memory_order_seq_cst) volatile
-	{
-		integral_type o=Base::load(memory_order_relaxed), n;
-		do {n=o+c;} while(!compare_exchange_weak(o, n, order, memory_order_relaxed));
-		return o;
-	}
-	
-	build_fetch_add() {}
-	explicit build_fetch_add(integral_type i) : Base(i) {}
-};
-
-/*
-given a Base that implements:
-
-- fetch_add(integral_type c, memory_order order)
-
-generates fetch_sub and post/pre- increment/decrement operators
-*/
-template<typename Base>
-class build_arithmeticops : public Base {
-public:
-	typedef typename Base::integral_type integral_type;
-	
-	using Base::fetch_add;
-	
-	integral_type fetch_sub(
-		integral_type c,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		return fetch_add(-c, order);
-	}
-	
-	build_arithmeticops() {}
-	explicit build_arithmeticops(integral_type i) : Base(i) {}
-};
-
-/*
-given a Base that implements:
-
-- load(memory_order order)
-- compare_exchange_weak(integral_type &expected, integral_type desired, memory_order order)
-
-generates -- not very efficient, but correct -- fetch_and, fetch_or and fetch_xor operators
-*/
-template<typename Base>
-class build_logicops : public Base {
-public:
-	typedef typename Base::integral_type integral_type;
-	
-	using Base::compare_exchange_weak;
-	using Base::load;
-	
-	integral_type fetch_and(integral_type c, memory_order order=memory_order_seq_cst) volatile
-	{
-		integral_type o=load(memory_order_relaxed), n;
-		do {n=o&c;} while(!compare_exchange_weak(o, n, order, memory_order_relaxed));
-		return o;
-	}
-	integral_type fetch_or(integral_type c, memory_order order=memory_order_seq_cst) volatile
-	{
-		integral_type o=load(memory_order_relaxed), n;
-		do {n=o|c;} while(!compare_exchange_weak(o, n, order, memory_order_relaxed));
-		return o;
-	}
-	integral_type fetch_xor(integral_type c, memory_order order=memory_order_seq_cst) volatile
-	{
-		integral_type o=load(memory_order_relaxed), n;
-		do {n=o^c;} while(!compare_exchange_weak(o, n, order, memory_order_relaxed));
-		return o;
-	}
-	
-	build_logicops() {}
-	build_logicops(integral_type i) : Base(i) {}
-};
-
-/*
-given a Base that implements:
-
-- load(memory_order order)
-- store(integral_type i, memory_order order)
-- compare_exchange_weak(integral_type &expected, integral_type desired, memory_order order)
-
-generates the full set of atomic operations for integral types
-*/
-template<typename Base>
-class build_atomic_from_minimal : public build_logicops< build_arithmeticops< build_fetch_add< build_exchange<Base> > > > {
-public:
-	typedef build_logicops< build_arithmeticops< build_fetch_add< build_exchange<Base> > > > super;
-	typedef typename super::integral_type integral_type;
-	
-	build_atomic_from_minimal(void) {}
-	build_atomic_from_minimal(typename super::integral_type i) : super(i) {}
-};
-
-/*
-given a Base that implements:
-
-- load(memory_order order)
-- store(integral_type i, memory_order order)
-- compare_exchange_weak(integral_type &expected, integral_type desired, memory_order order)
-- compare_exchange_strong(integral_type &expected, integral_type desired, memory_order order)
-- exchange(integral_type replacement, memory_order order)
-- fetch_add_var(integral_type c, memory_order order)
-- fetch_inc(memory_order order)
-- fetch_dec(memory_order order)
-
-generates the full set of atomic operations for integral types
-*/
-template<typename Base>
-class build_atomic_from_typical : public build_logicops< build_arithmeticops< build_const_fetch_add<Base> > > {
-public:
-	typedef build_logicops< build_arithmeticops< build_const_fetch_add<Base> > > super;
-	typedef typename super::integral_type integral_type;
-	
-	build_atomic_from_typical(void) {}
-	build_atomic_from_typical(typename super::integral_type i) : super(i) {}
-};
-
-/*
-given a Base that implements:
-
-- load(memory_order order)
-- store(integral_type i, memory_order order)
-- compare_exchange_weak(integral_type &expected, integral_type desired, memory_order order)
-- compare_exchange_strong(integral_type &expected, integral_type desired, memory_order order)
-- exchange(integral_type replacement, memory_order order)
-- fetch_add(integral_type c, memory_order order)
-
-generates the full set of atomic operations for integral types
-*/
-template<typename Base>
-class build_atomic_from_add : public build_logicops< build_arithmeticops<Base> > {
-public:
-	typedef build_logicops< build_arithmeticops<Base> > super;
-	typedef typename super::integral_type integral_type;
-	
-	build_atomic_from_add(void) {}
-	build_atomic_from_add(typename super::integral_type i) : super(i) {}
-};
-
-/*
-given a Base that implements:
-
-- load(memory_order order)
-- store(integral_type i, memory_order order)
-- compare_exchange_weak(integral_type &expected, integral_type desired, memory_order order)
-- compare_exchange_strong(integral_type &expected, integral_type desired, memory_order order)
-- exchange(integral_type replacement, memory_order order)
-
-generates the full set of atomic operations for integral types
-*/
-template<typename Base>
-class build_atomic_from_exchange : public build_logicops< build_arithmeticops< build_fetch_add<Base> > > {
-public:
-	typedef build_logicops< build_arithmeticops< build_fetch_add<Base> > > super;
-	typedef typename super::integral_type integral_type;
-	
-	build_atomic_from_exchange(void) {}
-	build_atomic_from_exchange(typename super::integral_type i) : super(i) {}
-};
-
-
-/*
-given a Base that implements:
-
-- compare_exchange_weak()
-
-generates load, store and compare_exchange_weak for a smaller
-data type (e.g. an atomic "byte" embedded into a temporary
-and properly aligned atomic "int").
-*/
-template<typename Base, typename Type>
-class build_base_from_larger_type {
-public:
-	typedef Type integral_type;
-	
-	build_base_from_larger_type() {}
-	build_base_from_larger_type(integral_type t) {store(t, memory_order_relaxed);}
-	
-	integral_type load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		larger_integral_type v=get_base().load(order);
-		return extract(v);
-	}
-	bool compare_exchange_weak(integral_type &expected,
-		integral_type desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		larger_integral_type expected_;
-		larger_integral_type desired_;
-		
-		expected_=get_base().load(memory_order_relaxed);
-		expected_=insert(expected_, expected);
-		desired_=insert(expected_, desired);
-		bool success=get_base().compare_exchange_weak(expected_, desired_, success_order, failure_order);
-		expected=extract(expected_);
-		return success;
-	}
-	void store(integral_type v,
-		memory_order order=memory_order_seq_cst) volatile
-	{
-		larger_integral_type expected, desired;
-		expected=get_base().load(memory_order_relaxed);
-		do {
-			desired=insert(expected, v);
-		} while(!get_base().compare_exchange_weak(expected, desired, order, memory_order_relaxed));
-	}
-	
-	bool is_lock_free(void)
-	{
-		return get_base().is_lock_free();
-	}
-private:
-	typedef typename Base::integral_type larger_integral_type;
-	
-	const Base &get_base(void) const volatile
-	{
-		intptr_t address=(intptr_t)this;
-		address&=~(sizeof(larger_integral_type)-1);
-		return *reinterpret_cast<const Base *>(address);
-	}
-	Base &get_base(void) volatile
-	{
-		intptr_t address=(intptr_t)this;
-		address&=~(sizeof(larger_integral_type)-1);
-		return *reinterpret_cast<Base *>(address);
-	}
-	unsigned int get_offset(void) const volatile
-	{
-		intptr_t address=(intptr_t)this;
-		address&=(sizeof(larger_integral_type)-1);
-		return address;
-	}
-	
-	unsigned int get_shift(void) const volatile
-	{
-#if defined(BOOST_LITTLE_ENDIAN)
-		return get_offset()*8;
-#elif  defined(BOOST_BIG_ENDIAN)
-		return (sizeof(larger_integral_type)-sizeof(integral_type)-get_offset())*8;
-#else
-	#error "Unknown endian"
-#endif
-	}
-	
-	integral_type extract(larger_integral_type v) const volatile
-	{
-		return v>>get_shift();
-	}
-	
-	larger_integral_type insert(larger_integral_type target, integral_type source) const volatile
-	{
-		larger_integral_type tmp=source;
-		larger_integral_type mask=(larger_integral_type)-1;
-		
-		mask=~(mask<<(8*sizeof(integral_type)));
-		
-		mask=mask<<get_shift();
-		tmp=tmp<<get_shift();
-		
-		tmp=(tmp & mask) | (target & ~mask);
-		
-		return tmp;
-	}
-	
-	integral_type i;
-};
-
-/*
-given a Base that implements:
-
-- compare_exchange_weak()
-
-generates the full set of atomic ops for a smaller
-data type (e.g. an atomic "byte" embedded into a temporary
-and properly aligned atomic "int").
-*/
-template<typename Base, typename Type>
-class build_atomic_from_larger_type : public build_atomic_from_minimal< build_base_from_larger_type<Base, Type> > {
-public:
-	typedef build_atomic_from_minimal< build_base_from_larger_type<Base, Type> > super;
-	//typedef typename super::integral_type integral_type;
-	typedef Type integral_type;
-	
-	build_atomic_from_larger_type() {}
-	build_atomic_from_larger_type(integral_type v) : super(v) {}
-};
-
-}
-}
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/fallback.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/fallback.hpp
deleted file mode 100644
index 4c04155..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/fallback.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_FALLBACK_HPP
-#define BOOST_DETAIL_ATOMIC_FALLBACK_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <string.h>
-#include <boost/smart_ptr/detail/spinlock_pool.hpp>
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-template<typename T>
-class fallback_atomic {
-public:
-	fallback_atomic(void) {}
-	explicit fallback_atomic(const T &t) {memcpy(&i, &t, sizeof(T));}
-	
-	void store(const T &t, memory_order order=memory_order_seq_cst) volatile
-	{
-		detail::spinlock_pool<0>::scoped_lock guard(const_cast<T*>(&i));
-		memcpy((void*)&i, &t, sizeof(T));
-	}
-	T load(memory_order /*order*/=memory_order_seq_cst) volatile const
-	{
-		detail::spinlock_pool<0>::scoped_lock guard(const_cast<T*>(&i));
-		T tmp;
-		memcpy(&tmp, (T*)&i, sizeof(T));
-		return tmp;
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order /*success_order*/,
-		memory_order /*failure_order*/) volatile
-	{
-		detail::spinlock_pool<0>::scoped_lock guard(const_cast<T*>(&i));
-		if (memcmp((void*)&i, &expected, sizeof(T))==0) {
-			memcpy((void*)&i, &desired, sizeof(T));
-			return true;
-		} else {
-			memcpy(&expected, (void*)&i, sizeof(T));
-			return false;
-		}
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T replacement, memory_order /*order*/=memory_order_seq_cst) volatile
-	{
-		detail::spinlock_pool<0>::scoped_lock guard(const_cast<T*>(&i));
-		T tmp;
-		memcpy(&tmp, (void*)&i, sizeof(T));
-		memcpy((void*)&i, &replacement, sizeof(T));
-		return tmp;
-	}
-	bool is_lock_free(void) const volatile {return false;}
-protected:
-	T i;
-	typedef T integral_type;
-};
-
-}
-}
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/gcc-alpha.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/gcc-alpha.hpp
deleted file mode 100644
index 84a5411..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/gcc-alpha.hpp
+++ /dev/null
@@ -1,354 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_GCC_ALPHA_HPP
-#define BOOST_DETAIL_ATOMIC_GCC_ALPHA_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/atomic/detail/base.hpp>
-#include <boost/atomic/detail/builder.hpp>
-
-/*
-  Refer to http://h71000.www7.hp.com/doc/82final/5601/5601pro_004.html
-  (HP OpenVMS systems documentation) and the alpha reference manual.
- */
-
-/*
-	NB: The most natural thing would be to write the increment/decrement
-	operators along the following lines:
-	
-	__asm__ __volatile__(
-		"1: ldl_l %0,%1 \n"
-		"addl %0,1,%0 \n"
-		"stl_c %0,%1 \n"
-		"beq %0,1b\n"
-		: "=&b" (tmp)
-		: "m" (value)
-		: "cc"
-	);
-	
-	However according to the comments on the HP website and matching
-	comments in the Linux kernel sources this defies branch prediction,
-	as the cpu assumes that backward branches are always taken; so
-	instead copy the trick from the Linux kernel, introduce a forward
-	branch and back again.
-	
-	I have, however, had a hard time measuring the difference between
-	the two versions in microbenchmarks -- I am leaving it in nevertheless
-	as it apparently does not hurt either.
-*/
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-static inline void fence_before(memory_order order)
-{
-	switch(order) {
-		case memory_order_consume:
-		case memory_order_release:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			__asm__ __volatile__ ("mb" ::: "memory");
-		default:;
-	}
-}
-
-static inline void fence_after(memory_order order)
-{
-	switch(order) {
-		case memory_order_acquire:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			__asm__ __volatile__ ("mb" ::: "memory");
-		default:;
-	}
-}
-
-template<>
-inline void platform_atomic_thread_fence(memory_order order)
-{
-	switch(order) {
-		case memory_order_acquire:
-		case memory_order_consume:
-		case memory_order_release:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			__asm__ __volatile__ ("mb" ::: "memory");
-		default:;
-	}
-}
-
-template<typename T>
-class atomic_alpha_32 {
-public:
-	typedef T integral_type;
-	explicit atomic_alpha_32(T v) : i(v) {}
-	atomic_alpha_32() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const int *>(&i);
-		fence_after(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		fence_before(order);
-		*reinterpret_cast<volatile int *>(&i)=(int)v;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		int current, success;
-		__asm__ __volatile__(
-			"1: ldl_l %2, %4\n"
-			"cmpeq %2, %0, %3\n"
-			"mov %2, %0\n"
-			"beq %3, 3f\n"
-			"stl_c %1, %4\n"
-			"2:\n"
-			
-			".subsection 2\n"
-			"3: mov %3, %1\n"
-			"br 2b\n"
-			".previous\n"
-			
-			: "+&r" (expected), "+&r" (desired), "=&r"(current), "=&r"(success)
-			: "m" (i)
-			:
-		);
-		if (desired) fence_after(success_order);
-		else fence_after(failure_order);
-		return desired;
-	}
-	
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	inline T fetch_add_var(T c, memory_order order) volatile
-	{
-		fence_before(order);
-		T original, modified;
-		__asm__ __volatile__(
-			"1: ldl_l %0, %2\n"
-			"addl %0, %3, %1\n"
-			"stl_c %1, %2\n"
-			"beq %1, 2f\n"
-			
-			".subsection 2\n"
-			"2: br 1b\n"
-			".previous\n"
-			
-			: "=&r" (original), "=&r" (modified)
-			: "m" (i), "r" (c)
-			:
-		);
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_inc(memory_order order) volatile
-	{
-		fence_before(order);
-		int original, modified;
-		__asm__ __volatile__(
-			"1: ldl_l %0, %2\n"
-			"addl %0, 1, %1\n"
-			"stl_c %1, %2\n"
-			"beq %1, 2f\n"
-			
-			".subsection 2\n"
-			"2: br 1b\n"
-			".previous\n"
-			
-			: "=&r" (original), "=&r" (modified)
-			: "m" (i)
-			:
-		);
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_dec(memory_order order) volatile
-	{
-		fence_before(order);
-		int original, modified;
-		__asm__ __volatile__(
-			"1: ldl_l %0, %2\n"
-			"subl %0, 1, %1\n"
-			"stl_c %1, %2\n"
-			"beq %1, 2f\n"
-			
-			".subsection 2\n"
-			"2: br 1b\n"
-			".previous\n"
-			
-			: "=&r" (original), "=&r" (modified)
-			: "m" (i)
-			:
-		);
-		fence_after(order);
-		return original;
-	}
-private:
-	T i;
-};
-
-template<typename T>
-class atomic_alpha_64 {
-public:
-	typedef T integral_type;
-	explicit atomic_alpha_64(T v) : i(v) {}
-	atomic_alpha_64() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const T *>(&i);
-		fence_after(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		fence_before(order);
-		*reinterpret_cast<volatile T *>(&i)=v;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		int current, success;
-		__asm__ __volatile__(
-			"1: ldq_l %2, %4\n"
-			"cmpeq %2, %0, %3\n"
-			"mov %2, %0\n"
-			"beq %3, 3f\n"
-			"stq_c %1, %4\n"
-			"2:\n"
-			
-			".subsection 2\n"
-			"3: mov %3, %1\n"
-			"br 2b\n"
-			".previous\n"
-			
-			: "+&r" (expected), "+&r" (desired), "=&r"(current), "=&r"(success)
-			: "m" (i)
-			:
-		);
-		if (desired) fence_after(success_order);
-		else fence_after(failure_order);
-		return desired;
-	}
-	
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	inline T fetch_add_var(T c, memory_order order) volatile
-	{
-		fence_before(order);
-		T original, modified;
-		__asm__ __volatile__(
-			"1: ldq_l %0, %2\n"
-			"addq %0, %3, %1\n"
-			"stq_c %1, %2\n"
-			"beq %1, 2f\n"
-			
-			".subsection 2\n"
-			"2: br 1b\n"
-			".previous\n"
-			
-			: "=&r" (original), "=&r" (modified)
-			: "m" (i), "r" (c)
-			:
-		);
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_inc(memory_order order) volatile
-	{
-		fence_before(order);
-		T original, modified;
-		__asm__ __volatile__(
-			"1: ldq_l %0, %2\n"
-			"addq %0, 1, %1\n"
-			"stq_c %1, %2\n"
-			"beq %1, 2f\n"
-			
-			".subsection 2\n"
-			"2: br 1b\n"
-			".previous\n"
-			
-			: "=&r" (original), "=&r" (modified)
-			: "m" (i)
-			:
-		);
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_dec(memory_order order) volatile
-	{
-		fence_before(order);
-		T original, modified;
-		__asm__ __volatile__(
-			"1: ldq_l %0, %2\n"
-			"subq %0, 1, %1\n"
-			"stq_c %1, %2\n"
-			"beq %1, 2f\n"
-			
-			".subsection 2\n"
-			"2: br 1b\n"
-			".previous\n"
-			
-			: "=&r" (original), "=&r" (modified)
-			: "m" (i)
-			:
-		);
-		fence_after(order);
-		return original;
-	}
-private:
-	T i;
-};
-
-template<typename T>
-class platform_atomic_integral<T, 4> : public build_atomic_from_typical<build_exchange<atomic_alpha_32<T> > > {
-public:
-	typedef build_atomic_from_typical<build_exchange<atomic_alpha_32<T> > > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 8> : public build_atomic_from_typical<build_exchange<atomic_alpha_64<T> > > {
-public:
-	typedef build_atomic_from_typical<build_exchange<atomic_alpha_64<T> > > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 1>: public build_atomic_from_larger_type<atomic_alpha_32<uint32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_alpha_32<uint32_t>, T> super;
-	
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 2>: public build_atomic_from_larger_type<atomic_alpha_32<uint32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_alpha_32<uint32_t>, T> super;
-	
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-}
-}
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/gcc-armv6+.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/gcc-armv6+.hpp
deleted file mode 100644
index cd8609d..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/gcc-armv6+.hpp
+++ /dev/null
@@ -1,299 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_GCC_ARMV6P_HPP
-#define BOOST_DETAIL_ATOMIC_GCC_ARMV6P_HPP
-
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-//
-//  Copyright (c) 2009 Helge Bahmann
-//  Copyright (c) 2009 Phil Endecott
-//  ARM Code by Phil Endecott, based on other architectures.
-
-
-#include <boost/memory_order.hpp>
-#include <boost/atomic/detail/base.hpp>
-#include <boost/atomic/detail/builder.hpp>
-
-// From the ARM Architecture Reference Manual for architecture v6:
-// 
-// LDREX{<cond>} <Rd>, [<Rn>]
-// <Rd> Specifies the destination register for the memory word addressed by <Rd>
-// <Rn> Specifies the register containing the address.
-// 
-// STREX{<cond>} <Rd>, <Rm>, [<Rn>]
-// <Rd> Specifies the destination register for the returned status value.
-//      0  if the operation updates memory
-//      1  if the operation fails to update memory
-// <Rm> Specifies the register containing the word to be stored to memory.
-// <Rn> Specifies the register containing the address.
-// Rd must not be the same register is Rm or Rn.
-//
-// ARM v7 is like ARM v6 plus:
-// There are half-word and byte versions of the LDREX and STREX instructions,
-// LDREXH, LDREXB, STREXH and STREXB.
-// There are also double-word versions, LDREXD and STREXD.
-// (Actually it looks like these are available from version 6k onwards.)
-// FIXME these are not yet used; should be mostly a matter of copy-and-paste.
-// I think you can supply an immediate offset to the address.
-//
-// A memory barrier is effected using a "co-processor 15" instruction, 
-// though a separate assembler mnemonic is available for it in v7.
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-
-// "Thumb 1" is a subset of the ARM instruction set that uses a 16-bit encoding.  It
-// doesn't include all instructions and in particular it doesn't include the co-processor
-// instruction used for the memory barrier or the load-locked/store-conditional 
-// instructions.  So, if we're compiling in "Thumb 1" mode, we need to wrap all of our 
-// asm blocks with code to temporarily change to ARM mode.
-//
-// You can only change between ARM and Thumb modes when branching using the bx instruction. 
-// bx takes an address specified in a register.  The least significant bit of the address 
-// indicates the mode, so 1 is added to indicate that the destination code is Thumb. 
-// A temporary register is needed for the address and is passed as an argument to these 
-// macros.  It must be one of the "low" registers accessible to Thumb code, specified 
-// usng the "l" attribute in the asm statement.
-//
-// Architecture v7 introduces "Thumb 2", which does include (almost?) all of the ARM 
-// instruction set.  So in v7 we don't need to change to ARM mode; we can write "universal 
-// assembler" which will assemble to Thumb 2 or ARM code as appropriate.  The only thing 
-// we need to do to make this "universal" assembler mode work is to insert "IT" instructions 
-// to annotate the conditional instructions.  These are ignored in other modes (e.g. v6), 
-// so they can always be present.
-
-#if defined(__thumb__) && !defined(__ARM_ARCH_7A__)
-// FIXME also other v7 variants.
-#define BOOST_ATOMIC_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 1f\n" "bx " #TMPREG "\n" ".arm\n" ".align 4\n" "1: "
-#define BOOST_ATOMIC_ARM_ASM_END(TMPREG)   "adr " #TMPREG ", 1f + 1\n" "bx " #TMPREG "\n" ".thumb\n" ".align 2\n" "1: "
-
-#else
-// The tmpreg is wasted in this case, which is non-optimal.
-#define BOOST_ATOMIC_ARM_ASM_START(TMPREG)
-#define BOOST_ATOMIC_ARM_ASM_END(TMPREG)
-#endif
-
-
-#if defined(__ARM_ARCH_7A__)
-// FIXME ditto.
-#define BOOST_ATOMIC_ARM_DMB "dmb\n"
-#else
-#define BOOST_ATOMIC_ARM_DMB "mcr\tp15, 0, r0, c7, c10, 5\n"
-#endif
-
-// There is also a "Data Synchronisation Barrier" DSB; this exists in v6 as another co-processor
-// instruction like the above.
-
-
-static inline void fence_before(memory_order order)
-{
-	// FIXME I don't understand enough about barriers to know what this should do.
-	switch(order) {
-		case memory_order_release:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			int brtmp;
-			__asm__ __volatile__ (
-				BOOST_ATOMIC_ARM_ASM_START(%0)
-				BOOST_ATOMIC_ARM_DMB
-				BOOST_ATOMIC_ARM_ASM_END(%0)
-				: "=&l" (brtmp) :: "memory"
-			);
-		default:;
-	}
-}
-
-static inline void fence_after(memory_order order)
-{
-	// FIXME I don't understand enough about barriers to know what this should do.
-	switch(order) {
-		case memory_order_acquire:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			int brtmp;
-			__asm__ __volatile__ (
-				BOOST_ATOMIC_ARM_ASM_START(%0)
-				BOOST_ATOMIC_ARM_DMB
-				BOOST_ATOMIC_ARM_ASM_END(%0)
-				: "=&l" (brtmp) :: "memory"
-			);
-		case memory_order_consume:
-			__asm__ __volatile__ ("" ::: "memory");
-		default:;
-	}
-}
-
-#undef BOOST_ATOMIC_ARM_DMB
-
-
-template<typename T>
-class atomic_arm_4 {
-public:
-	typedef T integral_type;
-	explicit atomic_arm_4(T v) : i(v) {}
-	atomic_arm_4() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=const_cast<volatile const T &>(i);
-		fence_after(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		fence_before(order);
-		const_cast<volatile T &>(i)=v;
-	}
-        bool compare_exchange_weak(
-                T &expected,
-                T desired,
-                memory_order success_order,
-                memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		int success;
-		int tmp;
-		__asm__ __volatile__(
-			BOOST_ATOMIC_ARM_ASM_START(%2)
-			"mov     %1, #0\n"        // success = 0
-			"ldrex   %0, [%3]\n"      // expected' = *(&i)
-			"teq     %0, %4\n"        // flags = expected'==expected
-			"ittt    eq\n"
-			"strexeq %2, %5, [%3]\n"  // if (flags.equal) *(&i) = desired, tmp = !OK
-			"teqeq   %2, #0\n"        // if (flags.equal) flags = tmp==0
-			"moveq   %1, #1\n"        // if (flags.equal) success = 1
-			BOOST_ATOMIC_ARM_ASM_END(%2)
-				: "=&r" (expected),  // %0
-				  "=&r" (success),   // %1
-				  "=&l" (tmp)        // %2
-                                : "r" (&i),          // %3
-				  "r" (expected),    // %4
-				  "r" ((int)desired) // %5
-				: "cc"
-			);
-                if (success) fence_after(success_order);
-                else fence_after(failure_order);
-		return success;
-	}
-	
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	inline T fetch_add_var(T c, memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		int tmp2;
-		__asm__ __volatile__(
-			BOOST_ATOMIC_ARM_ASM_START(%2)
-			"1: ldrex %0, [%3]\n"      // original = *(&i)
-			"add      %1, %0, %4\n"    // tmp = original + c
-			"strex    %2, %1, [%3]\n"  // *(&i) = tmp;  tmp2 = !OK
-			"teq      %2, #0\n"        // flags = tmp2==0
-			"it       ne\n"
-			"bne      1b\n"            // if (!flags.equal) goto 1
-			BOOST_ATOMIC_ARM_ASM_END(%2)
-				: "=&r" (original), // %0
-				  "=&r" (tmp),      // %1
-				  "=&l" (tmp2)      // %2
-				: "r" (&i),         // %3
-				  "r" (c)           // %4
-				: "cc"
-			);
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_inc(memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		int tmp2;
-		__asm__ __volatile__(
-			BOOST_ATOMIC_ARM_ASM_START(%2)
-			"1: ldrex %0, [%3]\n"      // original = *(&i)
-			"add      %1, %0, #1\n"    // tmp = original + 1
-			"strex    %2, %1, [%3]\n"  // *(&i) = tmp;  tmp2 = !OK
-			"teq      %2, #0\n"        // flags = tmp2==0
-			"it       ne\n"
-			"bne      1b\n"            // if (!flags.equal) goto 1
-			BOOST_ATOMIC_ARM_ASM_END(%2)
-				: "=&r" (original), // %0
-				  "=&r" (tmp),      // %1
-				  "=&l" (tmp2)      // %2
-				: "r" (&i)          // %3
-				: "cc"
-			);
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_dec(memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		int tmp2;
-		__asm__ __volatile__(
-			BOOST_ATOMIC_ARM_ASM_START(%2)
-			"1: ldrex %0, [%3]\n"      // original = *(&i)
-			"sub      %1, %0, #1\n"    // tmp = original - 1
-			"strex    %2, %1, [%3]\n"  // *(&i) = tmp;  tmp2 = !OK
-			"teq      %2, #0\n"        // flags = tmp2==0
-			"it       ne\n"
-			"bne      1b\n"            // if (!flags.equal) goto 1
-			BOOST_ATOMIC_ARM_ASM_END(%2)
-				: "=&r" (original), // %0
-				  "=&r" (tmp),      // %1
-				  "=&l" (tmp2)      // %2
-				: "r" (&i)          // %3
-				: "cc"
-			);
-		fence_after(order);
-		return original;
-	}
-private:
-	T i;
-};
-
-
-// #ifdef _ARM_ARCH_7
-// FIXME TODO can add native byte and halfword version here
-
-
-template<typename T>
-class platform_atomic_integral<T, 4> : public build_atomic_from_typical<build_exchange<atomic_arm_4<T> > > {
-public:
-	typedef build_atomic_from_typical<build_exchange<atomic_arm_4<T> > > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 1>: public build_atomic_from_larger_type<atomic_arm_4<uint32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_arm_4<uint32_t>, T> super;
-	
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 2>: public build_atomic_from_larger_type<atomic_arm_4<uint32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_arm_4<uint32_t>, T> super;
-	
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-
-
-typedef build_exchange<atomic_arm_4<void *> > platform_atomic_address;
-
-}
-}
-}
-
-#undef BOOST_ATOMIC_ARM_ASM_START
-#undef BOOST_ATOMIC_ARM_ASM_END
-
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/gcc-ppc.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/gcc-ppc.hpp
deleted file mode 100644
index ea6ba54..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/gcc-ppc.hpp
+++ /dev/null
@@ -1,351 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_GCC_PPC_HPP
-#define BOOST_DETAIL_ATOMIC_GCC_PPC_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/atomic/detail/base.hpp>
-#include <boost/atomic/detail/builder.hpp>
-
-/*
-  Refer to: Motorola: "Programming Environments Manual for 32-Bit
-  Implementations of the PowerPC Architecture", Appendix E:
-  "Synchronization Programming Examples" for an explanation of what is
-  going on here (can be found on the web at various places by the
-  name "MPCFPE32B.pdf", Google is your friend...)
- */
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-static inline void fence_before(memory_order order)
-{
-	switch(order) {
-		case memory_order_release:
-		case memory_order_acq_rel:
-#if defined(__powerpc64__)
-			__asm__ __volatile__ ("lwsync" ::: "memory");
-			break;
-#endif
-		case memory_order_seq_cst:
-			__asm__ __volatile__ ("sync" ::: "memory");
-		default:;
-	}
-}
-
-/* Note on the barrier instructions used by fence_after and
-atomic_thread_fence: the "isync" instruction normally does
-not wait for memory-accessing operations to complete, the
-"trick" is to introduce a conditional branch that formally
-depends on the memory-accessing instruction -- isync waits
-until the branch can be resolved and thus implicitly until
-the memory access completes.
-
-This means that the load(memory_order_relaxed) instruction
-includes this branch, even though no barrier would be required
-here, but as a consequence atomic_thread_fence(memory_order_acquire)
-would have to be implemented using "sync" instead of "isync".
-The following simple cost-analysis provides the rationale
-for this decision:
-
-- isync: about ~12 cycles
-- sync: about ~50 cycles
-- "spurious" branch after load: 1-2 cycles
-- making the right decision: priceless
-
-*/
-
-static inline void fence_after(memory_order order)
-{
-	switch(order) {
-		case memory_order_acquire:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			__asm__ __volatile__ ("isync");
-		case memory_order_consume:
-			__asm__ __volatile__ ("" ::: "memory");
-		default:;
-	}
-}
-
-template<>
-inline void platform_atomic_thread_fence(memory_order order)
-{
-	switch(order) {
-		case memory_order_acquire:
-			__asm__ __volatile__ ("isync" ::: "memory");
-			break;
-		case memory_order_release:
-		case memory_order_acq_rel:
-#if defined(__powerpc64__)
-			__asm__ __volatile__ ("lwsync" ::: "memory");
-			break;
-#endif
-		case memory_order_seq_cst:
-			__asm__ __volatile__ ("sync" ::: "memory");
-		default:;
-	}
-}
-
-
-/* note: the __asm__ constraint "b" instructs gcc to use any register
-except r0; this is required because r0 is not allowed in
-some places. Since I am sometimes unsure if it is allowed
-or not just play it safe and avoid r0 entirely -- ppc isn't
-exactly register-starved, so this really should not matter :) */
-
-template<typename T>
-class atomic_ppc_32 {
-public:
-	typedef T integral_type;
-	explicit atomic_ppc_32(T v) : i(v) {}
-	atomic_ppc_32() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const T *>(&i);
-		__asm__ __volatile__ (
-			"cmpw %0, %0\n"
-			"bne- 1f\n"
-			"1:\n"
-			: "+b"(v));
-		fence_after(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		fence_before(order);
-		*reinterpret_cast<volatile T *>(&i)=v;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		int success;
-		__asm__ __volatile__(
-			"lwarx %0,0,%2\n"
-			"cmpw %0, %3\n"
-			"bne- 2f\n"
-			"stwcx. %4,0,%2\n"
-			"bne- 2f\n"
-			"addi %1,0,1\n"
-			"1:"
-
-			".subsection 2\n"
-			"2: addi %1,0,0\n"
-			"b 1b\n"
-			".previous\n"
-				: "=&b" (expected), "=&b" (success)
-				: "b" (&i), "b" (expected), "b" ((int)desired)
-			);
-		if (success) fence_after(success_order);
-		else fence_after(failure_order);
-		return success;
-	}
-
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	inline T fetch_add_var(T c, memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		__asm__ __volatile__(
-			"1: lwarx %0,0,%2\n"
-			"add %1,%0,%3\n"
-			"stwcx. %1,0,%2\n"
-			"bne- 1b\n"
-			: "=&b" (original), "=&b" (tmp)
-			: "b" (&i), "b" (c)
-			: "cc");
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_inc(memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		__asm__ __volatile__(
-			"1: lwarx %0,0,%2\n"
-			"addi %1,%0,1\n"
-			"stwcx. %1,0,%2\n"
-			"bne- 1b\n"
-			: "=&b" (original), "=&b" (tmp)
-			: "b" (&i)
-			: "cc");
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_dec(memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		__asm__ __volatile__(
-			"1: lwarx %0,0,%2\n"
-			"addi %1,%0,-1\n"
-			"stwcx. %1,0,%2\n"
-			"bne- 1b\n"
-			: "=&b" (original), "=&b" (tmp)
-			: "b" (&i)
-			: "cc");
-		fence_after(order);
-		return original;
-	}
-private:
-	T i;
-};
-
-#if defined(__powerpc64__)
-
-#warning Untested code -- please inform me if it works
-
-template<typename T>
-class atomic_ppc_64 {
-public:
-	typedef T integral_type;
-	explicit atomic_ppc_64(T v) : i(v) {}
-	atomic_ppc_64() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const T *>(&i);
-		__asm__ __volatile__ (
-			"cmpw %0, %0\n"
-			"bne- 1f\n"
-			"1:\n"
-			: "+b"(v));
-		fence_after(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		fence_before(order);
-		*reinterpret_cast<volatile T *>(&i)=v;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		int success;
-		__asm__ __volatile__(
-			"ldarx %0,0,%2\n"
-			"cmpw %0, %3\n"
-			"bne- 2f\n"
-			"stdcx. %4,0,%2\n"
-			"bne- 2f\n"
-			"addi %1,0,1\n"
-			"1:"
-
-			".subsection 2\n"
-			"2: addi %1,0,0\n"
-			"b 1b\n"
-			".previous\n"
-				: "=&b" (expected), "=&b" (success)
-				: "b" (&i), "b" (expected), "b" ((int)desired)
-			);
-		if (success) fence_after(success_order);
-		else fence_after(failure_order);
-		fence_after(order);
-		return success;
-	}
-
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	inline T fetch_add_var(T c, memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		__asm__ __volatile__(
-			"1: ldarx %0,0,%2\n"
-			"add %1,%0,%3\n"
-			"stdcx. %1,0,%2\n"
-			"bne- 1b\n"
-			: "=&b" (original), "=&b" (tmp)
-			: "b" (&i), "b" (c)
-			: "cc");
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_inc(memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		__asm__ __volatile__(
-			"1: ldarx %0,0,%2\n"
-			"addi %1,%0,1\n"
-			"stdcx. %1,0,%2\n"
-			"bne- 1b\n"
-			: "=&b" (original), "=&b" (tmp)
-			: "b" (&i)
-			: "cc");
-		fence_after(order);
-		return original;
-	}
-	inline T fetch_dec(memory_order order) volatile
-	{
-		fence_before(order);
-		T original, tmp;
-		__asm__ __volatile__(
-			"1: ldarx %0,0,%2\n"
-			"addi %1,%0,-1\n"
-			"stdcx. %1,0,%2\n"
-			"bne- 1b\n"
-			: "=&b" (original), "=&b" (tmp)
-			: "b" (&i)
-			: "cc");
-		fence_after(order);
-		return original;
-	}
-private:
-	T i;
-};
-#endif
-
-template<typename T>
-class platform_atomic_integral<T, 4> : public build_atomic_from_typical<build_exchange<atomic_ppc_32<T> > > {
-public:
-	typedef build_atomic_from_typical<build_exchange<atomic_ppc_32<T> > > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 1>: public build_atomic_from_larger_type<atomic_ppc_32<uint32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_ppc_32<uint32_t>, T> super;
-
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 2>: public build_atomic_from_larger_type<atomic_ppc_32<uint32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_ppc_32<uint32_t>, T> super;
-
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-#if defined(__powerpc64__)
-template<typename T>
-class platform_atomic_integral<T, 8> : public build_atomic_from_typical<build_exchange<atomic_ppc_64<T> > > {
-public:
-	typedef build_atomic_from_typical<build_exchange<atomic_ppc_64<T> > > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-#endif
-
-}
-}
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/gcc-x86.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/gcc-x86.hpp
deleted file mode 100644
index 201e4bd..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/gcc-x86.hpp
+++ /dev/null
@@ -1,541 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_GCC_X86_HPP
-#define BOOST_DETAIL_ATOMIC_GCC_X86_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/atomic/detail/base.hpp>
-#include <boost/atomic/detail/builder.hpp>
-
-#include <boost/cstdint.hpp>
-
-#define __BOOST_AMD_64 defined(__amd64__) || defined(__x86_64__)
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-static inline void fence_before(memory_order order)
-{
-	switch(order) {
-		case memory_order_consume:
-		case memory_order_release:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			__asm__ __volatile__ ("" ::: "memory");
-		default:;
-	}
-}
-
-static inline void fence_after(memory_order order)
-{
-	switch(order) {
-		case memory_order_acquire:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			__asm__ __volatile__ ("" ::: "memory");
-		default:;
-	}
-}
-
-static inline void full_fence(void)
-{
-#if __BOOST_AMD_64
-			__asm__ __volatile__("mfence" ::: "memory");
-#else
-			/* could use mfence iff i686, but it does not appear to matter much */
-			__asm__ __volatile__("lock; addl $0, (%%esp)"  ::: "memory");
-#endif
-}
-
-static inline void fence_after_load(memory_order order)
-{
-	switch(order) {
-		case memory_order_seq_cst:
-			full_fence();
-		case memory_order_acquire:
-		case memory_order_acq_rel:
-			__asm__ __volatile__ ("" ::: "memory");
-		default:;
-	}
-}
-
-template<>
-inline void platform_atomic_thread_fence(memory_order order)
-{
-	switch(order) {
-		case memory_order_seq_cst:
-			full_fence();
-		case memory_order_acquire:
-		case memory_order_consume:
-		case memory_order_acq_rel:
-		case memory_order_release:
-			__asm__ __volatile__ ("" ::: "memory");
-		default:;
-	}
-}
-
-template<typename T>
-class atomic_x86_8 {
-public:
-	explicit atomic_x86_8(T v) : i(v) {}
-	atomic_x86_8() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const T *>(&i);
-		fence_after_load(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		if (order!=memory_order_seq_cst) {
-			fence_before(order);
-			*reinterpret_cast<volatile T *>(&i)=v;
-		} else {
-			exchange(v);
-		}
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		T prev=expected;
-		__asm__ __volatile__("lock; cmpxchgb %1, %2\n" : "=a" (prev) : "q" (desired), "m" (i), "a" (expected) : "memory");
-		bool success=(prev==expected);
-		if (success) fence_after(success_order);
-		else fence_after(failure_order);
-		expected=prev;
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T r, memory_order order=memory_order_seq_cst) volatile
-	{
-		__asm__ __volatile__("xchgb %0, %1\n" : "=q" (r) : "m"(i), "0" (r) : "memory");
-		return r;
-	}
-	T fetch_add(T c, memory_order order=memory_order_seq_cst) volatile
-	{
-		__asm__ __volatile__("lock; xaddb %0, %1" : "+q" (c), "+m" (i) :: "memory");
-		return c;
-	}
-
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	typedef T integral_type;
-private:
-	T i;
-};
-
-template<typename T>
-class platform_atomic_integral<T, 1> : public build_atomic_from_add<atomic_x86_8<T> > {
-public:
-	typedef build_atomic_from_add<atomic_x86_8<T> > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class atomic_x86_16 {
-public:
-	explicit atomic_x86_16(T v) : i(v) {}
-	atomic_x86_16() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const T *>(&i);
-		fence_after_load(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		if (order!=memory_order_seq_cst) {
-			fence_before(order);
-			*reinterpret_cast<volatile T *>(&i)=v;
-		} else {
-			exchange(v);
-		}
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		T prev=expected;
-		__asm__ __volatile__("lock; cmpxchgw %1, %2\n" : "=a" (prev) : "q" (desired), "m" (i), "a" (expected) : "memory");
-		bool success=(prev==expected);
-		if (success) fence_after(success_order);
-		else fence_after(failure_order);
-		expected=prev;
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T r, memory_order order=memory_order_seq_cst) volatile
-	{
-		__asm__ __volatile__("xchgw %0, %1\n" : "=r" (r) : "m"(i), "0" (r) : "memory");
-		return r;
-	}
-	T fetch_add(T c, memory_order order=memory_order_seq_cst) volatile
-	{
-		__asm__ __volatile__("lock; xaddw %0, %1" : "+r" (c), "+m" (i) :: "memory");
-		return c;
-	}
-
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	typedef T integral_type;
-private:
-	T i;
-};
-
-template<typename T>
-class platform_atomic_integral<T, 2> : public build_atomic_from_add<atomic_x86_16<T> > {
-public:
-	typedef build_atomic_from_add<atomic_x86_16<T> > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class atomic_x86_32 {
-public:
-	explicit atomic_x86_32(T v) : i(v) {}
-	atomic_x86_32() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const T *>(&i);
-		fence_after_load(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		if (order!=memory_order_seq_cst) {
-			fence_before(order);
-			*reinterpret_cast<volatile T *>(&i)=v;
-		} else {
-			exchange(v);
-		}
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		T prev=expected;
-		__asm__ __volatile__("lock; cmpxchgl %1, %2\n" : "=a" (prev) : "q" (desired), "m" (i), "a" (expected) : "memory");
-		bool success=(prev==expected);
-		if (success) fence_after(success_order);
-		else fence_after(failure_order);
-		expected=prev;
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T r, memory_order order=memory_order_seq_cst) volatile
-	{
-		__asm__ __volatile__("xchgl %0, %1\n" : "=r" (r) : "m"(i), "0" (r) : "memory");
-		return r;
-	}
-	T fetch_add(T c, memory_order order=memory_order_seq_cst) volatile
-	{
-		__asm__ __volatile__("lock; xaddl %0, %1" : "+r" (c), "+m" (i) :: "memory");
-		return c;
-	}
-
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	typedef T integral_type;
-private:
-	T i;
-};
-
-template<typename T>
-class platform_atomic_integral<T, 4> : public build_atomic_from_add<atomic_x86_32<T> > {
-public:
-	typedef build_atomic_from_add<atomic_x86_32<T> > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-#if __BOOST_AMD_64
-template<typename T>
-class atomic_x86_64 {
-public:
-	explicit atomic_x86_64(T v) : i(v) {}
-	atomic_x86_64() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const T *>(&i);
-		fence_after_load(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		if (order!=memory_order_seq_cst) {
-			fence_before(order);
-			*reinterpret_cast<volatile T *>(&i)=v;
-		} else {
-			exchange(v);
-		}
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		fence_before(success_order);
-		T prev=expected;
-		__asm__ __volatile__("lock; cmpxchgq %1, %2\n" : "=a" (prev) : "q" (desired), "m" (i), "a" (expected) : "memory");
-		bool success=(prev==expected);
-		if (success) fence_after(success_order);
-		else fence_after(failure_order);
-		expected=prev;
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T r, memory_order order=memory_order_seq_cst) volatile
-	{
-		__asm__ __volatile__("xchgq %0, %1\n" : "=r" (r) : "m"(i), "0" (r) : "memory");
-		return r;
-	}
-	T fetch_add(T c, memory_order order=memory_order_seq_cst) volatile
-	{
-		__asm__ __volatile__("lock; xaddq %0, %1" : "+r" (c), "+m" (i) :: "memory");
-		return c;
-	}
-
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	typedef T integral_type;
-private:
-	T i;
-} __attribute__((aligned(8)));
-
-#elif defined(__i686__)
-
-template<typename T>
-class atomic_x86_64 {
-private:
-	typedef atomic_x86_64 this_type;
-public:
-	explicit atomic_x86_64(T v) : i(v) {}
-	atomic_x86_64() {}
-
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
-		T prev = __sync_val_compare_and_swap_8(&i, expected, desired);
-		bool success=(prev==expected);
-		if (success) fence_after(success_order);
-		else fence_after(failure_order);
-		expected=prev;
-		return success;
-#else
-		long scratch;
-		fence_before(success_order);
-		T prev=expected;
-		/* Make sure ebx is saved and restored properly in case
-		this object is compiled as "position independent". Since
-		programmers on x86 tend to forget specifying -DPIC or
-		similar, always assume PIC.
-
-		To make this work uniformly even in the non-PIC case,
-		setup register constraints such that ebx can not be
-		used by accident e.g. as base address for the variable
-		to be modified. Accessing "scratch" should always be okay,
-		as it can only be placed on the stack (and therefore
-		accessed through ebp or esp only).
-
-		In theory, could push/pop ebx onto/off the stack, but movs
-		to a prepared stack slot turn out to be faster. */
-		__asm__ __volatile__(
-			"movl %%ebx, %1\n"
-			"movl %2, %%ebx\n"
-			"lock; cmpxchg8b 0(%4)\n"
-			"movl %1, %%ebx\n"
-			: "=A" (prev), "=m" (scratch)
-			: "D" ((long)desired), "c" ((long)((boost::uint64_t)desired>>32)), "S" (&i), "0" (prev)
-			: "memory");
-		bool success=(prev==expected);
-		if (success) fence_after(success_order);
-		else fence_after(failure_order);
-		expected=prev;
-		return success;
-#endif
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T r, memory_order order=memory_order_seq_cst) volatile
-	{
-		T prev=i;
-		do {} while(!compare_exchange_strong(prev, r, order, memory_order_relaxed));
-		return prev;
-	}
-
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		/* this is a bit problematic -- there is no other
-		way to atomically load a 64 bit value, but of course
-		compare_exchange requires write access to the memory
-		area */
-		T expected=i;
-		do { } while(!const_cast<this_type *>(this)->compare_exchange_strong(expected, expected, order, memory_order_relaxed));
-		return expected;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		exchange(v, order);
-	}
-	T fetch_add(T c, memory_order order=memory_order_seq_cst) volatile
-	{
-		T expected=i, desired;;
-		do {
-			desired=expected+c;
-		} while(!compare_exchange_strong(expected, desired, order, memory_order_relaxed));
-		return expected;
-	}
-
-	bool is_lock_free(void) const volatile {return true;}
-protected:
-	typedef T integral_type;
-private:
-	T i;
-} __attribute__((aligned(8))) ;
-
-#endif
-
-#if __BOOST_AMD_64 || defined(__i686__)
-template<typename T>
-class platform_atomic_integral<T, 8> : public build_atomic_from_add<atomic_x86_64<T> >{
-public:
-	typedef build_atomic_from_add<atomic_x86_64<T> > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-#endif
-
-#if __BOOST_AMD_64 && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16)
-template<typename T>
-class atomic_x86_128 {
-public:
-    explicit atomic_x86_128(T v) : i(v) {}
-    atomic_x86_128() {}
-    T load(memory_order order=memory_order_seq_cst) const volatile
-    {
-        T v=*reinterpret_cast<volatile const T *>(&i);
-        fence_after_load(order);
-        return v;
-    }
-    void store(T v, memory_order order=memory_order_seq_cst) volatile
-    {
-        if (order!=memory_order_seq_cst) {
-            fence_before(order);
-            *reinterpret_cast<volatile T *>(&i)=v;
-        } else {
-            exchange(v);
-        }
-    }
-    bool compare_exchange_strong(
-        T &expected,
-        T desired,
-        memory_order success_order,
-        memory_order failure_order) volatile
-    {
-        T prev = __sync_val_compare_and_swap_16(&i, expected, desired);
-        bool success=(prev==expected);
-        if (success) fence_after(success_order);
-        else fence_after(failure_order);
-        expected=prev;
-        return success;
-    }
-    bool compare_exchange_weak(
-        T &expected,
-        T desired,
-        memory_order success_order,
-        memory_order failure_order) volatile
-    {
-        return compare_exchange_strong(expected, desired, success_order, failure_order);
-    }
-    T exchange(T r, memory_order order=memory_order_seq_cst) volatile
-    {
-        while (!__sync_bool_compare_and_swap_16(&i, i, r))
-        {};
-
-        return r;
-    }
-    T fetch_add(T c, memory_order order=memory_order_seq_cst) volatile
-    {
-        __sync_fetch_and_add(&i, c);
-        return c;
-    }
-
-    bool is_lock_free(void) const volatile {return true;}
-protected:
-    typedef T integral_type;
-private:
-    T i;
-} __attribute__((aligned(16)));
-
-template<typename T>
-class platform_atomic_integral<T, 16> : public build_atomic_from_add<atomic_x86_128<T> >{
-public:
-    typedef build_atomic_from_add<atomic_x86_128<T> > super;
-    explicit platform_atomic_integral(T v) : super(v) {}
-    platform_atomic_integral(void) {}
-};
-
-#endif
-
-}
-}
-}
-
-#undef __BOOST_AMD_64
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/generic-cas.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/generic-cas.hpp
deleted file mode 100644
index 6ed322b..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/generic-cas.hpp
+++ /dev/null
@@ -1,192 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_GENERIC_CAS_HPP
-#define BOOST_DETAIL_ATOMIC_GENERIC_CAS_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <stdint.h>
-
-#include <boost/memory_order.hpp>
-#include <boost/atomic/detail/base.hpp>
-#include <boost/atomic/detail/builder.hpp>
-
-/* fallback implementation for various compilation targets;
-this is *not* efficient, particularly because all operations
-are fully fenced (full memory barriers before and after
-each operation) */
-
-#if defined(__GNUC__)
-	namespace boost { namespace detail { namespace atomic {
-	static inline int32_t
-	fenced_compare_exchange_strong_32(volatile int32_t *ptr, int32_t expected, int32_t desired)
-	{
-		return __sync_val_compare_and_swap_4(ptr, expected, desired);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS32 1
-	
-	#if defined(__amd64__) || defined(__i686__)
-	static inline int64_t
-	fenced_compare_exchange_strong_64(int64_t *ptr, int64_t expected, int64_t desired)
-	{
-		return __sync_val_compare_and_swap_8(ptr, expected, desired);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS64 1
-	#endif
-	}}}
-
-#elif defined(__ICL) || defined(_MSC_VER)
-
-	#if defined(_MSC_VER)
-	#include <Windows.h>
-	#include <intrin.h>
-	#endif
-
-	namespace boost { namespace detail { namespace atomic {
-	static inline int32_t
-	fenced_compare_exchange_strong(int32_t *ptr, int32_t expected, int32_t desired)
-	{
-		return _InterlockedCompareExchange(reinterpret_cast<volatile long*>(ptr), desired, expected);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS32 1
-	#if defined(_WIN64)
-	static inline int64_t
-	fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired)
-	{
-		return _InterlockedCompareExchange64(ptr, desired, expected);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS64 1
-	#endif
-	}}}
-	
-#elif (defined(__ICC) || defined(__ECC))
-	namespace boost { namespace detail { namespace atomic {
-	static inline int32_t
-	fenced_compare_exchange_strong_32(int32_t *ptr, int32_t expected, int32_t desired)
-	{
-		return _InterlockedCompareExchange((void*)ptr, desired, expected);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS32 1
-	#if defined(__x86_64)
-	static inline int64_t
-	fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired)
-	{
-		return cas64<int>(ptr, expected, desired);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS64 1
-	#elif defined(__ECC)	//IA-64 version
-	static inline int64_t
-	fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired)
-	{
-		return _InterlockedCompareExchange64((void*)ptr, desired, expected);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS64 1
-	#endif
-	}}}
-	
-#elif (defined(__SUNPRO_CC) && defined(__sparc))
-	#include <sys/atomic.h>
-	namespace boost { namespace detail { namespace atomic {
-	static inline int32_t
-	fenced_compare_exchange_strong_32(int32_t *ptr, int32_t expected, int32_t desired)
-	{
-		return atomic_cas_32((volatile unsigned int*)ptr, expected, desired);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS32 1
-	
-	/* FIXME: check for 64 bit mode */
-	static inline int64_t
-	fenced_compare_exchange_strong_64(int64_t *ptr, int64_t expected, int64_t desired)
-	{
-		return atomic_cas_64((volatile unsigned long long*)ptr, expected, desired);
-	}
-	#define BOOST_ATOMIC_HAVE_CAS64 1
-	}}}
-#endif
-
-
-namespace boost { namespace detail { namespace atomic {
-
-#ifdef BOOST_ATOMIC_HAVE_CAS32
-template<typename T>
-class atomic_generic_cas32 {
-private:
-	typedef atomic_generic_cas32 this_type;
-public:
-	explicit atomic_generic_cas32(T v) : i((int32_t)v) {}
-	atomic_generic_cas32() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T expected=(T)i;
-		do { } while(!const_cast<this_type *>(this)->compare_exchange_weak(expected, expected, order, memory_order_relaxed));
-		return expected;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		exchange(v);
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		T found;
-		found=(T)fenced_compare_exchange_strong_32(&i, (int32_t)expected, (int32_t)desired);
-		bool success=(found==expected);
-		expected=found;
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T r, memory_order order=memory_order_seq_cst) volatile
-	{
-		T expected=(T)i;
-		do { } while(!compare_exchange_weak(expected, r, order, memory_order_relaxed));
-		return expected;
-	}
-	
-	bool is_lock_free(void) const volatile {return true;}
-	typedef T integral_type;
-private:
-	mutable int32_t i;
-};
-
-template<typename T>
-class platform_atomic_integral<T, 4> : public build_atomic_from_exchange<atomic_generic_cas32<T> > {
-public:
-	typedef build_atomic_from_exchange<atomic_generic_cas32<T> > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 1>: public build_atomic_from_larger_type<atomic_generic_cas32<int32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_generic_cas32<int32_t>, T> super;
-	
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 2>: public build_atomic_from_larger_type<atomic_generic_cas32<int32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_generic_cas32<int32_t>, T> super;
-	
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-#endif
-
-} } }
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/integral-casts.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/integral-casts.hpp
deleted file mode 100644
index 37c1938..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/integral-casts.hpp
+++ /dev/null
@@ -1,302 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_INTEGRAL_CASTS_HPP
-#define BOOST_DETAIL_ATOMIC_INTEGRAL_CASTS_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <string.h>
-
-namespace boost { namespace detail { namespace atomic {
-
-template<typename T>
-class platform_atomic<T, 1> : private platform_atomic_integral<uint8_t> {
-public:
-	typedef platform_atomic_integral<uint8_t> super;
-
-	platform_atomic() {}
-	explicit platform_atomic(T t) : super(to_integral(t))
-	{
-	}
-
-	void store(T t, memory_order order=memory_order_seq_cst) volatile
-	{
-		super::store(to_integral(t), order);
-	}
-	T load(memory_order order=memory_order_seq_cst) volatile const
-	{
-		return from_integral(super::load(order));
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		uint8_t _expected, _desired;
-		_expected=to_integral(expected);
-		_desired=to_integral(desired);
-		bool success=super::compare_exchange_strong(_expected, _desired, success_order, failure_order);
-		expected=from_integral(_expected);
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		uint8_t _expected, _desired;
-		_expected=to_integral(expected);
-		_desired=to_integral(desired);
-		bool success=super::compare_exchange_weak(_expected, _desired, success_order, failure_order);
-		expected=from_integral(_expected);
-		return success;
-	}
-
-	T exchange(T replacement, memory_order order=memory_order_seq_cst) volatile
-	{
-		return from_integral(super::exchange(to_integral(replacement), order));
-	}
-
-	operator T(void) const volatile {return load();}
-	T operator=(T v) volatile {store(v); return v;}
-
-	using super::is_lock_free;
-protected:
-	static inline uint8_t to_integral(T &t)
-	{
-		uint8_t tmp;
-		memcpy(&tmp, &t, sizeof(t));
-		return tmp;
-	}
-	static inline T from_integral(uint8_t t)
-	{
-		T tmp;
-		memcpy(&tmp, &t, sizeof(t));
-		return tmp;
-	}
-};
-
-template<typename T>
-class platform_atomic<T, 2> : private platform_atomic_integral<uint16_t> {
-public:
-	typedef platform_atomic_integral<uint16_t> super;
-
-	platform_atomic() {}
-	explicit platform_atomic(T t) : super(to_integral(t))
-	{
-	}
-
-	void store(T t, memory_order order=memory_order_seq_cst) volatile
-	{
-		super::store(to_integral(t), order);
-	}
-	T load(memory_order order=memory_order_seq_cst) volatile const
-	{
-		return from_integral(super::load(order));
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		uint16_t _expected, _desired;
-		_expected=to_integral(expected);
-		_desired=to_integral(desired);
-		bool success=super::compare_exchange_strong(_expected, _desired, success_order, failure_order);
-		expected=from_integral(_expected);
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		uint16_t _expected, _desired;
-		_expected=to_integral(expected);
-		_desired=to_integral(desired);
-		bool success=super::compare_exchange_weak(_expected, _desired, success_order, failure_order);
-		expected=from_integral(_expected);
-		return success;
-	}
-
-	T exchange(T replacement, memory_order order=memory_order_seq_cst) volatile
-	{
-		return from_integral(super::exchange(to_integral(replacement), order));
-	}
-
-	operator T(void) const volatile {return load();}
-	T operator=(T v) volatile {store(v); return v;}
-
-	using super::is_lock_free;
-protected:
-	static inline uint16_t to_integral(T &t)
-	{
-		uint16_t tmp;
-		memcpy(&tmp, &t, sizeof(t));
-		return tmp;
-	}
-	static inline T from_integral(uint16_t t)
-	{
-		T tmp;
-		memcpy(&tmp, &t, sizeof(t));
-		return tmp;
-	}
-};
-
-template<typename T>
-class platform_atomic<T, 4> : private platform_atomic_integral<uint32_t> {
-public:
-	typedef platform_atomic_integral<uint32_t> super;
-
-	platform_atomic() {}
-	explicit platform_atomic(T t) : super(to_integral(t))
-	{
-	}
-
-	void store(T t, memory_order order=memory_order_seq_cst) volatile
-	{
-		super::store(to_integral(t), order);
-	}
-	T load(memory_order order=memory_order_seq_cst) volatile const
-	{
-		return from_integral(super::load(order));
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		uint32_t _expected, _desired;
-		_expected=to_integral(expected);
-		_desired=to_integral(desired);
-		bool success=super::compare_exchange_strong(_expected, _desired, success_order, failure_order);
-		expected=from_integral(_expected);
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		uint32_t _expected, _desired;
-		_expected=to_integral(expected);
-		_desired=to_integral(desired);
-		bool success=super::compare_exchange_weak(_expected, _desired, success_order, failure_order);
-		expected=from_integral(_expected);
-		return success;
-	}
-
-	T exchange(T replacement, memory_order order=memory_order_seq_cst) volatile
-	{
-		return from_integral(super::exchange(to_integral(replacement), order));
-	}
-
-	operator T(void) const volatile {return load();}
-	T operator=(T v) volatile {store(v); return v;}
-
-	using super::is_lock_free;
-protected:
-	static inline uint32_t to_integral(T &t)
-	{
-		uint32_t tmp;
-		memcpy(&tmp, &t, sizeof(t));
-		return tmp;
-	}
-	static inline T from_integral(uint32_t t)
-	{
-		T tmp;
-		memcpy(&tmp, &t, sizeof(t));
-		return tmp;
-	}
-};
-
-template<typename T>
-class platform_atomic<T, 8> : private platform_atomic_integral<uint64_t> {
-public:
-	typedef platform_atomic_integral<uint64_t> super;
-
-	platform_atomic() {}
-	explicit platform_atomic(T t) : super(to_integral(t))
-	{
-	}
-
-	void store(T t, memory_order order=memory_order_seq_cst) volatile
-	{
-		super::store(to_integral(t), order);
-	}
-	T load(memory_order order=memory_order_seq_cst) volatile const
-	{
-		return from_integral(super::load(order));
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		uint64_t _expected, _desired;
-		_expected=to_integral(expected);
-		_desired=to_integral(desired);
-		bool success=super::compare_exchange_strong(_expected, _desired, success_order, failure_order);
-		expected=from_integral(_expected);
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		uint64_t _expected, _desired;
-		_expected=to_integral(expected);
-		_desired=to_integral(desired);
-		bool success=super::compare_exchange_weak(_expected, _desired, success_order, failure_order);
-		expected=from_integral(_expected);
-		return success;
-	}
-
-	T exchange(T replacement, memory_order order=memory_order_seq_cst) volatile
-	{
-		return from_integral(super::exchange(to_integral(replacement), order));
-	}
-
-	operator T(void) const volatile {return load();}
-	T operator=(T v) volatile {store(v); return v;}
-
-	using super::is_lock_free;
-protected:
-	static inline uint64_t to_integral(T &t)
-	{
-		uint64_t tmp;
-		memcpy(&tmp, &t, sizeof(t));
-		return tmp;
-	}
-	static inline T from_integral(uint64_t t)
-	{
-		T tmp;
-		memcpy(&tmp, &t, sizeof(t));
-		return tmp;
-	}
-};
-
-template<typename T>
-static inline void platform_atomic_thread_fence(T order)
-{
-    /* FIXME: this does not provide
-    sequential consistency, need one global
-    variable for that... */
-    platform_atomic<int> a;
-    a.exchange(0, order);
-}
-
-} } }
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/interlocked.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/interlocked.hpp
deleted file mode 100644
index 83456a7..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/interlocked.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_INTERLOCKED_HPP
-#define BOOST_DETAIL_ATOMIC_INTERLOCKED_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/detail/interlocked.hpp>
-
-#include <boost/atomic/detail/base.hpp>
-#include <boost/atomic/detail/builder.hpp>
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-static inline void full_fence(void)
-{
-	long tmp;
-	BOOST_INTERLOCKED_EXCHANGE(&tmp, 0);
-}
-
-template<>
-inline void platform_atomic_thread_fence(memory_order order)
-{
-	switch(order) {
-		case memory_order_seq_cst:
-			full_fence();
-		default:;
-	}
-}
-
-static inline void fence_after_load(memory_order order)
-{
-	switch(order) {
-		case memory_order_seq_cst:
-			full_fence();
-		case memory_order_acquire:
-		case memory_order_acq_rel:
-		default:;
-	}
-}
-
-
-template<typename T>
-class atomic_interlocked_32 {
-public:
-	explicit atomic_interlocked_32(T v) : i(v) {}
-	atomic_interlocked_32() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=*reinterpret_cast<volatile const T *>(&i);
-		fence_after_load(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		if (order!=memory_order_seq_cst) {
-			*reinterpret_cast<volatile T *>(&i)=v;
-		} else {
-			exchange(v);
-		}
-	}
-	bool compare_exchange_strong(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		T prev=expected;
-		expected=(T)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long *)(&i), (long)desired, (long)expected);
-		bool success=(prev==expected);
-		return success;
-	}
-	bool compare_exchange_weak(
-		T &expected,
-		T desired,
-		memory_order success_order,
-		memory_order failure_order) volatile
-	{
-		return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T r, memory_order order=memory_order_seq_cst) volatile
-	{
-		return (T)BOOST_INTERLOCKED_EXCHANGE((long *)&i, (long)r);
-	}
-	T fetch_add(T c, memory_order order=memory_order_seq_cst) volatile
-	{
-		return (T)BOOST_INTERLOCKED_EXCHANGE_ADD((long *)&i, c);
-	}
-	
-	bool is_lock_free(void) const volatile {return true;}
-	
-	typedef T integral_type;
-private:
-	T i;
-};
-
-template<typename T>
-class platform_atomic_integral<T, 4> : public build_atomic_from_add<atomic_interlocked_32<T> > {
-public:
-	typedef build_atomic_from_add<atomic_interlocked_32<T> > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 1>: public build_atomic_from_larger_type<atomic_interlocked_32<uint32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_interlocked_32<uint32_t>, T> super;
-	
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-template<typename T>
-class platform_atomic_integral<T, 2>: public build_atomic_from_larger_type<atomic_interlocked_32<uint32_t>, T> {
-public:
-	typedef build_atomic_from_larger_type<atomic_interlocked_32<uint32_t>, T> super;
-	
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-}
-}
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/linux-arm.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/linux-arm.hpp
deleted file mode 100644
index b75ee32..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/linux-arm.hpp
+++ /dev/null
@@ -1,169 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_LINUX_ARM_HPP
-#define BOOST_DETAIL_ATOMIC_LINUX_ARM_HPP
-
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-//
-//  Copyright (c) 2009 Helge Bahmann
-//  Copyright (c) 2009 Phil Endecott
-//  ARM Code by Phil Endecott, based on other architectures.
-
-#include <boost/memory_order.hpp>
-#include <boost/atomic/detail/base.hpp>
-#include <boost/atomic/detail/builder.hpp>
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-
-// Different ARM processors have different atomic instructions.  In particular,
-// architecture versions before v6 (which are still in widespread use, e.g. the
-// Intel/Marvell XScale chips like the one in the NSLU2) have only atomic swap.
-// On Linux the kernel provides some support that lets us abstract away from
-// these differences: it provides emulated CAS and barrier functions at special
-// addresses that are garaunteed not to be interrupted by the kernel.  Using
-// this facility is slightly slower than inline assembler would be, but much
-// faster than a system call.
-//
-// For documentation, see arch/arm/kernel/entry-armv.S in the kernel source
-// (search for "User Helpers").
-
-
-typedef void (kernel_dmb_t)(void);
-#define BOOST_ATOMIC_KERNEL_DMB (*(kernel_dmb_t *)0xffff0fa0)
-
-static inline void fence_before(memory_order order)
-{
-	switch(order) {
-		// FIXME I really don't know which of these cases should call
-		// kernel_dmb() and which shouldn't...
-		case memory_order_consume:
-		case memory_order_release:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			BOOST_ATOMIC_KERNEL_DMB();
-		default:;
-	}
-}
-
-static inline void fence_after(memory_order order)
-{
-	switch(order) {
-		// FIXME I really don't know which of these cases should call
-		// kernel_dmb() and which shouldn't...
-		case memory_order_acquire:
-		case memory_order_acq_rel:
-		case memory_order_seq_cst:
-			BOOST_ATOMIC_KERNEL_DMB();
-		default:;
-	}
-}
-
-#undef BOOST_ATOMIC_KERNEL_DMB
-
-
-template<typename T>
-class atomic_linux_arm_4 {
-
-	typedef int (kernel_cmpxchg_t)(T oldval, T newval, volatile T *ptr);
-#	define BOOST_ATOMIC_KERNEL_CMPXCHG (*(kernel_cmpxchg_t *)0xffff0fc0)
-	// Returns 0 if *ptr was changed.
-
-public:
-	explicit atomic_linux_arm_4(T v) : i(v) {}
-	atomic_linux_arm_4() {}
-	T load(memory_order order=memory_order_seq_cst) const volatile
-	{
-		T v=const_cast<volatile const T &>(i);
-		fence_after(order);
-		return v;
-	}
-	void store(T v, memory_order order=memory_order_seq_cst) volatile
-	{
-		fence_before(order);
-		const_cast<volatile T &>(i)=v;
-	}
-	bool compare_exchange_strong(
-                T &expected,
-                T desired,
-                memory_order success_order,
-                memory_order failure_order) volatile
-        {
-		// Aparently we can consider kernel_cmpxchg to be strong if it is retried
-		// by the kernel after being interrupted, which I think it is.
-		// Also it seems that when an ll/sc implementation is used the kernel
-		// loops until the store succeeds.
-		bool success = BOOST_ATOMIC_KERNEL_CMPXCHG(expected,desired,&i)==0;
-		if (!success) expected = load(memory_order_relaxed);
-		return success;
-	}
-	bool compare_exchange_weak(
-                T &expected,
-                T desired,
-                memory_order success_order,
-                memory_order failure_order) volatile
-        {
-                return compare_exchange_strong(expected, desired, success_order, failure_order);
-	}
-	T exchange(T replacement, memory_order order=memory_order_seq_cst) volatile
-	{
-		// Copied from build_exchange.
-                T o=load(memory_order_relaxed);
-                do {} while(!compare_exchange_weak(o, replacement, order, order));
-                return o;
-		// Note that ARM has an atomic swap instruction that we could use here:
-		//   T oldval;
-		//   asm volatile ("swp\t%0, %1, [%2]" : "=&r"(oldval) : "r" (replacement), "r" (&i) : "memory");
-		//   return oldval;
-		// This instruction is deprecated in architecture >= 6.  I'm unsure how inefficient
-		// its implementation is on those newer architectures.  I don't think this would gain
-		// much since exchange() is not used often.
-	}
-
-	bool is_lock_free(void) const volatile {return true;}
-
-	typedef T integral_type;
-private:
-	T i;
-
-#	undef BOOST_ATOMIC_KERNEL_CMPXCHG
-
-};
-
-template<typename T>
-class platform_atomic_integral<T, 4> : public build_atomic_from_exchange<atomic_linux_arm_4<T> > {
-public:
-	typedef build_atomic_from_exchange<atomic_linux_arm_4<T> > super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-
-template<typename T>
-class platform_atomic_integral<T, 1> : public build_atomic_from_larger_type<atomic_linux_arm_4<uint32_t>, T > {
-public:
-	typedef build_atomic_from_larger_type<atomic_linux_arm_4<uint32_t>, T> super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-
-template<typename T>
-class platform_atomic_integral<T, 2> : public build_atomic_from_larger_type<atomic_linux_arm_4<uint32_t>, T > {
-public:
-	typedef build_atomic_from_larger_type<atomic_linux_arm_4<uint32_t>, T> super;
-	explicit platform_atomic_integral(T v) : super(v) {}
-	platform_atomic_integral(void) {}
-};
-
-
-typedef atomic_linux_arm_4<void *> platform_atomic_address;
-
-
-}
-}
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/detail/valid_integral_types.hpp b/external_libraries/boost_lockfree/boost/atomic/detail/valid_integral_types.hpp
deleted file mode 100644
index 7b0efb1..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/detail/valid_integral_types.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef BOOST_DETAIL_ATOMIC_VALID_INTEGRAL_TYPES_HPP
-#define BOOST_DETAIL_ATOMIC_VALID_INTEGRAL_TYPES_HPP
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/cstdint.hpp>
-
-namespace boost {
-namespace detail {
-namespace atomic {
-
-template<typename T> struct is_integral_type {typedef void test;};
-
-template<> struct is_integral_type<char> {typedef int test;};
-
-template<> struct is_integral_type<unsigned char> {typedef int test;};
-template<> struct is_integral_type<signed char> {typedef int test;};
-template<> struct is_integral_type<unsigned short> {typedef int test;};
-template<> struct is_integral_type<signed short> {typedef int test;};
-template<> struct is_integral_type<unsigned int> {typedef int test;};
-template<> struct is_integral_type<signed int> {typedef int test;};
-template<> struct is_integral_type<unsigned long> {typedef int test;};
-template<> struct is_integral_type<long> {typedef int test;};
-#ifdef BOOST_HAS_LONG_LONG
-template<> struct is_integral_type<unsigned long long> {typedef int test;};
-template<> struct is_integral_type<signed long long> {typedef int test;};
-#endif
-
-}
-}
-}
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/atomic/platform.hpp b/external_libraries/boost_lockfree/boost/atomic/platform.hpp
deleted file mode 100644
index bacd476..0000000
--- a/external_libraries/boost_lockfree/boost/atomic/platform.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/config.hpp>
-
-#if (defined(__GNUC__) || defined(__INTEL_COMPILER)) && (defined(__i386__) || defined(__amd64__) || defined(__x86_64__))
-
-	#include <boost/atomic/detail/gcc-x86.hpp>
-
-#elif defined(__GNUC__) && defined(__alpha__)
-
-	#include <boost/atomic/detail/gcc-alpha.hpp>
-
-#elif defined(__GNUC__) && (defined(__POWERPC__) || defined(__PPC__))
-
-	#include <boost/atomic/detail/gcc-ppc.hpp>
-
-// This list of ARM architecture versions comes from Apple's arm/arch.h header.
-// I don't know how complete it is.
-#elif defined(__GNUC__) && (defined(__ARM_ARCH_6__)  || defined(__ARM_ARCH_6J__) \
-                         || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \
-                         || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_7A__))
-
-	#include <boost/atomic/detail/gcc-armv6+.hpp>
-
-#elif defined(__linux__) && defined(__arm__)
-
-	#include <boost/atomic/detail/linux-arm.hpp>
-
-#elif defined(BOOST_USE_WINDOWS_H) || defined(_WIN32_CE) || defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-
-	#include <boost/atomic/detail/interlocked.hpp>
-
-#else
-
-	#warning "Using slow fallback atomic implementation"
-	#include <boost/atomic/detail/generic-cas.hpp>
-
-#endif
diff --git a/external_libraries/boost_lockfree/boost/lockfree/detail/atomic.hpp b/external_libraries/boost_lockfree/boost/lockfree/detail/atomic.hpp
deleted file mode 100644
index a9332da..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/detail/atomic.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef BOOST_LOCKFREE_DETAIL_ATOMIC_HPP
-#define BOOST_LOCKFREE_DETAIL_ATOMIC_HPP
-
-#ifdef __GNUC__
-# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
-#  define BOOST_NO_0X_HDR_ATOMIC
-# endif
-#else
-# define BOOST_NO_0X_HDR_ATOMIC
-#endif
-
-#ifdef BOOST_NO_0X_HDR_ATOMIC
-#include <boost/atomic.hpp>
-#else
-#include <atomic>
-#endif
-
-namespace boost {
-namespace lockfree {
-namespace detail {
-
-#ifdef BOOST_NO_0X_HDR_ATOMIC
-using boost::atomic;
-using boost::memory_order_acquire;
-using boost::memory_order_consume;
-using boost::memory_order_relaxed;
-using boost::memory_order_release;
-#else
-using std::atomic;
-using std::memory_order_acquire;
-using std::memory_order_consume;
-using std::memory_order_relaxed;
-using std::memory_order_release;
-#endif
-
-}
-using detail::atomic;
-using detail::memory_order_acquire;
-using detail::memory_order_consume;
-using detail::memory_order_relaxed;
-using detail::memory_order_release;
-
-}}
-
-#endif /* BOOST_LOCKFREE_DETAIL_ATOMIC_HPP */
\ No newline at end of file
diff --git a/external_libraries/boost_lockfree/boost/lockfree/detail/branch_hints.hpp b/external_libraries/boost_lockfree/boost/lockfree/detail/branch_hints.hpp
deleted file mode 100644
index 7b5ed24..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/detail/branch_hints.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//  branch hints
-//  Copyright (C) 2007, 2008 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_BRANCH_HINTS_HPP_INCLUDED
-#define BOOST_LOCKFREE_BRANCH_HINTS_HPP_INCLUDED
-
-namespace boost
-{
-namespace lockfree
-{
-    /** \brief hint for the branch prediction */
-    inline bool likely(bool expr)
-    {
-#ifdef __GNUC__
-        return __builtin_expect(expr, true);
-#else
-        return expr;
-#endif
-    }
-
-    /** \brief hint for the branch prediction */
-    inline bool unlikely(bool expr)
-    {
-#ifdef __GNUC__
-        return __builtin_expect(expr, false);
-#else
-        return expr;
-#endif
-    }
-
-} /* namespace lockfree */
-} /* namespace boost */
-
-#endif /* BOOST_LOCKFREE_BRANCH_HINTS_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/lockfree/detail/freelist.hpp b/external_libraries/boost_lockfree/boost/lockfree/detail/freelist.hpp
deleted file mode 100644
index 8094f20..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/detail/freelist.hpp
+++ /dev/null
@@ -1,218 +0,0 @@
-//  lock-free freelist
-//
-//  Copyright (C) 2008, 2009, 2011 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_FREELIST_HPP_INCLUDED
-#define BOOST_LOCKFREE_FREELIST_HPP_INCLUDED
-
-#include <boost/lockfree/detail/tagged_ptr.hpp>
-
-#include <boost/lockfree/detail/atomic.hpp>
-#include <boost/noncopyable.hpp>
-
-#include <boost/mpl/map.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/at.hpp>
-#include <boost/type_traits/is_pod.hpp>
-
-#include <algorithm>            /* for std::min */
-
-namespace boost
-{
-namespace lockfree
-{
-namespace detail
-{
-
-struct freelist_node
-{
-    tagged_ptr<freelist_node> next;
-};
-
-template <typename T,
-          bool allocate_may_allocate,
-          typename Alloc = std::allocator<T>
-         >
-class freelist_stack:
-    Alloc
-{
-    typedef tagged_ptr<freelist_node> tagged_node_ptr;
-
-public:
-    freelist_stack (std::size_t n = 0):
-        pool_(tagged_node_ptr(NULL))
-    {
-        reserve_unsafe(n);
-    }
-
-    void reserve (std::size_t count)
-    {
-        for (std::size_t i = 0; i != count; ++i) {
-            T * node = Alloc::allocate(1);
-            deallocate(node);
-        }
-    }
-
-    void reserve_unsafe (std::size_t count)
-    {
-        for (std::size_t i = 0; i != count; ++i) {
-            T * node = Alloc::allocate(1);
-            deallocate_unsafe(node);
-        }
-    }
-
-    T * construct (void)
-    {
-        T * node = allocate();
-        if (node)
-            new(node) T();
-        return node;
-    }
-
-    template <typename ArgumentType>
-    T * construct (ArgumentType const & arg)
-    {
-        T * node = allocate();
-        if (node)
-            new(node) T(arg);
-        return node;
-    }
-
-    T * construct_unsafe (void)
-    {
-        T * node = allocate_unsafe();
-        if (node)
-            new(node) T();
-        return node;
-    }
-
-    template <typename ArgumentType>
-    T * construct_unsafe (ArgumentType const & arg)
-    {
-        T * node = allocate_unsafe();
-        if (node)
-            new(node) T(arg);
-        return node;
-    }
-
-
-    void destruct (T * n)
-    {
-        n->~T();
-        deallocate(n);
-    }
-
-    void destruct_unsafe (T * n)
-    {
-        n->~T();
-        deallocate_unsafe(n);
-    }
-
-    T * allocate (void)
-    {
-        tagged_node_ptr old_pool = pool_.load(memory_order_consume);
-
-        for(;;) {
-            if (!old_pool.get_ptr()) {
-                if (allocate_may_allocate)
-                    return Alloc::allocate(1);
-                else
-                    return 0;
-            }
-
-            freelist_node * new_pool_ptr = old_pool->next.get_ptr();
-            tagged_node_ptr new_pool (new_pool_ptr, old_pool.get_tag() + 1);
-
-            if (pool_.compare_exchange_weak(old_pool, new_pool)) {
-                void * ptr = old_pool.get_ptr();
-                return reinterpret_cast<T*>(ptr);
-            }
-        }
-    }
-
-    T * allocate_unsafe (void)
-    {
-        tagged_node_ptr old_pool = pool_.load(memory_order_relaxed);
-
-        if (!old_pool.get_ptr()) {
-            if (allocate_may_allocate)
-                return Alloc::allocate(1);
-            else
-                return 0;
-        }
-
-        freelist_node * new_pool_ptr = old_pool->next.get_ptr();
-        tagged_node_ptr new_pool (new_pool_ptr, old_pool.get_tag() + 1);
-
-        pool_.store(new_pool, memory_order_relaxed);
-        void * ptr = old_pool.get_ptr();
-        return reinterpret_cast<T*>(ptr);
-    }
-
-    void deallocate (T * n)
-    {
-        void * node = n;
-        tagged_node_ptr old_pool = pool_.load(memory_order_consume);
-        freelist_node * new_pool_ptr = reinterpret_cast<freelist_node*>(node);
-
-        for(;;) {
-            tagged_node_ptr new_pool (new_pool_ptr, old_pool.get_tag());
-            new_pool->next.set_ptr(old_pool.get_ptr());
-
-            if (pool_.compare_exchange_weak(old_pool, new_pool))
-                return;
-        }
-    }
-
-    void deallocate_unsafe (T * n)
-    {
-        void * node = n;
-        tagged_node_ptr old_pool = pool_.load(memory_order_relaxed);
-        freelist_node * new_pool_ptr = reinterpret_cast<freelist_node*>(node);
-
-        tagged_node_ptr new_pool (new_pool_ptr, old_pool.get_tag());
-        new_pool->next.set_ptr(old_pool.get_ptr());
-
-        pool_.store(new_pool, memory_order_relaxed);
-    }
-
-    ~freelist_stack(void)
-    {
-        tagged_node_ptr current (pool_);
-
-        while (current) {
-            freelist_node * current_ptr = current.get_ptr();
-            if (current_ptr)
-                current = current_ptr->next;
-            Alloc::deallocate((T*)current_ptr, 1);
-        }
-    }
-
-    bool is_lock_free(void) const
-    {
-        return pool_.is_lock_free();
-    }
-
-private:
-    atomic<tagged_node_ptr> pool_;
-};
-
-
-} /* namespace detail */
-
-
-struct caching_freelist_t {};
-struct static_freelist_t {};
-
-
-
-} /* namespace lockfree */
-} /* namespace boost */
-
-#endif /* BOOST_LOCKFREE_FREELIST_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/lockfree/detail/prefix.hpp b/external_libraries/boost_lockfree/boost/lockfree/detail/prefix.hpp
deleted file mode 100644
index e867b67..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/detail/prefix.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-//  Copyright (C) 2009 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_PREFIX_HPP_INCLUDED
-#define BOOST_LOCKFREE_PREFIX_HPP_INCLUDED
-
-/* this file defines the following macros:
-   BOOST_LOCKFREE_CACHELINE_BYTES: size of a cache line
-   BOOST_LOCKFREE_PTR_COMPRESSION: use tag/pointer compression to utilize parts
-                                   of the virtual address space as tag (at least 16bit)
-   BOOST_LOCKFREE_DCAS_ALIGNMENT:  symbol used for aligning structs at cache line
-                                   boundaries
-*/
-
-#define BOOST_LOCKFREE_CACHELINE_BYTES 64
-
-#ifdef _MSC_VER
-
-#define BOOST_LOCKFREE_CACHELINE_ALIGNMENT __declspec(align(BOOST_LOCKFREE_CACHELINE_BYTES))
-
-#if defined(_M_IX86)
-    #define BOOST_LOCKFREE_DCAS_ALIGNMENT
-#elif defined(_M_X64) || defined(_M_IA64)
-    #define BOOST_LOCKFREE_PTR_COMPRESSION 1
-    #define BOOST_LOCKFREE_DCAS_ALIGNMENT __declspec(align(16))
-#endif
-
-#endif /* _MSC_VER */
-
-#ifdef __GNUC__
-
-#define BOOST_LOCKFREE_CACHELINE_ALIGNMENT __attribute__((aligned(BOOST_LOCKFREE_CACHELINE_BYTES)))
-
-#if defined(__i386__) || defined(__ppc__)
-    #define BOOST_LOCKFREE_DCAS_ALIGNMENT
-#elif defined(__x86_64__)
-    #define BOOST_LOCKFREE_PTR_COMPRESSION 1
-    #define BOOST_LOCKFREE_DCAS_ALIGNMENT __attribute__((aligned(16)))
-#elif defined(__alpha__)
-    // LATER: alpha may benefit from pointer compression. but what is the maximum size of the address space?
-    #define BOOST_LOCKFREE_DCAS_ALIGNMENT
-#endif
-#endif /* __GNUC__ */
-
-#endif /* BOOST_LOCKFREE_PREFIX_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr.hpp b/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr.hpp
deleted file mode 100644
index 728bac0..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-//  tagged pointer, for aba prevention
-//
-//  Copyright (C) 2008 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_TAGGED_PTR_HPP_INCLUDED
-#define BOOST_LOCKFREE_TAGGED_PTR_HPP_INCLUDED
-
-#include <boost/lockfree/detail/prefix.hpp>
-
-#ifndef BOOST_LOCKFREE_PTR_COMPRESSION
-#include <boost/lockfree/detail/tagged_ptr_dcas.hpp>
-#else
-#include <boost/lockfree/detail/tagged_ptr_ptrcompression.hpp>
-#endif
-
-#endif /* BOOST_LOCKFREE_TAGGED_PTR_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr_dcas.hpp b/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr_dcas.hpp
deleted file mode 100644
index bd2aa3f..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr_dcas.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-//  tagged pointer, for aba prevention
-//
-//  Copyright (C) 2008 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_TAGGED_PTR_DCAS_HPP_INCLUDED
-#define BOOST_LOCKFREE_TAGGED_PTR_DCAS_HPP_INCLUDED
-
-#include <boost/lockfree/detail/branch_hints.hpp>
-
-#include <cstddef>              /* for std::size_t */
-
-namespace boost {
-namespace lockfree {
-namespace detail {
-
-template <class T>
-class BOOST_LOCKFREE_DCAS_ALIGNMENT tagged_ptr
-{
-public:
-    typedef std::size_t tag_t;
-
-    /** uninitialized constructor */
-    tagged_ptr(void)//: ptr(0), tag(0)
-    {}
-
-    tagged_ptr(tagged_ptr const & p):
-        ptr(p.ptr), tag(p.tag)
-    {}
-
-    explicit tagged_ptr(T * p, tag_t t = 0):
-        ptr(p), tag(t)
-    {}
-
-    /** unsafe set operation */
-    /* @{ */
-    void operator= (tagged_ptr const & p)
-    {
-        set(p.ptr, p.tag);
-    }
-
-    void set(T * p, tag_t t)
-    {
-        ptr = p;
-        tag = t;
-    }
-    /* @} */
-
-    /** comparing semantics */
-    /* @{ */
-    bool operator== (volatile tagged_ptr const & p) const
-    {
-        return (ptr == p.ptr) && (tag == p.tag);
-    }
-
-    bool operator!= (volatile tagged_ptr const & p) const
-    {
-        return !operator==(p);
-    }
-    /* @} */
-
-    /** pointer access */
-    /* @{ */
-    T * get_ptr(void) const volatile
-    {
-        return ptr;
-    }
-
-    void set_ptr(T * p) volatile
-    {
-        ptr = p;
-    }
-    /* @} */
-
-    /** tag access */
-    /* @{ */
-    tag_t get_tag() const volatile
-    {
-        return tag;
-    }
-
-    void set_tag(tag_t t) volatile
-    {
-        tag = t;
-    }
-    /* @} */
-
-    /** smart pointer support  */
-    /* @{ */
-    T & operator*() const
-    {
-        return *ptr;
-    }
-
-    T * operator->() const
-    {
-        return ptr;
-    }
-
-    operator bool(void) const
-    {
-        return ptr != 0;
-    }
-    /* @} */
-
-protected:
-    T * ptr;
-    tag_t tag;
-};
-
-} /* namespace detail */
-} /* namespace lockfree */
-} /* namespace boost */
-
-#endif /* BOOST_LOCKFREE_TAGGED_PTR_DCAS_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp b/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp
deleted file mode 100644
index 479dd89..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp
+++ /dev/null
@@ -1,159 +0,0 @@
-//  tagged pointer, for aba prevention
-//
-//  Copyright (C) 2008, 2009 Tim Blechmann, based on code by Cory Nelson
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_TAGGED_PTR_PTRCOMPRESSION_HPP_INCLUDED
-#define BOOST_LOCKFREE_TAGGED_PTR_PTRCOMPRESSION_HPP_INCLUDED
-
-#include <boost/lockfree/detail/branch_hints.hpp>
-
-#include <cstddef>              /* for std::size_t */
-
-#include <boost/cstdint.hpp>
-
-namespace boost {
-namespace lockfree {
-namespace detail {
-
-#if defined (__x86_64__) || defined (_M_X64)
-
-template <class T>
-class tagged_ptr
-{
-    typedef boost::uint64_t compressed_ptr_t;
-    typedef boost::uint16_t tag_t;
-
-private:
-    union cast_unit
-    {
-        compressed_ptr_t value;
-        tag_t tag[4];
-    };
-
-    static const int tag_index = 3;
-    static const compressed_ptr_t ptr_mask = 0xffffffffffff; //(1L<<48L)-1;
-
-    static T* extract_ptr(volatile compressed_ptr_t const & i)
-    {
-        return (T*)(i & ptr_mask);
-    }
-
-    static tag_t extract_tag(volatile compressed_ptr_t const & i)
-    {
-        cast_unit cu;
-        cu.value = i;
-        return cu.tag[tag_index];
-    }
-
-    static compressed_ptr_t pack_ptr(T * ptr, int tag)
-    {
-        cast_unit ret;
-        ret.value = compressed_ptr_t(ptr);
-        ret.tag[tag_index] = tag;
-        return ret.value;
-    }
-
-public:
-    /** uninitialized constructor */
-    tagged_ptr(void)//: ptr(0), tag(0)
-    {}
-
-    /** copy constructor */
-    tagged_ptr(tagged_ptr const & p):
-        ptr(p.ptr)
-    {}
-
-    explicit tagged_ptr(T * p, tag_t t = 0):
-        ptr(pack_ptr(p, t))
-    {}
-
-    /** unsafe set operation */
-    /* @{ */
-    void operator= (tagged_ptr const & p)
-    {
-        ptr = p.ptr;
-    }
-
-    void set(T * p, tag_t t)
-    {
-        ptr = pack_ptr(p, t);
-    }
-    /* @} */
-
-    /** comparing semantics */
-    /* @{ */
-    bool operator== (volatile tagged_ptr const & p) const
-    {
-        return (ptr == p.ptr);
-    }
-
-    bool operator!= (volatile tagged_ptr const & p) const
-    {
-        return !operator==(p);
-    }
-    /* @} */
-
-    /** pointer access */
-    /* @{ */
-    T * get_ptr() const volatile
-    {
-        return extract_ptr(ptr);
-    }
-
-    void set_ptr(T * p) volatile
-    {
-        tag_t tag = get_tag();
-        ptr = pack_ptr(p, tag);
-    }
-    /* @} */
-
-    /** tag access */
-    /* @{ */
-    tag_t get_tag() const volatile
-    {
-        return extract_tag(ptr);
-    }
-
-    void set_tag(tag_t t) volatile
-    {
-        T * p = get_ptr();
-        ptr = pack_ptr(p, t);
-    }
-    /* @} */
-
-    /** smart pointer support  */
-    /* @{ */
-    T & operator*() const
-    {
-        return *get_ptr();
-    }
-
-    T * operator->() const
-    {
-        return get_ptr();
-    }
-
-    operator bool(void) const
-    {
-        return get_ptr() != 0;
-    }
-    /* @} */
-
-protected:
-    compressed_ptr_t ptr;
-};
-#else
-#error unsupported platform
-#endif
-
-} /* namespace detail */
-} /* namespace lockfree */
-} /* namespace boost */
-
-#endif /* BOOST_LOCKFREE_TAGGED_PTR_PTRCOMPRESSION_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/lockfree/fifo.hpp b/external_libraries/boost_lockfree/boost/lockfree/fifo.hpp
deleted file mode 100644
index 6477a4c..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/fifo.hpp
+++ /dev/null
@@ -1,421 +0,0 @@
-//  lock-free fifo queue from
-//  Michael, M. M. and Scott, M. L.,
-//  "simple, fast and practical non-blocking and blocking concurrent queue algorithms"
-//
-//  implementation for c++
-//
-//  Copyright (C) 2008, 2009, 2010, 2011 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_FIFO_HPP_INCLUDED
-#define BOOST_LOCKFREE_FIFO_HPP_INCLUDED
-
-#include <memory>               /* std::auto_ptr */
-
-#include <boost/noncopyable.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/has_trivial_assign.hpp>
-
-#include <boost/lockfree/detail/atomic.hpp>
-#include <boost/lockfree/detail/tagged_ptr.hpp>
-#include <boost/lockfree/detail/freelist.hpp>
-
-namespace boost {
-namespace lockfree {
-namespace detail {
-
-template <typename T, typename freelist_t, typename Alloc>
-class fifo:
-    boost::noncopyable
-{
-private:
-#ifndef BOOST_DOXYGEN_INVOKED
-    BOOST_STATIC_ASSERT(boost::is_pod<T>::value);
-
-    struct BOOST_LOCKFREE_CACHELINE_ALIGNMENT node
-    {
-        typedef tagged_ptr<node> tagged_node_ptr;
-
-        node(T const & v):
-            data(v)
-        {
-            /* increment tag to avoid ABA problem */
-            tagged_node_ptr old_next = next.load(memory_order_relaxed);
-            tagged_node_ptr new_next (NULL, old_next.get_tag()+1);
-            next.store(new_next, memory_order_release);
-        }
-
-        node (void):
-            next(tagged_node_ptr(NULL, 0))
-        {}
-
-        atomic<tagged_node_ptr> next;
-        T data;
-    };
-
-    typedef tagged_ptr<node> tagged_node_ptr;
-
-    typedef typename Alloc::template rebind<node>::other node_allocator;
-
-    typedef typename boost::mpl::if_<boost::is_same<freelist_t, caching_freelist_t>,
-                                     detail::freelist_stack<node, true, node_allocator>,
-                                     detail::freelist_stack<node, false, node_allocator>
-                                     >::type pool_t;
-
-    void initialize(void)
-    {
-        node * n = pool.construct();
-        tagged_node_ptr dummy_node(n, 0);
-        head_.store(dummy_node, memory_order_relaxed);
-        tail_.store(dummy_node, memory_order_release);
-    }
-#endif
-
-public:
-    /**
-     * \return true, if implementation is lock-free.
-     *
-     * \warning \b Warning: It only checks, if the fifo head node is lockfree. On most platforms, the whole implementation is
-     *                      lockfree, if this is true. Using c++0x-style atomics, there is no possibility to provide a completely
-     *                      accurate implementation, because one would need to test every internal node, which is impossible
-     *                      if further nodes will be allocated from the operating system.
-     * */
-    bool is_lock_free (void) const
-    {
-        return head_.is_lock_free() && pool.is_lock_free();
-    }
-
-    //! Construct fifo.
-    fifo(void)
-    {
-        pool.reserve_unsafe(1);
-        initialize();
-    }
-
-    //! Construct fifo, allocate n nodes for the freelist.
-    explicit fifo(std::size_t n)
-    {
-        pool.reserve_unsafe(n+1);
-        initialize();
-    }
-
-    //! \copydoc boost::lockfree::stack::reserve
-    void reserve(std::size_t n)
-    {
-        pool.reserve(n);
-    }
-
-    //! \copydoc boost::lockfree::stack::reserve_unsafe
-    void reserve_unsafe(std::size_t n)
-    {
-        pool.reserve_unsafe(n);
-    }
-
-    /** Destroys fifo, free all nodes from freelist.
-     * */
-    ~fifo(void)
-    {
-        if (!empty()) {
-            T dummy;
-            while(dequeue_unsafe(dummy))
-                ;
-        }
-        pool.destruct(head_.load(memory_order_relaxed).get_ptr());
-    }
-
-    /** Check if the ringbuffer is empty
-     *
-     * \warning Not thread-safe, use for debugging purposes only
-     * */
-    bool empty(void)
-    {
-        return head_.load().get_ptr() == tail_.load().get_ptr();
-    }
-
-    /** Enqueues object t to the fifo. Enqueueing may fail, if the freelist is not able to allocate a new fifo node.
-     *
-     * \returns true, if the enqueue operation is successful.
-     *
-     * \note Thread-safe and non-blocking
-     * \warning \b Warning: May block if node needs to be allocated from the operating system
-     * */
-    bool enqueue(T const & t)
-    {
-        node * n = pool.construct(t);
-
-        if (n == NULL)
-            return false;
-
-        for (;;) {
-            tagged_node_ptr tail = tail_.load(memory_order_acquire);
-            tagged_node_ptr next = tail->next.load(memory_order_acquire);
-            node * next_ptr = next.get_ptr();
-
-            tagged_node_ptr tail2 = tail_.load(memory_order_acquire);
-            if (likely(tail == tail2)) {
-                if (next_ptr == 0) {
-                    if ( tail->next.compare_exchange_weak(next, tagged_node_ptr(n, next.get_tag() + 1)) ) {
-                        tail_.compare_exchange_strong(tail, tagged_node_ptr(n, tail.get_tag() + 1));
-                        return true;
-                    }
-                }
-                else
-                    tail_.compare_exchange_strong(tail, tagged_node_ptr(next_ptr, tail.get_tag() + 1));
-            }
-        }
-    }
-
-    /** Enqueues object t to the fifo. Enqueueing may fail, if the freelist is not able to allocate a new fifo node.
-     *
-     * \returns true, if the enqueue operation is successful.
-     *
-     * \note Not thread-safe
-     * \warning \b Warning: May block if node needs to be allocated from the operating system
-     * */
-    bool enqueue_unsafe(T const & t)
-    {
-        node * n = pool.construct_unsafe(t);
-
-        if (n == NULL)
-            return false;
-
-        for (;;)
-        {
-            tagged_node_ptr tail = tail_.load(memory_order_relaxed);
-            tagged_node_ptr next = tail->next.load(memory_order_relaxed);
-            node * next_ptr = next.get_ptr();
-
-            if (next_ptr == 0) {
-                tail->next.store(tagged_node_ptr(n, next.get_tag() + 1), memory_order_relaxed);
-                tail_.store(tagged_node_ptr(n, tail.get_tag() + 1), memory_order_relaxed);
-                return true;
-            }
-            else
-                tail_.store(tagged_node_ptr(next_ptr, tail.get_tag() + 1), memory_order_relaxed);
-        }
-    }
-
-    /** Dequeue object from fifo.
-     *
-     * if dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \returns true, if the dequeue operation is successful, false if fifo was empty.
-     *
-     * \note Thread-safe and non-blocking
-     *
-     * */
-    bool dequeue (T & ret)
-    {
-        for (;;) {
-            tagged_node_ptr head = head_.load(memory_order_acquire);
-            tagged_node_ptr tail = tail_.load(memory_order_acquire);
-            tagged_node_ptr next = head->next.load(memory_order_acquire);
-            node * next_ptr = next.get_ptr();
-
-            tagged_node_ptr head2 = head_.load(memory_order_acquire);
-            if (likely(head == head2)) {
-                if (head.get_ptr() == tail.get_ptr()) {
-                    if (next_ptr == 0)
-                        return false;
-                    tail_.compare_exchange_strong(tail, tagged_node_ptr(next_ptr, tail.get_tag() + 1));
-                } else {
-                    if (next_ptr == 0)
-                        /* this check is not part of the original algorithm as published by michael and scott
-                         *
-                         * however we reuse the tagged_ptr part for the and clear the next part during node
-                         * allocation. we can observe a null-pointer here.
-                         * */
-                        continue;
-                    ret = next_ptr->data;
-                    if (head_.compare_exchange_weak(head, tagged_node_ptr(next_ptr, head.get_tag() + 1))) {
-                        pool.destruct(head.get_ptr());
-                        return true;
-                    }
-                }
-            }
-        }
-    }
-
-    /** Dequeue object from fifo.
-     *
-     * if dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \returns true, if the dequeue operation is successful, false if fifo was empty.
-     *
-     * \note Not thread-safe
-     *
-     * */
-    bool dequeue_unsafe (T & ret)
-    {
-        for (;;) {
-            tagged_node_ptr head = head_.load(memory_order_relaxed);
-            tagged_node_ptr tail = tail_.load(memory_order_relaxed);
-            tagged_node_ptr next = head->next.load(memory_order_relaxed);
-            node * next_ptr = next.get_ptr();
-
-            tagged_node_ptr head2 = head_.load(memory_order_relaxed);
-            if (head.get_ptr() == tail.get_ptr()) {
-                if (next_ptr == 0)
-                    return false;
-                tail_.store(tagged_node_ptr(next_ptr, tail.get_tag() + 1), memory_order_relaxed);
-            } else {
-                if (next_ptr == 0)
-                    /* this check is not part of the original algorithm as published by michael and scott
-                     *
-                     * however we reuse the tagged_ptr part for the and clear the next part during node
-                     * allocation. we can observe a null-pointer here.
-                     * */
-                    continue;
-                ret = next_ptr->data;
-                head_.store(tagged_node_ptr(next_ptr, head.get_tag() + 1), memory_order_relaxed);
-                pool.destruct_unsafe(head.get_ptr());
-                return true;
-            }
-        }
-    }
-
-
-private:
-#ifndef BOOST_DOXYGEN_INVOKED
-    atomic<tagged_node_ptr> head_;
-    static const int padding_size = BOOST_LOCKFREE_CACHELINE_BYTES - sizeof(tagged_node_ptr);
-    char padding1[padding_size];
-    atomic<tagged_node_ptr> tail_;
-    char padding2[padding_size];
-
-    pool_t pool;
-#endif
-};
-
-} /* namespace detail */
-
-/** The fifo class provides a multi-writer/multi-reader fifo, enqueueing and dequeueing is lockfree,
- *  construction/destruction has to be synchronized. It uses a freelist for memory management,
- *  freed nodes are pushed to the freelist and not returned to the os before the fifo is destroyed.
- *
- *  The memory management of the fifo can be controlled via its freelist_t template argument. Two different
- *  freelists can be used. struct caching_freelist_t selects a caching freelist, which can allocate more nodes
- *  from the operating system, and struct static_freelist_t uses a fixed-sized freelist. With a fixed-sized
- *  freelist, the enqueue operation may fail, while with a caching freelist, the enqueue operation may block.
- *
- *  \b Limitation: The class T is required to have a trivial assignment operator.
- *
- * */
-template <typename T,
-          typename freelist_t = caching_freelist_t,
-          typename Alloc = std::allocator<T>
-         >
-class fifo:
-    public detail::fifo<T, freelist_t, Alloc>
-{
-    BOOST_STATIC_ASSERT(boost::has_trivial_assign<T>::value);
-
-public:
-    //! Construct fifo.
-    fifo(void)
-    {}
-
-    //! Construct fifo, allocate n nodes for the freelist.
-    explicit fifo(std::size_t n):
-        detail::fifo<T, freelist_t, Alloc>(n)
-    {}
-};
-
-
-/** Template specialization of the fifo class for pointer arguments, that supports dequeue operations to
- *  stl/boost-style smart pointers
- *
- * */
-template <typename T,
-          typename freelist_t,
-          typename Alloc
-         >
-class fifo<T*, freelist_t, Alloc>:
-    public detail::fifo<T*, freelist_t, Alloc>
-{
-#ifndef BOOST_DOXYGEN_INVOKED
-    typedef detail::fifo<T*, freelist_t, Alloc> fifo_t;
-
-    template <typename smart_ptr>
-    bool dequeue_smart_ptr(smart_ptr & ptr)
-    {
-        T * result = 0;
-        bool success = fifo_t::dequeue(result);
-
-        if (success)
-            ptr.reset(result);
-        return success;
-    }
-#endif
-
-public:
-    //! Construct fifo.
-    fifo(void)
-    {}
-
-    //! Construct fifo, allocate n nodes for the freelist.
-    explicit fifo(std::size_t n):
-        fifo_t(n)
-    {}
-
-    //! \copydoc detail::fifo::dequeue
-    bool dequeue (T * & ret)
-    {
-        return fifo_t::dequeue(ret);
-    }
-
-    /** Dequeue object from fifo to std::auto_ptr
-     *
-     * if dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \returns true, if the dequeue operation is successful, false if fifo was empty.
-     *
-     * \note Thread-safe and non-blocking
-     *
-     * */
-    bool dequeue (std::auto_ptr<T> & ret)
-    {
-        return dequeue_smart_ptr(ret);
-    }
-
-    /** Dequeue object from fifo to boost::scoped_ptr
-     *
-     * if dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \returns true, if the dequeue operation is successful, false if fifo was empty.
-     *
-     * \note Thread-safe and non-blocking
-     *
-     * */
-    bool dequeue (boost::scoped_ptr<T> & ret)
-    {
-        BOOST_STATIC_ASSERT(sizeof(boost::scoped_ptr<T>) == sizeof(T*));
-        return dequeue(reinterpret_cast<T*&>(ret));
-    }
-
-    /** Dequeue object from fifo to boost::shared_ptr
-     *
-     * if dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \returns true, if the dequeue operation is successful, false if fifo was empty.
-     *
-     * \note Thread-safe and non-blocking
-     *
-     * */
-    bool dequeue (boost::shared_ptr<T> & ret)
-    {
-        return dequeue_smart_ptr(ret);
-    }
-};
-
-} /* namespace lockfree */
-} /* namespace boost */
-
-#endif /* BOOST_LOCKFREE_FIFO_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/lockfree/ringbuffer.hpp b/external_libraries/boost_lockfree/boost/lockfree/ringbuffer.hpp
deleted file mode 100644
index d660747..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/ringbuffer.hpp
+++ /dev/null
@@ -1,513 +0,0 @@
-//  lock-free single-producer/single-consumer ringbuffer
-//  this algorithm is implemented in various projects (linux kernel)
-//
-//  implementation for c++
-//
-//  Copyright (C) 2009 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_RINGBUFFER_HPP_INCLUDED
-#define BOOST_LOCKFREE_RINGBUFFER_HPP_INCLUDED
-#include <boost/lockfree/detail/atomic.hpp>
-#include <boost/array.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/smart_ptr/scoped_array.hpp>
-
-#include "detail/branch_hints.hpp"
-#include "detail/prefix.hpp"
-
-#include <algorithm>
-
-namespace boost
-{
-namespace lockfree
-{
-
-namespace detail
-{
-
-template <typename T>
-class ringbuffer_base:
-    boost::noncopyable
-{
-#ifndef BOOST_DOXYGEN_INVOKED
-    typedef std::size_t size_t;
-    static const int padding_size = BOOST_LOCKFREE_CACHELINE_BYTES - sizeof(size_t);
-    atomic<size_t> write_index_;
-    char padding1[padding_size]; /* force read_index and write_index to different cache lines */
-    atomic<size_t> read_index_;
-
-protected:
-    ringbuffer_base(void):
-        write_index_(0), read_index_(0)
-    {}
-
-    static size_t next_index(size_t arg, size_t max_size)
-    {
-        size_t ret = arg + 1;
-        while (unlikely(ret >= max_size))
-            ret -= max_size;
-        return ret;
-    }
-
-    static size_t read_available(size_t write_index, size_t read_index, size_t max_size)
-    {
-        if (write_index >= read_index)
-            return write_index - read_index;
-
-        size_t ret = write_index + max_size - read_index;
-        return ret;
-    }
-
-    static size_t write_available(size_t write_index, size_t read_index, size_t max_size)
-    {
-        size_t ret = read_index - write_index - 1;
-        if (write_index >= read_index)
-            ret += max_size;
-        return ret;
-    }
-
-    bool enqueue(T const & t, T * buffer, size_t max_size)
-    {
-        size_t write_index = write_index_.load(memory_order_relaxed);  // only written from enqueue thread
-        size_t next = next_index(write_index, max_size);
-
-        if (next == read_index_.load(memory_order_acquire))
-            return false; /* ringbuffer is full */
-
-        buffer[write_index] = t;
-
-        write_index_.store(next, memory_order_release);
-
-        return true;
-    }
-
-    size_t enqueue(const T * input_buffer, size_t input_count, T * internal_buffer, size_t max_size)
-    {
-        size_t write_index = write_index_.load(memory_order_relaxed);  // only written from enqueue thread
-        const size_t read_index  = read_index_.load(memory_order_acquire);
-        const size_t avail = write_available(write_index, read_index, max_size);
-
-        if (avail == 0)
-            return 0;
-
-        input_count = std::min(input_count, avail);
-
-        size_t new_write_index = write_index + input_count;
-
-        if (write_index + input_count > max_size) {
-            /* copy data in two sections */
-            size_t count0 = max_size - write_index;
-
-            std::copy(input_buffer, input_buffer + count0, internal_buffer + write_index);
-            std::copy(input_buffer + count0, input_buffer + input_count, internal_buffer);
-            new_write_index -= max_size;
-        } else {
-            std::copy(input_buffer, input_buffer + input_count, internal_buffer + write_index);
-
-            if (new_write_index == max_size)
-                new_write_index = 0;
-        }
-
-        write_index_.store(new_write_index, memory_order_release);
-        return input_count;
-    }
-
-    template <typename ConstIterator>
-    ConstIterator enqueue(ConstIterator begin, ConstIterator end, T * internal_buffer, size_t max_size)
-    {
-        // FIXME: avoid std::distance and std::advance
-
-        size_t write_index = write_index_.load(memory_order_relaxed);  // only written from enqueue thread
-        const size_t read_index  = read_index_.load(memory_order_acquire);
-        const size_t avail = write_available(write_index, read_index, max_size);
-
-        if (avail == 0)
-            return begin;
-
-        size_t input_count = std::distance(begin, end);
-        input_count = std::min(input_count, avail);
-
-        size_t new_write_index = write_index + input_count;
-
-        ConstIterator last = begin;
-        std::advance(last, input_count);
-
-        if (write_index + input_count > max_size) {
-            /* copy data in two sections */
-            size_t count0 = max_size - write_index;
-            ConstIterator midpoint = begin;
-            std::advance(midpoint, count0);
-
-            std::copy(begin, midpoint, internal_buffer + write_index);
-            std::copy(midpoint, last, internal_buffer);
-            new_write_index -= max_size;
-        } else {
-            std::copy(begin, last, internal_buffer + write_index);
-
-            if (new_write_index == max_size)
-                new_write_index = 0;
-        }
-
-        write_index_.store(new_write_index, memory_order_release);
-        return last;
-    }
-
-    bool dequeue (T & ret, T * buffer, size_t max_size)
-    {
-        size_t write_index = write_index_.load(memory_order_acquire);
-        size_t read_index  = read_index_.load(memory_order_relaxed); // only written from dequeue thread
-        if (empty(write_index, read_index))
-            return false;
-
-        ret = buffer[read_index];
-        size_t next = next_index(read_index, max_size);
-        read_index_.store(next, memory_order_release);
-        return true;
-    }
-
-    size_t dequeue (T * output_buffer, size_t output_count, const T * internal_buffer, size_t max_size)
-    {
-        const size_t write_index = write_index_.load(memory_order_acquire);
-        size_t read_index = read_index_.load(memory_order_relaxed); // only written from dequeue thread
-
-        const size_t avail = read_available(write_index, read_index, max_size);
-
-        if (avail == 0)
-            return 0;
-
-        output_count = std::min(output_count, avail);
-
-        size_t new_read_index = read_index + output_count;
-
-        if (read_index + output_count > max_size) {
-            /* copy data in two sections */
-            size_t count0 = max_size - read_index;
-            size_t count1 = output_count - count0;
-
-            std::copy(internal_buffer + read_index, internal_buffer + max_size, output_buffer);
-            std::copy(internal_buffer, internal_buffer + count1, output_buffer + count0);
-
-            new_read_index -= max_size;
-        } else {
-            std::copy(internal_buffer + read_index, internal_buffer + read_index + output_count, output_buffer);
-            if (new_read_index == max_size)
-                new_read_index = 0;
-        }
-
-        read_index_.store(new_read_index, memory_order_release);
-        return output_count;
-    }
-
-    template <typename OutputIterator>
-    size_t dequeue (OutputIterator it, const T * internal_buffer, size_t max_size)
-    {
-        const size_t write_index = write_index_.load(memory_order_acquire);
-        size_t read_index = read_index_.load(memory_order_relaxed); // only written from dequeue thread
-
-        const size_t avail = read_available(write_index, read_index, max_size);
-        if (avail == 0)
-            return 0;
-
-        size_t new_read_index = read_index + avail;
-
-        if (read_index + avail > max_size) {
-            /* copy data in two sections */
-            size_t count0 = max_size - read_index;
-            size_t count1 = avail - count0;
-
-            std::copy(internal_buffer + read_index, internal_buffer + max_size, it);
-            std::copy(internal_buffer, internal_buffer + count1, it);
-
-            new_read_index -= max_size;
-        } else {
-            std::copy(internal_buffer + read_index, internal_buffer + read_index + avail, it);
-            if (new_read_index == max_size)
-                new_read_index = 0;
-        }
-
-        read_index_.store(new_read_index, memory_order_release);
-        return avail;
-    }
-#endif
-
-
-public:
-    /** reset the ringbuffer
-     *
-     * \warning Not thread-safe, use for debugging purposes only
-     * */
-    void reset(void)
-    {
-        write_index_.store(0, memory_order_relaxed);
-        read_index_.store(0, memory_order_release);
-    }
-
-    /** Check if the ringbuffer is empty
-     *
-     * \warning Not thread-safe, use for debugging purposes only
-     * */
-    bool empty(void)
-    {
-        return empty(write_index_.load(memory_order_relaxed), read_index_.load(memory_order_relaxed));
-    }
-
-    //! \copydoc boost::lockfree::stack::is_lock_free
-    bool is_lock_free(void) const
-    {
-        return write_index_.is_lock_free() && read_index_.is_lock_free();
-    }
-
-private:
-    bool empty(size_t write_index, size_t read_index)
-    {
-        return write_index == read_index;
-    }
-};
-
-} /* namespace detail */
-
-template <typename T, size_t max_size>
-class ringbuffer:
-    public detail::ringbuffer_base<T>
-{
-    typedef std::size_t size_t;
-    boost::array<T, max_size> array_;
-
-public:
-    /** Enqueues object t to the ringbuffer. Enqueueing may fail, if the ringbuffer is full.
-     *
-     * \return true, if the enqueue operation is successful.
-     *
-     * \note Thread-safe and non-blocking
-     * */
-    bool enqueue(T const & t)
-    {
-        return detail::ringbuffer_base<T>::enqueue(t, array_.c_array(), max_size);
-    }
-
-    /** Dequeue object from ringbuffer.
-     *
-     * If dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \return true, if the dequeue operation is successful, false if ringbuffer was empty.
-     *
-     * \note Thread-safe and non-blocking
-     */
-    bool dequeue(T & ret)
-    {
-        return detail::ringbuffer_base<T>::dequeue(ret, array_.c_array(), max_size);
-    }
-
-    /** Enqueues size objects from the array t to the ringbuffer.
-     *
-     *  Will enqueue as many objects as there is space available
-     *
-     * \Returns number of enqueued items
-     *
-     * \note Thread-safe and non-blocking
-     */
-    size_t enqueue(T const * t, size_t size)
-    {
-        return detail::ringbuffer_base<T>::enqueue(t, size, array_.c_array(), max_size);
-    }
-
-    /** Enqueues all objects from the array t to the ringbuffer.
-     *
-     *  Will enqueue as many objects as there is space available
-     *
-     * \Returns number of enqueued items
-     *
-     * \note Thread-safe and non-blocking
-     */
-    template <size_t size>
-    size_t enqueue(T const (&t)[size])
-    {
-        return enqueue(t, size);
-    }
-
-    /** Enqueues size objects from the iterator range [begin, end[ to the ringbuffer.
-     *
-     *  Enqueueing may fail, if the ringbuffer is full.
-     *
-     * \return iterator to the first element, which has not been enqueued
-     *
-     * \note Thread-safe and non-blocking
-     */
-    template <typename ConstIterator>
-    ConstIterator enqueue(ConstIterator begin, ConstIterator end)
-    {
-        return detail::ringbuffer_base<T>::enqueue(begin, end, array_.c_array(), max_size);
-    }
-
-    /** Dequeue a maximum of size objects from ringbuffer.
-     *
-     * If dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \return number of dequeued items
-     *
-     * \note Thread-safe and non-blocking
-     * */
-    /* @{ */
-    size_t dequeue(T * ret, size_t size)
-    {
-        return detail::ringbuffer_base<T>::dequeue(ret, size, array_.c_array(), max_size);
-    }
-
-    /** Enqueues all objects from the array t to the ringbuffer.
-     *
-     *  Will enqueue as many objects as there is space available
-     *
-     * \Returns number of enqueued items
-     *
-     * \note Thread-safe and non-blocking
-     */
-    template <size_t size>
-    size_t dequeue(T (&t)[size])
-    {
-        return dequeue(t, size);
-    }
-
-    /** Dequeue objects to the output iterator it
-     *
-     * \return number of dequeued items
-     *
-     * \note Thread-safe and non-blocking
-     * */
-    template <typename OutputIterator>
-    size_t dequeue(OutputIterator it)
-    {
-        return detail::ringbuffer_base<T>::dequeue(it, array_.c_array(), max_size);
-    }
-};
-
-template <typename T>
-class ringbuffer<T, 0>:
-    public detail::ringbuffer_base<T>
-{
-    typedef std::size_t size_t;
-    size_t max_size_;
-    scoped_array<T> array_;
-
-public:
-    //! Constructs a ringbuffer for max_size elements
-    explicit ringbuffer(size_t max_size):
-        max_size_(max_size), array_(new T[max_size])
-    {}
-
-    /** Enqueues object t to the ringbuffer. Enqueueing may fail, if the ringbuffer is full.
-     *
-     * \return true, if the enqueue operation is successful.
-     *
-     * \note Thread-safe and non-blocking
-     * */
-    bool enqueue(T const & t)
-    {
-        return detail::ringbuffer_base<T>::enqueue(t, array_.get(), max_size_);
-    }
-
-    /** Dequeue object from ringbuffer.
-     *
-     * If dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \return true, if the dequeue operation is successful, false if ringbuffer was empty.
-     *
-     * \note Thread-safe and non-blocking
-     */
-    bool dequeue(T & ret)
-    {
-        return detail::ringbuffer_base<T>::dequeue(ret, array_.get(), max_size_);
-    }
-
-    /** Enqueues size objects from the array t to the ringbuffer.
-     *
-     *  Will enqueue as many objects as there is space available
-     *
-     * \Returns number of enqueued items
-     *
-     * \note Thread-safe and non-blocking
-     */
-    size_t enqueue(T const * t, size_t size)
-    {
-        return detail::ringbuffer_base<T>::enqueue(t, size, array_.get(), max_size_);
-    }
-
-    /** Enqueues all objects from the array t to the ringbuffer.
-     *
-     *  Will enqueue as many objects as there is space available
-     *
-     * \Returns number of enqueued items
-     *
-     * \note Thread-safe and non-blocking
-     */
-    template <size_t size>
-    size_t enqueue(T const (&t)[size])
-    {
-        return enqueue(t, size);
-    }
-
-    /** Enqueues size objects from the iterator range [begin, end[ to the ringbuffer.
-     *
-     *  Enqueueing may fail, if the ringbuffer is full.
-     *
-     * \return iterator to the first element, which has not been enqueued
-     *
-     * \note Thread-safe and non-blocking
-     */
-    template <typename ConstIterator>
-    ConstIterator enqueue(ConstIterator begin, ConstIterator end)
-    {
-        return detail::ringbuffer_base<T>::enqueue(begin, end, array_.get(), max_size_);
-    }
-
-    /** Dequeue a maximum of size objects from ringbuffer.
-     *
-     * If dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \return number of dequeued items
-     *
-     * \note Thread-safe and non-blocking
-     * */
-    size_t dequeue(T * ret, size_t size)
-    {
-        return detail::ringbuffer_base<T>::dequeue(ret, size, array_.get(), max_size_);
-    }
-
-    /** Dequeue objects from ringbuffer.
-     *
-     * If dequeue operation is successful, object is written to memory location denoted by ret.
-     *
-     * \return number of dequeued items
-     *
-     * \note Thread-safe and non-blocking
-     * */
-    template <size_t size>
-    size_t dequeue(T (&t)[size])
-    {
-        return dequeue(t, size);
-    }
-
-    /** Dequeue objects to the output iterator it
-     *
-     * \return number of dequeued items
-     *
-     * \note Thread-safe and non-blocking
-     * */
-    template <typename OutputIterator>
-    size_t dequeue(OutputIterator it)
-    {
-        return detail::ringbuffer_base<T>::dequeue(it, array_.get(), max_size_);
-    }
-};
-
-
-} /* namespace lockfree */
-} /* namespace boost */
-
-
-#endif /* BOOST_LOCKFREE_RINGBUFFER_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/lockfree/stack.hpp b/external_libraries/boost_lockfree/boost/lockfree/stack.hpp
deleted file mode 100644
index f713d71..0000000
--- a/external_libraries/boost_lockfree/boost/lockfree/stack.hpp
+++ /dev/null
@@ -1,250 +0,0 @@
-//  Copyright (C) 2008, 2009, 2010, 2011 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//  Disclaimer: Not a Boost library.
-
-#ifndef BOOST_LOCKFREE_STACK_HPP_INCLUDED
-#define BOOST_LOCKFREE_STACK_HPP_INCLUDED
-
-#include <boost/checked_delete.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/has_trivial_assign.hpp>
-#include <boost/type_traits/is_base_of.hpp>
-
-#include <boost/lockfree/detail/atomic.hpp>
-#include <boost/lockfree/detail/freelist.hpp>
-#include <boost/lockfree/detail/tagged_ptr.hpp>
-
-
-namespace boost {
-namespace lockfree {
-
-/** The stack class provides a multi-writer/multi-reader stack, pushing and poping is lockfree,
- *  construction/destruction has to be synchronized. It uses a freelist for memory management,
- *  freed nodes are pushed to the freelist and not returned to the os before the stack is destroyed.
- *
- *  The memory management of the stack can be controlled via its freelist_t template argument. Two different
- *  freelists can be used. struct caching_freelist_t selects a caching freelist, which can allocate more nodes
- *  from the operating system, and struct static_freelist_t uses a fixed-sized freelist. With a fixed-sized
- *  freelist, the push operation may fail, while with a caching freelist, the push operation may block.
- *
- *  \b Limitation: The class T is required to have a trivial assignment operator.
- * */
-template <typename T,
-          typename freelist_t = caching_freelist_t,
-          typename Alloc = std::allocator<T>
-          >
-class stack:
-    boost::noncopyable
-{
-private:
-    BOOST_STATIC_ASSERT(boost::has_trivial_assign<T>::value);
-
-#ifndef BOOST_DOXYGEN_INVOKED
-    struct node
-    {
-        typedef detail::tagged_ptr<node> tagged_node_ptr;
-
-        node(T const & v):
-            v(v)
-        {}
-
-        tagged_node_ptr next;
-        T v;
-    };
-#endif
-
-    typedef detail::tagged_ptr<node> tagged_node_ptr;
-
-    typedef typename Alloc::template rebind<node>::other node_allocator;
-
-    typedef typename boost::mpl::if_<boost::is_same<freelist_t, caching_freelist_t>,
-                                     detail::freelist_stack<node, true, node_allocator>,
-                                     detail::freelist_stack<node, false, node_allocator>
-                                     >::type pool_t;
-
-public:
-    /**
-     * \return true, if implementation is lock-free.
-     * */
-    bool is_lock_free (void) const
-    {
-        return tos.is_lock_free() && pool.is_lock_free();
-    }
-
-    //! Construct stack.
-    stack(void):
-        tos(tagged_node_ptr(NULL, 0))
-    {}
-
-    //! Construct stack, allocate n nodes for the freelist
-    explicit stack(std::size_t n):
-        tos(tagged_node_ptr(NULL, 0))
-    {
-        pool.reserve_unsafe(n);
-    }
-
-    //! Allocate n nodes for freelist
-    void reserve(std::size_t n)
-    {
-        pool.reserve(n);
-    }
-
-    /** \copydoc boost::lockfree::stack::reserve
-     *
-     *  \note not thread-safe
-     *
-     * */
-    void reserve_unsafe(std::size_t n)
-    {
-        pool.reserve_unsafe(n);
-    }
-
-    /** Destroys stack, free all nodes from freelist.
-     *
-     *  \note not thread-safe
-     *
-     * */
-    ~stack(void)
-    {
-        if (!empty()) {
-            T dummy;
-            while(pop_unsafe(dummy))
-                ;
-        }
-    }
-
-    /** Pushes object t to the fifo. May fail, if the freelist is not able to allocate a new fifo node.
-     *
-     * \returns true, if the push operation is successful.
-     *
-     * \note Thread-safe and non-blocking
-     * \warning \b Warning: May block if node needs to be allocated from the operating system
-     * */
-    bool push(T const & v)
-    {
-        node * newnode = pool.construct(v);
-
-        if (newnode == 0)
-            return false;
-
-        tagged_node_ptr old_tos = tos.load(detail::memory_order_relaxed);
-
-        for (;;) {
-            tagged_node_ptr new_tos (newnode, old_tos.get_tag());
-            newnode->next.set_ptr(old_tos.get_ptr());
-
-            if (tos.compare_exchange_weak(old_tos, new_tos))
-                return true;
-        }
-    }
-
-    /** Pushes object t to the fifo. May fail, if the freelist is not able to allocate a new fifo node.
-     *
-     * \returns true, if the push operation is successful.
-     *
-     * \note Not thread-safe
-     * \warning \b Warning: May block if node needs to be allocated from the operating system
-     * */
-    bool push_unsafe(T const & v)
-    {
-        node * newnode = pool.construct_unsafe(v);
-
-        if (newnode == 0)
-            return false;
-
-        tagged_node_ptr old_tos = tos.load(detail::memory_order_relaxed);
-
-        tagged_node_ptr new_tos (newnode, old_tos.get_tag());
-        newnode->next.set_ptr(old_tos.get_ptr());
-
-        tos.store(new_tos, memory_order_relaxed);
-        return true;
-    }
-
-
-    /** Pops object from stack.
-     *
-     * If pop operation is successful, object is written to memory location denoted by ret.
-     *
-     * \returns true, if the pop operation is successful, false if stack was empty.
-     *
-     * \note Thread-safe and non-blocking
-     *
-     * */
-    bool pop(T & ret)
-    {
-        tagged_node_ptr old_tos = tos.load(detail::memory_order_consume);
-
-        for (;;) {
-            if (!old_tos.get_ptr())
-                return false;
-
-            node * new_tos_ptr = old_tos->next.get_ptr();
-            tagged_node_ptr new_tos(new_tos_ptr, old_tos.get_tag() + 1);
-
-            if (tos.compare_exchange_weak(old_tos, new_tos)) {
-                ret = old_tos->v;
-                pool.destruct(old_tos.get_ptr());
-                return true;
-            }
-        }
-    }
-
-    /** Pops object from stack.
-     *
-     * If pop operation is successful, object is written to memory location denoted by ret.
-     *
-     * \returns true, if the pop operation is successful, false if stack was empty.
-     *
-     * \note Not thread-safe
-     *
-     * */
-    bool pop_unsafe(T & ret)
-    {
-        tagged_node_ptr old_tos = tos.load(detail::memory_order_relaxed);
-
-        if (!old_tos.get_ptr())
-            return false;
-
-        node * new_tos_ptr = old_tos->next.get_ptr();
-        tagged_node_ptr new_tos(new_tos_ptr, old_tos.get_tag() + 1);
-
-        tos.store(new_tos, memory_order_relaxed);
-        ret = old_tos->v;
-        pool.destruct_unsafe(old_tos.get_ptr());
-        return true;
-    }
-
-    /**
-     * \return true, if stack is empty.
-     *
-     * \warning The state of the stack can be modified by other threads
-     *
-     * \note While this function is thread-safe, it only guarantees that at some point during the execution of the function the
-     *       stack has been empty
-     * */
-    bool empty(void) const
-    {
-        return tos.load().get_ptr() == NULL;
-    }
-
-private:
-#ifndef BOOST_DOXYGEN_INVOKED
-    detail::atomic<tagged_node_ptr> tos;
-
-    static const int padding_size = BOOST_LOCKFREE_CACHELINE_BYTES - sizeof(tagged_node_ptr);
-    char padding[padding_size];
-
-    pool_t pool;
-#endif
-};
-
-} /* namespace lockfree */
-} /* namespace boost */
-
-#endif /* BOOST_LOCKFREE_STACK_HPP_INCLUDED */
diff --git a/external_libraries/boost_lockfree/boost/memory_order.hpp b/external_libraries/boost_lockfree/boost/memory_order.hpp
deleted file mode 100644
index 4945af6..0000000
--- a/external_libraries/boost_lockfree/boost/memory_order.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED
-#define BOOST_MEMORY_ORDER_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//  boost/memory_order.hpp
-//
-//  Defines enum boost::memory_order per the C++0x working draft
-//
-//  Copyright (c) 2008, 2009 Peter Dimov
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-
-namespace boost
-{
-
-//
-// Enum values are chosen so that code that needs to insert
-// a trailing fence for acquire semantics can use a single
-// test such as:
-//
-// if( mo & memory_order_acquire ) { ...fence... }
-//
-// For leading fences one can use:
-//
-// if( mo & memory_order_release ) { ...fence... }
-//
-// Architectures such as Alpha that need a fence on consume
-// can use:
-//
-// if( mo & ( memory_order_acquire | memory_order_consume ) ) { ...fence... }
-//
-
-enum memory_order
-{
-    memory_order_relaxed = 0,
-    memory_order_acquire = 1,
-    memory_order_release = 2,
-    memory_order_acq_rel = 3, // acquire | release
-    memory_order_seq_cst = 7, // acq_rel | 4
-    memory_order_consume = 8
-};
-
-} // namespace boost
-
-#endif // #ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED
diff --git a/external_libraries/boost_lockfree/doxygen.conf b/external_libraries/boost_lockfree/doxygen.conf
deleted file mode 100644
index 8c11dd1..0000000
--- a/external_libraries/boost_lockfree/doxygen.conf
+++ /dev/null
@@ -1,1417 +0,0 @@
-# Doxyfile 1.5.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file 
-# that follow. The default is UTF-8 which is also the encoding used for all 
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
-# iconv built into libc) for the transcoding. See 
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = Boost.Atomic
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = 
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = doc/html
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
-# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, 
-# and Ukrainian.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = 
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = 
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like regular Qt-style comments 
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
-# interpret the first line (until the first dot) of a Qt-style 
-# comment as the brief description. If set to NO, the comments 
-# will behave just like regular Qt-style comments (thus requiring 
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member 
-# documentation.
-
-DETAILS_AT_TOP         = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Java. For instance, namespaces will be presented as packages, qualified 
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
-# sources. Doxygen will then generate output that is tailored for 
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
-# to include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also make the inheritance and collaboration 
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
-# Doxygen will parse them like normal C++ but will assume all classes use public 
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter 
-# and setter methods for a property. Setting this option to YES (the default) 
-# will make doxygen to replace the get and set methods by a property in the 
-# documentation. This will only work if the methods are indeed getting or 
-# setting a simple type. If this is not the case, or you want to show the 
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
-# is documented as struct, union, or enum with the name of the typedef. So 
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
-# with name TypeT. When disabled the typedef will appear as a member of a file, 
-# namespace, or class. And the struct will be named TypeS. This can typically 
-# be useful for C code in case the coding convention dictates that all compound 
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be 
-# extracted and appear in the documentation as a namespace called 
-# 'anonymous_namespace{file}', where file will be replaced with the base 
-# name of the file that contains the anonymous namespace. By default 
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
-# hierarchy of group names into alphabetical order. If set to NO (the default) 
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the 
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
-# Namespaces page.  This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from 
-# the version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the program writes to standard output 
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = lib/atomic/doc/atomic.hpp
-
-# This tag can be used to specify the character encoding of the source files 
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
-# also the default input encoding. Doxygen uses libiconv (or the iconv built 
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS          = 
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = 
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       = 
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
-# (namespaces, classes, functions, etc.) that should be excluded from the 
-# output. The symbol name can be a fully qualified name, a word, or if the 
-# wildcard * is used, a substring. Examples: ANamespace, AClass, 
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = 
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = 
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             = 
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-
-INPUT_FILTER           = 
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-# is applied to all files.
-
-FILTER_PATTERNS        = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.  Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = .
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-HTML_HEADER            = 
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = 
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = 
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files 
-# will be generated that can be used as input for Apple's Xcode 3 
-# integrated development environment, introduced with OSX 10.5 (Leopard). 
-# To create a documentation set, doxygen will generate a Makefile in the 
-# HTML output directory. Running make will produce the docset in that 
-# directory and running "make install" will install the docset in 
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
-# it at startup.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
-# feed. A documentation feed provides an umbrella under which multiple 
-# documentation sets from a single provider (such as a company or product suite) 
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
-# should uniquely identify the documentation set bundle. This should be a 
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
-# documentation will contain sections that can be hidden and shown after the 
-# page has loaded. For this to work a browser that supports 
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING     = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to FRAME, a side panel will be generated
-# containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature. Other possible values 
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
-# and Class Hiererachy pages using a tree view instead of an ordered list;
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
-# disables this behavior completely. For backwards compatibility with previous
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
-# respectively.
-
-GENERATE_TREEVIEW      = NONE
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# Use this tag to change the font size of Latex formulas included 
-# as images in the HTML documentation. The default is 10. Note that 
-# when you change the font size after a successful doxygen run you need 
-# to manually remove any form_*.png images from the HTML output directory 
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = 
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc 
-# command. Doxygen will then run the mscgen tool (see 
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
-# the mscgen tool resides. If left empty the tool is assumed to be found in the 
-# default search path.
-
-MSCGEN_PATH            = 
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# By default doxygen will write a font called FreeSans.ttf to the output 
-# directory and reference it in all dot files that doxygen generates. This 
-# font does not include all possible unicode characters however, so when you need 
-# these (or just want a differently looking font) you can specify the font name 
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
-# which can be done by putting it in a standard location or by setting the 
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
-# containing the font.
-
-DOT_FONTNAME           = FreeSans
-
-# By default doxygen will tell dot to use the output directory to look for the 
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
-# different font using DOT_FONTNAME you can set the path where dot 
-# can find it using this tag.
-
-DOT_FONTPATH           = 
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
-# doxygen will generate a call dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable call graphs 
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
-# doxygen will generate a caller dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable caller 
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               = 
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
-# nodes that will be shown in the graph. If the number of nodes in a graph 
-# becomes larger than this value, doxygen will truncate the graph, which is 
-# visualized by representing a node as a red box. Note that doxygen if the 
-# number of direct children of the root node in a graph is already larger than 
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that the size of a graph can be further restricted by 
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is enabled by default, which results in a transparent 
-# background. Warning: Depending on the platform used, enabling this option 
-# may lead to badly anti-aliased labels on the edges of a graph (i.e. they 
-# become hard to read).
-
-DOT_TRANSPARENT        = YES
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO
diff --git a/external_libraries/boost_lockfree/libs/atomic/doc/Jamfile.v2 b/external_libraries/boost_lockfree/libs/atomic/doc/Jamfile.v2
deleted file mode 100644
index bae9033..0000000
--- a/external_libraries/boost_lockfree/libs/atomic/doc/Jamfile.v2
+++ /dev/null
@@ -1,33 +0,0 @@
-#  Boost.Atomiclibrary documentation Jamfile
-#
-#  Copyright Helge Bahmann 2006. 
-#  Distributed under the Boost Software License, Version 1.0.
-#     (See accompanying file LICENSE_1_0.txt or copy at
-#           http://www.boost.org/LICENSE_1_0.txt)
-#
-# See http://www.boost.org/libs/atomic for documentation.
-
-
-import quickbook ;
-import doxygen ;
-
-doxygen autodoc
-	:
-		[ glob atomic.hpp ]
-	:
-	<doxygen:param>HIDE_UNDOC_MEMBERS=YES
-	;
-	
-
-xml atomic : atomic.qbk ;
-
-boostbook standalone
-   :
-      atomic
-   :
-	<xsl:param>boost.root=../../../..
-	<xsl:param>boost.libraries=../../../../libs/libraries.htm
-	<xsl:param>generate.section.toc.level=3
-	<xsl:param>chunk.first.sections=1
-	<dependency>autodoc
-   ;
diff --git a/external_libraries/boost_lockfree/libs/atomic/doc/atomic.hpp b/external_libraries/boost_lockfree/libs/atomic/doc/atomic.hpp
deleted file mode 100644
index 329eeb2..0000000
--- a/external_libraries/boost_lockfree/libs/atomic/doc/atomic.hpp
+++ /dev/null
@@ -1,526 +0,0 @@
-/** \file boost/atomic.hpp */
-
-//  Copyright (c) 2009 Helge Bahmann
-//
-//  Distributed under the Boost Software License, Version 1.0.
-//  See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-/* this is just a pseudo-header file fed to doxygen
-to more easily generate the class documentation; will
-be replaced by proper documentation down the road */
-
-namespace boost {
-
-/**
-	\brief Memory ordering constraints
-	
-	This defines the relative order of one atomic operation
-	and other memory operations (loads, stores, other atomic operations)
-	executed by the same thread.
-	
-	The order of operations specified by the programmer in the
-	source code ("program order") does not necessarily match
-	the order in which they are actually executed on the target system:
-	Both compiler as well as processor may reorder operations
-	quite arbitrarily. <B>Specifying the wrong ordering
-	constraint will therefore generally result in an incorrect program.</B>
-*/
-enum memory_order {
-	/**
-		\brief No constraint
-		Atomic operation and other memory operations may be reordered freely.
-	*/
-	memory_order_relaxed,
-	/**
-		\brief Data dependence constraint
-		Atomic operation must strictly precede any memory operation that
-		computationally depends on the outcome of the atomic operation.
-	*/
-	memory_order_consume,
-	/**
-		\brief Acquire memory
-		Atomic operation must strictly precede all memory operations that
-		follow in program order.
-	*/
-	memory_order_acquire,
-	/**
-		\brief Release memory
-		Atomic operation must strictly follow all memory operations that precede
-		in program order.
-	*/
-	memory_order_release,
-	/**
-		\brief Acquire and release memory
-		Combines the effects of \ref memory_order_acquire and \ref memory_order_release
-	*/
-	memory_order_acq_rel,
-	/**
-		\brief Sequentially consistent
-		Produces the same result \ref memory_order_acq_rel, but additionally
-		enforces globally sequential consistent execution
-	*/
-	memory_order_seq_cst
-};
-
-/**
-	\brief Atomic datatype
-	
-	An atomic variable. Provides methods to modify this variable atomically.
-	Valid template parameters are:
-	
-	- integral data types (char, short, int, ...)
-	- pointer data types
-	- any other data type that has a non-throwing default
-	  constructor and that can be copied via <TT>memcpy</TT>
-	
-	Unless specified otherwise, any memory ordering constraint can be used
-	with any of the atomic operations.
-*/
-template<typename Type>
-class atomic {
-public:
-	/**
-		\brief Create uninitialized atomic variable
-		Creates an atomic variable. Its initial value is undefined.
-	*/
-	atomic();
-	/**
-		\brief Create an initialize atomic variable
-		\param value Initial value
-		Creates and initializes an atomic variable.
-	*/
-	atomic(Type value);
-	
-	/**
-		\brief Read the current value of the atomic variable
-		\param order Memory ordering constraint, see \ref memory_order
-		\return Current value of the variable
-		
-		Valid memory ordering constraints are:
-		- @c memory_order_relaxed
-		- @c memory_order_consume
-		- @c memory_order_acquire
-		- @c memory_order_seq_cst
-	*/
-	Type load(memory_order order=memory_order_seq_cst) const;
-	
-	/**
-		\brief Write new value to atomic variable
-		\param value New value
-		\param order Memory ordering constraint, see \ref memory_order
-		
-		Valid memory ordering constraints are:
-		- @c memory_order_relaxed
-		- @c memory_order_release
-		- @c memory_order_seq_cst
-	*/
-	void store(Type value, memory_order order=memory_order_seq_cst);
-	
-	/**
-		\brief Atomically compare and exchange variable
-		\param expected Expected old value
-		\param desired Desired new value
-		\param order Memory ordering constraint, see \ref memory_order
-		\return @c true if value was changed
-		
-		Atomically performs the following operation
-		
-		\code
-		if (variable==expected) {
-			variable=desired;
-			return true;
-		} else {
-			expected=variable;
-			return false;
-		}
-		\endcode
-		
-		This operation may fail "spuriously", i.e. the state of the variable
-		is unchanged even though the expected value was found (this is the
-		case on architectures using "load-linked"/"store conditional" to
-		implement the operation).
-		
-		The established memory order will be @c order if the operation
-		is successful. If the operation is unsuccesful, the
-		memory order will be
-		
-		- @c memory_order_relaxed if @c order is @c memory_order_acquire ,
-		  @c memory_order_relaxed or @c memory_order_consume
-		- @c memory_order_release if @c order is @c memory_order_acq_release
-		  or @c memory_order_release
-		- @c memory_order_seq_cst if @c order is @c memory_order_seq_cst
-	*/
-	bool compare_exchange_weak(
-		Type &expected,
-		Type desired,
-		memory_order order=memory_order_seq_cst);
-	
-	/**
-		\brief Atomically compare and exchange variable
-		\param expected Expected old value
-		\param desired Desired new value
-		\param success_order Memory ordering constraint if operation
-		is successful
-		\param failure_order Memory ordering constraint if operation is unsuccesful
-		\return @c true if value was changed
-		
-		Atomically performs the following operation
-		
-		\code
-		if (variable==expected) {
-			variable=desired;
-			return true;
-		} else {
-			expected=variable;
-			return false;
-		}
-		\endcode
-		
-		This operation may fail "spuriously", i.e. the state of the variable
-		is unchanged even though the expected value was found (this is the
-		case on architectures using "load-linked"/"store conditional" to
-		implement the operation).
-		
-		The constraint imposed by @c success_order may not be
-		weaker than the constraint imposed by @c failure_order.
-	*/
-	bool compare_exchange_weak(
-		Type &expected,
-		Type desired,
-		memory_order success_order,
-		memory_order failure_order);
-	/**
-		\brief Atomically compare and exchange variable
-		\param expected Expected old value
-		\param desired Desired new value
-		\param order Memory ordering constraint, see \ref memory_order
-		\return @c true if value was changed
-		
-		Atomically performs the following operation
-		
-		\code
-		if (variable==expected) {
-			variable=desired;
-			return true;
-		} else {
-			expected=variable;
-			return false;
-		}
-		\endcode
-		
-		In contrast to \ref compare_exchange_weak, this operation will never
-		fail spuriously. Since compare-and-swap must generally be retried
-		in a loop, implementors are advised to prefer \ref compare_exchange_weak
-		where feasible.
-		
-		The established memory order will be @c order if the operation
-		is successful. If the operation is unsuccesful, the
-		memory order will be
-		
-		- @c memory_order_relaxed if @c order is @c memory_order_acquire ,
-		  @c memory_order_relaxed or @c memory_order_consume
-		- @c memory_order_release if @c order is @c memory_order_acq_release
-		  or @c memory_order_release
-		- @c memory_order_seq_cst if @c order is @c memory_order_seq_cst
-	*/
-	bool compare_exchange_strong(
-		Type &expected,
-		Type desired,
-		memory_order order=memory_order_seq_cst);
-	
-	/**
-		\brief Atomically compare and exchange variable
-		\param expected Expected old value
-		\param desired Desired new value
-		\param success_order Memory ordering constraint if operation
-		is successful
-		\param failure_order Memory ordering constraint if operation is unsuccesful
-		\return @c true if value was changed
-		
-		Atomically performs the following operation
-		
-		\code
-		if (variable==expected) {
-			variable=desired;
-			return true;
-		} else {
-			expected=variable;
-			return false;
-		}
-		\endcode
-		
-		In contrast to \ref compare_exchange_weak, this operation will never
-		fail spuriously. Since compare-and-swap must generally be retried
-		in a loop, implementors are advised to prefer \ref compare_exchange_weak
-		where feasible.
-		
-		The constraint imposed by @c success_order may not be
-		weaker than the constraint imposed by @c failure_order.
-	*/
-	bool compare_exchange_strong(
-		Type &expected,
-		Type desired,
-		memory_order success_order,
-		memory_order failure_order);
-	/**
-		\brief Atomically exchange variable
-		\param value New value
-		\param order Memory ordering constraint, see \ref memory_order
-		\return Old value of the variable
-		
-		Atomically exchanges the value of the variable with the new
-		value and returns its old value.
-	*/
-	Type exchange(Type value, memory_order order=memory_order_seq_cst);
-	
-	/**
-		\brief Atomically add and return old value
-		\param operand Operand
-		\param order Memory ordering constraint, see \ref memory_order
-		\return Old value of the variable
-		
-		Atomically adds operand to the variable and returns its
-		old value.
-	*/
-	Type fetch_add(Type operand, memory_order order=memory_order_seq_cst);
-	/**
-		\brief Atomically subtract and return old value
-		\param operand Operand
-		\param order Memory ordering constraint, see \ref memory_order
-		\return Old value of the variable
-		
-		Atomically subtracts operand from the variable and returns its
-		old value.
-		
-		This method is available only if \c Type is an integral type
-		or a non-void pointer type. If it is a pointer type,
-		@c operand is of type @c ptrdiff_t and the operation
-		is performed following the rules for pointer arithmetic
-		in C++.
-	*/
-	Type fetch_sub(Type operand, memory_order order=memory_order_seq_cst);
-	
-	/**
-		\brief Atomically perform bitwise "AND" and return old value
-		\param operand Operand
-		\param order Memory ordering constraint, see \ref memory_order
-		\return Old value of the variable
-		
-		Atomically performs bitwise "AND" with the variable and returns its
-		old value.
-		
-		This method is available only if \c Type is an integral type
-		or a non-void pointer type. If it is a pointer type,
-		@c operand is of type @c ptrdiff_t and the operation
-		is performed following the rules for pointer arithmetic
-		in C++.
-	*/
-	Type fetch_and(Type operand, memory_order order=memory_order_seq_cst);
-	
-	/**
-		\brief Atomically perform bitwise "OR" and return old value
-		\param operand Operand
-		\param order Memory ordering constraint, see \ref memory_order
-		\return Old value of the variable
-		
-		Atomically performs bitwise "OR" with the variable and returns its
-		old value.
-		
-		This method is available only if \c Type is an integral type.
-	*/
-	Type fetch_or(Type operand, memory_order order=memory_order_seq_cst);
-	
-	/**
-		\brief Atomically perform bitwise "XOR" and return old value
-		\param operand Operand
-		\param order Memory ordering constraint, see \ref memory_order
-		\return Old value of the variable
-		
-		Atomically performs bitwise "XOR" with the variable and returns its
-		old value.
-		
-		This method is available only if \c Type is an integral type.
-	*/
-	Type fetch_xor(Type operand, memory_order order=memory_order_seq_cst);
-	
-	/**
-		\brief Implicit load
-		\return Current value of the variable
-		
-		The same as <tt>load(memory_order_seq_cst)</tt>. Avoid using
-		the implicit conversion operator, use \ref load with
-		an explicit memory ordering constraint.
-	*/
-	operator Type(void) const;
-	/**
-		\brief Implicit store
-		\param value New value
-		\return Copy of @c value
-		
-		The same as <tt>store(value, memory_order_seq_cst)</tt>. Avoid using
-		the implicit conversion operator, use \ref store with
-		an explicit memory ordering constraint.
-	*/
-	Type operator=(Type v);
-	
-	/**
-		\brief Atomically perform bitwise "AND" and return new value
-		\param operand Operand
-		\return New value of the variable
-		
-		The same as <tt>fetch_and(operand, memory_order_seq_cst)&operand</tt>.
-		Avoid using the implicit bitwise "AND" operator, use \ref fetch_and
-		with an explicit memory ordering constraint.
-	*/
-	Type operator&=(Type operand);
-	
-	/**
-		\brief Atomically perform bitwise "OR" and return new value
-		\param operand Operand
-		\return New value of the variable
-		
-		The same as <tt>fetch_or(operand, memory_order_seq_cst)|operand</tt>.
-		Avoid using the implicit bitwise "OR" operator, use \ref fetch_or
-		with an explicit memory ordering constraint.
-		
-		This method is available only if \c Type is an integral type.
-	*/
-	Type operator|=(Type operand);
-	
-	/**
-		\brief Atomically perform bitwise "XOR" and return new value
-		\param operand Operand
-		\return New value of the variable
-		
-		The same as <tt>fetch_xor(operand, memory_order_seq_cst)^operand</tt>.
-		Avoid using the implicit bitwise "XOR" operator, use \ref fetch_xor
-		with an explicit memory ordering constraint.
-		
-		This method is available only if \c Type is an integral type.
-	*/
-	Type operator^=(Type operand);
-	
-	/**
-		\brief Atomically add and return new value
-		\param operand Operand
-		\return New value of the variable
-		
-		The same as <tt>fetch_add(operand, memory_order_seq_cst)+operand</tt>.
-		Avoid using the implicit add operator, use \ref fetch_add
-		with an explicit memory ordering constraint.
-		
-		This method is available only if \c Type is an integral type
-		or a non-void pointer type. If it is a pointer type,
-		@c operand is of type @c ptrdiff_t and the operation
-		is performed following the rules for pointer arithmetic
-		in C++.
-	*/
-	Type operator+=(Type operand);
-	
-	/**
-		\brief Atomically subtract and return new value
-		\param operand Operand
-		\return New value of the variable
-		
-		The same as <tt>fetch_sub(operand, memory_order_seq_cst)-operand</tt>.
-		Avoid using the implicit subtract operator, use \ref fetch_sub
-		with an explicit memory ordering constraint.
-		
-		This method is available only if \c Type is an integral type
-		or a non-void pointer type. If it is a pointer type,
-		@c operand is of type @c ptrdiff_t and the operation
-		is performed following the rules for pointer arithmetic
-		in C++.
-	*/
-	Type operator-=(Type operand);
-	
-	/**
-		\brief Atomically increment and return new value
-		\return New value of the variable
-		
-		The same as <tt>fetch_add(1, memory_order_seq_cst)+1</tt>.
-		Avoid using the implicit increment operator, use \ref fetch_add
-		with an explicit memory ordering constraint.
-		
-		This method is available only if \c Type is an integral type
-		or a non-void pointer type. If it is a pointer type,
-		the operation
-		is performed following the rules for pointer arithmetic
-		in C++.
-	*/
-	Type operator++(void);
-	/**
-		\brief Atomically increment and return old value
-		\return Old value of the variable
-		
-		The same as <tt>fetch_add(1, memory_order_seq_cst)</tt>.
-		Avoid using the implicit increment operator, use \ref fetch_add
-		with an explicit memory ordering constraint.
-		
-		This method is available only if \c Type is an integral type
-		or a non-void pointer type. If it is a pointer type,
-		the operation
-		is performed following the rules for pointer arithmetic
-		in C++.
-	*/
-	Type operator++(int);
-	/**
-		\brief Atomically subtract and return new value
-		\return New value of the variable
-		
-		The same as <tt>fetch_sub(1, memory_order_seq_cst)-1</tt>.
-		Avoid using the implicit increment operator, use \ref fetch_sub
-		with an explicit memory ordering constraint.
-		
-		This method is available only if \c Type is an integral type
-		or a non-void pointer type. If it is a pointer type,
-		the operation
-		is performed following the rules for pointer arithmetic
-		in C++.
-	*/
-	Type operator--(void);
-	/**
-		\brief Atomically subtract and return old value
-		\return Old value of the variable
-		
-		The same as <tt>fetch_sub(1, memory_order_seq_cst)</tt>.
-		Avoid using the implicit increment operator, use \ref fetch_sub
-		with an explicit memory ordering constraint.
-		
-		This method is available only if \c Type is an integral type
-		or a non-void pointer type. If it is a pointer type,
-		the operation
-		is performed following the rules for pointer arithmetic
-		in C++.
-	*/
-	Type operator--(int);
-	
-private:
-	/** \brief Deleted copy constructor */
-	atomic(const atomic &);
-	/** \brief Deleted copy assignment */
-	void operator=(const atomic &);
-};
-
-/**
-	\brief Insert explicit fence
-	\param order Memory ordering constraint
-	
-	Inserts an explicit fence. The exact semantic depends on the
-	type of fence inserted:
-	
-	- \c memory_order_relaxed: No operation
-	- \c memory_order_release: Performs a "release" operation
-	- \c memory_order_acquire or \c memory_order_consume: Performs an
-	  "acquire" operation
-	- \c memory_order_acq_rel: Performs both an "acquire" and a "release"
-	  operation
-	- \c memory_order_seq_cst: Performs both an "acquire" and a "release"
-	  operation and in addition there exists a global total order of
-	  all \c memory_order_seq_cst operations
-	  
-*/
-void atomic_thread_fence(memory_order order);
-
-}
diff --git a/external_libraries/boost_lockfree/libs/atomic/doc/atomic.qbk b/external_libraries/boost_lockfree/libs/atomic/doc/atomic.qbk
deleted file mode 100644
index d642c60..0000000
--- a/external_libraries/boost_lockfree/libs/atomic/doc/atomic.qbk
+++ /dev/null
@@ -1,366 +0,0 @@
-[/
- / Copyright (c) 2009 Helge Bahmann
- /
- / Distributed under the Boost Software License, Version 1.0. (See accompanying
- / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- /]
-
-[library Boost.Atomic
-    [quickbook 1.4]
-    [authors [Bahmann, Helge]]
-    [copyright 2009 Helge Bahmann]
-    [id atomic]
-    [dirname atomic]
-    [purpose Atomic operations]
-    [license
-        Distributed under the Boost Software License, Version 1.0.
-        (See accompanying file LICENSE_1_0.txt or copy at
-        [@http://www.boost.org/LICENSE_1_0.txt])
-    ]
-]
-
-[section:introduction Introduction]
-
-[section:introduction_presenting Presenting Boost.Atomic]
-
-[*Boost.Atomic] is a library that provides [classref boost::atomic atomic]
-data types and operations on these data types. Additionally it
-also supports the concept of "memory order" for coordinating
-multiple threads through atomic variables.
-It implements the interface defined for the proposed
-C++0x standard, but makes this feature available for
-platforms lacking system/compiler support for this particular C++0x
-feature.
-
-The implementation makes use of processor-specific instructions where
-possible (via inline assembler, platform libraries or compiler
-intrinsics), and falls back to "emulating" atomic operations via locking.
-
-[endsect]
-
-[section:introduction_purpose Purpose]
-
-Operations on "ordinary" variables are not guaranteed to be atomic.
-This means that with [^int n=0] initially, two threads concurrently
-executing
-
-[c++]
-  
-  void function()
-  {
-    n++;
-  }
-
-might result in [^n==1] instead of 2: Each thread will read the
-old value into a processor register, increment it and write the result
-back. Both threads may therefore write [^1], unaware that the other thread
-is doing likewise.
-
-Declaring [^atomic<int> n=0] instead, the same operation on
-this variable will always result in [^n==2] as each operation on this
-variable is ['atomic]: This means that each operation is strictly
-in order without interference and completes before a new operation
-is begun.
-
-Such atomic variables are useful as a faster alternative to
-using a "lock" for access to simple variables. They can also
-be used to coordinate multiple threads that want to access a
-larger shared data structure. This has some benefits over
-"mutual exclusion" as true concurrent access becomes possible,
-instead of being sequentialized by a lock. The downside of
-such custom coordination protocols is complexity, so
-you should take a look at the [link atomic.usage_examples examples] section
-for common patterns.
-
-[endsect]
-
-[endsect]
-
-[section:interface Programming interface]
-
-Atomic variables are declared as instances of `boost::atomic<T>`
-where `T` is an integral or suitable user-defined type. Operations
-to be performed on such a variable are implemented as member functions
-of this type.
-
-In addition to atomic variables, the library also provides a mechanism
-for ensuring ordered access to shared data structures, using either
-the free-standing [funcref boost::atomic_thread_fence atomic_thread_fence]
-function, or specified along with an operation on an atomic variable.
-
-[section:interface_atomic_object Atomic objects]
-
-[section:interface_atomic_generic [^boost::atomic<['T]>] template class]
-
-[classref boost::atomic boost::atomic<['T]>] provides methods for atomically accessing
-variables of a suitable type [^['T]]. The type is suitable if
-it satisfies one of the following constraints:
-
-* it is an integer, boolean, enum or pointer type
-* it is any other data-type ([^class] or [^struct]) that has
-  a non-throwing default constructor, that is copyable via
-  [^memcpy] and comparable via [^memcmp].
-
-Note that all classes having a trivial default constructor,
-no destructor and no virtual methods satisfy the second condition
-according to C++98. On a given platform, other data-types ['may]
-also satisfy this constraint, however you should exercise
-caution as the behaviour becomes implementation-defined. Also be warned
-that structures with "padding" between data members may compare
-non-equal via [^memcmp] even though all members are equal.
-
-Each atomic object supports the following operations:
-
-* [^atomic()] (default constructor): Initializes the atomic
-  variable to an unspecified value
-* [^atomic(T initial_value)]: Initializes the atomic
-  variable to the given value
-* [memberref boost::atomic::load load]: Reads the
-  current value of the atomic variable
-* [memberref boost::atomic::store store]:
-  Stores a new value for the atomic variable
-* [memberref boost::atomic::exchange exchange]:
-  Exchanges the value of the atomic variable with a new
-  value and returns the old value
-* [memberref boost::atomic::compare_exchange_weak compare_exchange_weak]:
-  Tests if the value of the atomic variable with an
-  "expected" value, and if it matches, exchanges it
-  with a new value (allows for spurious failures).
-* [memberref boost::atomic::compare_exchange_strong compare_exchange_strong]:
-  Tests if the value of the atomic variable with an
-  "expected" value, and if it matches, exchanges it
-  with a new value.
-
-In addition to these explicit operations, each
-[classref boost::atomic atomic<['T]>] object also supports
-implicit [^store] and [^load] through the use of "assignment"
-and "conversion to [^T]" operators. Avoid using these operators,
-as they do not allow explicit specification of a memory ordering
-constraint.
-
-[endsect]
-
-[section:interface_atomic_integral [^boost::atomic<['integral]>] template class]
-
-In addition to the operations listed in the previous section,
-[classref boost::atomic boost::atomic<['I]>] for integral
-types [^['I]] supports the following operations:
-
-* [memberref boost::atomic::fetch_add fetch_add]: Adds value
-  to atomic variable and returns old value
-* [memberref boost::atomic::fetch_sub fetch_sub]: Subtracts value
-  from atomic variable and returns old value
-* [memberref boost::atomic::fetch_sub fetch_and]: Combines
-  atomic variable bitwise "and" with operand and returns old value
-* [memberref boost::atomic::fetch_sub fetch_or]: Combines
-  atomic variable bitwise "or" with operand and returns old value
-* [memberref boost::atomic::fetch_sub fetch_xor]: Combines
-  atomic variable bitwise "xor" with operand and returns old value
-
-In addition to these explicit operations, each
-[classref boost::atomic boost::atomic<['I]>] object also
-supports implicit pre-/post- increment/decrement, as well
-as the operators [^+=], [^-=], [^&=], [^|=] and [^^=].
-Avoid using these operators,
-as they do not allow explicit specification of a memory ordering
-constraint.
-
-[endsect]
-
-[endsect]
-
-[section:interface_memory_order Memory order]
-
-When implementing custom thread coordination protocols,
-atomic variables can be used to prevent two threads from
-performing ['conflicting] access to shared data. At the
-very least, any write to a non-atomic variable must be
-considered to conflict with any other read or write to
-the same variable, depending on the use case other types
-of concurrent access may conflict as well.
-
-[section:interface_acq_rel Release/acquire consistency]
-
-[^Boost.Atomic] provides one basic mechanism to
-guarantee that an operation A in thread #1
-['happens before] an operation B in thread #2
-(thus operations A and B are not executed
-concurrently):
-
-* thread #1 performs operation A
-
-* thread #1 performs a ['release] operation
-
-* thread #1 writes an atomic variable
-
-* thread #2 reads the value written by thread #1 from
-  the atomic variable (or any "updated" value)
-
-* thread #2 performs an ['acquire] operation
-
-* thread #2 performs operation B
-
-(The ['happens before] relation is transitive).
-['Release] and ['Acquire] operations may be performed
-calling the free-standing function
-[funcref boost::atomic_thread_fence atomic_thread_fence]
-with [^memory_order_release] and [^memory_order_acquire]
-parameter, respectively. The implementation also
-provides a mechanism for specifying a memory ordering
-constraints together with an atomic operation, so that
-in most cases the above sequence will be written as:
-
-* thread #1 performs operation A
-
-* thread #1 writes an atomic variable with ['release]
-  memory ordering constraint
-
-* thread #2 reads the value written by thread #1 from
-  the atomic variable (or any "updated" value) with
-  ['acquire] memory ordering constraint
-
-* thread #2 performs operation B
-
-Note that in itself, both ['acquire] and ['release]
-are meaningless, the guarantee only holds
-if both threads access the same atomic variable,
-and it does not hold for non-atomic variables.
-
-Refer to [link atomic.usage_examples this] section for examples
-demonstrating correct usage of ['acquire] and ['release]
-operations.
-
-[endsect]
-
-[section:interface_consume Release/consume consistency]
-
-It is sometimes permissible to use a ['consume] operation
-instead of ['acquire] as in the previous section. This
-is possible if (and only if) ['the operation B
-computationally depends on the value read from the
-atomic variable]. This is satisfied if:
-
-* the atomic variable is a pointer, and the operation B
-  is a dereference of this pointer
-
-* the atomic variable is an integral type that is used
-  to compute an address that is dereferenced by B (e.g.
-  index into an array)
-
-Use ['acquire] in all other cases[footnote
-Nominally, ['consume] should also be applicable
-if B is an arithmetic expression depending on the
-atomic value. Due to optimizations that might
-eliminate this dependence this can however not
-be guaranteed without compiler support. Therefore,
-avoid using this constraint for anything
-else but pointer dereferences]. If the
-above requirement is met, then the following
-sequence
-
-* thread #1 performs operation A
-
-* thread #1 performs a ['release] operation
-
-* thread #1 writes an atomic variable
-
-* thread #2 reads the value written by thread #1 from
-  the atomic variable (or any "updated" value)
-
-* thread #2 performs an ['consume] operation
-
-* thread #2 performs operation B
-
-also guarantees that A ['happens before] B. (The
-relationship is transitive and may also be written
-in the same short-hand notation, as before).
-
-See the [link boost_atomic.usage_examples.mp_queue wait-free queue] and
-[link boost_atomic.usage_examples.singleton singleton pattern] for valid
-uses of ['consume].
-
-[endsect]
-
-[section:interface_memory_order_constraints Permissible constraints]
-
-The following memory ordering constraints can be
-specified with atomic operations or as parameter to
-the free-standing [funcref boost::atomic_thread_fence atomic_thread_fence]
-function:
-
-* [^boost::memory_order_relaxed]: No ordering is implied.
-  Informally speaking, following operations may be moved before,
-  preceding operations may be moved after the atomic
-  operation. This constraint is suitable only when
-  either a) further operations do not depend on the outcome
-  of the atomic operation or b) ordering is enforced through
-  other mechanisms (e.g. [funcref boost::atomic_thread_fence atomic_thread_fence]).
-
-* [^boost::memory_order_release]: Forces all earlier operations performed
-  by this thread in program order to become visible to another thread
-  that has read the value written by this atomic operation. Used
-  in conjunction with [^boost::memory_order_acquire] to enforce
-  inter-thread ordering of operations.
-
-* [^boost::memory_order_acquire]: Forces all later operations performed by
-  this thread in program order to "happen after" the corresponding
-  release operation(s). Used in conjunction with [^boost::memory_order_release]
-  to enforce inter-thread ordering of operations.
-
-* [^boost::memory_order_consume]: Forces all later operations performed by
-  this thread in program order that computationally depend on the value obtained
-  from the atomic variable to "happen after" the corresponding
-  release operation(s). This is a weaker (and more efficient) form of
-  "acquire" that is suitable in certain situations. See the discussion in
-  section FIXME.
-
-* [^boost::memory_order_acq_rel]: Combines the constraints of
-  [^boost::memory_order_acquire] and [^boost::memory_order_release].
-
-* [^boost::memory_order_seq_cst]: Behaves like
-  [^boost::memory_order_acq_rel],
-  but additionally requires that there exists a total order for all
-  operations qualified with [^memory_order_seq_cst].
-
-The default ordering constraint (if none is specified) of
-every atomic operation is [^boost::memory_order_seq_cst]
-which implies both "release" and an "acquire". This means that,
-failing to specify any other constraint, each operation on
-an atomic variable already acts as ['release] and ['acquire]
-operation.
-
-[endsect]
-
-[endsect]
-
-[endsect]
-
-[section:usage_examples Usage examples]
-
-[include examples.qbk]
-
-[endsect]
-
-[section:platform_support Implementing support for additional platforms]
-
-[include platform.qbk]
-
-[endsect]
-
-[xinclude autodoc.xml]
-
-[section:tested_compilers Tested compilers]
-
-[*Boost.Atomic] has been tested on and is known to work on
-the following compilers/platforms:
-
-* GCC 4.3.2/Linux x86_32 (aka i386), x86_64 (aka amd64), ppc32, alpha
-* GCC 4.3.2/FreeBSD x86_32 (aka i386)
-* Visual Studio Express 2008/Windows XP, x86_32 (aka i386)
-
-If you have an unsupported platform, contact me and I will
-work to add support for it.
-
-[endsect]
-
-
diff --git a/external_libraries/boost_lockfree/libs/atomic/doc/examples.qbk b/external_libraries/boost_lockfree/libs/atomic/doc/examples.qbk
deleted file mode 100644
index 4a713ad..0000000
--- a/external_libraries/boost_lockfree/libs/atomic/doc/examples.qbk
+++ /dev/null
@@ -1,396 +0,0 @@
-[section:example_reference_counters Reference counting]
-
-The purpose of a ['reference counter] is to count the number
-of pointers to an object. The object can be destroyed as
-soon as the reference counter reaches zero.
-
-[section Implementation]
-
-[c++]
-  
-  #include <boost/intrusive_ptr.hpp>
-  #include <boost/atomic.hpp>
-   
-  class X {
-  public:
-    typedef boost::intrusive_ptr<X> pointer;
-    X() : refcount_(0) {}
-  
-  private:
-    mutable boost::atomic<int> refcount_;
-    friend void intrusive_ptr_add_ref(const X * x)
-    {
-      x->refcount_.fetch_add(1, boost::memory_order_relaxed);
-    }
-    friend void intrusive_ptr_release(const X * x)
-    {
-      if (x->refcount_.fetch_sub(1, boost::memory_order_release)==1) {
-        boost::atomic_thread_fence(boost::memory_order_acquire);
-        delete x;
-      }
-    }
-  };
-
-[endsect]
-
-[section Usage]
-
-[c++]
-  
-  X::pointer x=new X;
-
-[endsect]
-
-[section Discussion]
-
-Increasing the reference counter can always be done with
-[^memory_order_relaxed]: New references to an object can only
-be formed from an existing reference, and passing an existing
-reference from one thread to another must already provide any
-required synchronization.
-
-It is important to enforce any possible access to the object in
-one thread (through an existing reference) to ['happen before]
-deleting the object in a different thread. This is achieved
-by a "release" operation after dropping a reference (any
-access to the object through this reference must obviously
-happened before), and an "acquire" operation before
-deleting the object.
-
-It would be possible to use [^memory_order_acq_rel] for the
-[^fetch_sub] operation, but this results in unneeded "acquire"
-operations when the reference counter does not yet reach zero
-and may impose a performance penalty.
-
-[endsect]
-
-[endsect]
-
-[section:example_reference_counters_weak Reference counting with weak references]
-
-The purpose of a ['reference counter] is to count the number
-of pointers to an object. The object can be destroyed as
-soon as the reference counter reaches zero. There may be
-"weak references" to the object that do not count towards preventing
-the object from being freed. "True" references may be formed from
-"weak" references unless the object has been deleted already.
-
-FIXME: The point to make here is that upgrading "weak" to "full"
-references requires memory_order_acquire.
-
-[endsect]
-
-[section:example_spinlock Spinlock]
-
-The purpose of a ['spin lock] is to prevent multiple threads
-from concurrently accessing a shared data structure. In contrast
-to a mutex, threads will busy-wait and waste CPU cycles instead
-of yielding the CPU to another thread. ['Do not use spinlocks
-unless you are certain that you understand the consequences.]
-
-[section Implementation]
-
-[c++]
-  
-  #include <boost/atomic.hpp>
-   
-  class spinlock {
-  private:
-    typedef enum {Locked, Unlocked} LockState;
-    boost::atomic<LockState> state_;
-  
-  public:
-    spinlock() : state_(Unlocked) {}
-    
-    lock()
-    {
-      while(state_.exchange(Locked, boost::memory_order_acquire)==Locked) ;
-    }
-    unlock()
-    {
-      state_.store(Unlocked, boost::memory_order_release);
-    }
-  };
-
-[endsect]
-
-[section Usage]
-
-[c++]
-  
-  spinlock s;
-  
-  s.lock();
-  // access data structure here
-  s.unlock();
-
-[endsect]
-
-[section Discussion]
-
-The purpose of the spinlock is to make sure that one access
-to the shared data structure always strictly "happens before"
-another. The usage of acquire/release in lock/unlock is required
-and sufficient to guarantee this ordering.
-
-It would be correct to write the "lock" operation in the following
-way:
-
-[c++]
-  
-  lock()
-  {
-    while(state_.exchange(Locked, boost::memory_order_relaxed)==Locked) ;
-    atomic_thread_fence(boost::memory_order_acquire);
-  }
-
-This "optimization" is however a) useless and b) may in fact hurt:
-a) Since the thread will be busily spinning on a blocked spinlock,
-it does not matter if it will waste the CPU cycles with just
-"exchange" operations or with both useless "exchange" and "acquire"
-operations. b) A tight "exchange" loop without any
-processor-synchronizing instruction introduced through an "acquire"
-operation will on some systems monopolize the memory subsystem
-and degrade the performance of other system components.
-
-[endsect]
-
-[endsect]
-
-[section:singleton Double-checked singleton pattern]
-
-The purpose of the ['double-checked singleton pattern] is to ensure
-that at most one instance of a particular object is created.
-If one instance has been created already, access to the existing
-object should be as light-weight as possible.
-
-[section Implementation]
-
-[c++]
-  
-  #include <boost/atomic.hpp>
-  #include <boost/thread/mutex.hpp>
-  
-  class X {
-  public:
-    static X * instance()
-    {
-      X * tmp=instance_.load(boost::memory_order_consume);
-      if (!tmp) {
-        boost::mutex::scoped_lock l(instantiation_mutex);
-        tmp=instance_.load(boost::memory_order_consume);
-        if (!tmp) {
-          tmp=new X;
-          instance_.store(tmp, boost::memory_order_release);
-        }
-      }
-      return tmp;
-    }
-  private:
-    static boost::atomic<X *> instance_;
-    static boost::mutex instantion_mutex;
-  }
-  
-  boost::atomic<X *> X::instance_(0);
-
-[endsect]
-
-[section Usage]
-
-[c++]
-  
-  X * x=X::instance();
-  // dereference x
-
-[endsect]
-
-[section Discussion]
-
-The mutex makes sure that only one instance of the object is
-ever created. The [^instance] method must make sure that any
-dereference of the object strictly "happens after" creating
-the instance in another thread. The use of [^memory_order_release]
-after creating and initializing the object and [^memory_order_consume]
-before dereferencing the object provides this guarantee.
-
-It would be permissible to use [^memory_order_acquire] instead of
-[^memory_order_consume], but this provides a stronger guarantee
-than is required since only operations depending on the value of
-the pointer need to be ordered.
-
-[endsect]
-
-[endsect]
-
-[section:example_ringbuffer Wait-free ring buffer]
-
-A ['wait-free ring buffer] provides a mechanism for relaying objects
-from one single "producer" thread to one single "consumer" thread without
-any locks. The operations on this data structure are "wait-free" which
-means that each operation finishes within a constant number of steps.
-This makes this data structure suitable for use in hard real-time systems
-or for communication with interrupt/signal handlers.
-
-[section Implementation]
-
-[c++]
-  
-  #include <boost/atomic.hpp>
-  
-  template<typename T, size_t Size>
-  class ringbuffer {
-  public:
-    ringbuffer() : head_(0), tail_(0) {}
-    
-    bool push(const T & value)
-    {
-      size_t head=head_.load(boost::memory_order_relaxed);
-      size_t next_head=next(head);
-      if (next_head==tail_.load(boost::memory_order_acquire)) return false;
-      ring_[head]=value;
-      head_.store(next_head, boost::memory_order_release);
-      return true;
-    }
-    bool pop(T & value)
-    {
-      size_t tail=tail_.load(boost::memory_order_relaxed);
-      if (tail==head_.load(boost::memory_order_acquire)) return false;
-      value=ring_[tail];
-      tail_.store(next(tail), boost::memory_odrder_release));
-      return true;
-    }
-  private:
-    size_t next(size_t current) {return current+1;}
-    T ring_[Size];
-    boost::atomic<size_t> head_, tail_;
-  }
-
-[endsect]
-
-[section Usage]
-
-[c++]
-  
-  ringbuffer<int, 32> r;
-  
-  // try to insert an element
-  if (r.push(42)) { /* succeeded */ }
-  else { /* buffer full */ }
-
-  // try to retrieve an element
-  int value;
-  if (r.pop(value)) { /* succeeded */ }
-  else { /* buffer empty */ }
-
-[endsect]
-
-[section Discussion]
-
-The implementation makes sure that the ring indices do
-not "lap-around" each other to ensure that no elements
-are either lost or read twice.
-
-Furthermore it must guarantee that read-access to a
-particular object in [^pop] "happens after" it has been
-written in [^push]. This is achieved by writing [^head_ ]
-with "release" and reading it with "acquire". Conversely
-the implementation also ensures that read access to
-a particular ring element "happens before" before
-rewriting this element with a new value by accessing [^tail_]
-with appropriate ordering constraints.
-
-[endsect]
-
-[endsect]
-
-[section:mp_queue Wait-free multi-producer queue]
-
-The purpose of the ['wait-free multi-producer queue] is to allow
-an arbitrary number of producers to enqueue objects which are
-retrieved and processed in FIFO order by a single consumer.
-
-[section Implementation]
-
-[c++]
-
-  template<typename T>
-  class waitfree_queue {
-  public:
-    struct node {
-      T data;
-      node * next;
-    }
-    void push(const T &data)
-    {
-      node * n=new node;
-      n.data=data;
-      node * stale_head=head_.load(boost::memory_order_relaxed);
-      do {
-        node->next=stale_head;
-      } while(!head_.compare_exchange_weak(stale_head, node, boost::memory_order_release);
-    }
-    
-    node * pop_all(void)
-    {
-      T *last=pop_all_reverse(), *first=0;
-      while(last) {
-        T * tmp=last;
-        last=last->next;
-        tmp->next=first;
-        first=tmp;
-      }
-      return first;
-    }
-    
-    waitfree_queue() : head_(0) {}
-    
-    // alternative interface if ordering is of no importance
-    node * pop_all_reverse(void)
-    {
-      return head_.exchange(0, boost::memory_order_consume);
-    }
-  private:
-    boost::atomic<node *> head_;
-  }
-
-[endsect]
-
-[section Usage]
-
-[c++]
-  
-  waitfree_queue<int> q;
-  
-  // insert elements
-  q.push(42);
-  q.push(2);
-  
-  // pop elements
-  waitfree_queue<int>::node * x=q.pop_all()
-  while(x) {
-    X * tmp=x;
-    x=x->next;
-    // process tmp->data, probably delete it afterwards
-    delete tmp;
-  }
-
-[endsect]
-
-[section Discussion]
-
-The implementation guarantees that all objects enqueued are
-processed in the order they were enqueued by building a singly-linked
-list of object in reverse processing order. The queue is atomically
-emptied by the consumer and brought into correct order.
-
-It must be guaranteed that any access to an object to be enqueued
-by the producer "happens before" any access by the consumer. This
-is assured by inserting objects into the list with ['release] and
-dequeuing them with ['consume] memory order. It is not
-necessary to use ['acquire] memory order in [^waitfree_queue::pop_all]
-because all operations involved depend on the value of
-the atomic pointer through dereference
-
-[endsect]
-
-[endsect]
diff --git a/external_libraries/boost_lockfree/libs/atomic/doc/platform.qbk b/external_libraries/boost_lockfree/libs/atomic/doc/platform.qbk
deleted file mode 100644
index 03e7b1b..0000000
--- a/external_libraries/boost_lockfree/libs/atomic/doc/platform.qbk
+++ /dev/null
@@ -1,305 +0,0 @@
-[section:template_organization Organization of class template layers]
-
-The implementation uses multiple layers of class templates that
-inherit from the next lower level each and refine or adapt the respective
-underlying class:
-
-* [^boost::atomic<T>] is the topmost-level, providing 
-  the external interface. Implementation-wise, it does not add anything
-  (except for hiding copy constructor and assignment operator).
-
-* [^boost::detail::atomic::internal_atomic&<T,S=sizeof(T),I=is_integral_type<T> >]:
-  This layer is mainly responsible for providing the overloaded operators
-  mapping to API member functions (e.g. [^+=] to [^fetch_add]).
-  The defaulted template parameter [^I] allows
-  to expose the correct API functions (via partial template
-  specialization): For non-integral types, it only
-  publishes the various [^exchange] functions
-  as well as load and store, for integral types it
-  additionally exports arithmetic and logic operations.
-  [br]
-  Depending on whether the given type is integral, it
-  inherits from either [^boost::detail::atomic::platform_atomic<T,S=sizeof(T)>]
-  or [^boost::detail::atomic::platform_atomic_integral<T,S=sizeof(T)>].
-  There is however some special-casing: for non-integral types
-  of size 1, 2, 4 or 8, it will coerce the datatype into an integer representation
-  and delegate to [^boost::detail::atomic::platform_atomic_integral<T,S=sizeof(T)>]
-  -- the rationale is that platform implementors only need to provide
-  integer-type operations.
-
-* [^boost::detail::atomic::platform_atomic_integral<T,S=sizeof(T)>]
-  must provide the full set of operations for an integral type T
-  (i.e. [^load], [^store], [^exchange],
-  [^compare_exchange_weak], [^compare_exchange_strong],
-  [^fetch_add], [^fetch_sub], [^fetch_and],
-  [^fetch_or], [^fetch_xor], [^is_lock_free]).
-  The default implementation uses locking to emulate atomic operations, so
-  this is the level at which implementors should provide template specializations
-  to add support for platform-specific atomic operations.
-  [br]
-  The two separate template parameters allow separate specialization
-  on size and type (which, with fixed size, cannot
-  specify more than signedness/unsignedness). The rationale is that
-  most platform-specific atomic operations usually depend only on the
-  operand size, so that common implementations for signed/unsigned
-  types are possible. Signedness allows to properly to choose sign-extending
-  instructions for the [^load] operation, avoiding later
-  conversion. The expectation is that in most implementations this will
-  be a normal assignment in C, possibly accompanied by memory
-  fences, so that the compiler can automatically choose the correct
-  instruction.
-
-* At the lowest level, [^boost::detail::atomic::platform_atomic<T,S=sizeof(T)>]
-  provides the most basic atomic operations ([^load], [^store],
-  [^exchange], [^compare_exchange_weak],
-  [^compare_exchange_strong]) for arbitrarily generic data types.
-  The default implementation uses locking as a fallback mechanism.
-  Implementors generally do not have to specialize at this level
-  (since these will not be used for the common integral type sizes
-  of 1, 2, 4 and 8 bytes), but if s/he can if s/he so wishes to
-  provide truly atomic operations for "odd" data type sizes.
-  Some amount of care must be taken as the "raw" data type
-  passed in from the user through [^boost::atomic<T>]
-  is visible here -- it thus needs to be type-punned or otherwise
-  manipulated byte-by-byte to avoid using overloaded assigment,
-  comparison operators and copy constructors.
-
-[endsect]
-	
-	
-[section:platform_atomic_implementation Implementing platform-specific atomic operations]
-
-In principle implementors are responsible for providing the
-full range of named member functions of an atomic object
-(i.e. [^load], [^store], [^exchange],
-[^compare_exchange_weak], [^compare_exchange_strong],
-[^fetch_add], [^fetch_sub], [^fetch_and],
-[^fetch_or], [^fetch_xor], [^is_lock_free]).
-These must be implemented as partial template specializations for
-[^boost::detail::atomic::platform_atomic_integral<T,S=sizeof(T)>]:
-
-[c++]
-
-  template<typename T>
-  class platform_atomic_integral<T, 4>
-  {
-  public:
-    explicit platform_atomic_integral(T v) : i(v) {}
-    platform_atomic_integral(void) {}
-    
-    T load(memory_order order=memory_order_seq_cst) const volatile
-    {
-      // platform-specific code
-    }
-    void store(T v, memory_order order=memory_order_seq_cst) volatile
-    {
-      // platform-specific code
-    }
-    
-  private:
-    volatile T i;
-  };
-
-As noted above, it will usually suffice to specialize on the second
-template argument, indicating the size of the data type in bytes.
-
-[section:automatic_buildup Templates for automatic build-up]
-
-Often only a portion of the required operations can be
-usefully mapped to machine instructions. Several helper template
-classes are provided that can automatically synthesize missing methods to
-complete an implementation.
-
-At the minimum, an implementor must provide the
-[^load], [^store],
-[^compare_exchange_weak] and
-[^is_lock_free] methods:
-
-[c++]
-  
-  template<typename T>
-  class my_atomic_32 {
-  public:
-    my_atomic_32() {}
-    my_atomic_32(T initial_value) : value(initial_value) {}
-    
-    T load(memory_order order=memory_order_seq_cst) volatile const
-    {
-      // platform-specific code
-    }
-    void store(T new_value, memory_order order=memory_order_seq_cst) volatile
-    {
-      // platform-specific code
-    }
-    bool compare_exchange_weak(T &expected, T desired,
-      memory_order success_order,
-      memory_order_failure_order) volatile
-    {
-      // platform-specific code
-    }
-    bool is_lock_free() const volatile {return true;}
-  protected:
-  // typedef is required for classes inheriting from this
-    typedef T integral_type;
-  private:
-    T value;
-  };
-
-The template [^boost::detail::atomic::build_atomic_from_minimal]
-can then take care of the rest:
-
-[c++]
-  
-  template<typename T>
-  class platform_atomic_integral<T, 4>
-    : public boost::detail::atomic::build_atomic_from_minimal<my_atomic_32<T> >
-  {
-  public:
-    typedef build_atomic_from_minimal<my_atomic_32<T> > super;
-    
-    explicit platform_atomic_integral(T v) : super(v) {}
-    platform_atomic_integral(void) {}
-  };
-
-There are several helper classes to assist in building "complete"
-atomic implementations from different starting points:
-
-* [^build_atomic_from_minimal] requires
-  * [^load]
-  * [^store]
-  * [^compare_exchange_weak] (4-operand version)
-
-* [^build_atomic_from_exchange] requires
-  * [^load]
-  * [^store]
-  * [^compare_exchange_weak] (4-operand version)
-  * [^compare_exchange_strong] (4-operand version)
-  * [^exchange]
-  
-* [^build_atomic_from_add] requires
-  * [^load]
-  * [^store]
-  * [^compare_exchange_weak] (4-operand version)
-  * [^compare_exchange_strong] (4-operand version)
-  * [^exchange]
-  * [^fetch_add]
-  
-* [^build_atomic_from_typical] (<I>supported on gcc only</I>) requires
-  * [^load]
-  * [^store]
-  * [^compare_exchange_weak] (4-operand version)
-  * [^compare_exchange_strong] (4-operand version)
-  * [^exchange]
-  * [^fetch_add_var] (protected method)
-  * [^fetch_inc] (protected method)
-  * [^fetch_dec] (protected method)
-  
-  This will generate a [^fetch_add] method
-  that calls [^fetch_inc]/[^fetch_dec]
-  when the given parameter is a compile-time constant
-  equal to +1 or -1 respectively, and [^fetch_add_var]
-  in all other cases. This provides a mechanism for
-  optimizing the extremely common case of an atomic
-  variable being used as a counter.
-  
-  The prototypes for these methods to be implemented is:
-  [c++]
-    
-    template<typename T>
-    class my_atomic {
-    public:
-      T fetch_inc(memory_order order) volatile;
-      T fetch_dec(memory_order order) volatile;
-      T fetch_add_var(T counter, memory_order order) volatile;
-    };
-
-These helper templates are defined in [^boost/atomic/detail/builder.hpp].
-
-[endsect]
-
-[section:automatic_buildup_small Build sub-word-sized atomic data types]
-
-There is one other helper template that can build sub-word-sized
-atomic data types even though the underlying architecture allows
-only word-sized atomic operations:
-
-[c++]
-  
-  template<typename T>
-  class platform_atomic_integral<T, 1> :
-    public build_atomic_from_larger_type<my_atomic_32<uint32_t>, T>
-  {
-  public:
-    typedef build_atomic_from_larger_type<my_atomic_32<uint32_t>, T> super;
-    
-    explicit platform_atomic_integral(T v) : super(v) {}
-    platform_atomic_integral(void) {}
-  };
-
-The above would create an atomic data type of 1 byte size, and
-use masking and shifts to map it to 32-bit atomic operations.
-The base type must implement [^load], [^store]
-and [^compare_exchange_weak] for this to work.
-
-[endsect]
-
-[section:other_sizes Atomic data types for unusual object sizes]
-
-In unusual circumstances, an implementor may also opt to specialize
-[^public boost::detail::atomic::platform_atomic<T,S=sizeof(T)>]
-to provide support for atomic objects not fitting an integral size.
-If you do that, keep the following things in mind:
-
-* There is no reason to ever do this for object sizes
-  of 1, 2, 4 and 8
-* Only the following methods need to be implemented:
-  * [^load]
-  * [^store]
-  * [^compare_exchange_weak] (4-operand version)
-  * [^compare_exchange_strong] (4-operand version)
-  * [^exchange]
-
-The type of the data to be stored in the atomic
-variable (template parameter [^T])
-is exposed to this class, and the type may have
-overloaded assignment and comparison operators --
-using these overloaded operators however will result
-in an error. The implementor is responsible for
-accessing the objects in a way that does not
-invoke either of these operators (using e.g.
-[^memcpy] or type-casts).
-
-[endsect]
-
-[endsect]
-
-[section:platform_atomic_fences Fences]
-
-Platform implementors need to provide a function performing
-the action required for [funcref boost::atomic_thread_fence atomic_thread_fence]
-(the fallback implementation will just perform an atomic operation
-on an integer object). This is achieved by specializing the
-[^boost::detail::atomic::platform_atomic_thread_fence] template
-function in the following way:
-
-[c++]
-  
-  template<>
-  void platform_atomic_thread_fence(memory_order order)
-  {
-    // platform-specific code here
-  }
-
-[endsect]
-
-[section:platform_atomic_puttogether Putting it altogether]
-
-The template specializations should be put into a header file
-in the [^boost/atomic/detail] directory, preferrably
-specifying supported compiler and architecture in its name.
-
-The file [^boost/atomic/platform.hpp] must
-subsequently be modified to conditionally include the new
-header.
-
-[endsect]
diff --git a/external_libraries/boost_lockfree/libs/atomic/test/simple.cpp b/external_libraries/boost_lockfree/libs/atomic/test/simple.cpp
deleted file mode 100644
index 6778ef7..0000000
--- a/external_libraries/boost_lockfree/libs/atomic/test/simple.cpp
+++ /dev/null
@@ -1,251 +0,0 @@
-#include <typeinfo>
-#include <boost/atomic.hpp>
-#include <stdio.h>
-
-#include <assert.h>
-
-using namespace boost;
-
-template<typename T>
-void test_atomic_arithmetic(void)
-{
-	atomic<T> i(41);
-	
-	T n;
-	
-	printf("Type=%s, size=%ld, atomic_size=%ld, lockfree=%d\n",
-		typeid(T).name(), (long)sizeof(n), (long)sizeof(i), i.is_lock_free());
-	
-	assert(sizeof(i)>=sizeof(n));
-	
-	bool success;
-	
-	n=i++;
-	assert(i==42);
-	assert(n==41);
-	
-	n=i--;
-	assert(n==42);
-	assert(i==41);
-	
-	n=++i;
-	assert(i==42);
-	assert(n==42);
-	
-	n=--i;
-	assert(n==41);
-	assert(i==41);
-	
-	n=i.fetch_and(15);
-	assert(n==41);
-	assert(i==9);
-	
-	n=i.fetch_or(17);
-	assert(n==9);
-	assert(i==25);
-	
-	n=i.fetch_xor(3);
-	assert(n==25);
-	assert(i==26);
-	
-	n=i.exchange(12);
-	assert(n==26);
-	assert(i==12);
-	
-	n=12;
-	success=i.compare_exchange_strong(n, 17);
-	assert(success);
-	assert(n==12);
-	assert(i==17);
-	
-	n=12;
-	success=i.compare_exchange_strong(n, 19);
-	assert(!success);
-	assert(n==17);
-	assert(i==17);
-}
-
-template<typename T>
-void test_atomic_base(void)
-{
-	atomic<T> i;
-	T n;
-	
-	printf("Type=%s, size=%ld, atomic_size=%ld, lockfree=%d\n",
-		typeid(T).name(), (long)sizeof(n), (long)sizeof(i), i.is_lock_free());
-	
-	assert(sizeof(i)>=sizeof(n));
-	
-	bool success;
-	
-	i.store((T)0);
-	n=(T)40;
-	success=i.compare_exchange_strong(n, (T)44 /*boost::memory_order_relaxed*/);
-	assert(!success);
-	assert(n==(T)0);
-	assert(i.load()==(T)0);
-	
-	n=(T)0;
-	success=i.compare_exchange_strong(n, (T)44);
-	assert(success);
-	assert(n==(T)0);
-	assert(i.load()==(T)44);
-	
- 	n=i.exchange((T)20);
-	assert(n==(T)44);
-	assert(i.load()==(T)20);
-}
-
-template<typename T>
-void test_atomic_ptr(void)
-{
-	test_atomic_base<T *>();
-	
-	T array[10], *p;
-	atomic<T *> ptr;
-	
-	ptr=&array[0];
-	
-	p=ptr++;
-	assert(p==&array[0]);
-	assert(ptr==&array[1]);
-	p=++ptr;
-	assert(p==&array[2]);
-	assert(ptr==&array[2]);
-	
-	p=ptr.fetch_add(4);
-	assert(p==&array[2]);
-	assert(ptr==&array[6]);
-	
-	p=ptr.fetch_sub(4);
-	assert(p==&array[6]);
-	assert(ptr==&array[2]);
-	
-	p=ptr--;
-	assert(p==&array[2]);
-	assert(ptr==&array[1]);
-	p=--ptr;
-	assert(p==&array[0]);
-	assert(ptr==&array[0]);
-}
-
-template<>
-void test_atomic_base<bool>(void)
-{
-	atomic<bool> i;
-	bool n;
-	
-	printf("Type=bool, size=%ld, atomic_size=%ld, lockfree=%d\n",
-		(long)sizeof(n), (long)sizeof(i), i.is_lock_free());
-	
-	assert(sizeof(i)>=sizeof(n));
-	
-	bool success;
-	
-	i=false;
-	n=true;
-	success=i.compare_exchange_strong(n, true);
-	assert(!success);
-	assert(n==false);
-	assert(i==false);
-	
-	n=false;
-	success=i.compare_exchange_strong(n, true);
-	assert(success);
-	assert(n==false);
-	assert(i==true);
-	
-	n=i.exchange(false);
-	assert(n==true);
-	assert(i==false);
-}
-
-void test_atomic_flag()
-{
-	atomic_flag f(0);
-	
-	assert(!f.test_and_set());
-	assert(f.test_and_set());
-	f.clear();
-	assert(!f.test_and_set());
-}
-
-struct Compound {
-	int i;
-	
-	inline bool operator==(const Compound &c) const {return i==c.i;}
-};
-
-void test_atomic_struct(void)
-{
-	atomic<Compound> i;
-	Compound n;
-	
-	Compound zero={0}, one={1}, two={2};
-	
-	assert(sizeof(i)>=sizeof(n));
-	
-	bool success;
-	
-	i.store(zero);
-	n=one;
-	success=i.compare_exchange_strong(n, two);
-	assert(!success);
-	assert(n==zero);
-	assert(i.load()==zero);
-	
-	n=zero;
-	success=i.compare_exchange_strong(n, two);
-	assert(success);
-	assert(n==zero);
-	assert(i.load()==two);
-	
-	n=i.exchange(one);
-	assert(n==two);
-	assert(i.load()==one);
-}
-
-enum TestEnum {
-	Foo, Bar
-};
-
-void test_fence()
-{
-	atomic_thread_fence(memory_order_acquire);
-}
-
-int main()
-{
-	test_atomic_arithmetic<char>();
-	test_atomic_arithmetic<signed char>();
-	test_atomic_arithmetic<unsigned char>();
-	test_atomic_arithmetic<uint8_t>();
-	test_atomic_arithmetic<int8_t>();
-	test_atomic_arithmetic<short>();
-	test_atomic_arithmetic<unsigned short>();
-	test_atomic_arithmetic<uint16_t>();
-	test_atomic_arithmetic<int16_t>();
-	test_atomic_arithmetic<int>();
-	test_atomic_arithmetic<unsigned int>();
-	test_atomic_arithmetic<uint32_t>();
-	test_atomic_arithmetic<int32_t>();
-	test_atomic_arithmetic<long>();
-	test_atomic_arithmetic<unsigned long>();
-	test_atomic_arithmetic<uint64_t>();
-	test_atomic_arithmetic<int64_t>();
-	test_atomic_arithmetic<long long>();
-	test_atomic_arithmetic<unsigned long long>();
-	
-	test_atomic_struct();
-	
-	test_atomic_base<void *>();
-	test_atomic_ptr<int>();
-	test_atomic_base<bool>();
-	test_atomic_base<TestEnum>();
-	
-	atomic_thread_fence(memory_order_seq_cst);
-	
-	test_fence();
-	
-	test_atomic_flag();
-}
diff --git a/external_libraries/boost_lockfree/libs/lockfree/doc/CMakeLists.txt b/external_libraries/boost_lockfree/libs/lockfree/doc/CMakeLists.txt
deleted file mode 100644
index 0f41477..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/doc/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-add_custom_target(doc
-    COMMAND bjam
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/external_libraries/boost_lockfree/libs/lockfree/doc/Jamfile.v2 b/external_libraries/boost_lockfree/libs/lockfree/doc/Jamfile.v2
deleted file mode 100644
index 86cfaac..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/doc/Jamfile.v2
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2010 Tim Blechmann
-# Distributed under the Boost Software License, Version 1.0. (See accompanying
-# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-import doxygen ;
-import quickbook ;
-
-doxygen autodoc
-    :
-        [ glob ../../../boost/lockfree/*.hpp ]
-    :
-        #<doxygen:param>EXTRACT_ALL=YES
-        <doxygen:param>"PREDEFINED=\"BOOST_DOXYGEN_INVOKED\" \\
-                                   \"BOOST_DEDUCED_TYPENAME=typename\" \\
-                                   \"BOOST_HAS_RVALUE_REFS\" \\
-                                   "
-        <doxygen:param>HIDE_UNDOC_MEMBERS=YES
-        <doxygen:param>HIDE_UNDOC_CLASSES=YES
-        <doxygen:param>INLINE_INHERITED_MEMB=YES
-        <doxygen:param>EXTRACT_PRIVATE=NO
-        <doxygen:param>ENABLE_PREPROCESSING=YES
-        <doxygen:param>MACRO_EXPANSION=YES
-        <doxygen:param>EXPAND_ONLY_PREDEF=YES
-        <doxygen:param>SEARCH_INCLUDES=YES
-        <doxygen:param>INCLUDE_PATH=$(BOOST_ROOT)
-        <doxygen:param>EXAMPLE_PATH=$(BOOST_ROOT)/libs/lockfree/examples
-        <doxygen:param>BRIEF_MEMBER_DESC=YES
-        <doxygen:param>REPEAT_BRIEF=YES
-        <doxygen:param>ALWAYS_DETAILED_SEC=YES
-        <doxygen:param>MULTILINE_CPP_IS_BRIEF=YES
-    ;
-
-xml lockfree : lockfree.qbk : ;
-
-boostbook standalone
-    : lockfree
-    : <xsl:param>html.stylesheet=../boostbook.css
-      <xsl:param>boost.root=../../../..
-      <xsl:param>boost.libraries=../../../libraries.htm
-      <xsl:param>toc.max.depth=3
-      <xsl:param>toc.section.depth=2
-      <xsl:param>chunk.section.depth=3
-      <dependency>autodoc
-      <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/lockfree/doc/html
-    ;
-
-install css : [ glob $(BOOST_ROOT)/doc/src/*.css ]
-    : <location>html ;
-install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ]
-    : <location>html/images ;
-explicit css ;
-explicit images ;
diff --git a/external_libraries/boost_lockfree/libs/lockfree/doc/boostbook.css b/external_libraries/boost_lockfree/libs/lockfree/doc/boostbook.css
deleted file mode 100644
index 252fa9e..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/doc/boostbook.css
+++ /dev/null
@@ -1,588 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2004 Joel de Guzman
-    http://spirit.sourceforge.net/
-
-    Distributed under the Boost Software License, Version 1.0. (See accompany-
-    ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-=============================================================================*/
-
-/*=============================================================================
-    Body defaults
-=============================================================================*/
-
-    body
-    {
-        margin: 1em;
-        font-family: sans-serif;
-    }
-
-/*=============================================================================
-    Paragraphs
-=============================================================================*/
-
-    p
-    {
-        text-align: left;
-        font-size: 10pt;
-        line-height: 1.15;
-    }
-
-/*=============================================================================
-    Program listings
-=============================================================================*/
-
-    /* Code on paragraphs */
-    p tt.computeroutput
-    {
-        font-size: 9pt;
-    }
-
-    pre.synopsis
-    {
-        font-size: 90%;
-        margin: 1pc 4% 0pc 4%;
-        padding: 0.5pc 0.5pc 0.5pc 0.5pc;
-    }
-
-    .programlisting,
-    .screen
-    {
-        font-size: 9pt;
-        display: block;
-        margin: 1pc 4% 0pc 4%;
-        padding: 0.5pc 0.5pc 0.5pc 0.5pc;
-    }
-
-    /* Program listings in tables don't get borders */
-    td .programlisting,
-    td .screen
-    {
-        margin: 0pc 0pc 0pc 0pc;
-        padding:  0pc 0pc 0pc 0pc;
-    }
-
-/*=============================================================================
-    Headings
-=============================================================================*/
-
-    h1, h2, h3, h4, h5, h6
-    {
-        text-align: left;
-        margin: 1em 0em 0.5em 0em;
-        font-weight: bold;
-    }
-
-    h1 { font: 140% }
-    h2 { font: bold 140% }
-    h3 { font: bold 130% }
-    h4 { font: bold 120% }
-    h5 { font: italic 110% }
-    h6 { font: italic 100% }
-
-    /* Top page titles */
-    title,
-    h1.title,
-    h2.title
-    h3.title,
-    h4.title,
-    h5.title,
-    h6.title,
-    .refentrytitle
-    {
-        font-weight: bold;
-        margin-bottom: 1pc;
-    }
-
-    h1.title { font-size: 140% }
-    h2.title { font-size: 140% }
-    h3.title { font-size: 130% }
-    h4.title { font-size: 120% }
-    h5.title { font-size: 110% }
-    h6.title { font-size: 100% }
-
-    .section h1
-    {
-        margin: 0em 0em 0.5em 0em;
-        font-size: 140%;
-    }
-
-    .section h2 { font-size: 140% }
-    .section h3 { font-size: 130% }
-    .section h4 { font-size: 120% }
-    .section h5 { font-size: 110% }
-    .section h6 { font-size: 100% }
-
-    /* Code on titles */
-    h1 tt.computeroutput { font-size: 140% }
-    h2 tt.computeroutput { font-size: 140% }
-    h3 tt.computeroutput { font-size: 130% }
-    h4 tt.computeroutput { font-size: 120% }
-    h5 tt.computeroutput { font-size: 110% }
-    h6 tt.computeroutput { font-size: 100% }
-
-/*=============================================================================
-    Author
-=============================================================================*/
-
-    h3.author
-    {
-        font-size: 100%
-    }
-
-/*=============================================================================
-    Lists
-=============================================================================*/
-
-    li
-    {
-        font-size: 10pt;
-        line-height: 1.3;
-    }
-
-    /* Unordered lists */
-    ul
-    {
-        text-align: left;
-    }
-
-    /* Ordered lists */
-    ol
-    {
-        text-align: left;
-    }
-
-/*=============================================================================
-    Links
-=============================================================================*/
-
-    a
-    {
-        text-decoration: none; /* no underline */
-    }
-
-    a:hover
-    {
-        text-decoration: underline;
-    }
-
-/*=============================================================================
-    Spirit style navigation
-=============================================================================*/
-
-    .spirit-nav
-    {
-        text-align: right;
-    }
-
-    .spirit-nav a
-    {
-        color: white;
-        padding-left: 0.5em;
-    }
-
-    .spirit-nav img
-    {
-        border-width: 0px;
-    }
-
-/*=============================================================================
-    Copyright footer
-=============================================================================*/
-    .copyright-footer
-    {
-        text-align: right;
-        font-size: 70%;
-    }
-
-    .copyright-footer p
-    {
-        text-align: right;
-        font-size: 80%;
-    }
-
-/*=============================================================================
-    Table of contents
-=============================================================================*/
-
-    .toc
-    {
-       margin: 1pc 4% 0pc 4%;
-       padding: 0.1pc 1pc 0.1pc 1pc;
-       font-size: 80%;
-       line-height: 1.15;
-    }
-
-    .boost-toc
-    {
-       float: right;
-       padding: 0.5pc;
-    }
-
-/*=============================================================================
-    Tables
-=============================================================================*/
-
-    .table-title,
-    div.table p.title
-    {
-        margin-left: 4%;
-        padding-right: 0.5em;
-        padding-left: 0.5em;
-    }
-
-    .informaltable table,
-    .table table
-    {
-        width: 92%;
-        margin-left: 4%;
-        margin-right: 4%;
-    }
-
-    div.informaltable table,
-    div.table table
-    {
-        padding: 4px;
-    }
-
-    /* Table Cells */
-    div.informaltable table tr td,
-    div.table table tr td
-    {
-        padding: 0.5em;
-        text-align: left;
-        font-size: 9pt;
-    }
-
-    div.informaltable table tr th,
-    div.table table tr th
-    {
-        padding: 0.5em 0.5em 0.5em 0.5em;
-        border: 1pt solid white;
-        font-size: 80%;
-    }
-
-    table.simplelist
-    {
-        width: auto !important;
-        margin: 0em !important;
-        padding: 0em !important;
-        border: none !important;
-    }
-    table.simplelist td
-    {
-        margin: 0em !important;
-        padding: 0em !important;
-        text-align: left !important;
-        font-size: 9pt !important;
-        border: none !important;
-    }
-
-/*=============================================================================
-    Blurbs
-=============================================================================*/
-
-    div.note,
-    div.tip,
-    div.important,
-    div.caution,
-    div.warning,
-    p.blurb
-    {
-        font-size: 9pt; /* A little bit smaller than the main text */
-        line-height: 1.2;
-        display: block;
-        margin: 1pc 4% 0pc 4%;
-        padding: 0.5pc 0.5pc 0.5pc 0.5pc;
-    }
-
-    p.blurb img
-    {
-        padding: 1pt;
-    }
-
-/*=============================================================================
-    Variable Lists
-=============================================================================*/
-
-    /* Make the terms in definition lists bold */
-    div.variablelist dl dt,
-    span.term
-    {
-        font-weight: bold;
-        font-size: 10pt;
-    }
-
-    div.variablelist table tbody tr td
-    {
-        text-align: left;
-        vertical-align: top;
-        padding: 0em 2em 0em 0em;
-        font-size: 10pt;
-        margin: 0em 0em 0.5em 0em;
-        line-height: 1;
-    }
-
-    div.variablelist dl dt
-    {
-        margin-bottom: 0.2em;
-    }
-
-    div.variablelist dl dd
-    {
-        margin: 0em 0em 0.5em 2em;
-        font-size: 10pt;
-    }
-
-    div.variablelist table tbody tr td p,
-    div.variablelist dl dd p
-    {
-        margin: 0em 0em 0.5em 0em;
-        line-height: 1;
-    }
-
-/*=============================================================================
-    Misc
-=============================================================================*/
-
-    /* Title of books and articles in bibliographies */
-    span.title
-    {
-        font-style: italic;
-    }
-
-    span.underline
-    {
-        text-decoration: underline;
-    }
-
-    span.strikethrough
-    {
-        text-decoration: line-through;
-    }
-
-    /* Copyright, Legal Notice */
-    div div.legalnotice p
-    {
-        text-align: left
-    }
-
-/*=============================================================================
-    Colors
-=============================================================================*/
-
-    @media screen
-    {
-        body {
-            background-color: #FFFFFF;
-        }
-        
-    /* Links */
-        a
-        {
-            color: #005a9c;
-        }
-
-        a:visited
-        {
-            color: #9c5a9c;
-        }
-
-        h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
-        h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
-        h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
-        {
-            text-decoration: none; /* no underline */
-            color: #000000;
-        }
-
-    /* Syntax Highlighting */
-        .keyword        { color: #0000AA; }
-        .identifier     { color: #000000; }
-        .special        { color: #707070; }
-        .preprocessor   { color: #402080; }
-        .char           { color: teal; }
-        .comment        { color: #800000; }
-        .string         { color: teal; }
-        .number         { color: teal; }
-        .white_bkd      { background-color: #FFFFFF; }
-        .dk_grey_bkd    { background-color: #999999; }
-
-    /* Copyright, Legal Notice */
-        .copyright
-        {
-            color: #666666;
-            font-size: small;
-        }
-
-        div div.legalnotice p
-        {
-            color: #666666;
-        }
-
-    /* Program listing */
-        pre.synopsis
-        {
-            border: 1px solid #DCDCDC;
-        }
-
-        .programlisting,
-        .screen
-        {
-            border: 1px solid #DCDCDC;
-        }
-
-        td .programlisting,
-        td .screen
-        {
-            border: 0px solid #DCDCDC;
-        }
-
-    /* Blurbs */
-        div.note,
-        div.tip,
-        div.important,
-        div.caution,
-        div.warning,
-        p.blurb
-        {
-            border: 1px solid #DCDCDC;
-        }
-
-    /* Table of contents */
-        .toc
-        {
-            border: 1px solid #DCDCDC;
-        }
-
-    /* Tables */
-        div.informaltable table tr td,
-        div.table table tr td
-        {
-            border: 1px solid #DCDCDC;
-        }
-
-        div.informaltable table tr th,
-        div.table table tr th
-        {
-            background-color: #F0F0F0;
-            border: 1px solid #DCDCDC;
-        }
-
-        .copyright-footer
-        {
-            color: #8F8F8F;
-        }
-
-    /* Misc */
-        span.highlight
-        {
-            color: #00A000;
-        }
-    }
-
-    @media print
-    {
-    /* Links */
-        a
-        {
-            color: black;
-        }
-
-        a:visited
-        {
-            color: black;
-        }
-
-        .spirit-nav
-        {
-            display: none;
-        }
-
-    /* Program listing */
-        pre.synopsis
-        {
-            border: 1px solid gray;
-        }
-
-        .programlisting,
-        .screen
-        {
-            border: 1px solid gray;
-        }
-
-        td .programlisting,
-        td .screen
-        {
-            border: 0px solid #DCDCDC;
-        }
-
-    /* Table of contents */
-        .toc
-        {
-            border: 1px solid gray;
-        }
-
-        .informaltable table,
-        .table table
-        {
-            border: 1px solid gray;
-            border-collapse: collapse;
-        }
-
-    /* Tables */
-        div.informaltable table tr td,
-        div.table table tr td
-        {
-            border: 1px solid gray;
-        }
-
-        div.informaltable table tr th,
-        div.table table tr th
-        {
-            border: 1px solid gray;
-        }
-
-        table.simplelist tr td
-        {
-            border: none !important;
-        }
-
-    /* Misc */
-        span.highlight
-        {
-            font-weight: bold;
-        }
-    }
-
-/*=============================================================================
-    Images
-=============================================================================*/
-
-    span.inlinemediaobject img
-    {
-        vertical-align: middle;
-    }
-
-/*==============================================================================
-    Super and Subscript: style so that line spacing isn't effected, see
-    http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341
-==============================================================================*/
-
-sup,
-sub {
-	height: 0;
-	line-height: 1;
-	vertical-align: baseline;
-	_vertical-align: bottom;
-	position: relative;
-	
-}
-
-sup {
-	bottom: 1ex;
-}
-
-sub {
-	top: .5ex;
-}
-
diff --git a/external_libraries/boost_lockfree/libs/lockfree/doc/lockfree.qbk b/external_libraries/boost_lockfree/libs/lockfree/doc/lockfree.qbk
deleted file mode 100644
index 1026b21..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/doc/lockfree.qbk
+++ /dev/null
@@ -1,204 +0,0 @@
-[library Boost.Lockfree
-    [quickbook 1.4]
-    [authors [Blechmann, Tim]]
-    [copyright 2008-2011 Tim Blechmann]
-    [category algorithms]
-    [purpose
-        lockfree concurrent data structures
-    ]
-    [id lockfree]
-    [dirname lockfree]
-    [license
-        Distributed under the Boost Software License, Version 1.0.
-        (See accompanying file LICENSE_1_0.txt or copy at
-        [@http://www.boost.org/LICENSE_1_0.txt])
-    ]
-]
-
-[c++]
-
-
-[/  Images   ]
-
-[def _note_                         [$images/note.png]]
-[def _alert_                        [$images/caution.png]]
-[def _detail_                       [$images/note.png]]
-[def _tip_                          [$images/tip.png]]
-
-[/  Links   ]
-
-[def _lockfree_                      [^boost.lockfree]]
-
-[/  unspecified stuff   ]
-[def __unspecified_int__ /unspecified-int-type/]
-[def __unspecified_bool__ /unspecified-bool-type/]
-
-[section:disclaimer Disclaimer]
-_lockfree_ is NOT a boost library!
-[endsect]
-
-[section Introduction & Motivation]
-
-[h2 Introduction & Terminology]
-
-The term *non-blocking* denotes concurrent data structures, which do not use traditional synchronization primitives like
-guards to ensure correctness. According Maurice Herlihy distinguishes between 3 types of non-blocking data structures,
-each having different properties (compare "The Art of Multiprocessor Programming"):
-
-* data structures are *wait-free*, if every concurrent operation is guaranteed to be finished in a finite number of
-  steps. It is therefore possible to give worst-case guarantees for the number of operations.
-
-* data structures are *lock-free*, if some concurrent operation are guaranteed to be finished in a finite number of
-  steps. While it is in theory possible that some operations never make any progress, it is very unlikely to happen in
-  practical applications.
-
-* data structures are *obstruction-free*, if a concurrent operation is guaranteed to be finished in a finite number of
-  steps, unless another concurrent operation interferes.
-
-
-Some data structures can only be implemented in a lock-free manner, if they are used under certain restrictions. The
-relevant aspects for the implementation of _lockfree_ are the number of producer and consumer threads. *Single-producer*
-(*sp*) or *multiple producer* (*mp*) means that only a single thread or multiple concurrent threads are allowed to add
-data to a data structure.  *Single-consumer* (*sc*) or *Multiple-consumer* (*mc*) denote the equivalent for the removal
-of data from the data structure.
-
-
-[h2 Properties of Non-Blocking Data Structures]
-
-Non-blocking data structures do not rely on guards to ensure the correctness. The synchronization is done completely in
-user-space with no interaction without any direct interaction with the operating system [footnote Spinlocks do not
-directly interact with the operating system either. However it is possible that the owning thread is preempted by the
-operating system, which violates the lock-free property]. This implies that they are not prone to issues like priority
-inversion (a low-priority thread needs to wait for a high-priority thread).
-
-Instead of relying on guards, non-blocking data structures require *atomic operations*, specific CPU instructions, which
-are executed atomically. This means that any thread either sees the state before or after the operation, but no
-intermediate state can be observed.  Not every hardware supports the same set of atomic instructions. If it is not
-available in hardware, it can be emulated in software using guards. However this has the obvious drawback of loosing the
-lock-free property.
-
-
-[h2 Performance of Non-Blocking Data Structures]
-
-When discussing the performance of non-blocking data structures, one has to distinguish between *amortized* and
-*worst-case* costs. The definition of `lock-free' and `wait-free' only mention the upper bound of an operation. In order
-to maximise the throughput of an application one should consider a high-performance lock-based data structure [footnote
-Intel's Thread Building Blocks provide many efficient concurrent data structures, which are not lock-free]. `Lock-free'
-data structures may will be a better choice in order to optimize the latency of a system or to avoid priority inversion,
-which may be necessary in real-time applications.
-
-
-[h2 Sources of Blocking Behavior]
-
-Apart from guards (which we are not using in _lockfree_ anyway), there are three other aspects, that could cause a
-violation of the lock-free property. First, some architectures do not provide the necessary atomic primitives
-natively. A mentioned earlier, they can be emulated in software using locks. A second source are memory allocations for
-node-based data structures: this makes it impossible to implement true dynamically-sized non-blocking data structures. A
-final possible source is C++ exception handling, but this is easy to avoid.
-
-[endsect]
-
-[section Design & Implementation of _lockfree_]
-
-_lockfree_ implements three different data structures, which are mainly used for message passing between threads. The
-data structures are:
-
-* [classref boost::lockfree::fifo], a lock-free multi-produced/multi-consumer queue
-* [classref boost::lockfree::stack], a lock-free multi-produced/multi-consumer stack
-* [classref boost::lockfree::ringbuffer], a wait-free single-producer/single-consumer ringbuffer
-
-The implementations are `text-book' implementations of well-known data structures. the queue is based on a paper of
-Michael Scott and Maged Michael, stack and ringbuffer are considered as `folklore' and are implemented in several
-open-source projects.
-
-* The data structures are *fixed sized* in order to avoid memory allocations. The node-based
-  [classref boost::lockfree::fifo] and [classref boost::lockfree::stack] can be configured to allocate memory from the
-  operating system, if their memory pool is exhausted. However this will compromise the lock-freedom.
-
-* The node-based [classref boost::lockfree::fifo] and [classref boost::lockfree::stack] do not return any memory to the
-  operating system, but instead maintain a free-list. This is done for two reasons: first, depending on the implementation
-  of the memory allocator freeing the memory may block, and second, most memory reclamation algorithms are patented.
-
-* The data structures provide an interface, which is not compatible to the stl containers. This is due to the concurrent
-  nature of the API.
-
-* The node-based [classref boost::lockfree::fifo] and [classref boost::lockfree::stack] use more memory than actually
-  required to avoid the problem known as `false sharing' by forcing different atomic data structures into diffrent cache lines.
-
-* Not all common architectures provide all required atomic operations. The node-based [classref boost::lockfree::fifo]
-  and [classref boost::lockfree::stack] require a compare_exchange working on the size of pointer and an integer tag. This
-  operation is available on almost every x86 and x86-64 architecture, but is missing on many risc architectures. Some
-  64bit architectures only provide a 64bit compare_exchange, but do not use the full 64bit address space. It is possible
-  to pack pointer and tag into a single 64bit memory region.  For details please consult the implementation of the
-  /boost::lockfree::detail::tagged_ptr/ class.
-
-[endsect]
-
-
-[section Examples]
-
-[h2 Fifo]
-
-The [classref boost::lockfree::fifo boost::lockfree::fifo] class implements a multi-writer/multi-reader fifo queue. The
-following example shows how integer values are produced and consumed by 2 threads each:
-
-[import ../examples/fifo.cpp]
-[fifo_example]
-
-The program output is:
-
-[pre
-produced 40000000 objects.
-consumed 40000000 objects.
-]
-
-
-[h2 Stack]
-
-The [classref boost::lockfree::stack boost::lockfree::stack] class implements a multi-writer/multi-reader stack. The
-following example shows how integer values are produced and consumed by 2 threads each:
-
-[import ../examples/stack.cpp]
-[stack_example]
-
-
-The program output is:
-
-[pre
-produced 4000000 objects.
-consumed 4000000 objects.
-]
-
-[h2 Ringbuffer]
-
-The [classref boost::lockfree::ringbuffer boost::lockfree::ringbuffer] class implements a wait-free single-writer/single-reader queue. The
-following example shows how integer values are produced and consumed by 2 separate threads:
-
-[import ../examples/ringbuffer.cpp]
-[ringbuffer_example]
-
-
-The program output is:
-
-[pre
-produced 10000000 objects.
-consumed 10000000 objects.
-]
-
-
-[endsect]
-
-
-[xinclude autodoc.xml]
-
-
-[section References]
-
-# Maged M. Michael and Michael L. Scott. Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms.
-In Symposium on Principles of Distributed Computing, pages 267–275, 1996.
-# M. Herlihy, V. Luchangco, P. Martin, and M. Moir. Nonblocking memory management support for dynamic-sized data
-structures. ACM Transactions on Computer Systems (TOCS), 23(2):146–196, 2005.
-# M. Herlihy & Nir Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann Publishers, 2008
-
-
-[endsect]
diff --git a/external_libraries/boost_lockfree/libs/lockfree/examples/CMakeLists.txt b/external_libraries/boost_lockfree/libs/lockfree/examples/CMakeLists.txt
deleted file mode 100644
index d488e78..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/examples/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-set(examples
-    fifo.cpp
-    stack.cpp
-    ringbuffer.cpp
-)
-
-link_libraries(boost_thread)
-
-foreach(ex ${examples})
-  string(REPLACE .cpp "" example_name ${ex} )
-  add_executable(${example_name} ${ex})
-endforeach(ex)
diff --git a/external_libraries/boost_lockfree/libs/lockfree/examples/Jamfile.v2 b/external_libraries/boost_lockfree/libs/lockfree/examples/Jamfile.v2
deleted file mode 100644
index 237c0e2..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/examples/Jamfile.v2
+++ /dev/null
@@ -1,11 +0,0 @@
-# (C) Copyright 2009: Tim Blechmann
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-project boost/lockfree/example
-    : requirements
-       <library>/usr/lib/libboost_thread.so # temporary hack
-    ;
-
-exe fifo : fifo.cpp ;
-exe stack : stack.cpp ;
diff --git a/external_libraries/boost_lockfree/libs/lockfree/examples/fifo.cpp b/external_libraries/boost_lockfree/libs/lockfree/examples/fifo.cpp
deleted file mode 100644
index 4c3219d..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/examples/fifo.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//  Copyright (C) 2009 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//[fifo_example
-#include <boost/thread/thread.hpp>
-#include <boost/atomic.hpp>
-#include <boost/lockfree/fifo.hpp>
-#include <iostream>
-
-boost::atomic_int producer_count(0);
-boost::atomic_int consumer_count(0);
-
-boost::lockfree::fifo<int> fifo;
-
-const int iterations = 10000000;
-const int producer_thread_count = 4;
-const int consumer_thread_count = 4;
-
-void producer(void)
-{
-    for (int i = 0; i != iterations; ++i) {
-        int value = ++producer_count;
-        while (!fifo.enqueue(value))
-            ;
-    }
-}
-
-boost::atomic<bool> done (false);
-void consumer(void)
-{
-    int value;
-    while (!done) {
-        while (fifo.dequeue(value))
-            ++consumer_count;
-    }
-
-    while (fifo.dequeue(value))
-        ++consumer_count;
-}
-
-int main(int argc, char* argv[])
-{
-    using namespace std;
-    cout << "boost::lockfree::fifo is ";
-    if (!fifo.is_lock_free())
-        cout << "not ";
-    cout << "lockfree" << endl;
-
-    boost::thread_group producer_threads, consumer_threads;
-
-    for (int i = 0; i != producer_thread_count; ++i)
-        producer_threads.create_thread(producer);
-
-    for (int i = 0; i != consumer_thread_count; ++i)
-        consumer_threads.create_thread(consumer);
-
-    producer_threads.join_all();
-    done = true;
-
-    consumer_threads.join_all();
-
-    cout << "produced " << producer_count << " objects." << endl;
-    cout << "consumed " << consumer_count << " objects." << endl;
-}
-//]
diff --git a/external_libraries/boost_lockfree/libs/lockfree/examples/ringbuffer.cpp b/external_libraries/boost_lockfree/libs/lockfree/examples/ringbuffer.cpp
deleted file mode 100644
index bcb2060..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/examples/ringbuffer.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-//  Copyright (C) 2009 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//[ringbuffer_example
-#include <boost/thread/thread.hpp>
-#include <boost/atomic.hpp>
-#include <boost/lockfree/ringbuffer.hpp>
-#include <iostream>
-
-int producer_count = 0;
-boost::atomic_int consumer_count (0);
-
-boost::lockfree::ringbuffer<int, 1024> ringbuffer;
-
-const int iterations = 10000000;
-
-void producer(void)
-{
-    for (int i = 0; i != iterations; ++i) {
-        int value = ++producer_count;
-        while (!ringbuffer.enqueue(value))
-            ;
-    }
-}
-
-boost::atomic<bool> done (false);
-
-void consumer(void)
-{
-    int value;
-    while (!done) {
-        while (ringbuffer.dequeue(value))
-            ++consumer_count;
-    }
-
-    while (ringbuffer.dequeue(value))
-        ++consumer_count;
-}
-
-int main(int argc, char* argv[])
-{
-    using namespace std;
-    cout << "boost::lockfree::fifo is ";
-    if (!ringbuffer.is_lock_free())
-        cout << "not ";
-    cout << "lockfree" << endl;
-
-    boost::thread producer_thread(producer);
-    boost::thread consumer_thread(consumer);
-
-
-    producer_thread.join();
-    done = true;
-    consumer_thread.join();
-
-    cout << "produced " << producer_count << " objects." << endl;
-    cout << "consumed " << consumer_count << " objects." << endl;
-}
-//]
diff --git a/external_libraries/boost_lockfree/libs/lockfree/examples/stack.cpp b/external_libraries/boost_lockfree/libs/lockfree/examples/stack.cpp
deleted file mode 100644
index 0e8cd8f..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/examples/stack.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//  Copyright (C) 2009 Tim Blechmann
-//
-//  Distributed under the Boost Software License, Version 1.0. (See
-//  accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt)
-
-//[stack_example
-#include <boost/thread/thread.hpp>
-#include <boost/atomic.hpp>
-#include <boost/lockfree/stack.hpp>
-#include <iostream>
-
-boost::atomic_int producer_count(0);
-boost::atomic_int consumer_count(0);
-
-boost::lockfree::stack<int> stack;
-
-const int iterations = 1000000;
-const int producer_thread_count = 4;
-const int consumer_thread_count = 4;
-
-void producer(void)
-{
-    for (int i = 0; i != iterations; ++i) {
-        int value = ++producer_count;
-        while (!stack.push(value))
-            ;
-    }
-}
-
-boost::atomic<bool> done (false);
-
-void consumer(void)
-{
-    int value;
-    while (!done) {
-        while (stack.pop(value))
-            ++consumer_count;
-    }
-
-    while (stack.pop(value))
-        ++consumer_count;
-}
-
-int main(int argc, char* argv[])
-{
-    using namespace std;
-    cout << "boost::lockfree::stack is ";
-    if (!stack.is_lock_free())
-        cout << "not ";
-    cout << "lockfree" << endl;
-
-    boost::thread_group producer_threads, consumer_threads;
-
-    for (int i = 0; i != producer_thread_count; ++i)
-        producer_threads.create_thread(producer);
-
-    for (int i = 0; i != consumer_thread_count; ++i)
-        consumer_threads.create_thread(consumer);
-
-    producer_threads.join_all();
-    done = true;
-
-    consumer_threads.join_all();
-
-    cout << "produced " << producer_count << " objects." << endl;
-    cout << "consumed " << consumer_count << " objects." << endl;
-}
-//]
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/CMakeLists.txt b/external_libraries/boost_lockfree/libs/lockfree/test/CMakeLists.txt
deleted file mode 100644
index 55d0f92..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-set(tests
-    fifo_test.cpp
-    freelist_test.cpp
-    ringbuffer_test.cpp
-    stack_test.cpp
-    tagged_ptr_test.cpp
-)
-
-# build benchmarks
-foreach(test ${tests})
-  string(REPLACE .cpp "" test_name ${test} )
-  add_executable(${test_name} ${test})
-  target_link_libraries(${test_name} boost_unit_test_framework boost_thread)
-  add_test(${test_name}_run ${EXECUTABLE_OUTPUT_PATH}/${test_name})
-endforeach(test)
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/Jamfile.v2 b/external_libraries/boost_lockfree/libs/lockfree/test/Jamfile.v2
deleted file mode 100644
index 7886982..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/Jamfile.v2
+++ /dev/null
@@ -1,27 +0,0 @@
-# (C) Copyright 2010: Tim Blechmann
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-import testing ;
-
-lib boost_unit_test_framework ;
-lib boost_thread ;
-
-rule test_all
-{
-   local all_rules = ;
-
-   for local fileb in [ glob *.cpp ]
-   {
-      all_rules += [ run $(fileb) boost_unit_test_framework boost_thread
-      :  # additional args
-      :  # test-files
-      : #
-      <threading>multi # requirements
-      ] ;
-   }
-
-    return $(all_rules) ;
-}
-
-test-suite heap : [ test_all r ] : <threading>multi ;
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/bench_1.cpp b/external_libraries/boost_lockfree/libs/lockfree/test/bench_1.cpp
deleted file mode 100644
index e86da5a..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/bench_1.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-#include "../../../boost/lockfree/fifo.hpp"
-#include "../../../boost/lockfree/stack.hpp"
-
-int elements = 16384 * 4;
-int iterations = 50;
-
-#define FIFO \
-    boost::lockfree::fifo<long> f(elements);
-
-#define FIFO_FULL \
-    boost::lockfree::fifo<long> f(elements); \
-    for (int i = 0; i != elements; ++i) \
-        f.enqueue_unsafe(i); \
-
-#define STACK \
-    boost::lockfree::stack<long> f(elements);
-
-#define STACK_FULL \
-    boost::lockfree::stack<long> f(elements); \
-    for (int i = 0; i != elements; ++i) \
-        f.push_unsafe(i); \
-
-__attribute__ ((noinline))
-__attribute__ ((flatten))
-void test_fifo_push(void)
-{
-    FIFO
-    for (int i = 0; i != elements; ++i)
-		f.enqueue(i);
-}
-
-__attribute__ ((noinline))
-__attribute__ ((flatten))
-void test_fifo_push_unsafe(void)
-{
-    FIFO
-    for (int i = 0; i != elements; ++i)
-		f.enqueue_unsafe(i);
-}
-
-__attribute__ ((noinline))
-__attribute__ ((flatten))
-void test_stack_push(void)
-{
-    STACK
-	for (int i = 0; i != elements; ++i)
-		f.push(i);
-}
-
-__attribute__ ((noinline))
-__attribute__ ((flatten))
-void test_stack_push_unsafe(void)
-{
-    STACK
-	for (int i = 0; i != elements; ++i)
-		f.push_unsafe(i);
-}
-
-
-__attribute__ ((noinline))
-__attribute__ ((flatten))
-void test_fifo_pop(void)
-{
-    FIFO_FULL
-    long out;
-    for (int i = 0; i != elements; ++i)
-        f.dequeue(&out);
-}
-
-__attribute__ ((noinline))
-__attribute__ ((flatten))
-void test_fifo_pop_unsafe(void)
-{
-    FIFO_FULL
-    long out;
-    for (int i = 0; i != elements; ++i)
-        f.dequeue_unsafe(&out);
-}
-
-__attribute__ ((noinline))
-__attribute__ ((flatten))
-void test_stack_pop(void)
-{
-    STACK_FULL
-    long out;
-    for (int i = 0; i != elements; ++i)
-        f.pop(&out);
-}
-
-__attribute__ ((noinline))
-__attribute__ ((flatten))
-void test_stack_pop_unsafe(void)
-{
-    STACK_FULL
-    long out;
-    for (int i = 0; i != elements; ++i)
-        f.pop_unsafe(&out);
-}
-
-int main()
-{
-    for (int i = 0; i != iterations; ++i)
-        test_fifo_push();
-
-    for (int i = 0; i != iterations; ++i)
-        test_fifo_push_unsafe();
-
-    for (int i = 0; i != iterations; ++i)
-        test_fifo_pop();
-
-    for (int i = 0; i != iterations; ++i)
-        test_fifo_pop_unsafe();
-
-    for (int i = 0; i != iterations; ++i)
-        test_stack_push();
-
-    for (int i = 0; i != iterations; ++i)
-        test_stack_push_unsafe();
-
-    for (int i = 0; i != iterations; ++i)
-        test_stack_pop();
-
-    for (int i = 0; i != iterations; ++i)
-        test_stack_pop_unsafe();
-}
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/fifo_test.cpp b/external_libraries/boost_lockfree/libs/lockfree/test/fifo_test.cpp
deleted file mode 100644
index ff0dc7a..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/fifo_test.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-#include <boost/lockfree/fifo.hpp>
-
-#include <climits>
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MAIN
-#include <boost/test/unit_test.hpp>
-
-
-#include <boost/thread.hpp>
-#include <iostream>
-#include <memory>
-
-
-#include "test_helpers.hpp"
-
-using namespace boost;
-using namespace boost::lockfree;
-using namespace std;
-
-
-BOOST_AUTO_TEST_CASE( simple_fifo_test )
-{
-    fifo<int> f(64);
-
-    BOOST_WARN(f.is_lock_free());
-
-    BOOST_REQUIRE(f.empty());
-    f.enqueue(1);
-    f.enqueue(2);
-
-    int i1(0), i2(0);
-
-    BOOST_REQUIRE(f.dequeue(i1));
-    BOOST_REQUIRE_EQUAL(i1, 1);
-
-    BOOST_REQUIRE(f.dequeue(i2));
-    BOOST_REQUIRE_EQUAL(i2, 2);
-    BOOST_REQUIRE(f.empty());
-
-    f.enqueue_unsafe(1);
-    f.enqueue_unsafe(2);
-
-    BOOST_REQUIRE(f.dequeue(i1));
-    BOOST_REQUIRE_EQUAL(i1, 1);
-
-    BOOST_REQUIRE(f.dequeue(i2));
-    BOOST_REQUIRE_EQUAL(i2, 2);
-    BOOST_REQUIRE(f.empty());
-}
-
-
-BOOST_AUTO_TEST_CASE( fifo_specialization_test )
-{
-    fifo<int*> f(128);
-    BOOST_REQUIRE(f.empty());
-    f.enqueue(new int(1));
-    f.enqueue(new int(2));
-    f.enqueue(new int(3));
-    f.enqueue(new int(4));
-
-    {
-        int * i1;
-
-        BOOST_REQUIRE(f.dequeue(i1));
-        BOOST_REQUIRE_EQUAL(*i1, 1);
-        delete i1;
-    }
-
-
-    {
-        auto_ptr<int> i2;
-        BOOST_REQUIRE(f.dequeue(i2));
-        BOOST_REQUIRE_EQUAL(*i2, 2);
-    }
-
-    {
-        boost::scoped_ptr<int> i3;
-        BOOST_REQUIRE(f.dequeue(i3));
-
-        BOOST_REQUIRE_EQUAL(*i3, 3);
-    }
-
-    {
-        boost::scoped_ptr<int> i4;
-        BOOST_REQUIRE(f.dequeue(i4));
-
-        BOOST_REQUIRE_EQUAL(*i4, 4);
-    }
-
-
-    BOOST_REQUIRE(f.empty());
-}
-
-template <typename freelist_t>
-struct fifo_tester
-{
-    fifo<int, freelist_t> sf;
-
-    boost::lockfree::detail::atomic<long> fifo_cnt, received_nodes;
-
-    static_hashed_set<int, 1<<16 > working_set;
-
-    static const uint nodes_per_thread = 200000;
-
-    static const int reader_threads = 2;
-    static const int writer_threads = 2;
-
-    fifo_tester(void):
-        fifo_cnt(0), received_nodes(0)
-    {
-        sf.reserve(128);
-    }
-
-    void add(void)
-    {
-        for (uint i = 0; i != nodes_per_thread; ++i)
-        {
-            while(fifo_cnt > 10000)
-                thread::yield();
-
-            int id = generate_id<int>();
-
-            working_set.insert(id);
-
-            while (sf.enqueue(id) == false)
-            {
-                thread::yield();
-            }
-
-            ++fifo_cnt;
-        }
-    }
-
-    bool get_element(void)
-    {
-        int data;
-
-        bool success = sf.dequeue(data);
-
-        if (success)
-        {
-            ++received_nodes;
-            --fifo_cnt;
-            bool erased = working_set.erase(data);
-            assert(erased);
-            return true;
-        }
-        else
-            return false;
-    }
-
-    boost::atomic<bool> running;
-
-    void get(void)
-    {
-        for(;;)
-        {
-            bool success = get_element();
-            if (not running and not success)
-                return;
-            if (not success)
-                thread::yield();
-        }
-    }
-
-    void run(void)
-    {
-        running = true;
-
-        thread_group writer;
-        thread_group reader;
-
-        BOOST_REQUIRE(sf.empty());
-        for (int i = 0; i != reader_threads; ++i)
-            reader.create_thread(boost::bind(&fifo_tester::get, this));
-
-        for (int i = 0; i != writer_threads; ++i)
-            writer.create_thread(boost::bind(&fifo_tester::add, this));
-        cout << "reader and writer threads created" << endl;
-
-        writer.join_all();
-        cout << "writer threads joined. waiting for readers to finish" << endl;
-
-        running = false;
-        reader.join_all();
-
-        BOOST_REQUIRE_EQUAL(received_nodes, writer_threads * nodes_per_thread);
-        BOOST_REQUIRE_EQUAL(fifo_cnt, 0);
-        BOOST_REQUIRE(sf.empty());
-        BOOST_REQUIRE(working_set.count_nodes() == 0);
-    }
-};
-
-
-
-BOOST_AUTO_TEST_CASE( fifo_test_caching )
-{
-    fifo_tester<boost::lockfree::caching_freelist_t> test1;
-    test1.run();
-}
-
-BOOST_AUTO_TEST_CASE( fifo_test_static )
-{
-    fifo_tester<boost::lockfree::static_freelist_t> test1;
-    test1.run();
-}
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/freelist_test.cpp b/external_libraries/boost_lockfree/libs/lockfree/test/freelist_test.cpp
deleted file mode 100644
index 7b45328..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/freelist_test.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-#include <boost/lockfree/detail/freelist.hpp>
-#include <boost/thread.hpp>
-
-#include <climits>
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MAIN
-#include <boost/test/unit_test.hpp>
-
-#include <boost/foreach.hpp>
-#include <boost/static_assert.hpp>
-
-#include <boost/type_traits/is_same.hpp>
-
-#include <vector>
-
-
-class dummy
-{
-    int foo[64];
-};
-
-template <typename freelist_type,
-          bool threadsafe>
-void run_test(void)
-{
-    freelist_type fl(8);
-
-    std::vector<dummy*> nodes;
-
-    for (int i = 0; i != 4; ++i)
-        nodes.push_back(threadsafe ? fl.allocate()
-                                   : fl.allocate_unsafe());
-
-    BOOST_FOREACH(dummy * d, nodes)
-        if (threadsafe)
-            fl.deallocate(d);
-        else
-            fl.deallocate_unsafe(d);
-
-    nodes.clear();
-    for (int i = 0; i != 4; ++i)
-        nodes.push_back(threadsafe ? fl.allocate()
-                                   : fl.allocate_unsafe());
-
-    BOOST_FOREACH(dummy * d, nodes)
-        if (threadsafe)
-            fl.deallocate(d);
-        else
-            fl.deallocate_unsafe(d);
-
-    for (int i = 0; i != 4; ++i)
-        nodes.push_back(threadsafe ? fl.allocate()
-                                   : fl.allocate_unsafe());
-}
-
-BOOST_AUTO_TEST_CASE( freelist_tests )
-{
-    run_test<boost::lockfree::detail::freelist_stack<dummy, true>, true >();
-    run_test<boost::lockfree::detail::freelist_stack<dummy, false>, true >();
-    run_test<boost::lockfree::detail::freelist_stack<dummy, true>, false >();
-    run_test<boost::lockfree::detail::freelist_stack<dummy, false>, false >();
-}
-
-template <typename freelist_type>
-struct freelist_tester
-{
-    static const int max_nodes = 1024;
-    static const int thread_count = 4;
-    static const int loops_per_thread = 1024;
-
-    boost::lockfree::detail::atomic<int> free_nodes;
-    boost::thread_group threads;
-
-    freelist_type fl;
-
-    freelist_tester(void):
-        free_nodes(0), fl(max_nodes * thread_count)
-    {
-        for (int i = 0; i != thread_count; ++i)
-            threads.create_thread(boost::bind(&freelist_tester::run, this));
-        threads.join_all();
-    }
-
-    void run(void)
-    {
-        std::vector<dummy*> nodes;
-        nodes.reserve(max_nodes);
-
-        for (int i = 0; i != loops_per_thread; ++i) {
-            while (nodes.size() < max_nodes) {
-                dummy * node = fl.allocate();
-                if (node == NULL)
-                    break;
-                nodes.push_back(node);
-            }
-
-            while (!nodes.empty()) {
-                dummy * node = nodes.back();
-                assert(node);
-                nodes.pop_back();
-                fl.deallocate(node);
-            }
-        }
-        BOOST_REQUIRE(nodes.empty());
-    }
-};
-
-BOOST_AUTO_TEST_CASE( caching_freelist_test )
-{
-    freelist_tester<boost::lockfree::detail::freelist_stack<dummy, true> > tester();
-}
-
-BOOST_AUTO_TEST_CASE( static_freelist_test )
-{
-    freelist_tester<boost::lockfree::detail::freelist_stack<dummy, true> > tester();
-}
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/ringbuffer_test.cpp b/external_libraries/boost_lockfree/libs/lockfree/test/ringbuffer_test.cpp
deleted file mode 100644
index e8cd02a..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/ringbuffer_test.cpp
+++ /dev/null
@@ -1,397 +0,0 @@
-#include <boost/lockfree/ringbuffer.hpp>
-
-#include <climits>
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MAIN
-#include <boost/test/unit_test.hpp>
-
-
-#include <boost/thread.hpp>
-#include <iostream>
-#include <memory>
-
-
-#include "test_helpers.hpp"
-
-using namespace boost;
-using namespace boost::lockfree;
-using namespace std;
-
-
-BOOST_AUTO_TEST_CASE( simple_ringbuffer_test )
-{
-    ringbuffer<int, 64> f;
-
-    BOOST_REQUIRE(f.empty());
-    f.enqueue(1);
-    f.enqueue(2);
-
-    int i1(0), i2(0);
-
-    BOOST_REQUIRE(f.dequeue(i1));
-    BOOST_REQUIRE_EQUAL(i1, 1);
-
-    BOOST_REQUIRE(f.dequeue(i2));
-    BOOST_REQUIRE_EQUAL(i2, 2);
-    BOOST_REQUIRE(f.empty());
-}
-
-
-enum {
-    pointer_and_size,
-    reference_to_array,
-    iterator_pair,
-    output_iterator
-};
-
-
-template <int EnqueueMode>
-void ringbuffer_buffer_enqueue_return_value(void)
-{
-    const size_t xqueue_size = 64;
-    const size_t buffer_size = 100;
-    ringbuffer<int, 100> rb;
-
-    int data[xqueue_size];
-    for (size_t i = 0; i != xqueue_size; ++i)
-        data[i] = i*2;
-
-    switch (EnqueueMode) {
-    case pointer_and_size:
-        BOOST_REQUIRE_EQUAL(rb.enqueue(data, xqueue_size), xqueue_size);
-        break;
-
-    case reference_to_array:
-        BOOST_REQUIRE_EQUAL(rb.enqueue(data), xqueue_size);
-        break;
-
-    case iterator_pair:
-        BOOST_REQUIRE_EQUAL(rb.enqueue(data, data + xqueue_size), data + xqueue_size);
-        break;
-
-    default:
-        assert(false);
-    }
-
-    switch (EnqueueMode) {
-    case pointer_and_size:
-        BOOST_REQUIRE_EQUAL(rb.enqueue(data, xqueue_size), buffer_size - xqueue_size - 1);
-        break;
-
-    case reference_to_array:
-        BOOST_REQUIRE_EQUAL(rb.enqueue(data), buffer_size - xqueue_size - 1);
-        break;
-
-    case iterator_pair:
-        BOOST_REQUIRE_EQUAL(rb.enqueue(data, data + xqueue_size), data + buffer_size - xqueue_size - 1);
-        break;
-
-    default:
-        assert(false);
-    }
-}
-
-BOOST_AUTO_TEST_CASE( ringbuffer_buffer_enqueue_return_value_test )
-{
-    ringbuffer_buffer_enqueue_return_value<pointer_and_size>();
-    ringbuffer_buffer_enqueue_return_value<reference_to_array>();
-    ringbuffer_buffer_enqueue_return_value<iterator_pair>();
-}
-
-template <int EnqueueMode,
-          int ElementCount,
-          int BufferSize,
-          int NumberOfIterations
-         >
-void ringbuffer_buffer_enqueue(void)
-{
-    const size_t xqueue_size = ElementCount;
-    ringbuffer<int, BufferSize> rb;
-
-    int data[xqueue_size];
-    for (size_t i = 0; i != xqueue_size; ++i)
-        data[i] = i*2;
-
-    std::vector<int> vdata(data, data + xqueue_size);
-
-    for (int i = 0; i != NumberOfIterations; ++i) {
-        BOOST_REQUIRE(rb.empty());
-        switch (EnqueueMode) {
-        case pointer_and_size:
-            BOOST_REQUIRE_EQUAL(rb.enqueue(data, xqueue_size), xqueue_size);
-            break;
-
-        case reference_to_array:
-            BOOST_REQUIRE_EQUAL(rb.enqueue(data), xqueue_size);
-            break;
-
-        case iterator_pair:
-            BOOST_REQUIRE_EQUAL(rb.enqueue(data, data + xqueue_size), data + xqueue_size);
-            break;
-
-        default:
-            assert(false);
-        }
-
-        int out[xqueue_size];
-        BOOST_REQUIRE_EQUAL(rb.dequeue(out, xqueue_size), xqueue_size);
-        for (size_t i = 0; i != xqueue_size; ++i)
-            BOOST_REQUIRE_EQUAL(data[i], out[i]);
-    }
-}
-
-BOOST_AUTO_TEST_CASE( ringbuffer_buffer_enqueue_test )
-{
-    ringbuffer_buffer_enqueue<pointer_and_size, 7, 16, 64>();
-    ringbuffer_buffer_enqueue<reference_to_array, 7, 16, 64>();
-    ringbuffer_buffer_enqueue<iterator_pair, 7, 16, 64>();
-}
-
-template <int EnqueueMode,
-          int ElementCount,
-          int BufferSize,
-          int NumberOfIterations
-         >
-void ringbuffer_buffer_dequeue(void)
-{
-    const size_t xqueue_size = ElementCount;
-    ringbuffer<int, BufferSize> rb;
-
-    int data[xqueue_size];
-    for (size_t i = 0; i != xqueue_size; ++i)
-        data[i] = i*2;
-
-    std::vector<int> vdata(data, data + xqueue_size);
-
-    for (int i = 0; i != NumberOfIterations; ++i) {
-        BOOST_REQUIRE(rb.empty());
-        BOOST_REQUIRE_EQUAL(rb.enqueue(data), xqueue_size);
-
-        int out[xqueue_size];
-        vector<int> vout;
-
-        switch (EnqueueMode) {
-        case pointer_and_size:
-            BOOST_REQUIRE_EQUAL(rb.dequeue(out, xqueue_size), xqueue_size);
-            break;
-
-        case reference_to_array:
-            BOOST_REQUIRE_EQUAL(rb.dequeue(out), xqueue_size);
-            break;
-
-        case output_iterator:
-            BOOST_REQUIRE_EQUAL(rb.dequeue(std::back_inserter(vout)), xqueue_size);
-            break;
-
-        default:
-            assert(false);
-        }
-
-        if (EnqueueMode == output_iterator) {
-            BOOST_REQUIRE_EQUAL(vout.size(), xqueue_size);
-            for (size_t i = 0; i != xqueue_size; ++i)
-                BOOST_REQUIRE_EQUAL(data[i], vout[i]);
-        } else {
-            for (size_t i = 0; i != xqueue_size; ++i)
-                BOOST_REQUIRE_EQUAL(data[i], out[i]);
-        }
-    }
-}
-
-BOOST_AUTO_TEST_CASE( ringbuffer_buffer_dequeue_test )
-{
-    ringbuffer_buffer_dequeue<pointer_and_size, 7, 16, 64>();
-    ringbuffer_buffer_dequeue<reference_to_array, 7, 16, 64>();
-    ringbuffer_buffer_dequeue<output_iterator, 7, 16, 64>();
-}
-
-
-static const uint nodes_per_thread = 500000;
-
-struct ringbuffer_tester
-{
-    ringbuffer<int, 128> sf;
-
-    atomic<long> ringbuffer_cnt, received_nodes;
-
-    static_hashed_set<int, 1<<16 > working_set;
-
-    ringbuffer_tester(void):
-        ringbuffer_cnt(0), received_nodes(0)
-    {}
-
-    void add(void)
-    {
-        for (uint i = 0; i != nodes_per_thread; ++i)
-        {
-            int id = generate_id<int>();
-
-            working_set.insert(id);
-
-            while (sf.enqueue(id) == false)
-            {}
-
-            ++ringbuffer_cnt;
-        }
-    }
-
-    bool get_element(void)
-    {
-        int data;
-
-        bool success = sf.dequeue(data);
-
-        if (success)
-        {
-            ++received_nodes;
-            --ringbuffer_cnt;
-            bool erased = working_set.erase(data);
-            assert(erased);
-            return true;
-        }
-        else
-            return false;
-    }
-
-    boost::atomic<bool> running;
-
-    void get(void)
-    {
-        for(;;)
-        {
-            bool success = get_element();
-            if (not running and not success)
-                return;
-        }
-    }
-
-    void run(void)
-    {
-        running = true;
-
-        BOOST_REQUIRE(sf.empty());
-
-        thread reader(boost::bind(&ringbuffer_tester::get, this));
-        thread writer(boost::bind(&ringbuffer_tester::add, this));
-        cout << "reader and writer threads created" << endl;
-
-        writer.join();
-        cout << "writer threads joined. waiting for readers to finish" << endl;
-
-        running = false;
-        reader.join();
-
-        BOOST_REQUIRE_EQUAL(received_nodes, nodes_per_thread);
-        BOOST_REQUIRE_EQUAL(ringbuffer_cnt, 0);
-        BOOST_REQUIRE(sf.empty());
-        BOOST_REQUIRE(working_set.count_nodes() == 0);
-    }
-};
-
-BOOST_AUTO_TEST_CASE( ringbuffer_test_caching )
-{
-//     ringbuffer_tester test1;
-    //test1.run();
-}
-
-struct ringbuffer_tester_buffering
-{
-    ringbuffer<int, 128> sf;
-
-    atomic<long> ringbuffer_cnt;
-
-    static_hashed_set<int, 1<<16 > working_set;
-    atomic<long> received_nodes;
-
-    ringbuffer_tester_buffering(void):
-        ringbuffer_cnt(0), received_nodes(0)
-    {}
-
-    static const size_t buf_size = 5;
-
-    void add(void)
-    {
-        boost::array<int, buf_size> input_buffer;
-        for (uint i = 0; i != nodes_per_thread; i+=buf_size)
-        {
-            for (size_t i = 0; i != buf_size; ++i)
-            {
-                int id = generate_id<int>();
-                working_set.insert(id);
-                input_buffer[i] = id;
-            }
-
-            size_t enqueued = 0;
-
-            do
-            {
-                enqueued += sf.enqueue(input_buffer.c_array() + enqueued,
-                                       input_buffer.size()    - enqueued);
-            }
-            while (enqueued != buf_size);
-
-            ringbuffer_cnt+=buf_size;
-        }
-    }
-
-    bool get_elements(void)
-    {
-        boost::array<int, buf_size> output_buffer;
-
-        size_t dequeued = sf.dequeue(output_buffer.c_array(), output_buffer.size());
-
-        if (dequeued)
-        {
-            received_nodes += dequeued;
-            ringbuffer_cnt -= dequeued;
-
-            for (size_t i = 0; i != dequeued; ++i)
-            {
-                bool erased = working_set.erase(output_buffer[i]);
-                assert(erased);
-            }
-
-            return true;
-        }
-        else
-            return false;
-    }
-
-    boost::atomic<bool> running;
-
-    void get(void)
-    {
-        for(;;)
-        {
-            bool success = get_elements();
-            if (not running and not success)
-                return;
-        }
-    }
-
-    void run(void)
-    {
-        running = true;
-
-        thread reader(boost::bind(&ringbuffer_tester_buffering::get, this));
-        thread writer(boost::bind(&ringbuffer_tester_buffering::add, this));
-        cout << "reader and writer threads created" << endl;
-
-        writer.join();
-        cout << "writer threads joined. waiting for readers to finish" << endl;
-
-        running = false;
-        reader.join();
-
-        BOOST_REQUIRE_EQUAL(received_nodes, nodes_per_thread);
-        BOOST_REQUIRE_EQUAL(ringbuffer_cnt, 0);
-        BOOST_REQUIRE(sf.empty());
-        BOOST_REQUIRE(working_set.count_nodes() == 0);
-    }
-};
-
-BOOST_AUTO_TEST_CASE( ringbuffer_test_buffering )
-{
-    ringbuffer_tester_buffering test1;
-    test1.run();
-}
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/stack_test.cpp b/external_libraries/boost_lockfree/libs/lockfree/test/stack_test.cpp
deleted file mode 100644
index d4b68e9..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/stack_test.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-#include <climits>
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MAIN
-#include <boost/test/unit_test.hpp>
-
-#include "test_helpers.hpp"
-
-#include <boost/lockfree/stack.hpp>
-
-#include <boost/thread.hpp>
-#include <iostream>
-
-
-BOOST_AUTO_TEST_CASE( simple_stack_test )
-{
-    boost::lockfree::stack<long> stk;
-
-    stk.push(1);
-    stk.push(2);
-    long out;
-    BOOST_REQUIRE(stk.pop(out)); BOOST_REQUIRE_EQUAL(out, 2);
-    BOOST_REQUIRE(stk.pop(out)); BOOST_REQUIRE_EQUAL(out, 1);
-    BOOST_REQUIRE(!stk.pop(out));
-
-    stk.push_unsafe(1);
-    stk.push_unsafe(2);
-    BOOST_REQUIRE(stk.pop_unsafe(out)); BOOST_REQUIRE_EQUAL(out, 2);
-    BOOST_REQUIRE(stk.pop_unsafe(out)); BOOST_REQUIRE_EQUAL(out, 1);
-    BOOST_REQUIRE(!stk.pop_unsafe(out));
-}
-
-
-using namespace boost;
-using namespace std;
-
-template <typename freelist_t>
-struct stack_tester
-{
-    static const unsigned int buckets = 1<<10;
-    static const long node_count = 200000;
-    static const int reader_threads = 4;
-    static const int writer_threads = 4;
-
-    static_hashed_set<long, buckets> data;
-    boost::array<std::set<long>, buckets> returned;
-
-    boost::lockfree::detail::atomic<int> push_count, pop_count;
-
-    boost::lockfree::stack<long, freelist_t> stk;
-
-    stack_tester(void):
-        push_count(0), pop_count(0)
-    {
-        stk.reserve(128);
-    }
-
-    void add_items(void)
-    {
-        for (long i = 0; i != node_count; ++i)
-        {
-            long id = generate_id<long>();
-
-            bool inserted = data.insert(id);
-            assert(inserted);
-
-            while(stk.push(id) == false)
-                thread::yield();
-            ++push_count;
-        }
-    }
-
-    boost::atomic<bool> running;
-
-    void get_items(void)
-    {
-        for (;;)
-        {
-            long id;
-
-            bool got = stk.pop(id);
-            if (got)
-            {
-                bool erased = data.erase(id);
-                assert(erased);
-                ++pop_count;
-            }
-            else
-                if (not running.load())
-                    return;
-        }
-    }
-
-    void run(void)
-    {
-        BOOST_WARN(stk.is_lock_free());
-
-        running.store(true);
-
-        thread_group writer;
-        thread_group reader;
-
-        BOOST_REQUIRE(stk.empty());
-
-        for (int i = 0; i != reader_threads; ++i)
-            reader.create_thread(boost::bind(&stack_tester::get_items, this));
-
-        for (int i = 0; i != writer_threads; ++i)
-            writer.create_thread(boost::bind(&stack_tester::add_items, this));
-
-        using namespace std;
-        cout << "threads created" << endl;
-
-        writer.join_all();
-
-        cout << "writer threads joined, waiting for readers" << endl;
-
-        running = false;
-        reader.join_all();
-
-        cout << "reader threads joined" << endl;
-
-        BOOST_REQUIRE_EQUAL(data.count_nodes(), 0);
-        BOOST_REQUIRE(stk.empty());
-
-        BOOST_REQUIRE_EQUAL(push_count, pop_count);
-        BOOST_REQUIRE_EQUAL(push_count, writer_threads * node_count);
-    }
-};
-
-BOOST_AUTO_TEST_CASE( stack_test_caching )
-{
-    stack_tester<boost::lockfree::caching_freelist_t> tester;
-    tester.run();
-}
-
-BOOST_AUTO_TEST_CASE( stack_test_static )
-{
-    stack_tester<boost::lockfree::static_freelist_t> tester;
-    tester.run();
-}
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/tagged_ptr_test.cpp b/external_libraries/boost_lockfree/libs/lockfree/test/tagged_ptr_test.cpp
deleted file mode 100644
index 5240047..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/tagged_ptr_test.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <boost/lockfree/detail/tagged_ptr.hpp>
-
-#include <climits>
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MAIN
-#include <boost/test/unit_test.hpp>
-
-BOOST_AUTO_TEST_CASE( tagged_ptr_test )
-{
-    using namespace boost::lockfree::detail;
-    int a(1), b(2);
-
-    {
-        tagged_ptr<int> i (&a, 0);
-        tagged_ptr<int> j (&b, 1);
-
-        i = j;
-
-        BOOST_REQUIRE_EQUAL(i.get_ptr(), &b);
-        BOOST_REQUIRE_EQUAL(i.get_tag(), 1);
-    }
-
-    {
-        tagged_ptr<int> i (&a, 0);
-        tagged_ptr<int> j (i);
-
-        BOOST_REQUIRE_EQUAL(i.get_ptr(), j.get_ptr());
-        BOOST_REQUIRE_EQUAL(i.get_tag(), j.get_tag());
-    }
-
-}
diff --git a/external_libraries/boost_lockfree/libs/lockfree/test/test_helpers.hpp b/external_libraries/boost_lockfree/libs/lockfree/test/test_helpers.hpp
deleted file mode 100644
index 1dfccba..0000000
--- a/external_libraries/boost_lockfree/libs/lockfree/test/test_helpers.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include <set>
-#include <boost/array.hpp>
-#include <boost/lockfree/detail/atomic.hpp>
-#include <boost/thread.hpp>
-
-template <typename int_type>
-int_type generate_id(void)
-{
-    static boost::lockfree::detail::atomic<int_type> generator(0);
-    return ++generator;
-}
-
-template <typename int_type, unsigned int buckets>
-class static_hashed_set
-{
-public:
-    bool insert(int_type const & id)
-    {
-        std::size_t index = id % buckets;
-
-        boost::mutex::scoped_lock lock (ref_mutex[index]);
-
-        std::pair<typename std::set<int_type>::iterator, bool> p;
-        p = data[index].insert(id);
-
-        return p.second;
-    }
-
-    bool find (int_type const & id)
-    {
-        std::size_t index = id % buckets;
-
-        boost::mutex::scoped_lock lock (ref_mutex[index]);
-
-        return data[index].find(id) != data[index].end();
-    }
-
-    bool erase(int_type const & id)
-    {
-        std::size_t index = id % buckets;
-
-        boost::mutex::scoped_lock lock (ref_mutex[index]);
-
-        if (data[index].find(id) != data[index].end())
-        {
-            data[index].erase(id);
-            assert(data[index].find(id) == data[index].end());
-            return true;
-        }
-        else
-            return false;
-    }
-
-    int count_nodes(void) const
-    {
-        int ret = 0;
-        for (int i = 0; i != buckets; ++i)
-        {
-            boost::mutex::scoped_lock lock (ref_mutex[i]);
-            ret += data[i].size();
-        }
-        return ret;
-    }
-
-private:
-    boost::array<std::set<int_type>, buckets> data;
-    mutable boost::array<boost::mutex, buckets> ref_mutex;
-};
diff --git a/external_libraries/boost_lockfree/make-tarball.sh b/external_libraries/boost_lockfree/make-tarball.sh
deleted file mode 100755
index cd96df6..0000000
--- a/external_libraries/boost_lockfree/make-tarball.sh
+++ /dev/null
@@ -1 +0,0 @@
-git archive --format=tar HEAD boost/atomic boost/lockfree/ libs/atomic/ libs/lockfree | bzip2 -9 > boost_lockfree.tar.bz2
diff --git a/external_libraries/boost_lockfree/project-root.jam b/external_libraries/boost_lockfree/project-root.jam
deleted file mode 100644
index cfff3dd..0000000
--- a/external_libraries/boost_lockfree/project-root.jam
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-#   Copyright (c) 2006 João Abecasis
-#
-#   Distributed under the Boost Software License, Version 1.0. (See
-#   accompanying file LICENSE_1_0.txt or copy at
-#   http://www.boost.org/LICENSE_1_0.txt)
-#
-
-##
-##  IMPORTANT NOTE: This file MUST NOT be copied over a boost installation
-##
-
-path-constant top : . ;
-
-import modules ;
-import path ;
-
-local boost-root = [ modules.peek : BOOST_ROOT ] ;
-
-if ! $(boost-root)
-{
-    local boost-search-dirs = [ modules.peek : BOOST_BUILD_PATH ] ;
-
-    for local dir in $(boost-search-dirs)
-    {
-        if [ path.glob $(dir)/../../../ : boost/version.hpp ]
-        {
-            boost-root += $(dir)/../../../ ;
-        }
-    }
-
-    if $(boost-root)
-    {
-        boost-root = [ path.make $(boost-root[1]) ] ;
-    }
-    else
-    {
-        ECHO "Warning: couldn't find BOOST_ROOT in" $(boost-root) ;
-    }
-}
-
-path-constant BOOST_ROOT : $(boost-root) ;
\ No newline at end of file
diff --git a/external_libraries/extract_boost.sh b/external_libraries/extract_boost.sh
index 6c08a8a..3d1672f 100644
--- a/external_libraries/extract_boost.sh
+++ b/external_libraries/extract_boost.sh
@@ -11,9 +11,11 @@ bcp --boost=${BOOST_ROOT} \
 	--scan common/*pp \
 	--scan lang/*/*pp \
 	--scan server/supernova/*/*pp \
-	--scan external_libraries/boost_*/*/*pp \
-	--scan external_libraries/boost_*/*/*/*pp \
-	--scan external_libraries/boost_*/*/*/*/*pp \
+	--scan editors/sc-ide/*/*pp \
+	--scan editors/sc-ide/*/*/*pp \
+	--scan external_libraries/boost*/*/*pp \
+	--scan external_libraries/boost*/*/*/*pp \
+	--scan external_libraries/boost*/*/*/*/*pp \
 	--scan external_libraries/threadpool/boost/*/*pp \
 	--scan external_libraries/threadpool/boost/*/*/*pp \
 	--scan testsuite/supernova/*pp \
diff --git a/external_libraries/nova-simd/benchmarks/perf_counter.hpp b/external_libraries/nova-simd/benchmarks/perf_counter.hpp
index 0236904..ee78f18 100644
--- a/external_libraries/nova-simd/benchmarks/perf_counter.hpp
+++ b/external_libraries/nova-simd/benchmarks/perf_counter.hpp
@@ -49,6 +49,11 @@
 #include <linux/ioctl.h>
 #include <asm/byteorder.h>
 
+#if defined(__ia64__) || defined(__alpha__)
+#include <asm-generic/unistd.h>
+#endif
+
+
 /*
  * User-space ABI bits:
  */
diff --git a/external_libraries/nova-simd/detail/define_macros.hpp b/external_libraries/nova-simd/detail/define_macros.hpp
index c80987e..ae2489f 100644
--- a/external_libraries/nova-simd/detail/define_macros.hpp
+++ b/external_libraries/nova-simd/detail/define_macros.hpp
@@ -51,7 +51,7 @@ struct unary_functor
     static always_inline void perform_vec_simd(FloatType * out, const FloatType * arg)
     {
         nova::detail::vector_pointer_argument<FloatType> varg(arg);
-        nova::detail::compile_time_unroller<FloatType, n>::mp_iteration(out, varg, Functor());
+        nova::detail::compile_time_unroller<FloatType, n>::run(out, varg, Functor());
     }
 };
 
@@ -85,7 +85,7 @@ private:
     template <unsigned int n, typename FloatType, typename Arg1Type, typename Arg2Type>
     static always_inline void perform_vec_simd_(FloatType * out, Arg1Type arg1, Arg2Type arg2)
     {
-        nova::detail::compile_time_unroller<FloatType, n>::mp_iteration(out, arg1, arg2, Functor());
+        nova::detail::compile_time_unroller<FloatType, n>::run(out, arg1, arg2, Functor());
     }
 };
 
@@ -121,7 +121,7 @@ private:
     template <unsigned int n, typename FloatType, typename Arg1Type, typename Arg2Type, typename Arg3Type>
     static always_inline void perform_vec_simd_(FloatType * out, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3)
     {
-        nova::detail::compile_time_unroller<FloatType, n>::mp_iteration(out, arg1, arg2, arg3, Functor());
+        nova::detail::compile_time_unroller<FloatType, n>::run(out, arg1, arg2, arg3, Functor());
     }
 };
 
@@ -160,7 +160,7 @@ private:
     template <unsigned int n, typename FloatType, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type>
     static always_inline void perform_vec_simd_(FloatType * out, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4)
     {
-        nova::detail::compile_time_unroller<FloatType, n>::mp_iteration(out, arg1, arg2, arg3, arg4, Functor());
+        nova::detail::compile_time_unroller<FloatType, n>::run(out, arg1, arg2, arg3, arg4, Functor());
     }
 };
 
diff --git a/external_libraries/nova-simd/detail/math.hpp b/external_libraries/nova-simd/detail/math.hpp
index a629bd3..41a8aee 100644
--- a/external_libraries/nova-simd/detail/math.hpp
+++ b/external_libraries/nova-simd/detail/math.hpp
@@ -333,6 +333,12 @@ inline float_type undenormalize(float_type arg)
     }
 }
 
+template <typename float_type>
+inline float_type reciprocal(float_type in)
+{
+    return float_type(1) / in;
+}
+
 }
 }
 
diff --git a/external_libraries/nova-simd/detail/unroll_helpers.hpp b/external_libraries/nova-simd/detail/unroll_helpers.hpp
index 77f5086..ff1f961 100644
--- a/external_libraries/nova-simd/detail/unroll_helpers.hpp
+++ b/external_libraries/nova-simd/detail/unroll_helpers.hpp
@@ -42,24 +42,79 @@ struct compile_time_unroller
     template <typename arg1_type,
               typename Functor
              >
-    static always_inline void mp_iteration(FloatType * out, arg1_type & in1, Functor const & f)
+    static always_inline void run(FloatType * out, arg1_type & in1, Functor const & f)
     {
-        vec_type result = f(in1.get());
+        compile_time_unroller<FloatType, N>::mp_iteration_1(out, in1.consume(), in1, f);
+    }
+
+    template <typename arg1_type,
+              typename arg2_type,
+              typename Functor
+             >
+    static always_inline void run(FloatType * out, arg1_type & in1, arg2_type & in2, Functor const & f)
+    {
+        compile_time_unroller<FloatType, N>::mp_iteration_2(out, in1.consume(), in1, in2.consume(), in2, f);
+    }
+
+    template <typename arg1_type,
+              typename arg2_type,
+              typename arg3_type,
+              typename Functor
+             >
+    static always_inline void run(FloatType * out, arg1_type & in1, arg2_type & in2,
+                                  arg3_type & in3, Functor const & f)
+    {
+        compile_time_unroller<FloatType, N>::mp_iteration_3(out, in1.consume(), in1, in2.consume(), in2, in3.consume(), in3, f);
+    }
+
+    template <typename arg1_type,
+              typename arg2_type,
+              typename arg3_type,
+              typename arg4_type,
+              typename Functor
+             >
+    static always_inline void run(FloatType * out, arg1_type & in1, arg2_type & in2,
+                                  arg3_type & in3, arg4_type & in4, Functor const & f)
+    {
+        compile_time_unroller<FloatType, N>::mp_iteration_4(out, in1.consume(), in1, in2.consume(), in2,
+                                                            in3.consume(), in3, in4.consume(), in4, f);
+    }
+
+private:
+    friend struct compile_time_unroller<FloatType, vec_type::size + N>;
+
+    template <typename arg1_type,
+              typename Functor
+             >
+    static always_inline void mp_iteration_1(FloatType * out, vec_type loaded_in1, arg1_type & in1, Functor const & f)
+    {
+        vec_type loaded_next_in1;
+        if (N != offset)
+            loaded_next_in1 = in1.consume();
+
+        vec_type result = f(loaded_in1);
         result.store_aligned(out);
-        in1.increment();
-        compile_time_unroller<FloatType, N-offset>::mp_iteration(out+offset, in1, f);
+        compile_time_unroller<FloatType, N-offset>::mp_iteration_1(out+offset, loaded_next_in1, in1, f);
     }
 
     template <typename arg1_type,
               typename arg2_type,
               typename Functor
              >
-    static always_inline void mp_iteration(FloatType * out, arg1_type & in1, arg2_type & in2, Functor const & f)
+    static always_inline void mp_iteration_2(FloatType * out, vec_type loaded_in1, arg1_type & in1,
+                                             vec_type loaded_in2, arg2_type & in2, Functor const & f)
     {
-        vec_type result = f(in1.get(), in2.get());
+        vec_type loaded_next_in1;
+        if (N != offset)
+            loaded_next_in1 = in1.consume();
+
+        vec_type loaded_next_in2;
+        if (N != offset)
+            loaded_next_in2 = in2.consume();
+
+        vec_type result = f(loaded_in1, loaded_in2);
         result.store_aligned(out);
-        in1.increment(); in2.increment();
-        compile_time_unroller<FloatType, N-offset>::mp_iteration(out+offset, in1, in2, f);
+        compile_time_unroller<FloatType, N-offset>::mp_iteration_2(out+offset, loaded_next_in1, in1, loaded_next_in2, in2, f);
     }
 
     template <typename arg1_type,
@@ -67,13 +122,26 @@ struct compile_time_unroller
               typename arg3_type,
               typename Functor
              >
-    static always_inline void mp_iteration(FloatType * out, arg1_type & in1, arg2_type & in2,
-                                           arg3_type & in3, Functor const & f)
+    static always_inline void mp_iteration_3(FloatType * out, vec_type loaded_in1, arg1_type & in1,
+                                             vec_type loaded_in2, arg2_type & in2,
+                                             vec_type loaded_in3, arg3_type & in3, Functor const & f)
     {
-        vec_type result = f(in1.get(), in2.get(), in3.get());
+        vec_type loaded_next_in1;
+        if (N != offset)
+            loaded_next_in1 = in1.consume();
+
+        vec_type loaded_next_in2;
+        if (N != offset)
+            loaded_next_in2 = in2.consume();
+
+        vec_type loaded_next_in3;
+        if (N != offset)
+            loaded_next_in3 = in3.consume();
+
+        vec_type result = f(loaded_in1, loaded_in2, loaded_in3);
         result.store_aligned(out);
-        in1.increment(); in2.increment(); in3.increment();
-        compile_time_unroller<FloatType, N-offset>::mp_iteration(out+offset, in1, in2, in3, f);
+        compile_time_unroller<FloatType, N-offset>::mp_iteration_3(out+offset, loaded_next_in1, in1, loaded_next_in2, in2,
+                                                                   loaded_next_in3, in3, f);
     }
 
     template <typename arg1_type,
@@ -82,47 +150,72 @@ struct compile_time_unroller
               typename arg4_type,
               typename Functor
              >
-    static always_inline void mp_iteration(FloatType * out, arg1_type & in1, arg2_type & in2,
-                                           arg3_type & in3, arg4_type & in4, Functor const & f)
+    static always_inline void mp_iteration_4(FloatType * out, vec_type loaded_in1, arg1_type & in1, vec_type loaded_in2, arg2_type & in2,
+                                             vec_type loaded_in3, arg3_type & in3, vec_type loaded_in4, arg4_type & in4, Functor const & f)
     {
-        vec_type result = f(in1.get(), in2.get(), in3.get(), in4.get());
+        vec_type loaded_next_in1;
+        if (N != offset)
+            loaded_next_in1 = in1.consume();
+
+        vec_type loaded_next_in2;
+        if (N != offset)
+            loaded_next_in2 = in2.consume();
+
+        vec_type loaded_next_in3;
+        if (N != offset)
+            loaded_next_in3 = in3.consume();
+
+        vec_type loaded_next_in4;
+        if (N != offset)
+            loaded_next_in4 = in4.consume();
+
+        vec_type result = f(loaded_in1, loaded_in2, loaded_in3, loaded_in4);
         result.store_aligned(out);
-        in1.increment(); in2.increment(); in3.increment(); in4.increment();
-        compile_time_unroller<FloatType, N-offset>::mp_iteration(out+offset, in1, in2, in3, in4, f);
+
+        compile_time_unroller<FloatType, N-offset>::mp_iteration_4(out+offset, loaded_next_in1, in1, loaded_next_in2, in2,
+                                                                   loaded_next_in3, in3, loaded_next_in4, in4, f);
     }
 };
 
 template <typename FloatType>
 struct compile_time_unroller<FloatType, 0>
 {
-    template <typename Arg1,
+    friend struct compile_time_unroller<FloatType, vec<FloatType>::size>;
+
+private:
+    template <typename LoadedArg1, typename Arg1,
               typename Functor
              >
-    static always_inline void mp_iteration(FloatType * out, Arg1 const &, Functor const & f)
+    static always_inline void mp_iteration_1(FloatType * out, LoadedArg1 const &, Arg1 const &, Functor const & f)
     {}
 
-    template <typename Arg1,
-              typename Arg2,
+    template <typename LoadedArg1, typename Arg1,
+              typename LoadedArg2, typename Arg2,
               typename Functor
              >
-    static always_inline void mp_iteration(FloatType * out, Arg1 const &, Arg2 const &, Functor const & f)
+    static always_inline void mp_iteration_2(FloatType * out, LoadedArg1 const &, Arg1 const &,
+                                             LoadedArg2 const &, Arg2 const &, Functor const & f)
     {}
 
-    template <typename Arg1,
-              typename Arg2,
-              typename Arg3,
+    template <typename LoadedArg1, typename Arg1,
+              typename LoadedArg2, typename Arg2,
+              typename LoadedArg3, typename Arg3,
               typename Functor
              >
-    static always_inline void mp_iteration(FloatType * out, Arg1 const &, Arg2 const &, Arg3 const &, Functor const & f)
+    static always_inline void mp_iteration_3(FloatType * out, LoadedArg1 const &, Arg1 const &,
+                                             LoadedArg2 const &, Arg2 const &, LoadedArg3 const &, Arg3 const &,
+                                             Functor const & f)
     {}
 
-    template <typename Arg1,
-              typename Arg2,
-              typename Arg3,
-              typename Arg4,
+    template <typename LoadedArg1, typename Arg1,
+              typename LoadedArg2, typename Arg2,
+              typename LoadedArg3, typename Arg3,
+              typename LoadedArg4, typename Arg4,
               typename Functor
              >
-    static always_inline void mp_iteration(FloatType * out, Arg1 const &, Arg2 const &, Arg3 const &, Arg4 const &, Functor const & f)
+    static always_inline void mp_iteration_4(FloatType * out, LoadedArg1 const &, Arg1 const &,
+                                             LoadedArg2 const &, Arg2 const &, LoadedArg3 const &, Arg3 const &,
+                                             LoadedArg4 const &, Arg4 const &, Functor const & f)
     {}
 };
 
@@ -136,7 +229,7 @@ always_inline void generate_simd_loop(float_type * out, Arg1 arg1, unsigned int
     const unsigned int per_loop = vec<float_type>::objects_per_cacheline;
     n /= per_loop;
     do {
-        detail::compile_time_unroller<float_type, per_loop>::mp_iteration(out, arg1, f);
+        detail::compile_time_unroller<float_type, per_loop>::run(out, arg1, f);
         out += per_loop;
     } while (--n);
 }
@@ -151,7 +244,7 @@ always_inline void generate_simd_loop(float_type * out, Arg1 arg1, Arg2 arg2, un
     const unsigned int per_loop = vec<float_type>::objects_per_cacheline;
     n /= per_loop;
     do {
-        detail::compile_time_unroller<float_type, per_loop>::mp_iteration(out, arg1, arg2, f);
+        detail::compile_time_unroller<float_type, per_loop>::run(out, arg1, arg2, f);
         out += per_loop;
     } while (--n);
 }
@@ -167,7 +260,7 @@ always_inline void generate_simd_loop(float_type * out, Arg1 arg1, Arg2 arg2, Ar
     const unsigned int per_loop = vec<float_type>::objects_per_cacheline;
     n /= per_loop;
     do {
-        detail::compile_time_unroller<float_type, per_loop>::mp_iteration(out, arg1, arg2, arg3, f);
+        detail::compile_time_unroller<float_type, per_loop>::run(out, arg1, arg2, arg3, f);
         out += per_loop;
     } while (--n);
 }
@@ -184,7 +277,7 @@ always_inline void generate_simd_loop(float_type * out, Arg1 arg1, Arg2 arg2, Ar
     const unsigned int per_loop = vec<float_type>::objects_per_cacheline;
     n /= per_loop;
     do {
-        detail::compile_time_unroller<float_type, per_loop>::mp_iteration(out, arg1, arg2, arg3, arg4, f);
+        detail::compile_time_unroller<float_type, per_loop>::run(out, arg1, arg2, arg3, arg4, f);
         out += per_loop;
     } while (--n);
 }
diff --git a/external_libraries/nova-simd/detail/vec_math.hpp b/external_libraries/nova-simd/detail/vec_math.hpp
index d20fa09..b5613a5 100644
--- a/external_libraries/nova-simd/detail/vec_math.hpp
+++ b/external_libraries/nova-simd/detail/vec_math.hpp
@@ -492,6 +492,9 @@ always_inline VecType vec_tanh_float(VecType const & arg)
     const VecType maxlogf_2 (22.f);
     const VecType limit_small (0.625f);
 
+	/* medium values */
+    const VecType result_medium_abs = one - two / (vec_exp_tanh_float(abs_arg + abs_arg) + one);
+
     /* large values */
     const VecType abs_big          = mask_gt(abs_arg, maxlogf_2);
     const VecType result_limit_abs = one;
@@ -513,9 +516,6 @@ always_inline VecType vec_tanh_float(VecType const & arg)
 
     const VecType abs_small = mask_lt(abs_arg, limit_small);
 
-    /* medium values */
-    const VecType result_medium_abs = one - two / (vec_exp_tanh_float(abs_arg + abs_arg) + one);
-
     /* select from large and medium branches and set sign */
     const VecType result_lm_abs = select(result_medium_abs, result_limit_abs, abs_big);
     const VecType result_lm = result_lm_abs | sign_arg;
@@ -540,8 +540,11 @@ always_inline VecType vec_signed_pow(VecType arg1, VecType arg2)
 template <typename VecType>
 always_inline VecType vec_pow(VecType arg1, VecType arg2)
 {
+    const VecType zero      = VecType::gen_zero();
+    const VecType arg1_zero = mask_eq(arg1, zero);
+
     const VecType result = exp(arg2 * log(arg1));
-    return result;
+    return select(result, zero, arg1_zero);
 }
 
 template <typename VecType>
@@ -591,6 +594,21 @@ always_inline VecType vec_undenormalize(VecType arg)
     return result;
 }
 
+template <typename VecType>
+always_inline VecType vec_reciprocal_newton(VecType arg)
+{
+    const VecType one = VecType::gen_one();
+
+    const VecType approx = fast_reciprocal(arg);
+
+    // One round of Newton-Raphson refinement
+    const VecType diff = one - approx * arg;
+    const VecType result = madd(diff, approx, approx);
+
+    return result;
+}
+
+
 }
 }
 
diff --git a/external_libraries/nova-simd/simd_unary_arithmetic.hpp b/external_libraries/nova-simd/simd_unary_arithmetic.hpp
index c25e4ac..df30de6 100644
--- a/external_libraries/nova-simd/simd_unary_arithmetic.hpp
+++ b/external_libraries/nova-simd/simd_unary_arithmetic.hpp
@@ -53,6 +53,7 @@ DEFINE_UNARY_FUNCTOR(fabs, abs)
 DEFINE_UNARY_FUNCTOR(sign, sign)
 DEFINE_UNARY_FUNCTOR(square, square)
 DEFINE_UNARY_FUNCTOR(cube, cube)
+DEFINE_UNARY_FUNCTOR(reciprocal, reciprocal)
 
 DEFINE_UNARY_FUNCTOR(round, round)
 DEFINE_UNARY_FUNCTOR(frac, frac)
@@ -75,6 +76,7 @@ NOVA_SIMD_DEFINE_UNARY_WRAPPER(floor, detail::floor_)
 NOVA_SIMD_DEFINE_UNARY_WRAPPER(trunc, detail::trunc_)
 
 NOVA_SIMD_DEFINE_UNARY_WRAPPER(undenormalize, detail::undenormalize_)
+NOVA_SIMD_DEFINE_UNARY_WRAPPER(reciprocal, detail::reciprocal_)
 } /* namespace nova */
 
 #undef always_inline
diff --git a/external_libraries/nova-simd/testsuite/simd_unary_tests.cpp b/external_libraries/nova-simd/testsuite/simd_unary_tests.cpp
index a4f6b97..b9a4e78 100644
--- a/external_libraries/nova-simd/testsuite/simd_unary_tests.cpp
+++ b/external_libraries/nova-simd/testsuite/simd_unary_tests.cpp
@@ -160,3 +160,24 @@ BOOST_AUTO_TEST_CASE( undenormalize_tester )
     undenormalize_compare<float>();
     undenormalize_compare<double>();
 }
+
+template <typename float_type>
+void reciprical_compare(void)
+{
+    aligned_array<float_type, size> out, out_simd, out_mp, in;
+
+    for (int i = 0; i != size; ++i)
+        in [i] = (i * 100)/(float_type)size + 1;
+
+    nova::reciprocal_vec<float_type>(out.c_array(), in.c_array(), size);
+    nova::reciprocal_vec_simd<float_type>(out_simd.c_array(), in.c_array(), size);
+    nova::reciprocal_vec_simd<size>(out_mp.c_array(), in.c_array());
+    compare_buffers(out.c_array(), out_simd.c_array(), size, 1e-6f);
+    compare_buffers(out.c_array(), out_mp.c_array(), size, 1e-6f);
+}
+
+BOOST_AUTO_TEST_CASE( reciprocal_tester )
+{
+    reciprical_compare<float>();
+    reciprical_compare<double>();
+}
diff --git a/external_libraries/nova-simd/testsuite/vec_test.cpp b/external_libraries/nova-simd/testsuite/vec_test.cpp
index 8bf0430..1015dfd 100644
--- a/external_libraries/nova-simd/testsuite/vec_test.cpp
+++ b/external_libraries/nova-simd/testsuite/vec_test.cpp
@@ -119,8 +119,8 @@ BOOST_AUTO_TEST_CASE( align )
 {
     BOOST_REQUIRE(vec<double>::is_aligned(NULL));
     BOOST_REQUIRE(vec<float>::is_aligned(NULL));
-    BOOST_REQUIRE(!vec<double>::is_aligned((double*)NULL+1));
-    BOOST_REQUIRE(!vec<float>::is_aligned((float*)NULL+1));
+    BOOST_REQUIRE(!vec<double>::is_aligned((double*)(NULL+1)));
+    BOOST_REQUIRE(!vec<float>::is_aligned((float*)(NULL+1)));
 }
 
 template <typename T>
@@ -142,3 +142,19 @@ BOOST_AUTO_TEST_CASE( undenormalize_tester )
     test_undenormalize<float>();
     test_undenormalize<double>();
 }
+
+template <typename T>
+void test_reciprocal(void)
+{
+    typedef vec<T> vec_t;
+    vec_t four(4.0);
+    T result = reciprocal(four).get(0);
+    BOOST_REQUIRE_CLOSE(result, 0.25, 1e-5);
+}
+
+
+BOOST_AUTO_TEST_CASE( reciprocal_tester )
+{
+    test_reciprocal<float>();
+    test_reciprocal<double>();
+}
diff --git a/external_libraries/nova-simd/vec_altivec.hpp b/external_libraries/nova-simd/vec_altivec.hpp
index 01d3e00..8511753 100644
--- a/external_libraries/nova-simd/vec_altivec.hpp
+++ b/external_libraries/nova-simd/vec_altivec.hpp
@@ -67,6 +67,7 @@ private:
     }
 
 public:
+    static const bool has_compare_bitmask = true;
 
     static inline internal_vector_type gen_sign_mask(void)
     {
@@ -281,6 +282,12 @@ public:
         return vec_xor(arg.data_, gen_sign_mask());
     }
 
+    friend vec fast_reciprocal(const vec & arg)
+    {
+        vector float estimate = vec_re(arg);
+        return estimate;
+    }
+
     friend vec reciprocal(const vec & arg)
     {
         return vec_reciprocal(arg.data_);
diff --git a/external_libraries/nova-simd/vec_avx_double.hpp b/external_libraries/nova-simd/vec_avx_double.hpp
index fed70f5..93ec66a 100644
--- a/external_libraries/nova-simd/vec_avx_double.hpp
+++ b/external_libraries/nova-simd/vec_avx_double.hpp
@@ -46,6 +46,7 @@ struct vec<double>:
 {
 private:
     typedef vec_base<double, __m256d, 4> base;
+    static const bool has_compare_bitmask = true;
 
 public:
     typedef double float_type;
@@ -221,6 +222,9 @@ public:
 
 #undef ARITHMETIC_OPERATOR
 
+    NOVA_SIMD_DELEGATE_UNARY_TO_BASE(reciprocal)
+
+
     NOVA_SIMD_DEFINE_MADD
 
 #define RELATIONAL_OPERATOR(op, RELATION) \
diff --git a/external_libraries/nova-simd/vec_avx_float.hpp b/external_libraries/nova-simd/vec_avx_float.hpp
index ba24cb4..b30faa9 100644
--- a/external_libraries/nova-simd/vec_avx_float.hpp
+++ b/external_libraries/nova-simd/vec_avx_float.hpp
@@ -48,6 +48,8 @@ private:
     typedef vec_base<float, __m256, 8> base;
 
 public:
+    static const bool has_compare_bitmask = true;
+
     typedef __m256 internal_vector_type;
     typedef float float_type;
 
@@ -256,11 +258,16 @@ public:
         return _mm256_xor_ps(arg.data_, gen_sign_mask());
     }
 
-    friend vec reciprocal(const vec & arg)
+    friend vec fast_reciprocal(const vec & arg)
     {
         return _mm256_rcp_ps(arg.data_);
     }
 
+    friend vec reciprocal(const vec & arg)
+    {
+        return detail::vec_reciprocal_newton(arg);
+    }
+
     NOVA_SIMD_DEFINE_MADD
 
 #define RELATIONAL_OPERATOR(op, RELATION) \
diff --git a/external_libraries/nova-simd/vec_base.hpp b/external_libraries/nova-simd/vec_base.hpp
index da828b0..8cc727b 100644
--- a/external_libraries/nova-simd/vec_base.hpp
+++ b/external_libraries/nova-simd/vec_base.hpp
@@ -57,6 +57,7 @@ class vec_base
 
 public:
     static const int size = VecSize;
+    static const bool has_compare_bitmask = false;
 
 protected:
     vec_base (void)
@@ -289,6 +290,8 @@ public:
 
 
 protected:
+    DEFINE_UNARY_STATIC(reciprocal, detail::reciprocal)
+
     DEFINE_UNARY_STATIC(sin, detail::sin)
     DEFINE_UNARY_STATIC(cos, detail::cos)
     DEFINE_UNARY_STATIC(tan, detail::tan)
diff --git a/external_libraries/nova-simd/vec_generic.hpp b/external_libraries/nova-simd/vec_generic.hpp
index 8a31a33..bf73d86 100644
--- a/external_libraries/nova-simd/vec_generic.hpp
+++ b/external_libraries/nova-simd/vec_generic.hpp
@@ -104,7 +104,17 @@ public:
 
     static bool is_aligned(FloatType * ptr)
     {
-        return true;
+        return ((intptr_t)(ptr) & (intptr_t)(sizeof(float) - 1)) == 0;
+    }
+
+    static vec gen_zero()
+    {
+        return vec(0.0);
+    }
+
+    static vec gen_ones()
+    {
+        return vec(1.0);
     }
 
 public:
@@ -141,10 +151,22 @@ public:
     /* @{ */
     NOVA_SIMD_DEFINE_MADD
 
+    friend inline vec select(vec lhs, vec rhs, vec bitmask)
+    {
+        vec ret;
+        for (int i = 0; i != size; ++i) {
+            ret.data_[i] = bitmask.data_[i] != 0 ? rhs.data_[i]
+                                                 : lhs.data_[i];
+        }
+        return ret;
+    }
+
     /** mathematical functions */
     NOVA_SIMD_DELEGATE_BINARY_TO_BASE(pow)
     NOVA_SIMD_DELEGATE_BINARY_TO_BASE(signed_pow)
 
+    NOVA_SIMD_DELEGATE_UNARY_TO_BASE(reciprocal)
+
     NOVA_SIMD_DELEGATE_UNARY_TO_BASE(log)
     NOVA_SIMD_DELEGATE_UNARY_TO_BASE(log2)
     NOVA_SIMD_DELEGATE_UNARY_TO_BASE(log10)
diff --git a/external_libraries/nova-simd/vec_neon.hpp b/external_libraries/nova-simd/vec_neon.hpp
index 958a14b..88d2d14 100644
--- a/external_libraries/nova-simd/vec_neon.hpp
+++ b/external_libraries/nova-simd/vec_neon.hpp
@@ -117,6 +117,7 @@ public:
 public:
     static const int size = 4;
     static const int objects_per_cacheline = 64/sizeof(float);
+    static const bool has_compare_bitmask = true;
 
     static bool is_aligned(float* ptr)
     {
@@ -252,6 +253,19 @@ private:
     }
 
 public:
+    friend vec fast_reciprocal(vec const & arg)
+    {
+        float32x4_t reciprocal = vrecpeq_f32(arg);
+        return reciprocal;
+    }
+
+    friend vec reciprocal(vec const & arg)
+    {
+        float32x4_t reciprocal = vrecpeq_f32(arg);
+        reciprocal = vmulq_f32(reciprocal, vrecpsq_f32(arg, reciprocal));
+        return reciprocal;
+    }
+
     /** arithmetic operators */
 #define OPERATOR_ASSIGNMENT(op, opcode) \
     vec & operator op(vec const & rhs) \
diff --git a/external_libraries/nova-simd/vec_sse.hpp b/external_libraries/nova-simd/vec_sse.hpp
index c8a8ae7..264d4fc 100644
--- a/external_libraries/nova-simd/vec_sse.hpp
+++ b/external_libraries/nova-simd/vec_sse.hpp
@@ -142,6 +142,7 @@ struct vec<float>:
 public:
     static const int size = 4;
     static const int objects_per_cacheline = 64/sizeof(float);
+    static const bool has_compare_bitmask = true;
 
     static bool is_aligned(float* ptr)
     {
@@ -354,11 +355,16 @@ public:
         return _mm_xor_ps(arg.data_, gen_sign_mask());
     }
 
-    friend vec reciprocal(const vec & arg)
+    friend vec fast_reciprocal(const vec & arg)
     {
         return _mm_rcp_ps(arg.data_);
     }
 
+    friend vec reciprocal(const vec & arg)
+    {
+        return detail::vec_reciprocal_newton(arg);
+    }
+
     NOVA_SIMD_DEFINE_MADD
 
 #define RELATIONAL_OPERATOR(op, opcode) \
diff --git a/external_libraries/nova-simd/vec_sse2.hpp b/external_libraries/nova-simd/vec_sse2.hpp
index 5e26471..91c4ff1 100644
--- a/external_libraries/nova-simd/vec_sse2.hpp
+++ b/external_libraries/nova-simd/vec_sse2.hpp
@@ -103,6 +103,7 @@ struct vec<double>:
 public:
     static const int size = 2;
     static const int objects_per_cacheline = 64/sizeof(double);
+    static const bool has_compare_bitmask = true;
 
     static bool is_aligned(double* ptr)
     {
@@ -234,6 +235,8 @@ public:
     ARITHMETIC_OPERATOR(*, _mm_mul_pd)
     ARITHMETIC_OPERATOR(/, _mm_div_pd)
 
+    NOVA_SIMD_DELEGATE_UNARY_TO_BASE(reciprocal)
+
     NOVA_SIMD_DEFINE_MADD
 
 #define RELATIONAL_OPERATOR(op, opcode) \
diff --git a/external_libraries/nova-tt/CMakeLists.txt b/external_libraries/nova-tt/CMakeLists.txt
index 497632e..0f06958 100644
--- a/external_libraries/nova-tt/CMakeLists.txt
+++ b/external_libraries/nova-tt/CMakeLists.txt
@@ -1,6 +1,9 @@
 PROJECT(nova-tt)
 cmake_minimum_required(VERSION 2.6)
 
+set(Boost_USE_MULTITHREADED      ON)
+find_package( Boost 1.50.0 COMPONENTS  thread system test_exec_monitor )
+
 enable_testing()
 
 include_directories (boost_lockfree)
diff --git a/external_libraries/nova-tt/nova-tt/pause.hpp b/external_libraries/nova-tt/nova-tt/pause.hpp
new file mode 100644
index 0000000..27b0b30
--- /dev/null
+++ b/external_libraries/nova-tt/nova-tt/pause.hpp
@@ -0,0 +1,54 @@
+//  spin_lock class
+//  Copyright (C) 2010, 2011 Tim Blechmann
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; see the file COPYING.  If not, write to
+//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+//  Boston, MA 02111-1307, USA.
+
+/** \file spin_lock.hpp */
+
+#ifndef NOVA_TT_PAUSE_HPP
+#define NOVA_TT_PAUSE_HPP
+
+#ifdef __SSE2__
+#include <emmintrin.h>
+#endif
+
+namespace nova   {
+namespace detail {
+
+#ifdef __SSE2__
+
+static inline void pause()
+{
+	_mm_pause();
+}
+
+#elif defined(__GNUC__) && ( defined(__i386__) || defined(__x86_64__) )
+
+static inline void pause()
+{
+	__asm__ __volatile__( "rep; nop" : : : "memory" );
+}
+
+#else
+
+static inline void pause()
+{}
+
+#endif
+
+}}
+
+#endif /* NOVA_TT_PAUSE_HPP */
diff --git a/external_libraries/nova-tt/nova-tt/rw_mutex.hpp b/external_libraries/nova-tt/nova-tt/rw_mutex.hpp
index 98d7c59..1885737 100644
--- a/external_libraries/nova-tt/nova-tt/rw_mutex.hpp
+++ b/external_libraries/nova-tt/nova-tt/rw_mutex.hpp
@@ -77,6 +77,7 @@ public:
         case EDEADLK:
         default:
             assert(false);
+            return false;
         }
     }
 
@@ -106,6 +107,7 @@ public:
             return false;
 
         assert(false);
+        return false;
     }
 
     void unlock_shared(void)
@@ -196,6 +198,7 @@ public:
 
         default:
             assert(false);
+            return false;
         }
     }
 
diff --git a/external_libraries/nova-tt/nova-tt/rw_spinlock.hpp b/external_libraries/nova-tt/nova-tt/rw_spinlock.hpp
index cafe06a..ea925e8 100644
--- a/external_libraries/nova-tt/nova-tt/rw_spinlock.hpp
+++ b/external_libraries/nova-tt/nova-tt/rw_spinlock.hpp
@@ -21,15 +21,16 @@
 #ifndef RW_SPINLOCK_HPP
 #define RW_SPINLOCK_HPP
 
-#include <cerrno>
 #include <cassert>
+#include <cerrno>
 
-#include <boost/cstdint.hpp>
 
 #include "boost/atomic.hpp"
+#include <boost/cstdint.hpp>
 
-namespace nova
-{
+#include "pause.hpp"
+
+namespace nova {
 
 /** non-recursive reader-writer spinlock, implements a subset of the SharedLockable concept
  *
@@ -80,7 +81,7 @@ public:
     };
 
     rw_spinlock(void):
-        state(unlocked_state)
+        state(uint32_t(unlocked_state))
     {}
 
     ~rw_spinlock(void)
@@ -92,10 +93,11 @@ public:
     {
         for (;;) {
             while (state.load(boost::memory_order_relaxed) != unlocked_state)
-            {}
+                detail::pause();
+
             uint32_t expected = unlocked_state;
             if (state.compare_exchange_weak(expected, locked_state, boost::memory_order_acquire))
-                return;
+                break;
         }
     }
 
@@ -122,7 +124,8 @@ public:
             const uint32_t next_state = current_state + 1;
 
             if (state.compare_exchange_weak(current_state, next_state, boost::memory_order_acquire))
-                return;
+                break;
+            detail::pause();
         }
     }
 
@@ -145,7 +148,8 @@ public:
             const uint32_t next_state = current_state - 1;
 
             if (state.compare_exchange_weak(current_state, uint32_t(next_state)))
-                return;
+                break;
+            detail::pause();
         }
     }
 
@@ -153,7 +157,7 @@ private:
     boost::atomic<uint32_t> state;
 };
 
-struct padded_rw_spinlock:
+class padded_rw_spinlock:
     public rw_spinlock
 {
     static const int padding_bytes = 64 - sizeof(rw_spinlock);
diff --git a/external_libraries/nova-tt/nova-tt/spin_lock.hpp b/external_libraries/nova-tt/nova-tt/spin_lock.hpp
index 244cc6b..afa4c9c 100644
--- a/external_libraries/nova-tt/nova-tt/spin_lock.hpp
+++ b/external_libraries/nova-tt/nova-tt/spin_lock.hpp
@@ -21,12 +21,15 @@
 #ifndef NOVA_TT_SPIN_LOCK_HPP
 #define NOVA_TT_SPIN_LOCK_HPP
 
+#include <cassert>
+
 #include <boost/atomic.hpp>
 #include <boost/cstdint.hpp>
 #include <boost/noncopyable.hpp>
 
-namespace nova
-{
+#include "pause.hpp"
+
+namespace nova {
 
 /** spinlock, implements the Lockable concept
  */
@@ -67,9 +70,10 @@ public:
     {
         for(;;) {
             while (state.load(boost::memory_order_relaxed) != unlocked_state)
-            {}
+                detail::pause();
+
             if (try_lock())
-                return;
+                break;
         }
     }
 
diff --git a/external_libraries/nova-tt/testsuite/CMakeLists.txt b/external_libraries/nova-tt/testsuite/CMakeLists.txt
index deda1e6..53bf36c 100644
--- a/external_libraries/nova-tt/testsuite/CMakeLists.txt
+++ b/external_libraries/nova-tt/testsuite/CMakeLists.txt
@@ -1,3 +1,5 @@
+file(GLOB headers ../nova-tt/*hpp)
+
 set(tests
     mlock_test.cpp
     nanosleep_test.cpp
@@ -9,9 +11,10 @@ set(tests
     thread_priority_test.cpp
 )
 
+
 foreach(test ${tests})
   string(REPLACE .cpp "" test_name ${test} )
-  add_executable(${test_name} ${test})
-  target_link_libraries(${test_name} pthread boost_thread-mt)
+  add_executable(${test_name} ${test} ${headers})
+  target_link_libraries(${test_name} pthread ${Boost_THREAD_LIBRARIES}  ${Boost_SYSTEM_LIBRARY})
   add_test(${test_name}_run ${EXECUTABLE_OUTPUT_PATH}/${test_name})
 endforeach(test)
diff --git a/external_libraries/pycxx-6.2.2/COPYRIGHT b/external_libraries/pycxx-6.2.2/COPYRIGHT
deleted file mode 100644
index 6d7be45..0000000
--- a/external_libraries/pycxx-6.2.2/COPYRIGHT
+++ /dev/null
@@ -1,56 +0,0 @@
-
-                           Copyright (c) 1998 - 2007
-                  The Regents of the University of California
-             Produced at the Lawrence Livermore National Laboratory
-             Written by Geoff Furnish, Paul F. Dubois, Barry A. Scott
-                               UCRL-CODE-227018
-                             All rights reserved.
-
-This file is part of PyCXX. For details, see http://cxx.sourceforge.net.
-
-Redistribution  and  use   in  source  and  binary  forms,   with  or  without
-modification, are permitted provided that the following conditions are met:
-
- - Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the disclaimer below.
- - Redistributions in  binary form must reproduce the above  copyright notice,
-   this  list of  conditions  and  the  disclaimer (as  noted  below)  in  the
-   documentation and/or materials provided with the distribution.
- - Neither the name  of the UC/LLNL nor  the names of its  contributors may be
-   used to  endorse or  promote products  derived from  this software  without
-   specific prior written permission.
-
-THIS SOFTWARE IS  PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS  "AS IS"
-AND ANY  EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED  TO, THE
-IMPLIED WARRANTIES  OF MERCHANTABILITY AND  FITNESS FOR  A PARTICULAR  PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OF THE UNIVERSITY OF CALIFORNIA,
-THE U.S.  DEPARTMENT  OF  ENERGY  OR CONTRIBUTORS BE  LIABLE  FOR  ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER  CAUSED AND ON ANY THEORY
-OF LIABILITY,  WHETHER  IN  CONTRACT,  STRICT  LIABILITY,  OR  TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE)  ARISING IN ANY WAY OUT OF THE  USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Additional BSD Notice
-
-1. This notice  is required to be  provided under our  contract with  the U.S.
-   Department of Energy  (DOE).  This work was produced  at the  University of
-   California,  Lawrence  Livermore  National Laboratory  under  Contract  No.
-   W-7405-ENG-48 with the DOE.
-
-2. Neither the  United  States  Government nor  the University  of  California
-   nor any  of their  employees,  makes any warranty,  express or  implied, or
-   assumes any  liability or  responsibility for  the accuracy,  completeness,
-   or usefulness of any information, apparatus, product, or process disclosed,
-   or represents that its use would not infringe privately-owned rights.
-
-3. Also, reference  herein to any  specific commercial  products,  process, or
-   services by  trade name,  trademark,  manufacturer  or otherwise  does  not
-   necessarily  constitute  or  imply   its  endorsement,  recommendation,  or
-   favoring by the  United States Government or the  University of California.
-   The views  and opinions  of authors  expressed herein  do  not  necessarily
-   state or reflect  those of the  United States Government  or the University
-   of California, and shall not be used for advertising or product endorsement
-   purposes.
-
diff --git a/external_libraries/pycxx-6.2.2/CXX/Config.hxx b/external_libraries/pycxx-6.2.2/CXX/Config.hxx
deleted file mode 100644
index 536e7c8..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Config.hxx
+++ /dev/null
@@ -1,43 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "CXX/Python2/Config.hxx"
-#else
-#include "CXX/Python3/Config.hxx"
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Exception.hxx b/external_libraries/pycxx-6.2.2/CXX/Exception.hxx
deleted file mode 100644
index d4ab4ec..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Exception.hxx
+++ /dev/null
@@ -1,43 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "CXX/Python2/Exception.hxx"
-#else
-#include "CXX/Python3/Exception.hxx"
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Extensions.hxx b/external_libraries/pycxx-6.2.2/CXX/Extensions.hxx
deleted file mode 100644
index a4cd266..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Extensions.hxx
+++ /dev/null
@@ -1,43 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "CXX/Python2/Extensions.hxx"
-#else
-#include "CXX/Python3/Extensions.hxx"
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/IndirectPythonInterface.hxx b/external_libraries/pycxx-6.2.2/CXX/IndirectPythonInterface.hxx
deleted file mode 100644
index 26cd2d2..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/IndirectPythonInterface.hxx
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "CXX/Python2/IndirectPythonInterface.hxx"
-#else
-#include "CXX/Python3/IndirectPythonInterface.hxx"
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Objects.hxx b/external_libraries/pycxx-6.2.2/CXX/Objects.hxx
deleted file mode 100644
index cb0294d..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Objects.hxx
+++ /dev/null
@@ -1,43 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "CXX/Python2/Objects.hxx"
-#else
-#include "CXX/Python3/Objects.hxx"
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/Config.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/Config.hxx
deleted file mode 100644
index b27f9ba..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/Config.hxx
+++ /dev/null
@@ -1,118 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __PyCXX_config_hh__
-#define __PyCXX_config_hh__
-
-//
-// Microsoft VC++ 6.0 has no traits
-//
-#if defined( _MSC_VER )
-
-#  define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
-
-#elif defined( __GNUC__ )
-#  if __GNUC__ >= 3
-#    define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
-#  else
-#    define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 0
-#endif
-
-//
-//	Assume all other compilers do
-//
-#else
-
-// Macros to deal with deficiencies in compilers
-#  define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
-#endif
-
-#if STANDARD_LIBRARY_HAS_ITERATOR_TRAITS
-#  define random_access_iterator_parent(itemtype) std::iterator<std::random_access_iterator_tag,itemtype,int>
-#else
-#  define random_access_iterator_parent(itemtype) std::random_access_iterator<itemtype, int>
-#endif
-
-//
-//	Which C++ standard is in use?
-//
-#if defined( _MSC_VER )
-#  if _MSC_VER <= 1200
-// MSVC++ 6.0
-#    define PYCXX_ISO_CPP_LIB 0
-#    define STR_STREAM <strstream>
-#    define TEMPLATE_TYPENAME class
-#  else
-#    define PYCXX_ISO_CPP_LIB 1
-#    define STR_STREAM <sstream>
-#    define TEMPLATE_TYPENAME typename
-#  endif
-#elif defined( __GNUC__ )
-#  if __GNUC__ >= 3
-#    define PYCXX_ISO_CPP_LIB 1
-#    define STR_STREAM <sstream>
-#    define TEMPLATE_TYPENAME typename
-#  else
-#    define PYCXX_ISO_CPP_LIB 0
-#    define STR_STREAM <strstream>
-#    define TEMPLATE_TYPENAME class
-#  endif
-#endif
-
-#if PYCXX_ISO_CPP_LIB
-#    define STR_STREAM <sstream>
-#    define OSTRSTREAM ostringstream
-#    define EXPLICIT_TYPENAME typename
-#    define EXPLICIT_CLASS class
-#    define TEMPLATE_TYPENAME typename
-#else
-#    define STR_STREAM <strstream>
-#    define OSTRSTREAM ostrstream
-#    define EXPLICIT_TYPENAME
-#    define EXPLICIT_CLASS
-#    define TEMPLATE_TYPENAME class
-#endif
-
-// before 2.5 Py_ssize_t was missing
-#ifndef PY_MAJOR_VERSION
-#error not defined PY_MAJOR_VERSION
-#endif
-#if PY_MAJOR_VERSION < 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5)
-typedef int Py_ssize_t;
-#endif
-
-#endif //  __PyCXX_config_hh__
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/CxxDebug.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/CxxDebug.hxx
deleted file mode 100644
index b646ffd..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/CxxDebug.hxx
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-//  CxxDebug.hxx
-//
-//  Copyright (c) 2008 Barry A. Scott
-//
-#ifndef __CXX_Debug_hxx
-#define __CXX_Debug_hxx
-
-//
-//  Functions useful when debugging PyCXX
-//
-#ifdef PYCXX_DEBUG
-extern void bpt();
-extern void printRefCount( PyObject *obj );
-#endif
-
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/Exception.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/Exception.hxx
deleted file mode 100644
index 3acc0ae..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/Exception.hxx
+++ /dev/null
@@ -1,259 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_Exception_h
-#define __CXX_Exception_h
-
-#include "CXX/WrapPython.h"
-#include "CXX/Version.hxx"
-#include "CXX/Config.hxx"
-#include "CXX/IndirectPythonInterface.hxx"
-
-#include <string>
-#include <iostream>
-
-// This mimics the Python structure, in order to minimize confusion
-namespace Py
-{
-    class ExtensionExceptionType;
-
-    class Object;
-
-    class Exception
-    {
-    public:
-        Exception( ExtensionExceptionType &exception, const std::string& reason );
-        Exception( ExtensionExceptionType &exception, Object &reason );
-
-        explicit Exception ()
-        {}
-        
-        Exception (const std::string& reason)
-        {
-            PyErr_SetString (Py::_Exc_RuntimeError(), reason.c_str());
-        }
-        
-        Exception (PyObject* exception, const std::string& reason)
-        {
-            PyErr_SetString (exception, reason.c_str());
-        }
-        
-        Exception (PyObject* exception, Object &reason);        
-
-        void clear() // clear the error
-        // technically but not philosophically const
-        {
-            PyErr_Clear();
-        }
-    };
-    
-    
-    // Abstract
-    class StandardError: public Exception
-    {
-    protected: 
-        explicit StandardError()
-        {}
-    };
-    
-    class LookupError: public StandardError
-    {
-    protected: 
-        explicit LookupError()
-        {}
-    };
-    
-    class ArithmeticError: public StandardError
-    {
-    protected: 
-        explicit ArithmeticError()
-        {}
-    };
-    
-    class EnvironmentError: public StandardError
-    {
-    protected: 
-        explicit EnvironmentError()
-        {}
-    };
-    
-    // Concrete
-    
-    class TypeError: public StandardError
-    {
-    public:
-        TypeError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_TypeError(),reason.c_str());
-        }
-    };
-    
-    class IndexError: public LookupError
-    {
-    public:
-        IndexError (const std::string& reason)
-            : LookupError()
-        {
-            PyErr_SetString (Py::_Exc_IndexError(), reason.c_str());
-        }
-    };
-    
-    class AttributeError: public StandardError
-    {
-    public:
-        AttributeError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_AttributeError(), reason.c_str());
-        }        
-    };
-    
-    class NameError: public StandardError
-    {
-    public:
-        NameError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_NameError(), reason.c_str());
-        }
-    };
-    
-    class RuntimeError: public StandardError
-    {
-    public:
-        RuntimeError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_RuntimeError(), reason.c_str());
-        }
-    };
-    
-    class NotImplementedError: public StandardError
-    {
-    public:
-        NotImplementedError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_NotImplementedError(), reason.c_str());
-        }
-    };
-    
-    class SystemError: public StandardError
-    {
-    public:
-        SystemError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_SystemError(),reason.c_str());
-        }
-    };
-    
-    class KeyError: public LookupError
-    {
-    public:
-        KeyError (const std::string& reason)
-            : LookupError()
-        {
-            PyErr_SetString (Py::_Exc_KeyError(),reason.c_str());
-        }
-    };
-    
-    
-    class ValueError: public StandardError
-    {
-    public:
-        ValueError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_ValueError(), reason.c_str());
-        }
-    };
-    
-    class OverflowError: public ArithmeticError
-    {
-    public:
-        OverflowError (const std::string& reason)
-            : ArithmeticError()
-        {
-            PyErr_SetString (Py::_Exc_OverflowError(), reason.c_str());
-        }        
-    };
-    
-    class ZeroDivisionError: public ArithmeticError
-    {
-    public:
-        ZeroDivisionError (const std::string& reason)
-            : ArithmeticError() 
-        {
-            PyErr_SetString (Py::_Exc_ZeroDivisionError(), reason.c_str());
-        }
-    };
-    
-    class FloatingPointError: public ArithmeticError
-    {
-    public:
-        FloatingPointError (const std::string& reason)
-            : ArithmeticError() 
-        {
-            PyErr_SetString (Py::_Exc_FloatingPointError(), reason.c_str());
-        }
-    };
-    
-    class MemoryError: public StandardError
-    {
-    public:
-        MemoryError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_MemoryError(), reason.c_str());
-        }    
-    };
-    
-    class SystemExit: public StandardError
-    {
-    public:
-        SystemExit (const std::string& reason)
-            : StandardError() 
-        {
-            PyErr_SetString (Py::_Exc_SystemExit(),reason.c_str());
-        }
-    };
-
-}// Py
-
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionModule.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionModule.hxx
deleted file mode 100644
index 9541380..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionModule.hxx
+++ /dev/null
@@ -1,208 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_ExtensionModule__h
-#define __CXX_ExtensionModule__h
-
-namespace Py
-{
-    class ExtensionModuleBase
-    {
-    public:
-        ExtensionModuleBase( const char *name );
-        virtual ~ExtensionModuleBase();
-
-        Module module( void ) const;            // only valid after initialize() has been called
-        Dict moduleDictionary( void ) const;    // only valid after initialize() has been called
-
-        virtual Object invoke_method_noargs( void *method_def ) = 0;
-        virtual Object invoke_method_keyword( void *method_def, const Tuple &_args, const Dict &_keywords ) = 0;
-        virtual Object invoke_method_varargs( void *method_def, const Tuple &_args ) = 0;
-
-        const std::string &name() const;
-        const std::string &fullName() const;
-
-        // what is returned from PyInit_<module> function
-        Object moduleObject( void ) const;
-
-    protected:
-        // Initialize the module
-        void initialize( const char *module_doc );
-
-        const std::string m_module_name;
-        const std::string m_full_module_name;
-        MethodTable m_method_table;
-#if PY3
-        PyModuleDef m_module_def;
-#endif
-        PyObject *m_module;
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        ExtensionModuleBase( const ExtensionModuleBase & );     //unimplemented
-        void operator=( const ExtensionModuleBase & );          //unimplemented
-    };
-
-    // Note: Python calls noargs as varargs buts args==NULL
-    extern "C" PyObject *method_noargs_call_handler( PyObject *_self_and_name_tuple, PyObject * );
-    extern "C" PyObject *method_varargs_call_handler( PyObject *_self_and_name_tuple, PyObject *_args );
-    extern "C" PyObject *method_keyword_call_handler( PyObject *_self_and_name_tuple, PyObject *_args, PyObject *_keywords );
-
-    extern "C" void do_not_dealloc( void * );
-
-    template<TEMPLATE_TYPENAME T>
-    class ExtensionModule : public ExtensionModuleBase
-    {
-    public:
-        ExtensionModule( const char *name )
-        : ExtensionModuleBase( name )
-        {}
-        virtual ~ExtensionModule()
-        {}
-
-    protected:
-        typedef Object (T::*method_noargs_function_t)();
-        typedef Object (T::*method_varargs_function_t)( const Tuple &args );
-        typedef Object (T::*method_keyword_function_t)( const Tuple &args, const Dict &kws );
-        typedef std::map<std::string, MethodDefExt<T> *> method_map_t;
-
-        static void add_noargs_method( const char *name, method_noargs_function_t function, const char *doc="" )
-        {
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_noargs_call_handler, doc );
-        }
-
-        static void add_varargs_method( const char *name, method_varargs_function_t function, const char *doc="" )
-        {
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_varargs_call_handler, doc );
-        }
-
-        static void add_keyword_method( const char *name, method_keyword_function_t function, const char *doc="" )
-        {
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_keyword_call_handler, doc );
-        }
-
-        void initialize( const char *module_doc="" )
-        {
-            ExtensionModuleBase::initialize( module_doc );
-            Dict dict( moduleDictionary() );
-
-            //
-            // put each of the methods into the modules dictionary
-            // so that we get called back at the function in T.
-            //
-            method_map_t &mm = methods();
-            EXPLICIT_TYPENAME method_map_t::const_iterator i = mm.begin();
-            EXPLICIT_TYPENAME method_map_t::const_iterator i_end = mm.end();
-            for ( ; i != i_end; ++i )
-            {
-                MethodDefExt<T> *method_def = (*i).second;
-
-                static PyObject *self = PyCObject_FromVoidPtr( this, do_not_dealloc );
-
-                Tuple args( 2 );
-                args[0] = Object( self );
-                args[1] = Object( PyCObject_FromVoidPtr( method_def, do_not_dealloc ) );
-
-                PyObject *func = PyCFunction_New
-                                    (
-                                    &method_def->ext_meth_def,
-                                    new_reference_to( args )
-                                    );
-
-                method_def->py_method = Object( func, true );
-
-                dict[ (*i).first ] = method_def->py_method;
-            }
-        }
-
-    protected:    // Tom Malcolmson reports that derived classes need access to these
-        static method_map_t &methods( void )
-        {
-            static method_map_t *map_of_methods = NULL;
-            if( map_of_methods == NULL )
-                map_of_methods = new method_map_t;
-
-            return *map_of_methods;
-        }
-
-        // this invoke function must be called from within a try catch block
-        virtual Object invoke_method_noargs( void *method_def )
-        {
-            // cast up to the derived class, method_def and call
-            T *self = static_cast<T *>( this );
-            MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>( method_def );
-
-            return (self->*meth_def->ext_noargs_function)();
-        }
-
-        // this invoke function must be called from within a try catch block
-        virtual Object invoke_method_varargs( void *method_def, const Tuple &args )
-        {
-            // cast up to the derived class, method_def and call
-            T *self = static_cast<T *>( this );
-            MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>( method_def );
-
-            return (self->*meth_def->ext_varargs_function)( args );
-        }
-
-        // this invoke function must be called from within a try catch block
-        virtual Object invoke_method_keyword( void *method_def, const Tuple &args, const Dict &keywords )
-        {
-            // cast up to the derived class, method_def and call
-            T *self = static_cast<T *>( this );
-            MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>( method_def );
-
-            return (self->*meth_def->ext_keyword_function)( args, keywords );
-        }
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        ExtensionModule( const ExtensionModule<T> & );  //unimplemented
-        void operator=( const ExtensionModule<T> & );   //unimplemented
-    };
-} // Namespace Py
-
-
-// End of __CXX_ExtensionModule__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionOldType.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionOldType.hxx
deleted file mode 100644
index 5e1355b..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionOldType.hxx
+++ /dev/null
@@ -1,397 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_ExtensionOldType__h
-#define __CXX_ExtensionOldType__h
-
-namespace Py
-{
-    template<TEMPLATE_TYPENAME T> class PythonExtension
-    : public PythonExtensionBase
-    {
-    public:
-        static PyTypeObject *type_object()
-        {
-            return behaviors().type_object();
-        }
-
-        static bool check( PyObject *p )
-        {
-            // is p like me?
-            return p->ob_type == type_object();
-        }
-
-        static bool check( const Object &ob )
-        {
-            return check( ob.ptr() );
-        }
-
-        //
-        // every object needs getattr implemented
-        // to support methods
-        //
-        virtual Object getattr( const char *name )
-        {
-            return getattr_methods( name );
-        }
-
-        PyObject *selfPtr()
-        {
-            return this;
-        }
-
-        Object self()
-        {
-            return asObject( this );
-        }
-
-    protected:
-        explicit PythonExtension()
-        : PythonExtensionBase()
-        {
-            PyObject_Init( this, type_object() );
-
-            // every object must support getattr
-            behaviors().supportGetattr();
-        }
-
-        virtual ~PythonExtension()
-        {}
-
-        static PythonType &behaviors()
-        {
-            static PythonType* p;
-            if( p == NULL )
-            {
-#if defined( _CPPRTTI ) || defined( __GNUG__ )
-                const char *default_name =( typeid( T ) ).name();
-#else
-                const char *default_name = "unknown";
-#endif
-                p = new PythonType( sizeof( T ), 0, default_name );
-                p->set_tp_dealloc( extension_object_deallocator );
-            }
-
-            return *p;
-        }
-
-        typedef Object (T::*method_noargs_function_t)();
-        typedef Object (T::*method_varargs_function_t)( const Tuple &args );
-        typedef Object (T::*method_keyword_function_t)( const Tuple &args, const Dict &kws );
-        typedef std::map<std::string, MethodDefExt<T> *> method_map_t;
-
-        // support the default attributes, __name__, __doc__ and methods
-        virtual Object getattr_default( const char *_name )
-        {
-            std::string name( _name );
-
-            if( name == "__name__" && type_object()->tp_name != NULL )
-            {
-                return Py::String( type_object()->tp_name );
-            }
-
-            if( name == "__doc__" && type_object()->tp_doc != NULL )
-            {
-                return Py::String( type_object()->tp_doc );
-            }
-
-// trying to fake out being a class for help()
-//            else if( name == "__bases__"  )
-//            {
-//                return Py::Tuple( 0 );
-//            }
-//            else if( name == "__module__"  )
-//            {
-//                return Py::Nothing();
-//            }
-//            else if( name == "__dict__"  )
-//            {
-//                return Py::Dict();
-//            }
-
-            return getattr_methods( _name );
-        }
-
-        // turn a name into function object
-        virtual Object getattr_methods( const char *_name )
-        {
-            std::string name( _name );
-
-            method_map_t &mm = methods();
-
-            // see if name exists and get entry with method
-            EXPLICIT_TYPENAME method_map_t::const_iterator i = mm.find( name );
-            if( i == mm.end() )
-            {
-                if( name == "__methods__" )
-                {
-                    List methods;
-
-                    i = mm.begin();
-                    EXPLICIT_TYPENAME method_map_t::const_iterator i_end = mm.end();
-
-                    for( ; i != i_end; ++i )
-                        methods.append( String( (*i).first ) );
-
-                    return methods;
-                }
-
-                throw AttributeError( name );
-            }
-
-            MethodDefExt<T> *method_def = i->second;
-
-            Tuple self( 2 );
-
-            self[0] = Object( this );
-            self[1] = Object( PyCObject_FromVoidPtr( method_def, do_not_dealloc ) );
-
-            PyObject *func = PyCFunction_New( &method_def->ext_meth_def, self.ptr() );
-
-            return Object(func, true);
-        }
-
-        // check that all methods added are unique
-        static void check_unique_method_name( const char *name )
-        {
-            method_map_t &mm = methods();
-            EXPLICIT_TYPENAME method_map_t::const_iterator i;
-            i = mm.find( name );
-            if( i != mm.end() )
-                throw AttributeError( name );
-        }
-
-        static void add_noargs_method( const char *name, method_noargs_function_t function, const char *doc="" )
-        {
-            check_unique_method_name( name );
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_noargs_call_handler, doc );
-        }
-
-        static void add_varargs_method( const char *name, method_varargs_function_t function, const char *doc="" )
-        {
-            check_unique_method_name( name );
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_varargs_call_handler, doc );
-        }
-
-        static void add_keyword_method( const char *name, method_keyword_function_t function, const char *doc="" )
-        {
-            check_unique_method_name( name );
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_keyword_call_handler, doc );
-        }
-
-    private:
-        static method_map_t &methods( void )
-        {
-            static method_map_t *map_of_methods = NULL;
-            if( map_of_methods == NULL )
-                map_of_methods = new method_map_t;
-
-            return *map_of_methods;
-        }
-
-        // Note: Python calls noargs as varargs buts args==NULL
-        static PyObject *method_noargs_call_handler( PyObject *_self_and_name_tuple, PyObject * )
-        {
-            try
-            {
-                Tuple self_and_name_tuple( _self_and_name_tuple );
-
-                PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-                T *self = static_cast<T *>( self_in_cobject );
-                MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
-                                                PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
-                Object result;
-
-                // Adding try & catch in case of STL debug-mode exceptions.
-                #ifdef _STLP_DEBUG
-                try
-                {
-                    result = (self->*meth_def->ext_noargs_function)();
-                }
-                catch( std::__stl_debug_exception )
-                {
-                    // throw cxx::RuntimeError( sErrMsg );
-                    throw RuntimeError( "Error message not set yet." );
-                }
-                #else
-                result = (self->*meth_def->ext_noargs_function)();
-                #endif // _STLP_DEBUG
-
-                return new_reference_to( result.ptr() );
-            }
-            catch( Exception & )
-            {
-                return 0;
-            }
-        }
-
-        static PyObject *method_varargs_call_handler( PyObject *_self_and_name_tuple, PyObject *_args )
-        {
-            try
-            {
-                Tuple self_and_name_tuple( _self_and_name_tuple );
-
-                PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-                T *self = static_cast<T *>( self_in_cobject );
-
-                MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
-                                                PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
-                Tuple args( _args );
-
-                Object result;
-
-                // Adding try & catch in case of STL debug-mode exceptions.
-                #ifdef _STLP_DEBUG
-                try
-                {
-                    result = (self->*meth_def->ext_varargs_function)( args );
-                }
-                catch( std::__stl_debug_exception )
-                {
-                    throw RuntimeError( "Error message not set yet." );
-                }
-                #else
-                result = (self->*meth_def->ext_varargs_function)( args );
-                #endif // _STLP_DEBUG
-
-                return new_reference_to( result.ptr() );
-            }
-            catch( Exception & )
-            {
-                return 0;
-            }
-        }
-
-        static PyObject *method_keyword_call_handler( PyObject *_self_and_name_tuple, PyObject *_args, PyObject *_keywords )
-        {
-            try
-            {
-                Tuple self_and_name_tuple( _self_and_name_tuple );
-
-                PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-                T *self = static_cast<T *>( self_in_cobject );
-
-                MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
-                                                PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
-
-                Tuple args( _args );
-
-                // _keywords may be NULL so be careful about the way the dict is created
-                Dict keywords;
-                if( _keywords != NULL )
-                    keywords = Dict( _keywords );
-
-                Object result( ( self->*meth_def->ext_keyword_function )( args, keywords ) );
-
-                return new_reference_to( result.ptr() );
-            }
-            catch( Exception & )
-            {
-                return 0;
-            }
-        }
-
-        static void extension_object_deallocator( PyObject* t )
-        {
-            delete (T *)( t );
-        }
-
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        explicit PythonExtension( const PythonExtension<T> &other );
-        void operator=( const PythonExtension<T> &rhs );
-    };
-
-    //
-    // ExtensionObject<T> is an Object that will accept only T's.
-    //
-    template<TEMPLATE_TYPENAME T>
-    class ExtensionObject: public Object
-    {
-    public:
-
-        explicit ExtensionObject( PyObject *pyob )
-        : Object( pyob )
-        {
-            validate();
-        }
-
-        ExtensionObject( const ExtensionObject<T> &other )
-        : Object( *other )
-        {
-            validate();
-        }
-
-        ExtensionObject( const Object &other )
-        : Object( *other )
-        {
-            validate();
-        }
-
-        ExtensionObject &operator=( const Object &rhs )
-        {
-            return( *this = *rhs );
-        }
-
-        ExtensionObject &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return( pyob && T::check( pyob ) );
-        }
-
-        //
-        //    Obtain a pointer to the PythonExtension object
-        //
-        T *extensionObject( void )
-        {
-            return static_cast<T *>( ptr() );
-        }
-    };
-} // Namespace Py
-
-// End of __CXX_ExtensionOldType__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionType.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionType.hxx
deleted file mode 100644
index 4128960..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionType.hxx
+++ /dev/null
@@ -1,403 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_ExtensionClass__h
-#define __CXX_ExtensionClass__h
-
-#define PYCXX_NOARGS_METHOD_NAME( NAME ) _callNoArgsMethod__##NAME
-#define PYCXX_VARARGS_METHOD_NAME( NAME ) _callVarArgsMethod__##NAME
-#define PYCXX_KEYWORDS_METHOD_NAME( NAME ) _callKeywordsMethod__##NAME
-
-#define PYCXX_NOARGS_METHOD_DECL( CLS, NAME ) \
-    static PyObject *PYCXX_NOARGS_METHOD_NAME( NAME )( PyObject *_self, PyObject *, PyObject * ) \
-    { \
-        try \
-        { \
-            Py::PythonClassInstance *self_python = reinterpret_cast< Py::PythonClassInstance * >( _self ); \
-            CLS *self = reinterpret_cast< CLS * >( self_python->m_pycxx_object ); \
-            Py::Object r( (self->NAME)() ); \
-            return Py::new_reference_to( r.ptr() ); \
-        } \
-        catch( Py::Exception & ) \
-        { \
-            return 0; \
-        } \
-    }
-#define PYCXX_VARARGS_METHOD_DECL( CLS, NAME ) \
-    static PyObject *PYCXX_VARARGS_METHOD_NAME( NAME )( PyObject *_self, PyObject *_a, PyObject * ) \
-    { \
-        try \
-        { \
-            Py::PythonClassInstance *self_python = reinterpret_cast< Py::PythonClassInstance * >( _self ); \
-            CLS *self = reinterpret_cast< CLS * >( self_python->m_pycxx_object ); \
-            Py::Tuple a( _a ); \
-            Py::Object r( (self->NAME)( a ) ); \
-            return Py::new_reference_to( r.ptr() ); \
-        } \
-        catch( Py::Exception & ) \
-        { \
-            return 0; \
-        } \
-    }
-#define PYCXX_KEYWORDS_METHOD_DECL( CLS, NAME ) \
-    static PyObject *PYCXX_KEYWORDS_METHOD_NAME( NAME )( PyObject *_self, PyObject *_a, PyObject *_k ) \
-    { \
-        try \
-        { \
-            Py::PythonClassInstance *self_python = reinterpret_cast< Py::PythonClassInstance * >( _self ); \
-            CLS *self = reinterpret_cast< CLS * >( self_python->m_pycxx_object ); \
-            Py::Tuple a( _a ); \
-            Py::Dict k; \
-            if( _k != NULL ) \
-                k = _k; \
-            Py::Object r( (self->NAME)( a, k ) ); \
-            return Py::new_reference_to( r.ptr() ); \
-        } \
-        catch( Py::Exception & ) \
-        { \
-            return 0; \
-        } \
-    }
-
-// need to support METH_STATIC and METH_CLASS
-
-#define PYCXX_ADD_NOARGS_METHOD( PYNAME, NAME, docs ) \
-    add_method( #PYNAME, (PyCFunction)PYCXX_NOARGS_METHOD_NAME( NAME ), METH_NOARGS, docs )
-#define PYCXX_ADD_VARARGS_METHOD( PYNAME, NAME, docs ) \
-    add_method( #PYNAME, (PyCFunction)PYCXX_VARARGS_METHOD_NAME( NAME ), METH_VARARGS, docs )
-#define PYCXX_ADD_KEYWORDS_METHOD( PYNAME, NAME, docs ) \
-    add_method( #PYNAME, (PyCFunction)PYCXX_KEYWORDS_METHOD_NAME( NAME ), METH_VARARGS | METH_KEYWORDS, docs )
-
-namespace Py
-{
-    extern PythonExtensionBase *getPythonExtensionBase( PyObject *self );
-
-    struct PythonClassInstance
-    {
-        PyObject_HEAD
-        PythonExtensionBase *m_pycxx_object;
-    };
-
-
-    class ExtensionClassMethodsTable
-    {
-    public:
-        ExtensionClassMethodsTable()
-        : m_methods_table( new PyMethodDef[ METHOD_TABLE_SIZE_INCREMENT ] )
-        , m_methods_used( 0 )
-        , m_methods_size( METHOD_TABLE_SIZE_INCREMENT )
-        {
-        }
-
-        ~ExtensionClassMethodsTable()
-        {
-            delete m_methods_table;
-        }
-
-        // check that all methods added are unique
-        void check_unique_method_name( const char *_name )
-        {
-            std::string name( _name );
-            for( int i=0; i<m_methods_used; i++ )
-            {
-                if( name == m_methods_table[i].ml_name )
-                {
-                    throw AttributeError( name );
-                }
-            }
-        }
-        PyMethodDef *add_method( const char *name, PyCFunction function, int flags, const char *doc )
-        {
-            check_unique_method_name( name );
-
-            // see if there is enough space for one more method
-            if( m_methods_used == (m_methods_size-1) )
-            {
-                PyMethodDef *old_mt = m_methods_table;
-                m_methods_size += METHOD_TABLE_SIZE_INCREMENT;
-                PyMethodDef *new_mt = new PyMethodDef[ m_methods_size ];
-                for( int i=0; i<m_methods_used; i++ )
-                {
-                    new_mt[ i ] = old_mt[ i ];
-                }
-                delete[] old_mt;
-                m_methods_table = new_mt;
-            }
-
-            // add method into the table
-            PyMethodDef *p = &m_methods_table[ m_methods_used ];
-            p->ml_name = const_cast<char *>( name );
-            p->ml_meth = function;
-            p->ml_flags = flags;
-            p->ml_doc = const_cast<char *>( doc );
-
-            m_methods_used++;
-            p++;
-
-            // add the sentinel marking the table end
-            p->ml_name = NULL;
-            p->ml_meth = NULL;
-            p->ml_flags = 0;
-            p->ml_doc = NULL;
-
-            return m_methods_table;
-        }
-
-    private:
-        enum {METHOD_TABLE_SIZE_INCREMENT = 1};
-        PyMethodDef *m_methods_table;
-        int m_methods_used;
-        int m_methods_size;
-    };
-
-    template<TEMPLATE_TYPENAME T> class PythonClass
-    : public PythonExtensionBase
-    {
-    protected:
-        explicit PythonClass( PythonClassInstance *self, Tuple &args, Dict &kwds )
-        : PythonExtensionBase()
-        , m_class_instance( self )
-        {
-        }
-
-        virtual ~PythonClass()
-        {} 
-
-        static ExtensionClassMethodsTable &methodTable()
-        {
-            static ExtensionClassMethodsTable *method_table;
-            if( method_table == NULL )
-                method_table = new ExtensionClassMethodsTable;
-            return *method_table;
-        }
-
-        static void add_method( const char *name, PyCFunction function, int flags, const char *doc=NULL )
-        {
-            behaviors().set_methods( methodTable().add_method( name, function, flags, doc ) );
-        }
-
-        static PythonType &behaviors()
-        {
-            static PythonType *p;
-            if( p == NULL ) 
-            {
-#if defined( _CPPRTTI ) || defined( __GNUG__ )
-                const char *default_name = (typeid( T )).name();
-#else
-                const char *default_name = "unknown";
-#endif
-                p = new PythonType( sizeof( T ), 0, default_name );
-                p->set_tp_new( extension_object_new );
-                p->set_tp_init( extension_object_init );
-                p->set_tp_dealloc( extension_object_deallocator );
-                // we are a class
-                p->supportClass();
-
-                // always support get and set attr
-                p->supportGetattro();
-                p->supportSetattro();
-            }
-
-            return *p;
-        }
-
-        static PyObject *extension_object_new( PyTypeObject *subtype, PyObject *args, PyObject *kwds )
-        {
-#ifdef PYCXX_DEBUG
-            std::cout << "extension_object_new()" << std::endl;
-#endif
-            PythonClassInstance *o = reinterpret_cast<PythonClassInstance *>( subtype->tp_alloc( subtype, 0 ) );
-            if( o == NULL )
-                return NULL;
-
-            o->m_pycxx_object = NULL;
-
-            PyObject *self = reinterpret_cast<PyObject *>( o );
-#ifdef PYCXX_DEBUG
-            std::cout << "extension_object_new() => self=0x" << std::hex << reinterpret_cast< unsigned int >( self ) << std::dec << std::endl;
-#endif
-            return self;
-        }
-
-        static int extension_object_init( PyObject *_self, PyObject *args_, PyObject *kwds_ )
-        {
-            try
-            {
-                Py::Tuple args( args_ );
-                Py::Dict kwds;
-                if( kwds_ != NULL )
-                    kwds = kwds_;
-
-                PythonClassInstance *self = reinterpret_cast<PythonClassInstance *>( _self );
-#ifdef PYCXX_DEBUG
-                std::cout << "extension_object_init( self=0x" << std::hex << reinterpret_cast< unsigned int >( self ) << std::dec << " )" << std::endl;
-                std::cout << "    self->m_pycxx_object=0x" << std::hex << reinterpret_cast< unsigned int >( self->m_pycxx_object ) << std::dec << std::endl;
-#endif
-
-                if( self->m_pycxx_object == NULL )
-                {
-                    self->m_pycxx_object = new T( self, args, kwds );
-#ifdef PYCXX_DEBUG
-                    std::cout << "    self->m_pycxx_object=0x" << std::hex << reinterpret_cast< unsigned int >( self->m_pycxx_object ) << std::dec << std::endl;
-#endif
-                }
-                else
-                {
-#ifdef PYCXX_DEBUG
-                    std::cout << "    reinit - self->m_pycxx_object=0x" << std::hex << reinterpret_cast< unsigned int >( self->m_pycxx_object ) << std::dec << std::endl;
-#endif
-                    self->m_pycxx_object->reinit( args, kwds );
-                }
-            }
-            catch( Exception & )
-            {
-                return -1;
-            }
-            return 0;
-        }
-
-        static void extension_object_deallocator( PyObject *_self )
-        {
-            PythonClassInstance *self = reinterpret_cast< PythonClassInstance * >( _self );
-#ifdef PYCXX_DEBUG
-            std::cout << "extension_object_deallocator( self=0x" << std::hex << reinterpret_cast< unsigned int >( self ) << std::dec << " )" << std::endl;
-            std::cout << "    self->m_pycxx_object=0x" << std::hex << reinterpret_cast< unsigned int >( self->m_pycxx_object ) << std::dec << std::endl;
-#endif
-            delete self->m_pycxx_object;
-            _self->ob_type->tp_free( _self );
-        }
-
-    public:
-        static PyTypeObject *type_object()
-        {
-            return behaviors().type_object();
-        }
-
-        static Object type()
-        {
-            return Object( reinterpret_cast<PyObject *>( behaviors().type_object() ) );
-        }
-
-        static bool check( PyObject *p )
-        {
-            // is p like me?
-            return p->ob_type == type_object();
-        }
-
-        static bool check( const Object &ob )
-        {
-            return check( ob.ptr() );
-        }
-
-        virtual PyObject *selfPtr()
-        {
-            return reinterpret_cast<PyObject *>( m_class_instance );
-        }
-
-        virtual Object self()
-        {
-            return Object( reinterpret_cast<PyObject *>( m_class_instance ) );
-        }
-
-    protected:
-    private:
-        PythonClassInstance *m_class_instance;
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        explicit PythonClass( const PythonClass<T> &other );
-        void operator=( const PythonClass<T> &rhs );
-    };
-
-    //
-    // ExtensionObject<T> is an Object that will accept only T's.
-    //
-    template<TEMPLATE_TYPENAME T>
-    class PythonClassObject: public Object
-    {
-    public:
-
-        explicit PythonClassObject( PyObject *pyob )
-        : Object( pyob )
-        {
-            validate();
-        }
-
-        PythonClassObject( const PythonClassObject<T> &other )
-        : Object( *other )
-        {
-            validate();
-        }
-
-        PythonClassObject( const Object &other )
-        : Object( *other )
-        {
-            validate();
-        }
-
-        PythonClassObject &operator=( const Object &rhs )
-        {
-            *this = *rhs;
-            return *this;
-        }
-
-        PythonClassObject &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return( pyob && T::check( pyob ) );
-        }
-
-        //
-        //    Obtain a pointer to the PythonExtension object
-        //
-        T *getCxxObject( void )
-        {
-            return dynamic_cast< T * >( getPythonExtensionBase( ptr() ) );
-        }
-    };
-} // Namespace Py
-
-// End of __CXX_ExtensionClass__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionTypeBase.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionTypeBase.hxx
deleted file mode 100644
index ad11029..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/ExtensionTypeBase.hxx
+++ /dev/null
@@ -1,177 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_ExtensionTypeBase__h
-#define __CXX_ExtensionTypeBase__h
-
-namespace Py
-{
-    // Class PythonExtension is what you inherit from to create
-    // a new Python extension type. You give your class itself
-    // as the template paramter.
-
-    // There are two ways that extension objects can get destroyed.
-    // 1. Their reference count goes to zero
-    // 2. Someone does an explicit delete on a pointer.
-    // In(1) the problem is to get the destructor called 
-    //      We register a special deallocator in the Python type object
-    //      (see behaviors()) to do this.
-    // In(2) there is no problem, the dtor gets called.
-
-    // PythonExtension does not use the usual Python heap allocator, 
-    // instead using new/delete. We do the setting of the type object
-    // and reference count, usually done by PyObject_New, in the 
-    // base class ctor.
-
-    // This special deallocator does a delete on the pointer.
-
-    class PythonExtensionBase : public PyObject
-    {
-    public:
-        PythonExtensionBase();
-        virtual ~PythonExtensionBase();
-
-    public:
-        // object 
-        virtual void reinit( Tuple &args, Dict &kwds );
-
-        // object basics
-#if defined( PYCXX_PYTHON_2TO3 ) || !defined( PY3 )
-        virtual int print( FILE *, int );
-#endif
-        virtual Object getattr( const char * );
-        virtual int setattr( const char *, const Object & );
-        virtual Object getattro( const String & );
-        Object genericGetAttro( const String & );
-        virtual int setattro( const String &, const Object & );
-        int genericSetAttro( const String &, const Object & );
-        virtual int compare( const Object & );
-        virtual Object rich_compare( const Object &, int );
-        virtual Object repr();
-        virtual Object str();
-        virtual long hash();
-        virtual Object call( const Object &, const Object & );
-        virtual Object iter();
-        virtual PyObject *iternext();
-
-        // Sequence methods
-        virtual int sequence_length();
-        virtual Object sequence_concat( const Object & );
-        virtual Object sequence_repeat( Py_ssize_t );
-        virtual Object sequence_item( Py_ssize_t );
-        virtual Object sequence_slice( Py_ssize_t, Py_ssize_t );
-        virtual int sequence_ass_item( Py_ssize_t, const Object & );
-        virtual int sequence_ass_slice( Py_ssize_t, Py_ssize_t, const Object & );
-
-        // Mapping
-        virtual int mapping_length();
-        virtual Object mapping_subscript( const Object & );
-        virtual int mapping_ass_subscript( const Object &, const Object & );
-
-        // Number
-        virtual int number_nonzero();
-        virtual Object number_negative();
-        virtual Object number_positive();
-        virtual Object number_absolute();
-        virtual Object number_invert();
-        virtual Object number_int();
-        virtual Object number_float();
-        virtual Object number_long();
-        virtual Object number_oct();
-        virtual Object number_hex();
-        virtual Object number_add( const Object & );
-        virtual Object number_subtract( const Object & );
-        virtual Object number_multiply( const Object & );
-        virtual Object number_divide( const Object & );
-        virtual Object number_remainder( const Object & );
-        virtual Object number_divmod( const Object & );
-        virtual Object number_lshift( const Object & );
-        virtual Object number_rshift( const Object & );
-        virtual Object number_and( const Object & );
-        virtual Object number_xor( const Object & );
-        virtual Object number_or( const Object & );
-        virtual Object number_power( const Object &, const Object & );
-
-        // Buffer
-        virtual Py_ssize_t buffer_getreadbuffer( Py_ssize_t, void** );
-        virtual Py_ssize_t buffer_getwritebuffer( Py_ssize_t, void** );
-        virtual Py_ssize_t buffer_getsegcount( Py_ssize_t* );
-
-    public:
-        // helper functions to call function fn_name with 0 to 9 args
-        Object callOnSelf( const std::string &fn_name );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5, const Object &arg6 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5, const Object &arg6,
-                                const Object &arg7 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5, const Object &arg6,
-                                const Object &arg7, const Object &arg8 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5, const Object &arg6,
-                                const Object &arg7, const Object &arg8, const Object &arg9 );
-
-    public:
-        virtual PyObject *selfPtr() = 0;
-        virtual Object self() = 0;
-
-    private:
-        void missing_method( void );
-        static PyObject *method_call_handler( PyObject *self, PyObject *args );
-    };
-
-} // Namespace Py
-
-// End of __CXX_ExtensionTypeBase__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/Extensions.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/Extensions.hxx
deleted file mode 100644
index c4324b3..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/Extensions.hxx
+++ /dev/null
@@ -1,189 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_Extensions__h
-#define __CXX_Extensions__h
-
-
-#ifdef _MSC_VER
-// disable warning C4786: symbol greater than 255 character,
-// okay to ignore
-#pragma warning( disable: 4786 )
-#endif
-
-#include "CXX/WrapPython.h"
-#include "CXX/Version.hxx"
-#include "CXX/Python2/Config.hxx"
-#include "CXX/Python2/CxxDebug.hxx"
-#include "CXX/Python2/Objects.hxx"
-
-extern "C" { extern PyObject py_object_initializer; }
-
-#include <vector>
-#include <map>
-
-// ----------------------------------------------------------------------
-
-namespace Py
-{
-    class ExtensionModuleBase;
-
-    // Make an Exception Type for use in raising custom exceptions
-    class ExtensionExceptionType : public Object
-    {
-    public:
-        ExtensionExceptionType();
-        virtual ~ExtensionExceptionType();
-
-        // call init to create the type
-        void init( ExtensionModuleBase &module, const std::string &name, ExtensionExceptionType &parent );
-        void init( ExtensionModuleBase &module, const std::string &name );
-    };
-
-    class MethodTable
-    {
-    public:
-        MethodTable();
-        virtual ~MethodTable();
-
-        void add( const char *method_name, PyCFunction f, const char *doc="", int flag=1 );
-        PyMethodDef *table();
-
-    protected:
-        std::vector<PyMethodDef> t;    // accumulator of PyMethodDef's
-        PyMethodDef *mt;        // Actual method table produced when full
-
-        static PyMethodDef method( const char* method_name, PyCFunction f, int flags=1, const char* doc="" );
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        MethodTable( const MethodTable &m );    //unimplemented
-        void operator=( const MethodTable &m );    //unimplemented
-
-    }; // end class MethodTable
-
-    // Note: Python calls noargs as varargs buts args==NULL
-    extern "C" typedef PyObject *(*method_noargs_call_handler_t)( PyObject *_self, PyObject * );
-    extern "C" typedef PyObject *(*method_varargs_call_handler_t)( PyObject *_self, PyObject *_args );
-    extern "C" typedef PyObject *(*method_keyword_call_handler_t)( PyObject *_self, PyObject *_args, PyObject *_dict );
-
-    template<class T>
-    class MethodDefExt : public PyMethodDef
-    {
-    public:
-        typedef Object (T::*method_noargs_function_t)();
-        typedef Object (T::*method_varargs_function_t)( const Tuple &args );
-        typedef Object (T::*method_keyword_function_t)( const Tuple &args, const Dict &kws );
-
-        // NOARGS
-        MethodDefExt
-        (
-            const char *_name,
-            method_noargs_function_t _function,
-            method_noargs_call_handler_t _handler,
-            const char *_doc
-        )
-        {
-            ext_meth_def.ml_name = const_cast<char *>( _name );
-            ext_meth_def.ml_meth = reinterpret_cast<method_varargs_call_handler_t>( _handler );
-            ext_meth_def.ml_flags = METH_NOARGS;
-            ext_meth_def.ml_doc = const_cast<char *>( _doc );
-
-            ext_noargs_function = _function;
-            ext_varargs_function = NULL;
-            ext_keyword_function = NULL;
-        }
-
-        // VARARGS
-        MethodDefExt
-        (
-            const char *_name,
-            method_varargs_function_t _function,
-            method_varargs_call_handler_t _handler,
-            const char *_doc
-        )
-        {
-            ext_meth_def.ml_name = const_cast<char *>( _name );
-            ext_meth_def.ml_meth = reinterpret_cast<method_varargs_call_handler_t>( _handler );
-            ext_meth_def.ml_flags = METH_VARARGS;
-            ext_meth_def.ml_doc = const_cast<char *>( _doc );
-
-            ext_noargs_function = NULL;
-            ext_varargs_function = _function;
-            ext_keyword_function = NULL;
-        }
-
-        // VARARGS + KEYWORD
-        MethodDefExt
-        (
-            const char *_name,
-            method_keyword_function_t _function,
-            method_keyword_call_handler_t _handler,
-            const char *_doc
-        )
-        {
-            ext_meth_def.ml_name = const_cast<char *>( _name );
-            ext_meth_def.ml_meth = reinterpret_cast<method_varargs_call_handler_t>( _handler );
-            ext_meth_def.ml_flags = METH_VARARGS|METH_KEYWORDS;
-            ext_meth_def.ml_doc = const_cast<char *>( _doc );
-
-            ext_noargs_function = NULL;
-            ext_varargs_function = NULL;
-            ext_keyword_function = _function;
-        }
-
-        ~MethodDefExt()
-        {}
-
-        PyMethodDef ext_meth_def;
-        method_noargs_function_t ext_noargs_function;
-        method_varargs_function_t ext_varargs_function;
-        method_keyword_function_t ext_keyword_function;
-        Object py_method;
-    };
-} // Namespace Py
-
-#include "CXX/Python2/ExtensionModule.hxx"
-#include "CXX/Python2/PythonType.hxx"
-#include "CXX/Python2/ExtensionTypeBase.hxx"
-#include "CXX/Python2/ExtensionOldType.hxx"
-#include "CXX/Python2/ExtensionType.hxx"
-
-// End of CXX_Extensions.h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/IndirectPythonInterface.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/IndirectPythonInterface.hxx
deleted file mode 100644
index a29a394..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/IndirectPythonInterface.hxx
+++ /dev/null
@@ -1,198 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_INDIRECT_PYTHON_INTERFACE__HXX__
-#define __CXX_INDIRECT_PYTHON_INTERFACE__HXX__
-
-#include "CXX/WrapPython.h"
-
-namespace Py
-{
-bool InitialisePythonIndirectInterface();
-
-//
-//    Wrap Exception variables as function calls
-//
-PyObject * _Exc_Exception();
-PyObject * _Exc_StandardError();
-PyObject * _Exc_ArithmeticError();
-PyObject * _Exc_LookupError();
-
-PyObject * _Exc_AssertionError();
-PyObject * _Exc_AttributeError();
-PyObject * _Exc_EOFError();
-PyObject * _Exc_FloatingPointError();
-PyObject * _Exc_EnvironmentError();
-PyObject * _Exc_IOError();
-PyObject * _Exc_OSError();
-PyObject * _Exc_ImportError();
-PyObject * _Exc_IndexError();
-PyObject * _Exc_KeyError();
-PyObject * _Exc_KeyboardInterrupt();
-PyObject * _Exc_MemoryError();
-PyObject * _Exc_NameError();
-PyObject * _Exc_OverflowError();
-PyObject * _Exc_RuntimeError();
-PyObject * _Exc_NotImplementedError();
-PyObject * _Exc_SyntaxError();
-PyObject * _Exc_SystemError();
-PyObject * _Exc_SystemExit();
-PyObject * _Exc_TypeError();
-PyObject * _Exc_ValueError();
-PyObject * _Exc_ZeroDivisionError();
-#ifdef MS_WINDOWS
-PyObject * _Exc_WindowsError();
-#endif
-
-PyObject * _Exc_MemoryErrorInst();
-
-#if PY_MAJOR_VERSION >= 2
-PyObject * _Exc_IndentationError();
-PyObject * _Exc_TabError();
-PyObject * _Exc_UnboundLocalError();
-PyObject * _Exc_UnicodeError();
-#endif
-
-//
-//    Wrap Object variables as function calls
-//
-PyObject * _None();
-
-PyObject * _False();
-PyObject * _True();
-
-//
-//    Wrap Type variables as function calls
-//
-PyTypeObject * _List_Type();
-bool _List_Check( PyObject *o );
-
-PyTypeObject * _Buffer_Type();
-bool _Buffer_Check( PyObject *op );
-
-PyTypeObject * _Class_Type();
-bool _Class_Check( PyObject *op );
-
-PyTypeObject * _Instance_Type();
-bool _Instance_Check( PyObject *op );
-
-PyTypeObject * _Method_Type();
-bool _Method_Check( PyObject *op );
-
-PyTypeObject * _CObject_Type();
-bool _CObject_Check( PyObject *op );
-
-PyTypeObject * _Complex_Type();
-bool _Complex_Check( PyObject *op );
-
-PyTypeObject * _Dict_Type();
-bool _Dict_Check( PyObject *op );
-
-PyTypeObject * _File_Type();
-bool _File_Check( PyObject *op );
-
-PyTypeObject * _Float_Type();
-bool _Float_Check( PyObject *op );
-
-PyTypeObject * _Frame_Type();
-bool _Frame_Check( PyObject *op );
-
-PyTypeObject * _Function_Type();
-bool _Function_Check( PyObject *op );
-
-PyTypeObject * _Bool_Type();
-bool _Boolean_Check( PyObject *op );
-
-PyTypeObject * _Int_Type();
-bool _Int_Check( PyObject *op );
-
-PyTypeObject * _List_Type();
-bool _List_Check( PyObject *op );
-
-PyTypeObject * _Long_Type();
-bool _Long_Check( PyObject *op );
-
-PyTypeObject * _CFunction_Type();
-bool _CFunction_Check( PyObject *op );
-
-PyTypeObject * _Module_Type();
-bool _Module_Check( PyObject *op );
-
-PyTypeObject * _Type_Type();
-bool _Type_Check( PyObject *op );
-
-PyTypeObject * _Range_Type();
-bool _Range_Check( PyObject *op );
-
-PyTypeObject * _Slice_Type();
-bool _Slice_Check( PyObject *op );
-
-PyTypeObject * _String_Type();
-bool _String_Check( PyObject *op );
-
-PyTypeObject * _Unicode_Type();
-bool _Unicode_Check( PyObject *op );
-
-PyTypeObject * _TraceBack_Type();
-bool _TraceBack_Check( PyObject *v );
-
-PyTypeObject * _Tuple_Type();
-bool _Tuple_Check( PyObject *op );
-
-#if PY_MAJOR_VERSION >= 2
-PyTypeObject * _Unicode_Type();
-bool _Unicode_Check( PyObject *op );
-#endif
-
-int &_Py_DebugFlag();
-int &_Py_InteractiveFlag();
-int &_Py_OptimizeFlag();
-int &_Py_NoSiteFlag();
-int &_Py_TabcheckFlag();
-int &_Py_VerboseFlag();
-
-#if PY_MAJOR_VERSION >= 2
-int &_Py_UnicodeFlag();
-#endif
-
-void _XINCREF( PyObject *op );
-void _XDECREF( PyObject *op );
-
-char *__Py_PackageContext();
-}
-
-#endif    // __CXX_INDIRECT_PYTHON_INTERFACE__HXX__
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/Objects.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/Objects.hxx
deleted file mode 100644
index 9b89e0b..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/Objects.hxx
+++ /dev/null
@@ -1,3466 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_Objects__h
-#define __CXX_Objects__h
-
-#include "CXX/WrapPython.h"
-#include "CXX/Version.hxx"
-#include "CXX/Config.hxx"
-#include "CXX/Exception.hxx"
-
-#include <iostream>
-#include STR_STREAM
-#include <string>
-#include <iterator>
-#include <utility>
-#include <typeinfo>
-
-namespace Py
-{
-    typedef int sequence_index_type;    // type of an index into a sequence
-
-    // Forward declarations
-    class Object;
-    class Type;
-    template<TEMPLATE_TYPENAME T> class SeqBase;
-    class String;
-    class List;
-    template<TEMPLATE_TYPENAME T> class MapBase;
-    class Tuple;
-    class Dict;
-
-    // new_reference_to also overloaded below on Object
-    inline PyObject* new_reference_to(PyObject* p)
-    {
-        Py::_XINCREF(p);
-        return p;
-    }
-
-    // returning Null() from an extension method triggers a
-    // Python exception
-    inline PyObject* Null()
-    {
-        return (static_cast<PyObject*>(0));
-    }
-
-    //===========================================================================//
-    // class Object
-    // The purpose of this class is to serve as the most general kind of
-    // Python object, for the purpose of writing C++ extensions in Python
-    // Objects hold a PyObject* which they own. This pointer is always a
-    // valid pointer to a Python object. In children we must maintain this behavior.
-    //
-    // Instructions on how to make your own class MyType descended from Object:
-    // (0) Pick a base class, either Object or perhaps SeqBase<T> or MapBase<T>.
-    //     This example assumes Object.
-
-    // (1) Write a routine int MyType_Check (PyObject *) modeled after PyInt_Check,
-    //     PyFloat_Check, etc.
-
-    // (2) Add method accepts:
-    //     virtual bool accepts (PyObject *pyob) const {
-    //         return pyob && MyType_Check (pyob);
-    // }
-
-    // (3) Include the following constructor and copy constructor
-    //
-    /*
-    explicit MyType (PyObject *pyob): Object(pyob) {
-    validate();
-}
-
-    MyType(const Object& other): Object(other.ptr()) {
-    validate();
-}
-    */
-
-    // Alernate version for the constructor to allow for construction from owned pointers:
-    /*
-    explicit MyType (PyObject *pyob): Object(pyob) {
-    validate();
-}
-    */
-
-    // You may wish to add other constructors; see the classes below for examples.
-    // Each constructor must use "set" to set the pointer
-    // and end by validating the pointer you have created.
-
-    // (4) Each class needs at least these two assignment operators:
-    /*
-    MyType& operator= (const Object& rhs) {
-    return (*this = *rhs);
-}
-
-    Mytype& operator= (PyObject* rhsp) {
-    if(ptr() == rhsp) return *this;
-    set(rhsp);
-    return *this;
-}
-    */
-    // Note on accepts: constructors call the base class
-    // version of a virtual when calling the base class constructor,
-    // so the test has to be done explicitly in a descendent.
-
-    // If you are inheriting from PythonExtension<T> to define an object
-    // note that it contains PythonExtension<T>::check
-    // which you can use in accepts when writing a wrapper class.
-    // See Demo/range.h and Demo/range.cxx for an example.
-
-    class Object
-    {
-    private:
-        // the pointer to the Python object
-        // Only Object sets this directly.
-        // The default constructor for Object sets it to Py_None and
-        // child classes must use "set" to set it
-        //
-        PyObject* p;
-
-    protected:
-
-        void set (PyObject* pyob, bool owned = false)
-        {
-            release();
-            p = pyob;
-            if (!owned)
-            {
-                Py::_XINCREF (p);
-            }
-            validate();
-        }
-
-        void release ()
-        {
-            Py::_XDECREF (p);
-            p = 0;
-        }
-
-        void validate();
-
-    public:
-        // Constructor acquires new ownership of pointer unless explicitly told not to.
-        explicit Object (PyObject* pyob=Py::_None(), bool owned = false): p (pyob)
-        {
-            if(!owned)
-            {
-                Py::_XINCREF (p);
-            }
-            validate();
-        }
-
-        // Copy constructor acquires new ownership of pointer
-        Object (const Object& ob): p(ob.p)
-        {
-            Py::_XINCREF (p);
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        Object& operator= (const Object& rhs)
-        {
-            set(rhs.p);
-            return *this;
-        }
-
-        Object& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-
-        // Destructor
-        virtual ~Object ()
-        {
-            release ();
-        }
-
-        // Loaning the pointer to others, retain ownership
-        PyObject* operator* () const
-        {
-            return p;
-        }
-
-        // Explicit reference_counting changes
-        void increment_reference_count()
-        {
-            Py::_XINCREF(p);
-        }
-
-        void decrement_reference_count()
-        {
-            // not allowed to commit suicide, however
-            if(reference_count() == 1)
-            throw RuntimeError("Object::decrement_reference_count error.");
-            Py::_XDECREF(p);
-        }
-        // Would like to call this pointer() but messes up STL in SeqBase<T>
-        PyObject* ptr () const
-        {
-            return p;
-        }
-
-        //
-        // Queries
-        //
-
-        // Can pyob be used in this object's constructor?
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return (pyob != 0);
-        }
-
-        Py_ssize_t reference_count () const
-        { // the reference count
-            return p ? p->ob_refcnt : 0;
-        }
-
-        Type type () const; // the type object associated with this one
-
-        String str () const; // the str() representation
-
-        std::string as_string() const;
-
-        String repr () const; // the repr () representation
-
-        List dir () const; // the dir() list
-
-        bool hasAttr (const std::string& s) const
-        {
-            return PyObject_HasAttrString (p, const_cast<char*>(s.c_str())) ? true: false;
-        }
-
-        Object getAttr (const std::string& s) const
-        {
-            return Object (PyObject_GetAttrString (p, const_cast<char*>(s.c_str())), true);
-        }
-
-        Object callMemberFunction( const std::string &function_name ) const;
-        Object callMemberFunction( const std::string &function_name, const Tuple &args ) const;
-        Object callMemberFunction( const std::string &function_name, const Tuple &args, const Dict &kw ) const;
-
-        Object getItem (const Object& key) const
-        {
-            return Object (PyObject_GetItem(p, *key), true);
-        }
-
-        long hashValue () const
-        {
-            return PyObject_Hash (p);
-        }
-
-        //
-        // int print (FILE* fp, int flags=Py_Print_RAW)
-        //{
-        //    return PyObject_Print (p, fp, flags);
-        //}
-        //
-        bool is(PyObject *pother) const
-        {  // identity test
-            return p == pother;
-        }
-
-        bool is(const Object& other) const
-        { // identity test
-            return p == other.p;
-        }
-
-        bool isNone() const
-        {
-            return p == _None();
-        }
-
-        bool isCallable () const
-        {
-            return PyCallable_Check (p) != 0;
-        }
-
-        bool isInstance () const
-        {
-            return PyInstance_Check (p) != 0;
-        }
-
-        bool isDict () const
-        {
-            return Py::_Dict_Check (p);
-        }
-
-        bool isList () const
-        {
-            return Py::_List_Check (p);
-        }
-
-        bool isMapping () const
-        {
-            return PyMapping_Check (p) != 0;
-        }
-
-        bool isNumeric () const
-        {
-            return PyNumber_Check (p) != 0;
-        }
-
-        bool isSequence () const
-        {
-            return PySequence_Check (p) != 0;
-        }
-
-        bool isTrue () const
-        {
-            return PyObject_IsTrue (p) != 0;
-        }
-
-        bool isType (const Type& t) const;
-
-        bool isTuple() const
-        {
-            return Py::_Tuple_Check(p);
-        }
-
-        bool isString() const
-        {
-            return Py::_String_Check(p) || Py::_Unicode_Check(p);
-        }
-
-        bool isUnicode() const
-        {
-            return Py::_Unicode_Check( p );
-        }
-
-        bool isBoolean() const
-        {
-            return Py::_Boolean_Check( p );
-        }
-
-        // Commands
-        void setAttr (const std::string& s, const Object& value)
-        {
-            if(PyObject_SetAttrString (p, const_cast<char*>(s.c_str()), *value) == -1)
-            throw AttributeError ("getAttr failed.");
-        }
-
-        void delAttr (const std::string& s)
-        {
-            if(PyObject_DelAttrString (p, const_cast<char*>(s.c_str())) == -1)
-            throw AttributeError ("delAttr failed.");
-        }
-
-        // PyObject_SetItem is too weird to be using from C++
-        // so it is intentionally omitted.
-
-        void delItem (const Object& key)
-        {
-            //if(PyObject_DelItem(p, *key) == -1)
-            // failed to link on Windows?
-            throw KeyError("delItem failed.");
-        }
-
-        // Equality and comparison use PyObject_RichCompareBool
-
-        bool operator==(const Object& o2) const
-        {
-            int k = PyObject_RichCompareBool (p, *o2, Py_EQ);
-            if (PyErr_Occurred()) throw Exception();
-            return k != 0;
-        }
-
-        bool operator!=(const Object& o2) const
-        {
-            int k = PyObject_RichCompareBool (p, *o2, Py_NE);
-            if (PyErr_Occurred()) throw Exception();
-            return k != 0;
-
-        }
-
-        bool operator>=(const Object& o2) const
-        {
-            int k = PyObject_RichCompareBool (p, *o2, Py_GE);
-            if (PyErr_Occurred()) throw Exception();
-            return k != 0;
-        }
-
-        bool operator<=(const Object& o2) const
-        {
-            int k = PyObject_RichCompareBool (p, *o2, Py_LE);
-            if (PyErr_Occurred()) throw Exception();
-            return k != 0;
-        }
-
-        bool operator<(const Object& o2) const
-        {
-            int k = PyObject_RichCompareBool (p, *o2, Py_LT);
-            if (PyErr_Occurred()) throw Exception();
-            return k != 0;
-        }
-
-        bool operator>(const Object& o2) const
-        {
-            int k = PyObject_RichCompareBool (p, *o2, Py_GT);
-            if (PyErr_Occurred()) throw Exception();
-            return k != 0;
-        }
-    };
-    // End of class Object
-    inline PyObject* new_reference_to(const Object& g)
-    {
-        PyObject* p = g.ptr();
-        Py::_XINCREF(p);
-        return p;
-    }
-
-    // Nothing() is what an extension method returns if
-    // there is no other return value.
-    inline Object Nothing()
-    {
-        return Object(Py::_None());
-    }
-
-    // Python special None value
-    inline Object None()
-    {
-        return Object(Py::_None());
-    }
-
-    // Python special Boolean values
-    inline Object False()
-    {
-        return Object(Py::_False());
-    }
-
-    inline Object True()
-    {
-        return Object(Py::_True());
-    }
-
-    // TMM: 31May'01 - Added the #ifndef so I can exlude iostreams.
-#ifndef CXX_NO_IOSTREAMS
-    std::ostream& operator<< (std::ostream& os, const Object& ob);
-#endif
-
-    // Class Type
-    class Type: public Object
-    {
-    public:
-        explicit Type (PyObject* pyob, bool owned = false): Object(pyob, owned)
-        {
-            validate();
-        }
-
-        Type (const Object& ob): Object(*ob)
-        {
-            validate();
-        }
-
-        Type(const Type& t): Object(t)
-        {
-            validate();
-        }
-
-        Type& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Type& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_Type_Check (pyob);
-        }
-    };
-
-
-    //
-    //    Convert an owned Python pointer into a CXX Object
-    //
-    inline Object asObject (PyObject *p)
-    {
-        return Object(p, true);
-    }
-
-    // ===============================================
-    // class boolean
-    class Boolean: public Object
-    {
-    public:
-        // Constructor
-        Boolean (PyObject *pyob, bool owned = false)
-        : Object (pyob, owned)
-        {
-            validate();
-        }
-
-        Boolean (const Boolean& ob): Object(*ob)
-        {
-            validate();
-        }
-
-        // create from bool
-        Boolean (bool v=false)
-        {
-            set(PyBool_FromLong(v ? 1 : 0), true);
-            validate();
-        }
-
-        explicit Boolean (const Object& ob)
-        : Object( *ob )
-        {
-            validate();
-        }
-
-        // Assignment increases reference count on pointer
-
-        Boolean& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Boolean& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && PyObject_IsTrue(pyob) != -1;
-        }
-
-        // convert to long
-        operator bool() const
-        {
-            return PyObject_IsTrue (ptr()) != 0;
-        }
-
-        Boolean& operator= (bool v)
-        {
-            set (PyBool_FromLong (v ? 1 : 0), true);
-            return *this;
-        }
-    };
-
-    // ===============================================
-    // class Int
-    class Int: public Object
-    {
-    public:
-        // Constructor
-        Int (PyObject *pyob, bool owned = false): Object (pyob, owned)
-        {
-            validate();
-        }
-
-        Int (const Int& ob): Object(*ob)
-        {
-            validate();
-        }
-
-        // create from long
-        Int (long v = 0L): Object(PyInt_FromLong(v), true)
-        {
-            validate();
-        }
-
-        // create from int
-        Int (int v)
-        {
-            long w = v;
-            set(PyInt_FromLong(w), true);
-            validate();
-        }
-
-        // create from bool
-        Int (bool v)
-        {
-            long w = v ? 1 : 0;
-            set(PyInt_FromLong(w), true);
-            validate();
-        }
-
-        explicit Int (const Object& ob)
-        {
-            set(PyNumber_Int(*ob), true);
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-
-        Int& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Int& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (PyNumber_Int(rhsp), true);
-            return *this;
-        }
-
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_Int_Check (pyob);
-        }
-
-        // convert to long
-        operator long() const
-        {
-            return PyInt_AsLong (ptr());
-        }
-
-#ifdef HAVE_LONG_LONG
-        // convert to long long
-        PY_LONG_LONG asLongLong() const
-        {
-            return PyLong_AsLongLong (ptr());
-        }
-        // convert to unsigned long long
-        unsigned PY_LONG_LONG asUnsignedLongLong() const
-        {
-            return PyLong_AsUnsignedLongLong (ptr());
-        }
-#endif
-
-        // assign from an int
-        Int& operator= (int v)
-        {
-            set (PyInt_FromLong (long(v)), true);
-            return *this;
-        }
-
-        // assign from long
-        Int& operator= (long v)
-        {
-            set (PyInt_FromLong (v), true);
-            return *this;
-        }
-
-#ifdef HAVE_LONG_LONG
-        // assign from long long
-        Int& operator= (PY_LONG_LONG v)
-        {
-            set (PyLong_FromLongLong (v), true);
-            return *this;
-        }
-        // assign from unsigned long long
-        Int& operator= (unsigned PY_LONG_LONG v)
-        {
-            set (PyLong_FromUnsignedLongLong (v), true);
-            return *this;
-        }
-#endif
-    };
-
-    // ===============================================
-    // class Long
-    class Long: public Object
-    {
-    public:
-        // Constructor
-        explicit Long (PyObject *pyob, bool owned = false): Object (pyob, owned)
-        {
-            validate();
-        }
-
-        Long (const Long& ob): Object(ob.ptr())
-        {
-            validate();
-        }
-
-        // create from long
-        explicit Long (long v = 0L)
-            : Object(PyLong_FromLong(v), true)
-        {
-            validate();
-        }
-        // create from unsigned long
-        explicit Long (unsigned long v)
-            : Object(PyLong_FromUnsignedLong(v), true)
-        {
-            validate();
-        }
-        // create from int
-        explicit Long (int v)
-            : Object(PyLong_FromLong(static_cast<long>(v)), true)
-        {
-            validate();
-        }
-
-        // try to create from any object
-        Long (const Object& ob)
-            : Object(PyNumber_Long(*ob), true)
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-
-        Long& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Long& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (PyNumber_Long(rhsp), true);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_Long_Check (pyob);
-        }
-
-        // convert to long
-        long as_long() const
-        {
-            return PyLong_AsLong( ptr() );
-        }
-
-        // convert to long
-        operator long() const
-        {
-            return as_long();
-        }
-
-        // convert to unsigned
-        operator unsigned long() const
-        {
-            return PyLong_AsUnsignedLong (ptr());
-        }
-        operator double() const
-        {
-            return PyLong_AsDouble (ptr());
-        }
-        // assign from an int
-        Long& operator= (int v)
-        {
-            set(PyLong_FromLong (long(v)), true);
-            return *this;
-        }
-        // assign from long
-        Long& operator= (long v)
-        {
-            set(PyLong_FromLong (v), true);
-            return *this;
-        }
-        // assign from unsigned long
-        Long& operator= (unsigned long v)
-        {
-            set(PyLong_FromUnsignedLong (v), true);
-            return *this;
-        }
-    };
-
-#ifdef HAVE_LONG_LONG
-    // ===============================================
-    // class LongLong
-    class LongLong: public Object
-    {
-    public:
-        // Constructor
-        explicit LongLong (PyObject *pyob, bool owned = false): Object (pyob, owned)
-        {
-            validate();
-        }
-
-        LongLong (const LongLong& ob): Object(ob.ptr())
-        {
-            validate();
-        }
-        // create from long long
-        explicit LongLong (PY_LONG_LONG v = 0L)
-            : Object(PyLong_FromLongLong(v), true)
-        {
-            validate();
-        }
-        // create from unsigned long long
-        explicit LongLong (unsigned PY_LONG_LONG v)
-            : Object(PyLong_FromUnsignedLongLong(v), true)
-        {
-            validate();
-        }
-        // create from long
-        explicit LongLong (long v)
-            : Object(PyLong_FromLongLong(v), true)
-        {
-            validate();
-        }
-        // create from unsigned long
-        explicit LongLong (unsigned long v)
-            : Object(PyLong_FromUnsignedLongLong(v), true)
-        {
-            validate();
-        }
-        // create from int
-        explicit LongLong (int v)
-            : Object(PyLong_FromLongLong(static_cast<PY_LONG_LONG>(v)), true)
-        {
-            validate();
-        }
-
-        // try to create from any object
-        LongLong (const Object& ob)
-            : Object(PyNumber_Long(*ob), true)
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-
-        LongLong& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        LongLong& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (PyNumber_Long(rhsp), true);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_Long_Check (pyob);
-        }
-        // convert to long long
-        operator PY_LONG_LONG() const
-        {
-            return PyLong_AsLongLong (ptr());
-        }
-        // convert to unsigned long
-        operator unsigned PY_LONG_LONG() const
-        {
-            return PyLong_AsUnsignedLongLong (ptr());
-        }
-        // convert to long
-        operator long() const
-        {
-            return PyLong_AsLong (ptr());
-        }
-        // convert to unsigned
-        operator unsigned long() const
-        {
-            return PyLong_AsUnsignedLong (ptr());
-        }
-        operator double() const
-        {
-            return PyLong_AsDouble (ptr());
-        }
-        // assign from an int
-        LongLong& operator= (int v)
-        {
-            set(PyLong_FromLongLong (long(v)), true);
-            return *this;
-        }
-        // assign from long long
-        LongLong& operator= (PY_LONG_LONG v)
-        {
-            set(PyLong_FromLongLong (v), true);
-            return *this;
-        }
-        // assign from unsigned long long
-        LongLong& operator= (unsigned PY_LONG_LONG v)
-        {
-            set(PyLong_FromUnsignedLongLong (v), true);
-            return *this;
-        }
-        // assign from long
-        LongLong& operator= (long v)
-        {
-            set(PyLong_FromLongLong (v), true);
-            return *this;
-        }
-        // assign from unsigned long
-        LongLong& operator= (unsigned long v)
-        {
-            set(PyLong_FromUnsignedLongLong (v), true);
-            return *this;
-        }
-    };
-#endif
-
-    // ===============================================
-    // class Float
-    //
-    class Float: public Object
-    {
-    public:
-        // Constructor
-        explicit Float (PyObject *pyob, bool owned = false): Object(pyob, owned)
-        {
-            validate();
-        }
-
-        Float (const Float& f): Object(f)
-        {
-            validate();
-        }
-
-        // make from double
-        explicit Float (double v=0.0)
-            : Object(PyFloat_FromDouble (v), true)
-        {
-            validate();
-        }
-
-        // try to make from any object
-        Float (const Object& ob)
-            : Object(PyNumber_Float(*ob), true)
-        {
-            validate();
-        }
-
-        Float& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Float& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (PyNumber_Float(rhsp), true);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_Float_Check (pyob);
-        }
-        // convert to double
-        operator double () const
-        {
-            return PyFloat_AsDouble (ptr());
-        }
-        // assign from a double
-        Float& operator= (double v)
-        {
-            set(PyFloat_FromDouble (v), true);
-            return *this;
-        }
-        // assign from an int
-        Float& operator= (int v)
-        {
-            set(PyFloat_FromDouble (double(v)), true);
-            return *this;
-        }
-        // assign from long
-        Float& operator= (long v)
-        {
-            set(PyFloat_FromDouble (double(v)), true);
-            return *this;
-        }
-        // assign from an Int
-        Float& operator= (const Int& iob)
-        {
-            set(PyFloat_FromDouble (double(long(iob))), true);
-            return *this;
-        }
-    };
-
-    // ===============================================
-    // class Complex
-    class Complex: public Object
-    {
-    public:
-        // Constructor
-        explicit Complex (PyObject *pyob, bool owned = false): Object(pyob, owned)
-        {
-            validate();
-        }
-
-        Complex (const Complex& f): Object(f)
-        {
-            validate();
-        }
-
-        // make from double
-        explicit Complex (double v=0.0, double w=0.0)
-            :Object(PyComplex_FromDoubles (v, w), true)
-        {
-            validate();
-        }
-
-        Complex& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Complex& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_Complex_Check (pyob);
-        }
-        // convert to Py_complex
-        operator Py_complex () const
-        {
-            return PyComplex_AsCComplex (ptr());
-        }
-        // assign from a Py_complex
-        Complex& operator= (const Py_complex& v)
-        {
-            set(PyComplex_FromCComplex (v), true);
-            return *this;
-        }
-        // assign from a double
-        Complex& operator= (double v)
-        {
-            set(PyComplex_FromDoubles (v, 0.0), true);
-            return *this;
-        }
-        // assign from an int
-        Complex& operator= (int v)
-        {
-            set(PyComplex_FromDoubles (double(v), 0.0), true);
-            return *this;
-        }
-        // assign from long
-        Complex& operator= (long v)
-        {
-            set(PyComplex_FromDoubles (double(v), 0.0), true);
-            return *this;
-        }
-        // assign from an Int
-        Complex& operator= (const Int& iob)
-        {
-            set(PyComplex_FromDoubles (double(long(iob)), 0.0), true);
-            return *this;
-        }
-
-        double real() const
-        {
-            return PyComplex_RealAsDouble(ptr());
-        }
-
-        double imag() const
-        {
-            return PyComplex_ImagAsDouble(ptr());
-        }
-    };
-    // Sequences
-    // Sequences are here represented as sequences of items of type T.
-    // The base class SeqBase<T> represents that.
-    // In basic Python T is always "Object".
-
-    // seqref<T> is what you get if you get elements from a non-const SeqBase<T>.
-    // Note: seqref<T> could probably be a nested class in SeqBase<T> but that might stress
-    // some compilers needlessly. Simlarly for mapref later.
-
-    // While this class is not intended for enduser use, it needs some public
-    // constructors for the benefit of the STL.
-
-    // See Scott Meyer's More Essential C++ for a description of proxies.
-    // This application is even more complicated. We are doing an unusual thing
-    // in having a double proxy. If we want the STL to work
-    // properly we have to compromise by storing the rvalue inside. The
-    // entire Object API is repeated so that things like s[i].isList() will
-    // work properly.
-
-    // Still, once in a while a weird compiler message may occur using expressions like x[i]
-    // Changing them to Object(x[i]) helps the compiler to understand that the
-    // conversion of a seqref to an Object is wanted.
-
-    template<TEMPLATE_TYPENAME T>
-    class seqref
-    {
-    protected:
-        SeqBase<T>& s; // the sequence
-        int offset; // item number
-        T the_item; // lvalue
-    public:
-
-        seqref (SeqBase<T>& seq, sequence_index_type j)
-            : s(seq), offset(j), the_item (s.getItem(j))
-        {}
-
-        seqref (const seqref<T>& range)
-            : s(range.s), offset(range.offset), the_item(range.the_item)
-        {}
-
-        // TMM: added this seqref ctor for use with STL algorithms
-        seqref (Object& obj)
-            : s(dynamic_cast< SeqBase<T>&>(obj))
-            , offset( NULL )
-            , the_item(s.getItem(offset))
-        {}
-        ~seqref()
-        {}
-
-        operator T() const
-        { // rvalue
-            return the_item;
-        }
-
-        seqref<T>& operator=(const seqref<T>& rhs)
-        { //used as lvalue
-            the_item = rhs.the_item;
-            s.setItem(offset, the_item);
-            return *this;
-        }
-
-        seqref<T>& operator=(const T& ob)
-        { // used as lvalue
-            the_item = ob;
-            s.setItem(offset, ob);
-            return *this;
-        }
-
-        // forward everything else to the item
-        PyObject* ptr () const
-        {
-            return the_item.ptr();
-        }
-
-        int reference_count () const
-        { // the reference count
-            return the_item.reference_count();
-        }
-
-        Type type () const
-        {
-            return the_item.type();
-        }
-
-        String str () const;
-
-        String repr () const;
-
-        bool hasAttr (const std::string& attr_name) const
-        {
-            return the_item.hasAttr(attr_name);
-        }
-
-        Object getAttr (const std::string& attr_name) const
-        {
-            return the_item.getAttr(attr_name);
-        }
-
-        Object getItem (const Object& key) const
-        {
-            return the_item.getItem(key);
-        }
-
-        long hashValue () const
-        {
-            return the_item.hashValue();
-        }
-
-        bool isCallable () const
-        {
-            return the_item.isCallable();
-        }
-
-        bool isInstance () const
-        {
-            return the_item.isInstance();
-        }
-
-        bool isDict () const
-        {
-            return the_item.isDict();
-        }
-
-        bool isList () const
-        {
-            return the_item.isList();
-        }
-
-        bool isMapping () const
-        {
-            return the_item.isMapping();
-        }
-
-        bool isNumeric () const
-        {
-            return the_item.isNumeric();
-        }
-
-        bool isSequence () const
-        {
-            return the_item.isSequence();
-        }
-
-        bool isTrue () const
-        {
-            return the_item.isTrue();
-        }
-
-        bool isType (const Type& t) const
-        {
-            return the_item.isType (t);
-        }
-
-        bool isTuple() const
-        {
-            return the_item.isTuple();
-        }
-
-        bool isString() const
-        {
-            return the_item.isString();
-        }
-        // Commands
-        void setAttr (const std::string& attr_name, const Object& value)
-        {
-            the_item.setAttr(attr_name, value);
-        }
-
-        void delAttr (const std::string& attr_name)
-        {
-            the_item.delAttr(attr_name);
-        }
-
-        void delItem (const Object& key)
-        {
-            the_item.delItem(key);
-        }
-
-        bool operator==(const Object& o2) const
-        {
-            return the_item == o2;
-        }
-
-        bool operator!=(const Object& o2) const
-        {
-            return the_item != o2;
-        }
-
-        bool operator>=(const Object& o2) const
-        {
-            return the_item >= o2;
-        }
-
-        bool operator<=(const Object& o2) const
-        {
-            return the_item <= o2;
-        }
-
-        bool operator<(const Object& o2) const
-        {
-            return the_item < o2;
-        }
-
-        bool operator>(const Object& o2) const
-        {
-            return the_item > o2;
-        }
-    }; // end of seqref
-
-
-    // class SeqBase<T>
-    // ...the base class for all sequence types
-
-    template<TEMPLATE_TYPENAME T>
-    class SeqBase: public Object
-    {
-    public:
-        // STL definitions
-        typedef size_t size_type;
-        typedef seqref<T> reference;
-        typedef T const_reference;
-        typedef seqref<T>* pointer;
-        typedef int difference_type;
-        typedef T value_type;        // TMM: 26Jun'01
-
-        virtual size_type max_size() const
-        {
-            return std::string::npos; // ?
-        }
-
-        virtual size_type capacity() const
-        {
-            return size();
-        }
-
-        virtual void swap(SeqBase<T>& c)
-        {
-            SeqBase<T> temp = c;
-            c = ptr();
-            set(temp.ptr());
-        }
-
-        virtual size_type size () const
-        {
-            return PySequence_Length (ptr());
-        }
-
-        explicit SeqBase<T> ()
-            :Object(PyTuple_New(0), true)
-        {
-            validate();
-        }
-
-        explicit SeqBase<T> (PyObject* pyob, bool owned=false)
-            : Object(pyob, owned)
-        {
-            validate();
-        }
-
-        SeqBase<T> (const Object& ob): Object(ob)
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-
-        SeqBase<T>& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        SeqBase<T>& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && PySequence_Check (pyob);
-        }
-
-        size_type length () const
-        {
-            return PySequence_Length (ptr());
-        }
-
-        // Element access
-        const T operator[](sequence_index_type index) const
-        {
-            return getItem(index);
-        }
-
-        seqref<T> operator[](sequence_index_type index)
-        {
-            return seqref<T>(*this, index);
-        }
-
-        virtual T getItem (sequence_index_type i) const
-        {
-            return T(asObject(PySequence_GetItem (ptr(), i)));
-        }
-
-        virtual void setItem (sequence_index_type i, const T& ob)
-        {
-            if (PySequence_SetItem (ptr(), i, *ob) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        SeqBase<T> repeat (int count) const
-        {
-            return SeqBase<T> (PySequence_Repeat (ptr(), count), true);
-        }
-
-        SeqBase<T> concat (const SeqBase<T>& other) const
-        {
-            return SeqBase<T> (PySequence_Concat(ptr(), *other), true);
-        }
-
-        // more STL compatability
-        const T front () const
-        {
-            return getItem(0);
-        }
-
-        seqref<T> front()
-        {
-            return seqref<T>(*this, 0);
-        }
-
-        const T back() const
-        {
-            return getItem(size()-1);
-        }
-
-        seqref<T> back()
-        {
-            return seqref<T>(*this, size()-1);
-        }
-
-        void verify_length(size_type required_size) const
-        {
-            if (size() != required_size)
-                throw IndexError ("Unexpected SeqBase<T> length.");
-        }
-
-        void verify_length(size_type min_size, size_type max_size) const
-        {
-            size_type n = size();
-            if (n < min_size || n > max_size)
-                throw IndexError ("Unexpected SeqBase<T> length.");
-        }
-
-        class iterator
-            : public random_access_iterator_parent(seqref<T>)
-        {
-        protected:
-            friend class SeqBase<T>;
-            SeqBase<T>* seq;
-            int count;
-
-        public:
-            ~iterator ()
-            {}
-
-            iterator ()
-                : seq( 0 )
-                , count( 0 )
-            {}
-
-            iterator (SeqBase<T>* s, int where)
-                : seq( s )
-                , count( where )
-            {}
-
-            iterator (const iterator& other)
-                : seq( other.seq )
-                , count( other.count )
-            {}
-
-            bool eql (const iterator& other) const
-            {
-                return (seq->ptr() == other.seq->ptr()) && (count == other.count);
-            }
-
-            bool neq (const iterator& other) const
-            {
-                return (seq->ptr() != other.seq->ptr()) || (count != other.count);
-            }
-
-            bool lss (const iterator& other) const
-            {
-                return (count < other.count);
-            }
-
-            bool gtr (const iterator& other) const
-            {
-                return (count > other.count);
-            }
-
-            bool leq (const iterator& other) const
-            {
-                return (count <= other.count);
-            }
-
-            bool geq (const iterator& other) const
-            {
-                return (count >= other.count);
-            }
-
-            seqref<T> operator*()
-            {
-                return seqref<T>(*seq, count);
-            }
-
-            seqref<T> operator[] (sequence_index_type i)
-            {
-                return seqref<T>(*seq, count + i);
-            }
-
-            iterator& operator=(const iterator& other)
-            {
-                if (this == &other) return *this;
-                seq = other.seq;
-                count = other.count;
-                return *this;
-            }
-
-            iterator operator+(int n) const
-            {
-                return iterator(seq, count + n);
-            }
-
-            iterator operator-(int n) const
-            {
-                return iterator(seq, count - n);
-            }
-
-            iterator& operator+=(int n)
-            {
-                count = count + n;
-                return *this;
-            }
-
-            iterator& operator-=(int n)
-            {
-                count = count - n;
-                return *this;
-            }
-
-            int operator-(const iterator& other) const
-            {
-                if (*seq != *other.seq)
-                    throw RuntimeError ("SeqBase<T>::iterator comparison error");
-                return count - other.count;
-            }
-
-            // prefix ++
-            iterator& operator++ ()
-            { count++; return *this;}
-            // postfix ++
-            iterator operator++ (int)
-            { return iterator(seq, count++);}
-            // prefix --
-            iterator& operator-- ()
-            { count--; return *this;}
-            // postfix --
-            iterator operator-- (int)
-            { return iterator(seq, count--);}
-
-            std::string diagnose() const
-            {
-                std::OSTRSTREAM oss;
-                oss << "iterator diagnosis " << seq << ", " << count << std::ends;
-                return std::string(oss.str());
-            }
-        };    // end of class SeqBase<T>::iterator
-
-        iterator begin ()
-        {
-            return iterator(this, 0);
-        }
-
-        iterator end ()
-        {
-            return iterator(this, length());
-        }
-
-        class const_iterator
-            : public random_access_iterator_parent(const Object)
-        {
-        protected:
-            friend class SeqBase<T>;
-            const SeqBase<T>* seq;
-            sequence_index_type count;
-
-        private:
-            const_iterator (const SeqBase<T>* s, int where)
-                : seq( s )
-                , count( where )
-            {}
-
-        public:
-            ~const_iterator ()
-            {}
-
-            const_iterator ()
-                : seq( 0 )
-                , count( 0 )
-            {}
-
-            const_iterator(const const_iterator& other)
-                : seq( other.seq )
-                , count( other.count )
-            {}
-
-            const T operator*() const
-            {
-                return seq->getItem(count);
-            }
-
-            const T operator[] (sequence_index_type i) const
-            {
-                return seq->getItem(count + i);
-            }
-
-            const_iterator& operator=(const const_iterator& other)
-            {
-                if (this == &other) return *this;
-                seq = other.seq;
-                count = other.count;
-                return *this;
-            }
-
-            const_iterator operator+(int n) const
-            {
-                return const_iterator(seq, count + n);
-            }
-
-            bool eql (const const_iterator& other) const
-            {
-                return (seq->ptr() == other.seq->ptr()) && (count == other.count);
-            }
-
-            bool neq (const const_iterator& other) const
-            {
-                return (seq->ptr() != other.seq->ptr()) || (count != other.count);
-            }
-
-            bool lss (const const_iterator& other) const
-            {
-                return (count < other.count);
-            }
-
-            bool gtr (const const_iterator& other) const
-            {
-                return (count > other.count);
-            }
-
-            bool leq (const const_iterator& other) const
-            {
-                return (count <= other.count);
-            }
-
-            bool geq (const const_iterator& other) const
-            {
-                return (count >= other.count);
-            }
-
-            const_iterator operator-(int n)
-            {
-                return const_iterator(seq, count - n);
-            }
-
-            const_iterator& operator+=(int n)
-            {
-                count = count + n;
-                return *this;
-            }
-
-            const_iterator& operator-=(int n)
-            {
-                count = count - n;
-                return *this;
-            }
-
-            int operator-(const const_iterator& other) const
-            {
-                if (*seq != *other.seq)
-                throw RuntimeError ("SeqBase<T>::const_iterator::- error");
-                return count - other.count;
-            }
-            // prefix ++
-            const_iterator& operator++ ()
-            { count++; return *this;}
-            // postfix ++
-            const_iterator operator++ (int)
-            { return const_iterator(seq, count++);}
-            // prefix --
-            const_iterator& operator-- ()
-            { count--; return *this;}
-            // postfix --
-            const_iterator operator-- (int)
-            { return const_iterator(seq, count--);}
-        };    // end of class SeqBase<T>::const_iterator
-
-        const_iterator begin () const
-        {
-            return const_iterator(this, 0);
-        }
-
-        const_iterator end () const
-        {
-            return const_iterator(this, length());
-        }
-    };
-
-    // Here's an important typedef you might miss if reading too fast...
-    typedef SeqBase<Object> Sequence;
-
-    template <TEMPLATE_TYPENAME T> bool operator==(const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator!=(const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator< (const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator> (const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator<=(const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator>=(const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-
-    template <TEMPLATE_TYPENAME T> bool operator==(const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator!=(const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator< (const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator> (const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator<=(const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator>=(const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right); 
-
-    extern bool operator==(const Sequence::iterator& left, const Sequence::iterator& right);
-    extern bool operator!=(const Sequence::iterator& left, const Sequence::iterator& right);
-    extern bool operator< (const Sequence::iterator& left, const Sequence::iterator& right);
-    extern bool operator> (const Sequence::iterator& left, const Sequence::iterator& right);
-    extern bool operator<=(const Sequence::iterator& left, const Sequence::iterator& right);
-    extern bool operator>=(const Sequence::iterator& left, const Sequence::iterator& right);
-
-    extern bool operator==(const Sequence::const_iterator& left, const Sequence::const_iterator& right);
-    extern bool operator!=(const Sequence::const_iterator& left, const Sequence::const_iterator& right);
-    extern bool operator< (const Sequence::const_iterator& left, const Sequence::const_iterator& right);
-    extern bool operator> (const Sequence::const_iterator& left, const Sequence::const_iterator& right);
-    extern bool operator<=(const Sequence::const_iterator& left, const Sequence::const_iterator& right);
-    extern bool operator>=(const Sequence::const_iterator& left, const Sequence::const_iterator& right); 
-
-    // ==================================================
-    // class Char
-    // Python strings return strings as individual elements.
-    // I'll try having a class Char which is a String of length 1
-    //
-    typedef std::basic_string<Py_UNICODE> unicodestring;
-    extern Py_UNICODE unicode_null_string[1];
-
-    class Char: public Object
-    {
-    public:
-        explicit Char (PyObject *pyob, bool owned = false): Object(pyob, owned)
-        {
-            validate();
-        }
-
-        Char (const Object& ob): Object(ob)
-        {
-            validate();
-        }
-
-        Char (const std::string& v = "")
-            :Object(PyString_FromStringAndSize (const_cast<char*>(v.c_str()),1), true)
-        {
-            validate();
-        }
-
-        Char (char v)
-            : Object(PyString_FromStringAndSize (&v, 1), true)
-        {
-            validate();
-        }
-
-        Char (Py_UNICODE v)
-            : Object(PyUnicode_FromUnicode (&v, 1), true)
-        {
-            validate();
-        }
-        // Assignment acquires new ownership of pointer
-        Char& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Char& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && (Py::_String_Check(pyob) || Py::_Unicode_Check(pyob)) && PySequence_Length (pyob) == 1;
-        }
-
-        // Assignment from C string
-        Char& operator= (const std::string& v)
-        {
-            set(PyString_FromStringAndSize (const_cast<char*>(v.c_str()),1), true);
-            return *this;
-        }
-
-        Char& operator= (char v)
-        {
-            set(PyString_FromStringAndSize (&v, 1), true);
-            return *this;
-        }
-
-        Char& operator= (const unicodestring& v)
-        {
-            set(PyUnicode_FromUnicode (const_cast<Py_UNICODE*>(v.data()),1), true);
-            return *this;
-        }
-
-        Char& operator= (Py_UNICODE v)
-        {
-            set(PyUnicode_FromUnicode (&v, 1), true);
-            return *this;
-        }
-
-        // Conversion
-        operator String() const;
-
-        operator std::string () const
-        {
-            return std::string(PyString_AsString (ptr()));
-        }
-    };
-
-#ifdef PYCXX_PYTHON_2TO3
-    // String and Bytes compatible with Python3 version in 6.0.0 PyCXX
-    class Bytes;
-
-    class String: public SeqBase<Char>
-    {
-    public:
-        virtual size_type capacity() const
-        {
-            return max_size();
-        }
-
-        explicit String( PyObject *pyob, bool owned = false)
-        : SeqBase<Char>( pyob, owned )
-        {
-            validate();
-        }
-
-        String( const Object& ob): SeqBase<Char>(ob)
-        {
-            validate();
-        }
-
-        String()
-        : SeqBase<Char>( PyString_FromStringAndSize( "", 0 ), true )
-        {
-            validate();
-        }
-
-        String( const std::string& v )
-        : SeqBase<Char>( PyString_FromStringAndSize( const_cast<char*>(v.data()),
-                static_cast<int>( v.length() ) ), true )
-        {
-            validate();
-        }
-
-        String( const Py_UNICODE *s, int length )
-        : SeqBase<Char>( PyUnicode_FromUnicode( s, length ), true )
-        {
-            validate();
-        }
-
-        String( const char *s, const char *encoding, const char *error="strict" )
-        : SeqBase<Char>( PyUnicode_Decode( s, strlen( s ), encoding, error ), true )
-        {
-            validate();
-        }
-
-        String( const char *s, int len, const char *encoding, const char *error="strict" )
-        : SeqBase<Char>( PyUnicode_Decode( s, len, encoding, error ), true )
-        {
-            validate();
-        }
-
-        String( const std::string &s, const char *encoding, const char *error="strict" )
-        : SeqBase<Char>( PyUnicode_Decode( s.c_str(), s.length(), encoding, error ), true )
-        {
-            validate();
-        }
-
-        String( const char *v, int vsize )
-        : SeqBase<Char>(PyString_FromStringAndSize( const_cast<char*>(v), vsize ), true )
-        {
-            validate();
-        }
-
-        String( const char *v )
-        : SeqBase<Char>( PyString_FromString( v ), true )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        String &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        String& operator= (PyObject *rhsp)
-        {
-            if( ptr() == rhsp )
-                return *this;
-            set (rhsp);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && (Py::_String_Check(pyob) || Py::_Unicode_Check(pyob));
-        }
-
-        // Assignment from C string
-        String& operator=( const std::string &v )
-        {
-            set( PyString_FromStringAndSize( const_cast<char*>( v.data() ),
-                    static_cast<int>( v.length() ) ), true );
-            return *this;
-        }
-        String& operator=( const unicodestring &v )
-        {
-            set( PyUnicode_FromUnicode( const_cast<Py_UNICODE*>( v.data() ),
-                    static_cast<int>( v.length() ) ), true );
-            return *this;
-        }
-
-        // Encode
-        Bytes encode( const char *encoding, const char *error="strict" ) const;
-
-        // Queries
-        virtual size_type size() const
-        {
-            if( isUnicode() )
-            {
-                return static_cast<size_type>( PyUnicode_GET_SIZE (ptr()) );
-            }
-            else
-            {
-                return static_cast<size_type>( PyString_Size (ptr()) );
-            }
-        }
-
-        operator std::string() const
-        {
-            return as_std_string( "utf-8" );
-        }
-
-        std::string as_std_string( const char *encoding, const char *error="strict" ) const;
-
-        unicodestring as_unicodestring() const
-        {
-            if( isUnicode() )
-            {
-                return unicodestring( PyUnicode_AS_UNICODE( ptr() ),
-                    static_cast<size_type>( PyUnicode_GET_SIZE( ptr() ) ) );
-            }
-            else
-            {
-                throw TypeError("can only return unicodestring from Unicode object");
-            }
-        }
-
-        const Py_UNICODE *unicode_data() const
-        {
-            if( isUnicode() )
-            {
-                return PyUnicode_AS_UNICODE( ptr() );
-            }
-            else
-            {
-                throw TypeError("can only return unicode_data from Unicode object");
-            }
-        }
-    };
-    class Bytes: public SeqBase<Char>
-    {
-    public:
-        virtual size_type capacity() const
-        {
-            return max_size();
-        }
-
-        explicit Bytes (PyObject *pyob, bool owned = false): SeqBase<Char>(pyob, owned)
-        {
-            validate();
-        }
-
-        Bytes (const Object& ob): SeqBase<Char>(ob)
-        {
-            validate();
-        }
-
-        Bytes()
-        : SeqBase<Char>( PyString_FromStringAndSize( "", 0 ), true )
-        {
-            validate();
-        }
-
-        Bytes( const std::string& v )
-        : SeqBase<Char>( PyString_FromStringAndSize( const_cast<char*>(v.data()), static_cast<int>( v.length() ) ), true )
-        {
-            validate();
-        }
-
-        Bytes( const char *v, int vsize )
-        : SeqBase<Char>(PyString_FromStringAndSize( const_cast<char*>(v), vsize ), true )
-        {
-            validate();
-        }
-
-        Bytes( const char *v )
-        : SeqBase<Char>( PyString_FromString( v ), true )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        Bytes &operator= ( const Object& rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Bytes &operator= (PyObject *rhsp)
-        {
-            if( ptr() == rhsp )
-                return *this;
-            set (rhsp);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && (Py::_String_Check( pyob ) || Py::_Unicode_Check( pyob ));
-        }
-
-        // Assignment from C string
-        Bytes &operator= (const std::string& v)
-        {
-            set( PyString_FromStringAndSize( const_cast<char*>( v.data() ),
-                    static_cast<int>( v.length() ) ), true );
-            return *this;
-        }
-        Bytes &operator= (const unicodestring& v)
-        {
-            set( PyUnicode_FromUnicode( const_cast<Py_UNICODE*>( v.data() ),
-                    static_cast<int>( v.length() ) ), true );
-            return *this;
-        }
-
-        String decode( const char *encoding, const char *error="strict" )
-        {
-            return Object( PyString_AsDecodedObject( ptr(), encoding, error ) );
-        }
-
-        // Queries
-        virtual size_type size () const
-        {
-            if( isUnicode() )
-            {
-                return static_cast<size_type>( PyUnicode_GET_SIZE (ptr()) );
-            }
-            else
-            {
-                return static_cast<size_type>( PyString_Size (ptr()) );
-            }
-        }
-
-        operator std::string () const
-        {
-            return as_std_string();
-        }
-
-        std::string as_std_string() const
-        {
-            if( isUnicode() )
-            {
-                throw TypeError("cannot return std::string from Unicode object");
-            }
-            else
-            {
-                return std::string( PyString_AsString( ptr() ), static_cast<size_type>( PyString_Size( ptr() ) ) );
-            }
-        }
-
-        unicodestring as_unicodestring() const
-        {
-            if( isUnicode() )
-            {
-                return unicodestring( PyUnicode_AS_UNICODE( ptr() ),
-                    static_cast<size_type>( PyUnicode_GET_SIZE( ptr() ) ) );
-            }
-            else
-            {
-                throw TypeError("can only return unicodestring from Unicode object");
-            }
-        }
-    };
-
-#else
-    // original PyCXX 5.4.x version of String
-    class String: public SeqBase<Char>
-    {
-    public:
-        virtual size_type capacity() const
-        {
-            return max_size();
-        }
-
-        explicit String (PyObject *pyob, bool owned = false): SeqBase<Char>(pyob, owned)
-        {
-            validate();
-        }
-
-        String (const Object& ob): SeqBase<Char>(ob)
-        {
-            validate();
-        }
-
-        String()
-            : SeqBase<Char>( PyString_FromStringAndSize( "", 0 ), true )
-        {
-            validate();
-        }
-
-        String( const std::string& v )
-            : SeqBase<Char>( PyString_FromStringAndSize( const_cast<char*>(v.data()),
-                static_cast<int>( v.length() ) ), true )
-        {
-            validate();
-        }
-
-        String( const char *s, const char *encoding, const char *error="strict" )
-            : SeqBase<Char>( PyUnicode_Decode( s, strlen( s ), encoding, error ), true )
-        {
-            validate();
-        }
-
-        String( const char *s, int len, const char *encoding, const char *error="strict" )
-            : SeqBase<Char>( PyUnicode_Decode( s, len, encoding, error ), true )
-        {
-            validate();
-        }
-
-        String( const std::string &s, const char *encoding, const char *error="strict" )
-            : SeqBase<Char>( PyUnicode_Decode( s.c_str(), s.length(), encoding, error ), true )
-        {
-            validate();
-        }
-
-        String( const char *v, int vsize )
-            : SeqBase<Char>(PyString_FromStringAndSize( const_cast<char*>(v), vsize ), true )
-        {
-            validate();
-        }
-
-        String( const char* v )
-            : SeqBase<Char>( PyString_FromString( v ), true )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        String& operator= ( const Object& rhs )
-        {
-            return *this = *rhs;
-        }
-
-        String& operator= (PyObject* rhsp)
-        {
-            if( ptr() == rhsp )
-                return *this;
-            set (rhsp);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && (Py::_String_Check(pyob) || Py::_Unicode_Check(pyob));
-        }
-
-        // Assignment from C string
-        String& operator= (const std::string& v)
-        {
-            set( PyString_FromStringAndSize( const_cast<char*>( v.data() ),
-                    static_cast<int>( v.length() ) ), true );
-            return *this;
-        }
-        String& operator= (const unicodestring& v)
-        {
-            set( PyUnicode_FromUnicode( const_cast<Py_UNICODE*>( v.data() ),
-                    static_cast<int>( v.length() ) ), true );
-            return *this;
-        }
-
-
-        // Encode
-        String encode( const char *encoding, const char *error="strict" ) const
-        {
-            if( isUnicode() )
-            {
-                return String( PyUnicode_AsEncodedString( ptr(), encoding, error ) );
-            }
-            else
-            {
-                return String( PyString_AsEncodedObject( ptr(), encoding, error ) );
-            }
-        }
-
-        String decode( const char *encoding, const char *error="strict" )
-        {
-            return Object( PyString_AsDecodedObject( ptr(), encoding, error ) );
-        }
-
-        // Queries
-        virtual size_type size () const
-        {
-            if( isUnicode() )
-        {
-                return static_cast<size_type>( PyUnicode_GET_SIZE (ptr()) );
-        }
-            else
-        {
-                return static_cast<size_type>( PyString_Size (ptr()) );
-        }
-        }
-
-        operator std::string () const
-        {
-            return as_std_string();
-        }
-
-        std::string as_std_string() const
-        {
-            if( isUnicode() )
-            {
-                throw TypeError("cannot return std::string from Unicode object");
-            }
-            else
-            {
-                return std::string( PyString_AsString( ptr() ), static_cast<size_type>( PyString_Size( ptr() ) ) );
-            }
-        }
-
-        std::string as_std_string( const char *encoding, const char *error="strict" ) const;
-
-        unicodestring as_unicodestring() const
-        {
-            if( isUnicode() )
-            {
-                return unicodestring( PyUnicode_AS_UNICODE( ptr() ),
-                    static_cast<size_type>( PyUnicode_GET_SIZE( ptr() ) ) );
-            }
-            else
-            {
-                throw TypeError("can only return unicodestring from Unicode object");
-            }
-        }
-    };
-#endif
-
-    // ==================================================
-    // class Tuple
-    class Tuple: public Sequence
-    {
-    public:
-        virtual void setItem (sequence_index_type offset, const Object&ob)
-        {
-            // note PyTuple_SetItem is a thief...
-            if(PyTuple_SetItem (ptr(), offset, new_reference_to(ob)) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        // Constructor
-        explicit Tuple (PyObject *pyob, bool owned = false): Sequence (pyob, owned)
-        {
-            validate();
-        }
-
-        Tuple (const Object& ob): Sequence(ob)
-        {
-            validate();
-        }
-
-        // New tuple of a given size
-        explicit Tuple (int size = 0)
-        {
-            set(PyTuple_New (size), true);
-            validate ();
-            for (sequence_index_type i=0; i < size; i++)
-            {
-                if(PyTuple_SetItem (ptr(), i, new_reference_to(Py::_None())) == -1)
-                {
-                    throw Exception();
-                }
-            }
-        }
-        // Tuple from any sequence
-        explicit Tuple (const Sequence& s)
-        {
-            sequence_index_type limit( sequence_index_type( s.length() ) );
-
-            set(PyTuple_New (limit), true);
-            validate();
-            
-            for(sequence_index_type i=0; i < limit; i++)
-            {
-                if(PyTuple_SetItem (ptr(), i, new_reference_to(s[i])) == -1)
-                {
-                    throw Exception();
-                }
-            }
-        }
-        // Assignment acquires new ownership of pointer
-
-        Tuple& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Tuple& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_Tuple_Check (pyob);
-        }
-
-        Tuple getSlice (int i, int j) const
-        {
-            return Tuple (PySequence_GetSlice (ptr(), i, j), true);
-        }
-
-    };
-
-    class TupleN: public Tuple
-    {
-    public:
-        TupleN()
-        : Tuple( 0 )
-        {
-        }
-
-        TupleN( const Object &obj1 )
-        : Tuple( 1 )
-        {
-            setItem( 0, obj1 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2 )
-        : Tuple( 2 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3 )
-        : Tuple( 3 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4 )
-        : Tuple( 4 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5 )
-        : Tuple( 5 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5, const Object &obj6 )
-        : Tuple( 6 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-            setItem( 5, obj6 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5, const Object &obj6,
-                const Object &obj7 )
-        : Tuple( 7 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-            setItem( 5, obj6 );
-            setItem( 6, obj7 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5, const Object &obj6,
-                const Object &obj7, const Object &obj8 )
-        : Tuple( 8 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-            setItem( 5, obj6 );
-            setItem( 6, obj7 );
-            setItem( 7, obj8 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5, const Object &obj6,
-                const Object &obj7, const Object &obj8, const Object &obj9 )
-        : Tuple( 9 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-            setItem( 5, obj6 );
-            setItem( 6, obj7 );
-            setItem( 7, obj8 );
-            setItem( 8, obj9 );
-        }
-
-        virtual ~TupleN()
-        { }
-    };
-
-
-    // ==================================================
-    // class List
-
-    class List: public Sequence
-    {
-    public:
-        // Constructor
-        explicit List (PyObject *pyob, bool owned = false): Sequence(pyob, owned)
-        {
-            validate();
-        }
-        List (const Object& ob): Sequence(ob)
-        {
-            validate();
-        }
-        // Creation at a fixed size
-        List (int size = 0)
-        {
-            set(PyList_New (size), true);
-            validate();
-            for (sequence_index_type i=0; i < size; i++)
-            {
-                if(PyList_SetItem (ptr(), i, new_reference_to(Py::_None())) == -1)
-                {
-                    throw Exception();
-                }
-            }
-        }
-
-        // List from a sequence
-        List (const Sequence& s): Sequence()
-        {
-            int n = (int)s.length();
-            set(PyList_New (n), true);
-            validate();
-            for (sequence_index_type i=0; i < n; i++)
-            {
-                if(PyList_SetItem (ptr(), i, new_reference_to(s[i])) == -1)
-                {
-                    throw Exception();
-                }
-            }
-        }
-
-        virtual size_type capacity() const
-        {
-            return max_size();
-        }
-        // Assignment acquires new ownership of pointer
-
-        List& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        List& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_List_Check (pyob);
-        }
-
-        List getSlice (int i, int j) const
-        {
-            return List (PyList_GetSlice (ptr(), i, j), true);
-        }
-
-        void setSlice (int i, int j, const Object& v)
-        {
-            if(PyList_SetSlice (ptr(), i, j, *v) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        void append (const Object& ob)
-        {
-            if(PyList_Append (ptr(), *ob) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        void insert (int i, const Object& ob)
-        {
-            if(PyList_Insert (ptr(), i, *ob) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        void sort ()
-        {
-            if(PyList_Sort(ptr()) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        void reverse ()
-        {
-            if(PyList_Reverse(ptr()) == -1)
-            {
-                throw Exception();
-            }
-        }
-    };
-
-
-    // Mappings
-    // ==================================================
-    template<TEMPLATE_TYPENAME T>
-    class mapref
-    {
-    protected:
-        MapBase<T>& s; // the map
-        Object key; // item key
-        T the_item;
-
-    public:
-        mapref<T> (MapBase<T>& map, const std::string& k)
-            : s(map), the_item()
-        {
-            key = String(k);
-            if(map.hasKey(key)) the_item = map.getItem(key);
-        }
-
-        mapref<T> (MapBase<T>& map, const Object& k)
-            : s(map), key(k), the_item()
-        {
-            if(map.hasKey(key)) the_item = map.getItem(key);
-        }
-
-        virtual ~mapref<T>()
-        {}
-
-        // MapBase<T> stuff
-        // lvalue
-        mapref<T>& operator=(const mapref<T>& other)
-        {
-            if(this == &other) return *this;
-            the_item = other.the_item;
-            s.setItem(key, other.the_item);
-            return *this;
-        }
-
-        mapref<T>& operator= (const T& ob)
-        {
-            the_item = ob;
-            s.setItem (key, ob);
-            return *this;
-        }
-
-        // rvalue
-        operator T() const
-        {
-            return the_item;
-        }
-
-        // forward everything else to the_item
-        PyObject* ptr () const
-        {
-            return the_item.ptr();
-        }
-
-        int reference_count () const
-        { // the mapref count
-            return the_item.reference_count();
-        }
-
-        Type type () const
-        {
-            return the_item.type();
-        }
-
-        String str () const
-        {
-            return the_item.str();
-        }
-
-        String repr () const
-        {
-            return the_item.repr();
-        }
-
-        bool hasAttr (const std::string& attr_name) const
-        {
-            return the_item.hasAttr(attr_name);
-        }
-
-        Object getAttr (const std::string& attr_name) const
-        {
-            return the_item.getAttr(attr_name);
-        }
-
-        Object getItem (const Object& k) const
-        {
-            return the_item.getItem(k);
-        }
-
-        long hashValue () const
-        {
-            return the_item.hashValue();
-        }
-
-        bool isCallable () const
-        {
-            return the_item.isCallable();
-        }
-
-        bool isInstance () const
-        {
-            return the_item.isInstance();
-        }
-
-        bool isList () const
-        {
-            return the_item.isList();
-        }
-
-        bool isMapping () const
-        {
-            return the_item.isMapping();
-        }
-
-        bool isNumeric () const
-        {
-            return the_item.isNumeric();
-        }
-
-        bool isSequence () const
-        {
-            return the_item.isSequence();
-        }
-
-        bool isTrue () const
-        {
-            return the_item.isTrue();
-        }
-
-        bool isType (const Type& t) const
-        {
-            return the_item.isType (t);
-        }
-
-        bool isTuple() const
-        {
-            return the_item.isTuple();
-        }
-
-        bool isString() const
-        {
-            return the_item.isString();
-        }
-
-        // Commands
-        void setAttr (const std::string& attr_name, const Object& value)
-        {
-            the_item.setAttr(attr_name, value);
-        }
-
-        void delAttr (const std::string& attr_name)
-        {
-            the_item.delAttr(attr_name);
-        }
-
-        void delItem (const Object& k)
-        {
-            the_item.delItem(k);
-        }
-    }; // end of mapref
-
-    // TMM: now for mapref<T>
-    template< class T >
-    bool operator==(const mapref<T>& left, const mapref<T>& right)
-    {
-        return true;    // NOT completed.
-    }
-
-    template< class T >
-    bool operator!=(const mapref<T>& left, const mapref<T>& right)
-    {
-        return true;    // not completed.
-    }
-
-    template<TEMPLATE_TYPENAME T>
-    class MapBase: public Object
-    {
-    protected:
-        explicit MapBase<T>()
-        {}
-    public:
-        // reference: proxy class for implementing []
-        // TMM: 26Jun'01 - the types
-        // If you assume that Python mapping is a hash_map...
-        // hash_map::value_type is not assignable, but
-        // (*it).second = data must be a valid expression
-        typedef size_t size_type;
-        typedef Object key_type;
-        typedef mapref<T> data_type;
-        typedef std::pair< const T, T > value_type;
-        typedef std::pair< const T, mapref<T> > reference;
-        typedef const std::pair< const T, const T > const_reference;
-        typedef std::pair< const T, mapref<T> > pointer;
-
-        // Constructor
-        explicit MapBase<T> (PyObject *pyob, bool owned = false): Object(pyob, owned)
-        {
-            validate();
-        }
-
-        // TMM: 02Jul'01 - changed MapBase<T> to Object in next line
-        MapBase<T> (const Object& ob): Object(ob)
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        MapBase<T>& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        MapBase<T>& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && PyMapping_Check(pyob);
-        }
-
-        // Clear -- PyMapping Clear is missing
-        //
-
-        void clear ()
-        {
-            List k = keys();
-            for(List::iterator i = k.begin(); i != k.end(); i++)
-            {
-                delItem(*i);
-            }
-        }
-
-        virtual size_type size() const
-        {
-            return PyMapping_Length (ptr());
-        }
-
-        // Element Access
-        T operator[](const std::string& key) const
-        {
-            return getItem(key);
-        }
-
-        T operator[](const Object& key) const
-        {
-            return getItem(key);
-        }
-
-        mapref<T> operator[](const std::string& key)
-        {
-            return mapref<T>(*this, key);
-        }
-
-        mapref<T> operator[](const Object& key)
-        {
-            return mapref<T>(*this, key);
-        }
-
-        int length () const
-        {
-            return PyMapping_Length (ptr());
-        }
-
-        bool hasKey (const std::string& s) const
-        {
-            return PyMapping_HasKeyString (ptr(),const_cast<char*>(s.c_str())) != 0;
-        }
-
-        bool hasKey (const Object& s) const
-        {
-            return PyMapping_HasKey (ptr(), s.ptr()) != 0;
-        }
-
-        T getItem (const std::string& s) const
-        {
-            return T(
-            asObject(PyMapping_GetItemString (ptr(),const_cast<char*>(s.c_str())))
-            );
-        }
-
-        T getItem (const Object& s) const
-        {
-            return T(
-            asObject(PyObject_GetItem (ptr(), s.ptr()))
-            );
-        }
-
-        virtual void setItem (const char *s, const Object& ob)
-        {
-            if (PyMapping_SetItemString (ptr(), const_cast<char*>(s), *ob) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        virtual void setItem (const std::string& s, const Object& ob)
-        {
-            if (PyMapping_SetItemString (ptr(), const_cast<char*>(s.c_str()), *ob) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        virtual void setItem (const Object& s, const Object& ob)
-        {
-            if (PyObject_SetItem (ptr(), s.ptr(), ob.ptr()) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        void delItem (const std::string& s)
-        {
-            if (PyMapping_DelItemString (ptr(), const_cast<char*>(s.c_str())) == -1)
-            {
-                throw Exception();
-            }
-        }
-
-        void delItem (const Object& s)
-        {
-            if (PyMapping_DelItem (ptr(), *s) == -1)
-            {
-                throw Exception();
-            }
-        }
-        // Queries
-        List keys () const
-        {
-            return List(PyMapping_Keys(ptr()), true);
-        }
-
-        List values () const
-        { // each returned item is a (key, value) pair
-            return List(PyMapping_Values(ptr()), true);
-        }
-
-        List items () const
-        {
-            return List(PyMapping_Items(ptr()), true);
-        }
-
-        class iterator
-        {
-            // : public forward_iterator_parent( std::pair<const T,T> ) {
-        protected:
-            typedef std::forward_iterator_tag iterator_category;
-            typedef std::pair< const T, T > value_type;
-            typedef int difference_type;
-            typedef std::pair< const T, mapref<T> >    pointer;
-            typedef std::pair< const T, mapref<T> >    reference;
-
-            friend class MapBase<T>;
-            //
-            MapBase<T>* map;
-            List        keys;       // for iterating over the map
-            int         pos;        // index into the keys
-
-        private:
-            iterator( MapBase<T>* m, List k, int p )
-            : map( m )
-            , keys( k )
-            , pos( p )
-            {}
-
-        public:
-            ~iterator ()
-            {}
-
-            iterator ()
-                : map( 0 )
-                , keys()
-                , pos()
-            {}
-
-            iterator (MapBase<T>* m, bool end = false )
-                : map( m )
-                , keys( m->keys() )
-                , pos( end ? keys.length() : 0 )
-            {}
-
-            iterator (const iterator& other)
-                : map( other.map )
-                , keys( other.keys )
-                , pos( other.pos )
-            {}
-
-            reference operator*()
-            {
-                Object key = keys[ pos ];
-                return std::make_pair(key, mapref<T>(*map,key));
-            }
-
-            iterator& operator=(const iterator& other)
-            {
-                if (this == &other)
-                    return *this;
-                map = other.map;
-                keys = other.keys;
-                pos = other.pos;
-                return *this;
-            }
-
-            bool eql(const iterator& right) const
-            {
-                return map->ptr() == right.map->ptr() && pos == right.pos;
-            }
-            bool neq( const iterator& right ) const
-            {
-                return map->ptr() != right.map->ptr() || pos != right.pos;
-            }
-
-            // pointer operator->() {
-            //    return ;
-            // }
-
-            // prefix ++
-            iterator& operator++ ()
-            { pos++; return *this;}
-            // postfix ++
-            iterator operator++ (int)
-            { return iterator(map, keys, pos++);}
-            // prefix --
-            iterator& operator-- ()
-            { pos--; return *this;}
-            // postfix --
-            iterator operator-- (int)
-            { return iterator(map, keys, pos--);}
-
-            std::string diagnose() const
-            {
-                std::OSTRSTREAM oss;
-                oss << "iterator diagnosis " << map << ", " << pos << std::ends;
-                return std::string(oss.str());
-            }
-        };    // end of class MapBase<T>::iterator
-
-        iterator begin ()
-        {
-            return iterator(this);
-        }
-
-        iterator end ()
-        {
-            return iterator(this, true);
-        }
-
-        class const_iterator
-        {
-        protected:
-            typedef std::forward_iterator_tag iterator_category;
-            typedef const std::pair< const T, T > value_type;
-            typedef int difference_type;
-            typedef const std::pair< const T, T > pointer;
-            typedef const std::pair< const T, T > reference;
-
-            friend class MapBase<T>;
-            const MapBase<T>* map;
-            List            keys;   // for iterating over the map
-            int             pos;    // index into the keys
-
-        private:
-            const_iterator( const MapBase<T>* m, List k, int p )
-            : map( m )
-            , keys( k )
-            , pos( p )
-            {}
-
-        public:
-            ~const_iterator ()
-            {}
-
-            const_iterator ()
-                : map( 0 )
-                , keys()
-                , pos()
-            {}
-
-            const_iterator (const MapBase<T>* m, bool end = false )
-                : map( m )
-                , keys( m->keys() )
-                , pos( end ? keys.length() : 0 )
-            {}
-
-            const_iterator(const const_iterator& other)
-                : map( other.map )
-                , keys( other.keys )
-                , pos( other.pos )
-            {}
-
-            bool eql(const const_iterator& right) const
-            {
-                return map->ptr() == right.map->ptr() && pos == right.pos;
-            }
-
-            bool neq( const const_iterator& right ) const
-            {
-                return map->ptr() != right.map->ptr() || pos != right.pos;
-            }
-
-            const_reference operator*()
-            {
-                Object key = keys[ pos ];
-                return std::make_pair( key, mapref<T>( *map, key ) );
-            }
-
-            const_iterator& operator=(const const_iterator& other)
-            {
-                if (this == &other) return *this;
-                map = other.map;
-                keys = other.keys;
-                pos = other.pos;
-                return *this;
-            }
-
-            // prefix ++
-            const_iterator& operator++ ()
-            { pos++; return *this;}
-            // postfix ++
-            const_iterator operator++ (int)
-            { return const_iterator(map, keys, pos++);}
-            // prefix --
-            const_iterator& operator-- ()
-            { pos--; return *this;}
-            // postfix --
-            const_iterator operator-- (int)
-            { return const_iterator(map, keys, pos--);}
-        };    // end of class MapBase<T>::const_iterator
-
-        const_iterator begin () const
-        {
-            return const_iterator(this);
-        }
-
-        const_iterator end () const
-        {
-            return const_iterator(this, true);
-        }
-
-    };    // end of MapBase<T>
-
-    typedef MapBase<Object> Mapping;
-
-    template <TEMPLATE_TYPENAME T> bool operator==(const EXPLICIT_TYPENAME MapBase<T>::iterator& left, const EXPLICIT_TYPENAME MapBase<T>::iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator!=(const EXPLICIT_TYPENAME MapBase<T>::iterator& left, const EXPLICIT_TYPENAME MapBase<T>::iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator==(const EXPLICIT_TYPENAME MapBase<T>::const_iterator& left, const EXPLICIT_TYPENAME MapBase<T>::const_iterator& right);
-    template <TEMPLATE_TYPENAME T> bool operator!=(const EXPLICIT_TYPENAME MapBase<T>::const_iterator& left, const EXPLICIT_TYPENAME MapBase<T>::const_iterator& right);
-
-    extern bool operator==(const Mapping::iterator& left, const Mapping::iterator& right);
-    extern bool operator!=(const Mapping::iterator& left, const Mapping::iterator& right);
-    extern bool operator==(const Mapping::const_iterator& left, const Mapping::const_iterator& right);
-    extern bool operator!=(const Mapping::const_iterator& left, const Mapping::const_iterator& right);
-
-
-    // ==================================================
-    // class Dict
-    class Dict: public Mapping
-    {
-    public:
-        // Constructor
-        explicit Dict (PyObject *pyob, bool owned=false): Mapping (pyob, owned)
-        {
-            validate();
-        }
-        Dict (const Object& ob): Mapping(ob)
-        {
-            validate();
-        }
-        // Creation
-        Dict ()
-        {
-            set(PyDict_New (), true);
-            validate();
-        }
-        // Assignment acquires new ownership of pointer
-
-        Dict& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Dict& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set(rhsp);
-            return *this;
-        }
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && Py::_Dict_Check (pyob);
-        }
-    };
-
-    class Callable: public Object
-    {
-    public:
-        // Constructor
-        explicit Callable (): Object()  {}
-        explicit Callable (PyObject *pyob, bool owned = false): Object (pyob, owned)
-        {
-            validate();
-        }
-
-        Callable (const Object& ob): Object(ob)
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-
-        Callable& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Callable& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set (rhsp);
-            return *this;
-        }
-
-        // Membership
-        virtual bool accepts (PyObject *pyob) const
-        {
-            return pyob && PyCallable_Check (pyob);
-        }
-
-        // Call
-        Object apply(const Tuple& args) const
-        {
-            return asObject(PyObject_CallObject(ptr(), args.ptr()));
-        }
-
-        // Call with keywords
-        Object apply(const Tuple& args, const Dict& kw) const
-        {
-            return asObject( PyEval_CallObjectWithKeywords( ptr(), args.ptr(), kw.ptr() ) );
-        }
-
-        Object apply(PyObject* pargs = 0) const
-        {
-            return apply (Tuple(pargs));
-        }
-    };
-
-    class Module: public Object
-    {
-    public:
-        explicit Module (PyObject* pyob, bool owned = false): Object (pyob, owned)
-        {
-            validate();
-        }
-
-        // Construct from module name
-        explicit Module (const std::string&s): Object()
-        {
-            PyObject *m = PyImport_AddModule( const_cast<char *>(s.c_str()) );
-            set( m, false );
-            validate ();
-        }
-
-        // Copy constructor acquires new ownership of pointer
-        Module (const Module& ob): Object(*ob)
-        {
-            validate();
-        }
-
-        Module& operator= (const Object& rhs)
-        {
-            return (*this = *rhs);
-        }
-
-        Module& operator= (PyObject* rhsp)
-        {
-            if(ptr() == rhsp) return *this;
-            set(rhsp);
-            return *this;
-        }
-
-        Dict getDict()
-        {
-            return Dict(PyModule_GetDict(ptr()));
-            // Caution -- PyModule_GetDict returns borrowed reference!
-        }
-    };
-
-    // Call function helper
-    inline Object Object::callMemberFunction( const std::string &function_name ) const
-    {
-        Callable target( getAttr( function_name ) );
-        Tuple args( 0 );
-        return target.apply( args );
-    }
-
-    inline Object Object::callMemberFunction( const std::string &function_name, const Tuple &args ) const
-    {
-        Callable target( getAttr( function_name ) );
-        return target.apply( args );
-    }
-
-    inline Object Object::callMemberFunction( const std::string &function_name, const Tuple &args, const Dict &kw ) const
-    {
-        Callable target( getAttr( function_name ) );
-        return target.apply( args, kw );
-    }
-
-    // Numeric interface
-    inline Object operator+ (const Object& a)
-    {
-        return asObject(PyNumber_Positive(*a));
-    }
-    inline Object operator- (const Object& a)
-    {
-        return asObject(PyNumber_Negative(*a));
-    }
-
-    inline Object abs(const Object& a)
-    {
-        return asObject(PyNumber_Absolute(*a));
-    }
-
-    inline std::pair<Object,Object> coerce(const Object& a, const Object& b)
-    {
-        PyObject *p1, *p2;
-        p1 = *a;
-        p2 = *b;
-        if(PyNumber_Coerce(&p1,&p2) == -1)
-        {
-            throw Exception();
-        }
-        return std::pair<Object,Object>(asObject(p1), asObject(p2));
-    }
-
-    inline Object operator+ (const Object& a, const Object& b)
-    {
-        return asObject(PyNumber_Add(*a, *b));
-    }
-    inline Object operator+ (const Object& a, int j)
-    {
-        return asObject(PyNumber_Add(*a, *Int(j)));
-    }
-    inline Object operator+ (const Object& a, double v)
-    {
-        return asObject(PyNumber_Add(*a, *Float(v)));
-    }
-    inline Object operator+ (int j, const Object& b)
-    {
-        return asObject(PyNumber_Add(*Int(j), *b));
-    }
-    inline Object operator+ (double v, const Object& b)
-    {
-        return asObject(PyNumber_Add(*Float(v), *b));
-    }
-
-    inline Object operator- (const Object& a, const Object& b)
-    {
-        return asObject(PyNumber_Subtract(*a, *b));
-    }
-    inline Object operator- (const Object& a, int j)
-    {
-        return asObject(PyNumber_Subtract(*a, *Int(j)));
-    }
-    inline Object operator- (const Object& a, double v)
-    {
-        return asObject(PyNumber_Subtract(*a, *Float(v)));
-    }
-    inline Object operator- (int j, const Object& b)
-    {
-        return asObject(PyNumber_Subtract(*Int(j), *b));
-    }
-    inline Object operator- (double v, const Object& b)
-    {
-        return asObject(PyNumber_Subtract(*Float(v), *b));
-    }
-
-    inline Object operator* (const Object& a, const Object& b)
-    {
-        return asObject(PyNumber_Multiply(*a, *b));
-    }
-    inline Object operator* (const Object& a, int j)
-    {
-        return asObject(PyNumber_Multiply(*a, *Int(j)));
-    }
-    inline Object operator* (const Object& a, double v)
-    {
-        return asObject(PyNumber_Multiply(*a, *Float(v)));
-    }
-    inline Object operator* (int j, const Object& b)
-    {
-        return asObject(PyNumber_Multiply(*Int(j), *b));
-    }
-    inline Object operator* (double v, const Object& b)
-    {
-        return asObject(PyNumber_Multiply(*Float(v), *b));
-    }
-
-    inline Object operator/ (const Object& a, const Object& b)
-    {
-        return asObject(PyNumber_Divide(*a, *b));
-    }
-    inline Object operator/ (const Object& a, int j)
-    {
-        return asObject(PyNumber_Divide(*a, *Int(j)));
-    }
-    inline Object operator/ (const Object& a, double v)
-    {
-        return asObject(PyNumber_Divide(*a, *Float(v)));
-    }
-    inline Object operator/ (int j, const Object& b)
-    {
-        return asObject(PyNumber_Divide(*Int(j), *b));
-    }
-    inline Object operator/ (double v, const Object& b)
-    {
-        return asObject(PyNumber_Divide(*Float(v), *b));
-    }
-
-    inline Object operator% (const Object& a, const Object& b)
-    {
-        return asObject(PyNumber_Remainder(*a, *b));
-    }
-    inline Object operator% (const Object& a, int j)
-    {
-        return asObject(PyNumber_Remainder(*a, *Int(j)));
-    }
-    inline Object operator% (const Object& a, double v)
-    {
-        return asObject(PyNumber_Remainder(*a, *Float(v)));
-    }
-    inline Object operator% (int j, const Object& b)
-    {
-        return asObject(PyNumber_Remainder(*Int(j), *b));
-    }
-    inline Object operator% (double v, const Object& b)
-    {
-        return asObject(PyNumber_Remainder(*Float(v), *b));
-    }
-
-    inline Object type(const Exception&) // return the type of the error
-    {
-        PyObject *ptype, *pvalue, *ptrace;
-        PyErr_Fetch(&ptype, &pvalue, &ptrace);
-        Object result;
-        if(ptype) result = ptype;
-        PyErr_Restore(ptype, pvalue, ptrace);
-        return result;
-    }
-
-    inline Object value(const Exception&) // return the value of the error
-    {
-        PyObject *ptype, *pvalue, *ptrace;
-        PyErr_Fetch(&ptype, &pvalue, &ptrace);
-        Object result;
-        if(pvalue) result = pvalue;
-        PyErr_Restore(ptype, pvalue, ptrace);
-        return result;
-    }
-
-    inline Object trace(const Exception&) // return the traceback of the error
-    {
-        PyObject *ptype, *pvalue, *ptrace;
-        PyErr_Fetch(&ptype, &pvalue, &ptrace);
-        Object result;
-        if(ptrace) result = ptrace;
-        PyErr_Restore(ptype, pvalue, ptrace);
-        return result;
-    }
-
-template<TEMPLATE_TYPENAME T>
-String seqref<T>::str () const
-{
-    return the_item.str();
-}
-
-template<TEMPLATE_TYPENAME T>
-String seqref<T>::repr () const
-{
-    return the_item.repr();
-}
-
-} // namespace Py
-#endif    // __CXX_Objects__h
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python2/PythonType.hxx b/external_libraries/pycxx-6.2.2/CXX/Python2/PythonType.hxx
deleted file mode 100644
index a89a6c9..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python2/PythonType.hxx
+++ /dev/null
@@ -1,117 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_PythonType__h
-#define __CXX_PythonType__h
-
-namespace Py
-{
-    class PythonType
-    {
-    public:
-        // if you define one sequence method you must define 
-        // all of them except the assigns
-
-        PythonType( size_t base_size, int itemsize, const char *default_name );
-        virtual ~PythonType();
-
-        const char *getName() const;
-        const char *getDoc() const;
-
-        PyTypeObject *type_object() const;
-        PythonType &name( const char *nam );
-        PythonType &doc( const char *d );
-
-        PythonType &supportClass( void );
-#if !defined( PY3 )
-        PythonType &dealloc( void (*f)( PyObject* ) );
-#endif
-#if defined( PYCXX_PYTHON_2TO3 ) || !defined( PY3 )
-        PythonType &supportPrint( void );
-#endif
-        PythonType &supportGetattr( void );
-        PythonType &supportSetattr( void );
-        PythonType &supportGetattro( void );
-        PythonType &supportSetattro( void );
-#if defined( PYCXX_PYTHON_2TO3 ) || !defined( PY3 )
-        PythonType &supportCompare( void );
-#endif
-        PythonType &supportRichCompare( void );
-        PythonType &supportRepr( void );
-        PythonType &supportStr( void );
-        PythonType &supportHash( void );
-        PythonType &supportCall( void );
-        PythonType &supportIter( void );
-
-        PythonType &supportSequenceType( void );
-        PythonType &supportMappingType( void );
-        PythonType &supportNumberType( void );
-        PythonType &supportBufferType( void );
-
-        PythonType &set_tp_dealloc( void (*tp_dealloc)( PyObject * ) );
-        PythonType &set_tp_init( int (*tp_init)( PyObject *self, PyObject *args, PyObject *kwds ) );
-        PythonType &set_tp_new( PyObject *(*tp_new)( PyTypeObject *subtype, PyObject *args, PyObject *kwds ) );
-        PythonType &set_methods( PyMethodDef *methods );
-
-        // call once all support functions have been called to ready the type
-        bool readyType();
-
-    protected:
-        void init_sequence();
-        void init_mapping();
-        void init_number();
-        void init_buffer();
-
-        PyTypeObject            *table;
-        PySequenceMethods       *sequence_table;
-        PyMappingMethods        *mapping_table;
-        PyNumberMethods         *number_table;
-        PyBufferProcs           *buffer_table;
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        PythonType( const PythonType &tb );     // unimplemented
-        void operator=( const PythonType &t );  // unimplemented
-
-    };
-
-} // Namespace Py
-
-// End of __CXX_PythonType__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/Config.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/Config.hxx
deleted file mode 100644
index 27e507e..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/Config.hxx
+++ /dev/null
@@ -1,110 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __PyCXX_config_hh__
-#define __PyCXX_config_hh__
-
-//
-// Microsoft VC++ 6.0 has no traits
-//
-#if defined( _MSC_VER )
-
-#  define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
-
-#elif defined( __GNUC__ )
-#  if __GNUC__ >= 3
-#    define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
-#  else
-#    define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 0
-#endif
-
-//
-//	Assume all other compilers do
-//
-#else
-
-// Macros to deal with deficiencies in compilers
-#  define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
-#endif
-
-#if STANDARD_LIBRARY_HAS_ITERATOR_TRAITS
-#  define random_access_iterator_parent(itemtype) std::iterator<std::random_access_iterator_tag,itemtype,int>
-#else
-#  define random_access_iterator_parent(itemtype) std::random_access_iterator<itemtype, int>
-#endif
-
-//
-//	Which C++ standard is in use?
-//
-#if defined( _MSC_VER )
-#  if _MSC_VER <= 1200
-// MSVC++ 6.0
-#    define PYCXX_ISO_CPP_LIB 0
-#    define STR_STREAM <strstream>
-#    define TEMPLATE_TYPENAME class
-#  else
-#    define PYCXX_ISO_CPP_LIB 1
-#    define STR_STREAM <sstream>
-#    define TEMPLATE_TYPENAME typename
-#  endif
-#elif defined( __GNUC__ )
-#  if __GNUC__ >= 3
-#    define PYCXX_ISO_CPP_LIB 1
-#    define STR_STREAM <sstream>
-#    define TEMPLATE_TYPENAME typename
-#  else
-#    define PYCXX_ISO_CPP_LIB 0
-#    define STR_STREAM <strstream>
-#    define TEMPLATE_TYPENAME class
-#  endif
-#endif
-
-#if PYCXX_ISO_CPP_LIB
-#    define STR_STREAM <sstream>
-#    define OSTRSTREAM ostringstream
-#    define EXPLICIT_TYPENAME typename
-#    define EXPLICIT_CLASS class
-#    define TEMPLATE_TYPENAME typename
-#else
-#    define STR_STREAM <strstream>
-#    define OSTRSTREAM ostrstream
-#    define EXPLICIT_TYPENAME
-#    define EXPLICIT_CLASS
-#    define TEMPLATE_TYPENAME class
-#endif
-
-#endif //  __PyCXX_config_hh__
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/CxxDebug.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/CxxDebug.hxx
deleted file mode 100644
index b646ffd..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/CxxDebug.hxx
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-//  CxxDebug.hxx
-//
-//  Copyright (c) 2008 Barry A. Scott
-//
-#ifndef __CXX_Debug_hxx
-#define __CXX_Debug_hxx
-
-//
-//  Functions useful when debugging PyCXX
-//
-#ifdef PYCXX_DEBUG
-extern void bpt();
-extern void printRefCount( PyObject *obj );
-#endif
-
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/Exception.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/Exception.hxx
deleted file mode 100644
index 0bd052d..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/Exception.hxx
+++ /dev/null
@@ -1,260 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_Exception_h
-#define __CXX_Exception_h
-
-#include "CXX/WrapPython.h"
-#include "CXX/Version.hxx"
-#include "CXX/Python3/Config.hxx"
-#include "CXX/Python3/CxxDebug.hxx"
-#include "CXX/Python3/IndirectPythonInterface.hxx"
-
-#include <string>
-#include <iostream>
-
-// This mimics the Python structure, in order to minimize confusion
-namespace Py
-{
-    class ExtensionExceptionType;
-
-    class Object;
-
-    class Exception
-    {
-    public:
-        Exception( ExtensionExceptionType &exception, const std::string &reason );
-        Exception( ExtensionExceptionType &exception, Object &reason );
-
-        explicit Exception ()
-        {}
-        
-        Exception (const std::string &reason)
-        {
-            PyErr_SetString( Py::_Exc_RuntimeError(), reason.c_str() );
-        }
-        
-        Exception( PyObject *exception, const std::string &reason )
-        {
-            PyErr_SetString( exception, reason.c_str() );
-        }
-        
-        Exception( PyObject *exception, Object &reason );        
-
-        void clear() // clear the error
-        // technically but not philosophically const
-        {
-            PyErr_Clear();
-        }
-    };
-    
-    
-    // Abstract
-    class StandardError: public Exception
-    {
-    protected: 
-        explicit StandardError()
-        {}
-    };
-    
-    class LookupError: public StandardError
-    {
-    protected: 
-        explicit LookupError()
-        {}
-    };
-    
-    class ArithmeticError: public StandardError
-    {
-    protected: 
-        explicit ArithmeticError()
-        {}
-    };
-    
-    class EnvironmentError: public StandardError
-    {
-    protected: 
-        explicit EnvironmentError()
-        {}
-    };
-    
-    // Concrete
-    
-    class TypeError: public StandardError
-    {
-    public:
-        TypeError (const std::string& reason)
-        : StandardError()
-        {
-            PyErr_SetString( Py::_Exc_TypeError(),reason.c_str() );
-        }
-    };
-    
-    class IndexError: public LookupError
-    {
-    public:
-        IndexError (const std::string& reason)
-        : LookupError()
-        {
-            PyErr_SetString( Py::_Exc_IndexError(), reason.c_str() );
-        }
-    };
-    
-    class AttributeError: public StandardError
-    {
-    public:
-        AttributeError (const std::string& reason)
-        : StandardError()
-        {
-            PyErr_SetString( Py::_Exc_AttributeError(), reason.c_str() );
-        }        
-    };
-    
-    class NameError: public StandardError
-    {
-    public:
-        NameError (const std::string& reason)
-        : StandardError()
-        {
-            PyErr_SetString( Py::_Exc_NameError(), reason.c_str() );
-        }
-    };
-    
-    class RuntimeError: public StandardError
-    {
-    public:
-        RuntimeError (const std::string& reason)
-        : StandardError()
-        {
-            PyErr_SetString( Py::_Exc_RuntimeError(), reason.c_str() );
-        }
-    };
-    
-    class NotImplementedError: public StandardError
-    {
-    public:
-        NotImplementedError (const std::string& reason)
-            : StandardError()
-        {
-            PyErr_SetString (Py::_Exc_NotImplementedError(), reason.c_str());
-        }
-    };
-    
-    class SystemError: public StandardError
-    {
-    public:
-        SystemError (const std::string& reason)
-        : StandardError()
-        {
-            PyErr_SetString( Py::_Exc_SystemError(),reason.c_str() );
-        }
-    };
-    
-    class KeyError: public LookupError
-    {
-    public:
-        KeyError (const std::string& reason)
-        : LookupError()
-        {
-            PyErr_SetString( Py::_Exc_KeyError(),reason.c_str() );
-        }
-    };
-    
-    
-    class ValueError: public StandardError
-    {
-    public:
-        ValueError (const std::string& reason)
-        : StandardError()
-        {
-            PyErr_SetString( Py::_Exc_ValueError(), reason.c_str() );
-        }
-    };
-    
-    class OverflowError: public ArithmeticError
-    {
-    public:
-        OverflowError (const std::string& reason)
-        : ArithmeticError()
-        {
-            PyErr_SetString( Py::_Exc_OverflowError(), reason.c_str() );
-        }        
-    };
-    
-    class ZeroDivisionError: public ArithmeticError
-    {
-    public:
-        ZeroDivisionError (const std::string& reason)
-        : ArithmeticError() 
-        {
-            PyErr_SetString( Py::_Exc_ZeroDivisionError(), reason.c_str() );
-        }
-    };
-    
-    class FloatingPointError: public ArithmeticError
-    {
-    public:
-        FloatingPointError (const std::string& reason)
-        : ArithmeticError() 
-        {
-            PyErr_SetString( Py::_Exc_FloatingPointError(), reason.c_str() );
-        }
-    };
-    
-    class MemoryError: public StandardError
-    {
-    public:
-        MemoryError (const std::string& reason)
-        : StandardError()
-        {
-            PyErr_SetString( Py::_Exc_MemoryError(), reason.c_str() );
-        }    
-    };
-    
-    class SystemExit: public StandardError
-    {
-    public:
-        SystemExit (const std::string& reason)
-        : StandardError() 
-        {
-            PyErr_SetString( Py::_Exc_SystemExit(),reason.c_str() );
-        }
-    };
-
-}// Py
-
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionModule.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionModule.hxx
deleted file mode 100644
index b41decc..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionModule.hxx
+++ /dev/null
@@ -1,206 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_ExtensionModule__h
-#define __CXX_ExtensionModule__h
-
-namespace Py
-{
-    class ExtensionModuleBase
-    {
-    public:
-        ExtensionModuleBase( const char *name );
-        virtual ~ExtensionModuleBase();
-
-        Module module( void ) const;            // only valid after initialize() has been called
-        Dict moduleDictionary( void ) const;    // only valid after initialize() has been called
-
-        virtual Object invoke_method_noargs( void *method_def ) = 0;
-        virtual Object invoke_method_keyword( void *method_def, const Tuple &_args, const Dict &_keywords ) = 0;
-        virtual Object invoke_method_varargs( void *method_def, const Tuple &_args ) = 0;
-
-        const std::string &name() const;
-        const std::string &fullName() const;
-
-        // what is returned from PyInit_<module> function
-        Object moduleObject( void ) const;
-
-    protected:
-        // Initialize the module
-        void initialize( const char *module_doc );
-
-        const std::string m_module_name;
-        const std::string m_full_module_name;
-        MethodTable m_method_table;
-        PyModuleDef m_module_def;
-        PyObject *m_module;
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        ExtensionModuleBase( const ExtensionModuleBase & );     //unimplemented
-        void operator=( const ExtensionModuleBase & );          //unimplemented
-    };
-
-    // Note: Python calls noargs as varargs buts args==NULL
-    extern "C" PyObject *method_noargs_call_handler( PyObject *_self_and_name_tuple, PyObject * );
-    extern "C" PyObject *method_varargs_call_handler( PyObject *_self_and_name_tuple, PyObject *_args );
-    extern "C" PyObject *method_keyword_call_handler( PyObject *_self_and_name_tuple, PyObject *_args, PyObject *_keywords );
-
-    extern "C" void do_not_dealloc( void * );
-
-    template<TEMPLATE_TYPENAME T>
-    class ExtensionModule : public ExtensionModuleBase
-    {
-    public:
-        ExtensionModule( const char *name )
-        : ExtensionModuleBase( name )
-        {}
-        virtual ~ExtensionModule()
-        {}
-
-    protected:
-        typedef Object (T::*method_noargs_function_t)();
-        typedef Object (T::*method_varargs_function_t)( const Tuple &args );
-        typedef Object (T::*method_keyword_function_t)( const Tuple &args, const Dict &kws );
-        typedef std::map<std::string, MethodDefExt<T> *> method_map_t;
-
-        static void add_noargs_method( const char *name, method_noargs_function_t function, const char *doc="" )
-        {
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_noargs_call_handler, doc );
-        }
-
-        static void add_varargs_method( const char *name, method_varargs_function_t function, const char *doc="" )
-        {
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_varargs_call_handler, doc );
-        }
-
-        static void add_keyword_method( const char *name, method_keyword_function_t function, const char *doc="" )
-        {
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_keyword_call_handler, doc );
-        }
-
-        void initialize( const char *module_doc="" )
-        {
-            ExtensionModuleBase::initialize( module_doc );
-            Dict dict( moduleDictionary() );
-
-            //
-            // put each of the methods into the modules dictionary
-            // so that we get called back at the function in T.
-            //
-            method_map_t &mm = methods();
-            EXPLICIT_TYPENAME method_map_t::const_iterator i = mm.begin();
-            EXPLICIT_TYPENAME method_map_t::const_iterator i_end = mm.end();
-            for ( ; i != i_end; ++i )
-            {
-                MethodDefExt<T> *method_def = (*i).second;
-
-                static PyObject *self = PyCObject_FromVoidPtr( this, do_not_dealloc );
-
-                Tuple args( 2 );
-                args[0] = Object( self );
-                args[1] = Object( PyCObject_FromVoidPtr( method_def, do_not_dealloc ) );
-
-                PyObject *func = PyCFunction_New
-                                    (
-                                    &method_def->ext_meth_def,
-                                    new_reference_to( args )
-                                    );
-
-                method_def->py_method = Object( func, true );
-
-                dict[ (*i).first ] = method_def->py_method;
-            }
-        }
-
-    protected:    // Tom Malcolmson reports that derived classes need access to these
-        static method_map_t &methods( void )
-        {
-            static method_map_t *map_of_methods = NULL;
-            if( map_of_methods == NULL )
-                map_of_methods = new method_map_t;
-
-            return *map_of_methods;
-        }
-
-        // this invoke function must be called from within a try catch block
-        virtual Object invoke_method_noargs( void *method_def )
-        {
-            // cast up to the derived class, method_def and call
-            T *self = static_cast<T *>( this );
-            MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>( method_def );
-
-            return (self->*meth_def->ext_noargs_function)();
-        }
-
-        // this invoke function must be called from within a try catch block
-        virtual Object invoke_method_varargs( void *method_def, const Tuple &args )
-        {
-            // cast up to the derived class, method_def and call
-            T *self = static_cast<T *>( this );
-            MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>( method_def );
-
-            return (self->*meth_def->ext_varargs_function)( args );
-        }
-
-        // this invoke function must be called from within a try catch block
-        virtual Object invoke_method_keyword( void *method_def, const Tuple &args, const Dict &keywords )
-        {
-            // cast up to the derived class, method_def and call
-            T *self = static_cast<T *>( this );
-            MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>( method_def );
-
-            return (self->*meth_def->ext_keyword_function)( args, keywords );
-        }
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        ExtensionModule( const ExtensionModule<T> & );    //unimplemented
-        void operator=( const ExtensionModule<T> & );    //unimplemented
-    };
-} // Namespace Py
-
-
-// End of __CXX_ExtensionModule__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionOldType.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionOldType.hxx
deleted file mode 100644
index b83134f..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionOldType.hxx
+++ /dev/null
@@ -1,398 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_ExtensionOldType__h
-#define __CXX_ExtensionOldType__h
-
-namespace Py
-{
-    template<TEMPLATE_TYPENAME T> class PythonExtension
-    : public PythonExtensionBase
-    {
-    public:
-        static PyTypeObject *type_object()
-        {
-            return behaviors().type_object();
-        }
-
-        static bool check( PyObject *p )
-        {
-            // is p like me?
-            return p->ob_type == type_object();
-        }
-
-        static bool check( const Object &ob )
-        {
-            return check( ob.ptr() );
-        }
-
-        //
-        // every object needs getattr implemented
-        // to support methods
-        //
-        virtual Object getattr( const char *name )
-        {
-            return getattr_methods( name );
-        }
-
-        PyObject *selfPtr()
-        {
-            return this;
-        }
-
-        Object self()
-        {
-            return asObject( this );
-        }
-
-    protected:
-        explicit PythonExtension()
-        : PythonExtensionBase()
-        {
-            PyObject_Init( this, type_object() );
-
-            // every object must support getattr
-            behaviors().supportGetattr();
-        }
-
-        virtual ~PythonExtension()
-        {}
-
-        static PythonType &behaviors()
-        {
-            static PythonType* p;
-            if( p == NULL )
-            {
-#if defined( _CPPRTTI ) || defined( __GNUG__ )
-                const char *default_name =( typeid( T ) ).name();
-#else
-                const char *default_name = "unknown";
-#endif
-                p = new PythonType( sizeof( T ), 0, default_name );
-                p->set_tp_dealloc( extension_object_deallocator );
-            }
-
-            return *p;
-        }
-
-        typedef Object (T::*method_noargs_function_t)();
-        typedef Object (T::*method_varargs_function_t)( const Tuple &args );
-        typedef Object (T::*method_keyword_function_t)( const Tuple &args, const Dict &kws );
-        typedef std::map<std::string, MethodDefExt<T> *> method_map_t;
-
-        // support the default attributes, __name__, __doc__ and methods
-        virtual Object getattr_default( const char *_name )
-        {
-            std::string name( _name );
-
-            if( name == "__name__" && type_object()->tp_name != NULL )
-            {
-                return Py::String( type_object()->tp_name );
-            }
-
-            if( name == "__doc__" && type_object()->tp_doc != NULL )
-            {
-                return Py::String( type_object()->tp_doc );
-            }
-
-// trying to fake out being a class for help()
-//            else if( name == "__bases__"  )
-//            {
-//                return Py::Tuple( 0 );
-//            }
-//            else if( name == "__module__"  )
-//            {
-//                return Py::Nothing();
-//            }
-//            else if( name == "__dict__"  )
-//            {
-//                return Py::Dict();
-//            }
-
-            return getattr_methods( _name );
-        }
-
-        // turn a name into function object
-        virtual Object getattr_methods( const char *_name )
-        {
-            std::string name( _name );
-
-            method_map_t &mm = methods();
-
-            // see if name exists and get entry with method
-            EXPLICIT_TYPENAME method_map_t::const_iterator i = mm.find( name );
-            if( i == mm.end() )
-            {
-                if( name == "__methods__" )
-                {
-                    List methods;
-
-                    i = mm.begin();
-                    EXPLICIT_TYPENAME method_map_t::const_iterator i_end = mm.end();
-
-                    for( ; i != i_end; ++i )
-                        methods.append( String( (*i).first ) );
-
-                    return methods;
-                }
-
-                throw AttributeError( name );
-            }
-
-            MethodDefExt<T> *method_def = i->second;
-
-            Tuple self( 2 );
-
-            self[0] = Object( this );
-            self[1] = Object( PyCObject_FromVoidPtr( method_def, do_not_dealloc ) );
-
-            PyObject *func = PyCFunction_New( &method_def->ext_meth_def, self.ptr() );
-
-            return Object(func, true);
-        }
-
-        // check that all methods added are unique
-        static void check_unique_method_name( const char *name )
-        {
-            method_map_t &mm = methods();
-            EXPLICIT_TYPENAME method_map_t::const_iterator i;
-            i = mm.find( name );
-            if( i != mm.end() )
-                throw AttributeError( name );
-        }
-
-        static void add_noargs_method( const char *name, method_noargs_function_t function, const char *doc="" )
-        {
-            check_unique_method_name( name );
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_noargs_call_handler, doc );
-        }
-
-        static void add_varargs_method( const char *name, method_varargs_function_t function, const char *doc="" )
-        {
-            check_unique_method_name( name );
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_varargs_call_handler, doc );
-        }
-
-        static void add_keyword_method( const char *name, method_keyword_function_t function, const char *doc="" )
-        {
-            check_unique_method_name( name );
-            method_map_t &mm = methods();
-            mm[ std::string( name ) ] = new MethodDefExt<T>( name, function, method_keyword_call_handler, doc );
-        }
-
-    private:
-        static method_map_t &methods( void )
-        {
-            static method_map_t *map_of_methods = NULL;
-            if( map_of_methods == NULL )
-                map_of_methods = new method_map_t;
-
-            return *map_of_methods;
-        }
-
-        // Note: Python calls noargs as varargs buts args==NULL
-        static PyObject *method_noargs_call_handler( PyObject *_self_and_name_tuple, PyObject * )
-        {
-            try
-            {
-                Tuple self_and_name_tuple( _self_and_name_tuple );
-
-                PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-                T *self = static_cast<T *>( self_in_cobject );
-
-                MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
-                                                PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
-
-                Object result;
-
-                // Adding try & catch in case of STL debug-mode exceptions.
-                #ifdef _STLP_DEBUG
-                try
-                {
-                    result = (self->*meth_def->ext_noargs_function)();
-                }
-                catch( std::__stl_debug_exception )
-                {
-                    // throw cxx::RuntimeError( sErrMsg );
-                    throw RuntimeError( "Error message not set yet." );
-                }
-                #else
-                result = (self->*meth_def->ext_noargs_function)();
-                #endif // _STLP_DEBUG
-
-                return new_reference_to( result.ptr() );
-            }
-            catch( Exception & )
-            {
-                return 0;
-            }
-        }
-
-        static PyObject *method_varargs_call_handler( PyObject *_self_and_name_tuple, PyObject *_args )
-        {
-            try
-            {
-                Tuple self_and_name_tuple( _self_and_name_tuple );
-
-                PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-                T *self = static_cast<T *>( self_in_cobject );
-                MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
-                                                PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
-
-                Tuple args( _args );
-
-                Object result;
-
-                // Adding try & catch in case of STL debug-mode exceptions.
-                #ifdef _STLP_DEBUG
-                try
-                {
-                    result = (self->*meth_def->ext_varargs_function)( args );
-                }
-                catch( std::__stl_debug_exception )
-                {
-                    throw RuntimeError( "Error message not set yet." );
-                }
-                #else
-                result = (self->*meth_def->ext_varargs_function)( args );
-                #endif // _STLP_DEBUG
-
-                return new_reference_to( result.ptr() );
-            }
-            catch( Exception & )
-            {
-                return 0;
-            }
-        }
-
-        static PyObject *method_keyword_call_handler( PyObject *_self_and_name_tuple, PyObject *_args, PyObject *_keywords )
-        {
-            try
-            {
-                Tuple self_and_name_tuple( _self_and_name_tuple );
-
-                PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-                T *self = static_cast<T *>( self_in_cobject );
-                MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
-                                                PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
-
-                Tuple args( _args );
-
-                // _keywords may be NULL so be careful about the way the dict is created
-                Dict keywords;
-                if( _keywords != NULL )
-                    keywords = Dict( _keywords );
-
-                Object result( ( self->*meth_def->ext_keyword_function )( args, keywords ) );
-
-                return new_reference_to( result.ptr() );
-            }
-            catch( Exception & )
-            {
-                return 0;
-            }
-        }
-
-        static void extension_object_deallocator( PyObject* t )
-        {
-            delete (T *)( t );
-        }
-
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        explicit PythonExtension( const PythonExtension<T> &other );
-        void operator=( const PythonExtension<T> &rhs );
-    };
-
-    //
-    // ExtensionObject<T> is an Object that will accept only T's.
-    //
-    template<TEMPLATE_TYPENAME T>
-    class ExtensionObject: public Object
-    {
-    public:
-
-        explicit ExtensionObject( PyObject *pyob )
-        : Object( pyob )
-        {
-            validate();
-        }
-
-        ExtensionObject( const ExtensionObject<T> &other )
-        : Object( *other )
-        {
-            validate();
-        }
-
-        ExtensionObject( const Object &other )
-        : Object( *other )
-        {
-            validate();
-        }
-
-        ExtensionObject &operator=( const Object &rhs )
-        {
-            return( *this = *rhs );
-        }
-
-        ExtensionObject &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return( pyob && T::check( pyob ) );
-        }
-
-        //
-        //    Obtain a pointer to the PythonExtension object
-        //
-        T *extensionObject( void )
-        {
-            return static_cast<T *>( ptr() );
-        }
-    };
-} // Namespace Py
-
-// End of __CXX_ExtensionOldType__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionType.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionType.hxx
deleted file mode 100644
index df680db..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionType.hxx
+++ /dev/null
@@ -1,403 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_ExtensionClass__h
-#define __CXX_ExtensionClass__h
-
-#define PYCXX_NOARGS_METHOD_NAME( NAME ) _callNoArgsMethod__##NAME
-#define PYCXX_VARARGS_METHOD_NAME( NAME ) _callVarArgsMethod__##NAME
-#define PYCXX_KEYWORDS_METHOD_NAME( NAME ) _callKeywordsMethod__##NAME
-
-#define PYCXX_NOARGS_METHOD_DECL( CLS, NAME ) \
-    static PyObject *PYCXX_NOARGS_METHOD_NAME( NAME )( PyObject *_self, PyObject *, PyObject * ) \
-    { \
-        try \
-        { \
-            Py::PythonClassInstance *self_python = reinterpret_cast< Py::PythonClassInstance * >( _self ); \
-            CLS *self = reinterpret_cast< CLS * >( self_python->m_pycxx_object ); \
-            Py::Object r( (self->NAME)() ); \
-            return Py::new_reference_to( r.ptr() ); \
-        } \
-        catch( Py::Exception & ) \
-        { \
-            return 0; \
-        } \
-    }
-#define PYCXX_VARARGS_METHOD_DECL( CLS, NAME ) \
-    static PyObject *PYCXX_VARARGS_METHOD_NAME( NAME )( PyObject *_self, PyObject *_a, PyObject * ) \
-    { \
-        try \
-        { \
-            Py::PythonClassInstance *self_python = reinterpret_cast< Py::PythonClassInstance * >( _self ); \
-            CLS *self = reinterpret_cast< CLS * >( self_python->m_pycxx_object ); \
-            Py::Tuple a( _a ); \
-            Py::Object r( (self->NAME)( a ) ); \
-            return Py::new_reference_to( r.ptr() ); \
-        } \
-        catch( Py::Exception & ) \
-        { \
-            return 0; \
-        } \
-    }
-#define PYCXX_KEYWORDS_METHOD_DECL( CLS, NAME ) \
-    static PyObject *PYCXX_KEYWORDS_METHOD_NAME( NAME )( PyObject *_self, PyObject *_a, PyObject *_k ) \
-    { \
-        try \
-        { \
-            Py::PythonClassInstance *self_python = reinterpret_cast< Py::PythonClassInstance * >( _self ); \
-            CLS *self = reinterpret_cast< CLS * >( self_python->m_pycxx_object ); \
-            Py::Tuple a( _a ); \
-            Py::Dict k; \
-            if( _k != NULL ) \
-                k = _k; \
-            Py::Object r( (self->NAME)( a, k ) ); \
-            return Py::new_reference_to( r.ptr() ); \
-        } \
-        catch( Py::Exception & ) \
-        { \
-            return 0; \
-        } \
-    }
-
-// need to support METH_STATIC and METH_CLASS
-
-#define PYCXX_ADD_NOARGS_METHOD( PYNAME, NAME, docs ) \
-    add_method( #PYNAME, (PyCFunction)PYCXX_NOARGS_METHOD_NAME( NAME ), METH_NOARGS, docs )
-#define PYCXX_ADD_VARARGS_METHOD( PYNAME, NAME, docs ) \
-    add_method( #PYNAME, (PyCFunction)PYCXX_VARARGS_METHOD_NAME( NAME ), METH_VARARGS, docs )
-#define PYCXX_ADD_KEYWORDS_METHOD( PYNAME, NAME, docs ) \
-    add_method( #PYNAME, (PyCFunction)PYCXX_KEYWORDS_METHOD_NAME( NAME ), METH_VARARGS | METH_KEYWORDS, docs )
-
-namespace Py
-{
-    extern PythonExtensionBase *getPythonExtensionBase( PyObject *self );
-    struct PythonClassInstance
-    {
-        PyObject_HEAD
-        PythonExtensionBase *m_pycxx_object;
-    };
-
-
-    class ExtensionClassMethodsTable
-    {
-    public:
-        ExtensionClassMethodsTable()
-        : m_methods_table( new PyMethodDef[ METHOD_TABLE_SIZE_INCREMENT ] )
-        , m_methods_used( 0 )
-        , m_methods_size( METHOD_TABLE_SIZE_INCREMENT )
-        {
-        }
-
-        ~ExtensionClassMethodsTable()
-        {
-            delete m_methods_table;
-        }
-
-        // check that all methods added are unique
-        void check_unique_method_name( const char *_name )
-        {
-            std::string name( _name );
-            for( int i=0; i<m_methods_used; i++ )
-            {
-                if( name == m_methods_table[i].ml_name )
-                {
-                    throw AttributeError( name );
-                }
-            }
-        }
-        PyMethodDef *add_method( const char *name, PyCFunction function, int flags, const char *doc )
-        {
-            check_unique_method_name( name );
-
-            // see if there is enough space for one more method
-            if( m_methods_used == (m_methods_size-1) )
-            {
-                PyMethodDef *old_mt = m_methods_table;
-                m_methods_size += METHOD_TABLE_SIZE_INCREMENT;
-                PyMethodDef *new_mt = new PyMethodDef[ m_methods_size ];
-                for( int i=0; i<m_methods_used; i++ )
-                {
-                    new_mt[ i ] = old_mt[ i ];
-                }
-                delete[] old_mt;
-                m_methods_table = new_mt;
-            }
-
-            // add method into the table
-            PyMethodDef *p = &m_methods_table[ m_methods_used ];
-            p->ml_name = name;
-            p->ml_meth = function;
-            p->ml_flags = flags;
-            p->ml_doc = doc;
-
-            m_methods_used++;
-            p++;
-
-            // add the sentinel marking the table end
-            p->ml_name = NULL;
-            p->ml_meth = NULL;
-            p->ml_flags = 0;
-            p->ml_doc = NULL;
-
-            return m_methods_table;
-        }
-
-    private:
-        enum {METHOD_TABLE_SIZE_INCREMENT = 1};
-        PyMethodDef *m_methods_table;
-        int m_methods_used;
-        int m_methods_size;
-    };
-
-    template<TEMPLATE_TYPENAME T> class PythonClass
-    : public PythonExtensionBase
-    {
-    protected:
-        explicit PythonClass( PythonClassInstance *self, Tuple &args, Dict &kwds )
-        : PythonExtensionBase()
-        , m_class_instance( self )
-        {
-        }
-
-        virtual ~PythonClass()
-        {} 
-
-        static ExtensionClassMethodsTable &methodTable()
-        {
-            static ExtensionClassMethodsTable *method_table;
-            if( method_table == NULL )
-                method_table = new ExtensionClassMethodsTable;
-            return *method_table;
-        }
-
-        static void add_method( const char *name, PyCFunction function, int flags, const char *doc=NULL )
-        {
-            behaviors().set_methods( methodTable().add_method( name, function, flags, doc ) );
-        }
-
-        static PythonType &behaviors()
-        {
-            static PythonType *p;
-            if( p == NULL ) 
-            {
-#if defined( _CPPRTTI ) || defined( __GNUG__ )
-                const char *default_name = (typeid( T )).name();
-#else
-                const char *default_name = "unknown";
-#endif
-                p = new PythonType( sizeof( T ), 0, default_name );
-                p->set_tp_new( extension_object_new );
-                p->set_tp_init( extension_object_init );
-                p->set_tp_dealloc( extension_object_deallocator );
-
-                // we are a class
-                p->supportClass();
-
-                // always support get and set attr
-                p->supportGetattro();
-                p->supportSetattro();
-            }
-
-            return *p;
-        }
-
-        static PyObject *extension_object_new( PyTypeObject *subtype, PyObject *args, PyObject *kwds )
-        {
-#ifdef PYCXX_DEBUG
-            std::cout << "extension_object_new()" << std::endl;
-#endif
-            PythonClassInstance *o = reinterpret_cast<PythonClassInstance *>( subtype->tp_alloc( subtype, 0 ) );
-            if( o == NULL )
-                return NULL;
-
-            o->m_pycxx_object = NULL;
-
-            PyObject *self = reinterpret_cast<PyObject *>( o );
-#ifdef PYCXX_DEBUG
-            std::cout << "extension_object_new() => self=0x" << std::hex << reinterpret_cast< unsigned int >( self ) << std::dec << std::endl;
-#endif
-            return self;
-        }
-
-        static int extension_object_init( PyObject *_self, PyObject *args_, PyObject *kwds_ )
-        {
-            try
-            {
-                Py::Tuple args( args_ );
-                Py::Dict kwds;
-                if( kwds_ != NULL )
-                    kwds = kwds_;
-
-                PythonClassInstance *self = reinterpret_cast<PythonClassInstance *>( _self );
-#ifdef PYCXX_DEBUG
-                std::cout << "extension_object_init( self=0x" << std::hex << reinterpret_cast< unsigned int >( self ) << std::dec << " )" << std::endl;
-                std::cout << "    self->m_pycxx_object=0x" << std::hex << reinterpret_cast< unsigned int >( self->m_pycxx_object ) << std::dec << std::endl;
-#endif
-
-                if( self->m_pycxx_object == NULL )
-                {
-                    self->m_pycxx_object = new T( self, args, kwds );
-#ifdef PYCXX_DEBUG
-                    std::cout << "    self->m_pycxx_object=0x" << std::hex << reinterpret_cast< unsigned int >( self->m_pycxx_object ) << std::dec << std::endl;
-#endif
-                }
-                else
-                {
-#ifdef PYCXX_DEBUG
-                    std::cout << "    reinit - self->m_pycxx_object=0x" << std::hex << reinterpret_cast< unsigned int >( self->m_pycxx_object ) << std::dec << std::endl;
-#endif
-                    self->m_pycxx_object->reinit( args, kwds );
-                }
-            }
-            catch( Exception & )
-            {
-                return -1;
-            }
-            return 0;
-        }
-
-        static void extension_object_deallocator( PyObject *_self )
-        {
-            PythonClassInstance *self = reinterpret_cast< PythonClassInstance * >( _self );
-#ifdef PYCXX_DEBUG
-            std::cout << "extension_object_deallocator( self=0x" << std::hex << reinterpret_cast< unsigned int >( self ) << std::dec << " )" << std::endl;
-            std::cout << "    self->m_pycxx_object=0x" << std::hex << reinterpret_cast< unsigned int >( self->m_pycxx_object ) << std::dec << std::endl;
-#endif
-            delete self->m_pycxx_object;
-            _self->ob_type->tp_free( _self );
-        }
-
-    public:
-        static PyTypeObject *type_object()
-        {
-            return behaviors().type_object();
-        }
-
-        static Object type()
-        {
-            return Object( reinterpret_cast<PyObject *>( behaviors().type_object() ) );
-        }
-
-        static bool check( PyObject *p )
-        {
-            // is p like me?
-            return p->ob_type == type_object();
-        }
-
-        static bool check( const Object &ob )
-        {
-            return check( ob.ptr() );
-        }
-
-        virtual PyObject *selfPtr()
-        {
-            return reinterpret_cast<PyObject *>( m_class_instance );
-        }
-
-        virtual Object self()
-        {
-            return Object( reinterpret_cast<PyObject *>( m_class_instance ) );
-        }
-
-    protected:
-    private:
-        PythonClassInstance *m_class_instance;
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        explicit PythonClass( const PythonClass<T> &other );
-        void operator=( const PythonClass<T> &rhs );
-    };
-
-    //
-    // ExtensionObject<T> is an Object that will accept only T's.
-    //
-    template<TEMPLATE_TYPENAME T>
-    class PythonClassObject: public Object
-    {
-    public:
-
-        explicit PythonClassObject( PyObject *pyob )
-        : Object( pyob )
-        {
-            validate();
-        }
-
-        PythonClassObject( const PythonClassObject<T> &other )
-        : Object( *other )
-        {
-            validate();
-        }
-
-        PythonClassObject( const Object &other )
-        : Object( *other )
-        {
-            validate();
-        }
-
-        PythonClassObject &operator=( const Object &rhs )
-        {
-            *this = *rhs;
-            return *this;
-        }
-
-        PythonClassObject &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return( pyob && T::check( pyob ) );
-        }
-
-        //
-        //    Obtain a pointer to the PythonExtension object
-        //
-        T *getCxxObject( void )
-        {
-            return dynamic_cast< T * >( getPythonExtensionBase( ptr() ) );
-        }
-    };
-} // Namespace Py
-
-// End of __CXX_ExtensionClass__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionTypeBase.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionTypeBase.hxx
deleted file mode 100644
index 8bd65eb..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/ExtensionTypeBase.hxx
+++ /dev/null
@@ -1,169 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_ExtensionTypeBase__h
-#define __CXX_ExtensionTypeBase__h
-
-namespace Py
-{
-    // Class PythonExtension is what you inherit from to create
-    // a new Python extension type. You give your class itself
-    // as the template paramter.
-
-    // There are two ways that extension objects can get destroyed.
-    // 1. Their reference count goes to zero
-    // 2. Someone does an explicit delete on a pointer.
-    // In(1) the problem is to get the destructor called 
-    //      We register a special deallocator in the Python type object
-    //      (see behaviors()) to do this.
-    // In(2) there is no problem, the dtor gets called.
-
-    // PythonExtension does not use the usual Python heap allocator, 
-    // instead using new/delete. We do the setting of the type object
-    // and reference count, usually done by PyObject_New, in the 
-    // base class ctor.
-
-    // This special deallocator does a delete on the pointer.
-
-    class PythonExtensionBase : public PyObject
-    {
-    public:
-        PythonExtensionBase();
-        virtual ~PythonExtensionBase();
-
-    public:
-        // object 
-        virtual void reinit( Tuple &args, Dict &kwds );
-
-        // object basics
-#ifdef PYCXX_PYTHON_2TO3
-        virtual int print( FILE *, int );
-#endif
-        virtual Object getattr( const char * );
-        virtual int setattr( const char *, const Object & );
-        virtual Object getattro( const String & );
-        Object genericGetAttro( const String & );
-        virtual int setattro( const String &, const Object & );
-        int genericSetAttro( const String &, const Object & );
-        virtual int compare( const Object & );
-        virtual Object rich_compare( const Object &, int );
-        virtual Object repr();
-        virtual Object str();
-        virtual long hash();
-        virtual Object call( const Object &, const Object & );
-        virtual Object iter();
-        virtual PyObject *iternext();
-
-        // Sequence methods
-        virtual int sequence_length();
-        virtual Object sequence_concat( const Object & );
-        virtual Object sequence_repeat( Py_ssize_t );
-        virtual Object sequence_item( Py_ssize_t );
-        virtual int sequence_ass_item( Py_ssize_t, const Object & );
-
-        // Mapping
-        virtual int mapping_length();
-        virtual Object mapping_subscript( const Object & );
-        virtual int mapping_ass_subscript( const Object &, const Object & );
-
-        // Number
-        virtual Object number_negative();
-        virtual Object number_positive();
-        virtual Object number_absolute();
-        virtual Object number_invert();
-        virtual Object number_int();
-        virtual Object number_float();
-        virtual Object number_long();
-        virtual Object number_add( const Object & );
-        virtual Object number_subtract( const Object & );
-        virtual Object number_multiply( const Object & );
-        virtual Object number_remainder( const Object & );
-        virtual Object number_divmod( const Object & );
-        virtual Object number_lshift( const Object & );
-        virtual Object number_rshift( const Object & );
-        virtual Object number_and( const Object & );
-        virtual Object number_xor( const Object & );
-        virtual Object number_or( const Object & );
-        virtual Object number_power( const Object &, const Object & );
-
-        // Buffer
-        // QQQ need to add py3 interface
-
-    public:
-        // helper functions to call function fn_name with 0 to 9 args
-        Object callOnSelf( const std::string &fn_name );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5, const Object &arg6 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5, const Object &arg6,
-                                const Object &arg7 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5, const Object &arg6,
-                                const Object &arg7, const Object &arg8 );
-        Object callOnSelf( const std::string &fn_name,
-                                const Object &arg1, const Object &arg2, const Object &arg3,
-                                const Object &arg4, const Object &arg5, const Object &arg6,
-                                const Object &arg7, const Object &arg8, const Object &arg9 );
-
-    public:
-        virtual PyObject *selfPtr() = 0;
-        virtual Object self() = 0;
-
-    private:
-        void missing_method( void );
-        static PyObject *method_call_handler( PyObject *self, PyObject *args );
-    };
-
-} // Namespace Py
-
-// End of __CXX_ExtensionTypeBase__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/Extensions.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/Extensions.hxx
deleted file mode 100644
index 7533d97..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/Extensions.hxx
+++ /dev/null
@@ -1,189 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_Extensions__h
-#define __CXX_Extensions__h
-
-
-#ifdef _MSC_VER
-// disable warning C4786: symbol greater than 255 character,
-// okay to ignore
-#pragma warning( disable: 4786 )
-#endif
-
-#include "CXX/WrapPython.h"
-#include "CXX/Version.hxx"
-#include "CXX/Python3/Config.hxx"
-#include "CXX/Python3/CxxDebug.hxx"
-#include "CXX/Python3/Objects.hxx"
-
-extern "C" { extern PyObject py_object_initializer; }
-
-#include <vector>
-#include <map>
-
-// ----------------------------------------------------------------------
-
-namespace Py
-{
-    class ExtensionModuleBase;
-
-    // Make an Exception Type for use in raising custom exceptions
-    class ExtensionExceptionType : public Object
-    {
-    public:
-        ExtensionExceptionType();
-        virtual ~ExtensionExceptionType();
-
-        // call init to create the type
-        void init( ExtensionModuleBase &module, const std::string &name, ExtensionExceptionType &parent );
-        void init( ExtensionModuleBase &module, const std::string &name );
-    };
-
-    class MethodTable
-    {
-    public:
-        MethodTable();
-        virtual ~MethodTable();
-
-        void add( const char *method_name, PyCFunction f, const char *doc="", int flag=1 );
-        PyMethodDef *table();
-
-    protected:
-        std::vector<PyMethodDef> t;    // accumulator of PyMethodDef's
-        PyMethodDef *mt;        // Actual method table produced when full
-
-        static PyMethodDef method( const char* method_name, PyCFunction f, int flags=1, const char* doc="" );
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        MethodTable( const MethodTable &m );    //unimplemented
-        void operator=( const MethodTable &m );    //unimplemented
-
-    }; // end class MethodTable
-
-    // Note: Python calls noargs as varargs buts args==NULL
-    extern "C" typedef PyObject *(*method_noargs_call_handler_t)( PyObject *_self, PyObject * );
-    extern "C" typedef PyObject *(*method_varargs_call_handler_t)( PyObject *_self, PyObject *_args );
-    extern "C" typedef PyObject *(*method_keyword_call_handler_t)( PyObject *_self, PyObject *_args, PyObject *_dict );
-
-    template<class T>
-    class MethodDefExt : public PyMethodDef
-    {
-    public:
-        typedef Object (T::*method_noargs_function_t)();
-        typedef Object (T::*method_varargs_function_t)( const Tuple &args );
-        typedef Object (T::*method_keyword_function_t)( const Tuple &args, const Dict &kws );
-
-        // NOARGS
-        MethodDefExt
-        (
-            const char *_name,
-            method_noargs_function_t _function,
-            method_noargs_call_handler_t _handler,
-            const char *_doc
-        )
-        {
-            ext_meth_def.ml_name = const_cast<char *>( _name );
-            ext_meth_def.ml_meth = reinterpret_cast<method_varargs_call_handler_t>( _handler );
-            ext_meth_def.ml_flags = METH_NOARGS;
-            ext_meth_def.ml_doc = const_cast<char *>( _doc );
-
-            ext_noargs_function = _function;
-            ext_varargs_function = NULL;
-            ext_keyword_function = NULL;
-        }
-
-        // VARARGS
-        MethodDefExt
-        (
-            const char *_name,
-            method_varargs_function_t _function,
-            method_varargs_call_handler_t _handler,
-            const char *_doc
-        )
-        {
-            ext_meth_def.ml_name = const_cast<char *>( _name );
-            ext_meth_def.ml_meth = reinterpret_cast<method_varargs_call_handler_t>( _handler );
-            ext_meth_def.ml_flags = METH_VARARGS;
-            ext_meth_def.ml_doc = const_cast<char *>( _doc );
-
-            ext_noargs_function = NULL;
-            ext_varargs_function = _function;
-            ext_keyword_function = NULL;
-        }
-
-        // VARARGS + KEYWORD
-        MethodDefExt
-        (
-            const char *_name,
-            method_keyword_function_t _function,
-            method_keyword_call_handler_t _handler,
-            const char *_doc
-        )
-        {
-            ext_meth_def.ml_name = const_cast<char *>( _name );
-            ext_meth_def.ml_meth = reinterpret_cast<method_varargs_call_handler_t>( _handler );
-            ext_meth_def.ml_flags = METH_VARARGS|METH_KEYWORDS;
-            ext_meth_def.ml_doc = const_cast<char *>( _doc );
-
-            ext_noargs_function = NULL;
-            ext_varargs_function = NULL;
-            ext_keyword_function = _function;
-        }
-
-        ~MethodDefExt()
-        {}
-
-        PyMethodDef ext_meth_def;
-        method_noargs_function_t ext_noargs_function;
-        method_varargs_function_t ext_varargs_function;
-        method_keyword_function_t ext_keyword_function;
-        Object py_method;
-    };
-} // Namespace Py
-
-#include "CXX/Python3/ExtensionModule.hxx"
-#include "CXX/Python3/PythonType.hxx"
-#include "CXX/Python3/ExtensionTypeBase.hxx"
-#include "CXX/Python3/ExtensionOldType.hxx"
-#include "CXX/Python3/ExtensionType.hxx"
-
-// End of CXX_Extensions.h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/IndirectPythonInterface.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/IndirectPythonInterface.hxx
deleted file mode 100644
index fb97b72..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/IndirectPythonInterface.hxx
+++ /dev/null
@@ -1,186 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_INDIRECT_PYTHON_INTERFACE__HXX__
-#define __CXX_INDIRECT_PYTHON_INTERFACE__HXX__
-
-#include "CXX/WrapPython.h"
-
-namespace Py
-{
-bool InitialisePythonIndirectInterface();
-
-//
-//    Wrap Exception variables as function calls
-//
-PyObject * _Exc_Exception();
-PyObject * _Exc_StandardError();
-PyObject * _Exc_ArithmeticError();
-PyObject * _Exc_LookupError();
-
-PyObject * _Exc_AssertionError();
-PyObject * _Exc_AttributeError();
-PyObject * _Exc_EOFError();
-PyObject * _Exc_FloatingPointError();
-PyObject * _Exc_EnvironmentError();
-PyObject * _Exc_IOError();
-PyObject * _Exc_OSError();
-PyObject * _Exc_ImportError();
-PyObject * _Exc_IndexError();
-PyObject * _Exc_KeyError();
-PyObject * _Exc_KeyboardInterrupt();
-PyObject * _Exc_MemoryError();
-PyObject * _Exc_NameError();
-PyObject * _Exc_OverflowError();
-PyObject * _Exc_RuntimeError();
-PyObject * _Exc_NotImplementedError();
-PyObject * _Exc_SyntaxError();
-PyObject * _Exc_SystemError();
-PyObject * _Exc_SystemExit();
-PyObject * _Exc_TypeError();
-PyObject * _Exc_ValueError();
-PyObject * _Exc_ZeroDivisionError();
-#ifdef MS_WINDOWS
-PyObject * _Exc_WindowsError();
-#endif
-
-PyObject * _Exc_IndentationError();
-PyObject * _Exc_TabError();
-PyObject * _Exc_UnboundLocalError();
-PyObject * _Exc_UnicodeError();
-
-//
-//    Wrap Object variables as function calls
-//
-PyObject * _None();
-
-PyObject * _False();
-PyObject * _True();
-
-//
-//    Wrap Type variables as function calls
-//
-PyTypeObject * _List_Type();
-bool _List_Check( PyObject *o );
-
-PyTypeObject * _Buffer_Type();
-bool _Buffer_Check( PyObject *op );
-
-PyTypeObject * _Class_Type();
-bool _Class_Check( PyObject *op );
-
-PyTypeObject * _Instance_Type();
-bool _Instance_Check( PyObject *op );
-
-PyTypeObject * _Method_Type();
-bool _Method_Check( PyObject *op );
-
-PyTypeObject * _CObject_Type();
-bool _CObject_Check( PyObject *op );
-
-PyTypeObject * _Complex_Type();
-bool _Complex_Check( PyObject *op );
-
-PyTypeObject * _Dict_Type();
-bool _Dict_Check( PyObject *op );
-
-PyTypeObject * _File_Type();
-bool _File_Check( PyObject *op );
-
-PyTypeObject * _Float_Type();
-bool _Float_Check( PyObject *op );
-
-PyTypeObject * _Frame_Type();
-bool _Frame_Check( PyObject *op );
-
-PyTypeObject * _Function_Type();
-bool _Function_Check( PyObject *op );
-
-PyTypeObject * _Bool_Type();
-bool _Boolean_Check( PyObject *op );
-
-PyTypeObject * _Int_Type();
-bool _Int_Check( PyObject *op );
-
-PyTypeObject * _List_Type();
-bool _List_Check( PyObject *op );
-
-PyTypeObject * _Long_Type();
-bool _Long_Check( PyObject *op );
-
-PyTypeObject * _CFunction_Type();
-bool _CFunction_Check( PyObject *op );
-
-PyTypeObject * _Module_Type();
-bool _Module_Check( PyObject *op );
-
-PyTypeObject * _Type_Type();
-bool _Type_Check( PyObject *op );
-
-PyTypeObject * _Range_Type();
-bool _Range_Check( PyObject *op );
-
-PyTypeObject * _Slice_Type();
-bool _Slice_Check( PyObject *op );
-
-PyTypeObject * _Unicode_Type();
-bool _Unicode_Check( PyObject *op );
-
-PyTypeObject * _Bytes_Type();
-bool _Bytes_Check( PyObject *op );
-
-PyTypeObject * _TraceBack_Type();
-bool _TraceBack_Check( PyObject *v );
-
-PyTypeObject * _Tuple_Type();
-bool _Tuple_Check( PyObject *op );
-
-int &_Py_DebugFlag();
-int &_Py_InteractiveFlag();
-int &_Py_OptimizeFlag();
-int &_Py_NoSiteFlag();
-int &_Py_TabcheckFlag();
-int &_Py_VerboseFlag();
-int &_Py_UnicodeFlag();
-
-void _XINCREF( PyObject *op );
-void _XDECREF( PyObject *op );
-
-char *__Py_PackageContext();
-};
-
-#endif    // __CXX_INDIRECT_PYTHON_INTERFACE__HXX__
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/Objects.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/Objects.hxx
deleted file mode 100644
index 553dc7c..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/Objects.hxx
+++ /dev/null
@@ -1,3427 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_Objects__h
-#define __CXX_Objects__h
-
-#include "CXX/WrapPython.h"
-#include "CXX/Version.hxx"
-#include "CXX/Python3/Config.hxx"
-#include "CXX/Python3/CxxDebug.hxx"
-#include "CXX/Python3/Exception.hxx"
-
-#include <iostream>
-#include STR_STREAM
-#include <string>
-#include <iterator>
-#include <utility>
-#include <typeinfo>
-
-namespace Py
-{
-    typedef int sequence_index_type;    // type of an index into a sequence
-
-    // Forward declarations
-    class Object;
-    class Type;
-    template<TEMPLATE_TYPENAME T> class SeqBase;
-    class Bytes;
-    class String;
-    class List;
-    template<TEMPLATE_TYPENAME T> class MapBase;
-    class Tuple;
-    class Dict;
-
-    //===========================================================================//
-    // class Object
-    // The purpose of this class is to serve as the most general kind of
-    // Python object, for the purpose of writing C++ extensions in Python
-    // Objects hold a PyObject* which they own. This pointer is always a
-    // valid pointer to a Python object. In children we must maintain this behavior.
-    //
-    // Instructions on how to make your own class MyType descended from Object:
-    // (0) Pick a base class, either Object or perhaps SeqBase<T> or MapBase<T>.
-    //     This example assumes Object.
-
-    // (1) Write a routine int MyType_Check( PyObject * ) modeled after PyInt_Check,
-    //     PyFloat_Check, etc.
-
-    // (2) Add method accepts:
-    //     virtual bool accepts( PyObject *pyob ) const {
-    //         return pyob && MyType_Check( pyob );
-    // }
-
-    // (3) Include the following constructor and copy constructor
-    //
-    /*
-    explicit MyType( PyObject *pyob ): Object( pyob )
-    {
-        validate();
-    }
-
-    MyType( const Object &other ): Object( other.ptr() )
-    {
-        validate();
-    }
-    */
-
-    // Alernate version for the constructor to allow for construction from owned pointers:
-    /*
-    explicit MyType( PyObject *pyob ): Object( pyob )
-    {
-        validate();
-    }
-    */
-
-    // You may wish to add other constructors; see the classes below for examples.
-    // Each constructor must use "set" to set the pointer
-    // and end by validating the pointer you have created.
-
-    //( 4 ) Each class needs at least these two assignment operators:
-    /*
-    MyType &operator=( const Object &rhs )
-    {
-        return *this = *rhs;
-    }
-
-    Mytype &operator=( PyObject *rhsp )
-    {
-        if( ptr() != rhsp )
-            set( rhsp );
-        return *this;
-    }
-    */
-    // Note on accepts: constructors call the base class
-    // version of a virtual when calling the base class constructor,
-    // so the test has to be done explicitly in a descendent.
-
-    // If you are inheriting from PythonExtension<T> to define an object
-    // note that it contains PythonExtension<T>::check
-    // which you can use in accepts when writing a wrapper class.
-    // See Demo/range.h and Demo/range.cxx for an example.
-
-    class Object
-    {
-    private:
-        // the pointer to the Python object
-        // Only Object sets this directly.
-        // The default constructor for Object sets it to Py_None and
-        // child classes must use "set" to set it
-        //
-        PyObject *p;
-
-    protected:
-        void set( PyObject *pyob, bool owned = false )
-        {
-            release();
-            p = pyob;
-            if( !owned )
-            {
-                Py::_XINCREF( p );
-            }
-            validate();
-        }
-
-        void release()
-        {
-            Py::_XDECREF( p );
-            p = NULL;
-        }
-
-        void validate();
-
-    public:
-        // Constructor acquires new ownership of pointer unless explicitly told not to.
-        explicit Object( PyObject *pyob=Py::_None(), bool owned = false )
-        : p( pyob )
-        {
-            if( !owned )
-            {
-                Py::_XINCREF( p );
-            }
-            validate();
-        }
-
-        // Copy constructor acquires new ownership of pointer
-        Object( const Object &ob )
-        : p( ob.p )
-        {
-            Py::_XINCREF( p );
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        Object &operator=( const Object &rhs )
-        {
-            set( rhs.p );
-            return *this;
-        }
-
-        Object &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-
-            return *this;
-        }
-
-        // Destructor
-        virtual ~Object()
-        {
-            release();
-        }
-
-        // Loaning the pointer to others, retain ownership
-        PyObject *operator*() const
-        {
-            return p;
-        }
-
-        // Explicit reference_counting changes
-        void increment_reference_count()
-        {
-            Py::_XINCREF( p );
-        }
-
-        void decrement_reference_count()
-        {
-            // not allowed to commit suicide, however
-            if( reference_count() == 1 )
-            throw RuntimeError( "Object::decrement_reference_count error." );
-            Py::_XDECREF( p );
-        }
-
-        // Would like to call this pointer() but messes up STL in SeqBase<T>
-        PyObject *ptr() const
-        {
-            return p;
-        }
-
-        //
-        // Queries
-        //
-
-        // Can pyob be used in this object's constructor?
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            // allow any object or NULL
-            return true;
-        }
-
-        Py_ssize_t reference_count() const
-        { // the reference count
-            return p ? p->ob_refcnt : 0;
-        }
-
-        Type type() const; // the type object associated with this one
-
-        String str() const; // the str() representation
-
-        std::string as_string() const;
-
-        String repr() const; // the repr() representation
-
-        List dir() const; // the dir() list
-
-        bool hasAttr( const std::string &s ) const
-        {
-            return PyObject_HasAttrString( p, const_cast<char*>( s.c_str() ) ) ? true: false;
-        }
-
-        Object getAttr( const std::string &s ) const
-        {
-            return Object( PyObject_GetAttrString( p, const_cast<char*>( s.c_str() ) ), true );
-        }
-
-        Object callMemberFunction( const std::string &function_name ) const;
-        Object callMemberFunction( const std::string &function_name, const Tuple &args ) const;
-        Object callMemberFunction( const std::string &function_name, const Tuple &args, const Dict &kw ) const;
-
-        Object getItem( const Object &key ) const
-        {
-            return Object( PyObject_GetItem( p, *key ), true );
-        }
-
-        long hashValue() const
-        {
-            return PyObject_Hash( p );
-        }
-
-        // convert to bool
-        bool as_bool() const
-        {
-            return PyObject_IsTrue( ptr() ) != 0;
-        }
-
-        //operator bool() const
-        //{
-        //    return as_bool();
-        //}
-
-        // int print( FILE *fp, int flags=Py_Print_RAW )
-        //{
-        //    return PyObject_Print( p, fp, flags );
-        //}
-
-        bool is( PyObject *pother ) const
-        {  // identity test
-            return p == pother;
-        }
-
-        bool is( const Object &other ) const
-        { // identity test
-            return p == other.p;
-        }
-
-        bool isNull() const
-        {
-            return p == NULL;
-        }
-
-        bool isNone() const
-        {
-            return p == _None();
-        }
-
-        bool isCallable() const
-        {
-            return PyCallable_Check( p ) != 0;
-        }
-
-        bool isDict() const
-        {
-            return Py::_Dict_Check( p );
-        }
-
-        bool isList() const
-        {
-            return Py::_List_Check( p );
-        }
-
-        bool isMapping() const
-        {
-            return PyMapping_Check( p ) != 0;
-        }
-
-        bool isNumeric() const
-        {
-            return PyNumber_Check( p ) != 0;
-        }
-
-        bool isSequence() const
-        {
-            return PySequence_Check( p ) != 0;
-        }
-
-        bool isTrue() const
-        {
-            return PyObject_IsTrue( p ) != 0;
-        }
-
-        bool isType( const Type &t ) const;
-
-        bool isTuple() const
-        {
-            return Py::_Tuple_Check( p );
-        }
-
-        bool isString() const
-        {
-            return Py::_Unicode_Check( p );
-        }
-
-        bool isBytes() const
-        {
-            return Py::_Bytes_Check( p );
-        }
-
-        bool isBoolean() const
-        {
-            return Py::_Boolean_Check( p );
-        }
-
-        // Commands
-        void setAttr( const std::string &s, const Object &value )
-        {
-            if( PyObject_SetAttrString( p, const_cast<char*>( s.c_str() ), *value ) == -1 )
-                throw AttributeError( "getAttr failed." );
-        }
-
-        void delAttr( const std::string &s )
-        {
-            if( PyObject_DelAttrString( p, const_cast<char*>( s.c_str() ) ) == -1 )
-                throw AttributeError( "delAttr failed." );
-        }
-
-        // PyObject_SetItem is too weird to be using from C++
-        // so it is intentionally omitted.
-
-        void delItem( const Object &key )
-        {
-            //if( PyObject_DelItem( p, *key ) == -1 )
-            // failed to link on Windows?
-            throw KeyError( "delItem failed." );
-        }
-        // Equality and comparison use PyObject_Compare
-
-    };
-    // End of class Object
-
-    // Null can be return from when it is require to return NULL to Python from a method
-    class Null: public Object
-    {
-    public:
-        Null()
-        : Object( NULL )
-        {
-        }
-        virtual ~Null()
-        {
-        }
-
-        bool accepts( PyObject *pyob )
-        {
-            return pyob == NULL;
-        }
-    };
-
-    //------------------------------------------------------------
-    bool operator==( const Object &o1, const Object &o2 );
-    bool operator!=( const Object &o1, const Object &o2 );
-    bool operator>=( const Object &o1, const Object &o2 );
-    bool operator<=( const Object &o1, const Object &o2 );
-    bool operator<( const Object &o1, const Object &o2 );
-    bool operator>( const Object &o1, const Object &o2 );
-
-    //------------------------------------------------------------
-
-
-    //
-    //    Convert an owned Python pointer into a PyCXX Object
-    //
-    inline Object asObject( PyObject *p )
-    {
-        return Object( p, true );
-    }
-
-    // new_reference_to also overloaded below on Object
-    inline PyObject *new_reference_to( PyObject *p )
-    {
-        Py::_XINCREF( p );
-        return p;
-    }
-
-    inline PyObject *new_reference_to( const Object &g )
-    {
-        PyObject *p = g.ptr();
-        Py::_XINCREF( p );
-        return p;
-    }
-
-    // Python special None value
-    inline Object None()
-    {
-        return Object( Py::_None() );
-    }
-
-    // Python special Boolean values
-    inline Object False()
-    {
-        return Object( Py::_False() );
-    }
-
-    inline Object True()
-    {
-        return Object( Py::_True() );
-    }
-
-    // TMM: 31May'01 - Added the #ifndef so I can exlude iostreams.
-#ifndef CXX_NO_IOSTREAMS
-    std::ostream &operator<<( std::ostream &os, const Object &ob );
-#endif
-
-    // Class Type
-    class Type: public Object
-    {
-    public:
-        explicit Type( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        Type( const Object &ob )
-        : Object( *ob )
-        {
-            validate();
-        }
-
-        Type( const Type &t )
-        : Object( t )
-        {
-            validate();
-        }
-
-        Type &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Type &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && Py::_Type_Check( pyob );
-        }
-    };
-
-    // ===============================================
-    // class boolean
-    class Boolean: public Object
-    {
-    public:
-        // Constructor
-        Boolean( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        Boolean( const Boolean &ob )
-        : Object( *ob )
-        {
-            validate();
-        }
-
-        // create from bool
-        Boolean( bool v=false )
-        {
-            set( PyBool_FromLong( v ? 1 : 0 ), true );
-            validate();
-        }
-
-        explicit Boolean( const Object &ob )
-        : Object( *ob )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        Boolean &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Boolean &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            // accepts any object that can be converted to a boolean
-            return pyob && PyObject_IsTrue( pyob ) != -1;
-        }
-
-        Boolean &operator=( bool v )
-        {
-            set( PyBool_FromLong( v ? 1 : 0 ), true );
-            return *this;
-        }
-
-        operator bool() const
-        {
-            return as_bool();
-        }
-    };
-
-    // ===============================================
-    // class Long
-    class Long: public Object
-    {
-    public:
-        // Constructor
-        explicit Long( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        Long( const Long &ob )
-        : Object( ob.ptr() )
-        {
-            validate();
-        }
-
-        // try to create from any object
-        explicit Long( const Object &ob )
-        : Object( PyNumber_Long( *ob ), true )
-        {
-            validate();
-        }
-
-        // create from long
-        explicit Long( long v = 0L )
-        : Object( PyLong_FromLong( v ), true )
-        {
-            validate();
-        }
-
-        // create from unsigned long
-        explicit Long( unsigned long v )
-        : Object( PyLong_FromUnsignedLong( v ), true )
-        {
-            validate();
-        }
-
-        // create from int
-        explicit Long( int v )
-        : Object( PyLong_FromLong( static_cast<long>( v ) ), true )
-        {
-            validate();
-        }
-
-#ifdef HAVE_LONG_LONG
-        // create from long long
-        explicit Long( PY_LONG_LONG v )
-        : Object( PyLong_FromLongLong( v ), true )
-        {
-            validate();
-        }
-
-        // create from unsigned long long
-        explicit Long( unsigned PY_LONG_LONG v )
-        : Object( PyLong_FromUnsignedLongLong( v ), true )
-        {
-            validate();
-        }
-#endif
-
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && Py::_Long_Check( pyob );
-        }
-
-        // Assignment acquires new ownership of pointer
-        Long &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Long &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( PyNumber_Long( rhsp ), true );
-            return *this;
-        }
-
-        // assign from an int
-        Long &operator=( int v )
-        {
-            set( PyLong_FromLong( long( v ) ), true );
-            return *this;
-        }
-
-        // assign from long
-        Long &operator=( long v )
-        {
-            set( PyLong_FromLong( v ), true );
-            return *this;
-        }
-
-        // assign from unsigned long
-        Long &operator=( unsigned long v )
-        {
-            set( PyLong_FromUnsignedLong( v ), true );
-            return *this;
-        }
-
-#ifdef HAVE_LONG_LONG
-        Long &operator=( PY_LONG_LONG v )
-        {
-            set( PyLong_FromLongLong( v ), true );
-            return *this;
-        }
-
-        Long &operator=( unsigned PY_LONG_LONG v )
-        {
-            set( PyLong_FromUnsignedLongLong( v ), true );
-            return *this;
-        }
-#endif
-
-        //operator bool() const
-        //{
-        //    return as_bool();
-        //}
-
-        // convert to long
-        long as_long() const
-        {
-            return PyLong_AsLong( ptr() );
-        }
-
-        operator long() const
-        {
-            return as_long();
-        }
-
-        operator int() const
-        {
-            return static_cast<int>( as_long() );
-        }
-
-        // convert to unsigned
-        long as_unsigned_long() const
-        {
-            return PyLong_AsUnsignedLong( ptr() );
-        }
-
-        operator unsigned long() const
-        {
-            return as_unsigned_long();
-        }
-
-        double as_double() const
-        {
-            return PyLong_AsDouble( ptr() );
-        }
-
-        operator double() const
-        {
-            return as_double();
-        }
-
-#ifdef HAVE_LONG_LONG
-        PY_LONG_LONG as_long_long() const
-        {
-            return PyLong_AsLongLong( ptr() );
-        }
-
-        operator PY_LONG_LONG() const
-        {
-           return as_long_long();
-        }
-
-        unsigned PY_LONG_LONG as_unsigned_long_long() const
-        {
-            return PyLong_AsUnsignedLongLong( ptr() );
-        }
-
-        operator unsigned PY_LONG_LONG() const
-        {
-            return as_unsigned_long_long();
-        }
-#endif
-
-        // prefix ++
-        Long operator++()
-        {
-            set( PyNumber_Add( ptr(), *Long( 1 ) ) );
-            return *this;
-        }
-
-        // postfix ++
-        Long operator++( int )
-        {
-            Long a = *this;
-            set( PyNumber_Add( ptr(), *Long( 1 ) ) );
-            return a;
-        }
-
-        // prefix --
-        Long operator--()
-        {
-            set( PyNumber_Subtract( ptr(), *Long( 1 ) ) );
-            return *this;
-        }
-
-        // postfix --
-        Long operator--( int )
-        {
-            Long a = *this;
-            set( PyNumber_Subtract( ptr(), *Long( 1 ) ) );
-            return a;
-        }
-    };
-
-#ifdef PYCXX_PYTHON_2TO3
-    // PyCXX for Python2 had an Int and LongLong classes
-    typedef Long Int;
-#ifdef HAVE_LONG_LONG
-    typedef Long LongLong;
-#endif
-#endif
-
-#if 1
-    //------------------------------------------------------------
-    // compare operators
-    bool operator!=( const Long &a, const Long &b );
-    bool operator!=( const Long &a, int b );
-    bool operator!=( const Long &a, long b );
-    bool operator!=( int a, const Long &b );
-    bool operator!=( long a, const Long &b );
-    //------------------------------
-    bool operator==( const Long &a, const Long &b );
-    bool operator==( const Long &a, int b );
-    bool operator==( const Long &a, long b );
-    bool operator==( int a, const Long &b );
-    bool operator==( long a, const Long &b );
-    //------------------------------
-    bool operator>( const Long &a, const Long &b );
-    bool operator>( const Long &a, int b );
-    bool operator>( const Long &a, long b );
-    bool operator>( int a, const Long &b );
-    bool operator>( long a, const Long &b );
-    //------------------------------
-    bool operator>=( const Long &a, const Long &b );
-    bool operator>=( const Long &a, int b );
-    bool operator>=( const Long &a, long b );
-    bool operator>=( int a, const Long &b );
-    bool operator>=( long a, const Long &b );
-    //------------------------------
-    bool operator<( const Long &a, const Long &b );
-    bool operator<( const Long &a, int b );
-    bool operator<( const Long &a, long b );
-    bool operator<( int a, const Long &b );
-    bool operator<( long a, const Long &b );
-    //------------------------------
-    bool operator<=( const Long &a, const Long &b );
-    bool operator<=( int a, const Long &b );
-    bool operator<=( long a, const Long &b );
-    bool operator<=( const Long &a, int b );
-    bool operator<=( const Long &a, long b );
-
-#ifdef HAVE_LONG_LONG
-    //------------------------------
-    bool operator!=( const Long &a, PY_LONG_LONG b );
-    bool operator!=( PY_LONG_LONG a, const Long &b );
-    //------------------------------
-    bool operator==( const Long &a, PY_LONG_LONG b );
-    bool operator==( PY_LONG_LONG a, const Long &b );
-    //------------------------------
-    bool operator>( const Long &a, PY_LONG_LONG b );
-    bool operator>( PY_LONG_LONG a, const Long &b );
-    //------------------------------
-    bool operator>=( const Long &a, PY_LONG_LONG b );
-    bool operator>=( PY_LONG_LONG a, const Long &b );
-    //------------------------------
-    bool operator<( const Long &a, PY_LONG_LONG b );
-    bool operator<( PY_LONG_LONG a, const Long &b );
-    //------------------------------
-    bool operator<=( const Long &a, PY_LONG_LONG b );
-    bool operator<=( PY_LONG_LONG a, const Long &b );
-#endif
-#endif
-
-    // ===============================================
-    // class Float
-    //
-    class Float: public Object
-    {
-    public:
-        // Constructor
-        explicit Float( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        Float( const Float &f )
-        : Object( f )
-        {
-            validate();
-        }
-
-        // make from double
-        explicit Float( double v=0.0 )
-        : Object( PyFloat_FromDouble( v ), true )
-        {
-            validate();
-        }
-
-        // try to make from any object
-        Float( const Object &ob )
-        : Object( PyNumber_Float( *ob ), true )
-        {
-            validate();
-        }
-
-        Float &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Float &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( PyNumber_Float( rhsp ), true );
-            return *this;
-        }
-
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && Py::_Float_Check( pyob );
-        }
-
-        double as_double() const
-        {
-            return PyFloat_AsDouble( ptr() );
-        }
-
-        // convert to double
-        operator double() const
-        {
-            return as_double();
-        }
-
-        // assign from a double
-        Float &operator=( double v )
-        {
-            set( PyFloat_FromDouble( v ), true );
-            return *this;
-        }
-        // assign from an int
-        Float &operator=( int v )
-        {
-            set( PyFloat_FromDouble( double( v ) ), true );
-            return *this;
-        }
-        // assign from long
-        Float &operator=( long v )
-        {
-            set( PyFloat_FromDouble( double( v ) ), true );
-            return *this;
-        }
-        // assign from an Long
-        Float &operator=( const Long &iob )
-        {
-            set( PyFloat_FromDouble( double( iob.as_long() ) ), true );
-            return *this;
-        }
-    };
-
-    //------------------------------------------------------------
-    // compare operators
-    bool operator!=( const Float &a, const Float &b );
-    bool operator!=( const Float &a, double b );
-    bool operator!=( double a, const Float &b );
-    //------------------------------
-    bool operator==( const Float &a, const Float &b );
-    bool operator==( const Float &a, double b );
-    bool operator==( double a, const Float &b );
-    //------------------------------
-    bool operator>( const Float &a, const Float &b );
-    bool operator>( const Float &a, double b );
-    bool operator>( double a, const Float &b );
-    //------------------------------
-    bool operator>=( const Float &a, const Float &b );
-    bool operator>=( const Float &a, double b );
-    bool operator>=( double a, const Float &b );
-    //------------------------------
-    bool operator<( const Float &a, const Float &b );
-    bool operator<( const Float &a, double b );
-    bool operator<( double a, const Float &b );
-    //------------------------------
-    bool operator<=( const Float &a, const Float &b );
-    bool operator<=( double a, const Float &b );
-    bool operator<=( const Float &a, double b );
-
-    // ===============================================
-    // class Complex
-    class Complex: public Object
-    {
-    public:
-        // Constructor
-        explicit Complex( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        Complex( const Complex &f )
-        : Object( f )
-        {
-            validate();
-        }
-
-        // make from double
-        explicit Complex( double v=0.0, double w=0.0 )
-        :Object( PyComplex_FromDoubles( v, w ), true )
-        {
-            validate();
-        }
-
-        Complex &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Complex &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && Py::_Complex_Check( pyob );
-        }
-        // convert to Py_complex
-        operator Py_complex() const
-        {
-            return PyComplex_AsCComplex( ptr() );
-        }
-        // assign from a Py_complex
-        Complex &operator=( const Py_complex &v )
-        {
-            set( PyComplex_FromCComplex( v ), true );
-            return *this;
-        }
-        // assign from a double
-        Complex &operator=( double v )
-        {
-            set( PyComplex_FromDoubles( v, 0.0 ), true );
-            return *this;
-        }
-        // assign from an int
-        Complex &operator=( int v )
-        {
-            set( PyComplex_FromDoubles( double( v ), 0.0 ), true );
-            return *this;
-        }
-        // assign from long
-        Complex &operator=( long v )
-        {
-            set( PyComplex_FromDoubles( double( v ), 0.0 ), true );
-            return *this;
-        }
-        // assign from an Long
-        Complex &operator=( const Long &iob )
-        {
-            set( PyComplex_FromDoubles( double( iob.as_long() ), 0.0 ), true );
-            return *this;
-        }
-
-        double real() const
-        {
-            return PyComplex_RealAsDouble( ptr() );
-        }
-
-        double imag() const
-        {
-            return PyComplex_ImagAsDouble( ptr() );
-        }
-    };
-    // Sequences
-    // Sequences are here represented as sequences of items of type T.
-    // The base class SeqBase<T> represents that.
-    // In basic Python T is always "Object".
-
-    // seqref<T> is what you get if you get elements from a non-const SeqBase<T>.
-    // Note: seqref<T> could probably be a nested class in SeqBase<T> but that might stress
-    // some compilers needlessly. Simlarly for mapref later.
-
-    // While this class is not intended for enduser use, it needs some public
-    // constructors for the benefit of the STL.
-
-    // See Scott Meyer's More Essential C++ for a description of proxies.
-    // This application is even more complicated. We are doing an unusual thing
-    // in having a double proxy. If we want the STL to work
-    // properly we have to compromise by storing the rvalue inside. The
-    // entire Object API is repeated so that things like s[i].isList() will
-    // work properly.
-
-    // Still, once in a while a weird compiler message may occur using expressions like x[i]
-    // Changing them to Object( x[i] ) helps the compiler to understand that the
-    // conversion of a seqref to an Object is wanted.
-
-    template<TEMPLATE_TYPENAME T>
-    class seqref
-    {
-    protected:
-        SeqBase<T> &s; // the sequence
-        int offset; // item number
-        T the_item; // lvalue
-
-    public:
-        seqref( SeqBase<T> &seq, sequence_index_type j )
-        : s( seq )
-        , offset( j )
-        , the_item( s.getItem( j ) )
-        {}
-
-        seqref( const seqref<T> &range )
-        : s( range.s )
-        , offset( range.offset )
-        , the_item( range.the_item )
-        {}
-
-        // TMM: added this seqref ctor for use with STL algorithms
-        seqref( Object &obj )
-        : s( dynamic_cast< SeqBase<T>&>( obj ) )
-        , offset( NULL )
-        , the_item( s.getItem( offset ) )
-        {}
-
-        ~seqref()
-        {}
-
-        operator T() const
-        { // rvalue
-            return the_item;
-        }
-
-        seqref<T> &operator=( const seqref<T> &rhs )
-        { //used as lvalue
-            the_item = rhs.the_item;
-            s.setItem( offset, the_item );
-            return *this;
-        }
-
-        seqref<T> &operator=( const T &ob )
-        { // used as lvalue
-            the_item = ob;
-            s.setItem( offset, ob );
-            return *this;
-        }
-
-        // forward everything else to the item
-        PyObject *ptr() const
-        {
-            return the_item.ptr();
-        }
-
-        int reference_count() const
-        { // the reference count
-            return the_item.reference_count();
-        }
-
-        Type type() const
-        {
-            return the_item.type();
-        }
-
-        String str() const;
-        String repr() const;
-
-        bool hasAttr( const std::string &attr_name ) const
-        {
-            return the_item.hasAttr( attr_name );
-        }
-
-        Object getAttr( const std::string &attr_name ) const
-        {
-            return the_item.getAttr( attr_name );
-        }
-
-        Object getItem( const Object &key ) const
-        {
-            return the_item.getItem( key );
-        }
-
-        long hashValue() const
-        {
-            return the_item.hashValue();
-        }
-
-        bool isCallable() const
-        {
-            return the_item.isCallable();
-        }
-
-        bool isInstance() const
-        {
-            return the_item.isInstance();
-        }
-
-        bool isDict() const
-        {
-            return the_item.isDict();
-        }
-
-        bool isList() const
-        {
-            return the_item.isList();
-        }
-
-        bool isMapping() const
-        {
-            return the_item.isMapping();
-        }
-
-        bool isNumeric() const
-        {
-            return the_item.isNumeric();
-        }
-
-        bool isSequence() const
-        {
-            return the_item.isSequence();
-        }
-
-        bool isTrue() const
-        {
-            return the_item.isTrue();
-        }
-
-        bool isType( const Type &t ) const
-        {
-            return the_item.isType( t );
-        }
-
-        bool isTuple() const
-        {
-            return the_item.isTuple();
-        }
-
-        bool isString() const
-        {
-            return the_item.isString();
-        }
-        // Commands
-        void setAttr( const std::string &attr_name, const Object &value )
-        {
-            the_item.setAttr( attr_name, value );
-        }
-
-        void delAttr( const std::string &attr_name )
-        {
-            the_item.delAttr( attr_name );
-        }
-
-        void delItem( const Object &key )
-        {
-            the_item.delItem( key );
-        }
-
-        bool operator==( const Object &o2 ) const
-        {
-            return the_item == o2;
-        }
-
-        bool operator!=( const Object &o2 ) const
-        {
-            return the_item != o2;
-        }
-
-        bool operator>=( const Object &o2 ) const
-        {
-            return the_item >= o2;
-        }
-
-        bool operator<=( const Object &o2 ) const
-        {
-            return the_item <= o2;
-        }
-
-        bool operator<( const Object &o2 ) const
-        {
-            return the_item < o2;
-        }
-
-        bool operator>( const Object &o2 ) const
-        {
-            return the_item > o2;
-        }
-    }; // end of seqref
-
-
-    // class SeqBase<T>
-    // ...the base class for all sequence types
-
-    template<TEMPLATE_TYPENAME T>
-    class SeqBase: public Object
-    {
-    public:
-        // STL definitions
-        typedef size_t size_type;
-        typedef seqref<T> reference;
-        typedef T const_reference;
-        typedef seqref<T> *pointer;
-        typedef int difference_type;
-        typedef T value_type;        // TMM: 26Jun'01
-
-        virtual size_type max_size() const
-        {
-            return std::string::npos; // ?
-        }
-
-        virtual size_type capacity() const
-        {
-            return size();
-        }
-
-        virtual void swap( SeqBase<T> &c )
-        {
-            SeqBase<T> temp = c;
-            c = ptr();
-            set( temp.ptr() );
-        }
-
-        virtual size_type size() const
-        {
-            return PySequence_Length( ptr() );
-        }
-
-        explicit SeqBase<T>()
-        :Object( PyTuple_New( 0 ), true )
-        {
-            validate();
-        }
-
-        explicit SeqBase<T>( PyObject *pyob, bool owned=false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        SeqBase<T>( const Object &ob )
-        : Object( ob )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-
-        SeqBase<T> &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        SeqBase<T> &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && PySequence_Check( pyob );
-        }
-
-        size_type length() const
-        {
-            return PySequence_Length( ptr() );
-        }
-
-        // Element access
-        const T operator[]( sequence_index_type index ) const
-        {
-            return getItem( index );
-        }
-
-        seqref<T> operator[]( sequence_index_type index )
-        {
-            return seqref<T>( *this, index );
-        }
-
-        virtual T getItem( sequence_index_type i ) const
-        {
-            return T( asObject( PySequence_GetItem( ptr(), i ) ) );
-        }
-
-        virtual void setItem( sequence_index_type i, const T &ob )
-        {
-            if( PySequence_SetItem( ptr(), i, *ob ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        SeqBase<T> repeat( int count ) const
-        {
-            return SeqBase<T>( PySequence_Repeat( ptr(), count ), true );
-        }
-
-        SeqBase<T> concat( const SeqBase<T> &other ) const
-        {
-            return SeqBase<T>( PySequence_Concat( ptr(), *other ), true );
-        }
-
-        // more STL compatability
-        const T front() const
-        {
-            return getItem( 0 );
-        }
-
-        seqref<T> front()
-        {
-            return seqref<T>( *this, 0 );
-        }
-
-        const T back() const
-        {
-            return getItem( size()-1 );
-        }
-
-        seqref<T> back()
-        {
-            return seqref<T>( *this, size()-1 );
-        }
-
-        void verify_length( size_type required_size ) const
-        {
-            if( size() != required_size )
-                throw IndexError( "Unexpected SeqBase<T> length." );
-        }
-
-        void verify_length( size_type min_size, size_type max_size ) const
-        {
-            size_type n = size();
-            if( n < min_size || n > max_size )
-                throw IndexError( "Unexpected SeqBase<T> length." );
-        }
-
-        class iterator
-        : public random_access_iterator_parent( seqref<T> )
-        {
-        protected:
-            friend class SeqBase<T>;
-            SeqBase<T> *seq;
-            int count;
-
-        public:
-            ~iterator()
-            {}
-
-            iterator()
-            : seq( 0 )
-            , count( 0 )
-            {}
-
-            iterator( SeqBase<T> *s, int where )
-            : seq( s )
-            , count( where )
-            {}
-
-            iterator( const iterator &other )
-            : seq( other.seq )
-            , count( other.count )
-            {}
-
-            bool eql( const iterator &other ) const
-            {
-                return seq->ptr() == other.seq->ptr() && count == other.count;
-            }
-
-            bool neq( const iterator &other ) const
-            {
-                return seq->ptr() != other.seq->ptr() || count != other.count;
-            }
-
-            bool lss( const iterator &other ) const
-            {
-                return count < other.count;
-            }
-
-            bool gtr( const iterator &other ) const
-            {
-                return count > other.count;
-            }
-
-            bool leq( const iterator &other ) const
-            {
-                return count <= other.count;
-            }
-
-            bool geq( const iterator &other ) const
-            {
-                return count >= other.count;
-            }
-
-            seqref<T> operator*()
-            {
-                return seqref<T>( *seq, count );
-            }
-
-            seqref<T> operator[]( sequence_index_type i )
-            {
-                return seqref<T>( *seq, count + i );
-            }
-
-            iterator &operator=( const iterator &other )
-            {
-                if( this != &other )
-                {
-                    seq = other.seq;
-                    count = other.count;
-                }
-                return *this;
-            }
-
-            iterator operator+( int n ) const
-            {
-                return iterator( seq, count + n );
-            }
-
-            iterator operator-( int n ) const
-            {
-                return iterator( seq, count - n );
-            }
-
-            iterator &operator+=( int n )
-            {
-                count = count + n;
-                return *this;
-            }
-
-            iterator &operator-=( int n )
-            {
-                count = count - n;
-                return *this;
-            }
-
-            int operator-( const iterator &other ) const
-            {
-                if( seq.ptr() != other.seq.ptr() )
-                    throw RuntimeError( "SeqBase<T>::iterator comparison error" );
-
-                return count - other.count;
-            }
-
-            // prefix ++
-            iterator &operator++()
-            {
-                count++;
-                return *this;
-            }
-
-            // postfix ++
-            iterator operator++( int )
-            {
-                return iterator( seq, count++ );
-            }
-
-            // prefix --
-            iterator &operator--()
-            {
-                count--;
-                return *this;
-            }
-
-            // postfix --
-            iterator operator--( int )
-            {
-                return iterator( seq, count-- );
-            }
-
-            std::string diagnose() const
-            {
-                std::OSTRSTREAM oss;
-                oss << "iterator diagnosis " << seq << ", " << count << std::ends;
-                return std::string( oss.str() );
-            }
-
-        };    // end of class SeqBase<T>::iterator
-
-        iterator begin()
-        {
-            return iterator( this, 0 );
-        }
-
-        iterator end()
-        {
-            return iterator( this, length() );
-        }
-
-        class const_iterator
-        : public random_access_iterator_parent( const Object )
-        {
-        protected:
-            friend class SeqBase<T>;
-            const SeqBase<T> *seq;
-            sequence_index_type count;
-
-        public:
-            ~const_iterator()
-            {}
-
-            const_iterator()
-            : seq( 0 )
-            , count( 0 )
-            {}
-
-            const_iterator( const SeqBase<T> *s, int where )
-            : seq( s )
-            , count( where )
-            {}
-
-            const_iterator( const const_iterator &other )
-            : seq( other.seq )
-            , count( other.count )
-            {}
-
-            const T operator*() const
-            {
-                return seq->getItem( count );
-            }
-
-            const T operator[]( sequence_index_type i ) const
-            {
-                return seq->getItem( count + i );
-            }
-
-            const_iterator &operator=( const const_iterator &other )
-            {
-                if( this != &other )
-                {
-                    seq = other.seq;
-                    count = other.count;
-                }
-                return *this;
-            }
-
-            const_iterator operator+( int n ) const
-            {
-                return const_iterator( seq, count + n );
-            }
-
-            bool eql( const const_iterator &other ) const
-            {
-                return seq->ptr() == other.seq->ptr() && count == other.count;
-            }
-
-            bool neq( const const_iterator &other ) const
-            {
-                return seq->ptr() != other.seq->ptr() || count != other.count;
-            }
-
-            bool lss( const const_iterator &other ) const
-            {
-                return count < other.count;
-            }
-
-            bool gtr( const const_iterator &other ) const
-            {
-                return count > other.count;
-            }
-
-            bool leq( const const_iterator &other ) const
-            {
-                return count <= other.count;
-            }
-
-            bool geq( const const_iterator &other ) const
-            {
-                return count >= other.count;
-            }
-
-            const_iterator operator-( int n )
-            {
-                return const_iterator( seq, count - n );
-            }
-
-            const_iterator &operator+=( int n )
-            {
-                count = count + n;
-                return *this;
-            }
-
-            const_iterator &operator-=( int n )
-            {
-                count = count - n;
-                return *this;
-            }
-
-            int operator-( const const_iterator &other ) const
-            {
-                if( *seq != *other.seq )
-                    throw RuntimeError( "SeqBase<T>::const_iterator::- error" );
-                return count - other.count;
-            }
-
-            // prefix ++
-            const_iterator &operator++()
-            {
-                count++;
-                return *this;
-            }
-
-            // postfix ++
-            const_iterator operator++( int )
-            {
-                return const_iterator( seq, count++ );
-            }
-
-            // prefix --
-            const_iterator &operator--()
-            {
-                count--;
-                return *this;
-            }
-
-            // postfix --
-            const_iterator operator--( int )
-            {
-                return const_iterator( seq, count-- );
-            }
-
-        };    // end of class SeqBase<T>::const_iterator
-
-        const_iterator begin() const
-        {
-            return const_iterator( this, 0 );
-        }
-
-        const_iterator end() const
-        {
-            return const_iterator( this, length() );
-        }
-    };
-
-    // Here's an important typedef you might miss if reading too fast...
-    typedef SeqBase<Object> Sequence;
-
-    template <TEMPLATE_TYPENAME T> bool operator==( const EXPLICIT_TYPENAME SeqBase<T>::iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator!=( const EXPLICIT_TYPENAME SeqBase<T>::iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator< ( const EXPLICIT_TYPENAME SeqBase<T>::iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator> ( const EXPLICIT_TYPENAME SeqBase<T>::iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator<=( const EXPLICIT_TYPENAME SeqBase<T>::iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator>=( const EXPLICIT_TYPENAME SeqBase<T>::iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::iterator &right );
-
-    template <TEMPLATE_TYPENAME T> bool operator==( const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator!=( const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator< ( const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator> ( const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator<=( const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator>=( const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator &right ); 
-
-
-    extern bool operator==( const Sequence::iterator &left, const Sequence::iterator &right );
-    extern bool operator!=( const Sequence::iterator &left, const Sequence::iterator &right );
-    extern bool operator< ( const Sequence::iterator &left, const Sequence::iterator &right );
-    extern bool operator> ( const Sequence::iterator &left, const Sequence::iterator &right );
-    extern bool operator<=( const Sequence::iterator &left, const Sequence::iterator &right );
-    extern bool operator>=( const Sequence::iterator &left, const Sequence::iterator &right );
-
-    extern bool operator==( const Sequence::const_iterator &left, const Sequence::const_iterator &right );
-    extern bool operator!=( const Sequence::const_iterator &left, const Sequence::const_iterator &right );
-    extern bool operator< ( const Sequence::const_iterator &left, const Sequence::const_iterator &right );
-    extern bool operator> ( const Sequence::const_iterator &left, const Sequence::const_iterator &right );
-    extern bool operator<=( const Sequence::const_iterator &left, const Sequence::const_iterator &right );
-    extern bool operator>=( const Sequence::const_iterator &left, const Sequence::const_iterator &right ); 
-
-    // ==================================================
-    // class Char
-    // Python strings return strings as individual elements.
-    // I'll try having a class Char which is a String of length 1
-    //
-    typedef std::basic_string<Py_UNICODE> unicodestring;
-    extern Py_UNICODE unicode_null_string[1];
-
-    class Byte: public Object
-    {
-    public:
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob != NULL
-                && Py::_Unicode_Check( pyob )
-                && PySequence_Length( pyob ) == 1;
-        }
-
-        explicit Byte( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        Byte( const Object &ob )
-        : Object( ob )
-        {
-            validate();
-        }
-
-        Byte( const std::string &v = "" )
-        : Object( PyBytes_FromStringAndSize( const_cast<char*>( v.c_str() ), 1 ), true )
-        {
-            validate();
-        }
-
-        Byte( char v )
-        : Object( PyBytes_FromStringAndSize( &v, 1 ), true )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        Byte &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Byte &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        // Assignment from C string
-        Byte &operator=( const std::string &v )
-        {
-            set( PyBytes_FromStringAndSize( const_cast<char*>( v.c_str() ),1 ), true );
-            return *this;
-        }
-
-        Byte &operator=( char v )
-        {
-            set( PyUnicode_FromStringAndSize( &v, 1 ), true );
-            return *this;
-        }
-
-        // Conversion
-        operator Bytes() const;
-    };
-
-    class Bytes: public SeqBase<Byte>
-    {
-    public:
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob != NULL && Py::_Bytes_Check( pyob );
-        }
-
-        virtual size_type capacity() const
-        {
-            return max_size();
-        }
-
-        explicit Bytes( PyObject *pyob, bool owned = false )
-        : SeqBase<Byte>( pyob, owned )
-        {
-            validate();
-        }
-
-        Bytes( const Object &ob )
-        : SeqBase<Byte>( ob )
-        {
-            validate();
-        }
-
-        Bytes()
-        : SeqBase<Byte>( PyBytes_FromStringAndSize( "", 0 ), true )
-        {
-            validate();
-        }
-
-        Bytes( const std::string &v )
-        : SeqBase<Byte>( PyBytes_FromStringAndSize( const_cast<char*>( v.data() ), static_cast<int>( v.length() ) ), true )
-        {
-            validate();
-        }
-
-        Bytes( const std::string &v, Py_ssize_t vsize )
-        : SeqBase<Byte>( PyBytes_FromStringAndSize( const_cast<char*>( v.data() ), static_cast<int>( vsize ) ), true )
-        {
-            validate();
-        }
-
-        Bytes( const char *v )
-        : SeqBase<Byte>( PyBytes_FromString( v ), true )
-        {
-            validate();
-        }
-
-        Bytes( const char *v, Py_ssize_t vsize )
-        : SeqBase<Byte>( PyBytes_FromStringAndSize( const_cast<char*>( v ), vsize ), true )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        Bytes &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Bytes &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        // Assignment from C string
-        Bytes &operator=( const std::string &v )
-        {
-            set( PyBytes_FromStringAndSize( const_cast<char*>( v.data() ), static_cast<int>( v.length() ) ), true );
-            return *this;
-        }
-
-        String decode( const char *encoding, const char *error="strict" );
-
-        // Queries
-        virtual size_type size() const
-        {
-            return static_cast<size_type>( PyBytes_Size( ptr() ) );
-        }
-
-        operator std::string() const
-        {
-            return as_std_string();
-        }
-
-        std::string as_std_string() const
-        {
-            return std::string( PyBytes_AsString( ptr() ), static_cast<size_type>( PyBytes_Size( ptr() ) ) );
-        }
-    };
-
-    class Char: public Object
-    {
-    public:
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob != 0 &&( Py::_Unicode_Check( pyob ) ) && PySequence_Length( pyob ) == 1;
-        }
-
-        explicit Char( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        Char( const Object &ob )
-        : Object( ob )
-        {
-            validate();
-        }
-
-        Char( int v )
-        : Object( PyUnicode_FromOrdinal( v ), true )
-        {
-            validate();
-        }
-
-        Char( Py_UNICODE v )
-        : Object( PyUnicode_FromOrdinal( v ), true )
-        {
-            validate();
-        }
-
-        Char( const unicodestring &v )
-        : Object( PyUnicode_FromUnicode( const_cast<Py_UNICODE*>( v.data() ),1 ), true )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        Char &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Char &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        Char &operator=( const unicodestring &v )
-        {
-            set( PyUnicode_FromUnicode( const_cast<Py_UNICODE*>( v.data() ), 1 ), true );
-            return *this;
-        }
-
-        Char &operator=( int v_ )
-        {
-            Py_UNICODE v( v_ );
-            set( PyUnicode_FromUnicode( &v, 1 ), true );
-            return *this;
-        }
-
-        Char &operator=( Py_UNICODE v )
-        {
-            set( PyUnicode_FromUnicode( &v, 1 ), true );
-            return *this;
-        }
-
-        // Conversion
-        operator String() const;
-    };
-
-    class String: public SeqBase<Char>
-    {
-    public:
-        virtual size_type capacity() const
-        {
-            return max_size();
-        }
-
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob != NULL && Py::_Unicode_Check( pyob );
-        }
-
-        explicit String( PyObject *pyob, bool owned = false )
-        : SeqBase<Char>( pyob, owned )
-        {
-            validate();
-        }
-
-        String( const Object &ob )
-        : SeqBase<Char>( ob )
-        {
-            validate();
-        }
-
-        String()
-        : SeqBase<Char>( PyUnicode_FromString( "" ), true )
-        {
-            validate();
-        }
-
-        String( const char *latin1 )
-        : SeqBase<Char>( PyUnicode_FromString( latin1 ) )
-        {
-            validate();
-        }
-
-        String( const std::string &latin1 )
-        : SeqBase<Char>( PyUnicode_FromStringAndSize( latin1.c_str(), latin1.size() ) )
-        {
-            validate();
-        }
-
-        String( const char *latin1, Py_ssize_t size )
-        : SeqBase<Char>( PyUnicode_FromStringAndSize( latin1, size ) )
-        {
-            validate();
-        }
-
-        /* [Taken from Pythons's unicode.h]
-
-           Many of these APIs take two arguments encoding and errors. These
-           parameters encoding and errors have the same semantics as the ones
-           of the builtin unicode() API. 
-
-           Setting encoding to NULL causes the default encoding to be used.
-
-           Error handling is set by errors which may also be set to NULL
-           meaning to use the default handling defined for the codec. Default
-           error handling for all builtin codecs is "strict" (ValueErrors are
-           raised).
-
-           The codecs all use a similar interface. Only deviation from the
-           generic ones are documented.
-
-        */
-        String( const std::string &s, const char *encoding, const char *errors=NULL )
-        : SeqBase<Char>( PyUnicode_Decode( s.c_str(), s.size(), encoding, errors ) )
-        {
-            validate();
-        }
-
-        String( const char *s, const char *encoding, const char *errors=NULL )
-        : SeqBase<Char>( PyUnicode_Decode( s, strlen(s), encoding, errors ) )
-        {
-            validate();
-        }
-
-        String( const char *s, Py_ssize_t size, const char *encoding, const char *errors=NULL )
-        : SeqBase<Char>( PyUnicode_Decode( s, size, encoding, errors ) )
-        {
-            validate();
-        }
-
-        String( const Py_UNICODE *s, int length )
-        : SeqBase<Char>( PyUnicode_FromUnicode( s, length ), true )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        String &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        String &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        String &operator=( const unicodestring &v )
-        {
-            set( PyUnicode_FromUnicode( const_cast<Py_UNICODE *>( v.data() ), static_cast<int>( v.length() ) ), true );
-            return *this;
-        }
-
-        // Encode
-        Bytes encode( const char *encoding, const char *error="strict" ) const
-        {
-            return Bytes( PyUnicode_AsEncodedString( ptr(), encoding, error ) );
-        }
-
-        // Queries
-        virtual size_type size() const
-        {
-            return static_cast<size_type>( PyUnicode_GET_SIZE( ptr() ) );
-        }
-
-        unicodestring as_unicodestring() const
-        {
-            return unicodestring( PyUnicode_AS_UNICODE( ptr() ), static_cast<size_type>( PyUnicode_GET_SIZE( ptr() ) ) );
-        }
-
-        operator std::string() const
-        {
-            // use the default encoding
-            return as_std_string( NULL );
-        }
-
-        std::string as_std_string( const char *encoding=NULL, const char *error="strict" ) const
-        {
-            Bytes b( encode( encoding, error ) );
-            return b.as_std_string();
-        }
-
-        const Py_UNICODE *unicode_data() const
-        {
-            return PyUnicode_AS_UNICODE( ptr() );
-        }
-    };
-
-    // ==================================================
-    // class Tuple
-    class Tuple: public Sequence
-    {
-    public:
-        virtual void setItem( sequence_index_type offset, const Object&ob )
-        {
-            // note PyTuple_SetItem is a thief...
-            if( PyTuple_SetItem( ptr(), offset, new_reference_to( ob ) ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        // Constructor
-        explicit Tuple( PyObject *pyob, bool owned = false )
-        : Sequence( pyob, owned )
-        {
-            validate();
-        }
-
-        Tuple( const Object &ob )
-        : Sequence( ob )
-        {
-            validate();
-        }
-
-        // New tuple of a given size
-        explicit Tuple( int size = 0 )
-        {
-            set( PyTuple_New( size ), true );
-            validate();
-            for( sequence_index_type i=0; i < size; i++ )
-            {
-                if( PyTuple_SetItem( ptr(), i, new_reference_to( Py::_None() ) ) == -1 )
-                {
-                    throw Exception();
-                }
-            }
-        }
-        // Tuple from any sequence
-        explicit Tuple( const Sequence &s )
-        {
-            sequence_index_type limit( sequence_index_type( s.length() ) );
-
-            set( PyTuple_New( limit ), true );
-            validate();
-            
-            for( sequence_index_type i=0; i < limit; i++ )
-            {
-                if( PyTuple_SetItem( ptr(), i, new_reference_to( s[i] ) ) == -1 )
-                {
-                    throw Exception();
-                }
-            }
-        }
-        // Assignment acquires new ownership of pointer
-
-        Tuple &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Tuple &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && Py::_Tuple_Check( pyob );
-        }
-
-        Tuple getSlice( int i, int j ) const
-        {
-            return Tuple( PySequence_GetSlice( ptr(), i, j ), true );
-        }
-
-    };
-
-    class TupleN: public Tuple
-    {
-    public:
-        TupleN()
-        : Tuple( 0 )
-        {
-        }
-
-        TupleN( const Object &obj1 )
-        : Tuple( 1 )
-        {
-            setItem( 0, obj1 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2 )
-        : Tuple( 2 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3 )
-        : Tuple( 3 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4 )
-        : Tuple( 4 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5 )
-        : Tuple( 5 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5, const Object &obj6 )
-        : Tuple( 6 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-            setItem( 5, obj6 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5, const Object &obj6,
-                const Object &obj7 )
-        : Tuple( 7 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-            setItem( 5, obj6 );
-            setItem( 6, obj7 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5, const Object &obj6,
-                const Object &obj7, const Object &obj8 )
-        : Tuple( 8 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-            setItem( 5, obj6 );
-            setItem( 6, obj7 );
-            setItem( 7, obj8 );
-        }
-
-        TupleN( const Object &obj1, const Object &obj2, const Object &obj3,
-                const Object &obj4, const Object &obj5, const Object &obj6,
-                const Object &obj7, const Object &obj8, const Object &obj9 )
-        : Tuple( 9 )
-        {
-            setItem( 0, obj1 );
-            setItem( 1, obj2 );
-            setItem( 2, obj3 );
-            setItem( 3, obj4 );
-            setItem( 4, obj5 );
-            setItem( 5, obj6 );
-            setItem( 6, obj7 );
-            setItem( 7, obj8 );
-            setItem( 8, obj9 );
-        }
-
-        virtual ~TupleN()
-        { }
-    };
-
-    // ==================================================
-    // class List
-
-    class List: public Sequence
-    {
-    public:
-        // Constructor
-        explicit List( PyObject *pyob, bool owned = false )
-        : Sequence( pyob, owned )
-        {
-            validate();
-        }
-        List( const Object &ob )
-        : Sequence( ob )
-        {
-            validate();
-        }
-        // Creation at a fixed size
-        List( int size = 0 )
-        {
-            set( PyList_New( size ), true );
-            validate();
-            for( sequence_index_type i=0; i < size; i++ )
-            {
-                if( PyList_SetItem( ptr(), i, new_reference_to( Py::_None() ) ) == -1 )
-                {
-                    throw Exception();
-                }
-            }
-        }
-
-        // List from a sequence
-        List( const Sequence &s )
-        : Sequence()
-        {
-            int n =( int )s.length();
-            set( PyList_New( n ), true );
-            validate();
-            for( sequence_index_type i=0; i < n; i++ )
-            {
-                if( PyList_SetItem( ptr(), i, new_reference_to( s[i] ) ) == -1 )
-                {
-                    throw Exception();
-                }
-            }
-        }
-
-        virtual size_type capacity() const
-        {
-            return max_size();
-        }
-        // Assignment acquires new ownership of pointer
-
-        List &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        List &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && Py::_List_Check( pyob );
-        }
-
-        List getSlice( int i, int j ) const
-        {
-            return List( PyList_GetSlice( ptr(), i, j ), true );
-        }
-
-        void setSlice( int i, int j, const Object &v )
-        {
-            if( PyList_SetSlice( ptr(), i, j, *v ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        void append( const Object &ob )
-        {
-            if( PyList_Append( ptr(), *ob ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        void extend( const Object &ob )
-        {
-            setSlice( size(), size(), ob );
-        }
-
-        void insert( int i, const Object &ob )
-        {
-            if( PyList_Insert( ptr(), i, *ob ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        void sort()
-        {
-            if( PyList_Sort( ptr() ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        void reverse()
-        {
-            if( PyList_Reverse( ptr() ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-    };
-
-
-    // Mappings
-    // ==================================================
-    template<TEMPLATE_TYPENAME T>
-    class mapref
-    {
-    protected:
-        MapBase<T> &s; // the map
-        Object key; // item key
-        T the_item;
-
-    public:
-        mapref<T>( MapBase<T> &map, const std::string &k )
-        : s( map ), the_item()
-        {
-            key = String( k );
-            if( map.hasKey( key ) ) the_item = map.getItem( key );
-        }
-
-        mapref<T>( MapBase<T> &map, const Object &k )
-        : s( map ), key( k ), the_item()
-        {
-            if( map.hasKey( key ) ) the_item = map.getItem( key );
-        }
-
-        virtual ~mapref<T>()
-        {}
-
-        // MapBase<T> stuff
-        // lvalue
-        mapref<T> &operator=( const mapref<T> &other )
-        {
-            if( this != &other )
-            {
-                the_item = other.the_item;
-                s.setItem( key, other.the_item );
-            }
-            return *this;
-        }
-
-        mapref<T> &operator=( const T &ob )
-        {
-            the_item = ob;
-            s.setItem( key, ob );
-            return *this;
-        }
-
-        // rvalue
-        operator T() const
-        {
-            return the_item;
-        }
-
-        // forward everything else to the_item
-        PyObject *ptr() const
-        {
-            return the_item.ptr();
-        }
-
-        int reference_count() const
-        { // the mapref count
-            return the_item.reference_count();
-        }
-
-        Type type() const
-        {
-            return the_item.type();
-        }
-
-        String str() const
-        {
-            return the_item.str();
-        }
-
-        String repr() const
-        {
-            return the_item.repr();
-        }
-
-        bool hasAttr( const std::string &attr_name ) const
-        {
-            return the_item.hasAttr( attr_name );
-        }
-
-        Object getAttr( const std::string &attr_name ) const
-        {
-            return the_item.getAttr( attr_name );
-        }
-
-        Object getItem( const Object &k ) const
-        {
-            return the_item.getItem( k );
-        }
-
-        long hashValue() const
-        {
-            return the_item.hashValue();
-        }
-
-        bool isCallable() const
-        {
-            return the_item.isCallable();
-        }
-
-        bool isInstance() const
-        {
-            return the_item.isInstance();
-        }
-
-        bool isList() const
-        {
-            return the_item.isList();
-        }
-
-        bool isMapping() const
-        {
-            return the_item.isMapping();
-        }
-
-        bool isNumeric() const
-        {
-            return the_item.isNumeric();
-        }
-
-        bool isSequence() const
-        {
-            return the_item.isSequence();
-        }
-
-        bool isTrue() const
-        {
-            return the_item.isTrue();
-        }
-
-        bool isType( const Type &t ) const
-        {
-            return the_item.isType( t );
-        }
-
-        bool isTuple() const
-        {
-            return the_item.isTuple();
-        }
-
-        bool isString() const
-        {
-            return the_item.isString();
-        }
-
-        // Commands
-        void setAttr( const std::string &attr_name, const Object &value )
-        {
-            the_item.setAttr( attr_name, value );
-        }
-
-        void delAttr( const std::string &attr_name )
-        {
-            the_item.delAttr( attr_name );
-        }
-
-        void delItem( const Object &k )
-        {
-            the_item.delItem( k );
-        }
-    }; // end of mapref
-
-#if 0
-    // TMM: now for mapref<T>
-    template< class T >
-    bool operator==( const mapref<T> &left, const mapref<T> &right )
-    {
-        return true;    // NOT completed.
-    }
-
-    template< class T >
-    bool operator!=( const mapref<T> &left, const mapref<T> &right )
-    {
-        return true;    // not completed.
-    }
-#endif
-
-    template<TEMPLATE_TYPENAME T>
-    class MapBase: public Object
-    {
-    protected:
-        explicit MapBase<T>()
-        {}
-    public:
-        // reference: proxy class for implementing []
-        // TMM: 26Jun'01 - the types
-        // If you assume that Python mapping is a hash_map...
-        // hash_map::value_type is not assignable, but
-        //( *it ).second = data must be a valid expression
-        typedef size_t size_type;
-        typedef Object key_type;
-        typedef mapref<T> data_type;
-        typedef std::pair< const T, T > value_type;
-        typedef std::pair< const T, mapref<T> > reference;
-        typedef const std::pair< const T, const T > const_reference;
-        typedef std::pair< const T, mapref<T> > pointer;
-
-        // Constructor
-        explicit MapBase<T>( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        // TMM: 02Jul'01 - changed MapBase<T> to Object in next line
-        MapBase<T>( const Object &ob )
-        : Object( ob )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        MapBase<T> &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        MapBase<T> &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && PyMapping_Check( pyob );
-        }
-
-        // Clear -- PyMapping Clear is missing
-        //
-
-        void clear()
-        {
-            List k = keys();
-            for( List::iterator i = k.begin(); i != k.end(); i++ )
-            {
-                delItem( *i );
-            }
-        }
-
-        virtual size_type size() const
-        {
-            return PyMapping_Length( ptr() );
-        }
-
-        // Element Access
-        T operator[]( const std::string &key ) const
-        {
-            return getItem( key );
-        }
-
-        T operator[]( const Object &key ) const
-        {
-            return getItem( key );
-        }
-
-        mapref<T> operator[]( const char *key )
-        {
-            return mapref<T>( *this, key );
-        }
-
-        mapref<T> operator[]( const std::string &key )
-        {
-            return mapref<T>( *this, key );
-        }
-
-        mapref<T> operator[]( const Object &key )
-        {
-            return mapref<T>( *this, key );
-        }
-
-        int length() const
-        {
-            return PyMapping_Length( ptr() );
-        }
-
-        bool hasKey( const std::string &s ) const
-        {
-            return PyMapping_HasKeyString( ptr(),const_cast<char*>( s.c_str() ) ) != 0;
-        }
-
-        bool hasKey( const Object &s ) const
-        {
-            return PyMapping_HasKey( ptr(), s.ptr() ) != 0;
-        }
-
-        T getItem( const std::string &s ) const
-        {
-            return T( asObject( PyMapping_GetItemString( ptr(),const_cast<char*>( s.c_str() ) ) ) );
-        }
-
-        T getItem( const Object &s ) const
-        {
-            return T( asObject( PyObject_GetItem( ptr(), s.ptr() ) ) );
-        }
-
-        virtual void setItem( const char *s, const Object &ob )
-        {
-            if( PyMapping_SetItemString( ptr(), const_cast<char*>( s ), *ob ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        virtual void setItem( const std::string &s, const Object &ob )
-        {
-            if( PyMapping_SetItemString( ptr(), const_cast<char*>( s.c_str() ), *ob ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        virtual void setItem( const Object &s, const Object &ob )
-        {
-            if( PyObject_SetItem( ptr(), s.ptr(), ob.ptr() ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        void delItem( const std::string &s )
-        {
-            if( PyMapping_DelItemString( ptr(), const_cast<char*>( s.c_str() ) ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        void delItem( const Object &s )
-        {
-            if( PyMapping_DelItem( ptr(), *s ) == -1 )
-            {
-                throw Exception();
-            }
-        }
-
-        // Queries
-        List keys() const
-        {
-            return List( PyMapping_Keys( ptr() ), true );
-        }
-
-        List values() const
-        {
-            // each returned item is a (key, value) pair
-            return List( PyMapping_Values( ptr() ), true );
-        }
-
-        List items() const
-        {
-            return List( PyMapping_Items( ptr() ), true );
-        }
-
-        class iterator
-        {
-            // : public forward_iterator_parent( std::pair<const T,T> ) {
-        protected:
-            typedef std::forward_iterator_tag iterator_category;
-            typedef std::pair< const T, T > value_type;
-            typedef int difference_type;
-            typedef std::pair< const T, mapref<T> >    pointer;
-            typedef std::pair< const T, mapref<T> >    reference;
-
-            friend class MapBase<T>;
-            //
-            MapBase<T>      *map;
-            List            keys;       // for iterating over the map
-            int             pos;        // index into the keys
-
-        public:
-            ~iterator()
-            {}
-
-            iterator()
-            : map( 0 )
-            , keys()
-            , pos( 0 )
-            {}
-
-            iterator( MapBase<T> *m, bool end = false )
-            : map( m )
-            , keys( m->keys() )
-            , pos( end ? keys.length() : 0 )
-            {}
-
-            iterator( const iterator &other )
-            : map( other.map )
-            , keys( other.keys )
-            , pos( other.pos )
-            {}
-
-            iterator( MapBase<T> *map_, List keys_, int pos_ )
-            : map( map_ )
-            , keys( keys_ )
-            , pos( pos_ )
-            {}
-
-            reference operator*()
-            {
-                Object key = keys[ pos ];
-                return std::make_pair( key, mapref<T>( *map, key ) );
-            }
-
-            iterator &operator=( const iterator &other )
-            {
-                if( this != &other )
-                {
-                    map = other.map;
-                    keys = other.keys;
-                    pos = other.pos;
-                }
-                return *this;
-            }
-
-            bool eql( const iterator &other ) const
-            {
-                return map->ptr() == other.map->ptr() && pos == other.pos;
-            }
-
-            bool neq( const iterator &other ) const
-            {
-                return map->ptr() != other.map->ptr() || pos != other.pos;
-            }
-
-            // pointer operator->() {
-            //    return ;
-            // }
-
-            // prefix ++
-            iterator &operator++()
-            {
-                pos++;
-                return *this;
-            }
-
-            // postfix ++
-            iterator operator++( int )
-            {
-                return iterator( map, keys, pos++ );
-            }
-
-            // prefix --
-            iterator &operator--()
-            {
-                pos--;
-                return *this;
-            }
-
-            // postfix --
-            iterator operator--( int )
-            { 
-                return iterator( map, keys, pos-- );
-            }
-
-            std::string diagnose() const
-            {
-                std::OSTRSTREAM oss;
-                oss << "iterator diagnosis " << map << ", " << pos << std::ends;
-                return std::string( oss.str() );
-            }
-        };    // end of class MapBase<T>::iterator
-
-        iterator begin()
-        {
-            return iterator( this, false );
-        }
-
-        iterator end()
-        {
-            return iterator( this, true );
-        }
-
-        class const_iterator
-        {
-        protected:
-            typedef std::forward_iterator_tag iterator_category;
-            typedef const std::pair< const T, T > value_type;
-            typedef int difference_type;
-            typedef const std::pair< const T, T > pointer;
-            typedef const std::pair< const T, T > reference;
-
-            friend class MapBase<T>;
-            const MapBase<T>    *map;
-            List                keys;   // for iterating over the map
-            int                 pos;    // index into the keys
-
-        public:
-            ~const_iterator()
-            {}
-
-            const_iterator()
-            : map( 0 )
-            , keys()
-            , pos()
-            {}
-
-            const_iterator( const MapBase<T> *m, List k, int p )
-            : map( m )
-            , keys( k )
-            , pos( p )
-            {}
-
-            const_iterator( const const_iterator &other )
-            : map( other.map )
-            , keys( other.keys )
-            , pos( other.pos )
-            {}
-
-            bool eql( const const_iterator &other ) const
-            {
-                return map->ptr() == other.map->ptr() && pos == other.pos;
-            }
-
-            bool neq( const const_iterator &other ) const
-            {
-                return map->ptr() != other.map->ptr() || pos != other.pos;
-            }
-
-
-            //            const_reference    operator*() {
-            //                Object key = *pos;
-            //                return std::make_pair( key, map->[key] );
-            // GCC < 3 barfes on this line at the '['.
-            //         }
-
-            const_reference operator*()
-            {
-                Object key = keys[ pos ];
-                return std::make_pair( key, mapref<T>( *map, key ) );
-            }
-
-            const_iterator &operator=( const const_iterator &other )
-            {
-                if( this != &other )
-                {
-                    map = other.map;
-                    keys = other.keys;
-                    pos = other.pos;
-                }
-                return *this;
-            }
-
-            // prefix ++
-            const_iterator &operator++()
-            {
-                pos++;
-                return *this;
-            }
-
-            // postfix ++
-            const_iterator operator++( int )
-            {
-                return const_iterator( map, keys, pos++ );
-            }
-
-            // prefix --
-            const_iterator &operator--()
-            {
-                pos--;
-                return *this;
-            }
-
-            // postfix --
-            const_iterator operator--( int )
-            {
-                return const_iterator( map, keys, pos-- );
-            }
-        };    // end of class MapBase<T>::const_iterator
-
-        const_iterator begin() const
-        {
-            return const_iterator( this, keys(), 0 );
-        }
-
-        const_iterator end() const
-        {
-            return const_iterator( this, keys(), length() );
-        }
-
-    };    // end of MapBase<T>
-
-    typedef MapBase<Object> Mapping;
-
-    template <TEMPLATE_TYPENAME T> bool operator==( const EXPLICIT_TYPENAME MapBase<T>::iterator &left, const EXPLICIT_TYPENAME MapBase<T>::iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator!=( const EXPLICIT_TYPENAME MapBase<T>::iterator &left, const EXPLICIT_TYPENAME MapBase<T>::iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator==( const EXPLICIT_TYPENAME MapBase<T>::const_iterator &left, const EXPLICIT_TYPENAME MapBase<T>::const_iterator &right );
-    template <TEMPLATE_TYPENAME T> bool operator!=( const EXPLICIT_TYPENAME MapBase<T>::const_iterator &left, const EXPLICIT_TYPENAME MapBase<T>::const_iterator &right );
-
-    extern bool operator==( const Mapping::iterator &left, const Mapping::iterator &right );
-    extern bool operator!=( const Mapping::iterator &left, const Mapping::iterator &right );
-    extern bool operator==( const Mapping::const_iterator &left, const Mapping::const_iterator &right );
-    extern bool operator!=( const Mapping::const_iterator &left, const Mapping::const_iterator &right );
-
-
-    // ==================================================
-    // class Dict
-    class Dict: public Mapping
-    {
-    public:
-        // Constructor
-        explicit Dict( PyObject *pyob, bool owned=false )
-        : Mapping( pyob, owned )
-        {
-            validate();
-        }
-
-        Dict( const Object &ob )
-        : Mapping( ob )
-        {
-            validate();
-        }
-
-        // Creation
-        Dict()
-        {
-            set( PyDict_New(), true );
-            validate();
-        }
-        // Assignment acquires new ownership of pointer
-
-        Dict &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Dict &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && Py::_Dict_Check( pyob );
-        }
-    };
-
-    class Callable: public Object
-    {
-    public:
-        // Constructor
-        explicit Callable()
-        : Object()
-        {}
-
-        explicit Callable( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        Callable( const Object &ob )
-        : Object( ob )
-        {
-            validate();
-        }
-
-        // Assignment acquires new ownership of pointer
-        Callable &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Callable &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        // Membership
-        virtual bool accepts( PyObject *pyob ) const
-        {
-            return pyob && PyCallable_Check( pyob );
-        }
-
-        // Call
-        Object apply( const Tuple &args ) const
-        {
-            return asObject( PyObject_CallObject( ptr(), args.ptr() ) );
-        }
-
-        // Call with keywords
-        Object apply( const Tuple &args, const Dict &kw ) const
-        {
-            return asObject( PyEval_CallObjectWithKeywords( ptr(), args.ptr(), kw.ptr() ) );
-        }
-
-        Object apply( PyObject *pargs = 0 ) const
-        {
-            return apply( Tuple( pargs ) );
-        }
-    };
-
-    class Module: public Object
-    {
-    public:
-        explicit Module( PyObject *pyob, bool owned = false )
-        : Object( pyob, owned )
-        {
-            validate();
-        }
-
-        // Construct from module name
-        explicit Module( const std::string &s )
-        : Object()
-        {
-            PyObject *m = PyImport_AddModule( const_cast<char *>( s.c_str() ) );
-            set( m, false );
-            validate();
-        }
-
-        // Copy constructor acquires new ownership of pointer
-        Module( const Module &ob )
-        : Object( *ob )
-        {
-            validate();
-        }
-
-        Module &operator=( const Object &rhs )
-        {
-            return *this = *rhs;
-        }
-
-        Module &operator=( PyObject *rhsp )
-        {
-            if( ptr() != rhsp )
-                set( rhsp );
-            return *this;
-        }
-
-        Dict getDict() const
-        {
-            return Dict( PyModule_GetDict( ptr() ) );
-            // Caution -- PyModule_GetDict returns borrowed reference!
-        }
-    };
-
-    // Call function helper
-    inline Object Object::callMemberFunction( const std::string &function_name ) const
-    {
-        Callable target( getAttr( function_name ) );
-        Tuple args( 0 );
-        return target.apply( args );
-    }
-
-    inline Object Object::callMemberFunction( const std::string &function_name, const Tuple &args ) const
-    {
-        Callable target( getAttr( function_name ) );
-        return target.apply( args );
-    }
-
-    inline Object Object::callMemberFunction( const std::string &function_name, const Tuple &args, const Dict &kw ) const
-    {
-        Callable target( getAttr( function_name ) );
-        return target.apply( args, kw );
-    }
-
-    // Numeric interface
-    inline Object operator+( const Object &a )
-    {
-        return asObject( PyNumber_Positive( *a ) );
-    }
-
-    inline Object operator-( const Object &a )
-    {
-        return asObject( PyNumber_Negative( *a ) );
-    }
-
-    inline Object abs( const Object &a )
-    {
-        return asObject( PyNumber_Absolute( *a ) );
-    }
-
-    //------------------------------------------------------------
-    // operator +
-    inline Object operator+( const Object &a, const Object &b )
-    {
-        return asObject( PyNumber_Add( *a, *b ) );
-    }
-
-    inline Object operator+( const Object &a, int j )
-    {
-        return asObject( PyNumber_Add( *a, *Long( j ) ) );
-    }
-
-    inline Object operator+( const Object &a, long j )
-    {
-        return asObject( PyNumber_Add( *a, *Long( j ) ) );
-    }
-
-    inline Object operator+( const Object &a, double v )
-    {
-        return asObject( PyNumber_Add( *a, *Float( v ) ) );
-    }
-
-    inline Object operator+( int j, const Object &b )
-    {
-        return asObject( PyNumber_Add( *Long( j ), *b ) );
-    }
-
-    inline Object operator+( long j, const Object &b )
-    {
-        return asObject( PyNumber_Add( *Long( j ), *b ) );
-    }
-
-    inline Object operator+( double v, const Object &b )
-    {
-        return asObject( PyNumber_Add( *Float( v ), *b ) );
-    }
-
-    //------------------------------------------------------------
-    // operator -
-    inline Object operator-( const Object &a, const Object &b )
-    {
-        return asObject( PyNumber_Subtract( *a, *b ) );
-    }
-
-    inline Object operator-( const Object &a, int j )
-    {
-        return asObject( PyNumber_Subtract( *a, *Long( j ) ) );
-    }
-
-    inline Object operator-( const Object &a, double v )
-    {
-        return asObject( PyNumber_Subtract( *a, *Float( v ) ) );
-    }
-
-    inline Object operator-( int j, const Object &b )
-    {
-        return asObject( PyNumber_Subtract( *Long( j ), *b ) );
-    }
-
-    inline Object operator-( double v, const Object &b )
-    {
-        return asObject( PyNumber_Subtract( *Float( v ), *b ) );
-    }
-
-    //------------------------------------------------------------
-    // operator *
-    inline Object operator*( const Object &a, const Object &b )
-    {
-        return asObject( PyNumber_Multiply( *a, *b ) );
-    }
-
-    inline Object operator*( const Object &a, int j )
-    {
-        return asObject( PyNumber_Multiply( *a, *Long( j ) ) );
-    }
-
-    inline Object operator*( const Object &a, double v )
-    {
-        return asObject( PyNumber_Multiply( *a, *Float( v ) ) );
-    }
-
-    inline Object operator*( int j, const Object &b )
-    {
-        return asObject( PyNumber_Multiply( *Long( j ), *b ) );
-    }
-
-    inline Object operator*( double v, const Object &b )
-    {
-        return asObject( PyNumber_Multiply( *Float( v ), *b ) );
-    }
-
-    //------------------------------------------------------------
-    // operator /
-    inline Object operator/( const Object &a, const Object &b )
-    {
-        return asObject( PyNumber_TrueDivide( *a, *b ) );
-    }
-
-    inline Object operator/( const Object &a, int j )
-    {
-        return asObject( PyNumber_TrueDivide( *a, *Long( j ) ) );
-    }
-
-    inline Object operator/( const Object &a, double v )
-    {
-        return asObject( PyNumber_TrueDivide( *a, *Float( v ) ) );
-    }
-
-    inline Object operator/( int j, const Object &b )
-    {
-        return asObject( PyNumber_TrueDivide( *Long( j ), *b ) );
-    }
-
-    inline Object operator/( double v, const Object &b )
-    {
-        return asObject( PyNumber_TrueDivide( *Float( v ), *b ) );
-    }
-
-    //------------------------------------------------------------
-    // operator %
-    inline Object operator%( const Object &a, const Object &b )
-    {
-        return asObject( PyNumber_Remainder( *a, *b ) );
-    }
-
-    inline Object operator%( const Object &a, int j )
-    {
-        return asObject( PyNumber_Remainder( *a, *Long( j ) ) );
-    }
-
-    inline Object operator%( const Object &a, double v )
-    {
-        return asObject( PyNumber_Remainder( *a, *Float( v ) ) );
-    }
-
-    inline Object operator%( int j, const Object &b )
-    {
-        return asObject( PyNumber_Remainder( *Long( j ), *b ) );
-    }
-
-    inline Object operator%( double v, const Object &b )
-    {
-        return asObject( PyNumber_Remainder( *Float( v ), *b ) );
-    }
-
-    //------------------------------------------------------------
-    // type
-    inline Object type( const Exception &) // return the type of the error
-    {
-        PyObject *ptype, *pvalue, *ptrace;
-        PyErr_Fetch( &ptype, &pvalue, &ptrace );
-        Object result;
-        if( ptype )
-            result = ptype;
-        PyErr_Restore( ptype, pvalue, ptrace );
-        return result;
-    }
-
-    inline Object value( const Exception &) // return the value of the error
-    {
-        PyObject *ptype, *pvalue, *ptrace;
-        PyErr_Fetch( &ptype, &pvalue, &ptrace );
-        Object result;
-        if( pvalue )
-            result = pvalue;
-        PyErr_Restore( ptype, pvalue, ptrace );
-        return result;
-    }
-
-    inline Object trace( const Exception &) // return the traceback of the error
-    {
-        PyObject *ptype, *pvalue, *ptrace;
-        PyErr_Fetch( &ptype, &pvalue, &ptrace );
-        Object result;
-        if( ptrace )
-            result = ptrace;
-        PyErr_Restore( ptype, pvalue, ptrace );
-        return result;
-    }
-
-    template<TEMPLATE_TYPENAME T>
-    String seqref<T>::str() const
-    {
-        return the_item.str();
-    }
-
-    template<TEMPLATE_TYPENAME T>
-    String seqref<T>::repr() const
-    {
-        return the_item.repr();
-    }
-
-} // namespace Py
-#endif    // __CXX_Objects__h
diff --git a/external_libraries/pycxx-6.2.2/CXX/Python3/PythonType.hxx b/external_libraries/pycxx-6.2.2/CXX/Python3/PythonType.hxx
deleted file mode 100644
index bb77bb1..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Python3/PythonType.hxx
+++ /dev/null
@@ -1,114 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __CXX_PythonType__h
-#define __CXX_PythonType__h
-
-namespace Py
-{
-    class PythonType
-    {
-    public:
-        // if you define one sequence method you must define 
-        // all of them except the assigns
-
-        PythonType( size_t base_size, int itemsize, const char *default_name );
-        virtual ~PythonType();
-
-        const char *getName() const;
-        const char *getDoc() const;
-
-        PyTypeObject *type_object() const;
-        PythonType &name( const char *nam );
-        PythonType &doc( const char *d );
-
-        PythonType &supportClass( void );
-#ifdef PYCXX_PYTHON_2TO3
-        PythonType &supportPrint( void );
-#endif
-        PythonType &supportGetattr( void );
-        PythonType &supportSetattr( void );
-        PythonType &supportGetattro( void );
-        PythonType &supportSetattro( void );
-#ifdef PYCXX_PYTHON_2TO3
-        PythonType &supportCompare( void );
-#endif
-        PythonType &supportRichCompare( void );
-        PythonType &supportRepr( void );
-        PythonType &supportStr( void );
-        PythonType &supportHash( void );
-        PythonType &supportCall( void );
-        PythonType &supportIter( void );
-
-        PythonType &supportSequenceType( void );
-        PythonType &supportMappingType( void );
-        PythonType &supportNumberType( void );
-        PythonType &supportBufferType( void );
-
-        PythonType &set_tp_dealloc( void (*tp_dealloc)( PyObject * ) );
-        PythonType &set_tp_init( int (*tp_init)( PyObject *self, PyObject *args, PyObject *kwds ) );
-        PythonType &set_tp_new( PyObject *(*tp_new)( PyTypeObject *subtype, PyObject *args, PyObject *kwds ) );
-        PythonType &set_methods( PyMethodDef *methods );
-
-        // call once all support functions have been called to ready the type
-        bool readyType();
-
-    protected:
-        void init_sequence();
-        void init_mapping();
-        void init_number();
-        void init_buffer();
-
-        PyTypeObject            *table;
-        PySequenceMethods       *sequence_table;
-        PyMappingMethods        *mapping_table;
-        PyNumberMethods         *number_table;
-        PyBufferProcs           *buffer_table;
-
-    private:
-        //
-        // prevent the compiler generating these unwanted functions
-        //
-        PythonType( const PythonType &tb );     // unimplemented
-        void operator=( const PythonType &t );  // unimplemented
-
-    };
-
-} // Namespace Py
-
-// End of __CXX_PythonType__h
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/Version.hxx b/external_libraries/pycxx-6.2.2/CXX/Version.hxx
deleted file mode 100644
index b4849cd..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/Version.hxx
+++ /dev/null
@@ -1,46 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __PyCXX_version_hxx__
-#define __PyCXX_version_hxx__
-
-#define PYCXX_VERSION_MAJOR 6
-#define PYCXX_VERSION_MINOR 2
-#define PYCXX_VERSION_PATCH 2
-#define PYCXX_MAKEVERSION( major, minor, patch ) ((major<<16)|(minor<<8)|(patch))
-#define PYCXX_VERSION PYCXX_MAKEVERSION( PYCXX_VERSION_MAJOR, PYCXX_VERSION_MINOR, PYCXX_VERSION_PATCH )
-#endif
diff --git a/external_libraries/pycxx-6.2.2/CXX/WrapPython.h b/external_libraries/pycxx-6.2.2/CXX/WrapPython.h
deleted file mode 100644
index 118a874..0000000
--- a/external_libraries/pycxx-6.2.2/CXX/WrapPython.h
+++ /dev/null
@@ -1,60 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#ifndef __PyCXX_wrap_python_hxx__
-#define __PyCXX_wrap_python_hxx__
-
-// On some platforms we have to include time.h to get select defined
-#if !defined(__WIN32__) && !defined(WIN32) && !defined(_WIN32) && !defined(_WIN64)
-#include <sys/time.h>
-#endif
-
-// Prevent multiple conflicting definitions of swab from stdlib.h and unistd.h
-#if defined(__sun) || defined(sun)
-#if defined(_XPG4)
-#undef _XPG4
-#endif
-#endif
-
-// Python.h will redefine these and generate warning in the process
-#undef _XOPEN_SOURCE
-#undef _POSIX_C_SOURCE
-
-// pull in python definitions
-#include <Python.h>
-
-#endif
diff --git a/external_libraries/pycxx-6.2.2/README.html b/external_libraries/pycxx-6.2.2/README.html
deleted file mode 100644
index f024994..0000000
--- a/external_libraries/pycxx-6.2.2/README.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<html>
-
-<head>
-<title>PyCXX README</title>
-
-<style>
-H1, H2, H3, H4 {color: #000099;
-	background-color: lightskyblue}
-h3 {position: relative; left: 20px}
-
-p {position: relative; left: 20px; margin-right: 20px}
-pre {color: #0000cc; background-color: #eeeeee; position: relative; left: 40px; margin-right: 80px;
-	border-style: solid; border-color: black; border-width: thin}
-kbd {color: #990000}
-p cite, ol cite, ul cite {font-family: monospace; font-style: normal; font-size: normal}
-li var, pre var, p var, kbd var {color: #009900; font-style: italic}
-li samp, pre samp, p samp, kbd samp {color: #009900; font-weight: bold}
-li p {position: relative; left: 0}
-table { position: relative; left: 20px; border: solid #888888 1px; background-color: #eeeeee}
-table th {border: solid #888888 1px; background-color: #88dd88; color: black}
-table td {border: solid #888888 1px}
-table td.code {border: solid #888888 1px;font-family: monospace; font-style: normal; font-size: normal}
-p.param {background-color: #eeeeee; border-top: lightskyblue solid 4}
-</style>
-</head>
-
-<body>
-
-<h1>PyCXX -- README</h1>
-
-<h2>Installation using distutils</h2>
-
-<h3>Windows Installation and Demo</h3>
-<ol>
-    <li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-6.2.2.tar.gz">
-    http://prdownloads.sourceforge.net/cxx/pycxx-6.2.2.tar.gz</a></li>
-    <li>Expand the archive into a directory of your choosing C:\ for example.
-    Note: WinZip can expand .tar.gz files.</li>
-
-    <li>Install the PyCXX files:
-        <ol>
-        <li><pre>C:> cd \pycxx-6.2.2</pre></li>
-        <li><pre>C:\pycxx-6.2.2> python setup.py install</pre></li>
-        </ol>
-    </li>
-    <li>Build and run the demo extensions:
-        <ol>
-        <li><pre>C:> cd \pycxx-6.2.2</pre></li>
-        <li><pre>C:\pycxx-6.2.2> python setup_makefile.py win32 win32.mak </pre></li>
-        <li><pre>C:\pycxx-6.2.2> nmake -f win32.mak clean test</pre></li>
-        </ol>
-    </li>
-</ol>
-
-
-<h3>Unix Installation and Demo</h3>
-<p>Note: distutils is not available for Python 1.5.2</p>
-
-<ol>
-    <li>Fetch <a href="http://prdownloads.sourceforge.net/cxx/pycxx-6.2.2.tar.gz">
-    http://prdownloads.sourceforge.net/cxx/pycxx-6.2.2.tar.gz</a>
-    <li>Login as root. root access is typically needed on Unix systems to install the PyCXX files into the Python directories.
-    <li>Expand the archive into a directory of your choosing ~\ for example.
-    <li>Install the PyCXX files:
-        <ol>
-        <li><pre># cd ~\pycxx-6.2.2</pre>
-        <li><pre># python setup.py install</pre>
-        </ol>
-    <li>Build and run the demo extensions:
-        <ol>
-        <li><pre># cd ~\pycxx-6.2.2\Demo\Python2</pre></li>
-        <li><pre># python setup_makefile.py linux linux.mak</pre></li>
-        <li><pre># make -f linux.mak clean test</pre></li>
-        </ol>
-    </li>
-</ol>
-
-<h2>Revision History</h2>
-
-<h3>Version 6.2.2 (26-Dec-210)</h3>
-<p>Fix problem compiling against Python 3.1.3</p>
-
-<h3>Version 6.2.1 (3-May-2010)</h3>
-<p>Fix problems with new style classes</p>
-<p>Replace all example makefile and project files with setup_makefile.py script.</p>
-<p>Add APIs to make calling python functions easier. See TupleN(), callOnSelf(), self()</p>
-
-<h3>Version 6.1.1 (26-Sep-2009)</h3>
-<p>Supports Python 3 starting at Python 3.1 and Python 2</p>
-<p>Code clean up to fix compiler warnings reported by gcc 4.2.1 on Mac OS X when building for Python 3.</p>
-
-<h3>Version 6.1.0 (19-Jul-2009)</h3>
-<p>Support Python 3 and Python 2</p>
-
-</body>
-</html>
diff --git a/external_libraries/pycxx-6.2.2/Src/IndirectPythonInterface.cxx b/external_libraries/pycxx-6.2.2/Src/IndirectPythonInterface.cxx
deleted file mode 100644
index 0ee480d..0000000
--- a/external_libraries/pycxx-6.2.2/Src/IndirectPythonInterface.cxx
+++ /dev/null
@@ -1,43 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "Src/Python2/IndirectPythonInterface.cxx"
-#else
-#include "Src/Python3/IndirectPythonInterface.cxx"
-#endif
diff --git a/external_libraries/pycxx-6.2.2/Src/Python2/IndirectPythonInterface.cxx b/external_libraries/pycxx-6.2.2/Src/Python2/IndirectPythonInterface.cxx
deleted file mode 100644
index d36d1b5..0000000
--- a/external_libraries/pycxx-6.2.2/Src/Python2/IndirectPythonInterface.cxx
+++ /dev/null
@@ -1,597 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#include "CXX/IndirectPythonInterface.hxx"
-
-namespace Py
-{
-bool _Buffer_Check( PyObject *op ) { return (op)->ob_type == _Buffer_Type(); }
-bool _CFunction_Check( PyObject *op ) { return (op)->ob_type == _CFunction_Type(); }
-bool _Class_Check( PyObject *op ) { return (op)->ob_type == _Class_Type(); }
-bool _CObject_Check( PyObject *op ) { return (op)->ob_type == _CObject_Type(); }
-bool _Complex_Check( PyObject *op ) { return (op)->ob_type == _Complex_Type(); }
-bool _Dict_Check( PyObject *op ) { return (op)->ob_type == _Dict_Type(); }
-bool _File_Check( PyObject *op ) { return (op)->ob_type == _File_Type(); }
-bool _Float_Check( PyObject *op ) { return (op)->ob_type == _Float_Type(); }
-bool _Function_Check( PyObject *op ) { return (op)->ob_type == _Function_Type(); }
-bool _Instance_Check( PyObject *op ) { return (op)->ob_type == _Instance_Type(); }
-bool _Boolean_Check( PyObject *op ) { return (op)->ob_type == _Bool_Type(); }
-bool _Int_Check( PyObject *op ) { return (op)->ob_type == _Int_Type(); }
-bool _List_Check( PyObject *o ) { return o->ob_type == _List_Type(); }
-bool _Long_Check( PyObject *op ) { return (op)->ob_type == _Long_Type(); }
-bool _Method_Check( PyObject *op ) { return (op)->ob_type == _Method_Type(); }
-bool _Module_Check( PyObject *op ) { return (op)->ob_type == _Module_Type(); }
-bool _Range_Check( PyObject *op ) { return (op)->ob_type == _Range_Type(); }
-bool _Slice_Check( PyObject *op ) { return (op)->ob_type == _Slice_Type(); }
-bool _String_Check( PyObject *o ) { return o->ob_type == _String_Type(); }
-bool _TraceBack_Check( PyObject *v ) { return (v)->ob_type == _TraceBack_Type(); }
-bool _Tuple_Check( PyObject *op ) { return (op)->ob_type == _Tuple_Type(); }
-bool _Type_Check( PyObject *op ) { return (op)->ob_type == _Type_Type(); }
-
-#if PY_MAJOR_VERSION >= 2
-bool _Unicode_Check( PyObject *op ) { return (op)->ob_type == _Unicode_Type(); }
-#endif
-
-
-
-#if defined(PY_WIN32_DELAYLOAD_PYTHON_DLL)
-
-#if defined(MS_WINDOWS)
-#include <windows.h>
-
-
-static HMODULE python_dll;
-
-static PyObject *ptr__Exc_ArithmeticError = NULL;
-static PyObject *ptr__Exc_AssertionError = NULL;
-static PyObject *ptr__Exc_AttributeError = NULL;
-static PyObject *ptr__Exc_EnvironmentError = NULL;
-static PyObject *ptr__Exc_EOFError = NULL;
-static PyObject *ptr__Exc_Exception = NULL;
-static PyObject *ptr__Exc_FloatingPointError = NULL;
-static PyObject *ptr__Exc_ImportError = NULL;
-static PyObject *ptr__Exc_IndexError = NULL;
-static PyObject *ptr__Exc_IOError = NULL;
-static PyObject *ptr__Exc_KeyboardInterrupt = NULL;
-static PyObject *ptr__Exc_KeyError = NULL;
-static PyObject *ptr__Exc_LookupError = NULL;
-static PyObject *ptr__Exc_MemoryError = NULL;
-static PyObject *ptr__Exc_MemoryErrorInst = NULL;
-static PyObject *ptr__Exc_NameError = NULL;
-static PyObject *ptr__Exc_NotImplementedError = NULL;
-static PyObject *ptr__Exc_OSError = NULL;
-static PyObject *ptr__Exc_OverflowError = NULL;
-static PyObject *ptr__Exc_RuntimeError = NULL;
-static PyObject *ptr__Exc_StandardError = NULL;
-static PyObject *ptr__Exc_SyntaxError = NULL;
-static PyObject *ptr__Exc_SystemError = NULL;
-static PyObject *ptr__Exc_SystemExit = NULL;
-static PyObject *ptr__Exc_TypeError = NULL;
-static PyObject *ptr__Exc_ValueError = NULL;
-static PyObject *ptr__Exc_ZeroDivisionError = NULL;
-
-#ifdef MS_WINDOWS
-static PyObject *ptr__Exc_WindowsError = NULL;
-#endif
-
-#if PY_MAJOR_VERSION >= 2
-static PyObject *ptr__Exc_IndentationError = NULL;
-static PyObject *ptr__Exc_TabError = NULL;
-static PyObject *ptr__Exc_UnboundLocalError = NULL;
-static PyObject *ptr__Exc_UnicodeError = NULL;
-#endif
-
-static PyObject *ptr__PyNone = NULL;
-
-static PyObject *ptr__PyFalse = NULL;
-static PyObject *ptr__PyTrue = NULL;
-
-static PyTypeObject *ptr__Buffer_Type = NULL;
-static PyTypeObject *ptr__CFunction_Type = NULL;
-static PyTypeObject *ptr__Class_Type = NULL;
-static PyTypeObject *ptr__CObject_Type = NULL;
-static PyTypeObject *ptr__Complex_Type = NULL;
-static PyTypeObject *ptr__Dict_Type = NULL;
-static PyTypeObject *ptr__File_Type = NULL;
-static PyTypeObject *ptr__Float_Type = NULL;
-static PyTypeObject *ptr__Function_Type = NULL;
-static PyTypeObject *ptr__Instance_Type = NULL;
-static PyTypeObject *ptr__Int_Type = NULL;
-static PyTypeObject *ptr__List_Type = NULL;
-static PyTypeObject *ptr__Long_Type = NULL;
-static PyTypeObject *ptr__Method_Type = NULL;
-static PyTypeObject *ptr__Module_Type = NULL;
-static PyTypeObject *ptr__Range_Type = NULL;
-static PyTypeObject *ptr__Slice_Type = NULL;
-static PyTypeObject *ptr__String_Type = NULL;
-static PyTypeObject *ptr__TraceBack_Type = NULL;
-static PyTypeObject *ptr__Tuple_Type = NULL;
-static PyTypeObject *ptr__Type_Type = NULL;
-
-#if PY_MAJOR_VERSION >= 2
-static PyTypeObject *ptr__Unicode_Type = NULL;
-#endif
-
-static int *ptr_Py_DebugFlag = NULL;
-static int *ptr_Py_InteractiveFlag = NULL;
-static int *ptr_Py_OptimizeFlag = NULL;
-static int *ptr_Py_NoSiteFlag = NULL;
-static int *ptr_Py_TabcheckFlag = NULL;
-static int *ptr_Py_VerboseFlag = NULL;
-
-#if PY_MAJOR_VERSION >= 2
-static int *ptr_Py_UnicodeFlag = NULL;
-#endif
-
-static char **ptr__Py_PackageContext = NULL;
-
-#ifdef Py_REF_DEBUG
-int *ptr_Py_RefTotal;
-#endif
-
-
-//--------------------------------------------------------------------------------
-class GetAddressException
-{
-public:
-    GetAddressException( const char *_name )
-        : name( _name )
-    {}
-    virtual ~GetAddressException() {}
-    const char *name;
-};
-
-
-//--------------------------------------------------------------------------------
-static PyObject *GetPyObjectPointer_As_PyObjectPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return *(PyObject **)addr;
-}
-
-static PyObject *GetPyObject_As_PyObjectPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return (PyObject *)addr;
-}
-
-static PyTypeObject *GetPyTypeObjectPointer_As_PyTypeObjectPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return *(PyTypeObject **)addr;
-}
-
-static PyTypeObject *GetPyTypeObject_As_PyTypeObjectPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return (PyTypeObject *)addr;
-}
-
-static int *GetInt_as_IntPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return (int *)addr;
-}
-
-static char **GetCharPointer_as_CharPointerPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return (char **)addr;
-}
-
-
-#ifdef _DEBUG
-static const char python_dll_name_format[] = "PYTHON%1.1d%1.1d_D.DLL";
-#else
-static const char python_dll_name_format[] = "PYTHON%1.1d%1.1d.DLL";
-#endif
-
-//--------------------------------------------------------------------------------
-bool InitialisePythonIndirectInterface()
-{
-    char python_dll_name[sizeof(python_dll_name_format)];
-
-    sprintf( python_dll_name, python_dll_name_format, PY_MAJOR_VERSION, PY_MINOR_VERSION );
-
-    python_dll = LoadLibrary( python_dll_name );
-    if( python_dll == NULL )
-        return false;
-
-    try
-{
-#ifdef Py_REF_DEBUG
-    ptr_Py_RefTotal            = GetInt_as_IntPointer( "_Py_RefTotal" );
-#endif
-    ptr_Py_DebugFlag        = GetInt_as_IntPointer( "Py_DebugFlag" );
-    ptr_Py_InteractiveFlag        = GetInt_as_IntPointer( "Py_InteractiveFlag" );
-    ptr_Py_OptimizeFlag        = GetInt_as_IntPointer( "Py_OptimizeFlag" );
-    ptr_Py_NoSiteFlag        = GetInt_as_IntPointer( "Py_NoSiteFlag" );
-    ptr_Py_TabcheckFlag        = GetInt_as_IntPointer( "Py_TabcheckFlag" );
-    ptr_Py_VerboseFlag        = GetInt_as_IntPointer( "Py_VerboseFlag" );
-#if PY_MAJOR_VERSION >= 2
-    ptr_Py_UnicodeFlag        = GetInt_as_IntPointer( "Py_UnicodeFlag" );
-#endif
-    ptr__Py_PackageContext        = GetCharPointer_as_CharPointerPointer( "_Py_PackageContext" );
-
-    ptr__Exc_ArithmeticError    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_ArithmeticError" );
-    ptr__Exc_AssertionError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_AssertionError" );
-    ptr__Exc_AttributeError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_AttributeError" );
-    ptr__Exc_EnvironmentError    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_EnvironmentError" );
-    ptr__Exc_EOFError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_EOFError" );
-    ptr__Exc_Exception        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_Exception" );
-    ptr__Exc_FloatingPointError    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_FloatingPointError" );
-    ptr__Exc_ImportError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_ImportError" );
-    ptr__Exc_IndexError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_IndexError" );
-    ptr__Exc_IOError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_IOError" );
-    ptr__Exc_KeyboardInterrupt    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_KeyboardInterrupt" );
-    ptr__Exc_KeyError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_KeyError" );
-    ptr__Exc_LookupError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_LookupError" );
-    ptr__Exc_MemoryError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_MemoryError" );
-    ptr__Exc_MemoryErrorInst    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_MemoryErrorInst" );
-    ptr__Exc_NameError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_NameError" );
-    ptr__Exc_NotImplementedError    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_NotImplementedError" );
-    ptr__Exc_OSError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_OSError" );
-    ptr__Exc_OverflowError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_OverflowError" );
-    ptr__Exc_RuntimeError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_RuntimeError" );
-    ptr__Exc_StandardError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_StandardError" );
-    ptr__Exc_SyntaxError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_SyntaxError" );
-    ptr__Exc_SystemError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_SystemError" );
-    ptr__Exc_SystemExit        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_SystemExit" );
-    ptr__Exc_TypeError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_TypeError" );
-    ptr__Exc_ValueError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_ValueError" );
-#ifdef MS_WINDOWS
-    ptr__Exc_WindowsError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_WindowsError" );
-#endif
-    ptr__Exc_ZeroDivisionError    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_ZeroDivisionError" );
-
-#if PY_MAJOR_VERSION >= 2
-    ptr__Exc_IndentationError    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_IndentationError" );
-    ptr__Exc_TabError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_TabError" );
-    ptr__Exc_UnboundLocalError    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_UnboundLocalError" );
-    ptr__Exc_UnicodeError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_UnicodeError" );
-#endif
-    ptr__PyNone            = GetPyObject_As_PyObjectPointer( "_Py_NoneStruct" );
-
-    ptr__PyFalse            = GetPyObject_As_PyObjectPointer( "_Py_ZeroStruct" );
-    ptr__PyTrue            = GetPyObject_As_PyObjectPointer( "_Py_TrueStruct" );
-
-    ptr__Buffer_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyBuffer_Type" );
-    ptr__CFunction_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyCFunction_Type" );
-    ptr__Class_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyClass_Type" );
-    ptr__CObject_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyCObject_Type" );
-    ptr__Complex_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyComplex_Type" );
-    ptr__Dict_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyDict_Type" );
-    ptr__File_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyFile_Type" );
-    ptr__Float_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyFloat_Type" );
-    ptr__Function_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyFunction_Type" );
-    ptr__Instance_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyInstance_Type" );
-    ptr__Int_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyInt_Type" );
-    ptr__List_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyList_Type" );
-    ptr__Long_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyLong_Type" );
-    ptr__Method_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyMethod_Type" );
-    ptr__Module_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyModule_Type" );
-    ptr__Range_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyRange_Type" );
-    ptr__Slice_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PySlice_Type" );
-    ptr__String_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyString_Type" );
-    ptr__TraceBack_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyTraceBack_Type" );
-    ptr__Tuple_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyTuple_Type" );
-    ptr__Type_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyType_Type" );
-
-#if PY_MAJOR_VERSION >= 2
-    ptr__Unicode_Type        = GetPyTypeObject_As_PyTypeObjectPointer( "PyUnicode_Type" );
-#endif
-}
-    catch( GetAddressException &e )
-    {
-        OutputDebugString( python_dll_name );
-        OutputDebugString( " does not contain symbol ");
-        OutputDebugString( e.name );
-        OutputDebugString( "\n" );
-
-        return false;
-    }
-
-    return true;
-}
-
-//
-//    Wrap variables as function calls
-//
-PyObject * _Exc_ArithmeticError(){ return ptr__Exc_ArithmeticError; }
-PyObject * _Exc_AssertionError(){ return ptr__Exc_AssertionError; }
-PyObject * _Exc_AttributeError(){ return ptr__Exc_AttributeError; }
-PyObject * _Exc_EnvironmentError(){ return ptr__Exc_EnvironmentError; }
-PyObject * _Exc_EOFError()    { return ptr__Exc_EOFError; }
-PyObject * _Exc_Exception()    { return ptr__Exc_Exception; }
-PyObject * _Exc_FloatingPointError(){ return ptr__Exc_FloatingPointError; }
-PyObject * _Exc_ImportError()    { return ptr__Exc_ImportError; }
-PyObject * _Exc_IndexError()    { return ptr__Exc_IndexError; }
-PyObject * _Exc_IOError()    { return ptr__Exc_IOError; }
-PyObject * _Exc_KeyboardInterrupt(){ return ptr__Exc_KeyboardInterrupt; }
-PyObject * _Exc_KeyError()    { return ptr__Exc_KeyError; }
-PyObject * _Exc_LookupError()    { return ptr__Exc_LookupError; }
-PyObject * _Exc_MemoryError()    { return ptr__Exc_MemoryError; }
-PyObject * _Exc_MemoryErrorInst(){ return ptr__Exc_MemoryErrorInst; }
-PyObject * _Exc_NameError()    { return ptr__Exc_NameError; }
-PyObject * _Exc_NotImplementedError(){ return ptr__Exc_NotImplementedError; }
-PyObject * _Exc_OSError()    { return ptr__Exc_OSError; }
-PyObject * _Exc_OverflowError()    { return ptr__Exc_OverflowError; }
-PyObject * _Exc_RuntimeError()    { return ptr__Exc_RuntimeError; }
-PyObject * _Exc_StandardError()    { return ptr__Exc_StandardError; }
-PyObject * _Exc_SyntaxError()    { return ptr__Exc_SyntaxError; }
-PyObject * _Exc_SystemError()    { return ptr__Exc_SystemError; }
-PyObject * _Exc_SystemExit()    { return ptr__Exc_SystemExit; }
-PyObject * _Exc_TypeError()    { return ptr__Exc_TypeError; }
-PyObject * _Exc_ValueError()    { return ptr__Exc_ValueError; }
-#ifdef MS_WINDOWS
-PyObject * _Exc_WindowsError()    { return ptr__Exc_WindowsError; }
-#endif
-PyObject * _Exc_ZeroDivisionError(){ return ptr__Exc_ZeroDivisionError; }
-
-#if PY_MAJOR_VERSION >= 2
-PyObject * _Exc_IndentationError(){ return ptr__Exc_IndentationError; }
-PyObject * _Exc_TabError()    { return ptr__Exc_TabError; }
-PyObject * _Exc_UnboundLocalError(){ return ptr__Exc_UnboundLocalError; }
-PyObject * _Exc_UnicodeError()    { return ptr__Exc_UnicodeError; }
-#endif
-
-//
-//    wrap items in Object.h
-//
-PyObject * _None() { return ptr__PyNone; }
-
-PyObject * _False() { return ptr__PyFalse; }
-PyObject * _True() { return ptr__PyTrue; }
-
-PyTypeObject * _Buffer_Type()    { return ptr__Buffer_Type; }
-PyTypeObject * _CFunction_Type(){ return ptr__CFunction_Type; }
-PyTypeObject * _Class_Type()    { return ptr__Class_Type; }
-PyTypeObject * _CObject_Type()    { return ptr__CObject_Type; }
-PyTypeObject * _Complex_Type()    { return ptr__Complex_Type; }
-PyTypeObject * _Dict_Type()    { return ptr__Dict_Type; }
-PyTypeObject * _File_Type()    { return ptr__File_Type; }
-PyTypeObject * _Float_Type()    { return ptr__Float_Type; }
-PyTypeObject * _Function_Type()    { return ptr__Function_Type; }
-PyTypeObject * _Instance_Type()    { return ptr__Instance_Type; }
-PyTypeObject * _Bool_Type()    { return ptr__Bool_Type; }
-PyTypeObject * _Int_Type()    { return ptr__Int_Type; }
-PyTypeObject * _List_Type()    { return ptr__List_Type; }
-PyTypeObject * _Long_Type()    { return ptr__Long_Type; }
-PyTypeObject * _Method_Type()    { return ptr__Method_Type; }
-PyTypeObject * _Module_Type()    { return ptr__Module_Type; }
-PyTypeObject * _Range_Type()    { return ptr__Range_Type; }
-PyTypeObject * _Slice_Type()    { return ptr__Slice_Type; }
-PyTypeObject * _String_Type()    { return ptr__String_Type; }
-PyTypeObject * _TraceBack_Type(){ return ptr__TraceBack_Type; }
-PyTypeObject * _Tuple_Type()    { return ptr__Tuple_Type; }
-PyTypeObject * _Type_Type()    { return ptr__Type_Type; }
-
-#if PY_MAJOR_VERSION >= 2
-PyTypeObject * _Unicode_Type()    { return ptr__Unicode_Type; }
-#endif
-
-char *__Py_PackageContext()    { return *ptr__Py_PackageContext; }
-
-
-//
-//    wrap the Python Flag variables
-//
-int &_Py_DebugFlag() { return *ptr_Py_DebugFlag; }
-int &_Py_InteractiveFlag() { return *ptr_Py_InteractiveFlag; }
-int &_Py_OptimizeFlag() { return *ptr_Py_OptimizeFlag; }
-int &_Py_NoSiteFlag() { return *ptr_Py_NoSiteFlag; }
-int &_Py_TabcheckFlag() { return *ptr_Py_TabcheckFlag; }
-int &_Py_VerboseFlag() { return *ptr_Py_VerboseFlag; }
-#if PY_MAJOR_VERSION >= 2
-int &_Py_UnicodeFlag() { return *ptr_Py_UnicodeFlag; }
-#endif
-
-void _XINCREF( PyObject *op )
-{
-    // This function must match the contents of Py_XINCREF(op)
-    if( op == NULL )
-        return;
-
-#ifdef Py_REF_DEBUG
-    (*ptr_Py_RefTotal)++;
-#endif
-    (op)->ob_refcnt++;
-
-}
-
-void _XDECREF( PyObject *op )
-{
-    // This function must match the contents of Py_XDECREF(op);
-    if( op == NULL )
-        return;
-
-#ifdef Py_REF_DEBUG
-    (*ptr_Py_RefTotal)--;
-#endif
-
-    if (--(op)->ob_refcnt == 0)
-        _Py_Dealloc((PyObject *)(op));
-}
-
-
-#else
-#error "Can only delay load under Win32"
-#endif
-
-#else
-
-//
-//    Duplicated these declarations from rangeobject.h which is missing the
-//    extern "C". This has been reported as a bug upto and include 2.1
-//
-extern "C" DL_IMPORT(PyTypeObject) PyRange_Type;
-extern "C" DL_IMPORT(PyObject *) PyRange_New(long, long, long, int);
-
-
-//================================================================================
-//
-//    Map onto Macros
-//
-//================================================================================
-
-//
-//    Wrap variables as function calls
-//
-
-PyObject * _Exc_ArithmeticError() { return ::PyExc_ArithmeticError; }
-PyObject * _Exc_AssertionError() { return ::PyExc_AssertionError; }
-PyObject * _Exc_AttributeError() { return ::PyExc_AttributeError; }
-PyObject * _Exc_EnvironmentError() { return ::PyExc_EnvironmentError; }
-PyObject * _Exc_EOFError() { return ::PyExc_EOFError; }
-PyObject * _Exc_Exception() { return ::PyExc_Exception; }
-PyObject * _Exc_FloatingPointError() { return ::PyExc_FloatingPointError; }
-PyObject * _Exc_ImportError() { return ::PyExc_ImportError; }
-PyObject * _Exc_IndexError() { return ::PyExc_IndexError; }
-PyObject * _Exc_IOError() { return ::PyExc_IOError; }
-PyObject * _Exc_KeyboardInterrupt() { return ::PyExc_KeyboardInterrupt; }
-PyObject * _Exc_KeyError() { return ::PyExc_KeyError; }
-PyObject * _Exc_LookupError() { return ::PyExc_LookupError; }
-PyObject * _Exc_MemoryError() { return ::PyExc_MemoryError; }
-PyObject * _Exc_MemoryErrorInst() { return ::PyExc_MemoryErrorInst; }
-PyObject * _Exc_NameError() { return ::PyExc_NameError; }
-PyObject * _Exc_NotImplementedError() { return ::PyExc_NotImplementedError; }
-PyObject * _Exc_OSError() { return ::PyExc_OSError; }
-PyObject * _Exc_OverflowError() { return ::PyExc_OverflowError; }
-PyObject * _Exc_RuntimeError() { return ::PyExc_RuntimeError; }
-PyObject * _Exc_StandardError() { return ::PyExc_StandardError; }
-PyObject * _Exc_SyntaxError() { return ::PyExc_SyntaxError; }
-PyObject * _Exc_SystemError() { return ::PyExc_SystemError; }
-PyObject * _Exc_SystemExit() { return ::PyExc_SystemExit; }
-PyObject * _Exc_TypeError() { return ::PyExc_TypeError; }
-PyObject * _Exc_ValueError() { return ::PyExc_ValueError; }
-PyObject * _Exc_ZeroDivisionError() { return ::PyExc_ZeroDivisionError; }
-
-#ifdef MS_WINDOWS
-PyObject * _Exc_WindowsError() { return ::PyExc_WindowsError; }
-#endif
-
-
-#if PY_MAJOR_VERSION >= 2
-PyObject * _Exc_IndentationError() { return ::PyExc_IndentationError; }
-PyObject * _Exc_TabError() { return ::PyExc_TabError; }
-PyObject * _Exc_UnboundLocalError() { return ::PyExc_UnboundLocalError; }
-PyObject * _Exc_UnicodeError() { return ::PyExc_UnicodeError; }
-#endif
-
-
-//
-//    wrap items in Object.h
-//
-PyObject * _None() { return &::_Py_NoneStruct; }
-
-PyObject * _False() { return Py_False; }
-PyObject * _True() { return Py_True; }
-
-PyTypeObject * _Buffer_Type() { return &PyBuffer_Type; }
-PyTypeObject * _CFunction_Type() { return &PyCFunction_Type; }
-PyTypeObject * _Class_Type() { return &PyClass_Type; }
-PyTypeObject * _CObject_Type() { return &PyCObject_Type; }
-PyTypeObject * _Complex_Type() { return &PyComplex_Type; }
-PyTypeObject * _Dict_Type() { return &PyDict_Type; }
-PyTypeObject * _File_Type() { return &PyFile_Type; }
-PyTypeObject * _Float_Type() { return &PyFloat_Type; }
-PyTypeObject * _Function_Type() { return &PyFunction_Type; }
-PyTypeObject * _Instance_Type() { return &PyInstance_Type; }
-PyTypeObject * _Bool_Type()    { return &PyBool_Type; }
-PyTypeObject * _Int_Type() { return &PyInt_Type; }
-PyTypeObject * _List_Type() { return &PyList_Type; }
-PyTypeObject * _Long_Type() { return &PyLong_Type; }
-PyTypeObject * _Method_Type() { return &PyMethod_Type; }
-PyTypeObject * _Module_Type() { return &PyModule_Type; }
-PyTypeObject * _Range_Type() { return &PyRange_Type; }
-PyTypeObject * _Slice_Type() { return &PySlice_Type; }
-PyTypeObject * _String_Type() { return &PyString_Type; }
-PyTypeObject * _TraceBack_Type() { return &PyTraceBack_Type; }
-PyTypeObject * _Tuple_Type() { return &PyTuple_Type; }
-PyTypeObject * _Type_Type() { return &PyType_Type; }
-
-#if PY_MAJOR_VERSION >= 2
-PyTypeObject * _Unicode_Type() { return &PyUnicode_Type; }
-#endif
-
-//
-//    wrap flags
-//
-int &_Py_DebugFlag()    { return Py_DebugFlag; }
-int &_Py_InteractiveFlag(){ return Py_InteractiveFlag; }
-int &_Py_OptimizeFlag()    { return Py_OptimizeFlag; }
-int &_Py_NoSiteFlag()    { return Py_NoSiteFlag; }
-int &_Py_TabcheckFlag()    { return Py_TabcheckFlag; }
-int &_Py_VerboseFlag()    { return Py_VerboseFlag; }
-#if PY_MAJOR_VERSION >= 2
-int &_Py_UnicodeFlag()    { return Py_UnicodeFlag; }
-#endif
-char *__Py_PackageContext(){ return _Py_PackageContext; }
-
-//
-//    Needed to keep the abstactions for delayload interface
-//
-void _XINCREF( PyObject *op )
-{
-    Py_XINCREF(op);
-}
-
-void _XDECREF( PyObject *op )
-{
-    Py_XDECREF(op);
-}
-
-#endif
-}
diff --git a/external_libraries/pycxx-6.2.2/Src/Python2/cxx_extensions.cxx b/external_libraries/pycxx-6.2.2/Src/Python2/cxx_extensions.cxx
deleted file mode 100644
index 0e0ade0..0000000
--- a/external_libraries/pycxx-6.2.2/Src/Python2/cxx_extensions.cxx
+++ /dev/null
@@ -1,1848 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/Extensions.hxx"
-#include "CXX/Exception.hxx"
-#include <assert.h>
-
-#ifdef PYCXX_DEBUG
-//
-//  Functions useful when debugging PyCXX
-//
-void bpt( void )
-{
-}
-
-void printRefCount( PyObject *obj )
-{
-    std::cout << "RefCount of 0x" << std::hex << reinterpret_cast< unsigned int >( obj ) << std::dec << " is " << Py_REFCNT( obj ) << std::endl;
-}
-#endif
-
-namespace Py
-{
-#ifdef PYCXX_PYTHON_2TO3
-std::string String::as_std_string( const char *encoding, const char *error ) const
-{
-    if( isUnicode() )
-    {
-        Bytes encoded( encode( encoding, error ) );
-        return encoded.as_std_string();
-    }
-    else
-    {
-        return std::string( PyString_AsString( ptr() ), static_cast<size_type>( PyString_Size( ptr() ) ) );
-    }
-}
-
-Bytes String::encode( const char *encoding, const char *error ) const
-{
-    if( isUnicode() )
-    {
-        return Bytes( PyUnicode_AsEncodedString( ptr(), encoding, error ) );
-    }
-    else
-    {
-        return Bytes( PyString_AsEncodedObject( ptr(), encoding, error ) );
-    }
-}
-
-#else
-std::string String::as_std_string( const char *encoding, const char *error ) const
-{
-    if( isUnicode() )
-    {
-        String encoded( encode( encoding, error ) );
-        return encoded.as_std_string();
-    }
-    else
-    {
-        return std::string( PyString_AsString( ptr() ), static_cast<size_type>( PyString_Size( ptr() ) ) );
-    }
-}
-#endif
-
-void Object::validate()
-{
-    // release pointer if not the right type
-    if( !accepts( p ) )
-    {
-#if defined( _CPPRTTI ) || defined( __GNUG__ )
-        std::string s( "PyCXX: Error creating object of type " );
-        s += (typeid( *this )).name();
-
-        if( p != NULL )
-        {
-            String from_repr = repr();
-            s += " from ";
-            s += from_repr.as_std_string( "utf-8" );
-        }
-        else
-        {
-            s += " from (nil)";
-        }
-#endif
-        release();
-        if( PyErr_Occurred() )
-        { // Error message already set
-            throw Exception();
-        }
-        // Better error message if RTTI available
-#if defined( _CPPRTTI ) || defined( __GNUG__ )
-        throw TypeError( s );
-#else
-        throw TypeError( "PyCXX: type error." );
-#endif
-    }
-}
-
-//================================================================================
-//
-//    Implementation of MethodTable
-//
-//================================================================================
-PyMethodDef MethodTable::method( const char *method_name, PyCFunction f, int flags, const char *doc )
-{
-    PyMethodDef m;
-    m.ml_name = const_cast<char*>( method_name );
-    m.ml_meth = f;
-    m.ml_flags = flags;
-    m.ml_doc = const_cast<char*>( doc );
-    return m;
-}
-
-MethodTable::MethodTable()
-{
-    t.push_back( method( 0, 0, 0, 0 ) );
-    mt = NULL;
-}
-
-MethodTable::~MethodTable()
-{
-    delete [] mt;
-}
-
-void MethodTable::add( const char *method_name, PyCFunction f, const char *doc, int flag )
-{
-    if( !mt )
-    {
-        t.insert( t.end()-1, method( method_name, f, flag, doc ) );
-    }
-    else
-    {
-        throw RuntimeError( "Too late to add a module method!" );
-    }
-}
-
-PyMethodDef *MethodTable::table()
-{
-    if( !mt )
-    {
-        Py_ssize_t t1size = t.size();
-        mt = new PyMethodDef[ t1size ];
-        int j = 0;
-        for( std::vector<PyMethodDef>::iterator i = t.begin(); i != t.end(); i++ )
-        {
-            mt[ j++ ] = *i;
-        }
-    }
-    return mt;
-}
-
-//================================================================================
-//
-//    Implementation of ExtensionModule
-//
-//================================================================================
-ExtensionModuleBase::ExtensionModuleBase( const char *name )
-: m_module_name( name )
-, m_full_module_name( __Py_PackageContext() != NULL ? std::string( __Py_PackageContext() ) : m_module_name )
-, m_method_table()
-{}
-
-ExtensionModuleBase::~ExtensionModuleBase()
-{}
-
-const std::string &ExtensionModuleBase::name() const
-{
-    return m_module_name;
-}
-
-const std::string &ExtensionModuleBase::fullName() const
-{
-    return m_full_module_name;
-}
-
-class ExtensionModuleBasePtr : public PythonExtension<ExtensionModuleBasePtr>
-{
-public:
-    ExtensionModuleBasePtr( ExtensionModuleBase *_module )
-    : module( _module )
-    {}
-
-    virtual ~ExtensionModuleBasePtr()
-    {}
-
-    ExtensionModuleBase *module;
-};
-
-void ExtensionModuleBase::initialize( const char *module_doc )
-{
-    PyObject *module_ptr = new ExtensionModuleBasePtr( this );
-    Py_InitModule4
-    (
-    const_cast<char *>( m_module_name.c_str() ),    // name
-    m_method_table.table(),                         // methods
-    const_cast<char *>( module_doc ),               // docs
-    module_ptr,                                     // pass to functions as "self"
-    PYTHON_API_VERSION                              // API version
-    );
-}
-
-Py::Module ExtensionModuleBase::module( void ) const
-{
-    return Module( m_full_module_name );
-}
-
-Py::Dict ExtensionModuleBase::moduleDictionary( void ) const
-{
-    return module().getDict();
-}
-
-//================================================================================
-//
-//    Implementation of PythonType
-//
-//================================================================================
-extern "C"
-{
-    static void standard_dealloc( PyObject *p );
-    //
-    // All the following functions redirect the call from Python
-    // onto the matching virtual function in PythonExtensionBase
-    //
-    static int print_handler( PyObject *, FILE *, int );
-    static PyObject *getattr_handler( PyObject *, char * );
-    static int setattr_handler( PyObject *, char *, PyObject * );
-    static PyObject *getattro_handler( PyObject *, PyObject * );
-    static int setattro_handler( PyObject *, PyObject *, PyObject * );
-    static int compare_handler( PyObject *, PyObject * );
-    static PyObject *rich_compare_handler( PyObject *, PyObject *, int );
-    static PyObject *repr_handler( PyObject * );
-    static PyObject *str_handler( PyObject * );
-    static long hash_handler( PyObject * );
-    static PyObject *call_handler( PyObject *, PyObject *, PyObject * );
-    static PyObject *iter_handler( PyObject * );
-    static PyObject *iternext_handler( PyObject * );
-
-    // Sequence methods
-    static Py_ssize_t sequence_length_handler( PyObject * );
-    static PyObject *sequence_concat_handler( PyObject *,PyObject * );
-    static PyObject *sequence_repeat_handler( PyObject *, Py_ssize_t );
-    static PyObject *sequence_item_handler( PyObject *, Py_ssize_t );
-    static PyObject *sequence_slice_handler( PyObject *, Py_ssize_t, Py_ssize_t );
-    static int sequence_ass_item_handler( PyObject *, Py_ssize_t, PyObject * );
-    static int sequence_ass_slice_handler( PyObject *, Py_ssize_t, Py_ssize_t, PyObject * );
-
-    // Mapping
-    static Py_ssize_t mapping_length_handler( PyObject * );
-    static PyObject *mapping_subscript_handler( PyObject *, PyObject * );
-    static int mapping_ass_subscript_handler( PyObject *, PyObject *, PyObject * );
-
-    // Numeric methods
-    static int number_nonzero_handler( PyObject * );
-    static PyObject *number_negative_handler( PyObject * );
-    static PyObject *number_positive_handler( PyObject * );
-    static PyObject *number_absolute_handler( PyObject * );
-    static PyObject *number_invert_handler( PyObject * );
-    static PyObject *number_int_handler( PyObject * );
-    static PyObject *number_float_handler( PyObject * );
-#if !defined( PY3 )
-    static PyObject *number_long_handler( PyObject * );
-#endif
-    static PyObject *number_oct_handler( PyObject * );
-    static PyObject *number_hex_handler( PyObject * );
-    static PyObject *number_add_handler( PyObject *, PyObject * );
-    static PyObject *number_subtract_handler( PyObject *, PyObject * );
-    static PyObject *number_multiply_handler( PyObject *, PyObject * );
-    static PyObject *number_divide_handler( PyObject *, PyObject * );
-    static PyObject *number_remainder_handler( PyObject *, PyObject * );
-    static PyObject *number_divmod_handler( PyObject *, PyObject * );
-    static PyObject *number_lshift_handler( PyObject *, PyObject * );
-    static PyObject *number_rshift_handler( PyObject *, PyObject * );
-    static PyObject *number_and_handler( PyObject *, PyObject * );
-    static PyObject *number_xor_handler( PyObject *, PyObject * );
-    static PyObject *number_or_handler( PyObject *, PyObject * );
-    static PyObject *number_power_handler( PyObject *, PyObject *, PyObject * );
-
-    // Buffer
-    static Py_ssize_t buffer_getreadbuffer_handler( PyObject *, Py_ssize_t, void ** );
-    static Py_ssize_t buffer_getwritebuffer_handler( PyObject *, Py_ssize_t, void ** );
-    static Py_ssize_t buffer_getsegcount_handler( PyObject *, Py_ssize_t * );
-}
-
-extern "C" void standard_dealloc( PyObject *p )
-{
-    PyMem_DEL( p );
-}
-
-bool PythonType::readyType()
-{
-    return PyType_Ready( table ) >= 0;
-}
-
-PythonType &PythonType::supportSequenceType()
-{
-    if( !sequence_table )
-    {
-        sequence_table = new PySequenceMethods;
-        memset( sequence_table, 0, sizeof( PySequenceMethods ) );   // ensure new fields are 0
-        table->tp_as_sequence = sequence_table;
-        sequence_table->sq_length = sequence_length_handler;
-        sequence_table->sq_concat = sequence_concat_handler;
-        sequence_table->sq_repeat = sequence_repeat_handler;
-        sequence_table->sq_item = sequence_item_handler;
-#if !defined( PY3 )
-        sequence_table->sq_slice = sequence_slice_handler;
-#endif
-        sequence_table->sq_ass_item = sequence_ass_item_handler;    // BAS setup seperately?
-#if !defined( PY3 )
-        sequence_table->sq_ass_slice = sequence_ass_slice_handler;  // BAS setup seperately?
-#endif
-    }
-    return *this;
-}
-
-PythonType &PythonType::supportMappingType()
-{
-    if( !mapping_table )
-    {
-        mapping_table = new PyMappingMethods;
-        memset( mapping_table, 0, sizeof( PyMappingMethods ) );   // ensure new fields are 0
-        table->tp_as_mapping = mapping_table;
-        mapping_table->mp_length = mapping_length_handler;
-        mapping_table->mp_subscript = mapping_subscript_handler;
-        mapping_table->mp_ass_subscript = mapping_ass_subscript_handler;    // BAS setup seperately?
-    }
-    return *this;
-}
-
-PythonType &PythonType::supportNumberType()
-{
-    if( !number_table )
-    {
-        number_table = new PyNumberMethods;
-        memset( number_table, 0, sizeof( PyNumberMethods ) );   // ensure new fields are 0
-        table->tp_as_number = number_table;
-        number_table->nb_add = number_add_handler;
-        number_table->nb_subtract = number_subtract_handler;
-        number_table->nb_multiply = number_multiply_handler;
-#if !defined( PY3 )
-        number_table->nb_divide = number_divide_handler;
-#endif
-        number_table->nb_remainder = number_remainder_handler;
-        number_table->nb_divmod = number_divmod_handler;
-        number_table->nb_power = number_power_handler;
-        number_table->nb_negative = number_negative_handler;
-        number_table->nb_positive = number_positive_handler;
-        number_table->nb_absolute = number_absolute_handler;
-#if !defined( PY3 )
-        number_table->nb_nonzero = number_nonzero_handler;
-#endif
-        number_table->nb_invert = number_invert_handler;
-        number_table->nb_lshift = number_lshift_handler;
-        number_table->nb_rshift = number_rshift_handler;
-        number_table->nb_and = number_and_handler;
-        number_table->nb_xor = number_xor_handler;
-        number_table->nb_or = number_or_handler;
-#if !defined( PY3 )
-        number_table->nb_coerce = 0;
-#endif
-        number_table->nb_int = number_int_handler;
-#if !defined( PY3 )
-        number_table->nb_long = number_long_handler;
-#endif
-        number_table->nb_float = number_float_handler;
-#if !defined( PY3 )
-        number_table->nb_oct = number_oct_handler;
-        number_table->nb_hex = number_hex_handler;
-#endif
-    }
-    return *this;
-}
-
-PythonType &PythonType::supportBufferType()
-{
-    if( !buffer_table )
-    {
-        buffer_table = new PyBufferProcs;
-        memset( buffer_table, 0, sizeof( PyBufferProcs ) );   // ensure new fields are 0
-        table->tp_as_buffer = buffer_table;
-#if !defined( PY3 )
-        buffer_table->bf_getreadbuffer = buffer_getreadbuffer_handler;
-        buffer_table->bf_getwritebuffer = buffer_getwritebuffer_handler;
-        buffer_table->bf_getsegcount = buffer_getsegcount_handler;
-#endif
-    }
-    return *this;
-}
-
-// if you define one sequence method you must define
-// all of them except the assigns
-
-PythonType::PythonType( size_t basic_size, int itemsize, const char *default_name )
-: table( new PyTypeObject )
-, sequence_table( NULL )
-, mapping_table( NULL )
-, number_table( NULL )
-, buffer_table( NULL )
-{
-    // PyTypeObject is defined in <python-sources>/Include/object.h
-
-    memset( table, 0, sizeof( PyTypeObject ) );   // ensure new fields are 0
-    *reinterpret_cast<PyObject *>( table ) = py_object_initializer;
-#if !defined( PY3 )
-    table->ob_type = _Type_Type();
-    table->ob_size = 0;
-#endif
-    table->tp_name = const_cast<char *>( default_name );
-    table->tp_basicsize = basic_size;
-    table->tp_itemsize = itemsize;
-
-    // Methods to implement standard operations
-    table->tp_dealloc = (destructor)standard_dealloc;
-    table->tp_print = 0;
-    table->tp_getattr = 0;
-    table->tp_setattr = 0;
-    table->tp_compare = 0;
-    table->tp_repr = 0;
-
-    // Method suites for standard classes
-    table->tp_as_number = 0;
-    table->tp_as_sequence = 0;
-    table->tp_as_mapping =  0;
-
-    // More standard operations (here for binary compatibility)
-    table->tp_hash = 0;
-    table->tp_call = 0;
-    table->tp_str = 0;
-    table->tp_getattro = 0;
-    table->tp_setattro = 0;
-
-    // Functions to access object as input/output buffer
-    table->tp_as_buffer = 0;
-
-    // Flags to define presence of optional/expanded features
-    table->tp_flags = Py_TPFLAGS_DEFAULT;
-
-    // Documentation string
-    table->tp_doc = 0;
-
-#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 0)
-    table->tp_traverse = 0L;
-
-    // delete references to contained objects
-    table->tp_clear = 0L;
-#else
-    table->tp_xxx5 = 0L;
-    table->tp_xxx6 = 0L;
-#endif
-#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 1)
-    // first defined in 2.1
-    table->tp_richcompare = 0L;
-    // weak reference enabler
-    table->tp_weaklistoffset = 0L;
-#else
-    table->tp_xxx7 = 0L;
-    table->tp_xxx8 = 0L;
-#endif
-#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 2)
-    // first defined in 2.3
-    // Iterators
-    table->tp_iter = 0L;
-    table->tp_iternext = 0L;
-#endif
-#ifdef COUNT_ALLOCS
-    table->tp_alloc = 0;
-    table->tp_free = 0;
-    table->tp_maxalloc = 0;
-    table->tp_next = 0;
-#endif
-}
-
-PythonType::~PythonType()
-{
-    delete table;
-    delete sequence_table;
-    delete mapping_table;
-    delete number_table;
-    delete buffer_table;
-}
-
-PyTypeObject *PythonType::type_object() const
-{
-    return table;
-}
-
-PythonType &PythonType::name( const char *nam )
-{
-    table->tp_name = const_cast<char *>( nam );
-    return *this;
-}
-
-const char *PythonType::getName() const
-{
-    return table->tp_name;
-}
-
-PythonType &PythonType::doc( const char *d )
-{
-    table->tp_doc = const_cast<char *>( d );
-    return *this;
-}
-
-const char *PythonType::getDoc() const
-{
-    return table->tp_doc;
-}
-
-PythonType &PythonType::set_tp_dealloc( void (*tp_dealloc)( PyObject *self ) )
-{
-    table->tp_dealloc = tp_dealloc;
-    return *this;
-}
-
-PythonType &PythonType::set_tp_init( int (*tp_init)( PyObject *self, PyObject *args, PyObject *kwds ) )
-{
-    table->tp_init = tp_init;
-    return *this;
-}
-
-PythonType &PythonType::set_tp_new( PyObject *(*tp_new)( PyTypeObject *subtype, PyObject *args, PyObject *kwds ) )
-{
-    table->tp_new = tp_new;
-    return *this;
-}
-
-PythonType &PythonType::set_methods( PyMethodDef *methods )
-{
-    table->tp_methods = methods;
-    return *this;
-}
-
-PythonType &PythonType::supportClass()
-{
-    table->tp_flags |= Py_TPFLAGS_BASETYPE;
-    return *this;
-}
-
-PythonType &PythonType::dealloc( void( *f )( PyObject * ))
-{
-    table->tp_dealloc = f;
-    return *this;
-}
-
-PythonType &PythonType::supportPrint()
-{
-    table->tp_print = print_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportGetattr()
-{
-    table->tp_getattr = getattr_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportSetattr()
-{
-    table->tp_setattr = setattr_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportGetattro()
-{
-    table->tp_getattro = getattro_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportSetattro()
-{
-    table->tp_setattro = setattro_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportCompare()
-{
-    table->tp_compare = compare_handler;
-    return *this;
-}
-
-#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 1)
-PythonType &PythonType::supportRichCompare()
-{
-    table->tp_richcompare = rich_compare_handler;
-    return *this;
-}
-#endif
-
-PythonType &PythonType::supportRepr()
-{
-    table->tp_repr = repr_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportStr()
-{
-    table->tp_str = str_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportHash()
-{
-    table->tp_hash = hash_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportCall()
-{
-    table->tp_call = call_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportIter()
-{
-    table->tp_iter = iter_handler;
-    table->tp_iternext = iternext_handler;
-    return *this;
-}
-
-//--------------------------------------------------------------------------------
-//
-//    Handlers
-//
-//--------------------------------------------------------------------------------
-PythonExtensionBase *getPythonExtensionBase( PyObject *self )
-{
-    if( self->ob_type->tp_flags&Py_TPFLAGS_BASETYPE )
-    {
-        PythonClassInstance *instance = reinterpret_cast<PythonClassInstance *>( self );
-        return instance->m_pycxx_object;
-    }
-    else
-    {
-        return static_cast<PythonExtensionBase *>( self );
-    }
-}
-
-
-extern "C" int print_handler( PyObject *self, FILE *fp, int flags )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->print( fp, flags );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *getattr_handler( PyObject *self, char *name )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->getattr( name ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" int setattr_handler( PyObject *self, char *name, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->setattr( name, Py::Object( value ) );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *getattro_handler( PyObject *self, PyObject *name )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->getattro( Py::String( name ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" int setattro_handler( PyObject *self, PyObject *name, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->setattro( Py::String( name ), Py::Object( value ) );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" int compare_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->compare( Py::Object( other ) );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 1)
-extern "C" PyObject *rich_compare_handler( PyObject *self, PyObject *other, int op )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->rich_compare( Py::Object( other ), op ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-#endif
-
-extern "C" PyObject *repr_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->repr() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *str_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->str() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" long hash_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->hash();
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *call_handler( PyObject *self, PyObject *args, PyObject *kw )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        if( kw != NULL )
-            return new_reference_to( p->call( Py::Object( args ), Py::Object( kw ) ) );
-        else
-            return new_reference_to( p->call( Py::Object( args ), Py::Object() ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *iter_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->iter() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *iternext_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->iternext();  // might be a NULL ptr on end of iteration
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-// Sequence methods
-extern "C" Py_ssize_t sequence_length_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->sequence_length();
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *sequence_concat_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->sequence_concat( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *sequence_repeat_handler( PyObject *self, Py_ssize_t count )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->sequence_repeat( count ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *sequence_item_handler( PyObject *self, Py_ssize_t index )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->sequence_item( index ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *sequence_slice_handler( PyObject *self, Py_ssize_t first, Py_ssize_t last )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->sequence_slice( first, last ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" int sequence_ass_item_handler( PyObject *self, Py_ssize_t index, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->sequence_ass_item( index, Py::Object( value ) );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" int sequence_ass_slice_handler( PyObject *self, Py_ssize_t first, Py_ssize_t last, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->sequence_ass_slice( first, last, Py::Object( value ) );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-// Mapping
-extern "C" Py_ssize_t mapping_length_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->mapping_length();
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *mapping_subscript_handler( PyObject *self, PyObject *key )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->mapping_subscript( Py::Object( key ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" int mapping_ass_subscript_handler( PyObject *self, PyObject *key, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->mapping_ass_subscript( Py::Object( key ), Py::Object( value ) );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-// Number
-extern "C" int number_nonzero_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->number_nonzero();
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_negative_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_negative() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_positive_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_positive() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_absolute_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_absolute() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_invert_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_invert() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_int_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_int() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_float_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_float() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_long_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_long() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_oct_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_oct() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_hex_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_hex() );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_add_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_add( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_subtract_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_subtract( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_multiply_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_multiply( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_divide_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_divide( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_remainder_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_remainder( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_divmod_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_divmod( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_lshift_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_lshift( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_rshift_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_rshift( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_and_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_and( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_xor_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_xor( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_or_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_or( Py::Object( other ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_power_handler( PyObject *self, PyObject *x1, PyObject *x2 )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_power( Py::Object( x1 ), Py::Object( x2 ) ) );
-    }
-    catch( Py::Exception &)
-    {
-        return NULL;    // indicate error
-    }
-}
-
-// Buffer
-extern "C" Py_ssize_t buffer_getreadbuffer_handler( PyObject *self, Py_ssize_t index, void **pp )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->buffer_getreadbuffer( index, pp );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" Py_ssize_t buffer_getwritebuffer_handler( PyObject *self, Py_ssize_t index, void **pp )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->buffer_getwritebuffer( index, pp );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" Py_ssize_t buffer_getsegcount_handler( PyObject *self, Py_ssize_t *count )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->buffer_getsegcount( count );
-    }
-    catch( Py::Exception &)
-    {
-        return -1;    // indicate error
-    }
-}
-
-//================================================================================
-//
-//    Implementation of PythonExtensionBase
-//
-//================================================================================
-#define missing_method( method ) \
-    throw RuntimeError( "Extension object missing implement of " #method );
-
-PythonExtensionBase::PythonExtensionBase()
-{
-    ob_refcnt = 0;
-}
-
-PythonExtensionBase::~PythonExtensionBase()
-{
-    assert( ob_refcnt == 0 );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name )
-{
-    Py::TupleN args;
-    return  self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1 )
-{
-    Py::TupleN args( arg1 );
-    return  self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2 )
-{
-    Py::TupleN args( arg1, arg2 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3 )
-{
-    Py::TupleN args( arg1, arg2, arg3 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5, const Py::Object &arg6 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5, arg6 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5, const Py::Object &arg6,
-                                            const Py::Object &arg7 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5, arg6, arg7 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5, const Py::Object &arg6,
-                                            const Py::Object &arg7, const Py::Object &arg8 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5, const Py::Object &arg6,
-                                            const Py::Object &arg7, const Py::Object &arg8, const Py::Object &arg9 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-void PythonExtensionBase::reinit( Tuple &args, Dict &kwds )
-{
-    throw RuntimeError( "Must not call __init__ twice on this class" );
-}
-
-Py::Object PythonExtensionBase::genericGetAttro( const Py::String &name )
-{
-    return asObject( PyObject_GenericGetAttr( selfPtr(), name.ptr() ) );
-}
-
-int PythonExtensionBase::genericSetAttro( const Py::String &name, const Py::Object &value )
-{
-    return PyObject_GenericSetAttr( selfPtr(), name.ptr(), value.ptr() );
-}
-
-int PythonExtensionBase::print( FILE *, int )
-{
-    missing_method( print );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::getattr( const char * )
-{
-    missing_method( getattr );
-    return Py::None();
-}
-
-int PythonExtensionBase::setattr( const char *, const Py::Object &)
-{
-    missing_method( setattr );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::getattro( const Py::String &name )
-{
-    return genericGetAttro( name );
-}
-
-int PythonExtensionBase::setattro( const Py::String &name, const Py::Object &value )
-{
-    return genericSetAttro( name, value );
-}
-
-int PythonExtensionBase::compare( const Py::Object &)
-{
-    missing_method( compare );
-    return -1;
-}
-
-#if PY_MAJOR_VERSION > 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 1)
-Py::Object PythonExtensionBase::rich_compare( const Py::Object &, int op )
-{
-    missing_method( rich_compare );
-    return Py::None();
-}
-
-#endif
-Py::Object PythonExtensionBase::repr()
-{
-    missing_method( repr );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::str()
-{
-    missing_method( str );
-    return Py::None();
-}
-
-long PythonExtensionBase::hash()
-{
-    missing_method( hash );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::call( const Py::Object &, const Py::Object &)
-{
-    missing_method( call );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::iter()
-{
-    missing_method( iter );
-    return Py::None();
-}
-
-PyObject *PythonExtensionBase::iternext()
-{
-    missing_method( iternext );
-    return NULL;
-}
-
-// Sequence methods
-int PythonExtensionBase::sequence_length()
-{
-    missing_method( sequence_length );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::sequence_concat( const Py::Object &)
-{
-    missing_method( sequence_concat );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::sequence_repeat( Py_ssize_t )
-{
-    missing_method( sequence_repeat );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::sequence_item( Py_ssize_t )
-{
-    missing_method( sequence_item );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::sequence_slice( Py_ssize_t, Py_ssize_t )
-{
-    missing_method( sequence_slice );
-    return Py::None();
-}
-
-int PythonExtensionBase::sequence_ass_item( Py_ssize_t, const Py::Object &)
-{
-    missing_method( sequence_ass_item );
-    return -1;
-}
-
-int PythonExtensionBase::sequence_ass_slice( Py_ssize_t, Py_ssize_t, const Py::Object &)
-{
-    missing_method( sequence_ass_slice );
-    return -1;
-}
-
-// Mapping
-int PythonExtensionBase::mapping_length()
-{
-    missing_method( mapping_length );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::mapping_subscript( const Py::Object &)
-{
-    missing_method( mapping_subscript );
-    return Py::None();
-}
-
-int PythonExtensionBase::mapping_ass_subscript( const Py::Object &, const Py::Object &)
-{
-    missing_method( mapping_ass_subscript );
-    return -1;
-}
-
-// Number
-int PythonExtensionBase::number_nonzero()
-{
-    missing_method( number_nonzero );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::number_negative()
-{
-    missing_method( number_negative );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_positive()
-{
-    missing_method( number_positive );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_absolute()
-{
-    missing_method( number_absolute );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_invert()
-{
-    missing_method( number_invert );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_int()
-{
-    missing_method( number_int );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_float()
-{
-    missing_method( number_float );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_long()
-{
-    missing_method( number_long );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_oct()
-{
-    missing_method( number_oct );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_hex()
-{
-    missing_method( number_hex );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_add( const Py::Object &)
-{
-    missing_method( number_add );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_subtract( const Py::Object &)
-{
-    missing_method( number_subtract );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_multiply( const Py::Object &)
-{
-    missing_method( number_multiply );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_divide( const Py::Object &)
-{
-    missing_method( number_divide );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_remainder( const Py::Object &)
-{
-    missing_method( number_remainder );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_divmod( const Py::Object &)
-{
-    missing_method( number_divmod );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_lshift( const Py::Object &)
-{
-    missing_method( number_lshift );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_rshift( const Py::Object &)
-{
-    missing_method( number_rshift );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_and( const Py::Object &)
-{
-    missing_method( number_and );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_xor( const Py::Object &)
-{
-    missing_method( number_xor );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_or( const Py::Object &)
-{
-    missing_method( number_or );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_power( const Py::Object &, const Py::Object &)
-{
-    missing_method( number_power );
-    return Py::None();
-}
-
-// Buffer
-Py_ssize_t PythonExtensionBase::buffer_getreadbuffer( Py_ssize_t, void** )
-{
-    missing_method( buffer_getreadbuffer );
-    return -1;
-}
-
-Py_ssize_t PythonExtensionBase::buffer_getwritebuffer( Py_ssize_t, void** )
-{
-    missing_method( buffer_getwritebuffer );
-    return -1;
-}
-
-Py_ssize_t PythonExtensionBase::buffer_getsegcount( Py_ssize_t* )
-{
-    missing_method( buffer_getsegcount );
-    return -1;
-}
-
-//--------------------------------------------------------------------------------
-//
-//    Method call handlers for
-//        PythonExtensionBase
-//        ExtensionModuleBase
-//
-//--------------------------------------------------------------------------------
-extern "C" PyObject *method_keyword_call_handler( PyObject *_self_and_name_tuple, PyObject *_args, PyObject *_keywords )
-{
-    try
-    {
-        Tuple self_and_name_tuple( _self_and_name_tuple );
-
-        PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-        void *self_as_void = PyCObject_AsVoidPtr( self_in_cobject );
-        if( self_as_void == NULL )
-            return NULL;
-
-        ExtensionModuleBase *self = static_cast<ExtensionModuleBase *>( self_as_void );
-
-        Tuple args( _args );
-
-        if( _keywords == NULL )
-        {
-            Dict keywords;    // pass an empty dict
-
-            Object result
-                    (
-                    self->invoke_method_keyword
-                        (
-                        PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
-                        args,
-                        keywords
-                        )
-                    );
-
-            return new_reference_to( result.ptr() );
-        }
-        else
-        {
-            Dict keywords( _keywords ); // make dict
-
-            Object result
-                    (
-                    self->invoke_method_keyword
-                        (
-                        PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
-                        args,
-                        keywords
-                        )
-                    );
-
-            return new_reference_to( result.ptr() );
-        }
-    }
-    catch( Exception & )
-    {
-        return 0;
-    }
-}
-
-extern "C" PyObject *method_varargs_call_handler( PyObject *_self_and_name_tuple, PyObject *_args )
-{
-    try
-    {
-        Tuple self_and_name_tuple( _self_and_name_tuple );
-
-        PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-        void *self_as_void = PyCObject_AsVoidPtr( self_in_cobject );
-        if( self_as_void == NULL )
-            return NULL;
-
-        ExtensionModuleBase *self = static_cast<ExtensionModuleBase *>( self_as_void );
-        Tuple args( _args );
-
-        Object result
-                (
-                self->invoke_method_varargs
-                    (
-                    PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
-                    args
-                    )
-                );
-
-        return new_reference_to( result.ptr() );
-    }
-    catch( Exception & )
-    {
-        return 0;
-    }
-}
-
-extern "C" void do_not_dealloc( void * )
-{}
-
-//--------------------------------------------------------------------------------
-//
-//    ExtensionExceptionType
-//
-//--------------------------------------------------------------------------------
-ExtensionExceptionType::ExtensionExceptionType()
-: Py::Object()
-{
-}
-
-void ExtensionExceptionType::init( ExtensionModuleBase &module, const std::string& name )
-{
-    std::string module_name( module.fullName() );
-    module_name += ".";
-    module_name += name;
-    set( PyErr_NewException( const_cast<char *>( module_name.c_str() ), NULL, NULL ), true );
-}
-
-void ExtensionExceptionType::init( ExtensionModuleBase &module, const std::string& name, ExtensionExceptionType &parent)
-{
-     std::string module_name( module.fullName() );
-     module_name += ".";
-     module_name += name;
-     set( PyErr_NewException( const_cast<char *>( module_name.c_str() ), parent.ptr(), NULL ), true );
-}
-
-ExtensionExceptionType::~ExtensionExceptionType()
-{
-}
-
-Exception::Exception( ExtensionExceptionType &exception, const std::string& reason )
-{
-    PyErr_SetString( exception.ptr(), reason.c_str() );
-}
-
-Exception::Exception( ExtensionExceptionType &exception, Object &reason )
-{
-    PyErr_SetObject( exception.ptr(), reason.ptr() );
-}
-
-Exception::Exception( PyObject *exception, Object &reason )
-{
-    PyErr_SetObject( exception, reason.ptr() );
-}
-
-}    // end of namespace Py
diff --git a/external_libraries/pycxx-6.2.2/Src/Python2/cxxextensions.c b/external_libraries/pycxx-6.2.2/Src/Python2/cxxextensions.c
deleted file mode 100644
index edae3be..0000000
--- a/external_libraries/pycxx-6.2.2/Src/Python2/cxxextensions.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//---------------------------------------------------------------------------*/
-
-#include "CXX/WrapPython.h"
-
-#ifdef __cplusplus
-extern "C" 
-{
-#endif
-
-PyObject py_object_initializer = {PyObject_HEAD_INIT(0)};
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/external_libraries/pycxx-6.2.2/Src/Python2/cxxsupport.cxx b/external_libraries/pycxx-6.2.2/Src/Python2/cxxsupport.cxx
deleted file mode 100644
index 1dfba5a..0000000
--- a/external_libraries/pycxx-6.2.2/Src/Python2/cxxsupport.cxx
+++ /dev/null
@@ -1,174 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#include "CXX/Objects.hxx"
-namespace Py {
-
-Py_UNICODE unicode_null_string[1] = { 0 };
-
-Type Object::type () const
-{ 
-    return Type (PyObject_Type (p), true);
-}
-
-String Object::str () const
-{
-    return String (PyObject_Str (p), true);
-}
-
-String Object::repr () const
-{ 
-    return String (PyObject_Repr (p), true);
-}
-
-std::string Object::as_string() const
-{
-    return static_cast<std::string>(str());
-}
-
-List Object::dir () const
-        {
-        return List (PyObject_Dir (p), true);
-        }
-
-bool Object::isType (const Type& t) const
-{ 
-    return type ().ptr() == t.ptr();
-}
-
-Char::operator String() const
-{
-    return String(ptr());
-}
-
-// TMM: non-member operaters for iterators - see above
-// I've also made a bug fix in respect to the cxx code
-// (dereffed the left.seq and right.seq comparison)
-bool operator==(const Sequence::iterator& left, const Sequence::iterator& right)
-{
-    return left.eql( right );
-}
-
-bool operator!=(const Sequence::iterator& left, const Sequence::iterator& right)
-{
-    return left.neq( right );
-}
-
-bool operator< (const Sequence::iterator& left, const Sequence::iterator& right)
-{
-    return left.lss( right );
-}
-
-bool operator> (const Sequence::iterator& left, const Sequence::iterator& right)
-{
-    return left.gtr( right );
-}
-
-bool operator<=(const Sequence::iterator& left, const Sequence::iterator& right)
-{
-    return left.leq( right );
-}
-
-bool operator>=(const Sequence::iterator& left, const Sequence::iterator& right)
-{
-    return left.geq( right );
-}
-
-// now for const_iterator
-bool operator==(const Sequence::const_iterator& left, const Sequence::const_iterator& right)
-{
-    return left.eql( right );
-}
-
-bool operator!=(const Sequence::const_iterator& left, const Sequence::const_iterator& right)
-{
-    return left.neq( right );
-}
-
-bool operator< (const Sequence::const_iterator& left, const Sequence::const_iterator& right)
-{
-    return left.lss( right );
-}
-
-bool operator> (const Sequence::const_iterator& left, const Sequence::const_iterator& right)
-{
-    return left.gtr( right );
-}
-
-bool operator<=(const Sequence::const_iterator& left, const Sequence::const_iterator& right)
-{
-    return left.leq( right );
-}
-
-bool operator>=(const Sequence::const_iterator& left, const Sequence::const_iterator& right)
-{
-    return left.geq( right );
-}
-
-// For mappings:
-bool operator==(const Mapping::iterator& left, const Mapping::iterator& right)
-{
-    return left.eql( right );
-}
-
-bool operator!=(const Mapping::iterator& left, const Mapping::iterator& right)
-{
-    return left.neq( right );
-}
-
-// now for const_iterator
-bool operator==(const Mapping::const_iterator& left, const Mapping::const_iterator& right)
-{
-    return left.eql( right );
-}
-
-bool operator!=(const Mapping::const_iterator& left, const Mapping::const_iterator& right)
-{
-    return left.neq( right );
-}
-
-// TMM: 31May'01 - Added the #ifndef so I can exclude iostreams.
-#ifndef CXX_NO_IOSTREAMS
-// output
-
-std::ostream& operator<< (std::ostream& os, const Object& ob)
-{
-    return (os << static_cast<std::string>(ob.str()));
-}  
-#endif
-
-} // Py
diff --git a/external_libraries/pycxx-6.2.2/Src/Python3/IndirectPythonInterface.cxx b/external_libraries/pycxx-6.2.2/Src/Python3/IndirectPythonInterface.cxx
deleted file mode 100644
index 405820e..0000000
--- a/external_libraries/pycxx-6.2.2/Src/Python3/IndirectPythonInterface.cxx
+++ /dev/null
@@ -1,523 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#include "CXX/IndirectPythonInterface.hxx"
-
-namespace Py
-{
-bool _CFunction_Check( PyObject *op )   { return op->ob_type == _CFunction_Type(); }
-bool _CObject_Check( PyObject *op )     { return op->ob_type == _CObject_Type(); }
-bool _Complex_Check( PyObject *op )     { return op->ob_type == _Complex_Type(); }
-bool _Dict_Check( PyObject *op )        { return op->ob_type == _Dict_Type(); }
-bool _Float_Check( PyObject *op )       { return op->ob_type == _Float_Type(); }
-bool _Function_Check( PyObject *op )    { return op->ob_type == _Function_Type(); }
-bool _Boolean_Check( PyObject *op )     { return op->ob_type == _Bool_Type(); }
-bool _List_Check( PyObject *op )        { return op->ob_type == _List_Type(); }
-bool _Long_Check( PyObject *op )        { return op->ob_type == _Long_Type(); }
-bool _Method_Check( PyObject *op )      { return op->ob_type == _Method_Type(); }
-bool _Module_Check( PyObject *op )      { return op->ob_type == _Module_Type(); }
-bool _Range_Check( PyObject *op )       { return op->ob_type == _Range_Type(); }
-bool _Slice_Check( PyObject *op )       { return op->ob_type == _Slice_Type(); }
-bool _TraceBack_Check( PyObject *op )   { return op->ob_type == _TraceBack_Type(); }
-bool _Tuple_Check( PyObject *op )       { return op->ob_type == _Tuple_Type(); }
-bool _Type_Check( PyObject *op )        { return op->ob_type == _Type_Type(); }
-bool _Unicode_Check( PyObject *op )     { return op->ob_type == _Unicode_Type(); }
-bool _Bytes_Check( PyObject *op )       { return op->ob_type == _Bytes_Type(); }
-
-#if defined(PY_WIN32_DELAYLOAD_PYTHON_DLL)
-
-#if defined(MS_WINDOWS)
-#include <windows.h>
-
-
-static HMODULE python_dll;
-
-static PyObject *ptr__Exc_ArithmeticError = NULL;
-static PyObject *ptr__Exc_AssertionError = NULL;
-static PyObject *ptr__Exc_AttributeError = NULL;
-static PyObject *ptr__Exc_EnvironmentError = NULL;
-static PyObject *ptr__Exc_EOFError = NULL;
-static PyObject *ptr__Exc_Exception = NULL;
-static PyObject *ptr__Exc_FloatingPointError = NULL;
-static PyObject *ptr__Exc_ImportError = NULL;
-static PyObject *ptr__Exc_IndexError = NULL;
-static PyObject *ptr__Exc_IOError = NULL;
-static PyObject *ptr__Exc_KeyboardInterrupt = NULL;
-static PyObject *ptr__Exc_KeyError = NULL;
-static PyObject *ptr__Exc_LookupError = NULL;
-static PyObject *ptr__Exc_MemoryError = NULL;
-static PyObject *ptr__Exc_NameError = NULL;
-static PyObject *ptr__Exc_NotImplementedError = NULL;
-static PyObject *ptr__Exc_OSError = NULL;
-static PyObject *ptr__Exc_OverflowError = NULL;
-static PyObject *ptr__Exc_RuntimeError = NULL;
-static PyObject *ptr__Exc_StandardError = NULL;
-static PyObject *ptr__Exc_SyntaxError = NULL;
-static PyObject *ptr__Exc_SystemError = NULL;
-static PyObject *ptr__Exc_SystemExit = NULL;
-static PyObject *ptr__Exc_TypeError = NULL;
-static PyObject *ptr__Exc_ValueError = NULL;
-static PyObject *ptr__Exc_ZeroDivisionError = NULL;
-
-#ifdef MS_WINDOWS
-static PyObject *ptr__Exc_WindowsError = NULL;
-#endif
-
-static PyObject *ptr__Exc_IndentationError = NULL;
-static PyObject *ptr__Exc_TabError = NULL;
-static PyObject *ptr__Exc_UnboundLocalError = NULL;
-static PyObject *ptr__Exc_UnicodeError = NULL;
-static PyObject *ptr__PyNone = NULL;
-static PyObject *ptr__PyFalse = NULL;
-static PyObject *ptr__PyTrue = NULL;
-static PyTypeObject *ptr__CFunction_Type = NULL;
-static PyTypeObject *ptr__CObject_Type = NULL;
-static PyTypeObject *ptr__Complex_Type = NULL;
-static PyTypeObject *ptr__Dict_Type = NULL;
-static PyTypeObject *ptr__Float_Type = NULL;
-static PyTypeObject *ptr__Function_Type = NULL;
-static PyTypeObject *ptr__List_Type = NULL;
-static PyTypeObject *ptr__Long_Type = NULL;
-static PyTypeObject *ptr__Method_Type = NULL;
-static PyTypeObject *ptr__Module_Type = NULL;
-static PyTypeObject *ptr__Range_Type = NULL;
-static PyTypeObject *ptr__Slice_Type = NULL;
-static PyTypeObject *ptr__TraceBack_Type = NULL;
-static PyTypeObject *ptr__Tuple_Type = NULL;
-static PyTypeObject *ptr__Type_Type = NULL;
-
-static int *ptr_Py_DebugFlag = NULL;
-static int *ptr_Py_InteractiveFlag = NULL;
-static int *ptr_Py_OptimizeFlag = NULL;
-static int *ptr_Py_NoSiteFlag = NULL;
-static int *ptr_Py_VerboseFlag = NULL;
-
-static char **ptr__Py_PackageContext = NULL;
-
-#ifdef Py_REF_DEBUG
-int *ptr_Py_RefTotal;
-#endif
-
-
-//--------------------------------------------------------------------------------
-class GetAddressException
-{
-public:
-    GetAddressException( const char *_name )
-        : name( _name )
-    {}
-    virtual ~GetAddressException() {}
-    const char *name;
-};
-
-
-//--------------------------------------------------------------------------------
-static PyObject *GetPyObjectPointer_As_PyObjectPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return *(PyObject **)addr;
-}
-
-static PyObject *GetPyObject_As_PyObjectPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return (PyObject *)addr;
-}
-
-static PyTypeObject *GetPyTypeObjectPointer_As_PyTypeObjectPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return *(PyTypeObject **)addr;
-}
-
-static PyTypeObject *GetPyTypeObject_As_PyTypeObjectPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return (PyTypeObject *)addr;
-}
-
-static int *GetInt_as_IntPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return (int *)addr;
-}
-
-static char **GetCharPointer_as_CharPointerPointer( const char *name )
-{
-    FARPROC addr = GetProcAddress( python_dll, name );
-    if( addr == NULL )
-        throw GetAddressException( name );
-
-    return (char **)addr;
-}
-
-
-#ifdef _DEBUG
-static const char python_dll_name_format[] = "PYTHON%1.1d%1.1d_D.DLL";
-#else
-static const char python_dll_name_format[] = "PYTHON%1.1d%1.1d.DLL";
-#endif
-
-//--------------------------------------------------------------------------------
-bool InitialisePythonIndirectInterface()
-{
-    char python_dll_name[sizeof(python_dll_name_format)];
-
-    sprintf( python_dll_name, python_dll_name_format, PY_MAJOR_VERSION, PY_MINOR_VERSION );
-
-    python_dll = LoadLibrary( python_dll_name );
-    if( python_dll == NULL )
-        return false;
-
-    try
-    {
-#ifdef Py_REF_DEBUG
-    ptr_Py_RefTotal             = GetInt_as_IntPointer( "_Py_RefTotal" );
-#endif
-    ptr_Py_DebugFlag            = GetInt_as_IntPointer( "Py_DebugFlag" );
-    ptr_Py_InteractiveFlag      = GetInt_as_IntPointer( "Py_InteractiveFlag" );
-    ptr_Py_OptimizeFlag         = GetInt_as_IntPointer( "Py_OptimizeFlag" );
-    ptr_Py_NoSiteFlag           = GetInt_as_IntPointer( "Py_NoSiteFlag" );
-    ptr_Py_VerboseFlag          = GetInt_as_IntPointer( "Py_VerboseFlag" );
-    ptr__Py_PackageContext      = GetCharPointer_as_CharPointerPointer( "_Py_PackageContext" );
-
-    ptr__Exc_ArithmeticError    = GetPyObjectPointer_As_PyObjectPointer( "PyExc_ArithmeticError" );
-    ptr__Exc_AssertionError     = GetPyObjectPointer_As_PyObjectPointer( "PyExc_AssertionError" );
-    ptr__Exc_AttributeError     = GetPyObjectPointer_As_PyObjectPointer( "PyExc_AttributeError" );
-    ptr__Exc_EnvironmentError   = GetPyObjectPointer_As_PyObjectPointer( "PyExc_EnvironmentError" );
-    ptr__Exc_EOFError           = GetPyObjectPointer_As_PyObjectPointer( "PyExc_EOFError" );
-    ptr__Exc_Exception          = GetPyObjectPointer_As_PyObjectPointer( "PyExc_Exception" );
-    ptr__Exc_FloatingPointError = GetPyObjectPointer_As_PyObjectPointer( "PyExc_FloatingPointError" );
-    ptr__Exc_ImportError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_ImportError" );
-    ptr__Exc_IndexError         = GetPyObjectPointer_As_PyObjectPointer( "PyExc_IndexError" );
-    ptr__Exc_IOError            = GetPyObjectPointer_As_PyObjectPointer( "PyExc_IOError" );
-    ptr__Exc_KeyboardInterrupt  = GetPyObjectPointer_As_PyObjectPointer( "PyExc_KeyboardInterrupt" );
-    ptr__Exc_KeyError           = GetPyObjectPointer_As_PyObjectPointer( "PyExc_KeyError" );
-    ptr__Exc_LookupError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_LookupError" );
-    ptr__Exc_MemoryError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_MemoryError" );
-    ptr__Exc_NameError          = GetPyObjectPointer_As_PyObjectPointer( "PyExc_NameError" );
-    ptr__Exc_NotImplementedError= GetPyObjectPointer_As_PyObjectPointer( "PyExc_NotImplementedError" );
-    ptr__Exc_OSError            = GetPyObjectPointer_As_PyObjectPointer( "PyExc_OSError" );
-    ptr__Exc_OverflowError      = GetPyObjectPointer_As_PyObjectPointer( "PyExc_OverflowError" );
-    ptr__Exc_RuntimeError       = GetPyObjectPointer_As_PyObjectPointer( "PyExc_RuntimeError" );
-    ptr__Exc_StandardError      = GetPyObjectPointer_As_PyObjectPointer( "PyExc_StandardError" );
-    ptr__Exc_SyntaxError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_SyntaxError" );
-    ptr__Exc_SystemError        = GetPyObjectPointer_As_PyObjectPointer( "PyExc_SystemError" );
-    ptr__Exc_SystemExit         = GetPyObjectPointer_As_PyObjectPointer( "PyExc_SystemExit" );
-    ptr__Exc_TypeError          = GetPyObjectPointer_As_PyObjectPointer( "PyExc_TypeError" );
-    ptr__Exc_ValueError         = GetPyObjectPointer_As_PyObjectPointer( "PyExc_ValueError" );
-#ifdef MS_WINDOWS
-    ptr__Exc_WindowsError       = GetPyObjectPointer_As_PyObjectPointer( "PyExc_WindowsError" );
-#endif
-    ptr__Exc_ZeroDivisionError  = GetPyObjectPointer_As_PyObjectPointer( "PyExc_ZeroDivisionError" );
-    ptr__Exc_IndentationError   = GetPyObjectPointer_As_PyObjectPointer( "PyExc_IndentationError" );
-    ptr__Exc_TabError           = GetPyObjectPointer_As_PyObjectPointer( "PyExc_TabError" );
-    ptr__Exc_UnboundLocalError  = GetPyObjectPointer_As_PyObjectPointer( "PyExc_UnboundLocalError" );
-    ptr__Exc_UnicodeError       = GetPyObjectPointer_As_PyObjectPointer( "PyExc_UnicodeError" );
-    ptr__PyNone                 = GetPyObject_As_PyObjectPointer( "_Py_NoneStruct" );
-
-    ptr__PyFalse                = GetPyObject_As_PyObjectPointer( "_Py_ZeroStruct" );
-    ptr__PyTrue                 = GetPyObject_As_PyObjectPointer( "_Py_TrueStruct" );
-
-    ptr__CFunction_Type         = GetPyTypeObject_As_PyTypeObjectPointer( "PyCFunction_Type" );
-    ptr__CObject_Type           = GetPyTypeObject_As_PyTypeObjectPointer( "PyCObject_Type" );
-    ptr__Complex_Type           = GetPyTypeObject_As_PyTypeObjectPointer( "PyComplex_Type" );
-    ptr__Dict_Type              = GetPyTypeObject_As_PyTypeObjectPointer( "PyDict_Type" );
-    ptr__Float_Type             = GetPyTypeObject_As_PyTypeObjectPointer( "PyFloat_Type" );
-    ptr__Function_Type          = GetPyTypeObject_As_PyTypeObjectPointer( "PyFunction_Type" );
-    ptr__List_Type              = GetPyTypeObject_As_PyTypeObjectPointer( "PyList_Type" );
-    ptr__Long_Type              = GetPyTypeObject_As_PyTypeObjectPointer( "PyLong_Type" );
-    ptr__Method_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyMethod_Type" );
-    ptr__Module_Type            = GetPyTypeObject_As_PyTypeObjectPointer( "PyModule_Type" );
-    ptr__Range_Type             = GetPyTypeObject_As_PyTypeObjectPointer( "PyRange_Type" );
-    ptr__Slice_Type             = GetPyTypeObject_As_PyTypeObjectPointer( "PySlice_Type" );
-    ptr__TraceBack_Type         = GetPyTypeObject_As_PyTypeObjectPointer( "PyTraceBack_Type" );
-    ptr__Tuple_Type             = GetPyTypeObject_As_PyTypeObjectPointer( "PyTuple_Type" );
-    ptr__Type_Type              = GetPyTypeObject_As_PyTypeObjectPointer( "PyType_Type" );
-    ptr__Unicode_Type           = GetPyTypeObject_As_PyTypeObjectPointer( "PyUnicode_Type" );
-    ptr__Bytes_Type             = GetPyTypeObject_As_PyTypeObjectPointer( "PyBytes_Type" );
-    }
-    catch( GetAddressException &e )
-    {
-        OutputDebugString( python_dll_name );
-        OutputDebugString( " does not contain symbol ");
-        OutputDebugString( e.name );
-        OutputDebugString( "\n" );
-
-        return false;
-    }
-
-    return true;
-}
-
-//
-//    Wrap variables as function calls
-//
-PyObject *_Exc_ArithmeticError()        { return ptr__Exc_ArithmeticError; }
-PyObject *_Exc_AssertionError()         { return ptr__Exc_AssertionError; }
-PyObject *_Exc_AttributeError()         { return ptr__Exc_AttributeError; }
-PyObject *_Exc_EnvironmentError()       { return ptr__Exc_EnvironmentError; }
-PyObject *_Exc_EOFError()               { return ptr__Exc_EOFError; }
-PyObject *_Exc_Exception()              { return ptr__Exc_Exception; }
-PyObject *_Exc_FloatingPointError()     { return ptr__Exc_FloatingPointError; }
-PyObject *_Exc_ImportError()            { return ptr__Exc_ImportError; }
-PyObject *_Exc_IndexError()             { return ptr__Exc_IndexError; }
-PyObject *_Exc_IOError()                { return ptr__Exc_IOError; }
-PyObject *_Exc_KeyboardInterrupt()      { return ptr__Exc_KeyboardInterrupt; }
-PyObject *_Exc_KeyError()               { return ptr__Exc_KeyError; }
-PyObject *_Exc_LookupError()            { return ptr__Exc_LookupError; }
-PyObject *_Exc_MemoryError()            { return ptr__Exc_MemoryError; }
-PyObject *_Exc_NameError()              { return ptr__Exc_NameError; }
-PyObject *_Exc_NotImplementedError()    { return ptr__Exc_NotImplementedError; }
-PyObject *_Exc_OSError()                { return ptr__Exc_OSError; }
-PyObject *_Exc_OverflowError()          { return ptr__Exc_OverflowError; }
-PyObject *_Exc_RuntimeError()           { return ptr__Exc_RuntimeError; }
-PyObject *_Exc_StandardError()          { return ptr__Exc_StandardError; }
-PyObject *_Exc_SyntaxError()            { return ptr__Exc_SyntaxError; }
-PyObject *_Exc_SystemError()            { return ptr__Exc_SystemError; }
-PyObject *_Exc_SystemExit()             { return ptr__Exc_SystemExit; }
-PyObject *_Exc_TypeError()              { return ptr__Exc_TypeError; }
-PyObject *_Exc_ValueError()             { return ptr__Exc_ValueError; }
-#ifdef MS_WINDOWS
-PyObject *_Exc_WindowsError()           { return ptr__Exc_WindowsError; }
-#endif
-PyObject *_Exc_ZeroDivisionError()      { return ptr__Exc_ZeroDivisionError; }
-PyObject *_Exc_IndentationError()       { return ptr__Exc_IndentationError; }
-PyObject *_Exc_TabError()               { return ptr__Exc_TabError; }
-PyObject *_Exc_UnboundLocalError()      { return ptr__Exc_UnboundLocalError; }
-PyObject *_Exc_UnicodeError()           { return ptr__Exc_UnicodeError; }
-
-//
-//    wrap items in Object.h
-//
-PyObject *_None()                       { return ptr__PyNone; }
-
-PyObject *_False()                      { return ptr__PyFalse; }
-PyObject *_True()                       { return ptr__PyTrue; }
-
-PyTypeObject *_CFunction_Type()         { return ptr__CFunction_Type; }
-PyTypeObject *_CObject_Type()           { return ptr__CObject_Type; }
-PyTypeObject *_Complex_Type()           { return ptr__Complex_Type; }
-PyTypeObject *_Dict_Type()              { return ptr__Dict_Type; }
-PyTypeObject *_Float_Type()             { return ptr__Float_Type; }
-PyTypeObject *_Function_Type()          { return ptr__Function_Type; }
-PyTypeObject *_Bool_Type()              { return ptr__Bool_Type; }
-PyTypeObject *_List_Type()              { return ptr__List_Type; }
-PyTypeObject *_Long_Type()              { return ptr__Long_Type; }
-PyTypeObject *_Method_Type()            { return ptr__Method_Type; }
-PyTypeObject *_Module_Type()            { return ptr__Module_Type; }
-PyTypeObject *_Range_Type()             { return ptr__Range_Type; }
-PyTypeObject *_Slice_Type()             { return ptr__Slice_Type; }
-PyTypeObject *_TraceBack_Type()         { return ptr__TraceBack_Type; }
-PyTypeObject *_Tuple_Type()             { return ptr__Tuple_Type; }
-PyTypeObject *_Type_Type()              { return ptr__Type_Type; }
-PyTypeObject *_Unicode_Type()           { return ptr__Unicode_Type; }
-PyTypeObject *_Bytes_Type()             { return ptr__Bytes_Type; }
-
-char *__Py_PackageContext()             { return *ptr__Py_PackageContext; }
-
-
-//
-//    wrap the Python Flag variables
-//
-int &_Py_DebugFlag()                    { return *ptr_Py_DebugFlag; }
-int &_Py_InteractiveFlag()              { return *ptr_Py_InteractiveFlag; }
-int &_Py_OptimizeFlag()                 { return *ptr_Py_OptimizeFlag; }
-int &_Py_NoSiteFlag()                   { return *ptr_Py_NoSiteFlag; }
-int &_Py_VerboseFlag()                  { return *ptr_Py_VerboseFlag; }
-
-#if 0
-#define Py_INCREF(op) (                         \
-    _Py_INC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
-    ((PyObject*)(op))->ob_refcnt++)
-
-#define Py_DECREF(op)                           \
-    if (_Py_DEC_REFTOTAL  _Py_REF_DEBUG_COMMA   \
-        --((PyObject*)(op))->ob_refcnt != 0)    \
-        _Py_CHECK_REFCNT(op)                    \
-    else                                        \
-        _Py_Dealloc((PyObject *)(op))
-#endif
-
-void _XINCREF( PyObject *op )
-{
-    // This function must match the contents of Py_XINCREF(op)
-    if( op == NULL )
-        return;
-
-#ifdef Py_REF_DEBUG
-    (*ptr_Py_RefTotal)++;
-#endif
-    (op)->ob_refcnt++;
-
-}
-
-void _XDECREF( PyObject *op )
-{
-    // This function must match the contents of Py_XDECREF(op);
-    if( op == NULL )
-        return;
-
-#ifdef Py_REF_DEBUG
-    (*ptr_Py_RefTotal)--;
-#endif
-
-    if (--(op)->ob_refcnt == 0)
-        _Py_Dealloc((PyObject *)(op));
-}
-
-
-#else
-#error "Can only delay load under Win32"
-#endif
-
-#else
-
-//================================================================================
-//
-//    Map onto Macros
-//
-//================================================================================
-
-//
-//    Wrap variables as function calls
-//
-
-PyObject *_Exc_ArithmeticError()        { return ::PyExc_ArithmeticError; }
-PyObject *_Exc_AssertionError()         { return ::PyExc_AssertionError; }
-PyObject *_Exc_AttributeError()         { return ::PyExc_AttributeError; }
-PyObject *_Exc_EnvironmentError()       { return ::PyExc_EnvironmentError; }
-PyObject *_Exc_EOFError()               { return ::PyExc_EOFError; }
-PyObject *_Exc_Exception()              { return ::PyExc_Exception; }
-PyObject *_Exc_FloatingPointError()     { return ::PyExc_FloatingPointError; }
-PyObject *_Exc_ImportError()            { return ::PyExc_ImportError; }
-PyObject *_Exc_IndexError()             { return ::PyExc_IndexError; }
-PyObject *_Exc_IOError()                { return ::PyExc_IOError; }
-PyObject *_Exc_KeyboardInterrupt()      { return ::PyExc_KeyboardInterrupt; }
-PyObject *_Exc_KeyError()               { return ::PyExc_KeyError; }
-PyObject *_Exc_LookupError()            { return ::PyExc_LookupError; }
-PyObject *_Exc_MemoryError()            { return ::PyExc_MemoryError; }
-PyObject *_Exc_NameError()              { return ::PyExc_NameError; }
-PyObject *_Exc_NotImplementedError()    { return ::PyExc_NotImplementedError; }
-PyObject *_Exc_OSError()                { return ::PyExc_OSError; }
-PyObject *_Exc_OverflowError()          { return ::PyExc_OverflowError; }
-PyObject *_Exc_RuntimeError()           { return ::PyExc_RuntimeError; }
-PyObject *_Exc_SyntaxError()            { return ::PyExc_SyntaxError; }
-PyObject *_Exc_SystemError()            { return ::PyExc_SystemError; }
-PyObject *_Exc_SystemExit()             { return ::PyExc_SystemExit; }
-PyObject *_Exc_TypeError()              { return ::PyExc_TypeError; }
-PyObject *_Exc_ValueError()             { return ::PyExc_ValueError; }
-PyObject *_Exc_ZeroDivisionError()      { return ::PyExc_ZeroDivisionError; }
-PyObject *_Exc_IndentationError()       { return ::PyExc_IndentationError; }
-PyObject *_Exc_TabError()               { return ::PyExc_TabError; }
-PyObject *_Exc_UnboundLocalError()      { return ::PyExc_UnboundLocalError; }
-PyObject *_Exc_UnicodeError()           { return ::PyExc_UnicodeError; }
-
-#ifdef MS_WINDOWS
-PyObject *_Exc_WindowsError()           { return ::PyExc_WindowsError; }
-#endif
-
-
-
-
-//
-//    wrap items in Object.h
-//
-PyObject *_None()                       { return &::_Py_NoneStruct; }
-
-PyObject *_False()                      { return Py_False; }
-PyObject *_True()                       { return Py_True; }
-
-PyTypeObject *_CFunction_Type()         { return &PyCFunction_Type; }
-PyTypeObject *_CObject_Type()           { return &PyCObject_Type; }
-PyTypeObject *_Complex_Type()           { return &PyComplex_Type; }
-PyTypeObject *_Dict_Type()              { return &PyDict_Type; }
-PyTypeObject *_Float_Type()             { return &PyFloat_Type; }
-PyTypeObject *_Function_Type()          { return &PyFunction_Type; }
-PyTypeObject *_Bool_Type()              { return &PyBool_Type; }
-PyTypeObject *_List_Type()              { return &PyList_Type; }
-PyTypeObject *_Long_Type()              { return &PyLong_Type; }
-PyTypeObject *_Method_Type()            { return &PyMethod_Type; }
-PyTypeObject *_Module_Type()            { return &PyModule_Type; }
-PyTypeObject *_Range_Type()             { return &PyRange_Type; }
-PyTypeObject *_Slice_Type()             { return &PySlice_Type; }
-PyTypeObject *_TraceBack_Type()         { return &PyTraceBack_Type; }
-PyTypeObject *_Tuple_Type()             { return &PyTuple_Type; }
-PyTypeObject *_Type_Type()              { return &PyType_Type; }
-PyTypeObject *_Unicode_Type()           { return &PyUnicode_Type; }
-PyTypeObject *_Bytes_Type()             { return &PyBytes_Type; }
-
-//
-//    wrap flags
-//
-int &_Py_DebugFlag()                    { return Py_DebugFlag; }
-int &_Py_InteractiveFlag()              { return Py_InteractiveFlag; }
-int &_Py_OptimizeFlag()                 { return Py_OptimizeFlag; }
-int &_Py_NoSiteFlag()                   { return Py_NoSiteFlag; }
-int &_Py_VerboseFlag()                  { return Py_VerboseFlag; }
-char *__Py_PackageContext()             { return _Py_PackageContext; }
-
-//
-//    Needed to keep the abstactions for delayload interface
-//
-void _XINCREF( PyObject *op )
-{
-    Py_XINCREF( op );
-}
-
-void _XDECREF( PyObject *op )
-{
-    Py_XDECREF( op );
-}
-
-#endif
-}
diff --git a/external_libraries/pycxx-6.2.2/Src/Python3/cxx_extensions.cxx b/external_libraries/pycxx-6.2.2/Src/Python3/cxx_extensions.cxx
deleted file mode 100644
index 9f26166..0000000
--- a/external_libraries/pycxx-6.2.2/Src/Python3/cxx_extensions.cxx
+++ /dev/null
@@ -1,1949 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/Extensions.hxx"
-#include "CXX/Exception.hxx"
-
-#include <assert.h>
-
-#ifdef PYCXX_DEBUG
-//
-//  Functions useful when debugging PyCXX
-//
-void bpt( void )
-{
-}
-
-void printRefCount( PyObject *obj )
-{
-    std::cout << "RefCount of 0x" << std::hex << reinterpret_cast< unsigned int >( obj ) << std::dec << " is " << Py_REFCNT( obj ) << std::endl;
-}
-#endif
-
-namespace Py
-{
-
-void Object::validate()
-{
-    // release pointer if not the right type
-    if( !accepts( p ) )
-    {
-#if defined( _CPPRTTI ) || defined( __GNUG__ )
-        std::string s( "PyCXX: Error creating object of type " );
-        s += (typeid( *this )).name();
-
-        if( p != NULL )
-        {
-            String from_repr = repr();
-            s += " from ";
-            s += from_repr.as_std_string();
-        }
-        else
-        {
-            s += " from (nil)";
-        }
-#endif
-        release();
-        if( PyErr_Occurred() )
-        { // Error message already set
-            throw Exception();
-        }
-        // Better error message if RTTI available
-#if defined( _CPPRTTI ) || defined( __GNUG__ )
-        throw TypeError( s );
-#else
-        throw TypeError( "PyCXX: type error." );
-#endif
-    }
-}
-
-//================================================================================
-//
-//    Implementation of MethodTable
-//
-//================================================================================
-
-PyMethodDef MethodTable::method( const char *method_name, PyCFunction f, int flags, const char *doc )
-{
-    PyMethodDef m;
-    m.ml_name = const_cast<char *>( method_name );
-    m.ml_meth = f;
-    m.ml_flags = flags;
-    m.ml_doc = const_cast<char *>( doc );
-    return m;
-}
-
-MethodTable::MethodTable()
-{
-    t.push_back( method( 0, 0, 0, 0 ) );
-    mt = NULL;
-}
-
-MethodTable::~MethodTable()
-{
-    delete [] mt;
-}
-
-void MethodTable::add( const char *method_name, PyCFunction f, const char *doc, int flag )
-{
-    if( !mt )
-    {
-        t.insert( t.end()-1, method( method_name, f, flag, doc ) );
-    }
-    else
-    {
-        throw RuntimeError( "Too late to add a module method!" );
-    }
-}
-
-PyMethodDef *MethodTable::table()
-{
-    if( !mt )
-    {
-        Py_ssize_t t1size = t.size();
-        mt = new PyMethodDef[ t1size ];
-        int j = 0;
-        for( std::vector<PyMethodDef>::iterator i = t.begin(); i != t.end(); i++ )
-        {
-            mt[ j++ ] = *i;
-        }
-    }
-    return mt;
-}
-
-//================================================================================
-//
-//    Implementation of ExtensionModule
-//
-//================================================================================
-ExtensionModuleBase::ExtensionModuleBase( const char *name )
-: m_module_name( name )
-, m_full_module_name( __Py_PackageContext() != NULL ? std::string( __Py_PackageContext() ) : m_module_name )
-, m_method_table()
-//m_module_def
-, m_module( NULL )
-{}
-
-ExtensionModuleBase::~ExtensionModuleBase()
-{}
-
-const std::string &ExtensionModuleBase::name() const
-{
-    return m_module_name;
-}
-
-const std::string &ExtensionModuleBase::fullName() const
-{
-    return m_full_module_name;
-}
-
-class ExtensionModuleBasePtr : public PythonExtension<ExtensionModuleBasePtr>
-{
-public:
-    ExtensionModuleBasePtr( ExtensionModuleBase *_module )
-    : module( _module )
-    {}
-
-    virtual ~ExtensionModuleBasePtr()
-    {}
-
-    ExtensionModuleBase *module;
-};
-
-void ExtensionModuleBase::initialize( const char *module_doc )
-{
-    memset( &m_module_def, 0, sizeof( m_module_def ) );
-
-    m_module_def.m_name = const_cast<char *>( m_module_name.c_str() );
-    m_module_def.m_doc = const_cast<char *>( module_doc );
-    m_module_def.m_methods = m_method_table.table();
-    // where does module_ptr get passed in?
-
-    m_module = PyModule_Create( &m_module_def );
-}
-
-Py::Module ExtensionModuleBase::module( void ) const
-{
-    return Module( m_module );
-}
-
-Py::Dict ExtensionModuleBase::moduleDictionary( void ) const
-{
-    return module().getDict();
-}
-
-//================================================================================
-//
-//    Implementation of PythonType
-//
-//================================================================================
-extern "C"
-{
-    static void standard_dealloc( PyObject *p );
-    //
-    // All the following functions redirect the call from Python
-    // onto the matching virtual function in PythonExtensionBase
-    //
-    static int print_handler( PyObject *, FILE *, int );
-    static PyObject *getattr_handler( PyObject *, char * );
-    static int setattr_handler( PyObject *, char *, PyObject * );
-    static PyObject *getattro_handler( PyObject *, PyObject * );
-    static int setattro_handler( PyObject *, PyObject *, PyObject * );
-    static PyObject *rich_compare_handler( PyObject *, PyObject *, int );
-    static PyObject *repr_handler( PyObject * );
-    static PyObject *str_handler( PyObject * );
-    static long hash_handler( PyObject * );
-    static PyObject *call_handler( PyObject *, PyObject *, PyObject * );
-    static PyObject *iter_handler( PyObject * );
-    static PyObject *iternext_handler( PyObject * );
-
-    // Sequence methods
-    static Py_ssize_t sequence_length_handler( PyObject * );
-    static PyObject *sequence_concat_handler( PyObject *,PyObject * );
-    static PyObject *sequence_repeat_handler( PyObject *, Py_ssize_t );
-    static PyObject *sequence_item_handler( PyObject *, Py_ssize_t );
-    static int sequence_ass_item_handler( PyObject *, Py_ssize_t, PyObject * );
-
-    // Mapping
-    static Py_ssize_t mapping_length_handler( PyObject * );
-    static PyObject *mapping_subscript_handler( PyObject *, PyObject * );
-    static int mapping_ass_subscript_handler( PyObject *, PyObject *, PyObject * );
-
-    // Numeric methods
-    static PyObject *number_negative_handler( PyObject * );
-    static PyObject *number_positive_handler( PyObject * );
-    static PyObject *number_absolute_handler( PyObject * );
-    static PyObject *number_invert_handler( PyObject * );
-    static PyObject *number_int_handler( PyObject * );
-    static PyObject *number_float_handler( PyObject * );
-    static PyObject *number_add_handler( PyObject *, PyObject * );
-    static PyObject *number_subtract_handler( PyObject *, PyObject * );
-    static PyObject *number_multiply_handler( PyObject *, PyObject * );
-    static PyObject *number_remainder_handler( PyObject *, PyObject * );
-    static PyObject *number_divmod_handler( PyObject *, PyObject * );
-    static PyObject *number_lshift_handler( PyObject *, PyObject * );
-    static PyObject *number_rshift_handler( PyObject *, PyObject * );
-    static PyObject *number_and_handler( PyObject *, PyObject * );
-    static PyObject *number_xor_handler( PyObject *, PyObject * );
-    static PyObject *number_or_handler( PyObject *, PyObject * );
-    static PyObject *number_power_handler( PyObject *, PyObject *, PyObject * );
-
-    // Buffer
-    // QQQ
-}
-
-extern "C" void standard_dealloc( PyObject *p )
-{
-    PyMem_DEL( p );
-}
-
-bool PythonType::readyType()
-{
-    return PyType_Ready( table ) >= 0;
-}
-
-PythonType &PythonType::supportSequenceType()
-{
-    if( !sequence_table )
-    {
-        sequence_table = new PySequenceMethods;
-        memset( sequence_table, 0, sizeof( PySequenceMethods ) );   // ensure new fields are 0
-        table->tp_as_sequence = sequence_table;
-        sequence_table->sq_length = sequence_length_handler;
-        sequence_table->sq_concat = sequence_concat_handler;
-        sequence_table->sq_repeat = sequence_repeat_handler;
-        sequence_table->sq_item = sequence_item_handler;
-
-        sequence_table->sq_ass_item = sequence_ass_item_handler;    // BAS setup seperately?
-        // QQQ sq_inplace_concat
-        // QQQ sq_inplace_repeat
-    }
-    return *this;
-}
-
-PythonType &PythonType::supportMappingType()
-{
-    if( !mapping_table )
-    {
-        mapping_table = new PyMappingMethods;
-        memset( mapping_table, 0, sizeof( PyMappingMethods ) );   // ensure new fields are 0
-        table->tp_as_mapping = mapping_table;
-        mapping_table->mp_length = mapping_length_handler;
-        mapping_table->mp_subscript = mapping_subscript_handler;
-        mapping_table->mp_ass_subscript = mapping_ass_subscript_handler;    // BAS setup seperately?
-    }
-    return *this;
-}
-
-PythonType &PythonType::supportNumberType()
-{
-    if( !number_table )
-    {
-        number_table = new PyNumberMethods;
-        memset( number_table, 0, sizeof( PyNumberMethods ) );   // ensure new fields are 0
-        table->tp_as_number = number_table;
-        number_table->nb_add = number_add_handler;
-        number_table->nb_subtract = number_subtract_handler;
-        number_table->nb_multiply = number_multiply_handler;
-        number_table->nb_remainder = number_remainder_handler;
-        number_table->nb_divmod = number_divmod_handler;
-        number_table->nb_power = number_power_handler;
-        number_table->nb_negative = number_negative_handler;
-        number_table->nb_positive = number_positive_handler;
-        number_table->nb_absolute = number_absolute_handler;
-        number_table->nb_invert = number_invert_handler;
-        number_table->nb_lshift = number_lshift_handler;
-        number_table->nb_rshift = number_rshift_handler;
-        number_table->nb_and = number_and_handler;
-        number_table->nb_xor = number_xor_handler;
-        number_table->nb_or = number_or_handler;
-        number_table->nb_int = number_int_handler;
-        number_table->nb_float = number_float_handler;
-
-        // QQQ lots of new methods to add
-    }
-    return *this;
-}
-
-PythonType &PythonType::supportBufferType()
-{
-    if( !buffer_table )
-    {
-        buffer_table = new PyBufferProcs;
-        memset( buffer_table, 0, sizeof( PyBufferProcs ) );   // ensure new fields are 0
-        table->tp_as_buffer = buffer_table;
-        // QQQ bf_getbuffer
-        // QQQ bf_releasebuffer
-    }
-    return *this;
-}
-
-// if you define one sequence method you must define
-// all of them except the assigns
-
-PythonType::PythonType( size_t basic_size, int itemsize, const char *default_name )
-: table( new PyTypeObject )
-, sequence_table( NULL )
-, mapping_table( NULL )
-, number_table( NULL )
-, buffer_table( NULL )
-{
-    // PyTypeObject is defined in <python-sources>/Include/object.h
-
-    memset( table, 0, sizeof( PyTypeObject ) );   // ensure new fields are 0
-    *reinterpret_cast<PyObject *>( table ) = py_object_initializer;
-    // QQQ table->ob_type = _Type_Type();
-    // QQQ table->ob_size = 0;
-    table->tp_name = const_cast<char *>( default_name );
-    table->tp_basicsize = basic_size;
-    table->tp_itemsize = itemsize;
-
-    // Methods to implement standard operations
-    table->tp_dealloc = (destructor)standard_dealloc;
-    table->tp_print = 0;
-    table->tp_getattr = 0;
-    table->tp_setattr = 0;
-    table->tp_repr = 0;
-
-    // Method suites for standard classes
-    table->tp_as_number = 0;
-    table->tp_as_sequence = 0;
-    table->tp_as_mapping =  0;
-
-    // More standard operations (here for binary compatibility)
-    table->tp_hash = 0;
-    table->tp_call = 0;
-    table->tp_str = 0;
-    table->tp_getattro = 0;
-    table->tp_setattro = 0;
-
-    // Functions to access object as input/output buffer
-    table->tp_as_buffer = 0;
-
-    // Flags to define presence of optional/expanded features
-    table->tp_flags = Py_TPFLAGS_DEFAULT;
-
-    // Documentation string
-    table->tp_doc = 0;
-
-    table->tp_traverse = 0;
-
-    // delete references to contained objects
-    table->tp_clear = 0;
-
-    // Assigned meaning in release 2.1
-    // rich comparisons
-    table->tp_richcompare = 0;
-    // weak reference enabler
-    table->tp_weaklistoffset = 0;
-
-    // Iterators
-    table->tp_iter = 0;
-    table->tp_iternext = 0;
-
-    // Attribute descriptor and subclassing stuff
-    table->tp_methods = 0;
-    table->tp_members = 0;
-    table->tp_getset = 0;
-    table->tp_base = 0;
-    table->tp_dict = 0;
-    table->tp_descr_get = 0;
-    table->tp_descr_set = 0;
-    table->tp_dictoffset = 0;
-    table->tp_init = 0;
-    table->tp_alloc = 0;
-    table->tp_new = 0;
-    table->tp_free = 0;     // Low-level free-memory routine
-    table->tp_is_gc = 0;    // For PyObject_IS_GC
-    table->tp_bases = 0;
-    table->tp_mro = 0;      // method resolution order
-    table->tp_cache = 0;
-    table->tp_subclasses = 0;
-    table->tp_weaklist = 0;
-    table->tp_del = 0;
-
-    // Type attribute cache version tag. Added in version 2.6
-    table->tp_version_tag = 0;
-
-#ifdef COUNT_ALLOCS
-    table->tp_alloc = 0;
-    table->tp_free = 0;
-    table->tp_maxalloc = 0;
-    table->tp_orev = 0;
-    table->tp_next = 0;
-#endif
-}
-
-PythonType::~PythonType()
-{
-    delete table;
-    delete sequence_table;
-    delete mapping_table;
-    delete number_table;
-    delete buffer_table;
-}
-
-PyTypeObject *PythonType::type_object() const
-{
-    return table;
-}
-
-PythonType &PythonType::name( const char *nam )
-{
-    table->tp_name = const_cast<char *>( nam );
-    return *this;
-}
-
-const char *PythonType::getName() const
-{
-    return table->tp_name;
-}
-
-PythonType &PythonType::doc( const char *d )
-{
-    table->tp_doc = const_cast<char *>( d );
-    return *this;
-}
-
-const char *PythonType::getDoc() const
-{
-    return table->tp_doc;
-}
-
-PythonType &PythonType::set_tp_dealloc( void (*tp_dealloc)( PyObject *self ) )
-{
-    table->tp_dealloc = tp_dealloc;
-    return *this;
-}
-
-PythonType &PythonType::set_tp_init( int (*tp_init)( PyObject *self, PyObject *args, PyObject *kwds ) )
-{
-    table->tp_init = tp_init;
-    return *this;
-}
-
-PythonType &PythonType::set_tp_new( PyObject *(*tp_new)( PyTypeObject *subtype, PyObject *args, PyObject *kwds ) )
-{
-    table->tp_new = tp_new;
-    return *this;
-}
-
-PythonType &PythonType::set_methods( PyMethodDef *methods )
-{
-    table->tp_methods = methods;
-    return *this;
-}
-
-PythonType &PythonType::supportClass()
-{
-    table->tp_flags |= Py_TPFLAGS_BASETYPE;
-    return *this;
-}
-
-#ifdef PYCXX_PYTHON_2TO3
-PythonType &PythonType::supportPrint()
-{
-    table->tp_print = print_handler;
-    return *this;
-}
-#endif
-
-PythonType &PythonType::supportGetattr()
-{
-    table->tp_getattr = getattr_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportSetattr()
-{
-    table->tp_setattr = setattr_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportGetattro()
-{
-    table->tp_getattro = getattro_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportSetattro()
-{
-    table->tp_setattro = setattro_handler;
-    return *this;
-}
-
-#ifdef PYCXX_PYTHON_2TO3
-PythonType &PythonType::supportCompare( void )
-{
-    return *this;
-}
-#endif
-
-
-PythonType &PythonType::supportRichCompare()
-{
-    table->tp_richcompare = rich_compare_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportRepr()
-{
-    table->tp_repr = repr_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportStr()
-{
-    table->tp_str = str_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportHash()
-{
-    table->tp_hash = hash_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportCall()
-{
-    table->tp_call = call_handler;
-    return *this;
-}
-
-PythonType &PythonType::supportIter()
-{
-    table->tp_iter = iter_handler;
-    table->tp_iternext = iternext_handler;
-    return *this;
-}
-
-//--------------------------------------------------------------------------------
-//
-//    Handlers
-//
-//--------------------------------------------------------------------------------
-PythonExtensionBase *getPythonExtensionBase( PyObject *self )
-{
-    if( self->ob_type->tp_flags&Py_TPFLAGS_BASETYPE )
-    {
-        PythonClassInstance *instance = reinterpret_cast<PythonClassInstance *>( self );
-        return instance->m_pycxx_object;
-    }
-    else
-    {
-        return static_cast<PythonExtensionBase *>( self );
-    }
-}
-
-#ifdef PYCXX_PYTHON_2TO3
-extern "C" int print_handler( PyObject *self, FILE *fp, int flags )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->print( fp, flags );
-    }
-    catch( Py::Exception & )
-    {
-        return -1;    // indicate error
-    }
-}
-#endif
-
-extern "C" PyObject *getattr_handler( PyObject *self, char *name )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->getattr( name ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" int setattr_handler( PyObject *self, char *name, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->setattr( name, Py::Object( value ) );
-    }
-    catch( Py::Exception & )
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *getattro_handler( PyObject *self, PyObject *name )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->getattro( Py::String( name ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" int setattro_handler( PyObject *self, PyObject *name, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->setattro( Py::String( name ), Py::Object( value ) );
-    }
-    catch( Py::Exception & )
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *rich_compare_handler( PyObject *self, PyObject *other, int op )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->rich_compare( Py::Object( other ), op ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *repr_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->repr() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *str_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->str() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" long hash_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->hash();
-    }
-    catch( Py::Exception & )
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *call_handler( PyObject *self, PyObject *args, PyObject *kw )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        if( kw != NULL )
-            return new_reference_to( p->call( Py::Object( args ), Py::Object( kw ) ) );
-        else
-            return new_reference_to( p->call( Py::Object( args ), Py::Object() ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *iter_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->iter() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *iternext_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->iternext();  // might be a NULL ptr on end of iteration
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-
-// Sequence methods
-extern "C" Py_ssize_t sequence_length_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->sequence_length();
-    }
-    catch( Py::Exception & )
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *sequence_concat_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->sequence_concat( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *sequence_repeat_handler( PyObject *self, Py_ssize_t count )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->sequence_repeat( count ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *sequence_item_handler( PyObject *self, Py_ssize_t index )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->sequence_item( index ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" int sequence_ass_item_handler( PyObject *self, Py_ssize_t index, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->sequence_ass_item( index, Py::Object( value ) );
-    }
-    catch( Py::Exception & )
-    {
-        return -1;    // indicate error
-    }
-}
-
-// Mapping
-extern "C" Py_ssize_t mapping_length_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->mapping_length();
-    }
-    catch( Py::Exception & )
-    {
-        return -1;    // indicate error
-    }
-}
-
-extern "C" PyObject *mapping_subscript_handler( PyObject *self, PyObject *key )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->mapping_subscript( Py::Object( key ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" int mapping_ass_subscript_handler( PyObject *self, PyObject *key, PyObject *value )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return p->mapping_ass_subscript( Py::Object( key ), Py::Object( value ) );
-    }
-    catch( Py::Exception & )
-    {
-        return -1;    // indicate error
-    }
-}
-
-// Number
-extern "C" PyObject *number_negative_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_negative() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_positive_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_positive() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_absolute_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_absolute() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_invert_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_invert() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_int_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_int() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_float_handler( PyObject *self )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_float() );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_add_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_add( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_subtract_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_subtract( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_multiply_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_multiply( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_remainder_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_remainder( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_divmod_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_divmod( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_lshift_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_lshift( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_rshift_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_rshift( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_and_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_and( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_xor_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_xor( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_or_handler( PyObject *self, PyObject *other )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_or( Py::Object( other ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-extern "C" PyObject *number_power_handler( PyObject *self, PyObject *x1, PyObject *x2 )
-{
-    try
-    {
-        PythonExtensionBase *p = getPythonExtensionBase( self );
-        return new_reference_to( p->number_power( Py::Object( x1 ), Py::Object( x2 ) ) );
-    }
-    catch( Py::Exception & )
-    {
-        return NULL;    // indicate error
-    }
-}
-
-// Buffer
-
-//================================================================================
-//
-//    Implementation of PythonExtensionBase
-//
-//================================================================================
-#define missing_method( method ) \
-    throw RuntimeError( "Extension object missing implement of " #method );
-
-PythonExtensionBase::PythonExtensionBase()
-{
-    ob_refcnt = 0;
-}
-
-PythonExtensionBase::~PythonExtensionBase()
-{
-    assert( ob_refcnt == 0 );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name )
-{
-    Py::TupleN args;
-    return  self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1 )
-{
-    Py::TupleN args( arg1 );
-    return  self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2 )
-{
-    Py::TupleN args( arg1, arg2 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3 )
-{
-    Py::TupleN args( arg1, arg2, arg3 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5, const Py::Object &arg6 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5, arg6 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5, const Py::Object &arg6,
-                                            const Py::Object &arg7 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5, arg6, arg7 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5, const Py::Object &arg6,
-                                            const Py::Object &arg7, const Py::Object &arg8 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-Py::Object PythonExtensionBase::callOnSelf( const std::string &fn_name,
-                                            const Py::Object &arg1, const Py::Object &arg2, const Py::Object &arg3,
-                                            const Py::Object &arg4, const Py::Object &arg5, const Py::Object &arg6,
-                                            const Py::Object &arg7, const Py::Object &arg8, const Py::Object &arg9 )
-{
-    Py::TupleN args( arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 );
-    return self().callMemberFunction( fn_name, args );
-}
-
-void PythonExtensionBase::reinit( Tuple &args, Dict &kwds )
-{
-    throw RuntimeError( "Must not call __init__ twice on this class" );
-}
-
-
-Py::Object PythonExtensionBase::genericGetAttro( const Py::String &name )
-{
-    return asObject( PyObject_GenericGetAttr( selfPtr(), name.ptr() ) );
-}
-
-int PythonExtensionBase::genericSetAttro( const Py::String &name, const Py::Object &value )
-{
-    return PyObject_GenericSetAttr( selfPtr(), name.ptr(), value.ptr() );
-}
-
-#ifdef PYCXX_PYTHON_2TO3
-int PythonExtensionBase::print( FILE *, int )
-{
-    missing_method( print );
-    return -1;
-}
-#endif
-
-Py::Object PythonExtensionBase::getattr( const char * )
-{
-    missing_method( getattr );
-    return Py::None();
-}
-
-int PythonExtensionBase::setattr( const char *, const Py::Object & )
-{
-    missing_method( setattr );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::getattro( const Py::String &name )
-{
-    return asObject( PyObject_GenericGetAttr( selfPtr(), name.ptr() ) );
-}
-
-int PythonExtensionBase::setattro( const Py::String &name, const Py::Object &value )
-{
-    return PyObject_GenericSetAttr( selfPtr(), name.ptr(), value.ptr() );
-}
-
-
-int PythonExtensionBase::compare( const Py::Object & )
-{
-    missing_method( compare );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::rich_compare( const Py::Object &, int )
-{
-    missing_method( rich_compare );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::repr()
-{
-    missing_method( repr );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::str()
-{
-    missing_method( str );
-    return Py::None();
-}
-
-long PythonExtensionBase::hash()
-{
-    missing_method( hash );
-    return -1; }
-
-
-Py::Object PythonExtensionBase::call( const Py::Object &, const Py::Object & )
-{
-    missing_method( call );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::iter()
-{
-    missing_method( iter );
-    return Py::None();
-}
-
-PyObject *PythonExtensionBase::iternext()
-{
-    missing_method( iternext );
-    return NULL; }
-
-
-
-// Sequence methods
-int PythonExtensionBase::sequence_length()
-{
-    missing_method( sequence_length );
-    return -1; }
-
-
-Py::Object PythonExtensionBase::sequence_concat( const Py::Object & )
-{
-    missing_method( sequence_concat );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::sequence_repeat( Py_ssize_t )
-{
-    missing_method( sequence_repeat );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::sequence_item( Py_ssize_t )
-{
-    missing_method( sequence_item );
-    return Py::None();
-}
-
-int PythonExtensionBase::sequence_ass_item( Py_ssize_t, const Py::Object & )
-{
-    missing_method( sequence_ass_item );
-    return -1;
-}
-
-
-// Mapping
-int PythonExtensionBase::mapping_length()
-{
-    missing_method( mapping_length );
-    return -1;
-}
-
-
-Py::Object PythonExtensionBase::mapping_subscript( const Py::Object & )
-{
-    missing_method( mapping_subscript );
-    return Py::None();
-}
-
-int PythonExtensionBase::mapping_ass_subscript( const Py::Object &, const Py::Object & )
-{
-    missing_method( mapping_ass_subscript );
-    return -1;
-}
-
-Py::Object PythonExtensionBase::number_negative()
-{
-    missing_method( number_negative );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_positive()
-{
-    missing_method( number_positive );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_absolute()
-{
-    missing_method( number_absolute );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_invert()
-{
-    missing_method( number_invert );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_int()
-{
-    missing_method( number_int );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_float()
-{
-    missing_method( number_float );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_long()
-{
-    missing_method( number_long );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_add( const Py::Object & )
-{
-    missing_method( number_add );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_subtract( const Py::Object & )
-{
-    missing_method( number_subtract );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_multiply( const Py::Object & )
-{
-    missing_method( number_multiply );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_remainder( const Py::Object & )
-{
-    missing_method( number_remainder );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_divmod( const Py::Object & )
-{
-    missing_method( number_divmod );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_lshift( const Py::Object & )
-{
-    missing_method( number_lshift );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_rshift( const Py::Object & )
-{
-    missing_method( number_rshift );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_and( const Py::Object & )
-{
-    missing_method( number_and );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_xor( const Py::Object & )
-{
-    missing_method( number_xor );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_or( const Py::Object & )
-{
-    missing_method( number_or );
-    return Py::None();
-}
-
-Py::Object PythonExtensionBase::number_power( const Py::Object &, const Py::Object & )
-{
-    missing_method( number_power );
-    return Py::None();
-}
-
-
-// Buffer
-// QQQ
-
-//--------------------------------------------------------------------------------
-//
-//    Method call handlers for
-//        PythonExtensionBase
-//        ExtensionModuleBase
-//
-//--------------------------------------------------------------------------------
-// Note: Python calls noargs as varargs buts args==NULL
-extern "C" PyObject *method_noargs_call_handler( PyObject *_self_and_name_tuple, PyObject * )
-{
-    try
-    {
-        Tuple self_and_name_tuple( _self_and_name_tuple );
-
-        PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-        void *self_as_void = PyCObject_AsVoidPtr( self_in_cobject );
-        if( self_as_void == NULL )
-            return NULL;
-
-        ExtensionModuleBase *self = static_cast<ExtensionModuleBase *>( self_as_void );
-
-        Object result( self->invoke_method_noargs( PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) ) );
-
-        return new_reference_to( result.ptr() );
-    }
-    catch( Exception & )
-    {
-        return 0;
-    }
-}
-
-extern "C" PyObject *method_varargs_call_handler( PyObject *_self_and_name_tuple, PyObject *_args )
-{
-    try
-    {
-        Tuple self_and_name_tuple( _self_and_name_tuple );
-
-        PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-        void *self_as_void = PyCObject_AsVoidPtr( self_in_cobject );
-        if( self_as_void == NULL )
-            return NULL;
-
-        ExtensionModuleBase *self = static_cast<ExtensionModuleBase *>( self_as_void );
-        Tuple args( _args );
-        Object result
-                (
-                self->invoke_method_varargs
-                    (
-                    PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
-                    args
-                    )
-                );
-
-        return new_reference_to( result.ptr() );
-    }
-    catch( Exception & )
-    {
-        return 0;
-    }
-}
-
-extern "C" PyObject *method_keyword_call_handler( PyObject *_self_and_name_tuple, PyObject *_args, PyObject *_keywords )
-{
-    try
-    {
-        Tuple self_and_name_tuple( _self_and_name_tuple );
-
-        PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
-        void *self_as_void = PyCObject_AsVoidPtr( self_in_cobject );
-        if( self_as_void == NULL )
-            return NULL;
-
-        ExtensionModuleBase *self = static_cast<ExtensionModuleBase *>( self_as_void );
-
-        Tuple args( _args );
-
-        if( _keywords == NULL )
-        {
-            Dict keywords;    // pass an empty dict
-
-            Object result
-                (
-                self->invoke_method_keyword
-                    (
-                    PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
-                    args,
-                    keywords
-                    )
-                );
-
-            return new_reference_to( result.ptr() );
-        }
-        else
-        {
-            Dict keywords( _keywords ); // make dict
-
-            Object result
-                    (
-                    self->invoke_method_keyword
-                        (
-                        PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
-                        args,
-                        keywords
-                        )
-                    );
-
-            return new_reference_to( result.ptr() );
-        }
-    }
-    catch( Exception & )
-    {
-        return 0;
-    }
-}
-
-extern "C" void do_not_dealloc( void * )
-{}
-
-
-//--------------------------------------------------------------------------------
-//
-//    ExtensionExceptionType
-//
-//--------------------------------------------------------------------------------
-ExtensionExceptionType::ExtensionExceptionType()
-    : Py::Object()
-{
-}
-
-void ExtensionExceptionType::init( ExtensionModuleBase &module, const std::string& name )
-{
-    std::string module_name( module.fullName() );
-    module_name += ".";
-    module_name += name;
-
-    set( PyErr_NewException( const_cast<char *>( module_name.c_str() ), NULL, NULL ), true );
-}
-
-void ExtensionExceptionType::init( ExtensionModuleBase &module, const std::string& name, ExtensionExceptionType &parent )
- {
-     std::string module_name( module.fullName() );
-     module_name += ".";
-     module_name += name;
-
-    set( PyErr_NewException( const_cast<char *>( module_name.c_str() ), parent.ptr(), NULL ), true );
-}
-
-ExtensionExceptionType::~ExtensionExceptionType()
-{
-}
-
-Exception::Exception( ExtensionExceptionType &exception, const std::string& reason )
-{
-    PyErr_SetString( exception.ptr(), reason.c_str() );
-}
-
-Exception::Exception( ExtensionExceptionType &exception, Object &reason )
-{
-    PyErr_SetObject( exception.ptr(), reason.ptr() );
-}
-
-Exception::Exception( PyObject *exception, Object &reason )
-{
-    PyErr_SetObject( exception, reason.ptr() );
-}
-
-#if 1
-//------------------------------------------------------------
-// compare operators
-bool operator!=( const Long &a, const Long &b )
-{
-    return a.as_long() != b.as_long();
-}
-
-bool operator!=( const Long &a, int b )
-{
-    return a.as_long() != b;
-}
-
-bool operator!=( const Long &a, long b )
-{
-    return a.as_long() != b;
-}
-
-bool operator!=( int a, const Long &b )
-{
-    return a != b.as_long();
-}
-
-bool operator!=( long a, const Long &b )
-{
-    return a != b.as_long();
-}
-
-//------------------------------
-bool operator==( const Long &a, const Long &b )
-{
-    return a.as_long() == b.as_long();
-}
-
-bool operator==( const Long &a, int b )
-{
-    return a.as_long() == b;
-}
-
-bool operator==( const Long &a, long b )
-{
-    return a.as_long() == b;
-}
-
-bool operator==( int a, const Long &b )
-{
-    return a == b.as_long();
-}
-
-bool operator==( long a, const Long &b )
-{
-    return a == b.as_long();
-}
-
-//------------------------------
-bool operator>( const Long &a, const Long &b )
-{
-    return a.as_long() > b.as_long();
-}
-
-bool operator>( const Long &a, int b )
-{
-    return a.as_long() > b;
-}
-
-bool operator>( const Long &a, long b )
-{
-    return a.as_long() > b;
-}
-
-bool operator>( int a, const Long &b )
-{
-    return a > b.as_long();
-}
-
-bool operator>( long a, const Long &b )
-{
-    return a > b.as_long();
-}
-
-//------------------------------
-bool operator>=( const Long &a, const Long &b )
-{
-    return a.as_long() >= b.as_long();
-}
-
-bool operator>=( const Long &a, int b )
-{
-    return a.as_long() >= b;
-}
-
-bool operator>=( const Long &a, long b )
-{
-    return a.as_long() >= b;
-}
-
-bool operator>=( int a, const Long &b )
-{
-    return a >= b.as_long();
-}
-
-bool operator>=( long a, const Long &b )
-{
-    return a >= b.as_long();
-}
-
-//------------------------------
-bool operator<( const Long &a, const Long &b )
-{
-    return a.as_long() < b.as_long();
-}
-
-bool operator<( const Long &a, int b )
-{
-    return a.as_long() < b;
-}
-
-bool operator<( const Long &a, long b )
-{
-    return a.as_long() < b;
-}
-
-bool operator<( int a, const Long &b )
-{
-    return a < b.as_long();
-}
-
-bool operator<( long a, const Long &b )
-{
-    return a < b.as_long();
-}
-
-//------------------------------
-bool operator<=( const Long &a, const Long &b )
-{
-    return a.as_long() <= b.as_long();
-}
-
-bool operator<=( int a, const Long &b )
-{
-    return a <= b.as_long();
-}
-
-bool operator<=( long a, const Long &b )
-{
-    return a <= b.as_long();
-}
-
-bool operator<=( const Long &a, int b )
-{
-    return a.as_long() <= b;
-}
-
-bool operator<=( const Long &a, long b )
-{
-    return a.as_long() <= b;
-}
-
-#ifdef HAVE_LONG_LONG
-//------------------------------
-bool operator!=( const Long &a, PY_LONG_LONG b )
-{
-    return a.as_long_long() != b;
-}
-
-bool operator!=( PY_LONG_LONG a, const Long &b )
-{
-    return a != b.as_long_long();
-}
-
-//------------------------------
-bool operator==( const Long &a, PY_LONG_LONG b )
-{
-    return a.as_long_long() == b;
-}
-
-bool operator==( PY_LONG_LONG a, const Long &b )
-{
-    return a == b.as_long_long();
-}
-
-//------------------------------
-bool operator>( const Long &a, PY_LONG_LONG b )
-{
-    return a.as_long_long() > b;
-}
-
-bool operator>( PY_LONG_LONG a, const Long &b )
-{
-    return a > b.as_long_long();
-}
-
-//------------------------------
-bool operator>=( const Long &a, PY_LONG_LONG b )
-{
-    return a.as_long_long() >= b;
-}
-
-bool operator>=( PY_LONG_LONG a, const Long &b )
-{
-    return a >= b.as_long_long();
-}
-
-//------------------------------
-bool operator<( const Long &a, PY_LONG_LONG b )
-{
-    return a.as_long_long() < b;
-}
-
-bool operator<( PY_LONG_LONG a, const Long &b )
-{
-    return a < b.as_long_long();
-}
-
-//------------------------------
-bool operator<=( const Long &a, PY_LONG_LONG b )
-{
-    return a.as_long_long() <= b;
-}
-
-bool operator<=( PY_LONG_LONG a, const Long &b )
-{
-    return a <= b.as_long_long();
-}
-#endif
-#endif
-
-//------------------------------------------------------------
-// compare operators
-bool operator!=( const Float &a, const Float &b )
-{
-    return a.as_double() != b.as_double();
-}
-
-bool operator!=( const Float &a, double b )
-{
-    return a.as_double() != b;
-}
-
-bool operator!=( double a, const Float &b )
-{
-    return a != b.as_double();
-}
-
-//------------------------------
-bool operator==( const Float &a, const Float &b )
-{
-    return a.as_double() == b.as_double();
-}
-
-bool operator==( const Float &a, double b )
-{
-    return a.as_double() == b;
-}
-
-bool operator==( double a, const Float &b )
-{
-    return a == b.as_double();
-}
-
-//------------------------------
-bool operator>( const Float &a, const Float &b )
-{
-    return a.as_double() > b.as_double();
-}
-
-bool operator>( const Float &a, double b )
-{
-    return a.as_double() > b;
-}
-
-bool operator>( double a, const Float &b )
-{
-    return a > b.as_double();
-}
-
-//------------------------------
-bool operator>=( const Float &a, const Float &b )
-{
-    return a.as_double() >= b.as_double();
-}
-
-bool operator>=( const Float &a, double b )
-{
-    return a.as_double() >= b;
-}
-
-bool operator>=( double a, const Float &b )
-{
-    return a >= b.as_double();
-}
-
-//------------------------------
-bool operator<( const Float &a, const Float &b )
-{
-    return a.as_double() < b.as_double();
-}
-
-bool operator<( const Float &a, double b )
-{
-    return a.as_double() < b;
-}
-
-bool operator<( double a, const Float &b )
-{
-    return a < b.as_double();
-}
-
-//------------------------------
-bool operator<=( const Float &a, const Float &b )
-{
-    return a.as_double() <= b.as_double();
-}
-
-bool operator<=( double a, const Float &b )
-{
-    return a <= b.as_double();
-}
-
-bool operator<=( const Float &a, double b )
-{
-    return a.as_double() <= b;
-}
-
-}    // end of namespace Py
diff --git a/external_libraries/pycxx-6.2.2/Src/Python3/cxxextensions.c b/external_libraries/pycxx-6.2.2/Src/Python3/cxxextensions.c
deleted file mode 100644
index 7feb1e0..0000000
--- a/external_libraries/pycxx-6.2.2/Src/Python3/cxxextensions.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//---------------------------------------------------------------------------*/
-
-#include "CXX/WrapPython.h"
-
-#ifdef __cplusplus
-extern "C" 
-{
-#endif
-
-PyObject py_object_initializer = 
-    {
-    _PyObject_EXTRA_INIT
-    1, 
-    NULL    // type must be init'ed by user
-    };
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/external_libraries/pycxx-6.2.2/Src/Python3/cxxsupport.cxx b/external_libraries/pycxx-6.2.2/Src/Python3/cxxsupport.cxx
deleted file mode 100644
index 442d932..0000000
--- a/external_libraries/pycxx-6.2.2/Src/Python3/cxxsupport.cxx
+++ /dev/null
@@ -1,228 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-
-#include "CXX/Objects.hxx"
-namespace Py 
-{
-
-Py_UNICODE unicode_null_string[1] = { 0 };
-
-Type Object::type() const
-{ 
-    return Type( PyObject_Type( p ), true );
-}
-
-String Object::str() const
-{
-    return String( PyObject_Str( p ), true );
-}
-
-String Object::repr() const
-{ 
-    return String( PyObject_Repr( p ), true );
-}
-
-std::string Object::as_string() const
-{
-    return static_cast<std::string>( str() );
-}
-
-List Object::dir() const
-{
-    return List( PyObject_Dir( p ), true );
-}
-
-bool Object::isType( const Type &t ) const
-{ 
-    return type().ptr() == t.ptr();
-}
-
-Char::operator String() const
-{
-    return String( ptr() );
-}
-
-String Bytes::decode( const char *encoding, const char *error )
-{
-    return String( PyUnicode_FromEncodedObject( ptr(), encoding, error ), true );
-}
-
-// Object compares
-bool operator==( const Object &o1, const Object &o2 )
-{
-    int k = PyObject_RichCompareBool( *o1, *o2, Py_EQ );
-    if( PyErr_Occurred() )
-        throw Exception();
-    return k != 0;
-}
-
-bool operator!=( const Object &o1, const Object &o2 )
-{
-    int k = PyObject_RichCompareBool( *o1, *o2, Py_NE );
-    if( PyErr_Occurred() )
-        throw Exception();
-    return k != 0;
-
-}
-
-bool operator>=( const Object &o1, const Object &o2 )
-{
-    int k = PyObject_RichCompareBool( *o1, *o2, Py_GE );
-    if( PyErr_Occurred() )
-        throw Exception();
-    return k != 0;
-}
-
-bool operator<=( const Object &o1, const Object &o2 )
-{
-    int k = PyObject_RichCompareBool( *o1, *o2, Py_LE );
-    if( PyErr_Occurred() )
-        throw Exception();
-    return k != 0;
-}
-
-bool operator<( const Object &o1, const Object &o2 )
-{
-    int k = PyObject_RichCompareBool( *o1, *o2, Py_LT );
-    if( PyErr_Occurred() )
-        throw Exception();
-    return k != 0;
-}
-
-bool operator>( const Object &o1, const Object &o2 )
-{
-    int k = PyObject_RichCompareBool( *o1, *o2, Py_GT );
-    if( PyErr_Occurred() )
-        throw Exception();
-    return k != 0;
-}
-
-// iterator compares
-bool operator==( const Sequence::iterator &left, const Sequence::iterator &right )
-{
-    return left.eql( right );
-}
-
-bool operator!=( const Sequence::iterator &left, const Sequence::iterator &right )
-{
-    return left.neq( right );
-}
-
-bool operator<( const Sequence::iterator &left, const Sequence::iterator &right )
-{
-    return left.lss( right );
-}
-
-bool operator>( const Sequence::iterator &left, const Sequence::iterator &right )
-{
-    return left.gtr( right );
-}
-
-bool operator<=( const Sequence::iterator &left, const Sequence::iterator &right )
-{
-    return left.leq( right );
-}
-
-bool operator>=( const Sequence::iterator &left, const Sequence::iterator &right )
-{
-    return left.geq( right );
-}
-
-// const_iterator compares
-bool operator==( const Sequence::const_iterator &left, const Sequence::const_iterator &right )
-{
-    return left.eql( right );
-}
-
-bool operator!=( const Sequence::const_iterator &left, const Sequence::const_iterator &right )
-{
-    return left.neq( right );
-}
-
-bool operator<( const Sequence::const_iterator &left, const Sequence::const_iterator &right )
-{
-    return left.lss( right );
-}
-
-bool operator>( const Sequence::const_iterator &left, const Sequence::const_iterator &right )
-{
-    return left.gtr( right );
-}
-
-bool operator<=( const Sequence::const_iterator &left, const Sequence::const_iterator &right )
-{
-    return left.leq( right );
-}
-
-bool operator>=( const Sequence::const_iterator &left, const Sequence::const_iterator &right )
-{
-    return left.geq( right );
-}
-
-// For mappings:
-bool operator==( const Mapping::iterator &left, const Mapping::iterator &right )
-{
-    return left.eql( right );
-}
-
-bool operator!=( const Mapping::iterator &left, const Mapping::iterator &right )
-{
-    return left.neq( right );
-}
-
-// now for const_iterator
-bool operator==( const Mapping::const_iterator &left, const Mapping::const_iterator &right )
-{
-    return left.eql( right );
-}
-
-bool operator!=( const Mapping::const_iterator &left, const Mapping::const_iterator &right )
-{
-    return left.neq( right );
-}
-
-// TMM: 31May'01 - Added the #ifndef so I can exclude iostreams.
-#ifndef CXX_NO_IOSTREAMS
-// output
-
-std::ostream &operator<<( std::ostream &os, const Object &ob )
-{
-    return( os << static_cast<std::string>( ob.str() ) );
-}  
-#endif
-
-} // Py
diff --git a/external_libraries/pycxx-6.2.2/Src/cxx_extensions.cxx b/external_libraries/pycxx-6.2.2/Src/cxx_extensions.cxx
deleted file mode 100644
index 898c9f4..0000000
--- a/external_libraries/pycxx-6.2.2/Src/cxx_extensions.cxx
+++ /dev/null
@@ -1,43 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "Python2/cxx_extensions.cxx"
-#else
-#include "Python3/cxx_extensions.cxx"
-#endif
diff --git a/external_libraries/pycxx-6.2.2/Src/cxxextensions.c b/external_libraries/pycxx-6.2.2/Src/cxxextensions.c
deleted file mode 100644
index 28a8e1d..0000000
--- a/external_libraries/pycxx-6.2.2/Src/cxxextensions.c
+++ /dev/null
@@ -1,43 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "Src/Python2/cxxextensions.c"
-#else
-#include "Src/Python3/cxxextensions.c"
-#endif
diff --git a/external_libraries/pycxx-6.2.2/Src/cxxsupport.cxx b/external_libraries/pycxx-6.2.2/Src/cxxsupport.cxx
deleted file mode 100644
index 1f2fb43..0000000
--- a/external_libraries/pycxx-6.2.2/Src/cxxsupport.cxx
+++ /dev/null
@@ -1,43 +0,0 @@
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 1998 - 2007, The Regents of the University of California
-// Produced at the Lawrence Livermore National Laboratory
-// All rights reserved.
-//
-// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
-// full copyright notice is contained in the file COPYRIGHT located at the root
-// of the PyCXX distribution.
-//
-// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-// modification, are permitted provided that the following conditions are met:
-//
-//  - Redistributions of  source code must  retain the above  copyright notice,
-//    this list of conditions and the disclaimer below.
-//  - Redistributions in binary form must reproduce the above copyright notice,
-//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-//    documentation and/or materials provided with the distribution.
-//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-//    used to  endorse or  promote products derived from  this software without
-//    specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-//-----------------------------------------------------------------------------
-#include "CXX/WrapPython.h"
-
-#if PY_MAJOR_VERSION == 2
-#include "Src/Python2/cxxsupport.cxx"
-#else
-#include "Src/Python3/cxxsupport.cxx"
-#endif
diff --git a/external_libraries/threadpool/boost/threadpool/task_adaptors.hpp b/external_libraries/threadpool/boost/threadpool/task_adaptors.hpp
index 6b874e3..9fc078c 100644
--- a/external_libraries/threadpool/boost/threadpool/task_adaptors.hpp
+++ b/external_libraries/threadpool/boost/threadpool/task_adaptors.hpp
@@ -135,7 +135,7 @@ namespace boost { namespace threadpool
         if(m_break_s > 0 || m_break_ns > 0)
         { // Sleep some time before first execution
           xtime xt;
-          xtime_get(&xt, TIME_UTC);
+          xtime_get(&xt, TIME_UTC_);
           xt.nsec += m_break_ns;
           xt.sec += m_break_s;
           thread::sleep(xt); 
@@ -146,7 +146,7 @@ namespace boost { namespace threadpool
           if(m_break_s > 0 || m_break_ns > 0)
           {
             xtime xt;
-            xtime_get(&xt, TIME_UTC);
+            xtime_get(&xt, TIME_UTC_);
             xt.nsec += m_break_ns;
             xt.sec += m_break_s;
             thread::sleep(xt); 
diff --git a/icons/sc_ide.icns b/icons/sc_ide.icns
new file mode 100644
index 0000000..6503abd
Binary files /dev/null and b/icons/sc_ide.icns differ
diff --git a/icons/sc_ide.ico b/icons/sc_ide.ico
new file mode 100644
index 0000000..b1b1715
Binary files /dev/null and b/icons/sc_ide.ico differ
diff --git a/icons/sc_ide.svg b/icons/sc_ide.svg
new file mode 100644
index 0000000..4d4de3f
--- /dev/null
+++ b/icons/sc_ide.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024" viewBox="0 0 1024 1024" version="1.1">
+	<desc>SuperCollider Icon SVG - Batuhan Bozkurt 2012</desc>
+	<defs>
+		<circle id="circ0" cx="50%" cy="50%" r="45%" transform="rotate(0 512 512)"/>
+		<circle id="circ1" cx="50%" cy="50%" r="38.25%" transform="rotate(54 512 512)"/>
+		<circle id="circ2" cx="50%" cy="50%" r="31.5%" transform="rotate(108 512 512)"/>
+		<circle id="circ3" cx="50%" cy="50%" r="24.75%" transform="rotate(162 512 512)"/>
+		<circle id="circ4" cx="50%" cy="50%" r="18%" transform="rotate(216 512 512)"/>
+		<circle id="circ5" cx="50%" cy="50%" r="11.25%" transform="rotate(270 512 512)"/>
+		<circle id="circ6" cx="50%" cy="50%" r="4.5%" transform="rotate(324 512 512)"/>
+		<linearGradient id="fcirc0" x1="50%" y1="0%" x2="50%" y2="100%">
+			<stop stop-color="rgb(0,0,0)" offset="0%"/>
+			<stop stop-color="rgb(255,255,255)" offset="100%"/>
+		</linearGradient>
+		<linearGradient id="fcirc1" x1="50%" y1="0%" x2="50%" y2="100%">
+			<stop stop-color="rgb(13,13,13)" offset="0%"/>
+			<stop stop-color="rgb(255,255,255)" offset="100%"/>
+		</linearGradient>
+		<linearGradient id="fcirc2" x1="50%" y1="0%" x2="50%" y2="100%">
+			<stop stop-color="rgb(25,25,25)" offset="0%"/>
+			<stop stop-color="rgb(255,255,255)" offset="100%"/>
+		</linearGradient>
+		<linearGradient id="fcirc3" x1="50%" y1="0%" x2="50%" y2="100%">
+			<stop stop-color="rgb(38,38,38)" offset="0%"/>
+			<stop stop-color="rgb(255,255,255)" offset="100%"/>
+		</linearGradient>
+		<linearGradient id="fcirc4" x1="50%" y1="0%" x2="50%" y2="100%">
+			<stop stop-color="rgb(51,51,51)" offset="0%"/>
+			<stop stop-color="rgb(255,255,255)" offset="100%"/>
+		</linearGradient>
+		<linearGradient id="fcirc5" x1="50%" y1="0%" x2="50%" y2="100%">
+			<stop stop-color="rgb(64,64,64)" offset="0%"/>
+			<stop stop-color="rgb(255,255,255)" offset="100%"/>
+		</linearGradient>
+		<linearGradient id="fcirc6" x1="50%" y1="0%" x2="50%" y2="100%">
+			<stop stop-color="rgb(77,77,77)" offset="0%"/>
+			<stop stop-color="rgb(255,255,255)" offset="100%"/>
+		</linearGradient>
+	</defs>
+	<use xlink:href="#circ0" fill="url(#fcirc0)"/>
+	<use xlink:href="#circ1" fill="url(#fcirc1)"/>
+	<use xlink:href="#circ2" fill="url(#fcirc2)"/>
+	<use xlink:href="#circ3" fill="url(#fcirc3)"/>
+	<use xlink:href="#circ4" fill="url(#fcirc4)"/>
+	<use xlink:href="#circ5" fill="url(#fcirc5)"/>
+	<use xlink:href="#circ6" fill="url(#fcirc6)"/>
+</svg>
diff --git a/icons/sc_ide_1024.png b/icons/sc_ide_1024.png
new file mode 100644
index 0000000..35097e3
Binary files /dev/null and b/icons/sc_ide_1024.png differ
diff --git a/icons/sc_ide_128.png b/icons/sc_ide_128.png
new file mode 100644
index 0000000..81376b7
Binary files /dev/null and b/icons/sc_ide_128.png differ
diff --git a/icons/sc_ide_16.png b/icons/sc_ide_16.png
new file mode 100644
index 0000000..58242c7
Binary files /dev/null and b/icons/sc_ide_16.png differ
diff --git a/icons/sc_ide_24.png b/icons/sc_ide_24.png
new file mode 100644
index 0000000..2025f6a
Binary files /dev/null and b/icons/sc_ide_24.png differ
diff --git a/icons/sc_ide_256.png b/icons/sc_ide_256.png
new file mode 100644
index 0000000..cb06c8f
Binary files /dev/null and b/icons/sc_ide_256.png differ
diff --git a/icons/sc_ide_32.png b/icons/sc_ide_32.png
new file mode 100644
index 0000000..5d7ac25
Binary files /dev/null and b/icons/sc_ide_32.png differ
diff --git a/icons/sc_ide_48.png b/icons/sc_ide_48.png
new file mode 100644
index 0000000..996f01c
Binary files /dev/null and b/icons/sc_ide_48.png differ
diff --git a/icons/sc_ide_512.png b/icons/sc_ide_512.png
new file mode 100644
index 0000000..cf670e5
Binary files /dev/null and b/icons/sc_ide_512.png differ
diff --git a/icons/sc_ide_64.png b/icons/sc_ide_64.png
new file mode 100644
index 0000000..cf0e029
Binary files /dev/null and b/icons/sc_ide_64.png differ
diff --git a/icons/sc_ide_svg.scd b/icons/sc_ide_svg.scd
new file mode 100644
index 0000000..abf226f
--- /dev/null
+++ b/icons/sc_ide_svg.scd
@@ -0,0 +1,34 @@
+//SC radial icon XML(SVG) generator
+//Batuhan Bozkurt 2012
+
+(
+var cids, fids;
+var circDefs, fillDefs, uses, wrapped;
+var incre, incre2, decre, phase;
+var radFor;
+var w;
+
+~circle = {|id, cx, cy, r, rotate| "<circle id=\"%\" cx=\"%\\%\" cy =\"%\\%\" r=\"%\\%\" transform=\"rotate(% 512 512)\"/>".format(id, cx, cy, r, rotate) };
+~color = {|shade| "rgb(%,%,%)".format(*((shade * 255).round ! 3)); };
+~linGrad = {|id, xy1, xy2, c1, c2| "<linearGradient id=\"%\" x1=\"%\\%\" y1=\"%\\%\" x2=\"%\\%\" y2=\"%\\%\"><stop stop-color=\"%\" offset=\"0\\%\"/><stop stop-color=\"%\" offset=\"100\\%\"/></linearGradient>".format(id, xy1.x, xy1.y, xy2.x, xy2.y, ~color.(c1), ~color.(c2)); };
+~use = {|shape, fill| "<use xlink:href=\"#%\" fill=\"url(#%)\"/>".format(shape, fill); };
+~wrapAll = {|w, h, defs, draws| "<?xml version=\"1.0\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"%\" height=\"%\" viewBox=\"0 0 % %\" version = \"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><desc>SuperCollider Icon SVG - Batuhan Bozkurt 2012</desc><defs>%</defs>%</svg>".format(w, h, w, h, defs, draws); };
+
+
+radFor = {|cnt| (90 - (13.5 * cnt)); };
+w = 100;
+phase = -pi;
+
+incre = -0.95;
+incre2 = 4.02;
+decre = 59;
+
+cids = 7.collect({|cnt| "circ" ++ cnt; });
+fids = 7.collect({|cnt| "fcirc" ++ cnt; });
+
+circDefs = 7.collect({|cnt| ~circle.(cids[cnt], 50, 50, radFor.(cnt) / 2, (54 * cnt) % 360); });
+fillDefs = 7.collect({|cnt| ~linGrad.(fids[cnt], 50 at 0, 50 at 100, cnt.linlin(0, 6, 0, 0.3), 1); });
+uses = 7.collect({|cnt| ~use.(cids[cnt], fids[cnt]); });
+wrapped = ~wrapAll.(1024, 1024, circDefs.join ++ fillDefs.join, uses.join);
+wrapped.postln;
+)
\ No newline at end of file
diff --git a/include/common/SC_AllocPool.h b/include/common/SC_AllocPool.h
index 17b0f70..c3f6ce1 100644
--- a/include/common/SC_AllocPool.h
+++ b/include/common/SC_AllocPool.h
@@ -32,6 +32,7 @@ Improved bit block scanning by using a count leading zeroes instruction.
 
 #include "SC_List.h"
 #include "clz.h"
+#include "function_attributes.h"
 #include <stdlib.h>
 
 const int kNumAllocBins = 128;
@@ -137,8 +138,8 @@ public:
 
 	void Reinit();
 
-	void *Alloc(size_t inBytes);
-	void *Realloc(void* inPtr, size_t inBytes);
+	MALLOC void *Alloc(size_t inBytes);
+	MALLOC void *Realloc(void* inPtr, size_t inBytes);
 	void Free(void* inPtr);
 	void FreeAll();
 	void FreeAllInternal();
@@ -177,10 +178,10 @@ private:
 		else return (sizePlusOverhead + kAlignMask) & ~kAlignMask;
 	}
 
-	static int SmallBinIndex(size_t inSize)
+	static size_t SmallBinIndex(size_t inSize)
 		{ return inSize >> 4; }
 
-	static int BinIndex2(size_t inSize)
+	static size_t BinIndex2(size_t inSize)
 	{
 		return
 		((inSize <   1024) ?       (inSize>>4):
@@ -194,7 +195,7 @@ private:
 		 (inSize < 262144) ? 112 + (inSize>>14):127);
 	}
 
-	static int BinIndex(size_t inSize)
+	static size_t BinIndex(size_t inSize)
 	{
 		if (inSize < 1024) return inSize >> 4;
 		if (inSize >= 262144) return 127;
@@ -202,19 +203,19 @@ private:
 		return (bits << 3) + (inSize >> bits) ;
 	}
 
-	void MarkBinBlock(int inIndex)
+	void MarkBinBlock(size_t inIndex)
 		{
-			unsigned long word = inIndex >> 5;
-			unsigned long bitPosition = inIndex & 31;
-			unsigned long bitValue = 1L << bitPosition;
+			size_t word = inIndex >> 5;
+			size_t bitPosition = inIndex & 31;
+			size_t bitValue = 1L << bitPosition;
 			mBinBlocks[word] |= bitValue;
 		}
 
-	void ClearBinBlock(int inIndex)
+	void ClearBinBlock(size_t inIndex)
 		{
-			unsigned long word = inIndex >> 5;
-			unsigned long bitPosition = inIndex & 31;
-			unsigned long bitValue = 1L << bitPosition;
+			size_t word = inIndex >> 5;
+			size_t bitPosition = inIndex & 31;
+			size_t bitValue = 1L << bitPosition;
 			mBinBlocks[word] &= ~bitValue;
 		}
 
@@ -261,7 +262,7 @@ private:
 		{
 			inChunk->RemoveLeaveDangling();
 			size_t size = inChunk->Size();
-			int index = BinIndex(size);
+			size_t index = BinIndex(size);
 			AllocChunkPtr bin = mBins + index;
 			if (bin->IsEmpty()) ClearBinBlock(index);
 		}
diff --git a/include/common/SC_DirUtils.h b/include/common/SC_DirUtils.h
index 1901b54..e2241ec 100644
--- a/include/common/SC_DirUtils.h
+++ b/include/common/SC_DirUtils.h
@@ -31,10 +31,21 @@
 #  define PATH_MAX _MAX_PATH
 # endif
 # include <string.h>
-# define strcasecmp stricmp
 # define snprintf _snprintf
 #endif
 
+#include <boost/algorithm/string.hpp>
+
+static inline bool stringCaseCompare(const char * a, const char * b)
+{
+#if _POSIX_VERSION >= 200112L
+	return strcasecmp(a, b) == 0;
+#else
+	return boost::iequals(a, b);
+#endif
+}
+
+
 # ifndef MAXPATHLEN
 #  define MAXPATHLEN PATH_MAX
 # endif
@@ -74,8 +85,10 @@ extern const char * gIdeName; // string used for conditional compilation accordi
 
 void sc_GetResourceDirectory(char* pathBuf, int length);
 bool sc_IsStandAlone();
-void sc_AppendBundleName(char *str, int size);
 
+#if defined(__APPLE__) && !defined(SC_IPHONE)	// running on OS X
+void sc_AppendBundleName(char *str, int size);
+#endif
 // Support for Extensions
 
 // Get the user home directory.
diff --git a/include/common/SC_fftlib.h b/include/common/SC_fftlib.h
index 4460dbc..097c53a 100644
--- a/include/common/SC_fftlib.h
+++ b/include/common/SC_fftlib.h
@@ -27,8 +27,8 @@ Copyright (c) 2008 Dan Stowell. All rights reserved.
 // These specify the min & max FFT sizes expected (used when creating windows, also allocating some other arrays).
 #define SC_FFT_MINSIZE 8
 #define SC_FFT_LOG2_MINSIZE 3
-#define SC_FFT_MAXSIZE 8192
-#define SC_FFT_LOG2_MAXSIZE 13
+#define SC_FFT_MAXSIZE 32768
+#define SC_FFT_LOG2_MAXSIZE 15
 
 
 // Note that things like *fftWindow actually allow for other sizes, to be created on user request.
diff --git a/include/common/clz.h b/include/common/clz.h
index 9ed44d4..09a9639 100644
--- a/include/common/clz.h
+++ b/include/common/clz.h
@@ -130,7 +130,7 @@ inline bool ISPOWEROFTWO(int32 x)
 // next power of two greater than or equal to x
 inline int32 NEXTPOWEROFTWO(int32 x)
 {
-	return 1L << LOG2CEIL(x);
+	return (int32)1L << LOG2CEIL(x);
 }
 
 // previous power of two less than or equal to x
@@ -138,7 +138,7 @@ inline int32 PREVIOUSPOWEROFTWO(int32 x)
 {
 	if (ISPOWEROFTWO(x))
 		return x;
-	return 1L << (LOG2CEIL(x) - 1);
+	return (int32)1L << (LOG2CEIL(x) - 1);
 }
 
 // input a series of counting integers, outputs a series of gray codes .
@@ -168,7 +168,7 @@ inline int32 MSBitPos(int32 x)
 // find most significant bit
 inline int32 MSBit(int32 x)
 {
-	return 1L << MSBitPos(x);
+	return (int32)1L << MSBitPos(x);
 }
 
 // count number of one bits
diff --git a/include/common/function_attributes.h b/include/common/function_attributes.h
index 10b7dc9..3e23cc3 100644
--- a/include/common/function_attributes.h
+++ b/include/common/function_attributes.h
@@ -22,8 +22,13 @@
 
 #ifdef __GNUC__
 
-#define CONST __attribute__((const))
+#ifdef _WIN32
+#undef PURE
+#endif
+
+#define CONST_FUNCTION __attribute__((const))
 #define PURE __attribute__((pure))
+
 #define MALLOC __attribute__((malloc))
 #define HOT __attribute__((hot))
 #define COLD __attribute__((cold))
@@ -34,26 +39,22 @@
 #ifdef __clang__
 #undef HOT
 #undef FLATTEN
-
-#define HOT /*HOT*/
-#define FLATTEN /*FLATTEN*/
 #endif
 
 #ifdef __PATHCC__
 #undef HOT
 #undef FLATTEN
-
-#define HOT /*HOT*/
-#define FLATTEN /*FLATTEN*/
 #endif
 
 
+#ifndef _WIN32
 #ifndef PURE
 #define PURE /*PURE*/
 #endif
 
-#ifndef CONST
-#define CONST /*CONST*/
+#ifndef CONST_FUNCTION
+#define CONST_FUNCTION /*CONST_FUNCTION*/
+#endif
 #endif
 
 #ifndef MALLOC
@@ -68,4 +69,7 @@
 #define COLD /*COLD*/
 #endif
 
+#ifndef FLATTEN
+#define FLATTEN /*FLATTEN*/
+#endif
 #endif /* FUNCTION_ATTRIBUTES_H */
diff --git a/include/common/scsynthsend.h b/include/common/scsynthsend.h
index cceb769..1ae1150 100644
--- a/include/common/scsynthsend.h
+++ b/include/common/scsynthsend.h
@@ -134,7 +134,7 @@ struct scpacket {
 		skip(size4);
 		wrpos[-1] = 0;
 	}
-	int size() { return (char*)wrpos - (char*)buf; }
+	size_t size() { return (char*)wrpos - (char*)buf; }
 	char* data() { return (char*)buf; }
 
 	void OpenBundle(int64 time)
diff --git a/include/lang/ByteCodeArray.h b/include/lang/ByteCodeArray.h
index 5e23ed2..9cd1b3f 100644
--- a/include/lang/ByteCodeArray.h
+++ b/include/lang/ByteCodeArray.h
@@ -29,7 +29,7 @@ typedef unsigned char Byte;
 typedef struct {
 	Byte *bytes;
 	Byte *ptr;
-	long size;
+	size_t size;
 } ByteCodeArray, *ByteCodes;
 
 extern ByteCodes gCompilingByteCodes;
@@ -42,7 +42,7 @@ void copyByteCodes(Byte *dest, ByteCodes byteCodes);
 ByteCodes getByteCodes();
 ByteCodes saveByteCodeArray();
 void restoreByteCodeArray(ByteCodes byteCodes);
-int byteCodeLength(ByteCodes byteCodes);
+size_t byteCodeLength(ByteCodes byteCodes);
 void compileByteCodes(ByteCodes byteCodes);
 ByteCodes allocByteCodes();
 void reallocByteCodes(ByteCodes byteCodes);
diff --git a/include/lang/GC.h b/include/lang/GC.h
index 35aa189..0dc9405 100644
--- a/include/lang/GC.h
+++ b/include/lang/GC.h
@@ -30,6 +30,7 @@ Based on Wilson and Johnstone's real time collector and the Baker treadmill.
 #include "PyrObject.h"
 #include "VMGlobals.h"
 #include "AdvancingAllocPool.h"
+#include "function_attributes.h"
 
 void DumpSimpleBackTrace(VMGlobals *g);
 
@@ -73,13 +74,13 @@ class PyrGC
 public:
 	PyrGC(VMGlobals *g, AllocPool *inPool, PyrClass *mainProcessClass, long poolSize);
 
-	PyrObject* New(size_t inNumBytes, long inFlags, long inFormat, bool inCollect);
-	PyrObject* NewFrame(size_t inNumBytes, long inFlags, long inFormat, bool inAccount);
+	MALLOC PyrObject* New(size_t inNumBytes, long inFlags, long inFormat, bool inCollect);
+	MALLOC PyrObject* NewFrame(size_t inNumBytes, long inFlags, long inFormat, bool inAccount);
 
-	static PyrObject* NewPermanent(size_t inNumBytes,
+	MALLOC static PyrObject* NewPermanent(size_t inNumBytes,
 						long inFlags, long inFormat);
 
-	PyrObject* NewFinalizer(ObjFuncPtr finalizeFunc, PyrObject *inObject, bool inCollect);
+	MALLOC PyrObject* NewFinalizer(ObjFuncPtr finalizeFunc, PyrObject *inObject, bool inCollect);
 
 	bool IsBlack(PyrObjectHdr* inObj)  { return inObj->gc_color == mBlackColor; }
 	bool IsWhite(PyrObjectHdr* inObj)  { return inObj->gc_color == mWhiteColor; }
@@ -143,6 +144,7 @@ public:
 	}
 	void FullCollection();
 	void ScanFinalizers();
+	void RunAllFinalizers();
 	GCSet* GetGCSet(PyrObjectHdr* inObj);
 	void CompletePartialScan(PyrObject *obj);
 
@@ -153,7 +155,7 @@ public:
 	void Free(PyrObjectHdr* inObj);
 
 
-	int32 StackDepth() { return mVMGlobals->sp - mStack->slots + 1; }
+	long StackDepth() { return mVMGlobals->sp - mStack->slots + 1; }
 	PyrObject* Stack() { return mStack; }
 	void SetStack(PyrObject* inStack) { mStack = inStack; }
 
@@ -341,10 +343,10 @@ inline PyrObject * PyrGC::Allocate(size_t inNumBytes, int32 sizeclass, bool inCo
 	} else {
 		if (sizeclass > kMaxPoolSet) {
 			SweepBigObjects();
-			int32 allocSize = sizeof(PyrObjectHdr) + (sizeof(PyrSlot) << sizeclass);
+			size_t allocSize = sizeof(PyrObjectHdr) + (sizeof(PyrSlot) << sizeclass);
 			obj = (PyrObject*)mPool->Alloc(allocSize);
 		} else {
-			int32 allocSize = sizeof(PyrObjectHdr) + (sizeof(PyrSlot) << sizeclass);
+			size_t allocSize = sizeof(PyrObjectHdr) + (sizeof(PyrSlot) << sizeclass);
 			obj = (PyrObject*)mNewPool.Alloc(allocSize);
 		}
 		if (!obj)
diff --git a/include/lang/PyrDeepCopier.h b/include/lang/PyrDeepCopier.h
index 078fa3e..b57d5e5 100644
--- a/include/lang/PyrDeepCopier.h
+++ b/include/lang/PyrDeepCopier.h
@@ -34,7 +34,6 @@ An object archiving system for SuperCollider.
 #include "PyrPrimitive.h"
 #include "VMGlobals.h"
 #include "GC.h"
-#include "ReadWriteMacros.h"
 
 const int32 kDeepCopierObjectArrayInitialCapacity = 32;
 
@@ -78,12 +77,13 @@ public:
 
 private:
 
-	void recurse(PyrObject *obj, int n)
+	void recurse(PyrObject *obj, size_t n)
 	{
 		//post("->recurse %s %08X\n", obj->classptr->name.us->name, obj);
 		PyrSlot *slot = obj->slots;
-		for (int i=0; i<n; ++i, ++slot) {
-			if (IsObj(slot)) constructObjectArray(slotRawObject(slot));
+		for (size_t i=0; i<n; ++i, ++slot) {
+			if (IsObj(slot))
+				constructObjectArray(slotRawObject(slot));
 		}
 		//post("<-recurse %s %08X\n", obj->classptr->name.us->name, obj);
 	}
diff --git a/include/lang/PyrFileUtils.h b/include/lang/PyrFileUtils.h
deleted file mode 100644
index 7148512..0000000
--- a/include/lang/PyrFileUtils.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-	SuperCollider real time audio synthesis system
-    Copyright (c) 2002 James McCartney. All rights reserved.
-	http://www.audiosynth.com
-
-    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
-*/
-/*
-
-Some utils for file i/o.
-
-*/
-
-#ifndef _PYRFILEUTIL_H_
-#define _PYRFILEUTIL_H_
-
-int headerFormatFromSymbol(struct PyrSymbol *inSymbol);
-int sampleFormatFromSymbol(struct PyrSymbol *inSymbol, int inHeaderFormat);
-
-#ifdef __MAC__
-
-#include <Files.h>
-
-long setTypeCreator(unsigned char *filename, long type, long creator);
-bool filelen(FILE *file, size_t *length);
-
-int allocasync(int fildes, int count, IOParam *pb, IOCompletionUPP completionFunc);
-int createasync(unsigned char *path, int oflag, HParamBlockRec *hpb, IOCompletionUPP completionFunc);
-int openasync(unsigned char *path, int oflag, HParamBlockRec *hpb, IOCompletionUPP completionFunc);
-int closeasync(int fildes, HParamBlockRec *hpb, IOCompletionUPP completionFunc);
-int writeasync(int fildes, const char *buf, int count, IOParam *pb, IOCompletionUPP completionFunc);
-int readasync(int fildes, char *buf, int count, IOParam *pb, IOCompletionUPP completionFunc);
-int seekwriteasync(int fildes, const char *buf, int count, int pos, IOParam *pb, IOCompletionUPP completionFunc);
-int seekreadasync(int fildes, char *buf, int count, int pos, IOParam *pb, IOCompletionUPP completionFunc);
-
-
-#endif
-#endif
diff --git a/include/lang/PyrKernel.h b/include/lang/PyrKernel.h
index 683fc88..24e8937 100644
--- a/include/lang/PyrKernel.h
+++ b/include/lang/PyrKernel.h
@@ -115,6 +115,7 @@ struct PyrThread : public PyrObjectHdr
 	PyrSlot beats, seconds, clock, nextBeat, endBeat, endValue;
 	PyrSlot environment;
 	PyrSlot exceptionHandler;
+	PyrSlot threadPlayer;
 	PyrSlot executingPath;
 	PyrSlot oldExecutingPath;
 	PyrSlot stackSize;
diff --git a/include/lang/PyrObject.h b/include/lang/PyrObject.h
index 099acfc..f541286 100644
--- a/include/lang/PyrObject.h
+++ b/include/lang/PyrObject.h
@@ -85,12 +85,14 @@ struct PyrObjectHdr {
 
 	int scratch1;
 
-	int SizeClass() { return obj_sizeclass; }
-
-	void SetMark() { obj_flags |= obj_marked; }
-	void ClearMark() { obj_flags &= ~obj_marked; }
-	bool IsMarked() { return ((obj_flags & obj_marked) != 0); } // BG2004-10-09 : the previous version did execute some hidden code in int -> bool conversion
-	bool IsPermanent() { return gc_color == obj_permanent; }
+	int SizeClass()          { return obj_sizeclass; }
+
+	void SetMark()           { obj_flags |= obj_marked; }
+	void ClearMark()         { obj_flags &= ~obj_marked; }
+	bool IsMarked() const    { return obj_flags & obj_marked; }
+	bool IsPermanent() const { return gc_color == obj_permanent; }
+	bool IsImmutable() const { return obj_flags & obj_immutable; }
+	bool IsMutable() const   { return !IsImmutable(); }
 };
 
 struct PyrObject : public PyrObjectHdr {
@@ -236,14 +238,13 @@ void dumpObjectSlot(PyrSlot *slot);
 bool respondsTo(PyrSlot *slot, PyrSymbol *selector);
 bool isSubclassOf(struct PyrClass *classobj, struct PyrClass *testclass);
 
-const int kFloatTagIndex = 11;
 extern struct PyrClass* gTagClassTable[16];
 
 inline struct PyrClass* classOfSlot(PyrSlot *slot)
 {
 	PyrClass *classobj;
 	int tag;
-	if (IsFloat(slot)) classobj = gTagClassTable[kFloatTagIndex];
+	if (IsFloat(slot)) classobj = class_float;
 	else if ((tag = GetTag(slot) & 0xF) == 1) classobj = slotRawObject(slot)->classptr;
 	else classobj = gTagClassTable[tag];
 
@@ -280,12 +281,12 @@ void getIndexedSlot(struct PyrObject *obj, PyrSlot *a, int index);
 int putIndexedSlot(struct VMGlobals *g, struct PyrObject *obj, PyrSlot *c, int index);
 int putIndexedFloat(PyrObject *obj, double val, int index);
 
-inline int ARRAYMAXINDEXSIZE(PyrObjectHdr* obj)
+inline long ARRAYMAXINDEXSIZE(PyrObjectHdr* obj)
 {
 	return (1L << obj->obj_sizeclass);
 }
 
-inline int MAXINDEXSIZE(PyrObjectHdr* obj)
+inline long MAXINDEXSIZE(PyrObjectHdr* obj)
 {
 	return ((1L << obj->obj_sizeclass) * gFormatElemCapc[ obj->obj_format ]);
 }
diff --git a/include/lang/PyrSched.h b/include/lang/PyrSched.h
index 4b68878..d1f2130 100644
--- a/include/lang/PyrSched.h
+++ b/include/lang/PyrSched.h
@@ -40,7 +40,6 @@ int64 OSCTime();
 int64 ElapsedTimeToOSC(double elapsed);
 double OSCToElapsedTime(int64 oscTime);
 
-void syncOSCOffsetWithTimeOfDay();
 void doubleToTimespec(double secs, struct timespec *spec);
 
 
diff --git a/include/lang/PyrSlot.h b/include/lang/PyrSlot.h
index b4d7029..8e92ebf 100644
--- a/include/lang/PyrSlot.h
+++ b/include/lang/PyrSlot.h
@@ -57,6 +57,7 @@ int slotIntVal(PyrSlot* slot, int *value);
 int slotFloatVal(PyrSlot* slot, float *value);
 int slotDoubleVal(PyrSlot *slot, double *value);
 int slotStrVal(PyrSlot *slot, char *str, int maxlen);
+int slotStrLen(PyrSlot *slot);
 int slotPStrVal(PyrSlot *slot, unsigned char *str);
 int slotSymbolVal(PyrSlot *slot, PyrSymbol **symbol);
 
diff --git a/include/lang/PyrSlot32.h b/include/lang/PyrSlot32.h
index ceacceb..b51aa9f 100644
--- a/include/lang/PyrSlot32.h
+++ b/include/lang/PyrSlot32.h
@@ -142,7 +142,7 @@ typedef union pyrslot {
 	copy the double field, not the struct.
 */
 
-inline int GetTag(PyrSlot* slot) { return slot->utag; }
+inline int GetTag(const PyrSlot* slot) { return slot->utag; }
 
 /* some macros for setting values of slots */
 inline void SetInt(PyrSlot* slot, int val)    {  (slot)->utag = tagInt;  (slot)->ui = (val); }
@@ -173,32 +173,32 @@ inline void SetFloat(PyrSlot* slot, double val)    { (slot)->utag = s_float; (sl
 #endif
 
 
-inline bool IsObj(PyrSlot* slot) { return ((slot)->utag == tagObj); }
-inline bool NotObj(PyrSlot* slot) { return ((slot)->utag != tagObj); }
+inline bool IsObj(const PyrSlot* slot) { return ((slot)->utag == tagObj); }
+inline bool NotObj(const PyrSlot* slot) { return ((slot)->utag != tagObj); }
 
-inline bool IsNil(PyrSlot* slot) { return ((slot)->utag == tagNil); }
-inline bool NotNil(PyrSlot* slot) { return ((slot)->utag != tagNil); }
+inline bool IsNil(const PyrSlot* slot) { return ((slot)->utag == tagNil); }
+inline bool NotNil(const PyrSlot* slot) { return ((slot)->utag != tagNil); }
 
-inline bool IsFalse(PyrSlot* slot) { return ((slot)->utag == tagFalse); }
-inline bool IsTrue(PyrSlot* slot) { return ((slot)->utag == tagTrue); }
+inline bool IsFalse(const PyrSlot* slot) { return ((slot)->utag == tagFalse); }
+inline bool IsTrue(const PyrSlot* slot) { return ((slot)->utag == tagTrue); }
 
 inline bool SlotEq(PyrSlot* a, PyrSlot* b) { return ((a)->ui == (b)->ui && (a)->utag == (b)->utag); }
 
-inline bool IsSym(PyrSlot* slot) { return ((slot)->utag == tagSym); }
-inline bool NotSym(PyrSlot* slot) { return ((slot)->utag != tagSym); }
+inline bool IsSym(const PyrSlot* slot) { return ((slot)->utag == tagSym); }
+inline bool NotSym(const PyrSlot* slot) { return ((slot)->utag != tagSym); }
 
-inline bool IsChar(PyrSlot* slot) { return ((slot)->utag == tagChar); }
-inline bool NotChar(PyrSlot* slot) { return ((slot)->utag != tagChar); }
+inline bool IsChar(const PyrSlot* slot) { return ((slot)->utag == tagChar); }
+inline bool NotChar(const PyrSlot* slot) { return ((slot)->utag != tagChar); }
 
-inline bool IsInt(PyrSlot* slot) { return ((slot)->utag == tagInt); }
-inline bool NotInt(PyrSlot* slot) { return ((slot)->utag != tagInt); }
+inline bool IsInt(const PyrSlot* slot) { return ((slot)->utag == tagInt); }
+inline bool NotInt(const PyrSlot* slot) { return ((slot)->utag != tagInt); }
 
 inline bool IsFloatTag(int tag)  { return ((tag & 0xFFFFFFF0) != 0x7FF90000); }
-inline bool IsFloat(PyrSlot* slot) { return (((slot)->utag & 0xFFFFFFF0) != 0x7FF90000); }
-inline bool NotFloat(PyrSlot* slot) { return (((slot)->utag & 0xFFFFFFF0) == 0x7FF90000); }
+inline bool IsFloat(const PyrSlot* slot) { return (((slot)->utag & 0xFFFFFFF0) != 0x7FF90000); }
+inline bool NotFloat(const PyrSlot* slot) { return (((slot)->utag & 0xFFFFFFF0) == 0x7FF90000); }
 
-inline bool IsPtr(PyrSlot* slot) { return ((slot)->utag == tagPtr); }
-inline bool NotPtr(PyrSlot* slot) { return ((slot)->utag != tagPtr); }
+inline bool IsPtr(const PyrSlot* slot) { return ((slot)->utag == tagPtr); }
+inline bool NotPtr(const PyrSlot* slot) { return ((slot)->utag != tagPtr); }
 
 inline void SetRawChar(PyrSlot* slot, int val) { assert(IsChar(slot)); slot->uc = val; }
 inline void SetRaw(PyrSlot* slot, int val) { assert(IsInt(slot)); slot->ui = val; }
@@ -313,19 +313,19 @@ inline PyrSymbol* slotRawSymbol(PyrSlot *slot)
 	return slot->s.u.s;
 }
 
-inline int slotRawChar(PyrSlot *slot)
+inline int slotRawChar(const PyrSlot *slot)
 {
 	assert(IsChar(slot));
 	return slot->s.u.c;
 }
 
-inline int slotRawInt(PyrSlot *slot)
+inline int slotRawInt(const PyrSlot *slot)
 {
 	assert(IsInt(slot));
 	return slot->s.u.i;
 }
 
-inline double slotRawFloat(PyrSlot *slot)
+inline double slotRawFloat(const PyrSlot *slot)
 {
 	assert(IsFloat(slot));
 	return slot->uf;
@@ -337,14 +337,14 @@ inline PyrObject* slotRawObject(PyrSlot *slot)
 	return slot->s.u.o;
 }
 
-inline void slotCopy(PyrSlot *dst, PyrSlot *src)
+inline void slotCopy(PyrSlot *dst, const PyrSlot *src)
 {
 	double *dstp = (double*)dst;
 	double *srcp = (double*)src;
 	*dstp = *srcp;
 }
 
-inline void slotCopy(PyrSlot *dst, PyrSlot *src, int num)
+inline void slotCopy(PyrSlot *dst, const PyrSlot *src, int num)
 {
 	double *dstp = (double*)dst - 1;
 	double *srcp = (double*)src - 1;
diff --git a/include/lang/PyrSlot64.h b/include/lang/PyrSlot64.h
index 005061c..b7338df 100644
--- a/include/lang/PyrSlot64.h
+++ b/include/lang/PyrSlot64.h
@@ -76,32 +76,32 @@ typedef struct pyrslot {
 
 
 /* tag setter function */
-inline int GetTag(PyrSlot* slot)  { return slot->tag; }
+inline int GetTag(const PyrSlot* slot)  { return slot->tag; }
 
 /* tag checking functions */
-inline bool IsObj(PyrSlot* slot)  { return slot->tag == tagObj; }
-inline bool NotObj(PyrSlot* slot) { return slot->tag != tagObj; }
+inline bool IsObj(const PyrSlot* slot)  { return slot->tag == tagObj; }
+inline bool NotObj(const PyrSlot* slot) { return slot->tag != tagObj; }
 
-inline bool IsNil(PyrSlot* slot)  { return slot->tag == tagNil; }
-inline bool NotNil(PyrSlot* slot) { return slot->tag != tagNil; }
+inline bool IsNil(const PyrSlot* slot)  { return slot->tag == tagNil; }
+inline bool NotNil(const PyrSlot* slot) { return slot->tag != tagNil; }
 
-inline bool IsFalse(PyrSlot* slot) { return slot->tag == tagFalse; }
-inline bool IsTrue(PyrSlot* slot)  { return slot->tag == tagTrue; }
+inline bool IsFalse(const PyrSlot* slot) { return slot->tag == tagFalse; }
+inline bool IsTrue(const PyrSlot* slot)  { return slot->tag == tagTrue; }
 
-inline bool IsSym(PyrSlot* slot)  { return slot->tag == tagSym; }
-inline bool NotSym(PyrSlot* slot) { return slot->tag != tagSym; }
+inline bool IsSym(const PyrSlot* slot)  { return slot->tag == tagSym; }
+inline bool NotSym(const PyrSlot* slot) { return slot->tag != tagSym; }
 
-inline bool IsChar(PyrSlot* slot)  { return slot->tag == tagChar; }
-inline bool NotChar(PyrSlot* slot) { return slot->tag != tagChar; }
+inline bool IsChar(const PyrSlot* slot)  { return slot->tag == tagChar; }
+inline bool NotChar(const PyrSlot* slot) { return slot->tag != tagChar; }
 
-inline bool IsInt(PyrSlot* slot)  { return slot->tag == tagInt; }
-inline bool NotInt(PyrSlot* slot) { return slot->tag != tagInt; }
+inline bool IsInt(const PyrSlot* slot)  { return slot->tag == tagInt; }
+inline bool NotInt(const PyrSlot* slot) { return slot->tag != tagInt; }
 
-inline bool IsFloat(PyrSlot* slot)  { return slot->tag == tagFloat; }
-inline bool NotFloat(PyrSlot* slot) { return slot->tag != tagFloat; }
+inline bool IsFloat(const PyrSlot* slot)  { return slot->tag == tagFloat; }
+inline bool NotFloat(const PyrSlot* slot) { return slot->tag != tagFloat; }
 
-inline bool IsPtr(PyrSlot* slot) { return slot->tag == tagPtr; }
-inline bool NotPtr(PyrSlot* slot) { return slot->tag != tagPtr; }
+inline bool IsPtr(const PyrSlot* slot) { return slot->tag == tagPtr; }
+inline bool NotPtr(const PyrSlot* slot) { return slot->tag != tagPtr; }
 
 
 /* setter functions */
@@ -249,18 +249,18 @@ inline PyrSymbol* slotRawSymbol(PyrSlot *slot)
 	return slot->u.s;
 }
 
-inline int slotRawChar(PyrSlot *slot)
+inline int slotRawChar(const PyrSlot *slot)
 {
 	return slot->u.c;
 }
 
-inline int slotRawInt(PyrSlot *slot)
+inline int slotRawInt(const PyrSlot *slot)
 {
 	assert(IsInt(slot));
 	return slot->u.i;
 }
 
-inline double slotRawFloat(PyrSlot *slot)
+inline double slotRawFloat(const PyrSlot *slot)
 {
 	assert(IsFloat(slot));
 	return slot->u.f;
@@ -273,12 +273,12 @@ inline PyrObject* slotRawObject(PyrSlot *slot)
 }
 
 /* slot copy functions */
-inline void slotCopy(PyrSlot *dst, PyrSlot *src)
+inline void slotCopy(PyrSlot *dst, const PyrSlot *src)
 {
 	*dst = *src;
 }
 
-inline void slotCopy(PyrSlot *dst, PyrSlot *src, int num)
+inline void slotCopy(PyrSlot *dst, const PyrSlot *src, int num)
 {
 	for (int i=0; i<num; ++i)
 		slotCopy(dst + i, src + i);
diff --git a/include/lang/PyrSymbolTable.h b/include/lang/PyrSymbolTable.h
index 228aaad..e631226 100644
--- a/include/lang/PyrSymbolTable.h
+++ b/include/lang/PyrSymbolTable.h
@@ -65,7 +65,7 @@ private:
 	PyrSymbol* Make(const char *inName);
 	PyrSymbol* MakeNew(const char *inName, int inHash, int inLength);
 
-	int StrHash(const char *inName, int *outLength);
+	int StrHash(const char *inName, size_t *outLength);
 	void AllocTable();
 	void Grow();
 	PyrSymbol* Find(const char *inName, int inHash);
diff --git a/include/lang/ReadWriteMacros.h b/include/lang/ReadWriteMacros.h
index ba502f2..c4845ba 100644
--- a/include/lang/ReadWriteMacros.h
+++ b/include/lang/ReadWriteMacros.h
@@ -1,21 +1,21 @@
 /*
 	SuperCollider real time audio synthesis system
-    Copyright (c) 2002 James McCartney. All rights reserved.
+	Copyright (c) 2002 James McCartney. All rights reserved.
 	http://www.audiosynth.com
 
-    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 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.
+	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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+	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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 */
 
 
@@ -32,266 +32,266 @@ template <class T>
 class SC_IOStream
 {
 protected:
-    T s;
+	T s;
 public:
-    SC_IOStream() : s(0) {}
-    SC_IOStream(T inStream) : s(inStream) {}
-
-    void SetStream(T inStream) { s = inStream; }
-    T GetStream() { return s; }
-
-    // core routines
-    void readData(char *data, int size);
-    uint8 readUInt8();
-
-    void writeData(char *data, int size);
-    void writeUInt8(uint8 inInt);
-
-    // built using core routines
-    void writeInt8(int8 inInt)
-    {
-        writeUInt8((uint8)inInt);
-    }
-
-    void writeInt16_be(int16 inInt)
-    {
-        writeUInt8((uint8)(inInt >> 8));
-        writeUInt8(inInt);
-    }
-
-    void writeInt16_le(int16 inInt)
-    {
-        writeUInt8((uint8)inInt);
-        writeUInt8((uint8)(inInt >> 8));
-    }
-
-    void writeInt32_be(int32 inInt)
-    {
-        writeUInt8((uint8)(inInt >> 24));
-        writeUInt8((uint8)(inInt >> 16));
-        writeUInt8((uint8)(inInt >> 8));
-        writeUInt8((uint8)inInt);
-    }
-
-    void writeInt32_le(int32 inInt)
-    {
-        writeUInt8((uint8)inInt);
-        writeUInt8((uint8)(inInt >> 8));
-        writeUInt8((uint8)(inInt >> 16));
-        writeUInt8((uint8)(inInt >> 24));
-    }
+	SC_IOStream() : s(0) {}
+	SC_IOStream(T inStream) : s(inStream) {}
+
+	void SetStream(T inStream) { s = inStream; }
+	T GetStream() { return s; }
+
+	// core routines
+	void readData(char *data, size_t size);
+	uint8 readUInt8();
+
+	void writeData(char *data, size_t size);
+	void writeUInt8(uint8 inInt);
+
+	// built using core routines
+	void writeInt8(int8 inInt)
+	{
+		writeUInt8((uint8)inInt);
+	}
+
+	void writeInt16_be(int16 inInt)
+	{
+		writeUInt8((uint8)(inInt >> 8));
+		writeUInt8(inInt);
+	}
+
+	void writeInt16_le(int16 inInt)
+	{
+		writeUInt8((uint8)inInt);
+		writeUInt8((uint8)(inInt >> 8));
+	}
+
+	void writeInt32_be(int32 inInt)
+	{
+		writeUInt8((uint8)(inInt >> 24));
+		writeUInt8((uint8)(inInt >> 16));
+		writeUInt8((uint8)(inInt >> 8));
+		writeUInt8((uint8)inInt);
+	}
+
+	void writeInt32_le(int32 inInt)
+	{
+		writeUInt8((uint8)inInt);
+		writeUInt8((uint8)(inInt >> 8));
+		writeUInt8((uint8)(inInt >> 16));
+		writeUInt8((uint8)(inInt >> 24));
+	}
 
 #if BYTE_ORDER == BIG_ENDIAN
-    void writeFloat_be(float inFloat)
+	void writeFloat_be(float inFloat)
 #else
-    void writeFloat_le(float inFloat)
+	void writeFloat_le(float inFloat)
 #endif
-    {
-	union {
-		float f;
-		uint8 c[4];
-	} u;
-        u.f = inFloat;
-        writeUInt8(u.c[0]);
-        writeUInt8(u.c[1]);
-        writeUInt8(u.c[2]);
-        writeUInt8(u.c[3]);
-    }
+	{
+		union {
+			float f;
+			uint8 c[4];
+		} u;
+		u.f = inFloat;
+		writeUInt8(u.c[0]);
+		writeUInt8(u.c[1]);
+		writeUInt8(u.c[2]);
+		writeUInt8(u.c[3]);
+	}
 
 #if BYTE_ORDER == BIG_ENDIAN
-    void writeFloat_le(float inFloat)
+	void writeFloat_le(float inFloat)
 #else
-    void writeFloat_be(float inFloat)
+	void writeFloat_be(float inFloat)
 #endif
-    {
-	union {
-		float f;
-		uint8 c[4];
-	} u;
-        u.f = inFloat;
-        writeUInt8(u.c[3]);
-        writeUInt8(u.c[2]);
-        writeUInt8(u.c[1]);
-        writeUInt8(u.c[0]);
-    }
+	{
+		union {
+			float f;
+			uint8 c[4];
+		} u;
+		u.f = inFloat;
+		writeUInt8(u.c[3]);
+		writeUInt8(u.c[2]);
+		writeUInt8(u.c[1]);
+		writeUInt8(u.c[0]);
+	}
 
 
 #if BYTE_ORDER == BIG_ENDIAN
-    void writeDouble_be(double inDouble)
+	void writeDouble_be(double inDouble)
 #else
-    void writeDouble_le(double inDouble)
+	void writeDouble_le(double inDouble)
 #endif
-    {
-	union {
-		double f;
-		uint8 c[8];
-	} u;
-        u.f = inDouble;
-        writeUInt8(u.c[0]);
-        writeUInt8(u.c[1]);
-        writeUInt8(u.c[2]);
-        writeUInt8(u.c[3]);
-        writeUInt8(u.c[4]);
-        writeUInt8(u.c[5]);
-        writeUInt8(u.c[6]);
-        writeUInt8(u.c[7]);
-    }
+	{
+		union {
+			double f;
+			uint8 c[8];
+		} u;
+		u.f = inDouble;
+		writeUInt8(u.c[0]);
+		writeUInt8(u.c[1]);
+		writeUInt8(u.c[2]);
+		writeUInt8(u.c[3]);
+		writeUInt8(u.c[4]);
+		writeUInt8(u.c[5]);
+		writeUInt8(u.c[6]);
+		writeUInt8(u.c[7]);
+	}
 
 #if BYTE_ORDER == BIG_ENDIAN
-    void writeDouble_le(double inDouble)
+	void writeDouble_le(double inDouble)
 #else
-    void writeDouble_be(double inDouble)
+	void writeDouble_be(double inDouble)
 #endif
-    {
-	union {
-		double f;
-		uint8 c[8];
-	} u;
-        u.f = inDouble;
-        writeUInt8(u.c[7]);
-        writeUInt8(u.c[6]);
-        writeUInt8(u.c[5]);
-        writeUInt8(u.c[4]);
-        writeUInt8(u.c[3]);
-        writeUInt8(u.c[2]);
-        writeUInt8(u.c[1]);
-        writeUInt8(u.c[0]);
-    }
-
-
-    int8 readInt8()
-    {
-        return (int8)readUInt8();
-    }
-
-    int16 readInt16_be()
-    {
-        uint8 a = readUInt8();
-        uint8 b = readUInt8();
-        return (int16)((a << 8) | b);
-    }
-
-    int16 readInt16_le()
-    {
-        uint8 a = readUInt8();
-        uint8 b = readUInt8();
-        return (int16)((b << 8) | a);
-    }
-
-    int32 readInt32_be()
-    {
-        uint8 a = readUInt8();
-        uint8 b = readUInt8();
-        uint8 c = readUInt8();
-        uint8 d = readUInt8();
-        return (int32)((a << 24) | (b << 16) | (c << 8) | d);
-    }
-
-    int32 readInt32_le()
-    {
-        uint8 a = readUInt8();
-        uint8 b = readUInt8();
-        uint8 c = readUInt8();
-        uint8 d = readUInt8();
-        return (int32)((d << 24) | (c << 16) | (b << 8) | a);
-    }
+	{
+		union {
+			double f;
+			uint8 c[8];
+		} u;
+		u.f = inDouble;
+		writeUInt8(u.c[7]);
+		writeUInt8(u.c[6]);
+		writeUInt8(u.c[5]);
+		writeUInt8(u.c[4]);
+		writeUInt8(u.c[3]);
+		writeUInt8(u.c[2]);
+		writeUInt8(u.c[1]);
+		writeUInt8(u.c[0]);
+	}
+
+
+	int8 readInt8()
+	{
+		return (int8)readUInt8();
+	}
+
+	int16 readInt16_be()
+	{
+		uint8 a = readUInt8();
+		uint8 b = readUInt8();
+		return (int16)((a << 8) | b);
+	}
+
+	int16 readInt16_le()
+	{
+		uint8 a = readUInt8();
+		uint8 b = readUInt8();
+		return (int16)((b << 8) | a);
+	}
+
+	int32 readInt32_be()
+	{
+		uint8 a = readUInt8();
+		uint8 b = readUInt8();
+		uint8 c = readUInt8();
+		uint8 d = readUInt8();
+		return (int32)((a << 24) | (b << 16) | (c << 8) | d);
+	}
+
+	int32 readInt32_le()
+	{
+		uint8 a = readUInt8();
+		uint8 b = readUInt8();
+		uint8 c = readUInt8();
+		uint8 d = readUInt8();
+		return (int32)((d << 24) | (c << 16) | (b << 8) | a);
+	}
 
 #if BYTE_ORDER == BIG_ENDIAN
-    float readFloat_be()
+	float readFloat_be()
 #else
-    float readFloat_le()
+	float readFloat_le()
 #endif
-    {
-	union {
-		float f;
-		uint8 c[4];
-	} u;
-        u.c[0] = readUInt8();
-        u.c[1] = readUInt8();
-        u.c[2] = readUInt8();
-        u.c[3] = readUInt8();
-        return u.f;
-    }
+	{
+		union {
+			float f;
+			uint8 c[4];
+		} u;
+		u.c[0] = readUInt8();
+		u.c[1] = readUInt8();
+		u.c[2] = readUInt8();
+		u.c[3] = readUInt8();
+		return u.f;
+	}
 
 #if BYTE_ORDER == BIG_ENDIAN
-    float readFloat_le()
+	float readFloat_le()
 #else
-    float readFloat_be()
+	float readFloat_be()
 #endif
-    {
-	union {
-		float f;
-		uint8 c[4];
-	} u;
-        u.c[3] = readUInt8();
-        u.c[2] = readUInt8();
-        u.c[1] = readUInt8();
-        u.c[0] = readUInt8();
-        return u.f;
-    }
+	{
+		union {
+			float f;
+			uint8 c[4];
+		} u;
+		u.c[3] = readUInt8();
+		u.c[2] = readUInt8();
+		u.c[1] = readUInt8();
+		u.c[0] = readUInt8();
+		return u.f;
+	}
 
 
 #if BYTE_ORDER == BIG_ENDIAN
-    double readDouble_be()
+	double readDouble_be()
 #else
-    double readDouble_le()
+	double readDouble_le()
 #endif
-    {
-	union {
-		double f;
-		uint8 c[8];
-	} u;
-        u.c[0] = readUInt8();
-        u.c[1] = readUInt8();
-        u.c[2] = readUInt8();
-        u.c[3] = readUInt8();
-        u.c[4] = readUInt8();
-        u.c[5] = readUInt8();
-        u.c[6] = readUInt8();
-        u.c[7] = readUInt8();
-        return u.f;
-    }
+	{
+		union {
+			double f;
+			uint8 c[8];
+		} u;
+		u.c[0] = readUInt8();
+		u.c[1] = readUInt8();
+		u.c[2] = readUInt8();
+		u.c[3] = readUInt8();
+		u.c[4] = readUInt8();
+		u.c[5] = readUInt8();
+		u.c[6] = readUInt8();
+		u.c[7] = readUInt8();
+		return u.f;
+	}
 
 #if BYTE_ORDER == BIG_ENDIAN
-    double readDouble_le()
+	double readDouble_le()
 #else
-    double readDouble_be()
+	double readDouble_be()
 #endif
-    {
-	union {
-		double f;
-		uint8 c[8];
-	} u;
-        u.c[7] = readUInt8();
-        u.c[6] = readUInt8();
-        u.c[5] = readUInt8();
-        u.c[4] = readUInt8();
-        u.c[3] = readUInt8();
-        u.c[2] = readUInt8();
-        u.c[1] = readUInt8();
-        u.c[0] = readUInt8();
-        return u.f;
-    }
-
-    void readSymbol(char *outString)
-    {
-            int length = readUInt8();
-            readData(outString, length);
-            outString[length] = 0;
-    }
-
-    void writeSymbol(char *inString)
-    {
-            int32 length = strlen(inString);
-            writeUInt8((uint8)length);
-            writeData(inString, length);
-    }
+	{
+		union {
+			double f;
+			uint8 c[8];
+		} u;
+		u.c[7] = readUInt8();
+		u.c[6] = readUInt8();
+		u.c[5] = readUInt8();
+		u.c[4] = readUInt8();
+		u.c[3] = readUInt8();
+		u.c[2] = readUInt8();
+		u.c[1] = readUInt8();
+		u.c[0] = readUInt8();
+		return u.f;
+	}
+
+	void readSymbol(char *outString)
+	{
+		int length = readUInt8();
+		readData(outString, length);
+		outString[length] = 0;
+	}
+
+	void writeSymbol(char *inString)
+	{
+		size_t length = strlen(inString);
+		writeUInt8((uint8)length);
+		writeData(inString, length);
+	}
 };
 
 
 // core routines
 template <>
-inline void SC_IOStream<FILE*>::readData(char *data, int size)
+inline void SC_IOStream<FILE*>::readData(char *data, size_t size)
 {
 	size_t read = fread(data, 1, size, s);
 	if (read != size)
@@ -301,46 +301,46 @@ inline void SC_IOStream<FILE*>::readData(char *data, int size)
 template <>
 inline uint8 SC_IOStream<FILE*>::readUInt8()
 {
-    return (uint8)fgetc(s);
+	return (uint8)fgetc(s);
 }
 
 template <>
-inline void SC_IOStream<FILE*>::writeData(char *data, int size)
+inline void SC_IOStream<FILE*>::writeData(char *data, size_t size)
 {
-    fwrite(data, 1, size, s);
+	fwrite(data, 1, size, s);
 }
 
 template <>
 inline void SC_IOStream<FILE*>::writeUInt8(uint8 inInt)
 {
-    fputc(inInt, s);
+	fputc(inInt, s);
 }
 
 // core routines
 template <>
-inline void SC_IOStream<char*>::readData(char *data, int size)
+inline void SC_IOStream<char*>::readData(char *data, size_t size)
 {
-    memcpy(data, s, size);
-    s += size;
+	memcpy(data, s, size);
+	s += size;
 }
 
 template <>
 inline uint8 SC_IOStream<char*>::readUInt8()
 {
-    return (uint8)*s++;
+	return (uint8)*s++;
 }
 
 template <>
-inline void SC_IOStream<char*>::writeData(char *data, int size)
+inline void SC_IOStream<char*>::writeData(char *data, size_t size)
 {
-    memcpy(s, data, size);
-        s += size;
+	memcpy(s, data, size);
+	s += size;
 }
 
 template <>
 inline void SC_IOStream<char*>::writeUInt8(uint8 inInt)
 {
-    *s++ = (inInt & 255);
+	*s++ = (inInt & 255);
 }
 
 
diff --git a/include/lang/SC_LibraryConfig.h b/include/lang/SC_LibraryConfig.h
deleted file mode 100644
index 0cb4502..0000000
--- a/include/lang/SC_LibraryConfig.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- *  Copyright 2003 Maurizio Umberto Puxeddu <umbpux at tin.it>
- *  Copyright 2011 Jakob Leben
- *
- *  This file is part of SuperCollider.
- *
- *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- *  USA
- *
- */
-
-#ifndef SC_LIBRARYCONFIG_H_INCLUDED
-#define SC_LIBRARYCONFIG_H_INCLUDED
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <vector>
-#include <string>
-
-// =====================================================================
-// SC_LibraryConfigFile
-//    simple library configuration file parser
-// =====================================================================
-
-class SC_LanguageConfig;
-
-class SC_LibraryConfigFile
-{
-public:
-	typedef void (*ErrorFunc)(const char* fmt, ...);
-
-public:
-    SC_LibraryConfigFile(ErrorFunc errorFunc=0);
-
-    bool open(const char* filePath);
-    bool read(const char* fileName, SC_LanguageConfig* libConf);
-    void close();
-
-protected:
-	enum State
-	{
-		kBegin,
-		kAction,
-		kPath,
-		kEscape,
-		kEnvVar,
-		kEnvVarName,
-		kEnd
-	};
-
-	enum
-	{
-		kMaxIncludeDepth = 10
-	};
-
-    bool read(int depth, const char* fileName, SC_LanguageConfig* libConf);
-	bool parseLine(int depth, const char* fileName, int lineNumber, const char* line, SC_LanguageConfig* libConf);
-	static void defaultErrorFunc(const char* fmt, ...);
-
-private:
-	ErrorFunc			mErrorFunc;
-	FILE*				mFile;
-};
-
-class SC_LanguageConfig
-{
-public:
-	typedef std::vector<std::string> DirVector;
-
-	const DirVector& includedDirectories() { return mIncludedDirectories; }
-	const DirVector& excludedDirectories() { return mExcludedDirectories; }
-
-	void postExcludedDirectories(void);
-	bool forEachIncludedDirectory(bool (*func)(const char *, int));
-
-	bool pathIsExcluded(const char *path);
-
-	void addIncludedDirectory(const char *name);
-	void addExcludedDirectory(const char *name);
-	void removeIncludedDirectory(const char *name);
-	void removeExcludedDirectory(const char *name);
-
-	// convenience functions to access the global library config
-	static bool readLibraryConfig(const char* fileName);
-	static bool readLibraryConfigYAML(const char* fileName);
-	static bool writeLibraryConfigYAML(const char* fileName);
-	static void freeLibraryConfig();
-	static bool defaultLibraryConfig(void);
-	static bool readDefaultLibraryConfig();
-
-private:
-	DirVector mIncludedDirectories;
-	DirVector mExcludedDirectories;
-};
-
-extern SC_LanguageConfig* gLibraryConfig;
-
-#endif // SC_LIBRARYCONFIG_H_INCLUDED
diff --git a/include/lang/SC_Msg.h b/include/lang/SC_Msg.h
index 76ccf68..9f3e3a6 100644
--- a/include/lang/SC_Msg.h
+++ b/include/lang/SC_Msg.h
@@ -37,7 +37,6 @@ enum { // Handler IDs
     kEitherTimeAction = 3
 };
 
-void DumpReplyAddress(ReplyAddress *inReplyAddress);
 int32 Hash(ReplyAddress *inReplyAddress);
 
 struct OSC_Packet
diff --git a/include/lang/SFHeaders.h b/include/lang/SFHeaders.h
deleted file mode 100644
index a39e39b..0000000
--- a/include/lang/SFHeaders.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// SuperCollider real time audio synthesis system
-//   Copyright (c) 2002 James McCartney. All rights reserved.
-// http://www.audiosynth.com
-
-//   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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
-
-#ifndef _SFHeaders_
-#define _SFHeaders_
-
-// #include "SCBase.h"
-// #include "ReadWriteMacros.h"
-
-enum {
-	unsupported_sound_file = -1,
-	AIFF_sound_file,
-	AIFC_sound_file,
-	RIFF_sound_file,
-	NeXT_sound_file,
-	IRCAM_sound_file,
-	SD2_sound_file,
-	raw_sound_file,
-	flac_sound_file,
-	vorbis_sound_file
-};
-
-enum {
-	snd_unsupported = -1,
-	snd_no_snd,
-	snd_16_linear,
-	snd_8_mulaw,
-	snd_8_linear,
-	snd_32_float,
-	snd_32_linear,
-	snd_8_alaw,
-	snd_8_unsigned,
-	snd_24_linear,
-	snd_64_double,
-	snd_16_linear_little_endian,
-	snd_32_linear_little_endian,
-	snd_32_float_little_endian,
-	snd_64_double_little_endian,
-	snd_16_unsigned,
-	snd_16_unsigned_little_endian,
-	snd_24_linear_little_endian,
-	snd_32_vax_float,
-	snd_12_linear,
-	snd_12_linear_little_endian,
-	snd_12_unsigned,
-	snd_12_unsigned_little_endian
-};
-
-#endif
diff --git a/include/plugin_interface/Hash.h b/include/plugin_interface/Hash.h
index 882aa40..f930e4a 100644
--- a/include/plugin_interface/Hash.h
+++ b/include/plugin_interface/Hash.h
@@ -49,7 +49,7 @@ inline int32 Hash(const char *inKey)
 }
 
 // hash function for a string that also returns the length
-inline int32 Hash(const char *inKey, int32 *outLength)
+inline int32 Hash(const char *inKey, size_t *outLength)
 {
     // the one-at-a-time hash.
     // a very good hash function. ref: a web page by Bob Jenkins.
diff --git a/include/plugin_interface/SC_Complex.h b/include/plugin_interface/SC_Complex.h
index c8f8f71..3ed4771 100644
--- a/include/plugin_interface/SC_Complex.h
+++ b/include/plugin_interface/SC_Complex.h
@@ -54,7 +54,6 @@ float gSine[kSineSize+1];
 static bool initTables(void)
 {
 	double sineIndexToPhase = twopi / kSineSize;
-	double pmf = (1L << 29) / twopi;
 	for (int i=0; i <= kSineSize; ++i) {
 		double phase = i * sineIndexToPhase;
 		float32 d = sin(phase);
diff --git a/include/plugin_interface/SC_Graph.h b/include/plugin_interface/SC_Graph.h
index 7b494bf..de4427e 100644
--- a/include/plugin_interface/SC_Graph.h
+++ b/include/plugin_interface/SC_Graph.h
@@ -39,10 +39,10 @@ struct Graph
 	// try this for setting the rate of a control
 	int *mControlRates;
 
-        uint32 mNumUnits;
+	uint32 mNumUnits;
 	struct Unit **mUnits;
 
-	int mNumCalcUnits;
+	uint32 mNumCalcUnits;
 	struct Unit **mCalcUnits; // excludes i-rate units.
 
 	int mSampleOffset;
diff --git a/include/plugin_interface/SC_InlineBinaryOp.h b/include/plugin_interface/SC_InlineBinaryOp.h
index 987ca67..c6485b3 100644
--- a/include/plugin_interface/SC_InlineBinaryOp.h
+++ b/include/plugin_interface/SC_InlineBinaryOp.h
@@ -342,22 +342,25 @@ inline int sc_fold(int in, int lo, int hi)
 	return c + lo;
 }
 
-inline int sc_gcd(int u, int v)
+inline int sc_gcd(int a, int b)
 {
 	int t;
-	u = sc_abs(u);
-	v = sc_abs(v);
-	if (u <= 1 || v <= 1) return 1;
-	while (u>0) {
-		if (u<v) { t=u; u=v; v=t; }
-		u = u % v;
+	a = sc_abs(a);
+	b = sc_abs(b);
+	if (a == 1 || b == 1) return 1;
+	if (a < b) { t = a; a = b; b = t; }
+	while (b > 0) {
+		t = a % b; a = b; b = t;
 	}
-	return v;
+	return a;
 }
 
-inline int sc_lcm(int u, int v)
+inline int sc_lcm(int a, int b)
 {
-	return (u * v)/sc_gcd(u,v);
+    if (a == 0 || b == 0)
+        return 0;
+    else
+        return sc_abs(a * b) / sc_gcd(a, b);
 }
 
 inline int sc_bitAnd(int a, int b)
diff --git a/include/plugin_interface/SC_InlineUnaryOp.h b/include/plugin_interface/SC_InlineUnaryOp.h
index 62bd84e..613aac3 100644
--- a/include/plugin_interface/SC_InlineUnaryOp.h
+++ b/include/plugin_interface/SC_InlineUnaryOp.h
@@ -26,6 +26,10 @@
 
 #include <cmath>
 
+#ifdef __SSE__
+#include <xmmintrin.h>
+#endif
+
 #ifdef __SSE4_1__
 #include <smmintrin.h>
 #endif
@@ -275,6 +279,22 @@ inline float32 sc_floor(float32 x)
 #endif
 }
 
+inline float32 sc_reciprocal(float32 x)
+{
+#ifdef __SSE__
+    // adapted from AP-803 Newton-Raphson Method with Streaming SIMD Extensions
+    // 23 bit accuracy (out of 24bit)
+    const __m128 arg = _mm_set_ss(x);
+    const __m128 approx = _mm_rcp_ss(arg);
+    const __m128 muls = _mm_mul_ss(_mm_mul_ss(arg, approx), approx);
+    const __m128 doubleApprox = _mm_add_ss(approx, approx);
+    const __m128 result = _mm_sub_ss(doubleApprox, muls);
+    return _mm_cvtss_f32(result);
+#else
+    return 1.f/x;
+#endif
+}
+
 inline float32 sc_frac(float32 x)
 {
 	return x - sc_floor(x);
@@ -531,6 +551,12 @@ inline float64 sc_floor(float64 x)
 #endif
 }
 
+inline float64 sc_reciprocal(float64 x)
+{
+    return 1. / x;
+}
+
+
 inline float64 sc_frac(float64 x)
 {
 	return x - sc_floor(x);
diff --git a/include/plugin_interface/SC_InterfaceTable.h b/include/plugin_interface/SC_InterfaceTable.h
index f183501..1687280 100644
--- a/include/plugin_interface/SC_InterfaceTable.h
+++ b/include/plugin_interface/SC_InterfaceTable.h
@@ -21,7 +21,7 @@
 #ifndef _SC_SynthInterfaceTable_
 #define _SC_SynthInterfaceTable_
 
-static const int sc_api_version = 1;
+static const int sc_api_version = 2;
 
 #include "SC_Types.h"
 #include "SC_SndBuf.h"
@@ -32,11 +32,7 @@ static const int sc_api_version = 1;
 #include "SC_Export.h"
 
 #ifndef NO_LIBSNDFILE
-	#ifdef _WIN32
-		#include <sndfile-win.h>
-	#else
-		#include <sndfile.h>
-	#endif
+#include <sndfile.h>
 #endif
 
 struct World;
@@ -226,11 +222,23 @@ typedef struct InterfaceTable InterfaceTable;
 	(*ft->fDefineUnit)(#name, sizeof(name), (UnitCtorFunc)&name##_Ctor, \
 	(UnitDtorFunc)&name##_Dtor, kUnitDef_CantAliasInputsToOutputs);
 
+typedef enum {
+    sc_server_scsynth = 0,
+    sc_server_supernova = 1
+} SC_ServerType;
+
 #ifdef STATIC_PLUGINS
 	#define PluginLoad(name) void name##_Load(InterfaceTable *inTable)
 #else
+	#ifdef SUPERNOVA
+	#define SUPERNOVA_CHECK C_LINKAGE SC_API_EXPORT int server_type(void) { return sc_server_supernova; }
+	#else
+	#define SUPERNOVA_CHECK C_LINKAGE SC_API_EXPORT int server_type(void) { return sc_server_scsynth; }
+	#endif
+
 	#define PluginLoad(name) 														\
-		C_LINKAGE SC_API_EXPORT int api_version(void) { return sc_api_version; }	\
+		C_LINKAGE SC_API_EXPORT int api_version(void) { return sc_api_version; }		\
+		SUPERNOVA_CHECK																\
 		C_LINKAGE SC_API_EXPORT void load(InterfaceTable *inTable)
 #endif
 
diff --git a/include/plugin_interface/SC_PlugIn.hpp b/include/plugin_interface/SC_PlugIn.hpp
new file mode 100644
index 0000000..8a43ff5
--- /dev/null
+++ b/include/plugin_interface/SC_PlugIn.hpp
@@ -0,0 +1,173 @@
+/*
+ *    SuperCollider real time audio synthesis system
+ *    Copyright (c) 2002 James McCartney. All rights reserved.
+ *    Copyright (c) 2011 Tim Blechmann
+ *
+ *    This program is free software; you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation; either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with this program; if not, write to the Free Software
+ *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+#ifndef SC_PLUGIN_HPP
+#define SC_PLUGIN_HPP
+
+#include "SC_PlugIn.h"
+
+// c++ wrapper for Unit struct
+class SCUnit:
+	public Unit
+{
+public:
+	const float * in(int index) const
+	{
+		const Unit * unit = this;
+		return IN(index);
+	}
+
+	const float * zin(int index) const
+	{
+		const Unit * unit = this;
+		return ZIN(index);
+	}
+
+	float const & in0(int index) const
+	{
+		const Unit * unit = this;
+		return IN0(index);
+	}
+
+	float * out(int index) const
+	{
+		const Unit * unit = this;
+		return OUT(index);
+	}
+
+	float * zout(int index) const
+	{
+		const Unit * unit = this;
+		return ZOUT(index);
+	}
+
+	float & out0(int index) const
+	{
+		const Unit * unit = this;
+		return OUT0(index);
+	}
+
+	int inRate(int index) const
+	{
+		const Unit * unit = this;
+		return INRATE(index);
+	}
+
+	int inBufferSize(int index) const
+	{
+		const Unit * unit = this;
+		return INBUFLENGTH(index);
+	}
+
+	/// @{
+	double sampleRate() const
+	{
+		const Unit * unit = this;
+		return SAMPLERATE;
+	}
+
+	double sampleDur() const
+	{
+		const Unit * unit = this;
+		return SAMPLEDUR;
+	}
+
+	int bufferSize() const
+	{
+		return mBufLength;
+	}
+
+	double controlRate() const
+	{
+		const Unit * unit = this;
+		return BUFRATE;
+	}
+
+	double controlDur() const
+	{
+		const Unit * unit = this;
+		return BUFDUR;
+	}
+
+	double fullSampleRate() const
+	{
+		const Unit * unit = this;
+		return FULLRATE;
+	}
+
+	int fullBufferSize() const
+	{
+		const Unit * unit = this;
+		return FULLBUFLENGTH;
+	}
+	/// @}
+
+	template <typename FloatType>
+	FloatType calcSlope(FloatType next, FloatType prev) const
+	{
+		const Unit * unit = this;
+		return CALCSLOPE(next, prev);
+	}
+
+	template <typename UnitType, void (UnitType::*PointerToMember)(int)>
+	static UnitCalcFunc make_calc_function(void)
+	{
+		return &run_member_function<UnitType, PointerToMember>;
+	}
+
+	/// @{
+	/// set calc function & compute initial sample
+	template <typename UnitType, void (UnitType::*PointerToMember)(int)>
+	void set_calc_function(void)
+	{
+		mCalcFunc = make_calc_function<UnitType, PointerToMember>();
+		(mCalcFunc)(this, 1);
+	}
+
+	template <typename UnitType, void (UnitType::*VectorCalcFunc)(int), void (UnitType::*ScalarCalcFunc)(int)>
+	void set_vector_calc_function(void)
+	{
+		mCalcFunc = make_calc_function<UnitType, VectorCalcFunc>();
+		make_calc_function<UnitType, ScalarCalcFunc>()(this, 1);
+	}
+	/// @}
+
+private:
+	template <typename UnitType, void (UnitType::*PointerToMember)(int)>
+	static void run_member_function(struct Unit * unit, int inNumSamples)
+	{
+		UnitType * realUnit = static_cast<UnitType*>(unit);
+		((realUnit)->*(PointerToMember))(inNumSamples);
+	}
+};
+
+// define Ctor/Dtor functions
+#define DEFINE_XTORS(CLASSNAME)         \
+void CLASSNAME##_Ctor(CLASSNAME * unit) \
+{                                       \
+	new(unit) CLASSNAME();              \
+}                                       \
+										\
+void CLASSNAME##_Dtor(CLASSNAME * unit) \
+{                                       \
+	unit->~CLASSNAME();                 \
+}
+
+#endif /* SC_PLUGIN_HPP */
diff --git a/include/plugin_interface/SC_Unit.h b/include/plugin_interface/SC_Unit.h
index f2903f9..9061d2b 100644
--- a/include/plugin_interface/SC_Unit.h
+++ b/include/plugin_interface/SC_Unit.h
@@ -39,7 +39,7 @@ struct Unit
 	struct World *mWorld;
 	struct UnitDef *mUnitDef;
 	struct Graph *mParent;
-	uint16 mNumInputs, mNumOutputs;
+	uint32 mNumInputs, mNumOutputs; // changed from uint16 for synthdef ver 2
 	int16 mCalcRate;
 	int16 mSpecialIndex;		// used by unary and binary ops
 	int16 mParentIndex;
diff --git a/include/plugin_interface/SC_World.h b/include/plugin_interface/SC_World.h
index e37247b..668abdb 100644
--- a/include/plugin_interface/SC_World.h
+++ b/include/plugin_interface/SC_World.h
@@ -109,13 +109,6 @@ struct World
 #endif
 };
 
-extern "C" {
-#ifdef _WIN32
-  __declspec(dllexport)
-#endif //_WIN32
-  int scprintf(const char *fmt, ...);
-}
-
 inline SndBuf* World_GetBuf(struct World *inWorld, uint32 index)
 {
 	if (index > inWorld->mNumSndBufs) index = 0;
diff --git a/include/plugin_interface/Unroll.h b/include/plugin_interface/Unroll.h
index 375844a..a55cf1b 100644
--- a/include/plugin_interface/Unroll.h
+++ b/include/plugin_interface/Unroll.h
@@ -143,6 +143,13 @@ inline void Clear(int numSamples, float *out)
 	memset(out, 0, numSamples * sizeof(float));
 }
 
+inline void Clear(int numSamples, double *out)
+{
+	// The memset approach is valid on any system using IEEE floating-point. On other systems, please check...
+	memset(out, 0, numSamples * sizeof(double));
+}
+
+
 inline void Copy(int numSamples, float *out, float *in)
 {
 	memcpy(out, in, numSamples * sizeof(float));
diff --git a/include/plugin_interface/sc_msg_iter.h b/include/plugin_interface/sc_msg_iter.h
index 5dc4156..2cfc8fc 100644
--- a/include/plugin_interface/sc_msg_iter.h
+++ b/include/plugin_interface/sc_msg_iter.h
@@ -36,7 +36,7 @@ inline const char* OSCstrskip(const char *str)
 }
 
 // returns the number of bytes (including padding) for an OSC string.
-inline int OSCstrlen(const char *strin)
+inline size_t OSCstrlen(const char *strin)
 {
 	return OSCstrskip(strin) - strin;
 }
@@ -82,7 +82,7 @@ struct sc_msg_iter
 	size_t getbsize();
 	void getb(char* outData, size_t inSize);
 	void skipb();
-	int remain() { return endpos - rdpos; }
+	size_t remain() { return endpos - rdpos; }
 
     char nextTag(char defaultTag = 'f') { return tags ? tags[count] : defaultTag; }
 };
diff --git a/include/server/PriorityQueue.h b/include/server/PriorityQueue.h
index 1239ae4..45e963c 100644
--- a/include/server/PriorityQueue.h
+++ b/include/server/PriorityQueue.h
@@ -102,8 +102,7 @@ public:
 	{
 		for (int i=0; i<mSize; ++i)
 		{
-			int j = (i<<1)+1;
-			int k = j+1;
+			// int j = (i<<1)+1;
 			//if (j<mSize && mEvents[i].mTime > mEvents[j].mTime) throw std::runtime_error("priority queue unsorted");
 			//if (k<mSize && mEvents[i].mTime > mEvents[k].mTime) throw std::runtime_error("priority queue unsorted");
 		}
diff --git a/include/server/SC_ComPort.h b/include/server/SC_ComPort.h
deleted file mode 100644
index 99cabce..0000000
--- a/include/server/SC_ComPort.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
-	SuperCollider real time audio synthesis system
-    Copyright (c) 2002 James McCartney. All rights reserved.
-	http://www.audiosynth.com
-
-    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
-*/
-
-
-#ifndef _SC_ComPort_
-#define _SC_ComPort_
-
-#include <sys/types.h>
-#ifdef _WIN32
-# include <winsock2.h>
-#else
-# include <sys/socket.h>
-#endif
-#include "OSC_Packet.h"
-#include "SC_Sem.h"
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SC_CmdPort
-{
-protected:
-	pthread_t mThread;
-	struct World *mWorld;
-
-	void Start();
-	virtual ReplyFunc GetReplyFunc()=0;
-public:
-	SC_CmdPort(struct World *inWorld);
-	virtual ~SC_CmdPort() {}
-
-	virtual void* Run()=0;
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SC_ComPort : public SC_CmdPort
-{
-protected:
-	int mPortNum;
-	int mSocket;
-	struct sockaddr_in mBindSockAddr;
-
-#ifdef USE_RENDEZVOUS
-	pthread_t mRendezvousThread;
-#endif
-
-public:
-	SC_ComPort(struct World *inWorld, int inPortNum);
-	virtual ~SC_ComPort();
-
-	int Socket() { return mSocket; }
-
-	int PortNum() const { return mPortNum; }
-#ifdef USE_RENDEZVOUS
-	// default implementation does nothing (this is correct for
-	// SC_TcpConnectionPort). Subclasses may override.
-	virtual void PublishToRendezvous() {  };
-#endif
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-const size_t kMaxUDPSize = 65535;
-
-class SC_UdpInPort : public SC_ComPort
-{
-protected:
-	struct sockaddr_in mReplySockAddr;
-	unsigned char mReadBuf[kMaxUDPSize];
-	virtual ReplyFunc GetReplyFunc();
-
-public:
-	SC_UdpInPort(struct World *inWorld, int inPortNum);
-	~SC_UdpInPort();
-
-	int PortNum() const { return mPortNum; }
-
-	void* Run();
-#ifdef USE_RENDEZVOUS
-	virtual void PublishToRendezvous();
-#endif
-
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SC_TcpInPort : public SC_ComPort
-{
-        SC_Semaphore mConnectionAvailable;
-        int mBacklog;
-
-protected:
-	virtual ReplyFunc GetReplyFunc();
-
-public:
-	SC_TcpInPort(struct World *inWorld, int inPortNum, int inMaxConnections, int inBacklog);
-
-        virtual void* Run();
-
-        void ConnectionTerminated();
-#ifdef USE_RENDEZVOUS
-	virtual void PublishToRendezvous();
-#endif
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class SC_TcpConnectionPort : public SC_ComPort
-{
-        SC_TcpInPort *mParent;
-		unsigned char mReadBuf[kMaxUDPSize];
-
-protected:
-	virtual ReplyFunc GetReplyFunc();
-
-public:
-	SC_TcpConnectionPort(struct World *inWorld, SC_TcpInPort *inParent, int inSocket);
-        virtual ~SC_TcpConnectionPort();
-
-        virtual void* Run();
-};
-
-#endif
diff --git a/include/server/SC_CoreAudio.h b/include/server/SC_CoreAudio.h
index d130514..d8a1238 100644
--- a/include/server/SC_CoreAudio.h
+++ b/include/server/SC_CoreAudio.h
@@ -159,7 +159,7 @@ protected:
 	double mSmoothSampleRate;
 	double mSampleRate;
 
-    // Driver interface methods, implemented by subclasses
+	// Driver interface methods, implemented by subclasses
 	/**
 	* DriverSetup() should init the driver and write the num of samples per callback
 	* and the sample rate into the two addresses supplied as arguments.
@@ -183,7 +183,7 @@ public:
 	SC_AudioDriver(struct World *inWorld);
 	virtual ~SC_AudioDriver();
 
-    int64 mOSCbuftime;
+	int64 mOSCbuftime;
 
 	bool Setup();
 	bool Start();
@@ -225,7 +225,7 @@ extern SC_AudioDriver* SC_NewAudioDriver(struct World* inWorld);
 class SC_CoreAudioDriver : public SC_AudioDriver
 {
 
-    AudioBufferList * mInputBufList;
+	AudioBufferList * mInputBufList;
 	AudioDeviceID	mInputDevice;
 	AudioDeviceID	mOutputDevice;
 
@@ -253,6 +253,9 @@ protected:
 	virtual bool DriverStart();
 	virtual bool DriverStop();
 
+	AudioDeviceIOProcID mOutputID;
+	AudioDeviceIOProcID mInputID;
+
 public:
 	int builtinoutputflag_; 
 	
@@ -310,7 +313,7 @@ public:
 
 inline SC_AudioDriver* SC_NewAudioDriver(struct World *inWorld)
 {
-    return new SC_iCoreAudioDriver(inWorld);
+	return new SC_iCoreAudioDriver(inWorld);
 }
 #endif // SC_AUDIO_API_COREAUDIOIPHONE
 
@@ -319,13 +322,13 @@ inline SC_AudioDriver* SC_NewAudioDriver(struct World *inWorld)
 class SC_PortAudioDriver : public SC_AudioDriver
 {
 
-    int mInputChannelCount, mOutputChannelCount;
-    PaStream *mStream;
+	int mInputChannelCount, mOutputChannelCount;
+	PaStream *mStream;
 	PaTime mPaStreamStartupTime;
 	int64 mPaStreamStartupTimeOSC;
 
 protected:
-    // Driver interface methods
+	// Driver interface methods
 	virtual bool DriverSetup(int* outNumSamplesPerCallback, double* outSampleRate);
 	virtual bool DriverStart();
 	virtual bool DriverStop();
@@ -334,7 +337,7 @@ public:
     SC_PortAudioDriver(struct World *inWorld);
 	virtual ~SC_PortAudioDriver();
 
-    int PortAudioCallback( const void *input, void *output,
+	int PortAudioCallback( const void *input, void *output,
             unsigned long frameCount, const PaStreamCallbackTimeInfo* timeInfo,
             PaStreamCallbackFlags statusFlags );
 private:
diff --git a/include/server/SC_Prototypes.h b/include/server/SC_Prototypes.h
index 13db5e6..16a3988 100644
--- a/include/server/SC_Prototypes.h
+++ b/include/server/SC_Prototypes.h
@@ -23,6 +23,8 @@
 #define _SC_Prototypes_
 
 #include <ctype.h> // for size_t
+#include <cstdlib>
+#include <cstring>
 
 #include "SC_Types.h"
 #include "scsynthsend.h"
@@ -194,7 +196,6 @@ void SendDoneWithIntValue(struct ReplyAddress *inReply, const char *inCommandNam
 void SendFailure(struct ReplyAddress *inReply, const char *inCommandName, const char *errString);
 void SendFailureWithBufnum(struct ReplyAddress *inReply, const char *inCommandName, const char *errString, uint32 index);
 void ReportLateness(struct ReplyAddress *inReply, float32 seconds);
-void DumpReplyAddress(struct ReplyAddress *inReplyAddress);
 int32 Hash(struct ReplyAddress *inReplyAddress);
 
 ////////////////////////////////////////////////////////////////////////
diff --git a/include/server/SC_SequencedCommand.h b/include/server/SC_SequencedCommand.h
index f962ce2..fdd9801 100644
--- a/include/server/SC_SequencedCommand.h
+++ b/include/server/SC_SequencedCommand.h
@@ -34,11 +34,7 @@
 #include "SC_BufGen.h"
 #include "sc_msg_iter.h"
 #ifndef NO_LIBSNDFILE
-	#ifdef _WIN32
-		#include <sndfile-win.h>
-	#else
-		#include <sndfile.h>
-	#endif
+#include <sndfile.h>
 #endif
 #include <new>
 
diff --git a/include/server/SC_UnitSpec.h b/include/server/SC_UnitSpec.h
index 127ad6b..c334799 100644
--- a/include/server/SC_UnitSpec.h
+++ b/include/server/SC_UnitSpec.h
@@ -29,7 +29,7 @@ struct UnitSpec
 {
 	struct UnitDef* mUnitDef;
 	int16 mCalcRate;
-	uint16 mNumInputs, mNumOutputs;
+	uint32 mNumInputs, mNumOutputs; // changed from uint16, ver 2
 	int16 mSpecialIndex;
 	struct InputSpec* mInputSpec;
 	struct OutputSpec* mOutputSpec;
diff --git a/include/server/SC_WireSpec.h b/include/server/SC_WireSpec.h
index 91f20da..36dcc7d 100644
--- a/include/server/SC_WireSpec.h
+++ b/include/server/SC_WireSpec.h
@@ -26,10 +26,10 @@
 struct InputSpec
 {
 	// read from file:
-	int16 mFromUnitIndex;
-	int16 mFromOutputIndex;
+	int32 mFromUnitIndex; // changed from int16, ver 2
+	int32 mFromOutputIndex; // changed from int16, ver 2
 	// computed:
-	int16 mWireIndex;
+	int32 mWireIndex; // changed from int16, ver 2
 };
 typedef struct InputSpec InputSpec;
 
@@ -38,9 +38,9 @@ struct OutputSpec
 	// read from file:
 	int16 mCalcRate;
 	// computed:
-	int16 mWireIndex;
-	int16 mBufferIndex;
-	int16 mNumConsumers;
+	int32 mWireIndex; // changed from uint16, ver 2
+	int64 mBufferIndex;
+	uint32 mNumConsumers;
 };
 typedef struct OutputSpec OutputSpec;
 
diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt
index 5930fc1..140f10d 100644
--- a/lang/CMakeLists.txt
+++ b/lang/CMakeLists.txt
@@ -2,9 +2,12 @@ include_directories(${CMAKE_SOURCE_DIR}/include/common
                     ${CMAKE_SOURCE_DIR}/include/lang
                     ${CMAKE_SOURCE_DIR}/include/plugin_interface
                     ${CMAKE_SOURCE_DIR}/include/server
-                    ${CMAKE_SOURCE_DIR}/external_libraries/boost_lockfree
+                    ${CMAKE_SOURCE_DIR}/common
+
+                    ${YAMLCPP_INCLUDE_DIR}
+
+                    ${CMAKE_SOURCE_DIR}/external_libraries/boost-lockfree
                     ${CMAKE_SOURCE_DIR}/external_libraries/threadpool
-                    ${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.3.0/include
                     ${CMAKE_SOURCE_DIR}/external_libraries/TLSF-2.4.6/src
                     LangSource/Bison)
 
@@ -49,7 +52,6 @@ set(sclang_sources
 	LangSource/DumpParseNode.cpp
 	LangSource/GC.cpp
 	LangSource/InitAlloc.cpp
-	LangSource/PyrFileUtils.cpp
 	LangSource/PyrInterpreter3.cpp
 	LangSource/PyrLexer.cpp
 	LangSource/PyrMathOps.cpp
@@ -60,7 +62,7 @@ set(sclang_sources
 	LangSource/PyrSignal.cpp
 	LangSource/PyrSymbolTable.cpp
 	LangSource/SC_LanguageClient.cpp
-	LangSource/SC_LibraryConfig.cpp
+	LangSource/SC_LanguageConfig.cpp
 	LangSource/SC_TerminalClient.cpp
 	LangSource/Samp.cpp
 	LangSource/SimpleStack.cpp
@@ -70,23 +72,27 @@ set(sclang_sources
 	${CMAKE_SOURCE_DIR}/common/fftlib.c
 	${CMAKE_SOURCE_DIR}/common/SC_AllocPool.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_DirUtils.cpp
+	${CMAKE_SOURCE_DIR}/common/SC_Reply.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_Sem.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_StandAloneInfo_Darwin.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_StringBuffer.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_StringParser.cpp
+	${CMAKE_SOURCE_DIR}/common/SC_TextUtils.cpp
+
 	${CMAKE_SOURCE_DIR}/common/scsynthsend.cpp
 	${CMAKE_SOURCE_DIR}/common/sc_popen.cpp
 )
 
 if (NOT Boost_FOUND)
 	file(GLOB boost_system_sources ../external_libraries/boost/libs/system/src/*cpp)
-	file(GLOB boost_fs_sources ../external_libraries/boost/libs/filesystem/v3/src/*cpp)
+	file(GLOB boost_fs_sources ../external_libraries/boost/libs/filesystem/src/*cpp)
 	file(GLOB boost_regex_sources ../external_libraries/boost/libs/regex/src/*cpp)
 	list(APPEND sclang_sources ${boost_fs_sources} ${boost_system_sources} ${boost_regex_sources})
 endif()
 
-file(GLOB yaml_sources ../external_libraries/yaml-cpp-0.3.0/src/*cpp)
-list(APPEND sclang_sources ${yaml_sources})
+file(GLOB_RECURSE headers ../include/*.h* )
+file(GLOB_RECURSE external_headers ../external_libraries/*.h* )
+list(APPEND sclang_sources ${headers} ${external_headers}) # make qt creator happy
 
 if(NOT WIN32)
 	list(APPEND sclang_sources LangPrimSource/PyrSerialPrim.cpp)
@@ -159,7 +165,7 @@ if (SC_WII OR APPLE)
 			include_directories(${CWIID_INCLUDE_DIRS} ${BLUETOOTH_INCLUDE_DIRS})
 			message(STATUS "Compiling with WiiMote support")
 		else()
-			message(SEND_ERROR "Cannot find libcwiid or libbluetooth")
+			message(SEND_ERROR "Cannot find libcwiid or libbluetooth.\n (If Wii support is not required, then set SC_WII=no)")
 		endif()
 	elseif(APPLE)
 		add_definitions(-DHAVE_WII)
@@ -171,6 +177,10 @@ endif()
 include(../SCDoc/CMakeLists.txt)
 list(APPEND sclang_sources ${SCDOC_SRCS})
 
+if(SC_IDE)
+	add_definitions(-DSC_IDE)
+	list(APPEND sclang_sources ../editors/sc-ide/primitives/sc_ipc_client.cpp)
+endif()
 
 if(SC_QT)
 	set(QT_COLLIDER_LANG_CLIENT ON)
@@ -180,7 +190,7 @@ endif()
 
 if(0 AND FINAL_BUILD) # sclang final-builds are broken
 	CREATE_FINAL_FILE(libsclang_final.cpp ${sclang_sources})
-	add_library(libsclang SHARED libsclang_final.cpp ${sclang_parser_source})
+	add_library(libsclang STATIC libsclang_final.cpp ${sclang_parser_source})
 else()
 	add_library(libsclang STATIC ${sclang_sources} ${sclang_parser_source})
 endif()
@@ -268,7 +278,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
 	target_link_libraries(libsclang rt)
 endif()
 
-target_link_libraries(libsclang ${PTHREADS_LIBRARY})
+target_link_libraries(libsclang ${PTHREADS_LIBRARY} ${YAMLCPP_LIBRARY})
 
 if(SC_QT)
 	target_link_libraries(libsclang ${QT_COLLIDER_LIBS})
@@ -284,7 +294,7 @@ endif()
 
 set_property(TARGET sclang
 	APPEND
-	PROPERTY COMPILE_DEFINITIONS USE_SC_TERMINAL_CLIENT)
+	PROPERTY COMPILE_DEFINITIONS USE_SC_TERMINAL_CLIENT BUILDING_SUPERCOLLIDER)
 
 if(LTO)
 	set_property(TARGET sclang libsclang
@@ -307,7 +317,6 @@ elseif(WIN32)
 			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
 else()
 	install(TARGETS sclang
-			LIBRARY DESTINATION "lib"
 			RUNTIME DESTINATION "bin"
 			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
 endif()
diff --git a/lang/LangPrimSource/OSCData.cpp b/lang/LangPrimSource/OSCData.cpp
index e926969..f868ce7 100644
--- a/lang/LangPrimSource/OSCData.cpp
+++ b/lang/LangPrimSource/OSCData.cpp
@@ -211,20 +211,6 @@ static int addMsgSlotWithTags(big_scpacket *packet, PyrSlot *slot)
 	return errNone;
 }
 
-static int makeSynthMsg(big_scpacket *packet, PyrSlot *slots, int size)
-{
-	packet->BeginMsg();
-
-	for (int i=0; i<size; ++i) {
-		int error = addMsgSlot(packet, slots+i);
-		if (error != errNone)
-			return error;
-	}
-
-	packet->EndMsg();
-	return errNone;
-}
-
 static int makeSynthMsgWithTags(big_scpacket *packet, PyrSlot *slots, int size)
 {
 	packet->BeginMsg();
@@ -363,7 +349,7 @@ int netAddrSend(PyrObject *netAddrObj, int msglen, char *bufptr, bool sendMsgLen
 
 ///////////
 
-inline int OSCStrLen(char *str)
+inline size_t OSCStrLen(char *str)
 {
 	return (strlen(str) + 4) & ~3;
 }
@@ -1345,7 +1331,7 @@ void init_OSC_primitives()
 	definePrimitive(base, index++, "_ServerShmInterface_getControlBusValues", prGetControlBusValues, 3, 0);
 
 	definePrimitive(base, index++, "_ServerShmInterface_setControlBusValue", prSetControlBusValue, 3, 0);
-	definePrimitive(base, index++, "_ServerShmInterface_setControlBusValues", prSetControlBusValues, 4, 0);
+	definePrimitive(base, index++, "_ServerShmInterface_setControlBusValues", prSetControlBusValues, 3, 0);
 
 	//post("initOSCRecs###############\n");
 	s_call = getsym("call");
diff --git a/lang/LangPrimSource/PyrArrayPrimitives.cpp b/lang/LangPrimSource/PyrArrayPrimitives.cpp
index ccac012..32de569 100644
--- a/lang/LangPrimSource/PyrArrayPrimitives.cpp
+++ b/lang/LangPrimSource/PyrArrayPrimitives.cpp
@@ -1,21 +1,21 @@
 /*
 	SuperCollider real time audio synthesis system
-    Copyright (c) 2002 James McCartney. All rights reserved.
+	Copyright (c) 2002 James McCartney. All rights reserved.
 	http://www.audiosynth.com
 
-    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 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.
+	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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+	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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 */
 /*
 
@@ -115,7 +115,7 @@ int basicSwap(struct VMGlobals *g, int numArgsPushed)
 	if (NotInt(b)) return errIndexNotAnInteger;
 	if (NotInt(c)) return errIndexNotAnInteger;
 	obj = slotRawObject(a);
-	if (obj->obj_flags & obj_immutable) return errImmutableObject;
+	if (obj->IsImmutable()) return errImmutableObject;
 	if (!(slotRawInt(&obj->classptr->classFlags) & classHasIndexableInstances))
 		return errNotAnIndexableObject;
 	i = slotRawInt(b);
@@ -194,7 +194,7 @@ int basicRemoveAt(struct VMGlobals *g, int numArgsPushed)
 	if (err) return errWrongType;
 
 	obj = slotRawObject(a);
-	if (obj->obj_flags & obj_immutable) return errImmutableObject;
+	if (obj->IsImmutable()) return errImmutableObject;
 	if (!(slotRawInt(&obj->classptr->classFlags) & classHasIndexableInstances))
 		return errNotAnIndexableObject;
 
@@ -263,7 +263,7 @@ int basicTakeAt(struct VMGlobals *g, int numArgsPushed)
 	if (err) return errWrongType;
 
 	obj = slotRawObject(a);
-	if (obj->obj_flags & obj_immutable) return errImmutableObject;
+	if (obj->IsImmutable()) return errImmutableObject;
 	if (!(slotRawInt(&obj->classptr->classFlags) & classHasIndexableInstances))
 		return errNotAnIndexableObject;
 
@@ -453,6 +453,7 @@ int basicPut(struct VMGlobals *g, int numArgsPushed)
 	c = g->sp;
 
 	obj = slotRawObject(a);
+	if (obj->IsImmutable()) return errImmutableObject;
 	if (!(slotRawInt(&obj->classptr->classFlags) & classHasIndexableInstances))
 		return errNotAnIndexableObject;
 
@@ -489,6 +490,7 @@ int basicClipPut(struct VMGlobals *g, int numArgsPushed)
 	c = g->sp;
 
 	obj = slotRawObject(a);
+	if (obj->IsImmutable()) return errImmutableObject;
 	if (!(slotRawInt(&obj->classptr->classFlags) & classHasIndexableInstances))
 		return errNotAnIndexableObject;
 
@@ -525,6 +527,7 @@ int basicWrapPut(struct VMGlobals *g, int numArgsPushed)
 	c = g->sp;
 
 	obj = slotRawObject(a);
+	if (obj->IsImmutable()) return errImmutableObject;
 	if (!(slotRawInt(&obj->classptr->classFlags) & classHasIndexableInstances))
 		return errNotAnIndexableObject;
 
@@ -561,6 +564,7 @@ int basicFoldPut(struct VMGlobals *g, int numArgsPushed)
 	c = g->sp;
 
 	obj = slotRawObject(a);
+	if (obj->IsImmutable()) return errImmutableObject;
 	if (!(slotRawInt(&obj->classptr->classFlags) & classHasIndexableInstances))
 		return errNotAnIndexableObject;
 
@@ -596,6 +600,7 @@ int prArrayPutEach(struct VMGlobals *g, int numArgsPushed)
 	c = g->sp;
 
 	obj = slotRawObject(a);
+	if (obj->IsImmutable()) return errImmutableObject;
 	if (!(slotRawInt(&obj->classptr->classFlags) & classHasIndexableInstances))
 		return errNotAnIndexableObject;
 
@@ -673,6 +678,7 @@ int prArrayAssocPut(struct VMGlobals *g, int numArgsPushed)
 	c = g->sp;
 
 	obj = slotRawObject(a);
+	if (obj->IsImmutable()) return errImmutableObject;
 
 	int size = obj->size;
 	if (obj->obj_format == obj_slot) {
@@ -753,6 +759,7 @@ int prArrayPutSeries(struct VMGlobals *g, int numArgsPushed)
 	e = g->sp;
 
 	PyrObject *inobj = slotRawObject(a);
+	if (inobj->IsImmutable()) return errImmutableObject;
 
 	int size = inobj->size;
 
@@ -801,11 +808,9 @@ int prArrayPutSeries(struct VMGlobals *g, int numArgsPushed)
 }
 
 
-int prArrayAdd(struct VMGlobals *g, int numArgsPushed);
 int prArrayAdd(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b, *slots;
-	PyrObject *array;
 	int maxelems, elemsize, format, tag, numbytes;
 	int err, ival;
 	double fval;
@@ -813,8 +818,9 @@ int prArrayAdd(struct VMGlobals *g, int numArgsPushed)
 	a = g->sp - 1;
 	b = g->sp;
 
-	array = slotRawObject(a);
-	if (array->obj_flags & obj_immutable) return errImmutableObject;
+	PyrObject *array = slotRawObject(a);
+	if (array->IsImmutable()) return errImmutableObject;
+
 	format = slotRawObject(a)->obj_format;
 	tag = gFormatElemTag[format];
 	/*if (tag > 0) {
@@ -824,7 +830,7 @@ int prArrayAdd(struct VMGlobals *g, int numArgsPushed)
 	} // else format is obj_slot, any tag is acceptable*/
 	elemsize = gFormatElemSize[format];
 	maxelems = MAXINDEXSIZE(array);
-	if (array->size >= maxelems) {
+	if (array->size >= maxelems || array->IsImmutable()) {
 		numbytes = sizeof(PyrSlot) << (array->obj_sizeclass + 1);
 		array = g->gc->New(numbytes, 0, format, true);
 		array->classptr = slotRawObject(a)->classptr;
@@ -875,14 +881,11 @@ int prArrayAdd(struct VMGlobals *g, int numArgsPushed)
 	return errNone;
 }
 
-
-int prArrayInsert(struct VMGlobals *g, int numArgsPushed);
 int prArrayInsert(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b, *c, *slots1, *slots2;
 	PyrObject *array, *oldarray;
-	int maxelems, elemsize, format, tag;
-	int err, ival, size, index, remain, numbytes;
+	int err, ival;
 	double fval;
 
 	a = g->sp - 2;	// array
@@ -891,21 +894,20 @@ int prArrayInsert(struct VMGlobals *g, int numArgsPushed)
 	if (NotInt(b)) return errWrongType;
 
 	array = slotRawObject(a);
-	if (array->obj_flags & obj_immutable) return errImmutableObject;
-	format = slotRawObject(a)->obj_format;
-	tag = gFormatElemTag[format];
+	const int format = slotRawObject(a)->obj_format;
+	const int tag = gFormatElemTag[format];
 
-	size = array->size;
-	index = slotRawInt(b);
+	const int size = array->size;
+	int index = slotRawInt(b);
 	index = sc_clip(index, 0, size);
-	remain = size - index;
+	const int remain = size - index;
 
-	elemsize = gFormatElemSize[format];
-	maxelems = MAXINDEXSIZE(array);
-	if (size+1 > maxelems) {
+	const int elemsize = gFormatElemSize[format];
+	const int maxelems = MAXINDEXSIZE(array);
+	if (size+1 > maxelems || array->IsImmutable()) {
 		oldarray = array;
 
-		numbytes = sizeof(PyrSlot) << (array->obj_sizeclass + 1);
+		const int numbytes = sizeof(PyrSlot) << (array->obj_sizeclass + 1);
 		array = g->gc->New(numbytes, 0, format, true);
 
 		array->classptr = oldarray->classptr;
@@ -914,9 +916,8 @@ int prArrayInsert(struct VMGlobals *g, int numArgsPushed)
 		SetRaw(a, array);
 		slots1 = array->slots;
 		slots2 = oldarray->slots;
-		if (index) {
+		if (index)
 			memcpy(slots1, slots2, index * elemsize);
-		}
 
 		switch (format) {
 			case obj_slot :
@@ -1062,7 +1063,7 @@ int prArrayInsert(struct VMGlobals *g, int numArgsPushed)
 	return errNone;
 }
 
-int prArrayFill(struct VMGlobals *g, int numArgsPushed);
+
 int prArrayFill(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b, *slots;
@@ -1088,7 +1089,7 @@ int prArrayFill(struct VMGlobals *g, int numArgsPushed)
 	slots = array->slots;
 	switch (format) {
 		case obj_slot :
-			if (array->obj_flags & obj_immutable) return errImmutableObject;
+			if (array->IsImmutable()) return errImmutableObject;
 			for (i=0; i<array->size; ++i) {
 				slotCopy(&slots[i],b);
 			}
@@ -1147,7 +1148,6 @@ int prArrayFill(struct VMGlobals *g, int numArgsPushed)
 	return errNone;
 }
 
-int prArrayPop(struct VMGlobals *g, int numArgsPushed);
 int prArrayPop(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *slots;
@@ -1159,7 +1159,7 @@ int prArrayPop(struct VMGlobals *g, int numArgsPushed)
 	a = g->sp;
 
 	array = slotRawObject(a);
-	if (array->obj_flags & obj_immutable) return errImmutableObject;
+	if (array->IsImmutable()) return errImmutableObject;
 	if (array->size > 0) {
 		format = array->obj_format;
 		slots = array->slots;
@@ -1200,7 +1200,7 @@ int prArrayPop(struct VMGlobals *g, int numArgsPushed)
 	return errNone;
 }
 
-int prArrayExtend(struct VMGlobals *g, int numArgsPushed);
+
 int prArrayExtend(struct VMGlobals *g, int numArgsPushed)
 {
 	int numbytes, elemsize, format;
@@ -1208,7 +1208,7 @@ int prArrayExtend(struct VMGlobals *g, int numArgsPushed)
 
 	PyrSlot *a = g->sp - 2; // array
 	PyrSlot *b = g->sp - 1; // size
-    PyrSlot *c = g->sp;     // filler item
+	PyrSlot *c = g->sp;     // filler item
 
 
 	if (NotInt(b)) return errWrongType;
@@ -1218,9 +1218,9 @@ int prArrayExtend(struct VMGlobals *g, int numArgsPushed)
 		return errNone;
 	}
 
-    format = aobj->obj_format;
-    if (slotRawInt(b) > MAXINDEXSIZE(aobj)) {
-        elemsize = gFormatElemSize[format];
+	format = aobj->obj_format;
+	if (slotRawInt(b) > MAXINDEXSIZE(aobj) || aobj->IsImmutable()) {
+		elemsize = gFormatElemSize[format];
 		numbytes = slotRawInt(b) * elemsize;
 
 		PyrObject *obj = g->gc->New(numbytes, 0, format, true);
@@ -1228,7 +1228,7 @@ int prArrayExtend(struct VMGlobals *g, int numArgsPushed)
 		obj->size = aobj->size;
 		memcpy(obj->slots, aobj->slots, aobj->size * elemsize);
 		aobj = obj;
-        SetRaw(a, aobj);
+		SetRaw(a, aobj);
 	}
 
 
@@ -1289,7 +1289,6 @@ int prArrayExtend(struct VMGlobals *g, int numArgsPushed)
 	return errNone;
 }
 
-int prArrayGrow(struct VMGlobals *g, int numArgsPushed);
 int prArrayGrow(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b;
@@ -1318,7 +1317,6 @@ int prArrayGrow(struct VMGlobals *g, int numArgsPushed)
 	return errNone;
 }
 
-int prArrayGrowClear(struct VMGlobals *g, int numArgsPushed);
 int prArrayGrowClear(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b;
@@ -1332,7 +1330,7 @@ int prArrayGrowClear(struct VMGlobals *g, int numArgsPushed)
 	if (slotRawInt(b) <= 0) return errNone;
 	aobj = slotRawObject(a);
 
-	if (aobj->size + slotRawInt(b) <= MAXINDEXSIZE(aobj)) {
+	if (aobj->size + slotRawInt(b) <= MAXINDEXSIZE(aobj) && aobj->IsMutable()) {
 		obj = aobj;
 	} else {
 		format = aobj->obj_format;
@@ -1356,7 +1354,6 @@ int prArrayGrowClear(struct VMGlobals *g, int numArgsPushed)
 	return errNone;
 }
 
-int prArrayCat(struct VMGlobals *g, int numArgsPushed);
 int prArrayCat(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b;
@@ -1388,7 +1385,6 @@ int prArrayCat(struct VMGlobals *g, int numArgsPushed)
 }
 
 
-int prArrayAddAll(struct VMGlobals *g, int numArgsPushed);
 int prArrayAddAll(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b;
@@ -1401,6 +1397,7 @@ int prArrayAddAll(struct VMGlobals *g, int numArgsPushed)
 
 	if (NotObj(b) || slotRawObject(a)->classptr != slotRawObject(b)->classptr) return errWrongType;
 	aobj = slotRawObject(a);
+
 	format = aobj->obj_format;
 	elemsize = gFormatElemSize[format];
 	asize = aobj->size;
@@ -1408,25 +1405,22 @@ int prArrayAddAll(struct VMGlobals *g, int numArgsPushed)
 	newindexedsize = asize + bsize;
 	newsizebytes = newindexedsize * elemsize;
 
-	if (newindexedsize > MAXINDEXSIZE(aobj)) {
+	if (newindexedsize > MAXINDEXSIZE(aobj) || aobj->IsImmutable()) {
 		obj = g->gc->New(newsizebytes, 0, format, true);
 		obj->classptr = aobj->classptr;
 		memcpy(obj->slots, aobj->slots, asize * elemsize);
 		SetObject(a, obj);
 	} else {
 		obj = aobj;
-		if (format == obj_slot && !g->gc->ObjIsGrey(obj)) {
+		if (format == obj_slot && !g->gc->ObjIsGrey(obj))
 			g->gc->ToGrey(obj);
-		}
 	}
 	obj->size = newindexedsize;
-	memcpy((char*)obj->slots + asize * elemsize,
-		slotRawObject(b)->slots, bsize * elemsize);
+	memcpy((char*)obj->slots + asize * elemsize, slotRawObject(b)->slots, bsize * elemsize);
 	return errNone;
 }
 
 
-int prArrayOverwrite(struct VMGlobals *g, int numArgsPushed);
 int prArrayOverwrite(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b, *c;
@@ -1452,20 +1446,19 @@ int prArrayOverwrite(struct VMGlobals *g, int numArgsPushed)
 	newindexedsize = sc_max(asize, newindexedsize);
 	newsizebytes = newindexedsize * elemsize;
 
-	if (newindexedsize > MAXINDEXSIZE(aobj)) {
+	if (newindexedsize > MAXINDEXSIZE(aobj) || aobj->IsImmutable()) {
 		obj = g->gc->New(newsizebytes, 0, format, true);
 		obj->classptr = aobj->classptr;
 		memcpy(obj->slots, aobj->slots, asize * elemsize);
 		SetObject(a, obj);
 	} else {
 		obj = aobj;
-		if (format == obj_slot && !g->gc->ObjIsGrey(obj)) {
+		if (format == obj_slot && !g->gc->ObjIsGrey(obj))
 			g->gc->ToGrey(obj);
-		}
+
 	}
 	obj->size = newindexedsize;
-	memcpy((char*)(obj->slots) + pos * elemsize,
-		slotRawObject(b)->slots, bsize * elemsize);
+	memcpy((char*)(obj->slots) + pos * elemsize, slotRawObject(b)->slots, bsize * elemsize);
 
 	return errNone;
 }
@@ -1651,8 +1644,12 @@ int prArrayExtendWrap(struct VMGlobals *g, int numArgsPushed)
 	b = g->sp;
 	if (NotInt(b)) return errWrongType;
 
-	obj1 = slotRawObject(a);
 	size = slotRawInt(b);
+	if (size < 0)
+		return errFailed;
+
+	obj1 = slotRawObject(a);
+
 	if(obj1->size > 0) {
 		obj2 = instantiateObject(g->gc, obj1->classptr, size, false, true);
 		obj2->size = size;
@@ -1683,8 +1680,11 @@ int prArrayExtendFold(struct VMGlobals *g, int numArgsPushed)
 	b = g->sp;
 	if (NotInt(b)) return errWrongType;
 
-	obj1 = slotRawObject(a);
 	size = slotRawInt(b);
+	if (size < 0)
+		return errFailed;
+
+	obj1 = slotRawObject(a);
 	if(obj1->size > 0) {
 		obj2 = instantiateObject(g->gc, obj1->classptr, size, false, true);
 		obj2->size = size;
@@ -1715,8 +1715,11 @@ int prArrayExtendLast(struct VMGlobals *g, int numArgsPushed)
 	b = g->sp;
 	if (NotInt(b)) return errWrongType;
 
-	obj1 = slotRawObject(a);
 	size = slotRawInt(b);
+	if (size < 0)
+		return errFailed;
+
+	obj1 = slotRawObject(a);
 	if(obj1->size > 0) {
 		obj2 = instantiateObject(g->gc, obj1->classptr, size, false, true);
 		obj2->size = size;
@@ -1727,9 +1730,9 @@ int prArrayExtendLast(struct VMGlobals *g, int numArgsPushed)
 			// copy second part
 			m = obj1->size;
 			slotCopy(&last,&slots[m-1]);
-			for (i=0,j=m; j<size; ++i,++j) {
+			for (i=0,j=m; j<size; ++i,++j)
 				slotCopy(&slots[j],&last);
-			}
+
 		}
 	} else {
 		obj2 = instantiateObject(g->gc, obj1->classptr, size, true, true);
@@ -1970,7 +1973,7 @@ int prArraySlide(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b, *c, *slots;
 	PyrObject *obj1, *obj2;
-	int h, i, j, k, n, m, numslots, numwin;
+	int h, i, j, k, numslots, numwin;
 
 	a = g->sp - 2;
 	b = g->sp - 1;
@@ -1980,15 +1983,17 @@ int prArraySlide(struct VMGlobals *g, int numArgsPushed)
 
 	obj1 = slotRawObject(a);
 	slots = obj1->slots;
-	m = slotRawInt(b);
-	n = slotRawInt(c);
+	int m = slotRawInt(b);
+	int n = slotRawInt(c);
+	if (n <= 0)
+		return errFailed;
+
 	numwin = (obj1->size + n - m) / n;
 	numslots = numwin * m;
 	obj2 = instantiateObject(g->gc, obj1->classptr, numslots, false, true);
 	for (i=h=k=0; i<numwin; ++i,h+=n) {
-		for (j=h; j<m+h; ++j) {
+		for (j=h; j<m+h; ++j)
 			slotCopy(&obj2->slots[k++],&slots[j]);
-		}
 	}
 	obj2->size = k;
 	SetRaw(a, obj2);
@@ -2356,7 +2361,6 @@ int prArrayUnlace(struct VMGlobals *g, int numArgsPushed)
 	return errNone;
 }
 
-void initArrayPrimitives();
 void initArrayPrimitives()
 {
 	int base, index;
diff --git a/lang/LangPrimSource/PyrFilePrim.cpp b/lang/LangPrimSource/PyrFilePrim.cpp
index 3155f4c..719ae64 100644
--- a/lang/LangPrimSource/PyrFilePrim.cpp
+++ b/lang/LangPrimSource/PyrFilePrim.cpp
@@ -29,15 +29,18 @@ Primitives for File i/o.
 #include "PyrPrimitive.h"
 #include "PyrSymbol.h"
 #include "PyrFilePrim.h"
-#include "PyrFileUtils.h"
 #include "ReadWriteMacros.h"
 #include "SCBase.h"
 #include "SC_DirUtils.h"
+#include "sc_popen.h"
+
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
 #include <cerrno>
 
+#include "../../common/SC_SndFileHelpers.hpp"
+
 #ifdef NOCLASSIC
 #include <TextUtils.h>
 #include <Navigation.h>
@@ -48,7 +51,6 @@ Primitives for File i/o.
 #else
 # include <direct.h>
 # include <malloc.h>
-# define strcasecmp stricmp
 #endif
 
 #ifdef _WIN32
@@ -75,8 +77,6 @@ Primitives for File i/o.
 
 #define DELIMITOR ':'
 
-bool filelen(FILE *file, size_t *length);
-
 int prFileDelete(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a = g->sp - 1, *b = g->sp;
@@ -161,7 +161,7 @@ int prFileRealPath(struct VMGlobals* g, int numArgsPushed )
 
 int prFileMkDir(struct VMGlobals * g, int numArgsPushed)
 {
-	PyrSlot *a = g->sp - 1, *b = g->sp;
+	PyrSlot *b = g->sp;
 	char filename[PATH_MAX];
 
 	int error = slotStrVal(b, filename, PATH_MAX);
@@ -178,7 +178,7 @@ int prFileMkDir(struct VMGlobals * g, int numArgsPushed)
 
 int prFileCopy(struct VMGlobals * g, int numArgsPushed)
 {
-	PyrSlot *a = g->sp - 2, *b = g->sp - 1, *c = g->sp;
+	PyrSlot *b = g->sp - 1, *c = g->sp;
 	char filename1[PATH_MAX];
 	char filename2[PATH_MAX];
 	int error;
@@ -189,7 +189,7 @@ int prFileCopy(struct VMGlobals * g, int numArgsPushed)
 	if (error != errNone)
 		return error;
 
-	boost::filesystem3::copy(filename1, filename2);
+	boost::filesystem::copy(filename1, filename2);
 	return errNone;
 }
 
@@ -332,7 +332,7 @@ int prFilePos(struct VMGlobals *g, int numArgsPushed)
 	if (file == NULL) return errFailed;
 	if (fgetpos(file, &pos)) return errFailed;
 
-#ifdef SC_LINUX
+#ifdef __linux__
 	// sk: hack alert!
 	length = pos.__pos;
 #else
@@ -345,19 +345,18 @@ int prFilePos(struct VMGlobals *g, int numArgsPushed)
 
 int prFileLength(struct VMGlobals *g, int numArgsPushed)
 {
-	PyrSlot *a;
-	PyrFile *pfile;
-	FILE *file;
-	fpos_t pos;
-	size_t length;
+	PyrSlot * a = g->sp;
+	PyrFile *pfile = (PyrFile*)slotRawObject(a);
+	FILE *file = (FILE*)slotRawPtr(&pfile->fileptr);
 
-	a = g->sp;
-	pfile = (PyrFile*)slotRawObject(a);
-	file = (FILE*)slotRawPtr(&pfile->fileptr);
 	if (file == NULL) return errFailed;
+
 	// preserve file position
+	fpos_t pos;
 	if (fgetpos(file, &pos)) return errFailed;
-	if (filelen(file, &length)) return errFailed;
+	if (fseek(file, 0, SEEK_END)) return errFailed;
+	size_t length;
+	length = ftell(file);
 	if (fsetpos(file, &pos)) return errFailed;
 
 	SetInt(a, length);
@@ -632,9 +631,9 @@ int prFilePutInt32(struct VMGlobals *g, int numArgsPushed)
 	file = (FILE*)slotRawPtr(&pfile->fileptr);
 	if (file == NULL) return errFailed;
 
-        int val;
-        int err = slotIntVal(b, &val);
-        if (err) return err;
+	int val;
+	int err = slotIntVal(b, &val);
+	if (err) return err;
 
 	SC_IOStream<FILE*> scio(file);
 	scio.writeInt32_be(val);
@@ -680,9 +679,9 @@ int prFilePutInt32LE(struct VMGlobals *g, int numArgsPushed)
 	file = (FILE*)slotRawPtr(&pfile->fileptr);
 	if (file == NULL) return errFailed;
 
-        int val;
-        int err = slotIntVal(b, &val);
-        if (err) return err;
+	int val;
+	int err = slotIntVal(b, &val);
+	if (err) return err;
 
 	SC_IOStream<FILE*> scio(file);
 	scio.writeInt32_le(val);
@@ -1265,7 +1264,6 @@ int prFileGetcwd(struct VMGlobals *g, int numArgsPushed)
 
 ////////
 
-#ifndef SC_WIN32
 int prPipeOpen(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b, *c;
@@ -1290,14 +1288,14 @@ int prPipeOpen(struct VMGlobals *g, int numArgsPushed)
 	memcpy(mode, slotRawString(c)->s, slotRawObject(c)->size);
 	mode[slotRawString(c)->size] = 0;
 
-	file = popen(commandLine, mode);
+	pid_t pid;
+	file = sc_popen(commandLine, &pid, mode);
 	free(commandLine);
 	if (file) {
 		SetPtr(&pfile->fileptr, file);
-		SetTrue(a);
+		SetInt(a, pid);
 	} else {
 		SetNil(a);
-		SetFalse(a);
 	}
 	return errNone;
 }
@@ -1305,21 +1303,25 @@ int prPipeOpen(struct VMGlobals *g, int numArgsPushed)
 int prPipeClose(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a;
+	PyrSlot *b;
 	PyrFile *pfile;
 	FILE *file;
+	pid_t pid;
 
-	a = g->sp;
+	a = g->sp - 1;
+	b = g->sp;
 	pfile = (PyrFile*)slotRawObject(a);
 	file = (FILE*)slotRawPtr(&pfile->fileptr);
 	if (file == NULL) return errNone;
+	pid = (pid_t) slotRawInt(b);
+
 	SetPtr(&pfile->fileptr, NULL);
-	int perr = pclose(file);
+	int perr = sc_pclose(file, pid);
 	SetInt(a, perr);
 	if (perr == -1)
 		return errFailed;
 	return errNone;
 }
-#endif
 
 ////////
 
@@ -1504,88 +1506,6 @@ int prSFOpenRead(struct VMGlobals *g, int numArgsPushed)
 	}
 	return errNone;
 }
-/// copied from SC_World.cpp:
-
-int sampleFormatFromString(const char* name);
-int sampleFormatFromString(const char* name)
-{
-	if (!name) return SF_FORMAT_PCM_16;
-
-	size_t len = strlen(name);
-	if (len < 1) return 0;
-
-	if (name[0] == 'u') {
-		if (len < 5) return 0;
-		if (name[4] == '8') return SF_FORMAT_PCM_U8; // uint8
-		return 0;
-	} else if (name[0] == 'i') {
-		if (len < 4) return 0;
-		if (name[3] == '8') return SF_FORMAT_PCM_S8;      // int8
-		else if (name[3] == '1') return SF_FORMAT_PCM_16; // int16
-		else if (name[3] == '2') return SF_FORMAT_PCM_24; // int24
-		else if (name[3] == '3') return SF_FORMAT_PCM_32; // int32
-	} else if (name[0] == 'f') {
-		return SF_FORMAT_FLOAT; // float
-	} else if (name[0] == 'd') {
-		return SF_FORMAT_DOUBLE; // double
-	} else if (name[0] == 'm' || name[0] == 'u') {
-		return SF_FORMAT_ULAW; // mulaw ulaw
-	} else if (name[0] == 'a') {
-		return SF_FORMAT_ALAW; // alaw
-	}
-	return 0;
-}
-
-int headerFormatFromString(const char *name);
-int headerFormatFromString(const char *name)
-{
-	if (!name) return SF_FORMAT_AIFF;
-	if (strcasecmp(name, "AIFF")==0) return SF_FORMAT_AIFF;
-	if (strcasecmp(name, "AIFC")==0) return SF_FORMAT_AIFF;
-	if (strcasecmp(name, "RIFF")==0) return SF_FORMAT_WAV;
-	if (strcasecmp(name, "WAVEX")==0) return SF_FORMAT_WAVEX;
-	if (strcasecmp(name, "WAVE")==0) return SF_FORMAT_WAV;
-	if (strcasecmp(name, "WAV" )==0) return SF_FORMAT_WAV;
-	if (strcasecmp(name, "Sun" )==0) return SF_FORMAT_AU;
-	if (strcasecmp(name, "IRCAM")==0) return SF_FORMAT_IRCAM;
-	if (strcasecmp(name, "NeXT")==0) return SF_FORMAT_AU;
-	if (strcasecmp(name, "raw")==0) return SF_FORMAT_RAW;
-	if (strcasecmp(name, "MAT4")==0) return SF_FORMAT_MAT4;
-	if (strcasecmp(name, "MAT5")==0) return SF_FORMAT_MAT5;
-	if (strcasecmp(name, "PAF")==0) return SF_FORMAT_PAF;
-	if (strcasecmp(name, "SVX")==0) return SF_FORMAT_SVX;
-	if (strcasecmp(name, "NIST")==0) return SF_FORMAT_NIST;
-	if (strcasecmp(name, "VOC")==0) return SF_FORMAT_VOC;
-	if (strcasecmp(name, "W64")==0) return SF_FORMAT_W64;
-	if (strcasecmp(name, "PVF")==0) return SF_FORMAT_PVF;
-	if (strcasecmp(name, "XI")==0) return SF_FORMAT_XI;
-	if (strcasecmp(name, "HTK")==0) return SF_FORMAT_HTK;
-	if (strcasecmp(name, "SDS")==0) return SF_FORMAT_SDS;
-	if (strcasecmp(name, "AVR")==0) return SF_FORMAT_AVR;
-	if (strcasecmp(name, "SD2")==0) return SF_FORMAT_SD2;
-	if (strcasecmp(name, "FLAC")==0) return SF_FORMAT_FLAC;
-	if (strcasecmp(name, "CAF")==0) return SF_FORMAT_CAF;
-// TODO allow other platforms to know vorbis once libsndfile 1.0.18 is established
-#if SC_DARWIN || SC_WIN32
-	if (strcasecmp(name, "VORBIS")==0) return SF_FORMAT_VORBIS;
-#endif
-	if (strcasecmp(name, "RF64")==0) return SF_FORMAT_RF64;
-	return 0;
-}
-
-
-int sndfileFormatInfoFromStrings(struct SF_INFO *info, const char *headerFormatString, const char *sampleFormatString)
-{
-	int headerFormat = headerFormatFromString(headerFormatString);
-	if (!headerFormat) return errWrongType;
-
-	int sampleFormat = sampleFormatFromString(sampleFormatString);
-	if (!sampleFormat) return errWrongType;
-
-	info->format = (unsigned int)(headerFormat | sampleFormat);
-	return errNone;
-}
-// end copy
 
 int prSFOpenWrite(struct VMGlobals *g, int numArgsPushed);
 int prSFOpenWrite(struct VMGlobals *g, int numArgsPushed)
@@ -2027,10 +1947,8 @@ void initFilePrimitives()
 	definePrimitive(base, index++, "_SFSeek", prSFSeek, 3, 0);
 	definePrimitive(base, index++, "_SFHeaderInfoString", prSFHeaderInfoString, 1, 0);
 
-#ifndef SC_WIN32
 	definePrimitive(base, index++, "_PipeOpen", prPipeOpen, 3, 0);
-	definePrimitive(base, index++, "_PipeClose", prPipeClose, 1, 0);
-#endif
+	definePrimitive(base, index++, "_PipeClose", prPipeClose, 2, 0);
 
 	definePrimitive(base, index++, "_FileDelete", prFileDelete, 2, 0);
 	definePrimitive(base, index++, "_FileMTime", prFileMTime, 2, 0);
diff --git a/lang/LangPrimSource/PyrListPrim.cpp b/lang/LangPrimSource/PyrListPrim.cpp
index bf008c1..0935905 100644
--- a/lang/LangPrimSource/PyrListPrim.cpp
+++ b/lang/LangPrimSource/PyrListPrim.cpp
@@ -541,7 +541,6 @@ void PriorityQueueAdd(struct VMGlobals *g, PyrObject* queueobj, PyrSlot* item, d
 		maxsize = ARRAYMAXINDEXSIZE(schedq);
 		size = schedq->size;
 		if (size+3 > maxsize) {
-			PyrSlot *pslot, *qslot;
 
 			newschedq = newPyrArray(g->gc, maxsize*2, 0, true);
 			newschedq->size = size;
diff --git a/lang/LangPrimSource/PyrPlatformPrim.cpp b/lang/LangPrimSource/PyrPlatformPrim.cpp
index 40a3a25..d0c1069 100644
--- a/lang/LangPrimSource/PyrPlatformPrim.cpp
+++ b/lang/LangPrimSource/PyrPlatformPrim.cpp
@@ -35,6 +35,11 @@ Primitives for platform dependent directories, constants etc.
 	SetObject(a, string); \
 	return errNone
 
+static int prPlatform_userHomeDir(struct VMGlobals *g, int numArgsPushed)
+{
+	PATH_CONSTANT_PRIM_BODY(sc_GetUserHomeDirectory);
+}
+
 static int prPlatform_systemAppSupportDir(struct VMGlobals *g, int numArgsPushed)
 {
 	PATH_CONSTANT_PRIM_BODY(sc_GetSystemAppSupportDirectory);
@@ -80,6 +85,7 @@ void initPlatformPrimitives()
 
 	base = nextPrimitiveIndex();
 
+	definePrimitive(base, index++, "_Platform_userHomeDir", prPlatform_userHomeDir, 1, 0);
 	definePrimitive(base, index++, "_Platform_systemAppSupportDir", prPlatform_systemAppSupportDir, 1, 0);
 	definePrimitive(base, index++, "_Platform_userAppSupportDir", prPlatform_userAppSupportDir, 1, 0);
 	definePrimitive(base, index++, "_Platform_systemExtensionDir", prPlatform_systemExtensionDir, 1, 0);
diff --git a/lang/LangPrimSource/PyrPrimitive.cpp b/lang/LangPrimSource/PyrPrimitive.cpp
index 9d81d81..40ee654 100644
--- a/lang/LangPrimSource/PyrPrimitive.cpp
+++ b/lang/LangPrimSource/PyrPrimitive.cpp
@@ -45,7 +45,7 @@
 #include "PyrDeepFreezer.h"
 //#include "Wacom.h"
 #include "InitAlloc.h"
-#include "SC_LibraryConfig.h"
+#include "../LangSource/SC_LanguageConfig.hpp"
 #include "SC_DirUtils.h"
 
 
@@ -97,13 +97,14 @@ PyrSymbol* getPrimitiveName(int index)
 	return gPrimitiveTable.table[index].name;
 }
 
-int slotStrLen(PyrSlot *slot) {
-        if (IsSym(slot)) {
-                return slotRawSymbol(slot)->length;
-        } else if (isKindOfSlot(slot, class_string)) {
-                return slotRawObject(slot)->size;
-        }
-        return -1;
+int slotStrLen(PyrSlot *slot)
+{
+	if (IsSym(slot))
+		return slotRawSymbol(slot)->length;
+	if (isKindOfSlot(slot, class_string))
+		return slotRawObject(slot)->size;
+
+	return -1;
 }
 
 int slotStrVal(PyrSlot *slot, char *str, int maxlen)
@@ -182,7 +183,7 @@ int instVarPut(struct VMGlobals *g, int numArgsPushed)
 
 	if (NotObj(a)) return errWrongType;
 	obj = slotRawObject(a);
-	if (obj->obj_flags & obj_immutable) return errImmutableObject;
+	if (obj->IsImmutable()) return errImmutableObject;
 
 	if (IsInt(b)) {
 		index = slotRawInt(b);
@@ -827,7 +828,7 @@ int blockValueArrayEnvir(struct VMGlobals *g, int numArgsPushed)
 	}
 }
 
-int blockValue(struct VMGlobals *g, int numArgsPushed)
+HOT int blockValue(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *args;
 	PyrSlot *vars;
@@ -2989,7 +2990,6 @@ void initPyrThread(VMGlobals *g, PyrThread *thread, PyrSlot *func, int stacksize
 	gc->GCWrite(thread, currentEnvironmentSlot);
 
 	if(g->process) { // check we're not just starting up
-		PyrSlot* executingPath = &g->process->nowExecutingPath;
 		slotCopy(&thread->executingPath,&g->process->nowExecutingPath);
 		gc->GCWrite(thread, &g->process->nowExecutingPath);
 	}
@@ -3002,7 +3002,7 @@ extern PyrSymbol *s_prstart;
 int prThreadInit(struct VMGlobals *g, int numArgsPushed);
 int prThreadInit(struct VMGlobals *g, int numArgsPushed)
 {
-	PyrSlot *a, *b, *c, *d;
+	PyrSlot *a, *b, *c;
 	int stacksize, err;
 	PyrThread *thread;
 
@@ -3438,8 +3438,8 @@ static int prLanguageConfig_getLibraryPaths(struct VMGlobals * g, int numArgsPus
 
 	typedef SC_LanguageConfig::DirVector DirVector;
 
-	DirVector const & dirVector = (pathType == includePaths) ? gLibraryConfig->includedDirectories()
-															 : gLibraryConfig->excludedDirectories();
+	DirVector const & dirVector = (pathType == includePaths) ? gLanguageConfig->includedDirectories()
+															 : gLanguageConfig->excludedDirectories();
 
 	size_t numberOfPaths = dirVector.size();
 	PyrObject * resultArray = newPyrArray(g->gc, numberOfPaths, 0, true);
@@ -3463,7 +3463,6 @@ static int prLanguageConfig_getExcludePaths(struct VMGlobals * g, int numArgsPus
 
 static int prLanguageConfig_addLibraryPath(struct VMGlobals * g, int numArgsPushed, int pathType)
 {
-	PyrSlot *result = g->sp - 1;
 	PyrSlot *removeString = g->sp;
 
 	char path[MAXPATHLEN];
@@ -3472,9 +3471,9 @@ static int prLanguageConfig_addLibraryPath(struct VMGlobals * g, int numArgsPush
 		return errWrongType;
 
 	if (pathType == includePaths)
-		gLibraryConfig->addIncludedDirectory(path);
+		gLanguageConfig->addIncludedDirectory(path);
 	else
-		gLibraryConfig->addExcludedDirectory(path);
+		gLanguageConfig->addExcludedDirectory(path);
 	return errNone;
 }
 
@@ -3490,7 +3489,6 @@ static int prLanguageConfig_addExcludePath(struct VMGlobals * g, int numArgsPush
 
 static int prLanguageConfig_removeLibraryPath(struct VMGlobals * g, int numArgsPushed, int pathType)
 {
-	PyrSlot *result = g->sp - 1;
 	PyrSlot *dirString = g->sp;
 
 	char path[MAXPATHLEN];
@@ -3499,9 +3497,9 @@ static int prLanguageConfig_removeLibraryPath(struct VMGlobals * g, int numArgsP
 		return errWrongType;
 
 	if (pathType == includePaths)
-		gLibraryConfig->removeIncludedDirectory(path);
+		gLanguageConfig->removeIncludedDirectory(path);
 	else
-		gLibraryConfig->removeExcludedDirectory(path);
+		gLanguageConfig->removeExcludedDirectory(path);
 	return errNone;
 }
 
@@ -3517,7 +3515,6 @@ static int prLanguageConfig_removeExcludePath(struct VMGlobals * g, int numArgsP
 
 static int prLanguageConfig_writeConfigFile(struct VMGlobals * g, int numArgsPushed)
 {
-	PyrSlot *result = g->sp - 1;
 	PyrSlot *fileString = g->sp;
 
 	char path[MAXPATHLEN];
@@ -3530,7 +3527,7 @@ static int prLanguageConfig_writeConfigFile(struct VMGlobals * g, int numArgsPus
 		sc_AppendToPath(path, MAXPATHLEN, "sclang_conf.yaml");
 	}
 
-	gLibraryConfig->writeLibraryConfigYAML(path);
+	gLanguageConfig->writeLibraryConfigYAML(path);
 	return errNone;
 }
 
@@ -3544,7 +3541,6 @@ static int prLanguageConfig_getPostInlineWarnings(struct VMGlobals * g, int numA
 
 static int prLanguageConfig_setPostInlineWarnings(struct VMGlobals * g, int numArgsPushed)
 {
-	PyrSlot *result = g->sp - 1;
 	PyrSlot *arg    = g->sp;
 
 	if (IsTrue(arg))
@@ -4176,8 +4172,7 @@ void initSCViewPrimitives();
 void initSchedPrimitives();
 	initSchedPrimitives();
 
-#if (defined(__APPLE__) && !defined(SC_IPHONE)) \
-	|| defined(HAVE_ALSA) || defined(HAVE_PORTMIDI)
+#if defined(__APPLE__) || defined(HAVE_ALSA) || defined(HAVE_PORTMIDI)
 void initMIDIPrimitives();
 	initMIDIPrimitives();
 #endif
@@ -4220,7 +4215,12 @@ void initOpenGLPrimitives();
 	QtCollider::initPrimitives();
 #endif
 
-initSCDocPrimitives();
+#ifdef SC_IDE
+	void initScIDEPrimitives();
+	initScIDEPrimitives();
+#endif
+
+	initSCDocPrimitives();
 
 	s_recvmsg = getsym("receiveMsg");
 	post("\tNumPrimitives = %d\n", nextPrimitiveIndex());
diff --git a/lang/LangPrimSource/PyrSched.cpp b/lang/LangPrimSource/PyrSched.cpp
index f80284b..38e96ae 100644
--- a/lang/LangPrimSource/PyrSched.cpp
+++ b/lang/LangPrimSource/PyrSched.cpp
@@ -218,7 +218,7 @@ const int32 kSECONDS_FROM_1900_to_1970 = (int32)2208988800UL; /* 17 leap years *
 const double fSECONDS_FROM_1900_to_1970 = 2208988800.; /* 17 leap years */
 
 #ifdef SC_DARWIN
-void syncOSCOffsetWithTimeOfDay();
+static void syncOSCOffsetWithTimeOfDay();
 void* resyncThread(void* arg);
 #else // !SC_DARWIN
 
@@ -587,7 +587,7 @@ kern_return_t  RescheduleStdThread( mach_port_t    machThread,
 }
 #endif // SC_DARWIN
 
-#ifdef SC_LINUX
+#ifdef __linux__
 #include <string.h>
 
 static void SC_LinuxSetRealtimePriority(pthread_t thread, int priority)
@@ -608,7 +608,7 @@ static void SC_LinuxSetRealtimePriority(pthread_t thread, int priority)
 			 param.sched_priority, strerror(err));
 	}
 }
-#endif // SC_LINUX
+#endif // __linux__
 
 
 SC_DLLEXPORT_C void schedRun()
@@ -645,9 +645,9 @@ SC_DLLEXPORT_C void schedRun()
 		//post("param.sched_priority %d\n", param.sched_priority);
 #endif // SC_DARWIN
 
-#ifdef SC_LINUX
+#ifdef __linux__
 		SC_LinuxSetRealtimePriority(gSchedThread, 1);
-#endif // SC_LINUX
+#endif // __linux__
 }
 
 
@@ -790,9 +790,9 @@ TempoClock::TempoClock(VMGlobals *inVMGlobals, PyrObject* inTempoClockObj,
 	//pthread_setschedparam (mThread, policy, &param);
 #endif // SC_DARWIN
 
-#ifdef SC_LINUX
+#ifdef __linux__
 	SC_LinuxSetRealtimePriority(mThread, 1);
-#endif // SC_LINUX
+#endif // __linux__
 }
 
 void TempoClock::StopReq()
diff --git a/lang/LangPrimSource/PyrSerialPrim.cpp b/lang/LangPrimSource/PyrSerialPrim.cpp
index d58c995..3abbbcd 100644
--- a/lang/LangPrimSource/PyrSerialPrim.cpp
+++ b/lang/LangPrimSource/PyrSerialPrim.cpp
@@ -425,7 +425,7 @@ void SerialPort::dataAvailable()
 
 void SerialPort::doneAction()
 {
-	int status = lockLanguageOrQuit(m_running);
+	int status = lockLanguageOrQuit(m_dodone);
 	if (status == EINTR)
 		return;
 	if (status) {
@@ -446,86 +446,86 @@ void SerialPort::doneAction()
 
 void SerialPort::threadLoop()
 {
-  const int fd = m_fd;
-  const int max_fd = fd+1;
-
-  m_running = true;
-  m_rxErrors[1] = 0;
-
-  while (true) {
-    fd_set rfds;
-
-    FD_ZERO(   &rfds);
-    FD_SET(fd, &rfds);
-
-    struct timeval timeout;
-    timeout.tv_sec = kReadTimeoutMs/1000;
-    timeout.tv_usec = (kReadTimeoutMs%1000)*1000;
-
-    int n = select(max_fd, &rfds, 0, 0, &timeout);
-    // 	int fdset = FD_ISSET(fd, &rfds);
-    // 	printf( "fdset %i, n %i, errno %i\n", fdset, n, errno );
-    if ( m_open ){
-      if ((n > 0) && FD_ISSET(fd, &rfds)) {
-	// printf("poll input\n");
-	int nr = 0;
-	// while (true) {
-	if ( m_open ){
-	  int n2 = read(fd, m_rxbuffer, kBufferSize);
-	  //  printf("read %d, errno %i, errbadf %i, %i, %i\n", n2, errno, EBADF, EAGAIN, EIO);
-	  if (n2 > 0) {
-	    // write data to ringbuffer
-	    for (int i=0; i < n2; ++i) {
-	      if (!m_rxfifo.Put(m_rxbuffer[i])) {
-		m_rxErrors[1]++;
-		break;
-	      }
-	    }
-	    nr += n2;
-	  } else if ((n2 == 0) && (n == 1) ) { // added by nescivi, to check for disconnected device. In this case the read is 0 all the time and otherwise eats up the CPU
-	    //	printf( "done\n" );
-	    goto done;
-	  } else if ((n2 == 0) || ((n2 == -1) && (errno == EAGAIN))) {
-	    //	printf( "break\n");
-	    break;
-	  } else {
+	const int fd = m_fd;
+	const int max_fd = fd+1;
+
+	m_running = true;
+	m_rxErrors[1] = 0;
+
+	while (true) {
+		fd_set rfds;
+
+		FD_ZERO(   &rfds);
+		FD_SET(fd, &rfds);
+
+		struct timeval timeout;
+		timeout.tv_sec = kReadTimeoutMs/1000;
+		timeout.tv_usec = (kReadTimeoutMs%1000)*1000;
+
+		int n = select(max_fd, &rfds, 0, 0, &timeout);
+		// 	int fdset = FD_ISSET(fd, &rfds);
+		// 	printf( "fdset %i, n %i, errno %i\n", fdset, n, errno );
+		if ( m_open ){
+			if ((n > 0) && FD_ISSET(fd, &rfds)) {
+				// printf("poll input\n");
+				int nr = 0;
+				// while (true) {
+				if ( m_open ){
+					int n2 = read(fd, m_rxbuffer, kBufferSize);
+					//  printf("read %d, errno %i, errbadf %i, %i, %i\n", n2, errno, EBADF, EAGAIN, EIO);
+					if (n2 > 0) {
+						// write data to ringbuffer
+						for (int i=0; i < n2; ++i) {
+							if (!m_rxfifo.Put(m_rxbuffer[i])) {
+								m_rxErrors[1]++;
+								break;
+							}
+						}
+						nr += n2;
+					} else if ((n2 == 0) && (n == 1) ) { // added by nescivi, to check for disconnected device. In this case the read is 0 all the time and otherwise eats up the CPU
+						//	printf( "done\n" );
+						goto done;
+					} else if ((n2 == 0) || ((n2 == -1) && (errno == EAGAIN))) {
+						//	printf( "break\n");
+						break;
+					} else {
 #ifndef NDEBUG
-	    printf("SerialPort HUP\n");
+						printf("SerialPort HUP\n");
 #endif
-	    goto done;
-	  }
-	}
-	//}
-	if (!m_running) {
-	  // close and cleanup
-	  goto done;
-	}
-	if (nr > 0) {
-	  dataAvailable();
+						goto done;
+					}
+				}
+				//}
+				if (!m_running) {
+					// close and cleanup
+					goto done;
+				}
+				if (nr > 0) {
+					dataAvailable();
+				}
+			} else if (n == -1) {
+				goto done;
+			}
+		}
+		if (!m_running) {
+			// close and cleanup
+			goto done;
+		}
 	}
-      } else if (n == -1) {
-	goto done;
-      }
-    }
-    if (!m_running) {
-      // close and cleanup
-      goto done;
-    }
-  }
 
 done:
-  // doneAction();
-  if ( m_open ){
-    tcflush(fd, TCIOFLUSH);
-    tcsetattr(fd, TCSANOW, &m_oldtermio);
-    close(fd);
-  };
-  m_open = false;
-  m_running = false;
-  if ( m_dodone )
-    { doneAction(); }
+	// doneAction();
+	if ( m_open ){
+		tcflush(fd, TCIOFLUSH);
+		tcsetattr(fd, TCSANOW, &m_oldtermio);
+		close(fd);
+	};
+	m_open = false;
+	m_running = false;
+	if ( m_dodone )
+		doneAction();
 #ifndef NDEBUG
-  printf("SerialPort closed\n");
+	printf("SerialPort closed\n");
 #endif
 }
 
diff --git a/lang/LangPrimSource/PyrStringPrim.cpp b/lang/LangPrimSource/PyrStringPrim.cpp
index a09b563..0f372e6 100644
--- a/lang/LangPrimSource/PyrStringPrim.cpp
+++ b/lang/LangPrimSource/PyrStringPrim.cpp
@@ -43,6 +43,9 @@ Primitives for String.
 #include <boost/intrusive/list.hpp>
 #include <boost/intrusive/unordered_set.hpp>
 
+#include <fstream>
+#include "yaml-cpp/yaml.h"
+
 #include <string>
 #include <vector>
 
@@ -295,7 +298,7 @@ int prString_Regexp(struct VMGlobals *g, int numArgsPushed)
 
 	using namespace boost;
 
-	int err, start, end, ret, len;
+	int start, end, len;
 
 	PyrSlot *a = g->sp - 3;
 	PyrSlot *b = g->sp - 2;
@@ -365,7 +368,6 @@ static int prString_FindRegexp(struct VMGlobals *g, int numArgsPushed)
 
 	int offset = slotRawInt(c);
 	int stringlen = std::max(slotRawObject(a)->size - offset, 0);
-	int patternsize =  slotRawObject(b)->size + 1;
 
 	std::vector<sc_regexp_match> matches;
 	const char* const stringBegin = slotRawString(a)->s + offset;
@@ -601,7 +603,16 @@ int prString_Getenv(struct VMGlobals* g, int /* numArgsPushed */)
 	err = slotStrVal(arg, key, 256);
 	if (err) return err;
 
+#ifdef _WIN32
+	char buf[1024];
+	DWORD size = GetEnvironmentVariable(key, buf, 1024);
+	if (size == 0 || size > 1024)
+		value = 0;
+	else
+		value = buf;
+#else
 	value = getenv(key);
+#endif
 
 	if (value) {
 		PyrString* pyrString = newPyrString(g->gc, value, 0, true);
@@ -867,6 +878,112 @@ int prString_EscapeChar(struct VMGlobals* g, int numArgsPushed)
 	return errNone;
 }
 
+static void yaml_traverse(struct VMGlobals* g, const YAML::Node & node, PyrObject *parent, PyrSlot *slot) {
+	YAML::NodeType::value type = node.Type();
+	string out;
+	PyrObject *result = NULL;
+
+	switch (type)
+	{
+		case YAML::NodeType::Scalar:
+			node >> out;
+			result = (PyrObject*)newPyrString(g->gc, out.c_str(), 0, true);
+			SetObject(slot, result);
+			if(parent) g->gc->GCWrite(parent, result);
+			break;
+
+		case YAML::NodeType::Sequence:
+			result = newPyrArray(g->gc, node.size(), 0, true);
+			result->size = 0;
+			SetObject(slot, result);
+			if(parent) g->gc->GCWrite(parent, result);
+			for (unsigned int i = 0; i < node.size(); i++) {
+				const YAML::Node & subnode = node[i];
+				result->size++;
+				yaml_traverse(g, subnode, result, result->slots+i);
+			}
+			break;
+
+		case YAML::NodeType::Map:
+		{
+			result = instantiateObject( g->gc, s_dictionary->u.classobj, 0, false, true );
+			SetObject(slot, result);
+			if(parent) g->gc->GCWrite(parent, result);
+
+			PyrObject *array = newPyrArray(g->gc, node.size()*2, 0, true);
+			array->size = 0;
+			result->size = 2; // ?
+			SetObject(result->slots, array);      // array
+			SetInt(result->slots+1, node.size()); // size
+			g->gc->GCWrite(result, array);
+
+			int j = 0;
+			for (YAML::Iterator i = node.begin(); i != node.end(); ++i) {
+				const YAML::Node & key   = i.first();
+				const YAML::Node & value = i.second();
+				key >> out;
+				PyrObject *pkey = (PyrObject*)newPyrString(g->gc, out.c_str(), 0, true);
+				SetObject(array->slots+j, pkey);
+				array->size++;
+				g->gc->GCWrite(array, pkey);
+
+				array->size++;
+				yaml_traverse(g, value, array, array->slots+j+1);
+
+				j += 2;
+			}
+			break;
+		}
+
+		case YAML::NodeType::Null:
+			SetNil(slot);
+			break;
+
+		default:
+			postfl("WARNING: yaml_traverse(): unknown/unsupported node type\n");
+			SetNil(slot);
+	}
+}
+
+int prString_ParseYAML(struct VMGlobals* g, int numArgsPushed)
+{
+	PyrSlot* arg = g->sp;
+
+	if (!isKindOfSlot(arg, class_string)) return errWrongType;
+
+	string str((const char*)slotRawString(arg)->s,slotRawString(arg)->size);
+
+	std::istringstream fin(str);
+	YAML::Parser parser(fin);
+	YAML::Node doc;
+//	while(parser.GetNextDocument(doc)) {
+//		yaml_traverse(doc, 0);
+//	}
+	parser.GetNextDocument(doc);
+	yaml_traverse(g, doc, NULL, arg);
+
+	return errNone;
+}
+
+int prString_ParseYAMLFile(struct VMGlobals* g, int numArgsPushed)
+{
+	PyrSlot* arg = g->sp;
+
+	if (!isKindOfSlot(arg, class_string)) return errWrongType;
+
+	string str((const char*)slotRawString(arg)->s,slotRawString(arg)->size);
+
+	std::ifstream fin(str.c_str());
+	YAML::Parser parser(fin);
+	YAML::Node doc;
+//	while(parser.GetNextDocument(doc)) {
+//		yaml_traverse(doc, 0);
+//	}
+	parser.GetNextDocument(doc);
+	yaml_traverse(g, doc, NULL, arg);
+
+	return errNone;
+}
 
 void initStringPrimitives();
 void initStringPrimitives()
@@ -893,6 +1010,8 @@ void initStringPrimitives()
 	definePrimitive(base, index++, "_StripHtml", prStripHtml, 1, 0);
 	definePrimitive(base, index++, "_String_StandardizePath", prString_StandardizePath, 1, 0);
 	definePrimitive(base, index++, "_String_EscapeChar", prString_EscapeChar, 2, 0);
+	definePrimitive(base, index++, "_String_ParseYAML", prString_ParseYAML, 1, 0);
+	definePrimitive(base, index++, "_String_ParseYAMLFile", prString_ParseYAMLFile, 1, 0);
 }
 
 #if _SC_PLUGINS_
diff --git a/lang/LangPrimSource/PyrSymbolPrim.cpp b/lang/LangPrimSource/PyrSymbolPrim.cpp
index 18e7cc5..280047d 100644
--- a/lang/LangPrimSource/PyrSymbolPrim.cpp
+++ b/lang/LangPrimSource/PyrSymbolPrim.cpp
@@ -226,7 +226,6 @@ int prSymbol_matchOSCPattern(struct VMGlobals *g, int numArgsPushed);
 int prSymbol_matchOSCPattern(struct VMGlobals *g, int numArgsPushed)
 {
 	PyrSlot *a, *b;
-	int length;
 	
 	a = g->sp - 1;
 	b = g->sp;
diff --git a/lang/LangPrimSource/PyrUnixPrim.cpp b/lang/LangPrimSource/PyrUnixPrim.cpp
index 3e98274..47e2146 100644
--- a/lang/LangPrimSource/PyrUnixPrim.cpp
+++ b/lang/LangPrimSource/PyrUnixPrim.cpp
@@ -292,77 +292,77 @@ int prGMTime(struct VMGlobals *g, int numArgsPushed)
 int prAscTime(struct VMGlobals *g, int numArgsPushed);
 int prAscTime(struct VMGlobals *g, int numArgsPushed)
 {
-        PyrSlot *a = g->sp;
-        PyrSlot *slots = slotRawObject(a)->slots;
+	PyrSlot *a = g->sp;
+	PyrSlot *slots = slotRawObject(a)->slots;
 
-        if (IsNil(slots + 0)) {
-          SetNil(a);
-          return errNone;
-        }
+	if (IsNil(slots + 0)) {
+		SetNil(a);
+		return errNone;
+	}
 
-        struct tm tm0;
+	struct tm tm0;
 
-        if (slotIntVal(slots+0, &tm0.tm_year)) return errWrongType;
-        tm0.tm_year -= 1900;
-        if (slotIntVal(slots+1, &tm0.tm_mon)) return errWrongType;
-		tm0.tm_mon -- ;
-        if (slotIntVal(slots+2, &tm0.tm_mday)) return errWrongType;
-        if (slotIntVal(slots+3, &tm0.tm_hour)) return errWrongType;
-        if (slotIntVal(slots+4, &tm0.tm_min)) return errWrongType;
-        if (slotIntVal(slots+5, &tm0.tm_sec)) return errWrongType;
-        if (slotIntVal(slots+6, &tm0.tm_wday)) return errWrongType;
+	if (slotIntVal(slots+0, &tm0.tm_year)) return errWrongType;
+	tm0.tm_year -= 1900;
+	if (slotIntVal(slots+1, &tm0.tm_mon)) return errWrongType;
+	tm0.tm_mon -- ;
+	if (slotIntVal(slots+2, &tm0.tm_mday)) return errWrongType;
+	if (slotIntVal(slots+3, &tm0.tm_hour)) return errWrongType;
+	if (slotIntVal(slots+4, &tm0.tm_min)) return errWrongType;
+	if (slotIntVal(slots+5, &tm0.tm_sec)) return errWrongType;
+	if (slotIntVal(slots+6, &tm0.tm_wday)) return errWrongType;
 
-        const char *text = asctime(&tm0);
+	const char *text = asctime(&tm0);
 
-        int size = strlen(text) - 1; // Discard trailing newline
-        PyrString *strobj = newPyrStringN(g->gc, size, 0, true);
-        memcpy(strobj->s, text, size);
+	int size = strlen(text) - 1; // Discard trailing newline
+	PyrString *strobj = newPyrStringN(g->gc, size, 0, true);
+	memcpy(strobj->s, text, size);
 
-        SetObject(a, strobj);
+	SetObject(a, strobj);
 
-        return errNone;
+	return errNone;
 }
 
 int prStrFTime(struct VMGlobals *g, int numArgsPushed);
 int prStrFTime(struct VMGlobals *g, int numArgsPushed)
 {
-        PyrSlot *a = g->sp - 1;
-        PyrSlot *b = g->sp;
-
-        PyrSlot *slots = slotRawObject(a)->slots;
-
-        if (IsNil(slots + 0)) {
-          SetNil(a);
-          return errNone;
-        }
-
-        struct tm tm0;
-
-        if (slotIntVal(slots+0, &tm0.tm_year)) return errWrongType;
-        tm0.tm_year -= 1900;
-        if (slotIntVal(slots+1, &tm0.tm_mon)) return errWrongType;
-		tm0.tm_mon --;
-        if (slotIntVal(slots+2, &tm0.tm_mday)) return errWrongType;
-        if (slotIntVal(slots+3, &tm0.tm_hour)) return errWrongType;
-        if (slotIntVal(slots+4, &tm0.tm_min)) return errWrongType;
-        if (slotIntVal(slots+5, &tm0.tm_sec)) return errWrongType;
-        if (slotIntVal(slots+6, &tm0.tm_wday)) return errWrongType;
-
-        char format[1024];
-        if (slotStrVal(b, format, 1024)) return errWrongType;
-
-        char buffer[1024];
-        if (strftime(buffer, 1024, format, &tm0) != 0) {
-          int size = strlen(buffer);
-          PyrString *strobj = newPyrStringN(g->gc, size, 0, true);
-          memcpy(strobj->s, buffer, size);
-
-          SetObject(a, strobj);
-        } else {
-          error("could not convert the date to string with the give format");
-          return errFailed;
-        }
-        return errNone;
+	PyrSlot *a = g->sp - 1;
+	PyrSlot *b = g->sp;
+
+	PyrSlot *slots = slotRawObject(a)->slots;
+
+	if (IsNil(slots + 0)) {
+		SetNil(a);
+		return errNone;
+	}
+
+	struct tm tm0;
+
+	if (slotIntVal(slots+0, &tm0.tm_year)) return errWrongType;
+	tm0.tm_year -= 1900;
+	if (slotIntVal(slots+1, &tm0.tm_mon)) return errWrongType;
+	tm0.tm_mon --;
+	if (slotIntVal(slots+2, &tm0.tm_mday)) return errWrongType;
+	if (slotIntVal(slots+3, &tm0.tm_hour)) return errWrongType;
+	if (slotIntVal(slots+4, &tm0.tm_min)) return errWrongType;
+	if (slotIntVal(slots+5, &tm0.tm_sec)) return errWrongType;
+	if (slotIntVal(slots+6, &tm0.tm_wday)) return errWrongType;
+
+	char format[1024];
+	if (slotStrVal(b, format, 1024)) return errWrongType;
+
+	char buffer[1024];
+	if (strftime(buffer, 1024, format, &tm0) != 0) {
+		int size = strlen(buffer);
+		PyrString *strobj = newPyrStringN(g->gc, size, 0, true);
+		memcpy(strobj->s, buffer, size);
+
+		SetObject(a, strobj);
+	} else {
+		error("could not convert the date to string with the give format");
+		return errFailed;
+	}
+	return errNone;
 }
 
 int32 timeseed();
diff --git a/lang/LangPrimSource/SC_AlsaMIDI.cpp b/lang/LangPrimSource/SC_AlsaMIDI.cpp
index 6fcedd9..502f924 100644
--- a/lang/LangPrimSource/SC_AlsaMIDI.cpp
+++ b/lang/LangPrimSource/SC_AlsaMIDI.cpp
@@ -52,8 +52,6 @@ PyrSymbol* s_midiSysexAction;
 PyrSymbol* s_midiSysrtAction;
 PyrSymbol* s_midiSMPTEAction;
 
-static int g_ivx_MIDIOut_port;
-
 const int kMaxMidiPorts = 16;
 bool gMIDIInitialized = false;
 
@@ -970,7 +968,6 @@ int prSendMIDIOut(struct VMGlobals *g, int numArgsPushed)
 	return sendMIDI(outputIndex, uid, length, hiStatus, loStatus, aval, bval, late);
 }
 
-int prSendSysex(VMGlobals *g, int numArgsPushed);
 int prSendSysex(VMGlobals *g, int numArgsPushed)
 {
 	int err, uid, outputIndex;
@@ -979,7 +976,9 @@ int prSendSysex(VMGlobals *g, int numArgsPushed)
 	// rcvr, uid, packet
 	PyrSlot* args = g->sp - 2;
 
-	err = slotIntVal(slotRawObject(args)->slots + g_ivx_MIDIOut_port, &outputIndex);
+	int MIDIOut_port_index = instVarOffset("MIDIOut", "port");
+
+	err = slotIntVal(slotRawObject(args)->slots + MIDIOut_port_index, &outputIndex);
 	if (err) return err;
 
 	err = slotIntVal(args+1, &uid);
@@ -1014,8 +1013,6 @@ void initMIDIPrimitives()
 	s_midiSysrtAction = getsym("doSysrtAction");
 	s_midiSMPTEAction = getsym("doSMPTEaction");
 
-	g_ivx_MIDIOut_port = instVarOffset("MIDIOut", "port");
-
 	definePrimitive(base, index++, "_InitMIDI", prInitMIDI, 3, 0);
 	definePrimitive(base, index++, "_InitMIDIClient", prInitMIDIClient, 1, 0);
 	definePrimitive(base, index++, "_RestartMIDI", prRestartMIDI, 1, 0);
diff --git a/lang/LangPrimSource/SC_ComPort.cpp b/lang/LangPrimSource/SC_ComPort.cpp
index 2e9fbd1..c5a9357 100644
--- a/lang/LangPrimSource/SC_ComPort.cpp
+++ b/lang/LangPrimSource/SC_ComPort.cpp
@@ -21,7 +21,6 @@
 #include "SC_BoundsMacros.h"
 #include "SC_ComPort.h"
 #include "SC_Endian.h"
-//#include "SC_Lock.h"
 #include <ctype.h>
 #include <stdexcept>
 #include <stdarg.h>
@@ -34,7 +33,7 @@
 #include "SC_Win32Utils.h"
 #endif
 
-#ifdef SC_LINUX
+#ifdef __linux__
 # include <errno.h>
 #endif
 
@@ -67,7 +66,7 @@ int sendall(int socket, const void *msg, size_t len);
 
 void ProcessOSCPacket(OSC_Packet *inPacket, int inPortNum);
 
-void dumpOSCmsg(int inSize, char* inData)
+static void dumpOSCmsg(int inSize, char* inData)
 {
 	int size;
 	const char *data;
@@ -118,7 +117,7 @@ leave:
 	printf(" ]");
 }
 
-void hexdump(int size, char* data)
+static void hexdump(int size, char* data)
 {
 	char ascii[20];
 	int padsize = (size + 15) & -16;
@@ -273,7 +272,7 @@ SC_UdpCustomInPort::SC_UdpCustomInPort(int inPortNum)
 	if ((mSocket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
 		throw std::runtime_error("failed to create udp socket\n");
 	}
-	
+
 	{
 		int bufsize = 65536;
 #ifdef SC_WIN32
@@ -282,11 +281,11 @@ SC_UdpCustomInPort::SC_UdpCustomInPort(int inPortNum)
 		setsockopt(mSocket, SOL_SOCKET, SO_SNDBUF, &bufsize, sizeof(bufsize));
 #endif
 	}
-	
+
 	bzero((char *)&mBindSockAddr, sizeof(mBindSockAddr));
 	mBindSockAddr.sin_family = AF_INET;
 	mBindSockAddr.sin_addr.s_addr = htonl(INADDR_ANY);
-	
+
 	bool bound = false;
 	mBindSockAddr.sin_port = htons(mPortNum);
 	if (bind(mSocket, (struct sockaddr *)&mBindSockAddr, sizeof(mBindSockAddr)) >= 0) {
@@ -305,12 +304,12 @@ SC_UdpCustomInPort::~SC_UdpCustomInPort()
 #else
 	if (mSocket != -1) close(mSocket);
 #endif
-	
+
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////
 
-void DumpReplyAddress(ReplyAddress *inReplyAddress)
+static void DumpReplyAddress(ReplyAddress *inReplyAddress)
 {
 	printf("mSockAddrLen %d\n", inReplyAddress->mSockAddrLen);
 	printf("mSocket %d\n", inReplyAddress->mSocket);
@@ -392,21 +391,21 @@ ReplyFunc SC_UdpCustomInPort::GetReplyFunc()
 void* SC_UdpCustomInPort::Run()
 {
 	OSC_Packet *packet = 0;
-	
+
 	const int fd = mSocket;
 	const int max_fd = fd+1;
-	
+
 	mRunning.store(true);
 	while (mRunning.load(boost::memory_order_consume)) {
 		fd_set rfds;
-		
+
 		FD_ZERO(   &rfds);
 		FD_SET(fd, &rfds);
 
 		struct timeval timeout;
 		timeout.tv_sec = 0;
 		timeout.tv_usec = 500000;
-		
+
 		int n = select(max_fd, &rfds, 0, 0, &timeout);
 		if ((n > 0) && FD_ISSET(fd, &rfds)) {
 			if (!packet) {
@@ -415,11 +414,11 @@ void* SC_UdpCustomInPort::Run()
 			packet->mReplyAddr.mSockAddrLen = sizeof(sockaddr_in);
 			int size = recvfrom(mSocket, buf, kTextBufSize , 0,
 								(struct sockaddr *) &packet->mReplyAddr.mSockAddr, (socklen_t*)&packet->mReplyAddr.mSockAddrLen);
-			
+
 			if (size > 0 && mRunning.load(boost::memory_order_consume)) {
 				//dumpOSC(3, size, buf);
 				//fflush(stdout);
-				
+
 				char *data = (char*)malloc(size);
 				packet->mReplyAddr.mReplyFunc = udp_reply_func;
 				packet->mSize = size;
@@ -486,11 +485,6 @@ void SC_TcpInPort::ConnectionTerminated()
         mConnectionAvailable.Release();
 }
 
-void null_reply_func(struct ReplyAddress *addr, char* msg, int size);
-void null_reply_func(struct ReplyAddress *addr, char* msg, int size)
-{
-}
-
 ReplyFunc SC_TcpInPort::GetReplyFunc()
 {
 	return null_reply_func;
diff --git a/lang/LangPrimSource/SC_CoreAudioPrim.cpp b/lang/LangPrimSource/SC_CoreAudioPrim.cpp
index 332baa1..eaebc11 100755
--- a/lang/LangPrimSource/SC_CoreAudioPrim.cpp
+++ b/lang/LangPrimSource/SC_CoreAudioPrim.cpp
@@ -37,12 +37,18 @@ int listDevices(struct VMGlobals *g, int type)
 {
 	int numDevices, num = 0;
     PyrSlot *a = g->sp-2;
-
+	AudioObjectPropertyAddress propertyAddress;
+	propertyAddress.mSelector = kAudioHardwarePropertyDevices;
+	propertyAddress.mScope = kAudioObjectPropertyScopeGlobal;
+	propertyAddress.mElement = kAudioObjectPropertyElementMaster;
+	
 //	unsigned long count;
     UInt32 count;
-    OSStatus err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &count, 0);
+	//    OSStatus err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &count, 0);
+	OSStatus err = AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &count);
 	AudioDeviceID *devices = (AudioDeviceID*)malloc(count);
-	err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &count, devices);
+	// err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &count, devices);
+	err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &count, devices);
 	if (err!=kAudioHardwareNoError)
 	{
 		free(devices);
@@ -55,10 +61,29 @@ int listDevices(struct VMGlobals *g, int type)
 
 	if (type<BOTH)
 	{
+		if(type < IN)
+		{
+			propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+		} else {
+			propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+		}
+		
 		for (i=0; i<numDevices; i++)
 		{
 			Boolean writeable;
-			err = AudioDeviceGetPropertyInfo(devices[i], 0, type, kAudioDevicePropertyStreams, &count, &writeable);
+			propertyAddress.mSelector = kAudioDevicePropertyStreams;
+			// err = AudioDeviceGetPropertyInfo(devices[i], 0, type, kAudioDevicePropertyStreams, &count, &writeable);
+			
+			err = AudioObjectGetPropertyDataSize(devices[i], &propertyAddress, 0, NULL, &count);
+
+			if (err!=kAudioHardwareNoError)
+			{
+				free(devices);
+				return 0;
+			}
+			
+			err = AudioObjectIsPropertySettable(devices[i], &propertyAddress, &writeable);
+			
 			if (err!=kAudioHardwareNoError)
 			{
 				free(devices);
@@ -78,14 +103,21 @@ int listDevices(struct VMGlobals *g, int type)
 	{
 		if (!devices[i]) continue;
 
-		err = AudioDeviceGetPropertyInfo(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+		propertyAddress.mScope = kAudioObjectPropertyScopeGlobal;
+		propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+		
+		// err = AudioDeviceGetPropertyInfo(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+		
+		err = AudioObjectGetPropertyDataSize(devices[i], &propertyAddress, 0, NULL, &count);
+		
 		if (err != kAudioHardwareNoError)
 		{
 			break;
 		}
 
 		char *name = (char*)malloc(count);
-		err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, name);
+		// err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, name);
+		err = AudioObjectGetPropertyData(devices[i], &propertyAddress, 0, NULL, &count, name);
 		if (err != kAudioHardwareNoError)
 		{
 			free(name);
diff --git a/lang/LangPrimSource/SC_CoreMIDI.cpp b/lang/LangPrimSource/SC_CoreMIDI.cpp
index ea9d006..9431ac3 100644
--- a/lang/LangPrimSource/SC_CoreMIDI.cpp
+++ b/lang/LangPrimSource/SC_CoreMIDI.cpp
@@ -28,8 +28,12 @@ added prRestartMIDI
 19/9 call different actions,disconnect midiInPort, midiout: sendmidi
 04/feb/03 prListMIDIEndpoints modification by Ron Kuivila added jt.
 */
+#if SC_IPHONE
+#include <mach/mach_time.h>
+#else
 #include <CoreAudio/HostTime.h>
 #include <Carbon/Carbon.h>
+#endif
 #include <CoreMIDI/CoreMIDI.h>
 #include <vector>
 #include "SCBase.h"
@@ -665,20 +669,45 @@ int prSendSysex(VMGlobals *g, int numArgsPushed)
 	return ((MIDISendSysex(pk) == (OSStatus)0) ? errNone : errFailed);
 }
 
+#if SC_IPHONE
+
+static struct mach_timebase_info machTimebaseInfo() {
+    struct mach_timebase_info info;
+    mach_timebase_info(&info);
+    return info;
+}
+
+static MIDITimeStamp midiTime(float latencySeconds)
+{
+    // add the latency expressed in seconds, to the current host time base.
+    static struct mach_timebase_info info = machTimebaseInfo(); // cache the timebase info.
+    Float64 latencyNanos = 1000000000 * latencySeconds;
+    MIDITimeStamp latencyMIDI = (latencyNanos / (Float64)info.numer) * (Float64)info.denom;
+    return (MIDITimeStamp)mach_absolute_time() + latencyMIDI;
+}
+
+#else
+
+static MIDITimeStamp midiTime(float latencySeconds)
+{
+    // add the latency expressed in seconds, to the current host time base.
+    UInt64 latencyNanos =  1000000000 * latencySeconds ; //secs to nano
+    return (MIDITimeStamp)AudioGetCurrentHostTime() + AudioConvertNanosToHostTime(latencyNanos);
+}
+
+#endif
+
 void sendmidi(int port, MIDIEndpointRef dest, int length, int hiStatus, int loStatus, int aval, int bval, float late);
 void sendmidi(int port, MIDIEndpointRef dest, int length, int hiStatus, int loStatus, int aval, int bval, float late)
 {
 	MIDIPacketList mpktlist;
 	MIDIPacketList * pktlist = &mpktlist;
 	MIDIPacket * pk = MIDIPacketListInit(pktlist);
-	//lets add some latency
-	float  latency =  1000000000 * late ; //secs to nano
-	UInt64  utime = AudioConvertNanosToHostTime( AudioConvertHostTimeToNanos(AudioGetCurrentHostTime()) + (UInt64)latency);
 	ByteCount nData = (ByteCount) length;
 	pk->data[0] = (Byte) (hiStatus & 0xF0) | (loStatus & 0x0F);
 	pk->data[1] = (Byte) aval;
 	pk->data[2] = (Byte) bval;
-	pk = MIDIPacketListAdd(pktlist, sizeof(struct MIDIPacketList) , pk,(MIDITimeStamp) utime,nData,pk->data);
+	pk = MIDIPacketListAdd(pktlist, sizeof(struct MIDIPacketList) , pk, midiTime(late), nData, pk->data);
 	/*OSStatus error =*/ MIDISend(gMIDIOutPort[port],  dest, pktlist );
 }
 
diff --git a/lang/LangPrimSource/SC_Speech.M b/lang/LangPrimSource/SC_Speech.M
index 4a22654..4c29206 100644
--- a/lang/LangPrimSource/SC_Speech.M
+++ b/lang/LangPrimSource/SC_Speech.M
@@ -147,7 +147,6 @@ int prSpeakText(struct VMGlobals *g, int numArgsPushed);
 int prSpeakText(struct VMGlobals *g, int numArgsPushed){
 
 	OSErr theErr = noErr;
-	PyrSlot *obj = g->sp-2;
 	PyrSlot *a = g->sp-1;
 	PyrSlot *str = g->sp;
 
@@ -156,7 +155,6 @@ int prSpeakText(struct VMGlobals *g, int numArgsPushed){
 
 	slotIntVal(a, &chan);
 	chan = sc_clip(chan, 0, kMaxSpeechChannels);
-	PyrString* pyrString = slotRawString(str);
 #ifdef useCarbonSpeech
 	chan = sc_clip(chan, 0, kMaxSpeechChannels);
 	if(speechStrings[chan] != NULL) {
@@ -312,7 +310,6 @@ int prSetSpeechPause(struct VMGlobals *g, int numArgsPushed){
 int prSetSpeechStop(struct VMGlobals *g, int numArgsPushed);
 int prSetSpeechStop(struct VMGlobals *g, int numArgsPushed){
 
-	OSErr theErr = noErr;
 	//PyrSlot *a = g->sp-2;
 	PyrSlot *b = g->sp-1;
 	PyrSlot *c = g->sp;
@@ -380,7 +377,7 @@ int prGetSpeechVoiceNames(struct VMGlobals *g, int numArgsPushed){
 		NSDictionary * dictionaryOfVoiceAttributes = [NSSpeechSynthesizer attributesForVoice:aVoice];
 		NSString *	voiceDisplayName = [dictionaryOfVoiceAttributes objectForKey:NSVoiceName];
 
-		PyrString *namestring = newPyrString(g->gc, [voiceDisplayName cString], 0, true);
+		PyrString *namestring = newPyrString(g->gc, [voiceDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]], 0, true);
 		SetObject(allVoices->slots+allVoices->size++, namestring);
 		g->gc->GCWrite(allVoices, (PyrObject*) namestring);
 
diff --git a/lang/LangPrimSource/SC_Wii.cpp b/lang/LangPrimSource/SC_Wii.cpp
index d9bcea9..8540cc5 100644
--- a/lang/LangPrimSource/SC_Wii.cpp
+++ b/lang/LangPrimSource/SC_Wii.cpp
@@ -61,7 +61,7 @@
 	}
 #endif // SC_DARWIN
 
-#ifdef SC_LINUX
+#ifdef __linux__
 	#include <stdint.h>
 	#include <stdio.h>
 	#include <stdlib.h>
@@ -73,7 +73,7 @@
 // 	#include <wiimote_event.h>
 // 	#include <wiimote_link.h>
 	}
-#endif // SC_LINUX
+#endif // __linux__
 
 // common:
 #include <string.h>
@@ -125,7 +125,7 @@ struct SC_WII
 
 	bool update();
 
-#ifdef SC_LINUX
+#ifdef __linux__
 	void handleBatteryEvent( uint8_t battery );
 	void handleButtonEvent( uint16_t buttons );
 	void handleAccEvent( uint8_t acc[3] );
@@ -160,7 +160,7 @@ struct SC_WII
 	WiiRemoteRef	m_wiiremote;
 	char			m_address[32];
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 	cwiid_wiimote_t *m_wiiremote;
 	int id;
 	unsigned char rpt_mode;
@@ -183,7 +183,7 @@ public:
 
 	int start( float updtime );
 	int stop();
-#ifdef SC_LINUX
+#ifdef __linux__
 	cwiid_wiimote_t *  discover();
 #endif
 #ifdef SC_DARWIN
@@ -207,7 +207,7 @@ private:
 };
 
 
-#ifdef SC_LINUX
+#ifdef __linux__
 /// linux specific cwiid functions
 #define toggle_bit(bf,b)	\
 	(bf) = ((bf) & b)		\
@@ -291,7 +291,7 @@ SC_WIIManager::SC_WIIManager()
 	: m_running(false),
 	  m_devices(0)
 {
-#ifdef SC_LINUX
+#ifdef __linux__
 	cwiid_set_err(err);
 #endif
 
@@ -349,7 +349,7 @@ int SC_WIIManager::start( float updtime )
 	return errNone;
 }
 
-#ifdef SC_LINUX
+#ifdef __linux__
 cwiid_wiimote_t * SC_WIIManager::discover()
 {
 	bdaddr_t bdaddr = {0, 0, 0, 0, 0, 0};
@@ -419,7 +419,7 @@ int SC_WIIManager::add(SC_WII* dev)
 		m_devices = dev;
 	}
 
-#ifdef SC_LINUX
+#ifdef __linux__
  	dev->id = cwiid_get_id( dev->m_wiiremote );
 
 	if (cwiid_enable(dev->m_wiiremote, CWIID_FLAG_MESG_IFC)) {
@@ -459,7 +459,7 @@ int SC_WIIManager::remove(SC_WII* dev)
 	return errFailed;
 }
 
-#ifdef SC_LINUX
+#ifdef __linux__
 void cwiid_callback(cwiid_wiimote_t *wiimotet, int mesg_count,
                     union cwiid_mesg mesg[], struct timespec *timestamp)
 {
@@ -567,7 +567,7 @@ SC_WII::SC_WII(PyrObject* obj)
 	: m_next(0),
 	  m_obj(obj)
 {
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 	m_report = nil;
 // #endif
 	m_wiiremote = NULL;
@@ -602,7 +602,7 @@ bool SC_WII::open()
 // 		return SC_WIIManager::instance().add(this);
 		}
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 //  	m_wiiremote = (wiimote_t*)malloc(sizeof(wiimote_t));
 // 	m_report = (wiimote_report_t)malloc(sizeof(wiimote_report_t));
 //  	if ( m_wiiremote != NULL )
@@ -627,7 +627,7 @@ bool SC_WII::close()
 		m_wiiremote = NULL;
 		m_searching = 0;
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 		if ( cwiid_close( m_wiiremote ) ){
 // 			m_wiiremote = NULL;
 			post( "error closing device\n" );
@@ -665,7 +665,7 @@ bool SC_WII::wii_connect()
 			m_connected = false;
 	}
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 // 	if (wiimote_connect(m_wiiremote, m_address) < 0) {
 // 		post("WII: unable to open wiimote: %s at address %s\n", wiimote_get_error(), m_address);
 // 		post("WII: unable to open wiimote at address %s\n",m_address);
@@ -709,7 +709,7 @@ bool SC_WII::wii_disconnect()
 	wiiremote_stopsearch( m_wiiremote );
 	result = wiiremote_disconnect( m_wiiremote);
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 // 	result = wiimote_disconnect(m_wiiremote);
 #endif
 
@@ -721,7 +721,7 @@ bool SC_WII::wii_disconnect()
 
 int SC_WII::enable( bool enab )
 {
-#ifdef SC_LINUX
+#ifdef __linux__
 	if ( enab ) {
 		if (cwiid_enable(m_wiiremote, CWIID_FLAG_MESG_IFC)) {
 		return errFailed;
@@ -938,7 +938,7 @@ void SC_WII::handleEvent()
 }
 #endif
 
-#ifdef SC_LINUX
+#ifdef __linux__
 void SC_WII::handleBatteryEvent( uint8_t battery ){
 	pthread_mutex_lock(&gLangMutex);
 	if (compiledOK) {
@@ -953,7 +953,7 @@ void SC_WII::handleBatteryEvent( uint8_t battery ){
 }
 #endif
 
-#ifdef SC_LINUX
+#ifdef __linux__
 void SC_WII::handleExtensionEvent( int ext_type ){
 	pthread_mutex_lock(&gLangMutex);
 	if (compiledOK) {
@@ -968,7 +968,7 @@ void SC_WII::handleExtensionEvent( int ext_type ){
 }
 #endif
 
-#ifdef SC_LINUX
+#ifdef __linux__
 void SC_WII::handleButtonEvent( uint16_t buttons ){
 	pthread_mutex_lock(&gLangMutex);
 	if (compiledOK) {
@@ -1003,7 +1003,7 @@ void SC_WII::handleButtonEvent( uint16_t buttons ){
 }
 #endif
 
-#ifdef SC_LINUX
+#ifdef __linux__
 void SC_WII::handleAccEvent( uint8_t acc[3] ){
 	pthread_mutex_lock(&gLangMutex);
 	if (compiledOK) {
@@ -1020,7 +1020,7 @@ void SC_WII::handleAccEvent( uint8_t acc[3] ){
 }
 #endif
 
-#ifdef SC_LINUX
+#ifdef __linux__
 void SC_WII::handleNunchukEvent( struct cwiid_nunchuk_mesg nunchuk ){
 	pthread_mutex_lock(&gLangMutex);
 	if (compiledOK) {
@@ -1047,7 +1047,7 @@ void SC_WII::handleNunchukEvent( struct cwiid_nunchuk_mesg nunchuk ){
 }
 #endif
 
-#ifdef SC_LINUX
+#ifdef __linux__
 void SC_WII::handleClassicEvent( struct cwiid_classic_mesg classic ){
 	pthread_mutex_lock(&gLangMutex);
 	if (compiledOK) {
@@ -1091,7 +1091,7 @@ void SC_WII::handleClassicEvent( struct cwiid_classic_mesg classic ){
 }
 #endif
 
-#ifdef SC_LINUX
+#ifdef __linux__
 void SC_WII::handleIREvent( int id, cwiid_ir_src ir ){
 	pthread_mutex_lock(&gLangMutex);
 	if (compiledOK) {
@@ -1165,7 +1165,7 @@ int prWii_Discover(VMGlobals* g, int numArgsPushed)
 	PyrObject* allDevsArray = slotRawObject(&args[1]);
 	PyrSlot* slotsArray = allDevsArray->slots;
 
-#ifdef SC_LINUX
+#ifdef __linux__
 	cwiid_wiimote_t * thiswii;
 
 	thiswii = SC_WIIManager::instance().discover();
@@ -1191,7 +1191,7 @@ int prWii_Discover(VMGlobals* g, int numArgsPushed)
 
 // 	if (!dev) return errFailed;
 // 	free( dev->m_wiiremote );
-#ifdef SC_LINUX
+#ifdef __linux__
 	dev->m_wiiremote = thiswii;
 #endif
 	if ( SC_WIIManager::instance().add( dev ) ) {
@@ -1266,7 +1266,7 @@ int prWiiAddress(VMGlobals *g, int numArgsPushed)
 // 	SC_WII* dev = SC_WII::getDevice(obj);
 // 	if (!dev) return errFailed;
 //
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 	char path[19];
 // #endif
 // #ifdef SC_DARWIN
@@ -1359,7 +1359,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 			SetFloat(infoObj->slots+17, dev->m_wiiremote->nunchukJoyStickCalibData.y_center);
 		}
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 /*		SetInt(infoObj->slots+0, dev->m_wiiremote->cal.x_zero);
 		SetInt(infoObj->slots+1, dev->m_wiiremote->cal.y_zero);
 		SetInt(infoObj->slots+2, dev->m_wiiremote->cal.z_zero);
@@ -1418,7 +1418,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // 		SetInt(bslots+2, dev->m_wiiremote->isLED3Illuminated);
 // 		SetInt(bslots+3, dev->m_wiiremote->isLED4Illuminated);
 // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		SetInt(bslots+0, dev->m_wiiremote->led.one);
 // 		SetInt(bslots+1, dev->m_wiiremote->led.two);
 // 		SetInt(bslots+2, dev->m_wiiremote->led.three);
@@ -1461,7 +1461,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // // 		SetInt(bslots+2, dev->m_wiiremote->isLED3Illuminated);
 // // 		SetInt(bslots+3, dev->m_wiiremote->isLED4Illuminated);
 // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		SetInt(bslots+0, dev->m_wiiremote->keys.left);
 // 		SetInt(bslots+1, dev->m_wiiremote->keys.right);
 // 		SetInt(bslots+2, dev->m_wiiremote->keys.down);
@@ -1511,7 +1511,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // // 		SetInt(bslots+2, dev->m_wiiremote->isLED3Illuminated);
 // // 		SetInt(bslots+3, dev->m_wiiremote->isLED4Illuminated);
 // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		SetInt(bslots+0, dev->m_wiiremote->axis.x);
 // 		SetInt(bslots+1, dev->m_wiiremote->axis.y);
 // 		SetInt(bslots+2, dev->m_wiiremote->axis.z);
@@ -1553,7 +1553,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // // 		SetInt(bslots+2, dev->m_wiiremote->isLED3Illuminated);
 // // 		SetInt(bslots+3, dev->m_wiiremote->isLED4Illuminated);
 // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		SetInt(bslots+0, dev->m_wiiremote->ir1.x);
 // 		SetInt(bslots+1, dev->m_wiiremote->ir1.y);
 // 		SetInt(bslots+2, dev->m_wiiremote->ir1.size);
@@ -1595,7 +1595,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // // 		SetInt(bslots+2, dev->m_wiiremote->isLED3Illuminated);
 // // 		SetInt(bslots+3, dev->m_wiiremote->isLED4Illuminated);
 // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		SetInt(bslots+0, dev->m_wiiremote->ext.nunchuk.keys.z);
 // 		SetInt(bslots+1, dev->m_wiiremote->ext.nunchuk.keys.c);
 // #endif
@@ -1636,7 +1636,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // // 		SetInt(bslots+2, dev->m_wiiremote->isLED3Illuminated);
 // // 		SetInt(bslots+3, dev->m_wiiremote->isLED4Illuminated);
 // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		SetInt(bslots+0, dev->m_wiiremote->ext.nunchuk.joyx);
 // 		SetInt(bslots+1, dev->m_wiiremote->ext.nunchuk.joyy);
 // #endif
@@ -1677,7 +1677,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // // 		SetInt(bslots+2, dev->m_wiiremote->isLED3Illuminated);
 // // 		SetInt(bslots+3, dev->m_wiiremote->isLED4Illuminated);
 // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		SetInt(bslots+0, dev->m_wiiremote->ext.nunchuk.axis.x);
 // 		SetInt(bslots+1, dev->m_wiiremote->ext.nunchuk.axis.y);
 // 		SetInt(bslots+2, dev->m_wiiremote->ext.nunchuk.axis.z);
@@ -1710,7 +1710,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // 		else
 // 			SetInt( args, 0 );
 // #endif
-// // #ifdef SC_LINUX
+// // #ifdef __linux__
 // // 		if ( dev->m_wiiremote->mode.ext == 1 )
 // // 			SetInt( args, dev->m_wiiremote->ext.id );
 // // 		else
@@ -1744,7 +1744,7 @@ int prWiiCalibration(VMGlobals *g, int numArgsPushed)
 // 		else
 // 			SetFloat( args, 0 );
 // #endif
-// // #ifdef SC_LINUX
+// // #ifdef __linux__
 // // 		SetFloat( args, dev->m_wiiremote->battery );
 // // #endif
 // 	}
@@ -1793,7 +1793,7 @@ int prWiiSetLED(VMGlobals *g, int numArgsPushed)
 //		if ( !result )
 //			dev->wii_disconnect();
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 	if ( enable1 )
 		set_bit(&dev->led_state, CWIID_LED1_ON);
 	else
@@ -1847,7 +1847,7 @@ int prWiiSetVibration(VMGlobals *g, int numArgsPushed)
 //			dev->wii_disconnect();
 // 	post( "WII: rumble %i %i", enable1, result );
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 		if (cwiid_set_rumble(dev->m_wiiremote, (unsigned char) enable1)) {
 			return errFailed;
 		}
@@ -1884,7 +1884,7 @@ int prWiiSetExpansion(VMGlobals *g, int numArgsPushed)
 //		if ( !result )
 //			dev->wii_disconnect();
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 		if ( enable1 )
 			set_bit(&dev->rpt_mode, CWIID_RPT_EXT);
 		else
@@ -1925,7 +1925,7 @@ int prWiiSetIRSensor(VMGlobals *g, int numArgsPushed)
 //			dev->wii_disconnect();
 
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 		if ( enable1 )
 			set_bit(&dev->rpt_mode, CWIID_RPT_IR);
 		else
@@ -1965,7 +1965,7 @@ int prWiiSetMotionSensor(VMGlobals *g, int numArgsPushed)
 //		if ( !result )
 //			dev->wii_disconnect();
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 		if ( enable1 )
 			set_bit(&dev->rpt_mode, CWIID_RPT_ACC);
 		else
@@ -2003,7 +2003,7 @@ int prWiiSetButtons(VMGlobals *g, int numArgsPushed)
 // buttons are always enabled
 // 		result = wiiremote_motionsensor( dev->m_wiiremote, enable1 );
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 		if ( enable1 )
 			set_bit(&dev->rpt_mode, CWIID_RPT_BTN);
 		else
@@ -2041,7 +2041,7 @@ int prWiiEnable(VMGlobals *g, int numArgsPushed)
 // is always enabled
 // 		result = wiiremote_motionsensor( dev->m_wiiremote, enable1 );
 #endif
-#ifdef SC_LINUX
+#ifdef __linux__
 		dev->enable( enable1 );
 #endif
 	}
@@ -2084,7 +2084,7 @@ int prWiiEnable(VMGlobals *g, int numArgsPushed)
 // // #ifdef SC_DARWIN
 // // 		result = wiiremote_motionsensor( dev->m_wiiremote, enable1 );
 // // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		uint8_t sample[20] = {
 // 			0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
 // 			0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c
@@ -2126,7 +2126,7 @@ int prWiiEnable(VMGlobals *g, int numArgsPushed)
 // // #ifdef SC_DARWIN
 // // 		result = wiiremote_motionsensor( dev->m_wiiremote, enable1 );
 // // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		if ( enable1 )
 // 			wiimote_speaker_enable(dev->m_wiiremote);
 // 		else
@@ -2165,7 +2165,7 @@ int prWiiEnable(VMGlobals *g, int numArgsPushed)
 // // #ifdef SC_DARWIN
 // // 		result = wiiremote_motionsensor( dev->m_wiiremote, enable1 );
 // // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		if ( enable1 )
 // 			dev->speaker_init( 4 );
 // 		else
@@ -2204,7 +2204,7 @@ int prWiiEnable(VMGlobals *g, int numArgsPushed)
 // // #ifdef SC_DARWIN
 // // 		result = wiiremote_motionsensor( dev->m_wiiremote, enable1 );
 // // #endif
-// #ifdef SC_LINUX
+// #ifdef __linux__
 // 		if ( enable1 )
 // 			wiimote_speaker_mute(dev->m_wiiremote);
 // 		else
diff --git a/lang/LangSource/Bison/lang11d b/lang/LangSource/Bison/lang11d
index c840c06..92a8749 100644
--- a/lang/LangSource/Bison/lang11d
+++ b/lang/LangSource/Bison/lang11d
@@ -33,7 +33,7 @@ extern LongStack generatorStack;
 
 
 %}
-
+%error-verbose
 %%
 
 root	: classes
@@ -1266,7 +1266,6 @@ slotliteral
 		| falseobj	{ $$ = (long)newPyrLiteralNode((PyrSlotNode*)$1, NULL); }
 		| nilobj	{ $$ = (long)newPyrLiteralNode((PyrSlotNode*)$1, NULL); }
 		| listlit	{ $$ = (long)newPyrLiteralNode(NULL, (PyrParseNode*)$1); }
-		| dictlit   { $$ = (long)newPyrLiteralNode(NULL, (PyrParseNode*)$1); }
 		;
 
 blockliteral : block	{ $$ = (long)newPyrPushLitNode(NULL, (PyrParseNode*)$1); }
@@ -1284,7 +1283,6 @@ pushliteral	: integer	{ $$ = (long)newPyrPushLitNode((PyrSlotNode*)$1, NULL); }
 			| falseobj	{ $$ = (long)newPyrPushLitNode((PyrSlotNode*)$1, NULL); }
 			| nilobj	{ $$ = (long)newPyrPushLitNode((PyrSlotNode*)$1, NULL); }
 			| listlit	{ $$ = (long)newPyrPushLitNode(NULL, (PyrParseNode*)$1); }
-			| dictlit	{ $$ = (long)newPyrPushLitNode(NULL, (PyrParseNode*)$1); }
 			;
 
 listliteral	: integer	{ $$ = (long)newPyrLiteralNode((PyrSlotNode*)$1, NULL); }
@@ -1421,10 +1419,6 @@ rwslotdef		: rwspec name
 					{ $$ = (long)newPyrVarDefNode((PyrSlotNode*)$2, (PyrParseNode*)$4, $1); }
 				;
 
-dictlit		:	'#' '(' litdictslotlist ')'
-				{ $$ = (long)newPyrLitDictNode((PyrParseNode*)$3); }
-			;
-
 dictlit2	: '(' litdictslotlist ')'
 				{ $$ = (long)newPyrLitDictNode((PyrParseNode*)$2); }
 			;
diff --git a/lang/LangSource/Bison/lang11d_tab.cpp b/lang/LangSource/Bison/lang11d_tab.cpp
index bfb0fcc..3257038 100644
--- a/lang/LangSource/Bison/lang11d_tab.cpp
+++ b/lang/LangSource/Bison/lang11d_tab.cpp
@@ -103,7 +103,7 @@ extern LongStack generatorStack;
 # undef YYERROR_VERBOSE
 # define YYERROR_VERBOSE 1
 #else
-# define YYERROR_VERBOSE 0
+# define YYERROR_VERBOSE 1
 #endif
 
 /* Enabling the token table.  */
@@ -379,18 +379,18 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  68
+#define YYFINAL  67
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1887
+#define YYLAST   1945
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  55
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  102
+#define YYNNTS  101
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  295
+#define YYNRULES  292
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  539
+#define YYNSTATES  534
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -457,62 +457,62 @@ static const yytype_uint16 yyprhs[] =
      678,   680,   684,   686,   690,   692,   696,   698,   700,   702,
      704,   706,   708,   710,   712,   714,   716,   718,   720,   722,
      724,   726,   728,   730,   732,   734,   736,   738,   740,   742,
-     744,   746,   748,   750,   752,   754,   756,   758,   760,   762,
-     768,   774,   775,   778,   780,   783,   787,   788,   792,   798,
-     802,   808,   810,   814,   819,   820,   822,   824,   828,   830,
-     834,   840,   841,   843,   845,   849,   851,   855,   860,   864,
-     867,   869,   873,   874,   877,   879,   883,   886,   891,   896,
-     900,   904,   907,   909,   913,   914,   917,   922,   928,   932,
-     937,   938,   941,   943,   947,   948,   950,   952,   954,   955,
-     957,   959,   962,   964,   967,   969,   972,   974,   976,   978,
-     981,   984,   986,   989,   991,   993,   995,   997,   999,  1001,
-    1003,  1005,  1007,  1009,  1011,  1013,  1015,  1017,  1019,  1021,
-    1023,  1025,  1027,  1029,  1031,  1033
+     744,   746,   748,   750,   752,   754,   756,   758,   764,   770,
+     771,   774,   776,   779,   783,   784,   788,   794,   798,   804,
+     806,   810,   815,   816,   818,   820,   824,   826,   830,   836,
+     837,   839,   841,   845,   847,   851,   856,   860,   863,   865,
+     869,   870,   873,   875,   879,   882,   887,   891,   895,   898,
+     900,   904,   905,   908,   913,   919,   923,   928,   929,   932,
+     934,   938,   939,   941,   943,   945,   946,   948,   950,   953,
+     955,   958,   960,   963,   965,   967,   969,   972,   975,   977,
+     980,   982,   984,   986,   988,   990,   992,   994,   996,   998,
+    1000,  1002,  1004,  1006,  1008,  1010,  1012,  1014,  1016,  1018,
+    1020,  1022,  1024
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
       56,     0,    -1,    57,    -1,    58,    -1,    26,    71,    -1,
-      -1,    57,    59,    -1,    60,    -1,    58,    60,    -1,   144,
-      62,    44,    63,    65,    45,    -1,   144,    46,    61,    47,
-      62,    44,    63,    65,    45,    -1,    36,   144,    44,    65,
-      45,    -1,    -1,   143,    -1,    -1,    30,   144,    -1,    -1,
+      -1,    57,    59,    -1,    60,    -1,    58,    60,    -1,   143,
+      62,    44,    63,    65,    45,    -1,   143,    46,    61,    47,
+      62,    44,    63,    65,    45,    -1,    36,   143,    44,    65,
+      45,    -1,    -1,   142,    -1,    -1,    30,   143,    -1,    -1,
       63,    64,    -1,    15,   125,    48,    -1,    13,   125,    48,
-      -1,    16,   114,    48,    -1,    -1,    65,    66,    -1,   143,
-      44,   113,   110,    73,    72,    45,    -1,    35,   143,    44,
-     113,   110,    73,    72,    45,    -1,   153,    44,   113,   110,
-      73,    72,    45,    -1,    35,   153,    44,   113,   110,    73,
+      -1,    16,   114,    48,    -1,    -1,    65,    66,    -1,   142,
+      44,   113,   110,    73,    72,    45,    -1,    35,   142,    44,
+     113,   110,    73,    72,    45,    -1,   152,    44,   113,   110,
+      73,    72,    45,    -1,    35,   152,    44,   113,   110,    73,
       72,    45,    -1,    -1,    48,    -1,    -1,    49,    -1,    -1,
       31,    -1,    75,    -1,    94,    75,    -1,    50,   111,    70,
       51,    -1,   111,    70,    -1,    70,    -1,    74,    -1,    94,
-      74,    -1,    -1,   145,    67,    -1,    -1,    52,    91,    67,
+      74,    -1,    -1,   144,    67,    -1,    -1,    52,    91,    67,
       -1,    -1,    52,    91,    67,    -1,    77,    -1,    76,    77,
-      -1,   105,    -1,    80,    -1,    -1,    76,    -1,   143,    76,
-      -1,    50,   155,    51,    76,    -1,   143,    50,    51,    76,
-      -1,   143,    50,    97,   101,    51,    78,    -1,    50,   155,
-      51,    50,    51,    76,    -1,    50,   155,    51,    50,    97,
-     101,    51,    78,    -1,   143,    50,    98,   101,    51,    -1,
-      50,   155,    51,    50,    98,   101,    51,    -1,   144,    46,
-      95,    47,    -1,   144,    76,    -1,   144,    50,    51,    78,
-      -1,   144,    50,    99,    68,    51,    78,    -1,   144,    50,
-      97,   101,    51,    78,    -1,   144,    50,    98,   101,    51,
+      -1,   105,    -1,    80,    -1,    -1,    76,    -1,   142,    76,
+      -1,    50,   154,    51,    76,    -1,   142,    50,    51,    76,
+      -1,   142,    50,    97,   101,    51,    78,    -1,    50,   154,
+      51,    50,    51,    76,    -1,    50,   154,    51,    50,    97,
+     101,    51,    78,    -1,   142,    50,    98,   101,    51,    -1,
+      50,   154,    51,    50,    98,   101,    51,    -1,   143,    46,
+      95,    47,    -1,   143,    76,    -1,   143,    50,    51,    78,
+      -1,   143,    50,    99,    68,    51,    78,    -1,   143,    50,
+      97,   101,    51,    78,    -1,   143,    50,    98,   101,    51,
       -1,    91,    41,    50,    51,    78,    -1,    91,    41,    50,
-      99,    68,    51,    78,    -1,    91,    41,   143,    50,    99,
+      99,    68,    51,    78,    -1,    91,    41,   142,    50,    99,
       68,    51,    78,    -1,    91,    41,    50,    97,   101,    51,
       78,    -1,    91,    41,    50,    98,   101,    51,    -1,    91,
-      41,   143,    50,    51,    78,    -1,    91,    41,   143,    50,
-      97,   101,    51,    78,    -1,    91,    41,   143,    50,    98,
-     101,    51,    -1,    91,    41,   143,    78,    -1,    -1,    44,
+      41,   142,    50,    51,    78,    -1,    91,    41,   142,    50,
+      97,   101,    51,    78,    -1,    91,    41,   142,    50,    98,
+     101,    51,    -1,    91,    41,   142,    78,    -1,    -1,    44,
       30,    94,    81,    49,    84,    45,    -1,    -1,    44,    48,
       94,    82,    49,    84,    45,    -1,    -1,    49,    84,    -1,
-     143,    28,    94,    83,    -1,   143,   143,    28,    94,    83,
-      -1,    13,   143,    31,    94,    83,    -1,    94,    83,    -1,
+     142,    28,    94,    83,    -1,   142,   142,    28,    94,    83,
+      -1,    13,   142,    31,    94,    83,    -1,    94,    83,    -1,
       30,    30,    94,    83,    -1,    30,    29,    94,    83,    -1,
-     107,    -1,   105,    -1,    80,    -1,   106,    -1,   156,    -1,
-      79,    -1,    50,    94,    51,    -1,    53,   143,    -1,    46,
+     107,    -1,   105,    -1,    80,    -1,   106,    -1,   155,    -1,
+      79,    -1,    50,    94,    51,    -1,    53,   142,    -1,    46,
       95,    47,    -1,    50,    89,    51,    -1,    50,    30,    90,
-      51,    -1,    50,   124,    51,    -1,   152,    -1,    85,    46,
+      51,    -1,    50,   124,    51,    -1,   151,    -1,    85,    46,
       97,    47,    -1,    86,    -1,    85,    46,    97,    22,    47,
       -1,    85,    46,    22,    94,    47,    -1,    85,    46,    97,
       22,    94,    47,    -1,    85,    46,    97,    22,    47,    31,
@@ -527,56 +527,55 @@ static const yytype_int16 yyrhs[] =
       49,    94,    22,    94,    -1,    94,    49,    94,    22,    -1,
       22,    94,    -1,    94,    22,    -1,    94,    22,    94,    -1,
       94,    49,    94,    22,    -1,    94,    49,    94,    22,    94,
-      -1,    85,    -1,    88,    -1,    87,    -1,   144,    -1,    91,
-      41,    46,    97,    47,    -1,    42,    91,    -1,    91,   155,
-      92,    91,    -1,   143,    31,    91,    -1,    53,   143,    31,
-      91,    -1,    91,    41,   143,    31,    91,    -1,   143,    50,
+      -1,    85,    -1,    88,    -1,    87,    -1,   143,    -1,    91,
+      41,    46,    97,    47,    -1,    42,    91,    -1,    91,   154,
+      92,    91,    -1,   142,    31,    91,    -1,    53,   142,    31,
+      91,    -1,    91,    41,   142,    31,    91,    -1,   142,    50,
       97,   101,    51,    31,    91,    -1,    54,   102,    31,    91,
       -1,    85,    46,    97,    47,    31,    91,    -1,    91,    41,
-      46,    97,    47,    31,    91,    -1,    -1,    41,   143,    -1,
-      41,   138,    -1,    41,    50,    94,    51,    -1,    91,    -1,
+      46,    97,    47,    31,    91,    -1,    -1,    41,   142,    -1,
+      41,   137,    -1,    41,    50,    94,    51,    -1,    91,    -1,
       93,    48,    91,    -1,    93,    67,    -1,    -1,    96,    68,
-      -1,    94,    -1,    94,    30,    94,    -1,   154,    94,    -1,
-      96,    49,    94,    -1,    96,    49,   154,    94,    -1,    96,
+      -1,    94,    -1,    94,    30,    94,    -1,   153,    94,    -1,
+      96,    49,    94,    -1,    96,    49,   153,    94,    -1,    96,
       49,    94,    30,    94,    -1,    94,    -1,    97,    49,    94,
       -1,    35,    94,    -1,    97,    49,    35,    94,    -1,   100,
-      -1,    99,    49,   100,    -1,   154,    94,    -1,    68,    -1,
-      49,    99,    68,    -1,   103,    -1,   103,    21,   143,    -1,
-     143,    -1,   103,    49,   143,    -1,   138,    -1,   142,    -1,
-     149,    -1,   151,    -1,   150,    -1,   146,    -1,   147,    -1,
-     148,    -1,   132,    -1,   127,    -1,   109,    -1,   143,    -1,
-     138,    -1,   142,    -1,   149,    -1,   151,    -1,   150,    -1,
-     146,    -1,   147,    -1,   148,    -1,   132,    -1,   127,    -1,
-     138,    -1,   142,    -1,   149,    -1,   151,    -1,   150,    -1,
-     143,    -1,   146,    -1,   147,    -1,   148,    -1,   133,    -1,
-     128,    -1,    44,   113,   110,    70,    45,    -1,    24,   113,
-     110,    70,    45,    -1,    -1,   110,   112,    -1,   112,    -1,
-     111,   112,    -1,    13,   120,    48,    -1,    -1,    14,   120,
-      48,    -1,    14,   119,    21,   143,    48,    -1,    37,   117,
-      37,    -1,    37,   116,    21,   143,    37,    -1,   115,    -1,
-     114,    68,   115,    -1,   137,   143,    31,   104,    -1,    -1,
-     117,    -1,   118,    -1,   117,    68,   118,    -1,   143,    -1,
-     143,    69,   104,    -1,   143,    69,    50,    94,    51,    -1,
-      -1,   120,    -1,   121,    -1,   120,    49,   121,    -1,   143,
-      -1,   143,    31,    91,    -1,   143,    50,    94,    51,    -1,
-      94,    30,    94,    -1,   154,    94,    -1,   122,    -1,   123,
-      49,   122,    -1,    -1,   123,    68,    -1,   126,    -1,   125,
-      49,   126,    -1,   136,   143,    -1,   136,   143,    31,   104,
-      -1,    54,    50,   131,    51,    -1,    50,   131,    51,    -1,
-     108,    30,   108,    -1,   154,   108,    -1,   129,    -1,   130,
-      49,   129,    -1,    -1,   130,    68,    -1,    54,    46,   134,
-      47,    -1,    54,   144,    46,   134,    47,    -1,    46,   134,
-      47,    -1,   144,    46,   134,    47,    -1,    -1,   135,    68,
-      -1,   108,    -1,   135,    49,   108,    -1,    -1,    33,    -1,
-      38,    -1,    34,    -1,    -1,    33,    -1,     4,    -1,    32,
-       4,    -1,     5,    -1,    32,     5,    -1,     6,    -1,    32,
-       6,    -1,    23,    -1,   139,    -1,   140,    -1,   139,   141,
-      -1,   138,   141,    -1,   141,    -1,    32,   141,    -1,     3,
-      -1,    29,    -1,    11,    -1,    10,    -1,    18,    -1,    19,
-      -1,    17,    -1,     9,    -1,     7,    -1,     8,    -1,    20,
-      -1,    40,    -1,    38,    -1,    33,    -1,    34,    -1,    32,
-      -1,    35,    -1,    36,    -1,    37,    -1,    39,    -1,   153,
-      -1,   154,    -1,    12,    -1
+      -1,    99,    49,   100,    -1,   153,    94,    -1,    68,    -1,
+      49,    99,    68,    -1,   103,    -1,   103,    21,   142,    -1,
+     142,    -1,   103,    49,   142,    -1,   137,    -1,   141,    -1,
+     148,    -1,   150,    -1,   149,    -1,   145,    -1,   146,    -1,
+     147,    -1,   131,    -1,   109,    -1,   142,    -1,   137,    -1,
+     141,    -1,   148,    -1,   150,    -1,   149,    -1,   145,    -1,
+     146,    -1,   147,    -1,   131,    -1,   137,    -1,   141,    -1,
+     148,    -1,   150,    -1,   149,    -1,   142,    -1,   145,    -1,
+     146,    -1,   147,    -1,   132,    -1,   127,    -1,    44,   113,
+     110,    70,    45,    -1,    24,   113,   110,    70,    45,    -1,
+      -1,   110,   112,    -1,   112,    -1,   111,   112,    -1,    13,
+     120,    48,    -1,    -1,    14,   120,    48,    -1,    14,   119,
+      21,   142,    48,    -1,    37,   117,    37,    -1,    37,   116,
+      21,   142,    37,    -1,   115,    -1,   114,    68,   115,    -1,
+     136,   142,    31,   104,    -1,    -1,   117,    -1,   118,    -1,
+     117,    68,   118,    -1,   142,    -1,   142,    69,   104,    -1,
+     142,    69,    50,    94,    51,    -1,    -1,   120,    -1,   121,
+      -1,   120,    49,   121,    -1,   142,    -1,   142,    31,    91,
+      -1,   142,    50,    94,    51,    -1,    94,    30,    94,    -1,
+     153,    94,    -1,   122,    -1,   123,    49,   122,    -1,    -1,
+     123,    68,    -1,   126,    -1,   125,    49,   126,    -1,   135,
+     142,    -1,   135,   142,    31,   104,    -1,    50,   130,    51,
+      -1,   108,    30,   108,    -1,   153,   108,    -1,   128,    -1,
+     129,    49,   128,    -1,    -1,   129,    68,    -1,    54,    46,
+     133,    47,    -1,    54,   143,    46,   133,    47,    -1,    46,
+     133,    47,    -1,   143,    46,   133,    47,    -1,    -1,   134,
+      68,    -1,   108,    -1,   134,    49,   108,    -1,    -1,    33,
+      -1,    38,    -1,    34,    -1,    -1,    33,    -1,     4,    -1,
+      32,     4,    -1,     5,    -1,    32,     5,    -1,     6,    -1,
+      32,     6,    -1,    23,    -1,   138,    -1,   139,    -1,   138,
+     140,    -1,   137,   140,    -1,   140,    -1,    32,   140,    -1,
+       3,    -1,    29,    -1,    11,    -1,    10,    -1,    18,    -1,
+      19,    -1,    17,    -1,     9,    -1,     7,    -1,     8,    -1,
+      20,    -1,    40,    -1,    38,    -1,    33,    -1,    34,    -1,
+      32,    -1,    35,    -1,    36,    -1,    37,    -1,    39,    -1,
+     152,    -1,   153,    -1,    12,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -599,19 +598,19 @@ static const yytype_uint16 yyrline[] =
     1180,  1181,  1184,  1185,  1191,  1194,  1195,  1199,  1200,  1202,
     1207,  1209,  1216,  1224,  1225,  1229,  1231,  1235,  1236,  1240,
     1244,  1245,  1248,  1250,  1254,  1255,  1260,  1261,  1262,  1263,
-    1264,  1265,  1266,  1267,  1268,  1269,  1272,  1275,  1278,  1279,
-    1280,  1281,  1282,  1283,  1284,  1285,  1286,  1287,  1290,  1291,
-    1292,  1293,  1294,  1295,  1296,  1297,  1298,  1299,  1300,  1303,
-    1306,  1311,  1312,  1316,  1317,  1321,  1325,  1326,  1330,  1334,
-    1338,  1344,  1345,  1349,  1353,  1354,  1357,  1358,  1362,  1364,
-    1366,  1374,  1375,  1378,  1379,  1383,  1385,  1387,  1395,  1397,
-    1404,  1405,  1409,  1410,  1413,  1414,  1418,  1420,  1424,  1428,
-    1432,  1434,  1441,  1442,  1446,  1447,  1452,  1454,  1458,  1460,
-    1464,  1465,  1468,  1469,  1473,  1474,  1476,  1478,  1482,  1483,
-    1487,  1488,  1497,  1498,  1507,  1508,  1519,  1522,  1523,  1524,
-    1530,  1538,  1545,  1554,  1555,  1558,  1561,  1564,  1567,  1570,
-    1573,  1576,  1579,  1582,  1585,  1586,  1587,  1588,  1589,  1590,
-    1591,  1592,  1595,  1598,  1599,  1602
+    1264,  1265,  1266,  1267,  1268,  1271,  1274,  1277,  1278,  1279,
+    1280,  1281,  1282,  1283,  1284,  1285,  1288,  1289,  1290,  1291,
+    1292,  1293,  1294,  1295,  1296,  1297,  1298,  1301,  1304,  1309,
+    1310,  1314,  1315,  1319,  1323,  1324,  1328,  1332,  1336,  1342,
+    1343,  1347,  1351,  1352,  1355,  1356,  1360,  1362,  1364,  1372,
+    1373,  1376,  1377,  1381,  1383,  1385,  1393,  1395,  1402,  1403,
+    1407,  1408,  1411,  1412,  1416,  1418,  1422,  1426,  1428,  1435,
+    1436,  1440,  1441,  1446,  1448,  1452,  1454,  1458,  1459,  1462,
+    1463,  1467,  1468,  1470,  1472,  1476,  1477,  1481,  1482,  1491,
+    1492,  1501,  1502,  1513,  1516,  1517,  1518,  1524,  1532,  1539,
+    1548,  1549,  1552,  1555,  1558,  1561,  1564,  1567,  1570,  1573,
+    1576,  1579,  1580,  1581,  1582,  1583,  1584,  1585,  1586,  1589,
+    1592,  1593,  1596
 };
 #endif
 
@@ -641,7 +640,7 @@ static const char *const yytname[] =
   "funcvardecls1", "funcvardecl", "argdecls", "constdeflist", "constdef",
   "slotdeflist0", "slotdeflist", "slotdef", "vardeflist0", "vardeflist",
   "vardef", "dictslotdef", "dictslotlist1", "dictslotlist",
-  "rwslotdeflist", "rwslotdef", "dictlit", "dictlit2", "litdictslotdef",
+  "rwslotdeflist", "rwslotdef", "dictlit2", "litdictslotdef",
   "litdictslotlist1", "litdictslotlist", "listlit", "listlit2",
   "literallistc", "literallist1", "rwspec", "rspec", "integer", "floatr",
   "accidental", "pie", "floatp", "name", "classname", "primname",
@@ -684,19 +683,19 @@ static const yytype_uint8 yyr1[] =
       92,    92,    93,    93,    94,    95,    95,    96,    96,    96,
       96,    96,    96,    97,    97,    98,    98,    99,    99,   100,
      101,   101,   102,   102,   103,   103,   104,   104,   104,   104,
-     104,   104,   104,   104,   104,   104,   105,   106,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   107,   108,   108,
-     108,   108,   108,   108,   108,   108,   108,   108,   108,   109,
-     109,   110,   110,   111,   111,   112,   113,   113,   113,   113,
-     113,   114,   114,   115,   116,   116,   117,   117,   118,   118,
-     118,   119,   119,   120,   120,   121,   121,   121,   122,   122,
-     123,   123,   124,   124,   125,   125,   126,   126,   127,   128,
-     129,   129,   130,   130,   131,   131,   132,   132,   133,   133,
-     134,   134,   135,   135,   136,   136,   136,   136,   137,   137,
-     138,   138,   139,   139,   140,   140,   141,   142,   142,   142,
-     142,   142,   142,   143,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   153,   153,   153,   153,   153,
-     153,   153,   154,   155,   155,   156
+     104,   104,   104,   104,   104,   105,   106,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   108,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   109,   109,   110,
+     110,   111,   111,   112,   113,   113,   113,   113,   113,   114,
+     114,   115,   116,   116,   117,   117,   118,   118,   118,   119,
+     119,   120,   120,   121,   121,   121,   122,   122,   123,   123,
+     124,   124,   125,   125,   126,   126,   127,   128,   128,   129,
+     129,   130,   130,   131,   131,   132,   132,   133,   133,   134,
+     134,   135,   135,   135,   135,   136,   136,   137,   137,   138,
+     138,   139,   139,   140,   141,   141,   141,   141,   141,   141,
+     142,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   152,   152,   152,   152,   152,   152,   152,   153,
+     154,   154,   155
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -721,17 +720,17 @@ static const yytype_uint8 yyr2[] =
        1,     3,     1,     3,     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,     5,
-       5,     0,     2,     1,     2,     3,     0,     3,     5,     3,
-       5,     1,     3,     4,     0,     1,     1,     3,     1,     3,
-       5,     0,     1,     1,     3,     1,     3,     4,     3,     2,
-       1,     3,     0,     2,     1,     3,     2,     4,     4,     3,
-       3,     2,     1,     3,     0,     2,     4,     5,     3,     4,
-       0,     2,     1,     3,     0,     1,     1,     1,     0,     1,
-       1,     2,     1,     2,     1,     2,     1,     1,     1,     2,
-       2,     1,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     5,     5,     0,
+       2,     1,     2,     3,     0,     3,     5,     3,     5,     1,
+       3,     4,     0,     1,     1,     3,     1,     3,     5,     0,
+       1,     1,     3,     1,     3,     4,     3,     2,     1,     3,
+       0,     2,     1,     3,     2,     4,     3,     3,     2,     1,
+       3,     0,     2,     4,     5,     3,     4,     0,     2,     1,
+       3,     0,     1,     1,     1,     0,     1,     1,     2,     1,
+       2,     1,     2,     1,     1,     1,     2,     2,     1,     2,
+       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
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -739,544 +738,556 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       5,    44,     0,     0,     2,     3,     7,   273,   260,   262,
-     264,   281,   282,   280,   275,   295,     0,   279,   277,   278,
-     283,   266,   206,   274,     0,     0,   206,   145,   232,     0,
+       5,    44,     0,     0,     2,     3,     7,   270,   257,   259,
+     261,   278,   279,   277,   272,   292,     0,   276,   274,   275,
+     280,   263,   204,   271,     0,     0,   204,   145,   230,     0,
        0,     0,    37,     4,    33,    92,    89,   124,   101,   126,
-     125,   142,    27,    44,    88,    90,    87,   176,    44,   203,
-     187,   186,   178,   267,   268,   271,   179,   177,   127,   183,
-     184,   185,   180,   182,   181,    99,    91,     0,     1,     6,
-      14,     8,     0,   223,   225,   221,   214,   201,   261,   263,
-     265,   272,   232,   129,     0,     0,   201,   292,   147,     0,
-      29,     0,     0,     0,   288,   286,   287,   289,   290,   291,
-     285,   284,     0,     0,    44,   230,    29,     0,   293,   294,
-       0,    27,    94,   250,   244,     0,   162,   164,     0,     0,
-     288,     0,   294,   138,    28,   144,    34,    36,   204,   270,
-     269,     0,     0,    52,    46,    49,    48,   145,     0,    61,
-      21,     0,    12,     0,   205,     0,     0,     0,     0,   222,
-       0,    29,   216,    31,    44,    75,    77,    44,     0,    95,
-      30,   146,   149,   115,     0,     0,     0,    96,   114,     0,
-       0,    93,     0,    30,   233,    98,   229,     0,    28,    45,
-       0,   250,   244,   252,   198,   197,     0,    29,   188,   189,
-     193,     0,   194,   195,   196,   190,   192,   191,     0,   242,
-      29,     0,     0,     0,     0,     0,   250,     0,   153,     0,
-       0,     0,    50,     0,     0,   143,   131,     0,     0,    29,
-      29,    47,     0,    50,    29,    29,    29,   157,     0,     0,
-      15,     0,    13,    16,   224,   226,     0,     0,   207,     0,
-     209,    30,     0,    32,     0,     0,   202,     0,     0,     0,
-     148,   150,     0,   119,    97,   120,     0,   116,   228,     0,
-      35,     0,   231,     0,     0,    53,   132,     0,     0,   246,
-      30,   251,   250,     0,    30,   245,   238,   241,   135,   163,
-     165,     0,     0,     0,   100,     0,     0,     0,    50,    29,
-      29,    29,     0,     0,    51,    74,     0,     0,   140,   139,
-     130,   155,    54,    30,   160,     0,    30,     0,    60,    62,
-       0,     0,    30,     0,   159,   289,    11,    22,     0,     0,
-      14,    21,   227,     0,     0,   217,     0,     0,   219,   175,
-     174,   166,   167,   171,   172,   173,   168,   170,   169,   200,
-       0,     0,   199,     0,   151,   121,     0,   118,     0,    29,
-      29,   248,   239,   253,     0,   240,   243,   247,   103,   102,
-       0,     0,   154,     0,     0,   128,    66,     0,     0,     0,
-     133,    50,    29,    29,    29,     0,     0,    29,    50,    58,
-      50,    65,   158,    50,     0,     0,   206,   206,     0,   254,
-     254,   258,    17,     0,   208,   210,     0,     0,     0,     0,
-      79,   177,     0,   152,   122,   117,    56,     0,     0,   249,
-       0,     0,   104,   136,   109,   108,     0,     0,    50,    70,
-      50,    71,     0,     0,     0,   141,   156,   161,     0,    55,
-      64,    63,   206,   206,   201,   201,    16,   255,   257,   256,
-       0,   234,     0,     0,   259,    29,   211,     0,     9,   220,
-       0,     0,     0,    76,     0,    84,     0,     0,    78,   123,
-      50,    59,   106,   105,     0,     0,     0,   110,   137,    69,
-      67,    50,    73,    50,   134,   201,   201,    40,    40,    21,
-      19,   254,   236,    18,    20,   258,     0,     0,    79,    79,
-      80,    79,     0,    57,   107,   112,   111,     0,    72,    68,
-      40,    40,   276,    42,    27,    42,     0,   235,     0,   212,
-       0,    79,    86,    85,    81,    79,   113,    42,    42,     0,
-       0,    38,    42,    41,     0,    10,   237,   213,    83,    82,
-       0,     0,    27,    23,    39,    25,    24,    26,    43
+     125,   142,    27,    44,    88,    90,    87,   175,    44,   201,
+     185,   177,   264,   265,   268,   178,   176,   127,   182,   183,
+     184,   179,   181,   180,    99,    91,     0,     1,     6,    14,
+       8,     0,   221,   223,   219,   212,   199,   258,   260,   262,
+     269,   230,   129,     0,     0,   199,   289,   147,     0,    29,
+       0,     0,     0,   285,   283,   284,   286,   287,   288,   282,
+     281,     0,     0,    44,   228,    29,     0,   290,   291,     0,
+      27,    94,   247,     0,   162,   164,     0,     0,   285,     0,
+     291,   138,    28,   144,    34,    36,   202,   267,   266,     0,
+       0,    52,    46,    49,    48,   145,     0,    61,    21,     0,
+      12,     0,   203,     0,     0,     0,     0,   220,     0,    29,
+     214,    31,    44,    75,    77,    44,     0,    95,    30,   146,
+     149,   115,     0,     0,     0,    96,   114,     0,     0,    93,
+       0,    30,   231,    98,   227,     0,    28,    45,     0,   247,
+     241,   249,   196,   195,     0,    29,   186,   187,   191,     0,
+     192,   193,   194,   188,   190,   189,     0,     0,     0,   247,
+       0,   153,     0,     0,     0,    50,     0,     0,   143,   131,
+       0,     0,    29,    29,    47,     0,    50,    29,    29,    29,
+     157,     0,     0,    15,     0,    13,    16,   222,   224,     0,
+       0,   205,     0,   207,    30,     0,    32,     0,     0,   200,
+       0,     0,     0,   148,   150,     0,   119,    97,   120,     0,
+     116,   226,     0,    35,     0,   229,     0,     0,    53,   132,
+       0,     0,   239,    29,     0,     0,   243,    30,   248,   247,
+     135,   163,   165,     0,     0,     0,   100,     0,     0,     0,
+      50,    29,    29,    29,     0,     0,    51,    74,     0,     0,
+     140,   139,   130,   155,    54,    30,   160,     0,    30,     0,
+      60,    62,     0,     0,    30,     0,   159,   286,    11,    22,
+       0,     0,    14,    21,   225,     0,     0,   215,     0,     0,
+     217,   174,   166,   167,   171,   172,   173,   168,   170,   169,
+     198,     0,     0,   197,     0,   151,   121,     0,   118,     0,
+      29,    29,   245,     0,    30,   242,   236,   238,   250,     0,
+     244,   103,   102,     0,     0,   154,     0,     0,   128,    66,
+       0,     0,     0,   133,    50,    29,    29,    29,     0,     0,
+      29,    50,    58,    50,    65,   158,    50,     0,     0,   204,
+     204,     0,   251,   251,   255,    17,     0,   206,   208,     0,
+       0,     0,     0,    79,   176,     0,   152,   122,   117,    56,
+       0,     0,   237,   240,   246,     0,     0,   104,   136,   109,
+     108,     0,     0,    50,    70,    50,    71,     0,     0,     0,
+     141,   156,   161,     0,    55,    64,    63,   204,   204,   199,
+     199,    16,   252,   254,   253,     0,   232,     0,     0,   256,
+      29,   209,     0,     9,   218,     0,     0,     0,    76,     0,
+      84,     0,     0,    78,   123,    50,    59,   106,   105,     0,
+       0,     0,   110,   137,    69,    67,    50,    73,    50,   134,
+     199,   199,    40,    40,    21,    19,   251,   234,    18,    20,
+     255,     0,     0,    79,    79,    80,    79,     0,    57,   107,
+     112,   111,     0,    72,    68,    40,    40,   273,    42,    27,
+      42,     0,   233,     0,   210,     0,    79,    86,    85,    81,
+      79,   113,    42,    42,     0,     0,    38,    42,    41,     0,
+      10,   235,   211,    83,    82,     0,     0,    27,    23,    39,
+      25,    24,    26,    43
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     3,     4,     5,    69,     6,   231,   143,   321,   392,
-     229,   317,   125,   304,   244,    32,    33,   520,   503,   521,
-      34,   294,   134,   295,    35,    36,   247,   248,   455,   399,
-      37,    38,    39,    40,   102,   165,    41,   214,    42,   208,
-      89,    90,   209,   220,   377,   227,   305,   115,   116,   328,
-      44,    45,    46,   183,    47,   154,    48,   246,    77,   445,
-     446,   150,   151,   152,   148,    72,    73,   105,   106,   107,
-     440,   441,    50,   184,   199,   200,   201,    51,   185,   186,
-     187,   442,   447,    52,    53,    54,    55,    56,    57,    58,
-     504,    59,    60,    61,    62,    63,    64,    65,   108,   122,
-     123,    66
+      -1,     3,     4,     5,    68,     6,   224,   141,   313,   385,
+     222,   309,   123,   296,   237,    32,    33,   515,   498,   516,
+      34,   286,   132,   287,    35,    36,   240,   241,   450,   392,
+      37,    38,    39,    40,   101,   163,    41,   207,    42,   201,
+      88,    89,   202,   213,   370,   220,   297,   113,   114,   320,
+      44,    45,    46,   181,    47,   152,    48,   239,    76,   440,
+     441,   148,   149,   150,   146,    71,    72,   104,   105,   106,
+     435,   436,   182,   262,   263,   264,    50,   183,   184,   185,
+     437,   442,    51,    52,    53,    54,    55,    56,    57,   499,
+      58,    59,    60,    61,    62,    63,    64,   107,   120,   121,
+      65
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -357
+#define YYPACT_NINF -358
 static const yytype_int16 yypact[] =
 {
-      43,   701,    31,    37,    31,    10,  -357,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,    41,  -357,  -357,  -357,
-    -357,  -357,    11,  -357,   339,  1720,    86,  1356,   888,  1720,
-      41,    25,  -357,  -357,  -357,  -357,  -357,    40,  -357,  -357,
-    -357,   810,    48,     6,  -357,  -357,  -357,  -357,  1096,  -357,
-    -357,  -357,    89,    89,  -357,  -357,  -357,    97,    98,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -357,    83,  -357,  -357,
-      26,  -357,   198,  -357,   -16,    41,    41,  -357,  -357,  -357,
-    -357,  -357,   940,  -357,  1720,  1720,  -357,  -357,   108,    84,
-     133,  1720,  1720,  1408,   339,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,   137,   265,  1096,  -357,   147,   152,  -357,  1720,
-     154,   601,   183,  1820,  1772,   199,    12,  -357,   197,  1460,
-    -357,    16,  -357,   192,  1720,  -357,  -357,  -357,  -357,  -357,
-    -357,  1720,  1148,   101,  -357,  -357,  -357,  1356,   756,   101,
-    -357,    31,    41,   205,  -357,    41,  1720,  1720,   220,   211,
-     243,    18,  -357,   349,  1096,  -357,  -357,  1096,  1720,  -357,
-    1356,  -357,  -357,  -357,  1720,   222,     2,  -357,  1720,  1720,
-    1720,  -357,   224,  1356,  -357,  -357,  -357,   273,  -357,  -357,
-    1720,  1820,  1772,  -357,  -357,  -357,   236,   241,    89,  -357,
-    -357,   248,  -357,  -357,  -357,  -357,  -357,  -357,   268,  -357,
-     251,   254,  1820,  1720,    41,    41,  1820,  1720,  -357,    38,
-    1512,   992,   226,   249,  1720,   810,   810,  1720,   101,   258,
-     264,  -357,   271,   101,   258,   264,   272,  -357,  1720,   838,
-    -357,   280,  -357,  -357,  -357,   810,   279,    41,  -357,    41,
-    -357,  -357,    41,  -357,   808,   311,  -357,   301,   312,   324,
-    -357,   351,  1720,  -357,  -357,  1720,  1720,  -357,  -357,   335,
-    -357,   352,  -357,  1720,  1200,   101,   810,   332,   333,  -357,
-    1820,  -357,  1820,  1820,  1772,  -357,  -357,  -357,   810,  -357,
-    -357,   336,   338,  1564,   356,  1720,  1720,    88,   101,   258,
-     264,   272,  1720,  1044,   101,  -357,   384,  1720,  -357,  -357,
-     348,  -357,   101,  1252,  -357,   342,   362,   353,  -357,  -357,
-     367,   368,   362,   370,  -357,   175,  -357,  -357,   365,   381,
-     372,   320,  -357,   376,   389,  -357,  1720,     7,  -357,  -357,
-    -357,    89,  -357,  -357,  -357,  -357,  -357,  -357,  -357,  -357,
-    1304,  1304,  -357,  1720,  -357,  -357,   406,  1720,   101,   258,
-     264,  -357,  -357,  -357,   383,  -357,  -357,  -357,   402,   404,
-     391,  1720,  -357,   392,  1616,   405,  -357,   396,   397,   398,
-     810,   101,   258,   264,   272,   403,  1720,   272,   195,  -357,
-     101,  -357,  -357,   101,   399,   413,    11,    11,   421,   202,
-     202,   409,  -357,  1827,  -357,  -357,   416,    41,   308,   423,
-     420,    49,   425,  -357,  1720,  -357,   101,   427,   428,  -357,
-    1720,  1720,   443,   810,   445,   449,   435,  1720,   101,  -357,
-     101,  -357,   433,   434,   436,  -357,  -357,  -357,  1720,  -357,
-    -357,  -357,    11,    11,  -357,  -357,  -357,  -357,  -357,  -357,
-     300,  -357,    41,   325,  -357,   328,  -357,    41,  -357,  -357,
-     457,  1720,  1720,  -357,  1304,  -357,  1720,   462,  -357,  -357,
-     101,  -357,   810,   810,  1720,  1720,  1720,   464,   810,  -357,
-    -357,   101,  -357,   101,   810,  -357,  -357,   160,   160,   320,
-    -357,   202,   467,  -357,  -357,   409,   469,  1720,   420,   420,
-    -357,   420,  1720,  -357,   810,   810,   810,  1720,  -357,  -357,
-     160,   160,  -357,  1668,   459,  1668,  1842,  -357,   669,  -357,
-     669,   420,  -357,  -357,  -357,   420,   810,  1668,  1668,  1720,
-     465,  -357,   468,  -357,   474,  -357,  -357,  -357,  -357,  -357,
-     476,   477,   601,  -357,  -357,  -357,  -357,  -357,  -357
+       6,  1013,    28,   131,    28,    57,  -358,  -358,  -358,  -358,
+    -358,  -358,  -358,  -358,  -358,  -358,    17,  -358,  -358,  -358,
+    -358,  -358,    64,  -358,   236,  1689,    40,  1325,   733,  1689,
+      17,   147,  -358,  -358,  -358,  -358,  -358,    89,  -358,  -358,
+    -358,  1904,    90,   104,  -358,  -358,  -358,  -358,  1065,  -358,
+    -358,   118,   118,  -358,  -358,  -358,   163,    93,  -358,  -358,
+    -358,  -358,  -358,  -358,  -358,  -358,   120,  -358,  -358,    38,
+    -358,   -24,  -358,    68,    17,    17,  -358,  -358,  -358,  -358,
+    -358,   857,  -358,  1689,  1689,  -358,  -358,   154,   150,   151,
+    1689,  1689,  1377,   236,  -358,  -358,  -358,  -358,  -358,  -358,
+    -358,   160,    15,  1065,  -358,   174,   183,  -358,  1689,   184,
+    1887,   196,  1818,   221,    12,  -358,   197,  1429,  -358,    19,
+    -358,   213,  1689,  -358,  -358,  -358,  -358,  -358,  -358,  1689,
+    1117,    92,  -358,  -358,  -358,  1325,   793,    92,  -358,    28,
+      17,   218,  -358,    17,  1689,  1689,   243,   -18,   247,    74,
+    -358,   200,  1065,  -358,  -358,  1065,  1689,  -358,  1325,  -358,
+    -358,  -358,  1689,   224,    18,  -358,  1689,  1689,  1689,  -358,
+     229,  1325,  -358,  -358,  -358,   188,  -358,  -358,  1689,  1818,
+    1770,  -358,  -358,  -358,   235,   246,   118,  -358,  -358,   252,
+    -358,  -358,  -358,  -358,  -358,  -358,  1689,    17,    17,  1818,
+    1689,  -358,    51,  1481,   909,   186,    47,  1689,  1904,  1904,
+    1689,    92,   260,   261,  -358,   245,    92,   260,   261,   262,
+    -358,  1689,  1825,  -358,   254,  -358,  -358,  -358,  1904,   264,
+      17,  -358,    17,  -358,  -358,    17,  -358,  1740,   267,  -358,
+     269,   270,   271,  -358,   290,  1689,  -358,  -358,  1689,  1689,
+    -358,  -358,   299,  -358,   292,  -358,  1689,  1169,    92,  1904,
+     278,   296,  -358,   279,   276,  1818,  -358,  1818,  -358,  1818,
+    1904,  -358,  -358,   282,   285,  1533,   303,  1689,  1689,    83,
+      92,   260,   261,   262,  1689,   961,    92,  -358,   335,  1689,
+    -358,  -358,   307,  -358,    92,  1221,  -358,   293,   312,   313,
+    -358,  -358,   314,   318,   312,   319,  -358,  1878,  -358,  -358,
+     310,   311,   342,   176,  -358,   325,   338,  -358,  1689,     7,
+    -358,  -358,   118,  -358,  -358,  -358,  -358,  -358,  -358,  -358,
+    -358,  1273,  1273,  -358,  1689,  -358,  -358,   356,  1689,    92,
+     260,   261,  -358,  1818,  1770,  -358,  -358,  -358,  -358,   336,
+    -358,   351,   357,   337,  1689,  -358,   345,  1585,   358,  -358,
+     343,   344,   346,  1904,    92,   260,   261,   262,   347,  1689,
+     262,   202,  -358,    92,  -358,  -358,    92,   355,   363,    64,
+      64,   364,   266,   266,   377,  -358,  1840,  -358,  -358,   350,
+      17,   116,   367,   370,    31,   372,  -358,  1689,  -358,    92,
+     369,   371,  -358,  -358,  -358,  1689,  1689,   392,  1904,   393,
+     394,   379,  1689,    92,  -358,    92,  -358,   378,   380,   382,
+    -358,  -358,  -358,  1689,  -358,  -358,  -358,    64,    64,  -358,
+    -358,  -358,  -358,  -358,  -358,   212,  -358,    17,   230,  -358,
+     257,  -358,    17,  -358,  -358,   397,  1689,  1689,  -358,  1273,
+    -358,  1689,   408,  -358,  -358,    92,  -358,  1904,  1904,  1689,
+    1689,  1689,   406,  1904,  -358,  -358,    92,  -358,    92,  1904,
+    -358,  -358,    96,    96,   176,  -358,   266,   412,  -358,  -358,
+     377,   413,  1689,   370,   370,  -358,   370,  1689,  -358,  1904,
+    1904,  1904,  1689,  -358,  -358,    96,    96,  -358,  1637,   391,
+    1637,  1863,  -358,   647,  -358,   647,   370,  -358,  -358,  -358,
+     370,  1904,  1637,  1637,  1689,   402,  -358,   400,  -358,   404,
+    -358,  -358,  -358,  -358,  -358,   411,   414,  1887,  -358,  -358,
+    -358,  -358,  -358,  -358
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -357,  -357,  -357,  -357,  -357,   509,  -357,   203,    92,  -357,
-    -317,  -357,  -110,   305,  -357,   -40,  -357,  -320,  -335,     8,
-     481,   -47,   -74,  -149,  -357,   135,  -357,  -357,  -160,  -339,
-    -357,  -357,  -357,  -357,  -357,  -357,   -20,  -357,  -357,    -1,
-     395,  -357,  -109,  -135,  -106,   225,   207,  -357,  -357,  -356,
-     187,  -357,  -357,   -84,  -357,   -69,   506,    15,   -19,  -357,
-      53,  -357,  -357,   303,  -357,   473,   414,   369,  -357,  -357,
-     153,    68,  -231,  -357,   276,  -357,   386,  -222,  -357,  -175,
-    -357,  -357,  -357,   -93,  -357,  -357,   -12,    -7,    19,   550,
-    -357,    36,   190,   327,   345,   358,   380,  -357,  -191,   484,
-     -14,  -357
+    -358,  -358,  -358,  -358,  -358,   448,  -358,   145,    27,  -358,
+    -311,  -358,  -109,   -77,  -358,   -40,  -358,  -255,  -271,   -57,
+     418,   -42,   -96,   263,  -358,    91,  -358,  -358,  -357,  -327,
+    -358,  -358,  -358,  -358,  -358,  -358,   -19,  -358,  -358,    -1,
+     328,  -358,  -117,  -133,  -100,   165,  -161,  -358,  -358,  -289,
+     216,  -358,  -358,  -171,  -358,   -68,   443,    10,   -22,  -358,
+      -3,  -358,  -358,   237,  -358,   415,   339,   320,  -358,  -358,
+      95,    22,  -358,   149,  -358,  -358,  -214,  -358,  -150,  -358,
+    -358,  -358,     2,  -358,  -358,    -8,    16,   144,   511,  -358,
+      71,   201,   255,   304,   353,   368,  -358,  -215,   523,    -7,
+    -358
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -219
+#define YYTABLE_NINF -217
 static const yytype_int16 yytable[] =
 {
-      43,   179,   402,   225,   393,    83,   267,    86,   127,   111,
-     133,   139,    81,   329,   110,   146,    49,   157,    14,     7,
-     188,   188,   330,   219,   255,    75,    88,   103,     7,   224,
-     198,   281,   226,   204,   147,    74,    14,    68,   319,  -215,
-     129,   130,    14,    49,     7,    23,     2,    43,    76,   112,
-     117,   256,     7,   113,    23,   240,   141,   114,    29,   221,
-     283,   205,   210,   128,   172,   221,   211,   241,   110,     1,
-      23,   113,   142,    22,   309,   114,   290,   456,    23,     2,
-     131,   103,    81,   155,   156,   284,   119,   285,   188,   188,
-     162,   163,   166,    26,    74,   153,   124,   354,   198,   132,
-      75,   287,   289,    43,   215,   291,   189,   189,   176,   188,
-     364,   216,    21,   188,   245,   490,    84,   249,   277,   128,
-     298,    22,    22,    76,   385,    22,   235,   140,   131,   350,
-     265,   159,   190,   190,    85,   365,    88,   285,   158,   366,
-     212,    26,    26,   505,   137,    26,   236,   132,   138,   192,
-     192,   331,   526,    43,   527,   349,    43,   250,   373,   251,
-     266,   232,   506,   253,    74,   517,   518,   257,   258,   259,
-     502,   302,   261,    16,   189,   189,   129,   188,     7,   188,
-     188,   188,   160,   278,   372,   524,   353,   374,   167,   355,
-     198,   221,   135,   135,   300,   189,   173,   530,   531,   189,
-     190,   190,   319,   175,    23,   177,   282,   120,    95,    96,
-      97,    98,    99,   100,   180,   101,   301,   192,   192,    22,
-     221,   190,   421,   279,   280,   190,   428,   314,   221,   429,
-     203,   430,   299,   213,   431,   437,   438,   332,   192,    26,
-     439,   237,   192,   206,   136,   136,   144,   145,   318,   233,
-      22,   344,     7,     8,   345,   346,   323,   292,   324,   238,
-     145,   153,   176,   189,   239,   189,   189,   189,   135,   469,
-      26,   470,   370,   254,   135,   260,   293,   329,    23,   329,
-     333,   296,   360,   269,   362,   363,   330,   168,   330,   190,
-     270,   190,   190,   190,   272,   169,   375,    22,   273,   297,
-     274,   406,   362,   193,   193,   276,   192,   303,   192,   192,
-     192,   493,   135,   306,   170,   319,   171,    26,   308,   129,
-     136,   312,   498,   264,   499,   396,   136,   320,   512,   513,
-     322,   514,   221,   389,   384,   390,   391,   451,   452,   400,
-     400,   413,   403,    78,    79,    80,   405,   135,   480,   481,
-     340,   528,  -218,   135,   133,   529,   339,   347,   135,   401,
-     401,   341,    21,   416,   136,   477,   478,   434,   435,   342,
-    -218,   193,   193,   483,   481,   426,   484,   241,  -218,   351,
-     243,   343,   169,   357,   352,   358,  -218,   361,    78,   121,
-     462,   463,   193,   378,   523,   161,   193,   468,  -218,   136,
-     135,    87,   141,   459,   379,   136,   500,   501,   474,   386,
-     136,   174,   318,   475,   476,   331,   450,   331,   380,   381,
-     457,   383,   538,   135,   394,   387,   395,   307,   404,   135,
-     409,   310,   311,   410,   334,   411,   417,   135,   412,   414,
-     194,   194,   444,   432,   494,   495,   496,   418,   419,   420,
-     488,   489,   136,   400,   425,   491,   242,   433,   195,   195,
-     193,   482,   193,   193,   193,   436,   486,   449,   453,   454,
-     458,   196,   196,   401,   464,   136,   465,   516,   460,   461,
-     466,   136,   467,   135,   471,   472,   511,   473,   487,   136,
-     492,   515,   271,   197,   197,   497,   367,   368,   508,   532,
-     510,   332,   522,   332,   522,   275,   135,   178,   194,   194,
-     533,    91,   109,   135,    71,   135,   522,   522,   135,   535,
-     519,   536,   537,   388,   126,   318,   195,   195,   479,   194,
-     534,   313,   222,   194,   104,   136,   135,   382,   509,   196,
-     196,   135,   262,   443,   333,   325,   333,   195,   149,   507,
-     356,   195,    67,   135,    70,   135,   407,   408,   136,   234,
-     196,   197,   197,     0,   196,   136,   109,   136,   268,     0,
-     136,   335,     0,     0,     0,     0,     0,     0,     0,   422,
-     423,   118,   197,     0,     0,     0,   197,     0,   136,   336,
-       0,     0,     0,   136,     0,   135,   369,   194,   202,   194,
-     194,   194,   337,     0,     0,   136,   135,   136,   135,     0,
-       0,     0,     0,     0,     0,   195,     0,   195,   195,   195,
-       0,    91,   228,     0,   338,     0,     0,     0,   196,     0,
-     196,   196,   196,   120,    95,    96,    97,    98,    99,   100,
-      87,   101,   121,     0,   252,     0,     0,   136,     0,   178,
-     197,     0,   197,   197,   197,     0,     0,   263,   136,     0,
-     136,     0,     0,   191,   191,     0,   202,     0,     0,     0,
-       0,     0,     0,     8,     9,    10,    11,    12,    13,   424,
-       0,     0,   427,     0,     0,     0,    17,    18,    19,     0,
-       0,   230,    21,     0,     0,   228,     0,     0,   334,     0,
-     334,    24,     0,     0,     7,     8,     9,    10,    11,    12,
-      13,     0,    14,    15,    16,     0,     0,     0,    17,    18,
-      19,    20,     0,   327,    21,    22,     0,     0,     0,     0,
-      23,   191,   191,    24,     0,     0,     0,     0,     0,     0,
+      43,   177,   386,   218,    85,   395,    82,   311,   125,   261,
+     110,    49,   159,   212,   131,   137,    80,   155,    14,   217,
+       7,   109,     7,   321,   142,   143,    87,   102,   172,   260,
+     231,   143,     1,   197,     7,   214,   219,   166,    49,    14,
+     248,   214,     2,   127,   128,   167,    23,    43,    23,   273,
+       7,     8,   299,   112,    74,    22,   302,   303,   126,   451,
+      23,   198,   129,   170,   168,   203,   169,   249,   139,   204,
+      83,   282,   235,   275,   109,    26,    23,    75,    74,   288,
+     102,   130,   153,   154,   140,    80,   279,   281,    84,   160,
+     161,   164,   378,     2,   347,  -213,   348,   289,   276,   144,
+     277,    75,    43,   208,   283,   357,   497,   174,   268,    16,
+     209,   233,   238,   126,   186,   242,    22,    22,   145,   349,
+     360,   361,   485,   234,   341,   228,   507,   508,   187,   509,
+     358,    67,   277,   258,    87,   117,    26,    26,   122,   135,
+     340,    21,   305,   136,   229,   446,   447,   133,   133,   523,
+       7,    43,   366,   524,    43,   243,    29,   244,    14,   259,
+      73,   246,   214,   501,   138,   250,   251,   252,   365,   294,
+     254,   311,   402,   261,   111,   115,    23,   270,   127,   400,
+     401,   186,   186,   190,   156,   367,   345,    22,   292,   382,
+     214,   383,   384,   112,   129,   187,   187,   157,   214,   274,
+     158,   186,   500,  -216,   417,   418,   362,    26,   290,   293,
+      22,   165,    22,   130,   521,   187,   522,   284,    73,   151,
+     306,  -216,   133,   171,   512,   513,    22,   178,   133,  -216,
+      26,   236,    26,   423,   173,   175,   285,  -216,   257,   322,
+      77,    78,    79,   199,   335,   519,    26,   336,   337,  -216,
+     190,   190,   196,   323,   206,   174,   188,   525,   526,    21,
+     475,   476,   226,   205,   230,   363,   133,   186,   232,   186,
+     190,   186,   134,   134,   353,   247,   355,   356,   478,   476,
+     253,   187,   266,   187,   225,   187,   311,    73,   368,   321,
+     419,   321,   300,   422,   355,   267,   133,   399,   269,   432,
+     433,   312,   133,   214,   434,   479,   234,   133,   324,   295,
+     298,   304,   330,   191,   127,   314,   333,   389,   331,   332,
+     334,   338,   167,   188,   188,   342,   343,   346,   344,   350,
+     393,   393,   351,   396,   354,   408,   190,   398,   190,    77,
+     190,   271,   272,   188,   371,   186,   186,   134,   119,   133,
+     291,    86,   131,   134,   379,   380,   411,   429,   430,   187,
+     187,   472,   473,   480,   372,   373,   310,   192,   421,   374,
+     376,   133,   139,   387,   315,   388,   316,   133,   397,   151,
+     191,   191,   405,   404,   407,   133,   457,   458,   406,   412,
+     518,   134,   409,   463,   413,   414,   454,   415,   420,   427,
+     191,   444,   495,   496,   469,   470,   471,   428,   431,   188,
+     439,   188,   448,   188,   190,   190,   193,   453,   533,   449,
+     455,   134,   456,   459,   460,   461,   462,   134,   482,   466,
+     133,   467,   134,   468,   192,   192,   487,   492,   325,   176,
+     489,   490,   491,   503,   505,   483,   484,   528,   393,   530,
+     486,   377,   514,    70,   192,   133,   531,   381,   474,   532,
+     529,   124,   133,   215,   133,   194,   191,   133,   191,   375,
+     191,   103,   317,   511,   134,   394,   394,   504,   438,   301,
+     195,   506,   227,   193,   193,   133,   510,   188,   188,   147,
+     133,   255,   326,   403,     0,   527,   134,   517,   502,   517,
+       0,     0,   134,   193,   133,   322,   133,   322,     0,     0,
+     134,   517,   517,    66,     0,    69,     0,     0,     0,   323,
+     192,   323,   192,     0,   192,     0,     0,     0,     0,     0,
+     310,     0,   194,   194,   445,     0,     0,     0,   452,     0,
+       0,   327,   116,   359,   191,   191,   133,   195,   195,     0,
+      90,   108,   194,     0,     0,   134,     0,   133,     0,   133,
+       0,     0,     0,     0,     0,     0,     0,   195,     0,   193,
+       0,   193,     0,   193,   324,     0,   324,     0,     0,     0,
+     134,   477,     0,     0,     0,     0,   481,   134,     0,   134,
+     328,     0,   134,   394,     0,     0,     0,     0,   192,   192,
+       0,     0,     0,     0,   108,   329,     0,     0,     0,     0,
+     134,     0,     0,     0,     0,   134,     0,     0,   194,     0,
+     194,     0,   194,   189,     0,     0,     0,   416,     0,   134,
+       0,   134,     0,   195,   424,   195,   425,   195,     0,   426,
+       0,     0,     0,     0,     0,   310,     0,   193,   193,     0,
+     223,     8,     9,    10,    11,    12,    13,     0,    90,   221,
+       0,     0,     0,     0,    17,    18,    19,     0,     0,     0,
+      21,   134,     0,     0,     0,     0,   464,     0,   465,    24,
+       0,   245,   134,     0,   134,     0,     0,     0,     0,     0,
+     189,   189,     0,     0,   256,     0,   194,   194,     0,     0,
+       0,   319,     0,   265,   325,     0,   325,     0,     0,     0,
+     189,   195,   195,     0,     0,     0,     0,     0,   488,     0,
+       0,     0,     0,     0,     0,     0,     0,   221,     0,   493,
+       0,   494,     0,     0,     0,     0,     7,     8,     9,    10,
+      11,    12,    13,     0,    14,    15,    16,     0,     0,     0,
+      17,    18,    19,    20,     0,    91,    21,    22,   326,     0,
+     326,     0,    23,    92,     0,    93,    94,    95,    96,    97,
+      98,    99,    86,   100,     0,    25,   189,    26,   189,    27,
+     189,     0,     0,    81,     0,     0,    30,    31,     0,     0,
+       0,     0,     0,     0,     0,     0,     7,     8,     9,    10,
+      11,    12,    13,     0,    14,    15,     0,   327,   221,   327,
+      17,    18,    19,    20,     0,     0,    21,    22,   221,     0,
+       0,   221,    23,     0,     0,    24,     0,   221,   210,     0,
+     116,     0,    86,     0,     0,    25,     0,    26,     0,    27,
+       0,     0,     0,    81,   216,     0,    30,    31,     0,     0,
+       0,     0,     0,     0,   189,   189,   328,     0,   328,     0,
+       7,     8,     9,    10,    11,    12,    13,   265,    14,    15,
+       0,   329,     0,   329,    17,    18,    19,    20,     0,    91,
+      21,    22,     0,     0,     0,     0,    23,    92,     0,    93,
+      94,    95,    96,    97,    98,    99,    86,   100,     0,    25,
+       0,    26,     0,    27,     0,     0,     0,    81,     0,     0,
+      30,    31,     7,     8,     9,    10,    11,    12,    13,     0,
+      14,    15,     0,     0,     0,     0,    17,    18,    19,    20,
+       0,     0,    21,    22,     0,     0,     0,     0,    23,     0,
+       0,    24,     0,     0,   210,     0,     0,     0,    86,     0,
+       0,    25,     0,    26,     0,    27,     0,     0,     0,    81,
+     280,     0,    30,    31,     7,     8,     9,    10,    11,    12,
+      13,     0,    14,    15,     0,     0,     0,     0,    17,    18,
+      19,    20,     0,     0,    21,    22,     0,     0,     0,     0,
+      23,     0,     0,    24,     0,     0,   210,     0,     0,     0,
+      86,     0,     0,    25,     0,    26,     0,    27,     0,     0,
+       0,    81,   364,     0,    30,    31,     7,     8,     9,    10,
+      11,    12,    13,     0,    14,    15,    16,     0,     0,     0,
+      17,    18,    19,    20,     0,     0,    21,    22,     0,     0,
+       0,     0,    23,     0,     0,    24,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    25,     0,    26,     0,    27,
+       0,     0,     0,    28,     0,    29,    30,    31,     7,     8,
+       9,    10,    11,    12,    13,     0,    14,    15,    16,     0,
+       0,     0,    17,    18,    19,    20,     0,     0,    21,    22,
+       0,     0,     0,     0,    23,     0,     0,    24,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    25,     0,    26,
+       0,    27,     0,     0,     0,    81,     0,    29,    30,    31,
+       7,     8,     9,    10,    11,    12,    13,     0,    14,    15,
+       0,     0,     0,     0,    17,    18,    19,    20,     0,     0,
+      21,    22,     0,     0,     0,     0,    23,     0,     0,    24,
+       0,     0,   210,     0,     0,     0,     0,     0,     0,    25,
+       0,    26,     0,    27,     0,     0,     0,    81,   211,     0,
+      30,    31,     7,     8,     9,    10,    11,    12,    13,     0,
+      14,    15,     0,     0,     0,     0,    17,    18,    19,    20,
+       0,     0,    21,    22,     0,     0,     0,     0,    23,     0,
+       0,    24,     0,     0,   210,     0,     0,     0,     0,     0,
+       0,    25,     0,    26,     0,    27,     0,     0,     0,    81,
+     339,     0,    30,    31,     7,     8,     9,    10,    11,    12,
+      13,     0,    14,    15,     0,     0,     0,     0,    17,    18,
+      19,    20,     0,     0,    21,    22,     0,     0,     0,     0,
+      23,     0,     0,    24,     0,     0,   369,     0,     0,     0,
+      86,     0,     0,    25,     0,    26,     0,    27,     0,     0,
+       0,    81,     0,     0,    30,    31,     7,     8,     9,    10,
+      11,    12,    13,     0,    14,    15,   390,     0,     0,     0,
+      17,    18,    19,    20,     0,     0,    21,    22,     0,     0,
+       0,     0,    23,   391,     0,    24,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    25,     0,    26,     0,    27,
+       0,     0,     0,    81,     0,     0,    30,    31,     7,     8,
+       9,    10,    11,    12,    13,     0,    14,    15,     0,     0,
+       0,     0,    17,    18,    19,    20,     0,     0,    21,    22,
+       0,     0,     0,     0,    23,     0,     0,    24,     0,     0,
+       0,     0,     0,     0,    86,     0,     0,    25,     0,    26,
+       0,    27,     0,     0,     0,    81,     0,     0,    30,    31,
+       7,     8,     9,    10,    11,    12,    13,     0,    14,    15,
+       0,     0,     0,     0,    17,    18,    19,    20,     0,   162,
+      21,    22,     0,     0,     0,     0,    23,     0,     0,    24,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    25,
+       0,    26,     0,    27,     0,     0,     0,    81,     0,     0,
+      30,    31,     7,     8,     9,    10,    11,    12,    13,     0,
+      14,    15,     0,     0,     0,     0,    17,    18,    19,    20,
+       0,   200,    21,    22,     0,     0,     0,     0,    23,     0,
+       0,    24,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    25,     0,    26,     0,    27,     0,     0,     0,    81,
+       0,     0,    30,    31,     7,     8,     9,    10,    11,    12,
+      13,     0,    14,    15,     0,     0,     0,     0,    17,    18,
+      19,    20,     0,   278,    21,    22,     0,     0,     0,     0,
+      23,     0,     0,    24,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    25,     0,    26,     0,    27,     0,     0,
-     485,    28,   191,    29,    30,    31,   191,     0,   202,     7,
-       8,     9,    10,    11,    12,    13,     0,    14,    15,     0,
-       0,     0,     0,    17,    18,    19,    20,   228,     0,    21,
-      22,     0,     0,     0,     0,    23,     0,   228,    24,     0,
-     228,   217,     0,     0,     0,    87,   228,     0,    25,     0,
-      26,     0,    27,     0,     0,     0,    82,   223,     0,    30,
-      31,     0,     8,     9,    10,    11,    12,    13,     0,     0,
-     191,     0,   191,   191,   191,    17,    18,    19,     0,     0,
-       0,    21,     0,     0,     0,   335,     0,   335,     0,     0,
-      24,     7,   120,    95,    96,    97,    98,    99,   100,    87,
-     101,   121,     0,   336,     0,   336,     0,     0,   326,     0,
-       0,     0,   327,     0,     0,     0,   337,    23,   337,     0,
-     120,    95,    96,   315,    98,    99,   100,   118,   101,     0,
-       0,     0,     0,   316,     0,     0,     0,     0,   338,     0,
-     338,     7,     8,     9,    10,    11,    12,    13,     0,    14,
-      15,    16,     0,     0,     0,    17,    18,    19,    20,     0,
-      92,    21,    22,     0,     0,     0,     0,    23,    93,     0,
-      94,    95,    96,    97,    98,    99,   100,    87,   101,     0,
-      25,     0,    26,     0,    27,     0,     0,     0,    82,     0,
-       0,    30,    31,     7,     8,     9,    10,    11,    12,    13,
-       0,    14,    15,     0,     0,     0,     0,    17,    18,    19,
-      20,     0,    92,    21,    22,     0,     0,     0,     0,    23,
-      93,     0,    94,    95,    96,    97,    98,    99,   100,    87,
-     101,     0,    25,     0,    26,     0,    27,     0,     0,     0,
-      82,     0,     0,    30,    31,     7,     8,     9,    10,    11,
-      12,    13,     0,    14,    15,     0,     0,     0,     0,    17,
-      18,    19,    20,     0,     0,    21,    22,     0,     0,     0,
-       0,    23,     0,     0,    24,     0,     0,   217,     0,     0,
-       0,    87,     0,     0,    25,     0,    26,     0,    27,     0,
-       0,     0,    82,   288,     0,    30,    31,     7,     8,     9,
-      10,    11,    12,    13,     0,    14,    15,     0,     0,     0,
-       0,    17,    18,    19,    20,     0,     0,    21,    22,     0,
-       0,     0,     0,    23,     0,     0,    24,     0,     0,   217,
-       0,     0,     0,    87,     0,     0,    25,     0,    26,     0,
-      27,     0,     0,     0,    82,   371,     0,    30,    31,     7,
-       8,     9,    10,    11,    12,    13,     0,    14,    15,    16,
-       0,     0,     0,    17,    18,    19,    20,     0,     0,    21,
-      22,     0,     0,     0,     0,    23,     0,     0,    24,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    25,     0,
-      26,     0,    27,     0,     0,     0,    82,     0,    29,    30,
-      31,     7,     8,     9,    10,    11,    12,    13,     0,    14,
-      15,     0,     0,     0,     0,    17,    18,    19,    20,     0,
-       0,    21,    22,     0,     0,     0,     0,    23,     0,     0,
-      24,     0,     0,   217,     0,     0,     0,     0,     0,     0,
-      25,     0,    26,     0,    27,     0,     0,     0,    82,   218,
-       0,    30,    31,     7,     8,     9,    10,    11,    12,    13,
-       0,    14,    15,     0,     0,     0,     0,    17,    18,    19,
-      20,     0,     0,    21,    22,     0,     0,     0,     0,    23,
-       0,     0,    24,     0,     0,   217,     0,     0,     0,     0,
-       0,     0,    25,     0,    26,     0,    27,     0,     0,     0,
-      82,   348,     0,    30,    31,     7,     8,     9,    10,    11,
-      12,    13,     0,    14,    15,     0,     0,     0,     0,    17,
-      18,    19,    20,     0,     0,    21,    22,     0,     0,     0,
-       0,    23,     0,     0,    24,     0,     0,   376,     0,     0,
-       0,    87,     0,     0,    25,     0,    26,     0,    27,     0,
-       0,     0,    82,     0,     0,    30,    31,     7,     8,     9,
-      10,    11,    12,    13,     0,    14,    15,   397,     0,     0,
-       0,    17,    18,    19,    20,     0,     0,    21,    22,     0,
-       0,     0,     0,    23,   398,     0,    24,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    25,     0,    26,     0,
-      27,     0,     0,     0,    82,     0,     0,    30,    31,     7,
-       8,     9,    10,    11,    12,    13,     0,    14,    15,     0,
-       0,     0,     0,    17,    18,    19,    20,     0,     0,    21,
-      22,     0,     0,     0,     0,    23,     0,     0,    24,     0,
-       0,     0,     0,     0,     0,    87,     0,     0,    25,     0,
-      26,     0,    27,     0,     0,     0,    82,     0,     0,    30,
-      31,     7,     8,     9,    10,    11,    12,    13,     0,    14,
-      15,     0,     0,     0,     0,    17,    18,    19,    20,     0,
-     164,    21,    22,     0,     0,     0,     0,    23,     0,     0,
-      24,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      25,     0,    26,     0,    27,     0,     0,     0,    82,     0,
-       0,    30,    31,     7,     8,     9,    10,    11,    12,    13,
-       0,    14,    15,     0,     0,     0,     0,    17,    18,    19,
-      20,     0,   207,    21,    22,     0,     0,     0,     0,    23,
-       0,     0,    24,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    25,     0,    26,     0,    27,     0,     0,     0,
-      82,     0,     0,    30,    31,     7,     8,     9,    10,    11,
-      12,    13,     0,    14,    15,     0,     0,     0,     0,    17,
-      18,    19,    20,     0,   286,    21,    22,     0,     0,     0,
-       0,    23,     0,     0,    24,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    25,     0,    26,     0,    27,     0,
-       0,     0,    82,     0,     0,    30,    31,     7,     8,     9,
-      10,    11,    12,    13,     0,    14,    15,     0,     0,     0,
-       0,    17,    18,    19,    20,     0,     0,    21,    22,     0,
-       0,     0,     0,    23,     0,     0,    24,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    25,     0,    26,     0,
-      27,   359,     0,     0,    82,     0,     0,    30,    31,     7,
-       8,     9,    10,    11,    12,    13,     0,    14,    15,     0,
-       0,     0,     0,    17,    18,    19,    20,     0,     0,    21,
-      22,     0,     0,     0,     0,    23,     0,     0,    24,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    25,     0,
-      26,     0,    27,   415,     0,     0,    82,     0,     0,    30,
-      31,     7,     8,     9,    10,    11,    12,    13,     0,    14,
-      15,     0,     0,     0,     0,    17,    18,    19,    20,     0,
-       0,    21,    22,     0,     0,     0,     0,    23,     0,     0,
-      24,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      25,     0,    26,     0,    27,     0,     0,     0,    82,     0,
-     519,    30,    31,     7,     8,     9,    10,    11,    12,    13,
-       0,    14,    15,     0,     0,     0,     0,    17,    18,    19,
-      20,     0,     0,    21,    22,     0,     0,     0,     0,    23,
-       0,     0,    24,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    25,     0,    26,     0,    27,     0,     0,     0,
-      82,     0,     0,    30,    31,     7,     8,     9,    10,    11,
-      12,    13,     0,    14,     0,     0,     0,     0,     0,    17,
-      18,    19,     0,     0,     0,    21,     0,     0,     0,     0,
-       0,    23,     0,     0,    24,     0,     0,     0,     0,     0,
-       0,    87,     0,     0,     0,     0,     0,     0,   181,     0,
-       0,     0,   182,     7,     8,     9,    10,    11,    12,    13,
-       7,    14,     0,     0,     0,     0,     0,    17,    18,    19,
-       0,     0,     0,    21,     0,     7,     0,     0,     0,    23,
-       0,     0,    24,     0,     0,     0,    23,     0,     0,   120,
-      95,    96,   315,    98,    99,   100,   181,   101,     0,     0,
-     182,    23,   448,     0,   120,    95,    96,   315,    98,    99,
-     100,     0,   101,     0,     0,     0,     0,   525
+       0,    81,     0,     0,    30,    31,     7,     8,     9,    10,
+      11,    12,    13,     0,    14,    15,     0,     0,     0,     0,
+      17,    18,    19,    20,     0,     0,    21,    22,     0,     0,
+       0,     0,    23,     0,     0,    24,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    25,     0,    26,     0,    27,
+     352,     0,     0,    81,     0,     0,    30,    31,     7,     8,
+       9,    10,    11,    12,    13,     0,    14,    15,     0,     0,
+       0,     0,    17,    18,    19,    20,     0,     0,    21,    22,
+       0,     0,     0,     0,    23,     0,     0,    24,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    25,     0,    26,
+       0,    27,   410,     0,     0,    81,     0,     0,    30,    31,
+       7,     8,     9,    10,    11,    12,    13,     0,    14,    15,
+       0,     0,     0,     0,    17,    18,    19,    20,     0,     0,
+      21,    22,     0,     0,     0,     0,    23,     0,     0,    24,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    25,
+       0,    26,     0,    27,     0,     0,     0,    81,     0,   514,
+      30,    31,     7,     8,     9,    10,    11,    12,    13,     0,
+      14,    15,     0,     0,     0,     0,    17,    18,    19,    20,
+       0,     0,    21,    22,     0,     0,     0,     0,    23,     0,
+       0,    24,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    25,     0,    26,     0,    27,     0,     0,     0,    81,
+       0,     0,    30,    31,     8,     9,    10,    11,    12,    13,
+       0,     0,     0,     0,     0,     0,     0,    17,    18,    19,
+       0,     0,     0,    21,     0,     0,     0,     0,     0,     0,
+       0,     0,    24,     7,     8,     9,    10,    11,    12,    13,
+       0,    14,     0,     0,     0,     0,     0,    17,    18,    19,
+     318,     0,     0,    21,   319,     0,     0,     0,     0,    23,
+       0,     0,    24,     0,     0,     0,     0,     0,     0,    86,
+       0,     0,     0,     0,     0,     0,   179,     0,     0,     0,
+     180,     7,     8,     9,    10,    11,    12,    13,     7,    14,
+       0,     0,     0,     0,     0,    17,    18,    19,     0,     0,
+       0,    21,     0,     7,     0,     0,     0,    23,     0,     0,
+      24,     0,     0,     0,    23,     0,     0,   118,    94,    95,
+     307,    97,    98,    99,   179,   100,     7,     0,   180,    23,
+     308,     0,   118,    94,    95,   307,    97,    98,    99,     0,
+     100,     7,     0,     0,     0,   443,     0,     0,     0,     0,
+       0,     0,    23,     0,     0,   118,    94,    95,   307,    97,
+      98,    99,     0,   100,     0,     0,     0,    23,   520,     0,
+     118,    94,    95,    96,    97,    98,    99,     0,   100,   118,
+      94,    95,    96,    97,    98,    99,    86,   100,   119,     0,
+       0,     0,     0,     0,     0,   176,   118,    94,    95,    96,
+      97,    98,    99,    86,   100,   119
 };
 
 static const yytype_int16 yycheck[] =
 {
-       1,   111,   341,   138,   321,    25,   181,    26,    48,    29,
-      57,    58,    24,   244,    28,    31,     1,    86,    11,     3,
-     113,   114,   244,   132,    22,    14,    27,    28,     3,   138,
-     114,   206,   138,    21,    50,    16,    11,     0,   229,    21,
-      52,    53,    11,    28,     3,    29,    36,    48,    37,    30,
-      31,    49,     3,    46,    29,    37,    30,    50,    52,   133,
-      22,    49,    46,    48,   104,   139,    50,    49,    82,    26,
-      29,    46,    46,    24,   223,    50,   211,    28,    29,    36,
-      31,    82,    94,    84,    85,    47,    46,    49,   181,   182,
-      91,    92,    93,    44,    75,    76,    48,   272,   182,    50,
-      14,   210,   211,   104,   124,   211,   113,   114,   109,   202,
-      22,   131,    23,   206,   154,   454,    30,   157,   202,   104,
-     213,    24,    24,    37,   315,    24,   146,    44,    31,   264,
-     177,    47,   113,   114,    48,    47,   137,    49,    30,   288,
-     121,    44,    44,   478,    46,    44,   147,    50,    50,   113,
-     114,   244,   508,   154,   510,   264,   157,   158,   293,   160,
-     180,   142,   479,   164,   145,   500,   501,   168,   169,   170,
-      10,   218,   173,    13,   181,   182,   188,   270,     3,   272,
-     273,   274,    49,   203,   293,   505,   270,   293,    51,   273,
-     274,   265,    57,    58,   214,   202,    49,   517,   518,   206,
-     181,   182,   393,    51,    29,    51,   207,    32,    33,    34,
-      35,    36,    37,    38,    31,    40,   217,   181,   182,    24,
-     294,   202,   371,   204,   205,   206,    31,   228,   302,   378,
-      31,   380,   213,    41,   383,    33,    34,   244,   202,    44,
-      38,    21,   206,    46,    57,    58,    48,    49,   229,    44,
-      24,   252,     3,     4,   255,   256,   237,    31,   239,    48,
-      49,   242,   263,   270,    21,   272,   273,   274,   133,   418,
-      44,   420,   292,    51,   139,    51,    50,   508,    29,   510,
-     244,    32,   283,    47,   285,   286,   508,    22,   510,   270,
-      49,   272,   273,   274,    46,    30,   297,    24,    30,    50,
-      49,   348,   303,   113,   114,    51,   270,    49,   272,   273,
-     274,   460,   177,    49,    49,   506,    51,    44,    47,   331,
-     133,    49,   471,    50,   473,   326,   139,    47,   488,   489,
-      51,   491,   406,    13,   315,    15,    16,    29,    30,   340,
-     341,   361,   343,     4,     5,     6,   347,   212,    48,    49,
-      49,   511,     3,   218,   401,   515,    45,    22,   223,   340,
-     341,    49,    23,   364,   177,   434,   435,   386,   387,    45,
-      21,   181,   182,    48,    49,   376,    48,    49,    29,    47,
-      31,    30,    30,    47,    51,    47,    37,    31,     4,    41,
-     410,   411,   202,    51,   504,    90,   206,   417,    49,   212,
-     265,    39,    30,   404,    51,   218,   475,   476,   428,    44,
-     223,   106,   393,   432,   433,   508,   397,   510,    51,    51,
-     401,    51,   532,   288,    48,    44,    37,   220,    22,   294,
-      47,   224,   225,    31,   244,    31,    31,   302,    47,    47,
-     113,   114,    33,    44,   464,   465,   466,    51,    51,    51,
-     451,   452,   265,   454,    51,   456,   151,    44,   113,   114,
-     270,   442,   272,   273,   274,    44,   447,    51,    45,    49,
-      45,   113,   114,   454,    31,   288,    31,   497,    51,    51,
-      31,   294,    47,   348,    51,    51,   487,    51,    31,   302,
-      28,   492,   187,   113,   114,    31,   289,   290,    31,   519,
-      31,   508,   503,   510,   505,   200,   371,    48,   181,   182,
-      45,    27,    28,   378,     5,   380,   517,   518,   383,    45,
-      52,    45,    45,   320,    43,   506,   181,   182,   436,   202,
-     522,   226,   137,   206,    28,   348,   401,   312,   485,   181,
-     182,   406,   173,   390,   508,   242,   510,   202,    75,   481,
-     274,   206,     2,   418,     4,   420,   349,   350,   371,   145,
-     202,   181,   182,    -1,   206,   378,    82,   380,   182,    -1,
-     383,   244,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   372,
-     373,    31,   202,    -1,    -1,    -1,   206,    -1,   401,   244,
-      -1,    -1,    -1,   406,    -1,   460,   291,   270,   114,   272,
-     273,   274,   244,    -1,    -1,   418,   471,   420,   473,    -1,
-      -1,    -1,    -1,    -1,    -1,   270,    -1,   272,   273,   274,
-      -1,   137,   138,    -1,   244,    -1,    -1,    -1,   270,    -1,
-     272,   273,   274,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    -1,   160,    -1,    -1,   460,    -1,    48,
-     270,    -1,   272,   273,   274,    -1,    -1,   173,   471,    -1,
-     473,    -1,    -1,   113,   114,    -1,   182,    -1,    -1,    -1,
-      -1,    -1,    -1,     4,     5,     6,     7,     8,     9,   374,
-      -1,    -1,   377,    -1,    -1,    -1,    17,    18,    19,    -1,
-      -1,   141,    23,    -1,    -1,   211,    -1,    -1,   508,    -1,
-     510,    32,    -1,    -1,     3,     4,     5,     6,     7,     8,
-       9,    -1,    11,    12,    13,    -1,    -1,    -1,    17,    18,
-      19,    20,    -1,    54,    23,    24,    -1,    -1,    -1,    -1,
-      29,   181,   182,    32,    -1,    -1,    -1,    -1,    -1,    -1,
+       1,   110,   313,   136,    26,   332,    25,   222,    48,   180,
+      29,     1,    89,   130,    56,    57,    24,    85,    11,   136,
+       3,    28,     3,   237,    48,    49,    27,    28,   105,   179,
+      48,    49,    26,    21,     3,   131,   136,    22,    28,    11,
+      22,   137,    36,    51,    52,    30,    29,    48,    29,   199,
+       3,     4,   213,    46,    14,    24,   217,   218,    48,    28,
+      29,    49,    31,   103,    49,    46,    51,    49,    30,    50,
+      30,   204,   149,    22,    81,    44,    29,    37,    14,    32,
+      81,    50,    83,    84,    46,    93,   203,   204,    48,    90,
+      91,    92,   307,    36,   265,    21,   267,    50,    47,    31,
+      49,    37,   103,   122,   204,    22,    10,   108,   185,    13,
+     129,    37,   152,   103,   112,   155,    24,    24,    50,   269,
+     281,   282,   449,    49,   257,   144,   483,   484,   112,   486,
+      47,     0,    49,   175,   135,    46,    44,    44,    48,    46,
+     257,    23,   219,    50,   145,    29,    30,    56,    57,   506,
+       3,   152,   285,   510,   155,   156,    52,   158,    11,   178,
+      16,   162,   258,   474,    44,   166,   167,   168,   285,   211,
+     171,   386,   343,   344,    30,    31,    29,   196,   186,   340,
+     341,   179,   180,   112,    30,   285,   263,    24,   207,    13,
+     286,    15,    16,    46,    31,   179,   180,    47,   294,   200,
+      49,   199,   473,     3,   365,   366,   283,    44,   206,   210,
+      24,    51,    24,    50,   503,   199,   505,    31,    74,    75,
+     221,    21,   131,    49,   495,   496,    24,    31,   137,    29,
+      44,    31,    44,    31,    51,    51,    50,    37,    50,   237,
+       4,     5,     6,    46,   245,   500,    44,   248,   249,    49,
+     179,   180,    31,   237,    41,   256,   112,   512,   513,    23,
+      48,    49,    44,   119,    21,   284,   175,   265,    21,   267,
+     199,   269,    56,    57,   275,    51,   277,   278,    48,    49,
+      51,   265,    47,   267,   140,   269,   501,   143,   289,   503,
+     367,   505,    47,   370,   295,    49,   205,   339,    46,    33,
+      34,    47,   211,   399,    38,    48,    49,   216,   237,    49,
+      49,    49,    45,   112,   322,    51,    45,   318,    49,    49,
+      30,    22,    30,   179,   180,    47,    30,    51,    49,    47,
+     331,   332,    47,   334,    31,   354,   265,   338,   267,     4,
+     269,   197,   198,   199,    51,   343,   344,   131,    41,   258,
+     206,    39,   394,   137,    44,    44,   357,   379,   380,   343,
+     344,   429,   430,   440,    51,    51,   222,   112,   369,    51,
+      51,   280,    30,    48,   230,    37,   232,   286,    22,   235,
+     179,   180,    31,    47,    47,   294,   405,   406,    31,    31,
+     499,   175,    47,   412,    51,    51,   397,    51,    51,    44,
+     199,    51,   470,   471,   423,   427,   428,    44,    44,   265,
+      33,   267,    45,   269,   343,   344,   112,    45,   527,    49,
+      51,   205,    51,    31,    31,    31,    47,   211,    31,    51,
+     339,    51,   216,    51,   179,   180,    28,    31,   237,    48,
+     459,   460,   461,    31,    31,   446,   447,    45,   449,    45,
+     451,   307,    52,     5,   199,   364,    45,   312,   431,    45,
+     517,    43,   371,   135,   373,   112,   265,   376,   267,   304,
+     269,    28,   235,   492,   258,   331,   332,   480,   383,   216,
+     112,   482,   143,   179,   180,   394,   487,   343,   344,    74,
+     399,   171,   237,   344,    -1,   514,   280,   498,   476,   500,
+      -1,    -1,   286,   199,   413,   503,   415,   505,    -1,    -1,
+     294,   512,   513,     2,    -1,     4,    -1,    -1,    -1,   503,
+     265,   505,   267,    -1,   269,    -1,    -1,    -1,    -1,    -1,
+     386,    -1,   179,   180,   390,    -1,    -1,    -1,   394,    -1,
+      -1,   237,    31,   280,   343,   344,   455,   179,   180,    -1,
+      27,    28,   199,    -1,    -1,   339,    -1,   466,    -1,   468,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   199,    -1,   265,
+      -1,   267,    -1,   269,   503,    -1,   505,    -1,    -1,    -1,
+     364,   437,    -1,    -1,    -1,    -1,   442,   371,    -1,   373,
+     237,    -1,   376,   449,    -1,    -1,    -1,    -1,   343,   344,
+      -1,    -1,    -1,    -1,    81,   237,    -1,    -1,    -1,    -1,
+     394,    -1,    -1,    -1,    -1,   399,    -1,    -1,   265,    -1,
+     267,    -1,   269,   112,    -1,    -1,    -1,   364,    -1,   413,
+      -1,   415,    -1,   265,   371,   267,   373,   269,    -1,   376,
+      -1,    -1,    -1,    -1,    -1,   501,    -1,   343,   344,    -1,
+     139,     4,     5,     6,     7,     8,     9,    -1,   135,   136,
+      -1,    -1,    -1,    -1,    17,    18,    19,    -1,    -1,    -1,
+      23,   455,    -1,    -1,    -1,    -1,   413,    -1,   415,    32,
+      -1,   158,   466,    -1,   468,    -1,    -1,    -1,    -1,    -1,
+     179,   180,    -1,    -1,   171,    -1,   343,   344,    -1,    -1,
+      -1,    54,    -1,   180,   503,    -1,   505,    -1,    -1,    -1,
+     199,   343,   344,    -1,    -1,    -1,    -1,    -1,   455,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   204,    -1,   466,
+      -1,   468,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
+       7,     8,     9,    -1,    11,    12,    13,    -1,    -1,    -1,
+      17,    18,    19,    20,    -1,    22,    23,    24,   503,    -1,
+     505,    -1,    29,    30,    -1,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    -1,    42,   265,    44,   267,    46,
+     269,    -1,    -1,    50,    -1,    -1,    53,    54,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
+       7,     8,     9,    -1,    11,    12,    -1,   503,   285,   505,
+      17,    18,    19,    20,    -1,    -1,    23,    24,   295,    -1,
+      -1,   298,    29,    -1,    -1,    32,    -1,   304,    35,    -1,
+     319,    -1,    39,    -1,    -1,    42,    -1,    44,    -1,    46,
+      -1,    -1,    -1,    50,    51,    -1,    53,    54,    -1,    -1,
+      -1,    -1,    -1,    -1,   343,   344,   503,    -1,   505,    -1,
+       3,     4,     5,     6,     7,     8,     9,   344,    11,    12,
+      -1,   503,    -1,   505,    17,    18,    19,    20,    -1,    22,
+      23,    24,    -1,    -1,    -1,    -1,    29,    30,    -1,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    -1,    42,
+      -1,    44,    -1,    46,    -1,    -1,    -1,    50,    -1,    -1,
+      53,    54,     3,     4,     5,     6,     7,     8,     9,    -1,
+      11,    12,    -1,    -1,    -1,    -1,    17,    18,    19,    20,
+      -1,    -1,    23,    24,    -1,    -1,    -1,    -1,    29,    -1,
+      -1,    32,    -1,    -1,    35,    -1,    -1,    -1,    39,    -1,
+      -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,    50,
+      51,    -1,    53,    54,     3,     4,     5,     6,     7,     8,
+       9,    -1,    11,    12,    -1,    -1,    -1,    -1,    17,    18,
+      19,    20,    -1,    -1,    23,    24,    -1,    -1,    -1,    -1,
+      29,    -1,    -1,    32,    -1,    -1,    35,    -1,    -1,    -1,
+      39,    -1,    -1,    42,    -1,    44,    -1,    46,    -1,    -1,
+      -1,    50,    51,    -1,    53,    54,     3,     4,     5,     6,
+       7,     8,     9,    -1,    11,    12,    13,    -1,    -1,    -1,
+      17,    18,    19,    20,    -1,    -1,    23,    24,    -1,    -1,
+      -1,    -1,    29,    -1,    -1,    32,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    42,    -1,    44,    -1,    46,
+      -1,    -1,    -1,    50,    -1,    52,    53,    54,     3,     4,
+       5,     6,     7,     8,     9,    -1,    11,    12,    13,    -1,
+      -1,    -1,    17,    18,    19,    20,    -1,    -1,    23,    24,
+      -1,    -1,    -1,    -1,    29,    -1,    -1,    32,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    44,
+      -1,    46,    -1,    -1,    -1,    50,    -1,    52,    53,    54,
+       3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
+      -1,    -1,    -1,    -1,    17,    18,    19,    20,    -1,    -1,
+      23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    32,
+      -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+      -1,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    -1,
+      53,    54,     3,     4,     5,     6,     7,     8,     9,    -1,
+      11,    12,    -1,    -1,    -1,    -1,    17,    18,    19,    20,
+      -1,    -1,    23,    24,    -1,    -1,    -1,    -1,    29,    -1,
+      -1,    32,    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,
+      -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,    50,
+      51,    -1,    53,    54,     3,     4,     5,     6,     7,     8,
+       9,    -1,    11,    12,    -1,    -1,    -1,    -1,    17,    18,
+      19,    20,    -1,    -1,    23,    24,    -1,    -1,    -1,    -1,
+      29,    -1,    -1,    32,    -1,    -1,    35,    -1,    -1,    -1,
+      39,    -1,    -1,    42,    -1,    44,    -1,    46,    -1,    -1,
+      -1,    50,    -1,    -1,    53,    54,     3,     4,     5,     6,
+       7,     8,     9,    -1,    11,    12,    13,    -1,    -1,    -1,
+      17,    18,    19,    20,    -1,    -1,    23,    24,    -1,    -1,
+      -1,    -1,    29,    30,    -1,    32,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    42,    -1,    44,    -1,    46,
+      -1,    -1,    -1,    50,    -1,    -1,    53,    54,     3,     4,
+       5,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
+      -1,    -1,    17,    18,    19,    20,    -1,    -1,    23,    24,
+      -1,    -1,    -1,    -1,    29,    -1,    -1,    32,    -1,    -1,
+      -1,    -1,    -1,    -1,    39,    -1,    -1,    42,    -1,    44,
+      -1,    46,    -1,    -1,    -1,    50,    -1,    -1,    53,    54,
+       3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
+      -1,    -1,    -1,    -1,    17,    18,    19,    20,    -1,    22,
+      23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    32,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+      -1,    44,    -1,    46,    -1,    -1,    -1,    50,    -1,    -1,
+      53,    54,     3,     4,     5,     6,     7,     8,     9,    -1,
+      11,    12,    -1,    -1,    -1,    -1,    17,    18,    19,    20,
+      -1,    22,    23,    24,    -1,    -1,    -1,    -1,    29,    -1,
+      -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,    50,
+      -1,    -1,    53,    54,     3,     4,     5,     6,     7,     8,
+       9,    -1,    11,    12,    -1,    -1,    -1,    -1,    17,    18,
+      19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,
+      29,    -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    42,    -1,    44,    -1,    46,    -1,    -1,
-     445,    50,   202,    52,    53,    54,   206,    -1,   274,     3,
-       4,     5,     6,     7,     8,     9,    -1,    11,    12,    -1,
-      -1,    -1,    -1,    17,    18,    19,    20,   293,    -1,    23,
-      24,    -1,    -1,    -1,    -1,    29,    -1,   303,    32,    -1,
-     306,    35,    -1,    -1,    -1,    39,   312,    -1,    42,    -1,
-      44,    -1,    46,    -1,    -1,    -1,    50,    51,    -1,    53,
-      54,    -1,     4,     5,     6,     7,     8,     9,    -1,    -1,
-     270,    -1,   272,   273,   274,    17,    18,    19,    -1,    -1,
-      -1,    23,    -1,    -1,    -1,   508,    -1,   510,    -1,    -1,
-      32,     3,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    -1,   508,    -1,   510,    -1,    -1,    50,    -1,
-      -1,    -1,    54,    -1,    -1,    -1,   508,    29,   510,    -1,
-      32,    33,    34,    35,    36,    37,    38,   327,    40,    -1,
-      -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,   508,    -1,
-     510,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
-      12,    13,    -1,    -1,    -1,    17,    18,    19,    20,    -1,
-      22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,    -1,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    -1,
-      42,    -1,    44,    -1,    46,    -1,    -1,    -1,    50,    -1,
-      -1,    53,    54,     3,     4,     5,     6,     7,     8,     9,
-      -1,    11,    12,    -1,    -1,    -1,    -1,    17,    18,    19,
-      20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,    29,
-      30,    -1,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,
-      50,    -1,    -1,    53,    54,     3,     4,     5,     6,     7,
-       8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    17,
-      18,    19,    20,    -1,    -1,    23,    24,    -1,    -1,    -1,
-      -1,    29,    -1,    -1,    32,    -1,    -1,    35,    -1,    -1,
-      -1,    39,    -1,    -1,    42,    -1,    44,    -1,    46,    -1,
-      -1,    -1,    50,    51,    -1,    53,    54,     3,     4,     5,
-       6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
-      -1,    17,    18,    19,    20,    -1,    -1,    23,    24,    -1,
-      -1,    -1,    -1,    29,    -1,    -1,    32,    -1,    -1,    35,
-      -1,    -1,    -1,    39,    -1,    -1,    42,    -1,    44,    -1,
-      46,    -1,    -1,    -1,    50,    51,    -1,    53,    54,     3,
-       4,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
-      -1,    -1,    -1,    17,    18,    19,    20,    -1,    -1,    23,
-      24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    32,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
-      44,    -1,    46,    -1,    -1,    -1,    50,    -1,    52,    53,
-      54,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
-      12,    -1,    -1,    -1,    -1,    17,    18,    19,    20,    -1,
-      -1,    23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,
-      32,    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    -1,
-      42,    -1,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
-      -1,    53,    54,     3,     4,     5,     6,     7,     8,     9,
-      -1,    11,    12,    -1,    -1,    -1,    -1,    17,    18,    19,
-      20,    -1,    -1,    23,    24,    -1,    -1,    -1,    -1,    29,
-      -1,    -1,    32,    -1,    -1,    35,    -1,    -1,    -1,    -1,
-      -1,    -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,
-      50,    51,    -1,    53,    54,     3,     4,     5,     6,     7,
-       8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    17,
-      18,    19,    20,    -1,    -1,    23,    24,    -1,    -1,    -1,
-      -1,    29,    -1,    -1,    32,    -1,    -1,    35,    -1,    -1,
-      -1,    39,    -1,    -1,    42,    -1,    44,    -1,    46,    -1,
-      -1,    -1,    50,    -1,    -1,    53,    54,     3,     4,     5,
-       6,     7,     8,     9,    -1,    11,    12,    13,    -1,    -1,
-      -1,    17,    18,    19,    20,    -1,    -1,    23,    24,    -1,
-      -1,    -1,    -1,    29,    30,    -1,    32,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    44,    -1,
-      46,    -1,    -1,    -1,    50,    -1,    -1,    53,    54,     3,
-       4,     5,     6,     7,     8,     9,    -1,    11,    12,    -1,
-      -1,    -1,    -1,    17,    18,    19,    20,    -1,    -1,    23,
-      24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    32,    -1,
-      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    42,    -1,
-      44,    -1,    46,    -1,    -1,    -1,    50,    -1,    -1,    53,
-      54,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
-      12,    -1,    -1,    -1,    -1,    17,    18,    19,    20,    -1,
-      22,    23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,
-      32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      42,    -1,    44,    -1,    46,    -1,    -1,    -1,    50,    -1,
-      -1,    53,    54,     3,     4,     5,     6,     7,     8,     9,
-      -1,    11,    12,    -1,    -1,    -1,    -1,    17,    18,    19,
-      20,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,    29,
-      -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,
-      50,    -1,    -1,    53,    54,     3,     4,     5,     6,     7,
-       8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    17,
-      18,    19,    20,    -1,    22,    23,    24,    -1,    -1,    -1,
-      -1,    29,    -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    42,    -1,    44,    -1,    46,    -1,
-      -1,    -1,    50,    -1,    -1,    53,    54,     3,     4,     5,
-       6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
-      -1,    17,    18,    19,    20,    -1,    -1,    23,    24,    -1,
-      -1,    -1,    -1,    29,    -1,    -1,    32,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    44,    -1,
-      46,    47,    -1,    -1,    50,    -1,    -1,    53,    54,     3,
-       4,     5,     6,     7,     8,     9,    -1,    11,    12,    -1,
-      -1,    -1,    -1,    17,    18,    19,    20,    -1,    -1,    23,
-      24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    32,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
-      44,    -1,    46,    47,    -1,    -1,    50,    -1,    -1,    53,
-      54,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
-      12,    -1,    -1,    -1,    -1,    17,    18,    19,    20,    -1,
-      -1,    23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,
-      32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      42,    -1,    44,    -1,    46,    -1,    -1,    -1,    50,    -1,
-      52,    53,    54,     3,     4,     5,     6,     7,     8,     9,
-      -1,    11,    12,    -1,    -1,    -1,    -1,    17,    18,    19,
-      20,    -1,    -1,    23,    24,    -1,    -1,    -1,    -1,    29,
-      -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,
-      50,    -1,    -1,    53,    54,     3,     4,     5,     6,     7,
-       8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    17,
-      18,    19,    -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,
-      -1,    29,    -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,
-      -1,    -1,    50,     3,     4,     5,     6,     7,     8,     9,
-       3,    11,    -1,    -1,    -1,    -1,    -1,    17,    18,    19,
-      -1,    -1,    -1,    23,    -1,     3,    -1,    -1,    -1,    29,
-      -1,    -1,    32,    -1,    -1,    -1,    29,    -1,    -1,    32,
-      33,    34,    35,    36,    37,    38,    46,    40,    -1,    -1,
-      50,    29,    45,    -1,    32,    33,    34,    35,    36,    37,
-      38,    -1,    40,    -1,    -1,    -1,    -1,    45
+      -1,    50,    -1,    -1,    53,    54,     3,     4,     5,     6,
+       7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,
+      17,    18,    19,    20,    -1,    -1,    23,    24,    -1,    -1,
+      -1,    -1,    29,    -1,    -1,    32,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    42,    -1,    44,    -1,    46,
+      47,    -1,    -1,    50,    -1,    -1,    53,    54,     3,     4,
+       5,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
+      -1,    -1,    17,    18,    19,    20,    -1,    -1,    23,    24,
+      -1,    -1,    -1,    -1,    29,    -1,    -1,    32,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    44,
+      -1,    46,    47,    -1,    -1,    50,    -1,    -1,    53,    54,
+       3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
+      -1,    -1,    -1,    -1,    17,    18,    19,    20,    -1,    -1,
+      23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    32,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+      -1,    44,    -1,    46,    -1,    -1,    -1,    50,    -1,    52,
+      53,    54,     3,     4,     5,     6,     7,     8,     9,    -1,
+      11,    12,    -1,    -1,    -1,    -1,    17,    18,    19,    20,
+      -1,    -1,    23,    24,    -1,    -1,    -1,    -1,    29,    -1,
+      -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,    50,
+      -1,    -1,    53,    54,     4,     5,     6,     7,     8,     9,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    17,    18,    19,
+      -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    32,     3,     4,     5,     6,     7,     8,     9,
+      -1,    11,    -1,    -1,    -1,    -1,    -1,    17,    18,    19,
+      50,    -1,    -1,    23,    54,    -1,    -1,    -1,    -1,    29,
+      -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,
+      50,     3,     4,     5,     6,     7,     8,     9,     3,    11,
+      -1,    -1,    -1,    -1,    -1,    17,    18,    19,    -1,    -1,
+      -1,    23,    -1,     3,    -1,    -1,    -1,    29,    -1,    -1,
+      32,    -1,    -1,    -1,    29,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    46,    40,     3,    -1,    50,    29,
+      45,    -1,    32,    33,    34,    35,    36,    37,    38,    -1,
+      40,     3,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,
+      -1,    -1,    29,    -1,    -1,    32,    33,    34,    35,    36,
+      37,    38,    -1,    40,    -1,    -1,    -1,    29,    45,    -1,
+      32,    33,    34,    35,    36,    37,    38,    -1,    40,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    -1,    -1,    48,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1288,55 +1299,55 @@ static const yytype_uint8 yystos[] =
       20,    23,    24,    29,    32,    42,    44,    46,    50,    52,
       53,    54,    70,    71,    75,    79,    80,    85,    86,    87,
       88,    91,    93,    94,   105,   106,   107,   109,   111,   112,
-     127,   132,   138,   139,   140,   141,   142,   143,   144,   146,
-     147,   148,   149,   150,   151,   152,   156,   144,     0,    59,
-     144,    60,   120,   121,   143,    14,    37,   113,     4,     5,
-       6,   141,    50,    91,    30,    48,   113,    39,    94,    95,
-      96,   154,    22,    30,    32,    33,    34,    35,    36,    37,
-      38,    40,    89,    94,   111,   122,   123,   124,   153,   154,
-     155,    91,   143,    46,    50,   102,   103,   143,   144,    46,
-      32,    41,   154,   155,    48,    67,    75,    70,   112,   141,
-     141,    31,    50,    76,    77,    80,   105,    46,    50,    76,
-      44,    30,    46,    62,    48,    49,    31,    50,   119,   120,
-     116,   117,   118,   143,   110,    94,    94,   110,    30,    47,
-      49,    68,    94,    94,    22,    90,    94,    51,    22,    30,
-      49,    51,    70,    49,    68,    51,    94,    51,    48,    67,
-      31,    46,    50,   108,   128,   133,   134,   135,   138,   142,
-     143,   144,   146,   147,   148,   149,   150,   151,   108,   129,
-     130,   131,   154,    31,    21,    49,    46,    22,    94,    97,
-      46,    50,   143,    41,    92,    91,    91,    35,    51,    97,
-      98,    77,    95,    51,    97,    98,    99,   100,   154,    65,
-     144,    61,   143,    44,   121,    91,    94,    21,    48,    21,
-      37,    49,    68,    31,    69,    70,   112,    81,    82,    70,
-      94,    94,   154,    94,    51,    22,    49,    94,    94,    94,
-      51,    94,   122,   154,    50,    76,    91,   134,   131,    47,
-      49,    68,    46,    30,    49,    68,    51,   108,    91,   143,
-     143,   134,    94,    22,    47,    49,    22,    97,    51,    97,
-      98,    99,    31,    50,    76,    78,    32,    50,   138,   143,
-      91,    94,    76,    49,    68,   101,    49,   101,    47,    78,
-     101,   101,    49,    68,    94,    35,    45,    66,   143,   153,
-      47,    63,    51,   143,   143,   118,    50,    54,   104,   127,
-     132,   138,   142,   146,   147,   148,   149,   150,   151,    45,
-      49,    49,    45,    30,    94,    94,    94,    22,    51,    97,
-      98,    47,    51,   108,   134,   108,   129,    47,    47,    47,
-      94,    31,    94,    94,    22,    47,    78,   101,   101,    68,
-      91,    51,    97,    98,    99,    94,    35,    99,    51,    51,
-      51,    51,   100,    51,   143,   153,    44,    44,    62,    13,
-      15,    16,    64,    65,    48,    37,    94,    13,    30,    84,
-      94,   143,    84,    94,    22,    94,    76,   101,   101,    47,
-      31,    31,    47,    91,    47,    47,    94,    31,    51,    51,
-      51,    78,   101,   101,    68,    51,    94,    68,    31,    78,
-      78,    78,    44,    44,   113,   113,    44,    33,    34,    38,
-     125,   126,   136,   125,    33,   114,   115,   137,    45,    51,
-     143,    29,    30,    45,    49,    83,    28,   143,    45,    94,
-      51,    51,    91,    91,    31,    31,    31,    47,    91,    78,
-      78,    51,    51,    51,    91,   113,   113,   110,   110,    63,
-      48,    49,   143,    48,    48,    68,   143,    31,    94,    94,
-      84,    94,    28,    78,    91,    91,    91,    31,    78,    78,
-     110,   110,    10,    73,   145,    73,    65,   126,    31,   115,
-      31,    94,    83,    83,    83,    94,    91,    73,    73,    52,
-      72,    74,    94,    67,    72,    45,   104,   104,    83,    83,
-      72,    72,    91,    45,    74,    45,    45,    45,    67
+     131,   137,   138,   139,   140,   141,   142,   143,   145,   146,
+     147,   148,   149,   150,   151,   155,   143,     0,    59,   143,
+      60,   120,   121,   142,    14,    37,   113,     4,     5,     6,
+     140,    50,    91,    30,    48,   113,    39,    94,    95,    96,
+     153,    22,    30,    32,    33,    34,    35,    36,    37,    38,
+      40,    89,    94,   111,   122,   123,   124,   152,   153,   154,
+      91,   142,    46,   102,   103,   142,   143,    46,    32,    41,
+     153,   154,    48,    67,    75,    70,   112,   140,   140,    31,
+      50,    76,    77,    80,   105,    46,    50,    76,    44,    30,
+      46,    62,    48,    49,    31,    50,   119,   120,   116,   117,
+     118,   142,   110,    94,    94,   110,    30,    47,    49,    68,
+      94,    94,    22,    90,    94,    51,    22,    30,    49,    51,
+      70,    49,    68,    51,    94,    51,    48,    67,    31,    46,
+      50,   108,   127,   132,   133,   134,   137,   141,   142,   143,
+     145,   146,   147,   148,   149,   150,    31,    21,    49,    46,
+      22,    94,    97,    46,    50,   142,    41,    92,    91,    91,
+      35,    51,    97,    98,    77,    95,    51,    97,    98,    99,
+     100,   153,    65,   143,    61,   142,    44,   121,    91,    94,
+      21,    48,    21,    37,    49,    68,    31,    69,    70,   112,
+      81,    82,    70,    94,    94,   153,    94,    51,    22,    49,
+      94,    94,    94,    51,    94,   122,   153,    50,    76,    91,
+     133,   108,   128,   129,   130,   153,    47,    49,    68,    46,
+      91,   142,   142,   133,    94,    22,    47,    49,    22,    97,
+      51,    97,    98,    99,    31,    50,    76,    78,    32,    50,
+     137,   142,    91,    94,    76,    49,    68,   101,    49,   101,
+      47,    78,   101,   101,    49,    68,    94,    35,    45,    66,
+     142,   152,    47,    63,    51,   142,   142,   118,    50,    54,
+     104,   131,   137,   141,   145,   146,   147,   148,   149,   150,
+      45,    49,    49,    45,    30,    94,    94,    94,    22,    51,
+      97,    98,    47,    30,    49,    68,    51,   108,   108,   133,
+      47,    47,    47,    94,    31,    94,    94,    22,    47,    78,
+     101,   101,    68,    91,    51,    97,    98,    99,    94,    35,
+      99,    51,    51,    51,    51,   100,    51,   142,   152,    44,
+      44,    62,    13,    15,    16,    64,    65,    48,    37,    94,
+      13,    30,    84,    94,   142,    84,    94,    22,    94,    76,
+     101,   101,   108,   128,    47,    31,    31,    47,    91,    47,
+      47,    94,    31,    51,    51,    51,    78,   101,   101,    68,
+      51,    94,    68,    31,    78,    78,    78,    44,    44,   113,
+     113,    44,    33,    34,    38,   125,   126,   135,   125,    33,
+     114,   115,   136,    45,    51,   142,    29,    30,    45,    49,
+      83,    28,   142,    45,    94,    51,    51,    91,    91,    31,
+      31,    31,    47,    91,    78,    78,    51,    51,    51,    91,
+     113,   113,   110,   110,    63,    48,    49,   142,    48,    48,
+      68,   142,    31,    94,    94,    84,    94,    28,    78,    91,
+      91,    91,    31,    78,    78,   110,   110,    10,    73,   144,
+      73,    65,   126,    31,   115,    31,    94,    83,    83,    83,
+      94,    91,    73,    73,    52,    72,    74,    94,    67,    72,
+      45,   104,   104,    83,    83,    72,    72,    91,    45,    74,
+      45,    45,    45,    67
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -3994,22 +4005,22 @@ yyreduce:
   case 175:
 
 /* Line 1455 of yacc.c  */
-#line 1269 "lang11d"
-    { (yyval) = (long)newPyrLiteralNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
+#line 1271 "lang11d"
+    { (yyval) = (long)newPyrPushLitNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
     break;
 
   case 176:
 
 /* Line 1455 of yacc.c  */
-#line 1272 "lang11d"
-    { (yyval) = (long)newPyrPushLitNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
+#line 1274 "lang11d"
+    { (yyval) = (long)newPyrPushNameNode((PyrSlotNode*)(yyvsp[(1) - (1)])); ;}
     break;
 
   case 177:
 
 /* Line 1455 of yacc.c  */
-#line 1275 "lang11d"
-    { (yyval) = (long)newPyrPushNameNode((PyrSlotNode*)(yyvsp[(1) - (1)])); ;}
+#line 1277 "lang11d"
+    { (yyval) = (long)newPyrPushLitNode((PyrSlotNode*)(yyvsp[(1) - (1)]), NULL); ;}
     break;
 
   case 178:
@@ -4065,21 +4076,21 @@ yyreduce:
 
 /* Line 1455 of yacc.c  */
 #line 1285 "lang11d"
-    { (yyval) = (long)newPyrPushLitNode((PyrSlotNode*)(yyvsp[(1) - (1)]), NULL); ;}
+    { (yyval) = (long)newPyrPushLitNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
     break;
 
   case 186:
 
 /* Line 1455 of yacc.c  */
-#line 1286 "lang11d"
-    { (yyval) = (long)newPyrPushLitNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
+#line 1288 "lang11d"
+    { (yyval) = (long)newPyrLiteralNode((PyrSlotNode*)(yyvsp[(1) - (1)]), NULL); ;}
     break;
 
   case 187:
 
 /* Line 1455 of yacc.c  */
-#line 1287 "lang11d"
-    { (yyval) = (long)newPyrPushLitNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
+#line 1289 "lang11d"
+    { (yyval) = (long)newPyrLiteralNode((PyrSlotNode*)(yyvsp[(1) - (1)]), NULL); ;}
     break;
 
   case 188:
@@ -4135,163 +4146,149 @@ yyreduce:
 
 /* Line 1455 of yacc.c  */
 #line 1297 "lang11d"
-    { (yyval) = (long)newPyrLiteralNode((PyrSlotNode*)(yyvsp[(1) - (1)]), NULL); ;}
+    { (yyval) = (long)newPyrLiteralNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
     break;
 
   case 196:
 
 /* Line 1455 of yacc.c  */
 #line 1298 "lang11d"
-    { (yyval) = (long)newPyrLiteralNode((PyrSlotNode*)(yyvsp[(1) - (1)]), NULL); ;}
-    break;
-
-  case 197:
-
-/* Line 1455 of yacc.c  */
-#line 1299 "lang11d"
     { (yyval) = (long)newPyrLiteralNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
     break;
 
-  case 198:
-
-/* Line 1455 of yacc.c  */
-#line 1300 "lang11d"
-    { (yyval) = (long)newPyrLiteralNode(NULL, (PyrParseNode*)(yyvsp[(1) - (1)])); ;}
-    break;
-
-  case 199:
+  case 197:
 
 /* Line 1455 of yacc.c  */
-#line 1304 "lang11d"
+#line 1302 "lang11d"
     { (yyval) = (long)newPyrBlockNode((PyrArgListNode*)(yyvsp[(2) - (5)]), (PyrVarListNode*)(yyvsp[(3) - (5)]),
 					(PyrParseNode*)(yyvsp[(4) - (5)]), false); ;}
     break;
 
-  case 200:
+  case 198:
 
 /* Line 1455 of yacc.c  */
-#line 1307 "lang11d"
+#line 1305 "lang11d"
     { (yyval) = (long)newPyrBlockNode((PyrArgListNode*)(yyvsp[(2) - (5)]), (PyrVarListNode*)(yyvsp[(3) - (5)]),
 					(PyrParseNode*)(yyvsp[(4) - (5)]), true); ;}
     break;
 
-  case 201:
+  case 199:
 
 /* Line 1455 of yacc.c  */
-#line 1311 "lang11d"
+#line 1309 "lang11d"
     { (yyval) = 0; ;}
     break;
 
-  case 202:
+  case 200:
 
 /* Line 1455 of yacc.c  */
-#line 1313 "lang11d"
+#line 1311 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (2)]), (PyrParseNode*)(yyvsp[(2) - (2)])); ;}
     break;
 
-  case 204:
+  case 202:
 
 /* Line 1455 of yacc.c  */
-#line 1318 "lang11d"
+#line 1316 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (2)]), (PyrParseNode*)(yyvsp[(2) - (2)])); ;}
     break;
 
-  case 205:
+  case 203:
 
 /* Line 1455 of yacc.c  */
-#line 1322 "lang11d"
+#line 1320 "lang11d"
     { (yyval) = (long)newPyrVarListNode((PyrVarDefNode*)(yyvsp[(2) - (3)]), varLocal); ;}
     break;
 
-  case 206:
+  case 204:
 
 /* Line 1455 of yacc.c  */
-#line 1325 "lang11d"
+#line 1323 "lang11d"
     { (yyval) = 0; ;}
     break;
 
-  case 207:
+  case 205:
 
 /* Line 1455 of yacc.c  */
-#line 1327 "lang11d"
+#line 1325 "lang11d"
     {
 					(yyval) = (long)newPyrArgListNode((PyrVarDefNode*)(yyvsp[(2) - (3)]), NULL);
 				;}
     break;
 
-  case 208:
+  case 206:
 
 /* Line 1455 of yacc.c  */
-#line 1331 "lang11d"
+#line 1329 "lang11d"
     {
 					(yyval) = (long)newPyrArgListNode((PyrVarDefNode*)(yyvsp[(2) - (5)]), (PyrSlotNode*)(yyvsp[(4) - (5)]));
 				;}
     break;
 
-  case 209:
+  case 207:
 
 /* Line 1455 of yacc.c  */
-#line 1335 "lang11d"
+#line 1333 "lang11d"
     {
 					(yyval) = (long)newPyrArgListNode((PyrVarDefNode*)(yyvsp[(2) - (3)]), NULL);
 				;}
     break;
 
-  case 210:
+  case 208:
 
 /* Line 1455 of yacc.c  */
-#line 1339 "lang11d"
+#line 1337 "lang11d"
     {
 					(yyval) = (long)newPyrArgListNode((PyrVarDefNode*)(yyvsp[(2) - (5)]), (PyrSlotNode*)(yyvsp[(4) - (5)]));
 				;}
     break;
 
-  case 212:
+  case 210:
 
 /* Line 1455 of yacc.c  */
-#line 1346 "lang11d"
+#line 1344 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 213:
+  case 211:
 
 /* Line 1455 of yacc.c  */
-#line 1350 "lang11d"
+#line 1348 "lang11d"
     { (yyval) = (long)newPyrVarDefNode((PyrSlotNode*)(yyvsp[(2) - (4)]), (PyrParseNode*)(yyvsp[(4) - (4)]), (yyvsp[(1) - (4)])); ;}
     break;
 
-  case 214:
+  case 212:
 
 /* Line 1455 of yacc.c  */
-#line 1353 "lang11d"
+#line 1351 "lang11d"
     { (yyval) = 0; ;}
     break;
 
-  case 217:
+  case 215:
 
 /* Line 1455 of yacc.c  */
-#line 1359 "lang11d"
+#line 1357 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 218:
+  case 216:
 
 /* Line 1455 of yacc.c  */
-#line 1363 "lang11d"
+#line 1361 "lang11d"
     { (yyval) = (long)newPyrVarDefNode((PyrSlotNode*)(yyvsp[(1) - (1)]), NULL, 0); ;}
     break;
 
-  case 219:
+  case 217:
 
 /* Line 1455 of yacc.c  */
-#line 1365 "lang11d"
+#line 1363 "lang11d"
     { (yyval) = (long)newPyrVarDefNode((PyrSlotNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)]), 0); ;}
     break;
 
-  case 220:
+  case 218:
 
 /* Line 1455 of yacc.c  */
-#line 1367 "lang11d"
+#line 1365 "lang11d"
     {
 					PyrParseNode* node = (PyrParseNode*)(yyvsp[(4) - (5)]);
 					node->mParens = 1;
@@ -4299,38 +4296,38 @@ yyreduce:
 				;}
     break;
 
-  case 221:
+  case 219:
 
 /* Line 1455 of yacc.c  */
-#line 1374 "lang11d"
+#line 1372 "lang11d"
     { (yyval) = 0; ;}
     break;
 
-  case 224:
+  case 222:
 
 /* Line 1455 of yacc.c  */
-#line 1380 "lang11d"
+#line 1378 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 225:
+  case 223:
 
 /* Line 1455 of yacc.c  */
-#line 1384 "lang11d"
+#line 1382 "lang11d"
     { (yyval) = (long)newPyrVarDefNode((PyrSlotNode*)(yyvsp[(1) - (1)]), NULL, 0); ;}
     break;
 
-  case 226:
+  case 224:
 
 /* Line 1455 of yacc.c  */
-#line 1386 "lang11d"
+#line 1384 "lang11d"
     { (yyval) = (long)newPyrVarDefNode((PyrSlotNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)]), 0); ;}
     break;
 
-  case 227:
+  case 225:
 
 /* Line 1455 of yacc.c  */
-#line 1388 "lang11d"
+#line 1386 "lang11d"
     {
 									PyrParseNode* node = (PyrParseNode*)(yyvsp[(3) - (4)]);
 									node->mParens = 1;
@@ -4338,198 +4335,191 @@ yyreduce:
 								;}
     break;
 
-  case 228:
+  case 226:
 
 /* Line 1455 of yacc.c  */
-#line 1396 "lang11d"
+#line 1394 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 229:
+  case 227:
 
 /* Line 1455 of yacc.c  */
-#line 1398 "lang11d"
+#line 1396 "lang11d"
     {
 					PyrParseNode* key = newPyrPushLitNode((PyrSlotNode*)(yyvsp[(1) - (2)]), NULL);
 					(yyval) = (long)linkNextNode(key, (PyrParseNode*)(yyvsp[(2) - (2)]));
 				;}
     break;
 
-  case 231:
+  case 229:
 
 /* Line 1455 of yacc.c  */
-#line 1406 "lang11d"
+#line 1404 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 232:
+  case 230:
 
 /* Line 1455 of yacc.c  */
-#line 1409 "lang11d"
+#line 1407 "lang11d"
     { (yyval) = 0; ;}
     break;
 
-  case 235:
+  case 233:
 
 /* Line 1455 of yacc.c  */
-#line 1415 "lang11d"
+#line 1413 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 236:
+  case 234:
 
 /* Line 1455 of yacc.c  */
-#line 1419 "lang11d"
+#line 1417 "lang11d"
     { (yyval) = (long)newPyrVarDefNode((PyrSlotNode*)(yyvsp[(2) - (2)]), NULL, (yyvsp[(1) - (2)])); ;}
     break;
 
-  case 237:
+  case 235:
 
 /* Line 1455 of yacc.c  */
-#line 1421 "lang11d"
+#line 1419 "lang11d"
     { (yyval) = (long)newPyrVarDefNode((PyrSlotNode*)(yyvsp[(2) - (4)]), (PyrParseNode*)(yyvsp[(4) - (4)]), (yyvsp[(1) - (4)])); ;}
     break;
 
-  case 238:
-
-/* Line 1455 of yacc.c  */
-#line 1425 "lang11d"
-    { (yyval) = (long)newPyrLitDictNode((PyrParseNode*)(yyvsp[(3) - (4)])); ;}
-    break;
-
-  case 239:
+  case 236:
 
 /* Line 1455 of yacc.c  */
-#line 1429 "lang11d"
+#line 1423 "lang11d"
     { (yyval) = (long)newPyrLitDictNode((PyrParseNode*)(yyvsp[(2) - (3)])); ;}
     break;
 
-  case 240:
+  case 237:
 
 /* Line 1455 of yacc.c  */
-#line 1433 "lang11d"
+#line 1427 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 241:
+  case 238:
 
 /* Line 1455 of yacc.c  */
-#line 1435 "lang11d"
+#line 1429 "lang11d"
     {
 					PyrParseNode* key = newPyrPushLitNode((PyrSlotNode*)(yyvsp[(1) - (2)]), NULL);
 					(yyval) = (long)linkNextNode(key, (PyrParseNode*)(yyvsp[(2) - (2)]));
 				;}
     break;
 
-  case 243:
+  case 240:
 
 /* Line 1455 of yacc.c  */
-#line 1443 "lang11d"
+#line 1437 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 244:
+  case 241:
 
 /* Line 1455 of yacc.c  */
-#line 1446 "lang11d"
+#line 1440 "lang11d"
     { (yyval) = 0; ;}
     break;
 
-  case 246:
+  case 243:
 
 /* Line 1455 of yacc.c  */
-#line 1453 "lang11d"
+#line 1447 "lang11d"
     { (yyval) = (long)newPyrLitListNode(0, (PyrParseNode*)(yyvsp[(3) - (4)])); ;}
     break;
 
-  case 247:
+  case 244:
 
 /* Line 1455 of yacc.c  */
-#line 1455 "lang11d"
+#line 1449 "lang11d"
     { (yyval) = (long)newPyrLitListNode((PyrParseNode*)(yyvsp[(2) - (5)]), (PyrParseNode*)(yyvsp[(4) - (5)])); ;}
     break;
 
-  case 248:
+  case 245:
 
 /* Line 1455 of yacc.c  */
-#line 1459 "lang11d"
+#line 1453 "lang11d"
     { (yyval) = (long)newPyrLitListNode(0, (PyrParseNode*)(yyvsp[(2) - (3)])); ;}
     break;
 
-  case 249:
+  case 246:
 
 /* Line 1455 of yacc.c  */
-#line 1461 "lang11d"
+#line 1455 "lang11d"
     { (yyval) = (long)newPyrLitListNode((PyrParseNode*)(yyvsp[(1) - (4)]), (PyrParseNode*)(yyvsp[(3) - (4)])); ;}
     break;
 
-  case 250:
+  case 247:
 
 /* Line 1455 of yacc.c  */
-#line 1464 "lang11d"
+#line 1458 "lang11d"
     { (yyval) = 0; ;}
     break;
 
-  case 253:
+  case 250:
 
 /* Line 1455 of yacc.c  */
-#line 1470 "lang11d"
+#line 1464 "lang11d"
     { (yyval) = (long)linkNextNode((PyrParseNode*)(yyvsp[(1) - (3)]), (PyrParseNode*)(yyvsp[(3) - (3)])); ;}
     break;
 
-  case 254:
+  case 251:
 
 /* Line 1455 of yacc.c  */
-#line 1473 "lang11d"
+#line 1467 "lang11d"
     { (yyval) = rwPrivate; ;}
     break;
 
-  case 255:
+  case 252:
 
 /* Line 1455 of yacc.c  */
-#line 1475 "lang11d"
+#line 1469 "lang11d"
     { (yyval) = rwReadOnly; ;}
     break;
 
-  case 256:
+  case 253:
 
 /* Line 1455 of yacc.c  */
-#line 1477 "lang11d"
+#line 1471 "lang11d"
     { (yyval) = rwReadWrite; ;}
     break;
 
-  case 257:
+  case 254:
 
 /* Line 1455 of yacc.c  */
-#line 1479 "lang11d"
+#line 1473 "lang11d"
     { (yyval) = rwWriteOnly; ;}
     break;
 
-  case 258:
+  case 255:
 
 /* Line 1455 of yacc.c  */
-#line 1482 "lang11d"
+#line 1476 "lang11d"
     { (yyval) = rwPrivate; ;}
     break;
 
-  case 259:
+  case 256:
 
 /* Line 1455 of yacc.c  */
-#line 1484 "lang11d"
+#line 1478 "lang11d"
     { (yyval) = rwReadOnly; ;}
     break;
 
-  case 260:
+  case 257:
 
 /* Line 1455 of yacc.c  */
-#line 1487 "lang11d"
+#line 1481 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
-  case 261:
+  case 258:
 
 /* Line 1455 of yacc.c  */
-#line 1489 "lang11d"
+#line 1483 "lang11d"
     {
 				PyrSlotNode *node;
 				node = (PyrSlotNode*)zzval;
@@ -4538,17 +4528,17 @@ yyreduce:
 			;}
     break;
 
-  case 262:
+  case 259:
 
 /* Line 1455 of yacc.c  */
-#line 1497 "lang11d"
+#line 1491 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
-  case 263:
+  case 260:
 
 /* Line 1455 of yacc.c  */
-#line 1499 "lang11d"
+#line 1493 "lang11d"
     {
 				PyrSlotNode *node;
 				node = (PyrSlotNode*)zzval;
@@ -4557,17 +4547,17 @@ yyreduce:
 			;}
     break;
 
-  case 264:
+  case 261:
 
 /* Line 1455 of yacc.c  */
-#line 1507 "lang11d"
+#line 1501 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
-  case 265:
+  case 262:
 
 /* Line 1455 of yacc.c  */
-#line 1509 "lang11d"
+#line 1503 "lang11d"
     {
 					PyrSlotNode *node;
 					double intval, fracval;
@@ -4579,17 +4569,17 @@ yyreduce:
 				;}
     break;
 
-  case 266:
+  case 263:
 
 /* Line 1455 of yacc.c  */
-#line 1519 "lang11d"
+#line 1513 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
-  case 269:
+  case 266:
 
 /* Line 1455 of yacc.c  */
-#line 1525 "lang11d"
+#line 1519 "lang11d"
     {
 				PyrSlotNode *node;
 				node = (PyrSlotNode*)(yyvsp[(1) - (2)]);
@@ -4597,10 +4587,10 @@ yyreduce:
 			;}
     break;
 
-  case 270:
+  case 267:
 
 /* Line 1455 of yacc.c  */
-#line 1531 "lang11d"
+#line 1525 "lang11d"
     {
 				PyrSlotNode *node;
 				double ival;
@@ -4610,10 +4600,10 @@ yyreduce:
 			;}
     break;
 
-  case 271:
+  case 268:
 
 /* Line 1455 of yacc.c  */
-#line 1539 "lang11d"
+#line 1533 "lang11d"
     {
 				PyrSlotNode *node;
 				node = (PyrSlotNode*)zzval;
@@ -4622,10 +4612,10 @@ yyreduce:
 			;}
     break;
 
-  case 272:
+  case 269:
 
 /* Line 1455 of yacc.c  */
-#line 1546 "lang11d"
+#line 1540 "lang11d"
     {
 				PyrSlotNode *node;
 				node = (PyrSlotNode*)zzval;
@@ -4634,157 +4624,157 @@ yyreduce:
 			;}
     break;
 
+  case 270:
+
+/* Line 1455 of yacc.c  */
+#line 1548 "lang11d"
+    { (yyval) = zzval; ;}
+    break;
+
+  case 271:
+
+/* Line 1455 of yacc.c  */
+#line 1549 "lang11d"
+    { (yyval) = zzval; ;}
+    break;
+
+  case 272:
+
+/* Line 1455 of yacc.c  */
+#line 1552 "lang11d"
+    { (yyval) = zzval; ;}
+    break;
+
   case 273:
 
 /* Line 1455 of yacc.c  */
-#line 1554 "lang11d"
+#line 1555 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 274:
 
 /* Line 1455 of yacc.c  */
-#line 1555 "lang11d"
+#line 1558 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 275:
 
 /* Line 1455 of yacc.c  */
-#line 1558 "lang11d"
+#line 1561 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 276:
 
 /* Line 1455 of yacc.c  */
-#line 1561 "lang11d"
+#line 1564 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 277:
 
 /* Line 1455 of yacc.c  */
-#line 1564 "lang11d"
+#line 1567 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 278:
 
 /* Line 1455 of yacc.c  */
-#line 1567 "lang11d"
+#line 1570 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 279:
 
 /* Line 1455 of yacc.c  */
-#line 1570 "lang11d"
+#line 1573 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 280:
 
 /* Line 1455 of yacc.c  */
-#line 1573 "lang11d"
+#line 1576 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 281:
 
 /* Line 1455 of yacc.c  */
-#line 1576 "lang11d"
+#line 1579 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 282:
 
 /* Line 1455 of yacc.c  */
-#line 1579 "lang11d"
+#line 1580 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 283:
 
 /* Line 1455 of yacc.c  */
-#line 1582 "lang11d"
+#line 1581 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 284:
 
 /* Line 1455 of yacc.c  */
-#line 1585 "lang11d"
+#line 1582 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 285:
 
 /* Line 1455 of yacc.c  */
-#line 1586 "lang11d"
+#line 1583 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 286:
 
 /* Line 1455 of yacc.c  */
-#line 1587 "lang11d"
+#line 1584 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 287:
 
 /* Line 1455 of yacc.c  */
-#line 1588 "lang11d"
+#line 1585 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 288:
 
 /* Line 1455 of yacc.c  */
-#line 1589 "lang11d"
+#line 1586 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 289:
 
 /* Line 1455 of yacc.c  */
-#line 1590 "lang11d"
-    { (yyval) = zzval; ;}
-    break;
-
-  case 290:
-
-/* Line 1455 of yacc.c  */
-#line 1591 "lang11d"
-    { (yyval) = zzval; ;}
-    break;
-
-  case 291:
-
-/* Line 1455 of yacc.c  */
-#line 1592 "lang11d"
+#line 1589 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
   case 292:
 
 /* Line 1455 of yacc.c  */
-#line 1595 "lang11d"
-    { (yyval) = zzval; ;}
-    break;
-
-  case 295:
-
-/* Line 1455 of yacc.c  */
-#line 1602 "lang11d"
+#line 1596 "lang11d"
     { (yyval) = zzval; ;}
     break;
 
 
 
 /* Line 1455 of yacc.c  */
-#line 4788 "lang11d_tab.cpp"
+#line 4778 "lang11d_tab.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
diff --git a/lang/LangSource/ByteCodeArray.cpp b/lang/LangSource/ByteCodeArray.cpp
index 6b583a2..80ff41e 100644
--- a/lang/LangSource/ByteCodeArray.cpp
+++ b/lang/LangSource/ByteCodeArray.cpp
@@ -128,7 +128,7 @@ void restoreByteCodeArray(ByteCodes byteCodes)
 	gCompilingByteCodes = byteCodes;
 }
 
-int byteCodeLength(ByteCodes byteCodes)
+size_t byteCodeLength(ByteCodes byteCodes)
 {
     if (!byteCodes) return 0;
     return (byteCodes->ptr - byteCodes->bytes);
@@ -176,13 +176,12 @@ ByteCodes allocByteCodes()
 void reallocByteCodes(ByteCodes byteCodes)
 {
 	Byte		*newBytes;
-	int		newLen;
 
 	if (byteCodes->size != (byteCodes->ptr - byteCodes->bytes)) {
 		error("reallocByteCodes called with size != byteCode len");
 	}
 
-	newLen = byteCodes->size << 1;
+	size_t newLen = byteCodes->size << 1;
 	// pyrmalloc: I think that all bytecodes are copied to objects
 	// lifetime: kill after compile
 	newBytes = (Byte *)pyr_pool_compile->Alloc(newLen);
diff --git a/lang/LangSource/GC.cpp b/lang/LangSource/GC.cpp
index 7326497..36ff77c 100644
--- a/lang/LangSource/GC.cpp
+++ b/lang/LangSource/GC.cpp
@@ -147,21 +147,51 @@ void fatalerror(const char*str)
 
 inline int ScanSize(PyrObjectHdr *obj) { return obj->obj_format <= obj_slot ? obj->size : 0; }
 
-void PyrGC::ScanSlots(PyrSlot *inSlots, long inNumToScan)
+HOT void PyrGC::ScanSlots(PyrSlot *inSlots, long inNumToScan)
 {
+	if (inNumToScan == 0)
+		return;
+
 	unsigned char whiteColor = mWhiteColor;
+	unsigned char greyColor  = mGreyColor;
+
+	mSlotsScanned += inNumToScan;
+
+	int foundGreyObjects = 0;
+	PyrObjectHdr * grey     = &mGrey;
+	PyrObjectHdr * greyNext = grey->next;
 
 	PyrSlot *slot = inSlots;
 	PyrSlot *endslot = inSlots + inNumToScan;
-	for (; slot < endslot; ++slot) {
+	do {
 		if (IsObj(slot)) {
 			PyrObject *obj = slotRawObject(slot);
 			if (obj->gc_color == whiteColor) {
-				ToGrey2(obj);
+				/* used to be ToGrey2(obj), but rearranged for slightly better performance
+				 *
+				 * move obj from white to grey */
+
+				PyrObjectHdr * objPrev  = obj->prev;
+				PyrObjectHdr * objNext  = obj->next;
+
+				/* link in grey set */
+				greyNext->prev = obj;
+				grey->next = obj;
+				obj->prev = grey;
+				obj->next = greyNext;
+				greyNext = obj;
+
+				// remove from old set
+				objNext->prev = objPrev;
+				objPrev->next = objNext;
+
+				obj->gc_color = greyColor;
+				foundGreyObjects++;
 			}
 		}
-	}
-	mSlotsScanned += inNumToScan;
+		++slot;
+	} while (slot != endslot);
+	mNumGrey += foundGreyObjects;
 }
 
 void GCSet::Init(int inGCSet)
@@ -314,7 +344,7 @@ void PyrGC::BecomeImmutable(PyrObject *inObject)
 
 void DumpBackTrace(VMGlobals *g);
 
-PyrObject *PyrGC::New(size_t inNumBytes, long inFlags, long inFormat, bool inCollect)
+HOT PyrObject *PyrGC::New(size_t inNumBytes, long inFlags, long inFormat, bool inCollect)
 {
 	PyrObject *obj = NULL;
 
@@ -355,7 +385,7 @@ PyrObject *PyrGC::New(size_t inNumBytes, long inFlags, long inFormat, bool inCol
 
 
 
-PyrObject *PyrGC::NewFrame(size_t inNumBytes, long inFlags, long inFormat, bool inAccount)
+HOT PyrObject *PyrGC::NewFrame(size_t inNumBytes, long inFlags, long inFormat, bool inAccount)
 {
 	PyrObject *obj = NULL;
 
@@ -483,7 +513,7 @@ void PyrGC::CompletePartialScan(PyrObject *obj)
 	}
 }
 
-void PyrGC::DoPartialScan(int32 inObjSize)
+HOT void PyrGC::DoPartialScan(int32 inObjSize)
 {
 	int32 remain = inObjSize - mPartialScanSlot;
 	mNumPartialScans++;
@@ -508,7 +538,7 @@ void PyrGC::DoPartialScan(int32 inObjSize)
 	//post("partial %5d %2d %4d %2d %s\n", mScans, i, mNumToScan, mNumGrey, slotRawSymbol(&obj->classptr->name)->name);
 }
 
-bool PyrGC::ScanOneObj()
+HOT bool PyrGC::ScanOneObj()
 {
 	// Find a set that has a grey object
 	PyrObject* obj;
@@ -644,7 +674,7 @@ void PyrGC::Collect(int32 inNumToScan)
 	Collect();	// collect space
 }
 
-void PyrGC::Collect()
+HOT void PyrGC::Collect()
 {
 	BEGINPAUSE
 	bool stackScanned = false;
@@ -726,6 +756,31 @@ void PyrGC::ScanFinalizers()
 	}
 }
 
+void PyrGC::RunAllFinalizers()
+{
+	GCSet *gcs = &mSets[kFinalizerSet];
+
+	PyrObjectHdr *obj = gcs->mBlack.next;
+	while (!IsMarker(obj)) {
+		Finalize((PyrObject*)obj);
+		obj = obj->next;
+	}
+
+	obj = gcs->mWhite.next;
+	PyrObjectHdr *firstFreeObj = gcs->mFree;
+	while (obj != firstFreeObj) {
+		Finalize((PyrObject*)obj);
+		obj = obj->next;
+	}
+
+	obj = mGrey.next;
+	while (!IsMarker(obj)) {
+		if (obj->classptr == class_finalizer)
+			Finalize((PyrObject*)obj);
+		obj = obj->next;
+	}
+}
+
 bool PyrGC::SanityCheck2()
 {
 	int numgrey = 0;
@@ -1020,7 +1075,7 @@ bool PyrGC::SanityMarkObj(PyrObject *objA, PyrObject *fromObj, int level)
 	if (objA->IsPermanent()) return true;
 	if (objA->IsMarked()) return true;
 	if (objA->size > MAXINDEXSIZE(objA)) {
-		fprintf(stderr, "obj indexed size larger than max: %d > %d\n", objA->size, MAXINDEXSIZE(objA));
+		fprintf(stderr, "obj indexed size larger than max: %d > %ld\n", objA->size, MAXINDEXSIZE(objA));
 		//dumpObject((PyrObject*)objA);
 		return false;
 	}
diff --git a/lang/LangSource/PyrFileUtils.cpp b/lang/LangSource/PyrFileUtils.cpp
deleted file mode 100644
index 6be911a..0000000
--- a/lang/LangSource/PyrFileUtils.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-//   SuperCollider real time audio synthesis system
-//     Copyright (c) 2002 James McCartney. All rights reserved.
-//   http://www.audiosynth.com
-
-//   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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
-
-#include "SCBase.h"
-#include "PyrFileUtils.h"
-
-# include "PyrSymbol.h"
-# include "SFHeaders.h"
-
-#include <string.h>
-#include <fcntl.h>
-
-bool filelen(FILE *file, size_t *length);
-bool filelen(FILE *file, size_t *length)
-{	// does not preserve file pointer
-	fpos_t pos;
-	if (fseek(file, 0, SEEK_END)) return true;
-	if (fgetpos(file, &pos)) return true;
-
-#ifdef SC_LINUX
-	// sk: hack alert!
-	*length = pos.__pos;
-#else
-	*length = pos;
-#endif
-
-	return false;
-}
-
-extern short gHomeVol;
-extern long gHomeDir;
-
-#ifdef NOCLASSIC
-long setTypeCreator(unsigned char *filename, long type, long creator)
-{
-	FSSpec fsspec;
-	short saveVol;
-	long saveDir;
-	long err, bytespersamp;
-	int sampleSize, numchannels;
-	FInfo finfo;
-
-
-	HGetVol(NULL, &saveVol, &saveDir);
-	HSetVol(NULL, gHomeVol, gHomeDir);
-	err = FSMakeFSSpec(gHomeVol, 0L, filename, &fsspec);
-	if (err) {
-		postfl("IOError: %d\n", err);
-		HSetVol(NULL, saveVol, saveDir);
-		return errFailed;
-	}
-	FSpGetFInfo(&fsspec, &finfo);
-	finfo.fdType = type;
-	finfo.fdCreator = creator;
-	FSpSetFInfo(&fsspec, &finfo);
-	HSetVol(NULL, saveVol, saveDir);
-	return errNone;
-}
-#endif
-
-
-
-int sampleFormatFromSymbol(PyrSymbol *inSymbol, int inHeaderFormat)
-{
-	bool isRIFF = inHeaderFormat == RIFF_sound_file;
-
-	char *name = inSymbol->name;
-	if (name[0] == 'i') {
-		if (name[3] == '8') return isRIFF ? snd_8_unsigned : snd_8_linear;
-		if (name[3] == '1') return isRIFF ? snd_16_linear_little_endian : snd_16_linear;
-		if (name[3] == '2') return isRIFF ? snd_24_linear_little_endian : snd_24_linear;
-		if (name[3] == '3') return isRIFF ? snd_32_linear_little_endian : snd_32_linear;
-	}
-	if (name[0] == 'f') return isRIFF ? snd_32_float_little_endian : snd_32_float;
-	if (name[0] == 'd') return isRIFF ? snd_64_double_little_endian : snd_64_double;
-	if (name[0] == 'm') return snd_8_mulaw;
-	if (name[0] == 'a') return snd_8_alaw;
-	return snd_unsupported;
-}
-
-int headerFormatFromSymbol(PyrSymbol *inSymbol)
-{
-	char *name = inSymbol->name;
-	if (strcmp(name, "AIFF")==0) return AIFF_sound_file;
-	if (strcmp(name, "AIFC")==0) return AIFC_sound_file;
-	if (strcmp(name, "RIFF")==0) return RIFF_sound_file;
-	if (strcmp(name, "WAVE")==0) return RIFF_sound_file;
-	if (strcmp(name, "WAV" )==0) return RIFF_sound_file;
-	if (strcmp(name, "Sun" )==0) return NeXT_sound_file;
-	if (strcmp(name, "SD2" )==0) return SD2_sound_file;
-	if (strcmp(name, "IRCAM")==0) return IRCAM_sound_file;
-	if (strcmp(name, "NeXT")==0) return NeXT_sound_file;
-	if (strcmp(name, "Next")==0) return NeXT_sound_file;
-	if (strcmp(name, "NEXT")==0) return NeXT_sound_file;
-	if (strcmp(name, "Raw")==0) return raw_sound_file;
-	if (strcmp(name, "raw")==0) return raw_sound_file;
-	if (strcmp(name, "RAW")==0) return raw_sound_file;
-	if (strcmp(name, "vorbis")==0) return vorbis_sound_file;
-	if (strcmp(name, "FLAC")==0) return flac_sound_file;
-	//if (strcmp(name, "BICSF")==0) return BICSF_sound_file;
-	return unsupported_sound_file;
-}
-
-
-
diff --git a/lang/LangSource/PyrInterpreter3.cpp b/lang/LangSource/PyrInterpreter3.cpp
index e34ad95..6066256 100644
--- a/lang/LangSource/PyrInterpreter3.cpp
+++ b/lang/LangSource/PyrInterpreter3.cpp
@@ -52,6 +52,7 @@
 
 #include <new>
 #include "InitAlloc.h"
+#include "function_attributes.h"
 
 //void tellPlugInsAboutToRun();
 double timeNow();
@@ -199,7 +200,7 @@ PyrProcess* newPyrProcess(VMGlobals *g, PyrClass *procclassobj)
 	}
 
 	PyrSymbol * contextsym = getsym("functionCompileContext");
-	int index = slotRawInt(&class_interpreter->classIndex) + contextsym->u.index;
+	size_t index = slotRawInt(&class_interpreter->classIndex) + contextsym->u.index;
 	PyrMethod * meth = gRowTable[index];
 	if (!meth || slotRawSymbol(&meth->name) != contextsym) {
 		error("compile context method 'functionCompileContext' not found.\n");
@@ -464,7 +465,7 @@ static inline void handlePushClassVar(VMGlobals* g, PyrSlot *& sp, unsigned char
 static inline void handleStoreInstVar(VMGlobals* g, PyrSlot *& sp, unsigned char *& ip, unsigned int index)
 {
 	PyrObject* obj = slotRawObject(&g->receiver);
-	if (obj->obj_flags & obj_immutable)
+	if (obj->IsImmutable())
 		StoreToImmutableA(g, sp, ip);
 	else {
 		PyrSlot * slot = obj->slots + index;
@@ -522,13 +523,22 @@ static inline void checkStackDepth(VMGlobals* g, PyrSlot * sp)
 #define dispatch_opcode break
 #endif
 
+#if defined(__GNUC__)
+#define LIKELY(x)       __builtin_expect((x),1)
+#define UNLIKELY(x)     __builtin_expect((x),0)
+#else
+#define LIKELY(x)   x
+#define UNLIKELY(x) x
+#endif
 
-void Interpret(VMGlobals *g)
+
+HOT void Interpret(VMGlobals *g)
 {
 	// byte code values
 	unsigned char *ip;
 	unsigned char op1;
-	int op2, op3, index, tag;
+	size_t index;
+	int op2, op3, tag;
 	// interpreter globals
 
 	// temporary variables used in the interpreter
@@ -962,7 +972,7 @@ void Interpret(VMGlobals *g)
 		handle_op_7:
 			op2 = ip[1]; ++ip; // get inst var index
 			obj = slotRawObject(&g->receiver);
-			if (obj->obj_flags & obj_immutable) { StoreToImmutableA(g, sp, ip); }
+			if (obj->IsImmutable()) { StoreToImmutableA(g, sp, ip); }
 			else {
 				slot = obj->slots + op2;
 				slotCopy(slot, sp);
@@ -2407,7 +2417,7 @@ void Interpret(VMGlobals *g)
 			index = slotRawInt(&classobj->classIndex) + selector->u.index;
 			meth = gRowTable[index];
 
-			if (slotRawSymbol(&meth->name) != selector) {
+			if (UNLIKELY(slotRawSymbol(&meth->name) != selector)) {
 				g->sp = sp; g->ip = ip;
 				doesNotUnderstand(g, selector, numArgsPushed);
 				sp = g->sp; ip = g->ip;
@@ -2445,7 +2455,7 @@ void Interpret(VMGlobals *g)
 						sp -= numArgsPushed - 1;
 						index = methraw->specialIndex;
 						obj = slotRawObject(slot);
-						if (obj->obj_flags & obj_immutable) { StoreToImmutableB(g, sp, ip); }
+						if (obj->IsImmutable()) { StoreToImmutableB(g, sp, ip); }
 						else {
 							if (numArgsPushed >= 2) {
 								slotCopy(&obj->slots[index], sp + 1);
@@ -2546,7 +2556,7 @@ void Interpret(VMGlobals *g)
 			index = slotRawInt(&classobj->classIndex) + selector->u.index;
 			meth = gRowTable[index];
 
-			if (slotRawSymbol(&meth->name) != selector) {
+			if (UNLIKELY(slotRawSymbol(&meth->name) != selector)) {
 				g->sp = sp; g->ip = ip;
 				doesNotUnderstandWithKeys(g, selector, numArgsPushed, numKeyArgsPushed);
 				sp = g->sp; ip = g->ip;
@@ -2589,7 +2599,7 @@ void Interpret(VMGlobals *g)
 						numArgsPushed -= numKeyArgsPushed << 1;
 						index = methraw->specialIndex;
 						obj = slotRawObject(slot);
-						if (obj->obj_flags & obj_immutable) { StoreToImmutableB(g, sp, ip); }
+						if (obj->IsImmutable()) { StoreToImmutableB(g, sp, ip); }
 						else {
 							if (numArgsPushed >= 2) {
 								slotCopy(&obj->slots[index], sp + 1);
@@ -2745,7 +2755,6 @@ void DumpDetailedBackTrace(VMGlobals *g)
 
 void DumpStack(VMGlobals *g, PyrSlot *sp)
 {
-	int i;
 	PyrSlot *slot;
 	char str[128];
 #if BCSTAT
@@ -2754,7 +2763,7 @@ void DumpStack(VMGlobals *g, PyrSlot *sp)
 	postfl("STACK:\n");
 	slot = sp - 64;
 	if (slot < g->gc->Stack()->slots) slot = g->gc->Stack()->slots;
-	for (i=slot - g->gc->Stack()->slots; slot<=sp; slot++, ++i) {
+	for (size_t i=slot - g->gc->Stack()->slots; slot<=sp; slot++, ++i) {
 		slotString(slot, str);
 		post("   %2d  %s\n", i, str);
 	}
diff --git a/lang/LangSource/PyrLexer.cpp b/lang/LangSource/PyrLexer.cpp
index 6cbd400..23fb74e 100644
--- a/lang/LangSource/PyrLexer.cpp
+++ b/lang/LangSource/PyrLexer.cpp
@@ -64,10 +64,10 @@
 #endif
 #include <string.h>
 
-#include "SC_LibraryConfig.h"
+#include "SC_LanguageConfig.hpp"
 
 #include "SC_DirUtils.h"
-
+#include "SC_TextUtils.hpp"
 
 int yyparse();
 int processaccidental1(char *s);
@@ -124,8 +124,6 @@ std::set<std::string> compiledDirectories;
 #define CLOSCURLY '}'
 #define CLOSPAREN ')'
 
-//int rtf2txt(char* txt);
-
 int sc_strtoi(const char *str, int n, int base)
 {
 	int z = 0;
@@ -173,7 +171,7 @@ extern void asRelativePath(char *inPath, char *outPath)
 		strcpy(outPath, inPath);
 		return;
 	}
-    strcpy(outPath, inPath +  len);
+	strcpy(outPath, inPath +  len);
 }
 
 
@@ -218,109 +216,6 @@ static bool getFileText(char* filename, char **text, int *length)
 
 int bugctr = 0;
 
-// strips out all the RichTextFile crap
-int rtf2txt(char* txt)
-{
-    int rdpos=0, wrpos=0;
-    char c;
-    if (strncmp(txt,"{\\rtf",5)!=0) return 0;  // OK, not an RTF file
-text:
-    switch (txt[wrpos]=txt[rdpos++])
-            {
-            case 0:
-                /*{
-                    char fname[32];
-                    sprintf(fname, "rtf2txt_out%d.txt", bugctr++);
-                    FILE *fp = fopen(fname, "w");
-                    fwrite(txt,wrpos,1,fp);
-                    fclose(fp);
-                }*/
-                return wrpos;
-            case OPENCURLY:
-            case CLOSCURLY:
-            case '\n': goto text;
-            case '\\':
-                if (strncmp(txt+rdpos,"fonttbl",7)==0
-                        || strncmp(txt+rdpos,"filetbl",7)==0
-                        || strncmp(txt+rdpos,"colortbl",8)==0
-                        || strncmp(txt+rdpos,"stylesheet",10)==0
-                    )
-                {
-                    int level = 1;
-                    while(level && (c=txt[rdpos++]) != 0) {
-                        if (c == OPENCURLY) level++;
-                        else if (c == CLOSCURLY) level--;
-                    }
-				} else if (strncmp(txt+rdpos,"\'a0",3)==0 || (strncmp(txt+rdpos,"\'A0",3)==0))
-				{
-					txt[wrpos++] = ' '; rdpos = rdpos + 3;
-                } else {
-                    if (txt[rdpos]==CLOSCURLY || txt[rdpos]==OPENCURLY
-                            || txt[rdpos]=='\\' || txt[rdpos]=='\t'|| txt[rdpos]=='\n')
-                        { txt[wrpos++] = txt[rdpos++]; goto text; }
-                    if (strncmp(txt+rdpos,"tab",3)==0) { txt[wrpos++] = '\t'; }
-                    if (strncmp(txt+rdpos,"par",3)==0) { txt[wrpos++] = '\n'; }
-
-                    while((c=txt[rdpos++]) && c!=' ' && c!='\\');
-                    if (c=='\\') rdpos--;
-                }
-                goto text;
-        default :
-            wrpos++;
-            goto text;
-    }
-}
-
-// strips HTML down to plaintext tags in a fairly simple-minded way
-int html2txt(char* txt)
-{
-    int rdpos=-1, wrpos=0, bodypos=-1;
-	bool intag = false;
-
-	// First check if we can find a BODY tag to start at
-	while(bodypos == -1 && txt[++rdpos] != 0){
-		if(strncmp(txt+rdpos, "<body", 5) == 0) // FIXME: should be case-insensitive, ideally
-			bodypos = rdpos;
-	}
-	if(bodypos != -1)
-		rdpos = bodypos;
-	else
-		rdpos = 0;
-
-	// Now we start from our start, and add the non-tag text to the result
-	while(txt[rdpos] != 0){
-		if(intag){
-			if(txt[rdpos++] == '>')
-				intag = false;
-		}else{
-			if(txt[rdpos] == '<'){
-				intag = true;
-				++rdpos;
-			}else{
-				/*
-				if(strncmp(txt+rdpos, "&", 5)==0){
-					txt[wrpos++] = '&';
-					rdpos += 5;
-				}else if(strncmp(txt+rdpos, " ", 6)==0){
-					txt[wrpos++] = ' ';
-					rdpos += 6;
-				}else if(strncmp(txt+rdpos, "<", 4)==0){
-					txt[wrpos++] = '<';
-					rdpos += 4;
-				}else if(strncmp(txt+rdpos, ">", 4)==0){
-					txt[wrpos++] = '>';
-					rdpos += 4;
-				}else{
-				*/
-					txt[wrpos++] = txt[rdpos++];
-				//}
-			}
-		}
-	}
-	txt[wrpos] = 0;
-	return wrpos;
-
-}
 
 bool startLexer(PyrSymbol *fileSym, int startPos, int endPos, int lineOffset)
 {
@@ -1335,7 +1230,7 @@ void yyerror(const char *s)
 {
 	parseFailed = 1;
 	yytext[yylen] = 0;
-	error("Parse error\n");
+	error("%s\n",s);
 	postErrorLine(lineno, linepos, charno);
 	//Debugger();
 }
@@ -1889,7 +1784,7 @@ bool parseOneClass(PyrSymbol *fileSym)
 	ClassDependancy *classdep;
 	bool res;
 
-	int startPos, startLine, startLineOffset;
+	int startPos, startLineOffset;
 
 	res = true;
 
@@ -2028,7 +1923,7 @@ static bool passOne_ProcessDir(const char *dirname, int level)
 
 	bool success = true;
 
-	if (gLibraryConfig && gLibraryConfig->pathIsExcluded(dirname)) {
+	if (gLanguageConfig && gLanguageConfig->pathIsExcluded(dirname)) {
 		post("\texcluding dir: '%s'\n", dirname);
 		return success;
 	}
@@ -2071,7 +1966,7 @@ bool passOne()
 		if (!passOne_ProcessDir(gCompileDir, 0))
 			return false;
 	} else
-		if (!gLibraryConfig->forEachIncludedDirectory(passOne_ProcessDir))
+		if (!gLanguageConfig->forEachIncludedDirectory(passOne_ProcessDir))
 			return false;
 
 	finiPassOne();
@@ -2110,7 +2005,7 @@ bool passOne_ProcessOneFile(const char * filenamearg, int level)
 		return success;
 	}
 
-	if (gLibraryConfig && gLibraryConfig->pathIsExcluded(filename)) {
+	if (gLanguageConfig && gLanguageConfig->pathIsExcluded(filename)) {
 	  post("\texcluding file: '%s'\n", filename);
 	  return success;
 	}
@@ -2167,10 +2062,15 @@ void aboutToCompileLibrary()
 	//printf("->aboutToCompileLibrary\n");
 	pthread_mutex_lock (&gLangMutex);
 	if (compiledOK) {
-		++gMainVMGlobals->sp;
-		SetObject(gMainVMGlobals->sp, gMainVMGlobals->process);
-		runInterpreter(gMainVMGlobals, s_shutdown, 1);
-		gVMGlobals.gc->ScanFinalizers(); // run finalizers
+		VMGlobals *g = gMainVMGlobals;
+
+		g->canCallOS = true;
+
+		++g->sp;
+		SetObject(g->sp, g->process);
+		runInterpreter(g, s_shutdown, 1);
+
+		g->canCallOS = false;
 	}
 	pthread_mutex_unlock (&gLangMutex);
 	//printf("<-aboutToCompileLibrary\n");
@@ -2183,16 +2083,28 @@ void closeAllCustomPorts();
 void shutdownLibrary()
 {
 	closeAllGUIScreens();
+
 	schedStop();
+
 	aboutToCompileLibrary();
 
 	TempoClock_stopAll();
 
 	pthread_mutex_lock (&gLangMutex);
+
 	closeAllCustomPorts();
 
+	if (compiledOK) {
+		VMGlobals *g = gMainVMGlobals;
+		g->canCallOS = true;
+		g->gc->RunAllFinalizers();
+		g->canCallOS = false;
+	}
+
 	pyr_pool_runtime->FreeAll();
+
 	compiledOK = false;
+
 	pthread_mutex_unlock (&gLangMutex);
 }
 
@@ -2205,9 +2117,7 @@ SC_DLLEXPORT_C bool compileLibrary()
 	gNumCompiledFiles = 0;
 	compiledOK = false;
 
-	// FIXME: the library config should have been initialized earlier!
-	if (!gLibraryConfig)
-		SC_LanguageConfig::readDefaultLibraryConfig();
+    SC_LanguageConfig::readDefaultLibraryConfig();
 
 	compileStartTime = elapsedTime();
 
diff --git a/lang/LangSource/PyrMathSupport.cpp b/lang/LangSource/PyrMathSupport.cpp
index 19f76c0..96bf1c8 100644
--- a/lang/LangSource/PyrMathSupport.cpp
+++ b/lang/LangSource/PyrMathSupport.cpp
@@ -51,7 +51,7 @@ void pyrmath_init_globs()
 // 1/440 = 0.0022727272727     1/12 = 0.083333333333
 
 // These are built in on OSX and Linux
-#if !(SC_DARWIN || SC_LINUX)
+#if !(SC_DARWIN || __linux__)
 double log2(double x);
 double log2(double x)
 {
@@ -63,7 +63,7 @@ double hypot(double x, double y)
 {
 	return sqrt(x*x + y*y);
 }
-#endif // !SC_DARWIN && !SC_LINUX
+#endif // !SC_DARWIN && !__linux__
 
 #define SQRT2M1 0.41421356f
 
diff --git a/lang/LangSource/PyrMessage.cpp b/lang/LangSource/PyrMessage.cpp
index fbbb509..cc22d81 100644
--- a/lang/LangSource/PyrMessage.cpp
+++ b/lang/LangSource/PyrMessage.cpp
@@ -51,7 +51,7 @@ void initUniqueMethods()
 	cvxUniqueMethods = classVarOffset("Object", "uniqueMethods", &dummyclass);
 }
 
-void sendMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPushed, long numKeyArgsPushed)
+HOT void sendMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPushed, long numKeyArgsPushed)
 {
 	PyrMethod *meth = NULL;
 	PyrMethodRaw *methraw;
@@ -110,7 +110,7 @@ void sendMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPushed,
 				sp = g->sp -= numArgsPushed - 1;
 				index = methraw->specialIndex;
 				obj = slotRawObject(recvrSlot);
-				if (obj->obj_flags & obj_immutable) { StoreToImmutableB(g, sp, g->ip); }
+				if (obj->IsImmutable()) { StoreToImmutableB(g, sp, g->ip); }
 				else {
 					if (numArgsPushed >= 2) {
 						slotCopy(&obj->slots[index], sp + 1);
@@ -184,7 +184,7 @@ void sendMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPushed,
 }
 
 
-void sendMessage(VMGlobals *g, PyrSymbol *selector, long numArgsPushed)
+HOT void sendMessage(VMGlobals *g, PyrSymbol *selector, long numArgsPushed)
 {
 	PyrMethod *meth = NULL;
 	PyrMethodRaw *methraw;
@@ -240,7 +240,7 @@ void sendMessage(VMGlobals *g, PyrSymbol *selector, long numArgsPushed)
 				sp = g->sp -= numArgsPushed - 1;
 				index = methraw->specialIndex;
 				obj = slotRawObject(recvrSlot);
-				if (obj->obj_flags & obj_immutable) { StoreToImmutableB(g, sp, g->ip); }
+				if (obj->IsImmutable()) { StoreToImmutableB(g, sp, g->ip); }
 				else {
 					if (numArgsPushed >= 2) {
 						slotCopy(&obj->slots[index], sp + 1);
@@ -369,7 +369,7 @@ void sendMessage(VMGlobals *g, PyrSymbol *selector, long numArgsPushed)
 }
 
 
-void sendSuperMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPushed, long numKeyArgsPushed)
+HOT void sendSuperMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPushed, long numKeyArgsPushed)
 {
 	PyrMethod *meth = NULL;
 	PyrMethodRaw *methraw;
@@ -429,7 +429,7 @@ void sendSuperMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPus
 				sp = g->sp -= numArgsPushed - 1;
 				index = methraw->specialIndex;
 				obj = slotRawObject(recvrSlot);
-				if (obj->obj_flags & obj_immutable) { StoreToImmutableB(g, sp, g->ip); }
+				if (obj->IsImmutable()) { StoreToImmutableB(g, sp, g->ip); }
 				else {
 					if (numArgsPushed >= 2) {
 						slotCopy(&obj->slots[index], sp + 1);
@@ -503,7 +503,7 @@ void sendSuperMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPus
 }
 
 
-void sendSuperMessage(VMGlobals *g, PyrSymbol *selector, long numArgsPushed)
+HOT void sendSuperMessage(VMGlobals *g, PyrSymbol *selector, long numArgsPushed)
 {
 	PyrMethod *meth = NULL;
 	PyrMethodRaw *methraw;
@@ -560,7 +560,7 @@ void sendSuperMessage(VMGlobals *g, PyrSymbol *selector, long numArgsPushed)
 				sp = g->sp -= numArgsPushed - 1;
 				index = methraw->specialIndex;
 				obj = slotRawObject(recvrSlot);
-				if (obj->obj_flags & obj_immutable) { StoreToImmutableB(g, sp, g->ip); }
+				if (obj->IsImmutable()) { StoreToImmutableB(g, sp, g->ip); }
 				else {
 					if (numArgsPushed >= 2) {
 						slotCopy(&obj->slots[index], sp + 1);
@@ -834,7 +834,7 @@ void doesNotUnderstand(VMGlobals *g, PyrSymbol *selector,
 #endif
 }
 
-void executeMethodWithKeys(VMGlobals *g, PyrMethod *meth, long allArgsPushed, long numKeyArgsPushed)
+HOT void executeMethodWithKeys(VMGlobals *g, PyrMethod *meth, long allArgsPushed, long numKeyArgsPushed)
 {
 	PyrMethodRaw *methraw;
 	PyrFrame *frame;
@@ -990,7 +990,7 @@ void executeMethodWithKeys(VMGlobals *g, PyrMethod *meth, long allArgsPushed, lo
 }
 
 
-void executeMethod(VMGlobals *g, PyrMethod *meth, long numArgsPushed)
+HOT void executeMethod(VMGlobals *g, PyrMethod *meth, long numArgsPushed)
 {
 	PyrMethodRaw *methraw;
 	PyrFrame *frame;
@@ -1125,7 +1125,7 @@ void executeMethod(VMGlobals *g, PyrMethod *meth, long numArgsPushed)
 
 void switchToThread(VMGlobals *g, PyrThread *newthread, int oldstate, int *numArgsPushed);
 
-void returnFromBlock(VMGlobals *g)
+HOT void returnFromBlock(VMGlobals *g)
 {
 	PyrFrame *curframe;
 	PyrFrame *returnFrame;
@@ -1183,7 +1183,7 @@ void returnFromBlock(VMGlobals *g)
 }
 
 
-void returnFromMethod(VMGlobals *g)
+HOT void returnFromMethod(VMGlobals *g)
 {
 	PyrFrame *returnFrame, *curframe, *homeContext;
 	PyrMethod *meth;
diff --git a/lang/LangSource/PyrObject.cpp b/lang/LangSource/PyrObject.cpp
index 1e77996..6a02a13 100644
--- a/lang/LangSource/PyrObject.cpp
+++ b/lang/LangSource/PyrObject.cpp
@@ -35,6 +35,7 @@
 #include "SC_Alloca.h"
 
 #include <set>
+#include <limits>
 
 PyrClass *gClassList = NULL;
 int gNumSelectors = 0;
@@ -287,15 +288,7 @@ void initSymbols()
 	SetInt(&o_one, 1);
 	SetInt(&o_two, 2);
 	SetSymbol(&o_none, s_none);
-#ifdef SC_WIN32
-  {
-    double a = 0.0;
-    double b = 1.0/a;
-    SetFloat(&o_inf, b);
-  }
-#else
- 	SetFloat(&o_inf, INFINITY);
-#endif
+	SetFloat(&o_inf, std::numeric_limits<double>::infinity());
 
 	slotCopy(&gSpecialValues[svNil], &o_nil);
 	slotCopy(&gSpecialValues[svFalse], &o_false);
@@ -1134,7 +1127,6 @@ static void calcRowStats(PyrMethod** bigTable, ColumnDescriptor * sels, int numC
 {
 		//chunkSize = 0;
 		//chunkOffset = 0;
-	PyrMethod** methodPtr = bigTable;
 	for (int j=0; j<numClasses; ++j) {
 		for (int i=begin; i<end; ++i) {
 			PyrMethod* method = bigTable[j * numSelectors + i];
@@ -1165,7 +1157,7 @@ static void calcRowStats(PyrMethod** bigTable, ColumnDescriptor * sels, int numC
 
 void buildBigMethodMatrix()
 {
-	PyrMethod **bigTable, **temprow, **row;
+	PyrMethod **bigTable, **row;
 	PyrClass *classobj, **classes;
 	int i, j, k;
 	int popSum, widthSum;
@@ -1636,7 +1628,7 @@ void initClasses()
 	class_absfunc = makeIntrinsicClass(s_absfunc, s_object, 0, 0);
 	class_stream = makeIntrinsicClass(s_stream, s_absfunc, 0, 0);
 
-	class_thread = makeIntrinsicClass(s_thread, s_stream, 26, 0);
+	class_thread = makeIntrinsicClass(s_thread, s_stream, 27, 0);
 		addIntrinsicVar(class_thread, "state", &o_nil);
 		addIntrinsicVar(class_thread, "func", &o_nil);
 		addIntrinsicVar(class_thread, "stack", &o_nil);
@@ -1663,6 +1655,7 @@ void initClasses()
 
 		addIntrinsicVar(class_thread, "environment", &o_nil);
 		addIntrinsicVar(class_thread, "exceptionHandler", &o_nil);
+		addIntrinsicVar(class_thread, "threadPlayer", &o_nil);
 
 		addIntrinsicVar(class_thread, "executingPath", &o_nil);
 		addIntrinsicVar(class_thread, "oldExecutingPath", &o_nil);
@@ -2654,7 +2647,7 @@ int putIndexedSlot(VMGlobals *g, PyrObject *obj, PyrSlot *c, int index)
 	PyrSlot *slot;
 	switch (obj->obj_format) {
 		case obj_slot :
-			if (obj->obj_flags & obj_immutable) return errImmutableObject;
+			if (obj->IsImmutable()) return errImmutableObject;
 			slot = obj->slots + index;
 			slotCopy(slot, c);
 			g->gc->GCWrite(obj, slot);
@@ -2706,7 +2699,7 @@ int putIndexedFloat(PyrObject *obj, double val, int index)
 	PyrSlot *slot;
 	switch (obj->obj_format) {
 		case obj_slot :
-			if (obj->obj_flags & obj_immutable) return errImmutableObject;
+			if (obj->IsImmutable()) return errImmutableObject;
 			slot = obj->slots + index;
 			SetFloat(slot, val);
 			break;
diff --git a/lang/LangSource/PyrSymbolTable.cpp b/lang/LangSource/PyrSymbolTable.cpp
index b12f2b9..9125db3 100644
--- a/lang/LangSource/PyrSymbolTable.cpp
+++ b/lang/LangSource/PyrSymbolTable.cpp
@@ -95,14 +95,14 @@ void SymbolTable::CopyFrom(SymbolTable& inTable)
 	Rehash(inTable.mTable, inTable.mMaxItems);
 }
 
-int SymbolTable::StrHash(const char *inName, int *outLength)
+int SymbolTable::StrHash(const char *inName, size_t *outLength)
 {
 	return Hash(inName, outLength);
 }
 
 PyrSymbol* SymbolTable::Find(const char *inName)
 {
-	int length;
+	size_t length;
 	int hash = StrHash(inName, &length);
 	return Find(inName, hash);
 }
@@ -144,7 +144,7 @@ PyrSymbol* SymbolTable::MakeNew(const char *inName, int inHash, int inLength)
 
 PyrSymbol* SymbolTable::Make(const char *inName)
 {
-	int length;
+	size_t length;
 	int hash = StrHash(inName, &length);
 	PyrSymbol* symbol = Find(inName, hash);
 	if (!symbol) symbol = MakeNew(inName, hash, length);
diff --git a/lang/LangSource/SC_LanguageClient.cpp b/lang/LangSource/SC_LanguageClient.cpp
index 3e7ee06..a195745 100644
--- a/lang/LangSource/SC_LanguageClient.cpp
+++ b/lang/LangSource/SC_LanguageClient.cpp
@@ -24,7 +24,7 @@
 */
 
 #include "SC_LanguageClient.h"
-#include "SC_LibraryConfig.h"
+#include "SC_LanguageConfig.hpp"
 #include <cstring>
 #include <string>
 #include <cerrno>
diff --git a/lang/LangSource/SC_LanguageConfig.cpp b/lang/LangSource/SC_LanguageConfig.cpp
new file mode 100644
index 0000000..a956687
--- /dev/null
+++ b/lang/LangSource/SC_LanguageConfig.cpp
@@ -0,0 +1,291 @@
+/*
+ *  Copyright 2003 Maurizio Umberto Puxeddu
+ *  Copyright 2011 Jakob Leben
+ *
+ *  This file is part of SuperCollider.
+ *
+ *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ *  USA
+ *
+ */
+
+#include "SC_LanguageConfig.hpp"
+#include "SCBase.h"
+#include "SC_DirUtils.h"
+
+#include <assert.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#ifdef SC_WIN32
+# include "SC_Win32Utils.h"
+#else
+# include <sys/param.h>
+# include <unistd.h>
+# include <libgen.h>
+#endif
+
+#include <fstream>
+
+#include <boost/filesystem.hpp>
+#include "yaml-cpp/yaml.h"
+
+using namespace std;
+
+SC_LanguageConfig *gLanguageConfig = 0;
+
+static bool findPath( SC_LanguageConfig::DirVector & vec, const char * path, bool addIfMissing)
+{
+	char standardPath[PATH_MAX];
+	sc_StandardizePath(path, standardPath);
+
+	for ( SC_LanguageConfig::DirVector::iterator it = vec.begin(); it != vec.end(); ++it) {
+		typedef boost::filesystem::path Path;
+		Path stdPath(standardPath), thisPath(it->c_str());
+		stdPath = stdPath / ".";
+		thisPath = thisPath / ".";
+
+		if (boost::filesystem::absolute(stdPath) == boost::filesystem::absolute(thisPath))
+			return true;
+	}
+
+	if (addIfMissing)
+		vec.push_back(string(standardPath));
+
+	return false;
+}
+
+SC_LanguageConfig::SC_LanguageConfig()
+{
+	char classLibraryDir[MAXPATHLEN];
+	char systemExtensionDir[MAXPATHLEN];
+	char userExtensionDir[MAXPATHLEN];
+
+	sc_GetResourceDirectory(classLibraryDir, MAXPATHLEN-32);
+	sc_AppendToPath(classLibraryDir, MAXPATHLEN, "SCClassLibrary");
+	findPath(mDefaultClassLibraryDirectories, classLibraryDir, true);
+
+	if (!sc_IsStandAlone()) {
+		sc_GetSystemExtensionDirectory(systemExtensionDir, MAXPATHLEN);
+		findPath(mDefaultClassLibraryDirectories, systemExtensionDir, true);
+
+		sc_GetUserExtensionDirectory(userExtensionDir, MAXPATHLEN);
+		findPath(mDefaultClassLibraryDirectories, userExtensionDir, true);
+	}
+}
+
+void SC_LanguageConfig::postExcludedDirectories(void)
+{
+	DirVector &vec = mExcludedDirectories;
+	DirVector::iterator it;
+	for (it=vec.begin(); it!=vec.end(); ++it) {
+		post("\texcluding dir: '%s'\n", it->c_str());
+	}
+}
+
+bool SC_LanguageConfig::forEachIncludedDirectory(bool (*func)(const char *, int))
+{
+	for (DirVector::iterator it=mDefaultClassLibraryDirectories.begin(); it!=mDefaultClassLibraryDirectories.end(); ++it) {
+		if (!pathIsExcluded(it->c_str())) {
+			if (!func(it->c_str(), 0))
+				return false;
+		}
+	}
+
+	for (DirVector::iterator it=mIncludedDirectories.begin(); it!=mIncludedDirectories.end(); ++it) {
+		if (!pathIsExcluded(it->c_str())) {
+			if (!func(it->c_str(), 0))
+				return false;
+		}
+	}
+
+	return true;
+}
+
+bool SC_LanguageConfig::pathIsExcluded(const char *path)
+{
+	return findPath(mExcludedDirectories, path, false);
+}
+
+void SC_LanguageConfig::addIncludedDirectory(const char *path)
+{
+	if (path == 0) return;
+	findPath(mIncludedDirectories, path, true);
+}
+
+void SC_LanguageConfig::addExcludedDirectory(const char *path)
+{
+	if (path == 0) return;
+	findPath(mExcludedDirectories, path, true);
+}
+
+void SC_LanguageConfig::removeIncludedDirectory(const char *path)
+{
+	char standardPath[PATH_MAX];
+	sc_StandardizePath(path, standardPath);
+	string str(standardPath);
+	DirVector::iterator end = std::remove(mIncludedDirectories.begin(), mIncludedDirectories.end(), str);
+	mIncludedDirectories.erase(end, mIncludedDirectories.end());
+}
+
+void SC_LanguageConfig::removeExcludedDirectory(const char *path)
+{
+	string str(path);
+	DirVector::iterator end = std::remove(mExcludedDirectories.begin(), mExcludedDirectories.end(), str);
+	mExcludedDirectories.erase(end, mExcludedDirectories.end());
+}
+
+extern bool gPostInlineWarnings;
+bool SC_LanguageConfig::readLibraryConfigYAML(const char* fileName)
+{
+	freeLibraryConfig();
+	gLanguageConfig = new SC_LanguageConfig();
+
+	using namespace YAML;
+	try {
+		std::ifstream fin(fileName);
+		Parser parser(fin);
+
+		Node doc;
+		while(parser.GetNextDocument(doc)) {
+			const Node * includePaths = doc.FindValue("includePaths");
+			if (includePaths && includePaths->Type() == NodeType::Sequence) {
+				for (Iterator it = includePaths->begin(); it != includePaths->end(); ++it) {
+					Node const & pathNode = *it;
+					if (pathNode.Type() != NodeType::Scalar)
+						continue;
+					string path;
+					pathNode.GetScalar(path);
+					gLanguageConfig->addIncludedDirectory(path.c_str());
+				}
+			}
+
+			const Node * excludePaths = doc.FindValue("excludePaths");
+			if (excludePaths && excludePaths->Type() == NodeType::Sequence) {
+				for (Iterator it = excludePaths->begin(); it != excludePaths->end(); ++it) {
+					Node const & pathNode = *it;
+					if (pathNode.Type() != NodeType::Scalar)
+						continue;
+					string path;
+					pathNode.GetScalar(path);
+					gLanguageConfig->addExcludedDirectory(path.c_str());
+				}
+			}
+
+			const Node * inlineWarnings = doc.FindValue("postInlineWarnings");
+			if (inlineWarnings) {
+				try {
+					gPostInlineWarnings = inlineWarnings->to<bool>();
+				} catch(...) {
+					postfl("Warning: Cannot parse config file entry \"postInlineWarnings\"\n");
+				}
+			}
+		}
+		return true;
+	} catch (std::exception & e)
+	{
+		postfl("Exception when parsing YAML config file: %s\n", e.what());
+		freeLibraryConfig();
+		return false;
+	}
+}
+
+bool SC_LanguageConfig::writeLibraryConfigYAML(const char* fileName)
+{
+	using namespace YAML;
+	Emitter out;
+	out.SetIndent(4);
+	out.SetMapFormat(Block);
+	out.SetSeqFormat(Block);
+	out.SetBoolFormat(TrueFalseBool);
+
+	out << BeginMap;
+
+	out << Key << "includePaths";
+	out << Value << BeginSeq;
+	for (DirVector::iterator it = gLanguageConfig->mIncludedDirectories.begin();
+		 it != gLanguageConfig->mIncludedDirectories.end(); ++it)
+		out << *it;
+	out << EndSeq;
+
+	out << Key << "excludePaths";
+	out << Value << BeginSeq;
+	for (DirVector::iterator it = gLanguageConfig->mExcludedDirectories.begin();
+		 it != gLanguageConfig->mExcludedDirectories.end(); ++it)
+		out << *it;
+	out << EndSeq;
+
+	out << Key << "postInlineWarnings";
+	out << Value << gPostInlineWarnings;
+
+	out << EndMap;
+	ofstream fout(fileName);
+	fout << out.c_str();
+	return true;
+}
+
+bool SC_LanguageConfig::defaultLibraryConfig(void)
+{
+	freeLibraryConfig();
+	gLanguageConfig = new SC_LanguageConfig();
+
+	return true;
+}
+
+static bool file_exists(const char * fileName)
+{
+	FILE * fp = fopen(fileName, "r");
+	if (fp)
+		fclose(fp);
+	return fp != NULL;
+}
+
+static bool file_exists(std::string const & fileName)
+{
+	return file_exists(fileName.c_str());
+}
+
+bool SC_LanguageConfig::readDefaultLibraryConfig()
+{
+	char config_dir[PATH_MAX];
+	bool configured = false;
+	sc_GetUserConfigDirectory(config_dir, PATH_MAX);
+
+	std::string user_yaml_config_file = std::string(config_dir) + SC_PATH_DELIMITER + "sclang_conf.yaml";
+	if (file_exists(user_yaml_config_file))
+		configured = readLibraryConfigYAML(user_yaml_config_file.c_str());
+
+	if (!configured) {
+		char global_yaml_config_file[] = "/etc/sclang_conf.yaml";
+		if (file_exists(global_yaml_config_file))
+			configured = readLibraryConfigYAML(global_yaml_config_file);
+	}
+
+	if (configured)
+		return true;
+
+	SC_LanguageConfig::defaultLibraryConfig();
+	return false;
+}
+
+void SC_LanguageConfig::freeLibraryConfig()
+{
+	if (gLanguageConfig) {
+		delete gLanguageConfig;
+		gLanguageConfig = 0;
+	}
+}
diff --git a/lang/LangSource/SC_LanguageConfig.hpp b/lang/LangSource/SC_LanguageConfig.hpp
new file mode 100644
index 0000000..9165f31
--- /dev/null
+++ b/lang/LangSource/SC_LanguageConfig.hpp
@@ -0,0 +1,64 @@
+/*
+ *  Copyright 2003 Maurizio Umberto Puxeddu <umbpux at tin.it>
+ *  Copyright 2011 Jakob Leben
+ *
+ *  This file is part of SuperCollider.
+ *
+ *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ *  USA
+ *
+ */
+
+#ifndef SC_LANGUAGECONFIG_HPP_INCLUDED
+#define SC_LANGUAGECONFIG_HPP_INCLUDED
+
+#include <vector>
+#include <string>
+
+class SC_LanguageConfig
+{
+public:
+	typedef std::vector<std::string> DirVector;
+	SC_LanguageConfig();
+
+	const DirVector& includedDirectories() { return mIncludedDirectories; }
+	const DirVector& excludedDirectories() { return mExcludedDirectories; }
+
+	void postExcludedDirectories(void);
+	bool forEachIncludedDirectory(bool (*func)(const char *, int));
+
+	bool pathIsExcluded(const char *path);
+
+	void addIncludedDirectory(const char *name);
+	void addExcludedDirectory(const char *name);
+	void removeIncludedDirectory(const char *name);
+	void removeExcludedDirectory(const char *name);
+
+	// convenience functions to access the global library config
+	static bool readLibraryConfigYAML(const char* fileName);
+	static bool writeLibraryConfigYAML(const char* fileName);
+	static void freeLibraryConfig();
+	static bool defaultLibraryConfig(void);
+	static bool readDefaultLibraryConfig();
+
+private:
+	DirVector mIncludedDirectories;
+	DirVector mExcludedDirectories;
+	DirVector mDefaultClassLibraryDirectories;
+};
+
+extern SC_LanguageConfig* gLanguageConfig;
+
+#endif // SC_LANGUAGECONFIG_HPP_INCLUDED
diff --git a/lang/LangSource/SC_LibraryConfig.cpp b/lang/LangSource/SC_LibraryConfig.cpp
deleted file mode 100644
index 69407e7..0000000
--- a/lang/LangSource/SC_LibraryConfig.cpp
+++ /dev/null
@@ -1,510 +0,0 @@
-/*
- *  Copyright 2003 Maurizio Umberto Puxeddu
- *  Copyright 2011 Jakob Leben
- *
- *  This file is part of SuperCollider.
- *
- *  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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- *  USA
- *
- */
-
-#include "SC_LibraryConfig.h"
-#include "SCBase.h"
-#include "SC_StringBuffer.h"
-#include "SC_DirUtils.h"
-
-#include <assert.h>
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#ifdef SC_WIN32
-# include "SC_Win32Utils.h"
-#else
-# include <sys/param.h>
-# include <unistd.h>
-# include <libgen.h>
-#endif
-
-#include <fstream>
-#include "yaml-cpp/yaml.h"
-
-using namespace std;
-
-SC_LanguageConfig *gLibraryConfig = 0;
-
-void SC_LanguageConfig::postExcludedDirectories(void)
-{
-	DirVector &vec = mExcludedDirectories;
-	DirVector::iterator it;
-	for (it=vec.begin(); it!=vec.end(); ++it) {
-		post("\texcluding dir: '%s'\n", it->c_str());
-	}
-}
-
-bool SC_LanguageConfig::forEachIncludedDirectory(bool (*func)(const char *, int))
-{
-	DirVector &vec = mIncludedDirectories;
-	DirVector::iterator it;
-	for (it=vec.begin(); it!=vec.end(); ++it) {
-		if (!func(it->c_str(), 0)) return false;
-	}
-	return true;
-}
-
-static bool findPath( SC_LanguageConfig::DirVector & vec, const char * path, bool addIfMissing)
-{
-	char standardPath[PATH_MAX];
-	sc_StandardizePath(path, standardPath);
-
-	for ( SC_LanguageConfig::DirVector::iterator it = vec.begin(); it != vec.end(); ++it)
-		if (!strcmp(standardPath, it->c_str()))
-			return true;
-
-	if (addIfMissing)
-		vec.push_back(string(standardPath));
-
-	return false;
-}
-
-bool SC_LanguageConfig::pathIsExcluded(const char *path)
-{
-	return findPath(mExcludedDirectories, path, false);
-}
-
-void SC_LanguageConfig::addIncludedDirectory(const char *path)
-{
-	if (path == 0) return;
-	findPath(mIncludedDirectories, path, true);
-}
-
-void SC_LanguageConfig::addExcludedDirectory(const char *path)
-{
-	if (path == 0) return;
-	findPath(mExcludedDirectories, path, true);
-}
-
-void SC_LanguageConfig::removeIncludedDirectory(const char *path)
-{
-	char standardPath[PATH_MAX];
-	sc_StandardizePath(path, standardPath);
-	string str(standardPath);
-	DirVector::iterator end = std::remove(mIncludedDirectories.begin(), mIncludedDirectories.end(), str);
-	mIncludedDirectories.erase(end, mIncludedDirectories.end());
-}
-
-void SC_LanguageConfig::removeExcludedDirectory(const char *path)
-{
-	string str(path);
-	DirVector::iterator end = std::remove(mExcludedDirectories.begin(), mExcludedDirectories.end(), str);
-	mExcludedDirectories.erase(end, mExcludedDirectories.end());
-}
-
-bool SC_LanguageConfig::readLibraryConfig(const char* fileName)
-{
-	freeLibraryConfig();
-	gLibraryConfig = new SC_LanguageConfig();
-
-	SC_LibraryConfigFile file(::post);
-	bool success = file.open(fileName);
-	if (!success)
-		return false;
-
-	bool error = file.read(fileName, gLibraryConfig);
-	file.close();
-
-	if (!error)
-		return true;
-
-	freeLibraryConfig();
-	return false;
-}
-
-extern bool gPostInlineWarnings;
-bool SC_LanguageConfig::readLibraryConfigYAML(const char* fileName)
-{
-	freeLibraryConfig();
-	gLibraryConfig = new SC_LanguageConfig();
-
-	using namespace YAML;
-	try {
-		std::ifstream fin(fileName);
-		Parser parser(fin);
-
-		Node doc;
-		while(parser.GetNextDocument(doc)) {
-			const Node * includePaths = doc.FindValue("includePaths");
-			if (includePaths && includePaths->Type() == NodeType::Sequence) {
-				for (Iterator it = includePaths->begin(); it != includePaths->end(); ++it) {
-					Node const & pathNode = *it;
-					if (pathNode.Type() != NodeType::Scalar)
-						continue;
-					string path;
-					pathNode.GetScalar(path);
-					gLibraryConfig->addIncludedDirectory(path.c_str());
-				}
-			}
-
-			const Node * excludePaths = doc.FindValue("excludePaths");
-			if (excludePaths && excludePaths->Type() == NodeType::Sequence) {
-				for (Iterator it = excludePaths->begin(); it != excludePaths->end(); ++it) {
-					Node const & pathNode = *it;
-					if (pathNode.Type() != NodeType::Scalar)
-						continue;
-					string path;
-					pathNode.GetScalar(path);
-					gLibraryConfig->addExcludedDirectory(path.c_str());
-				}
-			}
-
-			const Node * inlineWarnings = doc.FindValue("postInlineWarnings");
-			if (inlineWarnings) {
-				try {
-					gPostInlineWarnings = inlineWarnings->to<bool>();
-				} catch(...) {
-					postfl("Warning: Cannot parse config file entry \"postInlineWarnings\"\n");
-				}
-			}
-		}
-		return true;
-	} catch (std::exception & e)
-	{
-		postfl("Exception when parsing YAML config file: %s\n", e.what());
-		freeLibraryConfig();
-		return false;
-	}
-}
-
-bool SC_LanguageConfig::writeLibraryConfigYAML(const char* fileName)
-{
-	using namespace YAML;
-	Emitter out;
-	out.SetIndent(4);
-	out.SetMapFormat(Block);
-	out.SetSeqFormat(Block);
-	out.SetBoolFormat(TrueFalseBool);
-
-	out << BeginMap;
-
-	out << Key << "includePaths";
-	out << Value << BeginSeq;
-	for (DirVector::iterator it = gLibraryConfig->mIncludedDirectories.begin();
-		 it != gLibraryConfig->mIncludedDirectories.end(); ++it)
-		out << *it;
-	out << EndSeq;
-
-	out << Key << "excludePaths";
-	out << Value << BeginSeq;
-	for (DirVector::iterator it = gLibraryConfig->mExcludedDirectories.begin();
-		 it != gLibraryConfig->mExcludedDirectories.end(); ++it)
-		out << *it;
-	out << EndSeq;
-
-	out << Key << "postInlineWarnings";
-	out << Value << gPostInlineWarnings;
-
-	out << EndMap;
-	ofstream fout(fileName);
-	fout << out.c_str();
-	return true;
-}
-
-bool SC_LanguageConfig::defaultLibraryConfig(void)
-{
-	freeLibraryConfig();
-	gLibraryConfig = new SC_LanguageConfig();
-
-	char compileDir[MAXPATHLEN];
-	char systemExtensionDir[MAXPATHLEN];
-	char userExtensionDir[MAXPATHLEN];
-
-	sc_GetResourceDirectory(compileDir, MAXPATHLEN-32);
-	sc_AppendToPath(compileDir, MAXPATHLEN, "SCClassLibrary");
-	gLibraryConfig->addIncludedDirectory(compileDir);
-
-	if (!sc_IsStandAlone()) {
-		sc_GetSystemExtensionDirectory(systemExtensionDir, MAXPATHLEN);
-		gLibraryConfig->addIncludedDirectory(systemExtensionDir);
-
-		sc_GetUserExtensionDirectory(userExtensionDir, MAXPATHLEN);
-		gLibraryConfig->addIncludedDirectory(userExtensionDir);
-	}
-	return true;
-}
-
-static bool file_exists(const char * fileName)
-{
-	FILE * fp = fopen(fileName, "r");
-	if (fp)
-		fclose(fp);
-	return fp != NULL;
-}
-
-static bool file_exists(std::string const & fileName)
-{
-	return file_exists(fileName.c_str());
-}
-
-
-bool SC_LanguageConfig::readDefaultLibraryConfig()
-{
-	char config_dir[PATH_MAX];
-	bool configured = false;
-	sc_GetUserConfigDirectory(config_dir, PATH_MAX);
-
-	std::string user_yaml_config_file = std::string(config_dir) + SC_PATH_DELIMITER + "sclang_conf.yaml";
-	if (file_exists(user_yaml_config_file))
-		configured = readLibraryConfigYAML(user_yaml_config_file.c_str());
-
-	if (!configured) {
-		char global_yaml_config_file[] = "/etc/sclang_conf.yaml";
-		if (file_exists(global_yaml_config_file))
-			configured = readLibraryConfigYAML(global_yaml_config_file);
-	}
-
-	std::string config_file = std::string(config_dir) + SC_PATH_DELIMITER + "sclang.cfg";
-
-	// deprecated config files
-	const char* paths[4] = { config_file.c_str(), ".sclang.cfg", "~/.sclang.cfg", "/etc/sclang.cfg"};
-
-	bool deprecatedConfigFileDetected = false;
-	for (int i=0; i < 4; i++) {
-		const char * ipath = paths[i];
-		char opath[PATH_MAX];
-		if (sc_StandardizePath(ipath, opath)) {
-			if (!configured) {
-				if (file_exists(opath)) {
-					deprecatedConfigFileDetected = true;
-					postfl("reading deprecated config file: %s\n", opath);
-					configured = readLibraryConfig(opath);
-				}
-			}
-		}
-	}
-
-	if (deprecatedConfigFileDetected)
-		postfl("Please migrate your sclang config file to %s.\n", user_yaml_config_file.c_str());
-
-	if (configured)
-		return true;
-
-	SC_LanguageConfig::defaultLibraryConfig();
-	return false;
-}
-
-
-void SC_LanguageConfig::freeLibraryConfig()
-{
-	if (gLibraryConfig) {
-		delete gLibraryConfig;
-		gLibraryConfig = 0;
-	}
-}
-
-// =====================================================================
-// SC_LibraryConfigFile
-// =====================================================================
-
-SC_LibraryConfigFile::SC_LibraryConfigFile(ErrorFunc errorFunc)
-	: mErrorFunc(errorFunc ? errorFunc : &defaultErrorFunc),
-	  mFile(0)
-{ }
-
-bool SC_LibraryConfigFile::open(const char* filePath)
-{
-	close();
-#ifdef SC_WIN32
-	mFile = fopen(filePath, "rb");
-#else
-	mFile = fopen(filePath, "r");
-#endif
-	return mFile != 0;
-}
-
-void SC_LibraryConfigFile::close()
-{
-	if (mFile) {
-		fclose(mFile);
-		mFile = 0;
-	}
-}
-
-bool SC_LibraryConfigFile::read(const char* fileName, SC_LanguageConfig* libConf)
-{
-	return read(0, fileName, libConf);
-}
-
-bool SC_LibraryConfigFile::read(int depth, const char* fileName, SC_LanguageConfig* libConf)
-{
-	if (!mFile) return false;
-
-	bool error = false;
-	size_t lineNumber = 1;
-    SC_StringBuffer line;
-
-    while (true) {
-		int c = fgetc(mFile);
-		bool eof = c == EOF;
-
-		if (eof || (c == '\n')) {
-			line.finish();
-			// go on if line parse failed
-            error |= parseLine(depth, fileName, lineNumber, line.getData(), libConf);
-            line.reset();
-			lineNumber++;
-			if (eof) break;
-        } else {
-            line.append(c);
-        }
-    }
-
-	return error;
-}
-
-bool SC_LibraryConfigFile::parseLine(int depth, const char* fileName, int lineNumber, const char* line, SC_LanguageConfig* libConf)
-{
-	char action = 0;
-	SC_StringBuffer path;
-	SC_StringBuffer envVarName;
-	State state = kBegin;
-
-	while (true) {
-		// NOTE: in some parser states the character just read is
-		// written back to be consumed by the following state in the
-		// next iteration; this may be slightly inefficient, but makes
-		// control flow more obvious.
-
-		char c = *line++;
-
-		if ((c == '\0') || ((c == '#') && (state != kEscape))) {
-			break;
-		}
-
-		switch (state) {
-			case kBegin:
-				if (!isspace(c)) {
-					line--;
-					state = kAction;
-				}
-				break;
-			case kAction:
-				if ((c == '+') || (c == '-') || (c == ':')) {
-					action = c;
-					state = kPath;
-				} else {
-					(*mErrorFunc)("%s,%d: invalid action '%c'\n", fileName, lineNumber, c);
-					return false;
-				}
-				break;
-			case kPath:
-				if (c == '\\') {
-					state = kEscape;
-				} else if (c == '$') {
-					state = kEnvVar;
-				} else if (isspace(c)) {
-					state = kEnd;
-				} else {
-					path.append(c);
-				}
-				break;
-			case kEscape:
-				path.append(c);
-				state = kPath;
-				break;
-			case kEnvVar:
-				if (isalpha(c)) {
-					line--;
-					state = kEnvVarName;
-					envVarName.reset();
-				} else {
-					(*mErrorFunc)("%s,%d: empty variable reference\n", fileName, lineNumber);
-					return false;
-				}
-				break;
-			case kEnvVarName:
-				if (isalpha(c) || (c == '_')) {
-					envVarName.append(c);
-				} else {
-					envVarName.finish();
-					char* envVarValue = getenv(envVarName.getData());
-					if (envVarValue) {
-						line--;
-						state = kPath;
-						path.append(envVarValue);
-					} else {
-						(*mErrorFunc)("%s,%d: undefined variable '%s'\n", fileName, lineNumber, envVarName.getData());
-						return false;
-					}
-				}
-				break;
-			case kEnd:
-				if (!isspace(c)) {
-					(*mErrorFunc)("%s,%d: trailing garbage\n", fileName, lineNumber);
-					return false;
-				}
-				break;
-			default:
-				(*mErrorFunc)("%s,%d: [internal error] invalid parser state %d\n", fileName, lineNumber, state);
-				return false;
-		}
-	}
-
-	if (!action) return true;
-
-	if (path.getSize() == 0) {
-		(*mErrorFunc)("%s,%d: empty path\n", fileName, lineNumber);
-		return false;
-	}
-
-	path.finish();
-	char realPath[MAXPATHLEN];
-
-	if (sc_StandardizePath(path.getData(), realPath) == 0) {
-		(*mErrorFunc)("%s,%d: couldn't resolve path %s\n", fileName, lineNumber, path.getData());
-		return false;
-	}
-
-	if (action == ':') {
-		if (++depth > kMaxIncludeDepth) {
-			(*mErrorFunc)("%s,%d: maximum include depth of %d exceeded\n", fileName, lineNumber, kMaxIncludeDepth);
-			return false;
-		}
-		SC_LibraryConfigFile file(mErrorFunc);
-		if (!file.open(realPath)) return true;
-		const char* fileName = basename(realPath);
-		bool success = file.read(depth, fileName, libConf);
-		file.close();
-		return success;
-	}
-
-	if (action == '+') {
-		libConf->addIncludedDirectory(realPath);
-	} else if (action == '-') {
-		libConf->addExcludedDirectory(realPath);
-	}
-
-	return true;
-}
-
-void SC_LibraryConfigFile::defaultErrorFunc(const char* fmt, ...)
-{
-    va_list ap;
-    va_start(ap, fmt);
-    vprintf(fmt, ap);
-}
-
-// EOF
diff --git a/lang/LangSource/SC_TerminalClient.cpp b/lang/LangSource/SC_TerminalClient.cpp
index 17198a8..3fb7131 100644
--- a/lang/LangSource/SC_TerminalClient.cpp
+++ b/lang/LangSource/SC_TerminalClient.cpp
@@ -57,7 +57,7 @@
 #include "PyrSlot.h"
 #include "VMGlobals.h"
 #include "SC_DirUtils.h"   // for gIdeName
-#include "SC_LibraryConfig.h"
+#include "SC_LanguageConfig.hpp"
 
 #define STDIN_FD 0
 
@@ -249,10 +249,7 @@ int SC_TerminalClient::run(int argc, char** argv)
 	// read library configuration file
 	if (opt.mLibraryConfigFile) {
 		int argLength = strlen(opt.mLibraryConfigFile);
-		if (strcmp(opt.mLibraryConfigFile + argLength - 5, ".yaml"))
-			SC_LanguageConfig::readLibraryConfig(opt.mLibraryConfigFile);
-		else
-			SC_LanguageConfig::readLibraryConfigYAML(opt.mLibraryConfigFile);
+		SC_LanguageConfig::readLibraryConfigYAML(opt.mLibraryConfigFile);
 	} else
 		SC_LanguageConfig::readDefaultLibraryConfig();
 
diff --git a/platform/CMakeLists.txt b/platform/CMakeLists.txt
index 4343521..7d1c10b 100644
--- a/platform/CMakeLists.txt
+++ b/platform/CMakeLists.txt
@@ -1,5 +1,7 @@
 if(APPLE)
-	add_subdirectory(mac)
+    if (NOT SC_IDE)
+        add_subdirectory(mac)
+    endif()
 elseif(WIN32)
     add_subdirectory(windows)
 endif()
diff --git a/platform/linux/CMakeLists.txt b/platform/linux/CMakeLists.txt
index 57ddaca..998d074 100644
--- a/platform/linux/CMakeLists.txt
+++ b/platform/linux/CMakeLists.txt
@@ -1,6 +1,11 @@
 install(DIRECTORY examples
-	DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/SuperCollider
-	)
+	DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/SuperCollider )
+
 install(FILES icons/supercollider.png icons/supercollider.xpm
-	DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps
-	)
+	DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps )
+
+install(FILES ../../icons/sc_ide.svg
+	DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps )
+
+install(FILES supercollider.xml
+    DESTINATION share/mime/packages )
diff --git a/editors/sced/data/supercollider.xml b/platform/linux/supercollider.xml
similarity index 100%
rename from editors/sced/data/supercollider.xml
rename to platform/linux/supercollider.xml
diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt
index 4d2d95d..3507c65 100644
--- a/server/CMakeLists.txt
+++ b/server/CMakeLists.txt
@@ -4,7 +4,7 @@ if (NOT APPLE AND NOT WIN32)
 endif()
 
 include_directories(${CMAKE_SOURCE_DIR}/external_libraries
-					${CMAKE_SOURCE_DIR}/external_libraries/boost_lockfree
+					${CMAKE_SOURCE_DIR}/external_libraries/boost-lockfree
 					${CMAKE_SOURCE_DIR}/external_libraries/nova-simd
 					${CMAKE_SOURCE_DIR}/external_libraries/nova-tt
 					)
diff --git a/server/plugins/BeatTrack.cpp b/server/plugins/BeatTrack.cpp
index 285eabd..ac5e985 100644
--- a/server/plugins/BeatTrack.cpp
+++ b/server/plugins/BeatTrack.cpp
@@ -571,7 +571,6 @@ float findtor(BeatTrack *unit)
 //128 calculation calls for multiplying M and acf, calculates M as it goes apart from precalculated Gaussian or Raleigh distribution
 void beatperiod(BeatTrack *unit,int j, int whichm)
 {
-	int baseframe = unit->m_storedfcounter+DFSTORE;
 	float * acf = unit->m_acf;
 
 	//int startindex= 512*j;
diff --git a/server/plugins/BinaryOpUGens.cpp b/server/plugins/BinaryOpUGens.cpp
index 2c11a88..1c29ce2 100644
--- a/server/plugins/BinaryOpUGens.cpp
+++ b/server/plugins/BinaryOpUGens.cpp
@@ -32,26 +32,22 @@
 #include "simd_math.hpp"
 #include "simd_memory.hpp"
 
-#if defined (__GNUC__) && !(defined(__clang__))
-#define inline_functions __attribute__ ((flatten))
-#else
-#define inline_functions
-#endif
 
+#include "function_attributes.h"
 using nova::slope_argument;
 
 #define NOVA_BINARY_WRAPPER(SCNAME, NOVANAME)							\
-	inline_functions void SCNAME##_aa_nova(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_aa_nova(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		nova::NOVANAME##_vec_simd(OUT(0), IN(0), IN(1), inNumSamples);	\
 	}																	\
 																		\
-	inline_functions void SCNAME##_aa_nova_64(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_aa_nova_64(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		nova::NOVANAME##_vec_simd<64>(OUT(0), IN(0), IN(1));			\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ia_nova(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ia_nova(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xa = ZIN0(0);												\
 																		\
@@ -59,7 +55,7 @@ using nova::slope_argument;
 		unit->mPrevA = xa;												\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ia_nova_64(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ia_nova_64(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xa = ZIN0(0);												\
 																		\
@@ -67,7 +63,7 @@ using nova::slope_argument;
 		unit->mPrevA = xa;												\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ai_nova(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ai_nova(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xb = ZIN0(1);												\
 																		\
@@ -75,7 +71,7 @@ using nova::slope_argument;
 		unit->mPrevB = xb;												\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ai_nova_64(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ai_nova_64(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xb = ZIN0(1);												\
 																		\
@@ -84,17 +80,17 @@ using nova::slope_argument;
 	}
 
 #define NOVA_BINARY_WRAPPER_K(SCNAME, NOVANAME)							\
-	inline_functions void SCNAME##_aa_nova(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_aa_nova(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		nova::NOVANAME##_vec_simd(OUT(0), IN(0), IN(1), inNumSamples);	\
 	}																	\
 																		\
-	inline_functions void SCNAME##_aa_nova_64(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_aa_nova_64(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		nova::NOVANAME##_vec_simd<64>(OUT(0), IN(0), IN(1));			\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ia_nova(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ia_nova(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xa = ZIN0(0);												\
 																		\
@@ -102,7 +98,7 @@ using nova::slope_argument;
 		unit->mPrevA = xa;												\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ia_nova_64(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ia_nova_64(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xa = ZIN0(0);												\
 																		\
@@ -110,7 +106,7 @@ using nova::slope_argument;
 		unit->mPrevA = xa;												\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ai_nova(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ai_nova(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xb = ZIN0(1);												\
 																		\
@@ -118,7 +114,7 @@ using nova::slope_argument;
 		unit->mPrevB = xb;												\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ai_nova_64(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ai_nova_64(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xb = ZIN0(1);												\
 																		\
@@ -126,7 +122,7 @@ using nova::slope_argument;
 		unit->mPrevB = xb;												\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ak_nova(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ak_nova(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xb = unit->mPrevB;										\
 		float next_b = ZIN0(1);											\
@@ -140,7 +136,7 @@ using nova::slope_argument;
 		}																\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ak_nova_64(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ak_nova_64(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xb = unit->mPrevB;										\
 		float next_b = ZIN0(1);											\
@@ -154,7 +150,7 @@ using nova::slope_argument;
 		}																\
 	}																	\
 																		\
-	inline_functions void SCNAME##_ka_nova(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ka_nova(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xa = unit->mPrevA;										\
 		float next_a = ZIN0(0);											\
@@ -167,7 +163,7 @@ using nova::slope_argument;
 			unit->mPrevA = next_a;										\
 		}																\
 	}                                                                   \
-	inline_functions void SCNAME##_ka_nova_64(BinaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void SCNAME##_ka_nova_64(BinaryOpUGen *unit, int inNumSamples) \
 	{																	\
 		float xa = unit->mPrevA;										\
 		float next_a = ZIN0(0);											\
@@ -454,6 +450,20 @@ extern "C"
 	void excess_ka(BinaryOpUGen *unit, int inNumSamples);
 	void excess_ai(BinaryOpUGen *unit, int inNumSamples);
 	void excess_ia(BinaryOpUGen *unit, int inNumSamples);
+	void rrand_d(BinaryOpUGen *unit, int inNumSamples);
+	void rrand_1(BinaryOpUGen *unit, int inNumSamples);
+	void rrand_aa(BinaryOpUGen *unit, int inNumSamples);
+	void rrand_ak(BinaryOpUGen *unit, int inNumSamples);
+	void rrand_ka(BinaryOpUGen *unit, int inNumSamples);
+	void rrand_ai(BinaryOpUGen *unit, int inNumSamples);
+	void rrand_ia(BinaryOpUGen *unit, int inNumSamples);
+	void exprand_d(BinaryOpUGen *unit, int inNumSamples);
+	void exprand_1(BinaryOpUGen *unit, int inNumSamples);
+	void exprand_aa(BinaryOpUGen *unit, int inNumSamples);
+	void exprand_ak(BinaryOpUGen *unit, int inNumSamples);
+	void exprand_ka(BinaryOpUGen *unit, int inNumSamples);
+	void exprand_ai(BinaryOpUGen *unit, int inNumSamples);
+	void exprand_ia(BinaryOpUGen *unit, int inNumSamples);
 	void lt_d(BinaryOpUGen *unit, int inNumSamples);
 	void lt_1(BinaryOpUGen *unit, int inNumSamples);
 	void lt_aa(BinaryOpUGen *unit, int inNumSamples);
@@ -1124,6 +1134,32 @@ void hypotx_d(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
+void rrand_d(BinaryOpUGen *unit, int inNumSamples)
+{
+	if (inNumSamples) {
+		float xa = DEMANDINPUT_A(0, inNumSamples);
+		float xb = DEMANDINPUT_A(1, inNumSamples);
+		RGen& rgen = *unit->mParent->mRGen;
+		OUT0(0) = sc_isnan(xa) || sc_isnan(xb) ? NAN : xb > xa ? xa + rgen.frand() * (xb - xa) : (xb + rgen.frand() * (xa - xb));
+	} else {
+		RESETINPUT(0);
+		RESETINPUT(1);
+	}
+}
+
+void exprand_d(BinaryOpUGen *unit, int inNumSamples)
+{
+	if (inNumSamples) {
+		float xa = DEMANDINPUT_A(0, inNumSamples);
+		float xb = DEMANDINPUT_A(1, inNumSamples);
+		RGen& rgen = *unit->mParent->mRGen;
+		OUT0(0) = sc_isnan(xa) || sc_isnan(xb) ? NAN : xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+	} else {
+		RESETINPUT(0);
+		RESETINPUT(1);
+	}
+}
+
 
 
 void zero_1(BinaryOpUGen *unit, int inNumSamples)
@@ -1424,7 +1460,21 @@ void hypotx_1(BinaryOpUGen *unit, int inNumSamples)
 	ZOUT0(0) = sc_hypotx(xa, xb);
 }
 
+void rrand_1(BinaryOpUGen *unit, int inNumSamples)
+{
+	float xa = ZIN0(0);
+	float xb = ZIN0(1);
+	RGen& rgen = *unit->mParent->mRGen;
+	ZOUT0(0) = xb > xa ? xa + rgen.frand() * (xb - xa) : (xb + rgen.frand() * (xa - xb));
+}
 
+void exprand_1(BinaryOpUGen *unit, int inNumSamples)
+{
+	float xa = ZIN0(0);
+	float xb = ZIN0(1);
+	RGen& rgen = *unit->mParent->mRGen;
+	ZOUT0(0) =  xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+}
 
 void zero_aa(BinaryOpUGen *unit, int inNumSamples)
 {
@@ -1442,7 +1492,7 @@ void firstarg_aa(BinaryOpUGen *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void firstarg_aa_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void firstarg_aa_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	nova::copyvec_simd(OUT(0), IN(0), inNumSamples);
 }
@@ -1457,7 +1507,7 @@ void secondarg_aa(BinaryOpUGen *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void secondarg_aa_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void secondarg_aa_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	nova::copyvec_simd(OUT(0), IN(1), inNumSamples);
 }
@@ -1554,7 +1604,7 @@ void add_ai(BinaryOpUGen *unit, int inNumSamples)
 #ifdef NOVA_SIMD
 NOVA_BINARY_WRAPPER(add, plus)
 
-inline_functions void add_ak_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void add_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = unit->mPrevB;
 	float next_b = ZIN0(1);
@@ -1571,7 +1621,7 @@ inline_functions void add_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void add_ak_nova_64(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void add_ak_nova_64(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = unit->mPrevB;
 	float next_b = ZIN0(1);
@@ -1589,7 +1639,7 @@ inline_functions void add_ak_nova_64(BinaryOpUGen *unit, int inNumSamples)
 }
 
 
-inline_functions void add_ka_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void add_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = unit->mPrevA;
 	float next_a = ZIN0(0);
@@ -1606,7 +1656,7 @@ inline_functions void add_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void add_ka_nova_64(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void add_ka_nova_64(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = unit->mPrevA;
 	float next_a = ZIN0(0);
@@ -1720,7 +1770,7 @@ void sub_ai(BinaryOpUGen *unit, int inNumSamples)
 #ifdef NOVA_SIMD
 NOVA_BINARY_WRAPPER(sub, minus)
 
-inline_functions void sub_ak_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void sub_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = unit->mPrevB;
 	float next_b = ZIN0(1);
@@ -1737,7 +1787,7 @@ inline_functions void sub_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void sub_ak_nova_64(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void sub_ak_nova_64(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = unit->mPrevB;
 	float next_b = ZIN0(1);
@@ -1754,7 +1804,7 @@ inline_functions void sub_ak_nova_64(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void sub_ka_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void sub_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = unit->mPrevA;
 	float next_a = ZIN0(0);
@@ -1771,7 +1821,7 @@ inline_functions void sub_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void sub_ka_nova_64(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void sub_ka_nova_64(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = unit->mPrevA;
 	float next_a = ZIN0(0);
@@ -1885,7 +1935,7 @@ void mul_ia(BinaryOpUGen *unit, int inNumSamples)
 #ifdef NOVA_SIMD
 NOVA_BINARY_WRAPPER(mul, times)
 
-inline_functions void mul_ka_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void mul_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = unit->mPrevA;
 	float next_a = ZIN0(0);
@@ -1905,7 +1955,7 @@ inline_functions void mul_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void mul_ka_nova_64(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void mul_ka_nova_64(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = unit->mPrevA;
 	float next_a = ZIN0(0);
@@ -1925,7 +1975,7 @@ inline_functions void mul_ka_nova_64(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void mul_ak_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void mul_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = unit->mPrevB;
 	float next_b = ZIN0(1);
@@ -1945,7 +1995,7 @@ inline_functions void mul_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void mul_ak_nova_64(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void mul_ak_nova_64(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = unit->mPrevB;
 	float next_b = ZIN0(1);
@@ -1992,7 +2042,7 @@ void div_ak(BinaryOpUGen *unit, int inNumSamples)
 		} else if (xb == 1.f) {
 			ZCopy(inNumSamples, out, a);
 		} else {
-			float recip = 1.f / xb;
+			float recip = 1.f/ xb;
 			LOOP1(inNumSamples,
 				ZXP(out) = ZXP(a) * recip;
 			);
@@ -2059,12 +2109,12 @@ void div_ai(BinaryOpUGen *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void div_aa_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void div_aa_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	nova::over_vec_simd(OUT(0), IN(0), IN(1), inNumSamples);
 }
 
-inline_functions void div_ia_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void div_ia_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = ZIN0(0);
 
@@ -2072,15 +2122,15 @@ inline_functions void div_ia_nova(BinaryOpUGen *unit, int inNumSamples)
 	unit->mPrevA = xa;
 }
 
-inline_functions void div_ai_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void div_ai_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = ZIN0(1);
 
-	nova::times_vec_simd(OUT(0), IN(0), 1.f/xb, inNumSamples);
+	nova::times_vec_simd(OUT(0), IN(0), sc_reciprocal(xb), inNumSamples);
 	unit->mPrevB = xb;
 }
 
-inline_functions void div_ak_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void div_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = unit->mPrevB;
 	float next_b = ZIN0(1);
@@ -2101,7 +2151,7 @@ inline_functions void div_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 	}
 }
 
-inline_functions void div_ka_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void div_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = unit->mPrevA;
 	float next_a = ZIN0(0);
@@ -3131,32 +3181,28 @@ void pow_ai(BinaryOpUGen *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void pow_aa_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void pow_aa_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	nova::spow_vec_simd(OUT(0), IN(0), IN(1), inNumSamples);
 }
 
-inline_functions void pow_ak_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void pow_ak_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float *out = ZOUT(0);
 	float *a = ZIN(0);
 	float xb = unit->mPrevB;
 	float next_b = ZIN0(1);
 
-	if (xb == next_b) {
+	if (xb == next_b)
 		nova::spow_vec_simd(OUT(0), IN(0), xb, inNumSamples);
-	} else {
+	else {
 		float slope = CALCSLOPE(next_b, xb);
-		LOOP1(inNumSamples,
-			float xa = ZXP(a);
-			ZXP(out) = xa >= 0.f ? pow(xa, xb) : -pow(-xa, xb);
-			xb += slope;
-		);
-		unit->mPrevB = xb;
+		nova::spow_vec_simd(OUT(0), IN(0), slope_argument(xb, slope), inNumSamples);
+		unit->mPrevB = next_b;
 	}
 }
 
-inline_functions void pow_ka_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void pow_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float *out = ZOUT(0);
 	float xa = unit->mPrevA;
@@ -3164,24 +3210,19 @@ inline_functions void pow_ka_nova(BinaryOpUGen *unit, int inNumSamples)
 	float next_a = ZIN0(0);
 
 	if (xa == next_a) {
-		if (xa >= 0.f) {
+		if (xa >= 0.f)
 			nova::pow_vec_simd(OUT(0), xa, IN(1), inNumSamples);
-		} else {
+		else
 			nova::spow_vec_simd(OUT(0), xa, IN(1), inNumSamples);
-		}
 	} else {
 		float slope = CALCSLOPE(next_a, xa);
-		LOOP1(inNumSamples,
-			float xb = ZXP(b);
-			ZXP(out) = xa >= 0.f ? pow(xa, xb) : -pow(-xa, xb);
-			xa += slope;
-		);
-		unit->mPrevA = xa;
+		nova::spow_vec_simd(OUT(0), slope_argument(xa, slope), IN(1), inNumSamples);
+		unit->mPrevA = next_a;
 	}
 }
 
 
-inline_functions void pow_ia_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void pow_ia_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xa = ZIN0(0);
 	if (xa > 0.f)
@@ -3192,11 +3233,10 @@ inline_functions void pow_ia_nova(BinaryOpUGen *unit, int inNumSamples)
 }
 
 
-inline_functions void pow_ai_nova(BinaryOpUGen *unit, int inNumSamples)
+FLATTEN void pow_ai_nova(BinaryOpUGen *unit, int inNumSamples)
 {
 	float xb = ZIN0(1);
 	nova::spow_vec_simd(OUT(0), IN(0), xb, inNumSamples);
-	unit->mPrevB = xb;
 }
 #endif
 
@@ -3863,7 +3903,6 @@ void excess_ia(BinaryOpUGen *unit, int inNumSamples)
 	unit->mPrevA = xa;
 }
 
-
 void excess_ai(BinaryOpUGen *unit, int inNumSamples)
 {
 	float *out = ZOUT(0);
@@ -3877,6 +3916,204 @@ void excess_ai(BinaryOpUGen *unit, int inNumSamples)
 	unit->mPrevB = xb;
 }
 
+void rrand_aa(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float *a = ZIN(0);
+	float *b = ZIN(1);
+
+	RGET
+
+	LOOP1(inNumSamples,
+		float xa = ZXP(a);
+		float xb = ZXP(b);
+		ZXP(out) = xb > xa ? xa + frand2(s1, s2, s3) * (xb - xa) : (xb + frand2(s1, s2, s3) * (xa - xb));
+	);
+
+	RPUT
+}
+
+void rrand_ak(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float *a = ZIN(0);
+	float xb = unit->mPrevB;
+	float next_b = ZIN0(1);
+
+	RGET
+
+	if (xb == next_b) {
+		LOOP1(inNumSamples,
+			float xa = ZXP(a);
+			ZXP(out) = xb > xa ? xa + frand2(s1, s2, s3) * (xb - xa) : (xb + frand2(s1, s2, s3) * (xa - xb));
+		);
+	} else {
+		float slope = CALCSLOPE(next_b, xb);
+		LOOP1(inNumSamples,
+			float xa = ZXP(a);
+			ZXP(out) = xb > xa ? xa + frand2(s1, s2, s3) * (xb - xa) : (xb + frand2(s1, s2, s3) * (xa - xb));
+			xb += slope;
+		);
+		unit->mPrevB = xb;
+	}
+
+	RPUT
+}
+
+void rrand_ka(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float xa = unit->mPrevA;
+	float *b = ZIN(1);
+	float next_a = ZIN0(0);
+
+	RGET
+
+	if (xa == next_a) {
+		LOOP1(inNumSamples,
+			float xb = ZXP(b);
+			ZXP(out) = xb > xa ? xa + frand2(s1, s2, s3) * (xb - xa) : (xb + frand2(s1, s2, s3) * (xa - xb));
+		);
+	} else {
+		float slope = CALCSLOPE(next_a, xa);
+		LOOP1(inNumSamples,
+			float xb = ZXP(b);
+			ZXP(out) = xb > xa ? xa + frand2(s1, s2, s3) * (xb - xa) : (xb + frand2(s1, s2, s3) * (xa - xb));
+			xa += slope;
+		);
+		unit->mPrevA = xa;
+	}
+
+	RPUT
+}
+
+void rrand_ia(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float xa = ZIN0(0);
+	float *b = ZIN(1);
+
+	RGET
+
+	LOOP1(inNumSamples,
+		float xb = ZXP(b);
+		ZXP(out) = xb > xa ? xa + frand2(s1, s2, s3) * (xb - xa) : (xb + frand2(s1, s2, s3) * (xa - xb));
+	);
+	unit->mPrevA = xa;
+
+	RPUT
+}
+
+
+void rrand_ai(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float *a = ZIN(0);
+	float xb = ZIN0(1);
+
+	RGET
+
+	LOOP1(inNumSamples,
+		float xa = ZXP(a);
+		ZXP(out) = xb > xa ? xa + frand2(s1, s2, s3) * (xb - xa) : (xb + frand2(s1, s2, s3) * (xa - xb));
+	);
+
+	RPUT
+
+	unit->mPrevB = xb;
+}
+
+
+void exprand_aa(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float *a = ZIN(0);
+	float *b = ZIN(1);
+
+	LOOP1(inNumSamples,
+		float xa = ZXP(a);
+		float xb = ZXP(b);
+		RGen& rgen = *unit->mParent->mRGen;
+		ZXP(out) = xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+	);
+}
+
+void exprand_ak(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float *a = ZIN(0);
+	float xb = unit->mPrevB;
+	float next_b = ZIN0(1);
+	RGen& rgen = *unit->mParent->mRGen;
+
+	if (xb == next_b) {
+		LOOP1(inNumSamples,
+			float xa = ZXP(a);
+			ZXP(out) = xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+		);
+	} else {
+		float slope = CALCSLOPE(next_b, xb);
+		LOOP1(inNumSamples,
+			float xa = ZXP(a);
+			ZXP(out) = xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+			xb += slope;
+		);
+		unit->mPrevB = xb;
+	}
+}
+
+void exprand_ka(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float xa = unit->mPrevA;
+	float *b = ZIN(1);
+	float next_a = ZIN0(0);
+	RGen& rgen = *unit->mParent->mRGen;
+
+	if (xa == next_a) {
+		LOOP1(inNumSamples,
+			float xb = ZXP(b);
+			ZXP(out) = xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+		);
+	} else {
+		float slope = CALCSLOPE(next_a, xa);
+		LOOP1(inNumSamples,
+			float xb = ZXP(b);
+			ZXP(out) = xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+			xa += slope;
+		);
+		unit->mPrevA = xa;
+	}
+}
+
+void exprand_ia(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float xa = ZIN0(0);
+	float *b = ZIN(1);
+
+	LOOP1(inNumSamples,
+		float xb = ZXP(b);
+		RGen& rgen = *unit->mParent->mRGen;
+		ZXP(out) = xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+	);
+	unit->mPrevA = xa;
+}
+
+
+void exprand_ai(BinaryOpUGen *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float *a = ZIN(0);
+	float xb = ZIN0(1);
+
+	LOOP1(inNumSamples,
+		float xa = ZXP(a);
+		RGen& rgen = *unit->mParent->mRGen;
+		ZXP(out) = xb > xa ? rgen.exprandrng(xa, xb) : rgen.exprandrng(xb, xa);
+	);
+	unit->mPrevB = xb;
+}
 
 
 void lt_aa(BinaryOpUGen *unit, int inNumSamples)
@@ -5640,6 +5877,8 @@ static BinaryOpFunc ChooseOneSampleFunc(BinaryOpUGen *unit)
 		case opWrap2 : func = &wrap2_1; break;
 		case opExcess : func = &excess_1; break;
 		case opFirstArg : func = &firstarg_1; break;
+		case opRandRange : func = &rrand_1; break;
+		case opExpRandRange : func = &exprand_1; break;
 		//case opSecondArg : func = &secondarg_1; break;
 		default : func = &add_1; break;
 	}
@@ -5695,6 +5934,9 @@ static BinaryOpFunc ChooseDemandFunc(BinaryOpUGen *unit)
 		case opWrap2 : func = &wrap2_d; break;
 		case opExcess : func = &excess_d; break;
 		case opFirstArg : func = &firstarg_d; break;
+		case opRandRange : func = &rrand_d; break;
+		case opExpRandRange : func = &exprand_d; break;
+
 		//case opSecondArg : func = &secondarg_d; break;
 		default : func = &add_d; break;
 	}
@@ -5756,8 +5998,12 @@ static BinaryOpFunc ChooseNormalFunc(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_aa; break;
 						case opWrap2 : func = &wrap2_aa; break;
 						case opExcess : func = &excess_aa; break;
+						case opRandRange : func = &rrand_aa; break;
+						case opExpRandRange : func = &exprand_aa; break;
 						case opFirstArg : func = &firstarg_aa; break;
 						//case opSecondArg : func = &secondarg_aa; break;
+						
+
 						default : func = &add_aa; break;
 					}
 					break;
@@ -5805,8 +6051,12 @@ static BinaryOpFunc ChooseNormalFunc(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_ak; break;
 						case opWrap2 : func = &wrap2_ak; break;
 						case opExcess : func = &excess_ak; break;
+						case opRandRange : func = &rrand_ak; break;
+						case opExpRandRange : func = &exprand_ak; break;
 						case opFirstArg : func = &firstarg_aa; break;
 						//case opSecondArg : func = &secondarg_aa; break;
+						
+						
 						default : func = &add_ak; break;
 					}
 					break;
@@ -5854,6 +6104,8 @@ static BinaryOpFunc ChooseNormalFunc(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_ai; break;
 						case opWrap2 : func = &wrap2_ai; break;
 						case opExcess : func = &excess_ai; break;
+						case opRandRange : func = &rrand_ai; break;
+						case opExpRandRange : func = &exprand_ai; break;
 						case opFirstArg : func = &firstarg_aa; break;
 						//case opSecondArg : func = &secondarg_aa; break;
 						default : func = &add_ai; break;
@@ -5905,6 +6157,8 @@ static BinaryOpFunc ChooseNormalFunc(BinaryOpUGen *unit)
 					case opFold2 : func = &fold2_ka; break;
 					case opWrap2 : func = &wrap2_ka; break;
 					case opExcess : func = &excess_ka; break;
+					case opRandRange : func = &rrand_ka; break;
+					case opExpRandRange : func = &exprand_ka; break;
 					//case opFirstArg : func = &firstarg_aa; break;
 					//case opSecondArg : func = &secondarg_aa; break;
 					default : func = &add_ka; break;
@@ -5959,6 +6213,8 @@ static BinaryOpFunc ChooseNormalFunc(BinaryOpUGen *unit)
 					case opFold2 : func = &fold2_ia; break;
 					case opWrap2 : func = &wrap2_ia; break;
 					case opExcess : func = &excess_ia; break;
+					case opRandRange : func = &rrand_ia; break;
+					case opExpRandRange : func = &exprand_ia; break;
 					//case opFirstArg : func = &firstarg_aa; break;
 					//case opSecondArg : func = &secondarg_aa; break;
 					default : func = &add_ia; break;
@@ -6028,6 +6284,8 @@ static BinaryOpFunc ChooseNovaSimdFunc_64(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_aa; break;
 						case opWrap2 : func = &wrap2_aa; break;
 						case opExcess : func = &excess_aa; break;
+						case opRandRange : func = &rrand_aa; break;
+						case opExpRandRange : func = &exprand_aa; break;
 						case opFirstArg : func = &firstarg_aa_nova; break;
 						//case opSecondArg : func = &secondarg_aa_nova; break;
 						default : func = &add_aa; break;
@@ -6077,6 +6335,8 @@ static BinaryOpFunc ChooseNovaSimdFunc_64(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_ak; break;
 						case opWrap2 : func = &wrap2_ak; break;
 						case opExcess : func = &excess_ak; break;
+						case opRandRange : func = &rrand_ak; break;
+						case opExpRandRange : func = &exprand_ak; break;
 						case opFirstArg : func = &firstarg_aa; break;
 						//case opSecondArg : func = &secondarg_aa; break;
 						default : func = &add_ak; break;
@@ -6126,6 +6386,8 @@ static BinaryOpFunc ChooseNovaSimdFunc_64(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_ai; break;
 						case opWrap2 : func = &wrap2_ai; break;
 						case opExcess : func = &excess_ai; break;
+						case opRandRange: func = &rrand_ai; break;
+						case opExpRandRange: func = &exprand_ai; break;
 						case opFirstArg : func = &firstarg_aa; break;
 						//case opSecondArg : func = &secondarg_aa; break;
 						default : func = &add_ai; break;
@@ -6177,6 +6439,8 @@ static BinaryOpFunc ChooseNovaSimdFunc_64(BinaryOpUGen *unit)
 					case opFold2 : func = &fold2_ka; break;
 					case opWrap2 : func = &wrap2_ka; break;
 					case opExcess : func = &excess_ka; break;
+					case opRandRange : func = &rrand_ka; break;
+					case opExpRandRange : func = &exprand_ka; break;
 					//case opFirstArg : func = &firstarg_aa; break;
 					//case opSecondArg : func = &secondarg_aa; break;
 					default : func = &add_ka; break;
@@ -6231,6 +6495,8 @@ static BinaryOpFunc ChooseNovaSimdFunc_64(BinaryOpUGen *unit)
 					case opFold2 : func = &fold2_ia; break;
 					case opWrap2 : func = &wrap2_ia; break;
 					case opExcess : func = &excess_ia; break;
+					case opRandRange : func = &rrand_ia; break;
+					case opExpRandRange : func = &exprand_ia; break;
 					//case opFirstArg : func = &firstarg_aa; break;
 					//case opSecondArg : func = &secondarg_aa; break;
 					default : func = &add_ia; break;
@@ -6303,6 +6569,8 @@ static BinaryOpFunc ChooseNovaSimdFunc(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_aa; break;
 						case opWrap2 : func = &wrap2_aa; break;
 						case opExcess : func = &excess_aa; break;
+						case opRandRange : func = &rrand_aa; break;
+						case opExpRandRange : func = &exprand_aa; break;
 						case opFirstArg : func = &firstarg_aa_nova; break;
 						//case opSecondArg : func = &secondarg_aa_nova; break;
 						default : func = &add_aa; break;
@@ -6352,6 +6620,8 @@ static BinaryOpFunc ChooseNovaSimdFunc(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_ak; break;
 						case opWrap2 : func = &wrap2_ak; break;
 						case opExcess : func = &excess_ak; break;
+						case opRandRange : func = &rrand_ak; break;
+						case opExpRandRange : func = &exprand_ak; break;
 						case opFirstArg : func = &firstarg_aa; break;
 						//case opSecondArg : func = &secondarg_aa; break;
 						default : func = &add_ak; break;
@@ -6401,6 +6671,8 @@ static BinaryOpFunc ChooseNovaSimdFunc(BinaryOpUGen *unit)
 						case opFold2 : func = &fold2_ai; break;
 						case opWrap2 : func = &wrap2_ai; break;
 						case opExcess : func = &excess_ai; break;
+						case opRandRange : func = &rrand_ai; break;
+						case opExpRandRange : func = &exprand_ai; break;
 						case opFirstArg : func = &firstarg_aa; break;
 						//case opSecondArg : func = &secondarg_aa; break;
 						default : func = &add_ai; break;
@@ -6452,6 +6724,8 @@ static BinaryOpFunc ChooseNovaSimdFunc(BinaryOpUGen *unit)
 					case opFold2 : func = &fold2_ka; break;
 					case opWrap2 : func = &wrap2_ka; break;
 					case opExcess : func = &excess_ka; break;
+					case opRandRange : func = &rrand_ka; break;
+					case opExpRandRange : func = &exprand_ka; break;
 					//case opFirstArg : func = &firstarg_aa; break;
 					//case opSecondArg : func = &secondarg_aa; break;
 					default : func = &add_ka; break;
@@ -6506,6 +6780,8 @@ static BinaryOpFunc ChooseNovaSimdFunc(BinaryOpUGen *unit)
 					case opFold2 : func = &fold2_ia; break;
 					case opWrap2 : func = &wrap2_ia; break;
 					case opExcess : func = &excess_ia; break;
+					case opRandRange : func = &rrand_ia; break;
+					case opExpRandRange : func = &rrand_ia; break;
 					//case opFirstArg : func = &firstarg_aa; break;
 					//case opSecondArg : func = &secondarg_aa; break;
 					default : func = &add_ia; break;
diff --git a/server/plugins/CMakeLists.txt b/server/plugins/CMakeLists.txt
index dbe8885..a3840d7 100644
--- a/server/plugins/CMakeLists.txt
+++ b/server/plugins/CMakeLists.txt
@@ -50,8 +50,7 @@ set(plugin_sources
 	UnaryOpUGens.cpp
 	UnpackFFTUGens.cpp
 
-	KeyboardUGens.cpp
-	MouseUGens.cpp
+	UIUGens.cpp
 )
 
 set(plugins "")
@@ -76,7 +75,7 @@ foreach(plugin ${plugin_sources})
 	list(APPEND plugins ${plugin_name})
 endforeach(plugin)
 
-set(uiugens MouseUGens KeyboardUGens)
+set(uiugens UIUGens)
 
 if (WIN32)
     if(MSVC)
@@ -144,7 +143,7 @@ if (SUPERNOVA)
                     APPEND PROPERTY COMPILE_DEFINITIONS  "SUPERNOVA")
 	endforeach(plugin)
 
-	list(APPEND uiugens KeyboardUGens_supernova MouseUGens_supernova)
+	list(APPEND uiugens UIUGens_supernova)
 
 	add_library(FFT_UGens_supernova MODULE
 				FFTInterfaceTable.cpp
@@ -249,22 +248,21 @@ if (APPLE)
 	# determines the app name and app install location (scappbundlename, scappdir):
 	include (${CMAKE_SOURCE_DIR}/cmake_modules/MacAppFolder.cmake)
 
-	install(TARGETS ${plugins}
+	install(TARGETS ${plugins} ${supernova_plugins}
 			DESTINATION "${scappauxresourcesdir}/plugins"
 			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
 
+        if (SUPERNOVA)
+                install(TARGETS ${supernova_plugins}
+                        DESTINATION "${scappauxresourcesdir}/supernova_plugins"
+                        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+        endif()
 elseif (WIN32)
-	install(TARGETS ${plugins}
+	install(TARGETS ${plugins} ${supernova_plugins}
 			DESTINATION "SuperCollider/plugins"
 			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
 else()
-	install(TARGETS ${plugins}
+	install(TARGETS ${plugins} ${supernova_plugins}
 			DESTINATION "lib/SuperCollider/plugins"
 			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
-
-	if (SUPERNOVA)
-		install(TARGETS ${supernova_plugins}
-			DESTINATION "lib/supernova/plugins"
-			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
-	endif()
 endif()
diff --git a/server/plugins/Convolution.cpp b/server/plugins/Convolution.cpp
index c46025b..e3b0d7b 100644
--- a/server/plugins/Convolution.cpp
+++ b/server/plugins/Convolution.cpp
@@ -635,8 +635,6 @@ void Convolution2L_Ctor(Convolution2L *unit)
 								  //if (bufnum >= world->mNumSndBufs) bufnum = 0;
 								  //SndBuf *buf = world->mSndBufs + bufnum;
 
-	World *world = unit->mWorld;
-
 	SndBuf *buf = ConvGetBuffer(unit, bufnum, "Convolution2L", 1);
 
 	if(buf) {
@@ -742,7 +740,6 @@ void Convolution2L_next(Convolution2L *unit, int numSamples)
 	if (unit->m_prevtrig <= 0.f && curtrig > 0.f){
 
 		uint32 bufnum = (int)ZIN0(1);
-		World *world = unit->mWorld;
 		SndBuf *buf = ConvGetBuffer(unit, bufnum, "Convolution2L", numSamples);
 		if (!buf)
 			return;
@@ -968,8 +965,6 @@ void StereoConvolution2L_Ctor(StereoConvolution2L *unit)
 	//unit->m_log2n = LOG2CEIL(unit->m_fftsize);
     //int log2n = unit->m_log2n;
 
-	World *world = unit->mWorld;
-
 	SndBuf *buf = ConvGetBuffer(unit, bufnumL, "StereoConvolution2L", 1);
 
 	if (buf) {
@@ -1072,14 +1067,12 @@ void StereoConvolution2L_next(StereoConvolution2L *unit, int wrongNumSamples)
 	unit->m_pos += numSamples;
 
 	if (unit->m_prevtrig <= 0.f && curtrig > 0.f){
-		int log2n2 = unit->m_log2n;
 		float fbufnum  = ZIN0(1);
 		uint32 bufnumL = (int)fbufnum;
 		fbufnum  = ZIN0(2);
 		uint32 bufnumR = (int)fbufnum;
 		unit->m_cflength = (int)ZIN0(5);
 		//printf("bufnum %i \n", bufnum);
-		World *world = unit->mWorld;
 
 		SndBuf *bufL = ConvGetBuffer(unit, bufnumL, "StereoConvolution2L", numSamples);
 		SndBuf *bufR = ConvGetBuffer(unit, bufnumR, "StereoConvolution2L", numSamples);
@@ -1289,7 +1282,6 @@ void Convolution3_Ctor(Convolution3 *unit)
 	float fbufnum  = ZIN0(1);
 	uint32 bufnum = (int)fbufnum;
 
-	World *world = unit->mWorld;
 	//if (bufnum >= world->mNumSndBufs) bufnum = 0;
 	//SndBuf *buf = world->mSndBufs + bufnum;
 	SndBuf *buf = ConvGetBuffer(unit, bufnum, "Convolution3", 1);
@@ -1339,7 +1331,6 @@ void Convolution3_next_a(Convolution3 *unit)
 	float *pin1 = unit->m_inbuf1;
 
 	int numSamples = unit->mWorld->mFullRate.mBufLength;
-	uint32 insize=unit->m_insize * sizeof(float);
 
 	// copy input
 	Copy(numSamples, pin1, in);
@@ -1351,7 +1342,6 @@ void Convolution3_next_a(Convolution3 *unit)
 		// 			int log2n2 = unit->m_log2n;
 		uint32 bufnum = (int)fbufnum;
 		// 			printf("bufnum %i \n", bufnum);
-		World *world = unit->mWorld;
 		SndBuf *buf = ConvGetBuffer(unit, bufnum, "Convolution3", numSamples);
 		LOCK_SNDBUF_SHARED(buf);
 
@@ -1401,10 +1391,9 @@ void Convolution3_next_k(Convolution3 *unit)
 	//	float *in2 = IN(1);
 	float curtrig = ZIN0(2);
 
-	float *out1 = unit->m_inbuf1 + unit->m_pos;
+	//	float *out1 = unit->m_inbuf1 + unit->m_pos;
 	// 	float *out2 = unit->m_inbuf2 + unit->m_pos;
 
-	int numSamples = unit->mWorld->mFullRate.mBufLength;
 	uint32 insize=unit->m_insize * sizeof(float);
 
 
@@ -1414,7 +1403,6 @@ void Convolution3_next_k(Convolution3 *unit)
 		// 			int log2n2 = unit->m_log2n;
 		uint32 bufnum = (int)fbufnum;
 		// 			printf("bufnum %i \n", bufnum);
-		World *world = unit->mWorld;
 		SndBuf *buf= ConvGetBuffer(unit, bufnum, "Convolution3", 1);
 		if (!buf)
 			return;
diff --git a/server/plugins/DelayUGens.cpp b/server/plugins/DelayUGens.cpp
index a78edef..30bb5d2 100644
--- a/server/plugins/DelayUGens.cpp
+++ b/server/plugins/DelayUGens.cpp
@@ -132,7 +132,7 @@ struct BufDelayUnit : public Unit
 	SndBuf *m_buf;
 	float m_dsamp;
 	float m_delaytime;
-	int m_iwrphase;
+	long m_iwrphase;
 	uint32 m_numoutput;
 };
 
@@ -224,8 +224,8 @@ struct Pluck : public FeedbackDelay, CubicInterpolationUnit
 
 struct LocalBuf : public Unit
 {
-	float m_fbufnum;
 	SndBuf *m_buf;
+	void * chunk;
 };
 
 struct MaxLocalBufs : public Unit
@@ -233,16 +233,10 @@ struct MaxLocalBufs : public Unit
 };
 
 struct SetBuf : public Unit
-{
-	float m_fbufnum;
-	SndBuf *m_buf;
-};
+{};
 
 struct ClearBuf : public Unit
-{
-	float m_fbufnum;
-	SndBuf *m_buf;
-};
+{};
 
 struct DelTapWr : public Unit
 {
@@ -329,14 +323,11 @@ extern "C"
 
 	void LocalBuf_Ctor(LocalBuf *unit);
 	void LocalBuf_Dtor(LocalBuf *unit);
-	void LocalBuf_next(LocalBuf *unit, int inNumSamples);
 
 	void MaxLocalBufs_Ctor(MaxLocalBufs *unit);
 
 	void SetBuf_Ctor(SetBuf *unit);
-	void SetBuf_next(SetBuf *unit, int inNumSamples);
 	void ClearBuf_Ctor(ClearBuf *unit);
-	void ClearBuf_next(ClearBuf *unit, int inNumSamples);
 
 	void BufDelayN_Ctor(BufDelayN *unit);
 	void BufDelayN_next(BufDelayN *unit, int inNumSamples);
@@ -552,6 +543,26 @@ void NumRunningSynths_next(Unit *unit, int inNumSamples)
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
+
+#define CTOR_GET_BUF \
+	float fbufnum  = ZIN0(0); \
+	fbufnum = sc_max(0.f, fbufnum); \
+	uint32 bufnum = (int)fbufnum; \
+	World *world = unit->mWorld; \
+	SndBuf *buf; \
+	if (bufnum >= world->mNumSndBufs) { \
+		int localBufNum = bufnum - world->mNumSndBufs; \
+		Graph *parent = unit->mParent; \
+		if(localBufNum <= parent->localBufNum) { \
+			buf = parent->mLocalSndBufs + localBufNum; \
+		} else { \
+			bufnum = 0; \
+			buf = world->mSndBufs + bufnum; \
+		} \
+	} else { \
+		buf = world->mSndBufs + bufnum; \
+	}
+
 void BufSampleRate_next(BufInfoUnit *unit, int inNumSamples)
 {
 	SIMPLE_GET_BUF_SHARED
@@ -561,8 +572,9 @@ void BufSampleRate_next(BufInfoUnit *unit, int inNumSamples)
 void BufSampleRate_Ctor(BufInfoUnit *unit, int inNumSamples)
 {
 	SETCALC(BufSampleRate_next);
-	unit->m_fbufnum = -1e9f;
-	SIMPLE_GET_BUF_SHARED
+	CTOR_GET_BUF
+	unit->m_fbufnum = fbufnum;
+	unit->m_buf = buf;
 	ZOUT0(0) = buf->samplerate;
 }
 
@@ -576,23 +588,25 @@ void BufFrames_next(BufInfoUnit *unit, int inNumSamples)
 void BufFrames_Ctor(BufInfoUnit *unit, int inNumSamples)
 {
 	SETCALC(BufFrames_next);
-	unit->m_fbufnum = -1.f;
-	SIMPLE_GET_BUF_SHARED
+	CTOR_GET_BUF
+	unit->m_fbufnum = fbufnum;
+	unit->m_buf = buf;
 	ZOUT0(0) = buf->frames;
 }
 
 
 void BufDur_next(BufInfoUnit *unit, int inNumSamples)
 {
-	SIMPLE_GET_BUF
+	SIMPLE_GET_BUF_SHARED
 	ZOUT0(0) = buf->frames * buf->sampledur;
 }
 
 void BufDur_Ctor(BufInfoUnit *unit, int inNumSamples)
 {
 	SETCALC(BufDur_next);
-	unit->m_fbufnum = -1e9f;
-	SIMPLE_GET_BUF_SHARED
+	CTOR_GET_BUF
+	unit->m_fbufnum = fbufnum;
+	unit->m_buf = buf;
 	ZOUT0(0) = buf->frames * buf->sampledur;
 }
 
@@ -606,8 +620,9 @@ void BufChannels_next(BufInfoUnit *unit, int inNumSamples)
 void BufChannels_Ctor(BufInfoUnit *unit, int inNumSamples)
 {
 	SETCALC(BufChannels_next);
-	unit->m_fbufnum = -1e9f;
-	SIMPLE_GET_BUF_SHARED
+	CTOR_GET_BUF
+	unit->m_fbufnum = fbufnum;
+	unit->m_buf = buf;
 	ZOUT0(0) = buf->channels;
 }
 
@@ -621,8 +636,9 @@ void BufSamples_next(BufInfoUnit *unit, int inNumSamples)
 void BufSamples_Ctor(BufInfoUnit *unit, int inNumSamples)
 {
 	SETCALC(BufSamples_next);
-	unit->m_fbufnum = -1e9f;
-	SIMPLE_GET_BUF_SHARED
+	CTOR_GET_BUF
+	unit->m_fbufnum = fbufnum;
+	unit->m_buf = buf;
 	ZOUT0(0) = buf->samples;
 }
 
@@ -636,8 +652,9 @@ void BufRateScale_next(BufInfoUnit *unit, int inNumSamples)
 void BufRateScale_Ctor(BufInfoUnit *unit, int inNumSamples)
 {
 	SETCALC(BufRateScale_next);
-	unit->m_fbufnum = -1e9f;
-	SIMPLE_GET_BUF_SHARED
+	CTOR_GET_BUF
+	unit->m_fbufnum = fbufnum;
+	unit->m_buf = buf;
 	ZOUT0(0) = buf->samplerate * unit->mWorld->mFullRate.mSampleDur;
 }
 
@@ -648,20 +665,22 @@ inline int32 BUFMASK(int32 x)
 	return (1 << (31 - CLZ(x))) - 1;
 }
 
-
 static void LocalBuf_allocBuffer(LocalBuf *unit, SndBuf *buf, int numChannels, int numFrames)
 {
 	int numSamples = numFrames * numChannels;
 	// Print("bufnum: %i, allocating %i channels and %i frames. memsize: %i\n", (int)unit->m_fbufnum, numChannels, numFrames, numSamples * sizeof(float));
-	buf->data = (float*)RTAlloc(unit->mWorld, numSamples * sizeof(float));
+	const int alignment = 128; // in bytes
+	unit->chunk = (float*)RTAlloc(unit->mWorld, numSamples * sizeof(float) + alignment);
 
-	if (!buf->data) {
+	if (!unit->chunk) {
 		if(unit->mWorld->mVerbosity > -2){
 			Print("failed to allocate memory for LocalBuffer\n");
 		}
 		return;
 	}
 
+	buf->data = (float*) ((intptr_t)((char*)unit->chunk + (alignment - 1)) & -alignment);
+
 	buf->channels = numChannels;
 	buf->frames   = numFrames;
 	buf->samples  = numSamples;
@@ -674,51 +693,41 @@ static void LocalBuf_allocBuffer(LocalBuf *unit, SndBuf *buf, int numChannels, i
 #endif
 }
 
-
-
-
 void LocalBuf_Ctor(LocalBuf *unit)
 {
 	Graph *parent = unit->mParent;
 
 	int offset =  unit->mWorld->mNumSndBufs;
 	int bufnum =  parent->localBufNum;
+	float fbufnum;
 
 	if (parent->localBufNum >= parent->localMaxBufNum) {
-		unit->m_fbufnum = -1.f;
-		if(unit->mWorld->mVerbosity > -2){
+		fbufnum = -1.f;
+		if(unit->mWorld->mVerbosity > -2)
 			printf("warning: LocalBuf tried to allocate too many local buffers.\n");
-		}
-
 	} else {
-
-		unit->m_fbufnum = (float) (bufnum + offset);
+		fbufnum = (float) (bufnum + offset);
 		unit->m_buf =  parent->mLocalSndBufs + bufnum;
 		parent->localBufNum = parent->localBufNum + 1;
 
 		LocalBuf_allocBuffer(unit, unit->m_buf, (int)IN0(0), (int)IN0(1));
 	}
 
-	OUT0(0) = unit->m_fbufnum;
-
+	OUT0(0) = fbufnum;
 }
 
 void LocalBuf_Dtor(LocalBuf *unit)
 {
-	RTFree(unit->mWorld, unit->m_buf->data);
+	RTFree(unit->mWorld, unit->chunk);
 	if(unit->mParent->localBufNum <= 1) { // only the last time.
 		for (int i = 0; i != unit->mParent->localMaxBufNum; ++i)
 			unit->mParent->mLocalSndBufs[i].~SndBuf();
 		RTFree(unit->mWorld, unit->mParent->mLocalSndBufs);
 		unit->mParent->localMaxBufNum = 0;
-	} else {
-		unit->mParent->localBufNum =  unit->mParent->localBufNum - 1;
-	}
+	} else
+		unit->mParent->localBufNum = unit->mParent->localBufNum - 1;
 }
 
-// dummy for unit size.
-void LocalBuf_next(LocalBuf *unit, int inNumSamples) {}
-
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -726,8 +735,6 @@ void MaxLocalBufs_Ctor(MaxLocalBufs *unit)
 {
 	Graph *parent = unit->mParent;
 
-	int offset =  unit->mWorld->mNumSndBufs;
-	int bufnum =  parent->localBufNum;
 	int maxBufNum = (int)(IN0(0) + .5f);
 	if(!parent->localMaxBufNum) {
 		parent->mLocalSndBufs = (SndBuf*)RTAlloc(unit->mWorld, maxBufNum * sizeof(SndBuf));
@@ -736,19 +743,17 @@ void MaxLocalBufs_Ctor(MaxLocalBufs *unit)
 			new(&parent->mLocalSndBufs[i]) SndBuf();
 #endif
 		parent->localMaxBufNum = maxBufNum;
-	} else {
+	} else
 		printf("warning: MaxLocalBufs - maximum number of local buffers is already declared (%i) and must remain unchanged.\n", parent->localMaxBufNum);
-	}
-
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
-
-void SetBuf_next(SetBuf *unit, int inNumSamples)
+void SetBuf_Ctor(SetBuf *unit)
 {
-	GET_BUF
-	if (!bufData) {
+	OUT0(0) = 0.f;
+	CTOR_GET_BUF
+	if (!buf || !buf->data) {
 		if(unit->mWorld->mVerbosity > -2){
 			Print("SetBuf: no valid buffer\n");
 		}
@@ -761,46 +766,26 @@ void SetBuf_next(SetBuf *unit, int inNumSamples)
 
 	int j = 3;
 	for(int i=offset; i<end; ++j, ++i) {
-		bufData[i] = (float)IN0(j);
+		buf->data[i] = IN0(j);
 	}
-
-}
-
-void SetBuf_Ctor(SetBuf *unit)
-{
-	unit->m_fbufnum = -1.f;
-	SETCALC(SetBuf_next);
-	OUT0(0) = 0.f;
-	SetBuf_next(unit, 0);
 }
 
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
-
-void ClearBuf_next(ClearBuf *unit, int inNumSamples)
+void ClearBuf_Ctor(ClearBuf *unit)
 {
-	GET_BUF
-	if (!bufData) {
+	OUT0(0) = 0.f;
+	CTOR_GET_BUF
+
+	if (!buf || !buf->data) {
 		if(unit->mWorld->mVerbosity > -2){
 			Print("ClearBuf: no valid buffer\n");
 		}
 		return;
 	}
-	int n = unit->m_buf->samples;
 
-	//bzero(unit->m_buf->data, unit->m_buf->samples * sizeof(float));
-	for (int i=0; i<n; ++i) {
-		bufData[i] = 0.f;
-	}
-}
-
-void ClearBuf_Ctor(ClearBuf *unit)
-{
-	unit->m_fbufnum = -1.f;
-	SETCALC(ClearBuf_next);
-	OUT0(0) = 0.f;
-	ClearBuf_next(unit, 0);
+	Clear(buf->samples, buf->data);
 }
 
 
@@ -2277,12 +2262,13 @@ static inline void DelayN_delay_loop(float * out, const float * in, long & iwrph
 					in += nsmps;
 					dlyrd += nsmps;
 					dlywr += nsmps;
-				} else
+				} else {
 					LOOP(nsmps,
 						ZXP(dlywr) = ZXP(in);
 						ZXP(out) = 0.f;
-						ZXP(dlyrd);
 					);
+					dlyrd += nsmps;
+				}
 			} else {
 				LOOP(nsmps,
 					ZXP(dlywr) = ZXP(in);
@@ -3760,6 +3746,10 @@ static bool DelayUnit_AllocDelayLine(DelayUnit *unit, const char * className)
 		RTFree(unit->mWorld, unit->m_dlybuf);
 	unit->m_dlybuf = (float*)RTAlloc(unit->mWorld, delaybufsize * sizeof(float));
 
+#if 0 // for debugging we may want to fill the buffer with nans
+	std::fill_n(unit->m_dlybuf, delaybufsize, std::numeric_limits<float>::signaling_NaN());
+#endif
+
 	if (unit->m_dlybuf == NULL) {
 		SETCALC(ft->fClearUnitOutputs);
 		ClearUnitOutputs(unit, 1);
@@ -4206,8 +4196,6 @@ inline void FilterX_perform_a(CombX *unit, int inNumSamples, UnitCalcFunc resetF
 
 	float *dlybuf = unit->m_dlybuf;
 	long iwrphase = unit->m_iwrphase;
-	float dsamp = unit->m_dsamp;
-	float feedbk = unit->m_feedbk;
 	long mask = unit->m_mask;
 
 	LOOP1(inNumSamples,
@@ -6170,8 +6158,8 @@ Pluck - Karplus-Strong
 void Pluck_Ctor(Pluck *unit)
 {
 //	FeedbackDelay_Reset(unit);
-	float maxdelaytime = unit->m_maxdelaytime = IN0(2);
-	float delaytime = unit->m_delaytime = IN0(3);
+	unit->m_maxdelaytime = IN0(2);
+	unit->m_delaytime = IN0(3);
 	unit->m_dlybuf = 0;
 	bool allocationSucessful = DelayUnit_AllocDelayLine(unit, "Pluck");
 	if (!allocationSucessful)
@@ -7198,7 +7186,7 @@ void Pluck_next_ka_z(Pluck *unit, int inNumSamples)
 	uint32 bufSamples = buf->samples; \
 	uint32 bufFrames = buf->frames; \
 	int guardFrame __attribute__((__unused__)) = bufFrames - 2; \
-	double loopMax = (double)bufSamples;
+	double loopMax __attribute__((__unused__)) = (double)bufSamples;
 
 #define CHECK_DELTAP_BUF \
 	if ((!bufData) || (bufChannels != 1)) { \
@@ -7314,7 +7302,7 @@ void DelTapWr_next_simd(DelTapWr *unit, int inNumSamples)
 	uint32 phaseIn = *iPhaseIn; \
 	float fbufnum  = IN0(0); \
 	uint32 bufnum = (uint32)fbufnum; \
-	float* out = ZOUT(0); \
+	float* out __attribute__((__unused__)) = ZOUT(0); \
 
 #define SETUP_TAPDELA \
 	float* delTime = ZIN(2); \
diff --git a/server/plugins/DemandUGens.cpp b/server/plugins/DemandUGens.cpp
index d6da29c..2a5f030 100644
--- a/server/plugins/DemandUGens.cpp
+++ b/server/plugins/DemandUGens.cpp
@@ -663,10 +663,8 @@ enum {
 
 void DemandEnvGen_next_k(DemandEnvGen *unit, int inNumSamples)
 {
-
 	float zreset = ZIN0(d_env_reset);
 
-
 	float *out = ZOUT(0);
 	double level = unit->m_level;
 	float phase = unit->m_phase;
@@ -679,8 +677,6 @@ void DemandEnvGen_next_k(DemandEnvGen *unit, int inNumSamples)
 
 	for (int i=0; i<inNumSamples; ++i) {
 
-
-
 		if (zreset > 0.f && unit->m_prevreset <= 0.f) {
 			//printf("reset: %f %f \n", zreset, unit->m_prevreset);
 			RESETINPUT(d_env_level);
@@ -713,9 +709,6 @@ void DemandEnvGen_next_k(DemandEnvGen *unit, int inNumSamples)
 				DoneAction(doneAction, unit);
 
 			} else {
-
-
-
 				// new time
 
 				float dur = DEMANDINPUT(d_env_dur);
@@ -735,8 +728,8 @@ void DemandEnvGen_next_k(DemandEnvGen *unit, int inNumSamples)
 				shape = (int)DEMANDINPUT(d_env_shape);
 				curve = DEMANDINPUT(d_env_curve);
 
-
-				if (sc_isnan(curve)) curve = unit->m_shape;
+				if (sc_isnan(shape)) shape = unit->m_shape;
+				if (sc_isnan(curve)) curve = unit->m_curve;
 				if (phase <= 1.f) {
 					shape = 1; // shape_Linear
 					count = 1.f;
@@ -802,7 +795,7 @@ void DemandEnvGen_next_k(DemandEnvGen *unit, int inNumSamples)
 					} break;
 					case shape_Curve : {
 						if (fabs(curve) < 0.001) {
-							unit->m_shape = 1; // shape_Linear
+							unit->m_shape = shape = 1; // shape_Linear
 							unit->m_grow = (endLevel - level) / count;
 						} else {
 							double a1 = (endLevel - level) / (1.0 - exp(curve));
@@ -899,25 +892,23 @@ void DemandEnvGen_next_k(DemandEnvGen *unit, int inNumSamples)
 			ZXP(out) = level;
 
 	}
-			float zgate = ZIN0(d_env_gate);
-			if(zgate >= 1.f) {
-				unit->m_running = true;
-			} else if (zgate > 0.f) {
-				unit->m_running = true;
-				release = true;  // release next time.
-			} else {
-				unit->m_running = false; // sample and hold
-			}
-
-			unit->m_level = level;
-			unit->m_curve = curve;
-			unit->m_shape = shape;
-			unit->m_prevreset = zreset;
-			unit->m_release = release;
-
-			unit->m_phase = phase;
+	float zgate = ZIN0(d_env_gate);
+	if(zgate >= 1.f) {
+		unit->m_running = true;
+	} else if (zgate > 0.f) {
+		unit->m_running = true;
+		release = true;  // release next time.
+	} else {
+		unit->m_running = false; // sample and hold
+	}
 
+	unit->m_level = level;
+	unit->m_curve = curve;
+	unit->m_shape = shape;
+	unit->m_prevreset = zreset;
+	unit->m_release = release;
 
+	unit->m_phase = phase;
 }
 
 
@@ -959,7 +950,6 @@ void DemandEnvGen_next_a(DemandEnvGen *unit, int inNumSamples)
 			running = true;
 
 			phase = 0.f;
-
 		}
 
 		prevreset = zreset;
@@ -977,9 +967,6 @@ void DemandEnvGen_next_a(DemandEnvGen *unit, int inNumSamples)
 				DoneAction(doneAction, unit);
 
 			} else {
-
-
-
 				// new time
 
 				float dur = DEMANDINPUT_A(d_env_dur, i + 1);
@@ -994,11 +981,11 @@ void DemandEnvGen_next_a(DemandEnvGen *unit, int inNumSamples)
 
 				// new shape
 				float count;
-				curve = DEMANDINPUT_A(d_env_shape, i + 1);
+				curve = DEMANDINPUT_A(d_env_curve, i + 1);
 				shape = (int)DEMANDINPUT_A(d_env_shape, i + 1);
 
 				// printf("shapes: %i \n", shape);
-				if (sc_isnan(curve)) curve = unit->m_shape;
+				if (sc_isnan(curve)) curve = unit->m_curve;
 				if (sc_isnan(shape)) shape = unit->m_shape;
 
 				if (phase <= 1.f) {
@@ -1064,7 +1051,7 @@ void DemandEnvGen_next_a(DemandEnvGen *unit, int inNumSamples)
 					} break;
 					case shape_Curve : {
 						if (fabs(curve) < 0.001) {
-							unit->m_shape = 1; // shape_Linear
+							unit->m_shape = shape = 1; // shape_Linear
 							unit->m_grow = (endLevel - level) / count;
 						} else {
 							double a1 = (endLevel - level) / (1.0 - exp(curve));
@@ -1175,7 +1162,6 @@ void DemandEnvGen_next_a(DemandEnvGen *unit, int inNumSamples)
 	unit->m_prevreset = prevreset;
 	unit->m_release = release;
 	unit->m_phase = phase;
-
 }
 
 
@@ -2087,7 +2073,7 @@ void Dpoll_Ctor(Dpoll *unit)
 		unit->m_id_string[i] = (char)IN0(4+i);
 	}
 	unit->m_id_string[(int)unit->m_id] = '\0';
-	unit->m_mayprint = unit->mWorld->mVerbosity >= 0;
+	unit->m_mayprint = unit->mWorld->mVerbosity >= -1;
 	OUT0(0) = 0.f;
 }
 
diff --git a/server/plugins/DiskIO_UGens.cpp b/server/plugins/DiskIO_UGens.cpp
index 4e35368..b8e4bb8 100644
--- a/server/plugins/DiskIO_UGens.cpp
+++ b/server/plugins/DiskIO_UGens.cpp
@@ -25,11 +25,8 @@
 #include "MsgFifo.h"
 #include "SC_SyncCondition.h"
 #include "SC_PlugIn.h"
-#ifdef _WIN32
-	#include <sndfile-win.h>
-#else
-	#include <sndfile.h>
-#endif
+
+#include <sndfile.h>
 
 #include <new>
 
@@ -417,8 +414,6 @@ void VDiskIn_first(VDiskIn *unit, int inNumSamples)
 	float pchRatio = unit->m_pchRatio;
 	float pchSlope = CALCSLOPE(newPchRatio, pchRatio);
 
-	const float* tableInit = bufData;
-
 	for (uint32 i = 0; i < bufChannels; i++){
 	    out[i][0] = bufData[0 + i];
 	}
diff --git a/server/plugins/FFT_UGens.cpp b/server/plugins/FFT_UGens.cpp
index 7cf9591..95f6c36 100644
--- a/server/plugins/FFT_UGens.cpp
+++ b/server/plugins/FFT_UGens.cpp
@@ -152,11 +152,13 @@ void FFT_Ctor(FFT *unit)
 		unit->m_scfft = 0;
 		return;
 	}
-	int fullbufsize = unit->m_fullbufsize * sizeof(float);
 	int audiosize = unit->m_audiosize * sizeof(float);
 
 	int hopsize = (int)(sc_max(sc_min(ZIN0(2), 1.f), 0.f) * unit->m_audiosize);
-	if (((int)(hopsize / unit->mWorld->mFullRate.mBufLength)) * unit->mWorld->mFullRate.mBufLength
+	if (hopsize < unit->mWorld->mFullRate.mBufLength) {
+		Print("FFT_Ctor: hopsize smaller than SC's block size (%i) - automatically corrected.\n", hopsize, unit->mWorld->mFullRate.mBufLength);
+		hopsize = unit->mWorld->mFullRate.mBufLength;
+	} else if (((int)(hopsize / unit->mWorld->mFullRate.mBufLength)) * unit->mWorld->mFullRate.mBufLength
 				!= hopsize) {
 		Print("FFT_Ctor: hopsize (%i) not an exact multiple of SC's block size (%i) - automatically corrected.\n", hopsize, unit->mWorld->mFullRate.mBufLength);
 		hopsize = ((int)(hopsize / unit->mWorld->mFullRate.mBufLength)) * unit->mWorld->mFullRate.mBufLength;
@@ -170,6 +172,11 @@ void FFT_Ctor(FFT *unit)
 	unit->m_scfft = scfft_create(unit->m_fullbufsize, unit->m_audiosize, (SCFFT_WindowFunction)unit->m_wintype, unit->m_inbuf,
 								 unit->m_fftsndbuf->data, kForward, alloc);
 
+	if (!unit->m_scfft) {
+		SETCALC(*ClearUnitOutputs);
+		return;
+	}
+
 	memset(unit->m_inbuf, 0, audiosize);
 
 	//Print("FFT_Ctor: hopsize %i, shuntsize %i, bufsize %i, wintype %i, \n",
@@ -253,6 +260,12 @@ void IFFT_Ctor(IFFT* unit){
 	unit->m_scfft = scfft_create(unit->m_fullbufsize, unit->m_audiosize, (SCFFT_WindowFunction)unit->m_wintype, unit->m_fftsndbuf->data,
 								 unit->m_fftsndbuf->data, kBackward, alloc);
 
+	if (!unit->m_scfft) {
+		SETCALC(*ClearUnitOutputs);
+		unit->m_olabuf = 0;
+		return;
+	}
+
 	// "pos" will be reset to zero when each frame comes in. Until then, the following ensures silent output at first:
 	unit->m_pos = 0; //unit->m_audiosize;
 
@@ -281,7 +294,6 @@ void IFFT_next(IFFT *unit, int wrongNumSamples)
 
 	// Load state from struct into local scope
 	int pos     = unit->m_pos;
-	int fullbufsize  = unit->m_fullbufsize;
 	int audiosize = unit->m_audiosize;
 // 	int numSamples = unit->mWorld->mFullRate.mBufLength;
 	int numSamples = unit->m_numSamples;
@@ -369,7 +381,6 @@ void FFTTrigger_Ctor(FFTTrigger *unit)
 
 	int numSamples = unit->mWorld->mFullRate.mBufLength;
 	float dataHopSize = IN0(1);
-	int initPolar = unit->m_polar = (int)IN0(2);
 	unit->m_numPeriods = unit->m_periodsRemain = (int)(((float)unit->m_fullbufsize * dataHopSize) / numSamples) - 1;
 
 	buf->coord = (IN0(2) == 1.f) ? coord_Polar : coord_Complex;
diff --git a/server/plugins/FeatureDetection.cpp b/server/plugins/FeatureDetection.cpp
index a405c2f..89b9a03 100644
--- a/server/plugins/FeatureDetection.cpp
+++ b/server/plugins/FeatureDetection.cpp
@@ -114,7 +114,7 @@ void PV_OnsetDetectionBase_Ctor(PV_OnsetDetectionBase *unit)
 
 	PV_FEAT_GET_BUF_UNLOCKED
 
-	unit->m_numbins = buf->samples - 2 >> 1;
+	unit->m_numbins = numbins;
 	int insize = unit->m_numbins * sizeof(float);
 
 	if(bufOK) {
diff --git a/server/plugins/FilterUGens.cpp b/server/plugins/FilterUGens.cpp
index 6627038..dae7445 100644
--- a/server/plugins/FilterUGens.cpp
+++ b/server/plugins/FilterUGens.cpp
@@ -21,6 +21,11 @@
 
 #include "SC_PlugIn.h"
 
+#include <limits>
+
+// NaNs are not equal to any floating point number
+static const float uninitializedControl = std::numeric_limits<float>::quiet_NaN();
+
 #define PI 3.1415926535898f
 
 #define PUSH_LOOPVALS \
@@ -45,32 +50,38 @@ struct Ramp : public Unit
 
 struct Lag : public Unit
 {
-	float m_lag, m_b1, m_y1;
+	float m_lag;
+	double m_b1, m_y1;
 };
 
 struct Lag2 : public Unit
 {
-	float m_lag, m_b1, m_y1a, m_y1b;
+	float m_lag;
+	double m_b1, m_y1a, m_y1b;
 };
 
 struct Lag3 : public Unit
 {
-	float m_lag, m_b1, m_y1a, m_y1b, m_y1c;
+	float m_lag;
+	double m_b1, m_y1a, m_y1b, m_y1c;
 };
 
 struct LagUD : public Unit
 {
-	float m_lagu, m_lagd, m_b1u, m_b1d, m_y1;
+	float m_lagu, m_lagd;
+	double m_b1u, m_b1d, m_y1;
 };
 
 struct Lag2UD : public Unit
 {
-	float m_lagu, m_lagd, m_b1u, m_b1d, m_y1a, m_y1b;
+	float m_lagu, m_lagd;
+	double m_b1u, m_b1d, m_y1a, m_y1b;
 };
 
 struct Lag3UD : public Unit
 {
-	float m_lagu, m_lagd, m_b1u, m_b1d, m_y1a, m_y1b, m_y1c;
+	float m_lagu, m_lagd;
+	double m_b1u, m_b1d, m_y1a, m_y1b, m_y1c;
 };
 
 struct VarLag : public Unit
@@ -82,28 +93,31 @@ struct VarLag : public Unit
 
 struct OnePole : public Unit
 {
-	float m_b1, m_y1;
+	double m_b1, m_y1;
 };
 
 struct OneZero : public Unit
 {
-	float m_b1, m_x1;
+	double m_b1, m_x1;
 };
 
 struct Integrator : public Unit
 {
-	float m_b1, m_y1;
+	double m_b1, m_y1;
 };
 
 struct Decay : public Unit
 {
-	float m_decayTime, m_y1, m_b1;
+	float m_decayTime;
+	double m_y1, m_b1;
 };
 
 struct Decay2 : public Unit
 {
-	float m_attackTime, m_y1a, m_b1a;
-	float m_decayTime, m_y1b, m_b1b;
+	float m_attackTime;
+	double m_y1a, m_b1a;
+	float m_decayTime;
+	double m_y1b, m_b1b;
 };
 
 struct LeakDC : public Unit
@@ -113,47 +127,50 @@ struct LeakDC : public Unit
 
 struct TwoPole : public Unit
 {
-	float m_y1, m_y2, m_b1, m_b2, m_freq, m_reson;
+	float m_freq, m_reson;
+	double m_y1, m_y2, m_b1, m_b2;
 };
 
 struct APF : public Unit
 {
-	float m_y1, m_y2, m_x1, m_x2, m_b1, m_b2, m_freq, m_reson;
+	float m_freq, m_reson;
+	double m_y1, m_y2, m_x1, m_x2, m_b1, m_b2;
 };
 
 struct TwoZero : public Unit
 {
-	float m_x1, m_x2, m_b1, m_b2, m_freq, m_reson;
+	float m_freq, m_reson;
+	double m_x1, m_x2, m_b1, m_b2;
 };
 
 struct LPZ1 : public Unit
 {
-	float m_x1;
+	double m_x1;
 };
 
 struct HPZ1 : public Unit
 {
-	float m_x1;
+	double m_x1;
 };
 
 struct HPZ2 : public Unit
 {
-	float m_x1, m_x2;
+	double m_x1, m_x2;
 };
 
 struct BPZ2 : public Unit
 {
-	float m_x1, m_x2;
+	double m_x1, m_x2;
 };
 
 struct BRZ2 : public Unit
 {
-	float m_x1, m_x2;
+	double m_x1, m_x2;
 };
 
 struct LPZ2 : public Unit
 {
-	float m_x1, m_x2;
+	double m_x1, m_x2;
 };
 
 struct Flip : public Unit
@@ -172,76 +189,83 @@ struct Delay2 : public Unit
 
 struct Slope : public Unit
 {
-	float m_x1;
+	double m_x1;
 };
 
 struct Slew : public Unit
 {
-	float mLevel;
+	double mLevel;
 };
 
 struct RLPF : public Unit
 {
-	float m_y1, m_y2, m_a0, m_b1, m_b2, m_freq, m_reson;
+	float m_freq, m_reson;
+	double m_y1, m_y2, m_a0, m_b1, m_b2;
 };
 
 struct RHPF : public Unit
 {
-	double m_y1, m_y2, m_a0, m_b1, m_b2;
 	float m_freq, m_reson;
+	double m_y1, m_y2, m_a0, m_b1, m_b2;
 };
 
 struct LPF : public Unit
 {
-	float m_y1, m_y2, m_a0, m_b1, m_b2, m_freq;
+	float m_freq;
+	double m_y1, m_y2, m_a0, m_b1, m_b2;
 };
 
 struct HPF : public Unit
 {
-	double m_y1, m_y2, m_a0, m_b1, m_b2;
 	float m_freq;
+	double m_y1, m_y2, m_a0, m_b1, m_b2;
 };
 
 struct BPF : public Unit
 {
-	float m_y1, m_y2, m_a0, m_b1, m_b2, m_freq, m_bw;
+	float m_freq, m_bw;
+	double m_y1, m_y2, m_a0, m_b1, m_b2;
 };
 
 struct BRF : public Unit
 {
-	float m_y1, m_y2, m_a0, m_a1, m_b2, m_freq, m_bw;
+	float m_freq, m_bw;
+	double m_y1, m_y2, m_a0, m_a1, m_b2;
 };
 
 struct MidEQ : public Unit
 {
-	float m_y1, m_y2, m_a0, m_b1, m_b2, m_freq, m_bw, m_db;
+	float m_freq, m_bw, m_db;
+	double m_y1, m_y2, m_a0, m_b1, m_b2;
 };
 
 struct Resonz : public Unit
 {
-	float m_y1, m_y2, m_a0, m_b1, m_b2, m_freq, m_rq;
+	float m_freq, m_rq;
+	double m_y1, m_y2, m_a0, m_b1, m_b2;
 };
 
 struct Ringz : public Unit
 {
-	float m_y1, m_y2, m_b1, m_b2, m_freq, m_decayTime;
+	float m_freq, m_decayTime;
+	double m_y1, m_y2, m_b1, m_b2;
 };
 
 struct FOS : public Unit
 {
-	float m_y1, m_a0, m_a1, m_b1;
+	double m_y1, m_a0, m_a1, m_b1;
 };
 
 struct SOS : public Unit
 {
-	float m_y1, m_y2, m_a0, m_a1, m_a2, m_b1, m_b2;
+	double m_y1, m_y2, m_a0, m_a1, m_a2, m_b1, m_b2;
 };
 
 struct Formlet : public Unit
 {
 	float m_freq, m_decayTime, m_attackTime;
-	float m_y01, m_y02, m_b01, m_b02;
-	float m_y11, m_y12, m_b11, m_b12;
+	double m_y01, m_y02, m_b01, m_b02;
+	double m_y11, m_y12, m_b11, m_b12;
 };
 
 const int kMAXMEDIANSIZE = 32;
@@ -286,8 +310,8 @@ struct DetectSilence : public Unit
 
 struct Hilbert : public Unit
 {
-	float m_coefs[12];
-	float m_y1[12];
+	double m_coefs[12];
+	double m_y1[12];
 };
 
 struct FreqShift : public Unit
@@ -302,11 +326,11 @@ struct FreqShift : public Unit
 
 struct MoogFF : public Unit
 {
-	float m_freq, m_b0, m_a1; // Resonant freq and corresponding vals; stored because we need to compare against prev vals
+	float m_freq, m_k;
+	double m_b0, m_a1; // Resonant freq and corresponding vals; stored because we need to compare against prev vals
 	double m_wcD;
 
-	double m_T; // 1/SAMPLEFREQ
-	float m_s1, m_s2, m_s3, m_s4; // 1st order filter states
+	double m_s1, m_s2, m_s3, m_s4; // 1st order filter states
 };
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
@@ -322,7 +346,6 @@ extern "C"
 	void Lag_next(Lag *unit, int inNumSamples);
 	void Lag_Ctor(Lag* unit);
 
-	void Lag2_next(Lag2 *unit, int inNumSamples);
 	void Lag2_Ctor(Lag2* unit);
 
 	void Lag3_next(Lag3 *unit, int inNumSamples);
@@ -564,22 +587,21 @@ void Lag_next(Lag *unit, int inNumSamples)
 	float *in = ZIN(0);
 	float lag = ZIN0(1);
 
-
-	float y1 = unit->m_y1;
-	float b1 = unit->m_b1;
+	double y1 = unit->m_y1;
+	double b1 = unit->m_b1;
 
 	if (lag == unit->m_lag) {
 		LOOP1(inNumSamples,
-			float y0 = ZXP(in);
+			double y0 = ZXP(in);
 			ZXP(out) = y1 = y0 + b1 * (y1 - y0);
 		);
 	} else {
 		unit->m_b1 = lag == 0.f ? 0.f : exp(log001 / (lag * unit->mRate->mSampleRate));
-		float b1_slope = CALCSLOPE(unit->m_b1, b1);
+		double b1_slope = CALCSLOPE(unit->m_b1, b1);
 		unit->m_lag = lag;
 		LOOP1(inNumSamples,
 			b1 += b1_slope;
-			float y0 = ZXP(in);
+			double y0 = ZXP(in);
 			ZXP(out) = y1 = y0 + b1 * (y1 - y0);
 		);
 	}
@@ -592,16 +614,16 @@ void Lag_next_1(Lag *unit, int inNumSamples)
 	float *in = IN(0);
 	float lag = IN0(1);
 
-	float y1 = unit->m_y1;
-	float b1 = unit->m_b1;
+	double y1 = unit->m_y1;
+	double b1 = unit->m_b1;
 
 	if (lag == unit->m_lag) {
-		float y0 = *in;
+		double y0 = *in;
 		*out = y1 = y0 + b1 * (y1 - y0);
 	} else {
 		unit->m_b1 = b1 = lag == 0.f ? 0.f : exp(log001 / (lag * unit->mRate->mSampleRate));
 		unit->m_lag = lag;
-		float y0 = *in;
+		double y0 = *in;
 		*out = y1 = y0 + b1 * (y1 - y0);
 	}
 	unit->m_y1 = zapgremlins(y1);
@@ -614,7 +636,7 @@ void Lag_Ctor(Lag* unit)
 	else
 		SETCALC(Lag_next);
 
-	unit->m_lag = 0.f;
+	unit->m_lag = uninitializedControl;
 	unit->m_b1 = 0.f;
 	unit->m_y1 = ZIN0(0);
 	Lag_next(unit, 1);
@@ -628,13 +650,13 @@ void LagUD_next(LagUD *unit, int inNumSamples)
 	float lagu = ZIN0(1);
 	float lagd = ZIN0(2);
 
-	float y1 = unit->m_y1;
-	float b1u = unit->m_b1u;
-	float b1d = unit->m_b1d;
+	double y1 = unit->m_y1;
+	double b1u = unit->m_b1u;
+	double b1d = unit->m_b1d;
 
 	if ( (lagu == unit->m_lagu) && (lagd == unit->m_lagd) ) {
 		LOOP1(inNumSamples,
-			float y0 = ZXP(in);
+			double y0 = ZXP(in);
 			if ( y0 > y1 )
 				ZXP(out) = y1 = y0 + b1u * (y1 - y0);
 			else
@@ -642,15 +664,15 @@ void LagUD_next(LagUD *unit, int inNumSamples)
 		);
 	} else {
 		unit->m_b1u = lagu == 0.f ? 0.f : exp(log001 / (lagu * unit->mRate->mSampleRate));
-		float b1u_slope = CALCSLOPE(unit->m_b1u, b1u);
+		double b1u_slope = CALCSLOPE(unit->m_b1u, b1u);
 		unit->m_lagu = lagu;
 		unit->m_b1d = lagd == 0.f ? 0.f : exp(log001 / (lagd * unit->mRate->mSampleRate));
-		float b1d_slope = CALCSLOPE(unit->m_b1d, b1d);
+		double b1d_slope = CALCSLOPE(unit->m_b1d, b1d);
 		unit->m_lagd = lagd;
 		LOOP1(inNumSamples,
 			b1u += b1u_slope;
 			b1d += b1d_slope;
-			float y0 = ZXP(in);
+			double y0 = ZXP(in);
 			if ( y0 > y1 )
 				ZXP(out) = y1 = y0 + b1u * (y1 - y0);
 			else
@@ -664,8 +686,8 @@ void LagUD_Ctor(LagUD* unit)
 {
 	SETCALC(LagUD_next);
 
-	unit->m_lagu = 0.f;
-	unit->m_lagd = 0.f;
+	unit->m_lagu = uninitializedControl;
+	unit->m_lagd = uninitializedControl;
 	unit->m_b1u = 0.f;
 	unit->m_b1d = 0.f;
 	unit->m_y1 = ZIN0(0);
@@ -674,30 +696,30 @@ void LagUD_Ctor(LagUD* unit)
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
-void Lag2_next(Lag2 *unit, int inNumSamples)
+static void Lag2_next_k(Lag2 *unit, int inNumSamples)
 {
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 	float lag = ZIN0(1);
 
-	float y1a = unit->m_y1a;
-	float y1b = unit->m_y1b;
-	float b1 = unit->m_b1;
+	double y1a = unit->m_y1a;
+	double y1b = unit->m_y1b;
+	double b1 = unit->m_b1;
 
 	if (lag == unit->m_lag) {
 		LOOP1(inNumSamples,
-			float y0a = ZXP(in);
+			double y0a = ZXP(in);
 			y1a = y0a + b1 * (y1a - y0a);
 			y1b = y1a + b1 * (y1b - y1a);
 			ZXP(out) = y1b;
 		);
 	} else {
 		unit->m_b1 = lag == 0.f ? 0.f : exp(log001 / (lag * unit->mRate->mSampleRate));
-		float b1_slope = CALCSLOPE(unit->m_b1, b1);
+		double b1_slope = CALCSLOPE(unit->m_b1, b1);
 		unit->m_lag = lag;
 		LOOP1(inNumSamples,
 			b1 += b1_slope;
-			float y0a = ZXP(in);
+			double y0a = ZXP(in);
 			y1a = y0a + b1 * (y1a - y0a);
 			y1b = y1a + b1 * (y1b - y1a);
 			ZXP(out) = y1b;
@@ -707,14 +729,60 @@ void Lag2_next(Lag2 *unit, int inNumSamples)
 	unit->m_y1b = zapgremlins(y1b);
 }
 
+static void Lag2_next_i(Lag2 *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float *in = ZIN(0);
+
+	double y1a = unit->m_y1a;
+	double y1b = unit->m_y1b;
+	double b1 = unit->m_b1;
+
+	LOOP1(inNumSamples,
+			double y0a = ZXP(in);
+			y1a = y0a + b1 * (y1a - y0a);
+			y1b = y1a + b1 * (y1b - y1a);
+			ZXP(out) = y1b;
+	);
+	unit->m_y1a = zapgremlins(y1a);
+	unit->m_y1b = zapgremlins(y1b);
+}
+
+static void Lag2_next_1_i(Lag2 *unit, int inNumSamples)
+{
+	double y1a = unit->m_y1a;
+	double y1b = unit->m_y1b;
+	double b1 = unit->m_b1;
+
+	float y0a = ZIN0(0);
+	y1a = y0a + b1 * (y1a - y0a);
+	y1b = y1a + b1 * (y1b - y1a);
+	ZOUT0(0) = y1b;
+
+	unit->m_y1a = zapgremlins(y1a);
+	unit->m_y1b = zapgremlins(y1b);
+}
+
 void Lag2_Ctor(Lag2* unit)
 {
-	SETCALC(Lag2_next);
+	switch (INRATE(1)) {
+	case calc_FullRate:
+	case calc_BufRate:
+		SETCALC(Lag2_next_k);
+		break;
+
+	default:
+		if (BUFLENGTH == 1)
+			SETCALC(Lag2_next_1_i);
+		else
+			SETCALC(Lag2_next_i);
+		break;
+	}
 
-	unit->m_lag = 0.f;
+	unit->m_lag = uninitializedControl;
 	unit->m_b1 = 0.f;
 	unit->m_y1a = unit->m_y1b = ZIN0(0);
-	Lag2_next(unit, 1);
+	Lag2_next_k(unit, 1);
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
@@ -726,14 +794,14 @@ void Lag2UD_next(Lag2UD *unit, int inNumSamples)
 	float lagu = ZIN0(1);
 	float lagd = ZIN0(2);
 
-	float y1a = unit->m_y1a;
-	float y1b = unit->m_y1b;
-	float b1u = unit->m_b1u;
-	float b1d = unit->m_b1d;
+	double y1a = unit->m_y1a;
+	double y1b = unit->m_y1b;
+	double b1u = unit->m_b1u;
+	double b1d = unit->m_b1d;
 
 	if ( (lagu == unit->m_lagu) && (lagd == unit->m_lagd) ) {
 		LOOP1(inNumSamples,
-			float y0a = ZXP(in);
+			double y0a = ZXP(in);
 			if ( y0a > y1a ) {
 				y1a = y0a + b1u * (y1a - y0a);
 			} else {
@@ -747,15 +815,15 @@ void Lag2UD_next(Lag2UD *unit, int inNumSamples)
 		);
 	} else {
 		unit->m_b1u = lagu == 0.f ? 0.f : exp(log001 / (lagu * unit->mRate->mSampleRate));
-		float b1u_slope = CALCSLOPE(unit->m_b1u, b1u);
+		double b1u_slope = CALCSLOPE(unit->m_b1u, b1u);
 		unit->m_lagu = lagu;
 		unit->m_b1d = lagd == 0.f ? 0.f : exp(log001 / (lagd * unit->mRate->mSampleRate));
-		float b1d_slope = CALCSLOPE(unit->m_b1d, b1d);
+		double b1d_slope = CALCSLOPE(unit->m_b1d, b1d);
 		unit->m_lagd = lagd;
 		LOOP1(inNumSamples,
 			b1u += b1u_slope;
 			b1d += b1d_slope;
-			float y0a = ZXP(in);
+			double y0a = ZXP(in);
 			if ( y0a > y1a ) {
 				y1a = y0a + b1u * (y1a - y0a);
 			} else {
@@ -792,14 +860,14 @@ void Lag3_next(Lag3 *unit, int inNumSamples)
 	float *in = ZIN(0);
 	float lag = ZIN0(1);
 
-	float y1a = unit->m_y1a;
-	float y1b = unit->m_y1b;
-	float y1c = unit->m_y1c;
-	float b1 = unit->m_b1;
+	double y1a = unit->m_y1a;
+	double y1b = unit->m_y1b;
+	double y1c = unit->m_y1c;
+	double b1 = unit->m_b1;
 
 	if (lag == unit->m_lag) {
 		LOOP1(inNumSamples,
-			float y0a = ZXP(in);
+			double y0a = ZXP(in);
 			y1a = y0a + b1 * (y1a - y0a);
 			y1b = y1a + b1 * (y1b - y1a);
 			y1c = y1b + b1 * (y1c - y1b);
@@ -807,11 +875,11 @@ void Lag3_next(Lag3 *unit, int inNumSamples)
 		);
 	} else {
 		unit->m_b1 = lag == 0.f ? 0.f : exp(log001 / (lag * unit->mRate->mSampleRate));
-		float b1_slope = CALCSLOPE(unit->m_b1, b1);
+		double b1_slope = CALCSLOPE(unit->m_b1, b1);
 		unit->m_lag = lag;
 		LOOP1(inNumSamples,
 			b1 += b1_slope;
-			float y0a = ZXP(in);
+			double y0a = ZXP(in);
 			y1a = y0a + b1 * (y1a - y0a);
 			y1b = y1a + b1 * (y1b - y1a);
 			y1c = y1b + b1 * (y1c - y1b);
@@ -827,7 +895,7 @@ void Lag3_Ctor(Lag3* unit)
 {
 	SETCALC(Lag3_next);
 
-	unit->m_lag = 0.f;
+	unit->m_lag = uninitializedControl;
 	unit->m_b1 = 0.f;
 	unit->m_y1a = unit->m_y1b = unit->m_y1c = ZIN0(0);
 	Lag3_next(unit, 1);
@@ -842,15 +910,15 @@ void Lag3UD_next(Lag3UD *unit, int inNumSamples)
 	float lagu = ZIN0(1);
 	float lagd = ZIN0(2);
 
-	float y1a = unit->m_y1a;
-	float y1b = unit->m_y1b;
-	float y1c = unit->m_y1c;
-	float b1u = unit->m_b1u;
-	float b1d = unit->m_b1d;
+	double y1a = unit->m_y1a;
+	double y1b = unit->m_y1b;
+	double y1c = unit->m_y1c;
+	double b1u = unit->m_b1u;
+	double b1d = unit->m_b1d;
 
 	if ( (lagu == unit->m_lagu) && (lagd == unit->m_lagd) ) {
 		LOOP1(inNumSamples,
-			float y0a = ZXP(in);
+			double y0a = ZXP(in);
 			if ( y0a > y1a ) {
 				y1a = y0a + b1u * (y1a - y0a);
 			} else {
@@ -870,15 +938,15 @@ void Lag3UD_next(Lag3UD *unit, int inNumSamples)
 		);
 	} else {
 		unit->m_b1u = lagu == 0.f ? 0.f : exp(log001 / (lagu * unit->mRate->mSampleRate));
-		float b1u_slope = CALCSLOPE(unit->m_b1u, b1u);
+		double b1u_slope = CALCSLOPE(unit->m_b1u, b1u);
 		unit->m_lagu = lagu;
 		unit->m_b1d = lagd == 0.f ? 0.f : exp(log001 / (lagd * unit->mRate->mSampleRate));
-		float b1d_slope = CALCSLOPE(unit->m_b1d, b1d);
+		double b1d_slope = CALCSLOPE(unit->m_b1d, b1d);
 		unit->m_lagd = lagd;
 		LOOP1(inNumSamples,
 			b1u += b1u_slope;
 			b1d += b1d_slope;
-			float y0a = ZXP(in);
+			double y0a = ZXP(in);
 			if ( y0a > y1a ) {
 				y1a = y0a + b1u * (y1a - y0a);
 			} else {
@@ -906,8 +974,8 @@ void Lag3UD_Ctor(Lag3UD* unit)
 {
 	SETCALC(Lag3UD_next);
 
-	unit->m_lagu = 0.f;
-	unit->m_lagd = 0.f;
+	unit->m_lagu = uninitializedControl;
+	unit->m_lagd = uninitializedControl;
 	unit->m_b1u = 0.f;
 	unit->m_b1d = 0.f;
 
@@ -1022,11 +1090,11 @@ void OnePole_next_a(OnePole *unit, int inNumSamples)
 	float *in = ZIN(0);
 	float *b1p = ZIN(1);
 
-	float y1 = unit->m_y1;
+	double y1 = unit->m_y1;
 
 	LOOP1(inNumSamples,
-		float y0 = ZXP(in);
-		float b1 = ZXP(b1p);
+		double y0 = ZXP(in);
+		double b1 = ZXP(b1p);
 		ZXP(out) = y1 = y0 + b1 * (y1 - y0);
 	);
 	unit->m_y1 = zapgremlins(y1);
@@ -1038,40 +1106,40 @@ void OnePole_next_k(OnePole *unit, int inNumSamples)
 
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
-	float b1 = unit->m_b1;
+	double b1 = unit->m_b1;
 	unit->m_b1 = ZIN0(1);
 
-	float y1 = unit->m_y1;
+	double y1 = unit->m_y1;
 
 	if (b1 == unit->m_b1) {
 		if (b1 >= 0.f) {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0 + b1 * (y1 - y0);
 			);
 		} else {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0 + b1 * (y1 + y0);
 			);
 		}
 	} else {
-		float b1_slope = CALCSLOPE(unit->m_b1, b1);
+		double b1_slope = CALCSLOPE(unit->m_b1, b1);
 		if (b1 >= 0.f && unit->m_b1 >= 0) {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0 + b1 * (y1 - y0);
 				b1 += b1_slope;
 			);
 		} else if (b1 <= 0.f && unit->m_b1 <= 0) {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0 + b1 * (y1 + y0);
 				b1 += b1_slope;
 			);
 		} else {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = (1.f - std::abs(b1)) * y0 + b1 * y1;
 				b1 += b1_slope;
 			);
@@ -1109,43 +1177,43 @@ void OneZero_next(OneZero* unit, int inNumSamples)
 
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
-	float b1 = unit->m_b1;
+	double b1 = unit->m_b1;
 	unit->m_b1 = ZIN0(1);
 
-	float x1 = unit->m_x1;
+	double x1 = unit->m_x1;
 	if (b1 == unit->m_b1) {
 		if (b1 >= 0.f) {
 			LOOP1(inNumSamples,
-				float x0 = ZXP(in);
+				double x0 = ZXP(in);
 				ZXP(out) = x0 + b1 * (x1 - x0);
 				x1 = x0;
 			);
 		} else {
 			LOOP1(inNumSamples,
-				float x0 = ZXP(in);
+				double x0 = ZXP(in);
 				ZXP(out) = x0 + b1 * (x1 + x0);
 				x1 = x0;
 			);
 		}
 	} else {
-		float b1_slope = CALCSLOPE(unit->m_b1, b1);
+		double b1_slope = CALCSLOPE(unit->m_b1, b1);
 		if (b1 >= 0.f && unit->m_b1 >= 0) {
 			LOOP1(inNumSamples,
-				float x0 = ZXP(in);
+				double x0 = ZXP(in);
 				ZXP(out) = x0 + b1 * (x1 - x0);
 				x1 = x0;
 				b1 += b1_slope;
 			);
 		} else if (b1 <= 0.f && unit->m_b1 <= 0) {
 			LOOP1(inNumSamples,
-				float x0 = ZXP(in);
+				double x0 = ZXP(in);
 				ZXP(out) = x0 + b1 * (x1 + x0);
 				x1 = x0;
 				b1 += b1_slope;
 			);
 		} else {
 			LOOP1(inNumSamples,
-				float x0 = ZXP(in);
+				double x0 = ZXP(in);
 				ZXP(out) = (1.f - std::abs(b1)) * x0 + b1 * x1;
 				x1 = x0;
 				b1 += b1_slope;
@@ -1161,7 +1229,7 @@ void Integrator_Ctor(Integrator* unit)
 {
 	//printf("Integrator_Reset\n");
 	SETCALC(Integrator_next);
-	unit->m_b1 = 0.f;
+	unit->m_b1 = uninitializedControl;
 	unit->m_y1 = 0.f;
 	Integrator_next(unit, 1);
 }
@@ -1172,32 +1240,32 @@ void Integrator_next(Integrator* unit, int inNumSamples)
 
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
-	float b1 = unit->m_b1;
+	double b1 = unit->m_b1;
 	unit->m_b1 = ZIN0(1);
 
-	float y1 = unit->m_y1;
+	double y1 = unit->m_y1;
 
 	if (b1 == unit->m_b1) {
 		if (b1 == 1.f) {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0 + y1;
 			);
 		} else if (b1 == 0.f) {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0;
 			);
 		} else {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0 + b1 * y1;
 			);
 		}
 	} else {
-		float b1_slope = CALCSLOPE(unit->m_b1, b1);
+		double b1_slope = CALCSLOPE(unit->m_b1, b1);
 		LOOP1(inNumSamples,
-			float y0 = ZXP(in);
+			double y0 = ZXP(in);
 			ZXP(out) = y1 = y0 + b1 * y1;
 			b1 += b1_slope;
 		);
@@ -1210,7 +1278,7 @@ void Integrator_next(Integrator* unit, int inNumSamples)
 void Decay_Ctor(Decay* unit)
 {
 	SETCALC(Decay_next);
-	unit->m_decayTime = 0.f;
+	unit->m_decayTime = uninitializedControl;
 	unit->m_b1 = 0.f;
 	unit->m_y1 = 0.f;
 	Decay_next(unit, 1);
@@ -1224,27 +1292,27 @@ void Decay_next(Decay* unit, int inNumSamples)
 	float *in = ZIN(0);
 	float decayTime = ZIN0(1);
 
-	float y1 = unit->m_y1;
-	float b1 = unit->m_b1;
+	double y1 = unit->m_y1;
+	double b1 = unit->m_b1;
 	if (decayTime == unit->m_decayTime) {
 		if (b1 == 0.f) {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0;
 			);
 		} else {
 			LOOP1(inNumSamples,
-				float y0 = ZXP(in);
+				double y0 = ZXP(in);
 				ZXP(out) = y1 = y0 + b1 * y1;
 			);
 		}
 	} else {
 		unit->m_b1 = decayTime == 0.f ? 0.f : exp(log001 / (decayTime * SAMPLERATE));
 		unit->m_decayTime = decayTime;
-		float b1_slope = CALCSLOPE(unit->m_b1, b1);
+		double b1_slope = CALCSLOPE(unit->m_b1, b1);
 		//printf("decayTime %g  %g %g\n", unit->m_decayTime, next_b1, b1);
 		LOOP1(inNumSamples,
-			float y0 = ZXP(in);
+			double y0 = ZXP(in);
 			ZXP(out) = y1 = y0 + b1 * y1;
 			b1 += b1_slope;
 		);
@@ -1281,13 +1349,13 @@ void Decay2_next(Decay2* unit, int inNumSamples)
 	float attackTime = ZIN0(1);
 	float decayTime = ZIN0(2);
 
-	float y1a = unit->m_y1a;
-	float y1b = unit->m_y1b;
-	float b1a = unit->m_b1a;
-	float b1b = unit->m_b1b;
+	double y1a = unit->m_y1a;
+	double y1b = unit->m_y1b;
+	double b1a = unit->m_b1a;
+	double b1b = unit->m_b1b;
 	if (decayTime == unit->m_decayTime && attackTime == unit->m_attackTime) {
 		LOOP1(inNumSamples,
-			float y0 = ZXP(in);
+			double y0 = ZXP(in);
 			y1a = y0 + b1a * y1a;
 			y1b = y0 + b1b * y1b;
 			ZXP(out) = y1a - y1b;
@@ -1295,15 +1363,15 @@ void Decay2_next(Decay2* unit, int inNumSamples)
 	} else {
 		unit->m_decayTime = decayTime;
 		unit->m_attackTime = attackTime;
-		float next_b1a = decayTime  == 0.f ? 0.f : exp(log001 / (decayTime * SAMPLERATE));
-		float next_b1b = attackTime == 0.f ? 0.f : exp(log001 / (attackTime * SAMPLERATE));
+		double next_b1a = decayTime  == 0.f ? 0.f : exp(log001 / (decayTime * SAMPLERATE));
+		double next_b1b = attackTime == 0.f ? 0.f : exp(log001 / (attackTime * SAMPLERATE));
 		unit->m_decayTime = decayTime;
-		float b1a_slope = CALCSLOPE(next_b1a, b1a);
-		float b1b_slope = CALCSLOPE(next_b1b, b1b);
+		double b1a_slope = CALCSLOPE(next_b1a, b1a);
+		double b1b_slope = CALCSLOPE(next_b1b, b1b);
 		unit->m_b1a = next_b1a;
 		unit->m_b1b = next_b1b;
 		LOOP1(inNumSamples,
-			float y0 = ZXP(in);
+			double y0 = ZXP(in);
 			y1a = y0 + b1a * y1a;
 			y1b = y0 + b1b * y1b;
 			ZXP(out) = y1a - y1b;
@@ -1332,10 +1400,15 @@ void LeakDC_next_i_4(LeakDC* unit, int inNumSamples)
 		double x01 = ZXP(in);
 		double x02 = ZXP(in);
 		double x03 = ZXP(in);
-		ZXP(out) = y1 = x00 - x1 + b1 * y1;
-		ZXP(out) = y1 = x01 - x00 + b1 * y1;
-		ZXP(out) = y1 = x02 - x01 + b1 * y1;
-		ZXP(out) = y1 = x03 - x02 + b1 * y1;
+		float out0 = y1 = x00 - x1 + b1 * y1;
+		float out1 = y1 = x01 - x00 + b1 * y1;
+		float out2 = y1 = x02 - x01 + b1 * y1;
+		float out3 = y1 = x03 - x02 + b1 * y1;
+
+		ZXP(out) = out0;
+		ZXP(out) = out1;
+		ZXP(out) = out2;
+		ZXP(out) = out3;
 
 		x1 = x03;
 	);
@@ -1435,8 +1508,8 @@ void TwoPole_Ctor(TwoPole *unit)
 	unit->m_b2 = 0.f;
 	unit->m_y1 = 0.f;
 	unit->m_y2 = 0.f;
-	unit->m_freq = 0.f;
-	unit->m_reson = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_reson = uninitializedControl;
 	PUSH_LOOPVALS
 	TwoPole_next(unit, 1);
 	POP_LOOPVALS
@@ -1452,17 +1525,17 @@ void TwoPole_next(TwoPole* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float reson = ZIN0(2);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
 
 	if (freq != unit->m_freq || reson != unit->m_reson) {
-		float b1 = unit->m_b1;
-		float b2 = unit->m_b2;
-		float b1_next = 2.f * reson * cos(freq * unit->mRate->mRadiansPerSample);
-		float b2_next = -(reson * reson);
-		float b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
+		double b1 = unit->m_b1;
+		double b2 = unit->m_b2;
+		double b1_next = 2 * reson * cos(freq * unit->mRate->mRadiansPerSample);
+		double b2_next = -(reson * reson);
+		double b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			ZXP(out) = y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = y2 = ZXP(in) + b1 * y0 + b2 * y1;
@@ -1479,11 +1552,11 @@ void TwoPole_next(TwoPole* unit, int inNumSamples)
 
 		unit->m_freq = freq;
 		unit->m_reson = reson;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_b1 = b1_next;
+		unit->m_b2 = b2_next;
 	} else {
-		float b1 = unit->m_b1;
-		float b2 = unit->m_b2;
+		double b1 = unit->m_b1;
+		double b2 = unit->m_b2;
 		LOOP(unit->mRate->mFilterLoops,
 			ZXP(out) = y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = y2 = ZXP(in) + b1 * y0 + b2 * y1;
@@ -1511,8 +1584,8 @@ void TwoZero_Ctor(TwoZero* unit)
 	unit->m_b2 = 0.f;
 	unit->m_x1 = 0.f;
 	unit->m_x2 = 0.f;
-	unit->m_freq = 0.f;
-	unit->m_reson = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_reson = uninitializedControl;
 	PUSH_LOOPVALS
 	TwoZero_next(unit, 1);
 	POP_LOOPVALS
@@ -1527,17 +1600,17 @@ void TwoZero_next(TwoZero* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float reson = ZIN0(2);
 
-	float x0;
-	float x1 = unit->m_x1;
-	float x2 = unit->m_x2;
+	double x0;
+	double x1 = unit->m_x1;
+	double x2 = unit->m_x2;
 
 	if (freq != unit->m_freq || reson != unit->m_reson) {
-		float b1 = unit->m_b1;
-		float b2 = unit->m_b2;
-		float b1_next = -2.f * reson * cos(freq * unit->mRate->mRadiansPerSample);
-		float b2_next = (reson * reson);
-		float b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
+		double b1 = unit->m_b1;
+		double b2 = unit->m_b2;
+		double b1_next = -2 * reson * cos(freq * unit->mRate->mRadiansPerSample);
+		double b2_next = (reson * reson);
+		double b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			x0 = ZXP(in);
 			ZXP(out) = x0 + b1 * x1 + b2 * x2;
@@ -1558,11 +1631,11 @@ void TwoZero_next(TwoZero* unit, int inNumSamples)
 
 		unit->m_freq = freq;
 		unit->m_reson = reson;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_b1 = b1_next;
+		unit->m_b2 = b2_next;
 	} else {
-		float b1 = unit->m_b1;
-		float b2 = unit->m_b2;
+		double b1 = unit->m_b1;
+		double b2 = unit->m_b2;
 		LOOP(unit->mRate->mFilterLoops,
 			x0 = ZXP(in);
 			ZXP(out) = x0 + b1 * x1 + b2 * x2;
@@ -1596,8 +1669,8 @@ void APF_Ctor(APF* unit)
 	unit->m_y2 = 0.f;
 	unit->m_x1 = 0.f;
 	unit->m_x2 = 0.f;
-	unit->m_freq = 0.f;
-	unit->m_reson = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_reson = uninitializedControl;
 	PUSH_LOOPVALS
 	APF_next(unit, 1);
 	POP_LOOPVALS
@@ -1613,19 +1686,19 @@ void APF_next(APF* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float reson = ZIN0(2);
 
-	float x0, y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float x1 = unit->m_x1;
-	float x2 = unit->m_x2;
+	double x0, y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double x1 = unit->m_x1;
+	double x2 = unit->m_x2;
 
 	if (freq != unit->m_freq || reson != unit->m_reson) {
-		float b1 = unit->m_b1;
-		float b2 = unit->m_b2;
-		float b1_next = 2.f * reson * cos(freq * unit->mRate->mRadiansPerSample);
-		float b2_next = -(reson * reson);
-		float b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
+		double b1 = unit->m_b1;
+		double b2 = unit->m_b2;
+		double b1_next = 2.f * reson * cos(freq * unit->mRate->mRadiansPerSample);
+		double b2_next = -(reson * reson);
+		double b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			x0 = ZXP(in);
 			ZXP(out) = y0 = x0 + b1 * (y1 - x1) + b2 * (y2 - x2);
@@ -1648,18 +1721,24 @@ void APF_next(APF* unit, int inNumSamples)
 
 		unit->m_freq = freq;
 		unit->m_reson = reson;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_b1 = b1_next;
+		unit->m_b2 = b2_next;
 	} else {
-		float b1 = unit->m_b1;
-		float b2 = unit->m_b2;
+		double b1 = unit->m_b1;
+		double b2 = unit->m_b2;
 		LOOP(unit->mRate->mFilterLoops,
-			x0 = ZXP(in);
-			ZXP(out) = y0 = x0 + b1 * (y1 - x1) + b2 * (y2 - x2);
-			x2 = ZXP(in);
-			ZXP(out) = y2 = x2 + b1 * (y0 - x0) + b2 * (y2 - x1);
-			x1 = ZXP(in);
-			ZXP(out) = y1 = x1 + b1 * (y2 - x2) + b2 * (y2 - x0);
+			float in0 = ZXP(in);
+			float in1 = ZXP(in);
+			float in2 = ZXP(in);
+			x0 = in0;
+			float out0 = y0 = x0 + b1 * (y1 - x1) + b2 * (y2 - x2);
+			x2 = in1;
+			float out1 = y2 = x2 + b1 * (y0 - x0) + b2 * (y2 - x1);
+			x1 = in2;
+			float out2 = y1 = x1 + b1 * (y2 - x2) + b2 * (y2 - x0);
+			ZXP(out) = out0;
+			ZXP(out) = out1;
+			ZXP(out) = out2;
 		);
 		LOOP(unit->mRate->mFilterRemain,
 			x0 = ZXP(in);
@@ -1694,22 +1773,27 @@ void LPZ1_next(LPZ1* unit, int inNumSamples)
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 
-	float x0;
-	float x1 = unit->m_x1;
+	double x0;
+	double x1 = unit->m_x1;
 
 	LOOP(inNumSamples >> 2,
 		x0 = ZXP(in);
-		ZXP(out) = 0.5f * (x0 + x1);
+		float out0 = 0.5 * (x0 + x1);
 		x1 = ZXP(in);
-		ZXP(out) = 0.5f * (x1 + x0);
+		float out1 = 0.5 * (x1 + x0);
 		x0 = ZXP(in);
-		ZXP(out) = 0.5f * (x0 + x1);
+		float out2 = 0.5 * (x0 + x1);
 		x1 = ZXP(in);
-		ZXP(out) = 0.5f * (x1 + x0);
+		float out3 = 0.5 * (x1 + x0);
+
+		ZXP(out) = out0;
+		ZXP(out) = out1;
+		ZXP(out) = out2;
+		ZXP(out) = out3;
 	);
 	LOOP(inNumSamples & 3,
 		x0 = ZXP(in);
-		ZXP(out) = 0.5f * (x0 + x1);
+		ZXP(out) = 0.5 * (x0 + x1);
 		x1 = x0;
 	);
 
@@ -1735,19 +1819,24 @@ void HPZ1_next(HPZ1* unit, int inNumSamples)
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 
-	float x0;
-	float x1 = unit->m_x1;
+	double x0;
+	double x1 = unit->m_x1;
 
 	LOOP(inNumSamples >> 2,
 		x0 = ZXP(in);
-		ZXP(out) = 0.5f * (x0 - x1);
+		float out0 = 0.5 * (x0 - x1);
 		x1 = ZXP(in);
-		ZXP(out) = 0.5f * (x1 - x0);
+		float out1 = 0.5 * (x1 - x0);
 		x0 = ZXP(in);
-		ZXP(out) = 0.5f * (x0 - x1);
+		float out2 = 0.5 * (x0 - x1);
 		x1 = ZXP(in);
-		ZXP(out) = 0.5f * (x1 - x0);
-	);
+		float out3 = 0.5 * (x1 - x0);
+
+		ZXP(out) = out0;
+		ZXP(out) = out1;
+		ZXP(out) = out2;
+		ZXP(out) = out3;
+		);
 	LOOP(inNumSamples & 3,
 		x0 = ZXP(in);
 		//printf("%d %d %g %g\n", this, inNumSamples, x0, x1);
@@ -1777,11 +1866,11 @@ void Slope_next(Slope* unit, int inNumSamples)
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 
-	float x1 = unit->m_x1;
+	double x1 = unit->m_x1;
 
-	float sr = SAMPLERATE;
+	double sr = SAMPLERATE;
 	LOOP1(inNumSamples,
-		float x0 = ZXP(in);
+		double x0 = ZXP(in);
 		ZXP(out) = sr * (x0 - x1);
 		x1 = x0;
 	);
@@ -1889,9 +1978,9 @@ void Delay2_next(Delay2* unit, int inNumSamples)
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 
-	float x0;
-	float x1 = unit->m_x1;
-	float x2 = unit->m_x2;
+	double x0;
+	double x1 = unit->m_x1;
+	double x2 = unit->m_x2;
 
 	LOOP(unit->mRate->mFilterLoops,
 		x0 = ZXP(in);
@@ -1933,21 +2022,25 @@ void LPZ2_next(LPZ2* unit, int inNumSamples)
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 
-	float x0;
-	float x1 = unit->m_x1;
-	float x2 = unit->m_x2;
+	double x0;
+	double x1 = unit->m_x1;
+	double x2 = unit->m_x2;
 
 	LOOP(unit->mRate->mFilterLoops,
 		x0 = ZXP(in);
-		ZXP(out) = (x0 + 2.f * x1 + x2) * 0.25f;
+		float out0  = (x0 + 2.0 * x1 + x2) * 0.25;
 		x2 = ZXP(in);
-		ZXP(out) = (x2 + 2.f * x0 + x1) * 0.25f;
+		float out1 = (x2 + 2.0 * x0 + x1) * 0.25;
 		x1 = ZXP(in);
-		ZXP(out) = (x1 + 2.f * x2 + x0) * 0.25f;
+		float out2 = (x1 + 2.0 * x2 + x0) * 0.25;
+
+		ZXP(out) = out0;
+		ZXP(out) = out1;
+		ZXP(out) = out2;
 	);
 	LOOP(unit->mRate->mFilterRemain,
 		x0 = ZXP(in);
-		ZXP(out) = (x0 + 2.f * x1 + x2) * 0.25f;
+		ZXP(out) = (x0 + 2. * x1 + x2) * 0.25;
 		x2 = x1;
 		x1 = x0;
 	);
@@ -1976,21 +2069,24 @@ void HPZ2_next(HPZ2* unit, int inNumSamples)
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 
-	float x0;
-	float x1 = unit->m_x1;
-	float x2 = unit->m_x2;
+	double x0;
+	double x1 = unit->m_x1;
+	double x2 = unit->m_x2;
 
 	LOOP(unit->mRate->mFilterLoops,
 		x0 = ZXP(in);
-		ZXP(out) = (x0 - 2.f * x1 + x2) * 0.25f;
+		float out0 = (x0 - 2.0 * x1 + x2) * 0.25;
 		x2 = ZXP(in);
-		ZXP(out) = (x2 - 2.f * x0 + x1) * 0.25f;
+		float out1 = (x2 - 2.0 * x0 + x1) * 0.25;
 		x1 = ZXP(in);
-		ZXP(out) = (x1 - 2.f * x2 + x0) * 0.25f;
+		float out2 = (x1 - 2.0 * x2 + x0) * 0.25;
+		ZXP(out) = out0;
+		ZXP(out) = out1;
+		ZXP(out) = out2;
 	);
 	LOOP(unit->mRate->mFilterRemain,
 		x0 = ZXP(in);
-		ZXP(out) = (x0 - 2.f * x1 + x2) * 0.25f;
+		ZXP(out) = (x0 - 2.0 * x1 + x2) * 0.25;
 		x2 = x1;
 		x1 = x0;
 	);
@@ -2019,21 +2115,21 @@ void BPZ2_next(BPZ2* unit, int inNumSamples)
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 
-	float x0;
-	float x1 = unit->m_x1;
-	float x2 = unit->m_x2;
+	double x0;
+	double x1 = unit->m_x1;
+	double x2 = unit->m_x2;
 
 	LOOP(unit->mRate->mFilterLoops,
 		x0 = ZXP(in);
-		ZXP(out) = (x0 - x2) * 0.5f;
+		ZXP(out) = (x0 - x2) * 0.5;
 		x2 = ZXP(in);
-		ZXP(out) = (x2 - x1) * 0.5f;
+		ZXP(out) = (x2 - x1) * 0.5;
 		x1 = ZXP(in);
-		ZXP(out) = (x1 - x0) * 0.5f;
+		ZXP(out) = (x1 - x0) * 0.5;
 	);
 	LOOP(unit->mRate->mFilterRemain,
 		x0 = ZXP(in);
-		ZXP(out) = (x0 - x2) * 0.5f;
+		ZXP(out) = (x0 - x2) * 0.5;
 		x2 = x1;
 		x1 = x0;
 	);
@@ -2062,21 +2158,21 @@ void BRZ2_next(BRZ2* unit, int inNumSamples)
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
 
-	float x0;
-	float x1 = unit->m_x1;
-	float x2 = unit->m_x2;
+	double x0;
+	double x1 = unit->m_x1;
+	double x2 = unit->m_x2;
 
 	LOOP(unit->mRate->mFilterLoops,
 		x0 = ZXP(in);
-		ZXP(out) = (x0 + x2) * 0.5f;
+		ZXP(out) = (x0 + x2) * 0.5;
 		x2 = ZXP(in);
-		ZXP(out) = (x2 + x1) * 0.5f;
+		ZXP(out) = (x2 + x1) * 0.5;
 		x1 = ZXP(in);
-		ZXP(out) = (x1 + x0) * 0.5f;
+		ZXP(out) = (x1 + x0) * 0.5;
 	);
 	LOOP(unit->mRate->mFilterRemain,
 		x0 = ZXP(in);
-		ZXP(out) = (x0 + x2) * 0.5f;
+		ZXP(out) = (x0 + x2) * 0.5;
 		x2 = x1;
 		x1 = x0;
 	);
@@ -2100,14 +2196,15 @@ void Slew_next(Slew* unit, int inNumSamples)
 {
 	//printf("Slew_next_a\n");
 
+	float sampleDur = unit->mRate->mSampleDur;
 	float *out = ZOUT(0);
 	float *in = ZIN(0);
-	float upf = ZIN0(1) * unit->mRate->mSampleDur;
-	float dnf = 0.f - ZIN0(2) * unit->mRate->mSampleDur;
-	float level = unit->mLevel;
+	float upf = ZIN0(1) * sampleDur;
+	float dnf = 0.f - ZIN0(2) * sampleDur;
+	double level = unit->mLevel;
 	LOOP1(inNumSamples,
-		float slope = ZXP(in) - level;
-		level += sc_clip(slope,dnf,upf);
+		double slope = ZXP(in) - level;
+		level += sc_clip(slope, dnf, upf);
 		ZXP(out) = level;
 	);
 	unit->mLevel = level;
@@ -2147,8 +2244,8 @@ void RLPF_Ctor(RLPF* unit)
 	unit->m_b2 = 0.f;
 	unit->m_y1 = 0.f;
 	unit->m_y2 = 0.f;
-	unit->m_freq = 0.f;
-	unit->m_reson = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_reson = uninitializedControl;
 	RLPF_next_1(unit, 1);
 }
 
@@ -2162,39 +2259,39 @@ void RLPF_next(RLPF* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float reson = ZIN0(2);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || reson != unit->m_reson) {
 
-		float qres = sc_max(0.001, reson);
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
+		double qres = sc_max(0.001, reson);
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
 
-		float D = tan(pfreq * qres * 0.5);
-		float C = ((1.f-D)/(1.f+D));
-		float cosf = cos(pfreq);
+		double D = tan(pfreq * qres * 0.5);
+		double C = ((1.0-D)/(1.0+D));
+		double cosf = cos(pfreq);
 
-		float next_b1 = (1.f + C) * cosf;
-		float next_b2 = -C;
-		float next_a0 = (1.f + C - next_b1) * .25;
+		double next_b1 = (1.0 + C) * cosf;
+		double next_b2 = -C;
+		double next_a0 = (1.0 + C - next_b1) * .25;
 		//post("%g %g %g   %g %g   %g %g %g   %g %g\n", *freq, pfreq, qres, D, C, cosf, next_b1, next_b2, next_a0, y1, y2);
 
-		float a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
-		float b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
+		double a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
+		double b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = a0 * ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = y0 + 2.f * y1 + y2;
+			ZXP(out) = y0 + 2.0 * y1 + y2;
 
 			y2 = a0 * ZXP(in) + b1 * y0 + b2 * y1;
-			ZXP(out) = y2 + 2.f * y0 + y1;
+			ZXP(out) = y2 + 2.0 * y0 + y1;
 
 			y1 = a0 * ZXP(in) + b1 * y2 + b2 * y0;
-			ZXP(out) = y1 + 2.f * y2 + y0;
+			ZXP(out) = y1 + 2.0 * y2 + y0;
 
 			a0 += a0_slope;
 			b1 += b1_slope;
@@ -2202,30 +2299,30 @@ void RLPF_next(RLPF* unit, int inNumSamples)
 		);
 		LOOP(unit->mRate->mFilterRemain,
 			y0 = a0 * ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = y0 + 2.f * y1 + y2;
+			ZXP(out) = y0 + 2.0 * y1 + y2;
 			y2 = y1;
 			y1 = y0;
 		);
 
 		unit->m_freq = freq;
 		unit->m_reson = reson;
-		unit->m_a0 = a0;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_a0 = next_a0;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = a0 * ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = y0 + 2.f * y1 + y2;
+			ZXP(out) = y0 + 2.0 * y1 + y2;
 
 			y2 = a0 * ZXP(in) + b1 * y0 + b2 * y1;
-			ZXP(out) = y2 + 2.f * y0 + y1;
+			ZXP(out) = y2 + 2.0 * y0 + y1;
 
 			y1 = a0 * ZXP(in) + b1 * y2 + b2 * y0;
-			ZXP(out) = y1 + 2.f * y2 + y0;
+			ZXP(out) = y1 + 2.0 * y2 + y0;
 		);
 		LOOP(unit->mRate->mFilterRemain,
 			y0 = a0 * ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = y0 + 2.f * y1 + y2;
+			ZXP(out) = y0 + 2.0 * y1 + y2;
 			y2 = y1;
 			y1 = y0;
 		);
@@ -2243,27 +2340,27 @@ void RLPF_next_1(RLPF* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float reson = ZIN0(2);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || reson != unit->m_reson) {
-		float qres = sc_max(0.001f, reson);
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
+		double qres = sc_max(0.001f, reson);
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
 
-		float D = tan(pfreq * qres * 0.5f);
-		float C = ((1.f-D)/(1.f+D));
-		float cosf = cos(pfreq);
+		double D = tan(pfreq * qres * 0.5f);
+		double C = ((1.f-D)/(1.f+D));
+		double cosf = cos(pfreq);
 
-		b1 = (1.f + C) * cosf;
+		b1 = (1.0 + C) * cosf;
 		b2 = -C;
-		a0 = (1.f + C - b1) * .25f;
+		a0 = (1.0 + C - b1) * .25;
 
 		y0 = a0 * in + b1 * y1 + b2 * y2;
-		ZOUT0(0) = y0 + 2.f * y1 + y2;
+		ZOUT0(0) = y0 + 2.0 * y1 + y2;
 		y2 = y1;
 		y1 = y0;
 
@@ -2274,7 +2371,7 @@ void RLPF_next_1(RLPF* unit, int inNumSamples)
 		unit->m_b2 = b2;
 	} else {
 		y0 = a0 * in + b1 * y1 + b2 * y2;
-		ZOUT0(0) = y0 + 2.f * y1 + y2;
+		ZOUT0(0) = y0 + 2.0 * y1 + y2;
 		y2 = y1;
 		y1 = y0;
 	}
@@ -2298,8 +2395,8 @@ void RHPF_Ctor(RHPF* unit)
 	unit->m_b2 = 0.;
 	unit->m_y1 = 0.;
 	unit->m_y2 = 0.;
-	unit->m_freq = 0.f;
-	unit->m_reson = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_reson = uninitializedControl;
 	RHPF_next_1(unit, 1);
 }
 
@@ -2320,16 +2417,16 @@ void RHPF_next(RHPF* unit, int inNumSamples)
 	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || reson != unit->m_reson) {
-		float qres = sc_max(0.001f, reson);
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
+		double qres = sc_max(0.001f, reson);
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
 
 		double D = tan(pfreq * qres * 0.5f);
-		double C = ((1.-D)/(1.+D));
+		double C = ((1.0-D)/(1.0+D));
 		double cosf = cos(pfreq);
 
-		double next_b1 = (1. + C) * cosf;
+		double next_b1 = (1.0 + C) * cosf;
 		double next_b2 = -C;
-		double next_a0 = (1. + C + next_b1) * .25;
+		double next_a0 = (1.0 + C + next_b1) * .25;
 
 		//post("%g %g %g   %g %g   %g %g %g   %g %g\n", *freq, pfreq, qres, D, C, cosf, next_b1, next_b2, next_a0, y1, y2);
 
@@ -2338,13 +2435,13 @@ void RHPF_next(RHPF* unit, int inNumSamples)
 		double b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			double y0 = a0 * ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = y0 - 2.f * y1 + y2;
+			ZXP(out) = y0 - 2.0 * y1 + y2;
 
 			y2 = a0 * ZXP(in) + b1 * y0 + b2 * y1;
-			ZXP(out) = y2 - 2.f * y0 + y1;
+			ZXP(out) = y2 - 2.0 * y0 + y1;
 
 			y1 = a0 * ZXP(in) + b1 * y2 + b2 * y0;
-			ZXP(out) = y1 - 2.f * y2 + y0;
+			ZXP(out) = y1 - 2.0 * y2 + y0;
 
 			a0 += a0_slope;
 			b1 += b1_slope;
@@ -2352,30 +2449,30 @@ void RHPF_next(RHPF* unit, int inNumSamples)
 		);
 		LOOP(unit->mRate->mFilterRemain,
 			double y0 = a0 * ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = y0 - 2.f * y1 + y2;
+			ZXP(out) = y0 - 2.0 * y1 + y2;
 			y2 = y1;
 			y1 = y0;
 		);
 
 		unit->m_freq = freq;
 		unit->m_reson = reson;
-		unit->m_a0 = a0;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_a0 = next_a0;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			double y0 = a0 * ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = y0 - 2.f * y1 + y2;
+			ZXP(out) = y0 - 2.0 * y1 + y2;
 
 			y2 = a0 * ZXP(in) + b1 * y0 + b2 * y1;
-			ZXP(out) = y2 - 2.f * y0 + y1;
+			ZXP(out) = y2 - 2.0 * y0 + y1;
 
 			y1 = a0 * ZXP(in) + b1 * y2 + b2 * y0;
-			ZXP(out) = y1 - 2.f * y2 + y0;
+			ZXP(out) = y1 - 2.0 * y2 + y0;
 		);
 		LOOP(unit->mRate->mFilterRemain,
 			double y0 = a0 * ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = y0 - 2.f * y1 + y2;
+			ZXP(out) = y0 - 2.0 * y1 + y2;
 			y2 = y1;
 			y1 = y0;
 		);
@@ -2399,8 +2496,8 @@ void RHPF_next_1(RHPF* unit, int inNumSamples)
 	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || reson != unit->m_reson) {
-		float qres = sc_max(0.001f, reson);
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
+		double qres = sc_max(0.001f, reson);
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
 
 		double D = tan(pfreq * qres * 0.5f);
 		double C = ((1.-D)/(1.+D));
@@ -2411,7 +2508,7 @@ void RHPF_next_1(RHPF* unit, int inNumSamples)
 		a0 = (1. + C + b1) * .25;
 
 		double y0 = a0 * in + b1 * y1 + b2 * y2;
-		ZOUT0(0) = y0 - 2.f * y1 + y2;
+		ZOUT0(0) = y0 - 2.0 * y1 + y2;
 		y2 = y1;
 		y1 = y0;
 
@@ -2422,7 +2519,7 @@ void RHPF_next_1(RHPF* unit, int inNumSamples)
 		unit->m_b2 = b2;
 	} else {
 		double y0 = a0 * in + b1 * y1 + b2 * y2;
-		ZOUT0(0) = y0 - 2.f * y1 + y2;
+		ZOUT0(0) = y0 - 2.0 * y1 + y2;
 		y2 = y1;
 		y1 = y0;
 	}
@@ -2445,7 +2542,7 @@ void LPF_Ctor(LPF* unit)
 	unit->m_b2 = 0.f;
 	unit->m_y1 = 0.f;
 	unit->m_y2 = 0.f;
-	unit->m_freq = 0.f;
+	unit->m_freq = uninitializedControl;
 	LPF_next_1(unit, 1);
 }
 
@@ -2458,35 +2555,35 @@ void LPF_next(LPF* unit, int inNumSamples)
 	float *in = ZIN(0);
 	float freq = ZIN0(1);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq) {
 
-		float pfreq = freq * unit->mRate->mRadiansPerSample * 0.5;
+		double pfreq = freq * unit->mRate->mRadiansPerSample * 0.5;
 
-		float C = 1.f / tan(pfreq);
-		float C2 = C * C;
-		float sqrt2C = C * sqrt2_f;
-		float next_a0 = 1.f / (1.f + sqrt2C + C2);
-		float next_b1 = -2.f * (1.f - C2) * next_a0 ;
-		float next_b2 = -(1.f - sqrt2C + C2) * next_a0;
+		double C = 1.f / tan(pfreq);
+		double C2 = C * C;
+		double sqrt2C = C * sqrt2_f;
+		double next_a0 = 1.f / (1.f + sqrt2C + C2);
+		double next_b1 = -2.f * (1.f - C2) * next_a0 ;
+		double next_b2 = -(1.f - sqrt2C + C2) * next_a0;
 
 		//post("%g %g %g   %g %g   %g %g %g   %g %g\n", *freq, pfreq, qres, D, C, cosf, next_b1, next_b2, next_a0, y1, y2);
 
-		float a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
-		float b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
+		double a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
+		double b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = a0 * (y0 + 2.f * y1 + y2);
+			ZXP(out) = a0 * (y0 + 2. * y1 + y2);
 
 			y2 = ZXP(in) + b1 * y0 + b2 * y1;
-			ZXP(out) = a0 * (y2 + 2.f * y0 + y1);
+			ZXP(out) = a0 * (y2 + 2. * y0 + y1);
 
 			y1 = ZXP(in) + b1 * y2 + b2 * y0;
 			ZXP(out) = a0 * (y1 + 2.f * y2 + y0);
@@ -2497,29 +2594,32 @@ void LPF_next(LPF* unit, int inNumSamples)
 		);
 		LOOP(unit->mRate->mFilterRemain,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = a0 * (y0 + 2.f * y1 + y2);
+			ZXP(out) = a0 * (y0 + 2. * y1 + y2);
 			y2 = y1;
 			y1 = y0;
 		);
 
 		unit->m_freq = freq;
-		unit->m_a0 = a0;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_a0 = next_a0;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = a0 * (y0 + 2.f * y1 + y2);
+			float out0 = a0 * (y0 + 2. * y1 + y2);
 
 			y2 = ZXP(in) + b1 * y0 + b2 * y1;
-			ZXP(out) = a0 * (y2 + 2.f * y0 + y1);
+			float out1 = a0 * (y2 + 2. * y0 + y1);
 
 			y1 = ZXP(in) + b1 * y2 + b2 * y0;
-			ZXP(out) = a0 * (y1 + 2.f * y2 + y0);
+			float out2 = a0 * (y1 + 2. * y2 + y0);
+			ZXP(out) = out0;
+			ZXP(out) = out1;
+			ZXP(out) = out2;
 		);
 		LOOP(unit->mRate->mFilterRemain,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = a0 * (y0 + 2.f * y1 + y2);
+			ZXP(out) = a0 * (y0 + 2. * y1 + y2);
 			y2 = y1;
 			y1 = y0;
 		);
@@ -2534,26 +2634,26 @@ void LPF_next_1(LPF* unit, int inNumSamples)
 	float in = ZIN0(0);
 	float freq = ZIN0(1);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq) {
 
-		float pfreq = freq * unit->mRate->mRadiansPerSample * 0.5;
+		double pfreq = freq * unit->mRate->mRadiansPerSample * 0.5;
 
-		float C = 1.f / tan(pfreq);
-		float C2 = C * C;
-		float sqrt2C = C * sqrt2_f;
+		double C = 1.f / tan(pfreq);
+		double C2 = C * C;
+		double sqrt2C = C * sqrt2_f;
 		a0 = 1.f / (1.f + sqrt2C + C2);
 		b1 = -2.f * (1.f - C2) * a0 ;
 		b2 = -(1.f - sqrt2C + C2) * a0;
 
 		y0 = in + b1 * y1 + b2 * y2;
-		ZOUT0(0) = a0 * (y0 + 2.f * y1 + y2);
+		ZOUT0(0) = a0 * (y0 + 2. * y1 + y2);
 		y2 = y1;
 		y1 = y0;
 
@@ -2564,7 +2664,7 @@ void LPF_next_1(LPF* unit, int inNumSamples)
 	} else {
 
 		y0 = in + b1 * y1 + b2 * y2;
-		ZOUT0(0) = a0 * (y0 + 2.f * y1 + y2);
+		ZOUT0(0) = a0 * (y0 + 2. * y1 + y2);
 		y2 = y1;
 		y1 = y0;
 
@@ -2587,7 +2687,7 @@ void HPF_Ctor(HPF* unit)
 	unit->m_b2 = 0.;
 	unit->m_y1 = 0.;
 	unit->m_y2 = 0.;
-	unit->m_freq = -1e6f;
+	unit->m_freq = uninitializedControl;
 
 	HPF_next_1(unit, 1);
 }
@@ -2606,7 +2706,7 @@ void HPF_next(HPF* unit, int inNumSamples)
 	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq) {
-		float pfreq = freq * unit->mRate->mRadiansPerSample * 0.5;
+		double pfreq = freq * unit->mRate->mRadiansPerSample * 0.5;
 
 		double C = tan(pfreq);
 		double C2 = C * C;
@@ -2642,9 +2742,9 @@ void HPF_next(HPF* unit, int inNumSamples)
 		);
 
 		unit->m_freq = freq;
-		unit->m_a0 = a0;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_a0 = next_a0;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			double y0 = ZXP(in) + b1 * y1 + b2 * y2;
@@ -2679,7 +2779,7 @@ void HPF_next_1(HPF* unit, int inNumSamples)
 	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq) {
-		float pfreq = freq * unit->mRate->mRadiansPerSample * 0.5f;
+		double pfreq = freq * unit->mRate->mRadiansPerSample * 0.5f;
 
 		double C = tan(pfreq);
 		double C2 = C * C;
@@ -2723,8 +2823,8 @@ void BPF_Ctor(BPF* unit)
 	unit->m_b2 = 0.f;
 	unit->m_y1 = 0.f;
 	unit->m_y2 = 0.f;
-	unit->m_freq = 0.f;
-	unit->m_bw = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_bw = uninitializedControl;
 
 	BPF_next_1(unit, 1);
 }
@@ -2738,28 +2838,28 @@ void BPF_next(BPF* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float bw = ZIN0(2);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || bw != unit->m_bw) {
 
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
-		float pbw   = bw   * pfreq * 0.5f;
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
+		double pbw   = bw   * pfreq * 0.5f;
 
-		float C = 1.f / tan(pbw);
-		float D = 2.f * cos(pfreq);
+		double C = 1.f / tan(pbw);
+		double D = 2.f * cos(pfreq);
 
-		float next_a0 = 1.f / (1.f + C);
-		float next_b1 = C * D * next_a0 ;
-		float next_b2 = (1.f - C) * next_a0;
+		double next_a0 = 1.f / (1.f + C);
+		double next_b1 = C * D * next_a0 ;
+		double next_b2 = (1.f - C) * next_a0;
 
-		float a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
-		float b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
+		double a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
+		double b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = a0 * (y0 - y2);
@@ -2783,9 +2883,9 @@ void BPF_next(BPF* unit, int inNumSamples)
 
 		unit->m_freq = freq;
 		unit->m_bw = bw;
-		unit->m_a0 = a0;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_a0 = next_a0;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
@@ -2816,24 +2916,24 @@ void BPF_next_1(BPF* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float bw = ZIN0(2);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || bw != unit->m_bw) {
 
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
-		float pbw   = bw   * pfreq * 0.5;
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
+		double pbw   = bw   * pfreq * 0.5;
 
-		float C = 1.f / tan(pbw);
-		float D = 2.f * cos(pfreq);
+		double C = 1.f / tan(pbw);
+		double D = 2.f * cos(pfreq);
 
-		float a0 = 1.f / (1.f + C);
-		float b1 = C * D * a0 ;
-		float b2 = (1.f - C) * a0;
+		double a0 = 1.f / (1.f + C);
+		double b1 = C * D * a0 ;
+		double b2 = (1.f - C) * a0;
 
 		y0 = in + b1 * y1 + b2 * y2;
 		ZOUT0(0) = a0 * (y0 - y2);
@@ -2871,8 +2971,8 @@ void BRF_Ctor(BRF* unit)
 	unit->m_b2 = 0.f;
 	unit->m_y1 = 0.f;
 	unit->m_y2 = 0.f;
-	unit->m_freq = 0.f;
-	unit->m_bw = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_bw = uninitializedControl;
 	BRF_next_1(unit, 1);
 }
 
@@ -2886,28 +2986,28 @@ void BRF_next(BRF* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float bw = ZIN0(2);
 
-	float ay;
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float a1 = unit->m_a1;
-	float b2 = unit->m_b2;
+	double ay;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double a1 = unit->m_a1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || bw != unit->m_bw) {
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
-		float pbw   = bw   * pfreq * 0.5f;
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
+		double pbw   = bw   * pfreq * 0.5f;
 
-		float C = tan(pbw);
-		float D = 2.f * cos(pfreq);
+		double C = tan(pbw);
+		double D = 2.f * cos(pfreq);
 
-		float next_a0 = 1.f / (1.f + C);
-		float next_a1 = -D * next_a0;
-		float next_b2 = (1.f - C) * next_a0;
+		double next_a0 = 1.f / (1.f + C);
+		double next_a1 = -D * next_a0;
+		double next_b2 = (1.f - C) * next_a0;
 
-		float a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
-		float a1_slope = (next_a1 - a1) * unit->mRate->mFilterSlope;
-		float b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
+		double a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
+		double a1_slope = (next_a1 - a1) * unit->mRate->mFilterSlope;
+		double b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
 
 		LOOP(unit->mRate->mFilterLoops,
 			ay = a1 * y1;
@@ -2936,9 +3036,9 @@ void BRF_next(BRF* unit, int inNumSamples)
 
 		unit->m_freq = freq;
 		unit->m_bw = bw;
-		unit->m_a0 = a0;
-		unit->m_a1 = a1;
-		unit->m_b2 = b2;
+		unit->m_a0 = next_a0;
+		unit->m_a1 = next_a1;
+		unit->m_b2 = next_b2;
 	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			ay = a1 * y1;
@@ -2975,24 +3075,24 @@ void BRF_next_1(BRF* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float bw = ZIN0(2);
 
-	float ay;
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float a1 = unit->m_a1;
-	float b2 = unit->m_b2;
+	double ay;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double a1 = unit->m_a1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || bw != unit->m_bw) {
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
-		float pbw   = bw   * pfreq * 0.5f;
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
+		double pbw   = bw   * pfreq * 0.5f;
 
-		float C = tan(pbw);
-		float D = 2.f * cos(pfreq);
+		double C = tan(pbw);
+		double D = 2.f * cos(pfreq);
 
-		float a0 = 1.f / (1.f + C);
-		float a1 = -D * a0;
-		float b2 = (1.f - C) * a0;
+		double a0 = 1.f / (1.f + C);
+		double a1 = -D * a0;
+		double b2 = (1.f - C) * a0;
 
 		ay = a1 * y1;
 		y0 = in - ay - b2 * y2;
@@ -3030,9 +3130,9 @@ void MidEQ_Ctor(MidEQ* unit)
 	unit->m_b2 = 0.f;
 	unit->m_y1 = 0.f;
 	unit->m_y2 = 0.f;
-	unit->m_freq = 0.f;
-	unit->m_bw = 0.f;
-	unit->m_db = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_bw = uninitializedControl;
+	unit->m_db = uninitializedControl;
 	PUSH_LOOPVALS
 	MidEQ_next(unit, 1);
 	POP_LOOPVALS
@@ -3049,29 +3149,29 @@ void MidEQ_next(MidEQ* unit, int inNumSamples)
 	float bw = ZIN0(2);
 	float db = ZIN0(3);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 	if (freq != unit->m_freq || bw != unit->m_bw || db != unit->m_db) {
 
-		float amp = sc_dbamp(db) - 1.0f;
-		float pfreq = freq * unit->mRate->mRadiansPerSample;
-		float pbw   = bw   * pfreq * 0.5f;
+		double amp = sc_dbamp(db) - 1.0f;
+		double pfreq = freq * unit->mRate->mRadiansPerSample;
+		double pbw   = bw   * pfreq * 0.5f;
 
-		float C = 1.f / tan(pbw);
-		float D = 2.f * cos(pfreq);
+		double C = 1.f / tan(pbw);
+		double D = 2.f * cos(pfreq);
 
-		float next_a0 = 1.f / (1.f + C);
-		float next_b1 = C * D * next_a0 ;
-		float next_b2 = (1.f - C) * next_a0;
+		double next_a0 = 1.f / (1.f + C);
+		double next_b1 = C * D * next_a0 ;
+		double next_b2 = (1.f - C) * next_a0;
 		next_a0 *= amp;
-		float a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
-		float b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
-		float zin;
+		double a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
+		double b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
+		double zin;
 		LOOP(unit->mRate->mFilterLoops,
 			zin = ZXP(in);
 			y0 = zin + b1 * y1 + b2 * y2;
@@ -3100,11 +3200,11 @@ void MidEQ_next(MidEQ* unit, int inNumSamples)
 		unit->m_freq = freq;
 		unit->m_bw = bw;
 		unit->m_db = db;
-		unit->m_a0 = a0;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_a0 = next_a0;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 	} else {
-		float zin;
+		double zin;
 		LOOP(unit->mRate->mFilterLoops,
 			zin = ZXP(in);
 			y0 = zin + b1 * y1 + b2 * y2;
@@ -3218,7 +3318,7 @@ void Resonz_Ctor(Resonz* unit)
 	unit->m_b2 = 0.f;
 	unit->m_y1 = 0.f;
 	unit->m_y2 = 0.f;
-	unit->m_freq = 0.f;
+	unit->m_freq = uninitializedControl;
 	unit->m_rq = 0.f;
 	PUSH_LOOPVALS
 	Resonz_next(unit, 1);
@@ -3235,26 +3335,26 @@ void Resonz_next(Resonz* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float rq = ZIN0(2);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || rq != unit->m_rq) {
-		float ffreq = freq * unit->mRate->mRadiansPerSample;
-		float B = ffreq * rq;
-		float R = 1.f - B * 0.5f;
-		float twoR = 2.f * R;
-		float R2 = R * R;
-		float cost = (twoR * cos(ffreq)) / (1.f + R2);
-		float b1_next = twoR * cost;
-		float b2_next = -R2;
-		float a0_next = (1.f - R2) * 0.5f;
-		float a0_slope = (a0_next - a0) * unit->mRate->mFilterSlope;
-		float b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
+		double ffreq = freq * unit->mRate->mRadiansPerSample;
+		double B = ffreq * rq;
+		double R = 1.f - B * 0.5f;
+		double twoR = 2.f * R;
+		double R2 = R * R;
+		double cost = (twoR * cos(ffreq)) / (1.f + R2);
+		double b1_next = twoR * cost;
+		double b2_next = -R2;
+		double a0_next = (1.f - R2) * 0.5f;
+		double a0_slope = (a0_next - a0) * unit->mRate->mFilterSlope;
+		double b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = a0 * (y0 - y2);
@@ -3314,7 +3414,7 @@ void Ringz_Ctor(Ringz* unit)
 	unit->m_b2 = 0.f;
 	unit->m_y1 = 0.f;
 	unit->m_y2 = 0.f;
-	unit->m_freq = 0.f;
+	unit->m_freq = uninitializedControl;
 	unit->m_decayTime = 0.f;
 	PUSH_LOOPVALS
 	Ringz_next(unit, 1);
@@ -3331,23 +3431,23 @@ void Ringz_next(Ringz* unit, int inNumSamples)
 	float freq = ZIN0(1);
 	float decayTime = ZIN0(2);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = 0.5f;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = 0.5f;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
 
 	if (freq != unit->m_freq || decayTime != unit->m_decayTime) {
-		float ffreq = freq * unit->mRate->mRadiansPerSample;
-		float R = decayTime == 0.f ? 0.f : exp(log001/(decayTime * SAMPLERATE));
-		float twoR = 2.f * R;
-		float R2 = R * R;
-		float cost = (twoR * cos(ffreq)) / (1.f + R2);
-		float b1_next = twoR * cost;
-		float b2_next = -R2;
-		float b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
-		float b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
+		double ffreq = freq * unit->mRate->mRadiansPerSample;
+		double R = decayTime == 0.f ? 0.f : exp(log001/(decayTime * SAMPLERATE));
+		double twoR = 2.f * R;
+		double R2 = R * R;
+		double cost = (twoR * cos(ffreq)) / (1.f + R2);
+		double b1_next = twoR * cost;
+		double b2_next = -R2;
+		double b1_slope = (b1_next - b1) * unit->mRate->mFilterSlope;
+		double b2_slope = (b2_next - b2) * unit->mRate->mFilterSlope;
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = a0 * (y0 - y2);
@@ -3413,9 +3513,9 @@ void Formlet_Ctor(Formlet* unit)
 	unit->m_b12 = 0.f;
 	unit->m_y11 = 0.f;
 	unit->m_y12 = 0.f;
-	unit->m_freq = 0.f;
-	unit->m_attackTime = 0.f;
-	unit->m_decayTime = 0.f;
+	unit->m_freq = uninitializedControl;
+	unit->m_attackTime = uninitializedControl;
+	unit->m_decayTime = uninitializedControl;
 	Formlet_next_1(unit, 1);
 }
 
@@ -3429,55 +3529,55 @@ void Formlet_next(Formlet* unit, int inNumSamples)
 	float attackTime = ZIN0(2);
 	float decayTime = ZIN0(3);
 
-	float y00;
-	float y10;
-	float y01 = unit->m_y01;
-	float y11 = unit->m_y11;
-	float y02 = unit->m_y02;
-	float y12 = unit->m_y12;
+	double y00;
+	double y10;
+	double y01 = unit->m_y01;
+	double y11 = unit->m_y11;
+	double y02 = unit->m_y02;
+	double y12 = unit->m_y12;
 
-	float b01 = unit->m_b01;
-	float b11 = unit->m_b11;
-	float b02 = unit->m_b02;
-	float b12 = unit->m_b12;
-	float ain;
+	double b01 = unit->m_b01;
+	double b11 = unit->m_b11;
+	double b02 = unit->m_b02;
+	double b12 = unit->m_b12;
+	double ain;
 
 	if (freq != unit->m_freq || decayTime != unit->m_decayTime || attackTime != unit->m_attackTime) {
-		float ffreq = freq * unit->mRate->mRadiansPerSample;
+		double ffreq = freq * unit->mRate->mRadiansPerSample;
 
-		float R = decayTime == 0.f ? 0.f : exp(log001/(decayTime * SAMPLERATE));
-		float twoR = 2.f * R;
-		float R2 = R * R;
-		float cost = (twoR * cos(ffreq)) / (1.f + R2);
-		float b01_next = twoR * cost;
-		float b02_next = -R2;
-		float b01_slope = (b01_next - b01) * unit->mRate->mFilterSlope;
-		float b02_slope = (b02_next - b02) * unit->mRate->mFilterSlope;
+		double R = decayTime == 0.f ? 0.f : exp(log001/(decayTime * SAMPLERATE));
+		double twoR = 2.f * R;
+		double R2 = R * R;
+		double cost = (twoR * cos(ffreq)) / (1.f + R2);
+		double b01_next = twoR * cost;
+		double b02_next = -R2;
+		double b01_slope = (b01_next - b01) * unit->mRate->mFilterSlope;
+		double b02_slope = (b02_next - b02) * unit->mRate->mFilterSlope;
 
 		R = attackTime == 0.f ? 0.f : exp(log001/(attackTime * SAMPLERATE));
 		twoR = 2.f * R;
 		R2 = R * R;
 		cost = (twoR * cos(ffreq)) / (1.f + R2);
-		float b11_next = twoR * cost;
-		float b12_next = -R2;
-		float b11_slope = (b11_next - b11) * unit->mRate->mFilterSlope;
-		float b12_slope = (b12_next - b12) * unit->mRate->mFilterSlope;
+		double b11_next = twoR * cost;
+		double b12_next = -R2;
+		double b11_slope = (b11_next - b11) * unit->mRate->mFilterSlope;
+		double b12_slope = (b12_next - b12) * unit->mRate->mFilterSlope;
 
 		LOOP(unit->mRate->mFilterLoops,
 			ain = ZXP(in);
 			y00 = ain + b01 * y01 + b02 * y02;
 			y10 = ain + b11 * y11 + b12 * y12;
-			ZXP(out) = 0.25f * ((y00 - y02) - (y10 - y12));
+			ZXP(out) = 0.25 * ((y00 - y02) - (y10 - y12));
 
 			ain = ZXP(in);
 			y02 = ain + b01 * y00 + b02 * y01;
 			y12 = ain + b11 * y10 + b12 * y11;
-			ZXP(out) = 0.25f * ((y02 - y01) - (y12 - y11));
+			ZXP(out) = 0.25 * ((y02 - y01) - (y12 - y11));
 
 			ain = ZXP(in);
 			y01 = ain + b01 * y02 + b02 * y00;
 			y11 = ain + b11 * y12 + b12 * y10;
-			ZXP(out) = 0.25f * ((y01 - y00) - (y11 - y10));
+			ZXP(out) = 0.25 * ((y01 - y00) - (y11 - y10));
 
 			b01 += b01_slope;
 			b02 += b02_slope;
@@ -3488,7 +3588,7 @@ void Formlet_next(Formlet* unit, int inNumSamples)
 			ain = ZXP(in);
 			y00 = ain + b01 * y01 + b02 * y02;
 			y10 = ain + b11 * y11 + b12 * y12;
-			ZXP(out) = 0.25f * ((y00 - y02) - (y10 - y12));
+			ZXP(out) = 0.25 * ((y00 - y02) - (y10 - y12));
 			y02 = y01;
 			y01 = y00;
 			y12 = y11;
@@ -3507,23 +3607,23 @@ void Formlet_next(Formlet* unit, int inNumSamples)
 			ain = ZXP(in);
 			y00 = ain + b01 * y01 + b02 * y02;
 			y10 = ain + b11 * y11 + b12 * y12;
-			ZXP(out) = 0.25f * ((y00 - y02) - (y10 - y12));
+			ZXP(out) = 0.25 * ((y00 - y02) - (y10 - y12));
 
 			ain = ZXP(in);
 			y02 = ain + b01 * y00 + b02 * y01;
 			y12 = ain + b11 * y10 + b12 * y11;
-			ZXP(out) = 0.25f * ((y02 - y01) - (y12 - y11));
+			ZXP(out) = 0.25 * ((y02 - y01) - (y12 - y11));
 
 			ain = ZXP(in);
 			y01 = ain + b01 * y02 + b02 * y00;
 			y11 = ain + b11 * y12 + b12 * y10;
-			ZXP(out) = 0.25f * ((y01 - y00) - (y11 - y10));
+			ZXP(out) = 0.25 * ((y01 - y00) - (y11 - y10));
 		);
 		LOOP(unit->mRate->mFilterRemain,
 			ain = ZXP(in);
 			y00 = ain + b01 * y01 + b02 * y02;
 			y10 = ain + b11 * y11 + b12 * y12;
-			ZXP(out) = 0.25f * ((y00 - y02) - (y10 - y12));
+			ZXP(out) = 0.25 * ((y00 - y02) - (y10 - y12));
 			y02 = y01;
 			y01 = y00;
 			y12 = y11;
@@ -3545,26 +3645,26 @@ void Formlet_next_1(Formlet* unit, int inNumSamples)
 	float attackTime = ZIN0(2);
 	float decayTime = ZIN0(3);
 
-	float y00;
-	float y10;
-	float y01 = unit->m_y01;
-	float y11 = unit->m_y11;
-	float y02 = unit->m_y02;
-	float y12 = unit->m_y12;
+	double y00;
+	double y10;
+	double y01 = unit->m_y01;
+	double y11 = unit->m_y11;
+	double y02 = unit->m_y02;
+	double y12 = unit->m_y12;
 
-	float b01 = unit->m_b01;
-	float b11 = unit->m_b11;
-	float b02 = unit->m_b02;
-	float b12 = unit->m_b12;
-	float ain;
+	double b01 = unit->m_b01;
+	double b11 = unit->m_b11;
+	double b02 = unit->m_b02;
+	double b12 = unit->m_b12;
+	double ain;
 
 	if (freq != unit->m_freq || decayTime != unit->m_decayTime || attackTime != unit->m_attackTime) {
-		float ffreq = freq * unit->mRate->mRadiansPerSample;
+		double ffreq = freq * unit->mRate->mRadiansPerSample;
 
-		float R = decayTime == 0.f ? 0.f : exp(log001/(decayTime * SAMPLERATE));
-		float twoR = 2.f * R;
-		float R2 = R * R;
-		float cost = (twoR * cos(ffreq)) / (1.f + R2);
+		double R = decayTime == 0.f ? 0.f : exp(log001/(decayTime * SAMPLERATE));
+		double twoR = 2.f * R;
+		double R2 = R * R;
+		double cost = (twoR * cos(ffreq)) / (1.f + R2);
 		b01 = twoR * cost;
 		b02 = -R2;
 
@@ -3641,9 +3741,9 @@ void FOS_next_a(FOS* unit, int inNumSamples)
 	float *a1 = ZIN(2);
 	float *b1 = ZIN(3);
 
-	float y1 = unit->m_y1;
+	double y1 = unit->m_y1;
 	LOOP1(inNumSamples,
-		float y0 = ZXP(in) + ZXP(b1) * y1;
+		double y0 = ZXP(in) + ZXP(b1) * y1;
 		ZXP(out) = ZXP(a0) * y0 + ZXP(a1) * y1;
 		y1 = y0;
 	);
@@ -3657,9 +3757,9 @@ void FOS_next_1(FOS* unit, int inNumSamples)
 	float a1 = ZIN0(2);
 	float b1 = ZIN0(3);
 
-	float y1 = unit->m_y1;
+	double y1 = unit->m_y1;
 
-	float y0 = in + b1 * y1;
+	double y0 = in + b1 * y1;
 	ZOUT0(0) = a0 * y0 + a1 * y1;
 	y1 = y0;
 
@@ -3675,15 +3775,15 @@ void FOS_next_k(FOS* unit, int inNumSamples)
 	float next_a1 = ZIN0(2);
 	float next_b1 = ZIN0(3);
 
-	float y1 = unit->m_y1;
-	float a0 = unit->m_a0;
-	float a1 = unit->m_a1;
-	float b1 = unit->m_b1;
-	float a0_slope = CALCSLOPE(next_a0, a0);
-	float a1_slope = CALCSLOPE(next_a1, a1);
-	float b1_slope = CALCSLOPE(next_b1, b1);
+	double y1 = unit->m_y1;
+	double a0 = unit->m_a0;
+	double a1 = unit->m_a1;
+	double b1 = unit->m_b1;
+	double a0_slope = CALCSLOPE(next_a0, a0);
+	double a1_slope = CALCSLOPE(next_a1, a1);
+	double b1_slope = CALCSLOPE(next_b1, b1);
 	LOOP1(inNumSamples,
-		float y0 = ZXP(in) + b1 * y1;
+		double y0 = ZXP(in) + b1 * y1;
 		ZXP(out) = a0 * y0 + a1 * y1;
 		y1 = y0;
 
@@ -3738,9 +3838,9 @@ void SOS_next_a(SOS *unit, int inNumSamples)
 	float *b1 = ZIN(4);
 	float *b2 = ZIN(5);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
 	LOOP(unit->mRate->mFilterLoops,
 		y0 = ZXP(in) + ZXP(b1) * y1 + ZXP(b2) * y2;
 		ZXP(out) = ZXP(a0) * y0 + ZXP(a1) * y1 + ZXP(a2) * y2;
@@ -3772,19 +3872,19 @@ void SOS_next_k(SOS *unit, int inNumSamples)
 	float next_b1 = ZIN0(4);
 	float next_b2 = ZIN0(5);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
-	float a0 = unit->m_a0;
-	float a1 = unit->m_a1;
-	float a2 = unit->m_a2;
-	float b1 = unit->m_b1;
-	float b2 = unit->m_b2;
-	float a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
-	float a1_slope = (next_a1 - a1) * unit->mRate->mFilterSlope;
-	float a2_slope = (next_a2 - a2) * unit->mRate->mFilterSlope;
-	float b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
-	float b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	double a0 = unit->m_a0;
+	double a1 = unit->m_a1;
+	double a2 = unit->m_a2;
+	double b1 = unit->m_b1;
+	double b2 = unit->m_b2;
+	double a0_slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
+	double a1_slope = (next_a1 - a1) * unit->mRate->mFilterSlope;
+	double a2_slope = (next_a2 - a2) * unit->mRate->mFilterSlope;
+	double b1_slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
+	double b2_slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
 	LOOP(unit->mRate->mFilterLoops,
 		y0 = ZXP(in) + b1 * y1 + b2 * y2;
 		ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
@@ -3826,9 +3926,9 @@ void SOS_next_1(SOS *unit, int inNumSamples)	// optimized for SOS.kr
 	float b1 = ZIN0(4);
 	float b2 = ZIN0(5);
 
-	float y0;
-	float y1 = unit->m_y1;
-	float y2 = unit->m_y2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
 
 	y0 = in + b1 * y1 + b2 * y2;
 	ZOUT0(0) = a0 * y0 + a1 * y1 + a2 * y2;
@@ -4382,19 +4482,19 @@ void Hilbert_Ctor(Hilbert *unit)
 	// calculate coefs based on SampleRate, store in the struct
 	SETCALC(Hilbert_next);
 
-	float gamconst = (15.0f * pi_f) / SAMPLERATE;
-	float gamma01 = gamconst * 0.3609f;
-	float gamma02 = gamconst * 2.7412f;
-	float gamma03 = gamconst * 11.1573f;
-	float gamma04 = gamconst * 44.7581f;
-	float gamma05 = gamconst * 179.6242f;
-	float gamma06 = gamconst * 798.4578f;
-	float gamma07 = gamconst * 1.2524f;
-	float gamma08 = gamconst * 5.5671f;
-	float gamma09 = gamconst * 22.3423f;
-	float gamma10 = gamconst * 89.6271f;
-	float gamma11 = gamconst * 364.7914f;
-	float gamma12 = gamconst * 2770.1114f;
+	double gamconst = (15.0f * pi_f) / SAMPLERATE;
+	double gamma01 = gamconst * 0.3609f;
+	double gamma02 = gamconst * 2.7412f;
+	double gamma03 = gamconst * 11.1573f;
+	double gamma04 = gamconst * 44.7581f;
+	double gamma05 = gamconst * 179.6242f;
+	double gamma06 = gamconst * 798.4578f;
+	double gamma07 = gamconst * 1.2524f;
+	double gamma08 = gamconst * 5.5671f;
+	double gamma09 = gamconst * 22.3423f;
+	double gamma10 = gamconst * 89.6271f;
+	double gamma11 = gamconst * 364.7914f;
+	double gamma12 = gamconst * 2770.1114f;
 	unit->m_coefs[0] = (gamma01 - 1.f) / (gamma01 + 1.f);
 	unit->m_coefs[1] = (gamma02 - 1.f) / (gamma02 + 1.f);
 	unit->m_coefs[2] = (gamma03 - 1.f) / (gamma03 + 1.f);
@@ -4425,11 +4525,11 @@ void Hilbert_next(Hilbert *unit, int inNumSamples)
 		coefs[i] = unit->m_coefs[i];
 	}
 
-	float ay1, ay2, ay3, ay4, ay5, ay6;
-	float ay7, ay8, ay9, ay10, ay11, ay12;
+	double ay1, ay2, ay3, ay4, ay5, ay6;
+	double ay7, ay8, ay9, ay10, ay11, ay12;
 
-	float y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
-	float y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
+	double y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
+	double y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
 
 	LOOP1(inNumSamples,
 		float thisin = ZXP(in);
@@ -4472,19 +4572,19 @@ void FreqShift_Ctor(FreqShift *unit)
 	unit->m_cpstoinc = tableSizeSin * SAMPLEDUR * 65536.;
 	unit->m_phasein = IN0(2);
 
-	float gamconst = (15.0 * pi) / SAMPLERATE;
-	float gamma01 = gamconst * 0.3609f;
-	float gamma02 = gamconst * 2.7412f;
-	float gamma03 = gamconst * 11.1573f;
-	float gamma04 = gamconst * 44.7581f;
-	float gamma05 = gamconst * 179.6242f;
-	float gamma06 = gamconst * 798.4578f;
-	float gamma07 = gamconst * 1.2524f;
-	float gamma08 = gamconst * 5.5671f;
-	float gamma09 = gamconst * 22.3423f;
-	float gamma10 = gamconst * 89.6271f;
-	float gamma11 = gamconst * 364.7914f;
-	float gamma12 = gamconst * 2770.1114f;
+	double gamconst = (15.0 * pi) / SAMPLERATE;
+	double gamma01 = gamconst * 0.3609f;
+	double gamma02 = gamconst * 2.7412f;
+	double gamma03 = gamconst * 11.1573f;
+	double gamma04 = gamconst * 44.7581f;
+	double gamma05 = gamconst * 179.6242f;
+	double gamma06 = gamconst * 798.4578f;
+	double gamma07 = gamconst * 1.2524f;
+	double gamma08 = gamconst * 5.5671f;
+	double gamma09 = gamconst * 22.3423f;
+	double gamma10 = gamconst * 89.6271f;
+	double gamma11 = gamconst * 364.7914f;
+	double gamma12 = gamconst * 2770.1114f;
 	unit->m_coefs[0] = (gamma01 - 1.f) / (gamma01 + 1.f);
 	unit->m_coefs[1] = (gamma02 - 1.f) / (gamma02 + 1.f);
 	unit->m_coefs[2] = (gamma03 - 1.f) / (gamma03 + 1.f);
@@ -4511,8 +4611,8 @@ void FreqShift_next_kk(FreqShift *unit, int inNumSamples)
 	float outcos, outsin; // the sample by sample output of the Hilbert
 	float outsinosc, outsinoscHalfPi; // the samples from the oscil.
 	int32 halfPi = (int32)(unit->m_radtoinc * (0.5 * pi));
-	float y1[12];
-	float coefs[12];
+	double y1[12];
+	double coefs[12];
 
 	float *table0 = ft->mSineWavetable;
 	float *table1 = table0 + 1;
@@ -4529,11 +4629,11 @@ void FreqShift_next_kk(FreqShift *unit, int inNumSamples)
 		coefs[i] = unit->m_coefs[i];
 	}
 
-	float ay1, ay2, ay3, ay4, ay5, ay6;
-	float ay7, ay8, ay9, ay10, ay11, ay12;
+	double ay1, ay2, ay3, ay4, ay5, ay6;
+	double ay7, ay8, ay9, ay10, ay11, ay12;
 
-	float y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
-	float y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
+	double y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
+	double y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
 
 	LOOP1(inNumSamples,
 		float thisin = ZXP(in);
@@ -4566,8 +4666,8 @@ void FreqShift_next_aa(FreqShift *unit, int inNumSamples)
 	float outcos, outsin; // the sample by sample output of the Hilbert
 	float outsinosc, outsinoscHalfPi; // the samples from the oscil.
 	int32 halfPi = (int32)(unit->m_radtoinc * (0.5 * pi));
-	float y1[12];
-	float coefs[12];
+	double y1[12];
+	double coefs[12];
 
 	float *table0 = ft->mSineWavetable;
 	float *table1 = table0 + 1;
@@ -4580,11 +4680,11 @@ void FreqShift_next_aa(FreqShift *unit, int inNumSamples)
 		coefs[i] = unit->m_coefs[i];
 	}
 
-	float ay1, ay2, ay3, ay4, ay5, ay6;
-	float ay7, ay8, ay9, ay10, ay11, ay12;
+	double ay1, ay2, ay3, ay4, ay5, ay6;
+	double ay7, ay8, ay9, ay10, ay11, ay12;
 
-	float y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
-	float y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
+	double y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
+	double y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
 
 	LOOP1(inNumSamples,
 		float thisin = ZXP(in);
@@ -4617,8 +4717,8 @@ void FreqShift_next_ak(FreqShift *unit, int inNumSamples)
 	float outcos, outsin; // the sample by sample output of the Hilbert
 	float outsinosc, outsinoscHalfPi; // the samples from the oscil.
 	int32 halfPi = (int32)(unit->m_radtoinc * (0.5 * pi));
-	float y1[12];
-	float coefs[12];
+	double y1[12];
+	double coefs[12];
 
 	float *table0 = ft->mSineWavetable;
 	float *table1 = table0 + 1;
@@ -4633,11 +4733,11 @@ void FreqShift_next_ak(FreqShift *unit, int inNumSamples)
 		coefs[i] = unit->m_coefs[i];
 	}
 
-	float ay1, ay2, ay3, ay4, ay5, ay6;
-	float ay7, ay8, ay9, ay10, ay11, ay12;
+	double ay1, ay2, ay3, ay4, ay5, ay6;
+	double ay7, ay8, ay9, ay10, ay11, ay12;
 
-	float y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
-	float y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
+	double y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
+	double y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
 
 	LOOP1(inNumSamples,
 		float thisin = ZXP(in);
@@ -4672,14 +4772,13 @@ void FreqShift_next_ka(FreqShift *unit, int inNumSamples)
 	float outcos, outsin; // the sample by sample output of the Hilbert
 	float outsinosc, outsinoscHalfPi; // the samples from the oscil.
 	int32 halfPi = (int32)(unit->m_radtoinc * (0.5 * pi));
-	float y1[12];
-	float coefs[12];
+	double y1[12];
+	double coefs[12];
 
 	float *table0 = ft->mSineWavetable;
 	float *table1 = table0 + 1;
 	int32 lomask = unit->m_lomask;
 	int32 phase = unit->m_phase;
-	float phasemod = unit->m_phasein;
 
 	int32 freq = (int32)(unit->m_cpstoinc * freqin);
 
@@ -4689,11 +4788,11 @@ void FreqShift_next_ka(FreqShift *unit, int inNumSamples)
 		coefs[i] = unit->m_coefs[i];
 	}
 
-	float ay1, ay2, ay3, ay4, ay5, ay6;
-	float ay7, ay8, ay9, ay10, ay11, ay12;
+	double ay1, ay2, ay3, ay4, ay5, ay6;
+	double ay7, ay8, ay9, ay10, ay11, ay12;
 
-	float y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
-	float y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
+	double y0_1, y0_2, y0_3, y0_4, y0_5, y0_6;
+	double y0_7, y0_8, y0_9, y0_10, y0_11, y0_12;
 
 	LOOP1(inNumSamples,
 		float thisin = ZXP(in);
@@ -4752,8 +4851,8 @@ void MoogFF_Ctor(MoogFF* unit)
 	SETCALC(MoogFF_next);
 
 	// initialize the unit generator state variables.
-	unit->m_freq = -10000.3f; // Force the freq to update on first run
-	unit->m_T = 1.0 / SAMPLERATE;
+	unit->m_freq = uninitializedControl;
+	unit->m_k    = IN0(2);
 	unit->m_s1 = 0.f;
 	unit->m_s2 = 0.f;
 	unit->m_s3 = 0.f;
@@ -4772,60 +4871,93 @@ void MoogFF_next(MoogFF *unit, int inNumSamples)
 	k = k > 4.f? 4.f : (k<0.f ? 0.f : k);
 
 	// Load state from the struct
-	float s1 = unit->m_s1;
-	float s2 = unit->m_s2;
-	float s3 = unit->m_s3;
-	float s4 = unit->m_s4;
-	float freq = unit->m_freq;///
-	double T = unit->m_T;
+	double s1 = unit->m_s1;
+	double s2 = unit->m_s2;
+	double s3 = unit->m_s3;
+	double s4 = unit->m_s4;
 
 	// Reset filter state if requested
 	if(IN0(3)>0)
 		s1 = s2 = s3 = s4 = 0.f;
 
-	double wcD=unit->m_wcD;
-	float a1 = unit->m_a1, b0 = unit->m_b0; // Filter coefficient parameters
-	float o, u; // System's null response, loop input
+	double a1 = unit->m_a1, b0 = unit->m_b0; // Filter coefficient parameters
+	double o, u; // System's null response, loop input
 
 	// Update filter coefficients, but only if freq changes since it involves some expensive operations
-	if(freq != IN0(1)) {
-		freq = IN0(1);
+
+	float freqIn = IN0(1);
+	if(unit->m_freq != freqIn) {
 		//Print("Updated freq to %g\n", freq);
-		wcD = 2.0 * tan(T * PI * freq) * SAMPLERATE;
+		double wcD=unit->m_wcD;
+		double T = SAMPLEDUR;
+		wcD = 2.0 * tan ( T * PI * freqIn ) * SAMPLERATE;
 		if(wcD<0)
 			wcD = 0; // Protect against negative cutoff freq
 		double TwcD = T*wcD;
 		b0 = (float)(TwcD/(TwcD + 2.));
 		a1 = (float)((TwcD - 2.)/(TwcD + 2.));
-		unit->m_freq = freq;
+		unit->m_freq = freqIn;
 		unit->m_b0 = b0;
 		unit->m_a1 = a1;
 		unit->m_wcD = wcD;
 	}
 
-	LOOP1(inNumSamples,
-		// compute loop values
-		o = s4 + b0*(s3 + b0*(s2 + b0*s1));
-		float ins = ZXP(in);
-		float outs = (b0*b0*b0*b0*ins + o)/(1.f + b0*b0*b0*b0*k);
-		ZXP(out) = outs;
-		u = ins - k*outs;
-
-		// update 1st order filter states
-		float past = u;
-		float future = b0*past + s1;
-		s1 = b0*past - a1*future;
-
-		past = future;
-		future = b0*past + s2;
-		s2 = b0*past - a1*future;
-
-		past = future;
-		future = b0*past + s3;
-		s3 = b0*past - a1*future;
-
-		s4 = b0*future - a1*outs;
-	)
+	if (unit->m_k == k) {
+		LOOP1(inNumSamples,
+			// compute loop values
+			o = s4 + b0*(s3 + b0*(s2 + b0*s1));
+			double ins = ZXP(in);
+			double outs = (b0*b0*b0*b0*ins + o) * sc_reciprocal(1.0 + b0*b0*b0*b0*k);
+			ZXP(out) = outs;
+			u = ins - k*outs;
+
+			// update 1st order filter states
+			double past = u;
+			double future = b0*past + s1;
+			s1 = b0*past - a1*future;
+
+			past = future;
+			future = b0*past + s2;
+			s2 = b0*past - a1*future;
+
+			past = future;
+			future = b0*past + s3;
+			s3 = b0*past - a1*future;
+
+			s4 = b0*future - a1*outs;
+		)
+	} else {
+		float new_k = k;
+		float old_k = unit->m_k;
+		float slope_k = CALCSLOPE(new_k, old_k);
+		k = old_k;
+
+		LOOP1(inNumSamples,
+			// compute loop values
+			o = s4 + b0*(s3 + b0*(s2 + b0*s1));
+			double ins = ZXP(in);
+			double outs = (b0*b0*b0*b0*ins + o) * sc_reciprocal(1.0 + b0*b0*b0*b0*k);
+			ZXP(out) = outs;
+			u = ins - k*outs;
+
+			// update 1st order filter states
+			double past = u;
+			double future = b0*past + s1;
+			s1 = b0*past - a1*future;
+
+			past = future;
+			future = b0*past + s2;
+			s2 = b0*past - a1*future;
+
+			past = future;
+			future = b0*past + s3;
+			s3 = b0*past - a1*future;
+
+			s4 = b0*future - a1*outs;
+			k += slope_k;
+		);
+		unit->m_k = new_k;
+	}
 
 	// Store state
 	unit->m_s1 = s1;
@@ -4951,11 +5083,9 @@ void BLowPass_next_kk(BLowPass *unit, int inNumSamples)
 	float nextrq = ZIN0(2);
 
 	double a0, a1, a2, b1, b2;
-	double nexta0, nexta1, nexta2, nextb1, nextb2, nextw0, nextcosw0, nexti, nextalpha, nextb0rz;
 	double y0;
 	double y1 = unit->m_y1;
 	double y2 = unit->m_y2;
-	double a0slope, a1slope, a2slope, b1slope, b2slope;
 
 	a0 = unit->m_a0;
 	a1 = unit->m_a1;
@@ -4964,21 +5094,24 @@ void BLowPass_next_kk(BLowPass *unit, int inNumSamples)
 	b2 = unit->m_b2;
 
 	if ((unit->m_freq != nextfreq) || (unit->m_rq != nextrq)){
-		nextw0 = twopi * (double)nextfreq * SAMPLEDUR;
-		nextcosw0 = cos(nextw0);
-		nexti = 1. - nextcosw0;
-		nextalpha = sin(nextw0) * 0.5 * (double)nextrq;
-		nextb0rz = 1. / (1. + nextalpha);
-		nexta0 = nexti * 0.5 * nextb0rz;
-		nexta1 = nexti * nextb0rz;
-		nexta2 = nexta0;
-		nextb1 = nextcosw0 * 2. * nextb0rz;
-		nextb2 = ((1. - nextalpha) * -nextb0rz);
-		a0slope = (nexta0 - a0) * unit->mRate->mFilterSlope;
-		a1slope = (nexta1 - a1) * unit->mRate->mFilterSlope;
-		a2slope = (nexta2 - a2) * unit->mRate->mFilterSlope;
-		b1slope = (nextb1 - b1) * unit->mRate->mFilterSlope;
-		b2slope = (nextb2 - b2) * unit->mRate->mFilterSlope;
+		double a0slope, a1slope, a2slope, b1slope, b2slope;
+		double next_a0, next_a1, next_a2, next_b1, next_b2, next_w0, next_cosw0, next_i, next_alpha, next_b0rz;
+
+		next_w0 = twopi * (double)nextfreq * SAMPLEDUR;
+		next_cosw0 = cos(next_w0);
+		next_i = 1. - next_cosw0;
+		next_alpha = sin(next_w0) * 0.5 * (double)nextrq;
+		next_b0rz = 1. / (1. + next_alpha);
+		next_a0 = next_i * 0.5 * next_b0rz;
+		next_a1 = next_i * next_b0rz;
+		next_a2 = next_a0;
+		next_b1 = next_cosw0 * 2. * next_b0rz;
+		next_b2 = ((1. - next_alpha) * -next_b0rz);
+		a0slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
+		a1slope = (next_a1 - a1) * unit->mRate->mFilterSlope;
+		a2slope = (next_a2 - a2) * unit->mRate->mFilterSlope;
+		b1slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
+		b2slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
 		unit->m_freq = nextfreq;
 		unit->m_rq = nextrq;
 		LOOP(unit->mRate->mFilterLoops,
@@ -5002,8 +5135,15 @@ void BLowPass_next_kk(BLowPass *unit, int inNumSamples)
 			y2 = y1;
 			y1 = y0;
 
-			);
-    } else {
+		);
+
+		unit->m_a0 = next_a0;
+		unit->m_a1 = next_a1;
+		unit->m_a2 = next_a2;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
+
+	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
@@ -5023,11 +5163,6 @@ void BLowPass_next_kk(BLowPass *unit, int inNumSamples)
 	}
 	unit->m_y1 = zapgremlins(y1);
 	unit->m_y2 = zapgremlins(y2);
-	unit->m_a0 = a0;
-	unit->m_a1 = a1;
-	unit->m_a2 = a2;
-	unit->m_b1 = b1;
-	unit->m_b2 = b2;
 }
 
 struct BHiPass : public Unit
@@ -5135,43 +5270,44 @@ void BHiPass_next_aa(BHiPass *unit, int inNumSamples)
 
 void BHiPass_next_kk(BHiPass *unit, int inNumSamples)
 {
-		float *out = ZOUT(0);
-		float *in = ZIN(0);
-		float nextfreq = ZIN0(1);
-		float nextrq = ZIN0(2);
+	float *out = ZOUT(0);
+	float *in = ZIN(0);
+	float nextfreq = ZIN0(1);
+	float nextrq = ZIN0(2);
 
-		double a0, a1, a2, b1, b2;
-		double nexta0, nexta1, nexta2, nextb1, nextb2, nextw0, nextcosw0, nexti, nextalpha, nextb0rz;
-		double y0;
-		double y1 = unit->m_y1;
-		double y2 = unit->m_y2;
-		double a0slope, a1slope, a2slope, b1slope, b2slope;
+	double a0, a1, a2, b1, b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
 
-		a0 = unit->m_a0;
-		a1 = unit->m_a1;
-		a2 = unit->m_a2;
-		b1 = unit->m_b1;
-		b2 = unit->m_b2;
-
-		if ((unit->m_freq != nextfreq) || (unit->m_rq != nextrq)){
-		nextw0 = twopi * (double)nextfreq * SAMPLEDUR;
-		nextcosw0 = cos(nextw0);
-		nexti = 1. + nextcosw0;
-		nextalpha = sin(nextw0) * 0.5 * (double)nextrq;
-		nextb0rz = 1. / (1. + nextalpha);
-		nexta0 = nexti * 0.5 * nextb0rz;
-		nexta1 = -nexti * nextb0rz;
-		nexta2 = nexta0;
-		nextb1 = nextcosw0 * 2. * nextb0rz;
-		nextb2 = (1. - nextalpha) * -nextb0rz;
-		a0slope = (nexta0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
-		a1slope = (nexta1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
-		a2slope = (nexta2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
-		b1slope = (nextb1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
-		b2slope = (nextb2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
+	a0 = unit->m_a0;
+	a1 = unit->m_a1;
+	a2 = unit->m_a2;
+	b1 = unit->m_b1;
+	b2 = unit->m_b2;
+
+	if ((unit->m_freq != nextfreq) || (unit->m_rq != nextrq)){
+		double a0slope, a1slope, a2slope, b1slope, b2slope;
+		double next_a0, next_a1, next_a2, next_b1, next_b2, next_w0, next_cosw0, next_i, next_alpha, next_b0rz;
+
+		next_w0 = twopi * (double)nextfreq * SAMPLEDUR;
+		next_cosw0 = cos(next_w0);
+		next_i = 1. + next_cosw0;
+		next_alpha = sin(next_w0) * 0.5 * (double)nextrq;
+		next_b0rz = 1. / (1. + next_alpha);
+		next_a0 = next_i * 0.5 * next_b0rz;
+		next_a1 = -next_i * next_b0rz;
+		next_a2 = next_a0;
+		next_b1 = next_cosw0 * 2. * next_b0rz;
+		next_b2 = (1. - next_alpha) * -next_b0rz;
+		a0slope = (next_a0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
+		a1slope = (next_a1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
+		a2slope = (next_a2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
+		b1slope = (next_b1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
+		b2slope = (next_b2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
 
 		LOOP(unit->mRate->mFilterLoops,
-			y0 = ZXP(in) + b1 * y1 + b2 * y2;
+			 y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
 
 			y2 = ZXP(in) + b1 * y0 + b2 * y1;
@@ -5186,41 +5322,41 @@ void BHiPass_next_kk(BHiPass *unit, int inNumSamples)
 			b2 += b2slope;
 		);
 		LOOP(unit->mRate->mFilterRemain,
-			y0 = ZXP(in) + b1 * y1 + b2 * y2;
-			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
+			 y0 = ZXP(in) + b1 * y1 + b2 * y2;
+				ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
 			y2 = y1;
 			y1 = y0;
 		);
 		unit->m_freq = nextfreq;
 		unit->m_rq = nextrq;
-		unit->m_a0 = a0;
-		unit->m_a1 = a1;
-		unit->m_a2 = a2;
-		unit->m_b1 = b1;
-		unit->m_b2 = b2;
+		unit->m_a0 = next_a0;
+		unit->m_a1 = next_a1;
+		unit->m_a2 = next_a2;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 
-    } else {
+	} else {
 
 		LOOP(unit->mRate->mFilterLoops,
-				y0 = ZXP(in) + b1 * y1 + b2 * y2;
-				ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
+			 y0 = ZXP(in) + b1 * y1 + b2 * y2;
+			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
 
-				y2 = ZXP(in) + b1 * y0 + b2 * y1;
-				ZXP(out) = a0 * y2 + a1 * y0 + a2 * y1;
+			y2 = ZXP(in) + b1 * y0 + b2 * y1;
+			ZXP(out) = a0 * y2 + a1 * y0 + a2 * y1;
 
-				y1 = ZXP(in) + b1 * y2 + b2 * y0;
-				ZXP(out) = a0 * y1 + a1 * y2 + a2 * y0;
-				);
+			y1 = ZXP(in) + b1 * y2 + b2 * y0;
+			ZXP(out) = a0 * y1 + a1 * y2 + a2 * y0;
+		);
 		LOOP(unit->mRate->mFilterRemain,
-				y0 = ZXP(in) + b1 * y1 + b2 * y2;
-				ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
-				y2 = y1;
-				y1 = y0;
-				);
-    }
+			 y0 = ZXP(in) + b1 * y1 + b2 * y2;
+			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
+			y2 = y1;
+			y1 = y0;
+		);
+	}
 
-    unit->m_y1 = zapgremlins(y1);
-    unit->m_y2 = zapgremlins(y2);
+	unit->m_y1 = zapgremlins(y1);
+	unit->m_y2 = zapgremlins(y2);
 }
 
 /* BBandPass */
@@ -5337,31 +5473,32 @@ void BBandPass_next_kk(BBandPass *unit, int inNumSamples)
 	float nextbw = ZIN0(2);
 
 	double a0, a1, a2, b1, b2;
-	double nexta0, nexta1, nexta2, nextb1, nextb2, nextw0, nextalpha, nextb0rz;
 	double y0;
 	double y1 = unit->m_y1;
 	double y2 = unit->m_y2;
-	double a0slope, a1slope, a2slope, b1slope, b2slope;
 
 	a0 = unit->m_a0;
 	a1 = unit->m_a1;
 	a2 = unit->m_a2;
 	b1 = unit->m_b1;
 	b2 = unit->m_b2;
-	if ((unit->m_freq != nextfreq) || (unit->m_bw != nextbw)){
-		nextw0 = twopi * (double)nextfreq * SAMPLEDUR;
-		nextalpha = sin(nextw0) * (sinh((0.34657359027997 * (double)nextbw * nextw0) / sin(nextw0)));
-		nextb0rz = 1. / (1. + nextalpha);
-		nexta0 = nextalpha * nextb0rz;
-		nexta1 = 0.;
-		nexta2 = -nexta0;
-		nextb1 = cos(nextw0) * 2. * nextb0rz;
-		nextb2 = ((1. - nextalpha) * -nextb0rz);
-		a0slope = (nexta0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
-		a1slope = (nexta1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
-		a2slope = (nexta2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
-		b1slope = (nextb1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
-		b2slope = (nextb2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
+	if ((unit->m_freq != nextfreq) || (unit->m_bw != nextbw)) {
+		double a0slope, a1slope, a2slope, b1slope, b2slope;
+		double next_a0, next_a1, next_a2, next_b1, next_b2, next_w0, next_alpha, next_b0rz;
+
+		next_w0 = twopi * (double)nextfreq * SAMPLEDUR;
+		next_alpha = sin(next_w0) * (sinh((0.34657359027997 * (double)nextbw * next_w0) / sin(next_w0)));
+		next_b0rz = 1. / (1. + next_alpha);
+		next_a0 = next_alpha * next_b0rz;
+		next_a1 = 0.;
+		next_a2 = -next_a0;
+		next_b1 = cos(next_w0) * 2. * next_b0rz;
+		next_b2 = ((1. - next_alpha) * -next_b0rz);
+		a0slope = (next_a0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
+		a1slope = (next_a1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
+		a2slope = (next_a2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
+		b1slope = (next_b1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
+		b2slope = (next_b2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
 		unit->m_freq = nextfreq;
 		unit->m_bw = nextbw;
 		LOOP(unit->mRate->mFilterLoops,
@@ -5385,6 +5522,11 @@ void BBandPass_next_kk(BBandPass *unit, int inNumSamples)
 				y2 = y1;
 				y1 = y0;
 		);
+		unit->m_a0 = next_a0;
+		unit->m_a1 = next_a1;
+		unit->m_a2 = next_a2;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 	} else {
 		LOOP(unit->mRate->mFilterLoops,
 				y0 = ZXP(in) + b1 * y1 + b2 * y2;
@@ -5404,11 +5546,6 @@ void BBandPass_next_kk(BBandPass *unit, int inNumSamples)
 		);
 	}
 
-	unit->m_a0 = a0;
-	unit->m_a1 = a1;
-	unit->m_a2 = a2;
-	unit->m_b1 = b1;
-	unit->m_b2 = b2;
 	unit->m_y1 = zapgremlins(y1);
 	unit->m_y2 = zapgremlins(y2);
 }
@@ -5520,38 +5657,39 @@ void BBandStop_next_aa(BBandStop *unit, int inNumSamples)
 
 void BBandStop_next_kk(BBandStop *unit, int inNumSamples)
 {
-		float *out = ZOUT(0);
-		float *in = ZIN(0);
-		float nextfreq = ZIN0(1);
-		float nextbw = ZIN0(2);
+	float *out = ZOUT(0);
+	float *in = ZIN(0);
+	float nextfreq = ZIN0(1);
+	float nextbw = ZIN0(2);
 
-		double a0, a1, a2, b1, b2;
-		double nexta0, nexta1, nexta2, nextb1, nextb2, nextw0, nextalpha, nextb0rz;
-		double y0;
-		double y1 = unit->m_y1;
-		double y2 = unit->m_y2;
-		double a0slope, a1slope, a2slope, b1slope, b2slope;
+	double a0, a1, a2, b1, b2;
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
 
-		a0 = unit->m_a0;
-		a1 = unit->m_a1;
-		a2 = unit->m_a2;
-		b1 = unit->m_b1;
-		b2 = unit->m_b2;
-
-		if ((unit->m_freq != nextfreq) || (unit->m_bw != nextbw)){
-		nextw0 = twopi * (double)nextfreq * SAMPLEDUR;
-		nextalpha = sin(nextw0) * (sinh((0.34657359027997 * (double)nextbw * nextw0) / sin(nextw0)));
-		nextb0rz = 1. / (1. + nextalpha);
-		nextb1 = cos(nextw0) * 2. * nextb0rz;
-		nexta0 = nextb0rz;
-		nexta1 = -nextb1;
-		nexta2 = nextb0rz;
-		nextb2 = ((1. - nextalpha) * -nextb0rz);
-		a0slope = (nexta0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
-		a1slope = (nexta1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
-		a2slope = (nexta2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
-		b1slope = (nextb1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
-		b2slope = (nextb2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
+	a0 = unit->m_a0;
+	a1 = unit->m_a1;
+	a2 = unit->m_a2;
+	b1 = unit->m_b1;
+	b2 = unit->m_b2;
+
+	if ((unit->m_freq != nextfreq) || (unit->m_bw != nextbw)){
+		double a0slope, a1slope, a2slope, b1slope, b2slope;
+		double next_a0, next_a1, next_a2, next_b1, next_b2, next_w0, next_alpha, next_b0rz;
+
+		next_w0 = twopi * (double)nextfreq * SAMPLEDUR;
+		next_alpha = sin(next_w0) * (sinh((0.34657359027997 * (double)nextbw * next_w0) / sin(next_w0)));
+		next_b0rz = 1. / (1. + next_alpha);
+		next_b1 = cos(next_w0) * 2. * next_b0rz;
+		next_a0 = next_b0rz;
+		next_a1 = -next_b1;
+		next_a2 = next_b0rz;
+		next_b2 = ((1. - next_alpha) * -next_b0rz);
+		a0slope = (next_a0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
+		a1slope = (next_a1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
+		a2slope = (next_a2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
+		b1slope = (next_b1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
+		b2slope = (next_b2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
 		unit->m_freq = nextfreq;
 		unit->m_bw = nextbw;
 		LOOP(unit->mRate->mFilterLoops,
@@ -5576,7 +5714,12 @@ void BBandStop_next_kk(BBandStop *unit, int inNumSamples)
 			y1 = y0;
 		);
 
-    } else {
+		unit->m_a0 = next_a0;
+		unit->m_a1 = next_a1;
+		unit->m_a2 = next_a2;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
+	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
@@ -5595,11 +5738,6 @@ void BBandStop_next_kk(BBandStop *unit, int inNumSamples)
 		);
 	}
 
-	unit->m_a0 = a0;
-	unit->m_a1 = a1;
-	unit->m_a2 = a2;
-	unit->m_b1 = b1;
-	unit->m_b2 = b2;
 	unit->m_y1 = zapgremlins(y1);
 	unit->m_y2 = zapgremlins(y2);
 }
@@ -5723,7 +5861,7 @@ void BPeakEQ_next_kkk(BPeakEQ *unit, int inNumSamples)
 	float nextdb = ZIN0(3);
 
 	double a0, a1, a2, b1, b2, a, w0, alpha, b0rz;
-	double y0, y1, y2, a0slope, a1slope, a2slope, b1slope, b2slope, nexta0, nexta1, nexta2, nextb1, nextb2;
+	double y0, y1, y2;
 
 	y1 = unit->m_y1;
 	y2 = unit->m_y2;
@@ -5735,20 +5873,23 @@ void BPeakEQ_next_kkk(BPeakEQ *unit, int inNumSamples)
 	b2 = unit->m_b2;
 
 	if ((unit->m_freq != nextfreq) || (unit->m_rq != nextrq) || (unit->m_db != nextdb)) {
+		double a0slope, a1slope, a2slope, b1slope, b2slope;
+		double next_a0, next_a1, next_a2, next_b1, next_b2;
+
 		a = pow(10., (double)nextdb * 0.025);
 		w0 = twopi * (double)nextfreq * SAMPLEDUR;
 		alpha = sin(w0) * 0.5 * (double)nextrq;
 		b0rz = 1. / (1. + (alpha / a));
-		nextb1 = 2. * b0rz * cos(w0);
-		nexta0 = (1. + (alpha * a)) * b0rz;
-		nexta1 = -nextb1;
-		nexta2 = (1. - (alpha * a)) * b0rz;
-		nextb2 = (1. - (alpha / a)) * -b0rz;
-		a0slope = (nexta0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
-		a1slope = (nexta1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
-		a2slope = (nexta2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
-		b1slope = (nextb1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
-		b2slope = (nextb2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
+		next_b1 = 2. * b0rz * cos(w0);
+		next_a0 = (1. + (alpha * a)) * b0rz;
+		next_a1 = -next_b1;
+		next_a2 = (1. - (alpha * a)) * b0rz;
+		next_b2 = (1. - (alpha / a)) * -b0rz;
+		a0slope = (next_a0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
+		a1slope = (next_a1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
+		a2slope = (next_a2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
+		b1slope = (next_b1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
+		b2slope = (next_b2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
 		unit->m_freq = nextfreq;
 		unit->m_db = nextdb;
 		unit->m_rq = nextrq;
@@ -5776,7 +5917,12 @@ void BPeakEQ_next_kkk(BPeakEQ *unit, int inNumSamples)
 			y1 = y0;
 		);
 
-    } else {
+		unit->m_a0 = next_a0;
+		unit->m_a1 = next_a1;
+		unit->m_a2 = next_a2;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
+	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
@@ -5796,11 +5942,6 @@ void BPeakEQ_next_kkk(BPeakEQ *unit, int inNumSamples)
 		);
 	}
 
-	unit->m_a0 = a0;
-	unit->m_a1 = a1;
-	unit->m_a2 = a2;
-	unit->m_b1 = b1;
-	unit->m_b2 = b2;
 	unit->m_y1 = zapgremlins(y1);
 	unit->m_y2 = zapgremlins(y2);
 }
@@ -5917,11 +6058,9 @@ void BAllPass_next_kk(BAllPass *unit, int inNumSamples)
 	float nextrq = ZIN0(2);
 
 	double a0, a1, a2, b1, b2;
-	double nexta0, nexta1, nexta2, nextb1, nextb2, nextw0, nextalpha, nextb0rz;
 	double y0;
 	double y1 = unit->m_y1;
 	double y2 = unit->m_y2;
-	double a0slope, a1slope, a2slope, b1slope, b2slope;
 
 	a0 = unit->m_a0;
 	a1 = unit->m_a1;
@@ -5930,19 +6069,21 @@ void BAllPass_next_kk(BAllPass *unit, int inNumSamples)
 	b2 = unit->m_b2;
 
 	if ((unit->m_freq != nextfreq) || (unit->m_rq != nextrq)) {
-		nextw0 = twopi * (double)nextfreq * SAMPLEDUR;
-		nextalpha = sin(nextw0) * 0.5 * (double)nextrq;
-		nextb0rz = 1. / (1. + nextalpha);
-		nextb1 = cos(nextw0) * 2. * nextb0rz;
-		nexta0 = (1. - nextalpha) * nextb0rz;
-		nexta1 = -nextb1;
-		nexta2 = 1.;
-		nextb2 = -nexta0;
-		a0slope = (nexta0 - a0) * unit->mRate->mFilterSlope;
-		a1slope = (nexta1 - a1) * unit->mRate->mFilterSlope;
-		a2slope = (nexta2 - a2) * unit->mRate->mFilterSlope;
-		b1slope = (nextb1 - b1) * unit->mRate->mFilterSlope;
-		b2slope = (nextb2 - b2) * unit->mRate->mFilterSlope;
+		double a0slope, a1slope, a2slope, b1slope, b2slope;
+		double next_a0, next_a1, next_a2, next_b1, next_b2, next_w0, next_alpha, next_b0rz;
+		next_w0 = twopi * (double)nextfreq * SAMPLEDUR;
+		next_alpha = sin(next_w0) * 0.5 * (double)nextrq;
+		next_b0rz = 1. / (1. + next_alpha);
+		next_b1 = cos(next_w0) * 2. * next_b0rz;
+		next_a0 = (1. - next_alpha) * next_b0rz;
+		next_a1 = -next_b1;
+		next_a2 = 1.;
+		next_b2 = -next_a0;
+		a0slope = (next_a0 - a0) * unit->mRate->mFilterSlope;
+		a1slope = (next_a1 - a1) * unit->mRate->mFilterSlope;
+		a2slope = (next_a2 - a2) * unit->mRate->mFilterSlope;
+		b1slope = (next_b1 - b1) * unit->mRate->mFilterSlope;
+		b2slope = (next_b2 - b2) * unit->mRate->mFilterSlope;
 		unit->m_freq = nextfreq;
 		unit->m_rq = nextrq;
 		LOOP(unit->mRate->mFilterLoops,
@@ -5967,7 +6108,13 @@ void BAllPass_next_kk(BAllPass *unit, int inNumSamples)
 			y1 = y0;
 		);
 
-    } else {
+		unit->m_a0 = next_a0;
+		unit->m_a1 = next_a1;
+		unit->m_a2 = next_a2;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
+
+	} else {
 		LOOP(unit->mRate->mFilterLoops,
 			y0 = ZXP(in) + b1 * y1 + b2 * y2;
 			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
@@ -5986,11 +6133,6 @@ void BAllPass_next_kk(BAllPass *unit, int inNumSamples)
 		);
 	}
 
-	unit->m_a0 = a0;
-	unit->m_a1 = a1;
-	unit->m_a2 = a2;
-	unit->m_b1 = b1;
-	unit->m_b2 = b2;
 	unit->m_y1 = zapgremlins(y1);
 	unit->m_y2 = zapgremlins(y2);
 }
@@ -6124,7 +6266,7 @@ void BLowShelf_next_kkk(BLowShelf *unit, int inNumSamples)
 	float nextdb = ZIN0(3);
 
 	double a0, a1, a2, b1, b2, a, w0, cosw0, sinw0, alpha, i, j, k, b0rz;
-	double y0, y1, y2, a0slope, a1slope, a2slope, b1slope, b2slope, nexta0, nexta1, nexta2, nextb1, nextb2;
+	double y0, y1, y2;
 
 	y1 = unit->m_y1;
 	y2 = unit->m_y2;
@@ -6136,6 +6278,7 @@ void BLowShelf_next_kkk(BLowShelf *unit, int inNumSamples)
 	b2 = unit->m_b2;
 
 	if ((unit->m_freq != nextfreq) || (unit->m_rs != nextrs) || (unit->m_db != nextdb)) {
+		double a0slope, a1slope, a2slope, b1slope, b2slope, nexta0, nexta1, nexta2, nextb1, nextb2;
 		a = pow(10., (double)nextdb * 0.025);
 		w0 = twopi * (double)nextfreq * SAMPLEDUR;
 		sinw0 = sin(w0);
@@ -6340,7 +6483,7 @@ void BHiShelf_next_kkk(BHiShelf *unit, int inNumSamples)
 	float nextdb = ZIN0(3);
 
 	double a0, a1, a2, b1, b2, a, w0, cosw0, sinw0, alpha, i, j, k, b0rz;
-	double y0, y1, y2, a0slope, a1slope, a2slope, b1slope, b2slope, nexta0, nexta1, nexta2, nextb1, nextb2;
+	double y0, y1, y2;
 
 	y1 = unit->m_y1;
 	y2 = unit->m_y2;
@@ -6352,6 +6495,8 @@ void BHiShelf_next_kkk(BHiShelf *unit, int inNumSamples)
 	b2 = unit->m_b2;
 
 	if ((unit->m_freq != nextfreq) || (unit->m_rs != nextrs) || (unit->m_db != nextdb)) {
+		double a0slope, a1slope, a2slope, b1slope, b2slope;
+		double next_a0, next_a1, next_a2, next_b1, next_b2;
 		a = pow(10., (double)nextdb * 0.025);
 		w0 = twopi * (double)nextfreq * SAMPLEDUR;
 		sinw0 = sin(w0);
@@ -6361,16 +6506,16 @@ void BHiShelf_next_kkk(BHiShelf *unit, int inNumSamples)
 		j = (a - 1.) * cosw0;
 		k = 2. * sqrt(a) * alpha;
 		b0rz = 1. / ((a + 1.) - j + k);
-		nexta0 = a * (( a + 1.) + j + k) * b0rz;
-		nexta1 = -2. * a * ((a - 1.) + i) * b0rz;
-		nexta2 = a * ((a + 1.) + j - k) * b0rz;
-		nextb1 = -2. * ((a - 1.) - i) * b0rz;
-		nextb2 = ((a + 1.) - j - k) * -b0rz;
-		a0slope = (nexta0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
-		a1slope = (nexta1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
-		a2slope = (nexta2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
-		b1slope = (nextb1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
-		b2slope = (nextb2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
+		next_a0 = a * (( a + 1.) + j + k) * b0rz;
+		next_a1 = -2. * a * ((a - 1.) + i) * b0rz;
+		next_a2 = a * ((a + 1.) + j - k) * b0rz;
+		next_b1 = -2. * ((a - 1.) - i) * b0rz;
+		next_b2 = ((a + 1.) - j - k) * -b0rz;
+		a0slope = (next_a0 - a0) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta0, a0);
+		a1slope = (next_a1 - a1) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta1, a1);
+		a2slope = (next_a2 - a2) * unit->mRate->mFilterSlope; //CALCSLOPE(nexta2, a2);
+		b1slope = (next_b1 - b1) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb1, b1);
+		b2slope = (next_b2 - b2) * unit->mRate->mFilterSlope; //CALCSLOPE(nextb2, b2);
 		unit->m_freq = nextfreq;
 		unit->m_db = nextdb;
 		unit->m_rs = nextrs;
@@ -6398,32 +6543,32 @@ void BHiShelf_next_kkk(BHiShelf *unit, int inNumSamples)
 				y1 = y0;
 		);
 
-    } else {
-	LOOP(unit->mRate->mFilterLoops,
-	     y0 = ZXP(in) + b1 * y1 + b2 * y2;
-	     ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
+		unit->m_a0 = next_a0;
+		unit->m_a1 = next_a1;
+		unit->m_a2 = next_a2;
+		unit->m_b1 = next_b1;
+		unit->m_b2 = next_b2;
 
-	     y2 = ZXP(in) + b1 * y0 + b2 * y1;
-	     ZXP(out) = a0 * y2 + a1 * y0 + a2 * y1;
+	} else {
+		LOOP(unit->mRate->mFilterLoops,
+			y0 = ZXP(in) + b1 * y1 + b2 * y2;
+			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
 
-	     y1 = ZXP(in) + b1 * y2 + b2 * y0;
-	     ZXP(out) = a0 * y1 + a1 * y2 + a2 * y0;
+			y2 = ZXP(in) + b1 * y0 + b2 * y1;
+			ZXP(out) = a0 * y2 + a1 * y0 + a2 * y1;
 
-	     );
-	LOOP(unit->mRate->mFilterRemain,
-	     y0 = ZXP(in) + b1 * y1 + b2 * y2;
-	     ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
-	     y2 = y1;
-	     y1 = y0;
-	     );
-    }
-    unit->m_a0 = a0;
-    unit->m_a1 = a1;
-    unit->m_a2 = a2;
-    unit->m_b1 = b1;
-    unit->m_b2 = b2;
-    unit->m_y1 = zapgremlins(y1);
-    unit->m_y2 = zapgremlins(y2);
+			y1 = ZXP(in) + b1 * y2 + b2 * y0;
+			ZXP(out) = a0 * y1 + a1 * y2 + a2 * y0;
+		);
+		LOOP(unit->mRate->mFilterRemain,
+			y0 = ZXP(in) + b1 * y1 + b2 * y2;
+			ZXP(out) = a0 * y0 + a1 * y1 + a2 * y2;
+			y2 = y1;
+			y1 = y0;
+		);
+	}
+	unit->m_y1 = zapgremlins(y1);
+	unit->m_y2 = zapgremlins(y2);
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/server/plugins/GrainUGens.cpp b/server/plugins/GrainUGens.cpp
index 3aeee59..12f5a6b 100644
--- a/server/plugins/GrainUGens.cpp
+++ b/server/plugins/GrainUGens.cpp
@@ -29,11 +29,7 @@
 
 #include "SC_PlugIn.h"
 
-#if defined (__GNUC__) && !defined(__clang__)
-#define inline_functions __attribute__ ((flatten))
-#else
-#define inline_functions
-#endif
+#include "function_attributes.h"
 
 static InterfaceTable *ft;
 
@@ -251,6 +247,10 @@ static inline bool getGrainWin(Unit * unit, float wintype, SndBuf *& window, con
 	}
 
 	assert(wintype < unit->mWorld->mNumSndBufs);
+
+	if (wintype < 0)
+		return true; // use default hann window
+
 	window = unit->mWorld->mSndBufs + (int)wintype;
 	windowData = window->data;
 	if (!windowData)
@@ -1151,15 +1151,13 @@ static inline void GrainBuf_next_start_new(GrainBuf *unit, int inNumSamples, int
 		return;
 	}
 
-	GrainBufG *grain = unit->mGrains + unit->mNumActive++;
 	float winType = grain_in_at<full_rate>(unit, 7, position);
 	DECLARE_WINDOW
 	bool success = getGrainWin(unit, winType, window, windowData, windowSamples, windowFrames, windowGuardFrame);
-	if (!success) {
-		GrainBuf_grain_cleanup(unit, grain);
+	if (!success)
 		return;
-	}
 
+	GrainBufG *grain = unit->mGrains + unit->mNumActive++;
 	int32 bufnum = grain_in_at<full_rate>(unit, 2, position);
 	grain->bufnum = bufnum;
 
@@ -1180,6 +1178,11 @@ static inline void GrainBuf_next_start_new(GrainBuf *unit, int inNumSamples, int
 
 	double rate = grain->rate = grain_in_at<full_rate>(unit, 3, position) * bufRateScale;
 	double phase = grain_in_at<full_rate>(unit, 4, position) * bufFrames;
+	if (sc_isnan(phase)) {
+		GrainBuf_grain_cleanup(unit, grain);
+		return;
+	}
+
 	grain->interp = (int)grain_in_at<full_rate>(unit, 5, position);
 	grain->winType = winType;
 
@@ -1239,22 +1242,22 @@ static void GrainBuf_next_k(GrainBuf * unit, int inNumSamples)
 	unit->curtrig = trig;
 }
 
-inline_functions static void GrainBuf_next_k_1(GrainBuf * unit, int inNumSamples)
+FLATTEN static void GrainBuf_next_k_1(GrainBuf * unit, int inNumSamples)
 {
 	GrainBuf_next_k<true>(unit, inNumSamples);
 }
 
-inline_functions static void GrainBuf_next_k_2(GrainBuf * unit, int inNumSamples)
+FLATTEN static void GrainBuf_next_k_2(GrainBuf * unit, int inNumSamples)
 {
 	GrainBuf_next_k<false>(unit, inNumSamples);
 }
 
-inline_functions static void GrainBuf_next_a_1(GrainBuf * unit, int inNumSamples)
+FLATTEN static void GrainBuf_next_a_1(GrainBuf * unit, int inNumSamples)
 {
 	GrainBuf_next_a<true>(unit, inNumSamples);
 }
 
-inline_functions static void GrainBuf_next_a_2(GrainBuf * unit, int inNumSamples)
+FLATTEN static void GrainBuf_next_a_2(GrainBuf * unit, int inNumSamples)
 {
 	GrainBuf_next_a<false>(unit, inNumSamples);
 }
diff --git a/server/plugins/IOUGens.cpp b/server/plugins/IOUGens.cpp
index b92e2a3..0c29a13 100644
--- a/server/plugins/IOUGens.cpp
+++ b/server/plugins/IOUGens.cpp
@@ -35,14 +35,9 @@
 #include "simd_mix.hpp"
 #include "simd_binary_arithmetic.hpp"
 
+#include "function_attributes.h"
 using nova::slope_argument;
 
-#if defined(__GNUC__) && !defined(__clang__)
-#define inline_functions __attribute__ ((flatten))
-#else
-#define inline_functions
-#endif
-
 #endif
 
 static InterfaceTable *ft;
@@ -399,7 +394,7 @@ void LagControl_Dtor(LagControl* unit)
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
 #ifdef NOVA_SIMD
-inline_functions void In_next_a_nova(IOUnit *unit, int inNumSamples)
+FLATTEN void In_next_a_nova(IOUnit *unit, int inNumSamples)
 {
 	World *world = unit->mWorld;
 	int bufLength = world->mBufLength;
@@ -432,7 +427,7 @@ inline_functions void In_next_a_nova(IOUnit *unit, int inNumSamples)
 	}
 }
 
-inline_functions void In_next_a_nova_64(IOUnit *unit, int inNumSamples)
+FLATTEN void In_next_a_nova_64(IOUnit *unit, int inNumSamples)
 {
 	World *world = unit->mWorld;
 	int bufLength = world->mBufLength;
@@ -824,7 +819,7 @@ void ReplaceOut_next_k(IOUnit *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void ReplaceOut_next_a_nova(IOUnit *unit, int inNumSamples)
+FLATTEN void ReplaceOut_next_a_nova(IOUnit *unit, int inNumSamples)
 {
 	World *world = unit->mWorld;
 	int bufLength = world->mBufLength;
@@ -854,7 +849,7 @@ inline_functions void ReplaceOut_next_a_nova(IOUnit *unit, int inNumSamples)
 	}
 }
 
-inline_functions void ReplaceOut_next_a_nova_64(IOUnit *unit, int inNumSamples)
+FLATTEN void ReplaceOut_next_a_nova_64(IOUnit *unit, int inNumSamples)
 {
 	World *world = unit->mWorld;
 	int bufLength = world->mBufLength;
@@ -991,7 +986,7 @@ void vOut_next_a(IOUnit *unit, int inNumSamples)
 
 
 #ifdef NOVA_SIMD
-inline_functions void Out_next_a_nova(IOUnit *unit, int inNumSamples)
+FLATTEN void Out_next_a_nova(IOUnit *unit, int inNumSamples)
 {
 	//Print("Out_next_a %d\n", unit->mNumInputs);
 	World *world = unit->mWorld;
@@ -1027,7 +1022,7 @@ inline_functions void Out_next_a_nova(IOUnit *unit, int inNumSamples)
 	}
 }
 
-inline_functions void Out_next_a_nova_64(IOUnit *unit, int inNumSamples)
+FLATTEN void Out_next_a_nova_64(IOUnit *unit, int inNumSamples)
 {
 	//Print("Out_next_a %d\n", unit->mNumInputs);
 	World *world = unit->mWorld;
@@ -1218,7 +1213,7 @@ void XOut_next_a(XOut *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void XOut_next_a_nova(XOut *unit, int inNumSamples)
+FLATTEN void XOut_next_a_nova(XOut *unit, int inNumSamples)
 {
 	World *world = unit->mWorld;
 	int bufLength = world->mBufLength;
@@ -1563,7 +1558,7 @@ void LocalIn_next_a(LocalIn *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void LocalIn_next_a_nova(LocalIn *unit, int inNumSamples)
+FLATTEN void LocalIn_next_a_nova(LocalIn *unit, int inNumSamples)
 {
 	World *world = unit->mWorld;
 	int bufLength = world->mBufLength;
@@ -1585,7 +1580,7 @@ inline_functions void LocalIn_next_a_nova(LocalIn *unit, int inNumSamples)
 	}
 }
 
-inline_functions void LocalIn_next_a_nova_64(LocalIn *unit, int inNumSamples)
+FLATTEN void LocalIn_next_a_nova_64(LocalIn *unit, int inNumSamples)
 {
 	World *world = unit->mWorld;
 	int bufLength = world->mBufLength;
@@ -1714,7 +1709,7 @@ void LocalOut_next_a(IOUnit *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void LocalOut_next_a_nova(IOUnit *unit, int inNumSamples)
+FLATTEN void LocalOut_next_a_nova(IOUnit *unit, int inNumSamples)
 {
 	//Print("LocalOut_next_a %d\n", unit->mNumInputs);
 	World *world = unit->mWorld;
diff --git a/server/plugins/KeyTrack.cpp b/server/plugins/KeyTrack.cpp
index 29a5321..87202c5 100644
--- a/server/plugins/KeyTrack.cpp
+++ b/server/plugins/KeyTrack.cpp
@@ -157,10 +157,9 @@ void KeyTrack_calculatekey(KeyTrack *unit, uint32 ibufnum)
 	} 
     
 	LOCK_SNDBUF(buf);
-	int numbins = buf->samples - 2 >> 1;
 
 	//assumed in this representation
-	SCComplexBuf *p = ToComplexApx(buf);
+	ToComplexApx(buf);
 
 	const float * data= buf->data;
 
@@ -202,8 +201,6 @@ void KeyTrack_calculatekey(KeyTrack *unit, uint32 ibufnum)
 
 		//transient sum, setting up last values too
 
-		float phasesum=0.0;
-
 		for(int j=0;j<12;++j) { //12 if 144 data points
 
 			index=indexbase+j;
diff --git a/server/plugins/KeyboardUGens.cpp b/server/plugins/KeyboardUGens.cpp
deleted file mode 100644
index 9066c0f..0000000
--- a/server/plugins/KeyboardUGens.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-	SuperCollider real time audio synthesis system
-    Copyright (c) 2002 James McCartney. All rights reserved.
-	http://www.audiosynth.com
-
-    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
-*/
-
-
-#ifdef __APPLE__
-#include <Carbon/Carbon.h>
-#include <unistd.h>
-#else
-# ifndef _WIN32
-#  include <time.h>
-#  include <X11/Intrinsic.h>
-# else
-#include <windows.h>
-# endif
-#endif
-
-#include "SC_PlugIn.h"
-
-static InterfaceTable *ft;
-
-struct KeyboardUGenGlobalState {
-#ifdef __APPLE__
-//	uint8 keys[16];
-	KeyMap keys;
-#else
-	uint8 keys[32];
-#endif
-} gKeyStateGlobals;
-
-struct KeyState : public Unit
-{
-	KeyboardUGenGlobalState* gstate;
-	float m_y1, m_b1, m_lag;
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////////////
-
-extern "C"
-{
-	void KeyState_next(KeyState *unit, int inNumSamples);
-	void KeyState_Ctor(KeyState *unit);
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////////////
-
-#ifdef __APPLE__
-
-void* gstate_update_func(void* arg)
-{
-	KeyboardUGenGlobalState* gstate = &gKeyStateGlobals;
-	for (;;) {
-		Point p;
-		GetKeys(gstate->keys);
-		usleep(17000);
-	}
-
-	return 0;
-}
-
-#elif defined(_WIN32)
-
-void* gstate_update_func(void* arg)
-{
-	POINT p;
-	int mButton;
-	KeyboardUGenGlobalState* gstate;
-
-	gstate = &gKeyStateGlobals;
-
-	/* // "KeyState" is disabled for now, on Windows...
-	for(;;)	{
-		//GetKey((long*)gstate->keys);
-		::Sleep(17); // 17msec.
-	}
-	*/
-	return 0;
-}
-
-# else
-static Display * d = 0;
-void* gstate_update_func(void* arg)
-{
-	KeyboardUGenGlobalState* gstate;
-	Window r;
-	struct timespec requested_time , remaining_time;
-
-	requested_time.tv_sec = 0;
-	requested_time.tv_nsec = 17000 * 1000;
-
-	XInitThreads(); // x api is called by both mouse and keyboard ugens
-
-	d = XOpenDisplay ( NULL );
-	if (!d) return 0;
-
-	gstate = &gKeyStateGlobals;
-
-	for (;;) {
-		XQueryKeymap ( d , (char *) (gstate->keys) );
-		nanosleep ( &requested_time , &remaining_time );
-	}
-
-	return 0;
-}
-#endif
-
-//////////////////////////////////////////////////////////////////////////////////////////////////
-
-void KeyState_next(KeyState *unit, int inNumSamples)
-{
-	// minval, maxval, warp, lag
-	uint8 *keys = (uint8*)unit->gstate->keys;
-	int keynum = (int)ZIN0(0);
-#ifdef __APPLE__
-	int byte = (keynum >> 3) & 15;
-#else
-	int byte = (keynum >> 3) & 31;
-#endif
-	int bit = keynum & 7;
-	int val = keys[byte] & (1 << bit);
-
-	float minval = ZIN0(1);
-	float maxval = ZIN0(2);
-	float lag = ZIN0(3);
-
-	float y1 = unit->m_y1;
-	float b1 = unit->m_b1;
-
-	if (lag != unit->m_lag) {
-		unit->m_b1 = lag == 0.f ? 0.f : exp(log001 / (lag * unit->mRate->mSampleRate));
-		unit->m_lag = lag;
-	}
-	float y0 = val ? maxval : minval;
-	ZOUT0(0) = y1 = y0 + b1 * (y1 - y0);
-	unit->m_y1 = zapgremlins(y1);
-}
-
-void KeyState_Ctor(KeyState *unit)
-{
-	SETCALC(KeyState_next);
-	unit->gstate = &gKeyStateGlobals;
-	unit->m_b1 = 0.f;
-	unit->m_lag = 0.f;
-	KeyState_next(unit, 1);
-}
-
-PluginLoad(KeyboardUGens)
-{
-	ft = inTable;
-
-	pthread_t keybListenThread;
-	pthread_create (&keybListenThread, NULL, gstate_update_func, (void*)0);
-
-	DefineSimpleUnit(KeyState);
-}
-
-#ifdef __GNUC__
-#if !defined(__APPLE__) && !defined(_WIN32)
-static void __attribute__ ((destructor)) finalize(void)
-{
-	if (d)
-		XCloseDisplay(d);
-}
-#endif
-#endif
diff --git a/server/plugins/LFUGens.cpp b/server/plugins/LFUGens.cpp
index 0c3c844..f7e898c 100644
--- a/server/plugins/LFUGens.cpp
+++ b/server/plugins/LFUGens.cpp
@@ -20,22 +20,10 @@
 
 
 #include "SC_PlugIn.h"
+#include "SIMD_Unit.hpp"
 #include <limits.h>
 #include <cstdio>
-
-#ifdef NOVA_SIMD
-#include "simd_memory.hpp"
-#include "simd_ternary_arithmetic.hpp"
-
-using nova::slope_argument;
-
-#if defined (__GNUC__) && !(defined(__clang__))
-#define inline_functions __attribute__ ((flatten))
-#else
-#define inline_functions
-#endif
-
-#endif
+#include "function_attributes.h"
 
 static InterfaceTable *ft;
 
@@ -170,11 +158,6 @@ struct InRect : public Unit
 //	float m_leftScale, m_rightScale, m_a, m_b, m_c, m_d;
 //};
 
-struct K2A : public Unit
-{
-	float mLevel;
-};
-
 struct A2K : public Unit
 {
 
@@ -190,11 +173,6 @@ struct T2A : public Unit
 	float mLevel;
 };
 
-struct DC : public Unit
-{
-	float m_val;
-};
-
 struct EnvGen : public Unit
 {
 	double m_a1, m_a2, m_b1, m_y1, m_y2, m_grow, m_level, m_endLevel;
@@ -260,9 +238,6 @@ extern "C"
 	void SyncSaw_next_kk(SyncSaw *unit, int inNumSamples);
 	void SyncSaw_Ctor(SyncSaw* unit);
 
-	void K2A_next(K2A *unit, int inNumSamples);
-	void K2A_Ctor(K2A* unit);
-
 	void A2K_next(A2K *unit, int inNumSamples);
 	void A2K_Ctor(A2K* unit);
 
@@ -1230,69 +1205,37 @@ void SyncSaw_Ctor(SyncSaw* unit)
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
-void K2A_next(K2A *unit, int inNumSamples)
-{
-	float *out = ZOUT(0);
-	float in = ZIN0(0);
-
-	float level = unit->mLevel;
-	float slope = CALCSLOPE(in, level);
-
-	LOOP1(inNumSamples,
-		ZXP(out) = level += slope;
-	);
-	unit->mLevel = level;
-}
-
-#ifdef NOVA_SIMD
-inline_functions void K2A_next_nova(K2A *unit, int inNumSamples)
+struct K2A:
+	SIMD_Unit
 {
-	float in = ZIN0(0);
-	float level = unit->mLevel;
+	ControlRateInput<0> mLevel;
 
-	if (level == in)
-		nova::setvec_simd(OUT(0), level, inNumSamples);
-	else
+	K2A(void)
 	{
-		float slope = CALCSLOPE(in, level);
-		nova::set_slope_vec_simd(OUT(0), level, slope, inNumSamples);
+		mLevel.init(this);
+		if (inRate(0) == calc_ScalarRate)
+			set_unrolled_calc_function<K2A, &K2A::next_i<unrolled_64>, &K2A::next_i<unrolled>, &K2A::next_i<scalar> >();
+		else
+			set_unrolled_calc_function<K2A, &K2A::next_k<unrolled_64>, &K2A::next_k<unrolled>, &K2A::next_k<scalar> >();
 	}
 
-	unit->mLevel = in;
-}
-
-inline_functions void K2A_next_nova_64(K2A *unit, int inNumSamples)
-{
-	float in = ZIN0(0);
-	float level = unit->mLevel;
-
-	if (level == in)
-		nova::setvec_simd<64>(OUT(0), level);
-	else
+	template <int type>
+	void next_k(int inNumSamples)
 	{
-		float slope = CALCSLOPE(in, level);
-		nova::set_slope_vec_simd(OUT(0), level, slope, 64);
+		if (mLevel.changed(this))
+			slope_vec<type>(out(0), mLevel.slope(this), inNumSamples);
+		else
+			next_i<type>(inNumSamples);
 	}
 
-	unit->mLevel = in;
-}
-
-#endif
-
-void K2A_Ctor(K2A* unit)
-{
-#ifdef NOVA_SIMD
-	if (BUFLENGTH == 64)
-		SETCALC(K2A_next_nova_64);
-	else if (!(BUFLENGTH & 15))
-		SETCALC(K2A_next_nova);
-	else
-#endif
-	SETCALC(K2A_next);
-	unit->mLevel = ZIN0(0);
+	template <int type>
+	void next_i(int inNumSamples)
+	{
+		set_vec<type>(out(0), mLevel, inNumSamples);
+	}
+};
 
-	ZOUT0(0) = unit->mLevel;
-}
+DEFINE_XTORS(K2A)
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -1348,7 +1291,7 @@ void T2A_next(T2A *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void T2A_next_nova(T2A *unit, int inNumSamples)
+FLATTEN void T2A_next_nova(T2A *unit, int inNumSamples)
 {
 	float level = IN0(0);
 
@@ -1359,7 +1302,7 @@ inline_functions void T2A_next_nova(T2A *unit, int inNumSamples)
 	unit->mLevel = level;
 }
 
-inline_functions void T2A_next_nova_64(T2A *unit, int inNumSamples)
+FLATTEN void T2A_next_nova_64(T2A *unit, int inNumSamples)
 {
 	float level = IN0(0);
 
@@ -1388,49 +1331,32 @@ void T2A_Ctor(T2A* unit)
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
-#ifdef NOVA_SIMD
-inline_functions static void DC_next_nova(DC *unit, int inNumSamples)
+struct DC:
+	SIMD_Unit
 {
-	float val = unit->m_val;
-	nova::setvec_simd(OUT(0), val, inNumSamples);
-}
+	float value;
 
-inline_functions static void DC_next_nova_64(DC *unit, int inNumSamples)
-{
-	float val = unit->m_val;
-	nova::setvec_simd<64>(OUT(0), val);
-}
-#endif
-
-static void DC_next(DC *unit, int inNumSamples)
-{
-	float val = unit->m_val;
-	float *out = ZOUT(0);
-	LOOP1(inNumSamples, ZXP(out) = val;)
-}
-
-static void DC_next_1(DC *unit, int inNumSamples)
-{
-	ZOUT0(0) = unit->m_val;
-}
+	DC(void) {
+		value = in0(0);
+		if (value == 0)
+			set_unrolled_calc_function<DC, &DC::next_i<unrolled_64, true>,
+									   &DC::next_i<unrolled, true>, &DC::next_i<scalar, true> >();
+		else
+			set_unrolled_calc_function<DC, &DC::next_i<unrolled_64, false>,
+									   &DC::next_i<unrolled, false>, &DC::next_i<scalar, false> >();
+	}
 
-static void DC_Ctor(DC* unit)
-{
-	unit->m_val = IN0(0);
-#ifdef NOVA_SIMD
-	if (BUFLENGTH == 64)
-		SETCALC(DC_next_nova_64);
-	if (!(BUFLENGTH & 15))
-		SETCALC(DC_next_nova);
-	else
-#endif
-	if (BUFLENGTH == 1)
-		SETCALC(DC_next_1);
-	else
-		SETCALC(DC_next);
-	ZOUT0(0) = unit->m_val;
-}
+	template <int type, bool isZero>
+	void next_i(int inNumSamples)
+	{
+		if (isZero)
+			zero_vec<type>(out(0), inNumSamples);
+		else
+			set_vec<type>(out(0), value, inNumSamples);
+	}
+};
 
+DEFINE_XTORS(DC)
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -1476,7 +1402,7 @@ void Line_next(Line *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void Line_next_nova(Line *unit, int inNumSamples)
+FLATTEN void Line_next_nova(Line *unit, int inNumSamples)
 {
 	double level = unit->mLevel;
 	int counter = unit->mCounter;
@@ -1500,7 +1426,7 @@ inline_functions void Line_next_nova(Line *unit, int inNumSamples)
 	unit->mLevel = level;
 }
 
-inline_functions void Line_next_nova_64(Line *unit, int inNumSamples)
+FLATTEN void Line_next_nova_64(Line *unit, int inNumSamples)
 {
 	double level = unit->mLevel;
 	int counter = unit->mCounter;
@@ -1598,7 +1524,7 @@ void XLine_next(XLine *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void XLine_next_nova(XLine *unit, int inNumSamples)
+FLATTEN void XLine_next_nova(XLine *unit, int inNumSamples)
 {
 	double level = unit->mLevel;
 	int counter = unit->mCounter;
@@ -1620,7 +1546,7 @@ inline_functions void XLine_next_nova(XLine *unit, int inNumSamples)
 	unit->mLevel = level;
 }
 
-inline_functions void XLine_next_nova_64(XLine *unit, int inNumSamples)
+FLATTEN void XLine_next_nova_64(XLine *unit, int inNumSamples)
 {
 	double level = unit->mLevel;
 	int counter = unit->mCounter;
@@ -2415,6 +2341,7 @@ void InRect_Ctor(InRect* unit)
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
 
+
 void LinExp_next(LinExp *unit, int inNumSamples)
 {
 	float *out = ZOUT(0);
@@ -2455,7 +2382,7 @@ static inline void LinExp_next_nova_loop(float * out, const float * in, int inNu
 	} while (--unroll);
 }
 
-static inline_functions void LinExp_next_nova(LinExp *unit, int inNumSamples)
+FLATTEN static void LinExp_next_nova(LinExp *unit, int inNumSamples)
 {
 	float *out = OUT(0);
 	float *in   = IN(0);
@@ -2463,7 +2390,7 @@ static inline_functions void LinExp_next_nova(LinExp *unit, int inNumSamples)
 	LinExp_next_nova_loop(out, in, inNumSamples, unit->m_dstlo, unit->m_dstratio, unit->m_rsrcrange, unit->m_rrminuslo);
 }
 
-static inline_functions void LinExp_next_nova_kk(LinExp *unit, int inNumSamples)
+FLATTEN static void LinExp_next_nova_kk(LinExp *unit, int inNumSamples)
 {
 	float *out = OUT(0);
 	float *in  = IN(0);
@@ -2473,7 +2400,7 @@ static inline_functions void LinExp_next_nova_kk(LinExp *unit, int inNumSamples)
 	float dstlo = ZIN0(3);
 	float dsthi = ZIN0(4);
 	float dstratio = dsthi/dstlo;
-	float rsrcrange = 1. / (srchi - srclo);
+	float rsrcrange = sc_reciprocal(srchi - srclo);
 	float rrminuslo = rsrcrange * -srclo;
 
 	LinExp_next_nova_loop(out, in, inNumSamples, dstlo, dstratio, rsrcrange, rrminuslo);
@@ -2489,8 +2416,8 @@ void LinExp_next_kk(LinExp *unit, int inNumSamples)
 	float srchi = ZIN0(2);
 	float dstlo = ZIN0(3);
 	float dsthi = ZIN0(4);
-	float dstratio = dsthi/dstlo;
-	float rsrcrange = 1. / (srchi - srclo);
+	float dstratio = dsthi * sc_reciprocal(dstlo);
+	float rsrcrange = sc_reciprocal(srchi - srclo);
 	float rrminuslo = rsrcrange * -srclo;
 
 	LOOP1(inNumSamples,
@@ -2514,7 +2441,7 @@ void LinExp_next_aa(LinExp *unit, int inNumSamples)
 		float zsrchi = ZXP(srchi);
 		float zsrclo = ZXP(srclo);
 		float dstratio = zdsthi/zdstlo;
-		float rsrcrange = 1. / (zsrchi - zsrclo);
+		float rsrcrange = sc_reciprocal(zsrchi - zsrclo);
 		float rrminuslo = rsrcrange * -zsrclo;
 		ZXP(out) = zdstlo * pow(dstratio, ZXP(in) * rsrcrange + rrminuslo);
 	);
@@ -2534,7 +2461,7 @@ void LinExp_next_ak(LinExp *unit, int inNumSamples)
 		float zsrchi = ZXP(srchi);
 		float zsrclo = ZXP(srclo);
 
-		float rsrcrange = 1. / (zsrchi - zsrclo);
+		float rsrcrange = sc_reciprocal(zsrchi - zsrclo);
 		float rrminuslo = rsrcrange * -zsrclo;
 		ZXP(out) = dstlo * pow(dstratio, ZXP(in) * rsrcrange + rrminuslo);
 	);
@@ -2548,7 +2475,7 @@ void LinExp_next_ka(LinExp *unit, int inNumSamples)
 	float srchi = ZIN0(2);
 	float *dstlo = ZIN(3);
 	float *dsthi = ZIN(4);
-	float rsrcrange = 1. / (srchi - srclo);
+	float rsrcrange = sc_reciprocal(srchi - srclo);
 	float rrminuslo = rsrcrange * -srclo;
 
 	LOOP1(inNumSamples,
@@ -2604,7 +2531,7 @@ static void LinExp_SetCalc(LinExp* unit)
 	float dsthi = ZIN0(4);
 	unit->m_dstlo = dstlo;
 	unit->m_dstratio = dsthi/dstlo;
-	unit->m_rsrcrange = 1. / (srchi - srclo);
+	unit->m_rsrcrange = sc_reciprocal(srchi - srclo);
 	unit->m_rrminuslo = unit->m_rsrcrange * -srclo;
 }
 
@@ -3142,7 +3069,7 @@ void EnvGen_next_ak(EnvGen *unit, int inNumSamples)
 }
 
 #ifdef NOVA_SIMD
-inline_functions void EnvGen_next_ak_nova(EnvGen *unit, int inNumSamples)
+FLATTEN void EnvGen_next_ak_nova(EnvGen *unit, int inNumSamples)
 {
 	float *out = ZOUT(0);
 	float gate = ZIN0(kEnvGen_gate);
@@ -3404,7 +3331,7 @@ inline_functions void EnvGen_next_ak_nova(EnvGen *unit, int inNumSamples)
 #endif
 
 #define CHECK_GATE \
-        prevGate = gate; \
+        float prevGate = gate; \
         gate = ZXP(gatein); \
         if (prevGate <= 0.f && gate > 0.f) { \
                 gatein--; \
@@ -3443,8 +3370,7 @@ void EnvGen_next_aa(EnvGen *unit, int inNumSamples)
 	float *gatein = ZIN(kEnvGen_gate);
 	int counter = unit->m_counter;
 	double level = unit->m_level;
-	float prevGate = unit->m_prevGate;
-	float gate = prevGate;
+	float gate = unit->m_prevGate;
 	int remain = inNumSamples;
 	while (remain)
 	{
@@ -3960,11 +3886,11 @@ void IEnvGen_Ctor(IEnvGen *unit)
 	unit->m_envvals = (float*)RTAlloc(unit->mWorld, (int)(numvals + 1.) * sizeof(float));
 
 	unit->m_envvals[0] = IN0(2);
-//	Print("%3.3f\n", unit->m_envvals[0]);
+	//	Print("offset of and initial  values %3,3f, %3.3f\n", offset, unit->m_envvals[0]);
 	// fill m_envvals with the values;
 	for (int i = 1; i <= numvals; i++) {
 	    unit->m_envvals[i] = IN0(4 + i);
-//	    Print("%3.3f\n", unit->m_envvals[i]);
+		//	    Print("val for: %d, %3.3f\n", i, unit->m_envvals[i]);
 	}
 
 //	float out = OUT0(0);
@@ -4061,26 +3987,27 @@ void IEnvGen_next_a(IEnvGen *unit, int inNumSamples)
 	}
 }
 
-
 void IEnvGen_next_k(IEnvGen *unit, int inNumSamples)
 {
 	float* out = OUT(0);
 	float level = unit->m_level;
-	float pointin = sc_max(IN0(0) - unit->m_offset, 0);
+	float pointin = IN0(0);
+	float offset = unit->m_offset;
 	int numStages = (int)IN0(3);
-
+	float point; // = unit->m_pointin;
+	
 	float totalDur = IN0(4);
+	
+	int stagemul;
 	// pointer, offset
 	// level0, numstages, totaldur,
-	float point = unit->m_pointin;
-
 	// [initval, [dur, shape, curve, level] * N ]
-
-	if (pointin == unit->m_pointin) {
-		Fill(inNumSamples, out, level);
-	} else {
-		float pointslope = CALCSLOPE(pointin, point);
-		for( int i = 0; i < inNumSamples; i++) {
+	
+	for( int i = 0; i < inNumSamples; i++) {
+		if (pointin == unit->m_pointin){
+			out[i] = level;
+		} else {
+			unit->m_pointin = point = sc_max(pointin - offset, 0.0);
 			float newtime = 0.f;
 			int stage = 0;
 			float seglen = 0.f;
@@ -4091,33 +4018,29 @@ void IEnvGen_next_k(IEnvGen *unit, int inNumSamples)
 					unit->m_level = level = unit->m_envvals[0];
 				} else {
 					float segpos = point;
-					// determine which segment the current time pointer needs calculated
+					// determine which segment the current time pointer needs
 					for(int j = 0; point >= newtime; j++) {
 						seglen = unit->m_envvals[(j * 4) + 1];
 						newtime += seglen;
 						segpos -= seglen;
 						stage = j;
-						}
-
+					}
+					stagemul = stage * 4;
 					segpos = segpos + seglen;
-					float begLevel = unit->m_envvals[(stage * 4)];
-					int shape = (int)unit->m_envvals[(stage * 4) + 2];
-					float curve = unit->m_envvals[(stage * 4) + 3];
-					float endLevel = unit->m_envvals[(stage * 4) + 4];
+					float begLevel = unit->m_envvals[stagemul];
+					int shape = (int)unit->m_envvals[stagemul + 2];
+					int curve = (int)unit->m_envvals[stagemul + 3];
+					float endLevel = unit->m_envvals[stagemul + 4];
 					float pos = (segpos / seglen);
-
+					
 					GET_ENV_VAL
 				}
 			}
 			out[i] = level;
-			point += pointslope;
 		}
-
-		unit->m_pointin = pointin;
 	}
 }
 
-
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
diff --git a/server/plugins/MFCC.cpp b/server/plugins/MFCC.cpp
index 2553d19..93fbc67 100644
--- a/server/plugins/MFCC.cpp
+++ b/server/plugins/MFCC.cpp
@@ -162,7 +162,7 @@ void MFCC_dofft(MFCC *unit, uint32 ibufnum)
 	//int numbins = buf->samples - 2 >> 1;
 
 	//assumed in this representation
-	SCComplexBuf *p = ToComplexApx(buf);
+	ToComplexApx(buf);
 
 	float * data= buf->data;
 
diff --git a/server/plugins/ML_SpecStats.cpp b/server/plugins/ML_SpecStats.cpp
index 18c1db1..d22441c 100644
--- a/server/plugins/ML_SpecStats.cpp
+++ b/server/plugins/ML_SpecStats.cpp
@@ -102,8 +102,6 @@ struct SpecCentroid : FFTAnalyser_Unit
 /*
 extern "C"
 {
-//	void load(InterfaceTable *inTable);
-
 	void SpecFlatness_Ctor(SpecFlatness *unit);
 	void SpecFlatness_next(SpecFlatness *unit, int inNumSamples);
 
@@ -187,7 +185,9 @@ void SpecFlatness_next(SpecFlatness *unit, int inNumSamples)
 	mean *= oneovern;
 
 	// Store the val for output in future calls
-	unit->outval = geommean / mean;
+	unit->outval = (mean==0.f ? 0.8f : (geommean / mean));
+	// Note: for silence the value is undefined.
+	// Here, for silence we instead output an empirical value based on very quiet white noise.
 
 	ZOUT0(0) = unit->outval;
 }
diff --git a/server/plugins/MouseUGens.cpp b/server/plugins/MouseUGens.cpp
deleted file mode 100644
index 4908de6..0000000
--- a/server/plugins/MouseUGens.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
-	SuperCollider real time audio synthesis system
-    Copyright (c) 2002 James McCartney. All rights reserved.
-	http://www.audiosynth.com
-
-    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
-*/
-
-
-#ifdef __APPLE__
-#include <Carbon/Carbon.h>
-#include <unistd.h>
-#else
-# ifndef _WIN32
-#  include <time.h>
-#  include <X11/Intrinsic.h>
-# else
-# include <windows.h>
-# endif
-#endif
-
-#include "SC_PlugIn.h"
-
-static InterfaceTable *ft;
-
-struct MouseUGenGlobalState {
-	float mouseX, mouseY;
-	bool mouseButton;
-} gMouseUGenGlobals;
-
-struct MouseInputUGen : public Unit
-{
-	MouseUGenGlobalState* gstate;
-	float m_y1, m_b1, m_lag;
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////////////
-
-extern "C"
-{
-	void MouseX_next(MouseInputUGen *unit, int inNumSamples);
-	void MouseY_next(MouseInputUGen *unit, int inNumSamples);
-	void MouseButton_next(MouseInputUGen *unit, int inNumSamples);
-
-	void MouseX_Ctor(MouseInputUGen *unit);
-	void MouseY_Ctor(MouseInputUGen *unit);
-	void MouseButton_Ctor(MouseInputUGen *unit);
-};
-
-//////////////////////////////////////////////////////////////////////////////////////////////////
-
-#ifdef __APPLE__
-# if (__x86_64__)
-
-void* gstate_update_func(void* arg)
-{
-	MouseUGenGlobalState* gstate = &gMouseUGenGlobals;
-
-	CGDirectDisplayID display = kCGDirectMainDisplay; // to grab the main display ID
-	CGRect bounds = CGDisplayBounds(display);
-	float rscreenWidth = 1. / bounds.size.width;
-	float rscreenHeight = 1. / bounds.size.height;
-	for (;;) {
-		HIPoint point;
-		HICoordinateSpace space = 2;
-		HIGetMousePosition(space, NULL, &point);
-
-		gstate->mouseX = point.x * rscreenWidth; //(float)p.h * rscreenWidth;
-		gstate->mouseY = point.y * rscreenHeight; //(float)p.v * rscreenHeight;
-		gstate->mouseButton = Button();
-		usleep(17000);
-	}
-
-	return 0;
-}
-
-# else
-
-void* gstate_update_func(void* arg)
-{
-	MouseUGenGlobalState* gstate = &gMouseUGenGlobals;
-	RgnHandle rgn = GetGrayRgn();
-	Rect screenBounds;
-	GetRegionBounds(rgn, &screenBounds);
-	float rscreenWidth = 1. / (screenBounds.right - screenBounds.left);
-	float rscreenHeight = 1. / (screenBounds.bottom - screenBounds.top);
-	for (;;) {
-		Point p;
-		GetGlobalMouse(&p);
-		gstate->mouseX = (float)p.h * rscreenWidth;
-		gstate->mouseY = (float)p.v * rscreenHeight;
-		gstate->mouseButton = Button();
-		usleep(17000);
-	}
-
-	return 0;
-}
-
-# endif
-
-#elif defined (_WIN32)
-
-void* gstate_update_func(void* arg)
-{
-	POINT p;
-	int mButton;
-	MouseUGenGlobalState* gstate;
-
-	if(GetSystemMetrics(SM_SWAPBUTTON))
-		mButton = VK_RBUTTON; // if  swapped
-	else
-		mButton = VK_LBUTTON; // not swapped (normal)
-
-	int screenWidth  = GetSystemMetrics( SM_CXSCREEN );
-	int screenHeight = GetSystemMetrics( SM_CYSCREEN );
-	// default: SM_CX/CYSCREEN gets the size of a primary screen.
-	// lines uncommented below are just for a specially need on multi-display.
-	//int screenWidth  = GetSystemMetrics( SM_CXVIRTUALSCREEN );
-	//int screenHeight = GetSystemMetrics( SM_CYVIRTUALSCREEN );
-	float r_screenWidth  = 1.f / (float)(screenWidth  -1);
-	float r_screenHeight = 1.f / (float)(screenHeight -1);
-
-	gstate = &gMouseUGenGlobals;
-
-	for(;;) {
-		GetCursorPos(&p);
-		gstate->mouseX = (float)p.x * r_screenWidth;
-		gstate->mouseY = 1.f - (float)p.y * r_screenHeight;
-		gstate->mouseButton = (GetKeyState(mButton) < 0);
-		::Sleep(17); // 17msec.
-	}
-	return 0;
-}
-
-# else
-static Display * d = 0;
-void* gstate_update_func(void* arg)
-{
-	MouseUGenGlobalState* gstate;
-	Window r;
-	Window rep_root, rep_child;
-	XWindowAttributes attributes;
-	int rep_rootx, rep_rooty ;
-	unsigned int rep_mask;
-	int dx, dy;
-	float r_width;
-	float r_height;
-	struct timespec requested_time, remaining_time;
-
-	requested_time.tv_sec = 0;
-	requested_time.tv_nsec = 17000 * 1000;
-
-	XInitThreads(); // x api is called by both mouse and keyboard ugens
-
-	d = XOpenDisplay ( NULL );
-	if (!d) return 0;
-
-	r = DefaultRootWindow ( d );
-	XGetWindowAttributes ( d, r, &attributes );
-	r_width = 1.0 / (float)attributes.width;
-	r_height = 1.0 / (float)attributes.height;
-
-	gstate = &gMouseUGenGlobals;
-
-	for (;;) {
-		XQueryPointer ( d, r,
-				&rep_root, &rep_child,
-				&rep_rootx, &rep_rooty,
-				&dx, &dy,
-				&rep_mask);
-
-		gstate->mouseX = (float)dx * r_width;
-		gstate->mouseY = 1.f - ( (float)dy * r_height );
-
-		gstate->mouseButton = (bool) ( rep_mask & Button1Mask );
-
-		nanosleep ( &requested_time , &remaining_time );
-	}
-
-	return 0;
-}
-#endif
-
-//////////////////////////////////////////////////////////////////////////////////////////////////
-
-void MouseX_next(MouseInputUGen *unit, int inNumSamples)
-{
-	// minval, maxval, warp, lag
-
-	float minval = ZIN0(0);
-	float maxval = ZIN0(1);
-	float warp = ZIN0(2);
-	float lag = ZIN0(3);
-
-	float y1 = unit->m_y1;
-	float b1 = unit->m_b1;
-
-	if (lag != unit->m_lag) {
-		unit->m_b1 = lag == 0.f ? 0.f : (float)exp(log001 / (lag * unit->mRate->mSampleRate));
-		unit->m_lag = lag;
-	}
-	float y0 = unit->gstate->mouseX;
-	if (warp == 0.0) {
-		y0 = (maxval - minval) * y0 + minval;
-	} else {
-		y0 = pow(maxval/minval, y0) * minval;
-	}
-	ZOUT0(0) = y1 = y0 + b1 * (y1 - y0);
-	unit->m_y1 = zapgremlins(y1);
-}
-
-void MouseX_Ctor(MouseInputUGen *unit)
-{
-	SETCALC(MouseX_next);
-	unit->gstate = &gMouseUGenGlobals;
-	unit->m_b1 = 0.f;
-	unit->m_lag = 0.f;
-	MouseX_next(unit, 1);
-}
-
-
-void MouseY_next(MouseInputUGen *unit, int inNumSamples)
-{
-	// minval, maxval, warp, lag
-
-	float minval = ZIN0(0);
-	float maxval = ZIN0(1);
-	float warp = ZIN0(2);
-	float lag = ZIN0(3);
-
-	float y1 = unit->m_y1;
-	float b1 = unit->m_b1;
-
-	if (lag != unit->m_lag) {
-		unit->m_b1 = lag == 0.f ? 0.f : (float)exp(log001 / (lag * unit->mRate->mSampleRate));
-		unit->m_lag = lag;
-	}
-	float y0 = unit->gstate->mouseY;
-	if (warp == 0.0) {
-		y0 = (maxval - minval) * y0 + minval;
-	} else {
-		y0 = pow(maxval/minval, y0) * minval;
-	}
-	ZOUT0(0) = y1 = y0 + b1 * (y1 - y0);
-	unit->m_y1 = zapgremlins(y1);
-}
-
-void MouseY_Ctor(MouseInputUGen *unit)
-{
-	SETCALC(MouseY_next);
-	unit->gstate = &gMouseUGenGlobals;
-	unit->m_b1 = 0.f;
-	unit->m_lag = 0.f;
-	MouseY_next(unit, 1);
-}
-
-
-void MouseButton_next(MouseInputUGen *unit, int inNumSamples)
-{
-	// minval, maxval, warp, lag
-
-	float minval = ZIN0(0);
-	float maxval = ZIN0(1);
-	float lag = ZIN0(2);
-
-	float y1 = unit->m_y1;
-	float b1 = unit->m_b1;
-
-	if (lag != unit->m_lag) {
-		unit->m_b1 = lag == 0.f ? 0.f : (float)exp(log001 / (lag * unit->mRate->mSampleRate));
-		unit->m_lag = lag;
-	}
-	float y0 = unit->gstate->mouseButton ? maxval : minval;
-	ZOUT0(0) = y1 = y0 + b1 * (y1 - y0);
-	unit->m_y1 = zapgremlins(y1);
-}
-
-void MouseButton_Ctor(MouseInputUGen *unit)
-{
-	SETCALC(MouseButton_next);
-	unit->gstate = &gMouseUGenGlobals;
-	unit->m_b1 = 0.f;
-	unit->m_lag = 0.f;
-	MouseButton_next(unit, 1);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////////////////
-
-// example of implementing a plug in command with async execution.
-
-struct MyPluginData // data for the global instance of the plugin
-{
-	float a, b;
-};
-
-struct MyCmdData // data for each command
-{
-	MyPluginData* myPlugin;
-	float x, y;
-	char *name;
-};
-
-MyPluginData gMyPlugin; // global
-
-bool cmdStage2(World* world, void* inUserData)
-{
-	// user data is the command.
-	MyCmdData* myCmdData = (MyCmdData*)inUserData;
-
-	// just print out the values
-	Print("cmdStage2 a %g  b %g  x %g  y %g  name %s\n",
-		myCmdData->myPlugin->a, myCmdData->myPlugin->b,
-		myCmdData->x, myCmdData->y,
-		myCmdData->name);
-
-	return true;
-}
-
-bool cmdStage3(World* world, void* inUserData)
-{
-	// user data is the command.
-	MyCmdData* myCmdData = (MyCmdData*)inUserData;
-
-	// just print out the values
-	Print("cmdStage3 a %g  b %g  x %g  y %g  name %s\n",
-		myCmdData->myPlugin->a, myCmdData->myPlugin->b,
-		myCmdData->x, myCmdData->y,
-		myCmdData->name);
-
-	// scsynth will perform completion message after this returns
-	return true;
-}
-
-bool cmdStage4(World* world, void* inUserData)
-{
-	// user data is the command.
-	MyCmdData* myCmdData = (MyCmdData*)inUserData;
-
-	// just print out the values
-	Print("cmdStage4 a %g  b %g  x %g  y %g  name %s\n",
-		myCmdData->myPlugin->a, myCmdData->myPlugin->b,
-		myCmdData->x, myCmdData->y,
-		myCmdData->name);
-
-	// scsynth will send /done after this returns
-	return true;
-}
-
-void cmdCleanup(World* world, void* inUserData)
-{
-	// user data is the command.
-	MyCmdData* myCmdData = (MyCmdData*)inUserData;
-
-	Print("cmdCleanup a %g  b %g  x %g  y %g  name %s\n",
-		myCmdData->myPlugin->a, myCmdData->myPlugin->b,
-		myCmdData->x, myCmdData->y,
-		myCmdData->name);
-
-	RTFree(world, myCmdData->name); // free the string
-	RTFree(world, myCmdData); // free command data
-	// scsynth will delete the completion message for you.
-}
-
-void cmdDemoFunc(World *inWorld, void* inUserData, struct sc_msg_iter *args, void *replyAddr)
-{
-	Print("->cmdDemoFunc %p\n", inUserData);
-
-	// user data is the plug-in's user data.
-	MyPluginData* thePlugInData = (MyPluginData*)inUserData;
-
-	// allocate command data, free it in cmdCleanup.
-	MyCmdData* myCmdData = (MyCmdData*)RTAlloc(inWorld, sizeof(MyCmdData));
-	myCmdData->myPlugin = thePlugInData;
-
-	// ..get data from args..
-	myCmdData->x = 0.;
-	myCmdData->y = 0.;
-	myCmdData->name = 0;
-
-	// float arguments
-	myCmdData->x = args->getf();
-	myCmdData->y = args->getf();
-
-	// how to pass a string argument:
-	const char *name = args->gets(); // get the string argument
-	if (name) {
-		myCmdData->name = (char*)RTAlloc(inWorld, strlen(name)+1); // allocate space, free it in cmdCleanup.
-		strcpy(myCmdData->name, name); // copy the string
-	}
-
-	// how to pass a completion message
-	int msgSize = args->getbsize();
-	char* msgData = 0;
-	if (msgSize) {
-		// allocate space for completion message
-		// scsynth will delete the completion message for you.
-		msgData = (char*)RTAlloc(inWorld, msgSize);
-		args->getb(msgData, msgSize); // copy completion message.
-	}
-
-	DoAsynchronousCommand(inWorld, replyAddr, "cmdDemoFunc", (void*)myCmdData,
-						  (AsyncStageFn)cmdStage2,
-						  (AsyncStageFn)cmdStage3,
-						  (AsyncStageFn)cmdStage4,
-						  cmdCleanup,
-						  msgSize, msgData);
-
-	Print("<-cmdDemoFunc\n");
-}
-
-/*
-to test the above, send the server these commands:
-
-
-SynthDef(\sine, { Out.ar(0, SinOsc.ar(800,0,0.2)) }).load(s);
-s.sendMsg(\cmd, \pluginCmdDemo, 7, 9, \mno, [\s_new, \sine, 900, 0, 0]);
-s.sendMsg(\n_free, 900);
-s.sendMsg(\cmd, \pluginCmdDemo, 7, 9, \mno);
-s.sendMsg(\cmd, \pluginCmdDemo, 7, 9);
-s.sendMsg(\cmd, \pluginCmdDemo, 7);
-s.sendMsg(\cmd, \pluginCmdDemo);
-
-*/
-
-PluginLoad(MouseUGens)
-{
-	ft = inTable;
-
-	pthread_t mouseListenThread;
-	pthread_create (&mouseListenThread, NULL, gstate_update_func, (void*)0);
-
-	DefineUnit("MouseX", sizeof(MouseInputUGen), (UnitCtorFunc)&MouseX_Ctor, 0, 0);
-	DefineUnit("MouseY", sizeof(MouseInputUGen), (UnitCtorFunc)&MouseY_Ctor, 0, 0);
-	DefineUnit("MouseButton", sizeof(MouseInputUGen), (UnitCtorFunc)&MouseButton_Ctor, 0, 0);
-
-	// define a plugin command - example code
-	gMyPlugin.a = 1.2f;
-	gMyPlugin.b = 3.4f;
-	DefinePlugInCmd("pluginCmdDemo", cmdDemoFunc, (void*)&gMyPlugin);
-}
-
-#ifdef __GNUC__
-#if !defined(__APPLE__) && !defined(_WIN32)
-static void __attribute__ ((destructor)) finalize(void)
-{
-	if (d)
-		XCloseDisplay(d);
-}
-#endif
-#endif
diff --git a/server/plugins/MulAddUGens.cpp b/server/plugins/MulAddUGens.cpp
index e5e6133..2b80fc3 100644
--- a/server/plugins/MulAddUGens.cpp
+++ b/server/plugins/MulAddUGens.cpp
@@ -19,701 +19,696 @@
 */
 
 
-#include "SC_PlugIn.h"
+#include "SC_PlugIn.hpp"
+#include "SIMD_Unit.hpp"
 
+static InterfaceTable *ft;
 
+namespace {
 
-#ifdef NOVA_SIMD
-#include "simd_memory.hpp"
-#include "simd_binary_arithmetic.hpp"
-#include "simd_ternary_arithmetic.hpp"
+struct MulAdd:
+	SIMD_Unit
+{
+	ControlRateInput<1> mMul;
+	ControlRateInput<2> mAdd;
+
+#define MULADD_CALCFUNC(METHOD_NAME)				\
+	do {											\
+		set_unrolled_calc_function<MulAdd, 			\
+				&MulAdd::METHOD_NAME<unrolled_64>,	\
+				&MulAdd::METHOD_NAME<unrolled>,		\
+				&MulAdd::METHOD_NAME<scalar> >();	\
+		return;										\
+	} while (0)
+
+	MulAdd(void)
+	{
+		mMul.init(this);
+		mAdd.init(this);
 
-using nova::slope_argument;
+		if (mCalcRate != calc_FullRate) {
+			set_calc_function<MulAdd, &MulAdd::next_scalar>();
+			return;
+		}
 
-#if defined(__GNUC__) && !defined(__clang__)
-#define inline_functions __attribute__ ((flatten))
-#else
-#define inline_functions
-#endif
+		assert(inRate(0) == calc_FullRate);
 
+		switch (inRate(1)) {
+		case calc_FullRate:
+			switch (inRate(2)) {
+			case calc_FullRate:
+				MULADD_CALCFUNC(next_aa);
 
-#endif
+			case calc_BufRate:
+				MULADD_CALCFUNC(next_ak);
 
+			case calc_ScalarRate:
+				if (mAdd == 0.f)
+					MULADD_CALCFUNC(next_a0);
+				else
+					MULADD_CALCFUNC(next_ai);
 
+			default:
+				assert(false);
+			}
 
-static InterfaceTable *ft;
+		case calc_BufRate:
+			switch (inRate(2)) {
+			case calc_FullRate:
+				MULADD_CALCFUNC(next_ka);
 
-//////////////////////////////////////////////////////////////////////////////////////////////////
+			case calc_BufRate:
+				MULADD_CALCFUNC(next_kk);
 
-#define MULIN IN(1)
-#define ADDIN IN(2)
+			case calc_ScalarRate:
+				if (mAdd == 0.f)
+					MULADD_CALCFUNC(next_k0);
+				else
+					MULADD_CALCFUNC(next_ki);
 
-struct MulAdd : public Unit
-{
-	float mPrevMul, mPrevAdd;
-};
+			default:
+				assert(false);
+			}
 
-extern "C"
-{
-	void MulAdd_Ctor(MulAdd *unit);
+		case calc_ScalarRate:
+			switch (inRate(2)) {
+			case calc_FullRate:
+				if (mMul == 1.0)
+					MULADD_CALCFUNC(next_1a);
+				else if (mMul == 0.f)
+					MULADD_CALCFUNC(next_0a);
+				else
+					MULADD_CALCFUNC(next_ia);
+
+			case calc_BufRate:
+				if (mMul == 1.0)
+					MULADD_CALCFUNC(next_1k);
+				else if (mMul == 0.f)
+					MULADD_CALCFUNC(next_0k);
+				else
+					MULADD_CALCFUNC(next_ik);
+
+			case calc_ScalarRate:
+				if (mMul == 1.0) {
+					if (mAdd == 0)
+						MULADD_CALCFUNC(next_10);
+					else
+						MULADD_CALCFUNC(next_1i);
+				}
 
-	// mul add functions for every occasion:
-	void ampmix_k(MulAdd *unit, int inNumSamples);
+				else if (mMul == 0.f) {
+					if (mAdd == 0.f)
+						MULADD_CALCFUNC(next_00);
+					else
+						MULADD_CALCFUNC(next_0i);
+				}
+				else {
+					if (mAdd == 0.f)
+						MULADD_CALCFUNC(next_i0);
+					else
+						MULADD_CALCFUNC(next_ii);
+				}
 
-	void ampmix_aa(MulAdd *unit, int inNumSamples);
-	void ampmix_ak(MulAdd *unit, int inNumSamples);
-	void ampmix_ai(MulAdd *unit, int inNumSamples);
+			default:
+				assert(false);
+			}
 
-	void ampmix_ka(MulAdd *unit, int inNumSamples);
-	void ampmix_kk(MulAdd *unit, int inNumSamples);
-	void ampmix_ki(MulAdd *unit, int inNumSamples);
+		default:
+			assert(false);
+		}
+	}
 
-	void ampmix_ia(MulAdd *unit, int inNumSamples);
-	void ampmix_ik(MulAdd *unit, int inNumSamples);
-	void ampmix_ii(MulAdd *unit, int inNumSamples);
-}
+	inline bool mulChanged(void) const
+	{
+		return mMul.changed(this);
+	}
 
-////////////////////////////////////////////////////////////////////////////////////////////////////////
+	inline bool addChanged(void) const
+	{
+		return mAdd.changed(this);
+	}
 
+#if __cplusplus <= 199711L
+	nova::detail::scalar_ramp_argument<float> mulSlope(void)
+#else
+	decltype(nova::slope_argument(0.f, 0.f)) mulSlope(void)
+#endif
+	{
+		return mMul.slope(this);
+	}
 
-void ampmix_k(MulAdd *unit, int inNumSamples);
-void ampmix_k(MulAdd *unit, int inNumSamples)
-{
-	ZOUT0(0) = ZIN0(0) * MULIN[0] + ADDIN[0];
-}
+#if __cplusplus <= 199711L
+	nova::detail::scalar_ramp_argument<float> addSlope(void)
+#else
+	decltype(nova::slope_argument(0.f, 0.f)) addSlope(void)
+#endif
+	{
+		return mAdd.slope(this);
+	}
 
-void ampmix_aa(MulAdd *unit, int inNumSamples);
-void ampmix_aa(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
-	float *amp = MULIN - ZOFF;
-	float *mix = ADDIN - ZOFF;
+	void next_scalar(int inNumSamples)
+	{
+		out0(0) = (in0(0) * in0(1)) + in0(2);
+	}
 
-	LOOP1(inNumSamples, ZXP(out) = ZXP(amp) * ZXP(in) + ZXP(mix); );
-}
+	template <int SIMD>
+	void next_aa(int inNumSamples)
+	{
+		muladd<SIMD>(out(0), in(0), in(1), in(2), inNumSamples);
+	}
 
-void ampmix_ak(MulAdd *unit, int inNumSamples);
-void ampmix_ak(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
-	float *amp = MULIN - ZOFF;
-
-	float mix_cur = unit->mPrevAdd;
-	float nextMix = ADDIN[0];
-	float mix_slope = CALCSLOPE(nextMix, mix_cur);
-	if (mix_slope == 0.f) {
-		if (mix_cur == 0.f) {
-			LOOP1(inNumSamples, ZXP(out) = ZXP(amp) * ZXP(in); );
-		} else {
-			LOOP1(inNumSamples, ZXP(out) = ZXP(amp) * ZXP(in) + mix_cur; );
+	template <int SIMD>
+	void next_ak(int inNumSamples)
+	{
+		if (addChanged())
+			muladd<SIMD>(out(0), in(0), in(1), addSlope(), inNumSamples);
+		else {
+			if (mAdd == 0.f)
+				times_vec<SIMD>(out(0), in(0), in(1), inNumSamples);
+			else
+				next_ai<SIMD>(inNumSamples);
 		}
-	} else {
-		LOOP1(inNumSamples, ZXP(out) = ZXP(amp) * ZXP(in) + mix_cur; mix_cur += mix_slope; );
-		unit->mPrevAdd = nextMix;
 	}
-}
-
-void ampmix_ai(MulAdd *unit, int inNumSamples);
-void ampmix_ai(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
-	float *amp = MULIN - ZOFF;
-	float mix_cur = unit->mPrevAdd;
 
-	LOOP1(inNumSamples, ZXP(out) = ZXP(amp) * ZXP(in) + mix_cur; );
-}
+	template <int SIMD>
+	void next_ai(int inNumSamples)
+	{
+		muladd<SIMD>(out(0), in(0), in(1), mAdd, inNumSamples);
+	}
 
-void ampmix_ka(MulAdd *unit, int inNumSamples);
-void ampmix_ka(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
-	float *mix = ADDIN - ZOFF;
-	float amp_cur = unit->mPrevMul;
-	float nextAmp = MULIN[0];
-	float amp_slope = CALCSLOPE(nextAmp, amp_cur);
-
-	if (amp_slope == 0.f) {
-		if (amp_cur == 0.f) {
-			ZCopy(inNumSamples, out, mix);
-		} else if (amp_cur == 1.f) {
-			LOOP1(inNumSamples, ZXP(out) = ZXP(in) + ZXP(mix); );
-		} else {
-			LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + ZXP(mix); );
-		}
-	} else {
-		LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + ZXP(mix); amp_cur += amp_slope; );
-		unit->mPrevMul = nextAmp;
+	template <int SIMD>
+	void next_ka(int inNumSamples)
+	{
+		if (mulChanged())
+			muladd<SIMD>(out(0), in(0), mulSlope(), in(2), inNumSamples);
+		else
+			next_ia<SIMD>(inNumSamples);
 	}
-}
 
-void ampmix_kk(MulAdd *unit, int inNumSamples);
-void ampmix_kk(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
-
-	float amp_cur = unit->mPrevMul;
-	float nextAmp = MULIN[0];
-	float amp_slope = CALCSLOPE(nextAmp, amp_cur);
-	float mix_cur = unit->mPrevAdd;
-	float nextMix = ADDIN[0];
-	float mix_slope = CALCSLOPE(nextMix, mix_cur);
-
-	if (amp_slope == 0.f) {
-		if (mix_slope == 0.f) {
-			if (mix_cur == 0.f) {
-				if (amp_cur == 1.f) {
-					if (out != in)
-						ZCopy(inNumSamples, out, in);
-				} else if (amp_cur == 0.f) {
-					ZClear(inNumSamples, out);
-				} else {
-					LOOP1(inNumSamples, ZXP(out) = ZXP(in) * amp_cur;);
-				}
-			} else {
-				if (amp_cur == 1.f) {
-					LOOP1(inNumSamples, ZXP(out) = ZXP(in) + mix_cur;);
-				} else if (amp_cur == 0.f) {
-					LOOP1(inNumSamples, ZXP(out) = mix_cur;);
-				} else {
-					LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; );
-				}
-			}
-		} else {
-			if (amp_cur == 1.f) {
-				LOOP1(inNumSamples, ZXP(out) = ZXP(in) + mix_cur; mix_cur += mix_slope;);
-			} else if (amp_cur == 0.f) {
-				LOOP1(inNumSamples, ZXP(out) = mix_cur; mix_cur += mix_slope;);
-			} else {
-				LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; mix_cur += mix_slope; );
-			}
-			unit->mPrevAdd = nextMix;
-		}
-	} else {
-		if (mix_slope == 0.f) {
-			if (mix_cur == 0.f) {
-				LOOP1(inNumSamples, ZXP(out) = ZXP(in) * amp_cur; amp_cur += amp_slope; );
-			} else {
-				LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; amp_cur += amp_slope; );
+	template <int SIMD>
+	void next_kk(int inNumSamples)
+	{
+		if (addChanged()) {
+			if (mulChanged())
+				muladd<SIMD>(out(0), in(0), mulSlope(), addSlope(), inNumSamples);
+			else {
+				if (mMul == 0)
+					slope_vec<SIMD>(out(0), addSlope(), inNumSamples);
+				else if (mMul == 1.f)
+					plus_vec<SIMD>(out(0), in(0), addSlope(), inNumSamples);
+				else
+					muladd<SIMD>(out(0), in(0), mMul, addSlope(), inNumSamples);
 			}
-		} else {
-			LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; amp_cur += amp_slope; mix_cur += mix_slope; );
-			unit->mPrevAdd = nextMix;
-		}
-		unit->mPrevMul = nextAmp;
+		} else
+			next_ki<SIMD>(inNumSamples);
 	}
-}
 
-void ampmix_ki(MulAdd *unit, int inNumSamples);
-void ampmix_ki(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
-
-	float amp_cur = unit->mPrevMul;
-	float nextAmp = MULIN[0];
-	float amp_slope = CALCSLOPE(nextAmp, amp_cur);
-	float mix_cur = unit->mPrevAdd;
-	//postbuf("ampmix_ki %p %g %g\n", out, amp_cur, mix_cur);
-
-	if (amp_slope == 0.f) {
-		if (amp_cur == 1.f) {
-			LOOP1(inNumSamples, ZXP(out) = ZXP(in) + mix_cur;);
-		} else if (amp_cur == 0.f) {
-			LOOP1(inNumSamples, ZXP(out) = mix_cur;);
-		} else {
-			LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; );
-		}
-	} else {
-		LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; amp_cur += amp_slope; );
-		unit->mPrevMul = nextAmp;
+	template <int SIMD>
+	void next_ki(int inNumSamples)
+	{
+		if (mulChanged())
+			muladd<SIMD>(out(0), in(0), mulSlope(), mAdd, inNumSamples);
+		else
+			next_ii<SIMD>(inNumSamples);
 	}
-}
-
-void ampmix_ia(MulAdd *unit, int inNumSamples);
-void ampmix_ia(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
-	float *mix = ADDIN - ZOFF;
-	float amp_cur = unit->mPrevMul;
-
-#ifdef IPHONE_VEC
-	in++;
-	out++;
-	mix++;
-	vscalarmul(in, amp_cur, in, inNumSamples);
-	vadd(out, in, mix, inNumSamples);
-#else
-	LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + ZXP(mix); );
-#endif
-}
-
 
-void ampmix_ik(MulAdd *unit, int inNumSamples);
-void ampmix_ik(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
+	template <int SIMD>
+	void next_ia(int inNumSamples)
+	{
+		if (mMul == 0)
+			next_0a<SIMD>(inNumSamples);
+		else if (mMul == 1.0)
+			next_1a<SIMD>(inNumSamples);
+		else
+			muladd<SIMD>(out(0), in(0), mMul, in(2), inNumSamples);
+	}
 
-	float amp_cur = unit->mPrevMul;
-	float mix_cur = unit->mPrevAdd;
-	float nextMix = ADDIN[0];
-	float mix_slope = CALCSLOPE(nextMix, mix_cur);
+	template <int SIMD>
+	void next_ik(int inNumSamples)
+	{
+		if (addChanged()) {
+			if (mMul == 0.f)
+				slope_vec<SIMD>(out(0), addSlope(), inNumSamples);
+			else if (mMul == 1.f)
+				plus_vec<SIMD>(out(0), in(0), addSlope(), inNumSamples);
+			else
+				muladd<SIMD>(out(0), in(0), mMul, addSlope(), inNumSamples);
+		} else
+			next_ii<SIMD>(inNumSamples);
+	}
 
-	if (mix_slope == 0.f) {
-		if (mix_cur == 0.f) {
-			LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in); );
+	template <int SIMD>
+	void next_ii(int inNumSamples)
+	{
+		if (mMul == 0)
+			next_0i<SIMD>(inNumSamples);
+		else if (mMul == 1.f) {
+			next_1i<SIMD>(inNumSamples);
 		} else {
-			LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; );
+			if (mAdd == 0)
+				times_vec<SIMD>(out(0), in(0), mMul, inNumSamples);
+			else
+				muladd<SIMD>(out(0), in(0), mMul, mAdd, inNumSamples);
 		}
-	} else {
-		LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; mix_cur += mix_slope; );
-		unit->mPrevAdd = nextMix;
 	}
-}
-
-void ampmix_ii(MulAdd *unit, int inNumSamples);
-void ampmix_ii(MulAdd *unit, int inNumSamples)
-{
-	float *in = ZIN(0);
-	float *out = ZOUT(0);
-
-	float amp_cur = unit->mPrevMul;
-	float mix_cur = unit->mPrevAdd;
-	LOOP1(inNumSamples, ZXP(out) = amp_cur * ZXP(in) + mix_cur; );
-}
 
-#ifdef NOVA_SIMD
-inline_functions void ampmix_aa_nova(MulAdd *unit, int inNumSamples)
-{
-	nova::muladd_vec_simd(OUT(0), IN(0), MULIN,
-						  ADDIN, inNumSamples);
-}
+	template <int SIMD>
+	void next_1a(int inNumSamples)
+	{
+		plus_vec<SIMD>(out(0), in(0), in(2), inNumSamples);
+	}
 
-inline_functions void ampmix_aa_nova_64(MulAdd *unit, int inNumSamples)
-{
-	nova::muladd_vec_simd<64>(OUT(0), IN(0), MULIN, ADDIN);
-}
+	template <int SIMD>
+	void next_1k(int inNumSamples)
+	{
+		if (addChanged())
+			plus_vec<SIMD>(out(0), in(0), addSlope(), inNumSamples);
+		else
+			next_1i<SIMD>(inNumSamples);
+	}
 
-inline_functions void ampmix_ak_nova(MulAdd *unit, int inNumSamples)
-{
-	float mix_cur = unit->mPrevAdd;
-	float nextMix = ADDIN[0];
-	if (nextMix == mix_cur) {
-		if (mix_cur == 0.f)
-			nova::times_vec_simd(OUT(0), IN(0), MULIN, inNumSamples);
+	template <int SIMD>
+	void next_1i(int inNumSamples)
+	{
+		if (mAdd == 0)
+			copy_vec<SIMD>(out(0), in(0), inNumSamples);
 		else
-			nova::muladd_vec_simd(OUT(0), IN(0), MULIN, mix_cur, inNumSamples);
-	} else {
-		float mix_slope = CALCSLOPE(nextMix, mix_cur);
-		unit->mPrevAdd = nextMix;
-		nova::muladd_vec_simd(OUT(0), IN(0), MULIN,
-							  slope_argument(mix_cur, mix_slope), inNumSamples);
+			plus_vec<SIMD>(out(0), in(0), mAdd, inNumSamples);
 	}
-}
 
-inline_functions void ampmix_ak_nova_64(MulAdd *unit, int inNumSamples)
-{
-	float mix_cur = unit->mPrevAdd;
-	float nextMix = ADDIN[0];
-	if (nextMix == mix_cur) {
-		if (mix_cur == 0.f)
-			nova::times_vec_simd<64>(OUT(0), IN(0), MULIN);
+	template <int SIMD>
+	void next_0a(int inNumSamples)
+	{
+		copy_vec<SIMD>(out(0), in(2), inNumSamples);
+	}
+
+	template <int SIMD>
+	void next_0k(int inNumSamples)
+	{
+		if (addChanged())
+			slope_vec<SIMD>(out(0), addSlope(), inNumSamples);
 		else
-			nova::muladd_vec_simd<64>(OUT(0), IN(0), MULIN,
-										 mix_cur);
-	} else {
-		float mix_slope = CALCSLOPE(nextMix, mix_cur);
-		unit->mPrevAdd = nextMix;
-		nova::muladd_vec_simd<64>(OUT(0), IN(0), MULIN,
-								  slope_argument(mix_cur, mix_slope));
+			next_0i<SIMD>(inNumSamples);
 	}
-}
 
-inline_functions void ampmix_ai_nova(MulAdd *unit, int inNumSamples)
-{
-	nova::muladd_vec_simd(OUT(0), IN(0), MULIN,
-						  unit->mPrevAdd, inNumSamples);
-}
+	template <int SIMD>
+	void next_0i(int inNumSamples)
+	{
+		set_vec<SIMD>(out(0), mAdd, inNumSamples);
+	}
 
-inline_functions void ampmix_ai_nova_64(MulAdd *unit, int inNumSamples)
-{
-	nova::muladd_vec_simd<64>(OUT(0), IN(0), MULIN,
-							  unit->mPrevAdd);
-}
+	template <int SIMD>
+	void next_a0(int inNumSamples)
+	{
+		times_vec<SIMD>(out(0), in(0), in(1), inNumSamples);
+	}
 
-inline_functions void ampmix_ka_nova(MulAdd *unit, int inNumSamples)
-{
-	float amp_cur = unit->mPrevMul;
-	float nextAmp = MULIN[0];
-
-	if (amp_cur == nextAmp) {
-		if (amp_cur == 0.f)
-			nova::copyvec_simd(OUT(0), ADDIN, inNumSamples);
-		else if (amp_cur == 1.f)
-			nova::plus_vec_simd(OUT(0), IN(0), ADDIN, inNumSamples);
+	template <int SIMD>
+	void next_k0(int inNumSamples)
+	{
+		if (mulChanged())
+			times_vec<SIMD>(out(0), in(0), mulSlope(), inNumSamples);
 		else
-			nova::muladd_vec_simd(OUT(0), IN(0), amp_cur,
-								  ADDIN, inNumSamples);
-	} else {
-		float amp_slope = CALCSLOPE(nextAmp, amp_cur);
-		unit->mPrevMul = nextAmp;
-		nova::muladd_vec_simd(OUT(0), IN(0), slope_argument(amp_cur, amp_slope),
-							  ADDIN, inNumSamples);
+			next_ik<SIMD>(inNumSamples);
 	}
-}
 
-inline_functions void ampmix_ka_nova_64(MulAdd *unit, int inNumSamples)
-{
-	float amp_cur = unit->mPrevMul;
-	float nextAmp = MULIN[0];
-
-	if (amp_cur == nextAmp) {
-		if (amp_cur == 0.f)
-			nova::copyvec_simd<64>(OUT(0), ADDIN);
-		else if (amp_cur == 1.f)
-			nova::plus_vec_simd<64>(OUT(0), IN(0), ADDIN);
+	template <int SIMD>
+	void next_i0(int inNumSamples)
+	{
+		if (mMul == 0.f)
+			next_00<SIMD>(inNumSamples);
+		else if (mMul == 1.f)
+			next_10<SIMD>(inNumSamples);
 		else
-			nova::muladd_vec_simd<64>(OUT(0), IN(0), amp_cur,
-										 ADDIN);
-	} else {
-		float amp_slope = CALCSLOPE(nextAmp, amp_cur);
-		unit->mPrevMul = nextAmp;
-		nova::muladd_vec_simd<64>(OUT(0), IN(0), slope_argument(amp_cur, amp_slope),
-								  ADDIN);
+			times_vec<SIMD>(out(0), in(0), mMul, inNumSamples);
+	}
+
+	template <int SIMD>
+	void next_10(int inNumSamples)
+	{
+		copy_vec<SIMD>(out(0), in(0), inNumSamples);
 	}
-}
 
-inline_functions void ampmix_kk_nova(MulAdd *unit, int inNumSamples)
+	template <int SIMD>
+	void next_00(int inNumSamples)
+	{
+		set_vec<SIMD>(out(0), 0.f, inNumSamples);
+	}
+};
+
+DEFINE_XTORS(MulAdd)
+
+struct Sum3:
+	SIMD_Unit
 {
-	float amp_cur = unit->mPrevMul;
-	float nextAmp = MULIN[0];
-	float mix_cur = unit->mPrevAdd;
-	float nextMix = ADDIN[0];
-
-	if (nextAmp == amp_cur) {
-		if (nextMix == mix_cur) {
-			if (mix_cur == 0.f) {
-					if (amp_cur == 1.f) {
-						if (ZOUT(0) != ZIN(0))
-							ZCopy(inNumSamples, ZOUT(0), ZIN(0));
-					} else if (amp_cur == 0.f)
-						nova::zerovec_simd(OUT(0), inNumSamples);
-					else
-						nova::times_vec_simd(OUT(0), IN(0), amp_cur, inNumSamples);
-				} else {
-					if (amp_cur == 1.f)
-						nova::plus_vec_simd(OUT(0), IN(0), mix_cur, inNumSamples);
-					else if (amp_cur == 0.f)
-						nova::setvec_simd(OUT(0), mix_cur, inNumSamples);
-					else
-						nova::muladd_vec_simd(OUT(0), IN(0), amp_cur,
-											  mix_cur, inNumSamples);
-				}
-		} else {
-			float mix_slope = CALCSLOPE(nextMix, mix_cur);
-			if (amp_cur == 1.f)
-				nova::plus_vec_simd(OUT(0), IN(0), slope_argument(mix_cur, mix_slope), inNumSamples);
-			else if (amp_cur == 0.f)
-				nova::set_slope_vec_simd(OUT(0), mix_cur, mix_slope, inNumSamples);
-			else
-				nova::muladd_vec_simd(OUT(0), IN(0), amp_cur,
-									  slope_argument(mix_cur, mix_slope), inNumSamples);
-			unit->mPrevAdd = nextMix;
+	ControlRateInput<1> in1;
+	ControlRateInput<2> in2;
+
+	Sum3(void)
+	{
+		in1.init(this);
+		in2.init(this);
+
+		if (mCalcRate != calc_FullRate) {
+			set_calc_function<Sum3, &Sum3::next_scalar>();
+			return;
 		}
-	} else {
-		float amp_slope = CALCSLOPE(nextAmp, amp_cur);
-		if (nextMix == mix_cur) {
-			if (mix_cur == 0.f)
-				nova::times_vec_simd(OUT(0), IN(0), slope_argument(amp_cur, amp_slope), inNumSamples);
-			else
-				nova::muladd_vec_simd(OUT(0), IN(0), slope_argument(amp_cur, amp_slope),
-									  mix_cur, inNumSamples);
-		} else {
-			float mix_slope = CALCSLOPE(nextMix, mix_cur);
-			nova::muladd_vec_simd(OUT(0), IN(0), slope_argument(amp_cur, amp_slope),
-								  slope_argument(mix_cur, mix_slope), inNumSamples);
-			unit->mPrevAdd = nextMix;
+
+		assert(inRate(0) == calc_FullRate);
+
+		switch (inRate(1)) {
+		case calc_FullRate:
+			switch (inRate(2)) {
+			case calc_FullRate:
+				set_vector_calc_function<Sum3, &Sum3::next_aaa<true>, &Sum3::next_aaa<false> >();
+				return;
+
+			case calc_BufRate:
+				set_vector_calc_function<Sum3, &Sum3::next_aak<true>, &Sum3::next_aak<false> >();
+				return;
+
+			case calc_ScalarRate:
+				set_vector_calc_function<Sum3, &Sum3::next_aai<true>, &Sum3::next_aai<false> >();
+				return;
+
+			default:
+				assert(false);
+			}
+
+		case calc_BufRate:
+			switch (inRate(2)) {
+				case calc_BufRate:
+					set_vector_calc_function<Sum3, &Sum3::next_akk<true>, &Sum3::next_akk<false> >();
+					return;
+
+				case calc_ScalarRate:
+					set_vector_calc_function<Sum3, &Sum3::next_aki<true>, &Sum3::next_aki<false> >();
+					return;
+
+				default:
+					assert(false);
+			}
+
+		case calc_ScalarRate:
+			assert (inRate(2) == calc_ScalarRate);
+			set_vector_calc_function<Sum3, &Sum3::next_aii<true>, &Sum3::next_aii<false> >();
+			return;
+
+		default:
+			assert(false);
 		}
-		unit->mPrevMul = nextAmp;
 	}
-}
 
-inline_functions void ampmix_ki_nova(MulAdd *unit, int inNumSamples)
-{
-	float amp_cur = unit->mPrevMul;
-	float nextAmp = MULIN[0];
-	float mix_cur = unit->mPrevAdd;
-
-	if (nextAmp == amp_cur) {
-		if (amp_cur == 1.f)
-			nova::plus_vec_simd(OUT(0), IN(0), mix_cur, inNumSamples);
-		else if (amp_cur == 0.f)
-			nova::setvec_simd(OUT(0), mix_cur, inNumSamples);
+	template <bool SIMD, typename Arg1, typename Arg2, typename Arg3>
+	static void sum_vec(float * out, Arg1 const & arg1, Arg2 const & arg2, Arg3 const & arg3, int inNumSamples)
+	{
+		if (SIMD)
+			nova::sum_vec_simd(out, arg1, arg2, arg3, inNumSamples);
 		else
-			nova::muladd_vec_simd(OUT(0), IN(0), amp_cur,
-								  mix_cur, inNumSamples);
-	} else {
-		float amp_slope = CALCSLOPE(nextAmp, amp_cur);
-		nova::muladd_vec_simd(OUT(0), IN(0), slope_argument(amp_cur, amp_slope),
-							  mix_cur, inNumSamples);
-		unit->mPrevMul = nextAmp;
+			nova::sum_vec(out, arg1, arg2, arg3, inNumSamples);
 	}
-}
 
-inline_functions void ampmix_ki_nova_64(MulAdd *unit, int inNumSamples)
-{
-	float amp_cur = unit->mPrevMul;
-	float nextAmp = MULIN[0];
-	float mix_cur = unit->mPrevAdd;
-
-	if (nextAmp == amp_cur) {
-		if (amp_cur == 1.f)
-			nova::plus_vec_simd<64>(OUT(0), IN(0), mix_cur);
-		else if (amp_cur == 0.f)
-			nova::setvec_simd<64>(OUT(0), mix_cur);
-		else
-			nova::muladd_vec_simd<64>(OUT(0), IN(0), amp_cur,
-										 mix_cur);
-	} else {
-		float amp_slope = CALCSLOPE(nextAmp, amp_cur);
-		nova::muladd_vec_simd<64>(OUT(0), IN(0), slope_argument(amp_cur, amp_slope),
-								  mix_cur);
-		unit->mPrevMul = nextAmp;
+	void next_scalar(int inNumSamples)
+	{
+		out0(0) = in0(0) + in0(1) + in0(2);
 	}
-}
 
-inline_functions void ampmix_ia_nova(MulAdd *unit, int inNumSamples)
-{
-	nova::muladd_vec_simd(OUT(0), IN(0), unit->mPrevMul,
-						  ADDIN, inNumSamples);
-}
+	template <bool SIMD>
+	void next_aaa(int inNumSamples)
+	{
+		sum_vec<SIMD>(out(0), in(0), in(1), in(2), inNumSamples);
+	}
 
-inline_functions void ampmix_ia_nova_64(MulAdd *unit, int inNumSamples)
-{
-	nova::muladd_vec_simd<64>(OUT(0), IN(0), unit->mPrevMul,
-							  ADDIN);
-}
+	template <bool SIMD>
+	void next_aak(int inNumSamples)
+	{
+		if (in2.changed(this))
+			sum_vec<SIMD>(out(0), in(0), in(1), in2.slope(this), inNumSamples);
+		else
+			next_aai<SIMD>(inNumSamples);
+	}
 
-inline_functions void ampmix_ik_nova(MulAdd *unit, int inNumSamples)
-{
-	float amp_cur = unit->mPrevMul;
-	float mix_cur = unit->mPrevAdd;
-	float nextMix = ADDIN[0];
+	template <bool SIMD>
+	void next_aai(int inNumSamples)
+	{
+		sum_vec<SIMD>(out(0), in(0), in(1), in2, inNumSamples);
+	}
 
-	if (nextMix == mix_cur) {
-		if (mix_cur == 0.f)
-			nova::times_vec_simd(OUT(0), IN(0), amp_cur, inNumSamples);
+	template <bool SIMD>
+	void next_aki(int inNumSamples)
+	{
+		if (in1.changed(this))
+			sum_vec<SIMD>(out(0), in(0), in1.slope(this), in2, inNumSamples);
 		else
-			nova::muladd_vec_simd(OUT(0), IN(0), amp_cur,
-								  mix_cur, inNumSamples);
-	} else {
-		float mix_slope = CALCSLOPE(nextMix, mix_cur);
-		nova::muladd_vec_simd(OUT(0), IN(0), amp_cur,
-							  slope_argument(mix_cur, mix_slope), inNumSamples);
-		unit->mPrevAdd = nextMix;
+			next_aii<SIMD>(inNumSamples);
 	}
-}
 
-inline_functions void ampmix_ik_nova_64(MulAdd *unit, int inNumSamples)
-{
-	float amp_cur = unit->mPrevMul;
-	float mix_cur = unit->mPrevAdd;
-	float nextMix = ADDIN[0];
+	template <bool SIMD>
+	void next_akk(int inNumSamples)
+	{
+		if (in2.changed(this)) {
+			if (in1.changed(this))
+				sum_vec<SIMD>(out(0), in(0), in1.slope(this), in2.slope(this), inNumSamples);
+			else
+				sum_vec<SIMD>(out(0), in(0), in1, in2.slope(this), inNumSamples);
+		} else
+			next_aki<SIMD>(inNumSamples);
+	}
 
-	if (nextMix == mix_cur) {
-		if (mix_cur == 0.f)
-			nova::times_vec_simd<64>(OUT(0), IN(0), amp_cur);
-		else
-			nova::muladd_vec_simd<64>(OUT(0), IN(0), amp_cur, mix_cur);
-	} else {
-		float mix_slope = CALCSLOPE(nextMix, mix_cur);
-		nova::muladd_vec_simd<64>(OUT(0), IN(0), amp_cur,
-								  slope_argument(mix_cur, mix_slope));
-		unit->mPrevAdd = nextMix;
+	template <bool SIMD>
+	void next_aii(int inNumSamples)
+	{
+		sum_vec<SIMD>(out(0), in(0), in0(1), in0(2), inNumSamples);
 	}
-}
+};
 
-inline_functions void ampmix_ii_nova(MulAdd *unit, int inNumSamples)
-{
-	nova::muladd_vec_simd(OUT(0), IN(0), unit->mPrevMul,
-						  unit->mPrevAdd, inNumSamples);
-}
+DEFINE_XTORS(Sum3)
 
-inline_functions void ampmix_ii_nova_64(MulAdd *unit, int inNumSamples)
+struct Sum4:
+	SIMD_Unit
 {
-	nova::muladd_vec_simd<64>(OUT(0), IN(0), unit->mPrevMul,
-							  unit->mPrevAdd);
-}
+	ControlRateInput<1> in1;
+	ControlRateInput<2> in2;
+	ControlRateInput<3> in3;
 
-#endif
+	Sum4(void)
+	{
+		in1.init(this);
+		in2.init(this);
+		in3.init(this);
 
+		if (mCalcRate != calc_FullRate) {
+			set_calc_function<Sum4, &Sum4::next_scalar>();
+			return;
+		}
 
+		assert(inRate(0) == calc_FullRate);
 
+		switch (inRate(1)) {
+		case calc_FullRate:
+			switch (inRate(2)) {
+			case calc_FullRate:
+				switch (inRate(3)) {
+				case calc_FullRate:
+					set_vector_calc_function<Sum4, &Sum4::next_aaaa<true>, &Sum4::next_aaaa<false> >();
+					return;
 
-////////////////////////////////////////////////////////////////////////////////////////////////////////
+				case calc_BufRate:
+					set_vector_calc_function<Sum4, &Sum4::next_aaak<true>, &Sum4::next_aaak<false> >();
+					return;
 
-void MulAdd_Ctor(MulAdd *unit)
-{
-	if (unit->mCalcRate != calc_FullRate) {
-		unit->mCalcFunc = (UnitCalcFunc)&ampmix_k;
-		ampmix_k(unit, 1);
-		return;
-	}
+				case calc_ScalarRate:
+					set_vector_calc_function<Sum4, &Sum4::next_aaai<true>, &Sum4::next_aaai<false> >();
+					return;
 
-	unit->mPrevMul = ZIN0(1);
-	unit->mPrevAdd = ZIN0(2);
+				default:
+					assert(false);
+				}
 
-	int mulRate = INRATE(1);
-	int addRate = INRATE(2);
+			case calc_BufRate:
+				switch (inRate(3)) {
+				case calc_BufRate:
+					set_vector_calc_function<Sum4, &Sum4::next_aakk<true>, &Sum4::next_aakk<false> >();
+					return;
 
-	//Print("muladd %d %d %g %g\n", mulRate, addRate, unit->mPrevMul, unit->mPrevAdd);
-	//Print("**** %p %p %p    %p\n", IN(0), IN(1), IN(2), OUT(0));
+				case calc_ScalarRate:
+					set_vector_calc_function<Sum4, &Sum4::next_aaki<true>, &Sum4::next_aaki<false> >();
+					return;
 
+				default:
+					assert(false);
+				}
 
-#if defined (NOVA_SIMD)
-	if ((BUFLENGTH & 15))
-	{
-#endif
-		switch (mulRate) {
-		case calc_FullRate :
-			switch (addRate) {
-				case calc_FullRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_aa;
-					break;
-				case calc_BufRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_ak;
-					break;
-				case calc_ScalarRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_ai;
-					break;
-			}
-			break;
-		case calc_BufRate :
-			switch (addRate) {
-				case calc_FullRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_ka;
-					break;
-				case calc_BufRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_kk;
-					break;
-				case calc_ScalarRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_ki;
-					break;
-			}
-			break;
-		case calc_ScalarRate :
-			switch (addRate) {
-				case calc_FullRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_ia;
-					break;
-				case calc_BufRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_ik;
-					break;
-				case calc_ScalarRate :
-					unit->mCalcFunc = (UnitCalcFunc)&ampmix_ii;
-					break;
-			}
-			break;
-		}
+			case calc_ScalarRate:
+				switch (inRate(3)) {
+				case calc_ScalarRate:
+					set_vector_calc_function<Sum4, &Sum4::next_aaii<true>, &Sum4::next_aaii<false> >();
+					return;
 
-#if defined (NOVA_SIMD)
-	} else {
-		if (BUFLENGTH == 64) {
-		switch (mulRate) {
-			case calc_FullRate :
-				switch (addRate) {
-					case calc_FullRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_aa_nova_64;
-						break;
-					case calc_BufRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ak_nova_64;
-						break;
-					case calc_ScalarRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ai_nova_64;
-						break;
-				}
-				break;
-			case calc_BufRate :
-				switch (addRate) {
-					case calc_FullRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ka_nova_64;
-						break;
-					case calc_BufRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_kk_nova;
-						break;
-					case calc_ScalarRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ki_nova_64;
-						break;
+				default:
+					assert(false);
 				}
-				break;
-			case calc_ScalarRate :
-				switch (addRate) {
-					case calc_FullRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ia_nova_64;
-						break;
-					case calc_BufRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ik_nova_64;
-						break;
-					case calc_ScalarRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ii_nova_64;
-						break;
-				}
-				break;
-		}
-		} else {
-		switch (mulRate) {
-			case calc_FullRate :
-				switch (addRate) {
-					case calc_FullRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_aa_nova;
-						break;
-					case calc_BufRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ak_nova;
-						break;
-					case calc_ScalarRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ai_nova;
-						break;
+			}
+		case calc_BufRate:
+			switch (inRate(2)) {
+			case calc_BufRate:
+				switch (inRate(3)) {
+				case calc_BufRate:
+					set_vector_calc_function<Sum4, &Sum4::next_akkk<true>, &Sum4::next_akkk<false> >();
+					return;
+
+				case calc_ScalarRate:
+					set_vector_calc_function<Sum4, &Sum4::next_akki<true>, &Sum4::next_akki<false> >();
+					return;
+
+				default:
+					assert(false);
 				}
-				break;
-			case calc_BufRate :
-				switch (addRate) {
-					case calc_FullRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ka_nova;
-						break;
-					case calc_BufRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_kk_nova;
-						break;
-					case calc_ScalarRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ki_nova;
-						break;
+
+			case calc_ScalarRate:
+				switch (inRate(3)) {
+				case calc_ScalarRate:
+					set_vector_calc_function<Sum4, &Sum4::next_akii<true>, &Sum4::next_akii<false> >();
+					return;
+
+				default:
+					assert(false);
 				}
-				break;
-			case calc_ScalarRate :
-				switch (addRate) {
-					case calc_FullRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ia_nova;
-						break;
-					case calc_BufRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ik_nova;
-						break;
-					case calc_ScalarRate :
-						unit->mCalcFunc = (UnitCalcFunc)&ampmix_ii_nova;
-						break;
+			}
+
+		case calc_ScalarRate:
+			switch (inRate(2)) {
+			case calc_ScalarRate:
+				switch (inRate(3)) {
+				case calc_ScalarRate:
+					set_vector_calc_function<Sum4, &Sum4::next_aiii<true>, &Sum4::next_aiii<false> >();
+					return;
+
+				default:
+					assert(false);
 				}
-				break;
-		}
+
+			default:
+				assert(false);
+			}
+
+		default:
+			assert(false);
 		}
-    }
-#endif
-	ampmix_k(unit, 1);
-}
+	}
+
+	void next_scalar(int inNumSamples)
+	{
+		out0(0) = in0(0) + in0(1) + in0(2) + in0(3);
+	}
+
+	template <bool SIMD, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+	static void sum_vec(float * out, Arg1 const & arg1, Arg2 const & arg2, Arg3 const & arg3, Arg4 const & arg4, int inNumSamples)
+	{
+		if (SIMD)
+			nova::sum_vec_simd(out, arg1, arg2, arg3, arg4, inNumSamples);
+		else
+			nova::sum_vec(out, arg1, arg2, arg3, arg4, inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_aaaa(int inNumSamples)
+	{
+		sum_vec<SIMD>(out(0), in(0), in(1), in(2), in(3), inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_aaak(int inNumSamples)
+	{
+		if (in3.changed(this))
+			sum_vec<SIMD>(out(0), in(0), in(1), in(2), in3.slope(this), inNumSamples);
+		else
+			next_aaai<SIMD>(inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_aaai(int inNumSamples)
+	{
+		sum_vec<SIMD>(out(0), in(0), in(1), in(2), in3, inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_aakk(int inNumSamples)
+	{
+		if (in3.changed(this)) {
+			if (in2.changed(this))
+				sum_vec<SIMD>(out(0), in(0), in(1), in2.slope(this), in3.slope(this), inNumSamples);
+			else
+				sum_vec<SIMD>(out(0), in(0), in(1), in2, in3.slope(this), inNumSamples);
+		} else
+			next_aaki<SIMD>(inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_aaki(int inNumSamples)
+	{
+		if (in2.changed(this))
+			sum_vec<SIMD>(out(0), in(0), in(1), in2.slope(this), in3, inNumSamples);
+		else
+			next_aaii<SIMD>(inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_aaii(int inNumSamples)
+	{
+		sum_vec<SIMD>(out(0), in(0), in(1), in2, in3, inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_akkk(int inNumSamples)
+	{
+		if (in3.changed(this)) {
+			if (in2.changed(this)) {
+				if (in1.changed(this))
+					sum_vec<SIMD>(out(0), in(0), in1.slope(this), in2.slope(this), in3.slope(this), inNumSamples);
+				else
+					sum_vec<SIMD>(out(0), in(0), in1, in2.slope(this), in3.slope(this), inNumSamples);
+			} else {
+				if (in1.changed(this))
+					sum_vec<SIMD>(out(0), in(0), in1.slope(this), in2, in3.slope(this), inNumSamples);
+				else
+					sum_vec<SIMD>(out(0), in(0), in1, in2, in3.slope(this), inNumSamples);
+			}
+		} else
+			next_akki<SIMD>(inNumSamples);
+	}
 
+	template <bool SIMD>
+	void next_akki(int inNumSamples)
+	{
+		if (in2.changed(this)) {
+			if (in1.changed(this))
+				sum_vec<SIMD>(out(0), in(0), in1.slope(this), in2.slope(this), in3, inNumSamples);
+			else
+				sum_vec<SIMD>(out(0), in(0), in1, in2.slope(this), in3, inNumSamples);
+		} else
+			next_akii<SIMD>(inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_akii(int inNumSamples)
+	{
+		if (in1.changed(this))
+			sum_vec<SIMD>(out(0), in(0), in1.slope(this), in2, in3, inNumSamples);
+		else
+			next_aiii<SIMD>(inNumSamples);
+	}
+
+	template <bool SIMD>
+	void next_aiii(int inNumSamples)
+	{
+		sum_vec<SIMD>(out(0), in(0), in1, in2, in3, inNumSamples);
+	}
+};
+
+DEFINE_XTORS(Sum4)
+
+}
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -722,4 +717,6 @@ PluginLoad(MulAdd)
 	ft = inTable;
 
 	DefineSimpleUnit(MulAdd);
+	DefineSimpleUnit(Sum3);
+	DefineSimpleUnit(Sum4);
 }
diff --git a/server/plugins/NoiseUGens.cpp b/server/plugins/NoiseUGens.cpp
index 83275d3..aad6bc5 100644
--- a/server/plugins/NoiseUGens.cpp
+++ b/server/plugins/NoiseUGens.cpp
@@ -988,14 +988,38 @@ void LFNoise0_next(LFNoise0 *unit, int inNumSamples)
 	RPUT
 }
 
+void LFNoise0_next_1(LFNoise0 *unit, int inNumSamples)
+{
+	assert(inNumSamples == 1);
+	float freq = ZIN0(0);
+	float level = unit->mLevel;
+	int32 counter = unit->mCounter;
+
+	if (counter<=0) {
+		counter = (int32)(unit->mRate->mSampleRate / sc_max(freq, .001f));
+		counter = sc_max(1, counter);
+		RGET
+		level = frand2(s1,s2,s3);
+		unit->mLevel = level;
+		RPUT
+	}
+	ZOUT0(0) = level;
+	counter -= 1;
+	unit->mCounter = counter;
+}
+
+
 void LFNoise0_Ctor(LFNoise0* unit)
 {
-	SETCALC(LFNoise0_next);
+	if (BUFLENGTH == 1)
+		SETCALC(LFNoise0_next_1);
+	else
+		SETCALC(LFNoise0_next);
 
 	unit->mCounter = 0;
 	unit->mLevel = 0.f;
 
-	LFNoise0_next(unit, 1);
+	LFNoise0_next_1(unit, 1);
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/server/plugins/Onsets.h b/server/plugins/Onsets.h
index 702a77e..42851e5 100644
--- a/server/plugins/Onsets.h
+++ b/server/plugins/Onsets.h
@@ -37,12 +37,8 @@ struct Onsets : Unit
 
 extern "C"
 {
-	void load(InterfaceTable *inTable);
-
 	void Onsets_Ctor(Onsets *unit);
 	void Onsets_next(Onsets *unit, int inNumSamples);
 	void Onsets_next_rawodf(Onsets *unit, int inNumSamples);
 	void Onsets_Dtor(Onsets *unit);
-
 }
-
diff --git a/server/plugins/OscUGens.cpp b/server/plugins/OscUGens.cpp
index e34fc3f..bc533ba 100644
--- a/server/plugins/OscUGens.cpp
+++ b/server/plugins/OscUGens.cpp
@@ -281,6 +281,7 @@ void SigOsc_next_a(SigOsc *unit, int inNumSamples);
 
 void FSinOsc_Ctor(FSinOsc *unit);
 void FSinOsc_next(FSinOsc *unit, int inNumSamples);
+void FSinOsc_next_i(FSinOsc *unit, int inNumSamples);
 
 void PSinGrain_Ctor(PSinGrain *unit);
 void PSinGrain_next(PSinGrain *unit, int inNumSamples);
@@ -1310,7 +1311,10 @@ void SigOsc_next_a(SigOsc *unit, int inNumSamples)
 
 void FSinOsc_Ctor(FSinOsc *unit)
 {
-	SETCALC(FSinOsc_next);
+	if (INRATE(0) == calc_ScalarRate)
+		SETCALC(FSinOsc_next_i);
+	else
+		SETCALC(FSinOsc_next);
 	unit->m_freq = ZIN0(0);
 	float iphase = ZIN0(1);
 	float w = unit->m_freq * unit->mRate->mRadiansPerSample;
@@ -1351,7 +1355,38 @@ void FSinOsc_next(FSinOsc *unit, int inNumSamples)
 	//Print("y %g %g  b1 %g\n", y1, y2, b1);
 	unit->m_y1 = y1;
 	unit->m_y2 = y2;
-	unit->m_b1 = b1;
+}
+
+void FSinOsc_next_i(FSinOsc *unit, int inNumSamples)
+{
+#ifdef __GNUC__
+	float * __restrict__ out = ZOUT(0);
+#else
+	float * out = ZOUT(0);
+#endif
+	double b1 = unit->m_b1;
+
+	double y0;
+	double y1 = unit->m_y1;
+	double y2 = unit->m_y2;
+	//Print("y %g %g  b1 %g\n", y1, y2, b1);
+	//Print("%d %d\n", unit->mRate->mFilterLoops, unit->mRate->mFilterRemain);
+	LOOP(unit->mRate->mFilterLoops,
+		y0 = b1 * y1 - y2;
+		y2 = b1 * y0 - y1;
+		y1 = b1 * y2 - y0;
+		ZXP(out) = y0;
+		ZXP(out) = y2;
+		ZXP(out) = y1;
+	);
+	LOOP(unit->mRate->mFilterRemain,
+		ZXP(out) = y0 = b1 * y1 - y2;
+		y2 = y1;
+		y1 = y0;
+	);
+	//Print("y %g %g  b1 %g\n", y1, y2, b1);
+	unit->m_y1 = y1;
+	unit->m_y2 = y2;
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1575,9 +1610,11 @@ void SinOsc_next_iaa(SinOsc *unit, int inNumSamples)
 	float radtoinc = unit->m_radtoinc;
 	//Print("SinOsc_next_iaa %d %g %g %d\n", inNumSamples, cpstoinc, radtoinc, phase);
 	LOOP1(inNumSamples,
-		int32 phaseoffset = phase + (int32)(radtoinc * ZXP(phasein));
+		float phaseIn = ZXP(phasein);
+		float freqIn  = ZXP(freqin);
+		int32 phaseoffset = phase + (int32)(radtoinc * phaseIn);
 		float z = lookupi1(table0, table1, phaseoffset, lomask);
-		phase += (int32)(cpstoinc * ZXP(freqin));
+		phase += (int32)(cpstoinc * freqIn);
 		ZXP(out) = z;
 	);
 	unit->m_phase = phase;
@@ -1613,6 +1650,31 @@ void SinOsc_next_iak(SinOsc *unit, int inNumSamples)
 	unit->m_phasein = phasein;
 }
 
+void SinOsc_next_iai(SinOsc *unit, int inNumSamples)
+{
+	float *out = ZOUT(0);
+	float *freqin = ZIN(0);
+
+	float *table0 = ft->mSineWavetable;
+	float *table1 = table0 + 1;
+
+	int32 phase = unit->m_phase;
+	int32 lomask = unit->m_lomask;
+
+	float cpstoinc = unit->m_cpstoinc;
+	float radtoinc = unit->m_radtoinc;
+	float phasemod = unit->m_phasein;
+
+	LOOP1(inNumSamples,
+		  int32 pphase = phase + (int32)(radtoinc * phasemod);
+		  float z = lookupi1(table0, table1, pphase, lomask);
+		  phase += (int32)(cpstoinc * ZXP(freqin));
+		  ZXP(out) = z;
+	);
+	unit->m_phase = phase;
+}
+
+
 
 void SinOsc_Ctor(SinOsc *unit)
 {
@@ -1623,15 +1685,14 @@ void SinOsc_Ctor(SinOsc *unit)
 	unit->m_lomask = (tableSize2 - 1) << 3;
 
 	if (INRATE(0) == calc_FullRate) {
-		if (INRATE(1) == calc_FullRate) {
-			//Print("next_iaa\n");
+		if (INRATE(1) == calc_FullRate)
 			SETCALC(SinOsc_next_iaa);
-			unit->m_phase = 0;
-		} else {
-			//Print("next_iak\n");
+		else if (INRATE(1) == calc_BufRate)
 			SETCALC(SinOsc_next_iak);
-			unit->m_phase = 0;
-		}
+		else
+			SETCALC(SinOsc_next_iai);
+
+		unit->m_phase = 0;
 	} else {
 		if (INRATE(1) == calc_FullRate) {
 			//Print("next_ika\n");
@@ -1664,7 +1725,7 @@ void SinOsc_Ctor(SinOsc *unit)
 
 //////////////!!!
 
-void SinOscFB_next_ik(SinOscFB *unit, int inNumSamples)
+void SinOscFB_next_kk(SinOscFB *unit, int inNumSamples)
 {
 	float *out = ZOUT(0);
 	float freqin = ZIN0(0);
@@ -1695,7 +1756,7 @@ void SinOscFB_next_ik(SinOscFB *unit, int inNumSamples)
 void SinOscFB_Ctor(SinOscFB *unit)
 {
 	//Print("next_ik\n");
-	SETCALC(SinOscFB_next_ik);
+	SETCALC(SinOscFB_next_kk);
 
 	int tableSize2 = ft->mSineSize;
 	unit->m_lomask = (tableSize2 - 1) << 3;
@@ -1706,7 +1767,7 @@ void SinOscFB_Ctor(SinOscFB *unit)
 
 	unit->m_phase = 0;
 
-	SinOscFB_next_ik(unit, 1);
+	SinOscFB_next_kk(unit, 1);
 }
 
 
@@ -2170,7 +2231,7 @@ void VOsc_Ctor(VOsc *unit)
 
 	float nextbufpos = ZIN0(0);
 	unit->m_bufpos = nextbufpos;
-	int bufnum = floor(nextbufpos);
+	int bufnum = sc_floor(nextbufpos);
 	World *world = unit->mWorld;
 
 	VOSC_GET_BUF_UNLOCKED
@@ -2211,9 +2272,8 @@ void VOsc_next_ik(VOsc *unit, int inNumSamples)
 	World *world = unit->mWorld;
 
 	if (bufdiff == 0.f) {
-		float level = cur - floor(cur);
-
-		uint32 bufnum = (int)floor(cur);
+		float level = cur - sc_floor(cur);
+		uint32 bufnum = (int)sc_floor(cur);
 
 		VOSC_GET_BUF
 
@@ -2244,26 +2304,26 @@ void VOsc_next_ik(VOsc *unit, int inNumSamples)
 		int donesmps = 0;
 		int remain = inNumSamples;
 		while (remain) {
-			float level = cur - (float)floor(cur);
+			float level = cur - sc_floor(cur);
 
 			float cut;
 			if (bufdiff > 0.) {
-				cut = sc_min(nextbufpos, (float)floor(cur+1.f));
+				cut = sc_min(nextbufpos, sc_floor(cur+1.f));
 			} else {
-				cut = sc_max(nextbufpos, ceil(cur-1.f));
+				cut = sc_max(nextbufpos, sc_ceil(cur-1.f));
 			}
 
 			float sweepdiff = cut - cur;
 			if (cut == nextbufpos) nsmps = remain;
 			else {
 				float sweep = (float)inNumSamples / bufdiff;
-				nsmps = (int)floor(sweep * sweepdiff + 0.5f) - donesmps;
+				nsmps = (int)sc_floor(sweep * sweepdiff + 0.5f) - donesmps;
 				nsmps = sc_clip(nsmps, 1, remain);
 			}
 
 			float slope = sweepdiff / (float)nsmps;
 
-			int32 bufnum = (int32)floor(cur);
+			int32 bufnum = (int32)sc_floor(cur);
 
 			VOSC_GET_BUF
 
@@ -2307,7 +2367,7 @@ void VOsc3_Ctor(VOsc3 *unit)
 
 	float nextbufpos = ZIN0(0);
 	unit->m_bufpos = nextbufpos;
-	int32 bufnum = (int32)floor(nextbufpos);
+	int32 bufnum = (int32)sc_floor(nextbufpos);
 	World *world = unit->mWorld;
 
 	VOSC_GET_BUF
diff --git a/server/plugins/PV_UGens.cpp b/server/plugins/PV_UGens.cpp
index 4c268cb..ecbd5e1 100644
--- a/server/plugins/PV_UGens.cpp
+++ b/server/plugins/PV_UGens.cpp
@@ -21,6 +21,7 @@
 
 #include "FFT_UGens.h"
 
+#define TWOPI 6.28318530717952646f
 
 struct PV_OutOfPlace : Unit
 {
@@ -40,6 +41,11 @@ struct PV_BinShift : PV_OutOfPlace
 {
 };
 
+struct PV_PhaseShift : Unit
+{
+	float m_phase_integral;
+};
+
 struct PV_Diffuser : Unit
 {
 	int m_numbins;
@@ -81,8 +87,8 @@ struct PV_Conj : PV_Unit {};
 
 extern "C"
 {
-	void PV_PhaseShift_Ctor(PV_Unit *unit);
-	void PV_PhaseShift_next(PV_Unit *unit, int inNumSamples);
+	void PV_PhaseShift_Ctor(PV_PhaseShift *unit);
+	void PV_PhaseShift_next(PV_PhaseShift *unit, int inNumSamples);
 
 	void PV_PhaseShift90_Ctor(PV_Unit *unit);
 	void PV_PhaseShift90_next(PV_Unit *unit, int inNumSamples);
@@ -382,6 +388,7 @@ void PV_BinShift_next(PV_BinShift *unit, int inNumSamples)
 	// get shift and stretch params
 	float stretch = ZIN0(1);
 	float shift = ZIN0(2);
+	float interp = ZIN0(3);
 
 	SCComplexBuf *p = ToComplexApx(buf);
 	SCComplexBuf *q = (SCComplexBuf*)unit->m_tempbuf;
@@ -395,10 +402,25 @@ void PV_BinShift_next(PV_BinShift *unit, int inNumSamples)
 	int i;
 	q->dc = p->dc;
 	q->nyq = p->nyq;
-	for (i=0, fpos = shift; i < numbins; ++i, fpos += stretch) {
-		int32 pos = (int32)(fpos + 0.5);
-		if (pos >= 0 && pos < numbins) {
-			q->bin[pos] += p->bin[i];
+	if(interp > 0){
+		for (i=0, fpos = shift; i < numbins; ++i, fpos += stretch) {
+			int32 fpos0 = (int32)std::floor(fpos);
+			int32 fpos1 = fpos0+1;
+			float beta = fpos - std::floor(fpos);
+			float alpha = 1.0f - beta;
+			if (fpos0 >= 0 && fpos0 < numbins) {
+				q->bin[fpos0] += alpha * p->bin[i];
+			}
+			if (fpos1 >= 0 && fpos1 < numbins) {
+				q->bin[fpos1] += beta * p->bin[i];
+			}
+		}
+	} else {
+		for (i=0, fpos = shift; i < numbins; ++i, fpos += stretch) {
+			int32 pos = (int32)(fpos + 0.5);
+			if (pos >= 0 && pos < numbins) {
+				q->bin[pos] += p->bin[i];
+			}
 		}
 	}
 	memcpy(p->bin, q->bin, numbins * sizeof(SCComplex));
@@ -492,23 +514,32 @@ void PV_MagNoise_Ctor(PV_Unit *unit)
 	ZOUT0(0) = ZIN0(0);
 }
 
-void PV_PhaseShift_next(PV_Unit *unit, int inNumSamples)
+void PV_PhaseShift_next(PV_PhaseShift *unit, int inNumSamples)
 {
 	PV_GET_BUF
 
 	SCPolarBuf *p = ToPolarApx(buf);
 
 	float shift = ZIN0(1);
+	int integrate = ZIN0(2);
+
+	float ashift = shift;
+
+	if (integrate > 0) {
+		ashift += unit->m_phase_integral;
+		unit->m_phase_integral = fmod(ashift, TWOPI);
+	}
 
 	for (int i=0; i<numbins; ++i) {
-		p->bin[i].phase += shift;
+		p->bin[i].phase += ashift;
 	}
 }
 
-void PV_PhaseShift_Ctor(PV_Unit *unit)
+void PV_PhaseShift_Ctor(PV_PhaseShift *unit)
 {
 	SETCALC(PV_PhaseShift_next);
 	ZOUT0(0) = ZIN0(0);
+	unit->m_phase_integral = 0;
 }
 
 void PV_PhaseShift90_next(PV_Unit *unit, int inNumSamples)
@@ -707,7 +738,6 @@ void PV_Copy_next(PV_Unit *unit, int inNumSamples)
 	}
 
 	if (buf1->samples != buf2->samples) return;
-	int numbins = buf1->samples - 2 >> 1;
 
 	// copy to buf2
 	LOCK_SNDBUF2_SHARED_EXCLUSIVE(buf1, buf2);
diff --git a/server/plugins/PanUGens.cpp b/server/plugins/PanUGens.cpp
index beebc49..b945d81 100644
--- a/server/plugins/PanUGens.cpp
+++ b/server/plugins/PanUGens.cpp
@@ -22,16 +22,13 @@
 #include "SC_PlugIn.h"
 
 #ifdef NOVA_SIMD
+#include "simd_memory.hpp"
 #include "simd_binary_arithmetic.hpp"
 #include "simd_pan.hpp"
 #include "simd_mix.hpp"
 using nova::slope_argument;
 
-#if defined(__GNUC__) && !defined(__clang__)
-#define inline_functions __attribute__ ((flatten))
-#else
-#define inline_functions
-#endif
+#include "function_attributes.h"
 
 #endif
 
@@ -110,8 +107,8 @@ extern "C"
 
 	void Balance2_next_ak(Balance2 *unit, int inNumSamples);
 #ifdef NOVA_SIMD
-	inline_functions void Balance2_next_ak_nova(Balance2 *unit, int inNumSamples);
-	inline_functions void Balance2_next_ak_nova_64(Balance2 *unit, int inNumSamples);
+	FLATTEN void Balance2_next_ak_nova(Balance2 *unit, int inNumSamples);
+	FLATTEN void Balance2_next_ak_nova_64(Balance2 *unit, int inNumSamples);
 #endif
 	void Balance2_next_aa(Balance2 *unit, int inNumSamples);
 	void Balance2_Ctor(Balance2* unit);
@@ -157,8 +154,8 @@ extern "C"
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
 #ifdef NOVA_SIMD
-inline_functions void LinPan2_next_ak_nova(LinPan2 *unit, int inNumSamples);
-inline_functions void LinPan2_next_ak_nova_64(LinPan2 *unit, int inNumSamples);
+FLATTEN void LinPan2_next_ak_nova(LinPan2 *unit, int inNumSamples);
+FLATTEN void LinPan2_next_ak_nova_64(LinPan2 *unit, int inNumSamples);
 #endif
 
 void LinPan2_Ctor(LinPan2 *unit)
@@ -476,8 +473,8 @@ void Balance2_next_aa(Balance2 *unit, int inNumSamples)
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 #ifdef NOVA_SIMD
-inline_functions void XFade2_next_ak_nova(XFade2 *unit, int inNumSamples);
-inline_functions void XFade2_next_ak_nova_64(XFade2 *unit, int inNumSamples);
+FLATTEN void XFade2_next_ak_nova(XFade2 *unit, int inNumSamples);
+FLATTEN void XFade2_next_ak_nova_64(XFade2 *unit, int inNumSamples);
 #endif
 
 void XFade2_Ctor(XFade2 *unit)
@@ -1389,6 +1386,10 @@ void calcPos(float pos, int numOutputs, float width, float orientation)
 }
 */
 
+#ifdef NOVA_SIMD
+void PanAz_next_ak_nova(PanAz *unit, int inNumSamples);
+#endif
+
 void PanAz_Ctor(PanAz *unit)
 {
 	if (INRATE(1) == calc_FullRate) {
@@ -1401,7 +1402,14 @@ void PanAz_Ctor(PanAz *unit)
 			unit->m_chanamp[i] = 0;
 			ZOUT0(i) = 0.f;
 		}
+#ifdef NOVA_SIMD
+		if (!(BUFLENGTH & 15))
+			SETCALC(PanAz_next_ak_nova);
+		else
+			SETCALC(PanAz_next_ak);
+#else
 		SETCALC(PanAz_next_ak);
+#endif
 	}
 }
 
@@ -1419,9 +1427,9 @@ void PanAz_next_ak(PanAz *unit, int inNumSamples)
 	float orientation = ZIN0(4);
 
 	int numOutputs = unit->mNumOutputs;
-	float rwidth = 1.f / width;
+	float rwidth = sc_reciprocal( width );
 	float range = numOutputs * rwidth;
-	float rrange = 1.f / range;
+	float rrange = sc_reciprocal( range );
 
 	pos = pos * 0.5f * numOutputs + width * 0.5f + orientation;
 
@@ -1432,7 +1440,7 @@ void PanAz_next_ak(PanAz *unit, int inNumSamples)
 		float nextchanamp;
 		float chanpos = pos - i;
 		chanpos *= rwidth;
-		chanpos = chanpos - range * std::floor(rrange * chanpos);
+		chanpos = chanpos - range * sc_floor(rrange * chanpos);
 		if (chanpos > 1.f) {
 			nextchanamp = 0.f;
 		} else {
@@ -1450,7 +1458,7 @@ void PanAz_next_ak(PanAz *unit, int inNumSamples)
 				)
 			}
 		} else {
-			float chanampslope  = CALCSLOPE(nextchanamp, chanamp);
+			float chanampslope = CALCSLOPE(nextchanamp, chanamp);
 			float *in = zin0;
 			LOOP1(inNumSamples,
 				ZXP(out) = ZXP(in) * chanamp;
@@ -1461,6 +1469,51 @@ void PanAz_next_ak(PanAz *unit, int inNumSamples)
 	}
 }
 
+#ifdef NOVA_SIMD
+FLATTEN void PanAz_next_ak_nova(PanAz *unit, int inNumSamples)
+{
+	float pos = ZIN0(1);
+	float level = ZIN0(2);
+	float width = ZIN0(3);
+	float orientation = ZIN0(4);
+
+	int numOutputs = unit->mNumOutputs;
+	float rwidth = sc_reciprocal( width );
+	float range = numOutputs * rwidth;
+	float rrange = sc_reciprocal( range );
+
+	pos = pos * 0.5f * numOutputs + width * 0.5f + orientation;
+
+	float * __restrict__ in = IN(0);
+	float * __restrict__ chanamps = unit->m_chanamp;
+
+	for (int i=0; i<numOutputs; ++i) {
+		float chanamp = chanamps[i];
+		float nextchanamp;
+		float chanpos = pos - i;
+		chanpos *= rwidth;
+		chanpos = chanpos - range * sc_floor(rrange * chanpos);
+		if (chanpos > 1.f) {
+			nextchanamp = 0.f;
+		} else {
+			nextchanamp = level * ft->mSine[(long)(4096.f * chanpos)];
+		}
+
+		float *out = OUT(i);
+		if (nextchanamp == chanamp) {
+			if (nextchanamp == 0.f)
+				nova::zerovec_simd(out, inNumSamples);
+			else
+				nova::times_vec_simd(out, in, chanamp, inNumSamples);
+		} else {
+			float chanampslope  = CALCSLOPE(nextchanamp, chanamp);
+			nova::times_vec_simd(out, in, slope_argument(chanamp, chanampslope), inNumSamples);
+			chanamps[i] = nextchanamp;
+		}
+	}
+}
+#endif
+
 void PanAz_next_aa(PanAz *unit, int inNumSamples)
 {
 	float level = ZIN0(2);
@@ -1468,9 +1521,9 @@ void PanAz_next_aa(PanAz *unit, int inNumSamples)
 	float orientation = ZIN0(4);
 
 	int numOutputs = unit->mNumOutputs;
-	float rwidth = 1.f / width;
+	float rwidth = sc_reciprocal( width );
 	float range = numOutputs * rwidth;
-	float rrange = 1.f / range;
+	float rrange = sc_reciprocal( range );
 
 
 	// compute constant parts with which the pos has to be multiplied/added to respect numOutputs, width and orientation
diff --git a/server/plugins/PartitionedConvolution.cpp b/server/plugins/PartitionedConvolution.cpp
index 3e164c8..abd3327 100644
--- a/server/plugins/PartitionedConvolution.cpp
+++ b/server/plugins/PartitionedConvolution.cpp
@@ -479,7 +479,6 @@ void PartConv_next( PartConv *unit, int inNumSamples )
 //buffer preparation
 void PreparePartConv(World *world, struct SndBuf *buf, struct sc_msg_iter *msg)
 {
-	int frames1 = buf->frames;
 	//int channels1 = buf->channels;
 	float *data1 = buf->data;
 
diff --git a/server/plugins/SIMD_Unit.hpp b/server/plugins/SIMD_Unit.hpp
new file mode 100644
index 0000000..49e4beb
--- /dev/null
+++ b/server/plugins/SIMD_Unit.hpp
@@ -0,0 +1,189 @@
+/*
+ *    SuperCollider real time audio synthesis system
+ *    Copyright (c) 2002 James McCartney. All rights reserved.
+ *    Copyright (c) 2011 Tim Blechmann.
+ *
+ *    This program is free software; you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation; either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with this program; if not, write to the Free Software
+ *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+#ifndef SIMD_UNIT_HPP
+#define SIMD_UNIT_HPP
+
+#include "SC_PlugIn.hpp"
+
+#include "simd_memory.hpp"
+#include "simd_binary_arithmetic.hpp"
+#include "simd_ternary_arithmetic.hpp"
+#include "simd_mix.hpp"
+
+using nova::slope_argument;
+
+#if defined(__GNUC__) && !defined(__clang__)
+#define inline_functions __attribute__ ((flatten))
+#else
+#define inline_functions
+#endif
+
+struct SIMD_Unit:
+	SCUnit
+{
+	enum { scalar, unrolled, unrolled_64};
+
+	bool canUseSIMD (void) const
+	{
+		return (mBufLength & (nova::vec< float >::objects_per_cacheline - 1)) == 0;
+	}
+
+	template <int index>
+	struct ControlRateInput
+	{
+		float value;
+
+		void init(const SIMD_Unit * parent)
+		{
+			value = parent->in0(index);
+		}
+
+		bool changed(const SIMD_Unit * parent) const
+		{
+			return value != parent->in0(index);
+		}
+
+#if __cplusplus <= 199711L
+		nova::detail::scalar_ramp_argument<float> slope(const SIMD_Unit * parent)
+#else
+		decltype(nova::slope_argument(0.f, 0.f)) slope(const SIMD_Unit * parent)
+#endif
+		{
+			float next = parent->in0(index);
+			float current = value;
+			float slope = parent->calcSlope(next, current);
+			value = next;
+			return slope_argument(current, slope);
+		}
+
+		operator float(void)
+		{
+			return value;
+		}
+	};
+
+	template <typename UnitType, void (UnitType::*UnrolledCalcFunc)(int), void (UnitType::*VectorCalcFunc)(int), void (UnitType::*ScalarCalcFunc)(int)>
+	void set_unrolled_calc_function(void)
+	{
+		if (bufferSize() == 64)
+			SCUnit::set_vector_calc_function<UnitType, UnrolledCalcFunc, ScalarCalcFunc>();
+		else
+			set_vector_calc_function<UnitType, VectorCalcFunc, ScalarCalcFunc>();
+	}
+
+	template <typename UnitType, void (UnitType::*VectorCalcFunc)(int), void (UnitType::*ScalarCalcFunc)(int)>
+	void set_vector_calc_function(void)
+	{
+		if (canUseSIMD())
+			SCUnit::set_vector_calc_function<UnitType, VectorCalcFunc, ScalarCalcFunc>();
+		else
+			SCUnit::set_calc_function<UnitType, ScalarCalcFunc>();
+	}
+
+	template <int type, typename Arg1, typename Arg2, typename Arg3>
+	static void muladd(float * out, Arg1 const & arg1, Arg2 const & arg2, Arg3 const & arg3, int inNumSamples)
+	{
+		if (type == scalar)
+			nova::muladd_vec(out, arg1, arg2, arg3, inNumSamples);
+		if (type == unrolled)
+			nova::muladd_vec_simd(out, arg1, arg2, arg3, inNumSamples);
+		if (type == unrolled_64)
+			nova::muladd_vec_simd<64>(out, arg1, arg2, arg3);
+	}
+
+	template <int type, typename Arg1, typename Arg2>
+	static void plus_vec(float * out, Arg1 const & arg1, Arg2 const & arg2, int inNumSamples)
+	{
+		if (type == scalar)
+			nova::plus_vec(out, arg1, arg2, inNumSamples);
+		if (type == unrolled)
+			nova::plus_vec_simd(out, arg1, arg2, inNumSamples);
+		if (type == unrolled_64)
+			nova::plus_vec_simd<64>(out, arg1, arg2);
+	}
+
+	template <int type, typename Arg1, typename Arg2>
+	static void times_vec(float * out, Arg1 const & arg1, Arg2 const & arg2, int inNumSamples)
+	{
+		if (type == scalar)
+			nova::times_vec(out, arg1, arg2, inNumSamples);
+		if (type == unrolled)
+			nova::times_vec_simd(out, arg1, arg2, inNumSamples);
+		if (type == unrolled_64)
+			nova::times_vec_simd<64>(out, arg1, arg2);
+	}
+
+	template <int type, typename Arg1, typename Arg2>
+	static void slope_vec(float * out, Arg1 const & base, Arg2 const & slope, int inNumSamples)
+	{
+		if (type == scalar)
+			nova::set_slope_vec(out, base, slope, inNumSamples);
+		else
+			nova::set_slope_vec_simd(out, base, slope, inNumSamples);
+	}
+
+	template <int type, typename Arg1>
+	static void slope_vec(float * out, Arg1 const & slope, int inNumSamples)
+	{
+		if (type == scalar)
+			nova::set_slope_vec(out, slope.data, slope.slope_, inNumSamples);
+		else
+			nova::set_slope_vec_simd(out, slope.data, slope.slope_, inNumSamples);
+	}
+
+	template <int type>
+	static void copy_vec(float * out, const float * in, int inNumSamples)
+	{
+		if (in == out)
+			return;
+
+		if (type == scalar)
+			nova::copyvec(out, in, inNumSamples);
+		if (type == unrolled)
+			nova::copyvec_simd(out, in, inNumSamples);
+		if (type == unrolled_64)
+			nova::copyvec_simd<64>(out, in);
+	}
+
+	template <int type>
+	static void set_vec(float * out, float value, int inNumSamples)
+	{
+		if (type == scalar)
+			nova::setvec(out, value, inNumSamples);
+		if (type == unrolled)
+			nova::setvec_simd(out, value, inNumSamples);
+		if (type == unrolled_64)
+			nova::setvec_simd<64>(out, value);
+	}
+
+	template <int type>
+	static void zero_vec(float * out, int inNumSamples)
+	{
+		if (type == scalar)
+			nova::zerovec(out, inNumSamples);
+		if (type == unrolled)
+			nova::zerovec_simd(out, inNumSamples);
+		if (type == unrolled_64)
+			nova::zerovec_simd<64>(out);
+	}
+};
+
+#endif /* SIMD_UNIT_HPP */
diff --git a/server/plugins/TestUGens.cpp b/server/plugins/TestUGens.cpp
index 636d458..a9fade3 100644
--- a/server/plugins/TestUGens.cpp
+++ b/server/plugins/TestUGens.cpp
@@ -28,6 +28,8 @@
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 
+// FIXME: once we completely move to c++11, we should get rid of sc_fpclassify
+
 // Visual C++ doesn't have fpclassify (C99), so define it here if needed
 #ifdef _MSC_VER
 #include <float.h>
@@ -198,7 +200,7 @@ const char *CheckBadValues_fpclassString(int fpclass)
 		case FP_NORMAL:       return "normal";
 		case FP_NAN:          return "NaN";
 		case FP_INFINITE:     return "infinity";
-#ifndef _WIN32
+#ifndef _MSC_VER
 		case FP_ZERO:         return "zero";
 #endif
 		case FP_SUBNORMAL:    return "denormal";
@@ -206,7 +208,7 @@ const char *CheckBadValues_fpclassString(int fpclass)
 	}
 }
 
-#ifndef _WIN32
+#ifndef _MSC_VER
 inline int CheckBadValues_fold_fpclasses(int fpclass)
 {
 	switch(fpclass) {
diff --git a/server/plugins/TriggerUGens.cpp b/server/plugins/TriggerUGens.cpp
index c4b23b7..c0142aa 100644
--- a/server/plugins/TriggerUGens.cpp
+++ b/server/plugins/TriggerUGens.cpp
@@ -28,11 +28,7 @@
 #ifdef NOVA_SIMD
 #include "simd_memory.hpp"
 
-#if defined(__GNUC__) && !defined(__clang__)
-#define inline_functions __attribute__ ((flatten))
-#else
-#define inline_functions
-#endif
+#include "function_attributes.h"
 
 #endif
 
@@ -374,8 +370,8 @@ extern "C"
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 #ifdef NOVA_SIMD
-inline_functions void Trig1_next_nova(Trig1 *unit, int inNumSamples);
-inline_functions void Trig1_next_k_nova(Trig1 *unit, int inNumSamples);
+FLATTEN void Trig1_next_nova(Trig1 *unit, int inNumSamples);
+FLATTEN void Trig1_next_k_nova(Trig1 *unit, int inNumSamples);
 #endif
 
 void Trig1_Ctor(Trig1 *unit)
@@ -842,7 +838,6 @@ void SendReply_next_aka(SendReply *unit, int inNumSamples)
 {
 	float *trig = IN(0);
 	float prevtrig = unit->m_prevtrig;
-	float *invalues = IN(unit->m_valueOffset);
 	float *values = unit->m_values;
 	int valueSize = unit->m_valueSize;
 	int valueOffset = unit->m_valueOffset;
@@ -883,7 +878,7 @@ void Poll_Ctor(Poll* unit)
 		};
 	unit->m_id_string[(int)unit->m_id] = '\0';
 
-	unit->m_mayprint = unit->mWorld->mVerbosity >= 0;
+	unit->m_mayprint = unit->mWorld->mVerbosity >= -1;
 
 	Poll_next_kk(unit, 1);
 }
@@ -990,10 +985,14 @@ void SetResetFF_next_k(SetResetFF *unit, int inNumSamples)
 	float prevreset = unit->m_prevreset;
 	float level = unit->mLevel;
 
+	float curtrig = ZXP(trig);
 	if (prevreset <= 0.f && curreset > 0.f) level = 0.f;
+	else if (prevtrig <= 0.f && curtrig > 0.f) level = 1.f;
+	ZXP(out) = level;
+	prevtrig = curtrig;
 
-	LOOP1(inNumSamples,
-		float curtrig = ZXP(trig);
+	LOOP(inNumSamples - 1,
+		curtrig = ZXP(trig);
 		if (prevtrig <= 0.f && curtrig > 0.f) level = 1.f;
 		ZXP(out) = level;
 		prevtrig = curtrig;
@@ -1126,7 +1125,7 @@ void Latch_next_aa(Latch *unit, int inNumSamples)
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 #ifdef NOVA_SIMD
-inline_functions void Gate_next_ak_nova(Gate *unit, int inNumSamples)
+FLATTEN void Gate_next_ak_nova(Gate *unit, int inNumSamples)
 {
 	float *trig = ZIN(1);
 	float level = unit->mLevel;
@@ -1139,7 +1138,7 @@ inline_functions void Gate_next_ak_nova(Gate *unit, int inNumSamples)
 		nova::setvec_simd(OUT(0), level, inNumSamples);
 }
 
-inline_functions void Gate_next_ak_nova_64(Gate *unit, int inNumSamples)
+FLATTEN void Gate_next_ak_nova_64(Gate *unit, int inNumSamples)
 {
 	float *trig = ZIN(1);
 	float level = unit->mLevel;
@@ -1874,8 +1873,8 @@ void Peak_next_ak_unroll(Peak *unit, int inNumSamples);
 void Peak_next_ai_unroll(Peak *unit, int inNumSamples);
 
 #ifdef NOVA_SIMD
-inline_functions void Peak_next_ak_k_nova(Peak *unit, int inNumSamples);
-inline_functions void Peak_next_ai_k_nova(Peak *unit, int inNumSamples);
+FLATTEN void Peak_next_ak_k_nova(Peak *unit, int inNumSamples);
+FLATTEN void Peak_next_ai_k_nova(Peak *unit, int inNumSamples);
 #endif
 
 void Peak_Ctor(Peak *unit)
diff --git a/server/plugins/UIUGens.cpp b/server/plugins/UIUGens.cpp
new file mode 100644
index 0000000..42deacb
--- /dev/null
+++ b/server/plugins/UIUGens.cpp
@@ -0,0 +1,495 @@
+/*
+	SuperCollider real time audio synthesis system
+    Copyright (c) 2002 James McCartney. All rights reserved.
+	http://www.audiosynth.com
+
+    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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+
+#ifdef __APPLE__
+#include <Carbon/Carbon.h>
+#include <unistd.h>
+#else
+# ifndef _WIN32
+#  include <time.h>
+#  include <X11/Intrinsic.h>
+# else
+#include <windows.h>
+# endif
+#endif
+
+#include "SC_PlugIn.h"
+
+static InterfaceTable *ft;
+
+struct KeyboardUGenGlobalState {
+#ifdef __APPLE__
+//	uint8 keys[16];
+	KeyMap keys;
+#else
+	uint8 keys[32];
+#endif
+} gKeyStateGlobals;
+
+struct KeyState : public Unit
+{
+	float m_y1, m_b1, m_lag;
+};
+
+
+struct MouseUGenGlobalState {
+	float mouseX, mouseY;
+	bool mouseButton;
+} gMouseUGenGlobals;
+
+struct MouseInputUGen : public Unit
+{
+	float m_y1, m_b1, m_lag;
+};
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+#ifdef __APPLE__
+
+void* gstate_update_func(void* arg)
+{
+#if (__x86_64__)
+	CGDirectDisplayID display = kCGDirectMainDisplay; // to grab the main display ID
+	CGRect bounds = CGDisplayBounds(display);
+	float rscreenWidth = 1. / bounds.size.width;
+	float rscreenHeight = 1. / bounds.size.height;
+#else
+	RgnHandle rgn = GetGrayRgn();
+	Rect screenBounds;
+	GetRegionBounds(rgn, &screenBounds);
+	float rscreenWidth = 1. / (screenBounds.right - screenBounds.left);
+	float rscreenHeight = 1. / (screenBounds.bottom - screenBounds.top);
+#endif
+	for (;;) {
+		GetKeys(gKeyStateGlobals.keys);
+
+#if (__x86_64__)
+		HIPoint point;
+		HICoordinateSpace space = 2;
+		HIGetMousePosition(space, NULL, &point);
+
+		gMouseUGenGlobals.mouseX = point.x * rscreenWidth; //(float)p.h * rscreenWidth;
+		gMouseUGenGlobals.mouseY = point.y * rscreenHeight; //(float)p.v * rscreenHeight;
+		gMouseUGenGlobals.mouseButton = GetCurrentButtonState();
+#else
+		Point p;
+		GetGlobalMouse(&p);
+		gMouseUGenGlobals.mouseX = (float)p.h * rscreenWidth;
+		gMouseUGenGlobals.mouseY = (float)p.v * rscreenHeight;
+		gMouseUGenGlobals.mouseButton = Button();
+#endif
+		usleep(17000);
+	}
+
+	return 0;
+}
+
+#elif defined(_WIN32)
+
+void* gstate_update_func(void* arg)
+{
+	POINT p;
+	int mButton;
+
+	if(GetSystemMetrics(SM_SWAPBUTTON))
+		mButton = VK_RBUTTON; // if  swapped
+	else
+		mButton = VK_LBUTTON; // not swapped (normal)
+
+	int screenWidth  = GetSystemMetrics( SM_CXSCREEN );
+	int screenHeight = GetSystemMetrics( SM_CYSCREEN );
+	// default: SM_CX/CYSCREEN gets the size of a primary screen.
+	// lines uncommented below are just for a specially need on multi-display.
+	//int screenWidth  = GetSystemMetrics( SM_CXVIRTUALSCREEN );
+	//int screenHeight = GetSystemMetrics( SM_CYVIRTUALSCREEN );
+	float r_screenWidth  = 1.f / (float)(screenWidth  -1);
+	float r_screenHeight = 1.f / (float)(screenHeight -1);
+
+
+	for(;;) {
+		// "KeyState" is disabled for now, on Windows...
+		//GetKey((long*)gstate->keys);
+
+		GetCursorPos(&p);
+		gMouseUGenGlobals.mouseX = (float)p.x * r_screenWidth;
+		gMouseUGenGlobals.mouseY = 1.f - (float)p.y * r_screenHeight;
+		gMouseUGenGlobals.mouseButton = (GetKeyState(mButton) < 0);
+		::Sleep(17); // 17msec.
+	}
+	return 0;
+}
+
+# else
+static Display * d = 0;
+void* gstate_update_func(void* arg)
+{
+	Window r;
+	struct timespec requested_time , remaining_time;
+
+	requested_time.tv_sec = 0;
+	requested_time.tv_nsec = 17000 * 1000;
+
+	d = XOpenDisplay ( NULL );
+	if (!d) return 0;
+
+	Window rep_root, rep_child;
+	XWindowAttributes attributes;
+	int rep_rootx, rep_rooty ;
+	unsigned int rep_mask;
+	int dx, dy;
+	float r_width;
+	float r_height;
+
+	r = DefaultRootWindow ( d );
+	XGetWindowAttributes ( d, r, &attributes );
+	r_width = 1.0 / (float)attributes.width;
+	r_height = 1.0 / (float)attributes.height;
+
+	for (;;) {
+		XQueryKeymap ( d , (char *) (gKeyStateGlobals.keys) );
+		XQueryPointer ( d, r,
+						&rep_root, &rep_child,
+				  &rep_rootx, &rep_rooty,
+				  &dx, &dy,
+				  &rep_mask);
+
+		gMouseUGenGlobals.mouseX = (float)dx * r_width;
+		gMouseUGenGlobals.mouseY = 1.f - ( (float)dy * r_height );
+
+		gMouseUGenGlobals.mouseButton = (bool) ( rep_mask & Button1Mask );
+
+		nanosleep ( &requested_time , &remaining_time );
+	}
+
+	return 0;
+}
+#endif
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+void KeyState_next(KeyState *unit, int inNumSamples)
+{
+	// minval, maxval, warp, lag
+	uint8 *keys = (uint8*)gKeyStateGlobals.keys;
+	int keynum = (int)ZIN0(0);
+#ifdef __APPLE__
+	int byte = (keynum >> 3) & 15;
+#else
+	int byte = (keynum >> 3) & 31;
+#endif
+	int bit = keynum & 7;
+	int val = keys[byte] & (1 << bit);
+
+	float minval = ZIN0(1);
+	float maxval = ZIN0(2);
+	float lag = ZIN0(3);
+
+	float y1 = unit->m_y1;
+	float b1 = unit->m_b1;
+
+	if (lag != unit->m_lag) {
+		unit->m_b1 = lag == 0.f ? 0.f : exp(log001 / (lag * unit->mRate->mSampleRate));
+		unit->m_lag = lag;
+	}
+	float y0 = val ? maxval : minval;
+	ZOUT0(0) = y1 = y0 + b1 * (y1 - y0);
+	unit->m_y1 = zapgremlins(y1);
+}
+
+void KeyState_Ctor(KeyState *unit)
+{
+	SETCALC(KeyState_next);
+	unit->m_b1 = 0.f;
+	unit->m_lag = 0.f;
+	KeyState_next(unit, 1);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+void MouseX_next(MouseInputUGen *unit, int inNumSamples)
+{
+	// minval, maxval, warp, lag
+
+	float minval = ZIN0(0);
+	float maxval = ZIN0(1);
+	float warp = ZIN0(2);
+	float lag = ZIN0(3);
+
+	float y1 = unit->m_y1;
+	float b1 = unit->m_b1;
+
+	if (lag != unit->m_lag) {
+		unit->m_b1 = lag == 0.f ? 0.f : (float)exp(log001 / (lag * unit->mRate->mSampleRate));
+		unit->m_lag = lag;
+	}
+	float y0 = gMouseUGenGlobals.mouseX;
+	if (warp == 0.0) {
+		y0 = (maxval - minval) * y0 + minval;
+	} else {
+		y0 = pow(maxval/minval, y0) * minval;
+	}
+	ZOUT0(0) = y1 = y0 + b1 * (y1 - y0);
+	unit->m_y1 = zapgremlins(y1);
+}
+
+void MouseX_Ctor(MouseInputUGen *unit)
+{
+	SETCALC(MouseX_next);
+	unit->m_b1 = 0.f;
+	unit->m_lag = 0.f;
+	MouseX_next(unit, 1);
+}
+
+
+void MouseY_next(MouseInputUGen *unit, int inNumSamples)
+{
+	// minval, maxval, warp, lag
+
+	float minval = ZIN0(0);
+	float maxval = ZIN0(1);
+	float warp = ZIN0(2);
+	float lag = ZIN0(3);
+
+	float y1 = unit->m_y1;
+	float b1 = unit->m_b1;
+
+	if (lag != unit->m_lag) {
+		unit->m_b1 = lag == 0.f ? 0.f : (float)exp(log001 / (lag * unit->mRate->mSampleRate));
+		unit->m_lag = lag;
+	}
+	float y0 = gMouseUGenGlobals.mouseY;
+	if (warp == 0.0) {
+		y0 = (maxval - minval) * y0 + minval;
+	} else {
+		y0 = pow(maxval/minval, y0) * minval;
+	}
+	ZOUT0(0) = y1 = y0 + b1 * (y1 - y0);
+	unit->m_y1 = zapgremlins(y1);
+}
+
+void MouseY_Ctor(MouseInputUGen *unit)
+{
+	SETCALC(MouseY_next);
+	unit->m_b1 = 0.f;
+	unit->m_lag = 0.f;
+	MouseY_next(unit, 1);
+}
+
+
+void MouseButton_next(MouseInputUGen *unit, int inNumSamples)
+{
+	// minval, maxval, warp, lag
+
+	float minval = ZIN0(0);
+	float maxval = ZIN0(1);
+	float lag = ZIN0(2);
+
+	float y1 = unit->m_y1;
+	float b1 = unit->m_b1;
+
+	if (lag != unit->m_lag) {
+		unit->m_b1 = lag == 0.f ? 0.f : (float)exp(log001 / (lag * unit->mRate->mSampleRate));
+		unit->m_lag = lag;
+	}
+	float y0 = gMouseUGenGlobals.mouseButton ? maxval : minval;
+	ZOUT0(0) = y1 = y0 + b1 * (y1 - y0);
+	unit->m_y1 = zapgremlins(y1);
+}
+
+void MouseButton_Ctor(MouseInputUGen *unit)
+{
+	SETCALC(MouseButton_next);
+	unit->m_b1 = 0.f;
+	unit->m_lag = 0.f;
+	MouseButton_next(unit, 1);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+// example of implementing a plug in command with async execution.
+
+struct MyPluginData // data for the global instance of the plugin
+{
+	float a, b;
+};
+
+struct MyCmdData // data for each command
+{
+	MyPluginData* myPlugin;
+	float x, y;
+	char *name;
+};
+
+MyPluginData gMyPlugin; // global
+
+bool cmdStage2(World* world, void* inUserData)
+{
+	// user data is the command.
+	MyCmdData* myCmdData = (MyCmdData*)inUserData;
+
+	// just print out the values
+	Print("cmdStage2 a %g  b %g  x %g  y %g  name %s\n",
+		  myCmdData->myPlugin->a, myCmdData->myPlugin->b,
+	   myCmdData->x, myCmdData->y,
+	   myCmdData->name);
+
+	return true;
+}
+
+bool cmdStage3(World* world, void* inUserData)
+{
+	// user data is the command.
+	MyCmdData* myCmdData = (MyCmdData*)inUserData;
+
+	// just print out the values
+	Print("cmdStage3 a %g  b %g  x %g  y %g  name %s\n",
+		  myCmdData->myPlugin->a, myCmdData->myPlugin->b,
+	   myCmdData->x, myCmdData->y,
+	   myCmdData->name);
+
+	// scsynth will perform completion message after this returns
+	return true;
+}
+
+bool cmdStage4(World* world, void* inUserData)
+{
+	// user data is the command.
+	MyCmdData* myCmdData = (MyCmdData*)inUserData;
+
+	// just print out the values
+	Print("cmdStage4 a %g  b %g  x %g  y %g  name %s\n",
+		  myCmdData->myPlugin->a, myCmdData->myPlugin->b,
+	   myCmdData->x, myCmdData->y,
+	   myCmdData->name);
+
+	// scsynth will send /done after this returns
+	return true;
+}
+
+void cmdCleanup(World* world, void* inUserData)
+{
+	// user data is the command.
+	MyCmdData* myCmdData = (MyCmdData*)inUserData;
+
+	Print("cmdCleanup a %g  b %g  x %g  y %g  name %s\n",
+		  myCmdData->myPlugin->a, myCmdData->myPlugin->b,
+	   myCmdData->x, myCmdData->y,
+	   myCmdData->name);
+
+	RTFree(world, myCmdData->name); // free the string
+	RTFree(world, myCmdData); // free command data
+	// scsynth will delete the completion message for you.
+}
+
+void cmdDemoFunc(World *inWorld, void* inUserData, struct sc_msg_iter *args, void *replyAddr)
+{
+	Print("->cmdDemoFunc %p\n", inUserData);
+
+	// user data is the plug-in's user data.
+	MyPluginData* thePlugInData = (MyPluginData*)inUserData;
+
+	// allocate command data, free it in cmdCleanup.
+	MyCmdData* myCmdData = (MyCmdData*)RTAlloc(inWorld, sizeof(MyCmdData));
+	myCmdData->myPlugin = thePlugInData;
+
+	// ..get data from args..
+	myCmdData->x = 0.;
+	myCmdData->y = 0.;
+	myCmdData->name = 0;
+
+	// float arguments
+	myCmdData->x = args->getf();
+	myCmdData->y = args->getf();
+
+	// how to pass a string argument:
+	const char *name = args->gets(); // get the string argument
+	if (name) {
+		myCmdData->name = (char*)RTAlloc(inWorld, strlen(name)+1); // allocate space, free it in cmdCleanup.
+		strcpy(myCmdData->name, name); // copy the string
+	}
+
+	// how to pass a completion message
+	int msgSize = args->getbsize();
+	char* msgData = 0;
+	if (msgSize) {
+		// allocate space for completion message
+		// scsynth will delete the completion message for you.
+		msgData = (char*)RTAlloc(inWorld, msgSize);
+		args->getb(msgData, msgSize); // copy completion message.
+	}
+
+	DoAsynchronousCommand(inWorld, replyAddr, "cmdDemoFunc", (void*)myCmdData,
+						  (AsyncStageFn)cmdStage2,
+						  (AsyncStageFn)cmdStage3,
+						  (AsyncStageFn)cmdStage4,
+						  cmdCleanup,
+					   msgSize, msgData);
+
+	Print("<-cmdDemoFunc\n");
+}
+
+/*
+ * to test the above, send the server these commands:
+ *
+ *
+ * SynthDef(\sine, { Out.ar(0, SinOsc.ar(800,0,0.2)) }).load(s);
+ * s.sendMsg(\cmd, \pluginCmdDemo, 7, 9, \mno, [\s_new, \sine, 900, 0, 0]);
+ * s.sendMsg(\n_free, 900);
+ * s.sendMsg(\cmd, \pluginCmdDemo, 7, 9, \mno);
+ * s.sendMsg(\cmd, \pluginCmdDemo, 7, 9);
+ * s.sendMsg(\cmd, \pluginCmdDemo, 7);
+ * s.sendMsg(\cmd, \pluginCmdDemo);
+ *
+ */
+
+
+
+PluginLoad(UIUGens)
+{
+	ft = inTable;
+
+	pthread_t uiListenThread;
+	pthread_create (&uiListenThread, NULL, gstate_update_func, (void*)0);
+
+	DefineSimpleUnit(KeyState);
+
+	DefineUnit("MouseX", sizeof(MouseInputUGen), (UnitCtorFunc)&MouseX_Ctor, 0, 0);
+	DefineUnit("MouseY", sizeof(MouseInputUGen), (UnitCtorFunc)&MouseY_Ctor, 0, 0);
+	DefineUnit("MouseButton", sizeof(MouseInputUGen), (UnitCtorFunc)&MouseButton_Ctor, 0, 0);
+
+	// define a plugin command - example code
+	gMyPlugin.a = 1.2f;
+	gMyPlugin.b = 3.4f;
+	DefinePlugInCmd("pluginCmdDemo", cmdDemoFunc, (void*)&gMyPlugin);
+}
+
+#ifdef __GNUC__
+#if !defined(__APPLE__) && !defined(_WIN32)
+static void __attribute__ ((destructor)) finalize(void)
+{
+	if (d)
+		XCloseDisplay(d);
+}
+#endif
+#endif
diff --git a/server/plugins/UnaryOpUGens.cpp b/server/plugins/UnaryOpUGens.cpp
index 436e4e2..cefcb22 100644
--- a/server/plugins/UnaryOpUGens.cpp
+++ b/server/plugins/UnaryOpUGens.cpp
@@ -21,6 +21,8 @@
 
 #include "SC_PlugIn.h"
 
+#include <boost/utility/enable_if.hpp>
+
 #ifdef NOVA_SIMD
 #include "simd_unary_arithmetic.hpp"
 #include "simd_binary_arithmetic.hpp"
@@ -30,31 +32,96 @@
 #include "softclip.hpp"
 #include "simd_unit_conversion.hpp"
 
-#if defined(__GNUC__) && !defined(__clang__)
-#define inline_functions __attribute__ ((flatten))
-#else
-#define inline_functions
-#endif
+#include "function_attributes.h"
 
 using nova::wrap_argument;
 
 #define NOVA_WRAPPER(NAME, NOVANAME)                                    \
-	inline_functions void NAME##_nova(UnaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void NAME##_nova(UnaryOpUGen *unit, int inNumSamples) \
 	{                                                                   \
 		nova::NOVANAME##_vec_simd(OUT(0), IN(0), inNumSamples);         \
 	}
 
 #define NOVA_WRAPPER_CT_UNROLL(NAME, NOVANAME)                          \
-	inline_functions void NAME##_nova(UnaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void NAME##_nova(UnaryOpUGen *unit, int inNumSamples) \
 	{                                                                   \
 		nova::NOVANAME##_vec_simd(OUT(0), IN(0), inNumSamples);         \
 	}                                                                   \
                                                                         \
-	inline_functions void NAME##_nova_64(UnaryOpUGen *unit, int inNumSamples) \
+	FLATTEN void NAME##_nova_64(UnaryOpUGen *unit, int inNumSamples) \
 	{                                                                   \
 		nova::NOVANAME##_vec_simd<64>(OUT(0), IN(0));                   \
 	}
 
+struct sc_distort_functor
+{
+	template <typename FloatType>
+	inline FloatType operator()(FloatType arg) const
+	{
+		return sc_distort(arg);
+	}
+
+	template <typename FloatType>
+	inline nova::vec<FloatType> operator()(nova::vec<FloatType> arg) const
+	{
+		nova::vec<FloatType> one (1.f);
+		return arg * reciprocal(one + abs(arg));
+	}
+};
+
+struct sc_scurve_functor
+{
+	template <typename FloatType>
+	inline FloatType operator()(FloatType arg) const
+	{
+		return sc_scurve(arg);
+	}
+
+	template <typename FloatType>
+	inline nova::vec<FloatType> operator()(nova::vec<FloatType> arg) const
+	{
+		return perform(arg);
+	}
+
+	template <typename VecType>
+	inline typename boost::disable_if_c<VecType::has_compare_bitmask, VecType >::type
+	perform(VecType arg) const
+	{
+		typedef VecType vec;
+
+		vec result;
+		for (int i = 0; i != result.size; ++i)
+			result.set(i, sc_scurve(arg.get(i)));
+		return result;
+	}
+
+	template <typename VecType>
+	inline typename boost::enable_if_c<VecType::has_compare_bitmask, VecType >::type
+	perform(VecType arg) const
+	{
+		typedef VecType vec;
+		vec one   (1.f);
+		vec zero  (0.f);
+		vec two   (2.f);
+		vec three (3.f);
+
+		vec result = (arg * arg) * ( three - (two * arg));
+
+		vec boundLow  = mask_lt(arg, zero);
+		vec boundHigh = mask_gt(arg, one);
+
+		result = select(result, zero, boundLow);
+		result = select(result, one, boundHigh);
+
+		return result;
+	}
+};
+
+
+namespace nova {
+NOVA_SIMD_DEFINE_UNARY_WRAPPER (distort, sc_distort_functor)
+NOVA_SIMD_DEFINE_UNARY_WRAPPER (scurve, sc_scurve_functor)
+}
 #endif
 
 using namespace std; // for math functions
@@ -188,12 +255,12 @@ inline F sc_invert(F x)
 DEFINE_UNARY_OP_FUNCS(invert, sc_invert)
 
 #ifdef NOVA_SIMD
-inline_functions void invert_nova(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void invert_nova(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::minus_vec_simd(OUT(0), 0.f, IN(0), inNumSamples);
 }
 
-inline_functions void invert_nova_64(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void invert_nova_64(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::minus_vec_simd<64>(OUT(0), 0.f, IN(0));
 }
@@ -227,54 +294,48 @@ void thru_a(UnaryOpUGen *unit, int inNumSamples)
 DEFINE_UNARY_OP_FUNCS(abs, std::abs)
 
 #ifdef NOVA_SIMD
-inline_functions void zero_nova(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void zero_nova(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::zerovec_simd(OUT(0), inNumSamples);
 }
 
-inline_functions void zero_nova_64(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void zero_nova_64(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::zerovec_simd<64>(OUT(0));
 }
 
-inline_functions void thru_nova(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void thru_nova(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::copyvec_simd(OUT(0), IN(0), inNumSamples);
 }
 
-inline_functions void thru_nova_64(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void thru_nova_64(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::copyvec_simd<64>(OUT(0), IN(0));
 }
 
-inline_functions void abs_nova(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void abs_nova(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::abs_vec_simd(OUT(0), IN(0), inNumSamples);
 }
 
-inline_functions void abs_nova_64(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void abs_nova_64(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::abs_vec_simd<64>(OUT(0), IN(0));
 }
 #endif
 
-template <typename F>
-inline F sc_recip(F x)
-{
-	return (F)1. / x;
-}
-
-DEFINE_UNARY_OP_FUNCS(recip, sc_recip)
+DEFINE_UNARY_OP_FUNCS(recip, sc_reciprocal)
 
 #ifdef NOVA_SIMD
-inline_functions void recip_nova(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void recip_nova(UnaryOpUGen *unit, int inNumSamples)
 {
-	nova::over_vec_simd(OUT(0), 1.f, IN(0), inNumSamples);
+	nova::reciprocal_vec_simd(OUT(0), IN(0), inNumSamples);
 }
 
-inline_functions void recip_nova_64(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void recip_nova_64(UnaryOpUGen *unit, int inNumSamples)
 {
-	nova::over_vec_simd<64>(OUT(0), 1.f, IN(0));
+	nova::reciprocal_vec_simd<64>(OUT(0), IN(0));
 }
 #endif
 
@@ -376,23 +437,7 @@ NOVA_WRAPPER_CT_UNROLL(sign, sgn)
 DEFINE_UNARY_OP_FUNCS(distort, sc_distort)
 
 #ifdef NOVA_SIMD
-void distort_a_nova(UnaryOpUGen *unit, int inNumSamples)
-{
-	float *out = OUT(0);
-	float *a = IN(0);
-	using namespace nova;
-
-	int vs = vec<float>::size;
-	int len = inNumSamples / vs;
-	vec<float> one(1.f);
-
-	for (int i=0; i<len; ++i) {
-		vec<float> arg; arg.load_aligned(a);
-		vec<float> result = arg / (one + abs(arg));
-		result.store_aligned(out);
-		out += vs; a += vs;
-	}
-}
+NOVA_WRAPPER_CT_UNROLL(distort, distort)
 #endif
 
 DEFINE_UNARY_OP_FUNCS(distortneg, sc_distortneg)
@@ -408,16 +453,20 @@ DEFINE_UNARY_OP_FUNCS(welwindow, sc_welwindow)
 DEFINE_UNARY_OP_FUNCS(triwindow, sc_triwindow)
 
 DEFINE_UNARY_OP_FUNCS(scurve, sc_scurve)
+#ifdef NOVA_SIMD
+NOVA_WRAPPER_CT_UNROLL(scurve, scurve)
+#endif
+
 DEFINE_UNARY_OP_FUNCS(ramp, sc_ramp)
 
 
 #ifdef NOVA_SIMD
-inline_functions void ramp_nova(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void ramp_nova(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::clip_vec_simd(OUT(0), wrap_argument(IN(0)), wrap_argument(0.f), wrap_argument(1.f), inNumSamples);
 }
 
-inline_functions void ramp_nova_64(UnaryOpUGen *unit, int inNumSamples)
+FLATTEN void ramp_nova_64(UnaryOpUGen *unit, int inNumSamples)
 {
 	nova::clip_vec_simd<64>(OUT(0), wrap_argument(IN(0)), wrap_argument(0.f), wrap_argument(1.f));
 }
@@ -662,7 +711,7 @@ static UnaryOpFunc ChooseNovaSimdFunc(UnaryOpUGen *unit)
 		case opCosH : func = &cosh_a; break;
 		case opTanH : func = &tanh_nova; break;
 
-		case opDistort : func = &distort_a_nova; break;
+		case opDistort : func = &distort_nova_64; break;
 		case opSoftClip : func = &softclip_nova_64; break;
 
 		case opRectWindow : func = &rectwindow_a; break;
@@ -670,7 +719,7 @@ static UnaryOpFunc ChooseNovaSimdFunc(UnaryOpUGen *unit)
 		case opWelchWindow : func = &welwindow_a; break;
 		case opTriWindow : func = &triwindow_a; break;
 
-		case opSCurve : func = &scurve_a; break;
+		case opSCurve : func = &scurve_nova_64; break;
 		case opRamp : return &ramp_nova_64;
 
 		default : return &thru_nova_64;
@@ -712,7 +761,7 @@ static UnaryOpFunc ChooseNovaSimdFunc(UnaryOpUGen *unit)
 		case opCosH : func = &cosh_a; break;
 		case opTanH : func = &tanh_nova; break;
 
-		case opDistort : func = &distort_a_nova; break;
+		case opDistort : func = &distort_nova; break;
 		case opSoftClip : func = &softclip_nova; break;
 
 		case opRectWindow : func = &rectwindow_a; break;
@@ -720,7 +769,7 @@ static UnaryOpFunc ChooseNovaSimdFunc(UnaryOpUGen *unit)
 		case opWelchWindow : func = &welwindow_a; break;
 		case opTriWindow : func = &triwindow_a; break;
 
-		case opSCurve : func = &scurve_a; break;
+		case opSCurve : func = &scurve_nova; break;
 		case opRamp : func = &ramp_nova; break;
 
 		default : func = &thru_nova; break;
diff --git a/server/plugins/UnpackFFTUGens.cpp b/server/plugins/UnpackFFTUGens.cpp
index f18bd56..ea3f6b7 100644
--- a/server/plugins/UnpackFFTUGens.cpp
+++ b/server/plugins/UnpackFFTUGens.cpp
@@ -120,7 +120,7 @@ void Unpack1FFT_Ctor(Unpack1FFT* unit)
 	} else { \
 		buf = world->mSndBufs + ibufnum; \
 	} \
-	int binindex = unit->binindex; \
+	int binindex __attribute__((__unused__)) = unit->binindex; \
 	LOCK_SNDBUF(buf); \
 	SCComplexBuf *p = ToComplexApx(buf); \
 
diff --git a/server/scsynth/CMakeLists.txt b/server/scsynth/CMakeLists.txt
index a2681c6..5a7a488 100644
--- a/server/scsynth/CMakeLists.txt
+++ b/server/scsynth/CMakeLists.txt
@@ -9,7 +9,7 @@ if (FFT_GREEN)
 elseif (APPLE)
 	add_definitions("-DSC_FFT_VDSP")
 else()
-	find_package(FFTW3f)
+	find_package(FFTW3f 3.3)
 
 	if (FFTW3F_FOUND)
 		add_definitions("-DSC_FFT_FFTW")
@@ -18,6 +18,9 @@ else()
 	endif()
 endif()
 
+if(NOVA_SIMD)
+	add_definitions(-DNOVA_SIMD)
+endif()
 
 if (NO_AVAHI)
 
@@ -31,8 +34,7 @@ else()
 endif()
 
 # Here we work out which audio API to use, from system type and/or user option.
-string(TOLOWER "$ENV{AUDIOAPI}" AUDIOAPI)
-if(AUDIOAPI STREQUAL "")
+if(AUDIOAPI STREQUAL "default")
 	if(APPLE)
 		set(AUDIOAPI coreaudio)
 	elseif(WIN32)
@@ -85,6 +87,7 @@ set(scsynth_sources
 	${CMAKE_SOURCE_DIR}/common/SC_fftlib.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_AllocPool.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_DirUtils.cpp
+	${CMAKE_SOURCE_DIR}/common/SC_Reply.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_Sem.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_StandAloneInfo_Darwin.cpp
 	${CMAKE_SOURCE_DIR}/common/SC_StringBuffer.cpp
@@ -130,11 +133,17 @@ endif()
 
 set (FINAL_BUILD 0) # disable final build for scsynth
 
+if (LIBSCSYNTH)
+	set (LIBSCSYNTH_TYPE SHARED)
+else()
+	set (LIBSCSYNTH_TYPE STATIC)
+endif()
+
 if (FINAL_BUILD)
 	CREATE_FINAL_FILE(libscsynth_final.cpp ${scsynth_sources})
-	add_library(libscsynth SHARED libscsynth_final.cpp)
+	add_library(libscsynth ${LIBSCSYNTH_TYPE} libscsynth_final.cpp)
 else()
-	add_library(libscsynth SHARED ${scsynth_sources})
+	add_library(libscsynth ${LIBSCSYNTH_TYPE} ${scsynth_sources})
 endif()
 
 set_property(TARGET libscsynth
@@ -182,10 +191,12 @@ endif()
 
 
 set_property(TARGET libscsynth PROPERTY OUTPUT_NAME scsynth)
-# These two properties are ABI version info, not sc version:
-set_property(TARGET libscsynth PROPERTY VERSION     1.0.0)
-set_property(TARGET libscsynth PROPERTY SOVERSION   1)
 
+if (LIBSCSYNTH)
+	# These two properties are ABI version info, not sc version:
+	set_property(TARGET libscsynth PROPERTY VERSION     1.0.0)
+	set_property(TARGET libscsynth PROPERTY SOVERSION   1)
+endif()
 
 if (FFTW3F_FOUND)
 	target_link_libraries(libscsynth ${FFTW3F_LIBRARY})
@@ -199,34 +210,43 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
 	target_link_libraries(libscsynth rt)
 endif()
 
+file(GLOB_RECURSE all_headers ../../*hpp)
 
-add_executable(scsynth scsynth_main.cpp)
+add_executable(scsynth scsynth_main.cpp ${all_headers})
 target_link_libraries(scsynth libscsynth ${PTHREADS_LIBRARY})
 
 if(LTO)
     set_property(TARGET scsynth libscsynth
                  APPEND PROPERTY COMPILE_FLAGS "-flto -flto-report")
 
-    set_property(TARGET scsynth libscsynth
+    set_property(TARGET scsynth
                  APPEND PROPERTY LINK_FLAGS "-flto -flto-report -fwhole-program")
+
+    set_property(TARGET libscsynth
+                 APPEND PROPERTY LINK_FLAGS "-flto -flto-report")
 endif()
 
-#TODO allow apple users to install to fhs-ish path if INSTALL_FHS option is enabled
+if (LIBSCSYNTH)
+	set(INSTALL_TARGETS scsynth libscsynth)
+else()
+	set(INSTALL_TARGETS scsynth)
+endif()
 
 if(APPLE)
+	# TODO allow apple users to install to fhs-ish path if INSTALL_FHS option is enabled
 	# determines the app name and app install location (scappbundlename, scappdir):
 	include (${CMAKE_SOURCE_DIR}/cmake_modules/MacAppFolder.cmake)
-	install(TARGETS scsynth libscsynth
+	install(TARGETS ${INSTALL_TARGETS}
 			RUNTIME DESTINATION "${scappauxresourcesdir}"
-			LIBRARY DESTINATION "${scappauxresourcesdir}/../MacOS"
+			LIBRARY DESTINATION "${scappauxresourcesdir}"
 			PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE OWNER_WRITE)
 elseif(WIN32)
-	install(TARGETS libscsynth scsynth
+	install(TARGETS ${INSTALL_TARGETS}
 			DESTINATION "SuperCollider"
 			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
 else()
-	install(TARGETS libscsynth scsynth
-			LIBRARY DESTINATION "lib"
+	install(TARGETS ${INSTALL_TARGETS}
 			RUNTIME DESTINATION "bin"
+			LIBRARY DESTINATION "lib"
 			PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
 endif()
diff --git a/server/scsynth/SC_ComPort.cpp b/server/scsynth/SC_ComPort.cpp
index 61684c7..677f03d 100644
--- a/server/scsynth/SC_ComPort.cpp
+++ b/server/scsynth/SC_ComPort.cpp
@@ -18,12 +18,6 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 */
 
-#ifndef _WIN32
-# include "SC_ComPort.h"
-#else
-# include "../../include/server/SC_ComPort.h"
-#endif
-
 #include "SC_Endian.h"
 #include "SC_Lock.h"
 #include "SC_HiddenWorld.h"
@@ -33,6 +27,9 @@
 #include <stdexcept>
 #include <stdarg.h>
 
+#include <sys/types.h>
+#include "OSC_Packet.h"
+
 #ifdef _WIN32
 	# include <winsock2.h>
 	typedef int socklen_t;
@@ -54,25 +51,136 @@
 	#include "Rendezvous.h"
 #endif
 
+bool ProcessOSCPacket(World *inWorld, OSC_Packet *inPacket);
+
+namespace {
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SC_CmdPort
+{
+protected:
+	pthread_t mThread;
+	struct World *mWorld;
+
+	void Start();
+	virtual ReplyFunc GetReplyFunc()=0;
+public:
+	SC_CmdPort(struct World *inWorld);
+	virtual ~SC_CmdPort() {}
+
+	virtual void* Run()=0;
+};
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SC_ComPort : public SC_CmdPort
+{
+protected:
+	int mPortNum;
+	int mSocket;
+	struct sockaddr_in mBindSockAddr;
+
+	#ifdef USE_RENDEZVOUS
+	pthread_t mRendezvousThread;
+	#endif
+
+public:
+	SC_ComPort(struct World *inWorld, int inPortNum);
+	virtual ~SC_ComPort();
+
+	int Socket() { return mSocket; }
+
+	int PortNum() const { return mPortNum; }
+	#ifdef USE_RENDEZVOUS
+	// default implementation does nothing (this is correct for
+	// SC_TcpConnectionPort). Subclasses may override.
+	virtual void PublishToRendezvous() {  };
+	#endif
+};
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+const size_t kMaxUDPSize = 65535;
+
+class SC_UdpInPort : public SC_ComPort
+{
+protected:
+	struct sockaddr_in mReplySockAddr;
+	unsigned char mReadBuf[kMaxUDPSize];
+	virtual ReplyFunc GetReplyFunc();
+
+public:
+	SC_UdpInPort(struct World *inWorld, int inPortNum);
+	~SC_UdpInPort();
+
+	int PortNum() const { return mPortNum; }
+
+	void* Run();
+	#ifdef USE_RENDEZVOUS
+	virtual void PublishToRendezvous();
+	#endif
+
+};
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SC_TcpInPort : public SC_ComPort
+{
+	SC_Semaphore mConnectionAvailable;
+	int mBacklog;
+
+protected:
+	virtual ReplyFunc GetReplyFunc();
+
+public:
+	SC_TcpInPort(struct World *inWorld, int inPortNum, int inMaxConnections, int inBacklog);
+
+	virtual void* Run();
+
+	void ConnectionTerminated();
+	#ifdef USE_RENDEZVOUS
+	virtual void PublishToRendezvous();
+	#endif
+};
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+class SC_TcpConnectionPort : public SC_ComPort
+{
+	SC_TcpInPort *mParent;
+	unsigned char mReadBuf[kMaxUDPSize];
+
+protected:
+	virtual ReplyFunc GetReplyFunc();
+
+public:
+	SC_TcpConnectionPort(struct World *inWorld, SC_TcpInPort *inParent, int inSocket);
+	virtual ~SC_TcpConnectionPort();
+
+	virtual void* Run();
+};
+
+
+
 int recvall(int socket, void *msg, size_t len);
 int sendallto(int socket, const void *msg, size_t len, struct sockaddr *toaddr, int addrlen);
 int sendall(int socket, const void *msg, size_t len);
 
-bool ProcessOSCPacket(World *inWorld, OSC_Packet *inPacket);
-
-void dumpOSCmsg(int inSize, char* inData)
+static bool dumpOSCmsg(int inSize, char* inData)
 {
 	int size;
 	const char *data;
 
 	if (inData[0]) {
-		char *addr = inData;
+		const char *addr = inData;
+		if (strcmp(addr, "/status") == 0) // skip /status messages
+			return false;
+
 		data = OSCstrskip(inData);
 		size = inSize - (data - inData);
 		scprintf("[ \"%s\",", addr);
-	}
-	else
-	{
+	} else {
 		scprintf("[ %d,", OSCint(inData));
 		data = inData + 4;
 		size = inSize - 4;
@@ -117,6 +225,7 @@ void dumpOSCmsg(int inSize, char* inData)
 	}
 leave:
 	scprintf(" ]");
+	return true;
 }
 
 void hexdump(int size, char* data)
@@ -155,7 +264,7 @@ void hexdump(int size, char* data)
 	scprintf("\n");
 }
 
-void dumpOSC(int mode, int size, char* inData)
+static void dumpOSC(int mode, int size, char* inData)
 {
 	if (mode & 1)
 	{
@@ -177,14 +286,17 @@ void dumpOSC(int mode, int size, char* inData)
 		}
 		else
 		{
-			dumpOSCmsg(size, inData);
-			scprintf("\n");
+			bool contentPrinted = dumpOSCmsg(size, inData);
+			if (contentPrinted)
+				scprintf("\n");
 		}
 	}
 
 	if (mode & 2) hexdump(size, inData);
 }
 
+}
+
 SC_DLLEXPORT_C bool World_SendPacketWithContext(World *inWorld, int inSize, char *inData, ReplyFunc inFunc, void *inContext)
 {
 	bool result = false;
@@ -212,8 +324,58 @@ SC_DLLEXPORT_C bool World_SendPacket(World *inWorld, int inSize, char *inData, R
 	return World_SendPacketWithContext(inWorld, inSize, inData, inFunc, 0);
 }
 
+SC_DLLEXPORT_C int World_OpenUDP(struct World *inWorld, int inPort)
+{
+	try {
+		new SC_UdpInPort(inWorld, inPort);
+		return true;
+	} catch (std::exception& exc) {
+		scprintf("Exception in World_OpenUDP: %s\n", exc.what());
+	} catch (...) {
+	}
+	return false;
+}
+
+SC_DLLEXPORT_C int World_OpenTCP(struct World *inWorld, int inPort, int inMaxConnections, int inBacklog)
+{
+	try {
+		new SC_TcpInPort(inWorld, inPort, inMaxConnections, inBacklog);
+		return true;
+	} catch (std::exception& exc) {
+		scprintf("Exception in World_OpenTCP: %s\n", exc.what());
+	} catch (...) {
+	}
+	return false;
+}
+
+void set_real_time_priority(pthread_t thread)
+{
+	int policy;
+	struct sched_param param;
+
+	pthread_getschedparam (thread, &policy, &param);
+#ifdef __linux__
+	policy = SCHED_FIFO;
+	const char* env = getenv("SC_SCHED_PRIO");
+	// jack uses a priority of 10 in realtime mode, so this is a good default
+	const int defprio = 5;
+	const int minprio = sched_get_priority_min(policy);
+	const int maxprio = sched_get_priority_max(policy);
+	const int prio = env ? atoi(env) : defprio;
+	param.sched_priority = sc_clip(prio, minprio, maxprio);
+#else
+	policy = SCHED_RR;         // round-robin, AKA real-time scheduling
+	param.sched_priority = 63; // you'll have to play with this to see what it does
+#endif
+	pthread_setschedparam (thread, policy, &param);
+}
+
+
+
 //////////////////////////////////////////////////////////////////////////////////////////////////////////
 
+namespace {
+
 SC_CmdPort::SC_CmdPort(struct World *inWorld) : mWorld(inWorld)
 {
 }
@@ -242,29 +404,6 @@ void* com_thread_func(void* arg)
     return result;
 }
 
-void set_real_time_priority(pthread_t thread);
-void set_real_time_priority(pthread_t thread)
-{
-	int policy;
-	struct sched_param param;
-
-	pthread_getschedparam (thread, &policy, &param);
-#ifdef __linux__
-	policy = SCHED_FIFO;
-	const char* env = getenv("SC_SCHED_PRIO");
-	// jack uses a priority of 10 in realtime mode, so this is a good default
-	const int defprio = 5;
-	const int minprio = sched_get_priority_min(policy);
-	const int maxprio = sched_get_priority_max(policy);
-	const int prio = env ? atoi(env) : defprio;
-	param.sched_priority = sc_clip(prio, minprio, maxprio);
-#else
-	policy = SCHED_RR;         // round-robin, AKA real-time scheduling
-	param.sched_priority = 63; // you'll have to play with this to see what it does
-#endif
-	pthread_setschedparam (thread, policy, &param);
-}
-
 void SC_CmdPort::Start()
 {
     pthread_create (&mThread, NULL, com_thread_func, (void*)this);
@@ -342,9 +481,12 @@ SC_UdpInPort::~SC_UdpInPort()
 #endif
 }
 
+
+}
+
 //////////////////////////////////////////////////////////////////////////////////////////////////////////
 
-void DumpReplyAddress(ReplyAddress *inReplyAddress)
+static void DumpReplyAddress(ReplyAddress *inReplyAddress)
 {
 	scprintf("mSockAddrLen %d\n", inReplyAddress->mSockAddrLen);
 	scprintf("mSocket %d\n", inReplyAddress->mSocket);
@@ -375,18 +517,8 @@ ReplyAddress GetKey(ReplyAddress *inReplyAddress)
 }
 */
 
-bool operator==(const ReplyAddress& a, const ReplyAddress& b)
-{
-	return a.mSockAddr.sin_addr.s_addr == b.mSockAddr.sin_addr.s_addr
-		&& a.mSockAddr.sin_family == b.mSockAddr.sin_family
-		&& a.mSockAddr.sin_port == b.mSockAddr.sin_port
-#ifdef __APPLE__
-		&& a.mSockAddr.sin_len == b.mSockAddr.sin_len
-#endif
-		&& a.mSocket == b.mSocket;
-}
+namespace {
 
-void udp_reply_func(struct ReplyAddress *addr, char* msg, int size);
 void udp_reply_func(struct ReplyAddress *addr, char* msg, int size)
 {
 	int total = sendallto(addr->mSocket, msg, size, (sockaddr*)&addr->mSockAddr, addr->mSockAddrLen);
@@ -500,10 +632,6 @@ void SC_TcpInPort::ConnectionTerminated()
         mConnectionAvailable.Release();
 }
 
-void null_reply_func(struct ReplyAddress* /*addr*/, char* /*msg*/, int /*size*/)
-{
-}
-
 ReplyFunc SC_TcpInPort::GetReplyFunc()
 {
 	return null_reply_func;
@@ -674,3 +802,5 @@ int sendall(int socket, const void *msg, size_t len)
 	}
 	return total;
 }
+
+}
diff --git a/server/scsynth/SC_CoreAudio.cpp b/server/scsynth/SC_CoreAudio.cpp
index 75e90ae..fa20be5 100644
--- a/server/scsynth/SC_CoreAudio.cpp
+++ b/server/scsynth/SC_CoreAudio.cpp
@@ -20,11 +20,11 @@
 
 #include "SC_CoreAudio.h"
 #include "SC_Sem.h"
-#include "SC_ComPort.h"
 #include <stdarg.h>
 #include "SC_SequencedCommand.h"
 #include "SC_Prototypes.h"
 #include "SC_HiddenWorld.h"
+#include "SC_WorldOptions.h"
 #include "SC_Endian.h"
 #include "SC_Lib_Cintf.h"
 #include <stdlib.h>
@@ -78,8 +78,7 @@ int64 oscTimeNow()
 	return CoreAudioHostTimeToOSC(AudioGetCurrentHostTime());
 }
 
-void syncOSCOffsetWithTimeOfDay();
-void syncOSCOffsetWithTimeOfDay()
+static void syncOSCOffsetWithTimeOfDay()
 {
 	// generate a value gOSCoffset such that
 	// (gOSCOffset + systemTimeInOSCunits)
@@ -280,7 +279,7 @@ int PerformOSCMessage(World *inWorld, int inSize, char *inData, ReplyAddress *in
 	}
 	if (!cmdObj) {
 		CallSendFailureCommand(inWorld, inData, "Command not found", inReply);
-		scprintf("FAILURE %s Command not found\n", inData);
+		scprintf("FAILURE IN SERVER: %s Command not found\n", inData);
 		return kSCErr_NoSuchCommand;
 	}
 
@@ -593,16 +592,34 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 	UInt32	count;
 	mOutputDevice = kAudioDeviceUnknown;
 	mInputDevice = kAudioDeviceUnknown;
+	AudioObjectPropertyAddress propertyAddress;
+
+	propertyAddress.mSelector = kAudioHardwarePropertyDevices;
+	propertyAddress.mScope = kAudioObjectPropertyScopeGlobal;
+	propertyAddress.mElement = kAudioObjectPropertyElementMaster;
 
 	//scprintf("SC_CoreAudioDriver::Setup world %p\n", mWorld);
 
 	////////////////////////////////////////////////////////////////////////////////////////////////
 
 	do {
-		err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &count, 0);
+		// err = AudioHardwareGetPropertyInfo( kAudioHardwarePropertyDevices, &count, 0);
+				
+		propertyAddress.mSelector = kAudioHardwarePropertyDevices;
 
+		err = AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &count);
+		
+		if (err != noErr) {
+			scprintf("get kAudioHardwarePropertyDevices error %4.4s\n", (char*)&err);
+			break;
+		}
+						
 		AudioDeviceID *devices = (AudioDeviceID*)malloc(count);
-		err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &count, devices);
+				
+		// err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &count, devices);
+		
+		err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &count, devices);
+
 		if (err != kAudioHardwareNoError) {
 			scprintf("get kAudioHardwarePropertyDevices error %4.4s\n", (char*)&err);
 			free(devices);
@@ -614,14 +631,22 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 			scprintf("Number of Devices: %d\n", numdevices);
 		}
 		for (int i = 0; i < numdevices; ++i) {
-			err = AudioDeviceGetPropertyInfo(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+			propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+			
+			// err = AudioDeviceGetPropertyInfo(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+			
+			err = AudioObjectGetPropertyDataSize(devices[i], &propertyAddress, 0, NULL, &count);
+			
 			if (err != kAudioHardwareNoError) {
 				scprintf("info kAudioDevicePropertyDeviceName error %4.4s A %d %p\n", (char*)&err, i, devices[i]);
 				break;
 			}
 
 			char *name = (char*)malloc(count);
-			err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, name);
+			// err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, name);
+			
+			err = AudioObjectGetPropertyData(devices[i], &propertyAddress, 0, NULL, &count, name);
+			
 			if (err != kAudioHardwareNoError) {
 				scprintf("get kAudioDevicePropertyDeviceName error %4.4s A %d %p\n", (char*)&err, i, devices[i]);
 				free(name);
@@ -639,14 +664,22 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 	} while (false);
 
 	if (mWorld->hw->mInDeviceName || mWorld->hw->mOutDeviceName) {
-		err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &count, 0);
+		propertyAddress.mSelector = kAudioHardwarePropertyDevices;
+		
+		// err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &count, 0);
+		
+		err = AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &count);
+		
 		if (err != kAudioHardwareNoError) {
 			scprintf("info kAudioHardwarePropertyDevices error %4.4s\n", (char*)&err);
 			return false;
 		}
 
 		AudioDeviceID *devices = (AudioDeviceID*)malloc(count);
-		err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &count, devices);
+		
+		// err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &count, devices);
+		err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &count, devices);
+		
 		if (err != kAudioHardwareNoError) {
 			scprintf("get kAudioHardwarePropertyDevices error %4.4s\n", (char*)&err);
 			return false;
@@ -654,14 +687,22 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 
 		int numdevices = count / sizeof(AudioDeviceID);
 		for (int i = 0; i < numdevices; ++i) {
-			err = AudioDeviceGetPropertyInfo(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+			
+			// err = AudioDeviceGetPropertyInfo(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+			propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+			err = AudioObjectGetPropertyDataSize(devices[i], &propertyAddress, 0, NULL, &count);
+			
 			if (err != kAudioHardwareNoError) {
 				scprintf("info kAudioDevicePropertyDeviceName error %4.4s B %d %p\n", (char*)&err, i, devices[i]);
 				break;
 			}
 
 			char *name = (char*)malloc(count);
-			err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, name);
+			
+			// err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &count, name);
+			
+			err = AudioObjectGetPropertyData(devices[i], &propertyAddress, 0, NULL, &count, name);
+			
 			if (err != kAudioHardwareNoError) {
 				scprintf("get kAudioDevicePropertyDeviceName error %4.4s B %d %p\n", (char*)&err, i, devices[i]);
 				return false;
@@ -685,7 +726,12 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 		{
 			count = sizeof(mOutputDevice);
 			//get the output device:
-			err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &count, (void *) & mOutputDevice);
+			//			err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &count, (void *) & mOutputDevice);
+			
+			propertyAddress.mSelector = kAudioHardwarePropertyDefaultOutputDevice;
+			
+			err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &count, (void*) & mOutputDevice);
+			
 			if (err != kAudioHardwareNoError) {
 				scprintf("get kAudioHardwarePropertyDefaultOutputDevice error %4.4s\n", (char*)&err);
 				return false;
@@ -696,7 +742,13 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 		if (mInputDevice==kAudioDeviceUnknown)
 		{
 			count = sizeof(mInputDevice);
-			err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, &count, (void *) & mInputDevice);
+			//			err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, &count, (void *) & mInputDevice);
+			
+			propertyAddress.mSelector = kAudioHardwarePropertyDefaultInputDevice;
+			
+			err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &count, (void*) & mInputDevice);
+
+			
 			//get the input device:
 			if (err != kAudioHardwareNoError) {
 				scprintf("get kAudioHardwarePropertyDefaultInputDevice error %4.4s\n", (char*)&err);
@@ -710,12 +762,17 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 	AudioTimeStamp	now;
 	now.mFlags = kAudioTimeStampHostTimeValid;
 	now.mHostTime = AudioGetCurrentHostTime();
-
 	if (mPreferredHardwareBufferFrameSize)
 	{
 
 		count = sizeof(UInt32);
-		err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyBufferFrameSize, count, &mPreferredHardwareBufferFrameSize);
+		//		err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyBufferFrameSize, count, &mPreferredHardwareBufferFrameSize);
+		
+		propertyAddress.mSelector = kAudioDevicePropertyBufferFrameSize;
+		propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+		
+		err = AudioObjectSetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, count, &mPreferredHardwareBufferFrameSize);
+
 		if (err != kAudioHardwareNoError) {
 			scprintf("set kAudioDevicePropertyBufferFrameSize error %4.4s\n", (char*)&err);
 			//return false;
@@ -723,19 +780,30 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 		if (UseSeparateIO())
 		{
 			count = sizeof(UInt32);
-			err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyBufferFrameSize, count, &mPreferredHardwareBufferFrameSize);
+			//err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyBufferFrameSize, count, &mPreferredHardwareBufferFrameSize);
+			
+			propertyAddress.mSelector = kAudioDevicePropertyBufferFrameSize;
+			propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+			
+			err = AudioObjectSetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, count, &mPreferredHardwareBufferFrameSize);
+			
 			if (err != kAudioHardwareNoError) {
 				scprintf("set kAudioDevicePropertyNominalSampleRate error %4.4s\n", (char*)&err);
 				//return false;
 			}
 		}
 	}
-
 	if (mPreferredSampleRate)
 	{
 		Float64 sampleRate = mPreferredSampleRate;
 		count = sizeof(Float64);
-		err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyNominalSampleRate, count, &sampleRate);
+		//err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyNominalSampleRate, count, &sampleRate);
+		
+		propertyAddress.mSelector = kAudioDevicePropertyNominalSampleRate;
+		propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+		
+		err = AudioObjectSetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, count, &sampleRate);
+		
 		if (err != kAudioHardwareNoError) {
 			scprintf("set kAudioDevicePropertyNominalSampleRate error %4.4s\n", (char*)&err);
 			//return false;
@@ -743,7 +811,11 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 		if (UseSeparateIO())
 		{
 			count = sizeof(Float64);
-			err = AudioDeviceSetProperty(mInputDevice, &now, 0, false, kAudioDevicePropertyNominalSampleRate, count, &sampleRate);
+			//err = AudioDeviceSetProperty(mInputDevice, &now, 0, false, kAudioDevicePropertyNominalSampleRate, count, &sampleRate);
+			propertyAddress.mSelector = kAudioDevicePropertyNominalSampleRate;
+			propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+			
+			err = AudioObjectSetPropertyData(mInputDevice, &propertyAddress, 0, NULL, count, &sampleRate);
 			if (err != kAudioHardwareNoError) {
 				scprintf("set kAudioDevicePropertyNominalSampleRate error %4.4s\n", (char*)&err);
 				//return false;
@@ -753,7 +825,12 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 
 	// get the buffersize for the out device
 	count = sizeof(mHardwareBufferSize);
-	err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyBufferSize, &count, &mHardwareBufferSize);
+	// err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyBufferSize, &count, &mHardwareBufferSize);
+	propertyAddress.mSelector = kAudioDevicePropertyBufferSize;
+	propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+	
+	err = AudioObjectGetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, &count, &mHardwareBufferSize);
+	
 	if (err != kAudioHardwareNoError) {
 		scprintf("get kAudioDevicePropertyBufferSize error %4.4s\n", (char*)&err);
 		return false;
@@ -762,7 +839,12 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 
 	// get a description of the data format used by the output device
 	count = sizeof(AudioStreamBasicDescription);
-	err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyStreamFormat, &count, &outputStreamDesc);
+	// err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyStreamFormat, &count, &outputStreamDesc);
+	propertyAddress.mSelector = kAudioDevicePropertyStreamFormat;
+	propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+	
+	err = AudioObjectGetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, &count, &outputStreamDesc);
+	
 	if (err != kAudioHardwareNoError) {
 		scprintf("get kAudioDevicePropertyStreamFormat error %4.4s\n", (char*)&err);
 		return false;
@@ -771,9 +853,14 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 	if (mInputDevice != kAudioDeviceUnknown) {
 		// get a description of the data format used by the input device
 		count = sizeof(AudioStreamBasicDescription);
-		err = AudioDeviceGetProperty(mInputDevice, 0, true, kAudioDevicePropertyStreamFormat, &count, &inputStreamDesc);
+		// err = AudioDeviceGetProperty(mInputDevice, 0, true, kAudioDevicePropertyStreamFormat, &count, &inputStreamDesc);
+		propertyAddress.mSelector = kAudioDevicePropertyStreamFormat;
+		propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+
+		err = AudioObjectGetPropertyData(mInputDevice, &propertyAddress, 0, NULL, &count, &inputStreamDesc);
+
 		if (err != kAudioHardwareNoError) {
-			scprintf("get kAudioDevicePropertyStreamFormat error %4.4s\n", (char*)&err);
+			scprintf("get kAudioDevicePropertyStreamFormat error on input %4.4s\n", (char*)&err);
 			return false;
 		}
 
@@ -782,18 +869,26 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 			return false;
 		}
 	}
-
 	////////////////////////////////////////////////////////////////////////////////////////////////
 
 	do {
-		err = AudioDeviceGetPropertyInfo(mInputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+		
+		// err = AudioDeviceGetPropertyInfo(mInputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+		propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+		propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+		
+		err = AudioObjectGetPropertyDataSize(mInputDevice, &propertyAddress, 0, NULL, &count);
+		
 		if (err != kAudioHardwareNoError) {
 			scprintf("info kAudioDevicePropertyDeviceName error %4.4s C %p\n", (char*)&err, mInputDevice);
 			break;
 		}
 
 		char *name = (char*)malloc(count);
-		err = AudioDeviceGetProperty(mInputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, name);
+		//err = AudioDeviceGetProperty(mInputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, name);
+		
+		err = AudioObjectGetPropertyData(mInputDevice, &propertyAddress, 0, NULL, &count, name);
+		
 		if (err != kAudioHardwareNoError) {
 			scprintf("get kAudioDevicePropertyDeviceName error %4.4s C %p\n", (char*)&err, mInputDevice);
 			free(name);
@@ -806,16 +901,32 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 		free(name);
 
 		Boolean writeable;
-		err = AudioDeviceGetPropertyInfo(mInputDevice, 0, 1, kAudioDevicePropertyStreamConfiguration,
-										 &count, &writeable);
+		
+		// err = AudioDeviceGetPropertyInfo(mInputDevice, 0, 1, kAudioDevicePropertyStreamConfiguration, &count, &writeable);
+		propertyAddress.mSelector = kAudioDevicePropertyStreamConfiguration;
+		propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+
+		err = AudioObjectIsPropertySettable(mInputDevice, &propertyAddress, &writeable);
+		
+		if (err != kAudioHardwareNoError) {
+			scprintf("info kAudioDevicePropertyStreamConfiguration settable error %4.4s\n", (char*)&err);
+			break;
+		}
+
+		err = AudioObjectGetPropertyDataSize(mInputDevice, &propertyAddress, 0, NULL, &count);
+		
 		if (err != kAudioHardwareNoError) {
-			scprintf("info kAudioDevicePropertyStreamConfiguration error %4.4s\n", (char*)&err);
+			scprintf("info kAudioDevicePropertyStreamConfiguration size error %4.4s\n", (char*)&err);
 			break;
 		}
 
 		AudioBufferList *bufList = (AudioBufferList*)malloc(count);
-		err = AudioDeviceGetProperty(mInputDevice, 0, 1, kAudioDevicePropertyStreamConfiguration,
-									 &count, bufList);
+		// err = AudioDeviceGetProperty(mInputDevice, 0, 1, kAudioDevicePropertyStreamConfiguration, &count, bufList);
+		propertyAddress.mSelector = kAudioDevicePropertyStreamConfiguration;
+		propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+
+		err = AudioObjectGetPropertyData(mInputDevice, &propertyAddress, 0, NULL, &count, bufList);
+		
 		if (err != kAudioHardwareNoError) {
 			scprintf("get kAudioDevicePropertyStreamConfiguration error %4.4s\n", (char*)&err);
 			free(bufList);
@@ -834,14 +945,18 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 	if(mWorld->mVerbosity >= 0){
 		scprintf("\n");
 	}
-
 	////////////////////////////////////////////////////////////////////////////////////////////////
 
 	do {
-		err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, 0);
-
+		// err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, 0);
+		propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+		propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+		
+		err = AudioObjectGetPropertyDataSize(mOutputDevice, &propertyAddress, 0, NULL, &count);
+		
 		char *name = (char*)malloc(count);
-		err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, name);
+		// err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, name);
+		err = AudioObjectGetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, &count, name);
 		if (err != kAudioHardwareNoError) {
 			scprintf("get kAudioDevicePropertyDeviceName error %4.4s\n", (char*)&err);
 			free(name);
@@ -854,22 +969,37 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 		free(name);
 
 		Boolean writeable;
-		err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, 0, kAudioDevicePropertyStreamConfiguration,
-										 &count, &writeable);
+		// err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, 0, kAudioDevicePropertyStreamConfiguration, &count, &writeable);
+
+		propertyAddress.mSelector = kAudioDevicePropertyStreamConfiguration;
+		propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+
+		err = AudioObjectIsPropertySettable(mOutputDevice, &propertyAddress, &writeable);
+		
 		if (err != kAudioHardwareNoError) {
-			scprintf("info kAudioDevicePropertyStreamConfiguration error %4.4s\n", (char*)&err);
+			scprintf("info kAudioDevicePropertyStreamConfiguration settable error %4.4s\n", (char*)&err);
+			break;
+		}
+		
+		err = AudioObjectGetPropertyDataSize(mOutputDevice, &propertyAddress, 0, NULL, &count);
+		
+		if (err != kAudioHardwareNoError) {
+			scprintf("info kAudioDevicePropertyStreamConfiguration size error %4.4s\n", (char*)&err);
 			break;
 		}
 
 		AudioBufferList *bufList = (AudioBufferList*)malloc(count);
-		err = AudioDeviceGetProperty(mOutputDevice, 0, 0, kAudioDevicePropertyStreamConfiguration,
-									 &count, bufList);
+		// err = AudioDeviceGetProperty(mOutputDevice, 0, 0, kAudioDevicePropertyStreamConfiguration, &count, bufList);
+		
+		propertyAddress.mSelector = kAudioDevicePropertyStreamConfiguration	;
+		propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+
+		err = AudioObjectGetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, &count, bufList);
 		if (err != kAudioHardwareNoError) {
 			scprintf("get kAudioDevicePropertyStreamConfiguration error %4.4s\n", (char*)&err);
 			free(bufList);
 			break;
 		}
-
 		if(mWorld->mVerbosity >= 0){
 			scprintf("   Streams: %d\n", bufList->mNumberBuffers);
 			for (unsigned int j = 0; j < bufList->mNumberBuffers; ++j) {
@@ -881,13 +1011,17 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 	if(mWorld->mVerbosity >= 0){
 		scprintf("\n");
 	}
-
 	////////////////////////////////////////////////////////////////////////////////////////////////
 
 
 	if (UseSeparateIO()) {
 		count = sizeof(UInt32);
-		err = AudioDeviceGetProperty(mInputDevice, 0, true, kAudioDevicePropertySafetyOffset, &count, &mSafetyOffset);
+		//err = AudioDeviceGetProperty(mInputDevice, 0, true, kAudioDevicePropertySafetyOffset, &count, &mSafetyOffset);
+		propertyAddress.mSelector = kAudioDevicePropertySafetyOffset;
+		propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+		
+		err = AudioObjectGetPropertyData(mInputDevice, &propertyAddress, 0, NULL, &count, &mSafetyOffset);
+
 		if (err != kAudioHardwareNoError) {
 			scprintf("get kAudioDevicePropertySafetyOffset error %4.4s\n", (char*)&err);
 			return false;
@@ -897,9 +1031,31 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 		}
 
 		Boolean writeable;
-		err = AudioDeviceGetPropertyInfo(mInputDevice, 0, true, kAudioDevicePropertyStreamConfiguration, &count, &writeable);
+		//		err = AudioDeviceGetPropertyInfo(mInputDevice, 0, true, kAudioDevicePropertyStreamConfiguration, &count, &writeable);
+		
+		propertyAddress.mSelector = kAudioDevicePropertyStreamConfiguration;
+		propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+		
+		err = AudioObjectIsPropertySettable(mInputDevice, &propertyAddress, &writeable);
+		
+		if (err != kAudioHardwareNoError) {
+			scprintf("get kAudioDevicePropertyStreamConfiguration writeable error %4.4s\n", (char*)&err);
+			return false;
+		}
+		
+		err = AudioObjectGetPropertyDataSize(mInputDevice, &propertyAddress, 0, NULL, &count);
+
+		if (err != kAudioHardwareNoError) {
+			scprintf("get kAudioDevicePropertyStreamConfiguration size error %4.4s\n", (char*)&err);
+			return false;
+		}
+		
 		mInputBufList = (AudioBufferList*)malloc(count);
-		err = AudioDeviceGetProperty(mInputDevice, 0, true, kAudioDevicePropertyStreamConfiguration, &count, mInputBufList);
+		
+		//err = AudioDeviceGetProperty(mInputDevice, 0, true, kAudioDevicePropertyStreamConfiguration, &count, mInputBufList);
+		
+		err = AudioObjectGetPropertyData(mInputDevice, &propertyAddress, 0, NULL, &count, mInputBufList);
+		
 		if (err != kAudioHardwareNoError) {
 			scprintf("get kAudioDevicePropertyStreamConfiguration error %4.4s\n", (char*)&err);
 			return false;
@@ -935,41 +1091,50 @@ bool SC_CoreAudioDriver::DriverSetup(int* outNumSamplesPerCallback, double* outS
 	if(mWorld->mVerbosity >= 1){
 		scprintf("<-SC_CoreAudioDriver::Setup world %p\n", mWorld);
 	}
+
+
+
+	//check if using built-in output, and thus whether there could be headphone plug/un-plug issues
+	//our assumption otherwise is that we don't respond, and SC will stay with the pre-arranged or default device, and not restart just because headphones switched
+
+	// err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, 0);
 	
+	propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+	propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
 	
+	err = AudioObjectGetPropertyDataSize(mOutputDevice, &propertyAddress, 0, NULL, &count);
 	
-	//check if using built-in output, and thus whether there could be headphone plug/un-plug issues 
-	//our assumption otherwise is that we don't respond, and SC will stay with the pre-arranged or default device, and not restart just because headphones switched 
-	
-	err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, 0);
 	if (err != kAudioHardwareNoError) {
 		scprintf("info kAudioDevicePropertyDeviceName error %4.4s %p\n", (char*)&err, mOutputDevice);
-		return false; 
+		return false;
 	}
-	
+
 	char *outputname = (char*)malloc(count);
 	const char *testname = "Built-in Output";
-	err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, outputname);
+	
+	// err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyDeviceName, &count, outputname);
+	err = AudioObjectGetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, &count, outputname);
+	
 	if (err != kAudioHardwareNoError) {
 		scprintf("get kAudioDevicePropertyDeviceName error %4.4s %p\n", (char*)&err, mOutputDevice);
 		return false;
 	}
-	builtinoutputflag_ = 0; 
-	
+	builtinoutputflag_ = 0;
+
 	if (strcmp(testname, outputname) == 0) {
 		builtinoutputflag_ = 1;
 	}
 // else {
-//	
+//
 //		//check for an Aggregate Devices with a subdevice which is Built-in Output
 //		//http://lists.apple.com/archives/coreaudio-api/2009/Oct/msg00182.html
-//		
-//		
+//
+//
 //	}
 
 	free(outputname);
-	
-	
+
+
 	return true;
 }
 
@@ -1230,54 +1395,143 @@ OSStatus	hardwareListenerProc (	AudioHardwarePropertyID	inPropertyID,
     UInt32				outSize;
     Boolean				outWritable;
     AudioDeviceID		deviceID;
+
+	AudioObjectPropertyAddress  propertyAddress;
+	
+	propertyAddress.mSelector = kAudioHardwarePropertyDevices;
+	propertyAddress.mScope = kAudioObjectPropertyScopeGlobal;
+	propertyAddress.mElement = kAudioObjectPropertyElementMaster;
 	
     switch(inPropertyID)
     {
         case kAudioHardwarePropertyDefaultOutputDevice:
             scprintf("%s\n", "***** HARDWARE NOTIFICATION - kAudioHardwarePropertyDefaultOutputDevice\r");
-            err =  AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDefaultOutputDevice,  &outSize, &outWritable);
+            
+			//err =  AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDefaultOutputDevice,  &outSize, &outWritable);
+			
+			propertyAddress.mSelector = kAudioHardwarePropertyDefaultOutputDevice;
+			
+			err = AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &outSize);
+			
 			if (err) break;
-			err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &outSize, &deviceID);
+			
+			err = AudioObjectIsPropertySettable(kAudioObjectSystemObject, &propertyAddress, &outWritable);
+			
 			if (err) break;
-			err =  AudioDeviceGetPropertyInfo(deviceID, 0, false, kAudioDevicePropertyDeviceName,  &outSize, &outWritable);
+			
+			//err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &outSize, &deviceID);
+			
+			err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &outSize, &deviceID);
+			
 			if (err) break;
-			err = AudioDeviceGetProperty(deviceID, 0, false, kAudioDevicePropertyDeviceName, &outSize, cStr);
+			//			err =  AudioDeviceGetPropertyInfo(deviceID, 0, false, kAudioDevicePropertyDeviceName,  &outSize, &outWritable);
+			
+			propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+			
+			err = AudioObjectGetPropertyDataSize(deviceID, &propertyAddress, 0, NULL, &outSize);
+			
 			if (err) break;
 			
-			// do something
+			err = AudioObjectIsPropertySettable(deviceID, &propertyAddress, &outWritable);
 			
-            break;
+			if (err) break;
+
+			//err = AudioDeviceGetProperty(deviceID, 0, false, kAudioDevicePropertyDeviceName, &outSize, cStr);
 			
+			err = AudioObjectGetPropertyData(deviceID, &propertyAddress, 0, NULL, &outSize, cStr);
+			
+			if (err) break;
+
+			// do something
+
+            break;
+
         case kAudioHardwarePropertyDefaultInputDevice:
             scprintf("%s\n", "***** HARDWARE NOTIFICATION - kAudioHardwarePropertyDefaultInputDevice\r");
-            err =  AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDefaultInputDevice,  &outSize, &outWritable);
+			// err =  AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDefaultInputDevice,  &outSize, &outWritable);
+			
+			propertyAddress.mSelector = kAudioHardwarePropertyDefaultInputDevice;
+			
+			err = AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &outSize);
+			
 			if (err) break;
-			err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, &outSize, &deviceID);
+			
+			err = AudioObjectIsPropertySettable(kAudioObjectSystemObject, &propertyAddress, &outWritable);
+			
 			if (err) break;
-			err =  AudioDeviceGetPropertyInfo(deviceID, 0, false, kAudioDevicePropertyDeviceName,  &outSize, &outWritable);
+			
+			// err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, &outSize, &deviceID);
+			
+			err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &outSize, &deviceID);
+			
 			if (err) break;
-			err = AudioDeviceGetProperty(deviceID, 0, false, kAudioDevicePropertyDeviceName, &outSize, cStr);
+			
+			// err =  AudioDeviceGetPropertyInfo(deviceID, 0, false, kAudioDevicePropertyDeviceName,  &outSize, &outWritable);
+			
+			
+			propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+			
+			err = AudioObjectGetPropertyDataSize(deviceID, &propertyAddress, 0, NULL, &outSize);
+			
 			if (err) break;
 			
-			// do something
+			err = AudioObjectIsPropertySettable(deviceID, &propertyAddress, &outWritable);
+			
+			if (err) break;
+
+			// err = AudioDeviceGetProperty(deviceID, 0, false, kAudioDevicePropertyDeviceName, &outSize, cStr);
 			
-            break;
 			
+			err = AudioObjectGetPropertyData(deviceID, &propertyAddress, 0, NULL, &outSize, cStr);
+			
+			if (err) break;
+
+			// do something
+
+            break;
+
         case kAudioHardwarePropertyDefaultSystemOutputDevice:
             scprintf("%s\n", "***** HARDWARE NOTIFICATION - kAudioHardwarePropertyDefaultSystemOutputDevice\r");
-            err =  AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDefaultSystemOutputDevice,  &outSize, &outWritable);
+            //err =  AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDefaultSystemOutputDevice,  &outSize, &outWritable);
+			
+			propertyAddress.mSelector = kAudioHardwarePropertyDefaultSystemOutputDevice;
+			
+			err = AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &outSize);
+			
 			if (err) break;
-			err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultSystemOutputDevice, &outSize, &deviceID);
+			
+			err = AudioObjectIsPropertySettable(kAudioObjectSystemObject, &propertyAddress, &outWritable);
+			
 			if (err) break;
-			err =  AudioDeviceGetPropertyInfo(deviceID, 0, false, kAudioDevicePropertyDeviceName,  &outSize, &outWritable);
+			
+			// err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultSystemOutputDevice, &outSize, &deviceID);
+			
+			err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &outSize, &deviceID);
+			
 			if (err) break;
-			err = AudioDeviceGetProperty(deviceID, 0, false, kAudioDevicePropertyDeviceName, &outSize, cStr);
+			
+			// err =  AudioDeviceGetPropertyInfo(deviceID, 0, false, kAudioDevicePropertyDeviceName,  &outSize, &outWritable);
+			
+			propertyAddress.mSelector = kAudioDevicePropertyDeviceName;
+			
+			err = AudioObjectGetPropertyDataSize(deviceID, &propertyAddress, 0, NULL, &outSize);
+			
 			if (err) break;
 			
-			// do something
+			err = AudioObjectIsPropertySettable(deviceID, &propertyAddress, &outWritable);
 			
-            break;
+			if (err) break;
+
+			// err = AudioDeviceGetProperty(deviceID, 0, false, kAudioDevicePropertyDeviceName, &outSize, cStr);
 			
+			err = AudioObjectGetPropertyData(deviceID, &propertyAddress, 0, NULL, &outSize, cStr);
+
+			if (err) break;
+
+			// do something
+
+            break;
+
         case kAudioHardwarePropertyDevices:
         {
             scprintf("%s\n", "***** HARDWARE NOTIFICATION - kAudioHardwarePropertyDevices\r");
@@ -1286,7 +1540,7 @@ OSStatus	hardwareListenerProc (	AudioHardwarePropertyID	inPropertyID,
 		default:
 			scprintf("%s\n", "***** HARDWARE NOTIFICATION - %4.4s\r", &inPropertyID);
 	}
-	
+
     fflush(stdout);
     return (noErr);
 }
@@ -1301,23 +1555,24 @@ OSStatus AddHardwareListeners(void* inClientData);
 OSStatus AddHardwareListeners(void* inClientData)
 {
     OSStatus			err = noErr;
+	
+	//non deprecated but requires AudiObject, bleargh
+	//err= AudioObjectAddPropertyListener(AudioObject, kAudioHardwarePropertyDefaultOutputDevice, hardwareListenerProc, inClientData);
 
-	//non deprecated but requires AudiObject, bleargh 
-	//err= AudioObjectAddPropertyListener(AudioObject, kAudioHardwarePropertyDefaultOutputDevice, hardwareListenerProc, inClientData); 
-
-    err = AudioHardwareAddPropertyListener(kAudioHardwarePropertyDefaultOutputDevice, hardwareListenerProc, inClientData);
-    if (err) return err;
+	err = AudioHardwareAddPropertyListener(kAudioHardwarePropertyDefaultOutputDevice, hardwareListenerProc, inClientData);
 	
+    if (err) return err;
+
     err = AudioHardwareAddPropertyListener(kAudioHardwarePropertyDefaultInputDevice, hardwareListenerProc, inClientData);
     if (err) return err;
-	
-	//doesn't matter? Only default looked at by SC? 
+
+	//doesn't matter? Only default looked at by SC?
 	err = AudioHardwareAddPropertyListener(kAudioHardwarePropertyDefaultSystemOutputDevice, hardwareListenerProc, inClientData);
     if (err) return err;
-	
+
     err = AudioHardwareAddPropertyListener(kAudioHardwarePropertyDevices, hardwareListenerProc, inClientData);
     if (err) return err;
-	
+
     return (err);
 }
 
@@ -1327,23 +1582,31 @@ bool SC_CoreAudioDriver::DriverStart()
 		scprintf("->SC_CoreAudioDriver::DriverStart\n");
 	}
 	OSStatus	err = kAudioHardwareNoError;
-	AudioTimeStamp	now;
+	// AudioTimeStamp	now;
 	UInt32 propertySize;
 	Boolean writable;
-
+	AudioObjectPropertyAddress propertyAddress;
+	
+	propertyAddress.mSelector = kAudioHardwarePropertyDevices;
+	propertyAddress.mScope = kAudioObjectPropertyScopeGlobal;
+	propertyAddress.mElement = kAudioObjectPropertyElementMaster;
+	
 	if(mWorld->mVerbosity >= 1){
 		scprintf("start   UseSeparateIO?: %d\n", UseSeparateIO());
 	}
 
 	try {
 	if (UseSeparateIO()) {
-		err = AudioDeviceAddIOProc(mOutputDevice, appIOProc, (void *) this);	// setup Out device with an IO proc
+		//		err = AudioDeviceAddIOProc(mOutputDevice, appIOProc, (void *) this);	// setup Out device with an IO proc
+
+		err = AudioDeviceCreateIOProcID(mOutputDevice, appIOProc, (void*) this, &mOutputID);
 		if (err != kAudioHardwareNoError) {
 			scprintf("AudioDeviceAddIOProc failed %s %d\n", &err, (int)err);
 			return false;
 		}
+		//		err = AudioDeviceAddIOProc(mInputDevice, appIOProcSeparateIn, (void *) this);		// setup In device with an IO proc
+		err = AudioDeviceCreateIOProcID(mInputDevice, appIOProcSeparateIn , (void *)this, &mInputID);
 
-		err = AudioDeviceAddIOProc(mInputDevice, appIOProcSeparateIn, (void *) this);		// setup In device with an IO proc
 		if (err != kAudioHardwareNoError) {
 			scprintf("AudioDeviceAddIOProc failed %s %d\n", &err, (int)err);
 			return false;
@@ -1351,27 +1614,48 @@ bool SC_CoreAudioDriver::DriverStart()
 
 
 		if (mWorld->hw->mInputStreamsEnabled) {
-			err = AudioDeviceGetPropertyInfo(mInputDevice, 0, true, kAudioDevicePropertyIOProcStreamUsage, &propertySize, &writable);
+			//err = AudioDeviceGetPropertyInfo(mInputDevice, 0, true, kAudioDevicePropertyIOProcStreamUsage, &propertySize, &writable);
+			propertyAddress.mSelector = kAudioDevicePropertyIOProcStreamUsage;
+			propertyAddress.mScope = kAudioDevicePropertyScopeInput;
+
+			err = AudioObjectGetPropertyDataSize(mInputDevice, 0, NULL, &propertyAddress, &propertySize);
+			err = AudioObjectIsPropertySettable(mInputDevice, &propertyAddress, &writable);
+			
 			AudioHardwareIOProcStreamUsage *su = (AudioHardwareIOProcStreamUsage*)malloc(propertySize);
 			su->mIOProc = (void*)appIOProcSeparateIn;
-			err = AudioDeviceGetProperty(mInputDevice, 0, true, kAudioDevicePropertyIOProcStreamUsage, &propertySize, su);
+			// err = AudioDeviceGetProperty(mInputDevice, 0, true, kAudioDevicePropertyIOProcStreamUsage, &propertySize, su);
+			err = AudioObjectGetPropertyData(mInputDevice, 0, NULL, &propertyAddress, &propertySize, su);
+			
 			int len = std::min(su->mNumberStreams, (UInt32)strlen(mWorld->hw->mInputStreamsEnabled));
 			for (int i=0; i<len; ++i) {
 				su->mStreamIsOn[i] = mWorld->hw->mInputStreamsEnabled[i] == '1';
 			}
-			err = AudioDeviceSetProperty(mInputDevice, &now, 0, true, kAudioDevicePropertyIOProcStreamUsage, propertySize, su);
+			// err = AudioDeviceSetProperty(mInputDevice, &now, 0, true, kAudioDevicePropertyIOProcStreamUsage, propertySize, su);
+			
+			err = AudioObjectSetPropertyData(mInputDevice, &propertyAddress, 0, NULL, propertySize, su);
 		}
 
 		if (mWorld->hw->mOutputStreamsEnabled) {
-			err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, false, kAudioDevicePropertyIOProcStreamUsage, &propertySize, &writable);
+			//err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, false, kAudioDevicePropertyIOProcStreamUsage, &propertySize, &writable);
+			
+			propertyAddress.mSelector = kAudioDevicePropertyIOProcStreamUsage;
+			propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+			
+			err = AudioObjectGetPropertyDataSize(mInputDevice, 0, NULL, &propertyAddress, &propertySize);
+			err = AudioObjectIsPropertySettable(mInputDevice, &propertyAddress, &writable);
+			
 			AudioHardwareIOProcStreamUsage *su = (AudioHardwareIOProcStreamUsage*)malloc(propertySize);
 			su->mIOProc = (void*)appIOProc;
-			err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyIOProcStreamUsage, &propertySize, su);
+			// err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyIOProcStreamUsage, &propertySize, su);
+			err = AudioObjectGetPropertyData(mOutputDevice, 0, NULL, &propertyAddress, &propertySize, su);
+
 			int len = std::min(su->mNumberStreams, (UInt32)strlen(mWorld->hw->mOutputStreamsEnabled));
 			for (int i=0; i<len; ++i) {
 				su->mStreamIsOn[i] = mWorld->hw->mOutputStreamsEnabled[i] == '1';
 			}
-			err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyIOProcStreamUsage, propertySize, su);
+			// err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyIOProcStreamUsage, propertySize, su);
+			
+			err = AudioObjectSetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, propertySize, su);
 		}
 
 		err = AudioDeviceStart(mInputDevice, appIOProcSeparateIn);		// start playing sound through the device
@@ -1387,34 +1671,56 @@ bool SC_CoreAudioDriver::DriverStart()
 			return false;
 		}
 	} else {
-		err = AudioDeviceAddIOProc(mOutputDevice, appIOProc, (void *) this);	// setup our device with an IO proc
+		// err = AudioDeviceAddIOProc(mOutputDevice, appIOProc, (void *) this);	// setup our device with an IO proc
+		err = AudioDeviceCreateIOProcID(mOutputDevice, appIOProc, (void *) this, &mOutputID);
+		
 		if (err != kAudioHardwareNoError) {
 			scprintf("AudioDeviceAddIOProc failed %d\n", (int)err);
 			return false;
 		}
 
 		if (mWorld->hw->mInputStreamsEnabled) {
-			err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, true, kAudioDevicePropertyIOProcStreamUsage, &propertySize, &writable);
+			//err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, true, kAudioDevicePropertyIOProcStreamUsage, &propertySize, &writable);
+			propertyAddress.mSelector = kAudioDevicePropertyIOProcStreamUsage;
+			propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+			
+			err = AudioObjectGetPropertyDataSize(mOutputDevice, 0, NULL, &propertyAddress, &propertySize);
+			err = AudioObjectIsPropertySettable(mOutputDevice, &propertyAddress, &writable);
+			
 			AudioHardwareIOProcStreamUsage *su = (AudioHardwareIOProcStreamUsage*)malloc(propertySize);
 			su->mIOProc = (void*)appIOProc;
-			err = AudioDeviceGetProperty(mOutputDevice, 0, true, kAudioDevicePropertyIOProcStreamUsage, &propertySize, su);
+			//err = AudioDeviceGetProperty(mOutputDevice, 0, true, kAudioDevicePropertyIOProcStreamUsage, &propertySize, su);
+			err = AudioObjectGetPropertyData(mOutputDevice, 0, NULL, &propertyAddress, &propertySize, su);
+
 			int len = std::min(su->mNumberStreams, (UInt32)strlen(mWorld->hw->mInputStreamsEnabled));
 			for (int i=0; i<len; ++i) {
 				su->mStreamIsOn[i] = mWorld->hw->mInputStreamsEnabled[i] == '1';
 			}
-			err = AudioDeviceSetProperty(mOutputDevice, &now, 0, true, kAudioDevicePropertyIOProcStreamUsage, propertySize, su);
+			//err = AudioDeviceSetProperty(mOutputDevice, &now, 0, true, kAudioDevicePropertyIOProcStreamUsage, propertySize, su);
+			
+			err = AudioObjectSetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, propertySize, su);
 		}
 
 		if (mWorld->hw->mOutputStreamsEnabled) {
-			err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, false, kAudioDevicePropertyIOProcStreamUsage, &propertySize, &writable);
+			// err = AudioDeviceGetPropertyInfo(mOutputDevice, 0, false, kAudioDevicePropertyIOProcStreamUsage, &propertySize, &writable);
+			propertyAddress.mSelector = kAudioDevicePropertyIOProcStreamUsage;
+			propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+			
+			err = AudioObjectGetPropertyDataSize(mOutputDevice, 0, NULL, &propertyAddress, &propertySize);
+			err = AudioObjectIsPropertySettable(mOutputDevice, &propertyAddress, &writable);
+			
 			AudioHardwareIOProcStreamUsage *su = (AudioHardwareIOProcStreamUsage*)malloc(propertySize);
 			su->mIOProc = (void*)appIOProc;
-			err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyIOProcStreamUsage, &propertySize, su);
+			//err = AudioDeviceGetProperty(mOutputDevice, 0, false, kAudioDevicePropertyIOProcStreamUsage, &propertySize, su);
+			err = AudioObjectGetPropertyData(mOutputDevice, 0, NULL, &propertyAddress, &propertySize, su);
+
 			int len = std::min(su->mNumberStreams, (UInt32)strlen(mWorld->hw->mOutputStreamsEnabled));
 			for (int i=0; i<len; ++i) {
 				su->mStreamIsOn[i] = mWorld->hw->mOutputStreamsEnabled[i] == '1';
 			}
-			err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyIOProcStreamUsage, propertySize, su);
+			//err = AudioDeviceSetProperty(mOutputDevice, &now, 0, false, kAudioDevicePropertyIOProcStreamUsage, propertySize, su);
+			
+			err = AudioObjectSetPropertyData(mOutputDevice, &propertyAddress, 0, NULL, propertySize, su);
 		}
 
 		err = AudioDeviceStart(mOutputDevice, appIOProc);		// start playing sound through the device
@@ -1429,29 +1735,29 @@ bool SC_CoreAudioDriver::DriverStart()
 	if(mWorld->mVerbosity >= 1){
 		scprintf("<-SC_CoreAudioDriver::DriverStart\n");
 	}
-	
-	
+
+
 	//http://lists.apple.com/archives/coreaudio-api/2010/Aug/msg00114.html
 	CFRunLoopRef theRunLoop =  NULL;
 	AudioObjectPropertyAddress theAddress = { kAudioHardwarePropertyRunLoop, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
 	AudioObjectSetPropertyData(kAudioObjectSystemObject, &theAddress, 0, NULL, sizeof(CFRunLoopRef), &theRunLoop);
-	
+
 	//for now no spotting of hardware changes, assumption is that ServerOptions inviolate. However, if a device was unplugged, could react to loss of that device
-	//by switching to system default? 
-	//AddHardwareListeners(NULL); 
+	//by switching to system default?
+	//AddHardwareListeners(NULL);
 	//note that the number of listeners is stripped down to only one for now, to react to headphone swaps in the case of Built-in Output
-	AddDeviceListeners(mOutputDevice, this); 
-	
+	AddDeviceListeners(mOutputDevice, this);
+
 	return true;
 }
 
 
 bool SC_CoreAudioDriver::StopStart() {
-	
-	bool test = DriverStop(); 
-	
+
+	bool test = DriverStop();
+
 	bool test2 = DriverStart();
-	return test && test2; 
+	return test && test2;
 }
 
 
@@ -1465,24 +1771,25 @@ bool SC_CoreAudioDriver::DriverStop()
 	if (UseSeparateIO()) {
 		err = AudioDeviceStop(mOutputDevice, appIOProc);
 		if (err != kAudioHardwareNoError) {
-			scprintf("AudioDeviceStop A failed %p\n", err);
+			scprintf("Output AudioDeviceStop failed %p\n", err);
 			return false;
 		}
-		err = AudioDeviceRemoveIOProc(mOutputDevice, appIOProc);
+
+		err = AudioDeviceDestroyIOProcID(mOutputDevice, mOutputID);
 		if (err != kAudioHardwareNoError) {
-			scprintf("AudioDeviceRemoveIOProc A failed %p\n", err);
+			scprintf("Output AudioDeviceDestroyIOProcID failed %p\n", err);
 			return false;
 		}
 
 		err = AudioDeviceStop(mInputDevice, appIOProcSeparateIn);
 		if (err != kAudioHardwareNoError) {
-			scprintf("AudioDeviceStop A failed %p\n", err);
+			scprintf("Input AudioDeviceStop failed %p\n", err);
 			return false;
 		}
 
-		err = AudioDeviceRemoveIOProc(mInputDevice, appIOProcSeparateIn);
+		err = AudioDeviceDestroyIOProcID(mInputDevice, mInputID);
 		if (err != kAudioHardwareNoError) {
-			scprintf("AudioDeviceRemoveIOProc A failed %p\n", err);
+			scprintf("Input AudioDeviceDestroyIOProcID failed %p\n", err);
 			return false;
 		}
 	} else {
@@ -1492,9 +1799,9 @@ bool SC_CoreAudioDriver::DriverStop()
 			return false;
 		}
 
-		err = AudioDeviceRemoveIOProc(mOutputDevice, appIOProc);
+		err = AudioDeviceDestroyIOProcID(mOutputDevice, mOutputID);
 		if (err != kAudioHardwareNoError) {
-			scprintf("AudioDeviceRemoveIOProc B failed %p\n", err);
+			scprintf("AudioDeviceDestroyIOProcID B failed %p\n", err);
 			return false;
 		}
 	}
@@ -1514,16 +1821,9 @@ OSStatus	deviceListenerProc (	AudioDeviceID			inDevice,
 									void*					inClientData)
 {
     OSStatus			err = noErr;
-    UInt32 				outSize,
-                        theUIntData,
-						mute,
-						playThru;
-    UInt32				tLong;
-	Float32				vol;
 
-	
-	SC_CoreAudioDriver* coredriver = (SC_CoreAudioDriver*) inClientData; 
-	
+	SC_CoreAudioDriver* coredriver = (SC_CoreAudioDriver*) inClientData;
+
     switch(inPropertyID)
     {
  //       case kAudioDevicePropertyBufferSize:
@@ -1561,9 +1861,9 @@ OSStatus	deviceListenerProc (	AudioDeviceID			inDevice,
 //
 //			//when change device get up to four messages:
 //			//isInput ==NO or YES  theUIntData= 0 or 1 from old and possibly new device (ieheadphone swap)
-//		
-//		
-//			
+//
+//
+//
 //             break;
 //
 //        case kAudioDevicePropertyVolumeScalar:
@@ -1598,14 +1898,14 @@ OSStatus	deviceListenerProc (	AudioDeviceID			inDevice,
             // get the source
             // match the source to one of the available sources and return the index of that source
             //SetControlValue(control, (chan->vol) * 100);
-			
-			//will get this message anyway even if don't have built-in output seleected. 
+
+			//will get this message anyway even if don't have built-in output seleected.
 			//so need to react based on whether current output IS built-in output. Annoyingly, headphone unplugging/plugging also sends default and system output + default input change hardware messages
 			//swapping to new driver
 			if (coredriver->builtinoutputflag_==1)
-				coredriver->StopStart(); 
-			
-			
+				coredriver->StopStart();
+
+
             break;
 
 		//default:
@@ -1650,10 +1950,10 @@ OSStatus    AddDeviceListeners(AudioDeviceID inDevice, void *inClientData)
 {
     OSStatus		err = noErr;
 
-//ONLY REACTING TO HEADPHONE SWAPS FOR NOW	
-//	
+//ONLY REACTING TO HEADPHONE SWAPS FOR NOW
+//
+//
 //
-//	
 //    // kAudioDevicePropertyBufferSize
 //    err = AudioDeviceAddPropertyListener(inDevice, 0, false, kAudioDevicePropertyBufferSize, deviceListenerProc, inClientData);
 //    if (err) return err;
diff --git a/server/scsynth/SC_Graph.cpp b/server/scsynth/SC_Graph.cpp
index 6985696..6812a2f 100644
--- a/server/scsynth/SC_Graph.cpp
+++ b/server/scsynth/SC_Graph.cpp
@@ -25,6 +25,7 @@
 #include "SC_UnitSpec.h"
 #include "SC_UnitDef.h"
 #include "SC_HiddenWorld.h"
+#include "SC_WorldOptions.h"
 #include "SC_Wire.h"
 #include "SC_WireSpec.h"
 #include <stdio.h>
@@ -43,11 +44,11 @@ void Graph_Dtor(Graph *inGraph)
 {
 	//scprintf("->Graph_Dtor %d\n", inGraph->mNode.mID);
 	World *world = inGraph->mNode.mWorld;
-	int numUnits = inGraph->mNumUnits;
+	uint32 numUnits = inGraph->mNumUnits;
 	Unit** graphUnits = inGraph->mUnits;
 	if (inGraph->mNode.mCalcFunc != (NodeCalcFunc)Graph_FirstCalc) {
 		// the above test insures that dtors are not called if ctors have not been called.
-		for (int i = 0; i<numUnits; ++i) {
+		for (uint32 i = 0; i<numUnits; ++i) {
 			Unit *unit = graphUnits[i];
 			UnitDtorFunc dtor = unit->mUnitDef->mUnitDtorFunc;
 			if (dtor) (dtor)(unit);
@@ -88,7 +89,7 @@ void Graph_Ctor(World *inWorld, GraphDef *inGraphDef, Graph *graph, sc_msg_iter
 	char *memory = (char*)graph + sizeof(Graph);
 
 	// allocate space for children
-	int numUnits = inGraphDef->mNumUnitSpecs;
+	uint32 numUnits = inGraphDef->mNumUnitSpecs;
 	graph->mNumUnits = numUnits;
 	inWorld->mNumUnits += numUnits;
 	inWorld->mNumGraphs ++;
@@ -109,7 +110,7 @@ void Graph_Ctor(World *inWorld, GraphDef *inGraphDef, Graph *graph, sc_msg_iter
 	memory += inGraphDef->mCalcUnitsAllocSize;
 
 	// initialize controls
-	int numControls = inGraphDef->mNumControls;
+	uint32 numControls = inGraphDef->mNumControls;
 	graph->mNumControls = numControls;
 	graph->mControls = (float*)memory;
 	memory += inGraphDef->mControlAllocSize;
@@ -126,7 +127,7 @@ void Graph_Ctor(World *inWorld, GraphDef *inGraphDef, Graph *graph, sc_msg_iter
 		float** graphMapControls = graph->mMapControls;
 		/* add */
 		int* graphControlRates = graph->mControlRates;
-		for (int i=0; i<numControls; ++i, ++graphControls) {
+		for (uint32 i=0; i<numControls; ++i, ++graphControls) {
 			*graphControls = initialControlValues[i];
 			graphMapControls[i] = graphControls;
 		        /* add */
@@ -366,9 +367,9 @@ void Graph_Ctor(World *inWorld, GraphDef *inGraphDef, Graph *graph, sc_msg_iter
 	int calcCtr=0;
 
 	float *bufspace = inWorld->hw->mWireBufSpace;
-	int wireCtr = numConstants;
+	uint32 wireCtr = numConstants; // never more than numConstants + numOutputs
 	UnitSpec *unitSpec = inGraphDef->mUnitSpecs;
-	for (int i=0; i<numUnits; ++i, ++unitSpec) {
+	for (uint32 i=0; i<numUnits; ++i, ++unitSpec) {
 		// construct unit from spec
 		Unit *unit = Unit_New(inWorld, unitSpec, memory);
 
@@ -384,8 +385,8 @@ void Graph_Ctor(World *inWorld, GraphDef *inGraphDef, Graph *graph, sc_msg_iter
 			InputSpec *inputSpec = unitSpec->mInputSpec;
 			Wire** unitInput = unit->mInput;
 			float** unitInBuf = unit->mInBuf;
-			int numInputs = unitSpec->mNumInputs;
-			for (int j=0; j<numInputs; ++j, ++inputSpec) {
+			uint32 numInputs = unitSpec->mNumInputs;
+			for (uint32 j=0; j<numInputs; ++j, ++inputSpec) {
 				Wire *wire = graphWires + inputSpec->mWireIndex;
 				unitInput[j] = wire;
 				unitInBuf[j] = wire->mBuffer;
@@ -397,13 +398,13 @@ void Graph_Ctor(World *inWorld, GraphDef *inGraphDef, Graph *graph, sc_msg_iter
 			//scprintf("hook up unit outputs\n");
 			Wire** unitOutput = unit->mOutput;
 			float** unitOutBuf = unit->mOutBuf;
-			int numOutputs = unitSpec->mNumOutputs;
+			uint32 numOutputs = unitSpec->mNumOutputs;
 			Wire *wire = graphWires + wireCtr;
 			wireCtr += numOutputs;
 			int unitCalcRate = unit->mCalcRate;
 			if (unitCalcRate == calc_FullRate) {
 				OutputSpec *outputSpec = unitSpec->mOutputSpec;
-				for (int j=0; j<numOutputs; ++j, ++wire, ++outputSpec) {
+				for (uint32 j=0; j<numOutputs; ++j, ++wire, ++outputSpec) {
 					wire->mFromUnit = unit;
 					wire->mCalcRate = calc_FullRate;
 					wire->mBuffer = bufspace + outputSpec->mBufferIndex;
@@ -412,7 +413,7 @@ void Graph_Ctor(World *inWorld, GraphDef *inGraphDef, Graph *graph, sc_msg_iter
 				}
 				calcUnits[calcCtr++] = unit;
 			} else {
-				for (int j=0; j<numOutputs; ++j, ++wire) {
+				for (uint32 j=0; j<numOutputs; ++j, ++wire) {
 					wire->mFromUnit = unit;
 					wire->mCalcRate = unitCalcRate;
 					wire->mBuffer = &wire->mScalarValue;
@@ -454,9 +455,9 @@ void Graph_RemoveID(World* inWorld, Graph *inGraph)
 void Graph_FirstCalc(Graph *inGraph)
 {
 	//scprintf("->Graph_FirstCalc\n");
-	int numUnits = inGraph->mNumUnits;
+	uint32 numUnits = inGraph->mNumUnits;
 	Unit **units = inGraph->mUnits;
-	for (int i=0; i<numUnits; ++i) {
+	for (uint32 i=0; i<numUnits; ++i) {
 		Unit *unit = units[i];
 		// call constructor
 		(*unit->mUnitDef->mUnitCtorFunc)(unit);
@@ -473,9 +474,9 @@ void Node_NullCalc(struct Node* /*inNode*/);
 void Graph_NullFirstCalc(Graph *inGraph)
 {
 	//scprintf("->Graph_FirstCalc\n");
-	int numUnits = inGraph->mNumUnits;
+	uint32 numUnits = inGraph->mNumUnits;
 	Unit **units = inGraph->mUnits;
-	for (int i=0; i<numUnits; ++i) {
+	for (uint32 i=0; i<numUnits; ++i) {
 		Unit *unit = units[i];
 		// call constructor
 		(*unit->mUnitDef->mUnitCtorFunc)(unit);
@@ -493,7 +494,7 @@ inline void Graph_Calc_unit(Unit * unit)
 void Graph_Calc(Graph *inGraph)
 {
 	//scprintf("->Graph_Calc\n");
-	int numCalcUnits = inGraph->mNumCalcUnits;
+	uint32 numCalcUnits = inGraph->mNumCalcUnits;
 	Unit **calcUnits = inGraph->mCalcUnits;
 
 	int unroll8 = numCalcUnits / 8;
@@ -538,19 +539,19 @@ void Graph_Calc(Graph *inGraph)
 void Graph_CalcTrace(Graph *inGraph);
 void Graph_CalcTrace(Graph *inGraph)
 {
-	int numCalcUnits = inGraph->mNumCalcUnits;
+	uint32 numCalcUnits = inGraph->mNumCalcUnits;
 	Unit **calcUnits = inGraph->mCalcUnits;
 	scprintf("\nTRACE %d  %s    #units: %d\n", inGraph->mNode.mID, inGraph->mNode.mDef->mName, numCalcUnits);
-	for (int i=0; i<numCalcUnits; ++i) {
+	for (uint32 i=0; i<numCalcUnits; ++i) {
 		Unit *unit = calcUnits[i];
 		scprintf("  unit %d %s\n    in ", i, (char*)unit->mUnitDef->mUnitDefName);
-		for (int j=0; j<unit->mNumInputs; ++j) {
+		for (uint32 j=0; j<unit->mNumInputs; ++j) {
 			scprintf(" %g", ZIN0(j));
 		}
 		scprintf("\n");
 		(unit->mCalcFunc)(unit, unit->mBufLength);
 		scprintf("    out");
-		for (int j=0; j<unit->mNumOutputs; ++j) {
+		for (uint32 j=0; j<unit->mNumOutputs; ++j) {
 			scprintf(" %g", ZOUT0(j));
 		}
 		scprintf("\n");
diff --git a/server/scsynth/SC_GraphDef.cpp b/server/scsynth/SC_GraphDef.cpp
index daa2173..460f74e 100644
--- a/server/scsynth/SC_GraphDef.cpp
+++ b/server/scsynth/SC_GraphDef.cpp
@@ -27,6 +27,7 @@
 #include "SC_UnitSpec.h"
 #include "SC_UnitDef.h"
 #include "SC_HiddenWorld.h"
+#include "SC_WorldOptions.h"
 #ifndef _MSC_VER
 #include <dirent.h>
 #endif //_MSC_VER
@@ -90,6 +91,14 @@ void ParamSpec_Read(ParamSpec* inParamSpec, char*& buffer);
 void ParamSpec_Read(ParamSpec* inParamSpec, char*& buffer)
 {
 	ReadName(buffer, inParamSpec->mName);
+	inParamSpec->mIndex = readInt32_be(buffer);
+	inParamSpec->mHash = Hash(inParamSpec->mName);
+}
+
+void ParamSpec_ReadVer1(ParamSpec* inParamSpec, char*& buffer);
+void ParamSpec_ReadVer1(ParamSpec* inParamSpec, char*& buffer)
+{
+	ReadName(buffer, inParamSpec->mName);
 	inParamSpec->mIndex = readInt16_be(buffer);
 	inParamSpec->mHash = Hash(inParamSpec->mName);
 }
@@ -97,6 +106,15 @@ void ParamSpec_Read(ParamSpec* inParamSpec, char*& buffer)
 void InputSpec_Read(InputSpec* inInputSpec, char*& buffer);
 void InputSpec_Read(InputSpec* inInputSpec, char*& buffer)
 {
+	inInputSpec->mFromUnitIndex = readInt32_be(buffer);
+	inInputSpec->mFromOutputIndex = readInt32_be(buffer);
+
+	inInputSpec->mWireIndex = -1;
+}
+
+void InputSpec_ReadVer1(InputSpec* inInputSpec, char*& buffer);
+void InputSpec_ReadVer1(InputSpec* inInputSpec, char*& buffer)
+{
 	inInputSpec->mFromUnitIndex = (int16)readInt16_be(buffer);
 	inInputSpec->mFromOutputIndex = (int16)readInt16_be(buffer);
 
@@ -107,7 +125,6 @@ void OutputSpec_Read(OutputSpec* inOutputSpec, char*& buffer);
 void OutputSpec_Read(OutputSpec* inOutputSpec, char*& buffer)
 {
 	inOutputSpec->mCalcRate = readInt8(buffer);
-
 	inOutputSpec->mWireIndex = -1;
 	inOutputSpec->mBufferIndex = -1;
 	inOutputSpec->mNumConsumers = 0;
@@ -128,22 +145,53 @@ void UnitSpec_Read(UnitSpec* inUnitSpec, char*& buffer)
 	}
 	inUnitSpec->mCalcRate = readInt8(buffer);
 
+	inUnitSpec->mNumInputs = readInt32_be(buffer);
+	inUnitSpec->mNumOutputs = readInt32_be(buffer);
+	inUnitSpec->mSpecialIndex = readInt16_be(buffer);
+	inUnitSpec->mInputSpec = (InputSpec*)malloc(sizeof(InputSpec) * inUnitSpec->mNumInputs);
+	inUnitSpec->mOutputSpec = (OutputSpec*)malloc(sizeof(OutputSpec) * inUnitSpec->mNumOutputs);
+	for (uint32 i=0; i<inUnitSpec->mNumInputs; ++i) {
+		InputSpec_Read(inUnitSpec->mInputSpec + i, buffer);
+	}
+	for (uint32 i=0; i<inUnitSpec->mNumOutputs; ++i) {
+		OutputSpec_Read(inUnitSpec->mOutputSpec + i, buffer);
+	}
+	uint64 numPorts = inUnitSpec->mNumInputs + inUnitSpec->mNumOutputs;
+	inUnitSpec->mAllocSize = inUnitSpec->mUnitDef->mAllocSize + numPorts * (sizeof(Wire*) +  sizeof(float*));
+}
+
+void UnitSpec_ReadVer1(UnitSpec* inUnitSpec, char*& buffer);
+void UnitSpec_ReadVer1(UnitSpec* inUnitSpec, char*& buffer)
+{
+	int32 name[kSCNameLen];
+	ReadName(buffer, name);
+
+	inUnitSpec->mUnitDef = GetUnitDef(name);
+	if (!inUnitSpec->mUnitDef) {
+		char str[256];
+		sprintf(str, "UGen '%s' not installed.", (char*)name);
+		throw std::runtime_error(str);
+		return;
+	}
+	inUnitSpec->mCalcRate = readInt8(buffer);
+
 	inUnitSpec->mNumInputs = readInt16_be(buffer);
 	inUnitSpec->mNumOutputs = readInt16_be(buffer);
 	inUnitSpec->mSpecialIndex = readInt16_be(buffer);
 	inUnitSpec->mInputSpec = (InputSpec*)malloc(sizeof(InputSpec) * inUnitSpec->mNumInputs);
 	inUnitSpec->mOutputSpec = (OutputSpec*)malloc(sizeof(OutputSpec) * inUnitSpec->mNumOutputs);
 	for (uint32 i=0; i<inUnitSpec->mNumInputs; ++i) {
-		InputSpec_Read(inUnitSpec->mInputSpec + i, buffer);
+		InputSpec_ReadVer1(inUnitSpec->mInputSpec + i, buffer);
 	}
 	for (uint32 i=0; i<inUnitSpec->mNumOutputs; ++i) {
 		OutputSpec_Read(inUnitSpec->mOutputSpec + i, buffer);
 	}
-	int numPorts = inUnitSpec->mNumInputs + inUnitSpec->mNumOutputs;
+	uint64 numPorts = inUnitSpec->mNumInputs + inUnitSpec->mNumOutputs;
 	inUnitSpec->mAllocSize = inUnitSpec->mUnitDef->mAllocSize + numPorts * (sizeof(Wire*) +  sizeof(float*));
 }
 
 GraphDef* GraphDef_Read(World *inWorld, char*& buffer, GraphDef* inList, int32 inVersion);
+GraphDef* GraphDef_ReadVer1(World *inWorld, char*& buffer, GraphDef* inList, int32 inVersion);
 
 GraphDef* GraphDefLib_Read(World *inWorld, char* buffer, GraphDef* inList);
 GraphDef* GraphDefLib_Read(World *inWorld, char* buffer, GraphDef* inList)
@@ -152,14 +200,32 @@ GraphDef* GraphDefLib_Read(World *inWorld, char* buffer, GraphDef* inList)
 	if (magic != (('S'<<24)|('C'<<16)|('g'<<8)|'f') /*'SCgf'*/) return inList;
 
 	int32 version = readInt32_be(buffer);
-	if (version > 1) return inList;
 
-	uint32 numDefs = readInt16_be(buffer);
+	uint32 numDefs, i;
+	switch (version) {
+		case 2:
+			numDefs = readInt16_be(buffer);
 
-	for (uint32 i=0; i<numDefs; ++i) {
-		inList = GraphDef_Read(inWorld, buffer, inList, version);
+			for (i=0; i<numDefs; ++i) {
+				inList = GraphDef_Read(inWorld, buffer, inList, version);
+			}
+			return inList;
+			break;
+		case 1:
+		case 0:
+			numDefs = readInt16_be(buffer);
+
+			for (i=0; i<numDefs; ++i) {
+				inList = GraphDef_ReadVer1(inWorld, buffer, inList, version); // handles 1 and 0
+			}
+			return inList;
+			break;
+
+		default:
+			return inList;
+			break;
 	}
-	return inList;
+
 }
 
 
@@ -182,6 +248,7 @@ void GraphDef_ReadVariant(World *inWorld, char*& buffer, GraphDef* inGraphDef, G
 	}
 }
 
+// ver 2
 GraphDef* GraphDef_Read(World *inWorld, char*& buffer, GraphDef* inList, int32 inVersion)
 {
 	int32 name[kSCNodeDefNameLen];
@@ -197,6 +264,115 @@ GraphDef* GraphDef_Read(World *inWorld, char*& buffer, GraphDef* inList, int32 i
 
 	graphDef->mNodeDef.mHash = Hash(graphDef->mNodeDef.mName);
 
+	graphDef->mNumConstants = readInt32_be(buffer);
+
+	graphDef->mConstants = (float*)malloc(graphDef->mNumConstants * sizeof(float));
+	for (uint32 i=0; i<graphDef->mNumConstants; ++i) {
+		graphDef->mConstants[i] = readFloat_be(buffer);
+	}
+
+	graphDef->mNumControls = readInt32_be(buffer);
+	graphDef->mInitialControlValues = (float32*)malloc(sizeof(float32) * graphDef->mNumControls);
+	for (uint32 i=0; i<graphDef->mNumControls; ++i) {
+		graphDef->mInitialControlValues[i] = readFloat_be(buffer);
+	}
+
+	graphDef->mNumParamSpecs = readInt32_be(buffer);
+	if (graphDef->mNumParamSpecs) {
+		int hashTableSize = NEXTPOWEROFTWO(graphDef->mNumParamSpecs);
+		graphDef->mParamSpecTable = new ParamSpecTable(&gMalloc, hashTableSize, false);
+		graphDef->mParamSpecs = (ParamSpec*)malloc(graphDef->mNumParamSpecs * sizeof(ParamSpec));
+		for (uint32 i=0; i<graphDef->mNumParamSpecs; ++i) {
+			ParamSpec *paramSpec = graphDef->mParamSpecs + i;
+			ParamSpec_Read(paramSpec, buffer);
+			graphDef->mParamSpecTable->Add(paramSpec);
+		}
+	} else {
+		// empty table to eliminate test in Graph_SetControl
+		graphDef->mParamSpecTable = new ParamSpecTable(&gMalloc, 4, false);
+		graphDef->mParamSpecs = 0;
+	}
+
+	graphDef->mNumWires = graphDef->mNumConstants;
+	graphDef->mNumUnitSpecs = readInt32_be(buffer);
+	graphDef->mUnitSpecs = (UnitSpec*)malloc(sizeof(UnitSpec) * graphDef->mNumUnitSpecs);
+	graphDef->mNumCalcUnits = 0;
+	for (uint32 i=0; i<graphDef->mNumUnitSpecs; ++i) {
+		UnitSpec *unitSpec = graphDef->mUnitSpecs + i;
+		UnitSpec_Read(unitSpec, buffer);
+
+		switch (unitSpec->mCalcRate)
+		{
+			case calc_ScalarRate :
+				unitSpec->mRateInfo = &inWorld->mBufRate;
+				break;
+			case calc_BufRate :
+				graphDef->mNumCalcUnits++;
+				unitSpec->mRateInfo = &inWorld->mBufRate;
+				break;
+			case calc_FullRate :
+				graphDef->mNumCalcUnits++;
+				unitSpec->mRateInfo = &inWorld->mFullRate;
+				break;
+			case calc_DemandRate :
+				unitSpec->mRateInfo = &inWorld->mBufRate;
+				break;
+		}
+
+		graphDef->mNodeDef.mAllocSize += unitSpec->mAllocSize;
+		graphDef->mNumWires += unitSpec->mNumOutputs;
+	}
+
+	DoBufferColoring(inWorld, graphDef);
+
+	graphDef->mWiresAllocSize = graphDef->mNumWires * sizeof(Wire);
+	graphDef->mUnitsAllocSize = graphDef->mNumUnitSpecs * sizeof(Unit*);
+	graphDef->mCalcUnitsAllocSize = graphDef->mNumCalcUnits * sizeof(Unit*);
+
+	graphDef->mNodeDef.mAllocSize += graphDef->mWiresAllocSize;
+	graphDef->mNodeDef.mAllocSize += graphDef->mUnitsAllocSize;
+	graphDef->mNodeDef.mAllocSize += graphDef->mCalcUnitsAllocSize;
+
+	graphDef->mControlAllocSize = graphDef->mNumControls * sizeof(float);
+	graphDef->mNodeDef.mAllocSize += graphDef->mControlAllocSize;
+
+	graphDef->mMapControlsAllocSize = graphDef->mNumControls * sizeof(float*);
+	graphDef->mNodeDef.mAllocSize += graphDef->mMapControlsAllocSize;
+
+	graphDef->mMapControlRatesAllocSize = graphDef->mNumControls * sizeof(int*);
+	graphDef->mNodeDef.mAllocSize += graphDef->mMapControlRatesAllocSize;
+
+
+	graphDef->mNext = inList;
+	graphDef->mRefCount = 1;
+
+	graphDef->mNumVariants = readInt16_be(buffer);
+	if (graphDef->mNumVariants) {
+		graphDef->mVariants = (GraphDef*)calloc(graphDef->mNumVariants, sizeof(GraphDef));
+		for (uint32 i=0; i<graphDef->mNumVariants; ++i) {
+			GraphDef_ReadVariant(inWorld, buffer, graphDef, graphDef->mVariants + i);
+		}
+	}
+
+	return graphDef;
+}
+
+// ver 0 or 1
+GraphDef* GraphDef_ReadVer1(World *inWorld, char*& buffer, GraphDef* inList, int32 inVersion)
+{
+	int32 name[kSCNodeDefNameLen];
+	ReadNodeDefName(buffer, name);
+
+	GraphDef* graphDef = (GraphDef*)calloc(1, sizeof(GraphDef));
+
+	graphDef->mOriginal = graphDef;
+
+	graphDef->mNodeDef.mAllocSize = sizeof(Graph);
+
+	memcpy((char*)graphDef->mNodeDef.mName, (char*)name, kSCNodeDefNameByteLen);
+
+	graphDef->mNodeDef.mHash = Hash(graphDef->mNodeDef.mName);
+
 	graphDef->mNumConstants = readInt16_be(buffer);
 	graphDef->mConstants = (float*)malloc(graphDef->mNumConstants * sizeof(float));
 	for (uint32 i=0; i<graphDef->mNumConstants; ++i) {
@@ -216,7 +392,7 @@ GraphDef* GraphDef_Read(World *inWorld, char*& buffer, GraphDef* inList, int32 i
 		graphDef->mParamSpecs = (ParamSpec*)malloc(graphDef->mNumParamSpecs * sizeof(ParamSpec));
 		for (uint32 i=0; i<graphDef->mNumParamSpecs; ++i) {
 			ParamSpec *paramSpec = graphDef->mParamSpecs + i;
-			ParamSpec_Read(paramSpec, buffer);
+			ParamSpec_ReadVer1(paramSpec, buffer);
 			graphDef->mParamSpecTable->Add(paramSpec);
 		}
 	} else {
@@ -231,7 +407,7 @@ GraphDef* GraphDef_Read(World *inWorld, char*& buffer, GraphDef* inList, int32 i
 	graphDef->mNumCalcUnits = 0;
 	for (uint32 i=0; i<graphDef->mNumUnitSpecs; ++i) {
 		UnitSpec *unitSpec = graphDef->mUnitSpecs + i;
-		UnitSpec_Read(unitSpec, buffer);
+		UnitSpec_ReadVer1(unitSpec, buffer);
 
 		switch (unitSpec->mCalcRate)
 		{
@@ -327,6 +503,19 @@ void GraphDef_DeleteMsg(World *inWorld, GraphDef *inDef)
 	DeleteGraphDefMsg msg;
 	msg.mDef = inDef;
 	inWorld->hw->mDeleteGraphDefs.Write(msg);
+
+	small_scpacket packet;
+	packet.adds("/d_removed");
+	packet.maketags(1);
+	packet.addtag(',');
+	packet.addtag('s');
+	packet.adds((char*)inDef->mNodeDef.mName);
+
+	ReplyAddress *users = inWorld->hw->mUsers;
+	int numUsers = inWorld->hw->mNumUsers;
+	for (int i=0; i<numUsers; ++i) {
+		SendReply(users+i, packet.data(), packet.size());
+	}
 }
 
 GraphDef* GraphDef_Recv(World *inWorld, char *buffer, GraphDef *inList)
@@ -532,7 +721,7 @@ struct BufColorAllocator
 	BufColorAllocator();
 	~BufColorAllocator();
 
-	int alloc(int count);
+	uint32 alloc(uint32 count);
 	bool release(int inIndex);
 	int NumBufs() { return nextIndex; }
 };
@@ -553,9 +742,9 @@ inline BufColorAllocator::~BufColorAllocator()
 	free(stack);
 }
 
-inline int BufColorAllocator::alloc(int count)
+inline uint32 BufColorAllocator::alloc(uint32 count)
 {
-	int outIndex;
+	uint32 outIndex;
 	if (stackPtr) {
 		outIndex = stack[--stackPtr];
 	} else {
@@ -586,8 +775,7 @@ inline bool BufColorAllocator::release(int inIndex)
 
 static void ReleaseInputBuffers(GraphDef *inGraphDef, UnitSpec *unitSpec, BufColorAllocator& bufColor)
 {
-	//scprintf("ReleaseInputBuffers %s numinputs %d\n", unitSpec->mUnitDef->mUnitDefName, unitSpec->mNumInputs);
-	for (int i=unitSpec->mNumInputs-1; i>=0; --i) {
+	for (int64 i=(int64)(unitSpec->mNumInputs)-1; i>=0; --i) {
 		InputSpec *inputSpec = unitSpec->mInputSpec + i;
 		if (inputSpec->mFromUnitIndex >= 0) {
 			UnitSpec *outUnit = inGraphDef->mUnitSpecs + inputSpec->mFromUnitIndex;
@@ -613,14 +801,14 @@ static void ReleaseInputBuffers(GraphDef *inGraphDef, UnitSpec *unitSpec, BufCol
 	}
 }
 
-void AllocOutputBuffers(UnitSpec *unitSpec, BufColorAllocator& bufColor, int& wireIndexCtr)
+static void AllocOutputBuffers(UnitSpec *unitSpec, BufColorAllocator& bufColor, int32& wireIndexCtr)
 {
 	//scprintf("AllocOutputBuffers %s numoutputs %d\n", unitSpec->mUnitDef->mUnitDefName, unitSpec->mNumOutputs);
 	for (uint32 i=0; i<unitSpec->mNumOutputs; ++i) {
 		OutputSpec *outputSpec = unitSpec->mOutputSpec + i;
 		outputSpec->mWireIndex = wireIndexCtr++;
 		if (outputSpec->mCalcRate == calc_FullRate) {
-			int bufIndex = bufColor.alloc(outputSpec->mNumConsumers);
+			uint32 bufIndex = bufColor.alloc(outputSpec->mNumConsumers);
 			outputSpec->mBufferIndex = bufIndex;
 		}
 	}
@@ -644,7 +832,7 @@ void DoBufferColoring(World *inWorld, GraphDef *inGraphDef)
 	// buffer coloring
 	{
 		BufColorAllocator bufColor;
-		int wireIndexCtr = inGraphDef->mNumConstants;
+		int32 wireIndexCtr = inGraphDef->mNumConstants; // mNumConstants is a uint32, but limited to int32 in OSC
 		for (uint32 j=0; j<inGraphDef->mNumUnitSpecs; ++j) {
 			UnitSpec *unitSpec = inGraphDef->mUnitSpecs + j;
 			if (unitSpec->mUnitDef->mFlags & kUnitDef_CantAliasInputsToOutputs) {
diff --git a/server/scsynth/SC_Group.cpp b/server/scsynth/SC_Group.cpp
index 7a6432b..6bea2e0 100644
--- a/server/scsynth/SC_Group.cpp
+++ b/server/scsynth/SC_Group.cpp
@@ -28,6 +28,7 @@
 #include "SC_Prototypes.h"
 #include "SC_Str4.h"
 #include "SC_World.h"
+#include "SC_WorldOptions.h"
 #include "SC_Errors.h"
 #include "scsynthsend.h"
 
diff --git a/server/scsynth/SC_Jack.cpp b/server/scsynth/SC_Jack.cpp
index d8be9c6..74bc0fc 100644
--- a/server/scsynth/SC_Jack.cpp
+++ b/server/scsynth/SC_Jack.cpp
@@ -27,6 +27,7 @@
 #include "SC_HiddenWorld.h"
 #include "SC_Prototypes.h"
 #include "SC_StringParser.h"
+#include "SC_WorldOptions.h"
 
 #include <jack/jack.h>
 #include <math.h>
diff --git a/server/scsynth/SC_Lib.cpp b/server/scsynth/SC_Lib.cpp
index 43d102c..469bc38 100644
--- a/server/scsynth/SC_Lib.cpp
+++ b/server/scsynth/SC_Lib.cpp
@@ -21,13 +21,13 @@
 
 #include "SC_Lib.h"
 #include "SC_Lib_Cintf.h"
-#include "SC_ComPort.h"
 #include "SC_SequencedCommand.h"
 #include "scsynthsend.h"
 #include <string.h>
 #include <ctype.h>
 #include "SC_Prototypes.h"
 #include "SC_Str4.h"
+#include "SC_WorldOptions.h"
 
 
 void SendDone(ReplyAddress *inReply, const char *inCommandName)
@@ -129,7 +129,7 @@ SCErr SC_LibCmd::Perform(struct World *inWorld, int inSize, char *inData, ReplyA
 	} catch (std::exception& exc) {
 		if(inWorld->mLocalErrorNotification <= 0 && inWorld->mErrorNotification) {
 			CallSendFailureCommand(inWorld, (char*)Name(), exc.what(), inReply);
-			scprintf("FAILURE %s %s\n", (char*)Name(), exc.what());
+			scprintf("FAILURE IN SERVER %s %s\n", (char*)Name(), exc.what());
 		}
 		return kSCErr_Failed;
 	} catch (...) {
@@ -139,7 +139,7 @@ SCErr SC_LibCmd::Perform(struct World *inWorld, int inSize, char *inData, ReplyA
 		char errstr[25];
 		SC_ErrorString(err, errstr);
 		CallSendFailureCommand(inWorld, (char*)Name(), errstr, inReply);
-		scprintf("FAILURE %s %s\n", (char*)Name(), errstr);
+		scprintf("FAILURE IN SERVER %s %s\n", (char*)Name(), errstr);
 	}
 	return err;
 }
diff --git a/server/scsynth/SC_Lib_Cintf.cpp b/server/scsynth/SC_Lib_Cintf.cpp
index cafd69c..9089e53 100644
--- a/server/scsynth/SC_Lib_Cintf.cpp
+++ b/server/scsynth/SC_Lib_Cintf.cpp
@@ -21,11 +21,11 @@
 
 
 #include "SC_Lib_Cintf.h"
-#include "SC_ComPort.h"
 #include "SC_CoreAudio.h"
 #include "SC_UnitDef.h"
 #include "SC_BufGen.h"
 #include "SC_World.h"
+#include "SC_WorldOptions.h"
 #include "SC_StringParser.h"
 #include "SC_InterfaceTable.h"
 #include "SC_DirUtils.h"
@@ -247,16 +247,25 @@ typedef int (*InfoFunction)();
 
 bool checkAPIVersion(void * f, const char * filename)
 {
-	if (!f)
-		return true;
-
-	InfoFunction fn = (InfoFunction)f;
-	if ((*fn)() == sc_api_version)
-		return true;
+	if (f) {
+		InfoFunction fn = (InfoFunction)f;
+		if ((*fn)() == sc_api_version)
+			return true;
+	}
 	scprintf("*** ERROR: API Version Mismatch: %s\n", filename);
 	return false;
 }
 
+bool checkServerVersion(void * f, const char * filename)
+{
+	if (f) {
+		InfoFunction fn = (InfoFunction)f;
+		if ((*fn)() == 1)
+			return false;
+	}
+	return true;
+}
+
 static bool PlugIn_Load(const char *filename)
 {
 #ifdef _WIN32
@@ -278,6 +287,12 @@ static bool PlugIn_Load(const char *filename)
 		return false;
 	}
 
+	void *serverCheckPtr = (void *)GetProcAddress( hinstance, "server_type" );
+	if (!checkServerVersion(serverCheckPtr , filename)) {
+		FreeLibrary(hinstance);
+		return false;
+	}
+
 	void *ptr = (void *)GetProcAddress( hinstance, "load" );
 	if (!ptr) {
 		char *s;
@@ -313,6 +328,12 @@ static bool PlugIn_Load(const char *filename)
 		return false;
 	}
 
+	void *serverCheckPtr = (void *)dlsym( handle, "server_type" );
+	if (!checkServerVersion(serverCheckPtr , filename)) {
+		dlclose(handle);
+		return false;
+	}
+
 	void *ptr = dlsym(handle, "load");
 	if (!ptr) {
 		scprintf("*** ERROR: dlsym load err '%s'\n", dlerror());
diff --git a/server/scsynth/SC_MiscCmds.cpp b/server/scsynth/SC_MiscCmds.cpp
index 47e974c..c2509e6 100644
--- a/server/scsynth/SC_MiscCmds.cpp
+++ b/server/scsynth/SC_MiscCmds.cpp
@@ -20,7 +20,6 @@
 
 
 #include "SC_Lib.h"
-#include "SC_ComPort.h"
 #include "SC_CoreAudio.h"
 #include "SC_HiddenWorld.h"
 #include "SC_Graph.h"
@@ -33,6 +32,7 @@
 #include <new>
 #include "SC_Prototypes.h"
 #include "scsynthsend.h"
+#include "SC_WorldOptions.h"
 
 extern int gMissingNodeID;
 
@@ -1083,7 +1083,6 @@ SCErr meth_n_after(World *inWorld, int inSize, char *inData, ReplyAddress* /*inR
 SCErr meth_n_order(World *inWorld, int inSize, char *inData, ReplyAddress *inReply);
 SCErr meth_n_order(World *inWorld, int inSize, char *inData, ReplyAddress* /*inReply*/)
 {
-	SCErr err;
 
 	Node *prevNode = 0;
 	Node *node = 0;
diff --git a/server/scsynth/SC_SequencedCommand.cpp b/server/scsynth/SC_SequencedCommand.cpp
index 20246df..47b1e62 100644
--- a/server/scsynth/SC_SequencedCommand.cpp
+++ b/server/scsynth/SC_SequencedCommand.cpp
@@ -28,6 +28,8 @@
 #include "SC_Sem.h"
 #include "SC_DirUtils.h"
 #include "SC_StringParser.h"
+#include "../../common/SC_SndFileHelpers.hpp"
+#include "SC_WorldOptions.h"
 
 #define GET_COMPLETION_MSG(msg) \
 	mMsgSize = msg.getbsize(); \
@@ -537,8 +539,8 @@ bool BufAllocReadCmd::Stage2()
 	memset(&fileinfo, 0, sizeof(fileinfo));
 	SNDFILE* sf = sf_open(mFilename, SFM_READ, &fileinfo);
 	if (!sf) {
-		char str[256];
-		sprintf(str, "File '%s' could not be opened.\n", mFilename);
+		char str[512];
+		sprintf(str, "File '%s' could not be opened: %s\n", mFilename, sf_strerror(NULL));
 		SendFailureWithBufnum(&mReplyAddress, "/b_allocRead", str, mBufIndex);	//SendFailure(&mReplyAddress, "/b_allocRead", str);
 		scprintf(str);
 		return false;
@@ -637,16 +639,16 @@ bool BufReadCmd::Stage2()
 
 	SNDFILE* sf = sf_open(mFilename, SFM_READ, &fileinfo);
 	if (!sf) {
-		char str[256];
-		sprintf(str, "File '%s' could not be opened.\n", mFilename);
+		char str[512];
+		sprintf(str, "File '%s' could not be opened: %s\n", mFilename, sf_strerror(NULL));
 		SendFailureWithBufnum(&mReplyAddress, "/b_read", str, mBufIndex); //SendFailure(&mReplyAddress, "/b_read", str);
 		scprintf(str);
 		return false;
 	}
 	if (fileinfo.channels != buf->channels) {
-		char str[256];
+		char str[512];
 		sf_close(sf);
-		sprintf(str, "channel mismatch. File'%s' has %d channels. Buffer has %d channels.\n", mFilename, fileinfo.channels, buf->channels);
+		sprintf(str, "Channel mismatch. File '%s' has %d channels. Buffer has %d channels.\n", mFilename, fileinfo.channels, buf->channels);
 		SendFailureWithBufnum(&mReplyAddress, "/b_read", str, mBufIndex); //SendFailure(&mReplyAddress, "/b_read", str);
 		scprintf(str);
 		return false;
@@ -800,8 +802,8 @@ bool BufAllocReadChannelCmd::Stage2()
 	memset(&fileinfo, 0, sizeof(fileinfo));
 	SNDFILE* sf = sf_open(mFilename, SFM_READ, &fileinfo);
 	if (!sf) {
-		char str[256];
-		sprintf(str, "File '%s' could not be opened.\n", mFilename);
+		char str[512];
+		sprintf(str, "File '%s' could not be opened: %s\n", mFilename, sf_strerror(NULL));
 		SendFailureWithBufnum(&mReplyAddress, "/b_allocReadChannel", str, mBufIndex); //SendFailure(&mReplyAddress, "/b_allocRead", str);
 		scprintf(str);
 		return false;
@@ -926,8 +928,8 @@ bool BufReadChannelCmd::Stage2()
 
 	SNDFILE* sf = sf_open(mFilename, SFM_READ, &fileinfo);
 	if (!sf) {
-		char str[256];
-		sprintf(str, "File '%s' could not be opened.\n", mFilename);
+		char str[512];
+		sprintf(str, "File '%s' could not be opened: %s\n", mFilename, sf_strerror(NULL));
 		SendFailureWithBufnum(&mReplyAddress, "/b_readChannel", str, mBufIndex); //SendFailure(&mReplyAddress, "/b_read", str);
 		scprintf(str);
 		return false;
@@ -1020,12 +1022,6 @@ BufWriteCmd::BufWriteCmd(World *inWorld, ReplyAddress *inReplyAddress)
 struct SF_INFO {};
 #endif
 
-
-extern "C" {
-int sndfileFormatInfoFromStrings(SF_INFO *info, const char *headerFormatString, const char *sampleFormatString);
-}
-
-
 int BufWriteCmd::Init(char *inData, int inSize)
 {
 #ifdef NO_LIBSNDFILE
@@ -1083,10 +1079,8 @@ bool BufWriteCmd::Stage2()
 
 	SNDFILE* sf = sf_open(mFilename, SFM_WRITE, &mFileInfo);
 	if (!sf) {
-		char sferr[256];
-		char str[256];
-		sf_error_str(NULL, sferr, 256);
-		sprintf(str, "File '%s' could not be opened. '%s'\n", mFilename, sferr);
+		char str[512];
+		sprintf(str, "File '%s' could not be opened: %s\n", mFilename, sf_strerror(NULL));
 		SendFailureWithBufnum(&mReplyAddress, "/b_write", str, mBufIndex); //SendFailure(&mReplyAddress, "/b_write", str);
 		scprintf(str);
 		return false;
@@ -1201,6 +1195,8 @@ bool AudioQuitCmd::Stage3()
 	scprintf("/quit : quit not allowed in AU host\n");
 	return false;
 #else
+	if (mWorld->hw->mShmem)
+		mWorld->hw->mShmem->disconnect();
 	return true;
 #endif
 }
diff --git a/server/scsynth/SC_Unit.cpp b/server/scsynth/SC_Unit.cpp
index 8a14aac..5246ba7 100644
--- a/server/scsynth/SC_Unit.cpp
+++ b/server/scsynth/SC_Unit.cpp
@@ -41,11 +41,11 @@ Unit* Unit_New(World *inWorld, UnitSpec *inUnitSpec, char*& memory)
 	unit->mWorld = inWorld;
 	unit->mUnitDef = def;
 
-	int numInputs = inUnitSpec->mNumInputs;
-	int numOutputs = inUnitSpec->mNumOutputs;
+	uint32 numInputs = inUnitSpec->mNumInputs;
+	uint32 numOutputs = inUnitSpec->mNumOutputs;
 	unit->mNumInputs = numInputs;
 	unit->mNumOutputs = numOutputs;
-	int numPorts = numInputs + numOutputs;
+	uint64 numPorts = numInputs + numOutputs;
 
 	unit->mInput = (Wire**)memory;
 	memory += numPorts * sizeof(Wire*);
@@ -73,8 +73,8 @@ void Unit_Dtor(Unit *inUnit)
 
 void Unit_ZeroOutputs(Unit *unit, int inNumSamples)
 {
-	long numOuts = unit->mNumOutputs;
-	for (int i=0; i<numOuts; ++i) {
+	uint32 numOuts = unit->mNumOutputs;
+	for (uint32 i=0; i<numOuts; ++i) {
 		float *out = OUT(i);
 		Clear(inNumSamples, out);
 	}
diff --git a/server/scsynth/SC_UnitDef.cpp b/server/scsynth/SC_UnitDef.cpp
index 1c17881..6e0ab7f 100644
--- a/server/scsynth/SC_UnitDef.cpp
+++ b/server/scsynth/SC_UnitDef.cpp
@@ -18,14 +18,20 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 */
 
+#include <stdlib.h>
 
-#include "SC_UnitDef.h"
-#include "SC_World.h"
-#include "SC_Unit.h"
+#include "SC_Endian.h" // first to avoid win32 IN clash
+
+#include "SC_Graph.h"
 #include "SC_InterfaceTable.h"
+#include "SC_Lib_Cintf.h"
 #include "SC_Prototypes.h"
 #include "SC_Str4.h"
-#include <stdlib.h>
+#include "SC_Unit.h"
+#include "SC_UnitDef.h"
+#include "SC_World.h"
+#include "sc_msg_iter.h"
+
 
 bool UnitDef_Create(const char *inName, size_t inAllocSize, UnitCtorFunc inCtor, UnitDtorFunc inDtor, uint32 inFlags)
 {
@@ -52,7 +58,6 @@ bool UnitDef_Create(const char *inName, size_t inAllocSize, UnitCtorFunc inCtor,
 }
 
 
-#include "SC_Lib_Cintf.h"
 
 bool UnitDef_AddCmd(const char *inUnitDefName, const char *inCmdName, UnitCmdFunc inFunc)
 {
@@ -66,9 +71,8 @@ bool UnitDef_AddCmd(const char *inUnitDefName, const char *inCmdName, UnitCmdFun
 	UnitDef* unitDef = GetUnitDef(unitDefName);
 	if (!unitDef) return false;
 
-	if (!unitDef->mCmds) {
+	if (!unitDef->mCmds)
 		unitDef->mCmds = new HashTable<UnitCmd, Malloc>(&gMalloc, 4, true);
-	}
 
 	UnitCmd *cmd = new UnitCmd();
 	memset(cmd->mCmdName, 0, kSCNameByteLen);
@@ -83,7 +87,6 @@ bool UnitDef_AddCmd(const char *inUnitDefName, const char *inCmdName, UnitCmdFun
 
 bool PlugIn_DefineCmd(const char *inCmdName, PlugInCmdFunc inFunc, void *inUserData)
 {
-
 	if (strlen(inCmdName) >= kSCNameByteLen) return false;
 
 	PlugInCmd *cmd = new PlugInCmd();
@@ -98,9 +101,6 @@ bool PlugIn_DefineCmd(const char *inCmdName, PlugInCmdFunc inFunc, void *inUserD
 	return true;
 }
 
-#include "sc_msg_iter.h"
-#include "SC_Graph.h"
-
 int Unit_DoCmd(World *inWorld, int inSize, char *inData)
 {
 	sc_msg_iter msg(inSize, inData);
@@ -141,4 +141,3 @@ int PlugIn_DoCmd(World *inWorld, int inSize, char *inData, ReplyAddress *inReply
 
 	return kSCErr_None;
 }
-
diff --git a/server/scsynth/SC_World.cpp b/server/scsynth/SC_World.cpp
index 764331d..4b88242 100644
--- a/server/scsynth/SC_World.cpp
+++ b/server/scsynth/SC_World.cpp
@@ -35,12 +35,7 @@
 #include "SC_Prototypes.h"
 #include "SC_Samp.h"
 #include "SC_DirUtils.h"
-#ifdef _WIN32
-# include "../../include/server/SC_ComPort.h"
-# include "SC_Win32Utils.h"
-#else
-# include "SC_ComPort.h"
-#endif
+#include "../../common/SC_SndFileHelpers.hpp"
 #include "SC_StringParser.h"
 #ifdef _WIN32
 # include <direct.h>
@@ -77,9 +72,6 @@ extern "C" {
 struct SF_INFO {};
 #endif
 
-int sndfileFormatInfoFromStrings(struct SF_INFO *info,
-	const char *headerFormatString, const char *sampleFormatString);
-
 bool SendMsgToEngine(World *inWorld, FifoMsg& inMsg);
 bool SendMsgFromEngine(World *inWorld, FifoMsg& inMsg);
 }
@@ -346,8 +338,10 @@ SC_DLLEXPORT_C World* World_New(WorldOptions *inOptions)
 			server_shared_memory_creator::cleanup(inOptions->mSharedMemoryID);
 			hw->mShmem = new server_shared_memory_creator(inOptions->mSharedMemoryID, inOptions->mNumControlBusChannels);
 			world->mControlBus = hw->mShmem->get_control_busses();
-		} else
+		} else {
+			hw->mShmem = 0;
 			world->mControlBus = (float*)zalloc(world->mNumControlBusChannels, sizeof(float));
+		}
 
 		world->mNumSharedControls = 0;
 		world->mSharedControls = inOptions->mSharedControls;
@@ -659,9 +653,9 @@ SC_DLLEXPORT_C void World_NonRealTimeSynthesis(struct World *world, WorldOptions
 
 				PerformOSCBundle(world, &packet);
 				if (nextOSCPacket(cmdFile, &packet, schedTime)) { run = false; break; }
-	if(inOptions->mVerbosity >= 0) {
-        printf("nextOSCPacket %g\n", schedTime * oscToSeconds);
-	}
+				if(inOptions->mVerbosity >= 0) {
+					printf("nextOSCPacket %g\n", schedTime * oscToSeconds);
+				}
 				if (schedTime < prevTime) {
 					scprintf("ERROR: Packet time stamps out-of-order.\n");
 					run = false;
@@ -676,23 +670,23 @@ SC_DLLEXPORT_C void World_NonRealTimeSynthesis(struct World *world, WorldOptions
 			float *outBus = outputBuses;
 			for (int j=0; j<numOutputChannels; ++j, outBus += bufLength) {
 				float *outFileBufPtr = outBufPos + j;
-                                if (outputTouched[j] == bufCounter) {
-                                    for (int k=0; k<bufLength; ++k) {
-                                            *outFileBufPtr = outBus[k];
-                                            outFileBufPtr += numOutputChannels;
-                                    }
-                                } else {
-                                    for (int k=0; k<bufLength; ++k) {
-                                            *outFileBufPtr = 0.f;
-                                            outFileBufPtr += numOutputChannels;
-                                    }
-                                }
+				if (outputTouched[j] == bufCounter) {
+					for (int k=0; k<bufLength; ++k) {
+						*outFileBufPtr = outBus[k];
+						outFileBufPtr += numOutputChannels;
+					}
+				} else {
+					for (int k=0; k<bufLength; ++k) {
+						*outFileBufPtr = 0.f;
+						outFileBufPtr += numOutputChannels;
+					}
+				}
 			}
 			bufFramesCalculated += bufLength;
 			inBufPos += inBufStep;
 			outBufPos += outBufStep;
 			world->mBufCounter++;
-                        oscTime = nextTime;
+			oscTime = nextTime;
 		}
 
 Bail:
@@ -700,43 +694,19 @@ Bail:
 		sf_writef_float(world->hw->mNRTOutputFile, outputFileBuf, bufFramesCalculated);
 	}
 
-        if (cmdFile != stdin) fclose(cmdFile);
+	if (cmdFile != stdin) fclose(cmdFile);
 	sf_close(world->hw->mNRTOutputFile);
-        world->hw->mNRTOutputFile = 0;
+	world->hw->mNRTOutputFile = 0;
 
 	if (world->hw->mNRTInputFile) {
-            sf_close(world->hw->mNRTInputFile);
-            world->hw->mNRTInputFile = 0;
-        }
+		sf_close(world->hw->mNRTInputFile);
+		world->hw->mNRTInputFile = 0;
+	}
 
 	World_Cleanup(world);
 }
 #endif   // !NO_LIBSNDFILE
 
-SC_DLLEXPORT_C int World_OpenUDP(struct World *inWorld, int inPort)
-{
-	try {
-		new SC_UdpInPort(inWorld, inPort);
-		return true;
-	} catch (std::exception& exc) {
-		scprintf("Exception in World_OpenUDP: %s\n", exc.what());
-	} catch (...) {
-	}
-	return false;
-}
-
-SC_DLLEXPORT_C int World_OpenTCP(struct World *inWorld, int inPort, int inMaxConnections, int inBacklog)
-{
-	try {
-		new SC_TcpInPort(inWorld, inPort, inMaxConnections, inBacklog);
-		return true;
-	} catch (std::exception& exc) {
-		scprintf("Exception in World_OpenTCP: %s\n", exc.what());
-	} catch (...) {
-	}
-	return false;
-}
-
 SC_DLLEXPORT_C void World_WaitForQuit(struct World *inWorld)
 {
 	try {
@@ -969,7 +939,7 @@ void World_Start(World *inWorld)
 	for (uint32 i=0; i<inWorld->mNumAudioBusChannels; ++i) inWorld->mAudioBusTouched[i] = -1;
 	for (uint32 i=0; i<inWorld->mNumControlBusChannels; ++i) inWorld->mControlBusTouched[i] = -1;
 
-	inWorld->hw->mWireBufSpace = (float*)malloc(inWorld->hw->mMaxWireBufs * inWorld->mBufLength * sizeof(float));
+	inWorld->hw->mWireBufSpace = (float*)sc_malloc(inWorld->hw->mMaxWireBufs * inWorld->mBufLength * sizeof(float));
 
 	inWorld->hw->mTriggers.MakeEmpty();
 	inWorld->hw->mNodeMsgs.MakeEmpty();
@@ -991,7 +961,7 @@ SC_DLLEXPORT_C void World_Cleanup(World *world)
 
 	world->mDriverLock->Lock(); // never unlock..
 	if (hw) {
-		free(hw->mWireBufSpace);
+		sc_free(hw->mWireBufSpace);
 		delete hw->mAudioDriver;
 		hw->mAudioDriver = 0;
 	}
@@ -1112,94 +1082,6 @@ SCErr bufAlloc(SndBuf* buf, int numChannels, int numFrames, double sampleRate)
 	return kSCErr_None;
 }
 
-#ifndef NO_LIBSNDFILE
-int sampleFormatFromString(const char* name);
-int sampleFormatFromString(const char* name)
-{
-	if (!name) return SF_FORMAT_PCM_16;
-
-	size_t len = strlen(name);
-	if (len < 1) return 0;
-
-	if (name[0] == 'u') {
-		if (len < 5) return 0;
-		if (name[4] == '8') return SF_FORMAT_PCM_U8; // uint8
-		return 0;
-	} else if (name[0] == 'i') {
-		if (len < 4) return 0;
-		if (name[3] == '8') return SF_FORMAT_PCM_S8;      // int8
-		else if (name[3] == '1') return SF_FORMAT_PCM_16; // int16
-		else if (name[3] == '2') return SF_FORMAT_PCM_24; // int24
-		else if (name[3] == '3') return SF_FORMAT_PCM_32; // int32
-	} else if (name[0] == 'f') {
-		return SF_FORMAT_FLOAT; // float
-	} else if (name[0] == 'd') {
-		return SF_FORMAT_DOUBLE; // double
-	} else if (name[0] == 'm' || name[0] == 'u') {
-		return SF_FORMAT_ULAW; // mulaw ulaw
-	} else if (name[0] == 'a') {
-		return SF_FORMAT_ALAW; // alaw
-	}
-	return 0;
-}
-
-int headerFormatFromString(const char *name);
-int headerFormatFromString(const char *name)
-{
-	if (!name) return SF_FORMAT_AIFF;
-	if (strcasecmp(name, "AIFF")==0) return SF_FORMAT_AIFF;
-	if (strcasecmp(name, "AIFC")==0) return SF_FORMAT_AIFF;
-	if (strcasecmp(name, "RIFF")==0) return SF_FORMAT_WAV;
-	if (strcasecmp(name, "WAVEX")==0) return SF_FORMAT_WAVEX;
-	if (strcasecmp(name, "WAVE")==0) return SF_FORMAT_WAV;
-	if (strcasecmp(name, "WAV" )==0) return SF_FORMAT_WAV;
-	if (strcasecmp(name, "Sun" )==0) return SF_FORMAT_AU;
-	if (strcasecmp(name, "IRCAM")==0) return SF_FORMAT_IRCAM;
-	if (strcasecmp(name, "NeXT")==0) return SF_FORMAT_AU;
-	if (strcasecmp(name, "raw")==0) return SF_FORMAT_RAW;
-	if (strcasecmp(name, "MAT4")==0) return SF_FORMAT_MAT4;
-	if (strcasecmp(name, "MAT5")==0) return SF_FORMAT_MAT5;
-	if (strcasecmp(name, "PAF")==0) return SF_FORMAT_PAF;
-	if (strcasecmp(name, "SVX")==0) return SF_FORMAT_SVX;
-	if (strcasecmp(name, "NIST")==0) return SF_FORMAT_NIST;
-	if (strcasecmp(name, "VOC")==0) return SF_FORMAT_VOC;
-	if (strcasecmp(name, "W64")==0) return SF_FORMAT_W64;
-	if (strcasecmp(name, "PVF")==0) return SF_FORMAT_PVF;
-	if (strcasecmp(name, "XI")==0) return SF_FORMAT_XI;
-	if (strcasecmp(name, "HTK")==0) return SF_FORMAT_HTK;
-	if (strcasecmp(name, "SDS")==0) return SF_FORMAT_SDS;
-	if (strcasecmp(name, "AVR")==0) return SF_FORMAT_AVR;
-	if (strcasecmp(name, "SD2")==0) return SF_FORMAT_SD2;
-	if (strcasecmp(name, "FLAC")==0) return SF_FORMAT_FLAC;
-// TODO allow other platforms to know vorbis once libsndfile 1.0.18 is established
-#if defined(__APPLE__) || defined(_WIN32) || LIBSNDFILE_1018
-	if (strcasecmp(name, "vorbis")==0) return SF_FORMAT_VORBIS;
-#endif
-	if (strcasecmp(name, "CAF")==0) return SF_FORMAT_CAF;
-	if (strcasecmp(name, "RF64")==0) return SF_FORMAT_RF64;
-	return 0;
-}
-
-int sndfileFormatInfoFromStrings(struct SF_INFO *info, const char *headerFormatString, const char *sampleFormatString)
-{
-	int headerFormat = headerFormatFromString(headerFormatString);
-	if (!headerFormat) return kSCErr_Failed;
-
-	int sampleFormat = sampleFormatFromString(sampleFormatString);
-	if (!sampleFormat) return kSCErr_Failed;
-
-	info->format = (unsigned int)(headerFormat | sampleFormat);
-	return kSCErr_None;
-}
-
-#else // NO_LIBSNDFILE
-
-int sndfileFormatInfoFromStrings(struct SF_INFO *info, const char *headerFormatString, const char *sampleFormatString) {
-	return kSCErr_Failed;
-}
-
-#endif // NO_LIBSNDFILE
-
 #include "scsynthsend.h"
 
 void TriggerMsg::Perform()
diff --git a/server/supernova/CMakeLists.txt b/server/supernova/CMakeLists.txt
index dd9e3da..6b271c6 100644
--- a/server/supernova/CMakeLists.txt
+++ b/server/supernova/CMakeLists.txt
@@ -1,13 +1,15 @@
-if(NOT APPLE)
-    find_package(FFTW3f)
-
+if (FFT_GREEN)
+    add_definitions("-DSC_FFT_GREEN")
+elseif (APPLE)
+    add_definitions("-DSC_FFT_VDSP")
+else()
+    find_package(FFTW3f 3.3)
     if (FFTW3F_FOUND)
         add_definitions("-DSC_FFT_FFTW")
         include_directories (${FFTW3F_INCLUDE_DIR})
     else()
         message(SEND_ERROR "Cannot find libfftw3f")
     endif()
-
 endif()
 
 if(CMAKE_COMPILER_IS_GNUCXX)
@@ -22,12 +24,27 @@ if(CMAKE_COMPILER_IS_GNUCXX)
   endif()
 endif(CMAKE_COMPILER_IS_GNUCXX)
 
-if(MEMORY_DEBUGGING)
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_INTEL OR CMAKE_COMPILER_IS_CLANG)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+else()
+    message(FATAL_ERROR "unknown compiler. supernova cannot be compiled")
+endif()
+
+if(APPLE AND CMAKE_COMPILER_IS_CLANG)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+endif()
+
+
+if(SN_MEMORY_DEBUGGING)
     set_property(DIRECTORY .
                  APPEND
                  PROPERTY COMPILE_DEFINITIONS_DEBUG NOVA_MEMORY_DEBUGGING)
 endif()
 
+if(NOVA_SIMD)
+    add_definitions(-DNOVA_SIMD)
+endif()
 
 
 include_directories(${CMAKE_SOURCE_DIR}/external_libraries/boost_endian
@@ -46,7 +63,7 @@ include_directories(${CMAKE_SOURCE_DIR}/include/plugin_interface
                     )
 
 set(libsupernova_src
-    sc/sc_synth_prototype.cpp
+    sc/sc_synth_definition.cpp
     sc/sc_osc_handler.cpp
     sc/sc_plugin_interface.cpp
     sc/sc_synth.cpp
@@ -55,6 +72,7 @@ set(libsupernova_src
     ../scsynth/Samp.cpp
     ${CMAKE_SOURCE_DIR}/common/SC_fftlib.cpp
     ${CMAKE_SOURCE_DIR}/common/SC_DirUtils.cpp
+    ${CMAKE_SOURCE_DIR}/common/SC_StringParser.cpp
     ${CMAKE_SOURCE_DIR}/common/SC_StandAloneInfo_Darwin.cpp
     server/buffer_manager.cpp
     server/dsp_context.cpp
@@ -64,6 +82,17 @@ set(libsupernova_src
     server/server_args.cpp
 )
 
+if(WIN32)
+    list(APPEND libsupernova_src ${CMAKE_SOURCE_DIR}/common/SC_Win32Utils.cpp)
+endif()
+
+
+if(FFT_GREEN)
+    list(APPEND libsupernova_src ../../common/fftlib.c)
+endif()
+
+file(GLOB_RECURSE supernova_headers *hpp)
+
 if(COMPACT_BUILD)
   CREATE_FINAL_FILE(libsupernova_final.cpp ${libsupernova_src})
   add_library (libsupernova STATIC libsupernova_final.cpp)
@@ -74,7 +103,7 @@ endif()
 set_property(TARGET libsupernova
              PROPERTY OUTPUT_NAME supernova)
 
-add_executable(supernova server/main.cpp)
+add_executable(supernova server/main.cpp ${supernova_headers})
 
 set_property(TARGET libsupernova supernova
              APPEND
@@ -126,13 +155,17 @@ endif()
 target_link_libraries(libsupernova oscpack tlsf ${PTHREADS_LIBRARIES})
 
 if (Boost_FOUND)
-    target_link_libraries(libsupernova ${Boost_THREAD_LIBRARY}  ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
+    target_link_libraries(libsupernova   ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
 else()
-    target_link_libraries(libsupernova boost_thread boost_system boost_filesystem boost_program_options)
+    target_link_libraries(libsupernova boost_system boost_filesystem boost_program_options)
 endif()
 
 target_link_libraries(supernova libsupernova)
 
+if(WIN32)
+    target_link_libraries(libsupernova wsock32 ws2_32 winmm)
+endif()
+
 if(APPLE)
 	# determines the app name and app install location (scappbundlename, scappdir):
 	include (${CMAKE_SOURCE_DIR}/cmake_modules/MacAppFolder.cmake)
@@ -156,6 +189,6 @@ if(LTO)
 endif()
 
 if (APPLE)
-    target_link_libraries(supernova "-framework vecLib")
-    target_link_libraries(supernova "-framework CoreAudio -framework CoreServices")
+    target_link_libraries(libsupernova "-framework vecLib")
+    target_link_libraries(libsupernova "-framework CoreAudio -framework CoreServices")
 endif()
diff --git a/server/supernova/audio_backend/audio_backend.hpp b/server/supernova/audio_backend/audio_backend.hpp
deleted file mode 100644
index 655e0ab..0000000
--- a/server/supernova/audio_backend/audio_backend.hpp
+++ /dev/null
@@ -1,226 +0,0 @@
-//  audio interface
-//  Copyright (C) 2005, 2006, 2007, 2008 Tim Blechmann
-//
-//  This program is free software; you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation; either version 2 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program; see the file COPYING.  If not, write to
-//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-//  Boston, MA 02111-1307, USA.
-
-#ifndef _AUDIO_BACKEND_HPP
-#define _AUDIO_BACKEND_HPP
-
-#include <string>
-#include <vector>
-
-#include "utilities/utils.hpp"
-#include "server/sample_types.hpp"
-#include "simd_memory.hpp"
-
-namespace nova
-{
-/** \brief the Device struct represents information of an audio device
- *
- *  \ingroup kernel
- */
-struct Device
-{
-    Device(uint apiIndex, std::string const & name, uint inchannels, uint outchannels, uint defaultSampleRate,
-           float LowInputLatency, float HighInputLatency, float LowOutputLatency, float HighOutputLatency):
-        apiIndex(apiIndex), name(name), inchannels(inchannels), outchannels(outchannels),
-        defaultSampleRate(defaultSampleRate), LowInputLatency(LowInputLatency), HighInputLatency(HighInputLatency),
-        LowOutputLatency(LowOutputLatency), HighOutputLatency(HighOutputLatency)
-    {}
-
-    Device(Device const & rhs):
-        apiIndex(rhs.apiIndex), name(rhs.name), inchannels(rhs.inchannels), outchannels(rhs.outchannels),
-        defaultSampleRate(rhs.defaultSampleRate), LowInputLatency(rhs.LowInputLatency),
-        HighInputLatency(rhs.HighInputLatency), LowOutputLatency(rhs.LowOutputLatency),
-        HighOutputLatency(rhs.HighOutputLatency)
-    {}
-
-    void operator=(Device const & rhs)
-    {
-        apiIndex = rhs.apiIndex, name = rhs.name, inchannels = rhs.inchannels, outchannels = rhs.outchannels,
-            defaultSampleRate = rhs.defaultSampleRate, LowOutputLatency = rhs.LowOutputLatency,
-            LowInputLatency = rhs.LowInputLatency, HighOutputLatency = rhs.HighOutputLatency,
-            HighInputLatency = rhs.HighInputLatency;
-    }
-
-    bool operator==(Device const & rhs)
-    {
-        return (apiIndex == rhs.apiIndex) and
-            (name == rhs.name);
-    }
-
-    uint apiIndex;
-    std::string name;
-    unsigned short inchannels, outchannels;
-    uint defaultSampleRate;
-    float LowInputLatency, HighInputLatency;
-    float LowOutputLatency, HighOutputLatency;
-};
-
-typedef std::vector<Device> device_list;
-
-template <void(*dsp_cb)(void)>
-class audio_frontend;
-
-/** \brief abstract base class for audio backends
- *
- *  \ingroup kernel
- */
-template <void(*dsp_cb)(void)>
-class audio_backend:
-    public noncopyable
-{
-protected:
-    audio_backend(void):
-        active(false)
-    {}
-
-    virtual ~audio_backend(void)
-    {}
-
-public:
-    /** \brief deliver data to dac */
-    /* { */
-    virtual void deliver_dac_output(const_restricted_sample_ptr source, uint channel, uint frames) = 0;
-
-    virtual void deliver_dac_output_64(const_restricted_sample_ptr source, uint channel)
-    {
-        this->deliver_dac_output(source, channel, 64);
-    }
-    /* } */
-
-    virtual void zero_dac_output(uint channel, uint frames) = 0;
-
-    /** \brief fetch data from adc */
-    /* { */
-    virtual void fetch_adc_input(restricted_sample_ptr destination, uint channel, uint frames) = 0;
-
-    virtual void fetch_adc_input_64(restricted_sample_ptr destination, uint channel)
-    {
-        this->fetch_adc_input(destination, channel, 64);
-    }
-    /* } */
-
-    /** \brief activate audio_backend */
-    virtual void activate(void)
-    {
-        active = true;
-    }
-
-    /** \brief deactivate audio_backend */
-    virtual void deactivate(void)
-    {
-        active = false;
-    }
-
-    /** \brief query activation state */
-    bool is_active(void)
-    {
-        return active;
-    }
-
-    /** \brief get dac blocksize */
-    uint get_blocksize(void)
-    {
-        return dacblocksize;
-    }
-
-    /** \brief list devices */
-    virtual device_list list_devices(void) = 0;
-
-    /** \brief open audio stream */
-    virtual void open_audio_stream(Device const & indevice, uint inchannels, Device const & outdevice, uint outchannels,
-                                   uint samplerate) = 0;
-
-    /** \brief close the active audio stream */
-    virtual void close_audio_stream(void) = 0;
-
-    virtual bool audiostream_ready(void) = 0;
-
-    /** \brief wrapper for Scheduler::Tick() */
-    void tick(void)
-    {
-        (*dsp_cb)();
-    }
-
-protected:
-    friend class audio_frontend<dsp_cb>;
-
-    bool active;    /**< \brief is this interface active? */
-    unsigned short dacblocksize;
-};
-
-
-template <void(*dsp_cb)(void)>
-class dummy_backend:
-    public audio_backend<dsp_cb>
-{
-public:
-    dummy_backend(void):
-        ready(false)
-    {}
-
-    void open_audio_stream(Device const & indevice, uint inchannels, Device const & outdevice, uint outchannels,
-                           uint samplerate)
-    {
-        assert(not ready);
-        ready = true;
-    }
-
-    void close_audio_stream(void)
-    {
-        assert(ready);
-        ready = false;
-    }
-
-    bool audiostream_ready(void)
-    {
-        return ready;
-    }
-
-    device_list list_devices(void)
-    {
-        Device dummydevice(0, "Dummy", 256, 256, 44100, 0, 0, 0, 0);
-
-        device_list ret;
-        ret.push_back(dummydevice);
-        return ret;
-    }
-
-    /** \brief noop */
-    virtual void deliver_dac_output(const_restricted_sample_ptr source, uint channel, uint frames)
-    {}
-
-    virtual void zero_dac_output(uint channel, uint frames)
-    {}
-
-    /** \brief wipe buffer */
-    virtual void fetch_adc_input(restricted_sample_ptr destination, uint channel, uint frames)
-    {
-        zerovec_simd(destination, audio_backend<dsp_cb>::dacblocksize);
-    }
-
-private:
-    bool ready;
-};
-
-
-} /* namespace nova */
-
-
-
-#endif /* _AUDIO_BACKEND_HPP */
-
diff --git a/server/supernova/audio_backend/audio_backend_common.hpp b/server/supernova/audio_backend/audio_backend_common.hpp
index 334cbda..548a4dd 100644
--- a/server/supernova/audio_backend/audio_backend_common.hpp
+++ b/server/supernova/audio_backend/audio_backend_common.hpp
@@ -125,8 +125,8 @@ protected:
 
         input_samples.resize(input_channels);
         output_samples.resize(output_channels);
-        std::generate(input_samples.begin(), input_samples.end(), boost::bind(calloc_aligned<sample_type>, frames));
-        std::generate(output_samples.begin(), output_samples.end(), boost::bind(calloc_aligned<sample_type>, frames));
+        std::generate(input_samples.begin(), input_samples.end(), std::bind(calloc_aligned<sample_type>, frames));
+        std::generate(output_samples.begin(), output_samples.end(), std::bind(calloc_aligned<sample_type>, frames));
     }
 
     void fetch_inputs(const float ** inputs, size_t frames, int input_channels)
diff --git a/server/supernova/audio_backend/audio_frontend.hpp b/server/supernova/audio_backend/audio_frontend.hpp
deleted file mode 100644
index 6714330..0000000
--- a/server/supernova/audio_backend/audio_frontend.hpp
+++ /dev/null
@@ -1,226 +0,0 @@
-//  audio frontend
-//  Copyright (C) 2005, 2006, 2007, 2008 Tim Blechmann
-//
-//  This program is free software; you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation; either version 2 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program; see the file COPYING.  If not, write to
-//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-//  Boston, MA 02111-1307, USA.
-
-#ifndef _AUDIO_FRONTEND_HPP
-#define _AUDIO_FRONTEND_HPP
-
-#include <vector>
-
-#include "audio_backend.hpp"
-#include "portaudio.hpp"
-#include "nova-tt/spin_lock.hpp"
-#include <stdint.h>
-
-namespace nova
-{
-
-/** \brief wrapper/dispatcher for different audio backends */
-template <void(*dsp_cb)(void)>
-class audio_frontend
-{
-    typedef nova::dummy_backend<dsp_cb> dummy_backend;
-
-public:
-    audio_frontend():
-        is_active(false)
-    {
-        activate_dummy();
-    }
-
-    ~audio_frontend(void)
-    {
-        assert(not audio_is_opened());
-        deactivate_dummy();
-    }
-
-    /* to be called from the audio callback */
-    /* @{  */
-    void deliver_dac_output(const_restricted_sample_ptr source, uint channel, uint frames)
-    {
-        if (likely(audio_is_active())) {
-            spin_lock::scoped_lock lock(output_lock);
-            active_backend->deliver_dac_output(source, channel, frames);
-        }
-    }
-
-    void zero_dac_output(uint channel, uint frames)
-    {
-        if (likely(audio_is_active())) {
-            spin_lock::scoped_lock lock(output_lock);
-            active_backend->zero_dac_output(channel, frames);
-        }
-    }
-
-    void deliver_dac_output_64(const_restricted_sample_ptr source, uint channel)
-    {
-        if (likely(audio_is_active())) {
-            spin_lock::scoped_lock lock(output_lock);
-            active_backend->deliver_dac_output_64(source, channel);
-        }
-    }
-
-    void fetch_adc_input(restricted_sample_ptr destination, uint channel, uint frames)
-    {
-        if (likely(audio_is_active()))
-            active_backend->fetch_adc_input(destination, channel, frames);
-        else {
-            if ((frames & (vec<F>::objects_per_cacheline - 1)) == 0)
-                zerovec_simd(destination, frames);
-            else
-                zerovec(destination, frames);
-        }
-    }
-
-    void fetch_adc_input_64(restricted_sample_ptr destination, uint channel)
-    {
-        if (likely(audio_is_active()))
-            active_backend->fetch_adc_input_64(destination, channel);
-        else
-            zerovec_simd_mp<64>(destination);
-    }
-    /* @} */
-
-    uint get_audio_blocksize(void)
-    {
-        assert(audio_is_active());
-        return active_backend->get_blocksize();
-    }
-
-public:
-    std::vector<Device> list_devices(void)
-    {
-        return active_backend->list_devices();
-    }
-
-    void open_audio_stream(Device const & indevice, uint inchannels, Device const & outdevice, uint outchannels,
-                         uint samplerate)
-    {
-        input_channels = inchannels,
-        output_channels = outchannels;
-        active_backend->open_audio_stream(indevice, inchannels, outdevice, outchannels, samplerate);
-        samplerate_ = samplerate;
-    }
-
-    void close_audio_stream(void)
-    {
-        active_backend->close_audio_stream();
-        input_channels = output_channels = 0;
-    }
-
-    bool audio_is_opened(void)
-    {
-        return active_backend != &dummy;
-    }
-
-    bool audio_is_ready(void)
-    {
-        return active_backend->audiostream_ready();
-    }
-
-    bool audio_is_active(void)
-    {
-        assert(active_backend->is_active() == is_active);
-        return is_active;
-    }
-
-    bool open_portaudio_backend(void)
-    {
-        assert(!audio_is_opened());
-
-#ifdef HAVE_PORTAUDIO
-        deactivate_dummy();
-        active_backend = new portaudio_backend<dsp_cb>();
-        return true;
-#else
-        return false;
-#endif
-    }
-
-    void close_audio_backend(void)
-    {
-        assert(audio_is_opened());
-
-        if (active_backend->is_active())
-            active_backend->deactivate();
-
-        delete active_backend;
-        activate_dummy();
-    }
-
-    void activate_audio(void)
-    {
-        is_active = true;
-        active_backend->activate();
-    }
-
-    void deactivate_audio(void)
-    {
-        active_backend->deactivate();
-        is_active = false;
-    }
-
-    float get_samplerate(void) const
-    {
-        return samplerate_;
-    }
-
-    uint16_t get_input_count(void) const
-    {
-        return input_channels;
-    }
-
-    uint16_t get_output_count(void) const
-    {
-        return output_channels;
-    }
-
-private:
-    void activate_dummy(void)
-    {
-        active_backend = &dummy;
-
-        device_list devs = dummy.list_devices();
-        dummy.open_audio_stream(devs[0], devs[0].inchannels,
-                                          devs[0], devs[0].outchannels,
-                                          devs[0].defaultSampleRate);
-        dummy.activate();
-        is_active = true;
-    }
-
-    void deactivate_dummy(void)
-    {
-        assert(!audio_is_opened());
-        dummy.deactivate();
-        dummy.close_audio_stream();
-        is_active = false;
-    }
-
-    bool is_active;
-    float samplerate_;
-    uint16_t input_channels, output_channels;
-
-    audio_backend<dsp_cb> * active_backend;
-
-    dummy_backend dummy;  /* the dummy backend */
-    spin_lock output_lock;
-};
-
-} /* namespace nova */
-
-
-#endif /* _AUDIO_FRONTEND_HPP */
diff --git a/server/supernova/audio_backend/cpu_time_info.hpp b/server/supernova/audio_backend/cpu_time_info.hpp
index 32231ce..a76c3bd 100644
--- a/server/supernova/audio_backend/cpu_time_info.hpp
+++ b/server/supernova/audio_backend/cpu_time_info.hpp
@@ -19,7 +19,7 @@
 #ifndef AUDIO_BACKEND_CPU_TIME_INFO_HPP
 #define AUDIO_BACKEND_CPU_TIME_INFO_HPP
 
-#include <boost/array.hpp>
+#include <vector>
 #include "utilities/aligned_class.hpp"
 #include "nova-simd/simd_horizontal_functions.hpp"
 
@@ -27,7 +27,7 @@ namespace nova {
 
 struct cpu_time_info
 {
-    static const int size = 512; // 700 ms at 128 samples 96kHz, 6.9 s at 512 samples 44.1kHz
+    static const size_t size = 512; // 700 ms at 128 samples 96kHz, 6.9 s at 512 samples 44.1kHz
 
     cpu_time_info(void):
         index(size - 1), buffer(size, 0.f)
diff --git a/server/supernova/audio_backend/jack_backend.hpp b/server/supernova/audio_backend/jack_backend.hpp
index 217b7ec..62ed97e 100644
--- a/server/supernova/audio_backend/jack_backend.hpp
+++ b/server/supernova/audio_backend/jack_backend.hpp
@@ -23,20 +23,15 @@
 #include <string>
 #include <vector>
 
-#include <boost/lexical_cast.hpp>
-
 #include <jack/jack.h>
 #include <jack/thread.h>
 
-#include "nova-tt/name_thread.hpp"
-#include "nova-tt/thread_affinity.hpp"
 #include "utilities/branch_hints.hpp"
 
 #include "audio_backend_common.hpp"
 #include "cpu_time_info.hpp"
 
-namespace nova
-{
+namespace nova {
 
 /** jack backend
  *
@@ -104,7 +99,7 @@ public:
         input_ports.clear();
         for (uint32_t i = 0; i != input_port_count; ++i) {
             std::string portname ("input_");
-            portname += boost::lexical_cast<std::string>(i+1);
+            portname += std::to_string(i+1);
             jack_port_t * port =
                 jack_port_register(client, portname.c_str(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0);
             input_ports.push_back(port);
@@ -115,7 +110,7 @@ public:
         output_ports.clear();
         for (uint32_t i = 0; i != output_port_count; ++i) {
             std::string portname ("output_");
-            portname += boost::lexical_cast<std::string>(i+1);
+            portname += std::to_string(i+1);
             jack_port_t * port =
                 jack_port_register(client, portname.c_str(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
             output_ports.push_back(port);
@@ -165,14 +160,14 @@ public:
         cpu_time_accumulator.get(peak, average);
     }
 
-    int connect_input(int channel, const char * portname)
+    int connect_input(size_t channel, const char * portname)
     {
         if (channel >= input_ports.size())
             return -1;
         return jack_connect(client, portname, jack_port_name(input_ports[channel]));
     }
 
-    int connect_output(int channel, const char * portname)
+    int connect_output(size_t channel, const char * portname)
     {
         if (channel >= output_ports.size())
             return -1;
@@ -276,8 +271,8 @@ private:
         }
 
         /* get port regions */
-        jack_default_audio_sample_t * inputs[input_channels];
-        jack_default_audio_sample_t * outputs[output_channels];
+        jack_default_audio_sample_t ** inputs   = (jack_default_audio_sample_t **)alloca(input_channels * sizeof(jack_default_audio_sample_t*));
+        jack_default_audio_sample_t ** outputs  = (jack_default_audio_sample_t **)alloca(output_channels * sizeof(jack_default_audio_sample_t*));
         for (uint16_t i = 0; i != input_channels; ++i)
             inputs[i] = (jack_default_audio_sample_t*) jack_port_get_buffer(input_ports[i], frames);
 
diff --git a/server/supernova/audio_backend/portaudio_backend.hpp b/server/supernova/audio_backend/portaudio_backend.hpp
index c515923..8798803 100644
--- a/server/supernova/audio_backend/portaudio_backend.hpp
+++ b/server/supernova/audio_backend/portaudio_backend.hpp
@@ -28,7 +28,7 @@
 
 #include "audio_backend_common.hpp"
 #include "utilities/branch_hints.hpp"
-
+#include "cpu_time_info.hpp"
 
 namespace nova {
 
@@ -130,26 +130,34 @@ public:
 
         PaStreamParameters in_parameters, out_parameters;
 
-        in_parameters.channelCount = inchans;
-        in_parameters.device = input_device_index;
-        in_parameters.sampleFormat = paFloat32 | paNonInterleaved;
-        in_parameters.suggestedLatency = Pa_GetDeviceInfo(in_parameters.device)->defaultLowInputLatency;
-        in_parameters.hostApiSpecificStreamInfo = NULL;
+        if (inchans) {
+            in_parameters.channelCount = inchans;
+            in_parameters.device = input_device_index;
+            in_parameters.sampleFormat = paFloat32 | paNonInterleaved;
+            in_parameters.suggestedLatency = Pa_GetDeviceInfo(in_parameters.device)->defaultLowInputLatency;
+            in_parameters.hostApiSpecificStreamInfo = NULL;
+        }
 
-        out_parameters.channelCount = outchans;
-        out_parameters.device = output_device_index;
-        out_parameters.sampleFormat = paFloat32 | paNonInterleaved;
-        out_parameters.suggestedLatency = Pa_GetDeviceInfo(out_parameters.device)->defaultLowOutputLatency;
-        out_parameters.hostApiSpecificStreamInfo = NULL;
+        if (outchans) {
+            out_parameters.channelCount = outchans;
+            out_parameters.device = output_device_index;
+            out_parameters.sampleFormat = paFloat32 | paNonInterleaved;
+            out_parameters.suggestedLatency = Pa_GetDeviceInfo(out_parameters.device)->defaultLowOutputLatency;
+            out_parameters.hostApiSpecificStreamInfo = NULL;
+        }
 
-        PaError supported = Pa_IsFormatSupported(&in_parameters, &out_parameters, samplerate);
+        PaStreamParameters * in_stream_parameters  = inchans ? &in_parameters : NULL;
+        PaStreamParameters * out_stream_parameters = outchans ? &out_parameters : NULL;
+
+        PaError supported = Pa_IsFormatSupported(in_stream_parameters, out_stream_parameters, samplerate);
         report_error(supported);
         if (supported != 0)
             return false;
 
         callback_initialized = false;
         blocksize_ = blocksize;
-        PaError opened = Pa_OpenStream(&stream, &in_parameters, &out_parameters,
+
+        PaError opened = Pa_OpenStream(&stream, in_stream_parameters, out_stream_parameters,
                                        samplerate, pa_blocksize, paNoFlag,
                                        &portaudio_backend::pa_process, this);
 
@@ -210,6 +218,12 @@ public:
         return stream;
     }
 
+    void get_cpuload(float & peak, float & average) const
+    {
+        cpu_time_accumulator.get(peak, average);
+    }
+
+
 private:
     int perform(const void *inputBuffer, void *outputBuffer, unsigned long frames,
                 const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
@@ -241,6 +255,7 @@ private:
             processed += blocksize_;
         }
 
+        cpu_time_accumulator.update(Pa_GetStreamCpuLoad(stream));
         return paContinue;
     }
 
@@ -254,6 +269,7 @@ private:
     PaStream *stream;
     uint32_t blocksize_;
     bool callback_initialized;
+    cpu_time_info cpu_time_accumulator;
 };
 
 } /* namespace nova */
diff --git a/server/supernova/audio_backend/sndfile_backend.hpp b/server/supernova/audio_backend/sndfile_backend.hpp
index 2247024..1ecfeea 100644
--- a/server/supernova/audio_backend/sndfile_backend.hpp
+++ b/server/supernova/audio_backend/sndfile_backend.hpp
@@ -21,10 +21,10 @@
 
 #include <cmath>
 #include <string>
+#include <thread>
 
 #include <boost/atomic.hpp>
-#include <boost/lockfree/ringbuffer.hpp>
-#include <boost/thread.hpp>
+#include <boost/lockfree/spsc_queue.hpp>
 
 #include <sndfile.hh>
 
@@ -33,8 +33,7 @@
 
 #include "audio_backend_common.hpp"
 
-namespace nova
-{
+namespace nova {
 
 /** sndfile backend
  *
@@ -58,20 +57,18 @@ public:
         read_frames(65536), write_frames(65536), running(false), reader_running(false), writer_running(false)
     {}
 
-    ~sndfile_backend(void)
-    {}
-
     size_t get_audio_blocksize(void)
     {
-        return 64;
+        return block_size_;
     }
 
 public:
     void open_client(std::string const & input_file_name, std::string const & output_file_name,
-                     float samplerate, int format, uint32_t output_channel_count)
+                     float samplerate, int format, uint32_t output_channel_count, size_t block_size)
     {
         output_channels = output_channel_count;
         samplerate_ = samplerate = std::floor(samplerate);
+        block_size_ = block_size;
 
         if (!input_file_name.empty()) {
             input_file = SndfileHandle(input_file_name.c_str(), SFM_READ);
@@ -123,11 +120,11 @@ public:
         if (input_file)
         {
             reader_running.store(true);
-            reader_thread = boost::thread(boost::bind(&sndfile_backend::sndfile_read_thread, this));
+            reader_thread = std::thread(std::bind(&sndfile_backend::sndfile_read_thread, this));
         }
 
         writer_running.store(true);
-        writer_thread = boost::thread(boost::bind(&sndfile_backend::sndfile_write_thread, this));
+        writer_thread = std::thread(std::bind(&sndfile_backend::sndfile_write_thread, this));
     }
 
     void deactivate_audio(void)
@@ -156,7 +153,7 @@ private:
 
             read_semaphore.wait();
             do {
-                remaining -= read_frames.dequeue(temp_buffer.get(), remaining);
+                remaining -= read_frames.pop(temp_buffer.get(), remaining);
 
                 if (unlikely(read_frames.empty() &&
                              !reader_running.load(boost::memory_order_acquire)))
@@ -192,8 +189,7 @@ private:
         const size_t frames_per_tick = get_audio_blocksize();
         sized_array<sample_type, aligned_allocator<sample_type> > data_to_read(input_channels * frames_per_tick, 0.f);
 
-        for (;;)
-        {
+        for (;;) {
             if (unlikely(reader_running.load(boost::memory_order_acquire) == false))
                 return;
 
@@ -210,7 +206,7 @@ private:
                 size_t remaining = item_to_enqueue;
 
                 do {
-                    remaining -= read_frames.enqueue(data_to_read.c_array(), remaining);
+                    remaining -= read_frames.push(data_to_read.c_array(), remaining);
                 } while(remaining);
                 read_semaphore.post();
             }
@@ -222,8 +218,7 @@ private:
     /* write output fifo from rt context */
     void write_output_buffers(size_t frames_per_tick)
     {
-        for (size_t frame = 0; frame != frames_per_tick; ++frame)
-        {
+        for (size_t frame = 0; frame != frames_per_tick; ++frame) {
             for (uint16_t channel = 0; channel != output_channels; ++channel)
                 temp_buffer.get()[frame * output_channels + channel] = super::output_samples[channel].get()[frame];
         }
@@ -233,7 +228,7 @@ private:
 
         size_t count = total_samples;
         do {
-            size_t consumed = write_frames.enqueue(buffer, count);
+            size_t consumed = write_frames.push(buffer, count);
             count -= consumed;
             buffer += consumed;
             write_semaphore.post();
@@ -245,12 +240,10 @@ private:
         const size_t frames_per_tick = get_audio_blocksize();
         sized_array<sample_type, aligned_allocator<sample_type> > data_to_write(output_channels * frames_per_tick, 0.f);
 
-        for (;;)
-        {
+        for (;;) {
             write_semaphore.wait();
-            for (;;)
-            {
-                size_t dequeued = write_frames.dequeue(data_to_write.c_array(), data_to_write.size());
+            for (;;) {
+                size_t dequeued = write_frames.pop(data_to_write.c_array(), data_to_write.size());
 
                 if (dequeued == 0)
                     break;
@@ -280,11 +273,12 @@ public:
 private:
     SndfileHandle input_file, output_file;
     std::size_t read_position;
+    int block_size_;
 
     aligned_storage_ptr<sample_type> temp_buffer;
 
-    boost::thread reader_thread, writer_thread;
-    boost::lockfree::ringbuffer< sample_type, 0 > read_frames, write_frames;
+    std::thread reader_thread, writer_thread;
+    boost::lockfree::spsc_queue< sample_type > read_frames, write_frames;
     nova::semaphore read_semaphore, write_semaphore;
     boost::atomic<bool> running, reader_running, writer_running;
 };
diff --git a/server/supernova/dsp_thread_queue/dsp_thread.hpp b/server/supernova/dsp_thread_queue/dsp_thread.hpp
index 3d378af..952bc47 100644
--- a/server/supernova/dsp_thread_queue/dsp_thread.hpp
+++ b/server/supernova/dsp_thread_queue/dsp_thread.hpp
@@ -19,24 +19,19 @@
 #ifndef DSP_THREAD_QUEUE_DSP_THREAD_HPP
 #define DSP_THREAD_QUEUE_DSP_THREAD_HPP
 
+#include <cstdint>
 #include <iostream>
+#include <thread>
 
-#include <boost/bind.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/foreach.hpp>
 #include <boost/ptr_container/ptr_vector.hpp>
-#include <boost/thread/thread.hpp>
-
-#ifndef foreach
-#define foreach BOOST_FOREACH
-#endif
 
 #include "dsp_thread_queue.hpp"
+#include "../utilities/malloc_aligned.hpp"
+#include "nova-tt/mlock.hpp"
 
-namespace nova
-{
+namespace nova {
 
-using boost::uint16_t;
+using std::uint16_t;
 
 struct nop_thread_init
 {
@@ -68,10 +63,26 @@ class dsp_thread:
     typedef nova::dsp_queue_interpreter<runnable, Alloc> dsp_queue_interpreter;
 
 public:
-    dsp_thread(dsp_queue_interpreter & interpreter, uint16_t index,
+    dsp_thread(dsp_queue_interpreter & interpreter, uint16_t index, size_t stack_size,
                thread_init_functor const & thread_init = thread_init_functor()):
-        interpreter(interpreter), stop(false), index(index), thread_init_functor(thread_init)
-    {}
+        thread_init_functor(thread_init), interpreter(interpreter), stop(false), index(index), stack_ (NULL)
+    {
+        if (stack_size) {
+                stack_ = malloc_aligned<char>(stack_size);
+            if (stack_ == NULL)
+                throw std::bad_alloc();
+            // touch stack to avoid page faults
+            for (size_t i = 0; i != stack_size; ++i)
+                stack_[i] = 0;
+            mlock(stack_, stack_size);
+        }
+    }
+
+    ~dsp_thread(void)
+    {
+        if (stack_)
+            free_aligned(stack_);
+    }
 
     /** thread function
      * */
@@ -79,8 +90,7 @@ public:
     {
         thread_init_functor::operator()(index);
 
-        for (;;)
-        {
+        for (;;) {
             cycle_sem.wait();
             if (unlikely(stop.load(boost::memory_order_acquire)))
                 return;
@@ -88,6 +98,14 @@ public:
             interpreter.tick(index);
         }
     }
+
+    static void * run_static(void* arg)
+    {
+        dsp_thread * self = static_cast<dsp_thread*>(arg);
+        self->run();
+        return NULL;
+    }
+
     void terminate(void)
     {
         stop.store(true, boost::memory_order_release);
@@ -99,11 +117,18 @@ public:
         cycle_sem.post();
     }
 
+
+    char * stack(void)
+    {
+        return stack_;
+    }
+
 private:
     semaphore cycle_sem;
     dsp_queue_interpreter & interpreter;
     boost::atomic<bool> stop;
     uint16_t index;
+    char * stack_;
 };
 
 /** \brief container for all dsp threads
@@ -126,14 +151,10 @@ public:
     typedef typename dsp_queue_interpreter::node_count_t node_count_t;
     typedef typename dsp_queue_interpreter::thread_count_t thread_count_t;
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
     typedef std::unique_ptr<dsp_thread_queue<runnable, Alloc> > dsp_thread_queue_ptr;
-#else
-    typedef std::auto_ptr<dsp_thread_queue<runnable, Alloc> > dsp_thread_queue_ptr;
-#endif
 
     dsp_threads(thread_count_t count, thread_init_functor const & init_functor = thread_init_functor()):
-        interpreter(std::min(count, (thread_count_t)boost::thread::hardware_concurrency()))
+        interpreter(std::min(count, (thread_count_t)std::thread::hardware_concurrency()))
     {
         set_dsp_thread_count(interpreter.get_thread_count(), init_functor);
     }
@@ -141,8 +162,7 @@ public:
     void run(void)
     {
         bool run_tick = interpreter.init_tick();
-        if (likely(run_tick))
-        {
+        if (likely(run_tick)) {
             wake_threads();
             interpreter.tick_master();
         }
@@ -152,18 +172,11 @@ public:
      *
      *  don't call, if threads are currently accessing the queue
      * */
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
     dsp_thread_queue_ptr reset_queue(dsp_thread_queue_ptr && new_queue)
     {
         dsp_thread_queue_ptr ret = interpreter.reset_queue(std::move(new_queue));
         return std::move(ret);
     }
-#else
-    dsp_thread_queue_ptr reset_queue(dsp_thread_queue_ptr & new_queue)
-    {
-        return interpreter.reset_queue(new_queue);
-    }
-#endif
 
     dsp_thread_queue_ptr release_queue(void)
     {
@@ -171,10 +184,72 @@ public:
     }
 
 private:
+#if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
+    // we can set the stack
+    static const int stack_size = 524288;
+    struct thread_group
+    {
+        void push_back(pthread_t t)
+        {
+            thread_group_.push_back(t);
+        }
+
+        void join_all(void)
+        {
+            for(pthread_t & thread : thread_group_) {
+                void * ret;
+                int err = pthread_join(thread, &ret);
+                if (err)
+                    printf("Error when joining helper thread\n");
+            }
+        }
+
+        std::vector<pthread_t> thread_group_;
+    };
+
+    void start_threads_impl(void)
+    {
+        for(dsp_thread & thread : threads) {
+            pthread_attr_t attr;
+            pthread_attr_init(&attr);
+            int err = pthread_attr_setstack(&attr, thread.stack(), stack_size);
+            if (err)
+                throw std::logic_error("Cannot set stack of DSP helper thread");
+
+            pthread_t thread_id;
+            err = pthread_create(&thread_id, &attr, dsp_thread::run_static, &thread);
+            if (err)
+                throw std::runtime_error("Cannot create DSP helper thread");
+            thread_group_.push_back(thread_id);
+            pthread_attr_destroy(&attr);
+        }
+    }
+#else
+    struct thread_group
+    {
+        void join_all(void)
+        {
+            for (std::thread & thread : threads)
+                thread.join();
+        }
+
+        std::vector<std::thread> threads;
+    };
+
+    static const int stack_size = 0;
+
+    void start_threads_impl(void)
+    {
+        for(dsp_thread & thread : threads)
+            thread_group_.threads.push_back(std::move(std::thread(std::bind(&dsp_thread::run, std::ref(thread)))));
+    }
+
+#endif
+
     void set_dsp_thread_count(thread_count_t count, thread_init_functor const & init_functor)
     {
         for (thread_count_t i = 1; i != count; ++i)
-            threads.push_back(new dsp_thread(interpreter, i, init_functor));
+            threads.push_back(new dsp_thread(interpreter, i, stack_size, init_functor));
         assert(threads.size() == std::size_t(count-1));
     }
 
@@ -183,13 +258,12 @@ public:
     /* @{ */
     void start_threads(void)
     {
-        foreach(dsp_thread & thread, threads)
-            thread_group_.create_thread(boost::bind(&dsp_thread::run, boost::ref(thread)));
+        start_threads_impl();
     }
 
     void terminate_threads(void)
     {
-        foreach(dsp_thread & thread, threads)
+        for (dsp_thread & thread : threads)
             thread.terminate();
 
         thread_group_.join_all();
@@ -207,8 +281,7 @@ private:
     dsp_queue_interpreter interpreter;
 
     boost::ptr_vector<dsp_thread> threads; /* container of dsp threads */
-
-    boost::thread_group thread_group_;
+    thread_group thread_group_;
 };
 
 } /* namespace nova */
diff --git a/server/supernova/dsp_thread_queue/dsp_thread_queue.hpp b/server/supernova/dsp_thread_queue/dsp_thread_queue.hpp
index c0c963f..2125036 100644
--- a/server/supernova/dsp_thread_queue/dsp_thread_queue.hpp
+++ b/server/supernova/dsp_thread_queue/dsp_thread_queue.hpp
@@ -20,28 +20,27 @@
 #define DSP_THREAD_QUEUE_DSP_THREAD_QUEUE_HPP
 
 #include <algorithm>
+#include <cstdint>
 #include <iostream>
 #include <memory>
 #include <vector>
 
 #include <boost/atomic.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/thread.hpp>
+#include <cstdio>
 
 #ifdef DEBUG_DSP_THREADS
-#include <boost/foreach.hpp>
 #include <cstdio>
 #endif
 
 #include <boost/lockfree/stack.hpp>
 
+#include "nova-tt/pause.hpp"
 #include "nova-tt/semaphore.hpp"
 
 #include "utilities/branch_hints.hpp"
 #include "utilities/utils.hpp"
 
-namespace nova
-{
+namespace nova {
 
 template <typename runnable, typename Alloc>
 class dsp_queue_interpreter;
@@ -71,7 +70,7 @@ class dsp_thread_queue_item:
     typedef typename Alloc::template rebind<dsp_thread_queue_item>::other new_allocator;
 
 public:
-    typedef boost::uint_fast16_t activation_limit_t;
+    typedef std::uint_fast16_t activation_limit_t;
 
     struct successor_list
     {
@@ -181,7 +180,7 @@ public:
 
         if (!successors.empty()) {
             printf("\tsuccessors:\n");
-            BOOST_FOREACH(dsp_thread_queue_item * item, successors) {
+            for(dsp_thread_queue_item * item : successors) {
                 printf("\t\t%p\n", item);
             }
         }
@@ -236,7 +235,7 @@ private:
 template <typename runnable, typename Alloc = std::allocator<void*> >
 class dsp_thread_queue
 {
-    typedef boost::uint_fast16_t node_count_t;
+    typedef std::uint_fast16_t node_count_t;
 
     typedef nova::dsp_thread_queue_item<runnable, Alloc> dsp_thread_queue_item;
     typedef std::vector<dsp_thread_queue_item*,
@@ -264,8 +263,8 @@ public:
 #endif
 
     /** preallocate node_count nodes */
-    dsp_thread_queue(std::size_t node_count):
-        total_node_count(0)
+    dsp_thread_queue(std::size_t node_count, bool has_parallelism = true):
+        total_node_count(0), has_parallelism_(has_parallelism)
     {
         initially_runnable_items.reserve(node_count);
         queue_items = item_allocator().allocate(node_count * sizeof(dsp_thread_queue_item));
@@ -308,10 +307,16 @@ public:
         return total_node_count;
     }
 
+    bool has_parallelism(void) const
+    {
+        return has_parallelism_;
+    }
+
 private:
     node_count_t total_node_count;          /* total number of nodes */
     item_vector_t initially_runnable_items; /* nodes without precedessor */
     dsp_thread_queue_item * queue_items;    /* all nodes */
+    const bool has_parallelism_;
 
     friend class dsp_queue_interpreter<runnable, Alloc>;
 };
@@ -330,14 +335,10 @@ public:
     typedef boost::uint_fast8_t thread_count_t;
     typedef boost::uint_fast16_t node_count_t;
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
     typedef std::unique_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
-#else
-    typedef std::auto_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
-#endif
 
     dsp_queue_interpreter(thread_count_t tc):
-        runnable_set(1024), node_count(0)
+        node_count(0)
     {
         if (!runnable_set.is_lock_free())
             std::cout << "Warning: scheduler queue is not lockfree!" << std::endl;
@@ -374,7 +375,6 @@ public:
         return ret;
     }
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
     dsp_thread_queue_ptr reset_queue(dsp_thread_queue_ptr && new_queue)
     {
         dsp_thread_queue_ptr ret(std::move(queue));
@@ -389,40 +389,18 @@ public:
         queue->dump_queue();
 #endif
 
-        thread_count_t thread_number =
-            std::min(thread_count_t(std::min(total_node_count(),
-                                             node_count_t(std::numeric_limits<thread_count_t>::max()))),
-                     thread_count);
+        if (queue->has_parallelism()) {
+            thread_count_t thread_number =
+                    std::min(thread_count_t(std::min(total_node_count(),
+                                                     node_count_t(std::numeric_limits<thread_count_t>::max()))),
+                             thread_count);
 
-        used_helper_threads = thread_number - 1; /* this thread is not waked up */
+            used_helper_threads = thread_number - 1; /* this thread is not waked up */
+        } else
+            used_helper_threads = 0;
         return ret;
     }
 
-#else
-
-    dsp_thread_queue_ptr reset_queue(dsp_thread_queue_ptr & new_queue)
-    {
-        dsp_thread_queue_ptr ret(queue.release());
-        queue = new_queue;
-        if (queue.get() == 0)
-            return ret;
-
-        queue->reset_activation_counts();
-
-#ifdef DEBUG_DSP_THREADS
-        queue->dump_queue();
-#endif
-
-        thread_count_t thread_number =
-            std::min(thread_count_t(std::min(total_node_count(),
-                                             node_count_t(std::numeric_limits<thread_count_t>::max()))),
-                     thread_count);
-
-        used_helper_threads = thread_number - 1; /* this thread is not waked up */
-        return ret;
-    }
-#endif
-
     node_count_t total_node_count(void) const
     {
         return queue->get_total_node_count();
@@ -459,7 +437,7 @@ private:
         void run(void)
         {
             for (int i = 0; i != loops; ++i)
-                asm(""); // empty asm to avoid optimization
+                nova::detail::pause();
 
             loops = std::min(loops * 2, max);
         }
@@ -474,23 +452,33 @@ private:
 
     void run_item(thread_count_t index)
     {
-        backup b(256, 32768);
+        backup b(8, 32768);
+        int poll_counts = 0;
+
         for (;;) {
-            if (node_count.load(boost::memory_order_acquire)) {
-                /* we still have some nodes to process */
-                int state = run_next_item(index);
-
-                switch (state) {
-                case no_remaining_items:
-                    return;
-                case fifo_empty:
-                    b.run();
-
-                default:
-                    b.reset();
-                }
-            } else
+            if (!node_count.load(boost::memory_order_acquire))
+                return;
+
+            /* we still have some nodes to process */
+            int state = run_next_item(index);
+            switch (state) {
+            case no_remaining_items:
                 return;
+            case fifo_empty:
+                b.run();
+                ++poll_counts;
+                break;
+
+            case remaining_items:
+                b.reset();
+                poll_counts = 0;
+            }
+
+            if (poll_counts == 50000) {
+                // the maximum poll count is system-dependent. 50000 should be high enough for recent machines
+                std::printf("nova::dsp_queue_interpreter::run_item: possible lookup detected\n");
+                abort();
+            }
         }
     }
 
@@ -510,8 +498,14 @@ private:
 
     void wait_for_end(void)
     {
-        while (node_count.load(boost::memory_order_acquire) != 0)
-        {} // busy-wait for helper threads to finish
+        int count = 0;
+        while (node_count.load(boost::memory_order_acquire) != 0) {
+            ++count;
+            if (count == 1000000) {
+                std::printf("nova::dsp_queue_interpreter::run_item: possible lookup detected\n");
+                abort();
+            }
+        } // busy-wait for helper threads to finish
     }
 
     HOT int run_next_item(thread_count_t index)
@@ -558,7 +552,7 @@ private:
     thread_count_t thread_count;        /* number of dsp threads to be used by this queue */
     thread_count_t used_helper_threads; /* number of helper threads, which are actually used */
 
-    boost::lockfree::stack<dsp_thread_queue_item*> runnable_set;
+    boost::lockfree::stack<dsp_thread_queue_item*,  boost::lockfree::capacity<32768> > runnable_set;
     boost::atomic<node_count_t> node_count; /* number of nodes, that need to be processed during this tick */
 };
 
diff --git a/server/supernova/sc/sc_osc_handler.cpp b/server/supernova/sc/sc_osc_handler.cpp
index 921dd16..e0341e7 100644
--- a/server/supernova/sc/sc_osc_handler.cpp
+++ b/server/supernova/sc/sc_osc_handler.cpp
@@ -68,7 +68,7 @@ abstract_group * find_group(int32_t target_id)
 bool check_node_id(int node_id)
 {
     if (!instance->node_id_available(node_id)) {
-        log("node id %d already in use\n", node_id);
+        log_printf("node id %d already in use\n", node_id);
         return false;
     }
     return true;
@@ -297,7 +297,9 @@ struct cmd_dispatcher
 
     static void fire_done_message(nova_endpoint const & endpoint, const char * cmd, osc::int32 index)
     {
-        fire_io_callback(boost::bind(send_done_message, endpoint, cmd, index));
+        fire_io_callback([=]() {
+            send_done_message(endpoint, cmd, index);
+        });
     }
 };
 
@@ -346,7 +348,7 @@ void sc_notify_observers::notify(const char * address_pattern, const server_node
     fill_notification(node, p);
 
     movable_array<char> message(p.Size(), p.Data());
-    cmd_dispatcher<true>::fire_io_callback(boost::bind(fire_notification, message));
+    cmd_dispatcher<true>::fire_io_callback(std::bind(fire_notification, message));
 }
 
 void fire_trigger(int32_t node_id, int32_t trigger_id, float value)
@@ -361,7 +363,9 @@ void fire_trigger(int32_t node_id, int32_t trigger_id, float value)
 
 void sc_notify_observers::send_trigger(int32_t node_id, int32_t trigger_id, float value)
 {
-    cmd_dispatcher<true>::fire_io_callback(boost::bind(fire_trigger, node_id, trigger_id, value));
+    cmd_dispatcher<true>::fire_io_callback([=](){
+        fire_trigger(node_id, trigger_id, value);
+    });
 }
 
 void free_mem_callback(movable_string & cmd,
@@ -387,7 +391,7 @@ void fire_node_reply(int32_t node_id, int reply_id, movable_string & cmd,
 
         instance->send_notification(p.Data(), p.Size());
 
-        cmd_dispatcher<true>::fire_rt_callback(boost::bind(free_mem_callback, cmd, values));
+        cmd_dispatcher<true>::fire_rt_callback(std::bind(free_mem_callback, cmd, values));
     } catch (...) {
     }
 
@@ -402,7 +406,7 @@ void sc_notify_observers::send_node_reply(int32_t node_id, int reply_id, const c
     movable_string cmd(command_name);
     movable_array<float> value_array(argument_count, values);
 
-    cmd_dispatcher<true>::fire_io_callback(boost::bind(fire_node_reply, node_id, reply_id, cmd, value_array));
+    cmd_dispatcher<true>::fire_io_callback(std::bind(fire_node_reply, node_id, reply_id, cmd, value_array));
 }
 
 void sc_notify_observers::send_notification(const char * data, size_t length)
@@ -576,7 +580,7 @@ void sc_osc_handler::tcp_connection::start(sc_osc_handler * self)
     bool check_password = true;
 
     if (check_password) {
-        boost::array<char, 32> password;
+        std::array<char, 32> password;
         size_t size;
         uint32_t msglen;
         for (unsigned int i=0; i!=4; ++i) {
@@ -628,7 +632,15 @@ void sc_osc_handler::handle_packet_async(const char * data, size_t length,
 
     if (dump_osc_packets == 1) {
         osc_received_packet packet (data, length);
-        cout << "received osc packet " << packet << endl;
+
+        if (packet.IsMessage()) {
+            received_message message (packet);
+
+            const char * address = message.AddressPattern();
+            if (strcmp(address, "/status") != 0) // we ignore /status messages
+                cout << "received osc message " << message << endl;
+        } else
+            cout << "received osc bundle " << packet << endl;
     }
 
     instance->add_sync_callback(p);
@@ -668,13 +680,10 @@ void sc_osc_handler::received_packet::run(void)
 void sc_osc_handler::handle_packet(const char * data, std::size_t length, nova_endpoint const & endpoint)
 {
     osc_received_packet packet(data, length);
-    if (packet.IsBundle())
-    {
+    if (packet.IsBundle()) {
         received_bundle bundle(packet);
         handle_bundle<true> (bundle, endpoint);
-    }
-    else
-    {
+    } else {
         received_message message(packet);
         handle_message<true> (message, packet.Size(), endpoint);
     }
@@ -731,7 +740,6 @@ void send_udp_message(movable_array<char> data, nova_endpoint const & endpoint)
     instance->send(data.data(), data.size(), endpoint);
 }
 
-
 int first_arg_as_int(received_message const & message)
 {
     osc::ReceivedMessageArgumentStream args = message.ArgumentStream();
@@ -742,66 +750,59 @@ int first_arg_as_int(received_message const & message)
     return val;
 }
 
-void quit_perform(nova_endpoint const & endpoint)
-{
-    send_done_message(endpoint, "/quit");
-    instance->terminate();
-}
-
 template <bool realtime>
 void handle_quit(nova_endpoint const & endpoint)
 {
     instance->quit_received = true;
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(quit_perform, endpoint));
-}
-
-void notify_perform(bool enable, nova_endpoint const & endpoint)
-{
-    if (enable)
-        instance->add_observer(endpoint);
-    else
-        instance->remove_observer(endpoint);
-    send_done_message(endpoint, "/notify");
+    cmd_dispatcher<realtime>::fire_system_callback( [=] () {
+        instance->prepare_to_terminate();
+        send_done_message(endpoint, "/quit");
+        instance->terminate();
+    });
 }
 
 template <bool realtime>
 void handle_notify(received_message const & message, nova_endpoint const & endpoint)
 {
     int enable = first_arg_as_int(message);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(notify_perform, bool(enable), endpoint));
+
+    cmd_dispatcher<realtime>::fire_system_callback( [=]() {
+        if (enable)
+            instance->add_observer(endpoint);
+        else
+            instance->remove_observer(endpoint);
+        send_done_message(endpoint, "/notify");
+    });
 }
 
-void status_perform(nova_endpoint const & endpoint)
+template <bool realtime>
+void handle_status(nova_endpoint const & endpoint)
 {
-    if (unlikely(instance->quit_received)) // we don't reply once we are about to quit
-        return;
+    cmd_dispatcher<realtime>::fire_io_callback([=]() {
+        if (unlikely(instance->quit_received)) // we don't reply once we are about to quit
+            return;
 
-    char buffer[1024];
-    typedef osc::int32 i32;
+        char buffer[1024];
+        typedef osc::int32 i32;
 
-    float peak_load, average_load;
-    instance->cpu_load(peak_load, average_load);
+        float peak_load, average_load;
+        instance->cpu_load(peak_load, average_load);
 
-    osc::OutboundPacketStream p(buffer, 1024);
-    p << osc::BeginMessage("/status.reply")
-      << (i32)1                                 /* unused */
-      << (i32)sc_factory->ugen_count()          /* ugens */
-      << (i32)instance->synth_count()           /* synths */
-      << (i32)instance->group_count()           /* groups */
-      << (i32)instance->prototype_count()       /* synthdefs */
-      << average_load                           /* average cpu % */
-      << peak_load                              /* peak cpu % */
-      << instance->get_samplerate()             /* nominal samplerate */
-      << instance->get_samplerate()             /* actual samplerate */
-      << osc::EndMessage;
+        osc::OutboundPacketStream p(buffer, 1024);
+        p << osc::BeginMessage("/status.reply")
+          << (i32)1                                 /* unused */
+          << (i32)sc_factory->ugen_count()          /* ugens */
+          << (i32)instance->synth_count()           /* synths */
+          << (i32)instance->group_count()           /* groups */
+          << (i32)instance->definition_count()      /* synthdefs */
+          << average_load                           /* average cpu % */
+          << peak_load                              /* peak cpu % */
+          << instance->get_samplerate()             /* nominal samplerate */
+          << instance->get_samplerate()             /* actual samplerate */
+          << osc::EndMessage;
 
-    instance->send(p.Data(), p.Size(), endpoint);
-}
-
-template <bool realtime>
-void handle_status(nova_endpoint const & endpoint)
-{
-    cmd_dispatcher<realtime>::fire_io_callback(boost::bind(status_perform, endpoint));
+        instance->send(p.Data(), p.Size(), endpoint);
+    });
 }
 
 void handle_dumpOSC(received_message const & message)
@@ -812,23 +813,20 @@ void handle_dumpOSC(received_message const & message)
     instance->dumpOSC(val);     /* thread-safe */
 }
 
-void sync_perform(osc::int32 id, nova_endpoint const & endpoint)
-{
-    char buffer[128];
-    osc::OutboundPacketStream p(buffer, 128);
-    p << osc::BeginMessage("/synced")
-      << id
-      << osc::EndMessage;
-
-    instance->send(p.Data(), p.Size(), endpoint);
-}
-
 template <bool realtime>
 void handle_sync(received_message const & message, nova_endpoint const & endpoint)
 {
     int id = first_arg_as_int(message);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(sync_perform, id, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback([=]() {
+        char buffer[128];
+        osc::OutboundPacketStream p(buffer, 128);
+        p << osc::BeginMessage("/synced")
+          << id
+          << osc::EndMessage;
+
+        instance->send(p.Data(), p.Size(), endpoint);
+    });
 }
 
 void handle_clearSched(void)
@@ -859,7 +857,12 @@ static bool node_position_sanity_check(node_position_constraint const & constrai
             log_printf("Invalid position constraint (target: %d, addAction: %d)\n", target->id(), constraint.second);
             return false;
         }
+        break;
     }
+    case before:
+    case after:
+    case replace:
+        break;
     }
 
     return true;
@@ -1108,7 +1111,7 @@ void g_query_tree_fill_node(osc::OutboundPacketStream & p, bool flag, server_nod
 
     if (node.is_synth()) {
         sc_synth const & scsynth = static_cast<sc_synth const&>(node);
-        p << scsynth.prototype_name();
+        p << scsynth.definition_name();
 
         if (flag) {
             osc::int32 controls = scsynth.mNumControls;
@@ -1130,7 +1133,10 @@ void g_query_tree_fill_node(osc::OutboundPacketStream & p, bool flag, server_nod
         }
     } else {
         abstract_group const & group = static_cast<abstract_group const &>(node);
-        group.apply_on_children(boost::bind(g_query_tree_fill_node, boost::ref(p), flag, _1));
+
+        group.apply_on_children( [&](server_node const & node) {
+            g_query_tree_fill_node(p, flag, node);
+        });
     }
 }
 
@@ -1157,11 +1163,13 @@ void g_query_tree(int node_id, bool flag, nova_endpoint const & endpoint)
               << node_id
               << osc::int32(group->child_count());
 
-            group->apply_on_children(boost::bind(g_query_tree_fill_node, boost::ref(p), flag, _1));
+            group->apply_on_children([&](server_node const & node) {
+                g_query_tree_fill_node(p, flag, node);
+            });
             p << osc::EndMessage;
 
             movable_array<char> message(p.Size(), data.c_array());
-            cmd_dispatcher<realtime>::fire_io_callback(boost::bind(send_udp_message, message, endpoint));
+            cmd_dispatcher<realtime>::fire_io_callback(std::bind(send_udp_message, message, endpoint));
             return;
         }
         catch(...)
@@ -1206,10 +1214,13 @@ void g_dump_node(rt_string_stream & stream, server_node & node, bool flag, int l
 
     if (node.is_synth()) {
         abstract_synth const & synth = static_cast<abstract_synth const &>(node);
-        stream << synth.id() << " " << synth.prototype_name() << endl;
+        stream << synth.id() << " " << synth.definition_name() << endl;
 
         if (flag) {
-            /* dump controls */
+            for (size_t control_index = 0; control_index != synth.number_of_slots(); ++control_index) {
+                fill_spaces(stream, level + 1);
+                stream << synth.name_of_slot(control_index) << " " << synth.get(control_index) << endl;
+            }
         }
     } else {
         abstract_group & group = static_cast<abstract_group &>(node);
@@ -1220,7 +1231,10 @@ void g_dump_node(rt_string_stream & stream, server_node & node, bool flag, int l
         else
             stream << " group";
         stream << endl;
-        group.apply_on_children(boost::bind(g_dump_node, boost::ref(stream), _1, flag, level + 1));
+
+        group.apply_on_children( [&](server_node & node) {
+            g_dump_node(stream, node, flag, level + 1);
+        });
     }
 }
 
@@ -1369,9 +1383,11 @@ void apply_control_bus_mapping(server_node & node, slot_type slot, int bus_index
 {
     if (node.is_synth())
         static_cast<sc_synth&>(node).map_control_bus<IsAudio>(slot, bus_index);
-    else
-        static_cast<abstract_group&>(node).apply_on_children(boost::bind(apply_control_bus_mapping<IsAudio, slot_type>, _1,
-                                                                         slot, bus_index));
+    else {
+        static_cast<abstract_group&>(node).apply_on_children( [&] (server_node & node) {
+            apply_control_bus_mapping<IsAudio, slot_type>(node, slot, bus_index);
+        });
+    }
 }
 
 template <bool IsAudio, typename slot_type>
@@ -1379,9 +1395,11 @@ void apply_control_busn_mapping(server_node & node, slot_type slot, int bus_inde
 {
     if (node.is_synth())
         static_cast<sc_synth&>(node).map_control_buses<IsAudio>(slot, bus_index, count);
-    else
-        static_cast<abstract_group&>(node).apply_on_children(boost::bind(apply_control_busn_mapping<IsAudio, slot_type>, _1,
-                                                                         slot, bus_index, count));
+    else {
+        static_cast<abstract_group&>(node).apply_on_children( [&] (server_node & node) {
+            apply_control_busn_mapping<IsAudio, slot_type>(node, slot, bus_index, count);
+        });
+    }
 }
 
 template <bool IsAudio>
@@ -1489,7 +1507,7 @@ void handle_n_query(received_message const & msg, nova_endpoint const & endpoint
         fill_notification(node, p);
 
         movable_array<char> message(p.Size(), p.Data());
-        cmd_dispatcher<true>::fire_system_callback(boost::bind(send_udp_message, message, endpoint));
+        cmd_dispatcher<true>::fire_system_callback(std::bind(send_udp_message, message, endpoint));
     }
 }
 
@@ -1653,7 +1671,7 @@ void handle_s_get(received_message const & msg, size_t msg_size, nova_endpoint c
     p << osc::EndMessage;
 
     movable_array<char> message(p.Size(), return_message.c_array());
-    cmd_dispatcher<realtime>::fire_io_callback(boost::bind(send_udp_message, message, endpoint));
+    cmd_dispatcher<realtime>::fire_io_callback(std::bind(send_udp_message, message, endpoint));
 }
 
 template <bool realtime>
@@ -1709,7 +1727,7 @@ void handle_s_getn(received_message const & msg, size_t msg_size, nova_endpoint
     p << osc::EndMessage;
 
     movable_array<char> message(p.Size(), return_message.c_array());
-    cmd_dispatcher<realtime>::fire_io_callback(boost::bind(send_udp_message, message, endpoint));
+    cmd_dispatcher<realtime>::fire_io_callback(std::bind(send_udp_message, message, endpoint));
 }
 
 
@@ -1814,7 +1832,7 @@ void b_alloc_1_nrt(uint32_t index, uint32_t frames, uint32_t channels, completio
     sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(index));
     sample * free_buf = sc_factory->get_nrt_mirror_buffer(index);
     sc_factory->allocate_buffer(index, frames, channels);
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(b_alloc_2_rt<realtime>, index, msg, free_buf, endpoint));
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_alloc_2_rt<realtime>, index, msg, free_buf, endpoint));
 }
 
 template <bool realtime>
@@ -1822,7 +1840,7 @@ void b_alloc_2_rt(uint32_t index, completion_message & msg, sample * free_buf, n
 {
     sc_factory->buffer_sync(index);
     msg.handle(endpoint);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_alloc_3_nrt, index, free_buf, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_alloc_3_nrt, index, free_buf, endpoint));
 }
 
 void b_alloc_3_nrt(uint32_t index, sample * free_buf, nova_endpoint const & endpoint)
@@ -1847,7 +1865,7 @@ void handle_b_alloc(received_message const & msg, nova_endpoint const & endpoint
 
     completion_message message = extract_completion_message(args);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_alloc_1_nrt<realtime>, index, frames,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_alloc_1_nrt<realtime>, index, frames,
                                                            channels, message, endpoint));
 }
 
@@ -1863,7 +1881,7 @@ void b_free_1_nrt(uint32_t index, completion_message & msg, nova_endpoint const
     sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(index));
     sample * free_buf = sc_factory->get_nrt_mirror_buffer(index);
     sc_factory->free_buffer(index);
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(b_free_2_rt<realtime>,
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_free_2_rt<realtime>,
                                                            index, free_buf, msg, endpoint));
 }
 
@@ -1871,7 +1889,7 @@ template <bool realtime>
 void b_free_2_rt(uint32_t index, sample * free_buf, completion_message & msg, nova_endpoint const & endpoint)
 {
     sc_factory->buffer_sync(index);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_free_3_nrt, index, free_buf, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_free_3_nrt, index, free_buf, endpoint));
     msg.handle(endpoint);
 }
 
@@ -1892,7 +1910,7 @@ void handle_b_free(received_message const & msg, nova_endpoint const & endpoint)
 
     completion_message message = extract_completion_message(args);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_free_1_nrt<realtime>, index, message, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_free_1_nrt<realtime>, index, message, endpoint));
 }
 
 template <bool realtime>
@@ -1907,7 +1925,7 @@ void b_allocRead_1_nrt(uint32_t index, movable_string & filename, uint32_t start
     sample * free_buf = sc_factory->get_nrt_mirror_buffer(index);
     int error = sc_factory->buffer_read_alloc(index, filename.c_str(), start, frames);
     if (!error)
-        cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(b_allocRead_2_rt<realtime>, index, msg, free_buf, endpoint));
+        cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_allocRead_2_rt<realtime>, index, msg, free_buf, endpoint));
     else
         /* post nice error message */;
 }
@@ -1918,7 +1936,7 @@ void b_allocRead_2_rt(uint32_t index, completion_message & msg, sample * free_bu
 {
     sc_factory->buffer_sync(index);
     msg.handle(endpoint);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_allocRead_3_nrt, index, free_buf, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_allocRead_3_nrt, index, free_buf, endpoint));
 }
 
 void b_allocRead_3_nrt(uint32_t index, sample * free_buf, nova_endpoint const & endpoint)
@@ -1949,7 +1967,7 @@ void handle_b_allocRead(received_message const & msg, nova_endpoint const & endp
     completion_message message = extract_completion_message(args);
 
     movable_string fname(filename);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_allocRead_1_nrt<realtime>, index,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_allocRead_1_nrt<realtime>, index,
                                                                fname, start, frames, message, endpoint));
 }
 
@@ -1968,7 +1986,7 @@ void b_allocReadChannel_1_nrt(uint32_t index, movable_string const & filename, u
     int error = sc_factory->buffer_alloc_read_channels(index, filename.c_str(), start, frames,
                                                         channels.size(), channels.data());
     if (!error)
-        cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(b_allocReadChannel_2_rt<realtime>,
+        cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_allocReadChannel_2_rt<realtime>,
                                                                index, msg, free_buf, endpoint));
 }
 
@@ -1978,7 +1996,7 @@ void b_allocReadChannel_2_rt(uint32_t index, completion_message & msg, sample *
 {
     sc_factory->buffer_sync(index);
     msg.handle(endpoint);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_allocReadChannel_3_nrt,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_allocReadChannel_3_nrt,
                                                                index, free_buf, endpoint));
 }
 
@@ -2005,7 +2023,7 @@ void handle_b_allocReadChannel(received_message const & msg, nova_endpoint const
     size_t channel_count = 0;
     sized_array<uint, rt_pool_allocator<uint> > channels(channel_args);
 
-    for (uint i = 0; i != channel_args - 1; ++i) // sclang fromats the last completion message as int, so we skip the last element
+    for (uint i = 0; i != channel_args - 1; ++i) // sclang formats the last completion message as int, so we skip the last element
     {
         if (arg->IsInt32()) {
             channels[i] = arg->AsInt32Unchecked(); arg++;
@@ -2019,7 +2037,7 @@ void handle_b_allocReadChannel(received_message const & msg, nova_endpoint const
     movable_array<uint32_t> channel_mapping(channel_count, channels.c_array());
     movable_string fname(filename);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_allocReadChannel_1_nrt<realtime>,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_allocReadChannel_1_nrt<realtime>,
                                                            index, fname, start, frames, channel_mapping,
                                                            message, endpoint));
 }
@@ -2093,7 +2111,7 @@ fire_callback:
     movable_string header_f(header_format);
     movable_string sample_f(sample_format);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_write_nrt_1<realtime>, index, fname, header_f, sample_f,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_write_nrt_1<realtime>, index, fname, header_f, sample_f,
                                                start, frames, bool(leave_open), message, endpoint));
 }
 
@@ -2106,7 +2124,7 @@ void b_read_nrt_1(uint32_t index, movable_string & filename, uint32_t start_file
 {
     sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(index));
     sc_factory->buffer_read(index, filename.c_str(), start_file, frames, start_buffer, leave_open);
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(b_read_rt_2<realtime>, index, msg, endpoint));
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_read_rt_2<realtime>, index, msg, endpoint));
 }
 
 const char * b_read = "/b_read";
@@ -2179,7 +2197,7 @@ void handle_b_read(received_message const & msg, nova_endpoint const & endpoint)
 fire_callback:
     movable_string fname(filename);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_read_nrt_1<realtime>, index, fname,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_read_nrt_1<realtime>, index, fname,
                                                                start_file, frames, start_buffer,
                                                                bool(leave_open), message, endpoint));
 }
@@ -2195,7 +2213,7 @@ void b_readChannel_nrt_1(uint32_t index, movable_string & filename, uint32_t sta
 {
     sc_factory->buffer_read_channel(index, filename.c_str(), start_file, frames, start_buffer, leave_open,
                                      channel_map.size(), channel_map.data());
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_readChannel_rt_2<realtime>, index, msg, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_readChannel_rt_2<realtime>, index, msg, endpoint));
 }
 
 const char * b_readChannel = "/b_readChannel";
@@ -2283,7 +2301,7 @@ fire_callback:
     movable_string fname(filename);
     movable_array<uint32_t> channel_map(channel_count, channel_mapping.c_array());
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_readChannel_nrt_1<realtime>, index, fname,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_readChannel_nrt_1<realtime>, index, fname,
                                                            start_file, frames, start_buffer,
                                                            bool(leave_open), channel_map, message, endpoint));
 }
@@ -2296,7 +2314,7 @@ template <bool realtime>
 void b_zero_nrt_1(uint32_t index, completion_message & msg, nova_endpoint const & endpoint)
 {
     sc_factory->buffer_zero(index);
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(b_zero_rt_2<realtime>, index, msg, endpoint));
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_zero_rt_2<realtime>, index, msg, endpoint));
 }
 
 const char * b_zero = "/b_zero";
@@ -2317,7 +2335,7 @@ void handle_b_zero(received_message const & msg, nova_endpoint const & endpoint)
     args >> index;
     completion_message message = extract_completion_message(args);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_zero_nrt_1<realtime>, index, message, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_zero_nrt_1<realtime>, index, message, endpoint));
 }
 
 void handle_b_set(received_message const & msg)
@@ -2410,7 +2428,7 @@ void handle_b_query(received_message const & msg, nova_endpoint const & endpoint
 
     movable_array<char> message(p.Size(), data.c_array());
 
-    cmd_dispatcher<realtime>::fire_io_callback(boost::bind(send_udp_message, message, endpoint));
+    cmd_dispatcher<realtime>::fire_io_callback(std::bind(send_udp_message, message, endpoint));
 }
 
 template <bool realtime>
@@ -2420,7 +2438,7 @@ template <bool realtime>
 void b_close_nrt_1(uint32_t index, completion_message & msg, nova_endpoint const & endpoint)
 {
     sc_factory->buffer_close(index);
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(b_close_rt_2<realtime>, msg, endpoint));
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_close_rt_2<realtime>, msg, endpoint));
 }
 
 template <bool realtime>
@@ -2436,7 +2454,7 @@ void handle_b_close(received_message const & msg, nova_endpoint const & endpoint
     args >> index;
 
     completion_message message = extract_completion_message(args);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_close_nrt_1<realtime>, index, message, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_close_nrt_1<realtime>, index, message, endpoint));
 }
 
 template <bool realtime>
@@ -2475,7 +2493,7 @@ void handle_b_get(received_message const & msg, nova_endpoint const & endpoint)
     p << osc::EndMessage;
 
     movable_array<char> message(p.Size(), return_message.c_array());
-    cmd_dispatcher<realtime>::fire_io_callback(boost::bind(send_udp_message, message, endpoint));
+    cmd_dispatcher<realtime>::fire_io_callback(std::bind(send_udp_message, message, endpoint));
 }
 
 template<typename Alloc>
@@ -2538,7 +2556,7 @@ void handle_b_getn(received_message const & msg, nova_endpoint const & endpoint)
     p << osc::EndMessage;
 
     movable_array<char> message(p.Size(), return_message.c_array());
-    cmd_dispatcher<realtime>::fire_io_callback(boost::bind(send_udp_message, message, endpoint));
+    cmd_dispatcher<realtime>::fire_io_callback(std::bind(send_udp_message, message, endpoint));
 }
 
 
@@ -2571,14 +2589,14 @@ void b_gen_nrt_1(movable_array<char> & message, nova_endpoint const & endpoint)
     }
 
     sample * free_buf = sc_factory->buffer_generate(index, generator, msg);
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(b_gen_rt_2<realtime>, index, free_buf, endpoint));
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_gen_rt_2<realtime>, index, free_buf, endpoint));
 }
 
 template <bool realtime>
 void b_gen_rt_2(uint32_t index, sample * free_buf, nova_endpoint const & endpoint)
 {
     sc_factory->buffer_sync(index);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_gen_nrt_3, index, free_buf, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_gen_nrt_3, index, free_buf, endpoint));
 }
 
 void b_gen_nrt_3(uint32_t index, sample * free_buf, nova_endpoint const & endpoint)
@@ -2591,7 +2609,7 @@ template <bool realtime>
 void handle_b_gen(received_message const & msg, size_t msg_size, nova_endpoint const & endpoint)
 {
     movable_array<char> cmd (msg_size, msg.AddressPattern());
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(b_gen_nrt_1<realtime>, cmd, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_gen_nrt_1<realtime>, cmd, endpoint));
 }
 
 
@@ -2661,7 +2679,7 @@ void handle_c_get(received_message const & msg,
     p << osc::EndMessage;
 
     movable_array<char> message(p.Size(), return_message.c_array());
-    cmd_dispatcher<realtime>::fire_io_callback(boost::bind(send_udp_message, message, endpoint));
+    cmd_dispatcher<realtime>::fire_io_callback(std::bind(send_udp_message, message, endpoint));
 }
 
 template <bool realtime>
@@ -2693,66 +2711,63 @@ void handle_c_getn(received_message const & msg, nova_endpoint const & endpoint)
     p << osc::EndMessage;
 
     movable_array<char> message(p.Size(), return_message.c_array());
-    cmd_dispatcher<realtime>::fire_io_callback(boost::bind(send_udp_message, message, endpoint));
+    cmd_dispatcher<realtime>::fire_io_callback(std::bind(send_udp_message, message, endpoint));
 }
 
 #ifdef BOOST_HAS_RVALUE_REFS
-std::pair<sc_synth_prototype_ptr *, size_t> wrap_synthdefs(std::vector<sc_synthdef> && defs)
+std::pair<sc_synth_definition_ptr *, size_t> wrap_synthdefs(std::vector<sc_synthdef> && defs)
 {
     std::vector<sc_synthdef> synthdefs(std::move(defs));
     size_t count = synthdefs.size();
-    sc_synth_prototype_ptr * prototypes = new sc_synth_prototype_ptr [count];
+    sc_synth_definition_ptr * definitions = new sc_synth_definition_ptr [count];
 
     for (size_t i = 0; i != count; ++i)
-        prototypes[i].reset(new sc_synth_prototype(std::move(synthdefs[i])));
-    return std::make_pair(prototypes, count);
+        definitions[i].reset(new sc_synth_definition(std::move(synthdefs[i])));
+    return std::make_pair(definitions, count);
 }
 #endif
-std::pair<sc_synth_prototype_ptr *, size_t> wrap_synthdefs(std::vector<sc_synthdef> const & defs)
+std::pair<sc_synth_definition_ptr *, size_t> wrap_synthdefs(std::vector<sc_synthdef> const & defs)
 {
     size_t count = defs.size();
-    sc_synth_prototype_ptr * prototypes = new sc_synth_prototype_ptr [count];
+    sc_synth_definition_ptr * definitions = new sc_synth_definition_ptr [count];
 
     for (size_t i = 0; i != count; ++i)
-        prototypes[i].reset(new sc_synth_prototype(defs[i]));
-    return std::make_pair(prototypes, count);
+        definitions[i].reset(new sc_synth_definition(defs[i]));
+    return std::make_pair(definitions, count);
 }
 
 template <bool realtime>
-void d_recv_rt2(sc_synth_prototype_ptr * prototypes, size_t prototype_count, completion_message & msg,
+void d_recv_rt2(sc_synth_definition_ptr * definitions, size_t definition_count, completion_message & msg,
                 nova_endpoint const & endpoint);
-void d_recv_nrt3(sc_synth_prototype_ptr * prototypes, nova_endpoint const & endpoint);
+void d_recv_nrt3(sc_synth_definition_ptr * definitions, nova_endpoint const & endpoint);
 
 template <bool realtime>
 void d_recv_nrt(movable_array<char> & def, completion_message & msg, nova_endpoint const & endpoint)
 {
     size_t count;
-    sc_synth_prototype_ptr * prototypes;
+    sc_synth_definition_ptr * definitions;
     std::vector<sc_synthdef> synthdefs (read_synthdefs(def.data()));
 
-#ifdef BOOST_HAS_RVALUE_REFS
-    boost::tie(prototypes, count) = wrap_synthdefs(std::move(synthdefs));
-#else
-    boost::tie(prototypes, count) = wrap_synthdefs(synthdefs);
-#endif
+    boost::tie(definitions, count) = wrap_synthdefs(std::move(synthdefs));
 
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(d_recv_rt2<realtime>, prototypes, count, msg, endpoint));
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(d_recv_rt2<realtime>, definitions, count, msg, endpoint));
 }
 
 template <bool realtime>
-void d_recv_rt2(sc_synth_prototype_ptr * prototypes, size_t prototype_count, completion_message & msg,
+void d_recv_rt2(sc_synth_definition_ptr * definitions, size_t definition_count, completion_message & msg,
                 nova_endpoint const & endpoint)
 {
-    std::for_each(prototypes, prototypes + prototype_count,
-                  boost::bind(&synth_factory::register_prototype, instance, _1));
+    std::for_each(definitions, definitions + definition_count, [](sc_synth_definition_ptr const & definition) {
+        instance->register_definition(definition);
+    });
 
     msg.handle(endpoint);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(d_recv_nrt3, prototypes, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(d_recv_nrt3, definitions, endpoint));
 }
 
-void d_recv_nrt3(sc_synth_prototype_ptr * prototypes, nova_endpoint const & endpoint)
+void d_recv_nrt3(sc_synth_definition_ptr * definitions, nova_endpoint const & endpoint)
 {
-    delete[] prototypes;
+    delete[] definitions;
     send_done_message(endpoint, "/d_recv");
 }
 
@@ -2769,39 +2784,40 @@ void handle_d_recv(received_message const & msg,
     movable_array<char> def(synthdef_size, (const char*)synthdef_data);
     completion_message message = extract_completion_message(args);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(d_recv_nrt<realtime>, def, message, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(d_recv_nrt<realtime>, def, message, endpoint));
 }
 
 template <bool realtime>
-void d_load_rt2(sc_synth_prototype_ptr * prototypes, size_t prototype_count, completion_message & msg,
+void d_load_rt2(sc_synth_definition_ptr * definitions, size_t definition_count, completion_message & msg,
                 nova_endpoint const & endpoint);
-void d_load_nrt3(sc_synth_prototype_ptr * prototypes, nova_endpoint const & endpoint);
+void d_load_nrt3(sc_synth_definition_ptr * definitions, nova_endpoint const & endpoint);
 
 template <bool realtime>
 void d_load_nrt(movable_string & path, completion_message & msg, nova_endpoint const & endpoint)
 {
     size_t count;
-    sc_synth_prototype_ptr * prototypes;
+    sc_synth_definition_ptr * definitions;
     /* todo: we need to implment some file name pattern matching */
-    boost::tie(prototypes, count) = wrap_synthdefs(sc_read_synthdefs_file(path.c_str()));
+    boost::tie(definitions, count) = wrap_synthdefs(sc_read_synthdefs_file(path.c_str()));
 
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(d_load_rt2<realtime>, prototypes, count, msg, endpoint));
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(d_load_rt2<realtime>, definitions, count, msg, endpoint));
 }
 
 template <bool realtime>
-void d_load_rt2(sc_synth_prototype_ptr * prototypes, size_t prototype_count, completion_message & msg,
+void d_load_rt2(sc_synth_definition_ptr * definitions, size_t definition_count, completion_message & msg,
                 nova_endpoint const & endpoint)
 {
-    std::for_each(prototypes, prototypes + prototype_count,
-                  boost::bind(&synth_factory::register_prototype, instance, _1));
+    std::for_each(definitions, definitions + definition_count, [](sc_synth_definition_ptr const & definition) {
+        instance->register_definition(definition);
+    });
 
     msg.handle(endpoint);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(d_load_nrt3, prototypes, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(d_load_nrt3, definitions, endpoint));
 }
 
-void d_load_nrt3(sc_synth_prototype_ptr * prototypes, nova_endpoint const & endpoint)
+void d_load_nrt3(sc_synth_definition_ptr * definitions, nova_endpoint const & endpoint)
 {
-    delete[] prototypes;
+    delete[] definitions;
     send_done_message(endpoint, "/d_load");
 }
 
@@ -2814,40 +2830,41 @@ void handle_d_load(received_message const & msg,
     const char * path = args->AsString(); args++;
     completion_message message = extract_completion_message(args);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(d_load_nrt<realtime>, movable_string(path),
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(d_load_nrt<realtime>, movable_string(path),
                                                                message, endpoint));
 }
 
 
 template <bool realtime>
-void d_loadDir_rt2(sc_synth_prototype_ptr * prototypes, size_t prototype_count, completion_message & msg,
+void d_loadDir_rt2(sc_synth_definition_ptr * definitions, size_t definition_count, completion_message & msg,
                    nova_endpoint const & endpoint);
-void d_loadDir_nrt3(sc_synth_prototype_ptr * prototypes, nova_endpoint const & endpoint);
+void d_loadDir_nrt3(sc_synth_definition_ptr * definitions, nova_endpoint const & endpoint);
 
 template <bool realtime>
 void d_loadDir_nrt1(movable_string & path, completion_message & msg, nova_endpoint const & endpoint)
 {
     size_t count;
-    sc_synth_prototype_ptr * prototypes;
-    boost::tie(prototypes, count) = wrap_synthdefs(sc_read_synthdefs_dir(path.c_str()));
+    sc_synth_definition_ptr * definitions;
+    boost::tie(definitions, count) = wrap_synthdefs(sc_read_synthdefs_dir(path.c_str()));
 
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(d_loadDir_rt2<realtime>, prototypes, count, msg, endpoint));
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(d_loadDir_rt2<realtime>, definitions, count, msg, endpoint));
 }
 
 template <bool realtime>
-void d_loadDir_rt2(sc_synth_prototype_ptr * prototypes, size_t prototype_count, completion_message & msg,
+void d_loadDir_rt2(sc_synth_definition_ptr * definitions, size_t definition_count, completion_message & msg,
                    nova_endpoint const & endpoint)
 {
-    std::for_each(prototypes, prototypes + prototype_count,
-                  boost::bind(&synth_factory::register_prototype, instance, _1));
+    std::for_each(definitions, definitions + definition_count, [](sc_synth_definition_ptr const & definition) {
+        instance->register_definition(definition);
+    });
 
     msg.handle(endpoint);
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(d_loadDir_nrt3, prototypes, endpoint));
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(d_loadDir_nrt3, definitions, endpoint));
 }
 
-void d_loadDir_nrt3(sc_synth_prototype_ptr * prototypes, nova_endpoint const & endpoint)
+void d_loadDir_nrt3(sc_synth_definition_ptr * definitions, nova_endpoint const & endpoint)
 {
-    delete[] prototypes;
+    delete[] definitions;
     send_done_message(endpoint, "/d_loadDir");
 }
 
@@ -2861,7 +2878,7 @@ void handle_d_loadDir(received_message const & msg,
     args >> path;
     completion_message message = extract_completion_message(args);
 
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(d_loadDir_nrt1<realtime>,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(d_loadDir_nrt1<realtime>,
                                                                movable_string(path), message, endpoint));
 }
 
@@ -2875,7 +2892,7 @@ void handle_d_free(received_message const & msg)
         const char * defname;
         args >> defname;
 
-        instance->remove_prototype(defname);
+        instance->remove_definition(defname);
     }
 }
 
@@ -3602,7 +3619,7 @@ void handle_asynchronous_plugin_stage4(World * world, const char * cmdName, void
     if (stage4)
         (stage4)(world, cmdData);
 
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(handle_asynchronous_plugin_cleanup<realtime>, world, cmdData,
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(handle_asynchronous_plugin_cleanup<realtime>, world, cmdData,
                                                            cleanup));
 
     send_done_message(endpoint, cmdName);
@@ -3617,7 +3634,7 @@ void handle_asynchronous_plugin_stage3(World * world, const char * cmdName, void
         if (success)
             msg.handle(endpoint);
     }
-    cmd_dispatcher<realtime>::fire_system_callback(boost::bind(handle_asynchronous_plugin_stage4<realtime>, world, cmdName,
+    cmd_dispatcher<realtime>::fire_system_callback(std::bind(handle_asynchronous_plugin_stage4<realtime>, world, cmdName,
                                                                cmdData, stage4, cleanup, msg, endpoint));
 }
 
@@ -3629,7 +3646,7 @@ void handle_asynchronous_plugin_stage2(World * world, const char * cmdName, void
     if (stage2)
         (stage2)(world, cmdData);
 
-    cmd_dispatcher<realtime>::fire_rt_callback(boost::bind(handle_asynchronous_plugin_stage3<realtime>, world, cmdName,
+    cmd_dispatcher<realtime>::fire_rt_callback(std::bind(handle_asynchronous_plugin_stage3<realtime>, world, cmdName,
                                                            cmdData, stage3, stage4,
                                                            cleanup, msg, endpoint));
 }
@@ -3643,10 +3660,10 @@ void sc_osc_handler::do_asynchronous_command(World * world, void* replyAddr, con
                                        : nova_endpoint();
 
     if (world->mRealTime)
-        cmd_dispatcher<true>::fire_system_callback(boost::bind(handle_asynchronous_plugin_stage2<true>, world, cmdName,
+        cmd_dispatcher<true>::fire_system_callback(std::bind(handle_asynchronous_plugin_stage2<true>, world, cmdName,
                                                                cmdData, stage2, stage3, stage4, cleanup, msg, endpoint));
     else
-        cmd_dispatcher<false>::fire_system_callback(boost::bind(handle_asynchronous_plugin_stage2<false>, world, cmdName,
+        cmd_dispatcher<false>::fire_system_callback(std::bind(handle_asynchronous_plugin_stage2<false>, world, cmdName,
                                                                 cmdData, stage2, stage3, stage4, cleanup, msg, endpoint));
 }
 
diff --git a/server/supernova/sc/sc_osc_handler.hpp b/server/supernova/sc/sc_osc_handler.hpp
index 90b5f98..6f6d57d 100644
--- a/server/supernova/sc/sc_osc_handler.hpp
+++ b/server/supernova/sc/sc_osc_handler.hpp
@@ -19,8 +19,9 @@
 #ifndef SERVER_SC_OSC_HANDLER_HPP
 #define SERVER_SC_OSC_HANDLER_HPP
 
-#include <vector>
 #include <algorithm>
+#include <mutex>
+#include <vector>
 
 #include <boost/enable_shared_from_this.hpp>
 #include <boost/date_time/microsec_time_clock.hpp>
@@ -37,13 +38,13 @@
 #include "../utilities/static_pool.hpp"
 #include "../utilities/time_tag.hpp"
 
-namespace nova
-{
+namespace nova {
+
 typedef bool (*AsyncStageFn)(World *inWorld, void* cmdData);
 typedef void (*AsyncFreeFn)(World *inWorld, void* cmdData);
 
-namespace detail
-{
+namespace detail {
+
 using namespace boost::asio;
 using namespace boost::asio::ip;
 
@@ -133,13 +134,13 @@ public:
 
     void send_udp(const char * data, unsigned int size, udp::endpoint const & receiver)
     {
-        boost::mutex::scoped_lock lock(udp_mutex);
+        std::lock_guard<std::mutex> lock(udp_mutex);
         sc_notify_observers::udp_socket.send_to(boost::asio::buffer(data, size), receiver);
     }
 
     void send_tcp(const char * data, unsigned int size, tcp::endpoint const & receiver)
     {
-        boost::mutex::scoped_lock lock(tcp_mutex);
+        std::lock_guard<std::mutex> lock(tcp_mutex);
         tcp_socket.connect(receiver);
         boost::asio::write(tcp_socket, boost::asio::buffer(data, size));
     }
@@ -154,7 +155,7 @@ private:
 protected:
     udp::socket udp_socket;
     tcp::socket tcp_socket;
-    boost::mutex udp_mutex, tcp_mutex;
+    std::mutex udp_mutex, tcp_mutex;
 };
 
 class sc_scheduled_bundles
@@ -224,10 +225,12 @@ public:
         tcp_acceptor_(detail::network_thread::io_service_),
         tcp_password_(args.server_password.c_str())
     {
-        if (args.tcp_port && !open_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP, args.tcp_port))
-            throw std::runtime_error("cannot open socket");
-        if (args.udp_port && !open_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP, args.udp_port))
-            throw std::runtime_error("cannot open socket");
+        if (!args.non_rt) {
+            if (args.tcp_port && !open_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP, args.tcp_port))
+                throw std::runtime_error("cannot open socket");
+            if (args.udp_port && !open_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP, args.udp_port))
+                throw std::runtime_error("cannot open socket");
+        }
     }
 
     void start_receive_thread(void)
@@ -285,7 +288,7 @@ private:
         public boost::enable_shared_from_this<tcp_connection>
     {
     public:
-        typedef boost::shared_ptr<tcp_connection> pointer;
+        typedef std::shared_ptr<tcp_connection> pointer;
 
         static pointer create(boost::asio::io_service& io_service)
         {
@@ -319,8 +322,7 @@ private:
     void handle_accept(tcp_connection::pointer new_connection,
                        const boost::system::error_code& error)
     {
-        if (!error)
-        {
+        if (!error) {
             new_connection->start(this);
             start_accept();
         }
@@ -366,7 +368,7 @@ private:
     template <bool realtime>
     void handle_message_sym_address(received_message const & message, size_t msg_size, nova_endpoint const & endpoint);
 
-    friend class sc_scheduled_bundles::bundle_node;
+    friend struct sc_scheduled_bundles::bundle_node;
     /* @} */
 
     /* @{ */
@@ -419,7 +421,7 @@ private:
     tcp::acceptor tcp_acceptor_;
     const char * tcp_password_; /* we are not owning this! */
 
-    boost::array<char, 1<<15 > recv_buffer_;
+    std::array<char, 1<<15 > recv_buffer_;
 
     std::vector<char> overflow_vector;
     /* @} */
diff --git a/server/supernova/sc/sc_plugin_interface.cpp b/server/supernova/sc/sc_plugin_interface.cpp
index a0e61c6..1e8c4a2 100644
--- a/server/supernova/sc/sc_plugin_interface.cpp
+++ b/server/supernova/sc/sc_plugin_interface.cpp
@@ -38,6 +38,9 @@
 #include "SC_Unit.h"
 #include "clz.h"
 #include "SC_fftlib.h"
+#include "../../common/SC_SndFileHelpers.hpp"
+
+#include <boost/math/constants/constants.hpp>
 
 // undefine the shadowed scfft functions
 #undef scfft_create
@@ -562,7 +565,7 @@ int do_asynchronous_command(World *inWorld, void* replyAddr, const char* cmdName
                                             stage2, stage3, stage4, cleanup,
                                             completionMsgSize, completionMsgData);
     return 0;
-};
+}
 
 } /* extern "C" */
 
@@ -574,7 +577,7 @@ inline void initialize_rate(Rate & rate, double sample_rate, int blocksize)
 {
     rate.mSampleRate = sample_rate;
     rate.mSampleDur = 1. / sample_rate;
-    rate.mRadiansPerSample = 2 * M_PI / sample_rate;
+    rate.mRadiansPerSample = 2 * boost::math::constants::pi<double>() / sample_rate;
 
     rate.mBufLength = blocksize;
     rate.mBufDuration = blocksize / sample_rate;
@@ -612,6 +615,13 @@ void sc_plugin_interface::initialize(server_arguments const & args, float * cont
     sc_interface.fPrint = &print;
     sc_interface.fDoneAction = &done_action;
 
+    /* sndfile functions */
+#ifdef NO_LIBSNDFILE
+    sc_interface.fSndFileFormatInfoFromStrings = NULL;
+#else
+    sc_interface.fSndFileFormatInfoFromStrings = &sndfileFormatInfoFromStrings;
+#endif
+
     /* wave tables */
     sc_interface.mSine = gSine;
     sc_interface.mCosecant = gInvSine;
@@ -683,7 +693,7 @@ void sc_plugin_interface::initialize(server_arguments const & args, float * cont
     memset(world.mSndBufUpdates, 0, world.mNumSndBufs*sizeof(SndBufUpdates));
     world.mBufCounter = 0;
 
-    async_buffer_guards.reset(new boost::mutex[world.mNumSndBufs]);
+    async_buffer_guards.reset(new std::mutex[world.mNumSndBufs]);
 
     /* audio settings */
     world.mBufLength = args.blocksize;
@@ -696,6 +706,27 @@ void sc_plugin_interface::initialize(server_arguments const & args, float * cont
     world.mNumOutputs = args.output_channels;
 
     world.mRealTime = !args.non_rt;
+
+    /* rngs */
+    world.mNumRGens = args.rng_count;
+    world.mRGen = new RGen[world.mNumRGens];
+    std::vector<std::uint32_t> seeds(world.mNumRGens);
+
+    try {
+        std::random_device rd;
+        std::seed_seq seq({ rd(), rd(), rd() });
+        seq.generate(seeds.begin(), seeds.end());
+    } catch (...) {
+        auto now = std::chrono::high_resolution_clock::now();
+
+        auto seconds = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch());
+
+        std::seed_seq seq({ seconds.count() });
+        seq.generate(seeds.begin(), seeds.end());
+    }
+
+    for (int i=0; i<world.mNumRGens; ++i)
+        world.mRGen[i].init(seeds[i]);
 }
 
 void sc_plugin_interface::reset_sampling_rate(int sr)
@@ -709,19 +740,24 @@ void sc_plugin_interface::reset_sampling_rate(int sr)
 
 void sc_done_action_handler::update_nodegraph(void)
 {
-    std::for_each(done_nodes.begin(), done_nodes.end(), boost::bind(&nova_server::free_node, instance, _1));
+    for (server_node * node : done_nodes)
+        instance->free_node(node);
     done_nodes.clear();
 
-    std::for_each(resume_nodes.begin(), resume_nodes.end(), boost::bind(&nova_server::node_resume, instance, _1));
+    for (server_node * node : resume_nodes)
+        instance->node_resume(node);
     resume_nodes.clear();
 
-    std::for_each(pause_nodes.begin(), pause_nodes.end(), boost::bind(&nova_server::node_pause, instance, _1));
+    for (server_node * node : pause_nodes)
+        instance->node_pause(node);
     pause_nodes.clear();
 
-    std::for_each(freeDeep_nodes.begin(), freeDeep_nodes.end(), boost::bind(&nova_server::group_free_deep, instance, _1));
+    for (abstract_group * group : freeDeep_nodes)
+        instance->group_free_deep(group);
     freeDeep_nodes.clear();
 
-    std::for_each(freeAll_nodes.begin(), freeAll_nodes.end(), boost::bind(&nova_server::group_free_all, instance, _1));
+    for (abstract_group * group : freeAll_nodes)
+        instance->group_free_all(group);
     freeAll_nodes.clear();
 }
 
@@ -733,11 +769,11 @@ sc_plugin_interface::~sc_plugin_interface(void)
     delete[] world.mSndBufs;
     delete[] world.mSndBufsNonRealTimeMirror;
     delete[] world.mSndBufUpdates;
+    delete[] world.mRGen;
     delete world.mNRTLock;
 }
 
-namespace
-{
+namespace {
 
 sample * allocate_buffer(size_t samples)
 {
@@ -914,71 +950,6 @@ int sc_plugin_interface::buffer_alloc_read_channels(uint32_t index, const char *
     return 0;
 }
 
-/* directly taken from supercollider sources
-   Copyright (c) 2002 James McCartney. All rights reserved.
-*/
-int sampleFormatFromString(const char* name)
-{
-    if (!name) return SF_FORMAT_PCM_16;
-
-    size_t len = strlen(name);
-    if (len < 1) return 0;
-
-    if (name[0] == 'u') {
-        if (len < 5) return 0;
-        if (name[4] == '8') return SF_FORMAT_PCM_U8; // uint8
-            return 0;
-    } else if (name[0] == 'i') {
-        if (len < 4) return 0;
-        if (name[3] == '8') return SF_FORMAT_PCM_S8;      // int8
-            else if (name[3] == '1') return SF_FORMAT_PCM_16; // int16
-                else if (name[3] == '2') return SF_FORMAT_PCM_24; // int24
-                    else if (name[3] == '3') return SF_FORMAT_PCM_32; // int32
-    } else if (name[0] == 'f') {
-        return SF_FORMAT_FLOAT; // float
-    } else if (name[0] == 'd') {
-        return SF_FORMAT_DOUBLE; // double
-    } else if (name[0] == 'm' || name[0] == 'u') {
-        return SF_FORMAT_ULAW; // mulaw ulaw
-    } else if (name[0] == 'a') {
-        return SF_FORMAT_ALAW; // alaw
-    }
-    return 0;
-}
-
-int headerFormatFromString(const char *name)
-{
-    if (!name) return SF_FORMAT_AIFF;
-    if (strcasecmp(name, "AIFF")==0) return SF_FORMAT_AIFF;
-    if (strcasecmp(name, "AIFC")==0) return SF_FORMAT_AIFF;
-    if (strcasecmp(name, "RIFF")==0) return SF_FORMAT_WAV;
-    if (strcasecmp(name, "WAVEX")==0) return SF_FORMAT_WAVEX;
-    if (strcasecmp(name, "WAVE")==0) return SF_FORMAT_WAV;
-    if (strcasecmp(name, "WAV" )==0) return SF_FORMAT_WAV;
-    if (strcasecmp(name, "Sun" )==0) return SF_FORMAT_AU;
-    if (strcasecmp(name, "IRCAM")==0) return SF_FORMAT_IRCAM;
-    if (strcasecmp(name, "NeXT")==0) return SF_FORMAT_AU;
-    if (strcasecmp(name, "raw")==0) return SF_FORMAT_RAW;
-    if (strcasecmp(name, "MAT4")==0) return SF_FORMAT_MAT4;
-    if (strcasecmp(name, "MAT5")==0) return SF_FORMAT_MAT5;
-    if (strcasecmp(name, "PAF")==0) return SF_FORMAT_PAF;
-    if (strcasecmp(name, "SVX")==0) return SF_FORMAT_SVX;
-    if (strcasecmp(name, "NIST")==0) return SF_FORMAT_NIST;
-    if (strcasecmp(name, "VOC")==0) return SF_FORMAT_VOC;
-    if (strcasecmp(name, "W64")==0) return SF_FORMAT_W64;
-    if (strcasecmp(name, "PVF")==0) return SF_FORMAT_PVF;
-    if (strcasecmp(name, "XI")==0) return SF_FORMAT_XI;
-    if (strcasecmp(name, "HTK")==0) return SF_FORMAT_HTK;
-    if (strcasecmp(name, "SDS")==0) return SF_FORMAT_SDS;
-    if (strcasecmp(name, "AVR")==0) return SF_FORMAT_AVR;
-    if (strcasecmp(name, "SD2")==0) return SF_FORMAT_SD2;
-    if (strcasecmp(name, "FLAC")==0) return SF_FORMAT_FLAC;
-    if (strcasecmp(name, "vorbis")==0) return SF_FORMAT_VORBIS;
-    if (strcasecmp(name, "CAF")==0) return SF_FORMAT_CAF;
-    if (strcasecmp(name, "RF64")==0) return SF_FORMAT_RF64;
-    return 0;
-}
-
 
 int sc_plugin_interface::buffer_write(uint32_t index, const char * filename, const char * header_format, const char * sample_format,
                                       uint32_t start, uint32_t frames, bool leave_open)
diff --git a/server/supernova/sc/sc_plugin_interface.hpp b/server/supernova/sc/sc_plugin_interface.hpp
index c14094d..7f6e975 100644
--- a/server/supernova/sc/sc_plugin_interface.hpp
+++ b/server/supernova/sc/sc_plugin_interface.hpp
@@ -19,6 +19,7 @@
 #ifndef SC_PLUGIN_INTERFACE_HPP
 #define SC_PLUGIN_INTERFACE_HPP
 
+#include <mutex>
 #include <vector>
 
 #include "../server/audio_bus_manager.hpp"
@@ -30,14 +31,10 @@
 #include "SC_World.h"
 
 #include <boost/scoped_array.hpp>
-#include <boost/thread/mutex.hpp>
 
-namespace nova
-{
-
-int headerFormatFromString(const char *name);
-int sampleFormatFromString(const char* name);
+#include "../../common/SC_SndFileHelpers.hpp"
 
+namespace nova {
 
 class sc_done_action_handler
 {
@@ -150,15 +147,15 @@ public:
 
     void free_buffer(uint32_t index);
 
-    typedef boost::mutex::scoped_lock buffer_lock_t;
+    typedef std::lock_guard<std::mutex> buffer_lock_t;
 
-    boost::mutex & buffer_guard(size_t index)
+    std::mutex & buffer_guard(size_t index)
     {
         return async_buffer_guards[index];
     }
 
 private:
-    boost::scoped_array<boost::mutex> async_buffer_guards;
+    boost::scoped_array<std::mutex> async_buffer_guards;
     /* @} */
 
 public:
diff --git a/server/supernova/sc/sc_synth.cpp b/server/supernova/sc/sc_synth.cpp
index a4174d9..a6b9f23 100644
--- a/server/supernova/sc/sc_synth.cpp
+++ b/server/supernova/sc/sc_synth.cpp
@@ -18,16 +18,13 @@
 
 #include <cstdio>
 
-#include <boost/bind.hpp>
-
 #include "sc_synth.hpp"
 #include "sc_ugen_factory.hpp"
 #include "../server/server.hpp"
 
-namespace nova
-{
+namespace nova {
 
-sc_synth::sc_synth(int node_id, sc_synth_prototype_ptr const & prototype):
+sc_synth::sc_synth(int node_id, sc_synth_definition_ptr const & prototype):
     abstract_synth(node_id, prototype), trace(0), unit_buffers(0)
 {
     World const & world = sc_factory->world;
@@ -52,21 +49,23 @@ sc_synth::sc_synth(int node_id, sc_synth_prototype_ptr const & prototype):
     const size_t constants_count = synthdef.constants.size();
 
     /* we allocate one memory chunk */
-    const size_t wire_buffer_alignment = 64; // align to cache line boundaries
+    const size_t wire_buffer_alignment = 64 * 8; // align to cache line boundaries
     const size_t alloc_size = prototype->memory_requirement();
 
     const size_t sample_alloc_size = world.mBufLength * synthdef.buffer_count
         + wire_buffer_alignment /* for alignment */;
 
-    char * chunk = (char*)rt_pool.malloc(alloc_size + sample_alloc_size*sizeof(sample));
-    if (chunk == NULL)
+    char * raw_chunk = (char*)rt_pool.malloc(alloc_size + sample_alloc_size*sizeof(sample));
+    if (raw_chunk == NULL)
         throw std::bad_alloc();
 
+    linear_allocator allocator(raw_chunk);
+
     /* prepare controls */
     mNumControls = parameter_count;
-    mControls = (float*)chunk;     chunk += sizeof(float) * parameter_count;
-    mControlRates = (int*)chunk;   chunk += sizeof(int) * parameter_count;
-    mMapControls = (float**)chunk; chunk += sizeof(float*) * parameter_count;
+    mControls     = allocator.alloc<float>(parameter_count);
+    mControlRates = allocator.alloc<int>(parameter_count);
+    mMapControls  = allocator.alloc<float*>(parameter_count);
 
     /* initialize controls */
     for (size_t i = 0; i != parameter_count; ++i) {
@@ -76,7 +75,7 @@ sc_synth::sc_synth(int node_id, sc_synth_prototype_ptr const & prototype):
     }
 
     /* allocate constant wires */
-    mWire = (Wire*)chunk;          chunk += sizeof(Wire) * constants_count;
+    mWire = allocator.alloc<Wire>(constants_count);
     for (size_t i = 0; i != synthdef.constants.size(); ++i) {
         Wire * wire = mWire + i;
         wire->mFromUnit = 0;
@@ -87,18 +86,18 @@ sc_synth::sc_synth(int node_id, sc_synth_prototype_ptr const & prototype):
 
     unit_count = prototype->unit_count();
     calc_unit_count = prototype->calc_unit_count();
-    units = (Unit**)chunk; chunk += unit_count * sizeof(Unit*);
-    calc_units = (Unit**)chunk; chunk += calc_unit_count * sizeof(Unit*);
-    unit_buffers = (sample*)chunk; chunk += sample_alloc_size*sizeof(sample);
+    units        = allocator.alloc<Unit*>(unit_count);
+    calc_units   = allocator.alloc<Unit*>(calc_unit_count);
+    unit_buffers = allocator.alloc<sample>(sample_alloc_size);
 
     const int alignment_mask = wire_buffer_alignment - 1;
-    unit_buffers = (sample*) ((size_t(unit_buffers) + alignment_mask) & ~alignment_mask);     /* next aligned pointer */
+    unit_buffers = (sample*) ((intptr_t(unit_buffers) + alignment_mask) & ~alignment_mask);     /* next aligned pointer */
 
     /* allocate unit generators */
     sc_factory->allocate_ugens(synthdef.graph.size());
     for (size_t i = 0; i != synthdef.graph.size(); ++i) {
         sc_synthdef::unit_spec_t const & spec = synthdef.graph[i];
-        units[i] = spec.prototype->construct(spec, this, &sc_factory->world, chunk);
+        units[i] = spec.prototype->construct(spec, this, &sc_factory->world, allocator);
     }
 
     for (size_t i = 0; i != synthdef.calc_unit_indices.size(); ++i) {
@@ -106,7 +105,7 @@ sc_synth::sc_synth(int node_id, sc_synth_prototype_ptr const & prototype):
         calc_units[i] = units[index];
     }
 
-    assert((char*)mControls + alloc_size <= chunk); // ensure the memory boundaries
+    assert((char*)mControls + alloc_size <= allocator.alloc<char>()); // ensure the memory boundaries
 }
 
 namespace
@@ -156,6 +155,10 @@ void sc_synth::set_control_array(slot_index_t slot_index, size_t count, sample *
         set(slot_index+i, val[i]);
 }
 
+float sc_synth::get(slot_index_t slot_index) const
+{
+    return mControls[slot_index];
+}
 
 void sc_synth::map_control_bus_control (unsigned int slot_index, int control_bus_index)
 {
@@ -231,9 +234,9 @@ extern spin_lock log_guard;
 #endif
 
 #ifdef thread_local
-static thread_local boost::array<char, 32768> trace_scratchpad;
+static thread_local std::array<char, 262144> trace_scratchpad;
 #else
-static boost::array<char, 32768> trace_scratchpad;
+static std::array<char, 262144> trace_scratchpad;
 #endif
 
 struct scratchpad_printer
@@ -287,7 +290,7 @@ void sc_synth::run_traced(void)
 
     scratchpad_printer printer(trace_scratchpad.data());
 
-    printer.printf("\nTRACE %d  %s    #units: %d\n", id(), this->prototype_name(), calc_unit_count);
+    printer.printf("\nTRACE %d  %s    #units: %d\n", id(), this->definition_name(), calc_unit_count);
 
     for (size_t i = 0; i != calc_unit_count; ++i) {
         Unit * unit = calc_units[i];
diff --git a/server/supernova/sc/sc_synth.hpp b/server/supernova/sc/sc_synth.hpp
index 68f83d6..5528f2b 100644
--- a/server/supernova/sc/sc_synth.hpp
+++ b/server/supernova/sc/sc_synth.hpp
@@ -26,7 +26,7 @@
 #include "SC_RGen.h"
 #include "SC_Wire.h"
 
-#include "sc_synth_prototype.hpp"
+#include "sc_synth_definition.hpp"
 
 #include "../server/synth.hpp"
 #include "../server/memory_pool.hpp"
@@ -41,10 +41,10 @@ class sc_synth:
     typedef std::vector<struct Unit*, rt_pool_allocator<void*> > unit_vector;
     typedef sc_synthdef::graph_t graph_t;
 
-    friend class sc_synth_prototype;
+    friend class sc_synth_definition;
 
 public:
-    sc_synth(int node_id, sc_synth_prototype_ptr const & prototype);
+    sc_synth(int node_id, sc_synth_definition_ptr const & prototype);
 
     ~sc_synth(void);
 
@@ -103,6 +103,7 @@ public:
     void run(void);
 
     void set(slot_index_t slot_index, sample val);
+    float get(slot_index_t slot_index) const;
     void set_control_array(slot_index_t slot_index, size_t count, sample * val);
 
     sample get(slot_index_t slot_index)
@@ -177,7 +178,7 @@ private:
 
     sample get_constant(size_t index)
     {
-        return static_cast<sc_synth_prototype*>(class_ptr.get())->constants[index];
+        return static_cast<sc_synth_definition*>(class_ptr.get())->constants[index];
     }
 
     friend class sc_ugen_def;
diff --git a/server/supernova/sc/sc_synth_definition.cpp b/server/supernova/sc/sc_synth_definition.cpp
new file mode 100644
index 0000000..d038276
--- /dev/null
+++ b/server/supernova/sc/sc_synth_definition.cpp
@@ -0,0 +1,95 @@
+//  prototype of a supercollider-synthdef-based synth prototype, implementation
+//  Copyright (C) 2009, 2010 Tim Blechmann
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; see the file COPYING.  If not, write to
+//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+//  Boston, MA 02111-1307, USA.
+
+#include <iostream>
+
+#include <boost/filesystem/operations.hpp>
+
+#include "sc_synth.hpp"
+#include "sc_ugen_factory.hpp"
+#include "sc_synth_definition.hpp"
+
+#include "server/synth_factory.hpp"
+
+namespace nova {
+
+using namespace std;
+
+void register_synthdefs(synth_factory & factory, std::vector<sc_synthdef> && defs)
+{
+    std::vector<sc_synthdef> synthdefs(std::move(defs));
+    for (typename std::vector<sc_synthdef>::iterator it = synthdefs.begin();
+         it != synthdefs.end(); ++it) {
+        sc_synth_definition * sp = new sc_synth_definition(std::move(*it));
+        factory.register_definition(sp);
+    }
+}
+
+
+std::vector<sc_synthdef> sc_read_synthdefs_file(path const & file)
+{
+    try {
+        return read_synthdef_file(file.string());
+    }
+    catch(std::exception & e)
+    {
+        cout << "Exception when parsing synthdef: " << e.what() << endl;
+        return std::vector<sc_synthdef>();
+    }
+}
+
+std::vector<sc_synthdef> sc_read_synthdefs_dir(path const & dir)
+{
+    using namespace boost::filesystem;
+    std::vector<sc_synthdef> ret;
+
+    if (!exists(dir))
+        return ret;
+
+    directory_iterator end;
+    for (directory_iterator it(dir); it != end; ++it) {
+        std::vector<sc_synthdef> to_append;
+        if (is_directory(it->status()))
+            to_append = sc_read_synthdefs_dir(it->path());
+        else
+            to_append = sc_read_synthdefs_file(it->path());
+        ret.insert(ret.end(), to_append.begin(), to_append.end());
+    }
+    return ret;
+}
+
+sc_synth_definition::sc_synth_definition(sc_synthdef const & sd):
+    synth_definition(sd.name()), sc_synthdef(sd)
+{
+    typedef sc_synthdef::parameter_map_t::const_iterator iterator;
+
+    for (iterator it = parameter_map.begin(); it != parameter_map.end(); ++it)
+        slot_resolver::register_slot(it->first, it->second);
+}
+
+
+abstract_synth * sc_synth_definition::create_instance(int node_id)
+{
+    sc_synth * synth = new sc_synth(node_id, this);
+
+    sc_factory->schedule_for_preparation(synth);
+    return synth;
+}
+
+
+} /* namespace nova */
diff --git a/server/supernova/sc/sc_synth_definition.hpp b/server/supernova/sc/sc_synth_definition.hpp
new file mode 100644
index 0000000..9ce15fd
--- /dev/null
+++ b/server/supernova/sc/sc_synth_definition.hpp
@@ -0,0 +1,56 @@
+//  prototype of a supercollider-synthdef-based synth prototype
+//  Copyright (C) 2009 Tim Blechmann
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; see the file COPYING.  If not, write to
+//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+//  Boston, MA 02111-1307, USA.
+
+#ifndef SC_synth_definition_HPP
+#define SC_synth_definition_HPP
+
+#include <boost/filesystem/path.hpp>
+
+#include "sc_synthdef.hpp"
+
+#include "server/synth_definition.hpp"
+#include "utilities/sized_array.hpp"
+
+namespace nova {
+
+using boost::filesystem::path;
+
+/* read synthdefs from path pattern */
+std::vector<sc_synthdef> sc_read_synthdefs_file(path const & filename);
+std::vector<sc_synthdef> sc_read_synthdefs_dir(path const & dir);
+
+class sc_synth_definition:
+    public synth_definition,
+    public sc_synthdef
+{
+public:
+    sc_synth_definition(sc_synthdef const & sd);
+
+private:
+    friend class sc_synth;
+
+    virtual abstract_synth * create_instance(int);
+};
+
+typedef boost::intrusive_ptr<sc_synth_definition> sc_synth_definition_ptr;
+
+void register_synthdefs(class synth_factory & factory, std::vector<sc_synthdef> &&);
+
+} /* namespace nova */
+
+#endif /* SC_synth_definition_HPP */
diff --git a/server/supernova/sc/sc_synth_prototype.cpp b/server/supernova/sc/sc_synth_prototype.cpp
deleted file mode 100644
index 03e3985..0000000
--- a/server/supernova/sc/sc_synth_prototype.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-//  prototype of a supercollider-synthdef-based synth prototype, implementation
-//  Copyright (C) 2009, 2010 Tim Blechmann
-//
-//  This program is free software; you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation; either version 2 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program; see the file COPYING.  If not, write to
-//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-//  Boston, MA 02111-1307, USA.
-
-#include <iostream>
-
-#include <boost/filesystem/operations.hpp>
-
-#include "sc_synth.hpp"
-#include "sc_ugen_factory.hpp"
-#include "sc_synth_prototype.hpp"
-
-#include "server/synth_factory.hpp"
-
-namespace nova
-{
-
-using namespace std;
-
-void register_synthdefs(synth_factory & factory, std::vector<sc_synthdef> const & defs)
-{
-    foreach(sc_synthdef const & def, defs) {
-        auto_ptr<sc_synth_prototype> sp(new sc_synth_prototype(def));
-        factory.register_prototype(sp.get());
-        sp.release();
-    }
-}
-
-#ifdef BOOST_HAS_RVALUE_REFS
-void register_synthdefs(synth_factory & factory, std::vector<sc_synthdef> && defs)
-{
-    std::vector<sc_synthdef> synthdefs(std::move(defs));
-    for (typename std::vector<sc_synthdef>::iterator it = synthdefs.begin();
-         it != synthdefs.end(); ++it) {
-        sc_synth_prototype * sp = new sc_synth_prototype(std::move(*it));
-        factory.register_prototype(sp);
-    }
-}
-#endif
-
-
-std::vector<sc_synthdef> sc_read_synthdefs_file(path const & file)
-{
-    try {
-        return read_synthdef_file(file.string());
-    }
-    catch(std::exception & e)
-    {
-        cout << "Exception when parsing synthdef: " << e.what() << endl;
-        return std::vector<sc_synthdef>();
-    }
-}
-
-std::vector<sc_synthdef> sc_read_synthdefs_dir(path const & dir)
-{
-    using namespace boost::filesystem;
-    std::vector<sc_synthdef> ret;
-
-    if (!exists(dir))
-        return ret;
-
-    directory_iterator end;
-    for (directory_iterator it(dir); it != end; ++it) {
-        std::vector<sc_synthdef> to_append;
-        if (is_directory(it->status()))
-            to_append = sc_read_synthdefs_dir(it->path());
-        else
-            to_append = sc_read_synthdefs_file(it->path());
-        ret.insert(ret.end(), to_append.begin(), to_append.end());
-    }
-    return ret;
-}
-
-sc_synth_prototype::sc_synth_prototype(sc_synthdef const & sd):
-    synth_prototype(sd.name()), sc_synthdef(sd)
-{
-    typedef sc_synthdef::parameter_map_t::const_iterator iterator;
-
-    for (iterator it = parameter_map.begin(); it != parameter_map.end(); ++it)
-        slot_resolver::register_slot(it->first, it->second);
-}
-
-
-abstract_synth * sc_synth_prototype::create_instance(int node_id)
-{
-    sc_synth * synth = new sc_synth(node_id, this);
-
-    sc_factory->schedule_for_preparation(synth);
-    return synth;
-}
-
-
-} /* namespace nova */
diff --git a/server/supernova/sc/sc_synth_prototype.hpp b/server/supernova/sc/sc_synth_prototype.hpp
deleted file mode 100644
index 84bd644..0000000
--- a/server/supernova/sc/sc_synth_prototype.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//  prototype of a supercollider-synthdef-based synth prototype
-//  Copyright (C) 2009 Tim Blechmann
-//
-//  This program is free software; you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation; either version 2 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program; see the file COPYING.  If not, write to
-//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-//  Boston, MA 02111-1307, USA.
-
-#ifndef SC_SYNTH_PROTOTYPE_HPP
-#define SC_SYNTH_PROTOTYPE_HPP
-
-#include <boost/filesystem/path.hpp>
-
-#include "sc_synthdef.hpp"
-
-#include "server/synth_prototype.hpp"
-#include "utilities/sized_array.hpp"
-
-namespace nova {
-
-using boost::filesystem::path;
-
-/* read synthdefs from path pattern */
-std::vector<sc_synthdef> sc_read_synthdefs_file(path const & filename);
-std::vector<sc_synthdef> sc_read_synthdefs_dir(path const & dir);
-
-class sc_synth_prototype:
-    public synth_prototype,
-    public sc_synthdef
-{
-public:
-    sc_synth_prototype(sc_synthdef const & sd);
-
-private:
-    friend class sc_synth;
-
-    virtual abstract_synth * create_instance(int);
-};
-
-typedef boost::intrusive_ptr<sc_synth_prototype> sc_synth_prototype_ptr;
-
-void register_synthdefs(class synth_factory & factory, std::vector<sc_synthdef> const &);
-
-#ifdef BOOST_HAS_RVALUE_REFS
-void register_synthdefs(class synth_factory & factory, std::vector<sc_synthdef> &&);
-#endif
-
-} /* namespace nova */
-
-#endif /* SC_SYNTH_PROTOTYPE_HPP */
diff --git a/server/supernova/sc/sc_synthdef.cpp b/server/supernova/sc/sc_synthdef.cpp
index 12c1d95..b00870b 100644
--- a/server/supernova/sc/sc_synthdef.cpp
+++ b/server/supernova/sc/sc_synthdef.cpp
@@ -30,11 +30,11 @@
 #include "utilities/sized_array.hpp"
 #include "utilities/exists.hpp"
 
-namespace nova
-{
-typedef boost::int16_t int16;
-typedef boost::int32_t int32;
-typedef boost::int8_t int8;
+namespace nova {
+
+typedef std::int16_t int16;
+typedef std::int32_t int32;
+typedef std::int8_t int8;
 
 using boost::integer::big32_t;
 using boost::integer::big16_t;
@@ -90,12 +90,23 @@ int32_t read_int32(const char *& ptr)
     return data;
 }
 
+int32_t read_int(const char *& ptr, int size)
+{
+    if (size == 32)
+        return read_int32(ptr);
+
+    if (size == 16)
+        return read_int16(ptr);
+    assert(false);
+    return 0;
+}
+
 } /* namespace */
 
 std::vector<sc_synthdef> read_synthdefs(const char * buf_ptr)
 {
     /* int32 header = */ read_int32(buf_ptr);
-    /* int32 version = */ read_int32(buf_ptr);
+    int32 version =  read_int32(buf_ptr);
 
     int16 definition_count = read_int16(buf_ptr);
 
@@ -103,12 +114,14 @@ std::vector<sc_synthdef> read_synthdefs(const char * buf_ptr)
 
     for (int i = 0; i != definition_count; ++i) {
         try {
-            sc_synthdef def(buf_ptr);
-            ret.push_back(def);
+            ret.emplace_back(buf_ptr, version);
         }
-        catch (std::runtime_error const & e) {
+        catch (std::exception const & e) {
             std::cerr << "Exception when reading synthdef: " << e.what() << std::endl;
         }
+        catch (...) {
+            std::cerr << "Exception when reading synthdef" << std::endl;
+        }
     }
     return ret;
 }
@@ -137,80 +150,82 @@ std::vector<sc_synthdef> read_synthdef_file(boost::filesystem::path const & file
     return read_synthdefs(buffer.c_array());
 }
 
-sc_synthdef::unit_spec_t::unit_spec_t(const char *& buffer)
+sc_synthdef::unit_spec_t::unit_spec_t(const char *& buffer, int version)
 {
+    const int short_int_size = (version == 1) ? 16 : 32;
+
     name = read_pstring(buffer);
     rate = read_int8(buffer);
-    int16 inputs = read_int16(buffer);
-    int16 outputs = read_int16(buffer);
+    int32_t input_count = read_int(buffer, short_int_size);
+    int32_t output_count = read_int(buffer, short_int_size);
     special_index = read_int16(buffer);
 
-    for (int i = 0; i != inputs; ++i) {
-        int16_t source = read_int16(buffer);
-        int16_t index = read_int16(buffer);
+    for (int i = 0; i != input_count; ++i) {
+        int16_t source = read_int(buffer, short_int_size);
+        int16_t index = read_int(buffer, short_int_size);
         input_spec spec(source, index);
         input_specs.push_back(spec);
     }
 
-    for (int i = 0; i != outputs; ++i) {
+    for (int i = 0; i != output_count; ++i) {
         char rate = read_int8(buffer);
         output_specs.push_back(rate);
     }
 }
 
-sc_synthdef::sc_synthdef(const char*& data)
+sc_synthdef::sc_synthdef(const char*& data, int version)
 {
-    read_synthdef(data);
+    read_synthdef(data, version);
 }
 
-void sc_synthdef::read_synthdef(const char *& ptr)
+void sc_synthdef::read_synthdef(const char *& ptr, int version)
 {
     using namespace std;
+    const int short_int_size = (version == 1) ? 16 : 32;
 
     /* read name */
     name_ = read_pstring(ptr);
 
     /* read constants */
-    int16_t consts = read_int16(ptr);
+    int32_t constant_count = read_int(ptr, short_int_size);
 
-    for (int i = 0; i != consts; ++i) {
+    for (int i = 0; i != constant_count; ++i) {
         float data = read_float(ptr);
         constants.push_back(data);
     }
 
     /* read parameters */
-    int16_t pars = read_int16(ptr);
+    int32_t paramenter_count = read_int(ptr, short_int_size);
 
-    for (int i = 0; i != pars; ++i) {
+    for (int i = 0; i != paramenter_count; ++i) {
         float data = read_float(ptr);
         parameters.push_back(data);
     }
 
     /* read parameter names */
-    int16_t par_names = read_int16(ptr);
+    int32_t parameter_names_count = read_int(ptr, short_int_size);
 
-    for (int i = 0; i != par_names; ++i) {
+    for (int i = 0; i != parameter_names_count; ++i) {
         string data = read_pstring(ptr);
-        int16_t index = read_int16(ptr);
+        int32_t index = read_int(ptr, short_int_size);
 
         parameter_map[data] = index;
     }
 
-    int16_t ugens = read_int16(ptr);
-    graph.reserve(ugens);
+    int32_t ugen_count = read_int(ptr, short_int_size);
+    graph.reserve(ugen_count);
 
-    for (int i = 0; i != ugens; ++i) {
-        unit_spec_t data(ptr);
+    for (int i = 0; i != ugen_count; ++i) {
+        unit_spec_t data(ptr, version);
         graph.push_back(data);
     }
 
     prepare();
 }
 
-namespace
-{
+namespace {
 
-template <typename Alloc = std::allocator<int16_t> >
+template <typename Alloc = std::allocator<int32_t> >
 class buffer_allocator
 {
     std::vector<size_t, Alloc> buffers; /* index: buffer id, value: last reference */
@@ -220,7 +235,7 @@ public:
      *
      *  reuse buffers, which are not used after the current ugen
      */
-    int16_t allocate_buffer(size_t current_ugen)
+    int32_t allocate_buffer(size_t current_ugen)
     {
         for (size_t i = 0; i != buffers.size(); ++i) {
             if (buffers[i] <= current_ugen)
@@ -234,7 +249,7 @@ public:
      *
      * reuse the buffers, which have been used before the current ugen
      */
-    int16_t allocate_buffer_noalias(size_t current_ugen)
+    int32_t allocate_buffer_noalias(size_t current_ugen)
     {
         for (size_t i = 0; i != buffers.size(); ++i) {
             if (buffers[i] < current_ugen)
@@ -249,7 +264,7 @@ public:
         return buffers.size();
     }
 
-    void set_last_reference (int16_t buffer_id, size_t ugen_index)
+    void set_last_reference (int32_t buffer_id, size_t ugen_index)
     {
         buffers[buffer_id] = ugen_index;
     }
@@ -313,7 +328,7 @@ void sc_synthdef::prepare(void)
         memory_requirement_ += ugen->memory_requirement();
 
         for (size_t output_index = 0; output_index != current_ugen_spec.output_specs.size(); ++output_index) {
-            int16_t buffer_id;
+            int32_t buffer_id;
             if (current_ugen_spec.output_specs[output_index] == 2) {
                 /* find last reference to this buffer */
                 size_t last_ref = ugen_index;
diff --git a/server/supernova/sc/sc_synthdef.hpp b/server/supernova/sc/sc_synthdef.hpp
index 7e5a252..a1ce1ca 100644
--- a/server/supernova/sc/sc_synthdef.hpp
+++ b/server/supernova/sc/sc_synthdef.hpp
@@ -19,17 +19,16 @@
 #ifndef SC_SYNTHDEF_HPP
 #define SC_SYNTHDEF_HPP
 
+#include <cstdint>
+#include <map>
 #include <string>
 #include <vector>
-#include <map>
 
-#include <boost/cstdint.hpp>
 #include <boost/filesystem/path.hpp>
 
 #include "utilities/malloc_aligned.hpp"
 #include "utilities/named_hash_entry.hpp"
 
-
 #include "SC_Types.h"
 #include "SC_Wire.h"
 
@@ -41,17 +40,14 @@ class sc_synthdef
     typedef std::vector<float, aligned_allocator<float> > fvector;
     typedef std::vector<c_string, aligned_allocator<string> > svector;
 
-    typedef boost::int16_t int16;
-    typedef boost::int32_t int32;
-
     typedef std::vector<char, aligned_allocator<char> > char_vector;
 
 public:
-    typedef std::map<string, int, std::less<string>, aligned_allocator<string> > parameter_map_t;
+    typedef std::map<string, int32_t, std::less<string>, aligned_allocator<string> > parameter_map_t;
 
     struct input_spec
     {
-        input_spec(int16_t source, int16_t index):
+        input_spec(int32_t source, int32_t index):
             source(source), index(index)
         {}
 
@@ -64,14 +60,14 @@ public:
             return index < rhs.index;
         }
 
-        int16_t source;   /* index of ugen or -1 for constant */
-        int16_t index;    /* number of output or constant index */
+        int32_t source;   /* index of ugen or -1 for constant */
+        int32_t index;    /* number of output or constant index */
     };
     typedef std::vector<input_spec, aligned_allocator<input_spec> > input_spec_vector;
 
     struct unit_spec_t
     {
-        explicit unit_spec_t(const char *& buffer);
+        explicit unit_spec_t(const char *& buffer, int version);
 
         unit_spec_t(string const & name, int16_t rate, int16_t special_index,
                     input_spec_vector const & in_specs,
@@ -80,7 +76,6 @@ public:
             input_specs(in_specs), output_specs(out_specs)
         {}
 
-#ifdef BOOST_HAS_RVALUE_REFS
         unit_spec_t(unit_spec_t && rhs):
             name(std::move(rhs.name)), rate(rhs.rate), special_index(rhs.special_index),
             input_specs(std::move(rhs.input_specs)), output_specs(std::move(rhs.output_specs)),
@@ -89,14 +84,14 @@ public:
 
         unit_spec_t(unit_spec_t const & rhs) = default;
         unit_spec_t & operator=(unit_spec_t const & rhs) = default;
-#endif
+
         string name;
         int16_t rate;           /* 0: scalar rate, 1: buffer rate, 2: full rate, 3: demand rate */
         int16_t special_index;
 
         input_spec_vector input_specs;
         char_vector output_specs;      /* calculation rates */
-        std::vector<int16_t, aligned_allocator<int16_t> > buffer_mapping;
+        std::vector<int32_t, aligned_allocator<int32_t> > buffer_mapping;
 
         std::size_t memory_requirement(void)
         {
@@ -105,10 +100,10 @@ public:
                    output_specs.size() * sizeof(Wire);
         }
 
-        struct sc_ugen_def * prototype;
+        class sc_ugen_def * prototype;
     };
 
-    friend class sc_synth_prototype;
+    friend class sc_synth_definition;
     friend class sc_synth;
     friend class sc_ugen_factory;
     friend class sc_ugen_def;
@@ -116,9 +111,8 @@ public:
     typedef std::vector<unit_spec_t, aligned_allocator<unit_spec_t> > graph_t;
     typedef std::vector<int32_t, aligned_allocator<int32_t> > calc_units_t;
 
-    explicit sc_synthdef(const char *& buffer);
+    sc_synthdef(const char *& buffer, int version);
 
-#ifdef BOOST_HAS_RVALUE_REFS
     sc_synthdef(sc_synthdef && rhs):
         name_(std::move(rhs.name_)), constants(std::move(rhs.constants)), parameters(std::move(rhs.parameters)),
         parameter_map(std::move(rhs.parameter_map)), graph(std::move(rhs.graph)), buffer_count(rhs.buffer_count),
@@ -127,7 +121,6 @@ public:
 
     sc_synthdef(sc_synthdef const & rhs) = default;
     sc_synthdef& operator=(sc_synthdef const & rhs) = default;
-#endif
 
     std::string dump(void) const;
 
@@ -158,7 +151,7 @@ public:
     }
 
 private:
-    void read_synthdef(const char *&);
+    void read_synthdef(const char *&, int version);
 
     /** assign buffers, collect memory requirement & cache ugen prototype */
     void prepare(void);
@@ -169,7 +162,7 @@ private:
     parameter_map_t parameter_map;
 
     graph_t graph;
-    boost::uint16_t buffer_count;
+    std::uint16_t buffer_count;
     calc_units_t calc_unit_indices; /**< indices of the units, that need to be calculated */
     std::size_t memory_requirement_;
 };
diff --git a/server/supernova/sc/sc_ugen_factory.cpp b/server/supernova/sc/sc_ugen_factory.cpp
index b838e7c..2ef7a46 100644
--- a/server/supernova/sc/sc_ugen_factory.cpp
+++ b/server/supernova/sc/sc_ugen_factory.cpp
@@ -30,24 +30,23 @@
 #include "SC_World.h"
 #include "SC_Wire.h"
 
-namespace nova
-{
+namespace nova {
 
 sc_ugen_factory * sc_factory;
 
-Unit * sc_ugen_def::construct(sc_synthdef::unit_spec_t const & unit_spec, sc_synth * s, World * world, char *& chunk)
+Unit * sc_ugen_def::construct(sc_synthdef::unit_spec_t const & unit_spec, sc_synth * s, World * world, linear_allocator & allocator)
 {
     const int buffer_length = world->mBufLength;
 
     const size_t output_count = unit_spec.output_specs.size();
 
     /* size for wires and buffers */
-    memset(chunk, 0, alloc_size);
-    Unit * unit = (Unit*)chunk;     chunk += alloc_size;
-    unit->mInBuf  = (float**)chunk; chunk += unit_spec.input_specs.size() * sizeof(float*);
-    unit->mOutBuf = (float**)chunk; chunk += unit_spec.output_specs.size() * sizeof(float*);
-    unit->mInput  = (Wire**)chunk;  chunk += unit_spec.input_specs.size() * sizeof(Wire*);
-    unit->mOutput = (Wire**)chunk;  chunk += unit_spec.output_specs.size() * sizeof(Wire*);
+    Unit * unit   = (Unit*)allocator.alloc<uint8_t>(alloc_size);
+    memset(unit, 0, alloc_size);
+    unit->mInBuf  = allocator.alloc<float*>(unit_spec.input_specs.size());
+    unit->mOutBuf = allocator.alloc<float*>(unit_spec.output_specs.size());
+    unit->mInput  = allocator.alloc<Wire*>(unit_spec.input_specs.size());
+    unit->mOutput = allocator.alloc<Wire*>(unit_spec.output_specs.size());
 
     unit->mNumInputs  = unit_spec.input_specs.size();
     unit->mNumOutputs = unit_spec.output_specs.size();
@@ -72,7 +71,7 @@ Unit * sc_ugen_def::construct(sc_synthdef::unit_spec_t const & unit_spec, sc_syn
 
     /* allocate buffers */
     for (size_t i = 0; i != output_count; ++i) {
-        Wire * w = (Wire*)chunk; chunk += sizeof(Wire);
+        Wire * w = allocator.alloc<Wire>();
 
         w->mFromUnit = unit;
         w->mCalcRate = unit->mCalcRate;
@@ -235,25 +234,34 @@ void sc_ugen_factory::load_plugin_folder (boost::filesystem::path const & path)
 void sc_ugen_factory::load_plugin ( boost::filesystem::path const & path )
 {
     using namespace std;
+
     void * handle = dlopen(path.string().c_str(), RTLD_NOW | RTLD_LOCAL);
-    if (handle == NULL) {
-        cerr << "Cannot open plugin: " << dlerror() << endl;
+    if (handle == NULL)
         return;
-    }
 
     typedef int (*info_function)();
 
     info_function api_version = reinterpret_cast<info_function>(dlsym(handle, "api_version"));
-    if (api_version) {
-        if ((*api_version)() != sc_api_version) {
-            cerr << "API Version Mismatch: " << path << endl;
-            dlclose(handle);
-            return;
-        }
+    int plugin_api_version = 1; // default
+    if (api_version)
+        plugin_api_version = (*api_version)();
+
+    if (plugin_api_version != sc_api_version) {
+        cerr << "API Version Mismatch: " << path << endl;
+        dlclose(handle);
+        return;
+    }
+
+    info_function supernova_check = reinterpret_cast<info_function>(dlsym(handle, "server_type"));
+    if (!supernova_check || (*supernova_check)() == sc_server_scsynth) {
+        // silently ignore
+        dlclose(handle);
+        return;
     }
 
     void * load_symbol = dlsym(handle, "load");
     if (!load_symbol) {
+        cerr << "Problem when loading plugin: \"load\" function undefined" << path << endl;
         dlclose(handle);
         return;
     }
@@ -270,7 +278,7 @@ void sc_ugen_factory::close_handles(void)
 {
 #if 0
     /* closing the handles has some unwanted side effects, so we leave them open */
-    foreach(void * handle, open_handles)
+    for(void * handle : open_handles)
         dlclose(handle);
 #endif
 }
@@ -278,6 +286,60 @@ void sc_ugen_factory::close_handles(void)
 #else
 void sc_ugen_factory::load_plugin ( boost::filesystem::path const & path )
 {
+    //std::cout << "try open plugin: " << path << std::endl;
+    const char * filename = path.string().c_str();
+    HINSTANCE hinstance = LoadLibrary( path.string().c_str() );
+    if (!hinstance) {
+        char *s;
+        DWORD lastErr = GetLastError();
+        FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+                       0, lastErr , 0, (char*)&s, 1, 0 );
+
+        std::cerr << "Cannot open plugin: " << path << s << std::endl;
+        LocalFree( s );
+        return;
+    }
+
+    typedef int (*info_function)();
+    info_function api_version = reinterpret_cast<info_function>(GetProcAddress( hinstance, "api_version" ));
+
+    if ((*api_version)() != sc_api_version) {
+        std::cerr << "API Version Mismatch: " << filename << std::endl;
+        FreeLibrary(hinstance);
+        return;
+    }
+
+    typedef int (*info_function)();
+    info_function server_type = reinterpret_cast<info_function>(GetProcAddress( hinstance, "server_type" ));
+    if (!server_type) {
+        FreeLibrary(hinstance);
+        return;
+    }
+
+    if ((*server_type)() != sc_server_supernova) {
+        FreeLibrary(hinstance);
+        return;
+    }
+
+    void *ptr = (void *)GetProcAddress( hinstance, "load" );
+    if (!ptr) {
+        char *s;
+        FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+                       0, GetLastError(), 0, (char*)&s, 1, 0 );
+
+        std::cerr << "*** ERROR: GetProcAddress err " << s << std::endl;
+        LocalFree( s );
+
+        FreeLibrary(hinstance);
+        return;
+    }
+
+    LoadPlugInFunc loadFunc = (LoadPlugInFunc)ptr;
+    (*loadFunc)(&sc_interface);
+
+    // FIXME: at the moment we never call FreeLibrary() on a loaded plugin
+
+    return;
 }
 
 void sc_ugen_factory::close_handles(void)
diff --git a/server/supernova/sc/sc_ugen_factory.hpp b/server/supernova/sc/sc_ugen_factory.hpp
index 4534b19..f314efb 100644
--- a/server/supernova/sc/sc_ugen_factory.hpp
+++ b/server/supernova/sc/sc_ugen_factory.hpp
@@ -32,8 +32,7 @@
 
 #include "utilities/named_hash_entry.hpp"
 
-namespace nova
-{
+namespace nova {
 namespace bi = boost::intrusive;
 
 struct sc_unitcmd_def:
@@ -78,7 +77,7 @@ public:
         unitcmd_set(unitcmd_set_type::bucket_traits(unitcmd_set_buckets, unitcmd_set_bucket_count))
     {}
 
-    Unit * construct(sc_synthdef::unit_spec_t const & unit_spec, sc_synth * s, World * world, char *& chunk);
+    Unit * construct(sc_synthdef::unit_spec_t const & unit_spec, sc_synth * s, World * world, linear_allocator & allocator);
 
     void initialize(Unit * unit)
     {
@@ -202,6 +201,10 @@ class sc_ugen_factory:
     public sc_plugin_container
 {
 public:
+    sc_ugen_factory():
+        ugen_count_(0)
+    {}
+
     ~sc_ugen_factory(void)
     {
         close_handles();
diff --git a/server/supernova/server/audio_bus_manager.hpp b/server/supernova/server/audio_bus_manager.hpp
index d2ee61e..f05d55a 100644
--- a/server/supernova/server/audio_bus_manager.hpp
+++ b/server/supernova/server/audio_bus_manager.hpp
@@ -19,20 +19,17 @@
 #ifndef SERVER_AUDIO_BUS_MANAGER_HPP
 #define SERVER_AUDIO_BUS_MANAGER_HPP
 
-#include <boost/noncopyable.hpp>
-
+#include <cstdint>
 #include "sample_types.hpp"
 
 #include "../utilities/malloc_aligned.hpp"
 #include "nova-tt/rw_spinlock.hpp"
 
-namespace nova
-{
+namespace nova {
 
-class audio_bus_manager:
-    public boost::noncopyable
+class audio_bus_manager
 {
-    typedef boost::uint16_t uint16_t;
+    typedef std::uint16_t uint16_t;
 
 public:
 /*    audio_bus_manager(uint16_t count = 4096, uint16_t blocksize = 64)
@@ -43,6 +40,9 @@ public:
     audio_bus_manager(void)
     {}
 
+    audio_bus_manager(audio_bus_manager const &) = delete;
+    audio_bus_manager& operator=(audio_bus_manager const &) = delete;
+
     void initialize(uint16_t c, uint16_t b)
     {
         count = c;
diff --git a/server/supernova/server/buffer_manager.cpp b/server/supernova/server/buffer_manager.cpp
index 815b9cc..3e22295 100644
--- a/server/supernova/server/buffer_manager.cpp
+++ b/server/supernova/server/buffer_manager.cpp
@@ -21,6 +21,7 @@
 #include "buffer_manager.hpp"
 #include "utilities/malloc_aligned.hpp"
 #include "utilities/sized_array.hpp"
+#include "../../common/SC_SndFileHelpers.hpp"
 
 
 namespace nova
@@ -105,51 +106,19 @@ void buffer_wrapper::read_file_channels(const char * file, size_t start_frame, s
     }
 }
 
-
 void buffer_wrapper::write_file(const char * file, const char * header_format, const char * sample_format,
                                 size_t start_frame, size_t frames)
 {
-    std::string header (header_format);
-    std::string sample_format_ (sample_format);
-
-    int format = 0;
-
-    if (header == "wav")
-        format = SF_FORMAT_WAV;
-    else if (header == "aiff")
-        format = SF_FORMAT_AIFF;
-    else if (header == "next")
-        format = SF_FORMAT_AU;
-    else if (header == "ircam")
-        format = SF_FORMAT_IRCAM;
-    else if (header == "ircam")
-        format = SF_FORMAT_IRCAM;
-    else if (header == "raw")
-        format = SF_FORMAT_RAW;
-    else if (header == "flac")
-        format = SF_FORMAT_FLAC;
-    else
+    int format = headerFormatFromString(header_format);
+    if (format == 0)
         throw std::runtime_error("unknown header format requested");
 
-    if (sample_format_ == "int8")
-        format |= SF_FORMAT_PCM_S8;
-    else if (sample_format_ == "int16")
-        format |= SF_FORMAT_PCM_16;
-    else if (sample_format_ == "int24")
-        format |= SF_FORMAT_PCM_24;
-    else if (sample_format_ == "int32")
-        format |= SF_FORMAT_PCM_32;
-    else if (sample_format_ == "float")
-        format |= SF_FORMAT_FLOAT;
-    else if (sample_format_ == "double")
-        format |= SF_FORMAT_DOUBLE;
-    else if (sample_format_ == "mulaw")
-        format |= SF_FORMAT_ULAW;
-    else if (sample_format_ == "alaw")
-        format |= SF_FORMAT_ALAW;
-    else
+    int sample_format_tag = sampleFormatFromString(sample_format);
+    if (sample_format_tag == 0)
         throw std::runtime_error("unknown sample format requested");
 
+    format |= sample_format_tag;
+
     SndfileHandle sndfile(file, SFM_WRITE, format, channels_, sample_rate_);
     if (!sndfile)
         throw std::runtime_error(std::string("could not open file: ") + std::string(file));
diff --git a/server/supernova/server/buffer_manager.hpp b/server/supernova/server/buffer_manager.hpp
index 991cbbb..3b49169 100644
--- a/server/supernova/server/buffer_manager.hpp
+++ b/server/supernova/server/buffer_manager.hpp
@@ -30,8 +30,7 @@
 #include "utilities/malloc_aligned.hpp"
 
 
-namespace nova
-{
+namespace nova {
 
 struct buffer_wrapper
 {
@@ -222,5 +221,4 @@ private:
 
 } /* namespace nova */
 
-#undef foreach
 #endif /* SERVER_BUFFER_MANAGER_HPP */
diff --git a/server/supernova/server/dependency_graph_generator.hpp b/server/supernova/server/dependency_graph_generator.hpp
index 2f2e7bb..f002a40 100644
--- a/server/supernova/server/dependency_graph_generator.hpp
+++ b/server/supernova/server/dependency_graph_generator.hpp
@@ -21,14 +21,7 @@
 
 #include "node_graph.hpp"
 
-#ifdef BOOST_HAS_RVALUE_REFS
-#define MOVE(X) std::move(X)
-#else
-#define MOVE(X) X
-#endif
-
-namespace nova
-{
+namespace nova {
 
 class dependency_graph_generator
 {
@@ -39,10 +32,12 @@ class dependency_graph_generator
 public:
     dsp_thread_queue * operator()(node_graph * graph)
     {
+        bool has_parallelism = graph->root_group()->has_parallel_group_children();
+
         /* pessimize: reserve enough memory for the worst case */
-        q = new node_graph::dsp_thread_queue(graph->synth_count_);
+        q = new node_graph::dsp_thread_queue(graph->synth_count_, has_parallelism);
 
-        fill_queue(*graph->root_group());
+        fill_queue(*graph->root_group()); // LATER: we could optimize the case when we do not have any paralleism
         return q;
     }
 
@@ -52,9 +47,7 @@ private:
     void fill_queue(group & root_group)
     {
         if (root_group.has_synth_children())
-        {
             fill_queue_recursive(root_group, successor_container(0), 0);
-        }
     }
 
     template <typename reverse_iterator>
@@ -62,8 +55,7 @@ private:
     {
         reverse_iterator prev = it;
 
-        for(;;)
-        {
+        for(;;) {
             ++prev;
             if (prev == end)
                 return previous_activation_limit; // we are the first item, so we use the previous activiation limit
@@ -104,9 +96,7 @@ private:
         sequential_child_list sequential_children;
         sequential_children.reserve(g.child_synth_count);
 
-        for (r_iterator it = g.child_nodes.rbegin();
-            it != g.child_nodes.rend(); ++it)
-        {
+        for (r_iterator it = g.child_nodes.rbegin(); it != g.child_nodes.rend(); ++it) {
             server_node & node = *it;
 
             if (node.is_synth()) {
@@ -115,8 +105,7 @@ private:
                 std::size_t node_count = 1;
 
                 // we fill the child nodes in reverse order to an array
-                for(;;)
-                {
+                for(;;) {
                     sequential_children.push_back(&*it);
                     ++it;
                     if (it == g.child_nodes.rend())
@@ -135,7 +124,7 @@ private:
                 int activation_limit = get_previous_activation_count(it, g.child_nodes.rend(), previous_activation_limit);
 
                 thread_queue_item * q_item =
-                    q->allocate_queue_item(queue_node(MOVE(queue_node_data(static_cast<abstract_synth*>(*seq_it++))), node_count),
+                    q->allocate_queue_item(queue_node(std::move(queue_node_data(static_cast<abstract_synth*>(*seq_it++))), node_count),
                                             successors, activation_limit);
 
                 queue_node & q_node = q_item->get_job();
@@ -154,12 +143,10 @@ private:
                 if (activation_limit == 0)
                     q->add_initially_runnable(q_item);
                 children -= node_count;
-            }
-            else {
+            } else {
                 abstract_group & grp = static_cast<abstract_group&>(node);
 
-                if (grp.has_synth_children())
-                {
+                if (grp.has_synth_children()) {
                     int activation_limit = get_previous_activation_count(it, g.child_nodes.rend(), previous_activation_limit);
                     successors = fill_queue_recursive(grp, successors, activation_limit);
                 }
@@ -177,25 +164,21 @@ private:
         std::vector<thread_queue_item*, rt_pool_allocator<void*> > collected_nodes;
         collected_nodes.reserve(g.child_synth_count + g.child_group_count * 16); // pessimize
 
-        for (server_node_list::iterator it = g.child_nodes.begin();
-            it != g.child_nodes.end(); ++it)
-        {
+        for (server_node_list::iterator it = g.child_nodes.begin(); it != g.child_nodes.end(); ++it) {
             server_node & node = *it;
 
             if (node.is_synth()) {
-                thread_queue_item * q_item = q->allocate_queue_item(queue_node(MOVE(queue_node_data(static_cast<abstract_synth*>(&node)))),
+                thread_queue_item * q_item = q->allocate_queue_item(queue_node(std::move(queue_node_data(static_cast<abstract_synth*>(&node)))),
                                                                     successors_from_parent, previous_activation_limit);
 
                 if (previous_activation_limit == 0)
                     q->add_initially_runnable(q_item);
 
                 collected_nodes.push_back(q_item);
-            }
-            else {
+            } else {
                 abstract_group & grp = static_cast<abstract_group&>(node);
 
-                if (grp.has_synth_children())
-                {
+                if (grp.has_synth_children()) {
                     successor_container group_successors = fill_queue_recursive(grp, successors_from_parent,
                                                                                 previous_activation_limit);
 
diff --git a/server/supernova/server/dsp_context.cpp b/server/supernova/server/dsp_context.cpp
index 0cc6fc2..e14b448 100644
--- a/server/supernova/server/dsp_context.cpp
+++ b/server/supernova/server/dsp_context.cpp
@@ -20,5 +20,5 @@
 
 namespace nova
 {
-boost::array<thread_local_resource, max_threads> thread_local_resources;
+std::array<thread_local_resource, max_threads> thread_local_resources;
 } /* namespace nova */
diff --git a/server/supernova/server/dsp_context.hpp b/server/supernova/server/dsp_context.hpp
index c248541..2a269fe 100644
--- a/server/supernova/server/dsp_context.hpp
+++ b/server/supernova/server/dsp_context.hpp
@@ -20,14 +20,12 @@
 #define DSP_CONTEXT_HPP
 
 #include <boost/cstdint.hpp>
-#include <boost/array.hpp>
+#include <array>
 #include <boost/lockfree/detail/prefix.hpp>
 
 #include "sample_types.hpp"
 
-namespace nova
-{
-
+namespace nova {
 
 /** \brief struct holding thread-local resources
  *
@@ -39,7 +37,7 @@ struct BOOST_LOCKFREE_CACHELINE_ALIGNMENT thread_local_resource
 };
 
 static const int max_threads = 2;
-extern boost::array<thread_local_resource, max_threads> thread_local_resources;
+extern std::array<thread_local_resource, max_threads> thread_local_resources;
 
 /** \brief dsp context
  *  */
diff --git a/server/supernova/server/dsp_thread_queue_node.hpp b/server/supernova/server/dsp_thread_queue_node.hpp
index 73bcb84..ad71437 100644
--- a/server/supernova/server/dsp_thread_queue_node.hpp
+++ b/server/supernova/server/dsp_thread_queue_node.hpp
@@ -19,21 +19,20 @@
 #ifndef SERVER_DSP_THREAD_QUEUE_NODE_HPP
 #define SERVER_DSP_THREAD_QUEUE_NODE_HPP
 
+#include <cstdint>
 #include <memory>
 #include <vector>
 
-#include <boost/cstdint.hpp>
 
 #include "server/synth.hpp"
 #include "../sc/sc_synth.hpp"
 
-namespace nova
-{
+namespace nova {
 
 /* optimized for sc_synth, since we don't support other types of synths for now */
 class queue_node_data
 {
-    typedef boost::uint_fast8_t thread_count_type;
+    typedef std::uint_fast8_t thread_count_type;
 
 public:
     explicit queue_node_data(abstract_synth * node):
@@ -44,11 +43,9 @@ public:
         node(rhs.node)
     {}
 
-#ifdef BOOST_HAS_RVALUE_REFS
     queue_node_data(queue_node_data const && rhs):
         node(std::move(rhs.node))
     {}
-#endif
 
     void operator()(thread_count_type index)
     {
@@ -69,8 +66,8 @@ class dsp_queue_node
 {
     typedef std::vector<queue_node_data, typename Alloc::template rebind<queue_node_data>::other> node_container;
 
-    typedef boost::uint_fast16_t node_count_type;
-    typedef boost::uint_fast8_t thread_count_type;
+    typedef std::uint_fast16_t node_count_type;
+    typedef std::uint_fast8_t thread_count_type;
 
 public:
     dsp_queue_node(queue_node_data const & node, std::size_t container_size):
@@ -83,7 +80,6 @@ public:
         first(node), node_count(0)
     {}
 
-#ifdef BOOST_HAS_RVALUE_REFS
     explicit dsp_queue_node(queue_node_data && node):
         first(std::move(node)), node_count(0)
     {}
@@ -93,7 +89,6 @@ public:
     {
         nodes.reserve(container_size-1);
     }
-#endif
 
     void operator()(thread_count_type thread_index)
     {
@@ -103,11 +98,7 @@ public:
         if (remaining == 0)
             return; //fast-path
 
-#ifdef __PATHCC__
-        queue_node_data * data = &nodes.front();
-#else
         queue_node_data * data = nodes.data();
-#endif
 
         if (remaining & 1) {
             (*data)(thread_index);
@@ -163,11 +154,7 @@ public:
 
     void add_node(abstract_synth * node)
     {
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
         nodes.emplace_back(std::move(queue_node_data(node)));
-#else
-        nodes.push_back(queue_node_data(node));
-#endif
         ++node_count;
     }
 
diff --git a/server/supernova/server/dynamic_endpoint.hpp b/server/supernova/server/dynamic_endpoint.hpp
index 0ce8ddf..8fd451e 100644
--- a/server/supernova/server/dynamic_endpoint.hpp
+++ b/server/supernova/server/dynamic_endpoint.hpp
@@ -35,7 +35,7 @@ namespace nova
 
 struct nova_protocol
 {
-    typedef struct nova_endpoint endpoint;
+    typedef class nova_endpoint endpoint;
 
     int family(void) const
     {
diff --git a/server/supernova/server/group.hpp b/server/supernova/server/group.hpp
index e34a356..aec05eb 100644
--- a/server/supernova/server/group.hpp
+++ b/server/supernova/server/group.hpp
@@ -28,8 +28,7 @@
 #include "dsp_thread_queue/dsp_thread_queue.hpp"
 #include "utilities/exists.hpp"
 
-namespace nova
-{
+namespace nova {
 
 typedef nova::dsp_queue_node<rt_pool_allocator<void*> > queue_node;
 typedef nova::dsp_thread_queue_item<dsp_queue_node<rt_pool_allocator<void*> >,
@@ -109,6 +108,18 @@ public:
         return false;
     }
 
+    bool has_parallel_group_children(void) const
+    {
+        if (is_parallel())
+            return true;
+
+        for (group_list::const_iterator it = child_groups.begin(); it != child_groups.end(); ++it)
+            if (it->has_parallel_group_children())
+                return true;
+
+        return false;
+    }
+
     std::size_t child_count(void) const
     {
         assert(child_group_count == child_groups.size());
@@ -116,27 +127,23 @@ public:
         return child_synth_count + child_group_count;
     }
 
-    /* number of child synths and groups */
-    std::pair<std::size_t, std::size_t> child_count_deep(void) const
+    template<typename functor>
+    void apply_on_children(functor const & f)
     {
-        std::size_t synths = child_synth_count;
-        std::size_t groups = child_group_count;
-
-        for (group_list::const_iterator it = child_groups.begin(); it != child_groups.end(); ++it)
-        {
-            std::size_t recursive_synths, recursive_groups;
-            boost::tie(recursive_synths, recursive_groups) = it->child_count_deep();
-            groups += recursive_groups;
-            synths += recursive_synths;
-        }
-        return std::make_pair(synths, groups);
+        for (server_node_list::iterator it = child_nodes.begin(); it != child_nodes.end(); ++it)
+            f(*it);
     }
 
     template<typename functor>
-    void apply_on_children(functor const & f)
+    void apply_deep_on_children(functor const & f)
     {
-        for (server_node_list::iterator it = child_nodes.begin(); it != child_nodes.end(); ++it)
+        for (server_node_list::iterator it = child_nodes.begin(); it != child_nodes.end(); ++it) {
+            if (it->is_group()) {
+                abstract_group & grp = static_cast<abstract_group&>(*it);
+                grp.apply_deep_on_children(f);
+            }
             f(*it);
+        }
     }
 
     template<typename functor>
@@ -183,15 +190,15 @@ public:
 
     void free_children(void)
     {
-        child_nodes.clear_and_dispose(boost::mem_fn(&server_node::clear_parent));
+        child_nodes.clear_and_dispose(std::mem_fn(&server_node::clear_parent));
         assert(child_synth_count == 0);
         assert(child_group_count == 0);
     }
 
     void free_synths_deep(void)
     {
-        child_nodes.remove_and_dispose_if(boost::mem_fn(&server_node::is_synth),
-                                          boost::mem_fn(&server_node::clear_parent));
+        child_nodes.remove_and_dispose_if(std::mem_fn(&server_node::is_synth),
+                                          std::mem_fn(&server_node::clear_parent));
 
         /* now there are only group classes */
         for(server_node_list::iterator it = child_nodes.begin(); it != child_nodes.end(); ++it) {
diff --git a/server/supernova/server/main.cpp b/server/supernova/server/main.cpp
index d9afe91..18e809a 100644
--- a/server/supernova/server/main.cpp
+++ b/server/supernova/server/main.cpp
@@ -16,11 +16,11 @@
 //  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 //  Boston, MA 02111-1307, USA.
 
-#include <iostream>
-#include <cstdlib>
 #include <csignal>
-#include <vector>
+#include <cstdlib>
+#include <iostream>
 #include <string>
+#include <vector>
 
 #include <boost/filesystem/path.hpp>
 #include <boost/algorithm/string.hpp>
@@ -29,10 +29,13 @@
 #include "server_args.hpp"
 
 #include "../sc/sc_ugen_factory.hpp"
-#include "../sc/sc_synth_prototype.hpp"
+#include "../sc/sc_synth_definition.hpp"
 #include "../utilities/utils.hpp"
 
-#include <wordexp.h> /**< \todo: this is posix-only */
+#ifdef __linux__
+#include <wordexp.h>
+#include <sys/resource.h>
+#endif
 
 #if (_POSIX_MEMLOCK - 0) >=  200112L
 # include <sys/resource.h>
@@ -44,8 +47,7 @@
 using namespace nova;
 using namespace std;
 
-namespace
-{
+namespace {
 
 /* signal handler */
 void terminate(int i)
@@ -75,7 +77,7 @@ void connect_jack_ports(void)
         else {
             vector<string> portnames;
             boost::split(portnames, input_port, is_any_of(","));
-            for (int i = 0; i != portnames.size(); ++i)
+            for (size_t i = 0; i != portnames.size(); ++i)
                 instance->connect_input(i, portnames[i].c_str());
         }
     }
@@ -89,7 +91,7 @@ void connect_jack_ports(void)
         else {
             vector<string> portnames;
             boost::split(portnames, output_port, is_any_of(","));
-            for (int i = 0; i != portnames.size(); ++i)
+            for (size_t i = 0; i != portnames.size(); ++i)
                 instance->connect_output(i, portnames[i].c_str());
         }
     }
@@ -123,7 +125,7 @@ void start_audio_backend(server_arguments const & args)
     instance->prepare_backend();
     instance->activate_audio();
 
-    int real_sampling_rate = instance->get_samplerate();
+    unsigned int real_sampling_rate = instance->get_samplerate();
 
     if (args.samplerate && args.samplerate != real_sampling_rate) {
         cout << "samplerate mismatch between command line argument and jack" << endl;
@@ -144,12 +146,14 @@ void start_audio_backend(server_arguments const & args)
     bool success = instance->open_stream(args.hw_name, args.input_channels, args.hw_name, args.output_channels,
         args.samplerate, args.blocksize, args.blocksize);
 
-    if (!success)
+    if (!success) {
+        cout << "could not open portaudio device name:" << args.hw_name << endl;
         exit(1);
-
+    }
+    cout << "opened portaudio device name:" << args.hw_name << endl;
     instance->prepare_backend();
     instance->activate_audio();
-    instance->start_receive_thread();
+    instance->start_dsp_threads();
 }
 
 #else
@@ -173,6 +177,9 @@ boost::filesystem::path resolve_home(void)
 #elif defined(__APPLE__)
     path home(getenv("HOME"));
     return home;
+#elif defined(_WIN32)
+    path home(getenv("USERPROFILE"));
+    return home;
 #else
 #error platform not supported
 #endif
@@ -183,21 +190,27 @@ void set_plugin_paths(void)
     server_arguments const & args = server_arguments::instance();
 
     if (!args.ugen_paths.empty()) {
-        foreach(string const & path, args.ugen_paths)
+        for(string const & path : args.ugen_paths)
             sc_factory->load_plugin_folder(path);
     } else {
-        path home = resolve_home();
-
 #ifdef __linux__
-        sc_factory->load_plugin_folder("/usr/local/lib/supernova/plugins");
-        sc_factory->load_plugin_folder("/usr/lib/supernova/plugins");
-        sc_factory->load_plugin_folder(home / "/.local/share/SuperCollider/supernova_plugins");
-        sc_factory->load_plugin_folder(home / "share/SuperCollider/supernova_plugins");
-#elif defined(__APPLE__)
-        sc_factory->load_plugin_folder(home / "Library/Application Support/SuperCollider/supernova_plugins/");
-        sc_factory->load_plugin_folder("/Library/Application Support/SuperCollider/supernova_plugins/");
+        path home = resolve_home();
+        sc_factory->load_plugin_folder("/usr/local/lib/SuperCollider/plugins");
+        sc_factory->load_plugin_folder("/usr/lib/SuperCollider/plugins");
+        sc_factory->load_plugin_folder(home / "/.local/share/SuperCollider/plugins");
+        sc_factory->load_plugin_folder(home / "share/SuperCollider/plugins");
 #else
-        cerr << "Don't know how to locate plugins on this platform. Please specify search path in command line."
+        char plugin_dir[MAXPATHLEN];
+        sc_GetResourceDirectory(plugin_dir, MAXPATHLEN);
+        sc_AppendToPath(plugin_dir, MAXPATHLEN, "plugins");
+
+        char extension_dir[MAXPATHLEN];
+
+        sc_GetSystemExtensionDirectory(extension_dir, MAXPATHLEN);
+        sc_factory->load_plugin_folder(path(extension_dir) / "plugins");
+
+        sc_GetUserExtensionDirectory(extension_dir, MAXPATHLEN);
+        sc_factory->load_plugin_folder(path(extension_dir) / "plugins");
 #endif
     }
 
@@ -211,20 +224,22 @@ void load_synthdef_folder(nova_server & server, path const & folder, bool verbos
     if (verbose)
         std::printf("Loading synthdefs from path: %s\n", folder.c_str());
 
-#ifdef BOOST_HAS_RVALUE_REFS
     register_synthdefs(server, std::move(sc_read_synthdefs_dir(folder)));
-#else
-    register_synthdefs(server, sc_read_synthdefs_dir(folder));
-#endif
 }
 
 void load_synthdefs(nova_server & server, server_arguments const & args)
 {
+#ifndef _WIN32
+    const char pathSeparator[] = ":";
+#else
+    const char pathSeparator[] = ";";
+#endif
+
     if (args.load_synthdefs) {
         const char * env_synthdef_path = getenv("SC_SYNTHDEF_PATH");
         vector<path> directories;
         if (env_synthdef_path) {
-            boost::split(directories, env_synthdef_path, boost::is_any_of(":"));
+            boost::split(directories, env_synthdef_path, boost::is_any_of(pathSeparator));
         } else {
             char resourceDir[MAXPATHLEN];
             if(sc_IsStandAlone())
@@ -235,7 +250,7 @@ void load_synthdefs(nova_server & server, server_arguments const & args)
             directories.push_back(path(resourceDir) / "synthdefs");
         }
 
-        foreach(path const & directory, directories)
+        for(path const & directory : directories)
             load_synthdef_folder(server, directory, args.verbosity > 0);
     }
 #ifndef NDEBUG
@@ -250,11 +265,20 @@ void drop_rt_scheduling()
         cerr << "Warning: cannot drop rt priority" << endl;
 }
 
+void enable_core_dumps(void)
+{
+#ifdef __LINUX__
+    rlimit core_limit = { RLIM_INFINITY, RLIM_INFINITY };
+    assert( setrlimit( RLIMIT_CORE, &core_limit ) == 0 ); // enable core dumps for debug builds
+#endif
+}
+
 } /* namespace */
 
 int main(int argc, char * argv[])
 {
     drop_rt_scheduling(); // when being called from sclang, we inherit a low rt-scheduling priority. but we don't want it!
+    enable_core_dumps();
 
     server_arguments::initialize(argc, argv);
     server_arguments const & args = server_arguments::instance();
diff --git a/server/supernova/server/node_graph.cpp b/server/supernova/server/node_graph.cpp
index 1a2141d..c1299e7 100644
--- a/server/supernova/server/node_graph.cpp
+++ b/server/supernova/server/node_graph.cpp
@@ -26,8 +26,7 @@
 
 #include "dsp_thread_queue/dsp_thread_queue.hpp"
 
-namespace nova
-{
+namespace nova {
 
 void node_graph::add_node(server_node * n, node_position_constraint const & constraint)
 {
@@ -96,7 +95,7 @@ void node_graph::remove_node(server_node * n)
     if (!n->is_synth())
         group_free_all(static_cast<abstract_group*>(n));
 
-    node_set.erase(*n);
+    release_node_id(n);
     /** \todo recursively remove nodes from node_set
      *        for now this is done by the auto-unlink hook
      * */
@@ -135,7 +134,7 @@ void node_graph::synth_reassign_id(int32_t node_id)
         hidden_id = -std::abs<int32_t>(hasher(node_id));
 
     assert(hidden_id < 0);
-    node_set.erase(*node);
+    release_node_id(node);
     node->reset_id(hidden_id);
     node_set.insert(*node);
 }
@@ -168,12 +167,14 @@ abstract_group::~abstract_group(void)
 
 void abstract_group::pause(void)
 {
-    std::for_each(child_nodes.begin(), child_nodes.end(), boost::bind(&server_node::pause, _1));
+    for (server_node & node : child_nodes)
+        node.pause();
 }
 
 void abstract_group::resume(void)
 {
-    std::for_each(child_nodes.begin(), child_nodes.end(), boost::bind(&server_node::resume, _1));
+    for (server_node & node : child_nodes)
+        node.resume();
 }
 
 void abstract_group::add_child(server_node * node)
diff --git a/server/supernova/server/node_graph.hpp b/server/supernova/server/node_graph.hpp
index ca02ee3..858b494 100644
--- a/server/supernova/server/node_graph.hpp
+++ b/server/supernova/server/node_graph.hpp
@@ -29,8 +29,7 @@
 
 #include "dsp_thread_queue/dsp_thread_queue.hpp"
 
-namespace nova
-{
+namespace nova {
 
 class node_graph
 {
@@ -48,8 +47,8 @@ public:
      *
      * - initialize root node */
     node_graph(void):
-        root_group_(0), synth_count_(0), group_count_(1),
-        node_set(node_set_type::bucket_traits(node_buckets, node_set_bucket_count)), generated_id(-2)
+        root_group_(0), generated_id(-2), synth_count_(0), group_count_(1),
+        node_set(node_set_type::bucket_traits(node_buckets, node_set_bucket_count))
     {
         root_group_.add_ref();
         node_set.insert(root_group_);
@@ -81,11 +80,7 @@ public:
         return &root_group_/* .get() */;
     }
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
     typedef std::unique_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
-#else
-    typedef std::auto_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
-#endif
 
     dsp_thread_queue_ptr generate_dsp_queue(void);
 
@@ -132,8 +127,14 @@ public:
 
     bool group_free_all(abstract_group * group)
     {
-        size_t synths, groups;
-        boost::tie(synths, groups) = group->child_count_deep();
+        size_t synths = 0, groups = 0;
+        group->apply_deep_on_children([&](server_node & node) {
+            release_node_id(&node);
+            if (node.is_synth())
+                synths += 1;
+            else
+                groups += 1;
+        });
 
         group->free_children();
         synth_count_ -= synths;
@@ -143,14 +144,24 @@ public:
 
     bool group_free_deep(abstract_group * group)
     {
-        size_t synths, groups;
-        boost::tie(synths, groups) = group->child_count_deep();
+        size_t synths;
+        group->apply_deep_on_children([&](server_node & node) {
+             if (node.is_synth()) {
+                 release_node_id(&node);
+                 synths += 1;
+             }
+        });
 
         group->free_synths_deep();
         synth_count_ -= synths;
         return true;
     }
 
+    void release_node_id(server_node * node)
+    {
+        node_set.erase(*node);
+    }
+
 private:
     struct equal_node
     {
diff --git a/server/supernova/server/node_types.hpp b/server/supernova/server/node_types.hpp
index 3966caa..15b054d 100644
--- a/server/supernova/server/node_types.hpp
+++ b/server/supernova/server/node_types.hpp
@@ -25,11 +25,10 @@
 #include <boost/intrusive_ptr.hpp>
 
 #include "memory_pool.hpp"
-#include "synth_prototype.hpp"
+#include "synth_definition.hpp"
 #include "utilities/static_pool.hpp"
 
-namespace nova
-{
+namespace nova {
 
 class server_node;
 
diff --git a/server/supernova/server/nrt_synthesis.hpp b/server/supernova/server/nrt_synthesis.hpp
index bec50e3..27c5f42 100644
--- a/server/supernova/server/nrt_synthesis.hpp
+++ b/server/supernova/server/nrt_synthesis.hpp
@@ -19,8 +19,8 @@
 #define SERVER_NRT_SYNTHESIS_HPP
 
 #include <iostream>
-#include <string>
 #include <fstream>
+#include <string>
 
 #include <boost/integer/endian.hpp>
 
@@ -29,8 +29,7 @@
 #include "audio_backend/sndfile_backend.hpp"
 #include "sc/sc_plugin_interface.hpp"
 
-namespace nova
-{
+namespace nova {
 
 struct non_rt_functor
 {
@@ -59,7 +58,7 @@ struct non_realtime_synthesis_engine
         if (input_file == string("_"))
             input_file.clear();
 
-        backend.open_client(input_file, args.output_file, args.samplerate, format, args.output_channels);
+        backend.open_client(input_file, args.output_file, args.samplerate, format, args.output_channels, args.blocksize);
 
         command_stream.open(args.command_file.c_str(), std::fstream::in | std::fstream::binary);
 
@@ -84,16 +83,13 @@ struct non_realtime_synthesis_engine
 
     void run(void)
     {
-        backend.activate_audio();
-
-        boost::array<char, 16384> packet_buffer;
-
         using namespace std;
+        array<char, 16384> packet_buffer;
 
         cout << "Starting non-rt synthesis" << endl;
+        backend.activate_audio();
 
-        while (!command_stream.eof())
-        {
+        while (!command_stream.eof()) {
             boost::integer::big32_t packet_size;
             command_stream.read((char*)&packet_size, sizeof(packet_size));
 
@@ -104,12 +100,11 @@ struct non_realtime_synthesis_engine
 
             cout << "Next OSC bundle " << bundle_time.get_secs() << "." << bundle_time.get_nanoseconds() << endl;
 
-            while (instance->current_time() < bundle_time)
-            {
+            while (instance->current_time() < bundle_time) {
                 if (has_inputs)
-                    backend.audio_fn(64);
+                    backend.audio_fn(samples_per_block);
                 else
-                    backend.audio_fn_noinput(64);
+                    backend.audio_fn_noinput(samples_per_block);
             }
         }
         backend.deactivate_audio();
diff --git a/server/supernova/server/server.cpp b/server/supernova/server/server.cpp
index e27a1ff..cf7b6bc 100644
--- a/server/supernova/server/server.cpp
+++ b/server/supernova/server/server.cpp
@@ -27,7 +27,7 @@
 
 #include "nrt_synthesis.hpp"
 
-#include "sc/sc_synth_prototype.hpp"
+#include "sc/sc_synth_definition.hpp"
 #include "sc/sc_ugen_factory.hpp"
 
 #ifdef __APPLE__
@@ -42,13 +42,16 @@ namespace nova
 class nova_server * instance = 0;
 
 nova_server::nova_server(server_arguments const & args):
-    scheduler<nova::scheduler_hook, thread_init_functor>(args.threads, !args.non_rt),
     server_shared_memory_creator(args.port(), args.control_busses),
-    buffer_manager(1024), sc_osc_handler(args), dsp_queue_dirty(false)
+    scheduler<nova::scheduler_hook, thread_init_functor>(args.threads, !args.non_rt),
+    buffer_manager(args.buffers), sc_osc_handler(args), dsp_queue_dirty(false)
 {
     assert(instance == 0);
-    io_interpreter.start_thread();
     instance = this;
+
+    if (!args.non_rt)
+        io_interpreter.start_thread();
+
     sc_factory = new sc_ugen_factory;
     sc_factory->initialize(args, server_shared_memory_creator::shm->get_control_busses());
 
@@ -56,7 +59,8 @@ nova_server::nova_server(server_arguments const & args):
     /** first guess: needs to be updated, once the backend is started */
     time_per_tick = time_tag::from_samples(args.blocksize, args.samplerate);
 
-    start_receive_thread();
+    if (!args.non_rt)
+        start_receive_thread();
 }
 
 void nova_server::prepare_backend(void)
@@ -106,7 +110,6 @@ abstract_synth * nova_server::add_synth(const char * name, int id, node_position
     if (ret == 0)
         return 0;
 
-    server_node * node_to_replace = NULL;
     if (constraints.second == replace)
         notification_node_ended(constraints.first);
 
@@ -169,41 +172,11 @@ void nova_server::run_nonrt_synthesis(server_arguments const & args)
     engine.run();
 }
 
-namespace
-{
-
-struct register_prototype_cb:
-    public audio_sync_callback
-{
-    register_prototype_cb (synth_prototype_ptr const & prototype):
-        prototype(prototype)
-    {}
-
-    void run(void)
-    {
-        instance->synth_factory::register_prototype(prototype);
-    }
-
-    synth_prototype_ptr prototype;
-};
-
-} /* namespace */
-
-void nova_server::register_prototype(synth_prototype_ptr const & prototype)
-{
-    scheduler<scheduler_hook, thread_init_functor>::add_sync_callback(new register_prototype_cb(prototype));
-}
-
-
 void nova_server::rebuild_dsp_queue(void)
 {
     assert(dsp_queue_dirty);
     node_graph::dsp_thread_queue_ptr new_queue = node_graph::generate_dsp_queue();
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
     scheduler<scheduler_hook, thread_init_functor>::reset_queue_sync(std::move(new_queue));
-#else
-    scheduler<scheduler_hook, thread_init_functor>::reset_queue_sync(new_queue);
-#endif
     dsp_queue_dirty = false;
 }
 
@@ -254,7 +227,7 @@ void thread_init_functor::operator()(int thread_index)
     }
 
     if (!thread_set_affinity(thread_index))
-        std::cerr << "Warning: cannot set thread affinity of dsp thread" << std::endl;
+        std::cerr << "Warning: cannot set thread affinity of audio helper thread" << std::endl;
 }
 
 void io_thread_init_functor::operator()() const
@@ -270,10 +243,10 @@ void io_thread_init_functor::operator()() const
     name_thread("Network Send");
 }
 
-void synth_prototype_deleter::dispose(synth_prototype * ptr)
+void synth_definition_deleter::dispose(synth_definition * ptr)
 {
     if (instance) /// todo: hack to fix test suite
-        instance->add_system_callback(new delete_callback<synth_prototype>(ptr));
+        instance->add_system_callback(new delete_callback<synth_definition>(ptr));
     else
         delete ptr;
 }
@@ -281,7 +254,7 @@ void synth_prototype_deleter::dispose(synth_prototype * ptr)
 void realtime_engine_functor::init_thread(void)
 {
     if (!thread_set_affinity(0))
-        std::cerr << "Warning: cannot set thread affinity of jack thread" << std::endl;
+        std::cerr << "Warning: cannot set thread affinity of main audio thread" << std::endl;
 
     name_current_thread(0);
 }
diff --git a/server/supernova/server/server.hpp b/server/supernova/server/server.hpp
index 1ec7ba3..b2e2f9a 100644
--- a/server/supernova/server/server.hpp
+++ b/server/supernova/server/server.hpp
@@ -19,8 +19,6 @@
 #ifndef SERVER_NOVA_SERVER_HPP
 #define SERVER_NOVA_SERVER_HPP
 
-#include <boost/thread.hpp>
-
 #include "buffer_manager.hpp"
 #include "memory_pool.hpp"
 #include "node_graph.hpp"
@@ -179,6 +177,11 @@ public:
         system_interpreter.run();
     }
 
+    void prepare_to_terminate()
+    {
+        server_shared_memory_creator::disconnect();
+    }
+
     void terminate(void)
     {
         system_interpreter.terminate();
@@ -198,18 +201,13 @@ private:
         return success;
     }
 
-    static void free_all_notify(nova_server * server, server_node const & node)
-    {
-        server->notification_node_ended(&node);
-    }
-
     static void free_deep_notify(nova_server * server, server_node & node)
     {
         if (node.is_synth())
             server->notification_node_ended(&node);
         else {
             abstract_group * group = static_cast<abstract_group*>(&node);
-            group->apply_on_children(boost::bind(nova_server::free_deep_notify, server, _1));
+            group->apply_on_children(std::bind(nova_server::free_deep_notify, server, std::placeholders::_1));
         }
     }
 
@@ -226,14 +224,21 @@ public:
     bool group_free_all(abstract_group * group)
     {
         /// todo: later we want to traverse the node graph only once
-        group->apply_on_children(boost::bind(free_all_notify, this, _1));
+        group->apply_on_children( [&](server_node const & node) {
+            this->notification_node_ended(&node);
+        });
+
         return group_free_implementation<&node_graph::group_free_all>(group);
     }
 
     bool group_free_deep(abstract_group * group)
     {
         /// todo: later we want to traverse the node graph only once
-        group->apply_on_children(boost::bind(nova_server::free_deep_notify, this, _1));
+
+        group->apply_on_children( [&](server_node & node) {
+            free_deep_notify(this, node);
+        });
+
         return group_free_implementation<&node_graph::group_free_deep>(group);
     }
 
@@ -253,11 +258,9 @@ public:
     void set_node_slot(int node_id, const char * slot, float value);
     /* @} */
 
-    void register_prototype(synth_prototype_ptr const & prototype);
-
     void cpu_load(float & peak, float & average) const
     {
-#ifdef JACK_BACKEND
+#if defined(JACK_BACKEND) || defined(PORTAUDIO_BACKEND)
         return get_cpuload(peak, average);
 #else
         peak = average = 0.f;
diff --git a/server/supernova/server/server_args.cpp b/server/supernova/server/server_args.cpp
index db40268..238e02a 100644
--- a/server/supernova/server/server_args.cpp
+++ b/server/supernova/server/server_args.cpp
@@ -17,17 +17,14 @@
 //  Boston, MA 02111-1307, USA.
 
 #include <iostream>
+#include <thread>
 
 #include <boost/lexical_cast.hpp>
 #include <boost/program_options.hpp>
-#include <boost/thread.hpp>
-
 
 #include "server_args.hpp"
 
-
-namespace nova
-{
+namespace nova {
 
 server_arguments::server_arguments(int argc, char * argv[])
 {
@@ -51,7 +48,7 @@ server_arguments::server_arguments(int argc, char * argv[])
         ("rt-memory,m", value<uint32_t>(&rt_pool_size)->default_value(8192),
          "size of real-time memory pool in kb")
         ("wires,w", value<uint32_t>(&wires)->default_value(64), "number of wire buffers")
-        ("randomseeds,r", value<uint32_t>(&randomseeds)->default_value(64), "number of random seeds")
+        ("randomseeds,r", value<uint32_t>(&rng_count)->default_value(64), "number of random number generators")
         ("load-synthdefs,D", value<uint16_t>(&load_synthdefs)->default_value(1), "load synthdefs? (1 or 0)")
         ("rendezvous,R", value<uint16_t>()->default_value(1), "publish to Rendezvous? (1 or 0)")
         ("max-logins,l", value<uint32_t>()->default_value(64), "maximum number of named return addresses")
@@ -67,7 +64,7 @@ server_arguments::server_arguments(int argc, char * argv[])
         ("ugen-search-path,U", value<std::vector<std::string> >(&ugen_paths), "a colon-separated list of paths\n"
                                                                  "if -U is specified, the standard paths are NOT searched for plugins.")
         ("restricted-path,P", value<std::vector<std::string> >(&restrict_paths), "if specified, prevents file-accessing OSC commands from accessing files outside <restricted-path>")
-        ("threads,T", value<uint16_t>(&threads)->default_value(boost::thread::hardware_concurrency()), "number of audio threads")
+        ("threads,T", value<uint16_t>(&threads)->default_value(std::thread::hardware_concurrency()), "number of audio threads")
         ;
 
     options_description audio_options("audio options");
@@ -127,6 +124,6 @@ server_arguments::server_arguments(int argc, char * argv[])
     }
 }
 
-std::auto_ptr<server_arguments> server_arguments::instance_;
+std::unique_ptr<server_arguments> server_arguments::instance_;
 
 } /* namespace nova */
diff --git a/server/supernova/server/server_args.hpp b/server/supernova/server/server_args.hpp
index 1fe1b06..6398380 100644
--- a/server/supernova/server/server_args.hpp
+++ b/server/supernova/server/server_args.hpp
@@ -24,8 +24,7 @@
 #include <vector>
 #include <memory>
 
-namespace nova
-{
+namespace nova {
 
 class server_arguments
 {
@@ -63,7 +62,7 @@ public:
     uint32_t buffers, max_nodes, max_synthdefs;
 
     uint32_t rt_pool_size;
-    uint32_t wires, randomseeds;
+    uint32_t wires, rng_count;
 
     uint16_t load_synthdefs;
     int16_t verbosity;
@@ -81,7 +80,7 @@ public:
     std::string command_file, input_file, output_file, header_format, sample_format;
 
 private:
-    static std::auto_ptr<server_arguments> instance_;
+    static std::unique_ptr<server_arguments> instance_;
 };
 
 } /* namespace nova */
diff --git a/server/supernova/server/server_scheduler.hpp b/server/supernova/server/server_scheduler.hpp
index 87aefcf..0546096 100644
--- a/server/supernova/server/server_scheduler.hpp
+++ b/server/supernova/server/server_scheduler.hpp
@@ -19,6 +19,8 @@
 #ifndef SERVER_SCHEDULER_HPP
 #define SERVER_SCHEDULER_HPP
 
+#include <mutex>
+
 #include "dsp_thread_queue/dsp_thread.hpp"
 #include "group.hpp"
 #include "memory_pool.hpp"
@@ -76,8 +78,7 @@ class scheduler:
         public audio_sync_callback
     {
     public:
-        reset_queue_cb(scheduler * sched,
-                       dsp_thread_queue_ptr & qptr):
+        reset_queue_cb(scheduler * sched, dsp_thread_queue_ptr & qptr):
             sched(sched), qptr(qptr)
         {}
 
@@ -94,17 +95,10 @@ class scheduler:
 
 protected:
     /* called from the driver callback */
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
     void reset_queue_sync(dsp_thread_queue_ptr && qptr)
     {
         threads.reset_queue(std::move(qptr));
     }
-#else
-    void reset_queue_sync(dsp_thread_queue_ptr & qptr)
-    {
-        threads.reset_queue(qptr);
-    }
-#endif
 
 public:
     /* start thread_count - 1 scheduler threads */
@@ -126,7 +120,7 @@ public:
     void add_sync_callback(audio_sync_callback * cb)
     {
         /* we need to guard, because it can be called from the main (system) thread and the network receiver thread */
-        boost::mutex::scoped_lock lock(sync_mutex);
+        std::lock_guard<std::mutex> lock(sync_mutex);
         cbs.add_callback(cb);
     }
 
@@ -147,7 +141,7 @@ public:
 private:
     callback_system<audio_sync_callback, false> cbs;
     dsp_threads threads;
-    boost::mutex sync_mutex;
+    std::mutex sync_mutex;
 };
 
 } /* namespace nova */
diff --git a/server/supernova/server/synth.hpp b/server/supernova/server/synth.hpp
index c2d97f7..c2bb6df 100644
--- a/server/supernova/server/synth.hpp
+++ b/server/supernova/server/synth.hpp
@@ -22,22 +22,20 @@
 #include <cassert>
 #include <iostream>
 
-#include <boost/cstdint.hpp>
+#include <cstdint>
 
 #include "node_types.hpp"
-#include "synth_prototype.hpp"
+#include "synth_definition.hpp"
 #include "utilities/time_tag.hpp"
 
-namespace nova
-{
-namespace detail
-{
+namespace nova   {
+namespace detail {
 
 /** wrapper class implementing the functionality of synth, that accesses its prototype */
-class synth_prototype_instance
+class synth_definition_instance
 {
 public:
-    synth_prototype_instance(synth_prototype_ptr const & ptr):
+    synth_definition_instance(synth_definition_ptr const & ptr):
         class_ptr(ptr)
     {}
 
@@ -51,35 +49,47 @@ public:
         return class_ptr->resolve_slot(str, hashed_str);
     }
 
-    const char * prototype_name(void) const
+    const char * definition_name(void) const
     {
         return class_ptr->name();
     }
 
+    size_t number_of_slots() const
+    {
+        return class_ptr->number_of_slots();
+    }
+
+    const char * name_of_slot(size_t index) const
+    {
+        return class_ptr->name_of_slot(index);
+    }
+
 protected:
-    synth_prototype_ptr class_ptr;
+    synth_definition_ptr class_ptr;
 };
 
 } /* namespace detail */
 
 class abstract_synth:
     public server_node,
-    public detail::synth_prototype_instance
+    public detail::synth_definition_instance
 {
 public:
     typedef float sample;
-    typedef boost::uint_fast16_t samplecount_t;
+    typedef std::uint_fast16_t samplecount_t;
 
-    typedef detail::synth_prototype_instance prototype_instance;
+    typedef detail::synth_definition_instance definition_instance;
 
 protected:
-    abstract_synth(int node_id, synth_prototype_ptr const & prototype):
-        server_node(node_id, true), prototype_instance(prototype)
+    abstract_synth(int node_id, synth_definition_ptr const & definition):
+        server_node(node_id, true), definition_instance(definition)
     {}
 
 public:
     virtual void run(void) = 0;
 
+    virtual float get(slot_index_t slot_id) const = 0;
+
     /** set a slot */
     /* @{ */
     virtual void set(slot_index_t slot_id, float val) = 0;
@@ -91,7 +101,7 @@ public:
 
     void set(const char * slot_str, size_t hashed_str, sample val)
     {
-        slot_index_t slot_id = prototype_instance::resolve_slot(slot_str, hashed_str);
+        slot_index_t slot_id = definition_instance::resolve_slot(slot_str, hashed_str);
         if (likely(slot_id >= 0))
             this->set(slot_id, val);
     }
@@ -103,7 +113,7 @@ public:
 
     void set_control_array(const char * slot_str, size_t hashed_str, size_t count, sample * val)
     {
-        slot_index_t slot_id = prototype_instance::resolve_slot(slot_str, hashed_str);
+        slot_index_t slot_id = definition_instance::resolve_slot(slot_str, hashed_str);
         if (likely(slot_id >= 0))
             for (size_t i = 0; i != count; ++i)
                 this->set(slot_id+i, val[i]);
@@ -123,7 +133,7 @@ public:
 
     void set_control_array_element(const char * slot_str, size_t hashed_str, size_t index, sample val)
     {
-        slot_index_t slot_id = prototype_instance::resolve_slot(slot_str, hashed_str);
+        slot_index_t slot_id = definition_instance::resolve_slot(slot_str, hashed_str);
         this->set(slot_id + index, val);
     }
     /* @} */
diff --git a/server/supernova/server/synth_definition.hpp b/server/supernova/server/synth_definition.hpp
new file mode 100644
index 0000000..8f05441
--- /dev/null
+++ b/server/supernova/server/synth_definition.hpp
@@ -0,0 +1,184 @@
+//  synth prototype
+//  Copyright (C) 2008 Tim Blechmann
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; see the file COPYING.  If not, write to
+//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+//  Boston, MA 02111-1307, USA.
+
+#ifndef SERVER_synth_definition_HPP
+#define SERVER_synth_definition_HPP
+
+#include <cassert>
+#include <cstdint>
+
+#include <boost/checked_delete.hpp>
+#include <boost/intrusive/unordered_set.hpp>
+
+#include "utilities/aligned_class.hpp"
+#include "utilities/named_hash_entry.hpp"
+#include "utilities/utils.hpp"
+
+namespace nova {
+
+typedef std::int32_t slot_index_t;
+typedef c_string slot_identifier_type;
+
+namespace detail {
+
+/** class to resolve alphanumeric string to slot id */
+class slot_resolver
+{
+protected:
+    struct map_type:
+        public named_hash_entry
+    {
+        map_type(slot_identifier_type const & name, slot_index_t index):
+            named_hash_entry(name), index(index)
+        {}
+
+        slot_index_t index;
+    };
+
+private:
+    struct hash_value
+    {
+        hash_value(std::size_t v):
+            value(v)
+        {}
+
+        std::size_t operator()(const char *) const
+        {
+            return value;
+        }
+
+        std::size_t value;
+    };
+
+    bool exists(const char * str) const
+    {
+        return slot_resolver_map.find(str, named_hash_hash(), named_hash_equal()) != slot_resolver_map.end();
+    }
+
+protected:
+    slot_resolver(void):
+        slot_resolver_map(slot_resolver_map_t::bucket_traits(buckets, resolver_map_bucket_count))
+    {}
+
+    ~slot_resolver(void)
+    {
+        slot_resolver_map.clear_and_dispose(boost::checked_deleter<map_type>());
+    }
+
+    void register_slot(c_string const & str, slot_index_t i)
+    {
+        assert(not exists(str.c_str()));
+        map_type * elem = new map_type(str, i);
+        bool success = slot_resolver_map.insert(*elem).second;
+        assert(success);
+
+        if (size_t(i) >= slot_names.size())
+            slot_names.resize(i+1, nullptr);
+        slot_names[i] = elem->name();
+    }
+
+public:
+    /*@{*/
+    /** resolve slot by symbolic name
+     *
+     *  \return nonnegative index of slot
+     *          -1, if symbolic name cannot be resolved
+     */
+    slot_index_t resolve_slot(const char * str) const
+    {
+        return resolve_slot(str, string_hash(str));
+    }
+
+    slot_index_t resolve_slot(const char * str, std::size_t hashed_value) const
+    {
+        slot_resolver_map_t::const_iterator it = slot_resolver_map.find(str, hash_value(hashed_value), named_hash_equal());
+        if (it == slot_resolver_map.end())
+            return -1;
+        else
+            return it->index;
+    }
+    /*@}*/
+
+    size_t number_of_slots() const
+    {
+        return slot_names.size();
+    }
+
+    const char * name_of_slot(size_t slot_index) const
+    {
+        assert(slot_index < slot_names.size());
+        return slot_names[slot_index];
+    }
+
+private:
+    static const int resolver_map_bucket_count = 512;
+
+    typedef boost::intrusive::unordered_set<map_type,
+                                            boost::intrusive::power_2_buckets<true>
+                                           > slot_resolver_map_t;
+    slot_resolver_map_t::bucket_type buckets[resolver_map_bucket_count];
+    slot_resolver_map_t slot_resolver_map;
+
+    std::vector<const char *> slot_names;
+};
+
+} /* namespace detail */
+
+class abstract_synth;
+
+struct synth_definition_deleter
+{
+    template <typename T>
+    void operator()(T * ptr)
+    {
+        dispose (static_cast<class synth_definition *>(ptr));
+    }
+
+    void dispose(class synth_definition *);
+};
+
+/** prototype of a synth
+ *
+ * - works as a synth factory
+ *
+ * */
+class synth_definition:
+    public aligned_class,
+    public named_hash_entry,
+    public intrusive_refcountable<>,
+    public detail::slot_resolver
+{
+public:
+    synth_definition(c_string const & name):
+        named_hash_entry(name)
+    {}
+
+    virtual ~synth_definition(void)
+    {}
+
+    virtual abstract_synth * create_instance(int node_id) = 0;
+
+    template <typename synth_t>
+    static inline synth_t * allocate(void);
+};
+
+typedef boost::intrusive_ptr<synth_definition> synth_definition_ptr;
+
+} /* namespace nova */
+
+#endif /* SERVER_synth_definition_HPP */
diff --git a/server/supernova/server/synth_factory.hpp b/server/supernova/server/synth_factory.hpp
index 5815570..ecb5982 100644
--- a/server/supernova/server/synth_factory.hpp
+++ b/server/supernova/server/synth_factory.hpp
@@ -23,58 +23,58 @@
 #include <string>
 
 #include "synth.hpp"
-#include "synth_prototype.hpp"
+#include "synth_definition.hpp"
 
 namespace nova {
 
 class synth_factory
 {
 public:
-    void register_prototype(synth_prototype_ptr const & prototype)
+    void register_definition(synth_definition_ptr const & prototype)
     {
-        prototype_map_type::iterator it = prototype_map.find(prototype->name(), named_hash_hash(), named_hash_equal());
-        if (it != prototype_map.end()) {
-            prototype_map.erase(it);
+        prototype_map_type::iterator it = definition_map.find(prototype->name(), named_hash_hash(), named_hash_equal());
+        if (it != definition_map.end()) {
+            definition_map.erase(it);
             it->release();
         }
 
-        prototype_map.insert(*prototype.get());
+        definition_map.insert(*prototype.get());
         prototype->add_ref();
     }
 
     abstract_synth * create_instance(const char * name, int node_id)
     {
-        prototype_map_type::iterator it = prototype_map.find(name, named_hash_hash(), named_hash_equal());
-        if (it == prototype_map.end())
+        prototype_map_type::iterator it = definition_map.find(name, named_hash_hash(), named_hash_equal());
+        if (it == definition_map.end())
             return 0;
 
         return it->create_instance(node_id);
     }
 
-    void remove_prototype(const char * name)
+    void remove_definition(const char * name)
     {
-        prototype_map_type::iterator it = prototype_map.find(name, named_hash_hash(), named_hash_equal());
-        if (it == prototype_map.end())
+        prototype_map_type::iterator it = definition_map.find(name, named_hash_hash(), named_hash_equal());
+        if (it == definition_map.end())
             return;
 
-        prototype_map.erase(it);
+        definition_map.erase(it);
         it->release();
     }
 
-    std::size_t prototype_count(void) const
+    std::size_t definition_count(void) const
     {
-        return prototype_map.size();
+        return definition_map.size();
     }
 
     synth_factory(void):
-        prototype_map(prototype_map_type::bucket_traits(buckets, bucket_count))
+        definition_map(prototype_map_type::bucket_traits(buckets, bucket_count))
     {}
 
     ~synth_factory(void)
     {
-        while(prototype_map.begin() != prototype_map.end()) {
-            prototype_map_type::iterator it = prototype_map.begin();
-            prototype_map.erase(it);
+        while(definition_map.begin() != definition_map.end()) {
+            prototype_map_type::iterator it = definition_map.begin();
+            definition_map.erase(it);
             it->release();
         }
     }
@@ -82,11 +82,11 @@ public:
 private:
     static const int bucket_count = 2048;
 
-    typedef boost::intrusive::unordered_set<synth_prototype,
+    typedef boost::intrusive::unordered_set<synth_definition,
                                             boost::intrusive::power_2_buckets<true>
                                            > prototype_map_type;
     prototype_map_type::bucket_type buckets[bucket_count];
-    prototype_map_type prototype_map;
+    prototype_map_type definition_map;
 };
 
 } /* namespace nova */
diff --git a/server/supernova/server/synth_prototype.hpp b/server/supernova/server/synth_prototype.hpp
deleted file mode 100644
index c55afc7..0000000
--- a/server/supernova/server/synth_prototype.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-//  synth prototype
-//  Copyright (C) 2008 Tim Blechmann
-//
-//  This program is free software; you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation; either version 2 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program; see the file COPYING.  If not, write to
-//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-//  Boston, MA 02111-1307, USA.
-
-#ifndef SERVER_SYNTH_PROTOTYPE_HPP
-#define SERVER_SYNTH_PROTOTYPE_HPP
-
-#include <cassert>
-
-#include <boost/cstdint.hpp>
-#include <boost/checked_delete.hpp>
-#include <boost/intrusive/unordered_set.hpp>
-
-#include "utilities/aligned_class.hpp"
-#include "utilities/named_hash_entry.hpp"
-#include "utilities/utils.hpp"
-
-namespace nova {
-
-typedef boost::int16_t slot_index_t;
-typedef c_string slot_identifier_type;
-
-namespace detail {
-
-/** class to resolve alphanumeric string to slot id */
-class slot_resolver
-{
-protected:
-    struct map_type:
-        public named_hash_entry
-    {
-        map_type(slot_identifier_type const & name, slot_index_t index):
-            named_hash_entry(name), index(index)
-        {}
-
-        slot_index_t index;
-    };
-
-private:
-    struct hash_value
-    {
-        hash_value(std::size_t v):
-            value(v)
-        {}
-
-        std::size_t operator()(const char *) const
-        {
-            return value;
-        }
-
-        std::size_t value;
-    };
-
-    bool exists(const char * str) const
-    {
-        return slot_resolver_map.find(str, named_hash_hash(), named_hash_equal()) != slot_resolver_map.end();
-    }
-
-protected:
-    slot_resolver(void):
-        slot_resolver_map(slot_resolver_map_t::bucket_traits(buckets, resolver_map_bucket_count))
-    {}
-
-    ~slot_resolver(void)
-    {
-        slot_resolver_map.clear_and_dispose(boost::checked_deleter<map_type>());
-    }
-
-    void register_slot(c_string const & str, slot_index_t i)
-    {
-        assert(not exists(str.c_str()));
-        map_type * elem = new map_type(str, i);
-        bool success = slot_resolver_map.insert(*elem).second;
-        assert(success);
-    }
-
-public:
-    /*@{*/
-    /** resolve slot by symbolic name
-     *
-     *  \return nonnegative index of slot
-     *          -1, if symbolic name cannot be resolved
-     */
-    slot_index_t resolve_slot(const char * str) const
-    {
-        return resolve_slot(str, string_hash(str));
-    }
-
-    slot_index_t resolve_slot(const char * str, std::size_t hashed_value) const
-    {
-        slot_resolver_map_t::const_iterator it = slot_resolver_map.find(str, hash_value(hashed_value), named_hash_equal());
-        if (it == slot_resolver_map.end())
-            return -1;
-        else
-            return it->index;
-    }
-    /*@}*/
-
-private:
-    static const int resolver_map_bucket_count = 512;
-
-    typedef boost::intrusive::unordered_set<map_type,
-                                            boost::intrusive::power_2_buckets<true>
-                                           > slot_resolver_map_t;
-    slot_resolver_map_t::bucket_type buckets[resolver_map_bucket_count];
-    slot_resolver_map_t slot_resolver_map;
-};
-
-} /* namespace detail */
-
-class abstract_synth;
-
-struct synth_prototype_deleter
-{
-    template <typename T>
-    void operator()(T * ptr)
-    {
-        dispose (static_cast<class synth_prototype *>(ptr));
-    }
-
-    void dispose(class synth_prototype *);
-};
-
-/** prototype of a synth
- *
- * - works as a synth factory
- *
- * */
-class synth_prototype:
-    public aligned_class,
-    public named_hash_entry,
-    public intrusive_refcountable<>,
-    public detail::slot_resolver
-{
-public:
-    synth_prototype(c_string const & name):
-        named_hash_entry(name)
-    {}
-
-    virtual ~synth_prototype(void)
-    {}
-
-    virtual abstract_synth * create_instance(int node_id) = 0;
-
-    template <typename synth_t>
-    static inline synth_t * allocate(void);
-};
-
-typedef boost::intrusive_ptr<synth_prototype> synth_prototype_ptr;
-
-} /* namespace nova */
-
-#endif /* SERVER_SYNTH_PROTOTYPE_HPP */
diff --git a/server/supernova/utilities/asynchronous_log.hpp b/server/supernova/utilities/asynchronous_log.hpp
index 2dfca31..70baf7e 100644
--- a/server/supernova/utilities/asynchronous_log.hpp
+++ b/server/supernova/utilities/asynchronous_log.hpp
@@ -23,9 +23,9 @@
 #include <cstdio>
 #include <cstdarg>
 
-#include <boost/bind.hpp>
-#include <boost/thread.hpp>
-#include <boost/lockfree/ringbuffer.hpp>
+#include <thread>
+#include <array>
+#include <boost/lockfree/spsc_queue.hpp>
 #include <boost/mpl/if.hpp>
 
 #include <nova-tt/semaphore.hpp>
@@ -33,8 +33,6 @@
 namespace nova {
 namespace asynchronous_log_impl {
 
-using namespace boost;
-
 struct asynchronous_log:
     noncopyable
 {
@@ -50,13 +48,13 @@ struct asynchronous_log:
 
     bool log_printf(const char *fmt, va_list vargs)
     {
-        array<char, 4096> scratchpad;
-        int print_result = vsnprintf(scratchpad.c_array(), scratchpad.size(), fmt, vargs);
+        std::array<char, 4096> scratchpad;
+        size_t print_result = vsnprintf(scratchpad.data(), scratchpad.size(), fmt, vargs);
 
         if (print_result >= scratchpad.size())
             fprintf(stderr, "warning: log message truncated");
 
-        return log(scratchpad.c_array(), print_result);
+        return log(scratchpad.data(), print_result);
     }
 
     bool log(const char * string)
@@ -67,7 +65,7 @@ struct asynchronous_log:
 
     bool log(const char * string, size_t length)
     {
-        size_t total_enqueued = buffer.enqueue(string, length);
+        size_t total_enqueued = buffer.push(string, length);
         if (total_enqueued == 0)
             return false;
 
@@ -80,7 +78,7 @@ struct asynchronous_log:
         length -= total_enqueued;
 
         for (;;) {
-            size_t enqueued = buffer.enqueue(string, length);
+            size_t enqueued = buffer.push(string, length);
             if (enqueued == 0)
                 continue;
 
@@ -112,7 +110,7 @@ struct asynchronous_log:
 
     size_t read(char * out_buffer, size_t size)
     {
-        return buffer.dequeue(out_buffer, size);
+        return buffer.pop(out_buffer, size);
     }
 
     void interrrupt(void)
@@ -121,7 +119,7 @@ struct asynchronous_log:
     }
 
 private:
-    lockfree::ringbuffer<char, 32768> buffer;
+    boost::lockfree::spsc_queue<char, boost::lockfree::capacity<262144> > buffer;
     nova::semaphore sem;
 };
 
@@ -130,7 +128,7 @@ struct asynchronous_log_thread:
 {
 public:
     asynchronous_log_thread(void):
-        running_flag(true), thread_(bind(&asynchronous_log_thread::run, this))
+        running_flag(true), thread_(std::bind(&asynchronous_log_thread::run, this))
     {}
 
     ~asynchronous_log_thread(void)
@@ -143,15 +141,15 @@ public:
     void run(void)
     {
         while (running_flag.load()) {
-            size_t read_chars = read_log_waiting(out_buffer.c_array(), out_buffer.size());
+            size_t read_chars = read_log_waiting(out_buffer.data(), out_buffer.size());
             post_outbuffer(read_chars);
 
             while (read_chars == out_buffer.size()) {
-                read_chars = read(out_buffer.c_array(), out_buffer.size());
+                read_chars = read(out_buffer.data(), out_buffer.size());
                 post_outbuffer(read_chars);
             }
         }
-        size_t read_chars = read_log(out_buffer.c_array(), out_buffer.size());
+        size_t read_chars = read_log(out_buffer.data(), out_buffer.size());
         post_outbuffer(read_chars);
     }
 
@@ -163,9 +161,9 @@ public:
     }
 
 private:
-    thread thread_;
-    atomic_bool running_flag;
-    array<char, 4096> out_buffer;
+    boost::atomic_bool running_flag;
+    std::thread thread_;
+    std::array<char, 4096> out_buffer;
 };
 
 } /* namespace asynchronous_log_impl */
diff --git a/server/supernova/utilities/callback_interpreter.hpp b/server/supernova/utilities/callback_interpreter.hpp
index e3f1047..acd0f9f 100644
--- a/server/supernova/utilities/callback_interpreter.hpp
+++ b/server/supernova/utilities/callback_interpreter.hpp
@@ -19,6 +19,8 @@
 #ifndef UTILITIES_CALLBACK_INTERPRETER_HPP
 #define UTILITIES_CALLBACK_INTERPRETER_HPP
 
+#include <thread>
+
 #include "branch_hints.hpp"
 #include "callback_system.hpp"
 
@@ -26,21 +28,18 @@
 #include "nova-tt/thread_priority.hpp"
 
 #include <boost/atomic.hpp>
-#include <boost/bind.hpp>
 #include <boost/checked_delete.hpp>
-#include <boost/ref.hpp>
-#include <boost/thread.hpp>
 
 
-namespace nova
-{
+namespace nova {
+
+namespace detail {
 
-namespace detail
-{
 struct nop_functor
 {
     void operator()() const {}
 };
+
 } /* namespace detail */
 
 
@@ -109,7 +108,7 @@ class threaded_callback_interpreter:
 {
     typedef callback_interpreter<callback_type, true, callback_deleter> super;
 
-    boost::thread thread;
+    std::thread callback_thread;
 
 public:
     threaded_callback_interpreter(void)
@@ -125,8 +124,10 @@ public:
     {
         semaphore sync_sem;
         semaphore_sync<semaphore> sync(sync_sem);
-        boost::thread thr(boost::bind(&threaded_callback_interpreter::run_thread, this, boost::ref(sync_sem)));
-        thread = thr.move();
+        std::thread thr( [&]() {
+            this->run_thread(sync_sem);
+        });
+        callback_thread = move(thr);
     }
 
     void run_thread(semaphore & sync_sem)
@@ -138,7 +139,7 @@ public:
     void join_thread(void)
     {
         super::terminate();
-        thread.join();
+        callback_thread.join();
     }
 };
 
@@ -156,8 +157,12 @@ public:
         worker_thread_count_(worker_thread_count), priority(priority), rt(rt)
     {
         semaphore sync_sem;
+        using namespace std;
+
         for (uint16_t i = 0; i != worker_thread_count; ++i)
-            threads.create_thread(boost::bind(&callback_interpreter_threadpool::run, this, boost::ref(sync_sem)));
+            threads.emplace_back( [&] () {
+                this->run(sync_sem);
+            });
 
         for (uint16_t i = 0; i != worker_thread_count; ++i)
             sync_sem.wait();
@@ -175,7 +180,9 @@ public:
 
         for (uint16_t i = 0; i != worker_thread_count_; ++i)
             super::sem.post();
-        threads.join_all();
+
+        for (std::thread & thread : threads)
+            thread.join();
     }
 
 private:
@@ -192,7 +199,7 @@ private:
         super::run(sync_sem);
     }
 
-    boost::thread_group threads;
+    std::vector<std::thread> threads;
     uint16_t worker_thread_count_;
     uint16_t priority;
     bool rt;
diff --git a/server/supernova/utilities/callback_system.hpp b/server/supernova/utilities/callback_system.hpp
index 53db365..b98c441 100644
--- a/server/supernova/utilities/callback_system.hpp
+++ b/server/supernova/utilities/callback_system.hpp
@@ -25,8 +25,8 @@
 
 #include <boost/checked_delete.hpp>
 
-#include <boost/lockfree/ringbuffer.hpp>
-#include <boost/lockfree/fifo.hpp>
+#include <boost/lockfree/spsc_queue.hpp>
+#include <boost/lockfree/queue.hpp>
 
 
 namespace nova {
@@ -38,8 +38,8 @@ template <class callback_type,
 class callback_system:
     private callback_deleter
 {
-    typedef typename boost::mpl::if_c<mpmc, boost::lockfree::fifo<callback_type*>,
-                                            boost::lockfree::ringbuffer<callback_type*, 0>
+    typedef typename boost::mpl::if_c<mpmc, boost::lockfree::queue<callback_type*>,
+                                            boost::lockfree::spsc_queue<callback_type*>
                                      >::type queue_type;
 
 public:
@@ -50,7 +50,7 @@ public:
     /** \brief adds a new Callback to the Scheduler, threadsafe */
     inline void add_callback(callback_type * cb)
     {
-        callbacks.enqueue(cb);
+        callbacks.push(cb);
     }
 
     /** \brief run all callbacks */
@@ -59,7 +59,7 @@ public:
         for (;;) {
             callback_type* runme;
 
-            if (not callbacks.dequeue(runme))
+            if (not callbacks.pop(runme))
                 break;
 
             run_callback(runme);
@@ -74,7 +74,7 @@ public:
     void run_callback(void)
     {
         callback_type* runme;
-        bool dequeued = callbacks.dequeue(&runme);
+        bool dequeued = callbacks.pop(&runme);
         assert(dequeued);
 
         run_callback(runme);
diff --git a/server/supernova/utilities/cpu_timer.hpp b/server/supernova/utilities/cpu_timer.hpp
deleted file mode 100644
index a8e3200..0000000
--- a/server/supernova/utilities/cpu_timer.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-//  cpu utilization timer
-//  Copyright (C) 2006, 2008 Tim Blechmann
-//
-//  This program is free software; you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation; either version 2 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program; see the file COPYING.  If not, write to
-//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-//  Boston, MA 02111-1307, USA.
-
-
-
-#ifndef CPU_TIMER_HPP
-#define CPU_TIMER_HPP
-
-#if defined(__linux__) || defined(__APPLE__) || defined(HAVE_TIMES_H)
-#define USE_TIMES_H
-#include <sys/times.h>
-#elif defined(WIN32)
-#include <Windows.h>
-#else
-#error not implemented
-#endif
-
-
-namespace nova
-{
-
-class cpu_timer
-{
-public:
-    void set(void)
-    {
-#ifdef USE_TIMES_H
-        static const double inv_clock_per_ms = 1. / (CLOCKS_PER_SEC * 1000);
-        tms time;
-        times(&time);
-        ms = (time.tms_utime + time.tms_stime) * inv_clock_per_ms;
-#elif defined(WIN32)
-        FILETIME ignorethis, ignorethat;
-
-        bool status = GetProcessTimes(GetCurrentProcess(), &ignorethis, &ignorethat,
-                                      &m_kerneltime, &m_usertime);
-        assert(status);
-#else
-#error not implemented
-#endif
-    }
-
-    double get(void)
-    {
-#ifdef USE_TIMES_H
-        static const double inv_clock_per_ms = 1. / (CLOCKS_PER_SEC * 1000);
-        tms time;
-        times(&time);
-        double now = (time.tms_utime + time.tms_stime) * inv_clock_per_ms;
-        return now - ms;
-#elif defined(WIN32)
-        FILETIME ignorethis, ignorethat;
-        FILETIME usertime, kerneltime;
-
-        bool status = retval = GetProcessTimes(GetCurrentProcess(), &ignorethis, &ignorethat,
-                                               &kerneltime, &usertime);
-
-        assert(status);
-
-        /* ignore high word */
-        double low = ( (kerneltime.dwLowDateTime - m_kerneltime.dwLowDateTime) +
-                       (usertime.dwLowDateTime - m_usertime.dwLowDateTime) ) * 0.0001;
-        return low;
-#else
-#error not implemented
-#endif
-    }
-
-#ifdef USE_TIMES_H
-    double ms;
-#elif defined(WIN32)
-    FILETIME m_kerneltime;
-    FILETIME m_usertime;
-#endif
-};
-
-} /* namespace nova */
-
-#endif /* CPU_TIMER_HPP */
diff --git a/server/supernova/utilities/fast_approximations.hpp b/server/supernova/utilities/fast_approximations.hpp
deleted file mode 100644
index 8099215..0000000
--- a/server/supernova/utilities/fast_approximations.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-//  fast approximations different functions
-//  Copyright (C) 2008 Tim Blechmann
-//
-//  This program is free software; you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation; either version 2 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program; see the file COPYING.  If not, write to
-//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-//  Boston, MA 02111-1307, USA.
-
-#include <boost/type_traits.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/math/constants/constants.hpp>
-
-namespace nova
-{
-
-/* fast atan2 approximation
- *
- * adapted from pseudocode posted in
- * http://www.dspguru.com/comp.dsp/tricks/alg/fxdatan2.htm
- *
- * max error of .072 rads, if abs(x) > 1e-8
- * */
-template <typename F>
-F faster_atan2(F y, F x)
-{
-    BOOST_STATIC_ASSERT(boost::is_floating_point<F>::value);
-
-    F coeff_1 = boost::math::constants::pi<F>()/F(4);
-    F coeff_2 = F(3)*coeff_1;
-    F abs_y = std::abs(y) + F(1e-10);      // kludge to prevent 0/0 condition
-
-    F angle;
-    if (x>=0)
-    {
-        F r = (x - abs_y) / (x + abs_y);
-        angle = coeff_1 - coeff_1 * r;
-    }
-    else
-    {
-        F r = (x + abs_y) / (abs_y - x);
-        angle = coeff_2 - coeff_1 * r;
-    }
-    if (y < 0)
-        return(-angle);     // negate if in quad III or IV
-    else
-        return(angle);
-}
-
-/* fast atan2 approximation
- *
- * adapted from pseudocode posted in
- * http://www.dspguru.com/comp.dsp/tricks/alg/fxdatan2.htm
- *
- * max error of .011 rads, if abs(x) > 1e-8
- * */
-template <typename F>
-F fast_atan2(F y, F x)
-{
-    BOOST_STATIC_ASSERT(boost::is_floating_point<F>::value);
-
-    F coeff_1 = boost::math::constants::pi<F>()/F(4);
-    F coeff_2 = F(3)*coeff_1;
-    F abs_y = std::abs(y) + F(1e-10);      // kludge to prevent 0/0 condition
-
-    F angle;
-    if (x>=0)
-    {
-        F r = (x - abs_y) / (x + abs_y);
-        angle = F(0.1963) * r*r*r - F(0.9817) * r + coeff_1;
-    }
-    else
-    {
-        F r = (x + abs_y) / (abs_y - x);
-        angle = F(0.1963) * r*r*r - F(0.9817) * r + coeff_2;
-    }
-    if (y < 0)
-        return(-angle);     // negate if in quad III or IV
-    else
-        return(angle);
-}
-
-} /* namespace nova */
diff --git a/server/supernova/utilities/malloc_aligned.hpp b/server/supernova/utilities/malloc_aligned.hpp
index d15843b..e572dcb 100644
--- a/server/supernova/utilities/malloc_aligned.hpp
+++ b/server/supernova/utilities/malloc_aligned.hpp
@@ -22,6 +22,9 @@
 #include <cstdlib>
 #include <cstring>
 
+#include <new>     // for std::bad_alloc
+#include <utility> // for std::forward
+
 #include <boost/noncopyable.hpp>
 
 #ifdef __SSE2__
@@ -130,8 +133,7 @@ inline void* MALLOC malloc_aligned(std::size_t nbytes)
 {
     void* vec = malloc(nbytes+ (VECTORALIGNMENT/8-1) + sizeof(void *));
 
-    if (vec != NULL)
-    {
+    if (vec != NULL) {
         /* get alignment of first possible signal vector byte */
         long alignment = ((long)vec+sizeof(void *))&(VECTORALIGNMENT/8-1);
         /* calculate aligned pointer */
@@ -139,13 +141,15 @@ inline void* MALLOC malloc_aligned(std::size_t nbytes)
         /* save original memory location */
         *(void **)((unsigned char *)ret-sizeof(void *)) = vec;
         return ret;
-    }
-    else
+    } else
         return 0;
 }
 
 inline void free_aligned(void *ptr)
 {
+    if (ptr == NULL)
+        return;
+
     /* get original memory location */
     void *ori = *(void **)((unsigned char *)ptr-sizeof(void *));
     free(ori);
@@ -235,6 +239,14 @@ public:
         ::new(p) T(val);
     }
 
+#if (__cplusplus >= 201103L)
+    template< class U, class... Args >
+    void construct(U * p, Args&& ... args)
+    {
+        ::new(p) T(std::forward<Args>(args)...);
+    }
+#endif
+
     void destroy(pointer p)
     {
         p->~T();
diff --git a/server/supernova/utilities/osc_server.hpp b/server/supernova/utilities/osc_server.hpp
index 9d5b3d0..92d3533 100644
--- a/server/supernova/utilities/osc_server.hpp
+++ b/server/supernova/utilities/osc_server.hpp
@@ -21,9 +21,10 @@
 
 #include <string>
 #include <iostream>
+#include <thread>
 
 #include <boost/asio.hpp>
-#include <boost/thread.hpp>
+#include <boost/array.hpp>
 #include <boost/bind.hpp>
 
 #include "branch_hints.hpp"
@@ -34,11 +35,9 @@
 #include "nova-tt/thread_priority.hpp"
 #include "nova-tt/name_thread.hpp"
 
-namespace nova
-{
+namespace nova {
 
-namespace detail
-{
+namespace detail {
 using namespace boost::asio;
 using namespace boost::asio::ip;
 
@@ -47,7 +46,7 @@ class network_thread
 public:
     void start_receive(void)
     {
-        thread_ = boost::thread(network_thread::start, this);
+        thread_ = std::move(std::thread(network_thread::start, this));
         sem.wait();
     }
 
@@ -94,7 +93,7 @@ protected:
 
 private:
     semaphore sem;
-    boost::thread thread_;
+    std::thread thread_;
 };
 
 class osc_server:
diff --git a/server/supernova/utilities/simple_pool.hpp b/server/supernova/utilities/simple_pool.hpp
index 37bcd4e..fe161f8 100644
--- a/server/supernova/utilities/simple_pool.hpp
+++ b/server/supernova/utilities/simple_pool.hpp
@@ -27,7 +27,6 @@ extern "C"
 #include <cstdlib>
 #include <cstring>              /* for std::memset */
 
-#include <boost/array.hpp>
 #include <boost/noncopyable.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/mpl/arithmetic.hpp>
diff --git a/server/supernova/utilities/sized_array.hpp b/server/supernova/utilities/sized_array.hpp
index 21f3b5a..13145de 100644
--- a/server/supernova/utilities/sized_array.hpp
+++ b/server/supernova/utilities/sized_array.hpp
@@ -21,15 +21,11 @@
 
 #include <cassert>
 #include <memory>               /* std::allocator */
-
-#include <stdint.h>
+#include <type_traits>
 
 #include <boost/mpl/if.hpp>
-#include <boost/type_traits/is_integral.hpp>
-#include <boost/move/move.hpp>
 
-namespace nova
-{
+namespace nova {
 
 /** dynamically sized array
  *
@@ -48,8 +44,6 @@ class sized_array:
 {
     typedef typename Alloc::template rebind<T>::other Allocator;
 
-    BOOST_MOVABLE_BUT_NOT_COPYABLE(sized_array)
-
 public:
     // types
     typedef T                                     value_type;
@@ -64,12 +58,15 @@ public:
 
     // construct/copy/destruct
     explicit sized_array(size_type size = 0, T const & def = T()):
-        data_(Allocator::allocate(size)), size_(size)
+        data_( size ? Allocator::allocate(size) : 0), size_(size)
     {
         for (size_type i = 0; i != size; ++i)
             Allocator::construct(data_ + i, def);
     }
 
+    sized_array(sized_array & arg) = delete;
+    sized_array & operator=(sized_array & arg) = delete;
+
 private:
     template <typename int_type>
     void init_from_int(int_type size)
@@ -115,13 +112,12 @@ public:
     template<typename Constructor_arg>
     explicit sized_array(Constructor_arg const & arg)
     {
-        typedef typename boost::mpl::if_<boost::is_integral<Constructor_arg>,
+        typedef typename boost::mpl::if_<std::is_integral<Constructor_arg>,
                                          call_int_ctor,
                                          call_container_ctor>::type ctor;
         ctor::init(*this, arg);
     }
 
-#ifdef BOOST_HAS_RVALUE_REFS
     explicit sized_array(sized_array && arg)
     {
         data_ = arg.data_;
@@ -139,22 +135,6 @@ public:
         arg.size_ = 0;
         return *this;
     }
-#else
-    explicit sized_array(BOOST_RV_REF(sized_array) arg)
-    {
-        operator=(arg);
-    }
-
-    /** move assignment */
-    sized_array & operator=(BOOST_RV_REF(sized_array) arg)
-    {
-        data_ = arg.data_;
-        size_ = arg.size();
-        arg.data_ = 0;
-        arg.size_ = 0;
-        return *this;
-    }
-#endif
 
     ~sized_array(void)
     {
diff --git a/server/supernova/utilities/static_allocator.hpp b/server/supernova/utilities/static_allocator.hpp
index 258396f..b8ac785 100644
--- a/server/supernova/utilities/static_allocator.hpp
+++ b/server/supernova/utilities/static_allocator.hpp
@@ -26,7 +26,7 @@ extern "C"
 
 #include <exception>
 
-#include <boost/array.hpp>
+#include <array>
 #include <boost/noncopyable.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/mpl/arithmetic.hpp>
@@ -78,7 +78,7 @@ class static_allocator
         }
 #endif
 
-        boost::array<long, poolsize> pool;
+        std::array<long, poolsize> pool;
     };
 
 public:
@@ -160,7 +160,6 @@ public:
 
 private:
     data data_;
-/*     boost::array<long, poolsize> pool; */
 };
 
 
diff --git a/server/supernova/utilities/static_pool.hpp b/server/supernova/utilities/static_pool.hpp
index 2ba2a82..306c507 100644
--- a/server/supernova/utilities/static_pool.hpp
+++ b/server/supernova/utilities/static_pool.hpp
@@ -24,7 +24,8 @@ extern "C"
 #include "tlsf.h"
 }
 
-#include <boost/array.hpp>
+#include <array>
+
 #include <boost/noncopyable.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/mpl/arithmetic.hpp>
@@ -34,8 +35,7 @@ extern "C"
 #include "nova-tt/dummy_mutex.hpp"
 #include "nova-tt/mlock.hpp"
 
-namespace nova
-{
+namespace nova {
 
 template <std::size_t bytes,
           bool blocking = false>
@@ -55,12 +55,12 @@ class static_pool:
     struct data:
         mutex_type
     {
-        boost::array<long, poolsize> pool;
+        std::array<long, poolsize> pool;
     };
 
     void lock_memory(void)
     {
-        mlock(data_.pool.begin(), bytes);
+        mlock(data_.pool.data(), poolsize * sizeof(long));
     }
 
 public:
@@ -70,7 +70,7 @@ public:
         if (lock)
             lock_memory();
 
-        data_.pool.assign(0);
+        data_.pool.fill(0);
         std::size_t status = init_memory_pool(bytes, data_.pool.begin());
         assert(status > 0);
 
diff --git a/server/supernova/utilities/ticket_scheduler.hpp b/server/supernova/utilities/ticket_scheduler.hpp
deleted file mode 100644
index f006559..0000000
--- a/server/supernova/utilities/ticket_scheduler.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//  ticket-based scheduler
-//  Copyright (C) 2007, 2008 Tim Blechmann
-//
-//  This program is free software; you can redistribute it and/or modify
-//  it under the terms of the GNU General Public License as published by
-//  the Free Software Foundation; either version 2 of the License, or
-//  (at your option) any later version.
-//
-//  This program is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//  GNU General Public License for more details.
-//
-//  You should have received a copy of the GNU General Public License
-//  along with this program; see the file COPYING.  If not, write to
-//  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-//  Boston, MA 02111-1307, USA.
-
-#ifndef TICKET_SCHEDULER_HPP
-#define TICKET_SCHEDULER_HPP
-
-#include <boost/noncopyable.hpp>
-#include <boost/atomic.hpp>
-#include <boost/thread/condition.hpp>
-#include <boost/date_time/posix_time/ptime.hpp>
-
-#include <cstddef>
-
-namespace nova
-{
-
-class ticket_scheduler:
-    boost::noncopyable
-{
-    typedef std::size_t size_t;
-    typedef boost::atomic<size_t> atomic_int;
-
-public:
-    size_t get_ticket(void)
-    {
-        return ticket_source++;
-    }
-
-    template <class functor>
-    bool run_nonblocking(size_t ticket, functor const & f)
-    {
-        if (ticket == current_ticket)
-        {
-            run_functor(f);
-            return true;
-        }
-        return false;
-    }
-
-    template <class functor>
-    void run(size_t ticket, functor const & f)
-    {
-        boost::mutex::scoped_lock lock(mutex);
-        while (ticket != current_ticket)
-        {
-             /* now this is ugly ... however, just waiting for the event results in a deadlock
-              * if the notification occurs before the wait operation
-              * semaphores are resistant against this problem, but harder to use for a ticket
-              * scheduling algorithm (would require thread-specific semaphores)
-              * */
-            cond.timed_wait(lock, boost::posix_time::milliseconds(100));
-        }
-
-        run_functor(f);
-    }
-
-private:
-    template <class functor>
-    void run_functor(functor const & f)
-    {
-        f();
-        ++current_ticket;
-        cond.notify_all();
-    }
-
-    atomic_int ticket_source;
-    atomic_int current_ticket;
-
-    boost::mutex mutex;
-    boost::condition cond;
-};
-
-} /* namespace nova */
-
-
-#endif /* TICKET_SCHEDULER_HPP */
diff --git a/server/supernova/utilities/time_tag.hpp b/server/supernova/utilities/time_tag.hpp
index 86c6c3f..532f4dd 100644
--- a/server/supernova/utilities/time_tag.hpp
+++ b/server/supernova/utilities/time_tag.hpp
@@ -19,24 +19,19 @@
 #ifndef UTILITIES_TIME_TAG_HPP
 #define UTILITIES_TIME_TAG_HPP
 
-#include <boost/cstdint.hpp>
+#include <cstdint>
 #include <cmath>
 
-#ifdef BOOST_NO_INT64_T
-#error "boost doesn't support int64 types"
-#endif
-
 #include "boost/date_time/posix_time/posix_time_types.hpp"
 #include "boost/date_time/gregorian/gregorian_types.hpp"
 
-namespace nova
-{
+namespace nova {
 
 /** time_tag class, compatible to osc time tags */
 class time_tag
 {
-    typedef boost::uint32_t uint32;
-    typedef boost::uint64_t uint64;
+    typedef std::uint32_t uint32;
+    typedef std::uint64_t uint64;
 
     typedef union
     {
diff --git a/server/supernova/utilities/tl_allocator.hpp b/server/supernova/utilities/tl_allocator.hpp
index 2f0cea3..616ec0b 100644
--- a/server/supernova/utilities/tl_allocator.hpp
+++ b/server/supernova/utilities/tl_allocator.hpp
@@ -26,8 +26,8 @@ extern "C"
 
 #include <exception>
 #include <cstring>
+#include <array>
 
-#include <boost/array.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/mpl/modulus.hpp>
 #include <boost/mpl/arithmetic.hpp>
@@ -35,11 +35,9 @@ extern "C"
 
 #include "branch_hints.hpp"
 
-namespace nova
-{
+namespace nova {
 
-namespace detail
-{
+namespace detail {
 
 #ifdef __GNUC__
 template <std::size_t bytes>
@@ -114,7 +112,7 @@ class tl_allocator
             destroy_memory_pool(pool.begin());
         }
 
-        boost::array<long, poolsize> pool;
+        std::array<long, poolsize> pool;
     };
 
 public:
diff --git a/server/supernova/utilities/utils.hpp b/server/supernova/utilities/utils.hpp
index aa9e4b8..a5ce79e 100644
--- a/server/supernova/utilities/utils.hpp
+++ b/server/supernova/utilities/utils.hpp
@@ -1,5 +1,5 @@
 //  utility functions
-//  Copyright (C) 2005-2010  Tim Blechmann
+//  Copyright (C) 2005-2012  Tim Blechmann
 //
 //  This program is free software; you can redistribute it and/or modify
 //  it under the terms of the GNU General Public License as published by
@@ -22,24 +22,16 @@
 #include <cstddef>
 #include <cassert>
 
-/** \todo later use std::tr1 type_traits */
-#include <boost/type_traits.hpp>
+#include <type_traits>
 #include <boost/static_assert.hpp>
 
 #include "boost/noncopyable.hpp"
 
-/** \todo later use std::tr1 smart pointers */
-#include <boost/shared_ptr.hpp>
-#include <boost/scoped_ptr.hpp>
-#include <boost/weak_ptr.hpp>
 #include <boost/intrusive_ptr.hpp>
 #include <boost/detail/atomic_count.hpp>
 
 #include "branch_hints.hpp"
 
-#include <boost/foreach.hpp>
-#define foreach BOOST_FOREACH
-
 typedef unsigned int uint;
 
 #include "malloc_aligned.hpp"
@@ -47,14 +39,10 @@ typedef unsigned int uint;
 #include "function_attributes.h"
 
 
-namespace nova
-{
+namespace nova {
+
 /* we're using some member of the boost namespace */
 using boost::noncopyable;
-
-using boost::shared_ptr;
-using boost::weak_ptr;
-using boost::scoped_ptr;
 using boost::intrusive_ptr;
 
 /* some basic math functions */
@@ -208,6 +196,23 @@ PURE inline std::size_t string_hash(const char * str)
     return ret;
 }
 
+struct linear_allocator
+{
+    linear_allocator(char * chunk):
+        chunk(chunk)
+    {}
+
+    template <typename T>
+    T * alloc(int count = 1)
+    {
+        T * ret = reinterpret_cast<T*>(chunk);
+        chunk += count * sizeof(T);
+        return ret;
+    }
+
+private:
+    char * chunk;
+};
 
 } /* namespace nova */
 
diff --git a/testsuite/sclang/sclang_crash_2.scd b/testsuite/sclang/sclang_crash_2.scd
new file mode 100644
index 0000000..6cb6acf
--- /dev/null
+++ b/testsuite/sclang/sclang_crash_2.scd
@@ -0,0 +1,2 @@
+{ 1+1 }.def.instVarAt(1);
+0.exit;
diff --git a/testsuite/sclang/sclang_crash_deprecated.scd b/testsuite/sclang/sclang_crash_deprecated.scd
new file mode 100644
index 0000000..662ca17
--- /dev/null
+++ b/testsuite/sclang/sclang_crash_deprecated.scd
@@ -0,0 +1,2 @@
+b = { nil.deprecated};
+b.()
diff --git a/testsuite/supernova/CMakeLists.txt b/testsuite/supernova/CMakeLists.txt
index a5fc6f2..0b362f7 100644
--- a/testsuite/supernova/CMakeLists.txt
+++ b/testsuite/supernova/CMakeLists.txt
@@ -1,5 +1,4 @@
 set(simple_tests
-    approximation_test.cpp
     buffer_manager_test.cpp
     callback_interpreter_system.cpp
     memory-pool_test.cpp
@@ -15,7 +14,6 @@ set(simple_tests
     sized_array_test.cpp
     sndfile_backend_test.cpp
     static_pool_test.cpp
-    ticket_scheduler_test.cpp
     timetag_test.cpp
 )
 
@@ -33,6 +31,11 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux")
     )
 endif()
 
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_INTEL OR CMAKE_COMPILER_IS_CLANG)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+else()
+    message(FATAL_ERROR "unknown compiler. supernova testsuite cannot be compiled")
+endif()
 
 find_package(Sndfile REQUIRED)
 
@@ -42,15 +45,29 @@ include_directories(${CMAKE_SOURCE_DIR}/include/common
                     ${CMAKE_SOURCE_DIR}/server/supernova
                     ${CMAKE_SOURCE_DIR}/external_libraries/boost
                     ${CMAKE_SOURCE_DIR}/external_libraries/boost_endian
-                    ${CMAKE_SOURCE_DIR}/external_libraries/boost_lockfree
-                    ${CMAKE_SOURCE_DIR}/external_libraries/boost_move
+                    ${CMAKE_SOURCE_DIR}/external_libraries/boost-lockfree
                     ${CMAKE_SOURCE_DIR}/external_libraries/oscpack
                     ${CMAKE_SOURCE_DIR}/external_libraries/
                     ${CMAKE_SOURCE_DIR}/external_libraries/nova-tt
                     ${CMAKE_SOURCE_DIR}/external_libraries/TLSF-2.4.6/src
-					${SNDFILE_INCLUDE_DIR}
+                    ${SNDFILE_INCLUDE_DIR}
                     )
 
+if (WIN32 OR APPLE)
+    find_package(Portaudio)
+    if(NOT PORTAUDIO_FOUND)
+        message(FATAL_ERROR "Portaudio missing")
+    endif()
+    add_definitions(-DPORTAUDIO_BACKEND ${PORTAUDIO_DEFINITIONS})
+    include_directories(${PORTAUDIO_INCLUDE_DIRS})
+else()
+    find_library(JACK NAMES jack)
+    if (JACK)
+        add_definitions(-DJACK_BACKEND)
+        include_directories(${JACK_INCLUDE_DIRS})
+    endif()
+endif()
+
 
 add_library(boost_test STATIC boost_test.cpp)
 
@@ -58,7 +75,12 @@ add_library(boost_test STATIC boost_test.cpp)
 foreach(test ${simple_tests})
   string(REPLACE .cpp "" test_name ${test} )
   add_executable(${test_name} ${test})
-  target_link_libraries(${test_name} boost_thread boost_system boost_test)
+
+  if (Boost_FOUND)
+    target_link_libraries(${test_name}  ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_TEST_LIBRARY})
+  else()
+    target_link_libraries(${test_name} boost_thread boost_system boost_test)
+  endif()
   target_link_libraries(${test_name} oscpack tlsf)
   target_link_libraries(${test_name} ${PTHREADS_LIBRARY})
   target_link_libraries(${test_name} ${SNDFILE_LIBRARIES})
@@ -70,7 +92,3 @@ foreach(test ${simple_tests})
 
   add_test(${test_name}_run ${EXECUTABLE_OUTPUT_PATH}/${test_name})
 endforeach(test)
-
-set_property(TARGET server_test
-             APPEND
-             PROPERTY COMPILE_DEFINITIONS JACK_BACKEND SUPERNOVA)
diff --git a/testsuite/supernova/approximation_test.cpp b/testsuite/supernova/approximation_test.cpp
deleted file mode 100644
index d29ac1d..0000000
--- a/testsuite/supernova/approximation_test.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <iostream>
-#include <boost/test/unit_test.hpp>
-#include <boost/test/floating_point_comparison.hpp>
-
-#include <cmath>
-
-#include "utilities/fast_approximations.hpp"
-
-using namespace nova;
-using namespace std;
-
-namespace
-{
-
-template <typename F>
-void run_fast_atan2_tests(void)
-{
-    for (F y = -4; y < 4; y+=0.01)
-        for (F x = -4; x < 4; x+=0.01)
-        {
-            if (abs(x) < 1e-8)
-                continue;
-
-            F accurate = atan2(y, x);
-            F fast = fast_atan2(y, x);
-            F faster = faster_atan2(y, x);
-
-            BOOST_CHECK_SMALL( accurate - fast,   F(0.011) );
-            BOOST_CHECK_SMALL( accurate - faster, F(0.072) );
-        }
-}
-
-}
-
-BOOST_AUTO_TEST_CASE( atan2_tests_float )
-{
-    run_fast_atan2_tests<float>();
-}
-
-BOOST_AUTO_TEST_CASE( atan2_tests_double )
-{
-    run_fast_atan2_tests<double>();
-}
diff --git a/testsuite/supernova/osc_dispatcher_test.cpp b/testsuite/supernova/osc_dispatcher_test.cpp
index c64c977..380ffe6 100644
--- a/testsuite/supernova/osc_dispatcher_test.cpp
+++ b/testsuite/supernova/osc_dispatcher_test.cpp
@@ -29,7 +29,7 @@ BOOST_AUTO_TEST_CASE( osc_dispatcher_test_1 )
 {
     osc_dispatcher dispatcher;
 
-    std::auto_ptr<osc_test_responder> resp (new osc_test_responder());
+    unique_ptr<osc_test_responder> resp (new osc_test_responder());
     dispatcher.add_responder("foo", resp.get());
     dispatcher.remove_responder("foo", resp.get());
 }
@@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE( osc_dispatcher_test_2 )
 {
     osc_dispatcher dispatcher;
 
-    std::auto_ptr<osc_test_responder> resp (new osc_test_responder());
+    unique_ptr<osc_test_responder> resp (new osc_test_responder());
     dispatcher.add_responder("/foo", resp.get());
     dispatcher.add_responder("/fpp", resp.get());
 
diff --git a/testsuite/supernova/osc_server_test.cpp b/testsuite/supernova/osc_server_test.cpp
index 638ffab..a6cf412 100644
--- a/testsuite/supernova/osc_server_test.cpp
+++ b/testsuite/supernova/osc_server_test.cpp
@@ -5,8 +5,7 @@
 
 using namespace nova;
 
-namespace
-{
+namespace {
 struct osc_test_responder:
     public osc_responder
 {
@@ -39,14 +38,14 @@ BOOST_AUTO_TEST_CASE( osc_server_test_1 )
 BOOST_AUTO_TEST_CASE( osc_server_test_2 )
 {
     osc_server server(12321);
-    std::auto_ptr<osc_test_responder> resp (new osc_test_responder());
+    std::unique_ptr<osc_test_responder> resp (new osc_test_responder());
     server.add_responder("/foo", resp.get());
     server.remove_responder("/foo", resp.get());
 }
 
 BOOST_AUTO_TEST_CASE( osc_server_test_3 )
 {
-    std::auto_ptr<osc_test_responder> resp (new osc_test_responder());
+    std::unique_ptr<osc_test_responder> resp (new osc_test_responder());
     {
         osc_server server(12321);
 
diff --git a/testsuite/supernova/server_dsp_thread_queue_test.cpp b/testsuite/supernova/server_dsp_thread_queue_test.cpp
index f1fa599..a43d0ff 100644
--- a/testsuite/supernova/server_dsp_thread_queue_test.cpp
+++ b/testsuite/supernova/server_dsp_thread_queue_test.cpp
@@ -26,13 +26,6 @@ typedef nova::dsp_queue_interpreter<dummy_runnable> dsp_queue_interpreter;
 typedef nova::dsp_thread_queue_item<dummy_runnable> dsp_thread_queue_item;
 typedef nova::dsp_thread_queue<dummy_runnable> dsp_thread_queue;
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-#define auto_ptr unique_ptr
-#define MOVE(X) std::move(X)
-#else
-#define MOVE(X) X
-#endif
-
 BOOST_AUTO_TEST_CASE( dsp_thread_queue_test_1 )
 {
     dsp_queue_interpreter interpreter(1);
@@ -54,13 +47,13 @@ BOOST_AUTO_TEST_CASE( dsp_thread_queue_test_3 )
 {
     dsp_queue_interpreter interpreter(1);
 
-    std::auto_ptr<dsp_thread_queue> q (new dsp_thread_queue(1));
+    std::unique_ptr<dsp_thread_queue> q (new dsp_thread_queue(1));
 
     dsp_thread_queue_item * item = q->allocate_queue_item(dummy, dsp_thread_queue_item::successor_list(), 0);
 
     q->add_initially_runnable(item);
 
-    interpreter.reset_queue(MOVE(q));
+    interpreter.reset_queue(std::move(q));
 
     bool runnable = interpreter.init_tick();
     BOOST_REQUIRE(runnable);
@@ -74,7 +67,7 @@ BOOST_AUTO_TEST_CASE( dsp_thread_queue_test_4 )
 {
     dsp_queue_interpreter interpreter(1);
 
-    std::auto_ptr<dsp_thread_queue> q (new dsp_thread_queue(2));
+    std::unique_ptr<dsp_thread_queue> q (new dsp_thread_queue(2));
 
     dsp_thread_queue_item * item1 = q->allocate_queue_item(dummy, dsp_thread_queue_item::successor_list(), 1);
 
@@ -84,7 +77,7 @@ BOOST_AUTO_TEST_CASE( dsp_thread_queue_test_4 )
     dsp_thread_queue_item * item2 = q->allocate_queue_item(dummy, sl, 0);
     q->add_initially_runnable(item2);
 
-    interpreter.reset_queue(MOVE(q));
+    interpreter.reset_queue(std::move(q));
 
     bool runnable = interpreter.init_tick();
     BOOST_REQUIRE(runnable);
@@ -99,7 +92,7 @@ BOOST_AUTO_TEST_CASE( dsp_thread_queue_test_5 )
     dsp_queue_interpreter interpreter(1);
 
     {
-        std::auto_ptr<dsp_thread_queue> q (new dsp_thread_queue(2));
+        std::unique_ptr<dsp_thread_queue> q (new dsp_thread_queue(2));
 
         dsp_thread_queue_item * item1 = q->allocate_queue_item(dummy, dsp_thread_queue_item::successor_list(), 1);
 
@@ -110,7 +103,7 @@ BOOST_AUTO_TEST_CASE( dsp_thread_queue_test_5 )
 
         q->add_initially_runnable(item2);
 
-        interpreter.reset_queue(MOVE(q));
+        interpreter.reset_queue(std::move(q));
 
         for (int i = 0; i != 2; ++i) {
             bool runnable = interpreter.init_tick();
@@ -122,7 +115,7 @@ BOOST_AUTO_TEST_CASE( dsp_thread_queue_test_5 )
     }
 
     {
-        std::auto_ptr<dsp_thread_queue> q (new dsp_thread_queue(2));
+        std::unique_ptr<dsp_thread_queue> q (new dsp_thread_queue(2));
 
         dsp_thread_queue_item * item1 = q->allocate_queue_item(dummy, dsp_thread_queue_item::successor_list(), 1);
 
@@ -133,7 +126,7 @@ BOOST_AUTO_TEST_CASE( dsp_thread_queue_test_5 )
 
         q->add_initially_runnable(item2);
 
-        interpreter.reset_queue(MOVE(q));
+        interpreter.reset_queue(std::move(q));
 
         for (int i = 0; i != 2; ++i) {
             bool runnable = interpreter.init_tick();
diff --git a/testsuite/supernova/server_dsp_thread_test.cpp b/testsuite/supernova/server_dsp_thread_test.cpp
index b4a27ac..15effff 100644
--- a/testsuite/supernova/server_dsp_thread_test.cpp
+++ b/testsuite/supernova/server_dsp_thread_test.cpp
@@ -77,13 +77,6 @@ BOOST_AUTO_TEST_CASE( dsp_thread_test_3 )
     run_test_3<nova::rt_pool_allocator<void*> >();
 }
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-#define auto_ptr unique_ptr
-#define MOVE(X) std::move(X)
-#else
-#define MOVE(X) X
-#endif
-
 template <typename Alloc>
 void run_test_4(void)
 {
@@ -91,7 +84,7 @@ void run_test_4(void)
     typedef typename nova::dsp_thread_queue<dummy_runnable, Alloc> dsp_thread_queue;
 
     typedef typename nova::dsp_threads<dummy_runnable, nova::nop_thread_init, Alloc> dsp_threads;
-    typedef std::auto_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
+    typedef std::unique_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
 
     dsp_threads t(1);
     t.start_threads();
@@ -106,7 +99,7 @@ void run_test_4(void)
     dsp_thread_queue_item * item2 = q->allocate_queue_item(dummy, sl, 0);
     q->add_initially_runnable(item2);
 
-    t.reset_queue(MOVE(q));
+    t.reset_queue(std::move(q));
 
     t.run();
 
@@ -131,7 +124,7 @@ void run_test_5(void)
     typedef nova::dsp_thread_queue<dummy_runnable, Alloc> dsp_thread_queue;
     typedef nova::dsp_threads<dummy_runnable, nova::nop_thread_init, Alloc> dsp_threads;
 
-    typedef std::auto_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
+    typedef std::unique_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
 
     dsp_threads t(2);
     t.start_threads();
@@ -155,7 +148,7 @@ void run_test_5(void)
     dsp_thread_queue_item * item5 = q->allocate_queue_item(dummy, sl, 0);
     q->add_initially_runnable(item5);
 
-    t.reset_queue(MOVE(q));
+    t.reset_queue(std::move(q));
 
     t.run();
 
@@ -183,7 +176,7 @@ void run_test_6(void)
     typedef nova::dsp_thread_queue<dummy_runnable, Alloc> dsp_thread_queue;
     typedef nova::dsp_threads<dummy_runnable, nova::nop_thread_init, Alloc> dsp_threads;
 
-    typedef std::auto_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
+    typedef std::unique_ptr<dsp_thread_queue> dsp_thread_queue_ptr;
 
     dsp_threads t(2);
     t.start_threads();
@@ -198,7 +191,7 @@ void run_test_6(void)
         q->add_initially_runnable(items.back());
     }
 
-    t.reset_queue(MOVE(q));
+    t.reset_queue(std::move(q));
 
     const int iterations = 10000;
 
diff --git a/testsuite/supernova/server_node_graph_test.cpp b/testsuite/supernova/server_node_graph_test.cpp
index 8931b2e..7ad05a3 100644
--- a/testsuite/supernova/server_node_graph_test.cpp
+++ b/testsuite/supernova/server_node_graph_test.cpp
@@ -4,10 +4,6 @@
 
 #include "test_synth.hpp"
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-#define auto_ptr unique_ptr
-#endif
-
 using namespace nova;
 using namespace std;
 
@@ -235,7 +231,7 @@ BOOST_AUTO_TEST_CASE( queue_construction_test_1 )
     n.add_node(s);
     n.add_node(s2);
 
-    auto_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
+    unique_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
 
     n.remove_node(s);
     n.remove_node(s2);
@@ -248,7 +244,7 @@ BOOST_AUTO_TEST_CASE( queue_construction_test_2 )
     group * g = new group(1);
 
     n.add_node(g);
-    auto_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
+    unique_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
     BOOST_REQUIRE_EQUAL(q->get_total_node_count(), 0u);
 
     n.remove_node(g);
@@ -261,13 +257,13 @@ BOOST_AUTO_TEST_CASE( queue_construction_test_3 )
     test_synth * s = new test_synth(1000, 0);
     n.add_node(s);
 
-    auto_ptr<node_graph::dsp_thread_queue> q1 = n.generate_dsp_queue();
+    unique_ptr<node_graph::dsp_thread_queue> q1 = n.generate_dsp_queue();
     BOOST_REQUIRE_EQUAL(q1->get_total_node_count(), 1u);
 
     test_synth * s2 = new test_synth(3, 0);
     n.add_node(s2);
 
-    auto_ptr<node_graph::dsp_thread_queue> q2 = n.generate_dsp_queue();
+    unique_ptr<node_graph::dsp_thread_queue> q2 = n.generate_dsp_queue();
     BOOST_REQUIRE_EQUAL(q2->get_total_node_count(), 1u);
 
     n.remove_node(s);
@@ -285,7 +281,7 @@ BOOST_AUTO_TEST_CASE( pgroup_test_1 )
     n.add_node(g);
     BOOST_REQUIRE_EQUAL(n.find_group(1), g);
 
-    auto_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
+    unique_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
     BOOST_REQUIRE_EQUAL(q->get_total_node_count(), 0u);
     n.remove_node(g);
 }
@@ -340,7 +336,7 @@ BOOST_AUTO_TEST_CASE( pgroup_test_4 )
         test_synth * s = new test_synth(2, 0);
         n.add_node(s, to_group);
 
-        auto_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
+        unique_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
         BOOST_REQUIRE_EQUAL(q->get_total_node_count(), 1u);
 
         n.remove_node(s);
@@ -365,7 +361,7 @@ BOOST_AUTO_TEST_CASE( pgroup_test_5 )
         n.add_node(s1, to_group);
         n.add_node(s2, to_group);
 
-        auto_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
+        unique_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
 
         BOOST_REQUIRE_EQUAL(q->get_total_node_count(), 2u);
 
@@ -393,7 +389,7 @@ BOOST_AUTO_TEST_CASE( pgroup_test_6 )
         n.add_node(s2, to_group);
         n.add_node(s3, to_group);
 
-        auto_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
+        unique_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
         BOOST_REQUIRE_EQUAL(q->get_total_node_count(), 3u);
     }
     n.remove_node(g);
@@ -424,7 +420,7 @@ BOOST_AUTO_TEST_CASE( pgroup_test_7 )
         n.add_node(s1, to_g1);
         n.add_node(s2, to_g2);
 
-        auto_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
+        unique_ptr<node_graph::dsp_thread_queue> q = n.generate_dsp_queue();
         BOOST_REQUIRE_EQUAL(q->get_total_node_count(), 2u);
     }
     n.remove_node(g);
diff --git a/testsuite/supernova/server_scheduler_test.cpp b/testsuite/supernova/server_scheduler_test.cpp
index 523c473..403eb44 100644
--- a/testsuite/supernova/server_scheduler_test.cpp
+++ b/testsuite/supernova/server_scheduler_test.cpp
@@ -1,6 +1,6 @@
 #include <boost/test/unit_test.hpp>
 
-#include <boost/thread.hpp>
+#include <thread>
 #include <boost/thread/barrier.hpp>
 
 #include "server/server_scheduler.hpp"
@@ -14,20 +14,22 @@ BOOST_AUTO_TEST_CASE( scheduler_test_1 )
 /*     sched(); */
 }
 
-namespace
-{
+namespace {
+
 boost::barrier barr(2);
 void thread_fn(scheduler<> * sched)
 {
     for (int i = 0; i != 1000; ++i)
         /* (*sched)() */;
     barr.wait();
-};
+}
+
 }
 
 BOOST_AUTO_TEST_CASE( scheduler_test_2 )
 {
     scheduler<> sched(1);
-    boost::thread thrd(boost::bind(thread_fn, &sched));
+    std::thread thrd(std::bind(thread_fn, &sched));
     barr.wait();
+    thrd.join();
 }
diff --git a/testsuite/supernova/server_synth_factory_test.cpp b/testsuite/supernova/server_synth_factory_test.cpp
index c287085..33e01b9 100644
--- a/testsuite/supernova/server_synth_factory_test.cpp
+++ b/testsuite/supernova/server_synth_factory_test.cpp
@@ -9,11 +9,11 @@ using namespace std;
 
 namespace
 {
-struct test_synth_prototype:
-    public synth_prototype
+struct test_synth_definition:
+    public synth_definition
 {
-    test_synth_prototype():
-        synth_prototype(c_string("foo"))
+    test_synth_definition():
+        synth_definition(c_string("foo"))
     {}
 
     abstract_synth * create_instance(int node_id)
@@ -29,9 +29,9 @@ BOOST_AUTO_TEST_CASE( synth_factory_test_1 )
 
     synth_factory sf;
 
-    sf.register_prototype(new test_synth_prototype);
+    sf.register_definition(new test_synth_definition);
 
-    auto_ptr<abstract_synth> s(sf.create_instance("foo", 1));
+    unique_ptr<abstract_synth> s(sf.create_instance("foo", 1));
 
     BOOST_REQUIRE(s.get() != 0);
 }
diff --git a/testsuite/supernova/server_test.cpp b/testsuite/supernova/server_test.cpp
index ecb771a..ae87344 100644
--- a/testsuite/supernova/server_test.cpp
+++ b/testsuite/supernova/server_test.cpp
@@ -11,11 +11,11 @@ using namespace boost;
 
 namespace
 {
-struct test_synth_prototype:
-    public synth_prototype
+struct test_synth_definition:
+    public synth_definition
 {
-    test_synth_prototype(void):
-        synth_prototype(c_string("foo"))
+    test_synth_definition(void):
+        synth_definition(c_string("foo"))
     {}
 
     abstract_synth * create_instance(int node_id)
@@ -34,7 +34,7 @@ BOOST_AUTO_TEST_CASE( server_test_1 )
         nova_server server(server_arguments::initialize(0, 0));
         rt_pool.init(1024*1024);
 
-        server.synth_factory::register_prototype(new test_synth_prototype());
+        server.synth_factory::register_definition(new test_synth_definition());
 
         node_position_constraint to_root = std::make_pair(server.root_group(), insert);
 
@@ -49,7 +49,7 @@ BOOST_AUTO_TEST_CASE( server_test_2 )
 {
     {
         nova_server server(server_arguments::initialize(0, 0));
-        server.synth_factory::register_prototype(new test_synth_prototype());
+        server.synth_factory::register_definition(new test_synth_definition());
 
         node_position_constraint to_root = std::make_pair(server.root_group(), insert);
 
@@ -67,7 +67,7 @@ BOOST_AUTO_TEST_CASE( server_test_3 )
 {
     {
         nova_server server(server_arguments::initialize(0, 0));
-        server.synth_factory::register_prototype(new test_synth_prototype());
+        server.synth_factory::register_definition(new test_synth_definition());
 
         parallel_group * g = new parallel_group(1);
 
diff --git a/testsuite/supernova/sndfile_backend_test.cpp b/testsuite/supernova/sndfile_backend_test.cpp
index a5e073d..2e3f711 100644
--- a/testsuite/supernova/sndfile_backend_test.cpp
+++ b/testsuite/supernova/sndfile_backend_test.cpp
@@ -35,7 +35,7 @@ BOOST_AUTO_TEST_CASE( sndfile_backend_test_1 )
     BOOST_REQUIRE(!be.audio_is_opened());
     BOOST_REQUIRE(!be.audio_is_active());
 
-    be.open_client("", "./output.wav", 44100, SF_FORMAT_WAV | SF_FORMAT_PCM_16, 1);
+    be.open_client("", "./output.wav", 44100, SF_FORMAT_WAV | SF_FORMAT_PCM_16, 1, 64);
     BOOST_REQUIRE(be.audio_is_opened());
 
     be.activate_audio();
@@ -43,7 +43,7 @@ BOOST_AUTO_TEST_CASE( sndfile_backend_test_1 )
 
 
     boost::xtime xt;
-    boost::xtime_get(&xt, boost::TIME_UTC);
+    boost::xtime_get(&xt, boost::TIME_UTC_);
     xt.sec += 1;
     boost::thread::sleep(xt);
 
diff --git a/testsuite/supernova/test_synth.hpp b/testsuite/supernova/test_synth.hpp
index f2ef8e1..8083284 100644
--- a/testsuite/supernova/test_synth.hpp
+++ b/testsuite/supernova/test_synth.hpp
@@ -6,13 +6,18 @@ class test_synth:
     public abstract_synth
 {
 public:
-    test_synth(int node_id, synth_prototype_ptr const & prototype):
+    test_synth(int node_id, synth_definition_ptr const & prototype):
         abstract_synth(node_id, prototype)
     {}
 
     void run(void)
     {}
 
+    virtual float get(slot_index_t slot_id) const
+    {
+        return 0.f;
+    }
+
     virtual void set(slot_index_t slot_id, sample val)
     {}
 
diff --git a/testsuite/supernova/ticket_scheduler_test.cpp b/testsuite/supernova/ticket_scheduler_test.cpp
deleted file mode 100644
index 288b0be..0000000
--- a/testsuite/supernova/ticket_scheduler_test.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-#include <boost/test/unit_test.hpp>
-#include <boost/thread.hpp>
-
-#define HAVE_SEMAPHORE_H
-#include "utilities/ticket_scheduler.hpp"
-
-
-namespace
-{
-
-int thread_count = 5;
-
-nova::ticket_scheduler sched;
-
-void test_fn(std::size_t check)
-{
-    static std::size_t count = 0;
-
-    BOOST_REQUIRE_EQUAL(count, check);
-    ++count;
-}
-
-const int iterations = 150;
-
-
-void runme_nonblocking(void)
-{
-    for (int i = 0; i != iterations; ++i)
-    {
-        std::size_t ticket = sched.get_ticket();
-
-        boost::thread::yield();
-
-        for(;;)
-        {
-            if (sched.run_nonblocking(ticket, boost::bind(test_fn, ticket)))
-                break;
-            else
-                boost::thread::yield();
-        }
-    }
-}
-
-
-void runme(void)
-{
-    for (int i = 0; i != iterations; ++i)
-    {
-        std::size_t ticket = sched.get_ticket();
-
-        boost::thread::yield();
-
-        sched.run(ticket, boost::bind(test_fn, ticket));
-    }
-}
-
-}
-
-
-BOOST_AUTO_TEST_CASE( ticket_scheduler_test )
-{
-    {
-        boost::thread_group threads;
-
-        for (int i = 0; i != thread_count; ++i)
-        {
-            threads.create_thread(runme_nonblocking);
-        }
-
-        threads.join_all();
-    }
-
-    {
-        boost::thread_group threads;
-
-        for (int i = 0; i != thread_count; ++i)
-        {
-            threads.create_thread(runme);
-        }
-
-        threads.join_all();
-    }
-}

-- 
supercollider packaging



More information about the pkg-multimedia-commits mailing list